<?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>236736</bug_id>
          
          <creation_ts>2022-02-16 14:54:21 -0800</creation_ts>
          <short_desc>Mark SharedBuffer used by CachedResource::m_data const</short_desc>
          <delta_ts>2022-02-19 23:24:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>236695</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1842539</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-16 14:54:21 -0800</bug_when>
    <thetext>In bug https://bugs.webkit.org/show_bug.cgi?id=236695 we had to add a few const_cast which isn&apos;t particularly elegant.
The CachedResource::m_data should be made a const FragmentedSharedBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842540</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-16 14:54:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/89050403&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842806</commentid>
    <comment_count>2</comment_count>
      <attachid>452345</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-17 03:29:36 -0800</bug_when>
    <thetext>Created attachment 452345
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843322</commentid>
    <comment_count>3</comment_count>
      <attachid>452494</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-18 00:56:31 -0800</bug_when>
    <thetext>Created attachment 452494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843362</commentid>
    <comment_count>4</comment_count>
      <attachid>452510</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-18 05:04:18 -0800</bug_when>
    <thetext>Created attachment 452510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844028</commentid>
    <comment_count>5</comment_count>
      <attachid>452680</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-19 23:18:14 -0800</bug_when>
    <thetext>Created attachment 452680
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452345</attachid>
            <date>2022-02-17 03:29:36 -0800</date>
            <delta_ts>2022-02-18 00:56:26 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-236736-20220217222934.patch</filename>
            <type>text/plain</type>
            <size>175610</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNmNTQ0YmQ4NjYwMzFj
NzQ1YzMxY2ZhNzEyY2MwYzI2YjkzOTNiOC4uYTFmMTYyZjVlNTlkZWFmMjdjNzNlMGRkMjJmMDgw
YWI5Mzc0Y2IzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OSBAQAorMjAyMi0wMi0xNyAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU2hhcmVkQnVm
ZmVyIHVzZWQgYnkgQ2FjaGVkUmVzb3VyY2U6Om1fZGF0YSBjb25zdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NzM2CisgICAgICAgIHJkYXI6Ly84
OTA1MDQwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEJ5IG1ha2luZyBDYWNoZWRSZXNvdXJjZTo6bV9kYXRhIGNvbnN0LCBhbGwgY2FsbGluZyBwb2lu
dHMgbmVlZCB0byBiZQorICAgICAgICBtb2RpZmllZCBhY2NvcmRpbmdseSwgcmVzdWx0aW5nIGlu
IGFuIGV4dGVuc2l2ZSBjaGFuZ2UuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW91ci4g
U2VtYW50aWNzIG9ubHkuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDRE06OnNhbml0aXplSW5pdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xp
ZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAo
V2ViQ29yZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdp
c3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdp
c3RyeTo6c2FuaXRpemVDZW5jKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplV2ViTSk6Cisg
ICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vz
c2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lv
bjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJ0
d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEpOgor
ICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50Ojp1cGRhdGVEdXJpbmdQYXJz
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZyk6
CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpidWZmZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
c2V0QnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRC
dWZmZXJDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGE6OlN1YnN0aXR1dGVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpTdWJzdGl0dXRlUmVz
b3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlRmFjdG9y
eUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oOgorICAgICAgICAqIGxvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZl
UmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVz
b3VyY2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNl
Lmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxBcmNo
aXZlOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcik6CisgICAgICAgICogbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRv
UmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRlcik6CisgICAgICAgICogcGxhdGZvcm0v
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
SW5zdGFuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJl
c3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OnNl
dFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6c2V0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpyZXNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRhdGFDaGFu
Z2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZik6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZik6
CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXpl
U2tkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0
cmFjdEtleUlEc1NrZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRL
ZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vz
c2lvbkZvcktleUlEcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRl
TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpjb3B5
S2V5SURzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1l
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRp
emVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVRodW5kZXI6
OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcnNlZFJlc3BvbnNl
TWVzc2FnZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcnNl
ZFJlc3BvbnNlTWVzc2FnZTo6cGF5bG9hZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXJz
ZWRSZXNwb25zZU1lc3NhZ2U6OnBheWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZSk6
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNl
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRT
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJl
bW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0NETVRodW5kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2FsYWJsZUltYWdlRGVj
b2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2VUb0RhdGFPYmplY3QpOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6
OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rv
cnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRCk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0NETUZhY3RvcnkuaDoKKwogMjAyMi0wMi0xNiAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQgYXQgSmF2YVNjcmlwdENvcmU6IGJtYWxsb2NfYWxsb2NhdGVfaW1wbF9pbXBs
X3Nsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMTE3ODhiYTc0MzEyY2YzZGRlOGM4ZTk4YzgyM2RjNzdmMGE2MGVl
Ni4uMmNlMjY5ODU5MjA5NTY0MmU2OWMxZTVmOWY2YjI3MmZlZmUzMTIxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2OCBAQAorMjAyMi0wMi0xNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIE1hcmsgU2hhcmVkQnVmZmVyIHVzZWQgYnkgQ2FjaGVkUmVzb3VyY2U6
Om1fZGF0YSBjb25zdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM2NzM2CisgICAgICAgIHJkYXI6Ly84OTA1MDQwMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZCk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVT
ZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVS
ZXNwb25zZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVy
Q29weTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OnNhZmVC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6
CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAg
ICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OldlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OldlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICog
U2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0
VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06
OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZl
ckNlcnRpZmljYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6c2V0VXNlR1BVUHJv
Y2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYWluUmVzb3Vy
Y2VEYXRhT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OnJlc291cmNlRGF0YUZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KToKKwogMjAyMi0wMi0xNiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoVHJhY2VyOiBj
b20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQgSmF2YVNjcmlwdENvcmU6IGJtYWxsb2NfYWxs
b2NhdGVfaW1wbF9pbXBsX3Nsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAwOTAz
YTUyNmY3ZWViNzYzZTdhOTM4YzJjMzRjMmE4YTJmNzZjNWRjLi42ZTA4MzJkZDU3MWZlNTEwN2Uy
NzQ1MThjMzMzYjMyMDFkNWY2YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMjItMDItMTcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBNYXJrIFNoYXJlZEJ1ZmZlciB1c2VkIGJ5IENhY2hlZFJlc291cmNlOjpt
X2RhdGEgY29uc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNjczNgorICAgICAgICByZGFyOi8vODkwNTA0MDMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9y
SWNvbnMpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0lj
b24pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2Vi
RGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAg
ICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjItMDItMTYgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBVbm5lY2Vzc2FyeSBjb3B5
L21lbW9yeSBhbGxvY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5jcHAKaW5kZXggMDE2MTIxOWQxZTI2YjI2MmM0ZWVlYzgxOThjNDZkOGViMTRjMWIw
Mi4uMWQzNzAxZTZhYmZlNDZiY2YxNTUxMWZmMjQ2ODQ5ZDk5MDhjNWExNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMTM1LDcgKzEzNSw3
IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBv
cnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwogfQogCi1SZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUlu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJuIEluaXREYXRhUmVnaXN0cnk6OnNo
YXJlZCgpLnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CkBAIC0x
NDUsNyArMTQ1LDcgQEAgYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmUKICAgICByZXR1cm4gbV9wcml2
YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRh
KTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFtX3ByaXZhdGUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmgKaW5kZXggZDdiMWQ1M2QwNDkxZjcyNzc5YjU5NGIyZDgzYzA5YjgzYmNmMjA3
Zi4uYmI3YmE5OTI3NDQ5MTNiOTgyMzNiYWJiN2Y2ZGZhMzIzMTU0MmI5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC03MywxMCArNzMsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0OwogICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogCi0gICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgUmVm
UHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVu
dC5oCmluZGV4IDQxMGVkMmZiNjQyNzU2MmNlOWJkOGVkYTRkOTFhODZiYTk4Y2FhNjEuLmY1ODY3
MmExZTI0MjU3ZGNhZWMzOWVmMDk1MzBiOTYyZThiZDcxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAtNDMsNyArNDMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmly
dHVhbCB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAKaW5kZXggNmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZkZjBlNDk5MC4uMDdm
MTVlMTUwY2ViNjhmZWM2YmFiZmFkMWFjOTVhMzlkOTVlMTU2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIG5hbWVzcGFjZSB7CiAgICAgY29uc3QgdWludDMyX3Qga0tl
eUlkc01heEtleUlkU2l6ZUluQnl0ZXMgPSA1MTI7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRz
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5
SURzS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAv
LyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlh
L2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKQEAgLTc0LDcgKzc0
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY28KICAgICBpZiAoIWtpZHNBcnJheSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBrZXlJRHM7CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpraWRzQXJyYXkpIHsKICAg
ICAgICAgYXV0byBrZXlJRCA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICBpZiAoIWtleUlE
KQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjbwogICAgIHJldHVybiBr
ZXlJRHM7CiB9CiAKLXN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVLZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJl
ZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gMS4gRm9ybWF0CiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkv
aW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC0xNTEsOSArMTUxLDkgQEAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveD4+PiBJbmkKICAgICByZXR1cm4gcHNzaEJveGVzOwogfQogCi1zdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5Ojpl
eHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJ
bml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKIAogICAgIGF1dG8gcHNzaEJveGVzID0gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5j
KGJ1ZmZlcik7CiAgICAgaWYgKCFwc3NoQm94ZXMpCkBAIC0xODUsNyArMTg1LDcgQEAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdp
c3RyeTo6ZXh0cmFjdEtleUkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQg
UFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1t
ZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAg
LTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFS
ZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaAogICAgIHJldHVybiBidWZm
ZXIuY29weSgpOwogfQogCi1zdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMg
UmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGJ1
ZmZlciBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAgLy8gVGhlIFdlYk0gaW5pdERhdGEg
aXMgdGhlIENvbnRlbnRFbmNLZXlJRCwgc28gc2hvdWxkIGJlIGxlc3MgdGhhbiBrV2ViTU1heENv
bnRlbnRFbmNLZXlJRFNpemUuCkBAIC0yMDUsMTAgKzIwNSwxMCBAQCBzdGF0aWMgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJgogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dl
Yk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RL
ZXlJRHNXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Ci0gICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZm
ZXIpOworICAgIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlE
czsKKyAgICBhdXRvIHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOwogICAg
IGlmICghc2FuaXRpemVkQnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBA
IC0yMzMsNyArMjMzLDcgQEAgSW5pdERhdGFSZWdpc3RyeTo6SW5pdERhdGFSZWdpc3RyeSgpCiAK
IEluaXREYXRhUmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwogCi1SZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJ
bml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1
dG8gaXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwogICAgIGlmIChpdGVyID09IG1f
dHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEpCkBAIC0yNDEsNyAr
MjQxLDcgQEAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6
OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmkKICAgICByZXR1cm4gaXRlci0+dmFsdWUu
c2FuaXRpemVJbml0RGF0YShidWZmZXIpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURz
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBp
ZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRh
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0lu
aXREYXRhUmVnaXN0cnkuaAppbmRleCA3N2Q2MDRiMDhiYjdmN2UzOGJjY2IzNTQ1YjM0YzhiMTM0
MzU1ZWYyLi5iYWU3MWI3ZTkwNzdkOTA5YmQ1MjJhNjc2YWVhMjQ3MTNlZTMwNjFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRh
UmVnaXN0cnkuaApAQCAtNDUsMTIgKzQ1LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgSW5pdERhdGFSZWdpc3RyeSYgc2hhcmVkKCk7CiAgICAgZnJpZW5kIGNsYXNzIE5l
dmVyRGVzdHJveWVkPEluaXREYXRhUmVnaXN0cnk+OwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFj
dEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURz
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogCiAgICAgc3RydWN0IEluaXREYXRhVHlwZUNhbGxiYWNrcyB7Ci0gICAgICAgIHVz
aW5nIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik+OwotICAgICAgICB1
c2luZyBFeHRyYWN0S2V5SURzQ2FsbGJhY2sgPSBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+Pihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik+OworICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlv
bjxSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVu
Y3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAgICBTYW5pdGl6
ZUluaXREYXRhQ2FsbGJhY2sgc2FuaXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0cmFjdEtleUlE
c0NhbGxiYWNrIGV4dHJhY3RLZXlJRHM7CkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgd2VibU5hbWUoKTsKIAogICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4
dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0
aWMgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplQ2VuYyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKIHByaXZhdGU6CiAgICAgSW5pdERhdGFSZWdp
c3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IDE0Nzc2YzIwMTUxYmZlZmUzODA3OWEzMzcz
MGM4ODY2MjY4YmE0NmEuLjA2NjhlYjcxNGM2Y2EwMmU1MzY4NDljMWQ0NDIxZjE1NDNlZWM5ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vz
c2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgQnVmZgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGluaXRE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5sZW5n
dGgoKSksIGluaXREYXRhVHlwZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8gMTAuMS4g
SWYgdGhlIGluaXQgZGF0YSBpcyBub3QgdmFsaWQgZm9yIGluaXREYXRhVHlwZSwgcmVqZWN0IHBy
b21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICAvLyAxMC4yLiBM
ZXQgc2FuaXRpemVkIGluaXQgZGF0YSBiZSBhIHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIHZlcnNp
b24gb2YgaW5pdCBkYXRhLgotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZUluaXREYXRhKGlu
aXREYXRhVHlwZSwgaW5pdERhdGEpOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6
ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogCiAgICAgICAgIC8vIDEwLjMuIElm
IHRoZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBj
cmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRJbml0RGF0YSkgewpAQCAt
MjIzLDcgKzIyMyw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgICAgICAgICBtX2xh
dGVzdERlY3J5cHRUaW1lID0gMDsKICAgICAgICAgfQogCi0gICAgICAgIG1faW5zdGFuY2VTZXNz
aW9uLT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXpl
ZEluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNz
VmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJl
cXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERh
dGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
Ym9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIE1lZGlhS2V5
U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgQnVmZgogICAgICAgICAgICAgICAgIG1fY2FsbGFibGUgPSB0cnVlOwogCiAgICAgICAg
ICAgICAgICAgLy8gMTAuOS4zLiBSdW4gdGhlIFF1ZXVlIGEgIm1lc3NhZ2UiIEV2ZW50IGFsZ29y
aXRobSBvbiB0aGUgc2Vzc2lvbiwgcHJvdmlkaW5nIG1lc3NhZ2UgdHlwZSBhbmQgbWVzc2FnZS4K
LSAgICAgICAgICAgICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdlVHlwZSwgbWVzc2FnZSk7Cisg
ICAgICAgICAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIFdURk1vdmUobWVzc2Fn
ZSkpOwogCiAgICAgICAgICAgICAgICAgLy8gMTAuOS4zLiBSZXNvbHZlIHByb21pc2UuCiAgICAg
ICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVkIik7CkBA
IC00MjIsNyArNDIyLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZm
ZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAvLyA2LiBSdW4g
dGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCByZXNwb25zZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc3Bv
bnNlLmRhdGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAg
ICAvLyA2LjEuIExldCBzYW5pdGl6ZWQgcmVzcG9uc2UgYmUgYSB2YWxpZGF0ZWQgYW5kL29yIHNh
bml0aXplZCB2ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHkuCi0gICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRpb24tPnNh
bml0aXplUmVzcG9uc2UocmVzcG9uc2UpOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5p
dGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIAogICAgICAgICAvLyA2LjIuIElmIHRoZSBwcmVjZWRp
bmcgc3RlcCBmYWlsZWQsIG9yIGlmIHNhbml0aXplZCByZXNwb25zZSBpcyBlbXB0eSwgcmVqZWN0
IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNh
bml0aXplZFJlc3BvbnNlIHx8IHNhbml0aXplZFJlc3BvbnNlLT5pc0VtcHR5KCkpIHsKQEAgLTYw
MSw3ICs2MDEsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgLy8gNC4zLiBMZXQgbWVzc2FnZSB0eXBlIGJlIG51
bGwuCiAKICAgICAgICAgLy8gNC40LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dp
bmcgc3RlcHM6Ci0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YSht
X3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9u
LT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdl
YWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUo
aWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMs
IHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3Nh
Z2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtNzE2LDkgKzcxNiw5IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNl
cyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGluCiAgICAgICAgIH0pOwog
fQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIE1l
ZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFJl
Zjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7Ci0gICAgZW5xdWV1
ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIG1lc3NhZ2UpOworICAgIGVucXVldWVNZXNzYWdlKG1lc3Nh
Z2VUeXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBNZWRpYUtleVNlc3Npb246OnNl
c3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRl
eCAzNjVhY2U1YzA5NWU3ZGMwYzU3MWU3NmNjZjJjMDdhYWZjNjJiYWE2Li5jZjNhODQ5OGZkNDUw
ZWYxODI3NGE4MDkyMTY2NThmMjM0ODJlYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTg3LDcgKzg3
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlZFByb21pc2UgPSBET01Qcm9taXNlUHJveHk8
SURMVW5kZWZpbmVkPjsKICAgICBDbG9zZWRQcm9taXNlJiBjbG9zZWQoKSB7IHJldHVybiBtX2Ns
b3NlZFByb21pc2UuZ2V0KCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMo
KSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKICAgICB1bnNpZ25lZCBpbnRlcm5hbElu
c3RhbmNlU2Vzc2lvbk9iamVjdFJlZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZVNl
c3Npb24tPnJlZkNvdW50KCk7IH0KIApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2Vz
KENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzVmVjdG9yJiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2Fn
ZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFs
OwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbDsKIApAQCAtMTQwLDEwICsxNDAsMTAg
QEAgcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb25UeXBlIG1fc2Vzc2lvblR5cGU7CiAgICAg
UmVmPENETT4gbV9pbXBsZW1lbnRhdGlvbjsKICAgICBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiBt
X2luc3RhbmNlU2Vzc2lvbjsKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiBtX3JlY29yZE9mS2V5VXNhZ2U7CisgICAgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRvdWJsZSBtX2ZpcnN0RGVjcnlw
dFRpbWUgeyAwIH07CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlwdFRpbWUgeyAwIH07Ci0gICAg
VmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3Rh
dHVzPj4gbV9zdGF0dXNlczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOwogCiAgICAgdXNp
bmcgRGlzcGxheUNoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVyPHZvaWQoUGxhdGZvcm1EaXNwbGF5
SUQpPjsKICAgICBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyIG1fZGlzcGxheUNoYW5nZWRPYnNlcnZl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmNwcAppbmRleCAzNjdmMzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2ZjJmOGQyNmVhLi42
YTU0ZGNkMjkzY2YzMjkxMTU3MDllOTk1MDFkOTNiNzIwMDIxYTJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0xNzcs
NyArMTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6Omhhc09wZW5TZXNzaW9ucygpIGNvbnN0CiAgICAg
ICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRh
dGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFs
aXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRvJiBj
ZG1DbGllbnQgOiBtX2NkbUNsaWVudHMpCiAgICAgICAgIGNkbUNsaWVudC5jZG1DbGllbnRVbnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEu
Y29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5oCmluZGV4IDkxYTFhMDcxMTQzM2JlMjQ3ZGQyYTg1YzVmNGFkMDkzOGEwOWE3
YWMuLjg2NDUyZDg4YjI0OWFlZWJhN2NmNDJkZWY5OGVjNTYxZDkzZjdkZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtODYs
NyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFLZXlzKERvY3VtZW50JiwgYm9vbCB1c2VE
aXN0aW5jdGl2ZUlkZW50aWZpZXIsIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwgY29uc3Qg
VmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+JiwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNl
PiYmKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVlc3RlZElu
aXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgTG9n
Z2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAppbmRleCA4
NzRhYTdmMGIxOGYwZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0Li5iZDEwNjcxNjFhMGQyNWI5
M2RlNGY3YWU2YjQ3ZjVmNjFkZmMzNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2
b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBOZXR3b3JrTAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFNh
bml0aXplIHRoZSBpbWFnZSBieSBkZWNvZGluZyBpdCBpbnRvIGEgQml0bWFwSW1hZ2UuCi0gICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemUgPSBtX2NhY2hl
ZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBidWZmZXJUb1Nhbml0aXplID0gbV9j
YWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBCaXRt
YXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEoV1RGTW92ZShidWZm
ZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXgg
NWE2MDU5NGI1ZTQ4MmRkMmE1YTdiYzIwN2U5YmIyNjQwMmQyMGVlOS4uNzhiZjI0YzE3ZjczODA2
YTMzYzExNGY1ODNiZjljZjRiMWMyYjAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjMyMCw3ICsyMzIwLDcgQEAgc3RhdGljIFJldGFp
blB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0
YVNvdXJjZSwgTlMKIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJG
b3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewotICAgICAgICBpZiAo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291
cmNlQnVmZmVyKCkpCisgICAgICAgIGlmIChhdXRvKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFn
ZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCA1YTJkYjVm
OGY3OGMzMjYwZjJkNGQwNTlhODY3MTJiODQ5ODg1MzQ5Li5kMDc1MmU5ODdjMmU5NGMwMzRkMjI0
YzE2YjBjZDQ3NzdhZWQyM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgc3RhdGljIGJvb2wgbWltZVR5cGVJ
c1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSht
aW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShtaW1lVHlwZSk7CiB9
CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhE
YXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJ
bWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lkIEhUTUxBdHRhY2htZW50
RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeQogICAgIGlmICghbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50
KG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW5jbG9zaW5nSW1hZ2UtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6
OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50KCksIGJ1
ZmZlci0+ZXh0cmFjdERhdGEoKSwgbWltZVR5cGUpKSk7CisgICAgZW5jbG9zaW5nSW1hZ2UtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01V
Ukw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50KCks
IGJ1ZmZlci0+Y29weURhdGEoKSwgbWltZVR5cGUpKSk7CiB9CiAKIHZvaWQgSFRNTEF0dGFjaG1l
bnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYgdGh1bWJuYWls
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXggNTU0
OTc5MWMyZTA3ZDBkZDdkMzg1ZjZkY2UxYTRjNzllMWNlNWY3MS4uNzFmNGZhZTkwNmY5ZjEzYzU2
NThhN2MzYmM3NjEyZGQxNjZmNzNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvcHlO
b25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRl
RW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVw
ZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYgdGh1bWJuYWlsKTsK
IAogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKElu
c2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDQ5NmM2YTljYjIzYTZhMmE5NTM5M2Y4YTQ2ZTg2MjA5
NDc3MGFhYjkuLjdmM2I0MzAwZjM3YWM2MzdkNDUzNTgyOTY3MjdlMTQ3M2M1NTI2NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMjk1Miw3ICsyOTUyLDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFj
a0lmTmVjZXNzYXJ5KCkKICAgICBhdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCk7
CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFs
aXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNk
bUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhKQogewogICAgIG1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5p
dERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDAwNDkxODYxM2ViOTMxMTA2MjNiMDNi
YWZmOTc2MWQ2MzBjNDhjZDkuLjNiMjcwZDk5NzAyYTVlOGM2Y2U0NDljMWU2ZjQxMjRhMTljZGZk
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC03MTksNyArNzE5
LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0
ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZpbmFsOwotICAgIHZvaWQgY2RtQ2xp
ZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjZG1DbGllbnRV
bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA0ZDEwZmIwNTc3MjQ2Mjg1NzY4
ODUwM2Q2NjQ3Njk3ZjBjYjA0YmExLi5mNDM4ZmE0YjExN2I5YjZlMWJkOTE3NzYwZGI4OTI5MzIw
YmEzYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTE0MSw3ICsx
NDEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcoKQogICAgIGlm
ICghbV9pbWFnZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCk7CiAK
LSAgICBpZiAoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigp
LT5tYWluUmVzb3VyY2VEYXRhKCkpCisgICAgaWYgKGF1dG8gYnVmZmVyID0gbG9hZGVyKCktPm1h
aW5SZXNvdXJjZURhdGEoKSkKICAgICAgICAgbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCkt
PnVwZGF0ZUJ1ZmZlcigqYnVmZmVyKTsKIAogICAgIGltYWdlVXBkYXRlZCgpOwpAQCAtMTUxLDEy
ICsxNTEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAg
aWYgKCFwYXJzZXIoKS0+aXNTdG9wcGVkKCkgJiYgbV9pbWFnZUVsZW1lbnQpIHsKICAgICAgICAg
Q2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gKm1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgp
OwotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigp
LT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0KLSAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFy
dCBpbWFnZSwgbWFrZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291
cmNlIGRhdGEKLSAgICAgICAgLy8gd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0
LgotICAgICAgICBpZiAoZGF0YSAmJiBsb2FkZXIoKS0+aXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVu
dCgpKQotICAgICAgICAgICAgZGF0YSA9IGRhdGEtPmNvcHkoKTsKKyAgICAgICAgYXV0byBkYXRh
ID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKIAogICAgICAgICBjYWNoZWRJbWFnZS5m
aW5pc2hMb2FkaW5nKGRhdGEuZ2V0KCksIHsgfSk7CiAgICAgICAgIGNhY2hlZEltYWdlLmZpbmlz
aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAKaW5kZXggMzI4ZWJlN2U2NDExOTVlNWE0Njg1MDI3NTU5MTBmNzhjNDhiNThkOC4uNDBi
ZmVkN2E3YzlmZDEzMTI2MzlmOTUwMzQ5YmZhNzU1ZmZkYjMzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0yNjcsNyArMjY3
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkQ2FjaGVkUmVzb3VyY2UoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc28KICAgICByZXNvdXJjZURhdGEtPnNldENhY2hl
ZFJlc291cmNlKGNhY2hlZFJlc291cmNlKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmdOYW1lKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFyZWRC
dWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQogewog
ICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElk
KHJlcXVlc3RJZCk7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGM4Y2VkMTJhNjQwN2ZkY2Q1
NzRlY2MyYTc4MTllZGU2NjM4MDNkYWMuLjg2Mjc0YTM1NmNmZjU3YTBiZDUwZGQ0NTI0NmYzNmNh
MDAzNjk3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCkBAIC04OCw4ICs4OCw4IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPFRleHRS
ZXNvdXJjZURlY29kZXI+IGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuY29weVJl
ZigpOyB9CiAgICAgICAgIHZvaWQgc2V0RGVjb2RlcihSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4mJiBkZWNvZGVyKSB7IG1fZGVjb2RlciA9IFdURk1vdmUoZGVjb2Rlcik7IH0KIAotICAgICAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuY29weVJlZigpOyB9Ci0gICAgICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KTsgfQorICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9CisgICAgICAgIHZvaWQgc2V0
QnVmZmVyKFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBt
X2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQogCiAgICAgICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9j
ZXJ0aWZpY2F0ZUluZm87IH0KICAgICAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUluZm8oY29uc3Qg
c3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8pIHsgbV9jZXJ0
aWZpY2F0ZUluZm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291
cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0
YUJ1ZmZlcjsKLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5m
bzsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07
CiAgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZSB7IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSB9OwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1Ymxp
YzoKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIG1heWJlRGVj
b2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBhZGRD
YWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsK
LSAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmdOYW1lKTsKKyAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRh
dGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0
YUZvclVSTChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVtb3ZlQ2Fj
aGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBhNGZmZDEzNjFj
ZGRlNWFiN2Q5NzNjZDAwZDE5YTkxMGFlOWVkMjlmLi41MDJmYjgyM2JiYjk4ZDExZjgwYzYwOGJl
Zjg0ZjdkN2Y3M2FkNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBzdGF0
aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCB1bnNpZ25lZCBzaXpl
LCBjb25zdCBTdHJpbmcmIHRleAogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291
cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiBy
ZXN1bHQpCiB7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAg
UmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+ICBidWZmZXIgPSBmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVm
ZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwg
cmVzdWx0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRl
bnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQp
Citib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAg
ICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGlu
Z05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAzZDVlNTY2
ZGJlMGM1ZWMxMWQ5ZThkZjY3ZmNmMGE3MDk4OGEyZjhmLi41YWM5NjE5MmY0NjQ1Yzk1M2ZlNjk5
ZjQ4ZDc0NWU3YjZhNmQ4YjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
ICAgICAgICBPdGhlclJlc291cmNlLAogICAgIH07CiAKLSAgICBzdGF0aWMgYm9vbCBzaGFyZWRC
dWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1
bHQpOworICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CiAgICAgc3RhdGljIFZlY3Rv
cjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hlZFJlc291cmNlc0ZvckZyYW1lKEZyYW1lKik7CiAgICAg
c3RhdGljIHZvaWQgcmVzb3VyY2VDb250ZW50KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiwgRnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0RW5j
b2RlZCk7CiAgICAgc3RhdGljIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
MzU5YjYzODUxODY4NDIzYzM3YTEwMDYzNTAxYTRkZjA2ZDlhZGJhYS4uZjE1ZDY1YWFiODQ5OTg5
ZjUyMzdlZGRiZjIwZDVhNmIzOTM5MjZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgRG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVu
dExvYWRlcigpCiAjZW5kaWYKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IERv
Y3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICByZXR1
cm4gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmNvcHkoKTsKQEAgLTE2NzEsNyArMTY3MSw3
IEBAIEFyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZvclVS
TChjb25zdCBVUkwmIHVybCkgY29uc3QKIAogUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1l
bnRMb2FkZXI6Om1haW5SZXNvdXJjZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgYXV0byBkYXRhID0g
bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgZGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byYgcmVzcG9uc2UgPSB0aGlzLT5yZXNwb25zZSgp
OwpAQCAtMjI5Miw3ICsyMjkyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9h
ZGluZygpCiAgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZ2V0TG9hZERlY2lzaW9uRm9y
SWNvbnMoaWNvbkRlY2lzaW9ucyk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExv
YWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgYXV0byBpY29uID0gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb24udGFr
ZShsb2FkSWRlbnRpZmllcik7CiAKQEAgLTIzMTMsNyArMjMxMyw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3Qg
bG9hZElkZW50CiAgICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiB9CiAKLXZvaWQg
RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5p
c2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKQogewogICAgIC8vIElmIHRoZSBEb2N1bWVudExvYWRlciBoYXMgZGV0
YWNoZWQgZnJvbSBpdHMgZnJhbWUsIGFsbCBpY29uIGxvYWRzIHNob3VsZCBoYXZlIGFscmVhZHkg
YmVlbiBjYW5jZWxsZWQuCiAgICAgQVNTRVJUKG1fZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAppbmRleCBjMmJlYTZmNmE2OWI4MzY0NzJjMGFmZjdhMGQ3MDcwMzk2
YmE2YzJiLi4wYTczMDUyZWRjYWViMTFmOGQ3MGM4ZjUyZmM3NTI0N2Y0MDYwYjM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMTgxLDcgKzE4MSw3IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlcigpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIFN1YnJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2Fk
ZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7
CiAgICAgCiAgICAgRG9jdW1lbnRXcml0ZXImIHdyaXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fd3Jp
dGVyOyB9CiAKQEAgLTQwOCw4ICs0MDgsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQg
c3RhcnRJY29uTG9hZGluZygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpOwotICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihi
b29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpOworICAgIHZvaWQgZmluaXNo
ZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciop
OwogCiAgICAgY29uc3QgVmVjdG9yPExpbmtJY29uPiYgbGlua0ljb25zKCkgY29uc3QgeyByZXR1
cm4gbV9saW5rSWNvbnM7IH0KIApAQCAtNjM4LDcgKzYzOCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8
dWludDY0X3QsIExpbmtJY29uPiBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNo
TWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOworICAgIEhhc2hNYXA8c3Rk
Ojp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4+IG1faWNvbkxvYWRlcnM7CiAgICAgVmVjdG9yPExpbmtJ
Y29uPiBtX2xpbmtJY29uczsKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFhZGMzYzNjZGI5YmFm
ZjljNDMzNjIxMzZkZTg3YzYwNTcyZmZmYmQuLmExYmYwYTAxNzgxNGFiNTg4ZGQzN2QyOTM0OGZk
NGM0M2MwODBmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApA
QCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1
ZXN0JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAgICAgfSk7CiB9CiAK
LXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZTU1MWQwZGMyMTk4MWI2ODlj
NDRhYzZkNjRlYTE2ODI4NGVkOTYyNy4uYzU5MzJkOWU1Njk4NmZkMmQxMWI0ZWE3YmIwM2NlZTlh
M2FmYTRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTY3LDcg
KzY3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXQoUmVzb3VyY2VSZXF1ZXN0
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0gICAgdm9pZCBkZWxpdmVy
UmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgdm9pZCBzdGFydExv
YWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAppbmRleCBhOGE0OWI0
N2Y5MjczNDI3NGJhNGNlYWJjMTcwN2ZlZmE3YjY2NDBkLi5mOWU2MDlmYWY1YjQ0MzM2Yjg3MDlj
NjYzYjYxYjcwYjU3MzA0MjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEu
aApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIFN1YnN0aXR1dGVEYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nl
c3Npb25IaXN0b3J5KQorICAgICAgICBTdWJzdGl0dXRlRGF0YShSZWZQdHI8Y29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2hv
dWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKICAgICAgICAgICAgIDogbV9jb250ZW50KFdURk1v
dmUoY29udGVudCkpCiAgICAgICAgICAgICAsIG1fZmFpbGluZ1VSTChmYWlsaW5nVVJMKQogICAg
ICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAtNjEsNyArNjEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAgICAKICAgICBwcml2YXRlOgotICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50OworICAgICAgICBS
ZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50OwogICAgICAgICBV
UkwgbV9mYWlsaW5nVVJMOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAg
ICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhp
c3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDNkMTkyODYyZjI3NzI5YjJmMzhk
YjU0YmQ4MzY3OTk1MjVjMDE5ZDMuLjk2NDcyMjAyYjgzZjZhMWRmOWE2OTg4NTI0ODJjNDQ0NzRh
NTE2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAg
LTM3LDE0ICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2Fz
dDxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9
CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIHsgbV9kYXRhLmFw
cGVuZChidWZmZXIpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVy
LmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAog
cHJvdGVjdGVkOgotICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKKyAg
ICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIDog
bV91cmwoV1RGTW92ZSh1cmwpKQogICAgICAgICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25z
ZSkpCiAgICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
CmluZGV4IDI1NmU4OWIyMTFiMzhiMmQyMWRjZDY2NTc4MjY5ZTY2MDczNjczMjcuLmZkMDEyNTJh
NWFiNDEyNmZkNTEzYmViZDEwNWY3NmI3MDBmNzVkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
CkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBl
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
cGF0aCkKK1JlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJh
Z21lbnRJZGVudGlmaWVyKCkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNDAsNyArNDAsNyBAQCBS
ZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNy
ZWF0ZShjb25zdCBVUkwmIHVybCwgYwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwg
dHlwZSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHBhdGgpKTsKIH0KIAotQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKK0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgOiBTdWJzdGl0dXRlUmVzb3Vy
Y2UoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShkYXRhKSkKICAgICAs
IG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaAppbmRl
eCBjMjg4ZTcwMzZjNjc2MmFkNDg3NmJhODgxNDY5YTc1ZDIyMzdlMWJhLi44MWMwZmE4OTE5NTVm
ODgxYjQyNTVjMjMyYjJkYWIyMTRhMmRkNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRmFsbGJhY2sgPSAxIDw8IDQKICAgICB9OwogCi0g
ICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcm
IHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQg
dHlwZSwgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CiAKICAgICB1bnNp
Z25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgdm9pZCBhZGRUeXBlKHVu
c2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKIHBy
aXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3Bv
bnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmIHBhdGgpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwgUmVz
b3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHZvaWQgZGVsaXZlcihSZXNv
dXJjZUxvYWRlciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA2YjllN2Uy
OTVmZDZmYjIwZmYwZDc0ZmRjZjIzZmM2NjAwYTYwMDNmLi4xNzdjNDM0N2UzYTkxMTgyMjNlMjUx
OTI5NGYzN2UwNzMzY2U1YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEyNzIsNyArMTI3
Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNob3VsZFN0b3JlUmVzb3VyY2VB
c0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvCiAgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImF1ZGlvLyIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInZpZGVvLyIpOwogfQogICAgIAotYm9vbCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQogewogICAgIFN0cmluZyBmdWxsUGF0aDsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXggNDEwMmExODA4YjQ1NTU3YjY0NWUzNmU3ZTY4MWZj
NGM2ZDIwN2NlMi4uZTEyYTA0MmU0YTM0ZDMxMmNjNTI3ZWJkNGFlMDdmMWRmYTZlODM3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5z
dXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgc3RhdGljIGJvb2wg
c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKik7
CiAgICAgdm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmls
ZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVj
dG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsK
KyAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsKIAogICAgIHZvaWQgbG9hZE1hbmlm
ZXN0SG9zdEhhc2hlcygpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZUZhY3RvcnkuY3BwCmluZGV4IDRlZjljZDY2YmQwODhiNzRjMDQ2YzA2OTBkMWU5
ZDNlNWUzMzYwZmQuLmVlYjAxNjZkM2VhNThkYmNmMDQwMzNhMGU4Yzc0MmFlM2VlZjNlMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAK
QEAgLTQ2LDEyICs0NiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgUmVm
UHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKK3R5cGVkZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlv
bkZ1bmN0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKiwgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiBBcmNoaXZlTUlNRVR5cGVzTWFwOwogCiAvLyBUaGUgY3JlYXRlIGZ1
bmN0aW9ucyBpbiB0aGUgYXJjaGl2ZSBjbGFzc2VzIHJldHVybiBSZWZQdHIgdG8gY29uY3JldGUg
c3ViY2xhc3NlcwogLy8gb2YgQXJjaGl2ZS4gVGhpcyBhZGFwdG9yIG1ha2VzIHRoZSBmdW5jdGlv
bnMgaGF2ZSBhIHVuaWZvcm0gcmV0dXJuIHR5cGUuCi10ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZl
Q2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3Qg
VVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3RlbXBsYXRlPHR5cGVu
YW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNy
ZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0ZSh1cmwsIGJ1ZmZlcik7CiB9CkBA
IC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFtaW1lVHlwZS5pc0VtcHR5KCkgJiYg
YXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAotUmVmUHRyPEFyY2hp
dmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitSZWZQdHI8QXJjaGl2ZT4g
QXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKaW5kZXggNTU2NDUxNWM5ZTBkOWQwMzNiNzkwYzc0NzI4
NWEyNTg1M2FiZTAyZC4uMmFkZTc4MmMyNTVkNGM3NGZiZWQ0NWVmYjk1MGVjMGE3NTUzODU1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rvcnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCkBA
IC0zOSw3ICszOSw3IEBAIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBBcmNo
aXZlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBcmNoaXZlTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3Qg
VVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSk7CisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAg
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCmluZGV4IDA3MzgzOTRhODI4
NzE0YWEwYjkwZWU3NTA3OWQ0ODZmNWIwZTg2OTQuLmJkN2Y4NTUxYzhmYmFhMTljMDE2OGYyZmM3
ZGYxMWZkYzkwYWZmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVz
b3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwgeyB1cmwg
fSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdURk1vdmUoZGF0YSkpCiAgICAgLCBt
X21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5jb2RpbmcodGV4dEVuY29kaW5nKQpA
QCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2Uo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29ucwogewogfQogCi1SZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1JlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC01NCw3ICs1NCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJjaGl2ZVJlc291cmNlKGRhdGEucmVsZWFzZU5v
bk51bGwoKSwgdXJsLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNl
KSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRl
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoZGF0YSksIHVybCwgcmVzcG9uc2Uu
bWltZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBTdHJpbmcoKSwgcmVzcG9u
c2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2UuaAppbmRleCAwNTQ4ZWY3MjFlZmQyN2MwMGNlOTNkMTIyNzBlY2VjNDZjMDJhZjk0Li44ZTQ4
YzllODI5YjQ0ZjEzNzEwZWI2N2JhNjg1ODg3NGMxOGI3NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaApAQCAtMzQsOCArMzQsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZSA6IHB1YmxpYyBTdWJz
dGl0dXRlUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBVUkwmLAorICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVh
dGUoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsCiAgICAgICAg
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVzb3VyY2VSZXNwb25zZSgpKTsKIApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmco
KSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZzsgfQogCiBwcml2
YXRlOgotICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgQXJjaGl2ZVJlc291cmNlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKIAogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFN0cmluZyBtX3RleHRFbmNvZGluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKaW5kZXggN2Y0YmFkNmZjYzNhOWM5N2E2YTUxN2FiOWIyOWQwODBjYTlkYTcxYi4u
Y2E1NjY0MWQwZmQ1Y2M0YjNjNjg2NGZlYTM2NmFiMGI0NDE1NjNhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAg
LTI0OCwxMiArMjQ4LDEyIEBAIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyCiAgICAgcmV0dXJuIGFy
Y2hpdmU7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFVSTCgpLCBkYXRhKTsKIH0KIAotUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBD
cmVhdGluZyBmcm9tIHJhdyBkYXRhIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCA1YTA3YjEwYjRiZTZmODYyMDEx
YTc4MmE3ZGVkMjM2NzU5MjQzNjI2Li4zYzQyMzJlMTZlMjYwZTU1ZmZlYWM2ZmU3MzU1ZWY5ZTU5
Yjc1ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIGNs
YXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwm
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBt
YWluUmVzb3VyY2UsIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4mJiBzdWJyZXNvdXJjZXMs
IFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+JiYgc3ViZnJhbWVBcmNoaXZlcyk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9k
ZSYsIEZ1bmN0aW9uPGJvb2woRnJhbWUmKT4mJiBmcmFtZUZpbHRlciA9IHsgfSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhbWUm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwCmluZGV4IGQwMTM5Zjg3YTA2Zjk2OTc4Yjc0NzdlOWY0OTk5YzM0ZWE5Zjg2MjUu
LmQ3NTBlM2MyODI2YTA2ZTgyM2NkNjEzMzhkNTI5NzQ2MWVkNDA4YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAt
MTA2LDcgKzEwNiw3IEBAIFJlZjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCkK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNSFRNTEFyY2hpdmUpOwogfQogCi1SZWZQdHI8TUhU
TUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6
Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkgbG9hZCBNSFRNTCBwYWdl
cyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxk
VHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCkpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRl
eCAyZGZlODdlODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIwNWM4ZGIxLi5lZjg3YmJmZDQ4NWIx
NGExYjAxNzJkNjFiNDM2NjE0YTcyN2Y4YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgTUhUTUxBcmNoaXZlIGZpbmFsIDogcHVi
bGljIEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TUhUTUxBcmNoaXZlPiBjcmVh
dGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYs
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2
ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAog
ICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEo
UGFnZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHAKaW5kZXggZTUxODZlZmIwYjRmYTcwY2I2MDkzMWY0ODRlNTAwY2MxMGUw
MGJjYi4uZDQ4ZmNkN2JjM2IyZjFiYjQ3MTM4ZjllYTJhMDk4MDQ1ZjlmYWFlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApA
QCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGluZXNVbnRpbEJvdW5kYXJ5Rm91bmQo
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIsIGNvbgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEpCitNSFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSkKICAgICA6IG1fbGluZVJlYWRlcihkYXRhLCAiXHJcbiIpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAppbmRl
eCAwZDYwNDM0M2YzZDdhZDE3OGNjMjIwMDNjOTc5YzIyZTUwYTNiOTllLi4xMWI4YmRlYzllMWM0
YjFkYzUxNzU1YjVhZDlhNmY1YzgwMGYyOGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhUTUxQYXJzZXIgewogcHVibGljOgot
ICAgIGV4cGxpY2l0IE1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKKyAgICBl
eHBsaWNpdCBNSFRNTFBhcnNlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAg
ICBSZWZQdHI8TUhUTUxBcmNoaXZlPiBwYXJzZUFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAwMjAwMWFiMzQzMDE4YTczMjU1OTk4ZmM0NzRjZWJm
YzQ5ZjhjODQyLi42MTliMTEwMjVkYmVlN2E1Y2YxN2M5ZjU0NjBhY2NkMzdhMzViYjgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIHZv
aWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdl
LCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+aW1hZ2UoKSA9
PSAmSW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VG
b3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gIGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmlt
YWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICBkYXRhID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXggZmM2NmMzNjVhMmYyOWE0Yzc4
ZTYwNjE5ZTQ3YTcxYzcyNThkOGZlMy4uMDdkNTgzMDYwNWJiYzJiOTlkYTM2ZGNjNjlkZjAyZDRm
OGUzMDhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5o
CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5n
SW5mbz4gbV9ub3dQbGF5aW5nSW5mbzsKICAgICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAg
ICAgU3RyaW5nIHNyYzsKLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlt
YWdlRGF0YTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlt
YWdlRGF0YTsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1Bs
YXlpbmdJbmZvQXJ0d29yazsKICAgICBib29sIG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24g
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBjYWVm
M2YyNjIwMDMzZGQ4Y2ZmMTU2MjNmMjNjNmI2YzliNTM0YjM3Li40Yzk4MmE2ZmQ4YTZmNWNiZTcy
MDkxNGYzYmUwNTkxM2NiMjU1OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaApAQCAtMzA4LDYgKzMwOCw3IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
KFNoYXJlZEJ1ZmZlckJ1aWxkZXImJikgPSBkZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKSB7IGluaXRpYWxpemUoV1RGTW92ZShidWZmZXIpKTsgfQorICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSB7IGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOyB9CiAgICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAg
ICAgICAgOiBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PnsgV1RGTW92ZShidWZmZXIpIH0pIHsgfQogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgaW5pdGlhbGl6ZShXVEZNb3ZlKGJ1ZmZl
cikpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJD
aHVua1JlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVu
a1JlYWRlci5jcHAKaW5kZXggOWQwNTVjZTI3ZDg4YzNkNjJlNWJkMWNkNDZhZDkxZjVjYzQzMWY0
OC4uOGZiYTIxNDA2Y2EwNTlhYmE0YjhjMGNjNjRkNGU2MjlkZWIyNzhmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoTUhUTUwpCiAK
LVNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQor
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0
b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0
ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJl
bnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkg
OiBudWxscHRyKQpAQCAtNDQsNyArNDQsNyBAQCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLAogewog
fQogCi1TaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBt
X2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1
ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVy
YXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgK
aW5kZXggMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2OTY1N2JjOWEyNjE1YS4uOGE5ZDRlNWRi
NTU1MDFiN2MxMzUwYjE2NDQwYjE4MGE2NmU0NTIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCkBAIC00MSw4ICs0MSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7Ci0gICAgU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIq
IHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKTsKKyAgICBTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
Y2hhciogc2VwYXJhdG9yKTsKIAogICAgIHZvaWQgc2V0U2VwYXJhdG9yKGNvbnN0IFZlY3Rvcjxj
aGFyPiYpOwogICAgIHZvaWQgc2V0U2VwYXJhdG9yKGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCmluZGV4IDFkNjViYzQwM2Fk
ODUyNDNjNjcyNWU3MDQ0OGQ2Y2RhZGNjY2NlMWIuLmNkNmEwYWYxYWE4NzJmMmEwOGE3ZjFlNDcz
YzE1N2QwODhjOTVjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93
UGxheWluZ0luZm8uaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1
Y3QgTm93UGxheWluZ0luZm9BcnR3b3JrIHsKICAgICBTdHJpbmcgc3JjOwogICAgIFN0cmluZyBt
aW1lVHlwZTsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwor
ICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNSW5zdGFuY2UuaAppbmRleCAyZGU0MTkzNGRhMTk4NzlkNzVjMGRmOGE4OWU2NGU1OTlj
MjlhZTAzLi45ZTM4ZWVjYTM5NTVhMGI1MTFmNmJlYTVhNWIxNjE1NTI1OThjMzk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNl
LmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
RE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVxdWVzdGVkSW5p
dGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIC8vIEphdmFTY3JpcHQncyBoYW5kbGUgdG8g
YSBDRE1JbnN0YW5jZSwgbXVzdCBiZSB1c2VkIGZyb20gdGhlCkBAIC05OCw3ICs5OCw3IEBAIHB1
YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBT
dWNjZXNzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4g
Y3JlYXRlU2Vzc2lvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggZDI1OTIyNWJh
OWUwMmE2NGQwY2VjZDYxNTFmZGY5M2Y0ZjI0NjZhOC4uOGQyNThmYzU0Yjk3NjkyNjM1YjMyNzdk
NWYzODc4MzI5OGE0ZDg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTUwLDkgKzUwLDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudCgpID0gZGVm
YXVsdDsKIAogICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0YXR1czsKLSAgICB1c2luZyBL
ZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0
ZDo6cGFpcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+Owog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW5k
TWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0
IFN0cmluZyYpID0gMDsKICAgICB1c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90Owog
ICAgIHZpcnR1YWwgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgPSAwOwpAQCAtNzgsMTMg
Kzc4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3VjY2VlZGVkLAogICAgIH07CiAKLSAgICB1c2lu
ZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5l
ZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBT
dWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAw
OwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdl
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0g
c3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
OwogICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4m
JiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24s
IHN0ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVk
KT47Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikg
PSAwOwogCiAgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUgOiB1aW50OF90IHsKICAg
ICAgICAgTm9uZSwKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2xvc2VT
ZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwogICAgIHZpcnR1YWwg
dm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNh
bGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcg
UmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3Rh
dHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0
YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNh
Z2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCA1MmE2MTQ4YzgzY2Q1
MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBmLi5mNGNkOWU1Mjk5NjE2NjUxNmY4NDYyM2JlZDFm
NDA2ZDQ5MTFjZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcAppbmRleCAzMWE5ZmRmYTAyZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNkYzU4
YWE5Li45OTdkMzkzNDdkZWNkZGE5NGFlODhjYjZkNzk3ZWEwNjZiYzVmMzRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVh
cktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC00MDcsNyArNDA3LDcgQEAgYm9vbCBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2UoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRh
dGUgdGhlIHJlc3BvbnNlIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdC4KICAgICBpZiAoIUNETVV0
aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KHJlc3BvbnNlKSkKQEAgLTQzMyw3ICs0MzMsNyBAQCB2
b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cgogICAgIGNhbGxiYWNrKHN1Y2NlZWRlZCk7CiB9CiAKLXZv
aWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1J
bnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8g
UmVqZWN0IHNldHRpbmcgYW55IHNlcnZlciBjZXJ0aWZpY2F0ZS4KICAgICBjYWxsYmFjayhGYWls
ZWQpOwpAQCAtNDU1LDcgKzQ1NSw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUlu
c3RhbmNlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24oKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkoKnRoaXMpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25D
bGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nl
c3Npb25JZFZhbHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00NzcsNyArNDc3
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAg
IC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24gSUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJi
b3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJlIGJlY2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5oCmluZGV4IDllMjdmZTkxMmM0ZGEwNjdmYjI2Y2FmYmM3ZjZhNjUxZGE0NzUyOGIuLjQ2OGNl
NDdkZGJhMjZiYWJlYzJkMDRhZTI4N2NiNDEzZjIzNTIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygp
IGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vz
c2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogfTsKIApAQCAtOTksNyArOTksNyBA
QCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1w
bGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBl
OjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMs
IEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9p
ZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3Vj
Y2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RN
SW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xMDksOCArMTA5LDgg
QEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eShwYXJlbnQpIHsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBl
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5n
JiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggZTMyYTM2YzYwNzYx
OTIxNjhjNmEzNzkzMThmNzhhZTE3ODljNDgyZS4uNzBkNWQ0MTk0NDI5MGZmNGFmYjljYjU0ZWQ1
MmJkYWQ1YzMzMjkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgSW1hZ2U6OmlzUG9zdFNjcmlwdFJlc291cmNl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQogfQogCiAKLUVuY29kZWRE
YXRhU3RhdHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNl
dERhdGEoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9lbmNvZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRh
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNDdlYTk4
OWU5NmMzMDA0YWZjMzg4Y2FhN2JhZjcwZDdiMmM2YmFkZi4uM2IyMzc0NzVhOWY5MzJlYjdlOTBj
ZGMzOWMwYzllOTVkZTE0OTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQog
ICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRW5j
b2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERh
dGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1
cyBkYXRhQ2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWRE
YXRhU3RhdHVzOjpVbmtub3duOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1dGkoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfSAvLyBudWxsIHN0cmluZyBpZiB1bmtub3duCkBAIC0xMzMsNyAr
MTMzLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShi
b29sIGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7CiAKLSAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CiAgICAgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZElt
YWdlRGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSgpOwpAQCAtMjA5LDcgKzIwOCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIENv
bG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KIAog
cHJpdmF0ZToKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1h
Z2VEYXRhOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29k
ZWRJbWFnZURhdGE7CiAgICAgSW1hZ2VPYnNlcnZlciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDQw
YTBlNmNmMDM5NzJmYjFjYzcxYjJkMjgzMGY5NzFlMDBlNTk3MDguLjA1M2VmNjJjNThkZjNjZDI5
MDBkOWUxMDRlYTk3YjAzOWQzMGNmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIEltYWdl
RGVjb2Rlcjo6Y2xlYXJGYWN0b3JpZXMoKQogfQogI2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29k
ZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFn
ZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
IHsKICAgICBVTlVTRURfUEFSQU0obWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDVhYWUzY2M5MTFjNjA1Zjc3MmIw
NTdkMDFlZGJiYjgxMTI1ZmIyNTMuLjY5MmM3MjQxMGQwMTNlYTIzZDQzOWIzYzc1NmFjZWMwYTU0
NWQ0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBj
bGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNv
ZGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2Rlcigp
ID0gZGVmYXVsdDsKIAogICAgIGVudW0gY2xhc3MgTWVkaWFUeXBlIHsKQEAgLTkxLDcgKzkxLDcg
QEAgcHVibGljOgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB1c2luZyBTdXBwb3J0c01l
ZGlhVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKE1lZGlhVHlwZSk+OwogICAgIHVzaW5nIENhbkRl
Y29kZVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT47Ci0gICAgdXNpbmcg
Q3JlYXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pPjsKKyAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5j
ID0gRnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbik+OwogCiAgICAgc3RydWN0IEltYWdlRGVjb2RlckZhY3RvcnkgewogICAgICAgICBTdXBw
b3J0c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNNZWRpYVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjJjOTY0MGQ0NmQzYTkz
NTYxMTRmMzNhYjE0MDUyYzdmZWMyNzc4Yy4uNTQ1N2JkNWFiMzZmYTdkNDFkMDNkNjFiOTVkZDM0
NGE0MzVkYWY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcApAQCAtNjcsNyArNjcsNyBAQCBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNl
KCkKICAgICBBU1NFUlQoJm1fcnVuTG9vcCA9PSAmUnVuTG9vcDo6Y3VycmVudCgpKTsKIH0KIAot
Ym9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhKQorYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBp
c0RlY29kZXJBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05MSw3ICs5MSw3
IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbWFnZVNvdXJj
ZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFl
bnN1cmVEZWNvZGVyQXZhaWxhYmxlKGRhdGEpKQogICAgICAgICByZXR1cm47CkBAIC05OSwxMyAr
OTksMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBtX2RlY29kZXItPnNldERhdGEoKmRh
dGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kZWNvZGVyID0g
bnVsbHB0cjsKICAgICBzZXREYXRhKGRhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCi1F
bmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJ
bWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVj
ZWl2ZWQpOwogICAgIGNsZWFyTWV0YWRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGY5ODE0MTdmMjRlYmM3ZjJkYmQ1NzNkYWUw
ZTU5MjU5ODk0NGU2NmEuLjgyOWUwNmZiODllNTU4N2E4ZjUyNGE2OWUzY2IyODM5MDZhMjAyYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApA
QCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElt
YWdlU291cmNlKFdURk1vdmUobmF0aXZlSW1hZ2UpKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsK
LSAgICB2b2lkIHJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKLSAgICBF
bmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHJl
c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBFbmNvZGVk
RGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpOwog
CiAgICAgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXpl
OyB9CkBAIC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogICAgIFQgZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwg
TWV0YWRhdGFUeXBlLCBUIChJbWFnZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VGcmFt
ZTo6Q2FjaGluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0p
OwogCi0gICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKHNp
emVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKTsKICAgICB2b2lkIGRlY29kZWRT
aXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggOGIwNGY5YmU5NmMzNmUwYTI2MjE4MGEyNWVhMzc0
NTk2MmIzZDdkNS4uNzk4YmU4NGIxOWViYTljN2MyZGJhODNjNGQwMTIyOWI5MTFlZmQyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC04Niw3ICs4Niw3
IEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFt
ZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitzdGF0aWMgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVk
LXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlCiAgICAgaWYgKCFzaW5mQXJyYXkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBzaW5mczsKKyAgICBWZWN0b3I8UmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBzaW5mczsKICAgICBzaW5mcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHNpbmZBcnJheS0+bGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiB2
YWx1ZSA6ICpzaW5mQXJyYXkpIHsKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgU2NoZW1lQW5k
S2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4g
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBhdXRvIHJlc3VsdHMgPSBleHRyYWN0U2NoZW1lQW5k
S2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRz
KSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjoKICAgICByZXR1
cm4ga2V5SURzOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBDb21tb24gU0lORiBCb3ggRm9ybWF0CiAgICAg
VU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0xOTEsMTcgKzE5MSwxNyBAQCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNp
bmYoY29uc3QgRgogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1SZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNr
ZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6
ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGJ1ZmZlcik7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gYnVmZmVy
LmNvcHkoKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0YSBpcyB0
aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlE
czsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7
CiAgICAga2V5SURzLmFwcGVuZChidWZmZXIuY29weSgpKTsKICAgICByZXR1cm4ga2V5SURzOwog
fQpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVz
cG9uc2UuY29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApp
bmRleCAzMTdiYjhkNTdlODZjMDYyMTRlMGI0MDU5ZGRmNGY4ODA3Yzc0YzZiLi42ZDhjMjg0ZGYw
MzFkMWQ3OTQxNjdjYTE1YTE1NWJlMDc3YTQ5MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuaApAQCAtNzIsMTYgKzcyLDE2IEBAIHB1YmxpYzoKICAgICBib29sIHN1
cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBw
b3J0c1Nlc3Npb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVz
cG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4g
ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0
YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBza2ROYW1lKCk7Ci0gICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+
IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0
YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxS
ZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8Rm91ckNDPiYgdmFsaWRGYWlyUGxheVN0
cmVhbWluZ1NjaGVtZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggZDU5ZmU0ODA0
ZDU4ZGZlNzhjYjViZWE3MDc0YjJlNjg3MDVjMWQ0OS4uZWQ1YzdjZTkyMGZlOTdmNGQ5N2E3ZmFl
MzM4ZWIzNWQ1NGM0MTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04Niw3ICs4Niw3
IEBAIHB1YmxpYzoKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWlu
ZzsgfQogCiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQ
ZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNl
cnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBSZWZQ
dHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CiAgICAgdm9pZCBz
ZXRDbGllbnQoV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4mJikgZmluYWw7CkBAIC05NiwxMCAr
OTYsMTAgQEAgcHVibGljOgogCiAgICAgTlNVUkwgKnN0b3JhZ2VVUkwoKSBjb25zdCB7IHJldHVy
biBtX3N0b3JhZ2VVUkwuZ2V0KCk7IH0KICAgICBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQo
KSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQ7IH0KLSAgICBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
dmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUu
Z2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigpOwog
Ci0gICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVx
dWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZDb250
ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25E
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpOwogCiAgICAgLy8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRl
Q2xpZW50CiAgICAgdm9pZCBkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0Kikg
ZmluYWw7CkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0T2JzY3Vy
ZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmluYWw7
CiAgICAgdm9pZCBleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlzID0g
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgS2V5cyA9IFZl
Y3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvcktleUlEcyhjb25zdCBL
ZXlzJikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDKiBzZXNzaW9uRm9yR3JvdXAoQVZDb250ZW50S2V5UmVwb3J0R3JvdXAqKSBjb25zdDsKICAg
ICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JS
ZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBjb25zdDsKQEAgLTEzOCw3ICsxMzgsNyBAQCBw
cml2YXRlOgogICAgIFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IG1fY2xpZW50OwogICAgIFJl
dGFpblB0cjxBVkNvbnRlbnRLZXlTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgUmV0YWluUHRyPFdl
YkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOwotICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOworICAgIFJlZlB0
cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwogICAg
IGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0cjxO
U1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lvbnM7CkBAIC0xNjAsOCArMTYwLDgg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2b2lk
IHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vu
c2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
TG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25z
dCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92
ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0
YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBmZDYxNTJl
MTg2N2Q0ZTZhNjcyYmVmMTcwNzBjYTc2MjkxMjZmNGI4Li44Yzg1NWExMGRmMGViMGI5MDViZmVj
NDk3ZDBkNWU2NmMxNDU1YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjY2LDcg
KzI2Niw3IEBAIEFWQ29udGVudEtleVNlc3Npb24qIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpjb250ZW50S2V5U2Vzc2lvbigpCiAgICAgcmV0dXJuIG1fc2Vzc2lvbi5nZXQo
KTsKIH0KIAotUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IENETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXph
dGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKK1JldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9y
SW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRvIHJlcXVl
c3RJdGVyID0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuYmVnaW4oKTsgcmVxdWVzdEl0ZXIgIT0g
bV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuZW5kKCk7ICsrcmVxdWVzdEl0ZXIpIHsKICAgICAgICAg
YXV0byYgcmVxdWVzdCA9ICpyZXF1ZXN0SXRlcjsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgQ0RNSwogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNz
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAgbV9zZXJ2ZXJD
ZXJ0aWZpY2F0ZSA9IFdURk1vdmUoc2VydmVyQ2VydGlmaWNhdGUpOwpAQCAtNTg0LDggKzU4NCw4
IEBAIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBhdXRvIHNlc3Npb25LZXlzID0gc2Vzc2lvbkludGVyZmFjZS0+a2V5SURzKCk7Ci0gICAg
ICAgIGlmIChhbnlPZihzZXNzaW9uS2V5cywgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYgc2Vzc2lvbktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kSWYo
WyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYga2V5SUQpIHsKKyAgICAgICAg
aWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7CisgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRJ
ZihbJl0oY29uc3QgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBrZXlJRCkgewog
ICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRC5nZXQoKSA9PSBzZXNzaW9uS2V5LmdldCgpOwog
ICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgIH0pKQpAQCAtNzAzLDcgKzcwMyw3
IEBAIEtleXMgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlJ
RHMoKQogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChsaWNl
bnNlVHlwZSkpIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIs
ICIgZmFsc2UsIGxpY2Vuc2VUeXBlIFwiIiwgbGljZW5zZVR5cGUsICJcIiBub3Qgc3VwcG9ydGVk
Iik7CkBAIC03ODQsNyArNzg0LDcgQEAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiBz
dHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1ZSgpID09IHZhbHVlOwogfQogCi12b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IGlmICghbV9leHBpcmVkU2Vzc2lvbnMuaXNFbXB0eSgpICYmIGlzRXF1YWwocmVzcG9uc2VEYXRh
LCAiYWNrbm93bGVkZ2VkIl9zKSkgewogICAgICAgICBhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5z
dGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCk7CkBAIC04ODYsNyArODg2LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKCprZXlJRFZlY3RvcikpOwogICAgICAgICAgICAgYXV0byBmb3VuZEluZGV4
ID0gbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpbmRJZihbJl0gKGF1dG8mIHJl
cXVlc3QpIHsKICAgICAgICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3Qo
cmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kSWYoWyZd
KGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4ga2V5SURzLmZpbmRJZihbJl0oY29uc3QgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkgPT0g
a2V5SUQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgICAg
ICB9KTsKQEAgLTExODQsNyArMTE4NCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAg
aWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkK
ICAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKIAotICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBh
aXI8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+Owor
ICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBD
YWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2Fs
bGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIHVzaW5nIENhbGxiYWNrRnVuY3Rpb24gPSBGdW5j
dGlvbjx2b2lkKFJlcXVlc3RzRGF0YSYmKT47CiAgICAgICAgIHN0YXRpYyBSZWZQdHI8Q2FsbGJh
Y2tBZ2dyZWdhdG9yPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpAQCAtMTI0MCw3ICsxMjQwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICBAdHJ5
IHsKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCku
cmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChy
ZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOworICAgICAgICAgICAgUmVmUHRyPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3Qo
KSk7CiAgICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVh
bWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRl
bnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRp
b25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpj
b250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKikgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9
IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihj
b250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IGZhNzUzN2Y3ZGU5ZTRiYzNlM2JhNDBjMDhhMWM1ZWExMzhhOGRiMDMuLmE2NmRkMGRl
NDYxOGY1NGM2ZWMyN2QwMzA2OThjZjU2YTI4NGRiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtMjg3Nyw3ICsyODc3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmMKICAgICBpZiAo
IW1fa2V5SUQgfHwgIW1fY2RtSW5zdGFuY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
aW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1dG8g
aW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwogICAg
IGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2Ft
cGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggYWMyN2EyMGI3ZDBhZDViMGFjY2E4
M2MwMTI2ZTI2NzMwY2NjZmU3ZC4uMWYwMDkxN2I1Nzg4NjUwZTgzZmY0YThhNjk1YTYyNDM0MjJm
Yjk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAg
LTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Qnl0ZVJhbmdlT2Zmc2V0KHNpemVf
dCk7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNF
U1NJT04pCi0gICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj47CisgICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj47CiAgICAgdm9pZCBzZXRLZXlJRHMoS2V5SURzJiYga2V5SURzKSB7IG1fa2V5
SURzID0gV1RGTW92ZShrZXlJRHMpOyB9CiAgICAgY29uc3QgS2V5SURzJiBrZXlJRHMoKSBjb25z
dCB7IHJldHVybiBtX2tleUlEczsgfQogICAgIEtleUlEcyYga2V5SURzKCkgeyByZXR1cm4gbV9r
ZXlJRHM7IH0KQEAgLTEwNiw3ICsxMDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX21pcnJv
cmVkIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZD
T05URU5US0VZU0VTU0lPTikKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiBtX2tleUlEczsKKyAgICBLZXlJRHMgbV9rZXlJRHM7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4
IDM3NmE2ZmMxNDM4MTFlZWI4NTY3YmNiMDhlN2RkZDNiMWZmMTNjZjcuLjVjYzBhYWIzNDBmMjBk
OTY2YjJmOThlMzMyOTQ4ZThlMzc0M2E1NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHBy
aXZhdGU6CiAgICAgV2Vha1B0cjxDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDPiBtX3Nlc3Np
b24geyBudWxscHRyIH07CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBI
QVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCi0gICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgc3RydWN0IFRyYWNrSW5pdERhdGEg
ewogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YTsKICAgICAgICAgS2V5SURz
IGtleUlEczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0KaW5kZXggZjNkNDI0NWJlMTQwMDhmMDVjNmI5OWQ5NjlmZjRjZmQwZWM3
NzQzZi4uMDU1YjczYjM2MWNhZDdkNTA2YTM3MzViOGE4MmExNTdmZGU1MzgwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0K
QEAgLTI5Miw3ICsyOTIsNyBAQCBzdGF0aWMgYm9vbCBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBw
b3J0S2V5U2Vzc2lvbigpCiAgICAgcmV0dXJuIHN1cHBvcnRzOwogfQogCi1zdGF0aWMgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weUtleUlEcyhjb25zdCBWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHMpCitzdGF0aWMgVmVjdG9yPFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weUtleUlEcyhjb25zdCBWZWN0b3I8UmVmPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHMpCiB7CiAgICAgcmV0dXJuIGtleUlE
cy5tYXAoW10gKGF1dG8mIGtleUlEKSB7CiAgICAgICAgIHJldHVybiBrZXlJRC5jb3B5UmVmKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKaW5kZXggMjQ3ODE1MDYwMmE4ZDBkNmIwNmQ3YTNhNTgzNWYwYjgzMDcyMTRl
NC4uNGY1YWZmZDRiODRmNzIwODZiYTVjZWQ4OWQ4ODU3NDAxNjQ0MjFhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZv
KQogfQogI2VuZGlmCiAKLUltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCitJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQog
ewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXpl
KCkgPj0gMzIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuaAppbmRleCAxNzUxMDg4NzIxZjU2MjFmY2RiZmQwMGYyNmRiMjc3Yzgx
MTdkZjgxLi4zNjhiMTYyODNlNGJmZjQ2Mjg5YTE3ZWM0MDgzMmVmNTAxNWQwMDE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKQEAgLTMyLDkgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW1hZ2VEZWNv
ZGVyQ0cgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAg
IEltYWdlRGVjb2RlckNHKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKLSAgICBzdGF0aWMgUmVmPElt
YWdlRGVjb2RlckNHPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRh
LCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDI5YzlhYjRlZWRmMmQ2Mzli
NDFlODJmYTZhYzJkZjM3OWY0YTM0NzMuLjJmZDg0ZDIxOWI5OGNkYTE1OWIwN2VmYzUxNjllZTAy
YTgyNzg3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC04
MSwxMiArODEsMTIgQEAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiB0b1NhbXBsZShJdGVy
YXRvciBpdGVyKQogICAgIHJldHVybiAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKilpdGVy
LT5zZWNvbmQuZ2V0KCk7CiB9CiAKLVJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFn
ZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29k
ZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdT
dHJlYW1lcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBtX21pbWVUeXBlKG1pbWVUeXBlKQogewogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuaAppbmRleCAyNjFkYWZmMjYxNThlMTdhMmE0MjIxZmZiMjQzNTQ2NzcxNmRiZDNi
Li4xOWQ4Yzk5ZTMwNjcyZDQ4ODZlYTg5MGMyNDczMzI5MjNkOTY1M2M5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVj
b2RlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdT
dHJlYW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFt
ZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLSAgICBJbWFnZURl
Y29kZXJHU3RyZWFtZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3Rh
dGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRp
YVR5cGUoTWVkaWFUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPT0gTWVkaWFUeXBlOjpWaWRlbzsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggY2Q4ZGRkOTJmOWU3OTEzOGY2NzVmMTk2
ZmJlYTE4ZTgxMDcyZjFhNy4uMzY0ZmI2YmMzNzQ2ZDJhNjg0Y2U5OWNkMmYzZGNlOWRmYzA5MzAy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBD
RE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIGNvbnN0IEYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25z
ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICBy
ZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VUaHVuZGVyOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhCiAgICAgY2FsbGJhY2soU3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENE
TUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICBhdXRvIGRhdGEgPSBjZXJ0aWZpY2F0ZS0+ZXh0cmFjdERhdGEoKTsKICAgICBP
cGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRl
KG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oZGF0YS5kYXRhKCkp
LCBkYXRhLnNpemUoKSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vz
c2lvbj4gQ0RNSW5zdGFuY2VUaHVuZGVyOjpjcmVhdGVTZXNzaW9uKCkKIGNsYXNzIFBhcnNlZFJl
c3BvbnNlTWVzc2FnZSB7CiAKIHB1YmxpYzoKLSAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UoY29u
c3QgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgUGFyc2VkUmVz
cG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6ZSgpKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQ5LDggKzM0OSw4IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wgaGFzUGF5
bG9hZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9hZCk7IH0KLSAg
ICBjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBB
U1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9Ci0gICAgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyBy
ZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBjb25zdCBSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0
dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2Fk
LnZhbHVlKCk7IH0KICAgICBib29sIGhhc1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUuaGFz
X3ZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGUoKSBjb25z
dCB7IEFTU0VSVChtX3R5cGUpOyByZXR1cm4gbV90eXBlLnZhbHVlKCk7IH0KICAgICBXZWJDb3Jl
OjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGVPcihXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBl
IGFsdGVybmF0ZSkgY29uc3QgeyByZXR1cm4gbV90eXBlID8gbV90eXBlLnZhbHVlKCkgOiBhbHRl
cm5hdGU7IH0KQEAgLTM1OSwxMSArMzU5LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBi
b29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0gICAgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOwogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4gbV90eXBlOwogfTsKIAotdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2Vk
UmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgaWYgKCFwYXJzZWRSZXNwb25zZU1lc3NhZ2Up
IHsKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6Omtl
eXNVcGRhdGVEb25lQ2FsbGJhY2soKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xl
YXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNr
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1IoIkNETSBlcnJvciIpOwog
ICAgIGF1dG8gZGF0YSA9IG1lc3NhZ2UtPmV4dHJhY3REYXRhKCk7CkBAIC00ODQsNyArNDg0LDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG0KICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tz
LmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIs
Cit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAogICAgIExp
Y2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CkBAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKICAgICAgICAgcGF5
bG9hZERhdGEuZGF0YSgpLCBwYXlsb2FkRGF0YS5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5k
ZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7
CiAgICAgICAgIEdTVF9FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7Ci0gICAgICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5
bG9hZCgpOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5p
dERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAgICAgICAgY2FsbGJhY2soaW5pdERhdGEu
cmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogCiAgICAg
YXV0byBnZW5lcmF0ZUNoYWxsZW5nZSA9IFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBh
eWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlu
aXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAgICAgIGlmIChtX3Nlc3Npb25JRC5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIEdTVF9FUlJPUigiY291bGQgbm90IGNyZWF0ZSBzZXNz
aW9uIGlkIik7CiAgICAgICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgp
LCB7IH0sIGZhbHNlLCBGYWlsZWQpOwpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6c2Vzc2lvbkZhaWx1cmUoKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRD
YWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYm
IGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9zZXNz
aW9uSUQpOwogCkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVu
ZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklEKTsK
IAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdl
ZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJv
b2wgc3VjY2VzcywgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpA
QCAtNTk4LDcgKzU5OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNl
c3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAgICAg
ICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1l
c3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwog
ICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdl
ID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZN
b3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAg
ICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsK
ICNpZm5kZWYgR1NUX0RJU0FCTEVfR1NUX0RFQlVHCiAgICAgICAgICAgICAgICAgICAgIGF1dG8g
ZGF0YSA9IG1lc3NhZ2UtPmNvcHlEYXRhKCk7CkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNl
c3Npb25JRCwgTGljZW4KIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgbV9zZXNzaW9u
SUQgPT0gc2Vzc2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5k
KFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CisgICAgbV9zZXNz
aW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtNjU3LDcg
KzY1Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgUGFyc2Vk
UmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlm
IChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRS
ZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNl
TWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoInNlc3Np
b24gJXMgcmVtb3ZlZCwgbWVzc2FnZSBsZW5ndGggJXp1IiwgbV9zZXNzaW9uSUQudXRmOCgpLmRh
dGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobV9r
ZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0dXM6OlJlbGVhc2VkKSwgV1RGTW92ZShtZXNz
YWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0NETVRodW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvQ0RNVGh1bmRlci5oCmluZGV4IDEwMjBlMTUzMjI3MWI1MzUxZTEwNmRkZThmMjFl
YTU0MDVhOWMyMzcuLmM5NjdmMjBjMWNhNjM3MjU5ZDY0OWZkOGI5YTY4NTFiYjFkMjkyN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
Q0RNVGh1bmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvQ0RNVGh1bmRlci5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBib29s
IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBw
b3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmlu
YWw7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKIHByaXZh
dGU6CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAg
SW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6VGh1bmRlcjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rp
c3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1
Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEyNiw4ICsxMjYsOCBAQCBjbGFzcyBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyIGZpbmFsIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lvblBy
b3h5IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyKENETUluc3RhbmNl
VGh1bmRlciYpOwogCi0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBl
LCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNl
VHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTE0MSwxNCArMTQx
LDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNSW5zdGFuY2VUaHVuZGVyKiBjZG1JbnN0
YW5jZVRodW5kZXIoKSBjb25zdDsKIAotICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKTsKKyAgICB1c2luZyBOb3RpZmljYXRpb24gPSB2b2lkIChDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjoqKShSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJik7CiAgICAgdXNpbmcgQ2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKCk+OwotICAgIHVzaW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKGJvb2wsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CisgICAgdXNp
bmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPjsKIAotICAgIHZvaWQgY2hhbGxlbmdlR2Vu
ZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHZv
aWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogICAgIHZvaWQga2V5VXBkYXRlZENhbGxiYWNrKEtleUlEVHlwZSYmKTsK
ICAgICB2b2lkIGtleXNVcGRhdGVEb25lQ2FsbGJhY2soKTsKLSAgICB2b2lkIGVycm9yQ2FsbGJh
Y2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZXJyb3JDYWxs
YmFjayhSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXMgc3RhdHVzKGNvbnN0IEtleUlEVHlwZSYpIGNvbnN0Owog
ICAgIHZvaWQgc2Vzc2lvbkZhaWx1cmUoKTsKIApAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6
CiAgICAgSW5pdERhdGEgbV9pbml0RGF0YTsKICAgICBPcGVuQ0RNU2Vzc2lvbkNhbGxiYWNrcyBt
X3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzIHsgfTsKICAgICBCb3hQdHI8T3BlbkNETVNlc3Npb24+
IG1fc2Vzc2lvbjsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdl
OworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CiAg
ICAgYm9vbCBtX25lZWRzSW5kaXZpZHVhbGl6YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxD
aGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjaz4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAgVmVj
dG9yPFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggODFjZTY1NDI1ZWY1M2NjMDEyNGVlMTA4
NWQ0NjVhYjEwMDcwMmJkNC4uOTI4M2JiOTQwMmZhOGYyNGVkZTY4ZDgxNmEwYzIyNjc5NGZmYzhl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIGJv
b2wgbWF0Y2hlc0NVUlNpZ25hdHVyZShjaGFyKiBjb250ZW50cykKIAogfQogCi1SZWZQdHI8U2Nh
bGFibGVJbWFnZURlY29kZXI+IFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFNjYWxh
YmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlID0gMTQ7IC8vIFRv
IHdpdDogIlJJRkY/Pz8/V0VCUFZQIgogICAgIGNoYXIgY29udGVudHNbbGVuZ3RoT2ZMb25nZXN0
U2lnbmF0dXJlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IGQ5ZmRhNzc2ZmQ1OGQ4
N2NjZTU0ZWYzMDQ0MDdjY2E0ZGUwNDdmMzUuLjMwMzNhYjI2ZjJiYzgyOWJiYTAwNTc2ZWRjMzQ4
YTRjNzM3MzBhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNjAsNyArNjAsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIG51bGxwdHIgaWYgd2UgY2FuJ3Qgc25pZmYgYSBz
dXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQogICAgIC8vIGJl
Y2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdoIGRhdGEgeWV0KS4KLSAgICBzdGF0aWMgUmVmUHRyPFNj
YWxhYmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVm
UHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAog
ICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlB
bHBoYTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKaW5kZXggODVmOTZkODVkMmIzNzJjZmMyMTcxYTgzNDExZDUyODY5MjA3M2NkNC4uM2ViN2Yx
NTFlZmQ4YTA4MzYyZjRiODY1ZjY0ZmQyMzE3MzQ4YWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTY2LDcgKzk2Niw3IEBAIHN0YXRp
YyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JB
TCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgSEdMT0JBTCBtZW1PYmogPSBHbG9i
YWxBbGxvYyhHUFRSLCBkYXRhLT5zaXplKCkpOwogICAgIGlmICghbWVtT2JqKSAKQEAgLTk4Niw3
ICs5ODYsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJp
bmcmIGZpbGVOYW1lLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9C
QUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmIChmaWxl
TmFtZS5pc0VtcHR5KCkgfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTA2Myw3ICsx
MDYzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hl
ZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZElt
YWdlLT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1l
bnQucmVuZGVyZXIoKSktPmRhdGEoKTsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVu
ZGVyZXIoKSktPmRhdGEoKTsKICAgICBpZiAoIWltYWdlQnVmZmVyIHx8ICFpbWFnZUJ1ZmZlci0+
c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAKaW5kZXggMjA1Mjc5NTUyODM2ZTA0NGRkN2MyYThlYTMyMTY4MmQ5MTc5Mzhj
MC4uOWI4YjRiNmQ1OGM3OGYzNTE3YmI2YmY1MWEyYjY3ZTQ1YzU3MjU3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBN
b2NrQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
CiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLndlYmtp
dC5tb2NrIik7CiB9CiAKLXZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4m
JiBrZXlzKQordm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25z
dCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYm
IGtleXMpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25zLmFkZChpZCwgV1RGTW92
ZShrZXlzKSk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQpAQCAtNzQsNyArNzQsNyBA
QCB2b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmlu
ZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbgogICAgICAgICB2YWx1ZS5hcHBlbmQoV1RGTW92ZShr
ZXkpKTsKIH0KIAotVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZh
Y3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQorVmVj
dG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJl
bW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1dG8g
aXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgp
KQpAQCAtODMsNyArODMsNyBAQCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBN
b2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKAogICAgIHJldHVybiBX
VEZNb3ZlKGl0LT52YWx1ZSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3Ry
aW5nJiBpZCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBp
ZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIE1vY2tD
RE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBGcmFnbWVudGVkUwogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRh
dGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKQEAgLTI3MCw5ICsyNzAsMTAgQEAgdm9pZCBNb2NrQ0RN
SW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3Rl
bUNvbmZpZ3VyYXQKICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12b2lkIE1vY2tD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2Nr
Q0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
LSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRp
Z3VvdXNDZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpOworICAgIFN0
cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNvbnRpZ3VvdXNDZXJ0aWZpY2F0ZS0+ZGF0
YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZh
aWxlZCk7CiB9CkBAIC0yOTgsNyArMjk5LDcgQEAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6TW9j
a0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJiBpbnN0YW4KIHsK
IH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBt
X2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAt
MzI0LDcgKzMyNSw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2FsbGJhY2soU2hh
cmVkQnVmZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNz
aW9uSUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwg
TGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lv
bjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJl
Zjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1f
aW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFj
dG9yeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IGQ5NmMx
NTZlZTRkMjc5MWI4YjA5OThkYWY5NDBlYzc1Mzc4MDdiYzMuLjMzZTMxMWMyODY1MzViMDkzZjEy
YzFkODJkOTZjZDhiMjdiMWYzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmgKQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpOyB9
CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9zZXNz
aW9ucy5yZW1vdmUoaWQpOyB9Ci0gICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0
IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYpOwotICAg
IGNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCk7CisgICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQs
IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIGNvbnN0
IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaW5nJiBpZCk7CiAKIHByaXZhdGU6CiAgICAgTW9ja0NETUZhY3RvcnkoKTsKQEAgLTk2LDcg
Kzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FuQ3JlYXRlSW5zdGFuY2VzIHsgdHJ1ZSB9
OwogICAgIGJvb2wgbV9zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcyB7IHRydWUgfTsKICAgICBi
b29sIG1fc3VwcG9ydHNTZXNzaW9ucyB7IHRydWUgfTsKLSAgICBIYXNoTWFwPFN0cmluZywgVmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBtX3Nl
c3Npb25zOwogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKQEAgLTEy
Miw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0
IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25z
dCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IG1f
ZmFjdG9yeTsKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEltcGxl
bWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJ
bXBsZW1lbnRhdGlvblR5cGU6Ok1vY2s7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0
aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikg
ZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsK
ICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBA
IC0xNTQsOCArMTU0LDggQEAgcHVibGljOgogICAgIE1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vh
a1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgcmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5h
bDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sm
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKaW5kZXggNTFjNzM5YzMyYzc0ZDc3NmQzYjFmMzBl
NTVkNWE1NGJlYjEwODJjNi4uMGQzYzMwZjM5ZTFiYWNkY2U0YWRkZDI2ZjQ2YzZiMjg1YmVlYzYw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVByb3h5LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpCiAgICAgbV9pbnN0YW5jZS0+Y2xlYXJD
bGllbnQoKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZElu
aXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6
OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBp
ZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRleCAwMmM1Y2QzN2Fl
NTQ4MDJmNmQwYzhkY2NjYjBiYTgwY2YzMzg4YzMzLi5jMDljYTE1NGMyYzkzODc5MGNjYjBkMzc2
Y2U1MmVkOWU2OWYzYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0
ZToKICAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYs
IFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyKTsKIAogICAgIC8v
IENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKaW5kZXggN2JhMTY2NGRmMTQ4ZjJkNGY2
NTQzNjE0ZTMxNDA0MGFiOTIyNzllZi4uZDllYTg1ZWVkNDZmMzY2ODQyZjQ2ODllYzNlNGFlOTcz
NjFmZTY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCkBAIC03MCw3ICs3MCw3
IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5i
dWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlv
bildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Np
b246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbi0+cmVx
dWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNl
Tm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uKElQQzo6U2hh
cmVkQnVmZmVyQ29weShXVEZNb3ZlKG1lc3NhZ2UpKSwgc2Vzc2lvbklkLCBuZWVkc0luZGl2aWR1
YWxpemF0aW9uLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOwog
ICAgIH0pOwogfQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTCiAK
IHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNzaW9uRGF0
YUNhbGxiYWNrJiYgY29tcGxldGlvbikKIHsKLSAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25E
YXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAo
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpv
cHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0
YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsK
KyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBs
ZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpvcHRpb25hbDxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZTsKICAg
ICAgICAgaWYgKGV4cGlyZWRTZXNzaW9uc0RhdGEpCiAgICAgICAgICAgICBleHBpcmVkU2Vzc2lv
bkRhdGFSZWZlcmVuY2UgPSBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZSgqZXhwaXJlZFNl
c3Npb25zRGF0YSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1
CiAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92ZShr
ZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCmluZGV4IGZlNzMwOTcxMzFlMGJi
MjBhNTAwMWUxNTAxNjAyZDY1MTg2YjMwOTAuLmJmMjczZWFlZGU2MTRjMjdiYTIwM2NiNjIyOWFj
ZmY2MzI0NTZiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3
IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lk
IHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAgICB2b2lkIHNl
bmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKFdl
YkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmlu
YWwgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKaW5kZXggZjdjYjZhNjNlYjkzM2FiZDRkNDUz
YTIyYWIyOTRmMTMwMzIzMmIwNi4uYTA0NDcyODU4Y2QxMjM5ZWM4YmFhY2RjMmJhNDg1ZmExOGNk
YzRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoCiAgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKIH0KIAotUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIHJldHVybiBt
X3ByaXZhdGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAppbmRleCAzYjY2Yzc3NTc4NzA2
OWU5NzZlZTA2NGY5NmZmMDdjMGY3MTJhOTBiLi5lY2Q2ODlhNjczMTc3MDlkYmRmZDMwMTg0ZTQw
NGE2YTM3OWM5YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNUHJveHkuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgUmVtb3RlQ0RNRmFj
dG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CiAK
ICAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmlu
ZGV4IDdhYWRmOTJlMzYxZGVmYWM1MDhlYmQ0OGQ3ZDA3NTg4YjRlNDdkNDYuLjYwNjIzNGRlMDRm
MWE2MTYyM2YwMjQ2MjNhMWMyYWMxOWEwNzQ4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgU2hh
cmVkQnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIHN0ZDo6b3B0
aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0
cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1
ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSkgfTsKQEAgLTUxLDcgKzUxLDE0IEBAIGNv
bnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckNvcHk6OmRhdGEoKSBjb25zdAogewogICAgIGlmICgh
bV9idWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBkb3duY2FzdDxT
aGFyZWRCdWZmZXI+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpOworICAgIHJldHVybiBkb3duY2Fz
dDxjb25zdCBTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpOworfQorCitSZWY8
Y29uc3QgU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJDb3B5OjpzYWZlQnVmZmVyKCkgY29uc3QK
K3sKKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIHJldHVybiBidWZmZXIoKS5yZWxlYXNlTm9u
TnVsbCgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaAppbmRleCAzNzBiODMyOGQ3NmM5YzNmNzcwMDQ3MzVhZDM1OWFlNmQzZWQ2MDkyLi5jODdk
NDBiYzQzOWFiOTM3MDgzMWJiNzVmYzk2ZmQ1NzgyOTcwYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC00MCwxNiArNDAsMTggQEAgY2xh
c3MgU2hhcmVkQnVmZmVyQ29weSB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0g
ZGVmYXVsdDsKIAotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlckNvcHkoUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7
IH0KICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpIHsgfQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWY8
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckNvcHkoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RG
TW92ZShidWZmZXIpKSB7IH0KICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZl
cihjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPigmYnVmZmVyKSkg
eyB9CisgICAgICAgIDogbV9idWZmZXIoJmJ1ZmZlcikgeyB9CiAKICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5
KCkgOiB0cnVlOyB9CkBAIC01NywxNSArNTksMTUgQEAgcHVibGljOgogICAgIC8vIFRoZSBmb2xs
b3dpbmcgbWV0aG9kcyBtdXN0IG9ubHkgYmUgdXNlZCBvbiB0aGUgcmVjZWl2ZXIncyBJUEMgc2lk
ZS4KICAgICAvLyBJdCByZWxpZXMgb24gYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIHRoYXQgbWFr
ZXMgbV9idWZmZXIgYmVjb21lcyBhIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyCiAgICAgLy8gb25j
ZSBpdCdzIGRlc2VyaWFsaXNlZCBvdmVyIElQQy4KLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+KG1fYnVmZmVyLmdldCgpKTsgfQotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHNhZmVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IGJ1ZmZlcigpLnJlbGVhc2VO
b25OdWxsKCkgOiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmUHRy
PGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gZG93
bmNhc3Q8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5nZXQoKSk7IH0KKyAg
ICBSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYWZlQnVmZmVyKCkgY29uc3Q7CiAg
ICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwogCiAgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxT
aGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCmluZGV4IDk5ODdiMWE4NDc2OGYyNzM4NjNkYzBiMWE1NTM5MTUzYzQ5ODE3
ODMuLjE2M2I2YmM1NGMxOWJiMDQ3OWI3NmIxOTAyYTY2MzFkNjJkZDk5OGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzExMSw2ICsz
MTExLDYyIEBAIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQor
CitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gQXJn
dW1lbnRDb2RlcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBXVEZNb3ZlKGJ1ZmZlcik7
Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPGNvbnN0IFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hh
cmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisK
K3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBi
dWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxjb25zdCBTaGFyZWRCdWZm
ZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV1RGTW92ZShidWZmZXIpOwor
fQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVm
ZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8Y29uc3QgU2hhcmVkQnVmZmVyPj4g
QXJndW1lbnRDb2RlcjxSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCk7Cit9CisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9S
TShDT0NPQSkKIHN0YXRpYyBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHRyeUNvbnZlcnRUb1No
YXJlYWJsZVJlc291cmNlSGFuZGxlKGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0KQogewpAQCAt
MzE4MCw3ICszMjM2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGUKIHsKICAgICBlbmNvZGVy
IDw8IG1lc3NhZ2UuZmlyc3Q7CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CisgICAgUmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29w
eVJlZigpOwogICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7CiB9CiAKQEAgLTMxOTAsNyArMzI0
Niw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdl
PiAgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0
eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA2ZTI3YTc4NzIwMjE3MWJiY2VkYmI2
NDgzOTIwYTdlNzliZDU4MGJmLi4wNDQzNTllOTg0ZTA5MDQzMTU2NTUzZTZhZmZiMGZiM2E1YzA5
MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApA
QCAtNzcyLDYgKzc3MiwyNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVm
UHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307
CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNv
ZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
Y3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCBjMGJlM2E0NWI5OGYwMTJmNjYzMDI5YTZk
NWNmMGE4ODJhOGRiNzNjLi4zYjA0Nzc0NWE2ZmUyYWYxMzA4ZWYxYTQ0NjBiYWUxY2I2MzI0Mzdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBA
IC04NSw3ICs4NSw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0
YShjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0LCBiCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7
CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBp
bWFnZS0+ZGF0YSgpOwogICAgICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgICAgICBpbWFnZVNo
YXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwog
ICAgICAgICAgICAgaW1hZ2VTaXplID0gYnVmZmVyLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKaW5kZXggYzI4ZmU2NWYwY2Yx
NjQzOTk4MThhY2EzMmY5ODFjYzc3OGYxZTkxOS4uZWEzY2U4NzZmZmNmMzBhMWYwNDAxNTVjYmY2
YjgzOTdkNDU3M2ZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVtb3RlQ0RNOjpsb2Fk
QW5kSW5pdGlhbGl6ZSgpCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxp
emUoKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBS
ZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
cmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVy
LCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vuc2UoKS4K
ICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKaW5kZXggOGM0NTRlYjgzZTU5OTRhOGU0ZDU5MmQ1MWRm
OTFmZjliNTIzY2JlZi4uOWVmY2Q0Yzg4N2NkMWIwMmI4MzhlNjQ2NTA4YTU1MjIwMWMwNGQ5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCkBA
IC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJz
QXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5z
dGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6
ZSgpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBj
b25zdCBmaW5hbDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vz
c2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgVmVjdG9yPEF0b21TdHJp
bmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZp
Z3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAppbmRleCA3
NWQ1ZTVhNzk1MTRkYmMzYWFhYzAwYjk4ODRhNTdkYWMxOThmOWY2Li5iYmRmYTMxMWVjNTYwYWVm
ZDhmYTE4M2IxZDBiMzViN2FiYWVkN2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApAQCAtNzgsNyArNzgs
NyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVByb3h5OjpJbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJh
dGlvbiwgZGlzdGluY3RpdmVJZGVudGlmaWVycywgcGVyc2lzdGVudFN0YXRlKSwgV1RGTW92ZShj
YWxsYmFjayksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhGYWlsZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZS5oCmluZGV4IDJjNzg1MWU0NDBiMDhhNTJhMmFlNzBkYTdlNDE4ODgyZTNjNjE0Mzku
LjEwYTdiYzhmODY1ZjVkYWJmMDM1NTQ5ZWM5ZmY5NTQ3MTI1MWMwNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgK
QEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBs
ZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6
OlJlbW90ZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdl
YkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRp
ZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0g
ICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVtOyB9CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCmluZGV4IDhiZWNkNTliNWViMzdlMGQzYTUxNDUzOGYz
NzM4MWQ3Zjc3ZDhjY2UuLjhkZjkyZWQwNzUxNDFiMDQ4YTM0N2RhNTg1Y2ExZGRkZDBhY2U0OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1v
dGVDRE1GYWN0b3J5PiYmIGYKIHsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNh
bGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWls
ZWQpOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZwogICAgIH0sIG1f
aWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNl
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwpAQCAt
MTA5LDcgKzEwOSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNz
aW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zCiAgICAgfQogCiAgICAgbV9m
YWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNz
aW9uRGF0YShzZXNzaW9uSWQsIHR5cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KEtleVN0YXR1c1ZlY3RvciYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAg
IHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAo
bWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCiAgICAgICAgICAgICByZWFsTWVz
c2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAg
ICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShyZWFsTWVzc2FnZSksIHN1
Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApp
bmRleCA0ZTRjZDJjMDA1YzZiMDA2NWY5Y2RiMTg4YzRiY2UwYjViZmE2NjAxLi5jNjI1MmZhNzg1
MGQ4NzBjYWUxYTkyNmY3MzY4OTMzY2QwOWM4NTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQ
dHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBt
X2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsgfQogICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5h
bCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsK
LSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VU
eXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYm
KSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3Nl
U2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkYuaAppbmRleCA5YzA4ODE2MWVkZGJmMjM0MGY4N2EwYmI5NzM0MTM3ZWE3ZTNk
NzEzLi5hNTRjZTk2ZGFhMTc1ZmU0YTIyNmU3OWQwYzFlOGNkMTVmMWUxYTFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Ri5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
IGZpbmFsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VEZWNvZGVyCiAgICAgLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJB
VkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVy
JiBpZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3Jl
YXRlKFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6
OkltYWdlRGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVJbWFnZURlY29k
ZXJBVkYobWFuYWdlciwgaWRlbnRpZmllciwgbWltZVR5cGUpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAppbmRleCBiZWRkZWNiYjA3NGQzNDEyYTliZTkzY2Jj
ZDU5YWUxOTI0N2YyYjRhLi4xODRmZWQ3YWFkMWVkOThhMzczYzc0YzhiYzUxYWJjNTNiNDg0NjJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQ
dHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpj
cmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFJlbW90ZUltYWdl
RGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNv
ZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdl
RGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAgICAgaWYgKCFlbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5KGRhdGEpLCBtaW1lVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6Q3JlYXRlRGVjb2Rlcjo6UmVwbHkoaW1hZ2VEZWNvZGVySWRlbnRpZmllciksIDApKQpA
QCAtNDgsNyArNDgsNyBAQCBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFn
ZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRgogICAgIGlmICghaW1hZ2VE
ZWNvZGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHJl
bW90ZUltYWdlRGVjb2RlciA9IFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y3JlYXRlKCp0aGlzLCAq
aW1hZ2VEZWNvZGVySWRlbnRpZmllciwgZGF0YSwgbWltZVR5cGUpOworICAgIGF1dG8gcmVtb3Rl
SW1hZ2VEZWNvZGVyID0gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjcmVhdGUoKnRoaXMsICppbWFn
ZURlY29kZXJJZGVudGlmaWVyLCBtaW1lVHlwZSk7CiAgICAgbV9yZW1vdGVJbWFnZURlY29kZXJz
LmFkZCgqaW1hZ2VEZWNvZGVySWRlbnRpZmllciwgcmVtb3RlSW1hZ2VEZWNvZGVyKTsKIAogICAg
IHJldHVybiByZW1vdGVJbWFnZURlY29kZXI7CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBSZW1v
dGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNzKGJvb2wgdXNlR1BVUHJv
Y2VzcykKICAgICBJbWFnZURlY29kZXI6Omluc3RhbGxGYWN0b3J5KHsKICAgICAgICAgUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGOjpzdXBwb3J0c01lZGlhVHlwZSwKICAgICAgICAgUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGOjpjYW5EZWNvZGVUeXBlLAotICAgICAgICBbdGhpc10oRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKSB7CisgICAgICAgIFt0aGlzXShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIHsKICAgICAg
ICAgICAgIHJldHVybiBjcmVhdGVJbWFnZURlY29kZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0
aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgICAgIH0KICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKaW5kZXggMzYxOGFmZDEyMDk4YjU1NzZiNGRk
NGZmYmYzYzA2ZmJhODQyYTc2NC4uOTkyZWQyMWE0NzJiZGI1N2FkMWQ1ZTFlMjViZDZkMTg4NWEy
OTI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKQEAgLTU5LDcgKzU5LDcg
QEAgcHVibGljOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBlbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+
IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlvbiwgV2ViQ29yZTo6
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFJlZlB0cjxSZW1vdGVJbWFnZURlY29k
ZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2Rlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlv
biwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgLy8gR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OkNsaWVudC4KICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlk
Q2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0YTAw
ZjIyOGNkNTBmODVjMDNmOTk3ZjA0N2M2OWNlNTIwZTlmMTc3Li4yMmE1ZWQzYzI4OTEwMmMzYTkx
NDI1M2U4ZmZjMTVkOTVjOTQ5NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMTcsMTUgKzIxNywxNSBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFByaQogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
JiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBMT0coTmV0d29yaywg
IihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEgb2Ygc2l6ZSAl
bHUgZm9yICclcyciLCBkYXRhLnNpemUoKSwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5n
TmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVu
dGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWSht
X2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlm
aWVyKCkpKSkgewotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9h
ZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
YnVmZmVyID0gZGF0YS5idWZmZXIoKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7Cisg
ICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZp
ZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkYXRhID0gV1RGTW92
ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
bV9jb3JlTG9hZGVyKQotICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVk
QnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAg
ICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGgp
OwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IGFjMGFk
YzliOGQ3YTRmMjFlOGJjYWI1Zjg4OTI0NDU4ZTU0ZTJiMWMuLmJmZGQyOTU1ZTRhM2Q1OGZjZGEw
MjI4ODliMDVlMmRjZWJhN2E0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2
NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFByaXZhdGVSZWxheWVkLCBib29sIG5lZWRz
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJl
c291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lk
IGRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAg
IHZvaWQgZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApp
bmRleCA5ZGY0NTRhMDY4YmMwNWFiYTgxZjc2MjE2MWE0ZmQyNjBkNTg3M2Y3Li42NDY2ZDBmZmJi
MmUyYTcyNDE2ZjQzYTA1YWQ1MzA2ZmE3ZTVkZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgU3RyaW5nIFdl
YkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRl
ciA9IG1fY29yZUZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgIGlm
ICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0
YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDYzYWY5
MWZkYmE1ZjIwMTAwNmM3M2M1OWYyOTZiYTIyZjNkMzdjNWQuLjRjZDI1NjhhMjJkYThkN2UxMWYw
YTA0ZjEyYjVlMzk3ZGFiNGU1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0zODc5LDcgKzM4NzksNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNv
dXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKAogCiB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgaWYgKFBsdWdp
blZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgp
KSkKICAgICAgICAgICAgIGJ1ZmZlciA9IHBsdWdpblZpZXctPmxpdmVSZXNvdXJjZURhdGEoKTsK
QEAgLTM4OTIsNyArMzg5Miw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9m
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kCiAgICAgY2FsbGJh
Y2soSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSkpOwogfQogCi1zdGF0aWMg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKK3N0YXRpYyBSZWZQdHI8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHJlc291cmNlVVJMKQogewogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBm
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWxvYWRlcikKQEAgLTM5
MDcsNyArMzkwNyw3IEBAIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVz
b3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVCiAKIHZvaWQgV2ViUGFnZTo6
Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBT
dHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewotICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoYXV0byogZnJhbWUgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBVUkwg
cmVzb3VyY2VVUkwoVVJMKCksIHJlc291cmNlVVJMU3RyaW5nKTsKICAgICAgICAgYnVmZmVyID0g
cmVzb3VyY2VEYXRhRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CkBA
IC03MDU3LDcgKzcwNTcsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvcklj
b24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcgogICAgIGlmICghZG9j
dW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0g
ICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxv
YWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25E
YXRhKSBtdXRhYmxlIHsKKyAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byogaWNvbkRhdGEpIG11dGFi
bGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoUmVm
UHRyIHsgaWNvbkRhdGEgfSkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA4NTQ0M2ZjNmE5NzA1OTQ4
MjIyZjEwNzUxYjJjMTM4Y2VmMDZjMWFmLi4yNmRhNmNjOWNmM2IzMDMyM2UzZTZjNGE0OWFlZTZh
ZDQ5MGQ3MDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQpAQCAtMzI4Miw3ICszMjgyLDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJm
b3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAgICAgICAgQ2FjaGVkSW1hZ2Uq
IGNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkp
LmNhY2hlZEltYWdlKCk7CiAgICAgICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBj
YWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigp
OwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0
byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA4ZGY5OTNmMmQ3NzViNmM5M2QyZThmMDk5
MGY3MmY4NWY2MThlNThlLi5lYTI0YTgzMmQ1ZjFlYjFjMjU4Y2FkMjIxODkzMTI2YzUyMTM3ZjYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI1MCw3ICsyNTAsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsK
IAogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFp
cjxXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlz
aGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOworICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nSWNvbihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKik7CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1fbG9hZGluZ0lj
b24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA4N2E1ZDY1N2Y3
YjczM2QwN2M1ZGI2MDFmNjk4MWY5MDQ5NzcxMzkzLi40NDgwYTA0YTY4YTgzODBlOGNlYzJhMDA5
MDYyOTY1MjQyMTQwZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjA5Myw3
ICsyMDkzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9y
SWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3IKICAgICAgICAgfQogCiAgICAgICAg
IG1fbG9hZGluZ0ljb24gPSB0cnVlOwotICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
KSB7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRy
dWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChh
dXRvKiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgZmluaXNoZWRMb2FkaW5nSWNvbihidWZmZXIpOwpAQCAt
MjEzMCw3ICsyMTMwLDcgQEAgc3RhdGljIE5TSW1hZ2UgKndlYkdldE5TSW1hZ2UoV2ViQ29yZTo6
SW1hZ2UqIGltYWdlLCBOU1NpemUgc2l6ZSkKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbihX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgQVNTRVJUKG1fbG9hZGluZ0ljb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDVlYjVkNmExOWU2ZDkxZmNiM2JmYzgxY2Nh
OTFlYzdlMGU1NmM0MjguLjIzOGE0NGE1MzczZThjYzgzMjliZTZkMjA3NzA3YWQ3ZTkzODliMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2Uu
bW0KQEAgLTQ2MCw3ICs0NjAsNyBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAoTlNEYXRhICopZGF0
YQogewotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVz
b3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRh
KCk7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1h
aW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmF1dG9yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMmQ1OWMwYTE3NjgxOGU2NjJjNDNjMDc0NGE1M2ExMDFj
ODU2MWVkLi5lMGQwZjczMDYyOTM0ODk1YzNmMThiZTc1ZWViMjUwYjE1YzZiMDViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTM2Niw4
ICszNjYsOCBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9
IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgIGlmICghZW5jb2Rp
bmcuaXNWYWxpZCgpKQogICAgICAgICBlbmNvZGluZyA9IFBBTDo6V2luZG93c0xhdGluMUVuY29k
aW5nKCk7Ci0gICAgCi0gICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJp
dmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51
bGxwdHI7CisKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9w
cml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDog
bnVsbHB0cjsKICAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6
IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452494</attachid>
            <date>2022-02-18 00:56:31 -0800</date>
            <delta_ts>2022-02-18 05:05:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236736-20220218195628.patch</filename>
            <type>text/plain</type>
            <size>208830</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNmNTQ0YmQ4NjYwMzFj
NzQ1YzMxY2ZhNzEyY2MwYzI2YjkzOTNiOC4uYzEzNzg1MzMwZjU2ZTExZGZkNzYyYmM5MjUxN2U3
NjVkMTFiMjEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MyBAQAorMjAyMi0wMi0xNyAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU2hhcmVkQnVm
ZmVyIHVzZWQgYnkgQ2FjaGVkUmVzb3VyY2U6Om1fZGF0YSBjb25zdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NzM2CisgICAgICAgIHJkYXI6Ly84
OTA1MDQwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEJ5IG1ha2luZyBDYWNoZWRSZXNvdXJjZTo6bV9kYXRhIGNvbnN0LCBhbGwgY2FsbGluZyBwb2lu
dHMgbmVlZCB0byBiZQorICAgICAgICBtb2RpZmllZCBhY2NvcmRpbmdseSwgcmVzdWx0aW5nIGlu
IGFuIGV4dGVuc2l2ZSBjaGFuZ2UuCisgICAgICAgIEJ5IHBhc3NpbmcgdGhlIFNoYXJlZEJ1ZmZl
ciBhcyBjb25zdCB3ZSBjYW4gbW9yZSBlYXNpbHkgaWRlbnRpZnkgYXJlYXMKKyAgICAgICAgc3Rp
bGwgbW9kaWZ5aW5nIHRoZSBvYmplY3QgYWZ0ZXIgaXQncyBiZWVuIGNyZWF0ZWQuCisgICAgICAg
IFRoZSBvbmx5IHBsYWNlIHdoZXJlIGEgU2hhcmVkQnVmZmVyIHNob3VsZG4ndCBiZSBtYWRlIGNv
bnN0IGlzIHJpZ2h0CisgICAgICAgIGFmdGVyIGl0cyBjcmVhdGlvbi4KKworICAgICAgICBObyBj
aGFuZ2UgaW4gYmVoYXZpb3VyLiBTZW1hbnRpY3Mgb25seS4KKworICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6c2FuaXRpemVJ
bml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE06OnNhbml0aXplUmVzcG9uc2UpOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlE
c0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNXZWJNKToK
KyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyk6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlTZXNzaW9uOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpz
ZW5kTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChmaWxlV3Jh
cHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9z
aW5nSW1hZ2VXaXRoRGF0YSk6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1l
bnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVu
dDo6ZmluaXNoZWRQYXJzaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJl
c291cmNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYWluUmVzb3Vy
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YSk6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U3Vic3RpdHV0ZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1
dGVSZXNvdXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OlN1YnN0aXR1dGVSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rvcnkp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgor
ICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFyY2hpdmVGYWN0b3J5Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFyY2hpdmVG
YWN0b3J5OjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
Lmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oOgor
ICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6Ok1IVE1MUGFy
c2VyKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgorICAg
ICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNl
cmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL05vd1Bs
YXlpbmdNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWlsZGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRl
Q2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFp
bGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlc2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJh
Y3RLZXlJRHNTaW5mKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2FuaXRpemVTaW5mKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2FuaXRpemVTa2QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNl
cnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uRm9yS2V5SURzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExp
Y2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvcHlLZXlJRHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVBy
aXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpwYXlsb2FkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcnNlZFJlc3BvbnNlTWVzc2FnZTo6cGF5bG9hZCk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpl
cnJvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1h
Z2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVj
dCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vu
c2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorCiAyMDIyLTAyLTE2
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2hUcmFj
ZXI6IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBKYXZhU2NyaXB0Q29yZTogYm1hbGxv
Y19hbGxvY2F0ZV9pbXBsX2ltcGxfc2xvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxMTc4OGJhNzQzMTJjZjNkZGU4
YzhlOThjODIzZGM3N2YwYTYwZWU2Li4yY2UyNjk4NTkyMDk1NjQyZTY5YzFlNWY5ZjZiMjcyZmVm
ZTMxMjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIyLTAyLTE3ICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTaGFyZWRCdWZmZXIgdXNl
ZCBieSBDYWNoZWRSZXNvdXJjZTo6bV9kYXRhIGNvbnN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3MzYKKyAgICAgICAgcmRhcjovLzg5MDUwNDAz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6U2hh
cmVkQnVmZmVyQ29weTo6c2FmZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hh
cmVkQnVmZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBj
b25zdCk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OldlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b246Ok1lc3NhZ2U+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVh
dGVJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6cmVz
b3VyY2VEYXRhRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQp
OgorCiAyMDIyLTAyLTE2ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ3Jhc2hUcmFjZXI6IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBKYXZhU2Ny
aXB0Q29yZTogYm1hbGxvY19hbGxvY2F0ZV9pbXBsX2ltcGxfc2xvdwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDA5MDNhNTI2ZjdlZWI3NjNlN2E5MzhjMmMzNGMyYThhMmY3NmM1ZGMu
LjZlMDgzMmRkNTcxZmU1MTA3ZTI3NDUxOGMzMzNiMzIwMWQ1ZjZhZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wMi0xNyAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU2hhcmVkQnVmZmVyIHVzZWQg
YnkgQ2FjaGVkUmVzb3VyY2U6Om1fZGF0YSBjb25zdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NzM2CisgICAgICAgIHJkYXI6Ly84OTA1MDQwMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToK
KwogMjAyMi0wMi0xNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVubmVjZXNzYXJ5IGNvcHkvbWVtb3J5IGFsbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCAwMTYxMjE5ZDFlMjZiMjYyYzRl
ZWVjODE5OGM0NmQ4ZWIxNGMxYjAyLi4xZDM3MDFlNmFiZmU0NmJjZjE1NTExZmYyNDY4NDlkOTkw
OGM1YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
Y3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRl
ICYmIG1fcHJpdmF0ZS0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRh
VHlwZSk7CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXpl
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4g
SW5pdERhdGFSZWdpc3RyeTo6c2hhcmVkKCkuc2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUs
IGluaXREYXRhKTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIENETTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZQogICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKGlu
aXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKQorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAg
ICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCBkN2IxZDUzZDA0OTFmNzI3Nzli
NTk0YjJkODNjMDliODNiY2YyMDdmLi5iYjdiYTk5Mjc0NDkxM2I5ODIzM2JhYmI3ZjZkZmEzMjMx
NTQyYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgK
QEAgLTczLDEwICs3MywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkg
Y29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikg
Y29uc3Q7CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAK
LSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKaW5kZXggNDEwZWQyZmI2NDI3NTYyY2U5YmQ4ZWRhNGQ5
MWE4NmJhOThjYWE2MS4uZjU4NjcyYTFlMjQyNTdkY2FlYzM5ZWYwOTUzMGI5NjJlOGJkNzFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVu
dC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1DbGllbnQoKSA9
IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxh
eWJhY2tJZk5lY2Vzc2FyeSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1
ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCA2Zjg4OGUxNzg1OGRkYTZkOTQ3MWVjMWY2
ZWY1ZDA2NmRmMGU0OTkwLi4wN2YxNWUxNTBjZWI2OGZlYzZiYWJmYWQxYWM5NWEzOWQ5NWUxNTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIHsKICAg
ICBjb25zdCB1aW50MzJfdCBrS2V5SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9IDUxMjsKIH0KIAot
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+
IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1s
I2Zvcm1hdApAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjbwogICAgIGlm
ICgha2lkc0FycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBmb3IgKGF1dG8mIHZhbHVl
IDogKmtpZHNBcnJheSkgewogICAgICAgICBhdXRvIGtleUlEID0gdmFsdWUtPmFzU3RyaW5nKCk7
CiAgICAgICAgIGlmICgha2V5SUQpCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5
aWRzKGNvCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotc3RhdGljIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKQEAgLTE1MSw5
ICsxNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVj
dGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaQogICAgIHJldHVybiBwc3NoQm94ZXM7
CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+
IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogCiAgICAgYXV0byBwc3NoQm94ZXMgPSBleHRy
YWN0UHNzaEJveGVzRnJvbUNlbmMoYnVmZmVyKTsKICAgICBpZiAoIXBzc2hCb3hlcykKQEAgLTE4
NSw3ICsxODUsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SQogICAgIHJldHVybiBrZXlJRHM7
CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5Ojpz
YW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRy
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXpl
Q2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gNC4g
Q29tbW9uIFN5c3RlbUlEIGFuZCBQU1NIIEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0
bWwjY29tbW9uLXN5c3RlbQpAQCAtMTk1LDcgKzE5NSw3IEBAIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRl
ZFNoCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICAvLyBDaGVjayBpZiB0aGUgYnVmZmVyIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICAv
LyBUaGUgV2ViTSBpbml0RGF0YSBpcyB0aGUgQ29udGVudEVuY0tleUlELCBzbyBzaG91bGQgYmUg
bGVzcyB0aGFuIGtXZWJNTWF4Q29udGVudEVuY0tleUlEU2l6ZS4KQEAgLTIwNSwxMCArMjA1LDEw
IEBAIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9
CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtl
eUlEczsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVy
ID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7CisgICAgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIGF1dG8gc2FuaXRpemVkQnVmZmVyID0gc2FuaXRp
emVXZWJNKGJ1ZmZlcik7CiAgICAgaWYgKCFzYW5pdGl6ZWRCdWZmZXIpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBJbml0RGF0YVJlZ2lzdHJ5OjpJ
bml0RGF0YVJlZ2lzdHJ5KCkKIAogSW5pdERhdGFSZWdpc3RyeTo6fkluaXREYXRhUmVnaXN0cnko
KSA9IGRlZmF1bHQ7CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJl
Z2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7
CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJ
bml0RGF0YSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaQogICAg
IHJldHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVn
aXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxS
ZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRy
YWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChp
bml0RGF0YVR5cGUpOwogICAgIGlmIChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZh
bHVlLnNhbml0aXplSW5pdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCmluZGV4IDc3ZDYwNGIwOGJiN2Y3
ZTM4YmNjYjM1NDViMzRjOGIxMzQzNTVlZjIuLmJhZTcxYjdlOTA3N2Q5MDliZDUyMmE2NzZhZWEy
NDcxM2VlMzA2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCkBAIC00NSwxMiArNDUsMTIgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFyZWQoKTsK
ICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47CiAKLSAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdHJ1Y3QgSW5pdERhdGFUeXBlQ2Fs
bGJhY2tzIHsKLSAgICAgICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rp
b248UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKT47Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9u
PHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+KGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIFNhbml0aXplSW5pdERh
dGFDYWxsYmFjayA9IEZ1bmN0aW9uPFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBFeHRyYWN0
S2V5SURzQ2FsbGJhY2sgPSBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+Pihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik+
OwogCiAgICAgICAgIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayBzYW5pdGl6ZUluaXREYXRhOwog
ICAgICAgICBFeHRyYWN0S2V5SURzQ2FsbGJhY2sgZXh0cmFjdEtleUlEczsKQEAgLTYyLDggKzYy
LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgpOwog
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5j
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJpdmF0
ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggMTQ3NzZj
MjAxNTFiZmVmZTM4MDc5YTMzNzMwYzg4NjYyNjhiYTQ2YS4uMDY2OGViNzE0YzZjYTAyZTUzNjg0
OWMxZDQ0MjFmMTU0M2VlYzlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcgKzE3Niw3
IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5k
YXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUg
ewogICAgICAgICAvLyAxMC4xLiBJZiB0aGUgaW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3IgaW5p
dERhdGFUeXBlLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3Iu
CiAgICAgICAgIC8vIDEwLjIuIExldCBzYW5pdGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRhdGVk
IGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBpbml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24t
PnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CisgICAgICAgIFJlZlB0
cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1w
bGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiAK
ICAgICAgICAgLy8gMTAuMy4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVqZWN0IHBy
b21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNhbml0
aXplZEluaXREYXRhKSB7CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246
OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1
ZmYKICAgICAgICAgICAgIG1fbGF0ZXN0RGVjcnlwdFRpbWUgPSAwOwogICAgICAgICB9CiAKLSAg
ICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGlu
aXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdl
YWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUo
aWRlbnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBt
X2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFU
eXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMs
IHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlm
aWVyKV0gKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3Rh
bmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjU4LDcgKzI1
OCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgICAgICAgICAgICAgbV9jYWxsYWJs
ZSA9IHRydWU7CiAKICAgICAgICAgICAgICAgICAvLyAxMC45LjMuIFJ1biB0aGUgUXVldWUgYSAi
bWVzc2FnZSIgRXZlbnQgYWxnb3JpdGhtIG9uIHRoZSBzZXNzaW9uLCBwcm92aWRpbmcgbWVzc2Fn
ZSB0eXBlIGFuZCBtZXNzYWdlLgotICAgICAgICAgICAgICAgIGVucXVldWVNZXNzYWdlKG1lc3Nh
Z2VUeXBlLCBtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdl
VHlwZSwgV1RGTW92ZShtZXNzYWdlKSk7CiAKICAgICAgICAgICAgICAgICAvLyAxMC45LjMuIFJl
c29sdmUgcHJvbWlzZS4KICAgICAgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0
YXNrKCkgUmVzb2x2ZWQiKTsKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21p
c2U+JgogICAgIC8vIDYuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2lu
ZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5sZW5ndGgoKSksIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDYuMS4gTGV0IHNhbml0aXplZCByZXNwb25zZSBiZSBh
IHZhbGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZlcnNpb24gb2YgcmVzcG9uc2UgY29weS4KLSAg
ICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0g
bV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CisgICAgICAgIFJl
ZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1f
aW1wbGVtZW50YXRpb24tPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogCiAgICAgICAgIC8v
IDYuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHJlc3Bv
bnNlIGlzIGVtcHR5LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJy
b3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkUmVzcG9uc2UgfHwgc2FuaXRpemVkUmVzcG9uc2Ut
PmlzRW1wdHkoKSkgewpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpy
ZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICAvLyA0LjMuIExl
dCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4KIAogICAgICAgICAvLyA0LjQuIFVzZSB0aGUgY2RtIHRv
IGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24t
PnJlbW92ZVNlc3Npb25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vh
a1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShp
ZGVudGlmaWVyKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywg
c3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nl
c3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBp
ZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25hbDxSZWY8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUg
c3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC03MTYsOSArNzE2LDkgQEAgdm9pZCBNZWRpYUtleVNlc3Np
b246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9y
JiYgaW4KICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2Fn
ZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdl
VHlwZSBtZXNzYWdlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSkKIHsKLSAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdlVHlwZSwgbWVzc2FnZSk7CisgICAg
ZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIFdURk1vdmUobWVzc2FnZSkpOwogfQogCiB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDM2NWFjZTVjMDk1ZTdkYzBjNTcxZTc2Y2NmMmMwN2FhZmM2
MmJhYTYuLmNmM2E4NDk4ZmQ0NTBlZjE4Mjc0YTgwOTIxNjY1OGYyMzQ4MmVhYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2xvc2VkUHJvbWlz
ZSA9IERPTVByb21pc2VQcm94eTxJRExVbmRlZmluZWQ+OwogICAgIENsb3NlZFByb21pc2UmIGNs
b3NlZCgpIHsgcmV0dXJuIG1fY2xvc2VkUHJvbWlzZS5nZXQoKTsgfQogCi0gICAgY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVz
Pj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQorICAgIGNvbnN0IFZl
Y3RvcjxzdGQ6OnBhaXI8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtl
eVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KIAogICAg
IHVuc2lnbmVkIGludGVybmFsSW5zdGFuY2VTZXNzaW9uT2JqZWN0UmVmQ291bnQoKSBjb25zdCB7
IHJldHVybiBtX2luc3RhbmNlU2Vzc2lvbi0+cmVmQ291bnQoKTsgfQogCkBAIC0xMDAsNyArMTAw
LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZv
aWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNW
ZWN0b3ImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBz
ZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGZpbmFsOwog
CkBAIC0xNDAsMTAgKzE0MCwxMCBAQCBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvblR5cGUg
bV9zZXNzaW9uVHlwZTsKICAgICBSZWY8Q0RNPiBtX2ltcGxlbWVudGF0aW9uOwogICAgIFJlZjxD
RE1JbnN0YW5jZVNlc3Npb24+IG1faW5zdGFuY2VTZXNzaW9uOwotICAgIFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKKyAgICBWZWN0b3I8UmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CiAgICAg
ZG91YmxlIG1fZmlyc3REZWNyeXB0VGltZSB7IDAgfTsKICAgICBkb3VibGUgbV9sYXRlc3REZWNy
eXB0VGltZSB7IDAgfTsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOworICAgIFZlY3RvcjxzdGQ6OnBh
aXI8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+IG1f
c3RhdHVzZXM7CiAKICAgICB1c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8
dm9pZChQbGF0Zm9ybURpc3BsYXlJRCk+OwogICAgIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgbV9k
aXNwbGF5Q2hhbmdlZE9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCmluZGV4IDM2N2YzMWQxODZiNTE2MzlhOWM3NDIx
M2YwY2Y4ZTZmMmY4ZDI2ZWEuLjZhNTRkY2QyOTNjZjMyOTExNTcwOWU5OTUwMWQ5M2I3MjAwMjFh
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBib29sIE1lZGlhS2V5czo6aGFzT3BlblNl
c3Npb25zKCkgY29uc3QKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlzOjp1bnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFLZXlz
Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkK
IHsKICAgICBmb3IgKGF1dG8mIGNkbUNsaWVudCA6IG1fY2RtQ2xpZW50cykKICAgICAgICAgY2Rt
Q2xpZW50LmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoaW5p
dERhdGFUeXBlLCBpbml0RGF0YS5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggOTFhMWEwNzExNDMzYmUyNDdk
ZDJhODVjNWY0YWQwOTM4YTA5YTdhYy4uODY0NTJkODhiMjQ5YWVlYmE3Y2Y0MmRlZjk4ZWM1NjFk
OTNmN2RmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYUtleXMo
RG9jdW1lbnQmLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50
U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8Q0RN
PiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAg
ICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgdW5yZXF1
ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2Vy
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwCmluZGV4IDc4NzVkN2EyMWI0YTUzNzRlOTc1Y2ZmODk4NmEwMGQxYjZhM2NmYzkuLjdm
YWMzNTgzYTFkMTQ4OGI0YmY1NzU0N2VhMjQ1Mzk3YWMxY2VkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0zODgsMTIg
KzM4OCwxMiBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKLXZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7CiB9
CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZURhdGEoKQorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlRGF0YSgpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmgKaW5kZXggY2JlZDBmMDMzZDkxM2NkMWNiYmJiYTAxYjgyNzQyZTM4NDYxNjNhYi4u
YTk5ZjBhMGY5MjdiMWU1ZTJjNzRjM2JkMjJlYTYyNjk5ZjEyYjMyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTYsOSArNTYs
OSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVm
ZmVyOyB9CiAgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIHNldERhdGEoUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHRha2VEYXRhKCk7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVm
ZmVyKCk7CiAgICAgU3RyaW5nIHRha2VBc1RleHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCA3Y2VhMzJhOTU4ZjE0YmQ4Yzg3OGJjNTFm
NDljMWQxYWRhNmQ2YTM3Li5iYWNlYzViZGExNzdiNGY3MjQxMjM2NTgyY2VmMDg2MTM0ZTE0NGJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcApAQCAt
MTM1LDcgKzEzNSw3IEBAIHZvaWQgRmV0Y2hMb2FkZXI6OnN0b3AoKQogICAgICAgICBtX2xvYWRl
ci0+Y2FuY2VsKCk7CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaExv
YWRlcjo6c3RhcnRTdHJlYW1pbmcoKQorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fY29uc3Vt
ZXIpOwogICAgIGF1dG8gZmlyc3RDaHVuayA9IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggZmM1NDExZmQ5Y2Fl
ODNmYjVjMWIyOTg4MDg1MGY1ZTEwODg0YTBkNC4uOTJlNDgxZGQxZWE3ZWI2MWUwZmMzMmI3NWIw
ZThiOTY4M2VkYTg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgRmV0Y2hMb2FkZXIoRmV0Y2hMb2Fk
ZXJDbGllbnQmLCBGZXRjaEJvZHlDb25zdW1lciopOwogICAgIFdFQkNPUkVfRVhQT1JUIH5GZXRj
aExvYWRlcigpOwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0U3Ry
ZWFtaW5nKCk7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0
U3RyZWFtaW5nKCk7CiAKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBGZXRjaFJlcXVlc3QmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHN0YXJ0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBCbG9iJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA5MzUyZjQ1NzY3ZmU3YjUzMDMzMzg5
NWZlMzRiNWNkNTgyZWIxNmVkLi40NDA1NzA2MWFjNTRlNjhhYTljNTZhMzQwNGZmM2JhNWQ5YmM3
ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKQEAgLTUwNyw3ICs1MDcsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZlZWRTdHJlYW0oKQog
ICAgIGNsb3NlU3RyZWFtKCk7CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBG
ZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCitSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnRT
dHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2xvYWRlcik7CiAgICAgcmV0dXJuIG1fbG9hZGVy
LT5zdGFydFN0cmVhbWluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuaAppbmRleCAzMWM1NDcwYTFhYTg3OWM3NTlkYWJkNmNjMDhlYTI5ZjkwZWI0NTM0
Li5iODA2NGM5ZTdiOWIxOGRmZGNlN2U2NjUyNDRiMzg0M2I5NDUyYzVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMTM2LDcgKzEzNiw3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFC
eUNodW5rQ2FsbGJhY2smJik7CiAKLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOwogICAgICAgICBOb3RpZmljYXRpb25DYWxsYmFj
ayB0YWtlTm90aWZpY2F0aW9uQ2FsbGJhY2soKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVzcG9uc2VD
YWxsYmFjayk7IH0KICAgICAgICAgQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2sgdGFrZUNvbnN1
bWVEYXRhQ2FsbGJhY2soKSB7IHJldHVybiBXVEZNb3ZlKG1fY29uc3VtZURhdGFDYWxsYmFjayk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YU1ldGFkYXRhLmNwcAppbmRleCA4NzRhYTdmMGIxOGYwZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJi
MmI0Li5iZDEwNjcxNjFhMGQyNWI5M2RlNGY3YWU2YjQ3ZjVmNjFkZmMzNGE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNw
cApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIC8vIFNhbml0aXplIHRoZSBpbWFnZSBieSBkZWNvZGluZyBpdCBpbnRv
IGEgQml0bWFwSW1hZ2UuCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
clRvU2FuaXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBi
dWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1
dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2Ut
PnNldERhdGEoV1RGTW92ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KaW5kZXggNWE2MDU5NGI1ZTQ4MmRkMmE1YTdiYzIwN2U5YmIyNjQwMmQy
MGVlOS4uNzhiZjI0YzE3ZjczODA2YTMzYzExNGY1ODNiZjljZjRiMWMyYjAxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjMyMCw3ICsy
MzIwLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVS
TChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxl
V3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQp
CiB7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1h
Z2UoKSkgewotICAgICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVy
ID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgIGlmIChhdXRvKiBzaGFy
ZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgICAgIHJl
dHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcAppbmRleCA1YTJkYjVmOGY3OGMzMjYwZjJkNGQwNTlhODY3MTJiODQ5ODg1MzQ5Li5k
MDc1MmU5ODdjMmU5NGMwMzRkMjI0YzE2YjBjZDQ3NzdhZWQyM2MzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAg
c3RhdGljIGJvb2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZN
SU1FVHlwZShtaW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRh
dGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBp
ZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1Myw3ICsyNTMsNyBA
QCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0
YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeQogICAgIGlmICghbWltZVR5cGVJc1N1aXRhYmxlRm9y
SW5saW5lSW1hZ2VBdHRhY2htZW50KG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
ZW5jbG9zaW5nSW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpj
cmVhdGUoJmRvY3VtZW50KCksIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgbWltZVR5cGUpKSk7Cisg
ICAgZW5jbG9zaW5nSW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9i
OjpjcmVhdGUoJmRvY3VtZW50KCksIGJ1ZmZlci0+Y29weURhdGEoKSwgbWltZVR5cGUpKSk7CiB9
CiAKIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVm
UHRyPEltYWdlPiYgdGh1bWJuYWlsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmgKaW5kZXggNTU0OTc5MWMyZTA3ZDBkZDdkMzg1ZjZkY2UxYTRjNzllMWNlNWY3
MS4uNzFmNGZhZTkwNmY5ZjEzYzU2NThhN2MzYmM3NjEyZGQxNjZmNzNiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29u
c3QgRWxlbWVudCYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRy
aWJ1dGVzKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmlu
ZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRy
PEltYWdlPiYgdGh1bWJuYWlsKTsKIAogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGlu
c2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDQ5NmM2YTljYjIz
YTZhMmE5NTM5M2Y4YTQ2ZTg2MjA5NDc3MGFhYjkuLjdmM2I0MzAwZjM3YWM2MzdkNDUzNTgyOTY3
MjdlMTQ3M2M1NTI2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtMjk1Miw3ICsyOTUyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRB
dHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkKICAgICBhdHRlbXB0VG9SZXN1bWVQ
bGF5YmFja0lmTmVjZXNzYXJ5KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xp
ZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDAw
NDkxODYxM2ViOTMxMTA2MjNiMDNiYWZmOTc2MWQ2MzBjNDhjZDkuLjNiMjcwZDk5NzAyYTVlOGM2
Y2U0NDljMWU2ZjQxMjRhMTljZGZkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCkBAIC03MTksNyArNzE5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUNsaWVudAog
ICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZp
bmFsOwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
CisgICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KGNvbnN0IFN0cmluZyYsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRl
eCA0ZDEwZmIwNTc3MjQ2Mjg1NzY4ODUwM2Q2NjQ3Njk3ZjBjYjA0YmExLi5mNDM4ZmE0YjExN2I5
YjZlMWJkOTE3NzYwZGI4OTI5MzIwYmEzYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1
cmluZ1BhcnNpbmcoKQogICAgIGlmICghbV9pbWFnZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURv
Y3VtZW50U3RydWN0dXJlKCk7CiAKLSAgICBpZiAoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCisgICAgaWYgKGF1dG8g
YnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKICAgICAgICAgbV9pbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVyKTsKIAogICAgIGltYWdl
VXBkYXRlZCgpOwpAQCAtMTUxLDEyICsxNTEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OmZpbmlz
aGVkUGFyc2luZygpCiB7CiAgICAgaWYgKCFwYXJzZXIoKS0+aXNTdG9wcGVkKCkgJiYgbV9pbWFn
ZUVsZW1lbnQpIHsKICAgICAgICAgQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gKm1faW1hZ2VF
bGVtZW50LT5jYWNoZWRJbWFnZSgpOwotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0KLSAgICAgICAgLy8g
SWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFrZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQg
cGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKLSAgICAgICAgLy8gd2lsbCBiZSBvdmVyd3Jp
dHRlbiBieSB0aGUgbmV4dCBwYXJ0LgotICAgICAgICBpZiAoZGF0YSAmJiBsb2FkZXIoKS0+aXNM
b2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpKQotICAgICAgICAgICAgZGF0YSA9IGRhdGEtPmNvcHko
KTsKKyAgICAgICAgYXV0byBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKIAog
ICAgICAgICBjYWNoZWRJbWFnZS5maW5pc2hMb2FkaW5nKGRhdGEuZ2V0KCksIHsgfSk7CiAgICAg
ICAgIGNhY2hlZEltYWdlLmZpbmlzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggMzI4ZWJlN2U2NDExOTVlNWE0Njg1MDI3
NTU5MTBmNzhjNDhiNThkOC4uNDBiZmVkN2E3YzlmZDEzMTI2MzlmOTUwMzQ5YmZhNzU1ZmZkYjMz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRk
Q2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc28KICAgICBy
ZXNvdXJjZURhdGEtPnNldENhY2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNlKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0
cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lKQogewogICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gcmVz
b3VyY2VEYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmlu
ZGV4IGM4Y2VkMTJhNjQwN2ZkY2Q1NzRlY2MyYTc4MTllZGU2NjM4MDNkYWMuLjg2Mjc0YTM1NmNm
ZjU3YTBiZDUwZGQ0NTI0NmYzNmNhMDAzNjk3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC04OCw4ICs4OCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RlY29kZXIuY29weVJlZigpOyB9CiAgICAgICAgIHZvaWQgc2V0RGVjb2RlcihSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4mJiBkZWNvZGVyKSB7IG1fZGVjb2RlciA9IFdURk1vdmUo
ZGVjb2Rlcik7IH0KIAotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9Ci0gICAgICAgIHZvaWQg
c2V0QnVmZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigp
OyB9CisgICAgICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQogCiAgICAg
ICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZv
KCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH0KICAgICAgICAgdm9pZCBzZXRD
ZXJ0aWZpY2F0ZUluZm8oY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0
aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZpY2F0ZUluZm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KQEAg
LTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAg
ICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgICAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fZGF0YUJ1ZmZlcjsKLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJ
bmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVk
UmVzb3VyY2UgeyBudWxscHRyIH07CiAgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3Vy
Y2VUeXBlIG1fdHlwZSB7IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSB9OwpAQCAt
MTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRk
UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTaGFyZWRCdWZmZXIm
KTsKICAgICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCk7CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICB2b2lkIGFkZFJlc291cmNlU2hh
cmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBS
ZXNvdXJjZURhdGEgY29uc3QqIGRhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIFJl
c291cmNlRGF0YSBjb25zdCogZGF0YUZvclVSTChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgVmVj
dG9yPFN0cmluZz4gcmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAppbmRleCBhNGZmZDEzNjFjZGRlNWFiN2Q5NzNjZDAwZDE5YTkxMGFlOWVkMjlmLi41MDJm
YjgyM2JiYjk4ZDExZjgwYzYwOGJlZjg0ZjdkN2Y3M2FkNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0x
MDAsMTMgKzEwMCwxMyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCog
YnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleAogCiBib29sIEluc3BlY3Rv
clBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJh
c2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWlu
UmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
ICBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNl
RGF0YSgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2Rpbmco
KSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVu
Y29kZSwgU3RyaW5nKiByZXN1bHQpCitib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVm
ZmVyQ29udGVudChSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBT
dHJpbmcqIHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuaAppbmRleCAzZDVlNTY2ZGJlMGM1ZWMxMWQ5ZThkZjY3ZmNmMGE3MDk4OGEyZjhmLi41
YWM5NjE5MmY0NjQ1Yzk1M2ZlNjk5ZjQ4ZDc0NWU3YjZhNmQ4YjBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTc1
LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICBPdGhlclJlc291cmNlLAogICAgIH07CiAKLSAg
ICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2
NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNv
bnRlbnQoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3Vs
dCk7CiAgICAgc3RhdGljIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hlZFJlc291cmNlc0Zv
ckZyYW1lKEZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VDb250ZW50KEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgRnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcqIHJl
c3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CiAgICAgc3RhdGljIFN0cmluZyBzb3VyY2VNYXBV
UkxGb3JSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKaW5kZXggMzU5YjYzODUxODY4NDIzYzM3YTEwMDYzNTAxYTRkZjA2ZDlh
ZGJhYS4uZjE1ZDY1YWFiODQ5OTg5ZjUyMzdlZGRiZjIwZDVhNmIzOTM5MjZjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgRG9j
dW1lbnRMb2FkZXI6On5Eb2N1bWVudExvYWRlcigpCiAjZW5kaWYKIH0KIAotUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29u
c3QKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6
bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmNvcHko
KTsKQEAgLTE2NzEsNyArMTY3MSw3IEBAIEFyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6
OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIAogUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSgpIGNvbnN0CiB7Ci0g
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRh
KCk7CisgICAgYXV0byBkYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byYgcmVzcG9u
c2UgPSB0aGlzLT5yZXNwb25zZSgpOwpAQCAtMjI5Miw3ICsyMjkyLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCiAgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50
KCkuZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoaWNvbkRlY2lzaW9ucyk7CiB9CiAKLXZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWlu
dDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpY29uID0gbV9pY29uc1Bl
bmRpbmdMb2FkRGVjaXNpb24udGFrZShsb2FkSWRlbnRpZmllcik7CiAKQEAgLTIzMTMsNyArMjMx
Myw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9v
bCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50CiAgICAgcmF3SWNvbkxvYWRlci0+c3RhcnRM
b2FkaW5nKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24o
SWNvbkxvYWRlciYgbG9hZGVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCit2b2lk
IERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIC8vIElmIHRoZSBE
b2N1bWVudExvYWRlciBoYXMgZGV0YWNoZWQgZnJvbSBpdHMgZnJhbWUsIGFsbCBpY29uIGxvYWRz
IHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWQuCiAgICAgQVNTRVJUKG1fZnJhbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBjMmJlYTZmNmE2OWI4
MzY0NzJjMGFmZjdhMGQ3MDcwMzk2YmE2YzJiLi4wYTczMDUyZWRjYWViMTFmOGQ3MGM4ZjUyZmM3
NTI0N2Y0MDYwYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAt
MTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZGVy
KiBmcmFtZUxvYWRlcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN1YnJlc291cmNlTG9h
ZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWlu
UmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgCiAgICAgRG9jdW1lbnRXcml0ZXImIHdyaXRlcigp
IGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVyOyB9CiAKQEAgLTQwOCw4ICs0MDgsOCBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRf
dCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKik+JiYpOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0
TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+
JiYpOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgY29uc3QgVmVjdG9yPExpbmtJY29uPiYgbGlu
a0ljb25zKCkgY29uc3QgeyByZXR1cm4gbV9saW5rSWNvbnM7IH0KIApAQCAtNjM4LDcgKzYzOCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5IHsgZmFs
c2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIExpbmtJY29uPiBtX2ljb25zUGVuZGluZ0xv
YWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2Fk
ZXJzOworICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4+IG1faWNvbkxvYWRl
cnM7CiAgICAgVmVjdG9yPExpbmtJY29uPiBtX2xpbmtJY29uczsKIAogI2lmIEVOQUJMRShBUFBM
SUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDFhZGMzYzNjZGI5YmFmZjljNDMzNjIxMzZkZTg3YzYwNTcyZmZmYmQuLmExYmYwYTAx
NzgxNGFiNTg4ZGQzN2QyOTM0OGZkNGM0M2MwODBmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBkaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
YnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAocmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5k
ZXggZTU1MWQwZGMyMTk4MWI2ODljNDRhYzZkNjRlYTE2ODI4NGVkOTYyNy4uYzU5MzJkOWU1Njk4
NmZkMmQxMWI0ZWE3YmIwM2NlZTlhM2FmYTRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkZWxpdmVy
UmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZURhdGEuaAppbmRleCBhOGE0OWI0N2Y5MjczNDI3NGJhNGNlYWJjMTcwN2ZlZmE3YjY2NDBkLi5m
OWU2MDlmYWY1YjQ0MzM2Yjg3MDljNjYzYjYxYjcwYjU3MzA0MjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFN1YnN0aXR1dGVEYXRhKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVSTCYgZmFpbGluZ1VS
TCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25IaXN0b3J5VmlzaWJp
bGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQorICAgICAgICBTdWJzdGl0dXRlRGF0
YShSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBV
UkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9u
SGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKICAgICAgICAg
ICAgIDogbV9jb250ZW50KFdURk1vdmUoY29udGVudCkpCiAgICAgICAgICAgICAsIG1fZmFpbGlu
Z1VSTChmYWlsaW5nVVJMKQogICAgICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAt
NjEsNyArNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAg
ICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9jb250ZW50OworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9jb250ZW50OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgICAgICBSZXNvdXJjZVJl
c3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3No
b3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6Okhp
ZGRlbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4
IDNkMTkyODYyZjI3NzI5YjJmMzhkYjU0YmQ4MzY3OTk1MjVjMDE5ZDMuLjk2NDcyMjAyYjgzZjZh
MWRmOWE2OTg4NTI0ODJjNDQ0NzRhNTE2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDE0ICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9
CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19yZWZlcmVuY2VfY2FzdDxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYg
eyAqbV9kYXRhLmdldCgpIH0pOyB9CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIHsgbV9kYXRhLmFwcGVuZChidWZmZXIpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsg
bV9kYXRhLmVtcHR5KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwg
bV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgotICAgIFN1YnN0aXR1dGVSZXNvdXJjZShV
UkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEpCiAgICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICAgICAsIG1fcmVz
cG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IDI1NmU4OWIyMTFiMzhiMmQyMWRjZDY2NTc4MjY5
ZTY2MDczNjczMjcuLmZkMDEyNTJhNWFiNDEyNmZkNTEzYmViZDEwNWY3NmI3MDBmNzVkODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKK1JlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAg
ICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIGlmICghYnVmZmVy
KQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgYwogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgV1RGTW92
ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHBhdGgp
KTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkK
K0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHJlc3BvbnNlKSwg
V1RGTW92ZShkYXRhKSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuaAppbmRleCBjMjg4ZTcwMzZjNjc2MmFkNDg3NmJhODgxNDY5YTc1ZDIy
MzdlMWJhLi44MWMwZmE4OTE5NTVmODgxYjQyNTVjMjMyYjJkYWIyMTRhMmRkNzIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRmFsbGJhY2sg
PSAxIDw8IDQKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQg
dHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJlZjxB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBT
dHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKIAog
ICAgIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAppbmRleCA2YjllN2UyOTVmZDZmYjIwZmYwZDc0ZmRjZjIzZmM2NjAwYTYwMDNmLi4x
NzdjNDM0N2UzYTkxMTgyMjNlMjUxOTI5NGYzN2UwNzMzY2U1YjZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKQEAgLTEyNzIsNyArMTI3Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvCiAgICAg
cmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImF1ZGlvLyIp
IHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInZpZGVvLyIpOwog
fQogICAgIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVG
aWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQor
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQogewog
ICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXggNDEwMmExODA4
YjQ1NTU3YjY0NWUzNmU3ZTY4MWZjNGM2ZDIwN2NlMi4uZTEyYTA0MmU0YTM0ZDMxMmNjNTI3ZWJk
NGFlMDdmMWRmYTZlODM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
Kik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKik7CiAgICAgdm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29s
IHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBmaWxlRXh0ZW5zaW9uKTsKKyAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVj
dG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsK
IAogICAgIHZvaWQgbG9hZE1hbmlmZXN0SG9zdEhhc2hlcygpOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCmluZGV4IDRlZjljZDY2
YmQwODhiNzRjMDQ2YzA2OTBkMWU5ZDNlNWUzMzYwZmQuLmVlYjAxNjZkM2VhNThkYmNmMDQwMzNh
MGU4Yzc0MmFlM2VlZjNlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXR5cGVkZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9u
KGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKK3R5cGVkZWYgUmVmUHRyPEFy
Y2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJhd0RhdGFDcmVhdGlv
bkZ1bmN0aW9uKiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBBcmNoaXZlTUlNRVR5cGVzTWFw
OwogCiAvLyBUaGUgY3JlYXRlIGZ1bmN0aW9ucyBpbiB0aGUgYXJjaGl2ZSBjbGFzc2VzIHJldHVy
biBSZWZQdHIgdG8gY29uY3JldGUgc3ViY2xhc3NlcwogLy8gb2YgQXJjaGl2ZS4gVGhpcyBhZGFw
dG9yIG1ha2VzIHRoZSBmdW5jdGlvbnMgaGF2ZSBhIHVuaWZvcm0gcmV0dXJuIHR5cGUuCi10ZW1w
bGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2
ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNo
aXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0
ZSh1cmwsIGJ1ZmZlcik7CiB9CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6
OmlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFt
aW1lVHlwZS5pc0VtcHR5KCkgJiYgYXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBl
KTsKIH0KIAotUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJM
JiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCitSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKaW5kZXggNTU2NDUx
NWM5ZTBkOWQwMzNiNzkwYzc0NzI4NWEyNTg1M2FiZTAyZC4uMmFkZTc4MmMyNTVkNGM3NGZiZWQ0
NWVmYjk1MGVjMGE3NTUzODU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBBcmNoaXZlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgaXNBcmNoaXZlTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFJlZlB0cjxB
cmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVh
dGUoY29uc3QgVVJMJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJLbm93bkFyY2hpdmVN
SU1FVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
Y3BwCmluZGV4IDA3MzgzOTRhODI4NzE0YWEwYjkwZWU3NTA3OWQ0ODZmNWIwZTg2OTQuLmJkN2Y4
NTUxYzhmYmFhMTljMDE2OGYyZmM3ZGYxMWZkYzkwYWZmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcApAQCAtMzMsNyArMzMsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hp
dmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1
dGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdU
Rk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5j
b2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291
cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29ucwogewogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNy
ZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NCw3ICs1NCw3IEBAIFJl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJjaGl2ZVJl
c291cmNlKGRhdGEucmVsZWFzZU5vbk51bGwoKSwgdXJsLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5n
LCBmcmFtZU5hbWUsIHJlc3BvbnNlKSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1Jl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUo
ZGF0YSksIHVybCwgcmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFt
ZSgpLCBTdHJpbmcoKSwgcmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAppbmRleCAwNTQ4ZWY3MjFlZmQyN2MwMGNlOTNkMTIy
NzBlY2VjNDZjMDJhZjk0Li44ZTQ4YzllODI5YjQ0ZjEzNzEwZWI2N2JhNjg1ODg3NGMxOGI3NDNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
aApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmVS
ZXNvdXJjZSA6IHB1YmxpYyBTdWJzdGl0dXRlUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAorICAgIHN0YXRpYyBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsCiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVzb3VyY2VS
ZXNwb25zZSgpKTsKIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRJ
Z25vcmVXaGVuVW5hcmNoaXZpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElnbm9yZVdoZW5V
bmFyY2hpdmluZzsgfQogCiBwcml2YXRlOgotICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgQXJjaGl2ZVJlc291cmNlKFJlZjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFN0
cmluZyBtX3RleHRFbmNvZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggN2Y0YmFkNmZjYzNhOWM5N2E2YTUx
N2FiOWIyOWQwODBjYTlkYTcxYi4uY2E1NjY0MWQwZmQ1Y2M0YjNjNjg2NGZlYTM2NmFiMGI0NDE1
NjNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTI0OCwxMiArMjQ4LDEyIEBAIFJlZjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWlu
UmVzb3VyCiAgICAgcmV0dXJuIGFyY2hpdmU7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFVSTCgp
LCBkYXRhKTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRl
eCA1YTA3YjEwYjRiZTZmODYyMDExYTc4MmE3ZGVkMjM2NzU5MjQzNjI2Li4zYzQyMzJlMTZlMjYw
ZTU1ZmZlYWM2ZmU3MzU1ZWY5ZTU5Yjc1ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0
cnVjdCBTaW1wbGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMg
QXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lX
ZWJBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3Qg
VVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoUmVm
PEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyY2UsIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291
cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+JiYgc3Vi
ZnJhbWVBcmNoaXZlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIEZ1bmN0aW9uPGJvb2woRnJhbWUmKT4mJiBmcmFtZUZp
bHRlciA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBjcmVhdGUoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGQwMTM5Zjg3YTA2Zjk2OTc4Yjc0
NzdlOWY0OTk5YzM0ZWE5Zjg2MjUuLmQ3NTBlM2MyODI2YTA2ZTgyM2NkNjEzMzhkNTI5NzQ2MWVk
NDA4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxBcmNoaXZlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFJlZjxNSFRNTEFyY2hpdmU+IE1I
VE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNSFRNTEFyY2hp
dmUpOwogfQogCi1SZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25z
dCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFy
Y2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdl
IG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgp
LnRvU3RyaW5nKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuaAppbmRleCAyZGZlODdlODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIw
NWM4ZGIxLi5lZjg3YmJmZDQ4NWIxNGExYjAxNzJkNjFiNDM2NjE0YTcyN2Y4YmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaApA
QCAtNDMsNyArNDMsNyBAQCBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgTUhU
TUxBcmNoaXZlIGZpbmFsIDogcHVibGljIEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8TUhUTUxBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2
ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0
aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZTUxODZlZmIwYjRmYTcw
Y2I2MDkzMWY0ODRlNTAwY2MxMGUwMGJjYi4uZDQ4ZmNkN2JjM2IyZjFiYjQ3MTM4ZjllYTJhMDk4
MDQ1ZjlmYWFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGlu
ZXNVbnRpbEJvdW5kYXJ5Rm91bmQoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIs
IGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCitNSFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICA6IG1fbGluZVJlYWRlcihkYXRh
LCAiXHJcbiIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxQYXJzZXIuaAppbmRleCAwZDYwNDM0M2YzZDdhZDE3OGNjMjIwMDNjOTc5YzIyZTUw
YTNiOTllLi4xMWI4YmRlYzllMWM0YjFkYzUxNzU1YjVhZDlhNmY1YzgwMGYyOGZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhU
TUxQYXJzZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IE1IVE1MUGFyc2VyKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqKTsKKyAgICBleHBsaWNpdCBNSFRNTFBhcnNlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik7CiAKICAgICBSZWZQdHI8TUhUTUxBcmNoaXZlPiBwYXJzZUFyY2hpdmUo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDlk
YmQ1Mzc5MzVlMGRkMGI3ZGJkNGUxMjM5M2FkMGU4MTQwZGQ5MWYuLjQ3Yzk4YzhmMjc1Zjg3MWUw
ZWZkZDNhZmRlOWUwMDUzYzk3ZDQyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgU3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1
bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElk
ZW50aWZpZXIoKS50b1N0cmluZygpOwogfQogCi1ib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3Vz
dG9tRm9udERhdGEoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYm
IGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTExMiw3ICsxMTIsNyBAQCBib29s
IENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAg
ICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
LCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ5
dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewog
ICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCmluZGV4IDEzNDY2Y2M5OWQwZDE5Y2JmM2Q4ZWYzZGZiZDk2ZjM0ZDBmODU0
MTEuLmUwNDA2NzgyMjI5MTc2MTVjMmYwZTVkOTQ0OGQxMWY3M2NmNGFkNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xv
YWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0
b21Gb250RGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0
Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9u
dERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9u
Q29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBG
b250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQm
KTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9y
bURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Ym9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0g
ICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJv
b2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJp
dmF0ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5k
ZXggODVmMTg4YmY3NWZmNWQyNmIyNDFjZGQ5MGU2ODcwOTkyM2I1Y2ZmZS4uMTk2Yjg1NmY1MzZi
Mjk5ZmU0YTlhMzM5MGY4ZDZkYjg1OTA0MzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICAvLyBXaGlsZSBtX2RhdGEgaXMgaW1tdXRh
YmxlLCB3ZSBuZWVkIHRvIGRyb3AgdGhlIGNvbnN0LCB0aGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBi
dWcgMjM2NzM2LgotICAgIG1fZGF0YSA9IGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cio+KCZkYXRhKTsKKyAgICBtX2RhdGEgPSAmZGF0YTsKIAogICAgIC8vIE5vdGlmeSBjbGllbnRz
IG9ubHkgb2YgdGhlIG5ld2x5IGFwcGVuZGVkIGNvbnRlbnQgc2luY2UgdGhlIGxhc3QgcnVuLgog
ICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CkBAIC0xMTMsNyArMTEz
LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQ
b2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsK
ICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZm
ZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcio+KGRhdGEpOworICAgICAgICBtX2RhdGEgPSBkYXRhOwogICAgICAgICBpZiAoZGF0YSkg
ewogICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVt
ZW50YWxEYXRhQ2h1bmsoKmRhdGEpKSB7CiAgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUo
ZGF0YS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKaW5kZXggZmQxZmM0NjA0ZjkyMWE2MWFjOWNmZjY4ZjM1OGY5MTUyZjBjYWM4MC4uODAz
YTE0ZjU5MTM4MzA1YjY0ZDIzYmQ2ZmUxOTdlYjdiZDYwYTNhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAg
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0zMzYsNyArMzM2LDcg
QEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4g
bV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2lu
YWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X2RhdGE7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
IAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAv
LyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDAyMDAxYWIzNDMwMThhNzMyNTU5OThmYzQ3NGNlYmZj
NDlmOGM4NDIuLjYxOWIxMTAyNWRiZWU3YTVjZjE3YzlmNTQ2MGFjY2QzN2EzNWJiODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgdm9p
ZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2Us
IFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgpID09
ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gaW1hZ2VSZW5kZXJlciA/IGltYWdlLT5pbWFnZUZv
clJlbmRlcmVyKGltYWdlUmVuZGVyZXIpLT5kYXRhKCkgOiAwOworICAgIFJlZlB0cjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiAgZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIGRhdGEgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAppbmRleCBmYzY2YzM2NWEyZjI5YTRjNzhl
NjA2MTllNDdhNzFjNzI1OGQ4ZmUzLi4wN2Q1ODMwNjA1YmJjMmI5OWRhMzZkY2M2OWRmMDJkNGY4
ZTMwOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgK
QEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJ
bmZvPiBtX25vd1BsYXlpbmdJbmZvOwogICAgIHN0cnVjdCBBcnR3b3JrQ2FjaGUgewogICAgICAg
ICBTdHJpbmcgc3JjOwotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1h
Z2VEYXRhOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1h
Z2VEYXRhOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxBcnR3b3JrQ2FjaGU+IG1fbm93UGxh
eWluZ0luZm9BcnR3b3JrOwogICAgIGJvb2wgbV9zZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBk
MDlmMTA1MmEwZjMxZWU5NzA2MTEwMTNiMzkzNWZiNTMwOTU1MDk2Li5kMjRmNjA2ZGU2M2RkYjQ2
ZWRmMzdiNjUyZTQ3ZTI2ODgzOTdiYTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAKQEAgLTU1OSwxNCArNTU5LDEwIEBAIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
CiAgICAgaW5pdGlhbGl6ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKLVNoYXJlZEJ1
ZmZlckJ1aWxkZXImIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9yPShSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitTaGFyZWRCdWZmZXJCdWlsZGVyJiBTaGFyZWRC
dWZmZXJCdWlsZGVyOjpvcGVyYXRvcj0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewotICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0g
ICAgaW5pdGlhbGl6ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXBwZW5kKGJ1ZmZl
cik7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCmluZGV4IGNhZWYzZjI2MjAwMzNkZDhjZmYxNTYyM2YyM2M2YjZjOWI1MzRiMzcuLjdm
NTdlYjg3MWMyMmJiOTVkZThiMmZhNDJkZWIzNGYyMGYxN2FiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0zMDgsNiArMzA4LDcgQEAgcHVibGljOgogICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoU2hhcmVkQnVmZmVyQnVpbGRlciYmKSA9IGRlZmF1bHQ7CiAgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgaW5pdGlhbGl6ZShXVEZNb3Zl
KGJ1ZmZlcikpOyB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7IH0KICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogICAgICAgICA6IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+eyBXVEZNb3ZlKGJ1ZmZlcikgfSkgeyB9CiAgICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBpbml0aWFs
aXplKFdURk1vdmUoYnVmZmVyKSk7IH0KQEAgLTMxNyw3ICszMTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIDogbV9idWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikpIHsgfQogCiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciYgb3BlcmF0
b3I9KFNoYXJlZEJ1ZmZlckJ1aWxkZXImJikgPSBkZWZhdWx0OwotICAgIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQnVpbGRlciYgb3BlcmF0
b3I9KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPgogICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQpAQCAtMzM1LDcg
KzMzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7
IH0KICAgICB2b2lkIGVtcHR5KCkgeyBtX2J1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOyB9CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9i
dWZmZXItPmNvcHkoKSA6IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJD
aHVua1JlYWRlci5jcHAKaW5kZXggOWQwNTVjZTI3ZDg4YzNkNjJlNWJkMWNkNDZhZDkxZjVjYzQz
MWY0OC4uOGZiYTIxNDA2Y2EwNTlhYmE0YjhjMGNjNjRkNGU2MjlkZWIyNzhmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApA
QCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoTUhUTUwp
CiAKLVNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9y
KQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBh
cmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkpCiAgICAgLCBt
X2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9pdGVyYXRvckN1
cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50LT5kYXRh
KCkgOiBudWxscHRyKQpAQCAtNDQsNyArNDQsNyBAQCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLAog
ewogfQogCi1TaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitT
aGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAg
OiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5k
KGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9p
dGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
LmgKaW5kZXggMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2OTY1N2JjOWEyNjE1YS4uOGE5ZDRl
NWRiNTU1MDFiN2MxMzUwYjE2NDQwYjE4MGE2NmU0NTIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCkBAIC00MSw4ICs0MSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7Ci0gICAg
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNo
YXIqIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKTsKKyAgICBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29u
c3QgY2hhciogc2VwYXJhdG9yKTsKIAogICAgIHZvaWQgc2V0U2VwYXJhdG9yKGNvbnN0IFZlY3Rv
cjxjaGFyPiYpOwogICAgIHZvaWQgc2V0U2VwYXJhdG9yKGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCmluZGV4IDFkNjViYzQw
M2FkODUyNDNjNjcyNWU3MDQ0OGQ2Y2RhZGNjY2NlMWIuLmNkNmEwYWYxYWE4NzJmMmEwOGE3ZjFl
NDczYzE1N2QwODhjOTVjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Tm93UGxheWluZ0luZm8uaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBz
dHJ1Y3QgTm93UGxheWluZ0luZm9BcnR3b3JrIHsKICAgICBTdHJpbmcgc3JjOwogICAgIFN0cmlu
ZyBtaW1lVHlwZTsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRh
OworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikg
Y29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCAyZGU0MTkzNGRhMTk4NzlkNzVjMGRmOGE4OWU2NGU1
OTljMjlhZTAzLi45ZTM4ZWVjYTM5NTVhMGI1MTFmNmJlYTVhNWIxNjE1NTI1OThjMzk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3Rh
bmNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIC8vIEphdmFTY3JpcHQncyBoYW5kbGUg
dG8gYSBDRE1JbnN0YW5jZSwgbXVzdCBiZSB1c2VkIGZyb20gdGhlCkBAIC05OCw3ICs5OCw3IEBA
IHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdG9yYWdlRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lv
bj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggZDI1OTIy
NWJhOWUwMmE2NGQwY2VjZDYxNTFmZGY5M2Y0ZjI0NjZhOC4uOGQyNThmYzU0Yjk3NjkyNjM1YjMy
NzdkNWYzODc4MzI5OGE0ZDg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTUwLDkgKzUw
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudCgpID0g
ZGVmYXVsdDsKIAogICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0YXR1czsKLSAgICB1c2lu
ZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9y
PHN0ZDo6cGFpcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNv
bnN0IFN0cmluZyYpID0gMDsKICAgICB1c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90
OwogICAgIHZpcnR1YWwgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgPSAwOwpAQCAtNzgs
MTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3VjY2VlZGVkLAogICAgIH07CiAKLSAgICB1
c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29s
IG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikg
PSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xp
ZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNz
YWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdl
ID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+OwogICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rv
cj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRp
b24sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2Vl
ZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sm
JikgPSAwOwogCiAgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUgOiB1aW50OF90IHsK
ICAgICAgICAgTm9uZSwKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2xv
c2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwogICAgIHZpcnR1
YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lv
bkNhbGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFs
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNp
bmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5
U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lv
bkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9u
RGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5
VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCA1MmE2MTQ4Yzgz
Y2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBmLi5mNGNkOWU1Mjk5NjE2NjUxNmY4NDYyM2Jl
ZDFmNDA2ZDQ5MTFjZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcAppbmRleCAzMWE5ZmRmYTAyZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNk
YzU4YWE5Li45OTdkMzkzNDdkZWNkZGE5NGFlODhjYjZkNzk3ZWEwNjZiYzVmMzRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC00MDcsNyArNDA3LDcgQEAgYm9vbCBDRE1Qcml2
YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2UoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVmFs
aWRhdGUgdGhlIHJlc3BvbnNlIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdC4KICAgICBpZiAoIUNE
TVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KHJlc3BvbnNlKSkKQEAgLTQzMyw3ICs0MzMsNyBA
QCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cgogICAgIGNhbGxiYWNrKHN1Y2NlZWRlZCk7CiB9CiAK
LXZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBD
RE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAg
Ly8gUmVqZWN0IHNldHRpbmcgYW55IHNlcnZlciBjZXJ0aWZpY2F0ZS4KICAgICBjYWxsYmFjayhG
YWlsZWQpOwpAQCAtNDU1LDcgKzQ1NSw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENE
TUluc3RhbmNlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24oKQogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkoKnRoaXMpKTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBz
X3Nlc3Npb25JZFZhbHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00NzcsNyAr
NDc3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNw
b25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogI2lmIExPR19ESVNBQkxFRAog
ICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24gSUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2
ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJlIGJlY2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVh
cktleS5oCmluZGV4IDllMjdmZTkxMmM0ZGEwNjdmYjI2Y2FmYmM3ZjZhNjUxZGE0NzUyOGIuLjQ2
OGNlNDdkZGJhMjZiYWJlYzJkMDRhZTI4N2NiNDEzZjIzNTIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c1Nl
cnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9u
cygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXpl
U2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogfTsKIApAQCAtOTksNyArOTks
NyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRhdGlvblR5cGUg
aW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25U
eXBlOjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmll
cnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8
Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xMDksOCArMTA5
LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNs
ZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eShwYXJlbnQpIHsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5z
ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VU
eXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRh
LmgKaW5kZXggZGM1ZTVhMDdjYjFhYTI2MmIwZGI0ODg1ZmJkY2YzNjllMjU2NzJlYy4uOWFhNTY2
Mjg5OTAyMzRmMDBlZWM4ZTA1ODkyMjhiNjI1OTM3MDlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMjE3LDcgKzIx
Nyw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0
cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURh
dGE7CisgICAgICAgIFJlZjxjb25zdCBTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAg
ICAgU3RyaW5nIGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBS
ZWY8Rm9udE1lbW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCBlMzJhMzZjNjA3NjE5MjE2OGM2YTM3OTMx
OGY3OGFlMTc4OWM0ODJlLi43MGQ1ZDQxOTQ0MjkwZmY0YWZiOWNiNTRlZDUyYmRhZDVjMzMyOTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0xMDQs
NyArMTA0LDcgQEAgYm9vbCBJbWFnZTo6aXNQb3N0U2NyaXB0UmVzb3VyY2UoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgVVJMJiB1cmwpCiB9CiAKIAotRW5jb2RlZERhdGFTdGF0dXMgSW1h
Z2U6OnNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKICAgICBtX2VuY29kZWRJbWFnZURhdGEgPSBXVEZNb3ZlKGRhdGEpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA0N2VhOTg5ZTk2YzMwMDRhZmMz
ODhjYWE3YmFmNzBkN2IyYzZiYWRmLi4zYjIzNzQ3NWE5ZjkzMmViN2U5MGNkYzM5YzBjOWU5NWRl
MTQ5NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTEy
NCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEludFBvaW50
PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdmlydHVhbCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gSW1hZ2VPcmllbnRh
dGlvbjo6RnJvbUltYWdlOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1
cyBzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXRE
YXRhKFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKTsKICAgICB2aXJ0dWFsIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2Vk
KGJvb2wgLyphbGxEYXRhUmVjZWl2ZWQqLykgeyByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVu
a25vd247IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHV0aSgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9IC8vIG51bGwgc3RyaW5nIGlmIHVua25vd24KQEAgLTEzMyw3ICsxMzMsNiBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFs
bCA9IHRydWUpID0gMDsKIAotICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSB7IHJl
dHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KICAgICBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgp
OyB9CiAKICAgICB2aXJ0dWFsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CkBA
IC0yMDksNyArMjA4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4
ZWxTb2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQogCiBwcml2YXRlOgotICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CisgICAg
UmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsK
ICAgICBJbWFnZU9ic2VydmVyKiBtX2ltYWdlT2JzZXJ2ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNDBhMGU2Y2YwMzk3MmZi
MWNjNzFiMmQyODMwZjk3MWUwMGU1OTcwOC4uMDUzZWY2MmM1OGRmM2NkMjkwMGQ5ZTEwNGVhOTdi
MDM5ZDMwY2YxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyOjpjbGVh
ckZhY3RvcmllcygpCiB9CiAjZW5kaWYKIAotUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNv
ZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1h
Z2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFVOVVNF
RF9QQVJBTShtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggNWFhZTNjYzkxMWM2MDVmNzcyYjA1N2QwMWVkYmJiODEx
MjVmYjI1My4uNjkyYzcyNDEwZDAxM2VhMjNkNDM5YjNjNzU2YWNlYzBhNTQ1ZDQ1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTQy
LDcgKzQyLDcgQEAgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEltYWdlRGVj
b2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdl
RGVjb2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0
YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0Owog
CiAgICAgZW51bSBjbGFzcyBNZWRpYVR5cGUgewpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIHVzaW5nIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyA9
IEZ1bmN0aW9uPGJvb2woTWVkaWFUeXBlKT47CiAgICAgdXNpbmcgQ2FuRGVjb2RlVHlwZUZ1bmMg
PSBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPjsKLSAgICB1c2luZyBDcmVhdGVJbWFnZURl
Y29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rlcj4oRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik+OworICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5jdGlvbjxS
ZWZQdHI8SW1hZ2VEZWNvZGVyPihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CiAKICAg
ICBzdHJ1Y3QgSW1hZ2VEZWNvZGVyRmFjdG9yeSB7CiAgICAgICAgIFN1cHBvcnRzTWVkaWFUeXBl
RnVuYyBzdXBwb3J0c01lZGlhVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCBmMmM5NjQwZDQ2ZDNhOTM1NjExNGYzM2FiMTQw
NTJjN2ZlYzI3NzhjLi41NDU3YmQ1YWIzNmZhN2Q0MWQwM2Q2MWI5NWRkMzQ0YTQzNWRhZjUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
CkBAIC02Nyw3ICs2Nyw3IEBAIEltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogICAgIEFTU0VS
VCgmbV9ydW5Mb29wID09ICZSdW5Mb29wOjpjdXJyZW50KCkpOwogfQogCi1ib29sIEltYWdlU291
cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEp
Citib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFkYXRhIHx8IGlzRGVjb2RlckF2YWls
YWJsZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBJbWFn
ZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJ
bWFnZVNvdXJjZTo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIWRhdGEgfHwgIWVuc3VyZURlY29kZXJB
dmFpbGFibGUoZGF0YSkpCiAgICAgICAgIHJldHVybjsKQEAgLTk5LDEzICs5OSwxMyBAQCB2b2lk
IEltYWdlU291cmNlOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogICAgIG1fZGVjb2Rlci0+c2V0RGF0YSgqZGF0YSwgYWxsRGF0YVJl
Y2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEpCit2b2lkIEltYWdlU291cmNlOjpyZXNldERhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBtX2RlY29kZXIgPSBudWxscHRyOwogICAg
IHNldERhdGEoZGF0YSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKLUVuY29kZWREYXRhU3Rh
dHVzIEltYWdlU291cmNlOjpkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3RhdHVzIEltYWdlU291cmNlOjpk
YXRhQ2hhbmdlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIHsKICAgICBzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiAgICAg
Y2xlYXJNZXRhZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmgKaW5kZXggZjk4MTQxN2YyNGViYzdmMmRiZDU3M2RhZTBlNTkyNTk4OTQ0ZTY2
YS4uODI5ZTA2ZmI4OWU1NTg3YThmNTI0YTY5ZTNjYjI4MzkwNmEyMDJiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC01Niw5ICs1Niw5
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2UoV1RG
TW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgcmVz
ZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOwotICAgIEVuY29kZWREYXRhU3Rh
dHVzIGRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgcmVzZXREYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIEVuY29kZWREYXRhU3RhdHVzIGRh
dGFDaGFuZ2VkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCk7CiAKICAgICB1bnNpZ25l
ZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlZFNpemU7IH0KQEAgLTE1MSw3
ICsxNTEsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgVCBmaXJz
dEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBNZXRhZGF0YVR5cGUs
IFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNvbnN0LCBJbWFnZUZyYW1lOjpDYWNoaW5nLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiA9IHsgfSk7CiAKLSAgICBib29s
IGVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSk7Cisg
ICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEpOwogICAgIGJvb2wgaXNEZWNvZGVyQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9kZWNvZGVyOyB9CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoc2l6ZV90IGZyYW1lQ291
bnQsIHNpemVfdCBleGNsdWRlRnJhbWUpOwogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGxv
bmcgbG9uZyBkZWNvZGVkU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXggYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJl
NWNjMWJjYTFkYzE1NzFjNy4uYzJmNzZlODA2NWYzNzRiNDA5MTU3YTA2YTM0ZGJlNTAzY2Y1YTVj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYy
U2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndPRjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBv
ZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MzIoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAg
ICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAo
YnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBA
IHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zm
c2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29s
IHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZf
dCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkco
b2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkg
LSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3
cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAKIHN0
YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYn
ICovCiAKLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAg
dWludDMyX3Qgc2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2Vu
ZGlmCiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8
dWludDhfdD4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwg
c2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRv
U2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1
cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmlu
ZGV4IDNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLmJhOTYyMDE0OWU3
NDQ3ODY1YmE5MzJhNzUzOTMyNDUzZWMzNDg4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzMsMTYgKzMzLDE2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0
aGVyIHRoZSBidWZmZXIgaXMgYSBXT0ZGIGZpbGUuCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXIm
KTsKK2Jvb2wgaXNXT0ZGKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNl
IGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0
ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVt
b3J5KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQg
aW50byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZl
Y3Rvcjx1aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVu
IGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5h
dGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1
cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9u
IGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252
ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4mKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcAppbmRleCA4YjA0ZjliZTk2YzM2ZTBhMjYyMTgwYTI1ZWEzNzQ1OTYyYjNk
N2Q1Li43OThiZTg0YjE5ZWJhOWM3YzJkYmE4M2M0ZDAxMjI5YjkxMWVmZDI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgY29u
c3QgQXRvbVN0cmluZyYgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkKICAg
ICByZXR1cm4gc2tkOwogfQogCi1zdGF0aWMgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3N0YXRpYyBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBleHRy
YWN0U2luZkRhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29kZWQtc3RyaW5n
PiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmUK
ICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFZlY3RvcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHNpbmZzOworICAgIFZlY3RvcjxSZWY8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHNpbmZzOwogICAgIHNpbmZzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoc2luZkFycmF5LT5sZW5ndGgoKSk7CiAKICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
KnNpbmZBcnJheSkgewpAQCAtMTcwLDkgKzE3MCw5IEBAIHN0YXRpYyBTY2hlbWVBbmRLZXlSZXN1
bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0
S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4ga2V5SURzOwogICAgIGF1dG8gcmVzdWx0cyA9IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZy
b21TaW5mKGJ1ZmZlcik7CiAKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKQEAg
LTE4Myw3ICsxODMsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OgogICAgIHJldHVybiBrZXlJ
RHM7CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIC8vIENvbW1vbiBTSU5GIEJveCBGb3JtYXQKICAgICBVTlVTRURf
UEFSQU0oYnVmZmVyKTsKQEAgLTE5MSwxNyArMTkxLDE3IEBAIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25z
dCBGCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBVTlVTRURfUEFSQU0o
YnVmZmVyKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBidWZmZXIuY29weSgp
OwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICAvLyBJbiB0aGUgJ3NrZCcgc2NoZW1lLCB0aGUgaW5pdCBkYXRhIGlzIHRoZSBrZXkg
SUQuCi0gICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAg
IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBr
ZXlJRHMuYXBwZW5kKGJ1ZmZlci5jb3B5KCkpOwogICAgIHJldHVybiBrZXlJRHM7CiB9CkBAIC00
MjMsNyArNDIzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXAKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
cmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNwb25zZS5j
b3B5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IDMx
N2JiOGQ1N2U4NmMwNjIxNGUwYjQwNTlkZGY0Zjg4MDdjNzRjNmIuLjZkOGMyODRkZjAzMWQxZDc5
NDE2N2NhMTVhMTU1YmUwNzdhNDkwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5oCkBAIC03MiwxNiArNzIsMTYgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNT
ZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2Vz
c2lvbnMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzaW5mTmFtZSgpOwotICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNrZE5hbWUoKTsKLSAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFj
dEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
CiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxGb3VyQ0M+JiB2YWxpZEZhaXJQbGF5U3RyZWFtaW5n
U2NoZW1lcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCBkNTlmZTQ4MDRkNThkZmU3
OGNiNWJlYTcwNzRiMmU2ODcwNWMxZDQ5Li5lZDVjN2NlOTIwZmU5N2Y0ZDk3YTdmYWUzMzhlYjM1
ZDU0YzQxOTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVi
bGljOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3RyZWFtaW5nOyB9CiAK
ICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3Rl
bnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYm
KSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBz
ZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDRE1J
bnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKICAgICB2b2lkIHNldENsaWVu
dChXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiYmKSBmaW5hbDsKQEAgLTk2LDEwICs5NiwxMCBA
QCBwdWJsaWM6CiAKICAgICBOU1VSTCAqc3RvcmFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rv
cmFnZVVSTC5nZXQoKTsgfQogICAgIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZDsgfQotICAgIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIHNlcnZlckNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDZXJ0
aWZpY2F0ZS5nZXQoKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNlcnZl
ckNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZS5nZXQoKTsg
fQogICAgIEFWQ29udGVudEtleVNlc3Npb24qIGNvbnRlbnRLZXlTZXNzaW9uKCk7CiAKLSAgICBS
ZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9y
SW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOworICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlS
ZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSk7CiAKICAgICAvLyBBVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGVDbGllbnQK
ICAgICB2b2lkIGRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsK
QEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvdXRwdXRPYnNjdXJlZER1ZVRv
SW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29sKSBmaW5hbDsKICAgICB2
b2lkIGV4dGVybmFsUHJvdGVjdGlvblN0YXR1c0RpZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0
KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKIAotICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJl
Zjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yS2V5SURzKGNvbnN0IEtleXMmKSBj
b25zdDsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNl
c3Npb25Gb3JHcm91cChBVkNvbnRlbnRLZXlSZXBvcnRHcm91cCopIGNvbnN0OwogICAgIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvclJlcXVlc3Qo
QVZDb250ZW50S2V5UmVxdWVzdCopIGNvbnN0OwpAQCAtMTM4LDcgKzEzOCw3IEBAIHByaXZhdGU6
CiAgICAgV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4gbV9jbGllbnQ7CiAgICAgUmV0YWluUHRy
PEFWQ29udGVudEtleVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUZQ
U0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU+IG1fZGVsZWdhdGU7Ci0gICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IG1fc2VydmVyQ2VydGlmaWNhdGU7CisgICAgUmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fc2VydmVyQ2VydGlmaWNhdGU7CiAgICAgYm9vbCBt
X3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgeyB0cnVlIH07CiAgICAgUmV0YWluUHRyPE5TVVJMPiBt
X3N0b3JhZ2VVUkw7CiAgICAgVmVjdG9yPFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDPj4gbV9zZXNzaW9uczsKQEAgLTE2MCw4ICsxNjAsOCBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbgotICAgIHZvaWQgcmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBm
aW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRT
ZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vz
c2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lv
bkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJh
Y2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGZkNjE1MmUxODY3ZDRl
NmE2NzJiZWYxNzA3MGNhNzYyOTEyNmY0YjguLjhjODU1YTEwZGYwZWIwYjkwNWJmZWM0OTdkMGQ1
ZTY2YzE0NTViOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0yNjYsNyArMjY2LDcg
QEAgQVZDb250ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmNvbnRlbnRLZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQog
Ci1SZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGluaXREYXRhKQorUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFs
aXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8gcmVxdWVzdEl0ZXIg
PSBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0cy5iZWdpbigpOyByZXF1ZXN0SXRlciAhPSBtX3VuZXhw
ZWN0ZWRLZXlSZXF1ZXN0cy5lbmQoKTsgKytyZXF1ZXN0SXRlcikgewogICAgICAgICBhdXRvJiBy
ZXF1ZXN0ID0gKnJlcXVlc3RJdGVyOwpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBDRE1LCiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
c2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIERF
QlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBtX3NlcnZlckNlcnRpZmlj
YXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0aWZpY2F0ZSk7CkBAIC01ODQsOCArNTg0LDggQEAgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzoKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1
dG8gc2Vzc2lvbktleXMgPSBzZXNzaW9uSW50ZXJmYWNlLT5rZXlJRHMoKTsKLSAgICAgICAgaWYg
KGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiBzZXNzaW9uS2V5KSB7Ci0gICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRJZihbJl0oY29u
c3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBrZXlJRCkgeworICAgICAgICBpZiAoYW55
T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIHNlc3Npb25LZXkpIHsKKyAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZElmKFsmXShj
b25zdCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGtleUlELmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAgICAgICAg
ICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAgfSkpCkBAIC03MDMsNyArNzAzLDcgQEAgS2V5
cyBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiAg
ICAgcmV0dXJuIGtleUlEczsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgaWYgKCFpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKGxpY2Vuc2VUeXBl
KSkgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxz
ZSwgbGljZW5zZVR5cGUgXCIiLCBsaWNlbnNlVHlwZSwgIlwiIG5vdCBzdXBwb3J0ZWQiKTsKQEAg
LTc4NCw3ICs3ODQsNyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHN0cmluZ09y
RXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURh
dGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFt
X2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURhdGEsICJhY2tu
b3dsZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+
c2VydmVyQ2VydGlmaWNhdGUoKTsKQEAgLTg4Niw3ICs4ODYsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmLCBMaQogICAgICAgICAgICAgYXV0byBrZXlJRCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoKmtleUlEVmVjdG9yKSk7CiAgICAgICAgICAgICBhdXRvIGZvdW5kSW5kZXggPSBtX2N1
cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmluZElmKFsmXSAoYXV0byYgcmVxdWVzdCkg
ewogICAgICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0
LmdldCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRJZihbJl0oY29uc3Qg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBpZCkgeworICAgICAgICAgICAgICAgIHJldHVy
biBrZXlJRHMuZmluZElmKFsmXShjb25zdCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIGlkKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpZC5nZXQoKSA9PSBrZXlJRC5n
ZXQoKTsKICAgICAgICAgICAgICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAgICAgIH0pOwpA
QCAtMTE4NCw3ICsxMTg0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICBpZiAoYXV0
byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQogICAgICAg
ICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogCi0gICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CisgICAgdXNp
bmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENhbGxiYWNr
QWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0Fn
Z3JlZ2F0b3I+IHsKICAgICAgICAgdXNpbmcgQ2FsbGJhY2tGdW5jdGlvbiA9IEZ1bmN0aW9uPHZv
aWQoUmVxdWVzdHNEYXRhJiYpPjsKICAgICAgICAgc3RhdGljIFJlZlB0cjxDYWxsYmFja0FnZ3Jl
Z2F0b3I+IGNyZWF0ZShDYWxsYmFja0Z1bmN0aW9uJiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0x
MjQwLDcgKzEyNDAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIEB0cnkgewogICAg
ICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0
cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3Qu
Z2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGtleUlE
ID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7CisgICAgICAgICAgICBSZWZQdHI8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKICAg
ICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29u
dGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50
aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRs
ZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRL
ZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92
ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRL
ZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXgg
ZmE3NTM3ZjdkZTllNGJjM2UzYmE0MGMwOGExYzVlYTEzOGE4ZGIwMy4uYTY2ZGQwZGU0NjE4ZjU0
YzZlYzI3ZDAzMDY5OGNmNTZhMjg0ZGI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0y
ODc3LDcgKzI4NzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuYwogICAgIGlmICghbV9rZXlJ
RCB8fCAhbV9jZG1JbnN0YW5jZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBpbnN0YW5j
ZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+Ojpmcm9tKCptX2tleUlEKSk7CisgICAgYXV0byBpbnN0YW5j
ZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKFZlY3RvcjxSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+Ojpmcm9tKCptX2tleUlEKSk7CiAgICAgaWYgKCFp
bnN0YW5jZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCBhYzI3YTIwYjdkMGFkNWIwYWNjYTgzYzAxMjZl
MjY3MzBjY2NmZTdkLi4xZjAwOTE3YjU3ODg2NTBlODNmZjRhOGE2OTVhNjI0MzQyMmZiOTkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtODQsNyAr
ODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCeXRlUmFuZ2VPZmZzZXQoc2l6ZV90KTsKIAog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikK
LSAgICB1c2luZyBLZXlJRHMgPSBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsK
KyAgICB1c2luZyBLZXlJRHMgPSBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PjsKICAgICB2b2lkIHNldEtleUlEcyhLZXlJRHMmJiBrZXlJRHMpIHsgbV9rZXlJRHMgPSBX
VEZNb3ZlKGtleUlEcyk7IH0KICAgICBjb25zdCBLZXlJRHMmIGtleUlEcygpIGNvbnN0IHsgcmV0
dXJuIG1fa2V5SURzOyB9CiAgICAgS2V5SURzJiBrZXlJRHMoKSB7IHJldHVybiBtX2tleUlEczsg
fQpAQCAtMTA2LDcgKzEwNiw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fbWlycm9yZWQgeyBm
YWxzZSB9OwogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRL
RVlTRVNTSU9OKQotICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5
SURzOworICAgIEtleUlEcyBtX2tleUlEczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggMzc2YTZm
YzE0MzgxMWVlYjg1NjdiY2IwOGU3ZGRkM2IxZmYxM2NmNy4uNWNjMGFhYjM0MGYyMGQ5NjZiMmY5
OGUzMzI5NDhlOGUzNzQzYTU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC0yMzIsNyArMjMyLDcgQEAgcHJpdmF0ZToK
ICAgICBXZWFrUHRyPENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM+IG1fc2Vzc2lvbiB7IG51
bGxwdHIgfTsKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZD
T05URU5US0VZU0VTU0lPTikKLSAgICB1c2luZyBLZXlJRHMgPSBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBLZXlJRHMgPSBWZWN0b3I8UmVmPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBzdHJ1Y3QgVHJhY2tJbml0RGF0YSB7CiAgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhOwogICAgICAgICBLZXlJRHMga2V5SURz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbQppbmRleCBmM2Q0MjQ1YmUxNDAwOGYwNWM2Yjk5ZDk2OWZmNGNmZDBlYzc3NDNmLi4w
NTViNzNiMzYxY2FkN2Q1MDZhMzczNWI4YTgyYTE1N2ZkZTUzODA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtMjky
LDcgKzI5Miw3IEBAIHN0YXRpYyBib29sIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlT
ZXNzaW9uKCkKICAgICByZXR1cm4gc3VwcG9ydHM7CiB9CiAKLXN0YXRpYyBWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBjb3B5S2V5SURzKGNvbnN0IFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEcykKK3N0YXRpYyBWZWN0b3I8UmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiBjb3B5S2V5SURzKGNvbnN0IFZlY3RvcjxSZWY8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEcykKIHsKICAgICByZXR1cm4ga2V5SURzLm1hcChb
XSAoYXV0byYga2V5SUQpIHsKICAgICAgICAgcmV0dXJuIGtleUlELmNvcHlSZWYoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA5NDE5YmNlYTM4ZGJmOGQ2NDkyZjY4MDFkOWEy
MTU2MjM2NmEyYzZlLi5iNmRjZDlmYTU1ZjYxNWM4N2M0Nzg3YmVkYmJjMTY4YTMzZmJiZGM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKaW5kZXggMjQ3ODE1MDYwMmE4ZDBkNmIwNmQ3YTNhNTgzNWYwYjgzMDcyMTRl
NC4uNGY1YWZmZDRiODRmNzIwODZiYTVjZWQ4OWQ4ODU3NDAxNjQ0MjFhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZv
KQogfQogI2VuZGlmCiAKLUltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCitJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQog
ewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXpl
KCkgPj0gMzIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuaAppbmRleCAxNzUxMDg4NzIxZjU2MjFmY2RiZmQwMGYyNmRiMjc3Yzgx
MTdkZjgxLi4zNjhiMTYyODNlNGJmZjQ2Mjg5YTE3ZWM0MDgzMmVmNTAxNWQwMDE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKQEAgLTMyLDkgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW1hZ2VEZWNv
ZGVyQ0cgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAg
IEltYWdlRGVjb2RlckNHKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKLSAgICBzdGF0aWMgUmVmPElt
YWdlRGVjb2RlckNHPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRh
LCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCAy
YjQ0M2ZiYmVkMmMxZmRlNDhiY2RlOWNiZTQwOTUzNDk3ZmRlOTEwLi4wNmViMDM1NGIxNjlkN2E2
MDRiMzY3YTc3NmE2Njc3YWIzNDQxNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9v
bCBpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYpCiB7CiAgICAgc3RhdGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJh
cnkgJiYgIWluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggMjljOWFiNGVlZGYyZDYzOWI0MWU4MmZh
NmFjMmRmMzc5ZjRhMzQ3My4uMmZkODRkMjE5Yjk4Y2RhMTU5YjA3ZWZjNTE2OWVlMDJhODI3ODc5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTgxLDEyICs4
MSwxMiBAQCBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0
ZXIpCiAgICAgcmV0dXJuIChJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqKWl0ZXItPnNlY29u
ZC5nZXQoKTsKIH0KIAotUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rl
ckdTdHJlYW1lcj4gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGUoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckdTdHJl
YW1lcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckdTdHJl
YW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5oCmluZGV4IDI2MWRhZmYyNjE1OGUxN2EyYTQyMjFmZmIyNDM1NDY3NzE2ZGJkM2IuLjE5ZDhj
OTllMzA2NzJkNDg4NmVhODkwYzI0NzMzMjkyM2Q5NjUzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmgKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gY3Jl
YXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdT
dHJlYW1lcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJHU3Ry
ZWFtZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShN
ZWRpYVR5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA9PSBNZWRpYVR5cGU6OlZpZGVvOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVRodW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1UaHVuZGVyLmNwcAppbmRleCBjZDhkZGQ5MmY5ZTc5MTM4ZjY3NWYxOTZmYmVhMThl
ODEwNzJmMWE3Li4zNjRmYjZiYzM3NDZkMmE2ODRjZTk5Y2QyZjNkY2U5ZGZjMDkzMDJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVRodW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCBib29sIENETVByaXZh
dGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgRgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiBy
ZXNwb25zZS5jb3B5KCk7CiB9CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRo
dW5kZXI6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25m
aWd1cmEKICAgICBjYWxsYmFjayhTdWNjZWVkZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlVGh1
bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
Y2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFu
Y2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIGF1dG8gZGF0YSA9IGNlcnRpZmljYXRlLT5leHRyYWN0RGF0YSgpOwogICAgIE9wZW5DRE1F
cnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVu
ZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKTsKQEAgLTMyNiw3ICszMjYsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBD
RE1JbnN0YW5jZVRodW5kZXI6OmNyZWF0ZVNlc3Npb24oKQogY2xhc3MgUGFyc2VkUmVzcG9uc2VN
ZXNzYWdlIHsKIAogcHVibGljOgotICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZShjb25zdCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICBQYXJzZWRSZXNwb25zZU1l
c3NhZ2UoY29uc3QgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CiAgICAgewogICAgICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5zaXplKCkpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0zNDksOCArMzQ5LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZhbGlkOyB9CiAgICAgYm9vbCBoYXNQYXlsb2FkKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9wYXlsb2FkKTsgfQotICAgIGNvbnN0
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVCht
X3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KLSAgICBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBt
X3BheWxvYWQudmFsdWUoKTsgfQorICAgIGNvbnN0IFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9w
YXlsb2FkLnZhbHVlKCk7IH0KKyAgICBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
IHBheWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUo
KTsgfQogICAgIGJvb2wgaGFzVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5oYXNfdmFsdWUo
KTsgfQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgdHlwZSgpIGNvbnN0IHsgQVNT
RVJUKG1fdHlwZSk7IHJldHVybiBtX3R5cGUudmFsdWUoKTsgfQogICAgIFdlYkNvcmU6Ok1lZGlh
S2V5TWVzc2FnZVR5cGUgdHlwZU9yKFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgYWx0ZXJu
YXRlKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPyBtX3R5cGUudmFsdWUoKSA6IGFsdGVybmF0ZTsg
fQpAQCAtMzU5LDExICszNTksMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbV9p
c1ZhbGlkIHsgZmFsc2UgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gbV9wYXlsb2FkOworICAgIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpN
ZWRpYUtleU1lc3NhZ2VUeXBlPiBtX3R5cGU7CiB9OwogCi12b2lkIENETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hh
bGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UoYnVmZmVyKTsKICAgICBpZiAoIXBhcnNlZFJlc3BvbnNlTWVzc2FnZSkgewpAQCAt
NDcwLDcgKzQ3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0
ZURvbmVDYWxsYmFjaygpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwog
fQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIEdTVF9FUlJPUigiQ0RNIGVycm9yIik7CiAgICAgYXV0
byBkYXRhID0gbWVzc2FnZS0+ZXh0cmFjdERhdGEoKTsKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgbQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIo
KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKK3ZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCiAgICAgTGljZW5zZUNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTUw
Myw3ICs1MDMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogICAgICAgICBwYXlsb2FkRGF0
YS5kYXRhKCksIHBheWxvYWREYXRhLnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Np
b25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAg
ICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKLSAgICAgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7
CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9
IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNl
Tm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAKICAgICBhdXRvIGdl
bmVyYXRlQ2hhbGxlbmdlID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgp
OworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEg
PSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAgICAgICAgaWYgKG1fc2Vzc2lvbklELmlzRW1wdHko
KSkgewogICAgICAgICAgICAgR1NUX0VSUk9SKCJjb3VsZCBub3QgY3JlYXRlIHNlc3Npb24gaWQi
KTsKICAgICAgICAgICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIHsgfSwg
ZmFsc2UsIEZhaWxlZCk7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyOjpzZXNzaW9uRmFpbHVyZSgpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNr
cy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7
CiAKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6Omxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogewogICAgIEFT
U0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9zZXNzaW9uSUQpOwogCi0gICAg
bV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJh
Y2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNj
ZXNzLCBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3Nh
Z2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBp
ZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01OTgs
NyArNTk4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihM
aWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKICAgICAgICAgICAgICAgICBQYXJz
ZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZN
b3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAg
ICBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFy
c2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9E
RUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogI2lmbmRl
ZiBHU1RfRElTQUJMRV9HU1RfREVCVUcKICAgICAgICAgICAgICAgICAgICAgYXV0byBkYXRhID0g
bWVzc2FnZS0+Y29weURhdGEoKTsKQEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklE
LCBMaWNlbgogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBtX3Nlc3Npb25JRCA9PSBz
ZXNzaW9uSUQpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFu
Z2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Ym9vbCBzdWNjZXNzLCBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBp
ZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC02NTcsNyArNjU3LDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25z
dCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW4KICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25z
ZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNl
ZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNl
TWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8Y29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdl
LnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygic2Vzc2lvbiAlcyBy
ZW1vdmVkLCBtZXNzYWdlIGxlbmd0aCAlenUiLCBtX3Nlc3Npb25JRC51dGY4KCkuZGF0YSgpLCBt
ZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3Jl
LmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6UmVsZWFzZWQpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBT
dWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1UaHVuZGVyLmgKaW5kZXggMTAyMGUxNTMyMjcxYjUzNTFlMTA2ZGRlOGYyMWVhNTQwNWE5
YzIzNy4uYzk2N2YyMGMxY2E2MzcyNTlkNjQ5ZmQ4YjlhNjg1MWJiMWQyOTI3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1UaHVuZGVyLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9y
dHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vz
c2lvbnMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5p
dGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKQEAg
LTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1l
bnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1w
bGVtZW50YXRpb25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3Rp
dmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBm
aW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0Nh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fa2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3Jl
YXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXIgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewog
cHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFuY2VUaHVuZGVy
Jik7CiAKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNs
b3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpAQCAtMTQxLDE0ICsxNDEsMTQgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBDRE1JbnN0YW5jZVRodW5kZXIqIGNkbUluc3RhbmNlVGh1
bmRlcigpIGNvbnN0OwogCi0gICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OiopKFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKICAgICB1c2luZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoKT47Ci0gICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQo
Ym9vbCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPjsKKyAgICB1c2luZyBTZXNz
aW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sLCBSZWZQdHI8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+OwogCi0gICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRD
YWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBjaGFs
bGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CiAgICAgdm9pZCBrZXlVcGRhdGVkQ2FsbGJhY2soS2V5SURUeXBlJiYpOwogICAgIHZv
aWQga2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpOwotICAgIHZvaWQgZXJyb3JDYWxsYmFjayhSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBlcnJvckNhbGxiYWNrKFJl
ZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1cyBzdGF0dXMoY29uc3QgS2V5SURUeXBlJikgY29uc3Q7CiAgICAgdm9p
ZCBzZXNzaW9uRmFpbHVyZSgpOwogCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBJ
bml0RGF0YSBtX2luaXREYXRhOwogICAgIE9wZW5DRE1TZXNzaW9uQ2FsbGJhY2tzIG1fdGh1bmRl
clNlc3Npb25DYWxsYmFja3MgeyB9OwogICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4gbV9zZXNz
aW9uOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CisgICAg
UmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsKICAgICBib29s
IG1fbmVlZHNJbmRpdmlkdWFsaXphdGlvbiB7IGZhbHNlIH07CiAgICAgVmVjdG9yPENoYWxsZW5n
ZUdlbmVyYXRlZENhbGxiYWNrPiBtX2NoYWxsZW5nZUNhbGxiYWNrczsKICAgICBWZWN0b3I8U2Vz
c2lvbkNoYW5nZWRDYWxsYmFjaz4gbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2
YmI0YTFmNGEyLi5hODFiZjQxN2Y3YmUyNzZmMDdmOGY3NGI3ZTliYTZlNjg4Y2VjZTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9y
bURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6
ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRp
b24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBi
dWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDY5
MjhhNjNlOTcxYzdjMzVlODg0NGVlZjczYmZhNDRhOGQ4YzAzMDkuLmJhNTZlOTc0NGUxYjYzYzNk
ZGMxYjRiYjI4NTZmMGFiMDM5YzZlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q3JlYXRpb25Db250
ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZp
ZWRDYXBhYmlsaXRpZXM7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRp
bmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdz
OwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRp
b25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCmluZGV4IDA5ZTlhNjExZGY1YTdkMmViMzRhOTU0ZDkxYjlkMDBiZGMx
NzQwOTAuLjgxNTA3ODEwZDUxNWY3NDlmZWExMTA2NzY1MTcyNDU5MWRjNTMyMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgU3RyaW5n
IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rp
b24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1
ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZv
bnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCAwOGZj
OWYxOWVhZWE5NDgzZWE1OGVjMWFlZWRkNDU3MjU2Y2UyN2JjLi45MzZmYmQzNjAzY2JmYjRiMDIx
MGQzMDEwOGI3Y2ZlMTg0NGU1ZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTY1
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBj
cmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwog
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggM2MxZDRl
MmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEyZC4uNTQ5M2ZlMDhkMTgyMjUzM2JmZTlh
OTRkYzg4NmQ0YzkyZjdkOGUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWly
by5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFt
ZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikK
IHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1
dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IDgxY2U2NTQyNWVmNTNjYzAxMjRl
ZTEwODVkNDY1YWIxMDA3MDJiZDQuLjkyODNiYjk0MDJmYThmMjRlZGU2OGQ4MTZhMGMyMjY3OTRm
ZmM4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCBib29sIG1hdGNoZXNDVVJTaWduYXR1cmUoY2hhciogY29udGVudHMpCiAKIH0KIAotUmVmUHRy
PFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxT
Y2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSA9IDE0OyAv
LyBUbyB3aXQ6ICJSSUZGPz8/P1dFQlBWUCIKICAgICBjaGFyIGNvbnRlbnRzW2xlbmd0aE9mTG9u
Z2VzdFNpZ25hdHVyZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCBkOWZkYTc3NmZk
NThkODdjY2U1NGVmMzA0NDA3Y2NhNGRlMDQ3ZjM1Li4zMDMzYWIyNmYyYmM4MjliYmEwMDU3NmVk
YzM0OGE0YzczNzMwYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYw
LDcgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNuaWZm
IGEgc3VwcG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAgICAv
LyBiZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJlZlB0
cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGlj
IFJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CiAKICAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRp
cGx5QWxwaGE7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCmluZGV4IDg1Zjk2ZDg1ZDJiMzcyY2ZjMjE3MWE4MzQxMWQ1Mjg2OTIwNzNjZDQuLjNl
YjdmMTUxZWZkOGEwODM2MmY0Yjg2NWY2NGZkMjMxNzM0OGFkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTk2Niw3ICs5NjYsNyBAQCBz
dGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhH
TE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEhHTE9CQUwgbWVtT2JqID0g
R2xvYmFsQWxsb2MoR1BUUiwgZGF0YS0+c2l6ZSgpKTsKICAgICBpZiAoIW1lbU9iaikgCkBAIC05
ODYsNyArOTg2LDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVu
dChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtZW1PYmo7CiB9CiAK
LXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwg
U3RyaW5nJiBmaWxlTmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBI
R0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAo
ZmlsZU5hbWUuaXNFbXB0eSgpIHx8ICFkYXRhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwNjMs
NyArMTA2Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCkKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFj
YWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpIHx8ICFjYWNo
ZWRJbWFnZS0+aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihl
bGVtZW50LnJlbmRlcmVyKCkpLT5kYXRhKCk7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50
LnJlbmRlcmVyKCkpLT5kYXRhKCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VCdWZm
ZXItPnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwCmluZGV4IDIwNTI3OTU1MjgzNmUwNDRkZDdjMmE4ZWEzMjE2ODJkOTE3
OTM4YzAuLjliOGI0YjZkNThjNzhmMzUxN2JiNmJmNTFhMmI2N2U0NWM1NzI1NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJv
b2wgTW9ja0NETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGtleVN5c3RlbSwgIm9yZy53
ZWJraXQubW9jayIpOwogfQogCi12b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9u
V2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+JiYga2V5cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQo
Y29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4mJiBrZXlzKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9ucy5hZGQoaWQsIFdU
Rk1vdmUoa2V5cykpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTc0LDcgKzc0
LDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBT
dHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW4KICAgICAgICAgdmFsdWUuYXBwZW5kKFdURk1v
dmUoa2V5KSk7CiB9CiAKLVZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IE1vY2tD
RE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkK
K1ZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5
OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKIHsKICAgICBh
dXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5l
bmQoKSkKQEAgLTgzLDcgKzgzLDcgQEAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRCgKICAgICByZXR1
cm4gV1RGTW92ZShpdC0+dmFsdWUpOwogfQogCi1jb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0
IFN0cmluZyYgaWQpIGNvbnN0Citjb25zdCBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmluZyYgaWQpIGNvbnN0CiB7CiAgICAgYXV0byBpdCA9IG1fc2Vzc2lvbnMuZmluZChpZCk7CiAg
ICAgaWYgKGl0ID09IG1fc2Vzc2lvbnMuZW5kKCkpCkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBN
b2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgRnJhZ21lbnRlZFMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNl
Lm1ha2VDb250aWd1b3VzKCk7CiAgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVy
LT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCkBAIC0yNzAsOSArMjcwLDEwIEBAIHZvaWQgTW9j
a0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlT
eXN0ZW1Db25maWd1cmF0CiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBN
b2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgYXV0byBj
b250aWd1b3VzQ2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjb250aWd1b3VzQ2VydGlmaWNhdGUt
PmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQg
OiBGYWlsZWQpOwogfQpAQCAtMjk4LDcgKzI5OSw3IEBAIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246
Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYgaW5zdGFu
CiB7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNh
bGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNl
ID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsK
QEAgLTMyNCw3ICszMjUsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tUwogICAgIGNhbGxiYWNr
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxpY2Vuc2UuZGF0YSgpLCBsaWNlbnNlLmxlbmd0aCgpKSwg
c2Vzc2lvbklELCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCi12b2lkIE1v
Y2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNl
c3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBl
LCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3Rvcnkg
PSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAo
IWZhY3RvcnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCBk
OTZjMTU2ZWU0ZDI3OTFiOGIwOTk4ZGFmOTQwZWM3NTM3ODA3YmMzLi4zM2UzMTFjMjg2NTM1YjA5
M2YxMmMxZDgyZDk2Y2Q4YjI3YjFmMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5oCkBAIC03Nyw5ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBtX3Nlc3Npb25zLmNvbnRhaW5zKGlk
KTsgfQogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IG1f
c2Vzc2lvbnMucmVtb3ZlKGlkKTsgfQotICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChj
b25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmKTsK
LSAgICBjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNl
c3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7Ci0gICAgVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmluZyYgaWQpOworICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkLCBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICBj
b25zdCBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNl
c3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNv
bnN0IFN0cmluZyYgaWQpOwogCiBwcml2YXRlOgogICAgIE1vY2tDRE1GYWN0b3J5KCk7CkBAIC05
Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUluc3RhbmNlcyB7IHRy
dWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMgeyB0cnVlIH07CiAg
ICAgYm9vbCBtX3N1cHBvcnRzU2Vzc2lvbnMgeyB0cnVlIH07Ci0gICAgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOworICAgIEhh
c2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4g
bV9zZXNzaW9uczsKIH07CiAKIGNsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CkBA
IC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlm
aWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBj
b25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQo
Y29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBXZWFrUHRyPE1vY2tDRE1GYWN0b3J5
PiBtX2ZhY3Rvcnk7CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJ
bXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gSW1wbGVtZW50YXRpb25UeXBlOjpNb2NrOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENv
bmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0
aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNr
JiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNl
cnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmlu
YWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFs
OwpAQCAtMTU0LDggKzE1NCw4IEBAIHB1YmxpYzoKICAgICBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9u
KFdlYWtQdHI8TW9ja0NETUluc3RhbmNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikg
ZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2Fk
U2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNl
c3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJp
bmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Np
b25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxi
YWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuY3BwCmluZGV4IGQwYWYyMTQyNjVhZThiMWQ2OTk0YTlmMjQwZDYxYTQwZWU1YzFh
YmQuLjFhYjcwNWQxZWUzOWM1NTM1ZjE4MTc5MWIxNDQ3NDdiZTUxN2VlZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc3LDEz
ICs3NywxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxT
Y29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5z
dXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIFJl
ZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOwogICAgICAgICBpZiAobV9k
YXRhKQogICAgICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEudGFrZUFzQ29udGlndW91
cygpOwogICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRh
KTsKICAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CiAgICAgICAgICAgICBtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3Vz
RGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7Ci0gICAgICAgICAg
ICBtX2RhdGEgPSBXVEZNb3ZlKGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZGF0YSA9
ICpjb250aWd1b3VzRGF0YTsKICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmNwcAppbmRleCA1MWM3MzljMzJjNzRkNzc2ZDNiMWYzMGU1NWQ1YTU0YmVi
MTA4MmM2Li4wZDNjMzBmMzllMWJhY2RjZTRhZGRkMjZmNDZjNmIyODViZWVjNjBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlUHJveHkuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJlbW90ZUNETUluc3RhbmNlUHJveHk6On5S
ZW1vdGVDRE1JbnN0YW5jZVByb3h5KCkKICAgICBtX2luc3RhbmNlLT5jbGVhckNsaWVudCgpOwog
fQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIGlmICghbV9jZG0p
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCmluZGV4IDAyYzVjZDM3YWU1NDgwMmY2ZDBj
OGRjY2NiMGJhODBjZjMzODhjMzMuLmMwOWNhMTU0YzJjOTM4NzkwY2NiMGQzNzZjZTUyZWQ5ZTY5
ZjNiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIFJl
bW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNv
cmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uPiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIpOwogCiAgICAgLy8gQ0RNSW5zdGFu
Y2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQo
Y29uc3QgU3RyaW5nJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOworICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25z
dCBTdHJpbmcmLCBSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCA3YmExNjY0ZGYxNDhmMmQ0ZjY1NDM2MTRlMzE0
MDQwYWI5MjI3OWVmLi5kOWVhODVlZWQ0NmYzNjY4NDJmNDY4OWVjM2U0YWU5NzM2MWZlNjk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUg
dHlwZSwgQXRvbVN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zZXNzaW9u
LT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJl
bGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vz
c1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5z
ZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCks
IFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5l
ZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb24oSVBDOjpTaGFyZWRCdWZmZXJD
b3B5KFdURk1vdmUobWVzc2FnZSkpLCBzZXNzaW9uSWQsIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24s
IHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRlZCk7CiAgICAgfSk7CiB9
CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVMKIAogdm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sm
JiBjb21wbGV0aW9uKQogewotICAgIG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lv
bklkLCB0eXBlLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vz
c2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9IFdU
Rk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYm
IGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4mJiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyQ29weT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOwogICAgICAgICBpZiAo
ZXhwaXJlZFNlc3Npb25zRGF0YSkKICAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVy
ZW5jZSA9IElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRh
KSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6dXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHUKICAgICBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjpVcGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2Vz
KSksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpz
ZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGlmICghbV9jZG0pCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKaW5kZXggZmU3MzA5NzEzMWUwYmIyMGE1MDAxZTE1
MDE2MDJkNjUxODZiMzA5MC4uYmYyNzNlYWVkZTYxNGMyN2JhMjAzY2I2MjI5YWNmZjYzMjQ1NmJi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0
ZToKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgdXBkYXRlS2V5
U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZpbmFsOwotICAgIHZvaWQgc2VuZE1lc3NhZ2Uo
V2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RN
TWVzc2FnZVR5cGUsIFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcm
KSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJldHVy
biBtX2Rpc3BsYXlJRDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmNwcAppbmRleCBmN2NiNmE2M2ViOTMzYWJkNGQ0NTNhMjJhYjI5NGYx
MzAzMjMyYjA2Li5hMDQ0NzI4NThjZDEyMzllYzhiYWFjZGMyYmE0ODVmYTE4Y2RjNGRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAK
QEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVudGVkU2gKICAgICByZXR1cm4gbV9w
cml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5cGUsIGRhdGEpOwogfQogCi1SZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCmluZGV4IDNiNjZjNzc1Nzg3MDY5ZTk3NmVlMDY0
Zjk2ZmYwN2MwZjcxMmE5MGIuLmVjZDY4OWE2NzMxNzcwOWRiZGZkMzAxODRlNDA0YTZhMzc5Yzlj
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkq
IGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KIAogICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIHJlc3BvbnNlKTsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiByZXNwb25zZSk7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXpl
U2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRl
eCBmMjEwYjA5ZmJkMWUyMGViZmMyMTZmMjE5YTI3NjM1ZDg3MTg0MjVkLi5lYzYwZGZlZGIzMTlm
YzM5MjM0ZjgxZGI1OWY5MDY5YmVjNGRjYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAg
dm9pZCBDYWNoZTo6Y29tcGxldGVSZXRyaWV2ZShSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYg
aGFuZGxlciwgc3RkOjp1bmlxdWVfcHQKICAgICBoYW5kbGVyKFdURk1vdmUoZW50cnkpLCBpbmZv
KTsKIH0KICAgICAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VFbnRyeShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQcml2YXRlUmVsYXllZCBwcml2YXRlUmVsYXllZCwgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQorc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFByaXZhdGVSZWxheWVkIHByaXZhdGVSZWxheWVkLCBSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCiB7CiAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIHByaXZh
dGVSZWxheWVkLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5n
UmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25J
RCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CkBAIC00NjQsNyArNDY0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXko
cmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5
aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Np
b25JRCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
Q2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByaXZhdGVSZWxheWVkIHBy
aXZhdGVSZWxheWVkLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBy
ZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUHJpdmF0ZVJlbGF5ZWQgcHJpdmF0ZVJlbGF5ZWQsIFJlZlB0cjxjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248
dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJl
c3BvbnNlRGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oCmluZGV4IDkwNDM0N2YwNTIwNTAyMzcxNmM2ZDZiZDUxMDg2MGVmMzc0
MTMzNjAuLmM5MzdhOWYyMzhhYjExNzU3MDc4ODA1MzJmZGQwNTA2ODU5ZTdkYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAt
MTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHVzaW5nIFJldHJpZXZlQ29tcGxl
dGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0
IFJldHJpZXZlSW5mbyYpPjsKICAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBQcml2YXRlUmVsYXllZCwgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFw
cGVkQm9keSYpPiYmID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9y
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgUHJpdmF0ZVJlbGF5ZWQsIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51bGxw
dHIpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0
aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHVw
ZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBFbnRyeSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSwgUHJpdmF0ZVJl
bGF5ZWQpOwogCkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmV0cmlldmVE
YXRhKGNvbnN0IERhdGFLZXkmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
Pik7CiAgICAgdm9pZCBzdG9yZURhdGEoY29uc3QgRGF0YUtleSYsICBjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBQcml2YXRlUmVsYXllZCwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBQcml2YXRlUmVsYXllZCwgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZVJlZGlyZWN0RW50
cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1
ZXN0KTsKIAogICAgIHZvaWQgZHVtcENvbnRlbnRzVG9GaWxlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmlu
ZGV4IGQ0ZDE3Nzk0ZmE1NWM3YTZjMjUxNTlhYmQwZDE2NjQwMTFlMzc0YWQuLjk5ZmFjNTU4NzRj
NTNmYjlhZDg4OWFlZDhkOTFiMGQ4N2FiYmZlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0zNyw3
ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewog
Ci1FbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBQcml2YXRlUmVsYXllZCBwcml2YXRlUmVsYXllZCwgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKK0VudHJ5OjpF
bnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFByaXZhdGVSZWxheWVkIHByaXZhdGVSZWxheWVkLCBSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgIDogbV9rZXko
a2V5KQogICAgICwgbV90aW1lU3RhbXAoV2FsbFRpbWU6Om5vdygpKQogICAgICwgbV9yZXNwb25z
ZShyZXNwb25zZSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVu
Y29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIGlmIChtX2J1
ZmZlcikgewogICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwot
ICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTaGFyZWRCdWZmZXIqPihtX2J1
ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgICAgICBib2R5ID0g
eyBkb3duY2FzdDxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCptX2J1ZmZlci5nZXQoKSkuZGF0YSgp
LCBtX2J1ZmZlci0+c2l6ZSgpIH07CiAgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGlt
ZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgRW50
cnk6OmluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgbV9idWZm
ZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NvdXJjZVN0b3JhZ2VSZWNvcmQu
Ym9keS5kYXRhKCksIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7CiB9CiAKLVdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIEVudHJ5OjpidWZmZXIoKSBjb25zdAorY29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgaW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9y
YWdlUmVjb3JkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKaW5kZXggYTcyOGZkNmFlOGQ2NTE3NjkwYTMyNjg2NGI4
YWUyM2E1NDAxNDMzMC4uMGMzMzUzNjFmYTJlNzNkMTdkNzI5YzY3ZjA4YzI0ZDA2ZmZhYjQ2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpOZXR3b3Jr
Q2FjaGUgewogY2xhc3MgRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBQcml2YXRlUmVsYXllZCwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1Jl
cXVlc3RIZWFkZXJzKTsKKyAgICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgUHJpdmF0ZVJlbGF5ZWQsIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgRW50cnkoY29uc3QgS2V5JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgZXhwbGljaXQgRW50cnkoY29uc3Qg
U3RvcmFnZTo6UmVjb3JkJik7CiAgICAgRW50cnkoY29uc3QgRW50cnkmKTsKQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7IH0KIAotICAgIFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OwogICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmVkaXJlY3RSZXF1ZXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWRpcmVjdFJlcXVlc3Q7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VS
Q0UpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogCiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fcmVkaXJlY3RSZXF1ZXN0OwotICAgIG11dGFi
bGUgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAg
IG11dGFibGUgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgbXV0YWJsZSBTaGFy
ZWFibGVSZXNvdXJjZTo6SGFuZGxlIG1fc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IDA1ZWE0NTI3OWI0MDYzYmI1NzIz
MmRlZmY2ZjViNjY5NDI3OTBjMDEuLjQ4MjVkOThlYzljYzU1NTQ3YTAxYzU2MjI4OWZlMTIxNTVj
YjI4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNzMsNyArNzMsNiBA
QCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVz
dDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4gbV9uZXR3b3JrTG9hZDsKLQog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAgIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggN2FhZGY5MmUz
NjFkZWZhYzUwOGViZDQ4ZDdkMDc1ODhiNGU0N2Q0Ni4uNjA2MjM0ZGUwNGYxYTYxNjIzZjAyNDYy
M2ExYzJhYzE5YTA3NDg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPGNvbnN0IFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyBJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkoV1RGTW92ZShidWZmZXIpKSB9OwpAQCAtNTEsNyArNTEsMTQgQEAgY29uc3QgdWludDhfdCog
U2hhcmVkQnVmZmVyQ29weTo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGRvd25jYXN0PFNoYXJlZEJ1ZmZlcj4o
bV9idWZmZXIuZ2V0KCkpLT5kYXRhKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PGNvbnN0IFNoYXJl
ZEJ1ZmZlcj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCk7Cit9CisKK1JlZjxjb25zdCBTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlckNvcHk6OnNhZmVCdWZmZXIoKSBjb25zdAoreworICAgIGlmICht
X2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7CisgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDM3
MGI4MzI4ZDc2YzljM2Y3NzAwNDczNWFkMzU5YWU2ZDNlZDYwOTIuLmM4N2Q0MGJjNDM5YWI5Mzcw
ODMxYmI3NWZjOTZmZDU3ODI5NzBjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTQwLDE2ICs0MCwxOCBAQCBjbGFzcyBTaGFyZWRCdWZm
ZXJDb3B5IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWZQ
dHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAg
ICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXJDb3B5KFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZjxjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkgeyB9CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikp
IHsgfQogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGNvbnN0X2Nhc3Q8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KCZidWZmZXIpKSB7IH0KKyAgICAgICAg
OiBtX2J1ZmZlcigmYnVmZmVyKSB7IH0KIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0K
QEAgLTU3LDE1ICs1OSwxNSBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2Rz
IG11c3Qgb25seSBiZSB1c2VkIG9uIHRoZSByZWNlaXZlcidzIElQQyBzaWRlLgogICAgIC8vIEl0
IHJlbGllcyBvbiBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgdGhhdCBtYWtlcyBtX2J1ZmZlciBi
ZWNvbWVzIGEgY29udGlndW91cyBTaGFyZWRCdWZmZXIKICAgICAvLyBvbmNlIGl0J3MgZGVzZXJp
YWxpc2VkIG92ZXIgSVBDLgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4obV9idWZm
ZXIuZ2V0KCkpOyB9Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FmZUJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSA6IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmdldCgpKTsgfQorICAgIFJlZjxjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhZmVCdWZmZXIoKSBjb25zdDsKICAgICBjb25zdCB1aW50
OF90KiBkYXRhKCkgY29uc3Q7CiAKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNv
cHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCAyMWUwNzI3MDM1NjM4NmVhOTc1MzVjODNiMGFiNWJj
YTMwMjVkYmI0Li42MTkzNzViYjNiYjk1M2NkMmMzOGZhYWQxMjAwYWJmMmQwN2NiNDE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbQpAQCAtNTM0LDEyICs1MzQsMTIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRl
Y28KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgqaW5jbHVkZXNDcmVh
dGlvbkRhdGEpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNv
ZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURh
dGEgPSBmb250RmFjZURhdGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYXV0
byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpOwogCiAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+
IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCA5OTg3YjFhODQ3NjhmMjczODYzZGMwYjFhNTUzOTE1M2M0OTgx
NzgzLi4xNjNiNmJjNTRjMTliYjA0NzliNzZiMTkwMmE2NjMxZDYyZGQ5OThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMxMTEsNiAr
MzExMSw2MiBAQCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjbwogICAgIHJldHVybiBidWZmZXIucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30K
Kworc3RkOjpvcHRpb25hbDxSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV1RGTW92ZShidWZmZXIp
OworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNo
YXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJl
Zjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8Y29uc3Qg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQor
Cit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwg
YnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQdHI8Y29uc3QgU2hhcmVkQnVm
ZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdURk1vdmUoYnVmZmVyKTsK
K30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1
ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+
IEFyZ3VtZW50Q29kZXI8UmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOworfQorCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZP
Uk0oQ09DT0EpCiBzdGF0aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9T
aGFyZWFibGVSZXNvdXJjZUhhbmRsZShjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCkKIHsKQEAg
LTMxODAsNyArMzIzNiw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlCiB7CiAgICAgZW5jb2Rl
ciA8PCBtZXNzYWdlLmZpcnN0OwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigpOworICAgIFJlZlB0cjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNv
cHlSZWYoKTsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOwogfQogCkBAIC0zMTkwLDcgKzMy
NDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2Fn
ZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggNmUyN2E3ODcyMDIxNzFiYmNlZGJi
NjQ4MzkyMGE3ZTc5YmQ1ODBiZi4uMDQ0MzU5ZTk4NGUwOTA0MzE1NjU1M2U2YWZmYjBmYjNhNWMw
OTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
QEAgLTc3Miw2ICs3NzIsMjYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJl
ZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8Y29uc3QgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8Y29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9
OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8Y29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgUmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERl
Y29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKaW5kZXggYzBiZTNhNDViOThmMDEyZjY2MzAyOWE2
ZDVjZjBhODgyYThkYjczYy4uM2IwNDc3NDVhNmZlMmFmMTMwOGVmMWE0NDYwYmFlMWNiNjMyNDM3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApA
QCAtODUsNyArODUsNyBAQCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERh
dGEoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCwgYgogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoSW1hZ2UqIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgp
OworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
aW1hZ2UtPmRhdGEoKTsKICAgICAgICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAgICAgaW1hZ2VT
aGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsK
ICAgICAgICAgICAgIGltYWdlU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCBk
ZjM5NTQ3NDQ1YzczMjZkOTgxMWMwODAzN2U4NWY0NDU3ZjgwMGViLi5kNDBiZTVhOTJkMWE3ZTU1
ZWJiM2ZlZjFjMzRkZDNhZTA1MTQ5OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtOTUsNyArOTUsNyBAQCBz
dGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6
ZGVjb2RlUGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0
YSogY3JlYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0
YS52YWx1ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZv
bnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Y29uc3QgU2hhcmVkQnVmZmVy
Pj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAg
ICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCmlu
ZGV4IGMyOGZlNjVmMGNmMTY0Mzk5ODE4YWNhMzJmOTgxY2M3NzhmMWU5MTkuLmVhM2NlODc2ZmZj
ZjMwYTFmMDQwMTU1Y2JmNmI4Mzk3ZDQ1NzNmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lk
IFJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUoKQogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6
OkxvYWRBbmRJbml0aWFsaXplKCksIG1faWRlbnRpZmllcik7CiB9CiAKLVJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2ls
bCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1
cGRhdGVMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCmluZGV4IDhjNDU0ZWI4M2U1
OTk0YThlNGQ1OTJkNTFkZjkxZmY5YjUyM2NiZWYuLjllZmNkNGM4ODdjZDFiMDJiODM4ZTY0NjUw
OGE1NTIyMDFjMDRkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE0uaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlzdGlu
Y3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkNETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOwogICAgIHZvaWQg
bG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAg
IFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZS5jcHAKaW5kZXggNzVkNWU1YTc5NTE0ZGJjM2FhYWMwMGI5ODg0YTU3ZGFjMTk4ZjlmNi4u
YmJkZmEzMTFlYzU2MGFlZmQ4ZmExODNiMWQwYjM1YjdhYmFlZDdmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5j
cHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUMKICAgICBtX2ZhY3Rv
cnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIHBlcnNpc3RlbnRT
dGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90
ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2sp
Cit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3Qg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2Fs
bGJhY2soRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAppbmRleCAyYzc4NTFlNDQwYjA4YTUyYTJhZTcwZGE3
ZTQxODg4MmUzYzYxNDM5Li4xMGE3YmM4Zjg2NWY1ZGFiZjAzNTU0OWVjOWZmOTU0NzEyNTFjMDYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZS5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBJbXBsZW1l
bnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1w
bGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dE
aXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRT
dG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5c3Rl
bTsgfQogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Np
b24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCA4YmVjZDU5YjVl
YjM3ZTBkM2E1MTQ1MzhmMzczODFkN2Y3N2Q4Y2NlLi44ZGY5MmVkMDc1MTQxYjA0OGEzNDdkYTU4
NWNhMWRkZGQwYWNlNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC00OSw3
ICs0OSw3IEBAIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmCiB7CiB9CiAKLXZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9y
eSkgewogICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmlu
ZygpLCBmYWxzZSwgRmFpbGVkKTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21T
dHJpbmcKICAgICB9LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUs
IFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAg
ICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwgRmFpbGVkKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vucwog
ICAgIH0KIAogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11
dGFibGUgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgaWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAg
ICAgICAgICAgcmVhbE1lc3NhZ2UgPSBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5v
bk51bGwoKTsKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUo
cmVhbE1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmgKaW5kZXggNGU0Y2QyYzAwNWM2YjAwNjVmOWNkYjE4OGM0YmNlMGI1YmZh
NjYwMS4uYzYyNTJmYTc4NTBkODcwY2FlMWE5MjZmNzM2ODkzM2NkMDljODU1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oCkBAIC01OSw4ICs1OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHNldENsaWVudChXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4mJiBj
bGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KICAgICB2b2lkIGNs
ZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KLSAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vz
c2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNr
JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXggOWMwODgxNjFlZGRiZjIzNDBmODdh
MGJiOTczNDEzN2VhN2UzZDcxMy4uYTU0Y2U5NmRhYTE3NWZlNGEyMjZlNzlkMGMxZThjZDE1ZjFl
MWExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFJlbW90
ZUltYWdlRGVjb2RlckFWRiBmaW5hbAogICAgIDogcHVibGljIFdlYkNvcmU6OkltYWdlRGVjb2Rl
cgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVySWRlbnRpZmllciYgaWRlbnRpZmllciwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCisgICAgc3RhdGljIFJlZjxSZW1vdGVJbWFn
ZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2Vy
LCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGKG1hbmFnZXIsIGlkZW50aWZpZXIsIG1pbWVUeXBlKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKaW5kZXggYmVkZGVjYmIw
NzRkMzQxMmE5YmU5M2NiY2Q1OWFlMTkyNDdmMmI0YS4uMTg0ZmVkN2FhZDFlZDk4YTM3M2M3NGM4
YmM1MWFiYzUzYjQ4NDYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1Jl
ZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6
OmNyZWF0ZUltYWdlRGVjb2Rlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3Rk
OjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVy
OwogICAgIGlmICghZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVy
KElQQzo6U2hhcmVkQnVmZmVyQ29weShkYXRhKSwgbWltZVR5cGUpLCBNZXNzYWdlczo6UmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXI6OlJlcGx5KGltYWdlRGVjb2Rlcklk
ZW50aWZpZXIpLCAwKSkKQEAgLTQ4LDcgKzQ4LDcgQEAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2Rl
ckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKEYK
ICAgICBpZiAoIWltYWdlRGVjb2RlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgYXV0byByZW1vdGVJbWFnZURlY29kZXIgPSBSZW1vdGVJbWFnZURlY29kZXJBVkY6
OmNyZWF0ZSgqdGhpcywgKmltYWdlRGVjb2RlcklkZW50aWZpZXIsIGRhdGEsIG1pbWVUeXBlKTsK
KyAgICBhdXRvIHJlbW90ZUltYWdlRGVjb2RlciA9IFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y3Jl
YXRlKCp0aGlzLCAqaW1hZ2VEZWNvZGVySWRlbnRpZmllciwgbWltZVR5cGUpOwogICAgIG1fcmVt
b3RlSW1hZ2VEZWNvZGVycy5hZGQoKmltYWdlRGVjb2RlcklkZW50aWZpZXIsIHJlbW90ZUltYWdl
RGVjb2Rlcik7CiAKICAgICByZXR1cm4gcmVtb3RlSW1hZ2VEZWNvZGVyOwpAQCAtMTA3LDcgKzEw
Nyw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6c2V0VXNlR1BVUHJvY2Vz
cyhib29sIHVzZUdQVVByb2Nlc3MpCiAgICAgSW1hZ2VEZWNvZGVyOjppbnN0YWxsRmFjdG9yeSh7
CiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c3VwcG9ydHNNZWRpYVR5cGUsCiAgICAg
ICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y2FuRGVjb2RlVHlwZSwKLSAgICAgICAgW3RoaXNd
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikgeworICAgICAgICBbdGhpc10oY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VEZWNvZGVyKGRhdGEsIG1p
bWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgICAg
ICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCmluZGV4IDM2MThh
ZmQxMjA5OGI1NTc2YjRkZDRmZmJmM2MwNmZiYTg0MmE3NjQuLjk5MmVkMjFhNDcyYmRiNTdhZDFk
NWUxZTI1YmQ2ZDE4ODVhMjkyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5o
CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZW5z
dXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFP
cHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBSZWZQdHI8
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoY29uc3QgV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2Vi
Q29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
IAogICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQuCiAgICAgdm9pZCBncHVQcm9j
ZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggNGEwMGYyMjhjZDUwZjg1YzAzZjk5N2YwNDdjNjljZTUyMGU5ZjE3Ny4uMjJh
NWVkM2MyODkxMDJjM2E5MTQyNTNlOGZmYzE1ZDk1Yzk0OTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAt
MjE3LDE1ICsyMTcsMTUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQcmkKICAgICBtX2NvcmVMb2Fk
ZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKElQQzo6
U2hhcmVkQnVmZmVyQ29weSYmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAg
ICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhIG9mIHNpemUgJWx1IGZvciAnJXMnIiwgZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+
dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQg
bm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAg
ICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVy
LmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3Ro
XSgpIG11dGFibGUgeworICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3Jl
TG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZl
RGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShidWZmZXIpKSwgZW5jb2RlZERhdGFM
ZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSksIGVu
Y29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCBhYzBhZGM5YjhkN2E0ZjIxZThiY2FiNWY4ODkyNDQ1OGU1NGUyYjFjLi5iZmRk
Mjk1NWU0YTNkNThmY2RhMDIyODg5YjA1ZTJkY2ViYTdhNGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTg0LDcg
Kzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3Qg
Ynl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBQcml2YXRlUmVs
YXllZCwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoSVBDOjpT
aGFyZWRCdWZmZXJDb3B5JiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
dm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJik7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDAzNDRmNGJlMjNhNDM3NjcxOTc3ODk5OTdkNzYzN2Ey
MDMxYjdlYWUuLmY1ZGE1NTY2NzE3MDJkMWJkYzk5NTZkMWEwZjE4MDU4ZGUwZjg0YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC04
NjIsNyArODYyLDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogICAg
IG1fcGx1Z2luLT53aWxsRGV0YWNoUmVuZGVyZXIoKTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRy
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURh
dGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewog
ICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6Rmlu
aXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgK
aW5kZXggMjU2MTVjYjMwZjIyNjQ2MzkyNDQ0ODhmMmJkN2M0MTIyNzkwNzliOS4uZWY3MDAyYWI0
OWQwODBjMzgzY2EwMjY2MWE4OWE3NTRmNTQ3NTc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKTsKIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAg
UmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJj
ZURhdGEoKSBjb25zdDsKICAgICBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlv
bihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgYm9vbCBleGlzdGluZ1NlbGVjdGlv
bkNvbnRhaW5zUG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWRmNDU0
YTA2OGJjMDVhYmE4MWY3NjIxNjFhNGZkMjYwZDU4NzNmNy4uNjQ2NmQwZmZiYjJlMmE3MjQxNmY0
M2EwNWFkNTMwNmZhN2U1ZGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c291
cmNlKCkgY29uc3QKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVG
cmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50
TG9hZGVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291
cmNlRGF0YSgpOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWlu
UmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBp
ZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1
cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2M2FmOTFmZGJhNWYyMDEw
MDZjNzNjNTlmMjk2YmEyMmYzZDM3YzVkLi40Y2QyNTY4YTIyZGE4ZDdlMTFmMGEwNGYxMmI1ZTM5
N2RhYjRlNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMzg3OSw3ICszODc5LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9p
ZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIGlmIChQbHVnaW5WaWV3KiBwbHVn
aW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSkpCiAgICAgICAg
ICAgICBidWZmZXIgPSBwbHVnaW5WaWV3LT5saXZlUmVzb3VyY2VEYXRhKCk7CkBAIC0zODkyLDcg
KzM4OTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZAogICAgIGNhbGxiYWNrKElQQzo6U2hh
cmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgcmVzb3VyY2VVUkwpCitzdGF0aWMgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiBy
ZXNvdXJjZVVSTCkKIHsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0zOTA3LDcgKzM5MDcs
NyBAQCBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZv
ckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVQogCiB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNl
RGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgVVJMIHJlc291cmNlVVJM
KFVSTCgpLCByZXNvdXJjZVVSTFN0cmluZyk7CiAgICAgICAgIGJ1ZmZlciA9IHJlc291cmNlRGF0
YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwpAQCAtNzA1Nyw3ICs3
MDU3LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVj
aXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIKICAgICBpZiAoIWRvY3VtZW50TG9hZGVy
KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIGRvY3VtZW50
TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmll
ci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJs
ZSB7CisgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNp
b24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGljb25EYXRhKSBtdXRhYmxlIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFJlZlB0ciB7IGljb25E
YXRhIH0pKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggODU0NDNmYzZhOTcwNTk0ODIyMmYxMDc1MWIy
YzEzOGNlZjA2YzFhZi4uMjZkYTZjYzljZjNiMzAzMjNlM2U2YzRhNDlhZWU2YWQ0OTBkNzA5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KQEAgLTMyODIsNyArMzI4Miw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9u
RWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiAgICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSA9IGRvd25jYXN0PFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJlcigpKS5jYWNoZWRJbWFn
ZSgpOwogICAgICAgICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2Ut
PnJlc291cmNlQnVmZmVyKCk7CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAgICAg
aWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gc2hhcmVkTWVt
b3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggOGRmOTkzZjJkNzc1YjZjOTNkMmU4ZjA5OTBmNzJmODVmNjE4
ZTU4ZS4uZWEyNGE4MzJkNWYxZWIxYzI1OGNhZDIyMTg5MzEyNmM1MjEzN2Y2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNTAsNyArMjUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxT
ZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJikgZmluYWw7CiAKICAgICB2b2lk
IGdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6
TGlua0ljb24mLCB1aW50NjRfdD4+JikgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJ
Y29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGZpbmlzaGVk
TG9hZGluZ0ljb24oY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2xvYWRpbmdJY29uIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggODdhNWQ2NTdmN2I3MzNkMDdjNWRi
NjAxZjY5ODFmOTA0OTc3MTM5My4uNDQ4MGEwNGE2OGE4MzgwZThjZWMyYTAwOTA2Mjk2NTI0MjE0
MGRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwOTMsNyArMjA5Myw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yCiAgICAgICAgIH0KIAogICAgICAgICBtX2xvYWRpbmdJ
Y29uID0gdHJ1ZTsKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZv
ckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgeworICAgICAg
ICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5z
ZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoYXV0byogYnVmZmVy
KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIGZpbmlzaGVkTG9hZGluZ0ljb24oYnVmZmVyKTsKQEAgLTIxMzAsNyArMjEz
MCw3IEBAIHN0YXRpYyBOU0ltYWdlICp3ZWJHZXROU0ltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFn
ZSwgTlNTaXplIHNpemUpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpmaW5pc2hlZExvYWRpbmdJY29uKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGljb25EYXRhKQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVCht
X2xvYWRpbmdJY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQ5MWZjYjNiZmM4MWNjYTkxZWM3ZTBlNTZj
NDI4Li4yMzhhNDRhNTM3M2U4Y2M4MzI5YmU2ZDIwNzcwN2FkN2U5Mzg5YjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjAs
NyArNDYwLDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9
IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJl
ZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VE
YXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAg
ICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVy
biBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRv
cmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3Vy
Y2UubW0KaW5kZXggMTJkNTljMGExNzY4MThlNjYyYzQzYzA3NDRhNTNhMTAxYzg1NjFlZC4uZTBk
MGY3MzA2MjkzNDg5NWMzZjE4YmU3NWVlYjI1MGIxNWM2YjA1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0zNjYsOCArMzY2LDggQEAg
LSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBfcHJpdmF0ZS0+
Y29yZVJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICBpZiAoIWVuY29kaW5nLmlzVmFsaWQo
KSkKICAgICAgICAgZW5jb2RpbmcgPSBQQUw6OldpbmRvd3NMYXRpbjFFbmNvZGluZygpOwotICAg
IAotICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVS
ZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOworCisg
ICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CiAg
ICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihj
b3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwg
Y29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="479566"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452510</attachid>
            <date>2022-02-18 05:04:18 -0800</date>
            <delta_ts>2022-02-19 23:18:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236736-20220219000416.patch</filename>
            <type>text/plain</type>
            <size>278069</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQ1NGQ0YjU3MWRiYzJi
ZmM1ZjAwYzczNjBmNDdjMDA1NzBkOTQwZi4uMTA3MDY1MjQ4NmE1NmJhNGYwNDFjZDJmZDUxMjEz
YjNjZDlhN2E1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MyBAQAorMjAyMi0wMi0xNyAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU2hhcmVkQnVm
ZmVyIHVzZWQgYnkgQ2FjaGVkUmVzb3VyY2U6Om1fZGF0YSBjb25zdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NzM2CisgICAgICAgIHJkYXI6Ly84
OTA1MDQwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEJ5IG1ha2luZyBDYWNoZWRSZXNvdXJjZTo6bV9kYXRhIGNvbnN0LCBhbGwgY2FsbGluZyBwb2lu
dHMgbmVlZCB0byBiZQorICAgICAgICBtb2RpZmllZCBhY2NvcmRpbmdseSwgcmVzdWx0aW5nIGlu
IGFuIGV4dGVuc2l2ZSBjaGFuZ2UuCisgICAgICAgIEJ5IHBhc3NpbmcgdGhlIFNoYXJlZEJ1ZmZl
ciBhcyBjb25zdCB3ZSBjYW4gbW9yZSBlYXNpbHkgaWRlbnRpZnkgYXJlYXMKKyAgICAgICAgc3Rp
bGwgbW9kaWZ5aW5nIHRoZSBvYmplY3QgYWZ0ZXIgaXQncyBiZWVuIGNyZWF0ZWQuCisgICAgICAg
IFRoZSBvbmx5IHBsYWNlIHdoZXJlIGEgU2hhcmVkQnVmZmVyIHNob3VsZG4ndCBiZSBtYWRlIGNv
bnN0IGlzIHJpZ2h0CisgICAgICAgIGFmdGVyIGl0cyBjcmVhdGlvbi4KKworICAgICAgICBObyBj
aGFuZ2UgaW4gYmVoYXZpb3VyLiBTZW1hbnRpY3Mgb25seS4KKworICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6c2FuaXRpemVJ
bml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE06OnNhbml0aXplUmVzcG9uc2UpOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlE
c0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNXZWJNKToK
KyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyk6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlTZXNzaW9uOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpz
ZW5kTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChmaWxlV3Jh
cHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9z
aW5nSW1hZ2VXaXRoRGF0YSk6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1l
bnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVu
dDo6ZmluaXNoZWRQYXJzaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJl
c291cmNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYWluUmVzb3Vy
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YSk6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U3Vic3RpdHV0ZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1
dGVSZXNvdXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OlN1YnN0aXR1dGVSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rvcnkp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgor
ICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFyY2hpdmVGYWN0b3J5Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFyY2hpdmVG
YWN0b3J5OjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
Lmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oOgor
ICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6Ok1IVE1MUGFy
c2VyKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgorICAg
ICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNl
cmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL05vd1Bs
YXlpbmdNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWlsZGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRl
Q2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFp
bGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlc2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJh
Y3RLZXlJRHNTaW5mKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2FuaXRpemVTaW5mKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2FuaXRpemVTa2QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNl
cnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uRm9yS2V5SURzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExp
Y2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvcHlLZXlJRHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVBy
aXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpwYXlsb2FkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcnNlZFJlc3BvbnNlTWVzc2FnZTo6cGF5bG9hZCk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpl
cnJvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1h
Z2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVj
dCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vu
c2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorCiAyMDIyLTAyLTE2
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2hUcmFj
ZXI6IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBKYXZhU2NyaXB0Q29yZTogYm1hbGxv
Y19hbGxvY2F0ZV9pbXBsX2ltcGxfc2xvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4NDVjZjI1MDU0NjY5NGJmM2Q3
YTU1OGUzOTVlMmRkM2NhMTc4MmJlLi5jN2Y0NzA5M2FjMjExN2VkMDc5N2Q0ZDI5ZmUyYWQ5MjE0
ZGNiNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIyLTAyLTE3ICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTaGFyZWRCdWZmZXIgdXNl
ZCBieSBDYWNoZWRSZXNvdXJjZTo6bV9kYXRhIGNvbnN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3MzYKKyAgICAgICAgcmRhcjovLzg5MDUwNDAz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6U2hh
cmVkQnVmZmVyQ29weTo6c2FmZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hh
cmVkQnVmZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBj
b25zdCk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OldlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b246Ok1lc3NhZ2U+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVh
dGVJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6cmVz
b3VyY2VEYXRhRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQp
OgorCiAyMDIyLTAyLTE2ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ3Jhc2hUcmFjZXI6IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBKYXZhU2Ny
aXB0Q29yZTogYm1hbGxvY19hbGxvY2F0ZV9pbXBsX2ltcGxfc2xvdwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IGQzZjFhMzVjMzNjZGE1ZjdkNzdjZjRhN2JlYWE2ZmEzMWMyZjdlZGIu
LjUxMzE1MGZhMDAyN2EwOTU5MDQ3YzFiODQzNmZhYmZmZWRjNGRjYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wMi0xNyAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU2hhcmVkQnVmZmVyIHVzZWQg
YnkgQ2FjaGVkUmVzb3VyY2U6Om1fZGF0YSBjb25zdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NzM2CisgICAgICAgIHJkYXI6Ly84OTA1MDQwMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToK
KwogMjAyMi0wMi0xNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVubmVjZXNzYXJ5IGNvcHkvbWVtb3J5IGFsbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdl
UmVhZGVyLmNwcAppbmRleCAzMzU0YjUyYTUwY2JiMTg5ZmRmYWViN2Q4MjQ4M2JlMGM0MWMzZDRl
Li43MDdkNjdmYTUyM2U1YjIzYjAwZGRkNTUwN2JmOTJlODZmZGQwMjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
KQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBSZWY8Y29uc3QgU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCAxZjU3ZmE5NTYwZDYx
Njc2OWQzYmZiY2YwYTYzODhjOGM4N2ZmNDJiLi45M2VlNzYxM2RiYmM2NDJiMzBkMjA5NTIwMjFj
ZWEyNGViZjBlY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBib29sIHNob3VsZFJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgdHlwZSwgUmVmPGNvbnN0IFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0
YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uZDE1OGEyNGI1NzA3MDQ4OGRhYTdiNDBkYWFiN2FmZWJi
YTEwZGM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAt
MzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxjb25zdCBTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CiAgICAg
ICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5p
dFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJl
YWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9D
bGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0
OTEzMTc4NjlkYTdlNWJmLi40YmQyNjgwNDVjZmRjZDJlYjA0ZTFlODU1OGRkYjBmOTZjNWYyMzYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zMyw3ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKICAgICAgICAgYXV0
byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDAxNjEyMTlkMWUyNmIyNjJjNGVlZWM4MTk4YzQ2ZDhlYjE0
YzFiMDIuLjFkMzcwMWU2YWJmZTQ2YmNmMTU1MTFmZjI0Njg0OWQ5OTA4YzVhMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTEzNSw3ICsx
MzUsNyBAQCBib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5z
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKTsKIH0KIAotUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRp
emVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHJldHVybiBJbml0RGF0YVJlZ2lzdHJ5
OjpzaGFyZWQoKS5zYW5pdGl6ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQpA
QCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlCiAgICAgcmV0dXJuIG1f
cHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0
RGF0YSk7CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIGlmICghbV9wcml2YXRl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5oCmluZGV4IGQ3YjFkNTNkMDQ5MWY3Mjc3OWI1OTRiMmQ4M2MwOWI4M2Jj
ZjIwN2YuLmJiN2JhOTkyNzQ0OTEzYjk4MjMzYmFiYjdmNmRmYTMyMzE1NDJiOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtNzMsMTAgKzczLDEw
IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdDsKICAgICBib29s
IHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAg
IFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOwogICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1D
bGllbnQuaAppbmRleCA0MTBlZDJmYjY0Mjc1NjJjZTliZDhlZGE0ZDkxYTg2YmE5OGNhYTYxLi5m
NTg2NzJhMWUyNDI1N2RjYWVjMzllZjA5NTMwYjk2MmU4YmQ3MWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKQEAgLTQzLDcgKzQz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAg
IHZpcnR1YWwgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5
KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6
YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwCmluZGV4IDZmODg4ZTE3ODU4ZGRhNmQ5NDcxZWMxZjZlZjVkMDY2ZGYwZTQ5OTAu
LjA3ZjE1ZTE1MGNlYjY4ZmVjNmJhYmZhZDFhYzk1YTM5ZDk1ZTE1NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcApAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgewogICAgIGNvbnN0IHVpbnQzMl90
IGtLZXlJZHNNYXhLZXlJZFNpemVJbkJ5dGVzID0gNTEyOwogfQogCi1zdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tl
eWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFj
dEtleUlEc0tleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgLy8gMS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1t
ZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC03NCw3
ICs3NCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvCiAgICAgaWYgKCFraWRzQXJyYXkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7
CiAgICAgICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFr
ZXlJRCkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY28KICAgICByZXR1
cm4ga2V5SURzOwogfQogCi1zdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRp
YyBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAog
ICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lz
dHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApAQCAtMTUxLDkgKzE1MSw5IEBAIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3g+Pj4gSW5pCiAgICAgcmV0dXJuIHBzc2hCb3hlczsKIH0KIAotc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3Ry
eTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBrZXlJRHM7CiAKICAgICBhdXRvIHBzc2hCb3hlcyA9IGV4dHJhY3RQc3NoQm94ZXNGcm9t
Q2VuYyhidWZmZXIpOwogICAgIGlmICghcHNzaEJveGVzKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRh
UmVnaXN0cnk6OmV4dHJhY3RLZXlJCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21tb24gU3lzdGVtSUQg
YW5kIFBTU0ggQm94IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0
ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNjb21tb24tc3lzdGVt
CkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXRE
YXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2gKICAgICByZXR1cm4g
YnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVdlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3Rh
dGljIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIENoZWNrIGlmIHRo
ZSBidWZmZXIgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIC8vIFRoZSBXZWJNIGluaXRE
YXRhIGlzIHRoZSBDb250ZW50RW5jS2V5SUQsIHNvIHNob3VsZCBiZSBsZXNzIHRoYW4ga1dlYk1N
YXhDb250ZW50RW5jS2V5SURTaXplLgpAQCAtMjA1LDEwICsyMDUsMTAgQEAgc3RhdGljIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJ
RHNXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0g
ICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwotICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0o
YnVmZmVyKTsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBr
ZXlJRHM7CisgICAgYXV0byBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsK
ICAgICBpZiAoIXNhbml0aXplZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IApAQCAtMjMzLDcgKzIzMyw3IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXREYXRhUmVnaXN0cnko
KQogCiBJbml0RGF0YVJlZ2lzdHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAot
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXpl
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9
PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpAQCAtMjQx
LDcgKzI0MSw3IEBAIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lz
dHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpCiAgICAgcmV0dXJuIGl0ZXItPnZh
bHVlLnNhbml0aXplSW5pdERhdGEoYnVmZmVyKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtl
eUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAg
ICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0
RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
SW5pdERhdGFSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmgKaW5kZXggNzdkNjA0YjA4YmI3ZjdlMzhiY2NiMzU0NWIzNGM4
YjEzNDM1NWVmMi4uYmFlNzFiN2U5MDc3ZDkwOWJkNTIyYTY3NmFlYTI0NzEzZWUzMDYxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5LmgKQEAgLTQ1LDEyICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIEluaXREYXRhUmVnaXN0cnkmIHNoYXJlZCgpOwogICAgIGZyaWVuZCBjbGFz
cyBOZXZlckRlc3Ryb3llZDxJbml0RGF0YVJlZ2lzdHJ5PjsKIAotICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4
dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtl
eUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAg
ICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKLSAgICAg
ICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrID0gRnVu
Y3Rpb248UmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9
IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CiAKICAgICAgICAgU2Fu
aXRpemVJbml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CiAgICAgICAgIEV4dHJhY3RL
ZXlJRHNDYWxsYmFjayBleHRyYWN0S2V5SURzOwpAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHdlYm1OYW1lKCk7CiAKICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveD4+PiBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAg
c3RhdGljIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiBwcml2YXRlOgogICAgIEluaXREYXRh
UmVnaXN0cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBmYjRhN2Y4ODRmNjc5NTViNmQ3OWQw
MmNlNWNkZDU4NDlkMmZjOTY1Li45Nzg4YjVlZTVkZjAzN2NlZDkwM2JiNDNhMGY1ZGNjMmQ4MjNj
MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEJ1ZmYKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tT
b3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBp
bml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEu
bGVuZ3RoKCkpLCBpbml0RGF0YVR5cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVu
dGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDEw
LjEuIElmIHRoZSBpbml0IGRhdGEgaXMgbm90IHZhbGlkIGZvciBpbml0RGF0YVR5cGUsIHJlamVj
dCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgLy8gMTAu
Mi4gTGV0IHNhbml0aXplZCBpbml0IGRhdGEgYmUgYSB2YWxpZGF0ZWQgYW5kIHNhbml0aXplZCB2
ZXJzaW9uIG9mIGluaXQgZGF0YS4KLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0
YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2Fu
aXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4z
LiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3
bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsK
QEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAg
bV9sYXRlc3REZWNyeXB0VGltZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNl
U2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5p
dGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9u
LT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZElu
aXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgICAgICBtX2NhbGxhYmxlID0gdHJ1ZTsKIAogICAg
ICAgICAgICAgICAgIC8vIDEwLjkuMy4gUnVuIHRoZSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudCBh
bGdvcml0aG0gb24gdGhlIHNlc3Npb24sIHByb3ZpZGluZyBtZXNzYWdlIHR5cGUgYW5kIG1lc3Nh
Z2UuCi0gICAgICAgICAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIG1lc3NhZ2Up
OworICAgICAgICAgICAgICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBXVEZNb3ZlKG1l
c3NhZ2UpKTsKIAogICAgICAgICAgICAgICAgIC8vIDEwLjkuMy4gUmVzb2x2ZSBwcm9taXNlLgog
ICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZXNvbHZlZCIp
OwpAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3Qg
QnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgLy8gNi4g
UnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6CiAgICAgcXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVzcG9uc2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLmxlbmd0aCgpKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgLy8gNi4xLiBMZXQgc2FuaXRpemVkIHJlc3BvbnNlIGJlIGEgdmFsaWRhdGVkIGFuZC9v
ciBzYW5pdGl6ZWQgdmVyc2lvbiBvZiByZXNwb25zZSBjb3B5LgotICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9u
LT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+
c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJl
Y2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJl
amVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYg
KCFzYW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBA
IC02MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBi
ZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9s
bG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRh
dGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246
OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vz
c2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlz
LCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZN
b3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBr
ZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBt
ZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTcxNSw5ICs3MTUsOSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3Rh
dHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbgogICAgICAgICB9
KTsKIH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBl
IG1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9p
ZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBl
LCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewotICAgIGVu
cXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKKyAgICBlbnF1ZXVlTWVzc2FnZSht
ZXNzYWdlVHlwZSwgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIHZvaWQgTWVkaWFLZXlTZXNzaW9u
OjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgK
aW5kZXggMzY1YWNlNWMwOTVlN2RjMGM1NzFlNzZjY2YyYzA3YWFmYzYyYmFhNi4uY2YzYTg0OThm
ZDQ1MGVmMTgyNzRhODA5MjE2NjU4ZjIzNDgyZWFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC04Nyw3
ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZVBy
b3h5PElETFVuZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlzZSYgY2xvc2VkKCkgeyByZXR1cm4g
bV9jbG9zZWRQcm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBj
b25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CisgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxS
ZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1
c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQogCiAgICAgdW5zaWduZWQgaW50ZXJu
YWxJbnN0YW5jZVNlc3Npb25PYmplY3RSZWZDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFu
Y2VTZXNzaW9uLT5yZWZDb3VudCgpOyB9CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgog
CiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0
dXNlcyhDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvciYmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1l
c3NhZ2VUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBm
aW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQw
LDEwIEBAIHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwog
ICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lv
bj4gbV9pbnN0YW5jZVNlc3Npb247Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOworICAgIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKICAgICBkb3VibGUgbV9maXJzdERl
Y3J5cHRUaW1lIHsgMCB9OwogICAgIGRvdWJsZSBtX2xhdGVzdERlY3J5cHRUaW1lIHsgMCB9Owot
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtl
eVN0YXR1cz4+IG1fc3RhdHVzZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKIAogICAg
IHVzaW5nIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKFBsYXRmb3JtRGlz
cGxheUlEKT47CiAgICAgRGlzcGxheUNoYW5nZWRPYnNlcnZlciBtX2Rpc3BsYXlDaGFuZ2VkT2Jz
ZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5jcHAKaW5kZXggMzY3ZjMxZDE4NmI1MTYzOWE5Yzc0MjEzZjBjZjhlNmYyZjhkMjZl
YS4uNmE1NGRjZDI5M2NmMzI5MTE1NzA5ZTk5NTAxZDkzYjcyMDAyMWEyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAt
MTc3LDcgKzE3Nyw3IEBAIGJvb2wgTWVkaWFLZXlzOjpoYXNPcGVuU2Vzc2lvbnMoKSBjb25zdAog
ICAgICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5p
dGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIGZvciAoYXV0
byYgY2RtQ2xpZW50IDogbV9jZG1DbGllbnRzKQogICAgICAgICBjZG1DbGllbnQuY2RtQ2xpZW50
VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChpbml0RGF0YVR5cGUsIGluaXRE
YXRhLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleXMuaAppbmRleCA5MWExYTA3MTE0MzNiZTI0N2RkMmE4NWM1ZjRhZDA5Mzhh
MDlhN2FjLi44NjQ1MmQ4OGIyNDlhZWViYTdjZjQyZGVmOThlYzU2MWQ5M2Y3ZGYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAg
LTg2LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlhS2V5cyhEb2N1bWVudCYsIGJvb2wg
dXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNv
bnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0
YW5jZT4mJik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0
IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNzg3
NWQ3YTIxYjRhNTM3NGU5NzVjZmY4OTg2YTAwZDFiNmEzY2ZjOS4uN2ZhYzM1ODNhMWQxNDg4YjRi
ZjU3NTQ3ZWEyNDUzOTdhYzFjZWQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTM4OCwxMiArMzg4LDEyIEBAIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogewogICAgIG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsKIH0KIAotUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCitSZWZQdHI8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRh
KCkKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCBj
YmVkMGYwMzNkOTEzY2QxY2JiYmJhMDFiODI3NDJlMzg0NjE2M2FiLi5hOTlmMGEwZjkyN2IxZTVl
MmM3NGMzYmQyMmVhNjI2OTlmMTJiMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KICAgICBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHZvaWQgc2V0RGF0YShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsK
KyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAg
ICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKICAgICBTdHJp
bmcgdGFrZUFzVGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuY3BwCmluZGV4IDdjZWEzMmE5NThmMTRiZDhjODc4YmM1MWY0OWMxZDFhZGE2ZDZhMzcu
LmJhY2VjNWJkYTE3N2I0ZjcyNDEyMzY1ODJjZWYwODYxMzRlMTQ0YmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBGZXRjaExvYWRlcjo6c3RvcCgpCiAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKIH0K
IAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0cmVh
bWluZygpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hMb2FkZXI6
OnN0YXJ0U3RyZWFtaW5nKCkKIHsKICAgICBBU1NFUlQobV9jb25zdW1lcik7CiAgICAgYXV0byBm
aXJzdENodW5rID0gbV9jb25zdW1lci0+dGFrZURhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCBmYzU0MTFmZDljYWU4M2ZiNWMxYjI5ODgwODUw
ZjVlMTA4ODRhMGQ0Li45MmU0ODFkZDFlYTdlYjYxZTBmYzMyYjc1YjBlOGI5NjgzZWRhODllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKICAgICBGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVudCYsIEZldGNo
Qm9keUNvbnN1bWVyKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkZldGNoTG9hZGVyKCk7CiAKLSAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBS
ZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKIAog
ICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEZldGNoUmVxdWVz
dCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IEJsb2ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwCmluZGV4IDkzNTJmNDU3NjdmZTdiNTMwMzMzODk1ZmUzNGI1Y2Q1ODJlYjE2
ZWQuLjQ0MDU3MDYxYWM1NGU2OGFhOWM1NmEzNDA0ZmYzYmE1ZDliYzdmZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNTA3LDcgKzUw
Nyw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6ZmVlZFN0cmVhbSgpCiAgICAgY2xvc2VTdHJlYW0o
KTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAg
ICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICByZXR1cm4gbV9sb2FkZXItPnN0YXJ0U3RyZWFtaW5n
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4
IDMxYzU0NzBhMWFhODc5Yzc1OWRhYmQ2Y2MwOGVhMjlmOTBlYjQ1MzQuLmI4MDY0YzllN2I5YjE4
ZGZkY2U3ZTY2NTI0NGIzODQzYjk0NTJjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICB2b2lkIGNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYm
KTsKIAotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1p
bmcoKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0
U3RyZWFtaW5nKCk7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIHRha2VOb3RpZmljYXRp
b25DYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9yZXNwb25zZUNhbGxiYWNrKTsgfQogICAg
ICAgICBDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayB0YWtlQ29uc3VtZURhdGFDYWxsYmFjaygp
IHsgcmV0dXJuIFdURk1vdmUobV9jb25zdW1lRGF0YUNhbGxiYWNrKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmlu
ZGV4IDg3NGFhN2YwYjE4ZjBlZTc1ODgwYmE1ZjVlZjY3ZDQ3YmZjMmIyYjQuLmJkMTA2NzE2MWEw
ZDI1YjkzZGU0ZjdhZTZiNDdmNWY2MWRmYzM0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3
IEBAIHZvaWQgQXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ly8gU2FuaXRpemUgdGhlIGltYWdlIGJ5IGRlY29kaW5nIGl0IGludG8gYSBCaXRtYXBJbWFnZS4K
LSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1f
Y2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGJ1ZmZlclRvU2FuaXRpemUg
PSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgYXV0byBiaXRtYXBJbWFnZSA9
IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0YShXVEZNb3Zl
KGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggODZhYjg4OWJjMGVhMTVh
NTQ3MzU3ZmI2NGRmZjlmMTBiODYyZGM1NC4uMjljY2Y5NzM1NWUyNWZmYjk3YWVhODg0MzU3NmJk
ZmYxZmQwMGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTQwMiw3ICs0
MDIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDogUGFzdGVib2Fy
ZEZpbGVSZWFkZXIgewogICAgICAgICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5cGVGb3JGaWxl
KGZpbGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2b2lkIHJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Y29uc3QgU2hhcmVk
QnVmZmVyPiYmKQogICAgIHsKICAgICAgICAgdHlwZXMuYWRkKHR5cGUpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAxNWM1YzM5MGMxYjU0ZjBlMzNiNWU5MjQ2NGM1M2Q1
MmM5MjFlMjZiLi4xYjYzMzQxZmQ1MmFhY2IwMjQzNjhmZWVlOWNkNWZjZGY3NThjZTE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MTYwLDcgKzQxNjAsNyBAQCBQcm9taXNlZEF0
dGFjaG1lbnRJbmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVt
ZW50KQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25h
bFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7
CisgICAgVmVjdG9yPFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRp
ZgpAQCAtNDE2OCw3ICs0MTY4LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnBy
b21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBhdHRh
Y2htZW50LT51bmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5cGVzKSwgV1RG
TW92ZShhZGRpdGlvbmFsRGF0YSkgfTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5j
bGllbnQoKSkKICAgICAgICAgY2xpZW50LT5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGlk
ZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgV1RGTW92ZShkYXRhKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBjNGI0NjY5ZGNlZjkwNzJkNGVlOWJmYjAyZTQ2
MWE1MTkwNzhmZjFhLi5lYzg0Yzc0ZDczMGQ0M2MwZDY3YmQzZTQ0NjMyMWZjMWUxY2IzOWYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU2Niw3ICs1NjYsNyBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5z
ZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZl
cnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7Cisg
ICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJl
Zjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGZpbGVEYXRhKTsKICAgICB2b2lkIHJl
Z2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJik7CiAg
ICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogICAgIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKQEAgLTU3Niw3ICs1
NzYsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYpOwogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVu
dCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNo
bWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPGNv
bnN0IFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKaW5kZXggNGFmOTcwYjFmNWI0MjUwYzk1
MmQ0MDlhODcxOGE4ODAzNGY0ODc1Yy4uZWE1ZWUzNTYxMWRkMDA5MGMzNjIzZjBhZjZmMmVhOTJh
NjExMTk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVh
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKQEAg
LTcyLDE2ICs3MiwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IHsgfSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFk
RmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFk
SFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFnZShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wg
cmVhZEltYWdlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsg
fSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
dGl0bGUpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2Vi
QXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFBy
ZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUo
Y29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChjb25zdCBT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoY29uc3QgU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9u
U2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKICNlbmRpZgog
fTsKIApAQCAtOTksMTYgKzk5LDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgo
Y29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiA9IHsg
fSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRGaWxlUGF0aHMoY29u
c3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
cmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNp
emUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkSW1hZ2Uo
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBy
ZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVh
ZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoY29uc3QgU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChjb25zdCBTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKaW5kZXggNTQ5ZWI3ZDJlNGMw
NzU0OGU0YThjOWVhMjRlYzIwZTRmMjFiZmEyNS4uYmZmNTM0NTI1OTRhZjRkODE4MDRmNmRmZjg2
N2UyMzRmMWE3ZjZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMzksOSArMzksOSBAQCB2b2lkIFdlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUpCiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFt
ZSkpOwogfQogCi12b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Y29uc3Qg
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRl
KGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZmZXItPmV4dHJh
Y3REYXRhKCksIHR5cGUpLCBmaWxlbmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVh
dGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+Y29w
eURhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCmluZGV4IDVjNTI5ZGQ3
YzhlY2MwMDA0OGZjYjRkMTU4MTQ2MzViMjRkOTBiYjcuLmMxMDkxZGNkNjhlMTRmNGRiMmMxY2Rk
NWU4OGQ1MzI0OTM4NDY0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewog
ICAgIH5XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKTsKIAogICAgIHZvaWQgcmVhZEZpbGVu
YW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxjb25zdCBTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVm
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgVmVjdG9yPFJlZjxGaWxl
Pj4gZmlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRv
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpp
bmRleCA1ODU0MGZhNzI2ZTU2OTViN2I1MmMyOTY5YTM4MTdmZjgyNzAyMDY5Li40NTRlMThkMjk3
NDI4OGJmNzZiOWMzZTA2MzFmYTlkYTExMWYyYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTg0LDcgKzg0LDcgQEAgU3RyaW5nIEVkaXRvcjo6
c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAKLXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChF
bGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVz
QW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91
dFR5cGVzLCBWZWN0b3I8UmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewog
ICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsK
ICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRU
eXBlcywgb3V0RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0KaW5kZXggNWE2MDU5NGI1ZTQ4MmRkMmE1YTdiYzIwN2U5YmIyNjQwMmQyMGVlOS4u
NzhiZjI0YzE3ZjczODA2YTMzYzExNGY1ODNiZjljZjRiMWMyYjAxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjMyMCw3ICsyMzIwLDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1
bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBl
cj4gZmlsZVdyYXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkg
ewotICAgICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2Fj
aGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgIGlmIChhdXRvKiBzaGFyZWRCdWZm
ZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgICAgIHJldHVybiBh
ZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMjBkMWNlNTYzNGVhM2M3MWRhNTIyZWMwYTI0MzE2M2Qy
NWY0OGQ5My4uNjdmZjk4Y2JlMWEwMDUxYTljYWE3MTAwM2JmNmM0YmExMzlhMDdlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVB
dHRhY2htZW50RGF0YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVm
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJl
ZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRG
b3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRF
bGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC0y
NTcsNyArMjU3LDcgQEAgc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3UKICAgICAgICAgZnJhbWUuZWRp
dG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVVbmlx
dWVJZGVudGlmaWVyKCksIGNvbnRlbnRUeXBlLCBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFtZSwg
YnVmZmVyLmNvcHlSZWYoKSk7CiAgICAgICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJ
bmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICAgICAgYXV0
byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgICAg
ICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNy
Y0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRv
Y3VtZW50LCBidWZmZXItPmV4dHJhY3REYXRhKCksIGNvbnRlbnRUeXBlKSkpOworICAgICAgICAg
ICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpz
cmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZk
b2N1bWVudCwgYnVmZmVyLT5jb3B5RGF0YSgpLCBjb250ZW50VHlwZSkpKTsKICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICAg
ICAgICAgIGlmIChwcmVmZXJyZWRTaXplLndpZHRoKQogICAgICAgICAgICAgICAgIGltYWdlLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBB
dG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTI2OSw3ICsyNjks
NyBAQCBzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VB
dHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdQogICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVu
ZENoaWxkKFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpj
cmVhdGUoJmRvY3VtZW50LCBidWZmZXItPmV4dHJhY3REYXRhKCksIGNvbnRlbnRUeXBlKSwgZGVm
YXVsdEltYWdlQXR0YWNobWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURp
c3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6
OmNyZWF0ZSgmZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+Y29weURh
dGEoKSwgY29udGVudFR5cGUpLCBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFtZSksIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIGZy
YWdtZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICB9CiAgICAgcmV0
dXJuIGZyYWdtZW50OwpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZl
IHsKICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dN
SU1FVHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4
dHJhY3RNYXJrdXBBbmRBcmNoaXZlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBz
dGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkK
IHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1
ZmZlcik7CiAgICAgaWYgKCFhcmNoaXZlKQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBTdHJp
bmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0
aW5hdGlvbkRvY3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1
bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywg
bWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkV2ViQXJjaGl2ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAo
ZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2Vi
QXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRl
cjo6cmVhZFdlYkFyY2hpdmUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTIsNyArNjEy
LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcm
IHN0cmluZykKICAgICByZXR1cm4gIW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRSVEZEKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlm
IChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYyNiw3ICs2MjYsNyBAQCBib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRG
RChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSw3ICs2MzksNyBAQCBib29sIFdlYkNv
bnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5
cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjUzLDcgKzY1Myw3IEBA
IGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRG
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFk
UlRGKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1l
bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc2LDcgKzY3Niw3IEBAIGJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRJbWFnZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1
bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwpAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgY29uc3QgU3RyCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cygpKQogICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNo
bWVudChmcmFtZSwgZG9jdW1lbnQsIFdURk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJl
c2VudGF0aW9uU2l6ZSkpOwogICAgIGVsc2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJh
Z21lbnRGb3JJbWFnZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9j
dW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgdHlw
ZSkpLCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSk7CisgICAgICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0
VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPmNvcHlEYXRhKCks
IHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogCiAgICAgcmV0dXJuIGZyYWdt
ZW50OwogfQpAQCAtNzQ5LDcgKzc0OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIHJldHVybiBhdHRhY2htZW50OwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVtZW50
PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBh
dHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1l
LCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCiB7CiAgICAgUmVmIGRvY3VtZW50ID0g
KmZyYW1lLmRvY3VtZW50KCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRF
bGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC04
MzYsNyArODM2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6
ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IDk3
NTJmYTM3YjdhNmMwMjcxNDFiZDBhOGY5YWU5N2VhNWIxOGJiODQuLjc4NGI0OGIyYTIzMTA3ZWNk
NmI1OWE2NmU3OTMxYmFlZTllMTFjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgYm9vbCBtaW1l
VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlKG1pbWVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKG1pbWVUeXBl
KTsKIH0KIAotdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdl
V2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xv
c2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChidWZmZXItPmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgSFRNTEF0dGFj
aG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYg
Y29udGVudFR5CiAgICAgaWYgKCFtaW1lVHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZUF0dGFj
aG1lbnQobWltZVR5cGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBlbmNsb3NpbmdJbWFnZS0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERP
TVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQo
KSwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkpKTsKKyAgICBlbmNsb3NpbmdJbWFn
ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIs
IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZSgmZG9jdW1l
bnQoKSwgYnVmZmVyLT5jb3B5RGF0YSgpLCBtaW1lVHlwZSkpKTsKIH0KIAogdm9pZCBIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVt
Ym5haWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAppbmRl
eCBiMGYxOWU4Y2QyNGY0ODI5YWJkMGUxNDYwZWIxMWY4OWE1ZTNiZjkyLi4zMjY0NGRkM2ZlYmIx
ZGQ5ZjM2MWMzNTBmOTA4MTg2ZmQ3MDE1MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmlu
YWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50VHlw
ZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5h
aWwpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1h
Z2U+JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNDk2YzZhOWNiMjNhNmEyYTk1MzkzZjhhNDZl
ODYyMDk0NzcwYWFiOS4uN2YzYjQzMDBmMzdhYzYzN2Q0NTM1ODI5NjcyN2UxNDczYzU1MjY3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yOTUyLDcgKzI5
NTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBs
YXliYWNrSWZOZWNlc3NhcnkoKQogICAgIGF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3Nh
cnkoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZElu
aXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBT
dHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEpCiB7CiAgICAgbWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJl
ZChpbml0RGF0YVR5cGUsIGluaXREYXRhLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMDA0OTE4NjEzZWI5MzExMDYy
M2IwM2JhZmY5NzYxZDYzMGM0OGNkOS4uM2IyNzBkOTk3MDJhNWU4YzZjZTQ0OWMxZTZmNDEyNGEx
OWNkZmQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTcxOSw3
ICs3MTksNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ0RNQ2xpZW50CiAgICAgdm9pZCBjZG1DbGll
bnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgZmluYWw7Ci0gICAgdm9pZCBj
ZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNkbUNs
aWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwg
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDRkMTBmYjA1NzcyNDYy
ODU3Njg4NTAzZDY2NDc2OTdmMGNiMDRiYTEuLmY0MzhmYTRiMTE3YjliNmUxYmQ5MTc3NjBkYjg5
MjkzMjBiYTNiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZygpCiAg
ICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUo
KTsKIAotICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9h
ZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICBpZiAoYXV0byBidWZmZXIgPSBsb2FkZXIo
KS0+bWFpblJlc291cmNlRGF0YSgpKQogICAgICAgICBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1h
Z2UoKS0+dXBkYXRlQnVmZmVyKCpidWZmZXIpOwogCiAgICAgaW1hZ2VVcGRhdGVkKCk7CkBAIC0x
NTEsMTIgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsK
ICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQoKSAmJiBtX2ltYWdlRWxlbWVudCkgewogICAg
ICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSAqbV9pbWFnZUVsZW1lbnQtPmNhY2hlZElt
YWdlKCk7Ci0gICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gbG9h
ZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKLQotICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbXVs
dGlwYXJ0IGltYWdlLCBtYWtlIGEgY29weSBvZiB0aGUgY3VycmVudCBwYXJ0LCBzaW5jZSB0aGUg
cmVzb3VyY2UgZGF0YQotICAgICAgICAvLyB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBuZXh0
IHBhcnQuCi0gICAgICAgIGlmIChkYXRhICYmIGxvYWRlcigpLT5pc0xvYWRpbmdNdWx0aXBhcnRD
b250ZW50KCkpCi0gICAgICAgICAgICBkYXRhID0gZGF0YS0+Y29weSgpOworICAgICAgICBhdXRv
IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogCiAgICAgICAgIGNhY2hlZElt
YWdlLmZpbmlzaExvYWRpbmcoZGF0YS5nZXQoKSwgeyB9KTsKICAgICAgICAgY2FjaGVkSW1hZ2Uu
ZmluaXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcAppbmRleCAzMjhlYmU3ZTY0MTE5NWU1YTQ2ODUwMjc1NTkxMGY3OGM0OGI1OGQ4
Li40MGJmZWQ3YTdjOWZkMTMxMjYzOWY5NTAzNDliZmE3NTVmZmRiMzNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTI2Nyw3
ICsyNjcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRDYWNoZWRSZXNvdXJjZShj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJlc291cmNlRGF0YS0+c2V0
Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNo
YXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUp
CiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1
ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggYzhjZWQxMmE2NDA3
ZmRjZDU3NGVjYzJhNzgxOWVkZTY2MzgwM2RhYy4uODYyNzRhMzU2Y2ZmNTdhMGJkNTBkZDQ1MjQ2
ZjM2Y2EwMDM2OTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKQEAgLTg4LDggKzg4LDggQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8
VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5j
b3B5UmVmKCk7IH0KICAgICAgICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKTsgfQogCi0g
ICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KLSAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpOyB9CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KKyAgICAgICAgdm9p
ZCBzZXRCdWZmZXIoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CiAKICAgICAgICAgY29uc3Qgc3RkOjpv
cHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVy
biBtX2NlcnRpZmljYXRlSW5mbzsgfQogICAgICAgICB2b2lkIHNldENlcnRpZmljYXRlSW5mbyhj
b25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbykgeyBt
X2NlcnRpZmljYXRlSW5mbyA9IGNlcnRpZmljYXRlSW5mbzsgfQpAQCAtMTIwLDcgKzEyMCw3IEBA
IHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9kYXRhQnVmZmVyOwotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNh
dGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxw
dHIgfTsKICAgICAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlIHsg
SW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlIH07CkBAIC0xNDQsNyArMTQ0LDcgQEAg
cHVibGljOgogICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWF5
YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lk
IGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJj
ZSopOwotICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOworICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25z
dCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0
KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1v
dmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGE0ZmZk
MTM2MWNkZGU1YWI3ZDk3M2NkMDBkMTlhOTEwYWU5ZWQyOWYuLjUwMmZiODIzYmJiOThkMTFmODBj
NjA4YmVmODRmN2Q3ZjczYWQ1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMCwxMyArMTAwLDEzIEBA
IHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHVuc2lnbmVk
IHNpemUsIGNvbnN0IFN0cmluZyYgdGV4CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWlu
UmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJp
bmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsK
KyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gIGJ1ZmZlciA9IGZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gSW5zcGVjdG9yUGFn
ZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5j
b2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVy
Q29udGVudChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0
cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQog
ewogICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVu
Y29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDNk
NWU1NjZkYmUwYzVlYzExZDllOGRmNjdmY2YwYTcwOTg4YTJmOGYuLjVhYzk2MTkyZjQ2NDVjOTUz
ZmU2OTlmNDhkNzQ1ZTdiNmE2ZDhiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UsCiAgICAgfTsKIAotICAgIHN0YXRpYyBib29sIHNo
YXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcq
IHJlc3VsdCk7CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0aWMg
VmVjdG9yPENhY2hlZFJlc291cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUqKTsK
ICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJy
b3JTdHJpbmcmLCBGcmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNl
NjRFbmNvZGVkKTsKICAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNlKENh
Y2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApp
bmRleCBlYzUwZGU5MGRkZWQwNzQ2MDRkZDE4N2FlOWRlNjExMjZhNmFkMTI0Li43NWZjNGM2MmRm
MWFkN2VmZGU1YTUyMzNjZDZlNGQ3YzkzMTM0NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBEb2N1bWVudExvYWRlcjo6fkRv
Y3VtZW50TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRh
KCkgY29uc3QKIHsKICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+Y29weSgpOwpAQCAtMTY3MSw3ICsx
NjcxLDcgQEAgQXJjaGl2ZVJlc291cmNlKiBEb2N1bWVudExvYWRlcjo6YXJjaGl2ZVJlc291cmNl
Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBE
b2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBhdXRvIGRh
dGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvJiByZXNwb25zZSA9IHRoaXMtPnJlc3Bv
bnNlKCk7CkBAIC0yMjg5LDcgKzIyODksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydElj
b25Mb2FkaW5nKCkKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5nZXRMb2FkRGVjaXNp
b25Gb3JJY29ucyhXVEZNb3ZlKGljb25EZWNpc2lvbnMpKTsKIH0KIAotdm9pZCBEb2N1bWVudExv
YWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBs
b2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGljb24gPSBtX2ljb25zUGVuZGluZ0xv
YWREZWNpc2lvbi50YWtlKGxvYWRJZGVudGlmaWVyKTsKIApAQCAtMjMxMCw3ICsyMzEwLDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lz
aW9uLCB1aW50NjRfdCBsb2FkSWRlbnQKICAgICByYXdJY29uTG9hZGVyLT5zdGFydExvYWRpbmco
KTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9h
ZGVyJiBsb2FkZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3ZvaWQgRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhlIERvY3VtZW50
TG9hZGVyIGhhcyBkZXRhY2hlZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMgc2hvdWxk
IGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGMyYmVhNmY2YTY5YjgzNjQ3MmMw
YWZmN2EwZDcwNzAzOTZiYTZjMmIuLjBhNzMwNTJlZGNhZWIxMWY4ZDcwYzhmNTJmYzc1MjQ3ZjQw
NjBiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0xODEsNyAr
MTgxLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZyYW1l
TG9hZGVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3VicmVzb3VyY2VMb2FkZXIqIG1h
aW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJj
ZURhdGEoKSBjb25zdDsKICAgICAKICAgICBEb2N1bWVudFdyaXRlciYgd3JpdGVyKCkgY29uc3Qg
eyByZXR1cm4gbV93cml0ZXI7IH0KIApAQCAtNDA4LDggKzQwOCw4IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
KT4mJik7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7Cisg
ICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMo
KSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29uczsgfQogCkBAIC02MzgsNyArNjM4LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9Owog
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNvbnNQZW5kaW5nTG9hZERlY2lz
aW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4+IG1faWNvbkxvYWRlcnM7Cisg
ICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKICAg
ICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0ljb25zOwogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA4MzU5
ZGY3ODIwYzc2N2E1OWNiNDUxOTE1ZWQ1ZmExNGUxYWZiOTM2Li5mZDdkMTFjZTZiNjA2OTcyNzQ4
MjE4ZTlkOGIyYzRmZThjNGQxMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJp
Z2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmlu
YWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsIHsg
fQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRy
PGNvbnN0IFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlk
YXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAg
dm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jl
c3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDFhZGMzYzNjZGI5YmFmZjljNDMzNjIxMzZkZTg3YzYwNTcyZmZmYmQuLmExYmYwYTAx
NzgxNGFiNTg4ZGQzN2QyOTM0OGZkNGM0M2MwODBmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBkaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
YnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAocmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5k
ZXggZTU1MWQwZGMyMTk4MWI2ODljNDRhYzZkNjRlYTE2ODI4NGVkOTYyNy4uYzU5MzJkOWU1Njk4
NmZkMmQxMWI0ZWE3YmIwM2NlZTlhM2FmYTRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkZWxpdmVy
UmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZURhdGEuaAppbmRleCBhOGE0OWI0N2Y5MjczNDI3NGJhNGNlYWJjMTcwN2ZlZmE3YjY2NDBkLi5m
OWU2MDlmYWY1YjQ0MzM2Yjg3MDljNjYzYjYxYjcwYjU3MzA0MjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFN1YnN0aXR1dGVEYXRhKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVSTCYgZmFpbGluZ1VS
TCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25IaXN0b3J5VmlzaWJp
bGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQorICAgICAgICBTdWJzdGl0dXRlRGF0
YShSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBV
UkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9u
SGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKICAgICAgICAg
ICAgIDogbV9jb250ZW50KFdURk1vdmUoY29udGVudCkpCiAgICAgICAgICAgICAsIG1fZmFpbGlu
Z1VSTChmYWlsaW5nVVJMKQogICAgICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAt
NjEsNyArNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAg
ICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9jb250ZW50OworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9jb250ZW50OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgICAgICBSZXNvdXJjZVJl
c3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3No
b3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6Okhp
ZGRlbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4
IDNkMTkyODYyZjI3NzI5YjJmMzhkYjU0YmQ4MzY3OTk1MjVjMDE5ZDMuLjk2NDcyMjAyYjgzZjZh
MWRmOWE2OTg4NTI0ODJjNDQ0NzRhNTE2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDE0ICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9
CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19yZWZlcmVuY2VfY2FzdDxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYg
eyAqbV9kYXRhLmdldCgpIH0pOyB9CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIHsgbV9kYXRhLmFwcGVuZChidWZmZXIpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsg
bV9kYXRhLmVtcHR5KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwg
bV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgotICAgIFN1YnN0aXR1dGVSZXNvdXJjZShV
UkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEpCiAgICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICAgICAsIG1fcmVz
cG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IDI1NmU4OWIyMTFiMzhiMmQyMWRjZDY2NTc4MjY5
ZTY2MDczNjczMjcuLmZkMDEyNTJhNWFiNDEyNmZkNTEzYmViZDEwNWY3NmI3MDBmNzVkODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKK1JlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAg
ICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIGlmICghYnVmZmVy
KQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgYwogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgV1RGTW92
ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHBhdGgp
KTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkK
K0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHJlc3BvbnNlKSwg
V1RGTW92ZShkYXRhKSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuaAppbmRleCBjMjg4ZTcwMzZjNjc2MmFkNDg3NmJhODgxNDY5YTc1ZDIy
MzdlMWJhLi44MWMwZmE4OTE5NTVmODgxYjQyNTVjMjMyYjJkYWIyMTRhMmRkNzIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRmFsbGJhY2sg
PSAxIDw8IDQKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQg
dHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJlZjxB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBT
dHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKIAog
ICAgIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAppbmRleCA2YjllN2UyOTVmZDZmYjIwZmYwZDc0ZmRjZjIzZmM2NjAwYTYwMDNmLi4x
NzdjNDM0N2UzYTkxMTgyMjNlMjUxOTI5NGYzN2UwNzMzY2U1YjZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKQEAgLTEyNzIsNyArMTI3Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvCiAgICAg
cmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImF1ZGlvLyIp
IHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInZpZGVvLyIpOwog
fQogICAgIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVG
aWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQor
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQogewog
ICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXggNDEwMmExODA4
YjQ1NTU3YjY0NWUzNmU3ZTY4MWZjNGM2ZDIwN2NlMi4uZTEyYTA0MmU0YTM0ZDMxMmNjNTI3ZWJk
NGFlMDdmMWRmYTZlODM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
Kik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKik7CiAgICAgdm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29s
IHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBmaWxlRXh0ZW5zaW9uKTsKKyAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVj
dG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsK
IAogICAgIHZvaWQgbG9hZE1hbmlmZXN0SG9zdEhhc2hlcygpOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCmluZGV4IDRlZjljZDY2
YmQwODhiNzRjMDQ2YzA2OTBkMWU5ZDNlNWUzMzYwZmQuLmVlYjAxNjZkM2VhNThkYmNmMDQwMzNh
MGU4Yzc0MmFlM2VlZjNlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXR5cGVkZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9u
KGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKK3R5cGVkZWYgUmVmUHRyPEFy
Y2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJhd0RhdGFDcmVhdGlv
bkZ1bmN0aW9uKiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBBcmNoaXZlTUlNRVR5cGVzTWFw
OwogCiAvLyBUaGUgY3JlYXRlIGZ1bmN0aW9ucyBpbiB0aGUgYXJjaGl2ZSBjbGFzc2VzIHJldHVy
biBSZWZQdHIgdG8gY29uY3JldGUgc3ViY2xhc3NlcwogLy8gb2YgQXJjaGl2ZS4gVGhpcyBhZGFw
dG9yIG1ha2VzIHRoZSBmdW5jdGlvbnMgaGF2ZSBhIHVuaWZvcm0gcmV0dXJuIHR5cGUuCi10ZW1w
bGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2
ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNo
aXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0
ZSh1cmwsIGJ1ZmZlcik7CiB9CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6
OmlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFt
aW1lVHlwZS5pc0VtcHR5KCkgJiYgYXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBl
KTsKIH0KIAotUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJM
JiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCitSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKaW5kZXggNTU2NDUx
NWM5ZTBkOWQwMzNiNzkwYzc0NzI4NWEyNTg1M2FiZTAyZC4uMmFkZTc4MmMyNTVkNGM3NGZiZWQ0
NWVmYjk1MGVjMGE3NTUzODU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBBcmNoaXZlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgaXNBcmNoaXZlTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFJlZlB0cjxB
cmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVh
dGUoY29uc3QgVVJMJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJLbm93bkFyY2hpdmVN
SU1FVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
Y3BwCmluZGV4IDA3MzgzOTRhODI4NzE0YWEwYjkwZWU3NTA3OWQ0ODZmNWIwZTg2OTQuLmJkN2Y4
NTUxYzhmYmFhMTljMDE2OGYyZmM3ZGYxMWZkYzkwYWZmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcApAQCAtMzMsNyArMzMsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hp
dmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1
dGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdU
Rk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5j
b2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291
cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29ucwogewogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNy
ZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NCw3ICs1NCw3IEBAIFJl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJjaGl2ZVJl
c291cmNlKGRhdGEucmVsZWFzZU5vbk51bGwoKSwgdXJsLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5n
LCBmcmFtZU5hbWUsIHJlc3BvbnNlKSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1Jl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUo
ZGF0YSksIHVybCwgcmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFt
ZSgpLCBTdHJpbmcoKSwgcmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAppbmRleCAwNTQ4ZWY3MjFlZmQyN2MwMGNlOTNkMTIy
NzBlY2VjNDZjMDJhZjk0Li44ZTQ4YzllODI5YjQ0ZjEzNzEwZWI2N2JhNjg1ODg3NGMxOGI3NDNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
aApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmVS
ZXNvdXJjZSA6IHB1YmxpYyBTdWJzdGl0dXRlUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAorICAgIHN0YXRpYyBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsCiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVzb3VyY2VS
ZXNwb25zZSgpKTsKIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRJ
Z25vcmVXaGVuVW5hcmNoaXZpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElnbm9yZVdoZW5V
bmFyY2hpdmluZzsgfQogCiBwcml2YXRlOgotICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgQXJjaGl2ZVJlc291cmNlKFJlZjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFN0
cmluZyBtX3RleHRFbmNvZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGVkNzZmYjhhOTE4NjliMTZjMzg0
NzE0ZTA1MjM3YjIzM2UzOWRlYi4uY2ZlYWQyZGI1N2Q2YWY3OTVjYzVkZWZjYzdlNWQ3MTc4NWE5
ZTVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTI0OCwxMiArMjQ4LDEyIEBAIFJlZjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWlu
UmVzb3VyCiAgICAgcmV0dXJuIGFyY2hpdmU7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFVSTCgp
LCBkYXRhKTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRl
eCA1YTA3YjEwYjRiZTZmODYyMDExYTc4MmE3ZGVkMjM2NzU5MjQzNjI2Li4zYzQyMzJlMTZlMjYw
ZTU1ZmZlYWM2ZmU3MzU1ZWY5ZTU5Yjc1ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0
cnVjdCBTaW1wbGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMg
QXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lX
ZWJBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3Qg
VVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoUmVm
PEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyY2UsIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291
cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+JiYgc3Vi
ZnJhbWVBcmNoaXZlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIEZ1bmN0aW9uPGJvb2woRnJhbWUmKT4mJiBmcmFtZUZp
bHRlciA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBjcmVhdGUoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGQwMTM5Zjg3YTA2Zjk2OTc4Yjc0
NzdlOWY0OTk5YzM0ZWE5Zjg2MjUuLmQ3NTBlM2MyODI2YTA2ZTgyM2NkNjEzMzhkNTI5NzQ2MWVk
NDA4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxBcmNoaXZlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFJlZjxNSFRNTEFyY2hpdmU+IE1I
VE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNSFRNTEFyY2hp
dmUpOwogfQogCi1SZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25z
dCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFy
Y2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdl
IG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgp
LnRvU3RyaW5nKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuaAppbmRleCAyZGZlODdlODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIw
NWM4ZGIxLi5lZjg3YmJmZDQ4NWIxNGExYjAxNzJkNjFiNDM2NjE0YTcyN2Y4YmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaApA
QCAtNDMsNyArNDMsNyBAQCBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgTUhU
TUxBcmNoaXZlIGZpbmFsIDogcHVibGljIEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8TUhUTUxBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2
ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0
aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZTUxODZlZmIwYjRmYTcw
Y2I2MDkzMWY0ODRlNTAwY2MxMGUwMGJjYi4uZDQ4ZmNkN2JjM2IyZjFiYjQ3MTM4ZjllYTJhMDk4
MDQ1ZjlmYWFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGlu
ZXNVbnRpbEJvdW5kYXJ5Rm91bmQoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIs
IGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCitNSFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICA6IG1fbGluZVJlYWRlcihkYXRh
LCAiXHJcbiIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxQYXJzZXIuaAppbmRleCAwZDYwNDM0M2YzZDdhZDE3OGNjMjIwMDNjOTc5YzIyZTUw
YTNiOTllLi4xMWI4YmRlYzllMWM0YjFkYzUxNzU1YjVhZDlhNmY1YzgwMGYyOGZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhU
TUxQYXJzZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IE1IVE1MUGFyc2VyKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqKTsKKyAgICBleHBsaWNpdCBNSFRNTFBhcnNlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik7CiAKICAgICBSZWZQdHI8TUhUTUxBcmNoaXZlPiBwYXJzZUFyY2hpdmUo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDlk
YmQ1Mzc5MzVlMGRkMGI3ZGJkNGUxMjM5M2FkMGU4MTQwZGQ5MWYuLjQ3Yzk4YzhmMjc1Zjg3MWUw
ZWZkZDNhZmRlOWUwMDUzYzk3ZDQyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgU3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1
bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElk
ZW50aWZpZXIoKS50b1N0cmluZygpOwogfQogCi1ib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3Vz
dG9tRm9udERhdGEoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYm
IGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTExMiw3ICsxMTIsNyBAQCBib29s
IENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAg
ICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
LCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ5
dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewog
ICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCmluZGV4IDEzNDY2Y2M5OWQwZDE5Y2JmM2Q4ZWYzZGZiZDk2ZjM0ZDBmODU0
MTEuLmUwNDA2NzgyMjI5MTc2MTVjMmYwZTVkOTQ0OGQxMWY3M2NmNGFkNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xv
YWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0
b21Gb250RGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0
Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9u
dERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9u
Q29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBG
b250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQm
KTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9y
bURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Ym9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0g
ICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJv
b2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJp
dmF0ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5k
ZXggODVmMTg4YmY3NWZmNWQyNmIyNDFjZGQ5MGU2ODcwOTkyM2I1Y2ZmZS4uMTk2Yjg1NmY1MzZi
Mjk5ZmU0YTlhMzM5MGY4ZDZkYjg1OTA0MzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICAvLyBXaGlsZSBtX2RhdGEgaXMgaW1tdXRh
YmxlLCB3ZSBuZWVkIHRvIGRyb3AgdGhlIGNvbnN0LCB0aGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBi
dWcgMjM2NzM2LgotICAgIG1fZGF0YSA9IGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cio+KCZkYXRhKTsKKyAgICBtX2RhdGEgPSAmZGF0YTsKIAogICAgIC8vIE5vdGlmeSBjbGllbnRz
IG9ubHkgb2YgdGhlIG5ld2x5IGFwcGVuZGVkIGNvbnRlbnQgc2luY2UgdGhlIGxhc3QgcnVuLgog
ICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CkBAIC0xMTMsNyArMTEz
LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQ
b2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsK
ICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZm
ZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcio+KGRhdGEpOworICAgICAgICBtX2RhdGEgPSBkYXRhOwogICAgICAgICBpZiAoZGF0YSkg
ewogICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVt
ZW50YWxEYXRhQ2h1bmsoKmRhdGEpKSB7CiAgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUo
ZGF0YS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKaW5kZXggZmQxZmM0NjA0ZjkyMWE2MWFjOWNmZjY4ZjM1OGY5MTUyZjBjYWM4MC4uODAz
YTE0ZjU5MTM4MzA1YjY0ZDIzYmQ2ZmUxOTdlYjdiZDYwYTNhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAg
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0zMzYsNyArMzM2LDcg
QEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4g
bV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2lu
YWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X2RhdGE7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
IAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAv
LyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaAppbmRleCBhMTIwNDRjNDE2ZDBkNDg2YWZlYzk5ZTFkMGUxMGVmYWYxZjlkYzgw
Li41ODE5YjdkMzY4MDYwYWVjYmI1MzBjMjNiNTE0ZjIwY2UwMWQ2ZTNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0
IFNpbXBsZVJhbmdlJikgPSAwOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0
IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVu
dFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNv
bnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogZmlsZVBhdGgg
Ki8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLykgeyB9CkBA
IC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVz
Rm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1
bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDAyMDAx
YWIzNDMwMThhNzMyNTU5OThmYzQ3NGNlYmZjNDlmOGM4NDIuLjYxOWIxMTAyNWRiZWU3YTVjZjE3
YzlmNTQ2MGFjY2QzN2EzNWJiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
Y3BwCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jl
c291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBpZiAo
IWltYWdlIHx8IGltYWdlLT5pbWFnZSgpID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gaW1h
Z2VSZW5kZXJlciA/IGltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlUmVuZGVyZXIpLT5kYXRh
KCkgOiAwOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiAgZGF0YSA9
IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+
ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBpbWFnZS0+aW1hZ2Uo
KS0+ZGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5
aW5nTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIu
aAppbmRleCBmYzY2YzM2NWEyZjI5YTRjNzhlNjA2MTllNDdhNzFjNzI1OGQ4ZmUzLi4wN2Q1ODMw
NjA1YmJjMmI5OWRhMzZkY2M2OWRmMDJkNGY4ZTMwOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBtX25vd1BsYXlpbmdJbmZvOwogICAgIHN0
cnVjdCBBcnR3b3JrQ2FjaGUgewogICAgICAgICBTdHJpbmcgc3JjOwotICAgICAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgICAgICBSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIH07CiAgICAgc3RkOjpvcHRp
b25hbDxBcnR3b3JrQ2FjaGU+IG1fbm93UGxheWluZ0luZm9BcnR3b3JrOwogICAgIGJvb2wgbV9z
ZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwCmluZGV4IGJhMTc4NzI0NzFhZTI4NjRmNzcwODJjNDdkNjdmMjYzZWQ1
ZGY5NTguLjAwYzVjMzY2MDhlMDFiOTZiZjVjZDA3YmViZGNmYzRjZjQzNmQ3OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFN0cmluZyBQ
YXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQog
ICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpCitSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKQogewogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKSkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5yZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUoKSwgY29udGV4dCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBmMmViOTcyMDE5YTQwMmViODhjZWZmOGY0N2Mz
ZTg2M2ZlMzQwMmM2Li40ZmMwNmRlNDliODQzNGE4ZTQyNjM3YjJiMjQyYjk0OGIzNmQzMzY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC04MywxNCArODMsMTQgQEAgc3Ry
dWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2Fy
ZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29sIGNhblNt
YXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hp
dmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8Y29uc3Qg
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxjb25zdCBT
aGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7
CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGll
bnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7Cisg
ICAgVmVjdG9yPFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTIwLDE3
ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQg
flBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7
CisgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsK
ICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4p
CiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7Cisg
ICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyBy
ZXNvdXJjZU1JTUVUeXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRy
PGNvbnN0IFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3Vn
Z2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMTU5LDE2ICsxNTksMTYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRGaWxl
UGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRI
VE1MKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCByZWFkSW1hZ2UoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXpl
ID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0
IFN0cmluZyYpID0gMDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVh
bCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJv
b2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRG
KFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNl
bnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZp
cnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAg
dmlydHVhbCBib29sIHJlYWRSVEZEKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgcmVhZFJURihjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHJlYWREYXRhQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUgPSB7IH0pID0gMDsKICNlbmRpZgogfTsKIApAQCAtMTgzLDcgKzE4Myw3IEBAIHN0
cnVjdCBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdmlydHVhbCB+UGFzdGVib2FyZEZpbGVS
ZWFkZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBT
dHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiAvKiB0eXBlICovKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Y29uc3QgU2hhcmVk
QnVmZmVyPiYmKSA9IDA7CiB9OwogCiBjbGFzcyBQYXN0ZWJvYXJkIHsKQEAgLTMwOSw3ICszMDks
NyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3Rl
Ym9hcmRJdGVtSW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJp
bmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUpOworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcm
IHR5cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7CiAK
ICAgICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dC5nZXQoKTsgfQpAQCAtMzQxLDcgKzM0MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmlu
Zz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJl
YWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAg
IFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5
Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCBiNGQ5YzU3NGRjYWU3ZTFkMDYzNjY2ODdmZDM1YWI4MjQ0
YTc4MGU1Li4zMzU5YzZkYjhhYTJjMDAyMjZjNmY2M2Q0MWRkODM0MjllYzM0MzRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzUsNyArMzUs
NiBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNz
IFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAtNTIsNyArNTEsNyBAQCBw
dWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Y29uc3QgU2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRo
bmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3Ry
aW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKQEAgLTYzLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlw
ZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2
aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJM
KGNvbnN0IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3Io
Y29uc3QgQ29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcyLDcg
KzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9y
TG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Y29uc3QgU2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFk
VVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmly
dHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJv
YXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VD
b3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC04Niw3ICs4NSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9y
PFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3
cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRh
dGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggOGUyYzhmYjky
ZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uZTBlMzIxOWQ5OGE4NDU2NWU4NTI2NTRm
Yjg2NWRmMTcwMzZkNDhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oCkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5T
bWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2Vi
QXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZv
cm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0Owor
ICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0
OworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0Owor
ICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAg
ICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0
YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAg
ICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBW
ZWN0b3I8UmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmlu
ZGV4IDhmZTkyNGRmZTU2YmMzYzk5NjY2ZWJmMDRmNzM1NDAxNTU1YWEzM2IuLmQ5Y2YxN2FiNzg1
OTNlZThhODVhNTY2MTllMWEyMGU4NjdmYzcyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVh
ZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNs
dWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC04Niw3ICs4Niw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJv
YXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3QgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRV
UkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwpAQCAtOTQsNyArOTQsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2Um
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29u
c3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Y29uc3Qg
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0
cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50
SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5o
CmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmM3YmFjZDY1
NzRlNzQ5NjgxNWQ4ODM5MWY2MDRmNGQ2Y2E4MzQyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTM4LDcgKzM4LDcgQEAgc3Ry
dWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5n
PiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRp
dGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+IGFkZGl0
aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDA5ZjEwNTJhMGYzMWVlOTcwNjEx
MDEzYjM5MzVmYjUzMDk1NTA5Ni4uZDI0ZjYwNmRlNjNkZGI0NmVkZjM3YjY1MmU0N2UyNjg4Mzk3
YmE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01NTks
MTQgKzU1OSwxMCBAQCBTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWlsZGVyKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcgogICAgIGluaXRpYWxpemUoYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCi1TaGFyZWRCdWZmZXJCdWlsZGVyJiBTaGFyZWRC
dWZmZXJCdWlsZGVyOjpvcGVyYXRvcj0oUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorU2hhcmVkQnVmZmVyQnVpbGRlciYgU2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0
b3I9KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBpZiAoIWJ1
ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9CiAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIGluaXRpYWxpemUoYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGFwcGVuZChidWZmZXIpOwogICAgIHJldHVybiAqdGhp
czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBjYWVmM2Yy
NjIwMDMzZGQ4Y2ZmMTU2MjNmMjNjNmI2YzliNTM0YjM3Li43ZjU3ZWI4NzFjMjJiYjk1ZGU4YjJm
YTQyZGViMzRmMjBmMTdhYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aApAQCAtMzA4LDYgKzMwOCw3IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKFNo
YXJlZEJ1ZmZlckJ1aWxkZXImJikgPSBkZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSB7IGluaXRpYWxpemUoV1RGTW92ZShidWZmZXIpKTsgfQorICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSB7IGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOyB9CiAgICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAg
ICAgOiBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPnsg
V1RGTW92ZShidWZmZXIpIH0pIHsgfQogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgaW5pdGlhbGl6ZShXVEZNb3ZlKGJ1ZmZlcikp
OyB9CkBAIC0zMTcsNyArMzE4LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fYnVmZmVyKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7
IH0KIAogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShTaGFyZWRCdWZmZXJCdWls
ZGVyJiYpID0gZGVmYXVsdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJCdWlsZGVy
JiBvcGVyYXRvcj0oUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KICAgICB2
b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKQEAgLTMzNSw3ICszMzYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CiAgICAgdm9pZCBlbXB0eSgp
IHsgbV9idWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQogCi0gICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyOyB9CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4
IDlkMDU1Y2UyN2Q4OGMzZDYyZTViZDFjZDQ2YWQ5MWY1Y2M0MzFmNDguLjhmYmEyMTQwNmNhMDU5
YWJhNGI4YzBjYzY0ZDRlNjI5ZGViMjc4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKE1IVE1MKQogCi1TaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9pdGVy
YXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXIt
PmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JF
bmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKQEAgLTQ0
LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwKIHsKIH0KIAotU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQo
YnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAg
ICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJh
dG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCmluZGV4IDFjNjQwOGQ0Yzcz
NmExYzRhNDVjZWU3YjNmNjk2NTdiYzlhMjYxNWEuLjhhOWQ0ZTVkYjU1NTAxYjdjMTM1MGIxNjQ0
MGIxODBhNjZlNDUyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuaApAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHsKIHB1Ymxp
YzoKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwg
Y29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOwotICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOworICAg
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7
CiAKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBWZWN0b3I8Y2hhcj4mKTsKICAgICB2b2lk
IHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCAxZDY1YmM0MDNhZDg1MjQzYzY3MjVlNzA0NDhk
NmNkYWRjY2NjZTFiLi5jZDZhMGFmMWFhODcyZjJhMDhhN2YxZTQ3M2MxNTdkMDg4Yzk1YzE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IE5vd1BsYXlpbmdJbmZv
QXJ0d29yayB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayYgb3RoZXIpIGNvbnN0CiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDA2
OTYxZmJhNDhhZDkxYjQyM2JjYTk4NWI2YzJlNWM2MjEwMWZjMmYuLmYyNTk3ODkwZTA5NWQxZmFm
YmEyZmJhOGI2NDk4NDJkYmE4NmVmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSw5ICsyMTEsOSBAQCBWZWN0b3I8U3Ry
aW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lm
IFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5H
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY29udmVydFRJRkZUb1BORyhjb25zdCBTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7
Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0
V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2Nd
IGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5T
RGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdG
aWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHBuZ0RhdGEpOwogfQpAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3Rl
Ym9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBl
czsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Y29uc3QgU2hh
cmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNr
KGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCAyZGU0MTkzNGRhMTk4NzlkNzVj
MGRmOGE4OWU2NGU1OTljMjlhZTAzLi45ZTM4ZWVjYTM5NTVhMGI1MTFmNmJlYTVhNWIxNjE1NTI1
OThjMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUluc3RhbmNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2VDbGll
bnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1
YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIC8vIEphdmFTY3Jp
cHQncyBoYW5kbGUgdG8gYSBDRE1JbnN0YW5jZSwgbXVzdCBiZSB1c2VkIGZyb20gdGhlCkBAIC05
OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxs
b3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0Nh
bGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUlu
c3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgK
aW5kZXggZDI1OTIyNWJhOWUwMmE2NGQwY2VjZDYxNTFmZGY5M2Y0ZjI0NjZhOC4uOGQyNThmYzU0
Yjk3NjkyNjM1YjMyNzdkNWYzODc4MzI5OGE0ZDg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgK
QEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lv
bkNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0YXR1
czsKLSAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVj
dG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4s
IEtleVN0YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0
dXNWZWN0b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdl
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9u
SWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB1c2luZyBQbGF0Zm9ybURpc3BsYXlJ
RCA9IHVpbnQzMl90OwogICAgIHZpcnR1YWwgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkg
PSAwOwpAQCAtNzgsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3VjY2VlZGVkLAogICAg
IH07CiAKLSAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVk
ZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNpbmcgTGljZW5zZUNhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2
aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0
ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKKyAgICB1
c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBzdGQ6Om9wdGlvbmFsPEtl
eVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hh
bmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBTdWNjZXNz
VmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUs
IFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUg
OiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5nIFJlbW92ZVNlc3Npb25E
YXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBz
dGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVl
KT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9y
ZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRl
eCA1MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBmLi5mNGNkOWU1Mjk5NjE2
NjUxNmY4NDYyM2JlZDFmNDA2ZDQ5MTFjZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03NCw3ICs3NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBz
YW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5
LmNwcAppbmRleCAyZGQ3ODAyODRhMjZjOTQ2NDhkOWYxMWYzMGYyMmNkOTI3OTExYjNiLi44OTA1
MDQ3ZGMxNTJlZDBhOTAwYWFkNjQyZjBmNDFhZjI1NmM5YjViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yMjYsNyAr
MjI2LDcgQEAgY29uc3QgUmVmUHRyPEtleUhhbmRsZT4mIEtleVN0b3JlOjprZXlIYW5kbGUoY29u
c3QgS2V5SURUeXBlJiBrZXlJRCkgY29uc3QKIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yIEtleVN0b3JlOjpjb252ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fa2V5cy5tYXAoW10oYXV0byYga2V5KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6
OnBhaXIgeyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9OworICAgICAg
ICByZXR1cm4gc3RkOjpwYWlyIHsgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KGtl
eS0+aWRBc1NoYXJlZEJ1ZmZlcigpKSwga2V5LT5zdGF0dXMoKSB9OwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggMzFhOWZkZmEwMmQ2ZDAwY2EyNjE4MjUy
ZGVkOTM1MzEzZGM1OGFhOS4uOTk3ZDM5MzQ3ZGVjZGRhOTRhZTg4Y2I2ZDc5N2VhMDY2YmM1ZjM0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtNDA3LDcgKzQwNyw3IEBAIGJv
b2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewog
ICAgIC8vIFZhbGlkYXRlIHRoZSByZXNwb25zZSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QuCiAg
ICAgaWYgKCFDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChyZXNwb25zZSkpCkBAIC00MzMs
NyArNDMzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5Ojppbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXIKICAgICBjYWxsYmFjayhzdWNjZWVk
ZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUuCiAgICAg
Y2FsbGJhY2soRmFpbGVkKTsKQEAgLTQ1NSw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VT
ZXNzaW9uPiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9CiAKLXZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBzdGF0aWMg
dWludDMyX3Qgc19zZXNzaW9uSWRWYWx1ZSA9IDA7CiAgICAgKytzX3Nlc3Npb25JZFZhbHVlOwpA
QCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpCiAgICAgICAgIH0pOwog
fQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICNpZiBMT0df
RElTQUJMRUQKICAgICAvLyBXZSBvbmx5IHVzZSB0aGUgc2VzaW9uIElEIGZvciBkZWJ1ZyBsb2dn
aW5nLiBUaGUgdmVyYm9zZSBwcmVwcm9jZXNzb3IgY2hlY2tzIGFyZSBiZWNhdXNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCA5ZTI3ZmU5MTJjNGRhMDY3ZmIyNmNhZmJjN2Y2YTY1MWRh
NDc1MjhiLi40NjhjZTQ3ZGRiYTI2YmFiZWMyZDA0YWUyODdjYjQxM2YyMzUyMWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIGJvb2wg
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBv
cnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5h
bDsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIH07CiAKQEAg
LTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50
YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxl
bWVudGF0aW9uVHlwZTo6Q2xlYXJLZXk7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAg
ICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAt
MTA5LDggKzEwOSw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDog
cHVibGljIENETUluc3RhbmNlU2Vzc2lvblByb3h5IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5j
ZVNlc3Npb25DbGVhcktleShDRE1JbnN0YW5jZUNsZWFyS2V5JiBwYXJlbnQpCiAgICAgICAgIDog
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkocGFyZW50KSB7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lv
bihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBD
bG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oCmluZGV4IGRjNWU1YTA3Y2IxYWEyNjJiMGRiNDg4NWZiZGNmMzY5ZTI1Njcy
ZWMuLjlhYTU2NjI4OTkwMjM0ZjAwZWVjOGUwNTg5MjI4YjYyNTkzNzA5ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAg
LTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7
CiAKICAgICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
Zm9udEZhY2VEYXRhOworICAgICAgICBSZWY8Y29uc3QgU2hhcmVkQnVmZmVyPiBmb250RmFjZURh
dGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikK
ICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggMzEwN2Q4YTIwYzJjMTA3
YmM0MDE4YjQ1YmZjYTE1ZjkzYmM3MjcxMy4uYmMzYTBkNDhjMzNiYjU2MTFiMjI5NTBkZTY0MDA3
NmMzM2FjYjExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgSW1hZ2U6OmlzUG9zdFNjcmlwdFJlc291cmNlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQogfQogCiAKLUVuY29kZWREYXRh
U3RhdHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERh
dGEoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9lbmNvZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggODM4MjM3MmQ1
MmFiYjI4YzE3OGY3NDE3MWY5ZjAyZWI1YmUxZGQxMi4uMzlkY2MyZjhhZjI1MzkwOGEzZDllYTYx
YTFhNjBhODNkZDIxZDRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAg
IHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIElt
YWdlT3JpZW50YXRpb246OkZyb21JbWFnZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRW5jb2Rl
ZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFT
dGF0dXMgc2V0RGF0YShSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBk
YXRhQ2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRh
U3RhdHVzOjpVbmtub3duOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1dGkoKSBjb25zdCB7IHJl
dHVybiBTdHJpbmcoKTsgfSAvLyBudWxsIHN0cmluZyBpZiB1bmtub3duCkBAIC0xMzMsNyArMTMz
LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29s
IGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7CiAKLSAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CiAgICAgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdl
RGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSgpOwpAQCAtMjA4LDcgKzIwNyw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIENvbG9y
IHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KIAogcHJp
dmF0ZToKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VE
YXRhOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJ
bWFnZURhdGE7CiAgICAgSW1hZ2VPYnNlcnZlciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDQwYTBl
NmNmMDM5NzJmYjFjYzcxYjJkMjgzMGY5NzFlMDBlNTk3MDguLjA1M2VmNjJjNThkZjNjZDI5MDBk
OWUxMDRlYTk3YjAzOWQzMGNmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIEltYWdlRGVj
b2Rlcjo6Y2xlYXJGYWN0b3JpZXMoKQogfQogI2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+
IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURl
Y29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsK
ICAgICBVTlVTRURfUEFSQU0obWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDVhYWUzY2M5MTFjNjA1Zjc3MmIwNTdk
MDFlZGJiYjgxMTI1ZmIyNTMuLjY5MmM3MjQxMGQwMTNlYTIzZDQzOWIzYzc1NmFjZWMwYTU0NWQ0
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rl
ci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBJbWFnZURlY29kZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVy
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpID0g
ZGVmYXVsdDsKIAogICAgIGVudW0gY2xhc3MgTWVkaWFUeXBlIHsKQEAgLTkxLDcgKzkxLDcgQEAg
cHVibGljOgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB1c2luZyBTdXBwb3J0c01lZGlh
VHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKE1lZGlhVHlwZSk+OwogICAgIHVzaW5nIENhbkRlY29k
ZVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT47Ci0gICAgdXNpbmcgQ3Jl
YXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pPjsKKyAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0g
RnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik+OwogCiAgICAgc3RydWN0IEltYWdlRGVjb2RlckZhY3RvcnkgewogICAgICAgICBTdXBwb3J0
c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNNZWRpYVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjJjOTY0MGQ0NmQzYTkzNTYx
MTRmMzNhYjE0MDUyYzdmZWMyNzc4Yy4uNTQ1N2JkNWFiMzZmYTdkNDFkMDNkNjFiOTVkZDM0NGE0
MzVkYWY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcApAQCAtNjcsNyArNjcsNyBAQCBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkK
ICAgICBBU1NFUlQoJm1fcnVuTG9vcCA9PSAmUnVuTG9vcDo6Y3VycmVudCgpKTsKIH0KIAotYm9v
bCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKQorYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0Rl
Y29kZXJBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05MSw3ICs5MSw3IEBA
IGJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFlbnN1
cmVEZWNvZGVyQXZhaWxhYmxlKGRhdGEpKQogICAgICAgICByZXR1cm47CkBAIC05OSwxMyArOTks
MTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEs
IGFsbERhdGFSZWNlaXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRhKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kZWNvZGVyID0gbnVs
bHB0cjsKICAgICBzZXREYXRhKGRhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCi1FbmNv
ZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZVNvdXJjZTo6ZGF0YUNoYW5nZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2
ZWQpOwogICAgIGNsZWFyTWV0YWRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGY5ODE0MTdmMjRlYmM3ZjJkYmQ1NzNkYWUwZTU5
MjU5ODk0NGU2NmEuLjgyOWUwNmZiODllNTU4N2E4ZjUyNGE2OWUzY2IyODM5MDZhMjAyYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAt
NTYsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
U291cmNlKFdURk1vdmUobmF0aXZlSW1hZ2UpKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAg
ICB2b2lkIHJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKLSAgICBFbmNv
ZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHJlc2V0
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBFbmNvZGVkRGF0
YVN0YXR1cyBkYXRhQ2hhbmdlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpOwogCiAg
ICAgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9
CkBAIC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
ICAgIFQgZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgTWV0
YWRhdGFUeXBlLCBUIChJbWFnZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VGcmFtZTo6
Q2FjaGluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pOwog
Ci0gICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEpOworICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhKTsKICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKHNpemVf
dCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKTsKICAgICB2b2lkIGRlY29kZWRTaXpl
Q2hhbmdlZChsb25nIGxvbmcgZGVjb2RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGIzN2ViZmM1NjIwNDhm
ZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmMyZjc2ZTgwNjVmMzc0YjQwOTE1N2EwNmEzNGRi
ZTUwM2NmNWE1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQz
Ml90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZh
bHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7
CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNDks
NyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBz
aXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1z
dGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNl
dCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQxNihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAgICBB
U1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZm
ZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3Rh
dGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZh
bHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7
IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wg
aXNXT0ZGKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQg
PSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRl
OgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29m
ZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChjb25zdCBT
aGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRf
QVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29u
dmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQp
CiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29u
dmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQor
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxjb25zdCBTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi5i
YTk2MjAxNDllNzQ0Nzg2NWJhOTMyYTc1MzkzMjQ1M2VjMzQ4OGY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMzLDE2ICsz
MywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8vIFJl
dHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoU2hh
cmVkQnVmZmVyJik7Citib29sIGlzV09GRihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogLy8gUmV0
dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52YWxpZCBvciBjb3VsZCBub3Qg
YmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxlLAogLy8gaWYgY29udmVyc2lvbiByYW4g
b3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUgc2Zu
dCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVy
JiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChj
b25zdCBTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElm
IHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3Jt
IGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8g
c2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYg
Y29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4K
LWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYp
OworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxjb25zdCBTaGFyZWRC
dWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggOGIwNGY5YmU5NmMzNmUwYTI2MjE4MGEyNWVh
Mzc0NTk2MmIzZDdkNS4uNzk4YmU4NGIxOWViYTljN2MyZGJhODNjNGQwMTIyOWI5MTFlZmQyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC04Niw3ICs4
Niw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tk
TmFtZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitzdGF0aWMgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNv
ZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlCiAgICAgaWYgKCFzaW5mQXJyYXkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBzaW5mczsKKyAgICBWZWN0b3I8
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBzaW5mczsKICAgICBzaW5mcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHNpbmZBcnJheS0+bGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRv
JiB2YWx1ZSA6ICpzaW5mQXJyYXkpIHsKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgU2NoZW1l
QW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBhdXRvIHJlc3VsdHMgPSBleHRyYWN0U2NoZW1l
QW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1
bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjoKICAgICBy
ZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBDb21tb24gU0lORiBCb3ggRm9ybWF0CiAg
ICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0xOTEsMTcgKzE5MSwxNyBAQCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6
ZVNpbmYoY29uc3QgRgogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1SZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6
ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5p
dGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gYnVm
ZmVyLmNvcHkoKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tk
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0YSBp
cyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtl
eUlEczsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJ
RHM7CiAgICAga2V5SURzLmFwcGVuZChidWZmZXIuY29weSgpKTsKICAgICByZXR1cm4ga2V5SURz
OwogfQpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4g
cmVzcG9uc2UuY29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
aAppbmRleCAzMTdiYjhkNTdlODZjMDYyMTRlMGI0MDU5ZGRmNGY4ODA3Yzc0YzZiLi42ZDhjMjg0
ZGYwMzFkMWQ3OTQxNjdjYTE1YTE1NWJlMDc3YTQ5MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNzIsMTYgKzcyLDE2IEBAIHB1YmxpYzoKICAgICBib29s
IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAg
IHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBza2ROYW1lKCk7Ci0g
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAg
IHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8Rm91ckNDPiYgdmFsaWRGYWlyUGxh
eVN0cmVhbWluZ1NjaGVtZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggZDU5ZmU0
ODA0ZDU4ZGZlNzhjYjViZWE3MDc0YjJlNjg3MDVjMWQ0OS4uZWQ1YzdjZTkyMGZlOTdmNGQ5N2E3
ZmFlMzM4ZWIzNWQ1NGM0MTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04Niw3ICs4
Niw3IEBAIHB1YmxpYzoKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVh
bWluZzsgfQogCiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxs
b3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNz
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBS
ZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CiAgICAgdm9p
ZCBzZXRDbGllbnQoV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4mJikgZmluYWw7CkBAIC05Niwx
MCArOTYsMTAgQEAgcHVibGljOgogCiAgICAgTlNVUkwgKnN0b3JhZ2VVUkwoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2VVUkwuZ2V0KCk7IH0KICAgICBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93
ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQ7IH0KLSAgICBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNh
dGUuZ2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigp
OwogCi0gICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5
UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZD
b250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRp
b25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpOwogCiAgICAgLy8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVn
YXRlQ2xpZW50CiAgICAgdm9pZCBkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0
KikgZmluYWw7CkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0T2Jz
Y3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmlu
YWw7CiAgICAgdm9pZCBleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50
S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlz
ID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgS2V5cyA9
IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvcktleUlEcyhjb25z
dCBLZXlzJikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDKiBzZXNzaW9uRm9yR3JvdXAoQVZDb250ZW50S2V5UmVwb3J0R3JvdXAqKSBjb25zdDsK
ICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25G
b3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBjb25zdDsKQEAgLTEzOCw3ICsxMzgsNyBA
QCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IG1fY2xpZW50OwogICAg
IFJldGFpblB0cjxBVkNvbnRlbnRLZXlTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgUmV0YWluUHRy
PFdlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOwotICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOworICAgIFJl
ZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwog
ICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0
cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lvbnM7CkBAIC0xNjAsOCArMTYw
LDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2
b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihj
b25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9u
RGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCAwZWNm
ZGNjMTVkNTg5M2JjZWI2ZDM2Zjk2MWUyNmRhYjc3MTQ3Njc0Li5mNjkyNGU2NmM1NDRiNWI4MmE3
OGZkNzQzMGIzYmQ3ZWFjMzlkNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjY2
LDcgKzI2Niw3IEBAIEFWQ29udGVudEtleVNlc3Npb24qIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpjb250ZW50S2V5U2Vzc2lvbigpCiAgICAgcmV0dXJuIG1fc2Vzc2lvbi5n
ZXQoKTsKIH0KIAotUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFs
aXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKK1JldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0
Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRvIHJl
cXVlc3RJdGVyID0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuYmVnaW4oKTsgcmVxdWVzdEl0ZXIg
IT0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuZW5kKCk7ICsrcmVxdWVzdEl0ZXIpIHsKICAgICAg
ICAgYXV0byYgcmVxdWVzdCA9ICpyZXF1ZXN0SXRlcjsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lk
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgQ0RNSwogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZv
aWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAgbV9zZXJ2
ZXJDZXJ0aWZpY2F0ZSA9IFdURk1vdmUoc2VydmVyQ2VydGlmaWNhdGUpOwpAQCAtNTg0LDggKzU4
NCw4IEBAIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6CiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBhdXRvIHNlc3Npb25LZXlzID0gc2Vzc2lvbkludGVyZmFjZS0+a2V5SURzKCk7Ci0g
ICAgICAgIGlmIChhbnlPZihzZXNzaW9uS2V5cywgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5k
SWYoWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYga2V5SUQpIHsKKyAgICAg
ICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7CisgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZp
bmRJZihbJl0oY29uc3QgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBrZXlJRCkg
ewogICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRC5nZXQoKSA9PSBzZXNzaW9uS2V5LmdldCgp
OwogICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgIH0pKQpAQCAtNzAzLDcgKzcw
Myw3IEBAIEtleXMgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpr
ZXlJRHMoKQogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChs
aWNlbnNlVHlwZSkpIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIsICIgZmFsc2UsIGxpY2Vuc2VUeXBlIFwiIiwgbGljZW5zZVR5cGUsICJcIiBub3Qgc3VwcG9y
dGVkIik7CkBAIC03ODQsNyArNzg0LDcgQEAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVy
biBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1ZSgpID09IHZhbHVlOwogfQogCi12b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIGlmICghbV9leHBpcmVkU2Vzc2lvbnMuaXNFbXB0eSgpICYmIGlzRXF1YWwocmVzcG9uc2VE
YXRhLCAiYWNrbm93bGVkZ2VkIl9zKSkgewogICAgICAgICBhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1f
aW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCk7CkBAIC04ODYsNyArODg2LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKCprZXlJRFZlY3RvcikpOwogICAgICAgICAgICAgYXV0byBmb3VuZElu
ZGV4ID0gbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpbmRJZihbJl0gKGF1dG8m
IHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVl
c3QocmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kSWYo
WyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4ga2V5SURzLmZpbmRJZihbJl0oY29uc3QgUmVmPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkg
PT0ga2V5SUQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAg
ICAgICB9KTsKQEAgLTExODIsNyArMTE4Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAg
ICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUo
KSkKICAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKIAotICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6
OnBhaXI8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+
OworICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVj
dCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIHVzaW5nIENhbGxiYWNrRnVuY3Rpb24gPSBG
dW5jdGlvbjx2b2lkKFJlcXVlc3RzRGF0YSYmKT47CiAgICAgICAgIHN0YXRpYyBSZWZQdHI8Q2Fs
bGJhY2tBZ2dyZWdhdG9yPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpAQCAtMTIzOCw3ICsxMjM4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICBA
dHJ5IHsKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVl
KCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVz
dChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOworICAgICAgICAgICAgUmVmUHRy
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmly
c3QoKSk7CiAgICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0
cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNv
bnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBs
ZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRh
ICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRv
ciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0
cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IDZiZGEyZmUwYjhhYTNkMjg1YTE2ZjExMDEyNTNhMTY4NWNhZWFjZjguLmU5NGM4
NmQxYTM3YmE2NGYyNjY5NzI3Njg3NWY4MmQwNzQ5Yzc2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMjg3OCw3ICsyODc4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmMKICAgICBp
ZiAoIW1fa2V5SUQgfHwgIW1fY2RtSW5zdGFuY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1
dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0
b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwog
ICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggZjY4MmFhMmM3YzRhMzViOTc4
NzYzNDg1NTVlYjQ0ZjIyMDQzYWMzYS4uMjEyYmY5YTEwYjM5MDcxZDQzNDMzYmNmY2E1MWU0M2U3
NDdmMzljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgK
QEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Qnl0ZVJhbmdlT2Zmc2V0KHNp
emVfdCk7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtF
WVNFU1NJT04pCi0gICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj47CisgICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj47CiAgICAgdm9pZCBzZXRLZXlJRHMoS2V5SURzJiYga2V5SURzKSB7IG1f
a2V5SURzID0gV1RGTW92ZShrZXlJRHMpOyB9CiAgICAgY29uc3QgS2V5SURzJiBrZXlJRHMoKSBj
b25zdCB7IHJldHVybiBtX2tleUlEczsgfQogICAgIEtleUlEcyYga2V5SURzKCkgeyByZXR1cm4g
bV9rZXlJRHM7IH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX21p
cnJvcmVkIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUo
QVZDT05URU5US0VZU0VTU0lPTikKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBtX2tleUlEczsKKyAgICBLZXlJRHMgbV9rZXlJRHM7CiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmlu
ZGV4IDM3NmE2ZmMxNDM4MTFlZWI4NTY3YmNiMDhlN2RkZDNiMWZmMTNjZjcuLjVjYzBhYWIzNDBm
MjBkOTY2YjJmOThlMzMyOTQ4ZThlMzc0M2E1NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMjMyLDcgKzIzMiw3IEBA
IHByaXZhdGU6CiAgICAgV2Vha1B0cjxDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDPiBtX3Nl
c3Npb24geyBudWxscHRyIH07CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAm
JiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCi0gICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJl
Zjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgc3RydWN0IFRyYWNrSW5pdERh
dGEgewogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YTsKICAgICAgICAgS2V5
SURzIGtleUlEczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZjNkNDI0NWJlMTQwMDhmMDVjNmI5OWQ5NjlmZjRjZmQw
ZWM3NzQzZi4uMDU1YjczYjM2MWNhZDdkNTA2YTM3MzViOGE4MmExNTdmZGU1MzgwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0KQEAgLTI5Miw3ICsyOTIsNyBAQCBzdGF0aWMgYm9vbCBzYW1wbGVCdWZmZXJSZW5kZXJlcnNT
dXBwb3J0S2V5U2Vzc2lvbigpCiAgICAgcmV0dXJuIHN1cHBvcnRzOwogfQogCi1zdGF0aWMgVmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weUtleUlEcyhjb25zdCBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHMpCitzdGF0aWMgVmVjdG9yPFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weUtleUlEcyhjb25zdCBWZWN0b3I8UmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHMpCiB7CiAgICAgcmV0dXJuIGtl
eUlEcy5tYXAoW10gKGF1dG8mIGtleUlEKSB7CiAgICAgICAgIHJldHVybiBrZXlJRC5jb3B5UmVm
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggOTQxOWJjZWEzOGRiZjhkNjQ5
MmY2ODAxZDlhMjE1NjIzNjZhMmM2ZS4uYjZkY2Q5ZmE1NWY2MTVjODdjNDc4N2JlZGJiYzE2OGEz
M2ZiYmRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNTUsNyArNTUsNyBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19mb250X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07
CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDI0NzgxNTA2MDJhOGQwZDZiMDZkN2EzYTU4MzVm
MGI4MzA3MjE0ZTQuLjRmNWFmZmQ0Yjg0ZjcyMDg2YmE1Y2VkODlkODg1NzQwMTY0NDIxYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIHNoYXJlZEJ1ZmZlclJlbGVhc2Uo
dm9pZCogaW5mbykKIH0KICNlbmRpZgogCi1JbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0co
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYg
KGRhdGEuc2l6ZSgpID49IDMyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggMTc1MTA4ODcyMWY1NjIxZmNkYmZkMDBm
MjZkYjI3N2M4MTE3ZGY4MS4uMzY4YjE2MjgzZTRiZmY0NjI4OWExN2VjNDA4MzJlZjUwMTVkMDAx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oCkBAIC0zMiw5ICszMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEltYWdlRGVjb2RlckNHIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKKyAgICBJbWFnZURlY29kZXJDRyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAgc3Rh
dGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckNH
PiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNv
ZGVyQ0coZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKaW5kZXggMmI0NDNmYmJlZDJjMWZkZTQ4YmNkZTljYmU0MDk1MzQ5N2ZkZTkxMC4uMDZlYjAz
NTRiMTY5ZDdhNjA0YjM2N2E3NzZhNjY3N2FiMzQ0MTRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAg
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAg
aWYgKCFsaWJyYXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDI5YzlhYjRlZWRmMmQ2
MzliNDFlODJmYTZhYzJkZjM3OWY0YTM0NzMuLjJmZDg0ZDIxOWI5OGNkYTE1OWIwN2VmYzUxNjll
ZTAyYTgyNzg3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBA
IC04MSwxMiArODEsMTIgQEAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiB0b1NhbXBsZShJ
dGVyYXRvciBpdGVyKQogICAgIHJldHVybiAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKilp
dGVyLT5zZWNvbmQuZ2V0KCk7CiB9CiAKLVJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJ
bWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURl
Y29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2Rl
ckdTdHJlYW1lcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBtX21pbWVUeXBlKG1pbWVUeXBlKQogewog
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuaAppbmRleCAyNjFkYWZmMjYxNThlMTdhMmE0MjIxZmZiMjQzNTQ2NzcxNmRi
ZDNiLi4xOWQ4Yzk5ZTMwNjcyZDQ4ODZlYTg5MGMyNDczMzI5MjNkOTY1M2M5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdl
RGVjb2RlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2Rl
ckdTdHJlYW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3Ry
ZWFtZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLSAgICBJbWFn
ZURlY29kZXJHU3RyZWFtZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAg
c3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNN
ZWRpYVR5cGUoTWVkaWFUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPT0gTWVkaWFUeXBlOjpWaWRl
bzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggY2Q4ZGRkOTJmOWU3OTEzOGY2NzVm
MTk2ZmJlYTE4ZTgxMDcyZjFhNy4uMzY0ZmI2YmMzNzQ2ZDJhNjg0Y2U5OWNkMmYzZGNlOWRmYzA5
MzAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9v
bCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAg
ICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VUaHVuZGVyOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhCiAgICAgY2FsbGJhY2soU3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBhdXRvIGRhdGEgPSBjZXJ0aWZpY2F0ZS0+ZXh0cmFjdERhdGEoKTsKICAg
ICBPcGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmlj
YXRlKG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oZGF0YS5kYXRh
KCkpLCBkYXRhLnNpemUoKSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgUmVmUHRyPENETUluc3RhbmNl
U2Vzc2lvbj4gQ0RNSW5zdGFuY2VUaHVuZGVyOjpjcmVhdGVTZXNzaW9uKCkKIGNsYXNzIFBhcnNl
ZFJlc3BvbnNlTWVzc2FnZSB7CiAKIHB1YmxpYzoKLSAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2Uo
Y29uc3QgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgUGFyc2Vk
UmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6ZSgp
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQ5LDggKzM0OSw4IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wgaGFz
UGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9hZCk7IH0K
LSAgICBjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYg
eyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9Ci0gICAgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQp
OyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBjb25zdCBSZWY8Y29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2FkKTsg
cmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXls
b2FkLnZhbHVlKCk7IH0KICAgICBib29sIGhhc1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUu
aGFzX3ZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGUoKSBj
b25zdCB7IEFTU0VSVChtX3R5cGUpOyByZXR1cm4gbV90eXBlLnZhbHVlKCk7IH0KICAgICBXZWJD
b3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGVPcihXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VU
eXBlIGFsdGVybmF0ZSkgY29uc3QgeyByZXR1cm4gbV90eXBlID8gbV90eXBlLnZhbHVlKCkgOiBh
bHRlcm5hdGU7IH0KQEAgLTM1OSwxMSArMzU5LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBib29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0gICAgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOwogICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4gbV90eXBlOwogfTsKIAotdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFy
c2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgaWYgKCFwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UpIHsKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6
OmtleXNVcGRhdGVEb25lQ2FsbGJhY2soKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3Mu
Y2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxi
YWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1IoIkNETSBlcnJvciIp
OwogICAgIGF1dG8gZGF0YSA9IG1lc3NhZ2UtPmV4dHJhY3REYXRhKCk7CkBAIC00ODQsNyArNDg0
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG0KICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJh
Y2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZm
ZXIsCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAogICAg
IExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CkBAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKICAgICAgICAg
cGF5bG9hZERhdGEuZGF0YSgpLCBwYXlsb2FkRGF0YS5zaXplKCksIG51bGxwdHIsIDAsICZtX3Ro
dW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9u
KSB7CiAgICAgICAgIEdTVF9FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7Ci0gICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEu
cGF5bG9hZCgpOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
aW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAgICAgICAgY2FsbGJhY2soaW5pdERh
dGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogCiAg
ICAgYXV0byBnZW5lcmF0ZUNoYWxsZW5nZSA9IFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRh
LnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAgICAgIGlmIChtX3Nlc3Npb25J
RC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEdTVF9FUlJPUigiY291bGQgbm90IGNyZWF0ZSBz
ZXNzaW9uIGlkIik7CiAgICAgICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVs
bCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6c2Vzc2lvbkZhaWx1cmUoKQogICAgIG1fc2Vzc2lvbkNoYW5n
ZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9z
ZXNzaW9uSUQpOwogCkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQK
IHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklE
KTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hh
bmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGJvb2wgc3VjY2VzcywgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdl
KQpAQCAtNTk4LDcgKzU5OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAg
ICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25z
ZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2Up
OwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNz
YWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBX
VEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAg
ICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgp
KTsKICNpZm5kZWYgR1NUX0RJU0FCTEVfR1NUX0RFQlVHCiAgICAgICAgICAgICAgICAgICAgIGF1
dG8gZGF0YSA9IG1lc3NhZ2UtPmNvcHlEYXRhKCk7CkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IHNlc3Npb25JRCwgTGljZW4KIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgbV9zZXNz
aW9uSUQgPT0gc2Vzc2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBw
ZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CisgICAgbV9z
ZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtNjU3
LDcgKzY1Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lv
bkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgUGFy
c2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAg
IGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3Bv
bnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoInNl
c3Npb24gJXMgcmVtb3ZlZCwgbWVzc2FnZSBsZW5ndGggJXp1IiwgbV9zZXNzaW9uSUQudXRmOCgp
LmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
bV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0dXM6OlJlbGVhc2VkKSwgV1RGTW92ZSht
ZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0NETVRodW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCmluZGV4IDEwMjBlMTUzMjI3MWI1MzUxZTEwNmRkZThm
MjFlYTU0MDVhOWMyMzcuLmM5NjdmMjBjMWNhNjM3MjU5ZDY0OWZkOGI5YTY4NTFiYjFkMjkyN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNVGh1bmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0
cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKIHBy
aXZhdGU6CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAg
ICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6VGh1bmRlcjsgfQogICAgIHZvaWQgaW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNl
c3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEyNiw4ICsxMjYsOCBAQCBjbGFzcyBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyIGZpbmFsIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lv
blByb3h5IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyKENETUluc3Rh
bmNlVGh1bmRlciYpOwogCi0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VU
eXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTE0MSwxNCAr
MTQxLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNSW5zdGFuY2VUaHVuZGVyKiBjZG1J
bnN0YW5jZVRodW5kZXIoKSBjb25zdDsKIAotICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQg
KENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB1c2luZyBOb3RpZmljYXRpb24gPSB2b2lkIChDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjoqKShSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJik7CiAgICAgdXNpbmcgQ2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKCk+OwotICAgIHVzaW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CisgICAg
dXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRy
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPjsKIAotICAgIHZvaWQgY2hhbGxlbmdl
R2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAg
IHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQga2V5VXBkYXRlZENhbGxiYWNrKEtleUlEVHlwZSYm
KTsKICAgICB2b2lkIGtleXNVcGRhdGVEb25lQ2FsbGJhY2soKTsKLSAgICB2b2lkIGVycm9yQ2Fs
bGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZXJyb3JD
YWxsYmFjayhSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXMgc3RhdHVzKGNvbnN0IEtleUlEVHlwZSYpIGNvbnN0
OwogICAgIHZvaWQgc2Vzc2lvbkZhaWx1cmUoKTsKIApAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZh
dGU6CiAgICAgSW5pdERhdGEgbV9pbml0RGF0YTsKICAgICBPcGVuQ0RNU2Vzc2lvbkNhbGxiYWNr
cyBtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzIHsgfTsKICAgICBCb3hQdHI8T3BlbkNETVNlc3Np
b24+IG1fc2Vzc2lvbjsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNz
YWdlOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7
CiAgICAgYm9vbCBtX25lZWRzSW5kaXZpZHVhbGl6YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3Rv
cjxDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjaz4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAg
VmVjdG9yPFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYmQxMTNiYjZjMjczMWZhMTlhZGRl
ZmQzM2E5OWQ0NmJiNGExZjRhMi4uYTgxYmY0MTdmN2JlMjc2ZjA3ZjhmNzRiN2U5YmE2ZTY4OGNl
Y2UxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBG
b250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQu
Z2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9u
dERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZm
ZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAppbmRleCA2OTI4YTYzZTk3MWM3YzM1ZTg4NDRlZWY3M2JmYTQ0YThkOGMwMzA5Li5iYTU2ZTk3
NDRlMWI2M2MzZGRjMWI0YmIyODU2ZjBhYjAzOWM2ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9udENy
ZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRU
YWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1
cmVTZXR0aW5nczsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURh
dGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCAwOWU5YTYxMWRmNWE3ZDJlYjM0YTk1NGQ5
MWI5ZDAwYmRjMTc0MDkwLi44MTUwNzgxMGQ1MTVmNzQ5ZmVhMTEwNjc2NTE3MjQ1OTFkYzUzMjM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgc3Rh
dGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBj
cmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5k
QWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
aW5kZXggMDhmYzlmMTllYWVhOTQ4M2VhNThlYzFhZWVkZDQ1NzI1NmNlMjdiYy4uOTM2ZmJkMzYw
M2NiZmI0YjAyMTBkMzAxMDhiN2NmZTE4NDRlNWU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVh
dGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmlu
ZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQuLjU0OTNmZTA4ZDE4
MjI1MzNiZmU5YTk0ZGM4ODZkNGM5MmY3ZDhlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5p
cXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNv
bGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUo
KTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIs
IGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4MWNlNjU0MjVl
ZjUzY2MwMTI0ZWUxMDg1ZDQ2NWFiMTAwNzAyYmQ0Li45MjgzYmI5NDAyZmE4ZjI0ZWRlNjhkODE2
YTBjMjI2Nzk0ZmZjOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC0xMzUs
NyArMTM1LDcgQEAgYm9vbCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogCiB9
CiAKLVJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNy
ZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CitSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVh
dGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsZW5ndGhPZkxvbmdlc3RTaWduYXR1
cmUgPSAxNDsgLy8gVG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAiCiAgICAgY2hhciBjb250ZW50c1ts
ZW5ndGhPZkxvbmdlc3RTaWduYXR1cmVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
ZDlmZGE3NzZmZDU4ZDg3Y2NlNTRlZjMwNDQwN2NjYTRkZTA0N2YzNS4uMzAzM2FiMjZmMmJjODI5
YmJhMDA1NzZlZGMzNDhhNGM3MzczMGFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBA
IC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgbnVsbHB0ciBpZiB3ZSBj
YW4ndCBzbmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgKHBvc3Np
Ymx5CiAgICAgLy8gYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91Z2ggZGF0YSB5ZXQpLgotICAgIHN0
YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwor
ICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNyZWF0ZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOwogCiAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4g
bV9wcmVtdWx0aXBseUFscGhhOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KaW5kZXggMzY4NzIyYTM2ZjU4Y2MwZTcyYWY4NzY1NWViYWU2Y2E1ZDRi
OTc4Yy4uYmQ5MmZkZGNjZWYyMzUxOTFlMTAzMWUzOGZjMWE4MTgwZWI1ZGM3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTI0MCwxNCArMjQw
LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKICNpZiAhUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2Ug
TlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgs
IGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAg
YXV0byBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4
LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAg
IGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4g
UmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJl
dHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpS
ZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYg
KFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkg
ewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAg
ICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVy
bmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEYoKmJ1ZmZlcikg
PyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsK
QEAgLTI1NSw3ICsyNTUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
I2VuZGlmIC8vICFQTEFURk9STShNQUNDQVRBTFlTVCkKIAogICAgIGlmIChbc3VwcG9ydGVkSW1h
Z2VUeXBlcygpIGNvbnRhaW5zT2JqZWN0OnR5cGVdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5k
ZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIGF1dG8gYnVm
ZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQg
IT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3Rl
Ym9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFk
ZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5mby5wcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJS
ZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZDY0Yjk2ODM0NzM3ODMyZDJlZWQ2
ODgyMzYwMTIyNzA2NTU4NTNmYy4uN2M5ODVlYjIwZWZlYTIzMmVmMGJjYTNlMDEzYmNjNWZiMmU3
OWEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJk
OjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAgICAgdHlwZXMgPSBtYWtl
VmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAg
ICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBl
OnR5cGVdKQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CkBAIC0z
MzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikK
K2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC03NDYsNyAr
NzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxTdHJpbmdzRm9y
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ3M7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0
cjxjb25zdCBTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAg
ICBpZiAoIWluZGV4KQogICAgICAgICByZXR1cm4gYnVmZmVyRm9yVHlwZSh0eXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggYmE4ZWExZWI0
NDhhOTIxZTMwZDNhZTZhOWM3N2U4ODIzM2FiYzUzYi4uZjM4ZGM2OGJkYWZmNjM0YWEwOTA5YzU1
ZmNkODFlZmI0NGI2NjVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdB
dFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwog
ICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFBy
ZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RhdGlj
IFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBh
c3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgp
CiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1J
bmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggYTdmZTcy
NTU0Mzc2NjVlOGI4YTBjNzQ1M2QzMDQ3NDlkNDU2MmY2Ny4uMDhhNTllYWM2MGI2YzhmODQzN2Nh
NmQyYWIyZWM4NjgyMWZjOGM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAg
ICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3QKK1JlZlB0cjxjb25zdCBTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKSBjb25zdAogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQg
ZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKQEAgLTM0MSw3ICsz
NDEsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFzdGVib2FyZCBkZWNs
YXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVyOm5pbF07
CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQoraW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoY29uc3QgU2hhcmVkQnVmZmVyKiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFjYW5Xcml0
ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00
NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0
ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9Owog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIo
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitS
ZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIo
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7
CiAgICAgaWYgKCFpbmRleCkKICAgICAgICAgcmV0dXJuIGJ1ZmZlckZvclR5cGUodHlwZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggODVm
OTZkODVkMmIzNzJjZmMyMTcxYTgzNDExZDUyODY5MjA3M2NkNC4uM2ViN2YxNTFlZmQ4YTA4MzYy
ZjRiODY1ZjY0ZmQyMzE3MzQ4YWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTY2LDcgKzk2Niw3IEBAIHN0YXRpYyBIR0xPQkFMIGNy
ZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxJbWFnZUZpbGVDb250ZW50KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgSEdMT0JBTCBtZW1PYmogPSBHbG9iYWxBbGxvYyhHUFRS
LCBkYXRhLT5zaXplKCkpOwogICAgIGlmICghbWVtT2JqKSAKQEAgLTk4Niw3ICs5ODYsNyBAQCBz
dGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1l
LCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xv
YmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5
KCkgfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTA2Myw3ICsxMDYzLDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFn
ZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5pc0xvYWRl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpbWFn
ZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIo
KSktPmRhdGEoKTsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpbWFnZUJ1ZmZl
ciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSktPmRh
dGEoKTsKICAgICBpZiAoIWltYWdlQnVmZmVyIHx8ICFpbWFnZUJ1ZmZlci0+c2l6ZSgpKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAK
aW5kZXggNTYwN2Q0OWZjZGU5ZDViNzQxNDg3MmJkYjkxZmFmNjk2NGY1Njg4ZS4uMGU0MjdmMzk0
MTJjYzNmZWI0M2VmYmM5MTVkNTRlMzQ0YWYwODhmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBNb2NrQ0RNRmFjdG9y
eTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgcmV0dXJu
IGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLndlYmtpdC5tb2NrIik7CiB9
CiAKLXZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3Ry
aW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBrZXlzKQordm9p
ZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlk
LCBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGtleXMpCiB7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25zLmFkZChpZCwgV1RGTW92ZShrZXlzKSk7CiAg
ICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE1vY2tD
RE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3Rv
cjxSZWY8RnJhZ21lbgogICAgICAgICB2YWx1ZS5hcHBlbmQoV1RGTW92ZShrZXkpKTsKIH0KIAot
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92
ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQorVmVjdG9yPFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9t
U2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Np
b25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtODMsNyAr
ODMsNyBAQCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9y
eTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKAogICAgIHJldHVybiBXVEZNb3ZlKGl0LT52
YWx1ZSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBN
b2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29u
c3QKK2NvbnN0IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBNb2Nr
Q0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QK
IHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9z
ZXNzaW9ucy5lbmQoKSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVk
UwogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
TW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBy
ZXNwb25zZSkgY29uc3QKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2Nr
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKSBjb25zdAogewogICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMo
KTsKICAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9u
c2Uuc2l6ZSgpKSkKQEAgLTI3MCw5ICsyNzAsMTAgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6Omlu
aXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQK
ICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZTo6
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlm
aWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2U6
OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdW
aWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNDZXJ0aWZp
Y2F0ZSA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpOworICAgIFN0cmluZ1ZpZXcgY2Vy
dGlmaWNhdGVTdHJpbmdWaWV3KGNvbnRpZ3VvdXNDZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZp
Y2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2Vy
dGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBA
IC0yOTgsNyArMjk5LDcgQEAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6TW9ja0NETUluc3RhbmNl
U2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJiBpbnN0YW4KIHsKIH0KIAotdm9pZCBN
b2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1v
Y2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5m
YWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzI0LDcgKzMyNSw3
IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpj
cmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9uSUQsIGZhbHNl
LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBt
X2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IGQ5NmMxNTZlZTRkMjc5MWI4
YjA5OThkYWY5NDBlYzc1Mzc4MDdiYzMuLjMzZTMxMWMyODY1MzViMDkzZjEyYzFkODJkOTZjZDhi
MjdiMWYzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTc3
LDkgKzc3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmluZyYgaWQpIHsgcmV0dXJuIG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpOyB9CiAgICAgdm9pZCBy
ZW1vdmVTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9zZXNzaW9ucy5yZW1vdmUo
aWQpOyB9Ci0gICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQs
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYpOwotICAgIGNvbnN0IFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25z
dCBTdHJpbmcmIGlkKSBjb25zdDsKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAg
dm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIGNvbnN0IFZlY3RvcjxSZWY8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25z
dCBTdHJpbmcmIGlkKSBjb25zdDsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7
CiAKIHByaXZhdGU6CiAgICAgTW9ja0NETUZhY3RvcnkoKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fY2FuQ3JlYXRlSW5zdGFuY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wg
bV9zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9y
dHNTZXNzaW9ucyB7IHRydWUgfTsKLSAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFZl
Y3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOwogfTsK
IAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKQEAgLTEyMiw3ICsxMjIsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBm
aW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKICAgICBib29s
IHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBj
b25zdCBmaW5hbDsKIAogICAgIFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFjdG9yeTsKQEAg
LTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEltcGxlbWVudGF0aW9uVHlw
ZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlv
blR5cGU6Ok1vY2s7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25z
dCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmll
cnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8
Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xNTQsOCArMTU0
LDggQEAgcHVibGljOgogICAgIE1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RN
SW5zdGFuY2U+JiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5z
ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VU
eXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5k
ZXggZDBhZjIxNDI2NWFlOGIxZDY5OTRhOWYyNDBkNjFhNDBlZTVjMWFiZC4uMWFiNzA1ZDFlZTM5
YzU1MzVmMTgxNzkxYjE0NDc0N2JlNTE3ZWVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNzcsMTMgKzc3LDEzIEBAIHZvaWQg
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9i
YWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJl
ZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CiAgICAgICAgIGlmIChtX2RhdGEpCiAgICAgICAgICAg
ICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CiAgICAgICAgIGNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOwogICAgICAgICBpZiAo
Y29udGlndW91c0RhdGEpIHsKICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFn
bWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgIG1fZGF0YSA9IFdURk1v
dmUoY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9kYXRhID0gKmNvbnRpZ3VvdXNEYXRh
OwogICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAg
ICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3Bw
CmluZGV4IDUxYzczOWMzMmM3NGQ3NzZkM2IxZjMwZTU1ZDVhNTRiZWIxMDgyYzYuLjBkM2MzMGYz
OWUxYmFjZGNlNGFkZGQyNmY0NmM2YjI4NWJlZWM2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNl
UHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
KQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9u
RGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmgKaW5kZXggMDJjNWNkMzdhZTU0ODAyZjZkMGM4ZGNjY2IwYmE4MGNmMzM4
OGMzMy4uYzA5Y2ExNTRjMmM5Mzg3OTBjY2IwZDM3NmNlNTJlZDllNjlmM2IzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+
JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYsIFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllcik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZv
aWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1
bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxj
b25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuY3BwCmluZGV4IDdiYTE2NjRkZjE0OGYyZDRmNjU0MzYxNGUzMTQwNDBhYjkyMjc5ZWYuLmQ5
ZWE4NWVlZDQ2ZjM2Njg0MmY0Njg5ZWMzZTRhZTk3MzYxZmU2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5LmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5n
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNl
KHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwg
W2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRp
dmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVk
KSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRh
VHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBX
VEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXph
dGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxl
IHsKICAgICAgICAgY29tcGxldGlvbihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShtZXNz
YWdlKSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENE
TUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0KQEAgLTExNSw3ICsxMTUs
NyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlUwogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGlj
ZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCiB7
Ci0gICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21w
bGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNz
aW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9u
KV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0
ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRT
ZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBl
eHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CiAgICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNE
YXRhKQogICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4cGlyZWRTZXNzaW9uc0RhdGEpKTsKQEAgLTE0OSw3ICsx
NDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVLZXlTdGF0
dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dQogICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OlVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVy
KTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2Uo
Q0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKENETU1l
c3NhZ2VUeXBlIHR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3Nh
Z2UpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuaAppbmRleCBmZTczMDk3MTMxZTBiYjIwYTUwMDFlMTUwMTYwMmQ2NTE4NmIzMDkw
Li5iZjI3M2VhZWRlNjE0YzI3YmEyMDNjYjYyMjlhY2ZmNjMyNDU2YmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0
dXNWZWN0b3ImJikgZmluYWw7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNz
YWdlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkg
ZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVm
PGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7
CiAgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGZpbmFsIHsgcmV0dXJuIG1fZGlzcGxheUlEOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHku
Y3BwCmluZGV4IGY3Y2I2YTYzZWI5MzNhYmQ0ZDQ1M2EyMmFiMjk0ZjEzMDMyMzJiMDYuLmEwNDQ3
Mjg1OGNkMTIzOWVjOGJhYWNkYzJiYTQ4NWZhMThjZGM0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApAQCAtNjgsNyArNjgsNyBA
QCBib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaAogICAgIHJldHVybiBtX3ByaXZhdGUtPnN1cHBvcnRz
SW5pdERhdGEodHlwZSwgZGF0YSk7CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBS
ZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNl
KHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmgKaW5kZXggM2I2NmM3NzU3ODcwNjllOTc2ZWUwNjRmOTZmZjA3YzBmNzEyYTkw
Yi4uZWNkNjg5YTY3MzE3NzA5ZGJkZmQzMDE4NGU0MDRhNmEzNzljOWM1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAgLTU5LDcgKzU5
LDcgQEAgcHVibGljOgogICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQogCiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Up
OworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IGYyMTBiMDlmYmQxZTIw
ZWJmYzIxNmYyMTlhMjc2MzVkODcxODQyNWQuLmVjNjBkZmVkYjMxOWZjMzkyMzRmODFkYjU5Zjkw
NjliZWM0ZGNhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIENhY2hlOjpjb21w
bGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVu
aXF1ZV9wdAogICAgIGhhbmRsZXIoV1RGTW92ZShlbnRyeSksIGluZm8pOwogfQogICAgIAotc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFByaXZhdGVSZWxheWVkIHByaXZhdGVSZWxheWVkLCBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCitzdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJpdmF0ZVJl
bGF5ZWQgcHJpdmF0ZVJlbGF5ZWQsIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRy
eT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcHJpdmF0ZVJlbGF5ZWQsIFdURk1v
dmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhu
ZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKSwgcmVxdWVzdCwgcmVz
cG9uc2UpKTsKIH0KQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjptYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmCiAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9u
c2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVy
cyhuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKSwgcmVxdWVzdCwg
cmVzcG9uc2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJpdmF0ZVJlbGF5ZWQgcHJpdmF0ZVJlbGF5ZWQsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVu
Y3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQcml2
YXRlUmVsYXllZCBwcml2YXRlUmVsYXllZCwgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocmVzcG9uc2VEYXRhKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgK
aW5kZXggOTA0MzQ3ZjA1MjA1MDIzNzE2YzZkNmJkNTEwODYwZWYzNzQxMzM2MC4uYzkzN2E5ZjIz
OGFiMTE3NTcwNzg4MDUzMmZkZDA1MDY4NTllN2RhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC0xNjYsNyArMTY2LDcgQEAg
cHVibGljOgogICAgIH07CiAgICAgdXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1
bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmlldmVJbmZvJik+
OwogICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIFByaXZhdGVSZWxheWVkLCBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBu
dWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBQcml2
YXRlUmVsYXllZCwgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBt
YXhBZ2VDYXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlLCBQcml2YXRlUmVsYXllZCk7CiAKQEAgLTE4
NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXRyaWV2ZURhdGEoY29uc3QgRGF0YUtl
eSYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCk+KTsKICAgICB2b2lkIHN0
b3JlRGF0YShjb25zdCBEYXRhS2V5JiwgIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAg
ICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFByaXZh
dGVSZWxheWVkLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFByaXZhdGVSZWxh
eWVkLCBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogCiAgICAgdm9p
ZCBkdW1wQ29udGVudHNUb0ZpbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggZDRkMTc3OTRmYTU1
YzdhNmMyNTE1OWFiZDBkMTY2NDAxMWUzNzRhZC4uOTlmYWM1NTg3NGM1M2ZiOWFkODg5YWVkOGQ5
MWIwZDg3YWJiZmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVz
cGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKLUVudHJ5OjpFbnRyeShj
b25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFByaXZhdGVSZWxheWVkIHByaXZhdGVSZWxheWVkLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQorRW50cnk6OkVudHJ5KGNvbnN0IEtleSYg
a2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJpdmF0ZVJl
bGF5ZWQgcHJpdmF0ZVJlbGF5ZWQsIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmlu
Zz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCiAgICAgOiBtX2tleShrZXkpCiAgICAgLCBtX3Rp
bWVTdGFtcChXYWxsVGltZTo6bm93KCkpCiAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAt
MTA1LDcgKzEwNSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVj
b3JkKCkgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgaWYgKG1fYnVmZmVyKSB7CiAgICAgICAg
IG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAgIGJvZHkgPSB7
IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0
YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgICAgIGJvZHkgPSB7IGRvd25jYXN0PFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4oKm1fYnVmZmVyLmdldCgpKS5kYXRhKCksIG1fYnVmZmVyLT5zaXpl
KCkgfTsKICAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwg
Ym9keSwgeyB9IH07CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZUJ1
ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3QKICAgICBtX2J1ZmZlciA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LmRhdGEoKSwgbV9z
b3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuc2l6ZSgpKTsKIH0KIAotV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigpIGNvbnN0Citjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
YnVmZmVyKQogICAgICAgICBpbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuaAppbmRleCBhNzI4ZmQ2YWU4ZDY1MTc2OTBhMzI2ODY0YjhhZTIzYTU0MDE0MzMwLi4w
YzMzNTM2MWZhMmU3M2QxN2Q3MjljNjdmMDhjMjRkMDZmZmFiNDY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCkBA
IC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6Ok5ldHdvcmtDYWNoZSB7CiBjbGFzcyBF
bnRyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRW50cnko
Y29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFByaXZhdGVSZWxh
eWVkLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwor
ICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBQ
cml2YXRlUmVsYXllZCwgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1Jl
cXVlc3RIZWFkZXJzKTsKICAgICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJl
cXVlc3QsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1Jl
cXVlc3RIZWFkZXJzKTsKICAgICBleHBsaWNpdCBFbnRyeShjb25zdCBTdG9yYWdlOjpSZWNvcmQm
KTsKICAgICBFbnRyeShjb25zdCBFbnRyeSYpOwpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMoKSBjb25zdCB7IHJldHVybiBtX3ZhcnlpbmdS
ZXF1ZXN0SGVhZGVyczsgfQogCi0gICAgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
YnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogYnVmZmVyKCkgY29uc3Q7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q+JiByZWRpcmVjdFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0
UmVxdWVzdDsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKQEAgLTg4LDcgKzg4
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gbV92
YXJ5aW5nUmVxdWVzdEhlYWRlcnM7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJlcXVlc3Q7Ci0gICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5B
QkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBtdXRhYmxlIFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGUgbV9zaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmgKaW5kZXggMDVlYTQ1Mjc5YjQwNjNiYjU3MjMyZGVmZjZmNWI2Njk0Mjc5
MGMwMS4uNDgyNWQ5OGVjOWNjNTU1NDdhMDFjNTYyMjg5ZmUxMjE1NWNiMjhjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03Myw3ICs3Myw2IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiBtX25ldHdvcmtMb2FkOwotCiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCA3YWFkZjkyZTM2MWRlZmFjNTA4ZWJkNDhk
N2QwNzU4OGI0ZTQ3ZDQ2Li42MDYyMzRkZTA0ZjFhNjE2MjNmMDI0NjIzYTFjMmFjMTlhMDc0ODcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNw
cApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckNvcHk6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogCiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJl
ZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZl
cikpIH07CkBAIC01MSw3ICs1MSwxNCBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJDb3B5
OjpkYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gZG93bmNhc3Q8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5nZXQoKSkt
PmRhdGEoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Y29uc3QgU2hhcmVkQnVmZmVyPihtX2J1ZmZl
ci5nZXQoKSktPmRhdGEoKTsKK30KKworUmVmPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyQ29weTo6c2FmZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAg
ICByZXR1cm4gYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggMzcwYjgzMjhkNzZjOWMzZjc3
MDA0NzM1YWQzNTlhZTZkM2VkNjA5Mi4uYzg3ZDQwYmM0MzlhYjkzNzA4MzFiYjc1ZmM5NmZkNTc4
Mjk3MGM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaApAQCAtNDAsMTYgKzQwLDE4IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewogcHVibGlj
OgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckNvcHkoUmVmPGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6
IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
Q29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAg
ICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlckNvcHkoUmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKj4oJmJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKCZidWZm
ZXIpIHsgfQogCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5zaXplKCkgOiAwOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQpAQCAtNTcsMTUgKzU5LDE1
IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgbXVzdCBvbmx5IGJlIHVz
ZWQgb24gdGhlIHJlY2VpdmVyJ3MgSVBDIHNpZGUuCiAgICAgLy8gSXQgcmVsaWVzIG9uIGFuIGlt
cGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IG1ha2VzIG1fYnVmZmVyIGJlY29tZXMgYSBjb250aWd1
b3VzIFNoYXJlZEJ1ZmZlcgogICAgIC8vIG9uY2UgaXQncyBkZXNlcmlhbGlzZWQgb3ZlciBJUEMu
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gZG93bmNhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5nZXQoKSk7IH0KLSAg
ICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYWZlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBidWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpIDogV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4obV9idWZmZXIuZ2V0KCkpOyB9CisgICAgUmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gc2FmZUJ1ZmZlcigpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25z
dDsKIAogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29k
ZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tCmluZGV4IDIxZTA3MjcwMzU2Mzg2ZWE5NzUzNWM4M2IwYWI1YmNhMzAyNWRiYjQuLjYxOTM3
NWJiM2JiOTUzY2QyYzM4ZmFhZDEyMDBhYmYyZDA3Y2I0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBA
IC01MzQsMTIgKzUzNCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCppbmNsdWRlc0NyZWF0aW9uRGF0YSkgewotICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
Zm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VE
YXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0
YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VE
YXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmlu
ZGV4IDk5ODdiMWE4NDc2OGYyNzM4NjNkYzBiMWE1NTM5MTUzYzQ5ODE3ODMuLjM1ZTgyNjRlMWYz
MTBmNjU1NDM1Y2JmYzFiZDNjMWU0MmQ3MDE3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjM4LDcgKzIzOCwxNiBAQCBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29k
ZXIsIFJlZlB0cjxTaGFyZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNv
ZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG91dEJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVy
LCBvdXRCdWZmZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYnVmZmVyID0gV1RGTW92
ZShvdXRCdWZmZXIpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBlbmNvZGVU
eXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAg
IEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGVuY29kZXIgPDwgdHlw
ZXM7CkBAIC0yNDcsNyArMjU2LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY28KICAgICAgICAg
ZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2Rl
ciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBk
YXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShE
ZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Y29u
c3QgU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBl
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxMTEsNiArMzEyMCw2MiBAQCBzdGQ6Om9w
dGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+Pjo6ZGVjbwogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0K
IAordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8Y29uc3Qg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVT
aGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxS
ZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRy
PGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICgh
ZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV1RGTW92ZShidWZmZXIpOworfQorCit2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVy
LCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIEFyZ3VtZW50Q29k
ZXI8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30K
Kworc3RkOjpvcHRpb25hbDxSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIFdURk1vdmUoYnVmZmVyKTsKK30KKwordm9pZCBBcmd1bWVu
dENvZGVyPFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIp
Cit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisK
K3N0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVm
PGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCiAj
aWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCiBzdGF0aWMg
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhh
bmRsZShjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCkKIHsKQEAgLTMxODAsNyArMzI0NSw3IEBA
IHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlCiB7CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlLmZpcnN0
OwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVz
c2FnZS5zZWNvbmQuY29weVJlZigpOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKICAgICBlbmNv
ZGVyIDw8IG1lc3NhZ2VEYXRhOwogfQogCkBAIC0zMTkwLDcgKzMyNTUsNyBAQCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggNmUyN2E3ODcyMDIxNzFiYmNlZGJiNjQ4MzkyMGE3ZTc5YmQ1ODBi
Zi4uMDQ0MzU5ZTk4NGUwOTA0MzE1NjU1M2U2YWZmYjBmYjNhNWMwOTEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTc3Miw2ICs3NzIsMjYg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJl
ZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29k
ZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPGNvbnN0IFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8Y29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZm
ZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRl
Y29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRU
ZXN0UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0
RGF0YS5jcHAKaW5kZXggYzBiZTNhNDViOThmMDEyZjY2MzAyOWE2ZDVjZjBhODgyYThkYjczYy4u
M2IwNDc3NDVhNmZlMmFmMTMwOGVmMWE0NDYwYmFlMWNiNjMyNDM3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApAQCAtODUsNyArODUsNyBAQCBX
ZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgSGl0VGVzdFJl
c3VsdCYgaGl0VGVzdFJlc3VsdCwgYgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoSW1hZ2Uq
IGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOworICAgICAgICBSZWZQdHI8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKICAg
ICAgICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAgICAgaW1hZ2VTaGFyZWRNZW1vcnkgPSBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKICAgICAgICAgICAgIGltYWdl
U2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
d2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93
aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCBkZjM5NTQ3NDQ1YzczMjZkOTgx
MWMwODAzN2U4NWY0NDU3ZjgwMGViLi5kNDBiZTVhOTJkMWE3ZTU1ZWJiM2ZlZjFjMzRkZDNhZTA1
MTQ5OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFy
Z3VtZW50Q29kZXJzV2luLmNwcApAQCAtOTUsNyArOTUsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQ
bGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhID0g
bnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgpKSB7Ci0gICAg
ICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxSZWY8Y29uc3QgU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwog
ICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURh
dGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCmluZGV4IGMyOGZlNjVmMGNmMTY0
Mzk5ODE4YWNhMzJmOTgxY2M3NzhmMWU5MTkuLmVhM2NlODc2ZmZjZjMwYTFmMDQwMTU1Y2JmNmI4
Mzk3ZDQ1NzNmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbW90ZUNETTo6bG9hZEFu
ZEluaXRpYWxpemUoKQogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkxvYWRBbmRJbml0aWFsaXpl
KCksIG1faWRlbnRpZmllcik7CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBS
ZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
cmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUmVt
b3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwg
aW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKCkuCiAg
ICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETS5oCmluZGV4IDhjNDU0ZWI4M2U1OTk0YThlNGQ1OTJkNTFkZjkx
ZmY5YjUyM2NiZWYuLjllZmNkNGM4ODdjZDFiMDJiODM4ZTY0NjUwOGE1NTIyMDFjMDRkOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaApAQCAt
NTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0Fy
ZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3Rh
bmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOwogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUo
KSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29u
c3QgZmluYWw7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5n
PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1
cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXggNzVk
NWU1YTc5NTE0ZGJjM2FhYWMwMGI5ODg0YTU3ZGFjMTk4ZjlmNi4uYmJkZmEzMTFlYzU2MGFlZmQ4
ZmExODNiMWQwYjM1YjdhYmFlZDdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUMKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRp
b24sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIHBlcnNpc3RlbnRTdGF0ZSksIFdURk1vdmUoY2Fs
bGJhY2spLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBj
ZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2UuaAppbmRleCAyYzc4NTFlNDQwYjA4YTUyYTJhZTcwZGE3ZTQxODg4MmUzYzYxNDM5Li4x
MGE3YmM4Zjg2NWY1ZGFiZjAzNTU0OWVjOWZmOTU0NzEyNTFjMDYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBA
IC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVt
ZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpS
ZW1vdGU7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAg
IHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBT
dWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5c3RlbTsgfQogICAgIFJlZlB0cjxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCA4YmVjZDU5YjVlYjM3ZTBkM2E1MTQ1MzhmMzcz
ODFkN2Y3N2Q4Y2NlLi44ZGY5MmVkMDc1MTQxYjA0OGEzNDdkYTU4NWNhMWRkZGQwYWNlNDhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeT4mJiBmCiB7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxs
YmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVk
KTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcKICAgICB9LCBtX2lk
ZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNh
bGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKQEAgLTEw
OSw3ICsxMDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lv
bkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2VucwogICAgIH0KIAogICAgIG1fZmFj
dG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lv
bkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChL
ZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1
ZmZlckNvcHk+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewotICAgICAgICBz
dGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKG1l
c3NhZ2UgJiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAgICAgICAgICAgcmVhbE1lc3Nh
Z2UgPSBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAg
Y2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBzdWNj
ZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5k
ZXggNGU0Y2QyYzAwNWM2YjAwNjVmOWNkYjE4OGM0YmNlMGI1YmZhNjYwMS4uYzYyNTJmYTc4NTBk
ODcwY2FlMWE5MjZmNzM2ODkzM2NkMDljODU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5o
CkBAIC01OSw4ICs1OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRy
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9j
bGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KICAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwg
eyBtX2NsaWVudCA9IG51bGxwdHI7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0g
ICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlbnNlVHlwZSwgUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRT
ZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmgKaW5kZXggOWMwODgxNjFlZGRiZjIzNDBmODdhMGJiOTczNDEzN2VhN2UzZDcx
My4uYTU0Y2U5NmRhYTE3NWZlNGEyMjZlNzlkMGMxZThjZDE1ZjFlMWExYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlRGVjb2RlckFWRiBm
aW5hbAogICAgIDogcHVibGljIFdlYkNvcmU6OkltYWdlRGVjb2RlcgogICAgICwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
TWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciYg
aWRlbnRpZmllciwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCisgICAgc3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0
ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJ
bWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGKG1hbmFnZXIsIGlkZW50aWZpZXIsIG1pbWVUeXBlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKaW5kZXggYmVkZGVjYmIwNzRkMzQxMmE5YmU5M2NiY2Q1
OWFlMTkyNDdmMmI0YS4uMTg0ZmVkN2FhZDFlZDk4YTM3M2M3NGM4YmM1MWFiYzUzYjQ4NDYyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRy
PFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3Jl
YXRlSW1hZ2VEZWNvZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxSZW1vdGVJbWFnZURl
Y29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2Rl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURl
Y29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIGlmICghZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyKElQQzo6U2hhcmVkQnVmZmVy
Q29weShkYXRhKSwgbWltZVR5cGUpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OkNyZWF0ZURlY29kZXI6OlJlcGx5KGltYWdlRGVjb2RlcklkZW50aWZpZXIpLCAwKSkKQEAg
LTQ4LDcgKzQ4LDcgQEAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKEYKICAgICBpZiAoIWltYWdlRGVj
b2RlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byByZW1v
dGVJbWFnZURlY29kZXIgPSBSZW1vdGVJbWFnZURlY29kZXJBVkY6OmNyZWF0ZSgqdGhpcywgKmlt
YWdlRGVjb2RlcklkZW50aWZpZXIsIGRhdGEsIG1pbWVUeXBlKTsKKyAgICBhdXRvIHJlbW90ZUlt
YWdlRGVjb2RlciA9IFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y3JlYXRlKCp0aGlzLCAqaW1hZ2VE
ZWNvZGVySWRlbnRpZmllciwgbWltZVR5cGUpOwogICAgIG1fcmVtb3RlSW1hZ2VEZWNvZGVycy5h
ZGQoKmltYWdlRGVjb2RlcklkZW50aWZpZXIsIHJlbW90ZUltYWdlRGVjb2Rlcik7CiAKICAgICBy
ZXR1cm4gcmVtb3RlSW1hZ2VEZWNvZGVyOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6c2V0VXNlR1BVUHJvY2Vzcyhib29sIHVzZUdQVVByb2Nl
c3MpCiAgICAgSW1hZ2VEZWNvZGVyOjppbnN0YWxsRmFjdG9yeSh7CiAgICAgICAgIFJlbW90ZUlt
YWdlRGVjb2RlckFWRjo6c3VwcG9ydHNNZWRpYVR5cGUsCiAgICAgICAgIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6Y2FuRGVjb2RlVHlwZSwKLSAgICAgICAgW3RoaXNdKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikgeworICAgICAgICBbdGhpc10oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CiAgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlSW1hZ2VEZWNvZGVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlv
biwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCmluZGV4IDM2MThhZmQxMjA5OGI1NTc2YjRkZDRm
ZmJmM2MwNmZiYTg0MmE3NjQuLjk5MmVkMjFhNDcyYmRiNTdhZDFkNWUxZTI1YmQ2ZDE4ODVhMjky
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCkBAIC01OSw3ICs1OSw3IEBA
IHB1YmxpYzoKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBj
cmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6Okdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVy
QVZGPiBjcmVhdGVJbWFnZURlY29kZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24s
IFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIC8vIEdQVVByb2Nl
c3NDb25uZWN0aW9uOjpDbGllbnQuCiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENs
b3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQ
SUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDM1M2FhYmY3ZDRiOTI1YWEyZjE1
NjJkNTczYWFmMzA5M2M4M2JjOS4uOTk2NzdmMzNkMDdkMDVjYmYyYTljMGYyNGIwMDBhMzAzNWJi
ZjAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6
V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2Vi
UGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpX
ZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6
OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2lt
cGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbQppbmRleCA2NmEzNWFlY2FjZGZjMzBlMjliYWQwYmI0NDJjOGUyM2E2MGM2
MmJlLi4yZmFkOTczN2I3OTlkMmE2MGUxNTdhN2RiNmI4ZTNmNGYyN2YwNjc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MjksNyArNjI5LDcgQEAgLSAodm9pZClfc2V0
RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPill
ZGl0aW5nRGVsZWcKICAgICAgICAgICAgIFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUu
Z2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9s
bGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5k
bGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2Vi
UGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTEx
ZGU4ZjJlMDgwOTAuLjAyMjQ2MzdkMWJhN2UyY2E4NmFmODdlZTkxNTgzOGVjMDBjOWFmMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0x
MzUsNyArMTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxX
cml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53
aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFu
Z2UpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFn
ZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAg
aWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsKICAgICAgICAgV0tBcnJh
eVJlZiB0eXBlcyA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5
NC4uNzk2YmRhYmZlMjlmYjBiM2E0OWM3OGViYWNiNzcyZWQ3MDI4MmZhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlm
aWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2Um
LCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdy
aXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBl
cmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNv
bnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFs
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcAppbmRleCA0YTAwZjIyOGNkNTBmODVjMDNmOTk3ZjA0N2M2OWNlNTIw
ZTlmMTc3Li4yMmE1ZWQzYzI4OTEwMmMzYTkxNDI1M2U4ZmZjMTVkOTVjOTQ5NDVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC0yMTcsMTUgKzIxNywxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByaQogICAg
IG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGlj
eURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2
NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEgb2Ygc2l6ZSAlbHUgZm9yICclcyciLCBkYXRhLnNpemUoKSwgbV9j
b3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9j
ZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9u
c2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNl
cHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBtX2ludGVyY2Vw
dENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gZGF0YS5idWZmZXIoKSwgZW5jb2Rl
ZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5k
ZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQotICAgICAgICAgICAgICAg
IGRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikpLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92
ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGFjMGFkYzliOGQ3YTRmMjFlOGJjYWI1Zjg4OTI0NDU4ZTU0
ZTJiMWMuLmJmZGQyOTU1ZTRhM2Q1OGZjZGEwMjI4ODliMDVlMmRjZWJhN2E0ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
aApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVz
dEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0
YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IFByaXZhdGVSZWxheWVkLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMDM0NGY0YmUyM2E0Mzc2NzE5Nzc4
OTk5N2Q3NjM3YTIwMzFiN2VhZS4uZjVkYTU1NjY3MTcwMmQxYmRjOTk1NmQxYTBmMTgwNThkZTBm
ODRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5k
ZXJlcigpCiAgICAgbV9wbHVnaW4tPndpbGxEZXRhY2hSZW5kZXJlcigpOwogfQogCi1SZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNv
bnN0CitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2
ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1f
cGx1Z2luKSB7CiAgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVh
bVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaAppbmRleCAyNTYxNWNiMzBmMjI2NDYzOTI0NDQ4OGYyYmQ3YzQxMjI3OTA3OWI5
Li5lZjcwMDJhYjQ5ZDA4MGMzODNjYTAyNjYxYTg5YTc1NGY1NDc1Nzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0xMTMsNyArMTEzLDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRBbGxvd1NjcmlwdGluZygpOwogCi0gICAgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBj
b25zdDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29r
dXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICBib29sIGV4aXN0
aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggYzRkZjhhZjIyYjMzYWI4YWE5ZDc3NTJi
ZDU4YTI3ZTk2YzRlMTczZC4uODQ5ZTZmZjBhYTZmNTg1NjAzZWI2YTAwZjhiZWRlYzJhNzJhYzNm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIFdlYkVk
aXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxl
LCBjb25zdCBzdGQ6OgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHBy
ZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHBy
ZWZlcnJlZEZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShkYXRhKSkpKTsK
IH0KQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFn
ZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1f
cGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJk
VHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAwZjczZTRm
YjYzNjIyYzZmYWU5NjM1MjE4YjU3ZjA2MGUyNjExMjUwLi45ZGFlOWI4MzRhNWQyNTkxNjQ0ZjBj
NTAxODU2YmU5NDc4ZTgxOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02Niw3ICs2Niw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBXZWJD
b3JlOjpTaW1wbGVSYW5nZSYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJikgZmluYWw7CiAK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8
V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSBmaW5hbDsKQEAgLTg4LDcgKzg4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lk
IHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9T
dGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVw
KFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCmluZGV4IGY4M2ZiM2UwY2ZlNTc1NDZjMDc4NzhiYzVkNDYyY2IxZTY5MWM4MjAuLjZhMzI4
MDM3OGQxNDViNDFkMWMxYTI3OTBiNGQzMDlhODYwNWRkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlw
ZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQ
dHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
Ly8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJp
ZGVCdWZmZXI7CkBAIC0yMDksNyArMjA5LDcgQEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAg
ICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpz
ZXRCdWZmZXJGb3JUeXBlKGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5k
bGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewpAQCAtMzI0LDcgKzMyNCw3
IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQYXRoc0Zy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQorUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5IGRhdGE7CkBAIC00MTcsNyArNDE3LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJk
SXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQK
ICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1Jl
ZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQ
YXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBw
YXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IDIwMGI2YzAxNTliNjg4YzcyYTNmYWRmYmFlMGE2OTQ4MzFiOTM2ZTAuLmM0NGUy
NDExNGJiMWEwOWRlYTA4NDM4ZWYzMzQwM2EwZGNhNWIwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3Rv
cjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJp
bmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAg
LTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFRleHRGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZl
Y3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRl
OwogICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAg
LTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Y29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA0MGI5OTczMjAwNzgyNWU2
NjgzZTYzNjgwNDNmNjJiNmI1OTAzMzdiLi5hMTY1ODJhMmQ0MTUwZjEwNmFjZmUzNWQ1OTNlNDdj
NmI0YzRiNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25z
dAogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1fY29yZUZyYW1lLT5sb2Fk
ZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURh
dGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJl
c291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiBkZWNvZGVy
LT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM0OTg3YmRlNjRmZGZmMDkwODMyYzM3NTQy
YjkzNTEzYTYxYWRjY2IuLjFkOGVjYzY2ZDBlMzE4NTllZDZjOTcwYjFjOWJiMmVkYTMyYmQ3YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0z
ODc0LDcgKzM4NzQsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogCiB2b2lkIFdlYlBhZ2U6
OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJD
b3B5PiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
RnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBw
bHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKSkKICAgICAgICAgICAgIGJ1ZmZl
ciA9IHBsdWdpblZpZXctPmxpdmVSZXNvdXJjZURhdGEoKTsKQEAgLTM4ODcsNyArMzg4Nyw3IEBA
IHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kCiAgICAgY2FsbGJhY2soSVBDOjpTaGFyZWRCdWZmZXJD
b3B5KFdURk1vdmUoYnVmZmVyKSkpOwogfQogCi1zdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiBy
ZXNvdXJjZVVSTCkKK3N0YXRpYyBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
cmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJM
KQogewogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKTsKICAgICBpZiAoIWxvYWRlcikKQEAgLTM5MDIsNyArMzkwMiw3IEBAIHN0YXRp
YyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJh
bWUqIGZyYW1lLCBjb25zdCBVCiAKIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3Ry
aW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBVUkwgcmVzb3VyY2VVUkwoVVJMKCksIHJl
c291cmNlVVJMU3RyaW5nKTsKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VEYXRhRm9yRnJhbWUo
ZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CkBAIC03MDUyLDcgKzcwNTIsNyBAQCB2
b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2Fs
bGJhY2tJRCBsb2FkSWRlbnRpZmllcgogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgZG9jdW1lbnRMb2FkZXItPmRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdl
cigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBtdXRhYmxlIHsKKyAgICBk
b2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElk
ZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoYXV0byogaWNvbkRhdGEpIG11dGFibGUgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyIHsgaWNvbkRhdGEgfSkpOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQppbmRleCA4NTQ0M2ZjNmE5NzA1OTQ4MjIyZjEwNzUxYjJjMTM4Y2VmMDZj
MWFmLi4yNmRhNmNjOWNmM2IzMDMyM2UzZTZjNGE0OWFlZTZhZDQ5MGQ3MDk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAt
MzI4Miw3ICszMjgyLDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVp
bnQzMl90IGFjdGlvbikKICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZG93bmNh
c3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpLmNhY2hlZEltYWdlKCk7CiAgICAg
ICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VC
dWZmZXIoKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIg
PSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4
IDQyMDEwN2RhNjViNzZiNmQxMmM0YzQ1ODEzOWYzMDgyNThkOTNmZjMuLjc0OGRlNjY0MzdjYTQ0
MmFiZjZmY2FmYTA4MDM2NGM0M2FmNDFmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4
MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9p
ZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNz
UmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzQ2F0
ZWdvcnksIGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNj
ZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBj
MmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyLi5mMWUyYTM2NTJhZjE2YWQ2
OGM4NTJkZDE2YmI3MDZiZWU5ZTNkZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyAr
NDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQg
V2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGltcGxlbWVudGVk
IFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
OGRmOTkzZjJkNzc1YjZjOTNkMmU4ZjA5OTBmNzJmODVmNjE4ZTU4ZS4uZWEyNGE4MzJkNWYxZWIx
YzI1OGNhZDIyMTg5MzEyNmM1MjEzN2Y2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0yNTAsNyArMjUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJM
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPiYmKT4mJikgZmluYWw7CiAKICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvcklj
b25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdD4+
JikgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oY29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgYm9vbCBtX2xvYWRpbmdJY29uIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KaW5kZXggODdhNWQ2NTdmN2I3MzNkMDdjNWRiNjAxZjY5ODFmOTA0OTc3MTM5My4u
NDQ4MGEwNGE2OGE4MzgwZThjZWMyYTAwOTA2Mjk2NTI0MjE0MGRjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KQEAgLTIwOTMsNyArMjA5Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2Vi
Q29yCiAgICAgICAgIH0KIAogICAgICAgICBtX2xvYWRpbmdJY29uID0gdHJ1ZTsKLSAgICAgICAg
ZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vj
b25kLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgeworICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoYXV0byogYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGZpbmlzaGVk
TG9hZGluZ0ljb24oYnVmZmVyKTsKQEAgLTIxMzAsNyArMjEzMCw3IEBAIHN0YXRpYyBOU0ltYWdl
ICp3ZWJHZXROU0ltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTaXplIHNpemUpCiB9CiAj
ZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
aWNvbkRhdGEpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29u
KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKQogewogI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChtX2xvYWRpbmdJY29uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMWQ4MWZmYTE5ZDk3ZjA0ZWM3Y2M1NzViM2VjZTVl
ODg4MTQ0MGIzOS4uMWYxNDViNDJjMGNjZWMzNDEzMDMyZjVjMjEyZmRlMzdmYWNlZWY5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFN0cmluZyBy
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdl
Q291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFz
dGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3Ry
aW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAg
LTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2
NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
aW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggMTg4ZWM1MDA0NTA3N2Q3OGIwMTIwYTZkYWZiYjA0
ZmI3OTI3NjQ2NC4uZjQzOTY2Y2M0NTVlZTU1OGZjZjYxMzdjMDIyY2JjNDljMmFlNTU1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5n
ZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQ
dHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwog
fQpAQCAtMTU0LDcgKzE1NCw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5
cGVzKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK2lu
dDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShi
dWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5k
ZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCmluZGV4IDVlYjVkNmExOWU2ZDkxZmNiM2JmYzgxY2NhOTFlYzdlMGU1NmM0
MjguLjIzOGE0NGE1MzczZThjYzgzMjliZTZkMjA3NzA3YWQ3ZTkzODliMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2MCw3
ICs0NjAsNyBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAoTlNEYXRhICopZGF0YQogewotICAgIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0g
dG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVm
UHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURh
dGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAg
ICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJu
IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9y
ZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJj
ZS5tbQppbmRleCAxMmQ1OWMwYTE3NjgxOGU2NjJjNDNjMDc0NGE1M2ExMDFjODU2MWVkLi5lMGQw
ZjczMDYyOTM0ODk1YzNmMThiZTc1ZWViMjUwYjE1YzZiMDViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTM2Niw4ICszNjYsOCBAQCAt
IChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9IF9wcml2YXRlLT5j
b3JlUmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgIGlmICghZW5jb2RpbmcuaXNWYWxpZCgp
KQogICAgICAgICBlbmNvZGluZyA9IFBBTDo6V2luZG93c0xhdGluMUVuY29kaW5nKCk7Ci0gICAg
Ci0gICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJl
c291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CisKKyAg
ICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3Jl
UmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKICAg
ICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNv
cmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBj
b3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
aW5kZXggMjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdlZWZjMS4uZTA4NjRmMTcy
MjNkYmVjNDA5MTNiZDQxNzNlNmIzZTVhNzBhYWQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBA
IC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUKIHsKIH0KIAotdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3Rvcjxjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApp
bmRleCAwODdiNjllN2E4YjBiNjg4YWNiZmU0NGU0ZGFiMWI3YmRhNTQxZjI4Li5lZjg5YmE0MDBj
MTJlZGMyMzkwMGIxY2UyZmUyNGYxMDlkNGE2YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUs
NyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAg
IHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRW5kVXNlclRy
aWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlc3BvbmRUb0No
YW5nZWRDb250ZW50cygpIGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452680</attachid>
            <date>2022-02-19 23:18:14 -0800</date>
            <delta_ts>2022-02-19 23:24:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236736-20220220181810.patch</filename>
            <type>text/plain</type>
            <size>281490</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQ1NGQ0YjU3MWRiYzJi
ZmM1ZjAwYzczNjBmNDdjMDA1NzBkOTQwZi4uMTA3MDY1MjQ4NmE1NmJhNGYwNDFjZDJmZDUxMjEz
YjNjZDlhN2E1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MyBAQAorMjAyMi0wMi0xNyAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU2hhcmVkQnVm
ZmVyIHVzZWQgYnkgQ2FjaGVkUmVzb3VyY2U6Om1fZGF0YSBjb25zdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NzM2CisgICAgICAgIHJkYXI6Ly84
OTA1MDQwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEJ5IG1ha2luZyBDYWNoZWRSZXNvdXJjZTo6bV9kYXRhIGNvbnN0LCBhbGwgY2FsbGluZyBwb2lu
dHMgbmVlZCB0byBiZQorICAgICAgICBtb2RpZmllZCBhY2NvcmRpbmdseSwgcmVzdWx0aW5nIGlu
IGFuIGV4dGVuc2l2ZSBjaGFuZ2UuCisgICAgICAgIEJ5IHBhc3NpbmcgdGhlIFNoYXJlZEJ1ZmZl
ciBhcyBjb25zdCB3ZSBjYW4gbW9yZSBlYXNpbHkgaWRlbnRpZnkgYXJlYXMKKyAgICAgICAgc3Rp
bGwgbW9kaWZ5aW5nIHRoZSBvYmplY3QgYWZ0ZXIgaXQncyBiZWVuIGNyZWF0ZWQuCisgICAgICAg
IFRoZSBvbmx5IHBsYWNlIHdoZXJlIGEgU2hhcmVkQnVmZmVyIHNob3VsZG4ndCBiZSBtYWRlIGNv
bnN0IGlzIHJpZ2h0CisgICAgICAgIGFmdGVyIGl0cyBjcmVhdGlvbi4KKworICAgICAgICBObyBj
aGFuZ2UgaW4gYmVoYXZpb3VyLiBTZW1hbnRpY3Mgb25seS4KKworICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6c2FuaXRpemVJ
bml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE06OnNhbml0aXplUmVzcG9uc2UpOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlE
c0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNXZWJNKToK
KyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyk6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlTZXNzaW9uOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpz
ZW5kTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChmaWxlV3Jh
cHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9z
aW5nSW1hZ2VXaXRoRGF0YSk6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1l
bnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVu
dDo6ZmluaXNoZWRQYXJzaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJl
c291cmNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYWluUmVzb3Vy
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YSk6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U3Vic3RpdHV0ZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1
dGVSZXNvdXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OlN1YnN0aXR1dGVSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rvcnkp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgor
ICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFyY2hpdmVGYWN0b3J5Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFyY2hpdmVG
YWN0b3J5OjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
Lmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oOgor
ICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6Ok1IVE1MUGFy
c2VyKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgorICAg
ICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNl
cmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL05vd1Bs
YXlpbmdNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWlsZGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRl
Q2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFp
bGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlc2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJh
Y3RLZXlJRHNTaW5mKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2FuaXRpemVTaW5mKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2FuaXRpemVTa2QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNl
cnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uRm9yS2V5SURzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExp
Y2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvcHlLZXlJRHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVBy
aXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpwYXlsb2FkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcnNlZFJlc3BvbnNlTWVzc2FnZTo6cGF5bG9hZCk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpl
cnJvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1h
Z2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVj
dCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vu
c2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorCiAyMDIyLTAyLTE2
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2hUcmFj
ZXI6IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBKYXZhU2NyaXB0Q29yZTogYm1hbGxv
Y19hbGxvY2F0ZV9pbXBsX2ltcGxfc2xvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4NDVjZjI1MDU0NjY5NGJmM2Q3
YTU1OGUzOTVlMmRkM2NhMTc4MmJlLi5jN2Y0NzA5M2FjMjExN2VkMDc5N2Q0ZDI5ZmUyYWQ5MjE0
ZGNiNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIyLTAyLTE3ICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTaGFyZWRCdWZmZXIgdXNl
ZCBieSBDYWNoZWRSZXNvdXJjZTo6bV9kYXRhIGNvbnN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3MzYKKyAgICAgICAgcmRhcjovLzg5MDUwNDAz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6U2hh
cmVkQnVmZmVyQ29weTo6c2FmZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hh
cmVkQnVmZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBj
b25zdCk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OldlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b246Ok1lc3NhZ2U+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVh
dGVJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6cmVz
b3VyY2VEYXRhRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQp
OgorCiAyMDIyLTAyLTE2ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ3Jhc2hUcmFjZXI6IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBKYXZhU2Ny
aXB0Q29yZTogYm1hbGxvY19hbGxvY2F0ZV9pbXBsX2ltcGxfc2xvdwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IGQzZjFhMzVjMzNjZGE1ZjdkNzdjZjRhN2JlYWE2ZmEzMWMyZjdlZGIu
LjUxMzE1MGZhMDAyN2EwOTU5MDQ3YzFiODQzNmZhYmZmZWRjNGRjYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wMi0xNyAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU2hhcmVkQnVmZmVyIHVzZWQg
YnkgQ2FjaGVkUmVzb3VyY2U6Om1fZGF0YSBjb25zdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NzM2CisgICAgICAgIHJkYXI6Ly84OTA1MDQwMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToK
KwogMjAyMi0wMi0xNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVubmVjZXNzYXJ5IGNvcHkvbWVtb3J5IGFsbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdl
UmVhZGVyLmNwcAppbmRleCAzMzU0YjUyYTUwY2JiMTg5ZmRmYWViN2Q4MjQ4M2JlMGM0MWMzZDRl
Li43MDdkNjdmYTUyM2U1YjIzYjAwZGRkNTUwN2JmOTJlODZmZGQwMjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
KQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBSZWY8Y29uc3QgU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCAxZjU3ZmE5NTYwZDYx
Njc2OWQzYmZiY2YwYTYzODhjOGM4N2ZmNDJiLi45M2VlNzYxM2RiYmM2NDJiMzBkMjA5NTIwMjFj
ZWEyNGViZjBlY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBib29sIHNob3VsZFJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgdHlwZSwgUmVmPGNvbnN0IFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0
YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uZDE1OGEyNGI1NzA3MDQ4OGRhYTdiNDBkYWFiN2FmZWJi
YTEwZGM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAt
MzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxjb25zdCBTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CiAgICAg
ICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5p
dFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJl
YWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9D
bGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0
OTEzMTc4NjlkYTdlNWJmLi40YmQyNjgwNDVjZmRjZDJlYjA0ZTFlODU1OGRkYjBmOTZjNWYyMzYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zMyw3ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKICAgICAgICAgYXV0
byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDAxNjEyMTlkMWUyNmIyNjJjNGVlZWM4MTk4YzQ2ZDhlYjE0
YzFiMDIuLjFkMzcwMWU2YWJmZTQ2YmNmMTU1MTFmZjI0Njg0OWQ5OTA4YzVhMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTEzNSw3ICsx
MzUsNyBAQCBib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5z
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKTsKIH0KIAotUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRp
emVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHJldHVybiBJbml0RGF0YVJlZ2lzdHJ5
OjpzaGFyZWQoKS5zYW5pdGl6ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQpA
QCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlCiAgICAgcmV0dXJuIG1f
cHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0
RGF0YSk7CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIGlmICghbV9wcml2YXRl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5oCmluZGV4IGQ3YjFkNTNkMDQ5MWY3Mjc3OWI1OTRiMmQ4M2MwOWI4M2Jj
ZjIwN2YuLmJiN2JhOTkyNzQ0OTEzYjk4MjMzYmFiYjdmNmRmYTMyMzE1NDJiOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtNzMsMTAgKzczLDEw
IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdDsKICAgICBib29s
IHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAg
IFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOwogICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1D
bGllbnQuaAppbmRleCA0MTBlZDJmYjY0Mjc1NjJjZTliZDhlZGE0ZDkxYTg2YmE5OGNhYTYxLi5m
NTg2NzJhMWUyNDI1N2RjYWVjMzllZjA5NTMwYjk2MmU4YmQ3MWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKQEAgLTQzLDcgKzQz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAg
IHZpcnR1YWwgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5
KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6
YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwCmluZGV4IDZmODg4ZTE3ODU4ZGRhNmQ5NDcxZWMxZjZlZjVkMDY2ZGYwZTQ5OTAu
LjA3ZjE1ZTE1MGNlYjY4ZmVjNmJhYmZhZDFhYzk1YTM5ZDk1ZTE1NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcApAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgewogICAgIGNvbnN0IHVpbnQzMl90
IGtLZXlJZHNNYXhLZXlJZFNpemVJbkJ5dGVzID0gNTEyOwogfQogCi1zdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tl
eWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFj
dEtleUlEc0tleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgLy8gMS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1t
ZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC03NCw3
ICs3NCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvCiAgICAgaWYgKCFraWRzQXJyYXkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7
CiAgICAgICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFr
ZXlJRCkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY28KICAgICByZXR1
cm4ga2V5SURzOwogfQogCi1zdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRp
YyBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAog
ICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lz
dHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApAQCAtMTUxLDkgKzE1MSw5IEBAIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3g+Pj4gSW5pCiAgICAgcmV0dXJuIHBzc2hCb3hlczsKIH0KIAotc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3Ry
eTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBrZXlJRHM7CiAKICAgICBhdXRvIHBzc2hCb3hlcyA9IGV4dHJhY3RQc3NoQm94ZXNGcm9t
Q2VuYyhidWZmZXIpOwogICAgIGlmICghcHNzaEJveGVzKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRh
UmVnaXN0cnk6OmV4dHJhY3RLZXlJCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21tb24gU3lzdGVtSUQg
YW5kIFBTU0ggQm94IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0
ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNjb21tb24tc3lzdGVt
CkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXRE
YXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2gKICAgICByZXR1cm4g
YnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVdlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3Rh
dGljIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIENoZWNrIGlmIHRo
ZSBidWZmZXIgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIC8vIFRoZSBXZWJNIGluaXRE
YXRhIGlzIHRoZSBDb250ZW50RW5jS2V5SUQsIHNvIHNob3VsZCBiZSBsZXNzIHRoYW4ga1dlYk1N
YXhDb250ZW50RW5jS2V5SURTaXplLgpAQCAtMjA1LDEwICsyMDUsMTAgQEAgc3RhdGljIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJ
RHNXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0g
ICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwotICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0o
YnVmZmVyKTsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBr
ZXlJRHM7CisgICAgYXV0byBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsK
ICAgICBpZiAoIXNhbml0aXplZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IApAQCAtMjMzLDcgKzIzMyw3IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXREYXRhUmVnaXN0cnko
KQogCiBJbml0RGF0YVJlZ2lzdHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAot
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXpl
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9
PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpAQCAtMjQx
LDcgKzI0MSw3IEBAIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lz
dHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpCiAgICAgcmV0dXJuIGl0ZXItPnZh
bHVlLnNhbml0aXplSW5pdERhdGEoYnVmZmVyKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtl
eUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAg
ICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0
RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
SW5pdERhdGFSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmgKaW5kZXggNzdkNjA0YjA4YmI3ZjdlMzhiY2NiMzU0NWIzNGM4
YjEzNDM1NWVmMi4uYmFlNzFiN2U5MDc3ZDkwOWJkNTIyYTY3NmFlYTI0NzEzZWUzMDYxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5LmgKQEAgLTQ1LDEyICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIEluaXREYXRhUmVnaXN0cnkmIHNoYXJlZCgpOwogICAgIGZyaWVuZCBjbGFz
cyBOZXZlckRlc3Ryb3llZDxJbml0RGF0YVJlZ2lzdHJ5PjsKIAotICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4
dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtl
eUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAg
ICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKLSAgICAg
ICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrID0gRnVu
Y3Rpb248UmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9
IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CiAKICAgICAgICAgU2Fu
aXRpemVJbml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CiAgICAgICAgIEV4dHJhY3RL
ZXlJRHNDYWxsYmFjayBleHRyYWN0S2V5SURzOwpAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHdlYm1OYW1lKCk7CiAKICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveD4+PiBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAg
c3RhdGljIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiBwcml2YXRlOgogICAgIEluaXREYXRh
UmVnaXN0cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBmYjRhN2Y4ODRmNjc5NTViNmQ3OWQw
MmNlNWNkZDU4NDlkMmZjOTY1Li45Nzg4YjVlZTVkZjAzN2NlZDkwM2JiNDNhMGY1ZGNjMmQ4MjNj
MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEJ1ZmYKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tT
b3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBp
bml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEu
bGVuZ3RoKCkpLCBpbml0RGF0YVR5cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVu
dGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDEw
LjEuIElmIHRoZSBpbml0IGRhdGEgaXMgbm90IHZhbGlkIGZvciBpbml0RGF0YVR5cGUsIHJlamVj
dCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgLy8gMTAu
Mi4gTGV0IHNhbml0aXplZCBpbml0IGRhdGEgYmUgYSB2YWxpZGF0ZWQgYW5kIHNhbml0aXplZCB2
ZXJzaW9uIG9mIGluaXQgZGF0YS4KLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0
YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2Fu
aXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4z
LiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3
bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsK
QEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAg
bV9sYXRlc3REZWNyeXB0VGltZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNl
U2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5p
dGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9u
LT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZElu
aXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgICAgICBtX2NhbGxhYmxlID0gdHJ1ZTsKIAogICAg
ICAgICAgICAgICAgIC8vIDEwLjkuMy4gUnVuIHRoZSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudCBh
bGdvcml0aG0gb24gdGhlIHNlc3Npb24sIHByb3ZpZGluZyBtZXNzYWdlIHR5cGUgYW5kIG1lc3Nh
Z2UuCi0gICAgICAgICAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIG1lc3NhZ2Up
OworICAgICAgICAgICAgICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBXVEZNb3ZlKG1l
c3NhZ2UpKTsKIAogICAgICAgICAgICAgICAgIC8vIDEwLjkuMy4gUmVzb2x2ZSBwcm9taXNlLgog
ICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZXNvbHZlZCIp
OwpAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3Qg
QnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgLy8gNi4g
UnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6CiAgICAgcXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVzcG9uc2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLmxlbmd0aCgpKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgLy8gNi4xLiBMZXQgc2FuaXRpemVkIHJlc3BvbnNlIGJlIGEgdmFsaWRhdGVkIGFuZC9v
ciBzYW5pdGl6ZWQgdmVyc2lvbiBvZiByZXNwb25zZSBjb3B5LgotICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9u
LT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+
c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJl
Y2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJl
amVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYg
KCFzYW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBA
IC02MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBi
ZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9s
bG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRh
dGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246
OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vz
c2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlz
LCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZN
b3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBr
ZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBt
ZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTcxNSw5ICs3MTUsOSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3Rh
dHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbgogICAgICAgICB9
KTsKIH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBl
IG1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9p
ZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBl
LCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewotICAgIGVu
cXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKKyAgICBlbnF1ZXVlTWVzc2FnZSht
ZXNzYWdlVHlwZSwgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIHZvaWQgTWVkaWFLZXlTZXNzaW9u
OjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgK
aW5kZXggMzY1YWNlNWMwOTVlN2RjMGM1NzFlNzZjY2YyYzA3YWFmYzYyYmFhNi4uY2YzYTg0OThm
ZDQ1MGVmMTgyNzRhODA5MjE2NjU4ZjIzNDgyZWFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC04Nyw3
ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZVBy
b3h5PElETFVuZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlzZSYgY2xvc2VkKCkgeyByZXR1cm4g
bV9jbG9zZWRQcm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBj
b25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CisgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxS
ZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1
c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQogCiAgICAgdW5zaWduZWQgaW50ZXJu
YWxJbnN0YW5jZVNlc3Npb25PYmplY3RSZWZDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFu
Y2VTZXNzaW9uLT5yZWZDb3VudCgpOyB9CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgog
CiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0
dXNlcyhDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvciYmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1l
c3NhZ2VUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBm
aW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQw
LDEwIEBAIHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwog
ICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lv
bj4gbV9pbnN0YW5jZVNlc3Npb247Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOworICAgIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKICAgICBkb3VibGUgbV9maXJzdERl
Y3J5cHRUaW1lIHsgMCB9OwogICAgIGRvdWJsZSBtX2xhdGVzdERlY3J5cHRUaW1lIHsgMCB9Owot
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtl
eVN0YXR1cz4+IG1fc3RhdHVzZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKIAogICAg
IHVzaW5nIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKFBsYXRmb3JtRGlz
cGxheUlEKT47CiAgICAgRGlzcGxheUNoYW5nZWRPYnNlcnZlciBtX2Rpc3BsYXlDaGFuZ2VkT2Jz
ZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5jcHAKaW5kZXggMzY3ZjMxZDE4NmI1MTYzOWE5Yzc0MjEzZjBjZjhlNmYyZjhkMjZl
YS4uNmE1NGRjZDI5M2NmMzI5MTE1NzA5ZTk5NTAxZDkzYjcyMDAyMWEyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAt
MTc3LDcgKzE3Nyw3IEBAIGJvb2wgTWVkaWFLZXlzOjpoYXNPcGVuU2Vzc2lvbnMoKSBjb25zdAog
ICAgICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5p
dGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIGZvciAoYXV0
byYgY2RtQ2xpZW50IDogbV9jZG1DbGllbnRzKQogICAgICAgICBjZG1DbGllbnQuY2RtQ2xpZW50
VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChpbml0RGF0YVR5cGUsIGluaXRE
YXRhLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleXMuaAppbmRleCA5MWExYTA3MTE0MzNiZTI0N2RkMmE4NWM1ZjRhZDA5Mzhh
MDlhN2FjLi44NjQ1MmQ4OGIyNDlhZWViYTdjZjQyZGVmOThlYzU2MWQ5M2Y3ZGYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAg
LTg2LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlhS2V5cyhEb2N1bWVudCYsIGJvb2wg
dXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNv
bnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0
YW5jZT4mJik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0
IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNzg3
NWQ3YTIxYjRhNTM3NGU5NzVjZmY4OTg2YTAwZDFiNmEzY2ZjOS4uN2ZhYzM1ODNhMWQxNDg4YjRi
ZjU3NTQ3ZWEyNDUzOTdhYzFjZWQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTM4OCwxMiArMzg4LDEyIEBAIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogewogICAgIG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsKIH0KIAotUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCitSZWZQdHI8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRh
KCkKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCBj
YmVkMGYwMzNkOTEzY2QxY2JiYmJhMDFiODI3NDJlMzg0NjE2M2FiLi5hOTlmMGEwZjkyN2IxZTVl
MmM3NGMzYmQyMmVhNjI2OTlmMTJiMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KICAgICBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHZvaWQgc2V0RGF0YShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsK
KyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAg
ICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKICAgICBTdHJp
bmcgdGFrZUFzVGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuY3BwCmluZGV4IDdjZWEzMmE5NThmMTRiZDhjODc4YmM1MWY0OWMxZDFhZGE2ZDZhMzcu
LmJhY2VjNWJkYTE3N2I0ZjcyNDEyMzY1ODJjZWYwODYxMzRlMTQ0YmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBGZXRjaExvYWRlcjo6c3RvcCgpCiAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKIH0K
IAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0cmVh
bWluZygpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hMb2FkZXI6
OnN0YXJ0U3RyZWFtaW5nKCkKIHsKICAgICBBU1NFUlQobV9jb25zdW1lcik7CiAgICAgYXV0byBm
aXJzdENodW5rID0gbV9jb25zdW1lci0+dGFrZURhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCBmYzU0MTFmZDljYWU4M2ZiNWMxYjI5ODgwODUw
ZjVlMTA4ODRhMGQ0Li45MmU0ODFkZDFlYTdlYjYxZTBmYzMyYjc1YjBlOGI5NjgzZWRhODllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKICAgICBGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVudCYsIEZldGNo
Qm9keUNvbnN1bWVyKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkZldGNoTG9hZGVyKCk7CiAKLSAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBS
ZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKIAog
ICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEZldGNoUmVxdWVz
dCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IEJsb2ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwCmluZGV4IDkzNTJmNDU3NjdmZTdiNTMwMzMzODk1ZmUzNGI1Y2Q1ODJlYjE2
ZWQuLjQ0MDU3MDYxYWM1NGU2OGFhOWM1NmEzNDA0ZmYzYmE1ZDliYzdmZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNTA3LDcgKzUw
Nyw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6ZmVlZFN0cmVhbSgpCiAgICAgY2xvc2VTdHJlYW0o
KTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAg
ICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICByZXR1cm4gbV9sb2FkZXItPnN0YXJ0U3RyZWFtaW5n
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4
IDMxYzU0NzBhMWFhODc5Yzc1OWRhYmQ2Y2MwOGVhMjlmOTBlYjQ1MzQuLmI4MDY0YzllN2I5YjE4
ZGZkY2U3ZTY2NTI0NGIzODQzYjk0NTJjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICB2b2lkIGNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYm
KTsKIAotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1p
bmcoKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0
U3RyZWFtaW5nKCk7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIHRha2VOb3RpZmljYXRp
b25DYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9yZXNwb25zZUNhbGxiYWNrKTsgfQogICAg
ICAgICBDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayB0YWtlQ29uc3VtZURhdGFDYWxsYmFjaygp
IHsgcmV0dXJuIFdURk1vdmUobV9jb25zdW1lRGF0YUNhbGxiYWNrKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmlu
ZGV4IDg3NGFhN2YwYjE4ZjBlZTc1ODgwYmE1ZjVlZjY3ZDQ3YmZjMmIyYjQuLmJkMTA2NzE2MWEw
ZDI1YjkzZGU0ZjdhZTZiNDdmNWY2MWRmYzM0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3
IEBAIHZvaWQgQXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ly8gU2FuaXRpemUgdGhlIGltYWdlIGJ5IGRlY29kaW5nIGl0IGludG8gYSBCaXRtYXBJbWFnZS4K
LSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1f
Y2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGJ1ZmZlclRvU2FuaXRpemUg
PSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgYXV0byBiaXRtYXBJbWFnZSA9
IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0YShXVEZNb3Zl
KGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggODZhYjg4OWJjMGVhMTVh
NTQ3MzU3ZmI2NGRmZjlmMTBiODYyZGM1NC4uMjljY2Y5NzM1NWUyNWZmYjk3YWVhODg0MzU3NmJk
ZmYxZmQwMGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTQwMiw3ICs0
MDIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDogUGFzdGVib2Fy
ZEZpbGVSZWFkZXIgewogICAgICAgICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5cGVGb3JGaWxl
KGZpbGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2b2lkIHJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Y29uc3QgU2hhcmVk
QnVmZmVyPiYmKQogICAgIHsKICAgICAgICAgdHlwZXMuYWRkKHR5cGUpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAxNWM1YzM5MGMxYjU0ZjBlMzNiNWU5MjQ2NGM1M2Q1
MmM5MjFlMjZiLi4xYjYzMzQxZmQ1MmFhY2IwMjQzNjhmZWVlOWNkNWZjZGY3NThjZTE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MTYwLDcgKzQxNjAsNyBAQCBQcm9taXNlZEF0
dGFjaG1lbnRJbmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVt
ZW50KQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25h
bFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7
CisgICAgVmVjdG9yPFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRp
ZgpAQCAtNDE2OCw3ICs0MTY4LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnBy
b21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBhdHRh
Y2htZW50LT51bmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5cGVzKSwgV1RG
TW92ZShhZGRpdGlvbmFsRGF0YSkgfTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5j
bGllbnQoKSkKICAgICAgICAgY2xpZW50LT5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGlk
ZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgV1RGTW92ZShkYXRhKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBjNGI0NjY5ZGNlZjkwNzJkNGVlOWJmYjAyZTQ2
MWE1MTkwNzhmZjFhLi5lYzg0Yzc0ZDczMGQ0M2MwZDY3YmQzZTQ0NjMyMWZjMWUxY2IzOWYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU2Niw3ICs1NjYsNyBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5z
ZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZl
cnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7Cisg
ICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJl
Zjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGZpbGVEYXRhKTsKICAgICB2b2lkIHJl
Z2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJik7CiAg
ICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogICAgIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKQEAgLTU3Niw3ICs1
NzYsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYpOwogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVu
dCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNo
bWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPGNv
bnN0IFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKaW5kZXggNGFmOTcwYjFmNWI0MjUwYzk1
MmQ0MDlhODcxOGE4ODAzNGY0ODc1Yy4uZWE1ZWUzNTYxMWRkMDA5MGMzNjIzZjBhZjZmMmVhOTJh
NjExMTk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVh
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKQEAg
LTcyLDE2ICs3MiwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IHsgfSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFk
RmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFk
SFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFnZShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wg
cmVhZEltYWdlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsg
fSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
dGl0bGUpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2Vi
QXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFBy
ZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUo
Y29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChjb25zdCBT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoY29uc3QgU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9u
U2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKICNlbmRpZgog
fTsKIApAQCAtOTksMTYgKzk5LDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgo
Y29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiA9IHsg
fSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRGaWxlUGF0aHMoY29u
c3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
cmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNp
emUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkSW1hZ2Uo
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBy
ZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVh
ZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoY29uc3QgU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChjb25zdCBTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKaW5kZXggNTQ5ZWI3ZDJlNGMw
NzU0OGU0YThjOWVhMjRlYzIwZTRmMjFiZmEyNS4uYmZmNTM0NTI1OTRhZjRkODE4MDRmNmRmZjg2
N2UyMzRmMWE3ZjZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMzksOSArMzksOSBAQCB2b2lkIFdlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUpCiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFt
ZSkpOwogfQogCi12b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Y29uc3Qg
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRl
KGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZmZXItPmV4dHJh
Y3REYXRhKCksIHR5cGUpLCBmaWxlbmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVh
dGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+Y29w
eURhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCmluZGV4IDVjNTI5ZGQ3
YzhlY2MwMDA0OGZjYjRkMTU4MTQ2MzViMjRkOTBiYjcuLmMxMDkxZGNkNjhlMTRmNGRiMmMxY2Rk
NWU4OGQ1MzI0OTM4NDY0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewog
ICAgIH5XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKTsKIAogICAgIHZvaWQgcmVhZEZpbGVu
YW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxjb25zdCBTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVm
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgVmVjdG9yPFJlZjxGaWxl
Pj4gZmlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRv
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpp
bmRleCA1ODU0MGZhNzI2ZTU2OTViN2I1MmMyOTY5YTM4MTdmZjgyNzAyMDY5Li40NTRlMThkMjk3
NDI4OGJmNzZiOWMzZTA2MzFmYTlkYTExMWYyYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTg0LDcgKzg0LDcgQEAgU3RyaW5nIEVkaXRvcjo6
c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAKLXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChF
bGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVz
QW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91
dFR5cGVzLCBWZWN0b3I8UmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewog
ICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsK
ICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRU
eXBlcywgb3V0RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0KaW5kZXggNWE2MDU5NGI1ZTQ4MmRkMmE1YTdiYzIwN2U5YmIyNjQwMmQyMGVlOS4u
NzhiZjI0YzE3ZjczODA2YTMzYzExNGY1ODNiZjljZjRiMWMyYjAxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjMyMCw3ICsyMzIwLDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1
bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBl
cj4gZmlsZVdyYXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkg
ewotICAgICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2Fj
aGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgIGlmIChhdXRvKiBzaGFyZWRCdWZm
ZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgICAgIHJldHVybiBh
ZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMjBkMWNlNTYzNGVhM2M3MWRhNTIyZWMwYTI0MzE2M2Qy
NWY0OGQ5My4uNjdmZjk4Y2JlMWEwMDUxYTljYWE3MTAwM2JmNmM0YmExMzlhMDdlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVB
dHRhY2htZW50RGF0YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVm
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJl
ZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRG
b3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRF
bGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC0y
NTcsNyArMjU3LDcgQEAgc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3UKICAgICAgICAgZnJhbWUuZWRp
dG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVVbmlx
dWVJZGVudGlmaWVyKCksIGNvbnRlbnRUeXBlLCBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFtZSwg
YnVmZmVyLmNvcHlSZWYoKSk7CiAgICAgICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJ
bmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICAgICAgYXV0
byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgICAg
ICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNy
Y0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRv
Y3VtZW50LCBidWZmZXItPmV4dHJhY3REYXRhKCksIGNvbnRlbnRUeXBlKSkpOworICAgICAgICAg
ICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpz
cmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZk
b2N1bWVudCwgYnVmZmVyLT5jb3B5RGF0YSgpLCBjb250ZW50VHlwZSkpKTsKICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICAg
ICAgICAgIGlmIChwcmVmZXJyZWRTaXplLndpZHRoKQogICAgICAgICAgICAgICAgIGltYWdlLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBB
dG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTI2OSw3ICsyNjks
NyBAQCBzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VB
dHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdQogICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVu
ZENoaWxkKFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpj
cmVhdGUoJmRvY3VtZW50LCBidWZmZXItPmV4dHJhY3REYXRhKCksIGNvbnRlbnRUeXBlKSwgZGVm
YXVsdEltYWdlQXR0YWNobWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURp
c3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6
OmNyZWF0ZSgmZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+Y29weURh
dGEoKSwgY29udGVudFR5cGUpLCBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFtZSksIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIGZy
YWdtZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICB9CiAgICAgcmV0
dXJuIGZyYWdtZW50OwpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZl
IHsKICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dN
SU1FVHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4
dHJhY3RNYXJrdXBBbmRBcmNoaXZlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBz
dGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkK
IHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1
ZmZlcik7CiAgICAgaWYgKCFhcmNoaXZlKQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBTdHJp
bmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0
aW5hdGlvbkRvY3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1
bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywg
bWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkV2ViQXJjaGl2ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAo
ZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2Vi
QXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRl
cjo6cmVhZFdlYkFyY2hpdmUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTIsNyArNjEy
LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcm
IHN0cmluZykKICAgICByZXR1cm4gIW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRSVEZEKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlm
IChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYyNiw3ICs2MjYsNyBAQCBib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRG
RChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSw3ICs2MzksNyBAQCBib29sIFdlYkNv
bnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5
cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjUzLDcgKzY1Myw3IEBA
IGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRG
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFk
UlRGKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1l
bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc2LDcgKzY3Niw3IEBAIGJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRJbWFnZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1
bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwpAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgY29uc3QgU3RyCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cygpKQogICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNo
bWVudChmcmFtZSwgZG9jdW1lbnQsIFdURk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJl
c2VudGF0aW9uU2l6ZSkpOwogICAgIGVsc2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJh
Z21lbnRGb3JJbWFnZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9j
dW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgdHlw
ZSkpLCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSk7CisgICAgICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0
VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPmNvcHlEYXRhKCks
IHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogCiAgICAgcmV0dXJuIGZyYWdt
ZW50OwogfQpAQCAtNzQ5LDcgKzc0OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIHJldHVybiBhdHRhY2htZW50OwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVtZW50
PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBh
dHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1l
LCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCiB7CiAgICAgUmVmIGRvY3VtZW50ID0g
KmZyYW1lLmRvY3VtZW50KCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRF
bGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC04
MzYsNyArODM2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6
ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IDk3
NTJmYTM3YjdhNmMwMjcxNDFiZDBhOGY5YWU5N2VhNWIxOGJiODQuLjc4NGI0OGIyYTIzMTA3ZWNk
NmI1OWE2NmU3OTMxYmFlZTllMTFjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgYm9vbCBtaW1l
VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlKG1pbWVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKG1pbWVUeXBl
KTsKIH0KIAotdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdl
V2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xv
c2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChidWZmZXItPmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgSFRNTEF0dGFj
aG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYg
Y29udGVudFR5CiAgICAgaWYgKCFtaW1lVHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZUF0dGFj
aG1lbnQobWltZVR5cGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBlbmNsb3NpbmdJbWFnZS0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERP
TVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQo
KSwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkpKTsKKyAgICBlbmNsb3NpbmdJbWFn
ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIs
IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZSgmZG9jdW1l
bnQoKSwgYnVmZmVyLT5jb3B5RGF0YSgpLCBtaW1lVHlwZSkpKTsKIH0KIAogdm9pZCBIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVt
Ym5haWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAppbmRl
eCBiMGYxOWU4Y2QyNGY0ODI5YWJkMGUxNDYwZWIxMWY4OWE1ZTNiZjkyLi4zMjY0NGRkM2ZlYmIx
ZGQ5ZjM2MWMzNTBmOTA4MTg2ZmQ3MDE1MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmlu
YWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50VHlw
ZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5h
aWwpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1h
Z2U+JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNDk2YzZhOWNiMjNhNmEyYTk1MzkzZjhhNDZl
ODYyMDk0NzcwYWFiOS4uN2YzYjQzMDBmMzdhYzYzN2Q0NTM1ODI5NjcyN2UxNDczYzU1MjY3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yOTUyLDcgKzI5
NTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBs
YXliYWNrSWZOZWNlc3NhcnkoKQogICAgIGF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3Nh
cnkoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZElu
aXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBT
dHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEpCiB7CiAgICAgbWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJl
ZChpbml0RGF0YVR5cGUsIGluaXREYXRhLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMDA0OTE4NjEzZWI5MzExMDYy
M2IwM2JhZmY5NzYxZDYzMGM0OGNkOS4uM2IyNzBkOTk3MDJhNWU4YzZjZTQ0OWMxZTZmNDEyNGEx
OWNkZmQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTcxOSw3
ICs3MTksNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ0RNQ2xpZW50CiAgICAgdm9pZCBjZG1DbGll
bnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgZmluYWw7Ci0gICAgdm9pZCBj
ZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNkbUNs
aWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwg
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDRkMTBmYjA1NzcyNDYy
ODU3Njg4NTAzZDY2NDc2OTdmMGNiMDRiYTEuLmY0MzhmYTRiMTE3YjliNmUxYmQ5MTc3NjBkYjg5
MjkzMjBiYTNiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZygpCiAg
ICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUo
KTsKIAotICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9h
ZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICBpZiAoYXV0byBidWZmZXIgPSBsb2FkZXIo
KS0+bWFpblJlc291cmNlRGF0YSgpKQogICAgICAgICBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1h
Z2UoKS0+dXBkYXRlQnVmZmVyKCpidWZmZXIpOwogCiAgICAgaW1hZ2VVcGRhdGVkKCk7CkBAIC0x
NTEsMTIgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsK
ICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQoKSAmJiBtX2ltYWdlRWxlbWVudCkgewogICAg
ICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSAqbV9pbWFnZUVsZW1lbnQtPmNhY2hlZElt
YWdlKCk7Ci0gICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gbG9h
ZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKLQotICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbXVs
dGlwYXJ0IGltYWdlLCBtYWtlIGEgY29weSBvZiB0aGUgY3VycmVudCBwYXJ0LCBzaW5jZSB0aGUg
cmVzb3VyY2UgZGF0YQotICAgICAgICAvLyB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBuZXh0
IHBhcnQuCi0gICAgICAgIGlmIChkYXRhICYmIGxvYWRlcigpLT5pc0xvYWRpbmdNdWx0aXBhcnRD
b250ZW50KCkpCi0gICAgICAgICAgICBkYXRhID0gZGF0YS0+Y29weSgpOworICAgICAgICBhdXRv
IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogCiAgICAgICAgIGNhY2hlZElt
YWdlLmZpbmlzaExvYWRpbmcoZGF0YS5nZXQoKSwgeyB9KTsKICAgICAgICAgY2FjaGVkSW1hZ2Uu
ZmluaXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcAppbmRleCAzMjhlYmU3ZTY0MTE5NWU1YTQ2ODUwMjc1NTkxMGY3OGM0OGI1OGQ4
Li40MGJmZWQ3YTdjOWZkMTMxMjYzOWY5NTAzNDliZmE3NTVmZmRiMzNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTI2Nyw3
ICsyNjcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRDYWNoZWRSZXNvdXJjZShj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJlc291cmNlRGF0YS0+c2V0
Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNo
YXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUp
CiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1
ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggYzhjZWQxMmE2NDA3
ZmRjZDU3NGVjYzJhNzgxOWVkZTY2MzgwM2RhYy4uODYyNzRhMzU2Y2ZmNTdhMGJkNTBkZDQ1MjQ2
ZjM2Y2EwMDM2OTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKQEAgLTg4LDggKzg4LDggQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8
VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5j
b3B5UmVmKCk7IH0KICAgICAgICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKTsgfQogCi0g
ICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KLSAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpOyB9CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KKyAgICAgICAgdm9p
ZCBzZXRCdWZmZXIoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CiAKICAgICAgICAgY29uc3Qgc3RkOjpv
cHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVy
biBtX2NlcnRpZmljYXRlSW5mbzsgfQogICAgICAgICB2b2lkIHNldENlcnRpZmljYXRlSW5mbyhj
b25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbykgeyBt
X2NlcnRpZmljYXRlSW5mbyA9IGNlcnRpZmljYXRlSW5mbzsgfQpAQCAtMTIwLDcgKzEyMCw3IEBA
IHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9kYXRhQnVmZmVyOwotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNh
dGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxw
dHIgfTsKICAgICAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlIHsg
SW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlIH07CkBAIC0xNDQsNyArMTQ0LDcgQEAg
cHVibGljOgogICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWF5
YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lk
IGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJj
ZSopOwotICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOworICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25z
dCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0
KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1v
dmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGE0ZmZk
MTM2MWNkZGU1YWI3ZDk3M2NkMDBkMTlhOTEwYWU5ZWQyOWYuLjUwMmZiODIzYmJiOThkMTFmODBj
NjA4YmVmODRmN2Q3ZjczYWQ1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMCwxMyArMTAwLDEzIEBA
IHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHVuc2lnbmVk
IHNpemUsIGNvbnN0IFN0cmluZyYgdGV4CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWlu
UmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJp
bmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsK
KyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gIGJ1ZmZlciA9IGZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gSW5zcGVjdG9yUGFn
ZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5j
b2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVy
Q29udGVudChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0
cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQog
ewogICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVu
Y29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDNk
NWU1NjZkYmUwYzVlYzExZDllOGRmNjdmY2YwYTcwOTg4YTJmOGYuLjVhYzk2MTkyZjQ2NDVjOTUz
ZmU2OTlmNDhkNzQ1ZTdiNmE2ZDhiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UsCiAgICAgfTsKIAotICAgIHN0YXRpYyBib29sIHNo
YXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcq
IHJlc3VsdCk7CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0aWMg
VmVjdG9yPENhY2hlZFJlc291cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUqKTsK
ICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJy
b3JTdHJpbmcmLCBGcmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNl
NjRFbmNvZGVkKTsKICAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNlKENh
Y2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApp
bmRleCBlYzUwZGU5MGRkZWQwNzQ2MDRkZDE4N2FlOWRlNjExMjZhNmFkMTI0Li43NWZjNGM2MmRm
MWFkN2VmZGU1YTUyMzNjZDZlNGQ3YzkzMTM0NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBEb2N1bWVudExvYWRlcjo6fkRv
Y3VtZW50TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRh
KCkgY29uc3QKIHsKICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+Y29weSgpOwpAQCAtMTY3MSw3ICsx
NjcxLDcgQEAgQXJjaGl2ZVJlc291cmNlKiBEb2N1bWVudExvYWRlcjo6YXJjaGl2ZVJlc291cmNl
Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBE
b2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBhdXRvIGRh
dGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvJiByZXNwb25zZSA9IHRoaXMtPnJlc3Bv
bnNlKCk7CkBAIC0yMjg5LDcgKzIyODksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydElj
b25Mb2FkaW5nKCkKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5nZXRMb2FkRGVjaXNp
b25Gb3JJY29ucyhXVEZNb3ZlKGljb25EZWNpc2lvbnMpKTsKIH0KIAotdm9pZCBEb2N1bWVudExv
YWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBs
b2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGljb24gPSBtX2ljb25zUGVuZGluZ0xv
YWREZWNpc2lvbi50YWtlKGxvYWRJZGVudGlmaWVyKTsKIApAQCAtMjMxMCw3ICsyMzEwLDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lz
aW9uLCB1aW50NjRfdCBsb2FkSWRlbnQKICAgICByYXdJY29uTG9hZGVyLT5zdGFydExvYWRpbmco
KTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9h
ZGVyJiBsb2FkZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3ZvaWQgRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhlIERvY3VtZW50
TG9hZGVyIGhhcyBkZXRhY2hlZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMgc2hvdWxk
IGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGMyYmVhNmY2YTY5YjgzNjQ3MmMw
YWZmN2EwZDcwNzAzOTZiYTZjMmIuLjBhNzMwNTJlZGNhZWIxMWY4ZDcwYzhmNTJmYzc1MjQ3ZjQw
NjBiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0xODEsNyAr
MTgxLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZyYW1l
TG9hZGVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3VicmVzb3VyY2VMb2FkZXIqIG1h
aW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJj
ZURhdGEoKSBjb25zdDsKICAgICAKICAgICBEb2N1bWVudFdyaXRlciYgd3JpdGVyKCkgY29uc3Qg
eyByZXR1cm4gbV93cml0ZXI7IH0KIApAQCAtNDA4LDggKzQwOCw4IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
KT4mJik7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7Cisg
ICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMo
KSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29uczsgfQogCkBAIC02MzgsNyArNjM4LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9Owog
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNvbnNQZW5kaW5nTG9hZERlY2lz
aW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4+IG1faWNvbkxvYWRlcnM7Cisg
ICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKICAg
ICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0ljb25zOwogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA4MzU5
ZGY3ODIwYzc2N2E1OWNiNDUxOTE1ZWQ1ZmExNGUxYWZiOTM2Li5mZDdkMTFjZTZiNjA2OTcyNzQ4
MjE4ZTlkOGIyYzRmZThjNGQxMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJp
Z2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmlu
YWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsIHsg
fQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRy
PGNvbnN0IFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlk
YXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAg
dm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jl
c3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDFhZGMzYzNjZGI5YmFmZjljNDMzNjIxMzZkZTg3YzYwNTcyZmZmYmQuLmExYmYwYTAx
NzgxNGFiNTg4ZGQzN2QyOTM0OGZkNGM0M2MwODBmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBkaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
YnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAocmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5k
ZXggZTU1MWQwZGMyMTk4MWI2ODljNDRhYzZkNjRlYTE2ODI4NGVkOTYyNy4uYzU5MzJkOWU1Njk4
NmZkMmQxMWI0ZWE3YmIwM2NlZTlhM2FmYTRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkZWxpdmVy
UmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZURhdGEuaAppbmRleCBhOGE0OWI0N2Y5MjczNDI3NGJhNGNlYWJjMTcwN2ZlZmE3YjY2NDBkLi5m
OWU2MDlmYWY1YjQ0MzM2Yjg3MDljNjYzYjYxYjcwYjU3MzA0MjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFN1YnN0aXR1dGVEYXRhKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVSTCYgZmFpbGluZ1VS
TCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25IaXN0b3J5VmlzaWJp
bGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQorICAgICAgICBTdWJzdGl0dXRlRGF0
YShSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBV
UkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9u
SGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKICAgICAgICAg
ICAgIDogbV9jb250ZW50KFdURk1vdmUoY29udGVudCkpCiAgICAgICAgICAgICAsIG1fZmFpbGlu
Z1VSTChmYWlsaW5nVVJMKQogICAgICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAt
NjEsNyArNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAg
ICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9jb250ZW50OworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9jb250ZW50OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgICAgICBSZXNvdXJjZVJl
c3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3No
b3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6Okhp
ZGRlbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4
IDNkMTkyODYyZjI3NzI5YjJmMzhkYjU0YmQ4MzY3OTk1MjVjMDE5ZDMuLjk2NDcyMjAyYjgzZjZh
MWRmOWE2OTg4NTI0ODJjNDQ0NzRhNTE2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDE0ICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9
CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19yZWZlcmVuY2VfY2FzdDxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYg
eyAqbV9kYXRhLmdldCgpIH0pOyB9CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIHsgbV9kYXRhLmFwcGVuZChidWZmZXIpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsg
bV9kYXRhLmVtcHR5KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwg
bV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgotICAgIFN1YnN0aXR1dGVSZXNvdXJjZShV
UkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEpCiAgICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICAgICAsIG1fcmVz
cG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IDI1NmU4OWIyMTFiMzhiMmQyMWRjZDY2NTc4MjY5
ZTY2MDczNjczMjcuLmZkMDEyNTJhNWFiNDEyNmZkNTEzYmViZDEwNWY3NmI3MDBmNzVkODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKK1JlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAg
ICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIGlmICghYnVmZmVy
KQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgYwogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgV1RGTW92
ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHBhdGgp
KTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkK
K0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHJlc3BvbnNlKSwg
V1RGTW92ZShkYXRhKSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuaAppbmRleCBjMjg4ZTcwMzZjNjc2MmFkNDg3NmJhODgxNDY5YTc1ZDIy
MzdlMWJhLi44MWMwZmE4OTE5NTVmODgxYjQyNTVjMjMyYjJkYWIyMTRhMmRkNzIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRmFsbGJhY2sg
PSAxIDw8IDQKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQg
dHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJlZjxB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBT
dHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKIAog
ICAgIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAppbmRleCA2YjllN2UyOTVmZDZmYjIwZmYwZDc0ZmRjZjIzZmM2NjAwYTYwMDNmLi4x
NzdjNDM0N2UzYTkxMTgyMjNlMjUxOTI5NGYzN2UwNzMzY2U1YjZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKQEAgLTEyNzIsNyArMTI3Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvCiAgICAg
cmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImF1ZGlvLyIp
IHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInZpZGVvLyIpOwog
fQogICAgIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVG
aWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQor
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQogewog
ICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXggNDEwMmExODA4
YjQ1NTU3YjY0NWUzNmU3ZTY4MWZjNGM2ZDIwN2NlMi4uZTEyYTA0MmU0YTM0ZDMxMmNjNTI3ZWJk
NGFlMDdmMWRmYTZlODM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
Kik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKik7CiAgICAgdm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29s
IHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBmaWxlRXh0ZW5zaW9uKTsKKyAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVj
dG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsK
IAogICAgIHZvaWQgbG9hZE1hbmlmZXN0SG9zdEhhc2hlcygpOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCmluZGV4IDRlZjljZDY2
YmQwODhiNzRjMDQ2YzA2OTBkMWU5ZDNlNWUzMzYwZmQuLmVlYjAxNjZkM2VhNThkYmNmMDQwMzNh
MGU4Yzc0MmFlM2VlZjNlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXR5cGVkZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9u
KGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKK3R5cGVkZWYgUmVmUHRyPEFy
Y2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJhd0RhdGFDcmVhdGlv
bkZ1bmN0aW9uKiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBBcmNoaXZlTUlNRVR5cGVzTWFw
OwogCiAvLyBUaGUgY3JlYXRlIGZ1bmN0aW9ucyBpbiB0aGUgYXJjaGl2ZSBjbGFzc2VzIHJldHVy
biBSZWZQdHIgdG8gY29uY3JldGUgc3ViY2xhc3NlcwogLy8gb2YgQXJjaGl2ZS4gVGhpcyBhZGFw
dG9yIG1ha2VzIHRoZSBmdW5jdGlvbnMgaGF2ZSBhIHVuaWZvcm0gcmV0dXJuIHR5cGUuCi10ZW1w
bGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2
ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNo
aXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0
ZSh1cmwsIGJ1ZmZlcik7CiB9CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6
OmlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFt
aW1lVHlwZS5pc0VtcHR5KCkgJiYgYXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBl
KTsKIH0KIAotUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJM
JiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCitSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKaW5kZXggNTU2NDUx
NWM5ZTBkOWQwMzNiNzkwYzc0NzI4NWEyNTg1M2FiZTAyZC4uMmFkZTc4MmMyNTVkNGM3NGZiZWQ0
NWVmYjk1MGVjMGE3NTUzODU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBBcmNoaXZlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgaXNBcmNoaXZlTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFJlZlB0cjxB
cmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVh
dGUoY29uc3QgVVJMJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJLbm93bkFyY2hpdmVN
SU1FVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
Y3BwCmluZGV4IDA3MzgzOTRhODI4NzE0YWEwYjkwZWU3NTA3OWQ0ODZmNWIwZTg2OTQuLmJkN2Y4
NTUxYzhmYmFhMTljMDE2OGYyZmM3ZGYxMWZkYzkwYWZmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcApAQCAtMzMsNyArMzMsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hp
dmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1
dGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdU
Rk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5j
b2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291
cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29ucwogewogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNy
ZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NCw3ICs1NCw3IEBAIFJl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJjaGl2ZVJl
c291cmNlKGRhdGEucmVsZWFzZU5vbk51bGwoKSwgdXJsLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5n
LCBmcmFtZU5hbWUsIHJlc3BvbnNlKSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1Jl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUo
ZGF0YSksIHVybCwgcmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFt
ZSgpLCBTdHJpbmcoKSwgcmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAppbmRleCAwNTQ4ZWY3MjFlZmQyN2MwMGNlOTNkMTIy
NzBlY2VjNDZjMDJhZjk0Li44ZTQ4YzllODI5YjQ0ZjEzNzEwZWI2N2JhNjg1ODg3NGMxOGI3NDNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
aApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmVS
ZXNvdXJjZSA6IHB1YmxpYyBTdWJzdGl0dXRlUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAorICAgIHN0YXRpYyBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsCiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVzb3VyY2VS
ZXNwb25zZSgpKTsKIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRJ
Z25vcmVXaGVuVW5hcmNoaXZpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElnbm9yZVdoZW5V
bmFyY2hpdmluZzsgfQogCiBwcml2YXRlOgotICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgQXJjaGl2ZVJlc291cmNlKFJlZjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFN0
cmluZyBtX3RleHRFbmNvZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGVkNzZmYjhhOTE4NjliMTZjMzg0
NzE0ZTA1MjM3YjIzM2UzOWRlYi4uY2ZlYWQyZGI1N2Q2YWY3OTVjYzVkZWZjYzdlNWQ3MTc4NWE5
ZTVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTI0OCwxMiArMjQ4LDEyIEBAIFJlZjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWlu
UmVzb3VyCiAgICAgcmV0dXJuIGFyY2hpdmU7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFVSTCgp
LCBkYXRhKTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRl
eCA1YTA3YjEwYjRiZTZmODYyMDExYTc4MmE3ZGVkMjM2NzU5MjQzNjI2Li4zYzQyMzJlMTZlMjYw
ZTU1ZmZlYWM2ZmU3MzU1ZWY5ZTU5Yjc1ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0
cnVjdCBTaW1wbGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMg
QXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lX
ZWJBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3Qg
VVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoUmVm
PEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyY2UsIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291
cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+JiYgc3Vi
ZnJhbWVBcmNoaXZlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIEZ1bmN0aW9uPGJvb2woRnJhbWUmKT4mJiBmcmFtZUZp
bHRlciA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBjcmVhdGUoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGQwMTM5Zjg3YTA2Zjk2OTc4Yjc0
NzdlOWY0OTk5YzM0ZWE5Zjg2MjUuLmQ3NTBlM2MyODI2YTA2ZTgyM2NkNjEzMzhkNTI5NzQ2MWVk
NDA4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxBcmNoaXZlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFJlZjxNSFRNTEFyY2hpdmU+IE1I
VE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNSFRNTEFyY2hp
dmUpOwogfQogCi1SZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25z
dCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFy
Y2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdl
IG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgp
LnRvU3RyaW5nKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuaAppbmRleCAyZGZlODdlODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIw
NWM4ZGIxLi5lZjg3YmJmZDQ4NWIxNGExYjAxNzJkNjFiNDM2NjE0YTcyN2Y4YmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaApA
QCAtNDMsNyArNDMsNyBAQCBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgTUhU
TUxBcmNoaXZlIGZpbmFsIDogcHVibGljIEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8TUhUTUxBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2
ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0
aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZTUxODZlZmIwYjRmYTcw
Y2I2MDkzMWY0ODRlNTAwY2MxMGUwMGJjYi4uZDQ4ZmNkN2JjM2IyZjFiYjQ3MTM4ZjllYTJhMDk4
MDQ1ZjlmYWFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGlu
ZXNVbnRpbEJvdW5kYXJ5Rm91bmQoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIs
IGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCitNSFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICA6IG1fbGluZVJlYWRlcihkYXRh
LCAiXHJcbiIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxQYXJzZXIuaAppbmRleCAwZDYwNDM0M2YzZDdhZDE3OGNjMjIwMDNjOTc5YzIyZTUw
YTNiOTllLi4xMWI4YmRlYzllMWM0YjFkYzUxNzU1YjVhZDlhNmY1YzgwMGYyOGZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhU
TUxQYXJzZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IE1IVE1MUGFyc2VyKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqKTsKKyAgICBleHBsaWNpdCBNSFRNTFBhcnNlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik7CiAKICAgICBSZWZQdHI8TUhUTUxBcmNoaXZlPiBwYXJzZUFyY2hpdmUo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDlk
YmQ1Mzc5MzVlMGRkMGI3ZGJkNGUxMjM5M2FkMGU4MTQwZGQ5MWYuLjQ3Yzk4YzhmMjc1Zjg3MWUw
ZWZkZDNhZmRlOWUwMDUzYzk3ZDQyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgU3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1
bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElk
ZW50aWZpZXIoKS50b1N0cmluZygpOwogfQogCi1ib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3Vz
dG9tRm9udERhdGEoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYm
IGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTExMiw3ICsxMTIsNyBAQCBib29s
IENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAg
ICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
LCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ5
dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewog
ICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCmluZGV4IDEzNDY2Y2M5OWQwZDE5Y2JmM2Q4ZWYzZGZiZDk2ZjM0ZDBmODU0
MTEuLmUwNDA2NzgyMjI5MTc2MTVjMmYwZTVkOTQ0OGQxMWY3M2NmNGFkNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xv
YWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0
b21Gb250RGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0
Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9u
dERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9u
Q29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBG
b250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQm
KTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9y
bURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Ym9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0g
ICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJv
b2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJp
dmF0ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5k
ZXggODVmMTg4YmY3NWZmNWQyNmIyNDFjZGQ5MGU2ODcwOTkyM2I1Y2ZmZS4uMTk2Yjg1NmY1MzZi
Mjk5ZmU0YTlhMzM5MGY4ZDZkYjg1OTA0MzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICAvLyBXaGlsZSBtX2RhdGEgaXMgaW1tdXRh
YmxlLCB3ZSBuZWVkIHRvIGRyb3AgdGhlIGNvbnN0LCB0aGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBi
dWcgMjM2NzM2LgotICAgIG1fZGF0YSA9IGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cio+KCZkYXRhKTsKKyAgICBtX2RhdGEgPSAmZGF0YTsKIAogICAgIC8vIE5vdGlmeSBjbGllbnRz
IG9ubHkgb2YgdGhlIG5ld2x5IGFwcGVuZGVkIGNvbnRlbnQgc2luY2UgdGhlIGxhc3QgcnVuLgog
ICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CkBAIC0xMTMsNyArMTEz
LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQ
b2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsK
ICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZm
ZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcio+KGRhdGEpOworICAgICAgICBtX2RhdGEgPSBkYXRhOwogICAgICAgICBpZiAoZGF0YSkg
ewogICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVt
ZW50YWxEYXRhQ2h1bmsoKmRhdGEpKSB7CiAgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUo
ZGF0YS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKaW5kZXggZmQxZmM0NjA0ZjkyMWE2MWFjOWNmZjY4ZjM1OGY5MTUyZjBjYWM4MC4uODAz
YTE0ZjU5MTM4MzA1YjY0ZDIzYmQ2ZmUxOTdlYjdiZDYwYTNhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAg
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0zMzYsNyArMzM2LDcg
QEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4g
bV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2lu
YWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X2RhdGE7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
IAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAv
LyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaAppbmRleCBhMTIwNDRjNDE2ZDBkNDg2YWZlYzk5ZTFkMGUxMGVmYWYxZjlkYzgw
Li41ODE5YjdkMzY4MDYwYWVjYmI1MzBjMjNiNTE0ZjIwY2UwMWQ2ZTNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0
IFNpbXBsZVJhbmdlJikgPSAwOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0
IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVu
dFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNv
bnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogZmlsZVBhdGgg
Ki8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLykgeyB9CkBA
IC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVz
Rm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1
bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDAyMDAx
YWIzNDMwMThhNzMyNTU5OThmYzQ3NGNlYmZjNDlmOGM4NDIuLjYxOWIxMTAyNWRiZWU3YTVjZjE3
YzlmNTQ2MGFjY2QzN2EzNWJiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
Y3BwCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jl
c291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBpZiAo
IWltYWdlIHx8IGltYWdlLT5pbWFnZSgpID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gaW1h
Z2VSZW5kZXJlciA/IGltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlUmVuZGVyZXIpLT5kYXRh
KCkgOiAwOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiAgZGF0YSA9
IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+
ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBpbWFnZS0+aW1hZ2Uo
KS0+ZGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5
aW5nTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIu
aAppbmRleCBmYzY2YzM2NWEyZjI5YTRjNzhlNjA2MTllNDdhNzFjNzI1OGQ4ZmUzLi4wN2Q1ODMw
NjA1YmJjMmI5OWRhMzZkY2M2OWRmMDJkNGY4ZTMwOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBtX25vd1BsYXlpbmdJbmZvOwogICAgIHN0
cnVjdCBBcnR3b3JrQ2FjaGUgewogICAgICAgICBTdHJpbmcgc3JjOwotICAgICAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgICAgICBSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIH07CiAgICAgc3RkOjpvcHRp
b25hbDxBcnR3b3JrQ2FjaGU+IG1fbm93UGxheWluZ0luZm9BcnR3b3JrOwogICAgIGJvb2wgbV9z
ZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwCmluZGV4IGJhMTc4NzI0NzFhZTI4NjRmNzcwODJjNDdkNjdmMjYzZWQ1
ZGY5NTguLjAwYzVjMzY2MDhlMDFiOTZiZjVjZDA3YmViZGNmYzRjZjQzNmQ3OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFN0cmluZyBQ
YXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQog
ICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpCitSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKQogewogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKSkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5yZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUoKSwgY29udGV4dCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBmMmViOTcyMDE5YTQwMmViODhjZWZmOGY0N2Mz
ZTg2M2ZlMzQwMmM2Li40ZmMwNmRlNDliODQzNGE4ZTQyNjM3YjJiMjQyYjk0OGIzNmQzMzY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC04MywxNCArODMsMTQgQEAgc3Ry
dWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2Fy
ZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29sIGNhblNt
YXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hp
dmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8Y29uc3Qg
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxjb25zdCBT
aGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7
CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGll
bnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7Cisg
ICAgVmVjdG9yPFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTIwLDE3
ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQg
flBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7
CisgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsK
ICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4p
CiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7Cisg
ICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyBy
ZXNvdXJjZU1JTUVUeXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRy
PGNvbnN0IFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3Vn
Z2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMTU5LDE2ICsxNTksMTYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRGaWxl
UGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRI
VE1MKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCByZWFkSW1hZ2UoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXpl
ID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0
IFN0cmluZyYpID0gMDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVh
bCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJv
b2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRG
KFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNl
bnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZp
cnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAg
dmlydHVhbCBib29sIHJlYWRSVEZEKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgcmVhZFJURihjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHJlYWREYXRhQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUgPSB7IH0pID0gMDsKICNlbmRpZgogfTsKIApAQCAtMTgzLDcgKzE4Myw3IEBAIHN0
cnVjdCBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdmlydHVhbCB+UGFzdGVib2FyZEZpbGVS
ZWFkZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBT
dHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiAvKiB0eXBlICovKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Y29uc3QgU2hhcmVk
QnVmZmVyPiYmKSA9IDA7CiB9OwogCiBjbGFzcyBQYXN0ZWJvYXJkIHsKQEAgLTMwOSw3ICszMDks
NyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3Rl
Ym9hcmRJdGVtSW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJp
bmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUpOworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcm
IHR5cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7CiAK
ICAgICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dC5nZXQoKTsgfQpAQCAtMzQxLDcgKzM0MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmlu
Zz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJl
YWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAg
IFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5
Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCBiNGQ5YzU3NGRjYWU3ZTFkMDYzNjY2ODdmZDM1YWI4MjQ0
YTc4MGU1Li4zMzU5YzZkYjhhYTJjMDAyMjZjNmY2M2Q0MWRkODM0MjllYzM0MzRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzUsNyArMzUs
NiBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNz
IFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAtNTIsNyArNTEsNyBAQCBw
dWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Y29uc3QgU2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRo
bmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3Ry
aW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKQEAgLTYzLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlw
ZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2
aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJM
KGNvbnN0IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3Io
Y29uc3QgQ29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcyLDcg
KzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9y
TG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Y29uc3QgU2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFk
VVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmly
dHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJv
YXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VD
b3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC04Niw3ICs4NSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9y
PFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3
cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRh
dGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggOGUyYzhmYjky
ZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uZTBlMzIxOWQ5OGE4NDU2NWU4NTI2NTRm
Yjg2NWRmMTcwMzZkNDhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oCkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5T
bWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2Vi
QXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZv
cm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0Owor
ICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0
OworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0Owor
ICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAg
ICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0
YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAg
ICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBW
ZWN0b3I8UmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmlu
ZGV4IDhmZTkyNGRmZTU2YmMzYzk5NjY2ZWJmMDRmNzM1NDAxNTU1YWEzM2IuLmQ5Y2YxN2FiNzg1
OTNlZThhODVhNTY2MTllMWEyMGU4NjdmYzcyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVh
ZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNs
dWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC04Niw3ICs4Niw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJv
YXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3QgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRV
UkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwpAQCAtOTQsNyArOTQsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2Um
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29u
c3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Y29uc3Qg
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0
cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50
SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5o
CmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmM3YmFjZDY1
NzRlNzQ5NjgxNWQ4ODM5MWY2MDRmNGQ2Y2E4MzQyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTM4LDcgKzM4LDcgQEAgc3Ry
dWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5n
PiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRp
dGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+IGFkZGl0
aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDA5ZjEwNTJhMGYzMWVlOTcwNjEx
MDEzYjM5MzVmYjUzMDk1NTA5Ni4uZDI0ZjYwNmRlNjNkZGI0NmVkZjM3YjY1MmU0N2UyNjg4Mzk3
YmE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01NTks
MTQgKzU1OSwxMCBAQCBTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWlsZGVyKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcgogICAgIGluaXRpYWxpemUoYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCi1TaGFyZWRCdWZmZXJCdWlsZGVyJiBTaGFyZWRC
dWZmZXJCdWlsZGVyOjpvcGVyYXRvcj0oUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorU2hhcmVkQnVmZmVyQnVpbGRlciYgU2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0
b3I9KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBpZiAoIWJ1
ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9CiAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIGluaXRpYWxpemUoYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGFwcGVuZChidWZmZXIpOwogICAgIHJldHVybiAqdGhp
czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBjYWVmM2Yy
NjIwMDMzZGQ4Y2ZmMTU2MjNmMjNjNmI2YzliNTM0YjM3Li43ZjU3ZWI4NzFjMjJiYjk1ZGU4YjJm
YTQyZGViMzRmMjBmMTdhYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aApAQCAtMzA4LDYgKzMwOCw3IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKFNo
YXJlZEJ1ZmZlckJ1aWxkZXImJikgPSBkZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSB7IGluaXRpYWxpemUoV1RGTW92ZShidWZmZXIpKTsgfQorICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSB7IGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOyB9CiAgICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAg
ICAgOiBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPnsg
V1RGTW92ZShidWZmZXIpIH0pIHsgfQogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgaW5pdGlhbGl6ZShXVEZNb3ZlKGJ1ZmZlcikp
OyB9CkBAIC0zMTcsNyArMzE4LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fYnVmZmVyKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7
IH0KIAogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShTaGFyZWRCdWZmZXJCdWls
ZGVyJiYpID0gZGVmYXVsdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJCdWlsZGVy
JiBvcGVyYXRvcj0oUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KICAgICB2
b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKQEAgLTMzNSw3ICszMzYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CiAgICAgdm9pZCBlbXB0eSgp
IHsgbV9idWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQogCi0gICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyOyB9CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4
IDlkMDU1Y2UyN2Q4OGMzZDYyZTViZDFjZDQ2YWQ5MWY1Y2M0MzFmNDguLjhmYmEyMTQwNmNhMDU5
YWJhNGI4YzBjYzY0ZDRlNjI5ZGViMjc4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKE1IVE1MKQogCi1TaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9pdGVy
YXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXIt
PmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JF
bmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKQEAgLTQ0
LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwKIHsKIH0KIAotU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQo
YnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAg
ICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJh
dG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCmluZGV4IDFjNjQwOGQ0Yzcz
NmExYzRhNDVjZWU3YjNmNjk2NTdiYzlhMjYxNWEuLjhhOWQ0ZTVkYjU1NTAxYjdjMTM1MGIxNjQ0
MGIxODBhNjZlNDUyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuaApAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHsKIHB1Ymxp
YzoKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwg
Y29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOwotICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOworICAg
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7
CiAKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBWZWN0b3I8Y2hhcj4mKTsKICAgICB2b2lk
IHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCAxZDY1YmM0MDNhZDg1MjQzYzY3MjVlNzA0NDhk
NmNkYWRjY2NjZTFiLi5jZDZhMGFmMWFhODcyZjJhMDhhN2YxZTQ3M2MxNTdkMDg4Yzk1YzE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IE5vd1BsYXlpbmdJbmZv
QXJ0d29yayB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayYgb3RoZXIpIGNvbnN0CiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDA2
OTYxZmJhNDhhZDkxYjQyM2JjYTk4NWI2YzJlNWM2MjEwMWZjMmYuLmYyNTk3ODkwZTA5NWQxZmFm
YmEyZmJhOGI2NDk4NDJkYmE4NmVmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSw5ICsyMTEsOSBAQCBWZWN0b3I8U3Ry
aW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lm
IFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5H
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY29udmVydFRJRkZUb1BORyhjb25zdCBTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7
Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0
V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2Nd
IGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5T
RGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdG
aWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHBuZ0RhdGEpOwogfQpAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3Rl
Ym9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBl
czsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Y29uc3QgU2hh
cmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNr
KGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCAyZGU0MTkzNGRhMTk4NzlkNzVj
MGRmOGE4OWU2NGU1OTljMjlhZTAzLi45ZTM4ZWVjYTM5NTVhMGI1MTFmNmJlYTVhNWIxNjE1NTI1
OThjMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUluc3RhbmNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2VDbGll
bnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1
YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIC8vIEphdmFTY3Jp
cHQncyBoYW5kbGUgdG8gYSBDRE1JbnN0YW5jZSwgbXVzdCBiZSB1c2VkIGZyb20gdGhlCkBAIC05
OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxs
b3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0Nh
bGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUlu
c3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgK
aW5kZXggZDI1OTIyNWJhOWUwMmE2NGQwY2VjZDYxNTFmZGY5M2Y0ZjI0NjZhOC4uOGQyNThmYzU0
Yjk3NjkyNjM1YjMyNzdkNWYzODc4MzI5OGE0ZDg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgK
QEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lv
bkNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0YXR1
czsKLSAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVj
dG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4s
IEtleVN0YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0
dXNWZWN0b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdl
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9u
SWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB1c2luZyBQbGF0Zm9ybURpc3BsYXlJ
RCA9IHVpbnQzMl90OwogICAgIHZpcnR1YWwgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkg
PSAwOwpAQCAtNzgsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3VjY2VlZGVkLAogICAg
IH07CiAKLSAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVk
ZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNpbmcgTGljZW5zZUNhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2
aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0
ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKKyAgICB1
c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBzdGQ6Om9wdGlvbmFsPEtl
eVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hh
bmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBTdWNjZXNz
VmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUs
IFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUg
OiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5nIFJlbW92ZVNlc3Npb25E
YXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBz
dGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVl
KT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9y
ZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRl
eCA1MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBmLi5mNGNkOWU1Mjk5NjE2
NjUxNmY4NDYyM2JlZDFmNDA2ZDQ5MTFjZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03NCw3ICs3NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBz
YW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5
LmNwcAppbmRleCAyZGQ3ODAyODRhMjZjOTQ2NDhkOWYxMWYzMGYyMmNkOTI3OTExYjNiLi44OTA1
MDQ3ZGMxNTJlZDBhOTAwYWFkNjQyZjBmNDFhZjI1NmM5YjViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yMjYsNyAr
MjI2LDcgQEAgY29uc3QgUmVmUHRyPEtleUhhbmRsZT4mIEtleVN0b3JlOjprZXlIYW5kbGUoY29u
c3QgS2V5SURUeXBlJiBrZXlJRCkgY29uc3QKIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yIEtleVN0b3JlOjpjb252ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fa2V5cy5tYXAoW10oYXV0byYga2V5KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6
OnBhaXIgeyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9OworICAgICAg
ICByZXR1cm4gc3RkOjpwYWlyIHsgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KGtl
eS0+aWRBc1NoYXJlZEJ1ZmZlcigpKSwga2V5LT5zdGF0dXMoKSB9OwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggMzFhOWZkZmEwMmQ2ZDAwY2EyNjE4MjUy
ZGVkOTM1MzEzZGM1OGFhOS4uOTk3ZDM5MzQ3ZGVjZGRhOTRhZTg4Y2I2ZDc5N2VhMDY2YmM1ZjM0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtNDA3LDcgKzQwNyw3IEBAIGJv
b2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewog
ICAgIC8vIFZhbGlkYXRlIHRoZSByZXNwb25zZSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QuCiAg
ICAgaWYgKCFDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChyZXNwb25zZSkpCkBAIC00MzMs
NyArNDMzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5Ojppbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXIKICAgICBjYWxsYmFjayhzdWNjZWVk
ZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUuCiAgICAg
Y2FsbGJhY2soRmFpbGVkKTsKQEAgLTQ1NSw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VT
ZXNzaW9uPiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9CiAKLXZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBzdGF0aWMg
dWludDMyX3Qgc19zZXNzaW9uSWRWYWx1ZSA9IDA7CiAgICAgKytzX3Nlc3Npb25JZFZhbHVlOwpA
QCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpCiAgICAgICAgIH0pOwog
fQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICNpZiBMT0df
RElTQUJMRUQKICAgICAvLyBXZSBvbmx5IHVzZSB0aGUgc2VzaW9uIElEIGZvciBkZWJ1ZyBsb2dn
aW5nLiBUaGUgdmVyYm9zZSBwcmVwcm9jZXNzb3IgY2hlY2tzIGFyZSBiZWNhdXNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCA5ZTI3ZmU5MTJjNGRhMDY3ZmIyNmNhZmJjN2Y2YTY1MWRh
NDc1MjhiLi40NjhjZTQ3ZGRiYTI2YmFiZWMyZDA0YWUyODdjYjQxM2YyMzUyMWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIGJvb2wg
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBv
cnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5h
bDsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIH07CiAKQEAg
LTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50
YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxl
bWVudGF0aW9uVHlwZTo6Q2xlYXJLZXk7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAg
ICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAt
MTA5LDggKzEwOSw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDog
cHVibGljIENETUluc3RhbmNlU2Vzc2lvblByb3h5IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5j
ZVNlc3Npb25DbGVhcktleShDRE1JbnN0YW5jZUNsZWFyS2V5JiBwYXJlbnQpCiAgICAgICAgIDog
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkocGFyZW50KSB7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lv
bihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBD
bG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oCmluZGV4IGRjNWU1YTA3Y2IxYWEyNjJiMGRiNDg4NWZiZGNmMzY5ZTI1Njcy
ZWMuLjlhYTU2NjI4OTkwMjM0ZjAwZWVjOGUwNTg5MjI4YjYyNTkzNzA5ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAg
LTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7
CiAKICAgICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
Zm9udEZhY2VEYXRhOworICAgICAgICBSZWY8Y29uc3QgU2hhcmVkQnVmZmVyPiBmb250RmFjZURh
dGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikK
ICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggMzEwN2Q4YTIwYzJjMTA3
YmM0MDE4YjQ1YmZjYTE1ZjkzYmM3MjcxMy4uYmMzYTBkNDhjMzNiYjU2MTFiMjI5NTBkZTY0MDA3
NmMzM2FjYjExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgSW1hZ2U6OmlzUG9zdFNjcmlwdFJlc291cmNlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQogfQogCiAKLUVuY29kZWREYXRh
U3RhdHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERh
dGEoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9lbmNvZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggODM4MjM3MmQ1
MmFiYjI4YzE3OGY3NDE3MWY5ZjAyZWI1YmUxZGQxMi4uMzlkY2MyZjhhZjI1MzkwOGEzZDllYTYx
YTFhNjBhODNkZDIxZDRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAg
IHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIElt
YWdlT3JpZW50YXRpb246OkZyb21JbWFnZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRW5jb2Rl
ZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFT
dGF0dXMgc2V0RGF0YShSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBk
YXRhQ2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRh
U3RhdHVzOjpVbmtub3duOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1dGkoKSBjb25zdCB7IHJl
dHVybiBTdHJpbmcoKTsgfSAvLyBudWxsIHN0cmluZyBpZiB1bmtub3duCkBAIC0xMzMsNyArMTMz
LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29s
IGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7CiAKLSAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CiAgICAgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdl
RGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSgpOwpAQCAtMjA4LDcgKzIwNyw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIENvbG9y
IHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KIAogcHJp
dmF0ZToKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VE
YXRhOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJ
bWFnZURhdGE7CiAgICAgSW1hZ2VPYnNlcnZlciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDQwYTBl
NmNmMDM5NzJmYjFjYzcxYjJkMjgzMGY5NzFlMDBlNTk3MDguLjA1M2VmNjJjNThkZjNjZDI5MDBk
OWUxMDRlYTk3YjAzOWQzMGNmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIEltYWdlRGVj
b2Rlcjo6Y2xlYXJGYWN0b3JpZXMoKQogfQogI2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+
IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURl
Y29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsK
ICAgICBVTlVTRURfUEFSQU0obWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDVhYWUzY2M5MTFjNjA1Zjc3MmIwNTdk
MDFlZGJiYjgxMTI1ZmIyNTMuLjY5MmM3MjQxMGQwMTNlYTIzZDQzOWIzYzc1NmFjZWMwYTU0NWQ0
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rl
ci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBJbWFnZURlY29kZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVy
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpID0g
ZGVmYXVsdDsKIAogICAgIGVudW0gY2xhc3MgTWVkaWFUeXBlIHsKQEAgLTkxLDcgKzkxLDcgQEAg
cHVibGljOgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB1c2luZyBTdXBwb3J0c01lZGlh
VHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKE1lZGlhVHlwZSk+OwogICAgIHVzaW5nIENhbkRlY29k
ZVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT47Ci0gICAgdXNpbmcgQ3Jl
YXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pPjsKKyAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0g
RnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik+OwogCiAgICAgc3RydWN0IEltYWdlRGVjb2RlckZhY3RvcnkgewogICAgICAgICBTdXBwb3J0
c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNNZWRpYVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjJjOTY0MGQ0NmQzYTkzNTYx
MTRmMzNhYjE0MDUyYzdmZWMyNzc4Yy4uNTQ1N2JkNWFiMzZmYTdkNDFkMDNkNjFiOTVkZDM0NGE0
MzVkYWY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcApAQCAtNjcsNyArNjcsNyBAQCBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkK
ICAgICBBU1NFUlQoJm1fcnVuTG9vcCA9PSAmUnVuTG9vcDo6Y3VycmVudCgpKTsKIH0KIAotYm9v
bCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKQorYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0Rl
Y29kZXJBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05MSw3ICs5MSw3IEBA
IGJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFlbnN1
cmVEZWNvZGVyQXZhaWxhYmxlKGRhdGEpKQogICAgICAgICByZXR1cm47CkBAIC05OSwxMyArOTks
MTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEs
IGFsbERhdGFSZWNlaXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRhKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kZWNvZGVyID0gbnVs
bHB0cjsKICAgICBzZXREYXRhKGRhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCi1FbmNv
ZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZVNvdXJjZTo6ZGF0YUNoYW5nZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2
ZWQpOwogICAgIGNsZWFyTWV0YWRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGY5ODE0MTdmMjRlYmM3ZjJkYmQ1NzNkYWUwZTU5
MjU5ODk0NGU2NmEuLjgyOWUwNmZiODllNTU4N2E4ZjUyNGE2OWUzY2IyODM5MDZhMjAyYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAt
NTYsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
U291cmNlKFdURk1vdmUobmF0aXZlSW1hZ2UpKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAg
ICB2b2lkIHJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKLSAgICBFbmNv
ZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHJlc2V0
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBFbmNvZGVkRGF0
YVN0YXR1cyBkYXRhQ2hhbmdlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpOwogCiAg
ICAgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9
CkBAIC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
ICAgIFQgZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgTWV0
YWRhdGFUeXBlLCBUIChJbWFnZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VGcmFtZTo6
Q2FjaGluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pOwog
Ci0gICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEpOworICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhKTsKICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKHNpemVf
dCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKTsKICAgICB2b2lkIGRlY29kZWRTaXpl
Q2hhbmdlZChsb25nIGxvbmcgZGVjb2RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGIzN2ViZmM1NjIwNDhm
ZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmMyZjc2ZTgwNjVmMzc0YjQwOTE1N2EwNmEzNGRi
ZTUwM2NmNWE1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQz
Ml90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZh
bHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7
CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNDks
NyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBz
aXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1z
dGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNl
dCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQxNihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAgICBB
U1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZm
ZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3Rh
dGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZh
bHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7
IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wg
aXNXT0ZGKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQg
PSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRl
OgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29m
ZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChjb25zdCBT
aGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRf
QVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29u
dmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQp
CiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29u
dmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQor
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxjb25zdCBTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi5i
YTk2MjAxNDllNzQ0Nzg2NWJhOTMyYTc1MzkzMjQ1M2VjMzQ4OGY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMzLDE2ICsz
MywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8vIFJl
dHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoU2hh
cmVkQnVmZmVyJik7Citib29sIGlzV09GRihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogLy8gUmV0
dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52YWxpZCBvciBjb3VsZCBub3Qg
YmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxlLAogLy8gaWYgY29udmVyc2lvbiByYW4g
b3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUgc2Zu
dCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVy
JiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChj
b25zdCBTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElm
IHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3Jt
IGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8g
c2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYg
Y29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4K
LWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYp
OworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxjb25zdCBTaGFyZWRC
dWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggOGIwNGY5YmU5NmMzNmUwYTI2MjE4MGEyNWVh
Mzc0NTk2MmIzZDdkNS4uNzk4YmU4NGIxOWViYTljN2MyZGJhODNjNGQwMTIyOWI5MTFlZmQyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC04Niw3ICs4
Niw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tk
TmFtZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitzdGF0aWMgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNv
ZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlCiAgICAgaWYgKCFzaW5mQXJyYXkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBzaW5mczsKKyAgICBWZWN0b3I8
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBzaW5mczsKICAgICBzaW5mcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHNpbmZBcnJheS0+bGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRv
JiB2YWx1ZSA6ICpzaW5mQXJyYXkpIHsKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgU2NoZW1l
QW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBhdXRvIHJlc3VsdHMgPSBleHRyYWN0U2NoZW1l
QW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1
bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjoKICAgICBy
ZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBDb21tb24gU0lORiBCb3ggRm9ybWF0CiAg
ICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0xOTEsMTcgKzE5MSwxNyBAQCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6
ZVNpbmYoY29uc3QgRgogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1SZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6
ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5p
dGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gYnVm
ZmVyLmNvcHkoKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tk
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0YSBp
cyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtl
eUlEczsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJ
RHM7CiAgICAga2V5SURzLmFwcGVuZChidWZmZXIuY29weSgpKTsKICAgICByZXR1cm4ga2V5SURz
OwogfQpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4g
cmVzcG9uc2UuY29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
aAppbmRleCAzMTdiYjhkNTdlODZjMDYyMTRlMGI0MDU5ZGRmNGY4ODA3Yzc0YzZiLi42ZDhjMjg0
ZGYwMzFkMWQ3OTQxNjdjYTE1YTE1NWJlMDc3YTQ5MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNzIsMTYgKzcyLDE2IEBAIHB1YmxpYzoKICAgICBib29s
IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAg
IHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBza2ROYW1lKCk7Ci0g
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAg
IHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8Rm91ckNDPiYgdmFsaWRGYWlyUGxh
eVN0cmVhbWluZ1NjaGVtZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggZDU5ZmU0
ODA0ZDU4ZGZlNzhjYjViZWE3MDc0YjJlNjg3MDVjMWQ0OS4uZWQ1YzdjZTkyMGZlOTdmNGQ5N2E3
ZmFlMzM4ZWIzNWQ1NGM0MTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04Niw3ICs4
Niw3IEBAIHB1YmxpYzoKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVh
bWluZzsgfQogCiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxs
b3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNz
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBS
ZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CiAgICAgdm9p
ZCBzZXRDbGllbnQoV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4mJikgZmluYWw7CkBAIC05Niwx
MCArOTYsMTAgQEAgcHVibGljOgogCiAgICAgTlNVUkwgKnN0b3JhZ2VVUkwoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2VVUkwuZ2V0KCk7IH0KICAgICBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93
ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQ7IH0KLSAgICBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNh
dGUuZ2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigp
OwogCi0gICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5
UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZD
b250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRp
b25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpOwogCiAgICAgLy8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVn
YXRlQ2xpZW50CiAgICAgdm9pZCBkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0
KikgZmluYWw7CkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0T2Jz
Y3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmlu
YWw7CiAgICAgdm9pZCBleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50
S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlz
ID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgS2V5cyA9
IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvcktleUlEcyhjb25z
dCBLZXlzJikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDKiBzZXNzaW9uRm9yR3JvdXAoQVZDb250ZW50S2V5UmVwb3J0R3JvdXAqKSBjb25zdDsK
ICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25G
b3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBjb25zdDsKQEAgLTEzOCw3ICsxMzgsNyBA
QCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IG1fY2xpZW50OwogICAg
IFJldGFpblB0cjxBVkNvbnRlbnRLZXlTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgUmV0YWluUHRy
PFdlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOwotICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOworICAgIFJl
ZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwog
ICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0
cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lvbnM7CkBAIC0xNjAsOCArMTYw
LDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2
b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihj
b25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9u
RGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCAwZWNm
ZGNjMTVkNTg5M2JjZWI2ZDM2Zjk2MWUyNmRhYjc3MTQ3Njc0Li5mNjkyNGU2NmM1NDRiNWI4MmE3
OGZkNzQzMGIzYmQ3ZWFjMzlkNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjY2
LDcgKzI2Niw3IEBAIEFWQ29udGVudEtleVNlc3Npb24qIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpjb250ZW50S2V5U2Vzc2lvbigpCiAgICAgcmV0dXJuIG1fc2Vzc2lvbi5n
ZXQoKTsKIH0KIAotUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFs
aXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKK1JldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0
Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRvIHJl
cXVlc3RJdGVyID0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuYmVnaW4oKTsgcmVxdWVzdEl0ZXIg
IT0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuZW5kKCk7ICsrcmVxdWVzdEl0ZXIpIHsKICAgICAg
ICAgYXV0byYgcmVxdWVzdCA9ICpyZXF1ZXN0SXRlcjsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lk
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgQ0RNSwogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZv
aWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAgbV9zZXJ2
ZXJDZXJ0aWZpY2F0ZSA9IFdURk1vdmUoc2VydmVyQ2VydGlmaWNhdGUpOwpAQCAtNTg0LDggKzU4
NCw4IEBAIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6CiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBhdXRvIHNlc3Npb25LZXlzID0gc2Vzc2lvbkludGVyZmFjZS0+a2V5SURzKCk7Ci0g
ICAgICAgIGlmIChhbnlPZihzZXNzaW9uS2V5cywgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5k
SWYoWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYga2V5SUQpIHsKKyAgICAg
ICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7CisgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZp
bmRJZihbJl0oY29uc3QgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBrZXlJRCkg
ewogICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRC5nZXQoKSA9PSBzZXNzaW9uS2V5LmdldCgp
OwogICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgIH0pKQpAQCAtNzAzLDcgKzcw
Myw3IEBAIEtleXMgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpr
ZXlJRHMoKQogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChs
aWNlbnNlVHlwZSkpIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIsICIgZmFsc2UsIGxpY2Vuc2VUeXBlIFwiIiwgbGljZW5zZVR5cGUsICJcIiBub3Qgc3VwcG9y
dGVkIik7CkBAIC03ODQsNyArNzg0LDcgQEAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVy
biBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1ZSgpID09IHZhbHVlOwogfQogCi12b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIGlmICghbV9leHBpcmVkU2Vzc2lvbnMuaXNFbXB0eSgpICYmIGlzRXF1YWwocmVzcG9uc2VE
YXRhLCAiYWNrbm93bGVkZ2VkIl9zKSkgewogICAgICAgICBhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1f
aW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCk7CkBAIC04ODYsNyArODg2LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKCprZXlJRFZlY3RvcikpOwogICAgICAgICAgICAgYXV0byBmb3VuZElu
ZGV4ID0gbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpbmRJZihbJl0gKGF1dG8m
IHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVl
c3QocmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kSWYo
WyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4ga2V5SURzLmZpbmRJZihbJl0oY29uc3QgUmVmPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkg
PT0ga2V5SUQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAg
ICAgICB9KTsKQEAgLTExODIsNyArMTE4Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAg
ICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUo
KSkKICAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKIAotICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6
OnBhaXI8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+
OworICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVj
dCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIHVzaW5nIENhbGxiYWNrRnVuY3Rpb24gPSBG
dW5jdGlvbjx2b2lkKFJlcXVlc3RzRGF0YSYmKT47CiAgICAgICAgIHN0YXRpYyBSZWZQdHI8Q2Fs
bGJhY2tBZ2dyZWdhdG9yPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpAQCAtMTIzOCw3ICsxMjM4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICBA
dHJ5IHsKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVl
KCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVz
dChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOworICAgICAgICAgICAgUmVmUHRy
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmly
c3QoKSk7CiAgICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0
cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNv
bnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBs
ZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRh
ICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRv
ciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0
cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IDZiZGEyZmUwYjhhYTNkMjg1YTE2ZjExMDEyNTNhMTY4NWNhZWFjZjguLmU5NGM4
NmQxYTM3YmE2NGYyNjY5NzI3Njg3NWY4MmQwNzQ5Yzc2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMjg3OCw3ICsyODc4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmMKICAgICBp
ZiAoIW1fa2V5SUQgfHwgIW1fY2RtSW5zdGFuY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1
dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0
b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwog
ICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggZjY4MmFhMmM3YzRhMzViOTc4
NzYzNDg1NTVlYjQ0ZjIyMDQzYWMzYS4uMjEyYmY5YTEwYjM5MDcxZDQzNDMzYmNmY2E1MWU0M2U3
NDdmMzljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgK
QEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Qnl0ZVJhbmdlT2Zmc2V0KHNp
emVfdCk7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtF
WVNFU1NJT04pCi0gICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj47CisgICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj47CiAgICAgdm9pZCBzZXRLZXlJRHMoS2V5SURzJiYga2V5SURzKSB7IG1f
a2V5SURzID0gV1RGTW92ZShrZXlJRHMpOyB9CiAgICAgY29uc3QgS2V5SURzJiBrZXlJRHMoKSBj
b25zdCB7IHJldHVybiBtX2tleUlEczsgfQogICAgIEtleUlEcyYga2V5SURzKCkgeyByZXR1cm4g
bV9rZXlJRHM7IH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX21p
cnJvcmVkIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUo
QVZDT05URU5US0VZU0VTU0lPTikKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBtX2tleUlEczsKKyAgICBLZXlJRHMgbV9rZXlJRHM7CiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmlu
ZGV4IDM3NmE2ZmMxNDM4MTFlZWI4NTY3YmNiMDhlN2RkZDNiMWZmMTNjZjcuLjVjYzBhYWIzNDBm
MjBkOTY2YjJmOThlMzMyOTQ4ZThlMzc0M2E1NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMjMyLDcgKzIzMiw3IEBA
IHByaXZhdGU6CiAgICAgV2Vha1B0cjxDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDPiBtX3Nl
c3Npb24geyBudWxscHRyIH07CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAm
JiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCi0gICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJl
Zjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgc3RydWN0IFRyYWNrSW5pdERh
dGEgewogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YTsKICAgICAgICAgS2V5
SURzIGtleUlEczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZjNkNDI0NWJlMTQwMDhmMDVjNmI5OWQ5NjlmZjRjZmQw
ZWM3NzQzZi4uMDU1YjczYjM2MWNhZDdkNTA2YTM3MzViOGE4MmExNTdmZGU1MzgwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0KQEAgLTI5Miw3ICsyOTIsNyBAQCBzdGF0aWMgYm9vbCBzYW1wbGVCdWZmZXJSZW5kZXJlcnNT
dXBwb3J0S2V5U2Vzc2lvbigpCiAgICAgcmV0dXJuIHN1cHBvcnRzOwogfQogCi1zdGF0aWMgVmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weUtleUlEcyhjb25zdCBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHMpCitzdGF0aWMgVmVjdG9yPFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weUtleUlEcyhjb25zdCBWZWN0b3I8UmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHMpCiB7CiAgICAgcmV0dXJuIGtl
eUlEcy5tYXAoW10gKGF1dG8mIGtleUlEKSB7CiAgICAgICAgIHJldHVybiBrZXlJRC5jb3B5UmVm
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggOTQxOWJjZWEzOGRiZjhkNjQ5
MmY2ODAxZDlhMjE1NjIzNjZhMmM2ZS4uYjZkY2Q5ZmE1NWY2MTVjODdjNDc4N2JlZGJiYzE2OGEz
M2ZiYmRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNTUsNyArNTUsNyBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19mb250X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07
CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDI0NzgxNTA2MDJhOGQwZDZiMDZkN2EzYTU4MzVm
MGI4MzA3MjE0ZTQuLjRmNWFmZmQ0Yjg0ZjcyMDg2YmE1Y2VkODlkODg1NzQwMTY0NDIxYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIHNoYXJlZEJ1ZmZlclJlbGVhc2Uo
dm9pZCogaW5mbykKIH0KICNlbmRpZgogCi1JbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0co
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYg
KGRhdGEuc2l6ZSgpID49IDMyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggMTc1MTA4ODcyMWY1NjIxZmNkYmZkMDBm
MjZkYjI3N2M4MTE3ZGY4MS4uMzY4YjE2MjgzZTRiZmY0NjI4OWExN2VjNDA4MzJlZjUwMTVkMDAx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oCkBAIC0zMiw5ICszMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEltYWdlRGVjb2RlckNHIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKKyAgICBJbWFnZURlY29kZXJDRyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAgc3Rh
dGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckNH
PiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNv
ZGVyQ0coZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKaW5kZXggMmI0NDNmYmJlZDJjMWZkZTQ4YmNkZTljYmU0MDk1MzQ5N2ZkZTkxMC4uMDZlYjAz
NTRiMTY5ZDdhNjA0YjM2N2E3NzZhNjY3N2FiMzQ0MTRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAg
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAg
aWYgKCFsaWJyYXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDI5YzlhYjRlZWRmMmQ2
MzliNDFlODJmYTZhYzJkZjM3OWY0YTM0NzMuLjJmZDg0ZDIxOWI5OGNkYTE1OWIwN2VmYzUxNjll
ZTAyYTgyNzg3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBA
IC04MSwxMiArODEsMTIgQEAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiB0b1NhbXBsZShJ
dGVyYXRvciBpdGVyKQogICAgIHJldHVybiAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKilp
dGVyLT5zZWNvbmQuZ2V0KCk7CiB9CiAKLVJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJ
bWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURl
Y29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2Rl
ckdTdHJlYW1lcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBtX21pbWVUeXBlKG1pbWVUeXBlKQogewog
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuaAppbmRleCAyNjFkYWZmMjYxNThlMTdhMmE0MjIxZmZiMjQzNTQ2NzcxNmRi
ZDNiLi4xOWQ4Yzk5ZTMwNjcyZDQ4ODZlYTg5MGMyNDczMzI5MjNkOTY1M2M5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdl
RGVjb2RlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2Rl
ckdTdHJlYW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3Ry
ZWFtZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLSAgICBJbWFn
ZURlY29kZXJHU3RyZWFtZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAg
c3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNN
ZWRpYVR5cGUoTWVkaWFUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPT0gTWVkaWFUeXBlOjpWaWRl
bzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggY2Q4ZGRkOTJmOWU3OTEzOGY2NzVm
MTk2ZmJlYTE4ZTgxMDcyZjFhNy4uMzY0ZmI2YmMzNzQ2ZDJhNjg0Y2U5OWNkMmYzZGNlOWRmYzA5
MzAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9v
bCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAg
ICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VUaHVuZGVyOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhCiAgICAgY2FsbGJhY2soU3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBhdXRvIGRhdGEgPSBjZXJ0aWZpY2F0ZS0+ZXh0cmFjdERhdGEoKTsKICAg
ICBPcGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmlj
YXRlKG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oZGF0YS5kYXRh
KCkpLCBkYXRhLnNpemUoKSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgUmVmUHRyPENETUluc3RhbmNl
U2Vzc2lvbj4gQ0RNSW5zdGFuY2VUaHVuZGVyOjpjcmVhdGVTZXNzaW9uKCkKIGNsYXNzIFBhcnNl
ZFJlc3BvbnNlTWVzc2FnZSB7CiAKIHB1YmxpYzoKLSAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2Uo
Y29uc3QgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgUGFyc2Vk
UmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6ZSgp
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQ5LDggKzM0OSw4IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wgaGFz
UGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9hZCk7IH0K
LSAgICBjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYg
eyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9Ci0gICAgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQp
OyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBjb25zdCBSZWY8Y29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2FkKTsg
cmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXls
b2FkLnZhbHVlKCk7IH0KICAgICBib29sIGhhc1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUu
aGFzX3ZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGUoKSBj
b25zdCB7IEFTU0VSVChtX3R5cGUpOyByZXR1cm4gbV90eXBlLnZhbHVlKCk7IH0KICAgICBXZWJD
b3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGVPcihXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VU
eXBlIGFsdGVybmF0ZSkgY29uc3QgeyByZXR1cm4gbV90eXBlID8gbV90eXBlLnZhbHVlKCkgOiBh
bHRlcm5hdGU7IH0KQEAgLTM1OSwxMSArMzU5LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBib29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0gICAgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOwogICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4gbV90eXBlOwogfTsKIAotdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFy
c2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgaWYgKCFwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UpIHsKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6
OmtleXNVcGRhdGVEb25lQ2FsbGJhY2soKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3Mu
Y2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxi
YWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1IoIkNETSBlcnJvciIp
OwogICAgIGF1dG8gZGF0YSA9IG1lc3NhZ2UtPmV4dHJhY3REYXRhKCk7CkBAIC00ODQsNyArNDg0
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG0KICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJh
Y2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZm
ZXIsCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAogICAg
IExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CkBAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKICAgICAgICAg
cGF5bG9hZERhdGEuZGF0YSgpLCBwYXlsb2FkRGF0YS5zaXplKCksIG51bGxwdHIsIDAsICZtX3Ro
dW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9u
KSB7CiAgICAgICAgIEdTVF9FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7Ci0gICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEu
cGF5bG9hZCgpOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
aW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAgICAgICAgY2FsbGJhY2soaW5pdERh
dGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogCiAg
ICAgYXV0byBnZW5lcmF0ZUNoYWxsZW5nZSA9IFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRh
LnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAgICAgIGlmIChtX3Nlc3Npb25J
RC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEdTVF9FUlJPUigiY291bGQgbm90IGNyZWF0ZSBz
ZXNzaW9uIGlkIik7CiAgICAgICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVs
bCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6c2Vzc2lvbkZhaWx1cmUoKQogICAgIG1fc2Vzc2lvbkNoYW5n
ZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9z
ZXNzaW9uSUQpOwogCkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQK
IHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklE
KTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hh
bmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGJvb2wgc3VjY2VzcywgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdl
KQpAQCAtNTk4LDcgKzU5OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAg
ICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25z
ZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2Up
OwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNz
YWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBX
VEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAg
ICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgp
KTsKICNpZm5kZWYgR1NUX0RJU0FCTEVfR1NUX0RFQlVHCiAgICAgICAgICAgICAgICAgICAgIGF1
dG8gZGF0YSA9IG1lc3NhZ2UtPmNvcHlEYXRhKCk7CkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IHNlc3Npb25JRCwgTGljZW4KIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgbV9zZXNz
aW9uSUQgPT0gc2Vzc2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBw
ZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CisgICAgbV9z
ZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtNjU3
LDcgKzY1Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lv
bkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgUGFy
c2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAg
IGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3Bv
bnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoInNl
c3Npb24gJXMgcmVtb3ZlZCwgbWVzc2FnZSBsZW5ndGggJXp1IiwgbV9zZXNzaW9uSUQudXRmOCgp
LmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
bV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0dXM6OlJlbGVhc2VkKSwgV1RGTW92ZSht
ZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0NETVRodW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCmluZGV4IDEwMjBlMTUzMjI3MWI1MzUxZTEwNmRkZThm
MjFlYTU0MDVhOWMyMzcuLmM5NjdmMjBjMWNhNjM3MjU5ZDY0OWZkOGI5YTY4NTFiYjFkMjkyN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNVGh1bmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0
cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKIHBy
aXZhdGU6CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAg
ICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6VGh1bmRlcjsgfQogICAgIHZvaWQgaW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNl
c3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEyNiw4ICsxMjYsOCBAQCBjbGFzcyBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyIGZpbmFsIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lv
blByb3h5IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyKENETUluc3Rh
bmNlVGh1bmRlciYpOwogCi0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VU
eXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTE0MSwxNCAr
MTQxLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNSW5zdGFuY2VUaHVuZGVyKiBjZG1J
bnN0YW5jZVRodW5kZXIoKSBjb25zdDsKIAotICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQg
KENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB1c2luZyBOb3RpZmljYXRpb24gPSB2b2lkIChDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjoqKShSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJik7CiAgICAgdXNpbmcgQ2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKCk+OwotICAgIHVzaW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CisgICAg
dXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRy
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPjsKIAotICAgIHZvaWQgY2hhbGxlbmdl
R2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAg
IHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQga2V5VXBkYXRlZENhbGxiYWNrKEtleUlEVHlwZSYm
KTsKICAgICB2b2lkIGtleXNVcGRhdGVEb25lQ2FsbGJhY2soKTsKLSAgICB2b2lkIGVycm9yQ2Fs
bGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZXJyb3JD
YWxsYmFjayhSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXMgc3RhdHVzKGNvbnN0IEtleUlEVHlwZSYpIGNvbnN0
OwogICAgIHZvaWQgc2Vzc2lvbkZhaWx1cmUoKTsKIApAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZh
dGU6CiAgICAgSW5pdERhdGEgbV9pbml0RGF0YTsKICAgICBPcGVuQ0RNU2Vzc2lvbkNhbGxiYWNr
cyBtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzIHsgfTsKICAgICBCb3hQdHI8T3BlbkNETVNlc3Np
b24+IG1fc2Vzc2lvbjsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNz
YWdlOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7
CiAgICAgYm9vbCBtX25lZWRzSW5kaXZpZHVhbGl6YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3Rv
cjxDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjaz4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAg
VmVjdG9yPFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4
NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjljMy4uYmFhMDkzN2NmMTNiYzdlZWQ5
M2YxZTFjYzlmNTZkNWE5MDgwYTcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmNwcApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJv
cihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFy
a3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxl
bWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZl
cj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9h
ZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVm
ZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9h
ZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDJhZGU4NzMwYzA0ZTc1
NTAyYzZhMDQ0YTAxNzljOTMyNmM5ZTNhOC4uZTc4NThjN2I4MDkwYTZiNWRjOGRmMmE0MTg0MDY2
MWFhNmRjOThiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5o
CkBAIC00OCwxNCArNDgsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9M
T0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnks
IEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRh
Iiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVk
KG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIG1fcGF5bG9h
ZCA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0
YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKTsKICAgICB9CiAKICAgICBJbml0RGF0YShjb25zdCBT
dHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2Fk
KQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCiAgICAgewogICAgICAgICBpZiAocGF5
bG9hZCkKLSAgICAgICAgICAgIG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9h
ZC0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICBtX3BheWxvYWQgPSBTaGFyZWRCdWZm
ZXJCdWlsZGVyKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkp
OwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03NCw3
ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5
bG9hZCgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcGF5
bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQorICAgIFJlZlB0cjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXls
b2FkLmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3lzdGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5bG9hZENvbnRhaW5lclR5cGUoKSBjb25zdAog
ICAgIHsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiYmKTsKICAgICBTdHJp
bmcgbV9zeXN0ZW1JZDsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQz
M2E5OWQ0NmJiNGExZjRhMi4uYTgxYmY0MTdmN2JlMjc2ZjA3ZjhmNzRiN2U5YmE2ZTY4OGNlY2Ux
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250
UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29u
c3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0
KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERl
c2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJE
YXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApp
bmRleCA2OTI4YTYzZTk3MWM3YzM1ZTg4NDRlZWY3M2JmYTQ0YThkOGMwMzA5Li5iYTU2ZTk3NDRl
MWI2M2MzZGRjMWI0YmIyODU2ZjBhYjAzOWM2ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9udENyZWF0
aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9u
U3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdn
ZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVT
ZXR0aW5nczsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6
OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCAwOWU5YTYxMWRmNWE3ZDJlYjM0YTk1NGQ5MWI5
ZDAwYmRjMTc0MDkwLi44MTUwNzgxMGQ1MTVmNzQ5ZmVhMTEwNjc2NTE3MjQ1OTFkYzUzMjM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGlj
IFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVh
dGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0
aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5k
ZXggMDhmYzlmMTllYWVhOTQ4M2VhNThlYzFhZWVkZDQ1NzI1NmNlMjdiYy4uOTM2ZmJkMzYwM2Ni
ZmI0YjAyMTBkMzAxMDhiN2NmZTE4NDRlNWU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlv
bkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4
IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQuLjU0OTNmZTA4ZDE4MjI1
MzNiZmU5YTk0ZGM4ODZkNGM5MmY3ZDhlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVl
Rm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsK
ICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZv
bnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4MWNlNjU0MjVlZjUz
Y2MwMTI0ZWUxMDg1ZDQ2NWFiMTAwNzAyYmQ0Li45MjgzYmI5NDAyZmE4ZjI0ZWRlNjhkODE2YTBj
MjI2Nzk0ZmZjOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC0xMzUsNyAr
MTM1LDcgQEAgYm9vbCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogCiB9CiAK
LVJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitS
ZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmUg
PSAxNDsgLy8gVG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAiCiAgICAgY2hhciBjb250ZW50c1tsZW5n
dGhPZkxvbmdlc3RTaWduYXR1cmVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggZDlm
ZGE3NzZmZDU4ZDg3Y2NlNTRlZjMwNDQwN2NjYTRkZTA0N2YzNS4uMzAzM2FiMjZmMmJjODI5YmJh
MDA1NzZlZGMzNDhhNGM3MzczMGFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC02
MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgbnVsbHB0ciBpZiB3ZSBjYW4n
dCBzbmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgKHBvc3NpYmx5
CiAgICAgLy8gYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91Z2ggZGF0YSB5ZXQpLgotICAgIHN0YXRp
YyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAg
IHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNyZWF0ZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOwogCiAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9w
cmVtdWx0aXBseUFscGhhOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW0KaW5kZXggMzY4NzIyYTM2ZjU4Y2MwZTcyYWY4NzY1NWViYWU2Y2E1ZDRiOTc4
Yy4uYmQ5MmZkZGNjZWYyMzUxOTFlMTAzMWUzOGZjMWE4MTgwZWI1ZGM3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTI0MCwxNCArMjQwLDE0
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlRmxhdFJURkRdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtV
VFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBr
VVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlm
IChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVh
ZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVy
biBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFk
VHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFt0
eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgewot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBj
b250ZXh0KCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAg
ICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFs
bHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEYoKmJ1ZmZlcikgPyBS
ZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKQEAg
LTI1NSw3ICsyNTUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogI2Vu
ZGlmIC8vICFQTEFURk9STShNQUNDQVRBTFlTVCkKIAogICAgIGlmIChbc3VwcG9ydGVkSW1hZ2VU
eXBlcygpIGNvbnRhaW5zT2JqZWN0OnR5cGVdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgs
IHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIGF1dG8gYnVmZmVy
ID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0g
Y2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9h
cmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIu
cmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5mby5wcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1
bHQ6OkRpZE5vdFJlYWRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZDY0Yjk2ODM0NzM3ODMyZDJlZWQ2ODgy
MzYwMTIyNzA2NTU4NTNmYy4uN2M5ODVlYjIwZWZlYTIzMmVmMGJjYTNlMDEzYmNjNWZiMmU3OWEz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAgICAgdHlwZXMgPSBtYWtlVmVj
dG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAg
aWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOnR5
cGVdKQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CkBAIC0zMzgs
NyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikKK2lu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC03NDYsNyArNzQ2
LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxj
b25zdCBTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBp
ZiAoIWluZGV4KQogICAgICAgICByZXR1cm4gYnVmZmVyRm9yVHlwZSh0eXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggYmE4ZWExZWI0NDhh
OTIxZTMwZDNhZTZhOWM3N2U4ODIzM2FiYzUzYi4uZjM4ZGM2OGJkYWZmNjM0YWEwOTA5YzU1ZmNk
ODFlZmI0NGI2NjVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFBy
ZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAg
IHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250
ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZl
cnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBp
dGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJl
ZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChj
b25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3Rl
Ym9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAg
ICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRl
eCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggYTdmZTcyNTU0
Mzc2NjVlOGI4YTBjNzQ1M2QzMDQ3NDlkNDU2MmY2Ny4uMDhhNTllYWM2MGI2YzhmODQzN2NhNmQy
YWIyZWM4NjgyMWZjOGM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAgICAg
dHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3QKK1JlZlB0cjxjb25zdCBTaGFyZWRCdWZm
ZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKSBjb25zdAogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0
YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKQEAgLTM0MSw3ICszNDEs
NyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFzdGVib2FyZCBkZWNsYXJl
VHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVyOm5pbF07CiB9
CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQoraW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoY29uc3QgU2hhcmVkQnVmZmVyKiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFjYW5Xcml0ZVBh
c3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDYs
NyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJv
YXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQ
dHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAg
ICAgaWYgKCFpbmRleCkKICAgICAgICAgcmV0dXJuIGJ1ZmZlckZvclR5cGUodHlwZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggODVmOTZk
ODVkMmIzNzJjZmMyMTcxYTgzNDExZDUyODY5MjA3M2NkNC4uY2E2NDQzMDNkOTc0M2E2YWUzMmNj
MzViNTI1ZGI0Njc3ZDAwM2VmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcApAQCAtMzU2LDcgKzM1Niw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpy
ZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogc3RydWN0IFBhc3Rl
Ym9hcmRGaWxlQ291bnRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB2b2lk
IHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7ICsrY291bnQ7IH0KLSAgICB2b2lk
IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWwgeyArK2NvdW50OyB9CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxjb25zdCBTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytj
b3VudDsgfQogCiAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CiB9OwpAQCAtOTY2LDcgKzk2Niw3
IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0
aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgSEdMT0JBTCBtZW1P
YmogPSBHbG9iYWxBbGxvYyhHUFRSLCBkYXRhLT5zaXplKCkpOwogICAgIGlmICghbWVtT2JqKSAK
QEAgLTk4Niw3ICs5ODYsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1lbU9iajsK
IH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYg
dXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQorc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAg
IGlmIChmaWxlTmFtZS5pc0VtcHR5KCkgfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
MTA2Myw3ICsxMDYzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2Ug
fHwgIWNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwg
IWNhY2hlZEltYWdlLT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRl
cmVyKGVsZW1lbnQucmVuZGVyZXIoKSktPmRhdGEoKTsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVs
ZW1lbnQucmVuZGVyZXIoKSktPmRhdGEoKTsKICAgICBpZiAoIWltYWdlQnVmZmVyIHx8ICFpbWFn
ZUJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNTYwN2Q0OWZjZGU5ZDViNzQxNDg3MmJkYjkxZmFm
Njk2NGY1Njg4ZS4uMGU0MjdmMzk0MTJjYzNmZWI0M2VmYmM5MTVkNTRlMzQ0YWYwODhmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTYzLDcgKzYzLDcg
QEAgYm9vbCBNb2NrQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAi
b3JnLndlYmtpdC5tb2NrIik7CiB9CiAKLXZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nl
c3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4mJiBrZXlzKQordm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiYmIGtleXMpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25zLmFkZChp
ZCwgV1RGTW92ZShrZXlzKSk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQpAQCAtNzQs
NyArNzQsNyBAQCB2b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNv
bnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbgogICAgICAgICB2YWx1ZS5hcHBlbmQo
V1RGTW92ZShrZXkpKTsKIH0KIAotVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
TW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkKQorVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZh
Y3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQogewog
ICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Np
b25zLmVuZCgpKQpAQCAtODMsNyArODMsNyBAQCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKAogICAg
IHJldHVybiBXVEZNb3ZlKGl0LT52YWx1ZSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQo
Y29uc3QgU3RyaW5nJiBpZCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlk
KTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBi
b29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkUwogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIGF1dG8gYnVmZmVyID0gcmVz
cG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShi
dWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKQEAgLTI3MCw5ICsyNzAsMTAgQEAgdm9p
ZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRp
YUtleVN5c3RlbUNvbmZpZ3VyYXQKICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12
b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNDZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygp
OworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNvbnRpZ3VvdXNDZXJ0aWZp
Y2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2Nl
ZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0yOTgsNyArMjk5LDcgQEAgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbjo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJiBp
bnN0YW4KIHsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5z
dGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9y
eSkgewpAQCAtMzI0LDcgKzMyNSw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2Fs
bGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3Ro
KCkpLCBzZXNzaW9uSUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZv
aWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5z
ZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFj
dG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAg
IGlmICghZmFjdG9yeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmlu
ZGV4IGQ5NmMxNTZlZTRkMjc5MWI4YjA5OThkYWY5NDBlYzc1Mzc4MDdiYzMuLjMzZTMxMWMyODY1
MzViMDkzZjEyYzFkODJkOTZjZDhiMjdiMWYzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmgKQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNT
ZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIG1fc2Vzc2lvbnMuY29udGFp
bnMoaWQpOyB9CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQp
IHsgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOyB9Ci0gICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
JiYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBrZXlz
Rm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKLSAgICBWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCk7CisgICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmluZyYgaWQsIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYpOwor
ICAgIGNvbnN0IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBrZXlz
Rm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKKyAgICBWZWN0b3I8UmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCk7CiAKIHByaXZhdGU6CiAgICAgTW9ja0NETUZhY3RvcnkoKTsK
QEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FuQ3JlYXRlSW5zdGFuY2Vz
IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcyB7IHRydWUg
fTsKICAgICBib29sIG1fc3VwcG9ydHNTZXNzaW9ucyB7IHRydWUgfTsKLSAgICBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+PiBtX3Nlc3Npb25zOwogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRl
IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJD
ZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFdlYWtQdHI8TW9ja0NETUZh
Y3Rvcnk+IG1fZmFjdG9yeTsKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2s7IH0KICAgICB2b2lkIGluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25z
dCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkg
ZmluYWw7CkBAIC0xNTQsOCArMTU0LDggQEAgcHVibGljOgogICAgIE1vY2tDRE1JbnN0YW5jZVNl
c3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQg
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5z
ZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBM
b2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0
IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRh
Q2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggZDBhZjIxNDI2NWFlOGIxZDY5OTRhOWYyNDBkNjFhNDBl
ZTVjMWFiZC4uMWFiNzA1ZDFlZTM5YzU1MzVmMTgxNzkxYjE0NDc0N2JlNTE3ZWVkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAt
NzcsMTMgKzc3LDEzIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0
OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1f
Zm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGlu
ZykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAg
ICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CiAgICAgICAgIGlm
IChtX2RhdGEpCiAgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlQXNDb250
aWd1b3VzKCk7CiAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91
c0RhdGEpOwogICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKICAgICAgICAgICAgIG1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRp
Z3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAg
ICAgICAgIG1fZGF0YSA9IFdURk1vdmUoY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9k
YXRhID0gKmNvbnRpZ3VvdXNEYXRhOwogICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDUxYzczOWMzMmM3NGQ3NzZkM2IxZjMwZTU1ZDVh
NTRiZWIxMDgyYzYuLjBkM2MzMGYzOWUxYmFjZGNlNGFkZGQyNmY0NmM2YjI4NWJlZWM2MGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50
KCk7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFs
aXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgaWYgKCFt
X2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKaW5kZXggMDJjNWNkMzdhZTU0ODAy
ZjZkMGM4ZGNjY2IwYmE4MGNmMzM4OGMzMy4uYzA5Y2ExNTRjMmM5Mzg3OTBjY2IwZDM3NmNlNTJl
ZDllNjlmM2IzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8
V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZp
Z3VyYXRpb24+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CiAKICAgICAvLyBDRE1J
bnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KGNvbnN0IFN0cmluZyYsIFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCmluZGV4IDdiYTE2NjRkZjE0OGYyZDRmNjU0MzYx
NGUzMTQwNDBhYjkyMjc5ZWYuLmQ5ZWE4NWVlZDQ2ZjM2Njg0MmY0Njg5ZWMzZTRhZTk3MzYxZmU2
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAtNzAsNyArNzAsNyBAQCB2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSB0eXBlLCBBdG9tU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nl
c3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVy
KCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
dWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RM
aWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51
bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJv
b2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbihJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoV1RGTW92ZShtZXNzYWdlKSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXph
dGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9
KTsKIH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlUwogCiB2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjayYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShz
ZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9u
YWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENE
TUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAg
bV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJDb3B5PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CiAgICAgICAg
IGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQogICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRh
UmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4cGlyZWRTZXNzaW9u
c0RhdGEpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dQogICAg
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3Rh
dHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAppbmRleCBmZTczMDk3MTMxZTBiYjIwYTUw
MDFlMTUwMTYwMmQ2NTE4NmIzMDkwLi5iZjI3M2VhZWRlNjE0YzI3YmEyMDNjYjYyMjlhY2ZmNjMy
NDU2YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBw
cml2YXRlOgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRh
dGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgZmluYWw7Ci0gICAgdm9pZCBzZW5kTWVz
c2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3Jl
OjpDRE1NZXNzYWdlVHlwZSwgUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGZpbmFsIHsg
cmV0dXJuIG1fZGlzcGxheUlEOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCmluZGV4IGY3Y2I2YTYzZWI5MzNhYmQ0ZDQ1M2EyMmFi
Mjk0ZjEzMDMyMzJiMDYuLmEwNDQ3Mjg1OGNkMTIzOWVjOGJhYWNkYzJiYTQ4NWZhMThjZGM0ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcApAQCAtNjgsNyArNjgsNyBAQCBib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaAogICAgIHJldHVy
biBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEodHlwZSwgZGF0YSk7CiB9CiAKLVJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gbV9wcml2
YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5kZXggM2I2NmM3NzU3ODcwNjllOTc2
ZWUwNjRmOTZmZjA3YzBmNzEyYTkwYi4uZWNkNjg5YTY3MzE3NzA5ZGJkZmQzMDE4NGU0MDRhNmEz
NzljOWM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFJlbW90ZUNETUZhY3RvcnlQ
cm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQogCiAgICAg
Ym9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgcmVzcG9uc2UpOworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2Fu
aXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
CmluZGV4IGYyMTBiMDlmYmQxZTIwZWJmYzIxNmYyMTlhMjc2MzVkODcxODQyNWQuLmVjNjBkZmVk
YjMxOWZjMzkyMzRmODFkYjU5ZjkwNjliZWM0ZGNhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTQ1NCw3ICs0NTQs
NyBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRs
ZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIGhhbmRsZXIoV1RGTW92ZShlbnRyeSks
IGluZm8pOwogfQogICAgIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByaXZhdGVSZWxheWVkIHByaXZhdGVSZWxheWVk
LCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEp
CitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUHJpdmF0ZVJlbGF5ZWQgcHJpdmF0ZVJlbGF5ZWQsIFJlZlB0cjxjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwg
cHJpdmF0ZVJlbGF5ZWQsIFdURk1vdmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZh
cnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vz
c2lvbklEKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNo
ZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVj
dFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1f
c2Vzc2lvbklEKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJpdmF0ZVJlbGF5
ZWQgcHJpdmF0ZVJlbGF5ZWQsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBQcml2YXRlUmVsYXllZCBwcml2YXRlUmVsYXllZCwgUmVmUHRyPGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5j
dGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQocmVzcG9uc2VEYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggOTA0MzQ3ZjA1MjA1MDIzNzE2YzZkNmJkNTEwODYw
ZWYzNzQxMzM2MC4uYzkzN2E5ZjIzOGFiMTE3NTcwNzg4MDUzMmZkZDA1MDY4NTllN2RhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5o
CkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgdXNpbmcgUmV0cmlldmVD
b21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Piwg
Y29uc3QgUmV0cmlldmVJbmZvJik+OwogICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFByaXZhdGVSZWxheWVk
LCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9p
ZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBQcml2YXRlUmVsYXllZCwgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0g
bnVsbHB0cik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlLCBQcml2
YXRlUmVsYXllZCk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXRy
aWV2ZURhdGEoY29uc3QgRGF0YUtleSYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNp
emVfdCk+KTsKICAgICB2b2lkIHN0b3JlRGF0YShjb25zdCBEYXRhS2V5JiwgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtl
RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIFByaXZhdGVSZWxheWVkLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnko
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIFByaXZhdGVSZWxheWVkLCBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlUmVkaXJl
Y3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVj
dFJlcXVlc3QpOwogCiAgICAgdm9pZCBkdW1wQ29udGVudHNUb0ZpbGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5j
cHAKaW5kZXggZDRkMTc3OTRmYTU1YzdhNmMyNTE1OWFiZDBkMTY2NDAxMWUzNzRhZC4uOTlmYWM1
NTg3NGM1M2ZiOWFkODg5YWVkOGQ5MWIwZDg3YWJiZmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNo
ZSB7CiAKLUVudHJ5OjpFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFByaXZhdGVSZWxheWVkIHByaXZhdGVSZWxheWVkLCBSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3Rv
cjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQorRW50
cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUHJpdmF0ZVJlbGF5ZWQgcHJpdmF0ZVJlbGF5ZWQsIFJlZlB0cjxjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCiAgICAgOiBt
X2tleShrZXkpCiAgICAgLCBtX3RpbWVTdGFtcChXYWxsVGltZTo6bm93KCkpCiAgICAgLCBtX3Jl
c3BvbnNlKHJlc3BvbnNlKQpAQCAtMTA1LDcgKzEwNSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRy
eTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgaWYg
KG1fYnVmZmVyKSB7CiAgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7Ci0gICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcio+
KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgICAgIGJv
ZHkgPSB7IGRvd25jYXN0PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4oKm1fYnVmZmVyLmdldCgpKS5k
YXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKICAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwg
bV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9p
ZCBFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3QKICAgICBt
X2J1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc291cmNlU3RvcmFnZVJl
Y29yZC5ib2R5LmRhdGEoKSwgbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuc2l6ZSgpKTsKIH0K
IAotV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigpIGNvbnN0
Citjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBpbml0aWFsaXplQnVmZmVyRnJv
bVN0b3JhZ2VSZWNvcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAppbmRleCBhNzI4ZmQ2YWU4ZDY1MTc2OTBhMzI2
ODY0YjhhZTIzYTU0MDE0MzMwLi4wYzMzNTM2MWZhMmU3M2QxN2Q3MjljNjdmMDhjMjRkMDZmZmFi
NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6Ok5l
dHdvcmtDYWNoZSB7CiBjbGFzcyBFbnRyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIFByaXZhdGVSZWxheWVkLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5
aW5nUmVxdWVzdEhlYWRlcnMpOworICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBQcml2YXRlUmVsYXllZCwgUmVmUHRyPGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICBFbnRyeShjb25zdCBLZXkm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICBleHBsaWNpdCBFbnRyeShj
b25zdCBTdG9yYWdlOjpSZWNvcmQmKTsKICAgICBFbnRyeShjb25zdCBFbnRyeSYpOwpAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgY29uc3QgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMoKSBjb25z
dCB7IHJldHVybiBtX3ZhcnlpbmdSZXF1ZXN0SGVhZGVyczsgfQogCi0gICAgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CiAgICAgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiByZWRpcmVjdFJlcXVlc3QoKSBjb25z
dCB7IHJldHVybiBtX3JlZGlyZWN0UmVxdWVzdDsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9S
RVNPVVJDRSkKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgU3RyaW5nPj4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7CiAKICAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJlcXVlc3Q7Ci0gICAg
bXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CisgICAgbXV0YWJsZSBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBtdXRhYmxl
IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgbV9zaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggMDVlYTQ1Mjc5YjQwNjNi
YjU3MjMyZGVmZjZmNWI2Njk0Mjc5MGMwMS4uNDgyNWQ5OGVjOWNjNTU1NDdhMDFjNTYyMjg5ZmUx
MjE1NWNiMjhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03Myw3ICs3
Myw2IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxS
ZXF1ZXN0OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiBtX25ldHdvcmtMb2Fk
OwotCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCA3YWFk
ZjkyZTM2MWRlZmFjNTA4ZWJkNDhkN2QwNzU4OGI0ZTQ3ZDQ2Li42MDYyMzRkZTA0ZjFhNjE2MjNm
MDI0NjIzYTFjMmFjMTlhMDc0ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZl
ckNvcHk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiBzdGQ6Om9wdGlvbmFsPFNo
YXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Y29uc3Qg
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IElQQzo6U2hhcmVkQnVm
ZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikpIH07CkBAIC01MSw3ICs1MSwxNCBAQCBjb25zdCB1aW50
OF90KiBTaGFyZWRCdWZmZXJDb3B5OjpkYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG93bmNhc3Q8U2hhcmVkQnVm
ZmVyPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Y29uc3Qg
U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKTsKK30KKworUmVmPGNvbnN0IFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQ29weTo6c2FmZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAg
aWYgKG1fYnVmZmVyKQorICAgICAgICByZXR1cm4gYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsK
KyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5k
ZXggMzcwYjgzMjhkNzZjOWMzZjc3MDA0NzM1YWQzNTlhZTZkM2VkNjA5Mi4uYzg3ZDQwYmM0Mzlh
YjkzNzA4MzFiYjc1ZmM5NmZkNTc4Mjk3MGM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtNDAsMTYgKzQwLDE4IEBAIGNsYXNzIFNoYXJl
ZEJ1ZmZlckNvcHkgewogcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7
CiAKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5
KFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
KyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlckNvcHkoUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0K
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckNvcHkoUmVmPGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKSB7IH0KICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkgeyB9CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoY29uc3Rf
Y2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oJmJ1ZmZlcikpIHsgfQorICAg
ICAgICA6IG1fYnVmZmVyKCZidWZmZXIpIHsgfQogCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CiAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1
ZTsgfQpAQCAtNTcsMTUgKzU5LDE1IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIG1l
dGhvZHMgbXVzdCBvbmx5IGJlIHVzZWQgb24gdGhlIHJlY2VpdmVyJ3MgSVBDIHNpZGUuCiAgICAg
Ly8gSXQgcmVsaWVzIG9uIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IG1ha2VzIG1fYnVm
ZmVyIGJlY29tZXMgYSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgogICAgIC8vIG9uY2UgaXQncyBk
ZXNlcmlhbGlzZWQgb3ZlciBJUEMuCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiht
X2J1ZmZlci5nZXQoKSk7IH0KLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYWZlQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBidWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgp
IDogV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZlB0cjxjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuZ2V0KCkpOyB9CisgICAgUmVmPGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FmZUJ1ZmZlcigpIGNvbnN0OwogICAgIGNvbnN0
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKIAogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVm
ZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPGNvbnN0IFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDIxZTA3MjcwMzU2Mzg2ZWE5NzUzNWM4M2Iw
YWI1YmNhMzAyNWRiYjQuLjYxOTM3NWJiM2JiOTUzY2QyYzM4ZmFhZDEyMDBhYmYyZDA3Y2I0MTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCkBAIC01MzQsMTIgKzUzNCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+
Pjo6ZGVjbwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCppbmNsdWRl
c0NyZWF0aW9uRGF0YSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAg
IGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgYXV0byBsb2NhbEZvbnRG
YWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAg
ICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCk7CiAKICAgICAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29k
ZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDk5ODdiMWE4NDc2OGYyNzM4NjNkYzBiMWE1NTM5MTUz
YzQ5ODE3ODMuLmYxNjU3MTFmMjcyMTJmN2MxOGZkMzgyZjFmYWVhNjMzOGQ1Nzg1ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjM4
LDcgKzIzOCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRC
dWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIGRhdGEpCitzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPGNvbnN0
IFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0
YS5zaXplKCkpOwogICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDcsNyArMjQ3LDcgQEAgc3Rh
dGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIs
IGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTE3ODMsNiArMTc4MywxNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEltYWdl
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRJbWFnZSYgcAogICAgIHJldHVy
biB0cnVlOwogfQogCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVk
QnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3V0QnVmZmVyOworICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIG91dEJ1ZmZlcikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBidWZmZXIgPSBXVEZNb3ZlKG91dEJ1ZmZlcik7CisgICAgcmV0dXJuIHRydWU7Cit9
CiAjZW5kaWYKIAogI2lmIFVTRShMSUJXUEUpCkBAIC0zMTExLDYgKzMxMTksNjIgQEAgc3RkOjpv
cHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmRlY28KICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9
CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2Rl
U2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8
UmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0
cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgcmV0dXJuIFdURk1vdmUoYnVmZmVyKTsKK30KKwordm9pZCBBcmd1
bWVudENvZGVyPFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rl
ciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBBcmd1bWVudENv
ZGVyPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9
CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29k
ZXI8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHJldHVybiBXVEZNb3ZlKGJ1ZmZlcik7Cit9CisKK3ZvaWQgQXJndW1l
bnRDb2RlcjxSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQor
CitzdGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJl
Zjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQogc3RhdGlj
IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGUoY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQpCiB7CkBAIC0zMTgwLDcgKzMyNDQsNyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdl
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQogewogICAgIGVuY29kZXIgPDwgbWVzc2FnZS5maXJz
dDsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1l
c3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CiAgICAgZW5j
b2RlciA8PCBtZXNzYWdlRGF0YTsKIH0KIApAQCAtMzE5MCw3ICszMjU0LDcgQEAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkNETUkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCmluZGV4IDZlMjdhNzg3MjAyMTcxYmJjZWRiYjY0ODM5MjBhN2U3OWJkNTgw
YmYuLjA0NDM1OWU5ODRlMDkwNDMxNTY1NTNlNmFmZmIwZmIzYTVjMDkxM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC03NzIsNiArNzcyLDI2
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxS
ZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNv
ZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4g
eworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVm
PGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBk
ZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0
VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3Vs
dERhdGEuY3BwCmluZGV4IGMwYmUzYTQ1Yjk4ZjAxMmY2NjMwMjlhNmQ1Y2YwYTg4MmE4ZGI3M2Mu
LjNiMDQ3NzQ1YTZmZTJhZjEzMDhlZjFhNDQ2MGJhZTFjYjYzMjQzN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
V2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIGhpdFRlc3RSZXN1bHQsIGIKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEltYWdl
KiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAgUmVmUHRy
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAg
ICAgICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CiAgICAgICAgICAgICBpbWFn
ZVNpemUgPSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
d2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggZGYzOTU0NzQ0NWM3MzI2ZDk4
MTFjMDgwMzdlODVmNDQ1N2Y4MDBlYi4uZDQwYmU1YTkyZDFhN2U1NWViYjNmZWYxYzM0ZGQzYWUw
NTE0OTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1
bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVB
cmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgc3RkOjpvcHRpb25hbDxGb250
UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0
YShEZWMKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9
IG51bGxwdHI7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewotICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsK
ICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VE
YXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAppbmRleCBjMjhmZTY1ZjBjZjE2
NDM5OTgxOGFjYTMyZjk4MWNjNzc4ZjFlOTE5Li5lYTNjZTg3NmZmY2YzMGExZjA0MDE1NWNiZjZi
ODM5N2Q0NTczZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE0uY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW1vdGVDRE06OmxvYWRB
bmRJbml0aWFsaXplKCkKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5pdGlhbGl6
ZSgpLCBtX2lkZW50aWZpZXIpOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
UmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJl
bW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBy
ZXNwb25zZSkgY29uc3QKIHsKICAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIs
IGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSgpLgog
ICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uaAppbmRleCA4YzQ1NGViODNlNTk5NGE4ZTRkNTkyZDUxZGY5
MWZmOWI1MjNjYmVmLi45ZWZjZDRjODg3Y2QxYjAyYjgzOGU2NDY1MDhhNTUyMjAxYzA0ZDkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAg
LTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNB
cmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0
YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXpl
KCkgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IGZpbmFsOworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNz
aW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBWZWN0b3I8QXRvbVN0cmlu
Zz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmln
dXJhdGlvbi5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCmluZGV4IDc1
ZDVlNWE3OTUxNGRiYzNhYWFjMDBiOTg4NGE1N2RhYzE5OGY5ZjYuLmJiZGZhMzExZWM1NjBhZWZk
OGZhMTgzYjFkMGIzNWI3YWJhZWQ3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC03OCw3ICs3OCw3
IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1DCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlUHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0
aW9uLCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
Y2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKEZhaWxlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmgKaW5kZXggMmM3ODUxZTQ0MGIwOGE1MmEyYWU3MGRhN2U0MTg4ODJlM2M2MTQzOS4u
MTBhN2JjOGY4NjVmNWRhYmYwMzU1NDllYzlmZjk1NDcxMjUxYzA2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApA
QCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxl
bWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6
UmVtb3RlOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2Vi
Q29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlm
aWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAg
ICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5rZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKaW5kZXggOGJlY2Q1OWI1ZWIzN2UwZDNhNTE0NTM4ZjM3
MzgxZDdmNzdkOGNjZS4uOGRmOTJlZDA3NTE0MWIwNDhhMzQ3ZGE1ODVjYTFkZGRkMGFjZTQ4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtNDksNyArNDksNyBAQCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90
ZUNETUZhY3Rvcnk+JiYgZgogewogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2Fs
bGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxl
ZCk7CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nCiAgICAgfSwgbV9p
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8Y29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2Us
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CkBAIC0x
MDksNyArMTA5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Np
b25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnMKICAgICB9CiAKICAgICBtX2Zh
Y3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW92ZVNlc3Np
b25EYXRhKHNlc3Npb25JZCwgdHlwZSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAo
S2V5U3RhdHVzVmVjdG9yJiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRC
dWZmZXJDb3B5PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKLSAgICAgICAg
c3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0g
c3RkOjpudWxsb3B0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICht
ZXNzYWdlICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkKICAgICAgICAgICAgIHJlYWxNZXNz
YWdlID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3Vj
Y2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCmlu
ZGV4IDRlNGNkMmMwMDVjNmIwMDY1ZjljZGIxODhjNGJjZTBiNWJmYTY2MDEuLmM2MjUyZmE3ODUw
ZDg3MGNhZTFhOTI2ZjczNjg5MzNjZDA5Yzg1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
aApAQCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRDbGllbnQoV2Vha1B0
cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYgY2xpZW50KSBmaW5hbCB7IG1f
Y2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9CiAgICAgdm9pZCBjbGVhckNsaWVudCgpIGZpbmFs
IHsgbV9jbGllbnQgPSBudWxscHRyOyB9Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwot
ICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zZVR5cGUsIFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2Fk
U2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VT
ZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRi5oCmluZGV4IDljMDg4MTYxZWRkYmYyMzQwZjg3YTBiYjk3MzQxMzdlYTdlM2Q3
MTMuLmE1NGNlOTZkYWExNzVmZTRhMjI2ZTc5ZDBjMWU4Y2QxNWYxZTFhMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZURlY29kZXJBVkYg
ZmluYWwKICAgICA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZURlY29kZXIKICAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlKFJlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIm
IGlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVh
dGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUltYWdlRGVjb2Rl
ckFWRihtYW5hZ2VyLCBpZGVudGlmaWVyLCBtaW1lVHlwZSkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCmluZGV4IGJlZGRlY2JiMDc0ZDM0MTJhOWJlOTNjYmNk
NTlhZTE5MjQ3ZjJiNGEuLjE4NGZlZDdhYWQxZWQ5OGEzNzNjNzRjOGJjNTFhYmM1M2I0ODQ2MmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0
cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNy
ZWF0ZUltYWdlRGVjb2RlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8UmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29k
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VE
ZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VEZWNvZGVySWRlbnRpZmllcjsKICAgICBpZiAoIWVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRGVjb2RlcihJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkoZGF0YSksIG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpDcmVhdGVEZWNvZGVyOjpSZXBseShpbWFnZURlY29kZXJJZGVudGlmaWVyKSwgMCkpCkBA
IC00OCw3ICs0OCw3IEBAIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihGCiAgICAgaWYgKCFpbWFnZURl
Y29kZXJJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gcmVt
b3RlSW1hZ2VEZWNvZGVyID0gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjcmVhdGUoKnRoaXMsICpp
bWFnZURlY29kZXJJZGVudGlmaWVyLCBkYXRhLCBtaW1lVHlwZSk7CisgICAgYXV0byByZW1vdGVJ
bWFnZURlY29kZXIgPSBSZW1vdGVJbWFnZURlY29kZXJBVkY6OmNyZWF0ZSgqdGhpcywgKmltYWdl
RGVjb2RlcklkZW50aWZpZXIsIG1pbWVUeXBlKTsKICAgICBtX3JlbW90ZUltYWdlRGVjb2RlcnMu
YWRkKCppbWFnZURlY29kZXJJZGVudGlmaWVyLCByZW1vdGVJbWFnZURlY29kZXIpOwogCiAgICAg
cmV0dXJuIHJlbW90ZUltYWdlRGVjb2RlcjsKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFJlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9j
ZXNzKQogICAgIEltYWdlRGVjb2Rlcjo6aW5zdGFsbEZhY3RvcnkoewogICAgICAgICBSZW1vdGVJ
bWFnZURlY29kZXJBVkY6OnN1cHBvcnRzTWVkaWFUeXBlLAogICAgICAgICBSZW1vdGVJbWFnZURl
Y29kZXJBVkY6OmNhbkRlY29kZVR5cGUsCi0gICAgICAgIFt0aGlzXShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pIHsKKyAgICAgICAgW3RoaXNdKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgewogICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZUltYWdlRGVjb2RlcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRp
b24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAgfQogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaAppbmRleCAzNjE4YWZkMTIwOThiNTU3NmI0ZGQ0
ZmZiZjNjMDZmYmE4NDJhNzY0Li45OTJlZDIxYTQ3MmJkYjU3YWQxZDVlMWUyNWJkNmQxODg1YTI5
Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGVuc3VyZUdQVVByb2Nlc3NDb25u
ZWN0aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4g
Y3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0aW9uLCBXZWJDb3JlOjpH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2Rl
ckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0aW9u
LCBXZWJDb3JlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICAvLyBHUFVQcm9j
ZXNzQ29ubmVjdGlvbjo6Q2xpZW50LgogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRD
bG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDAzNTNhYWJmN2Q0YjkyNWFhMmYx
NTYyZDU3M2FhZjMwOTNjODNiYzkuLjk5Njc3ZjMzZDA3ZDA1Y2JmMmE5YzBmMjRiMDAwYTMwMzVi
YmYwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3Ry
aW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6
OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2Vi
UGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6
V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViS2l0
OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNp
bXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KaW5kZXggNjZhMzVhZWNhY2RmYzMwZTI5YmFkMGJiNDQyYzhlMjNhNjBj
NjJiZS4uMmZhZDk3MzdiNzk5ZDJhNjBlMTU3YTdkYjZiOGUzZjRmMjdmMDY3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjI5LDcgKzYyOSw3IEBAIC0gKHZvaWQpX3Nl
dEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4p
ZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRl
LmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJv
bGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFu
ZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Y29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkx
MWRlOGYyZTA4MDkwLi4wMjI0NjM3ZDFiYTdlMmNhODZhZjg3ZWU5MTU4MzhlYzAwYzlhZjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAt
MTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxs
V3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQu
d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJh
bmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBh
Z2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0
UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAg
IGlmIChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJy
YXlSZWYgdHlwZXMgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5oCmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0
OTQuLjc5NmJkYWJmZTI5ZmIwYjNhNDljNzhlYmFjYjc3MmVkNzAyODJmYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3Rp
ZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdl
JiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxX
cml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAg
ICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBw
ZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBj
b25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5h
bDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNGEwMGYyMjhjZDUwZjg1YzAzZjk5N2YwNDdjNjljZTUy
MGU5ZjE3Ny4uMjJhNWVkM2MyODkxMDJjM2E5MTQyNTNlOGZmYzE1ZDk1Yzk0OTQ1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcApAQCAtMjE3LDE1ICsyMTcsMTUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQcmkKICAg
ICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShwb2xp
Y3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZvciAnJXMnIiwgZGF0YS5zaXplKCksIG1f
Y29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJv
Y2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3Bv
bnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJj
ZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgbV9pbnRlcmNl
cHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVuY29k
ZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgeworICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIu
ZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGVuY29kZWREYXRhTGVuZ3RoXSgp
IG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAg
ICBkaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShidWZmZXIpKSwg
ZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1v
dmUoZGF0YSksIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuaAppbmRleCBhYzBhZGM5YjhkN2E0ZjIxZThiY2FiNWY4ODkyNDQ1OGU1
NGUyYjFjLi5iZmRkMjk1NWU0YTNkNThmY2RhMDIyODg5YjA1ZTJkY2ViYTdhNGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkU2VuZERh
dGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBQcml2YXRlUmVsYXllZCwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxTZXJ2aWNlV29ya2VyTG9h
ZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDAzNDRmNGJlMjNhNDM3NjcxOTc3
ODk5OTdkNzYzN2EyMDMxYjdlYWUuLmY1ZGE1NTY2NzE3MDJkMWJkYzk5NTZkMWEwZjE4MDU4ZGUw
Zjg0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCkBAIC04NjIsNyArODYyLDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVu
ZGVyZXIoKQogICAgIG1fcGx1Z2luLT53aWxsRGV0YWNoUmVuZGVyZXIoKTsKIH0KIAotUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBj
b25zdAorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6Omxp
dmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFt
X3BsdWdpbikgewogICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJl
YW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKaW5kZXggMjU2MTVjYjMwZjIyNjQ2MzkyNDQ0ODhmMmJkN2M0MTIyNzkwNzli
OS4uZWY3MDAyYWI0OWQwODBjMzgzY2EwMjY2MWE4OWE3NTRmNTQ3NTc4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMTEzLDcgKzExMyw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKTsKIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkg
Y29uc3Q7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgYm9vbCBleGlz
dGluZ1NlbGVjdGlvbkNvbnRhaW5zUG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGM0ZGY4YWYyMmIzM2FiOGFhOWQ3NzUy
YmQ1OGEyN2U5NmM0ZTE3M2QuLjg0OWU2ZmYwYWE2ZjU4NTYwM2ViNmEwMGY4YmVkZWMyYTcyYWMz
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBXZWJF
ZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHls
ZSwgY29uc3Qgc3RkOjoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBw
cmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBw
cmVmZXJyZWRGaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoZGF0YSkpKSk7
CiB9CkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBtX3Bh
Z2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKCpt
X3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2Fy
ZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMGY3M2U0
ZmI2MzYyMmM2ZmFlOTYzNTIxOGI1N2YwNjBlMjYxMTI1MC4uOWRhZTliODM0YTVkMjU5MTY0NGYw
YzUwMTg1NmJlOTQ3OGU4MTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNjYsNyArNjYsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgV2Vi
Q29yZTo6U2ltcGxlUmFuZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwog
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9y
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgZmluYWw7CkBAIC04OCw3ICs4
OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9p
ZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRv
U3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3Rl
cChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAppbmRleCBmODNmYjNlMGNmZTU3NTQ2YzA3ODc4YmM1ZDQ2MmNiMWU2OTFjODIwLi42YTMy
ODAzNzhkMTQ1YjQxZDFjMWEyNzkwYjRkMzA5YTg2MDVkZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5
cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVm
UHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAg
IC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJy
aWRlQnVmZmVyOwpAQCAtMjA5LDcgKzIwOSw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAg
ICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqIGNvbnRleHQpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0QnVmZmVyRm9yVHlwZShjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFu
ZGxlOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpIHsKQEAgLTMyNCw3ICszMjQs
NyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkKK1JlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6U2hhcmVkQnVm
ZmVyQ29weSBkYXRhOwpAQCAtNDE3LDcgKzQxNyw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
CiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitS
ZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFZlY3Rvcjx1aW50OF90
PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVk
UGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwg
cGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAppbmRleCAyMDBiNmMwMTU5YjY4OGM3MmEzZmFkZmJhZTBhNjk0ODMxYjkzNmUwLi5jNDRl
MjQxMTRiYjFhMDlkZWEwODQzOGVmMzM0MDNhMGRjYTViMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lk
IGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0
b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3Ry
aW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBA
IC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRUZXh0RnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBW
ZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Y29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlk
ZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBA
IC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2Fy
ZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNDBiOTk3MzIwMDc4MjVl
NjY4M2U2MzY4MDQzZjYyYjZiNTkwMzM3Yi4uYTE2NTgyYTJkNDE1MGYxMDZhY2ZlMzVkNTkzZTQ3
YzZiNGM0YjZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29u
c3QKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVGcmFtZS0+bG9h
ZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgp
OworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VE
YXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5S
ZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gZGVjb2Rl
ci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzNDk4N2JkZTY0ZmRmZjA5MDgzMmMzNzU0
MmI5MzUxM2E2MWFkY2NiLi4xZDhlY2M2NmQwZTMxODU5ZWQ2Yzk3MGIxYzliYjJlZGEzMmJkN2Mz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
Mzg3NCw3ICszODc0LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9pZCBXZWJQYWdl
OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
Q29weT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0g
cGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSkpCiAgICAgICAgICAgICBidWZm
ZXIgPSBwbHVnaW5WaWV3LT5saXZlUmVzb3VyY2VEYXRhKCk7CkBAIC0zODg3LDcgKzM4ODcsNyBA
QCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZAogICAgIGNhbGxiYWNrKElQQzo6U2hhcmVkQnVmZmVy
Q29weShXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
cmVzb3VyY2VVUkwpCitzdGF0aWMgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVS
TCkKIHsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0zOTAyLDcgKzM5MDIsNyBAQCBzdGF0
aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZy
YW1lKiBmcmFtZSwgY29uc3QgVQogCiB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21G
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0
cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgVVJMIHJlc291cmNlVVJMKFVSTCgpLCBy
ZXNvdXJjZVVSTFN0cmluZyk7CiAgICAgICAgIGJ1ZmZlciA9IHJlc291cmNlRGF0YUZvckZyYW1l
KGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwpAQCAtNzA1Miw3ICs3MDUyLDcgQEAg
dm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENh
bGxiYWNrSUQgbG9hZElkZW50aWZpZXIKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIGRvY3VtZW50TG9hZGVyLT5k
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVn
ZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJsZSB7CisgICAg
ZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJ
ZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGF1dG8qIGljb25EYXRhKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFJlZlB0ciB7IGljb25EYXRhIH0pKTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KaW5kZXggODU0NDNmYzZhOTcwNTk0ODIyMmYxMDc1MWIyYzEzOGNlZjA2
YzFhZi4uMjZkYTZjYzljZjNiMzAzMjNlM2U2YzRhNDlhZWU2YWQ0OTBkNzA5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAg
LTMyODIsNyArMzI4Miw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1
aW50MzJfdCBhY3Rpb24pCiAgICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRvd25j
YXN0PFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJlcigpKS5jYWNoZWRJbWFnZSgpOwogICAg
ICAgICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNl
QnVmZmVyKCk7CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRl
eCA0MjAxMDdkYTY1Yjc2YjZkMTJjNGM0NTgxMzlmMzA4MjU4ZDkzZmYzLi43NDhkZTY2NDM3Y2E0
NDJhYmY2ZmNhZmEwODAzNjRjNDNhZjQxZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyAr
ODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZv
aWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vz
c1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2VzcyhXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc0Nh
dGVnb3J5LCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXgg
YzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uZjFlMmEzNjUyYWYxNmFk
NjhjODUyZGQxNmJiNzA2YmVlOWUzZGRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcg
KzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVk
IFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRl
ZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDhkZjk5M2YyZDc3NWI2YzkzZDJlOGYwOTkwZjcyZjg1ZjYxOGU1OGUuLmVhMjRhODMyZDVmMWVi
MWMyNThjYWQyMjE4OTMxMjZjNTIxMzdmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVS
TCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+
PiYpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKGNvbnN0IFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCmluZGV4IDg3YTVkNjU3ZjdiNzMzZDA3YzVkYjYwMWY2OTgxZjkwNDk3NzEzOTMu
LjQ0ODBhMDRhNjhhODM4MGU4Y2VjMmEwMDkwNjI5NjUyNDIxNDBkYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCkBAIC0yMDkzLDcgKzIwOTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdl
YkNvcgogICAgICAgICB9CiAKICAgICAgICAgbV9sb2FkaW5nSWNvbiA9IHRydWU7Ci0gICAgICAg
IGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNl
Y29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRp
ZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKGF1dG8qIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBmaW5pc2hl
ZExvYWRpbmdJY29uKGJ1ZmZlcik7CkBAIC0yMTMwLDcgKzIxMzAsNyBAQCBzdGF0aWMgTlNJbWFn
ZSAqd2ViR2V0TlNJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQogfQog
I2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGljb25EYXRhKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNv
bihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKIHsKICNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQobV9sb2FkaW5nSWNvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDFkODFmZmExOWQ5N2YwNGVjN2NjNTc1YjNlY2U1
ZTg4ODE0NDBiMzkuLjFmMTQ1YjQyYzBjY2VjMzQxMzAzMmY1YzIxMmZkZTM3ZmFjZWVmOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAg
IFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5n
ZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0
cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBA
IC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50
NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFy
ZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDE4OGVjNTAwNDUwNzdkNzhiMDEyMGE2ZGFmYmIw
NGZiNzkyNzY0NjQuLmY0Mzk2NmNjNDU1ZWU1NThmY2Y2MTM3YzAyMmNiYzQ5YzJhZTU1NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
Z2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVm
UHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsK
IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldFR5cGVzKHBhc3RlYm9hcmRU
eXBlcyk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JU
eXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitp
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShjb25zdCBTaGFy
ZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUo
YnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAg
ICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGlu
ZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQ5MWZjYjNiZmM4MWNjYTkxZWM3ZTBlNTZj
NDI4Li4yMzhhNDRhNTM3M2U4Y2M4MzI5YmU2ZDIwNzcwN2FkN2U5Mzg5YjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjAs
NyArNDYwLDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9
IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJl
ZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VE
YXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAg
ICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVy
biBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRv
cmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3Vy
Y2UubW0KaW5kZXggMTJkNTljMGExNzY4MThlNjYyYzQzYzA3NDRhNTNhMTAxYzg1NjFlZC4uZTBk
MGY3MzA2MjkzNDg5NWMzZjE4YmU3NWVlYjI1MGIxNWM2YjA1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0zNjYsOCArMzY2LDggQEAg
LSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBfcHJpdmF0ZS0+
Y29yZVJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICBpZiAoIWVuY29kaW5nLmlzVmFsaWQo
KSkKICAgICAgICAgZW5jb2RpbmcgPSBQQUw6OldpbmRvd3NMYXRpbjFFbmNvZGluZygpOwotICAg
IAotICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVS
ZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOworCisg
ICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CiAg
ICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihj
b3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwg
Y29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
CmluZGV4IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEuLmUwODY0ZjE3
MjIzZGJlYzQwOTEzYmQ0MTczZTZiM2U1YTcwYWFkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApA
QCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAKLXZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8Y29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
aW5kZXggMDg3YjY5ZTdhOGIwYjY4OGFjYmZlNDRlNGRhYjFiN2JkYTU0MWYyOC4uZWY4OWJhNDAw
YzEyZWRjMjM5MDBiMWNlMmZlMjRmMTA5ZDRhNmJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTU1
LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAg
ICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJU
cmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9D
aGFuZ2VkQ29udGVudHMoKSBmaW5hbDsK
</data>
<flag name="commit-queue"
          id="479797"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>