<?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>125129</bug_id>
          
          <creation_ts>2013-12-02 18:16:23 -0800</creation_ts>
          <short_desc>Replace uses of WebKit::APIClient with API::Client</short_desc>
          <delta_ts>2013-12-02 18:33: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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>955731</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-12-02 18:16:23 -0800</bug_when>
    <thetext>Replace uses of WebKit::APIClient with API::Client</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955734</commentid>
    <comment_count>1</comment_count>
      <attachid>218252</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-12-02 18:19:20 -0800</bug_when>
    <thetext>Created attachment 218252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955739</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-12-02 18:33:22 -0800</bug_when>
    <thetext>Committed r159988: &lt;http://trac.webkit.org/changeset/159988&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218252</attachid>
            <date>2013-12-02 18:19:20 -0800</date>
            <delta_ts>2013-12-02 18:27:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125129-20131202181919.patch</filename>
            <type>text/plain</type>
            <size>197507</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5OTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDFlMjI2NDk0NzRhNjRk
NTY5YTY3MzEwZTA4NzQ4YzEzOTgwNDQ0OC4uMjlmYzcyOTExYTU3MjQ1ODQzMmZkMmRlZmVhNjIw
OTZjYTI5ZjNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1MyBAQAogMjAxMy0xMi0wMiAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlcGxhY2UgdXNl
cyBvZiBXZWJLaXQ6OkFQSUNsaWVudCB3aXRoIEFQSTo6Q2xpZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUxMjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Nvbm5lY3Rp
b25SZWYuY3BwOgorICAgICAgICAoV0tDb25uZWN0aW9uU2V0Q29ubmVjdGlvbkNsaWVudCk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b25uZWN0aW9uOjppbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudCk6CisgICAgICAgICogU2hhcmVk
L1dlYkNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29ubmVjdGlvbkNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbm5lY3Rpb25DbGllbnQ6OmRpZFJlY2VpdmVNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvbkNsaWVudDo6ZGlkQ2xvc2UpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb25uZWN0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRTZXRDbGllbnQpOgor
ICAgICAgICAoV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQpOgorICAgICAgICAoV0tD
b250ZXh0U2V0SGlzdG9yeUNsaWVudCk6CisgICAgICAgIChXS0NvbnRleHRTZXREb3dubG9hZENs
aWVudCk6CisgICAgICAgIChXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQ29va2ll
TWFuYWdlclNldENsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRGF0YWJhc2VN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLRGF0YWJhc2VNYW5hZ2VyU2V0Q2xpZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRh
dGFiYXNlQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tPcmlnaW5EYXRhTWFuYWdlci5jcHA6CisgICAg
ICAgIChXS09yaWdpbkRhdGFNYW5hZ2VyU2V0Q2hhbmdlQ2xpZW50KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VDb250ZXh0TWVu
dUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRmluZENsaWVudCk6CisgICAgICAgIChX
S1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZv
cm1DbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCk6CisgICAgICAg
IChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoc2V0VXBQYWdlUG9saWN5
Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OmluaXRpYWxpemVQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6
OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
b3RpZmljYXRpb25Qcm92aWRlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6YWRkTm90aWZpY2F0aW9uTWFu
YWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZW1vdmVO
b3RpZmljYXRpb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJv
dmlkZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6aW5pdGlhbGl6
ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmluaXRpYWxpemVJbmplY3Rl
ZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmluaXRpYWxpemVD
b25uZWN0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6aW5pdGlhbGl6
ZUhpc3RvcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojppbml0aWFsaXpl
RG93bmxvYWRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0Q2xpZW50OjpwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXNDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dENsaWVudDo6bmV0d29ya1Byb2Nlc3NEaWRDcmFzaCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRDbGllbnQ6OnBsdWdJbkluZm9ybWF0aW9uQmVj
YW1lQXZhaWxhYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRleHRDb25uZWN0aW9uQ2xpZW50OjpkaWRDcmVhdGVDb25uZWN0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHRJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudDo6Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHlDbGllbnQ6OmNvb2tpZXNEaWRDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
RGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1h
bmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkRh
dGFiYXNlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFu
YWdlclByb3h5Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2Vy
UHJveHlDbGllbnQ6OmRpZE1vZGlmeU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFi
YXNlTWFuYWdlclByb3h5Q2xpZW50OjpkaWRNb2RpZnlEYXRhYmFzZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkRvd25sb2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRG93bmxvYWRD
bGllbnQ6OmRpZFN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRv
d25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJE
b3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJEb3du
bG9hZENsaWVudDo6c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRl
RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJEb3dubG9hZENsaWVudDo6ZGlkRmlu
aXNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViRG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkRvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZpbmRD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmluZENsaWVudDo6ZGlkRmFpbFRvRmluZFN0cmluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZpbmRDbGllbnQ6OmRpZENvdW50U3RyaW5nTWF0Y2hlcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZpbmRNYXRjaGVzQ2xpZW50OjpkaWRGaW5kU3RyaW5nTWF0
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbmRNYXRjaGVzQ2xpZW50OjpkaWRHZXRJbWFn
ZUZvck1hdGNoUmVzdWx0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRmluZENsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGb3JtQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRm9ybUNsaWVudDo6d2lsbFN1Ym1pdEZvcm0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJG
b3JtQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Omlu
aXRpYWxpemVQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblByb3ZpZGVyOjpzdGFydFVwZGF0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qcm92aWRlcjo6c3RvcFVwZGF0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qcm92aWRlcjo6c2V0RW5hYmxl
SGlnaEFjY3VyYWN5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25Qcm92aWRl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJIaXN0b3J5Q2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSGlzdG9yeUNsaWVudDo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJIaXN0b3J5Q2xpZW50OjpkaWRQZXJmb3JtQ2xpZW50UmVk
aXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXN0b3J5Q2xpZW50OjpkaWRQZXJmb3JtU2Vy
dmVyUmVkaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXN0b3J5Q2xpZW50OjpkaWRVcGRh
dGVIaXN0b3J5VGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXN0b3J5Q2xpZW50Ojpwb3B1
bGF0ZVZpc2l0ZWRMaW5rcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkhpc3RvcnlDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViSWNvbkRhdGFiYXNlOjppbml0aWFsaXplSWNvbkRhdGFiYXNlQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkljb25EYXRhYmFzZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkljb25EYXRh
YmFzZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJY29uRGF0YWJhc2VDbGllbnQ6OmRpZFJlbW92ZUFsbEljb25zKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjppY29uRGF0YVJlYWR5Rm9yUGFnZVVSTCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpzZXRD
aGFuZ2VDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFu
Z2VDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
Q2hhbmdlQ2xpZW50OjpkaWRDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcmlnaW5E
YXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDb250ZXh0
TWVudUNsaWVudDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUNvbnRleHRNZW51Q2xpZW50OjpjdXN0b21Db250ZXh0TWVudUl0ZW1TZWxl
Y3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDb250ZXh0TWVudUNsaWVudDo6Y29udGV4
dE1lbnVEaXNtaXNzZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ29udGV4dE1lbnVDbGll
bnQ6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDb250ZXh0TWVu
dUNsaWVudDo6aGlkZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUNv
bnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVBvbGljeUNsaWVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUZvcm1DbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVVSUNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUZpbmRDbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVGaW5kTWF0Y2hlc0NsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHRNZW51Q2xpZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBvbGljeUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvbGljeUNsaWVu
dDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBvbGljeUNsaWVudDo6dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6Y3JlYXRl
TmV3UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50OjpzaG93UGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVJ
Q2xpZW50Ojp0YWtlRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6Zm9jdXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6dW5mb2N1cyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJV
SUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVJQ2xp
ZW50OjpzZXRTdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVUlDbGllbnQ6Om1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVUlDbGllbnQ6OnVuYXZh
aWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50
OjpkaWROb3RIYW5kbGVLZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50Ojpk
aWROb3RIYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVUlDbGllbnQ6OnRv
b2xiYXJzQXJlVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50OjpzZXRUb29s
YmFyc0FyZVZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6bWVudUJhcklz
VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50OjpzZXRNZW51QmFySXNWaXNp
YmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVUlDbGllbnQ6OnN0YXR1c0JhcklzVmlzaWJsZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50OjpzZXRTdGF0dXNCYXJJc1Zpc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6aXNSZXNpemFibGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVSUNsaWVudDo6c2V0SXNSZXNpemFibGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
SUNsaWVudDo6c2V0V2luZG93RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6
d2luZG93RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6cnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVUlDbGllbnQ6OmRpZERyYXcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6cGFnZURpZFNjcm9sbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlVJQ2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVSUNsaWVudDo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6aGVhZGVy
SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVUlDbGllbnQ6OmZvb3RlckhlaWdodCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50OjpkcmF3SGVhZGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVUlDbGllbnQ6OmRyYXdGb290ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVu
dDo6cHJpbnRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50OjpydW5Nb2RhbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50OjpzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRz
Rm9sZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVUlDbGllbnQ6OnNob3VsZEludGVycnVwdEph
dmFTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6c2hvd0NvbG9yUGlja2Vy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVUlDbGllbnQ6OmhpZGVDb2xvclBpY2tlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVJQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
ZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVNldENs
aWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQpOgor
ICAgICAgICAoV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxl
UGFnZVNldEZvcm1DbGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNs
aWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQpOgorICAg
ICAgICAoV0tCdW5kbGVQYWdlU2V0UG9saWN5Q2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFn
ZVNldFVJQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQp
OgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZUNsaWVudCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkQ3JlYXRlUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50Ojp3aWxsRGVzdHJveVBhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91
cCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZl
TWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21E
ZWZhdWx0SXRlbXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQ6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQ6OnNob3VsZEJlZ2luRWRpdGluZyk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvdWxkRW5kRWRpdGluZyk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0Tm9kZSk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0
VGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6
c2hvdWxkRGVsZXRlUmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUpOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmRpZEJlZ2luRWRp
dGluZyk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6
ZGlkRW5kRWRpdGluZyk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6ZGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50OjpkaWRDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZCk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6ZGlkV3JpdGVUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudDo6ZGlkRm9j
dXNUZXh0RmllbGQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xp
ZW50Ojp0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Ojp0ZXh0RmllbGREaWRFbmRFZGl0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4
dEZpZWxkKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudDo6
dGV4dERpZENoYW5nZUluVGV4dEFyZWEpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VGb3JtQ2xpZW50OjpzaG91bGRQZXJmb3JtQWN0aW9uSW5UZXh0RmllbGQpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Ojp3aWxsU2VuZFN1Ym1pdEV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudDo6d2ls
bFN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xp
ZW50OjpkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50OjpzaG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUZ1bGxTY3JlZW5DbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERh
dGFSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50OjpzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZhaWxQcm92
aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVu
dExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hQcm9ncmVzcyk6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRmFpbExvYWRXaXRoRXJy
b3JGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlk
UmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJ1bklu
c2VjdXJlQ29udGVudEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1NGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZExheW91dEZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRMYXlvdXQpOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZENsZWFyV2lu
ZG93T2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudDo6ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6Omdsb2JhbE9iamVjdElzQXZhaWxh
YmxlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OndpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkUmVj
b25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0
Rm9yRE9NV2luZG93RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50OjpzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTCk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZmVhdHVy
ZXNVc2VkSW5QYWdlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Ojp3aWxsRGVzdHJveUZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5
Q2xpZW50Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9h
ZENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNl
TG9hZENsaWVudDo6ZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEZv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2Fk
Q2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudDo6ZGlkUmVjZWl2ZUNvbnRlbnRM
ZW5ndGhGb3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJl
c291cmNlTG9hZENsaWVudDo6ZGlkRmluaXNoTG9hZEZvclJlc291cmNlKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRGYWlsTG9hZEZv
clJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VM
b2FkQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VSZXNvdXJjZUxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OndpbGxBZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OndpbGxTZXRTdGF0dXNiYXJU
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OndpbGxS
dW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VV
SUNsaWVudDo6d2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OndpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnBh
Z2VEaWRTY3JvbGwpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dDo6c2hvdWxkR2VuZXJhdGVGaWxlRm9yVXBsb2FkKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OmdlbmVyYXRlRmlsZUZvclVwbG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpzdGF0dXNCYXJJc1Zpc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bWVudUJhcklzVmlz
aWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojp0b29s
YmFyc0FyZVZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudDo6ZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6ZGlkRXhjZWVkRGF0YWJhc2VRdW90YSk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpwbHVnSW5TdGFy
dExhYmVsVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dDo6cGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVQYWdlVUlDbGllbnQ6OnBsdWdJbkV4dHJhU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpwbHVnSW5FeHRyYVNjcmlwdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0
ZWRCdW5kbGVGb3JtQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5pdGlhbGl6
ZUluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlVUlDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGdWxs
U2NyZWVuQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5pdGlhbGl6ZUluamVj
dGVkQnVuZGxlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisKKzIwMTMtMTItMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBBZGQgdmVyc2lvbmVkIHN0cnVjdHMgZm9yIHRoZSBy
ZW1haW5pbmcgY2xpZW50cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI1MTIzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS0Nvbm5lY3Rpb25SZWYuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29u
bmVjdGlvblJlZi5jcHAKaW5kZXggNmM0NzAwZjU5ODRiNDYwYTBkZWMwZjI4NTVmMTQ2ZDcwMmFi
ZjgwMi4uN2Y2NTI1OTQ1Zjc5ZTBlMzI0NmM5NTNiZDYzMTY1ZDNhOWJmOGQ4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29ubmVjdGlvblJlZi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29ubmVjdGlvblJlZi5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgV0tUeXBlSUQgV0tDb25uZWN0aW9uR2V0VHlwZUlEKCkKIAogdm9pZCBXS0Nvbm5l
Y3Rpb25TZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29ubmVjdGlvblJlZiBjb25uZWN0aW9uUmVmLCBj
b25zdCBXS0Nvbm5lY3Rpb25DbGllbnQqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChjb25uZWN0
aW9uUmVmKS0+aW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQod2tDbGllbnQpOworICAgIHRvSW1w
bChjb25uZWN0aW9uUmVmKS0+aW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBXS0Nvbm5lY3Rpb25DbGllbnRCYXNlKj4od2tDbGllbnQpKTsKIH0KIAogdm9p
ZCBXS0Nvbm5lY3Rpb25Qb3N0TWVzc2FnZShXS0Nvbm5lY3Rpb25SZWYgY29ubmVjdGlvblJlZiwg
V0tTdHJpbmdSZWYgbWVzc2FnZU5hbWVSZWYsIFdLVHlwZVJlZiBtZXNzYWdlQm9keVJlZikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmNwcAppbmRleCA2YjA4NGNmZTc2ZjczYzFj
N2I5OWYxZTRiY2E5MzkzOWMxM2UzNjFiLi5iMTYwZWM3OWY0OTFjYjdmOTc4MTYwMjRhYTc0MGRl
YjQ4ZTBmOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwCkBAIC00
MSw3ICs0MSw3IEBAIFdlYkNvbm5lY3Rpb246On5XZWJDb25uZWN0aW9uKCkKIHsKIH0KIAotdm9p
ZCBXZWJDb25uZWN0aW9uOjppbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudChjb25zdCBXS0Nvbm5l
Y3Rpb25DbGllbnQqIGNsaWVudCkKK3ZvaWQgV2ViQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZUNvbm5l
Y3Rpb25DbGllbnQoY29uc3QgV0tDb25uZWN0aW9uQ2xpZW50QmFzZSogY2xpZW50KQogewogICAg
IG1fY2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29u
bmVjdGlvbi5oCmluZGV4IDNlMjVkOGZhYTNlODlkMGE3N2Y1Y2IxODY0ZDFkZDQ0NzJkYTk5OWQu
Ljg5Y2IwM2E4ZjFlOWI0MjQ1MGQwYzFmNjFiNTE2N2VkY2Q0ZjU3Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvbm5lY3Rpb24uaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBXZWJDb25uZWN0
aW9uIDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGU6OkNvbm5lY3Rp
b24+LCBwdQogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkNvbm5lY3Rpb24oKTsKIAotICAgIHZv
aWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQoY29uc3QgV0tDb25uZWN0aW9uQ2xpZW50Kik7
CisgICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudChjb25zdCBXS0Nvbm5lY3Rpb25D
bGllbnRCYXNlKik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBBUEk6Ok9i
amVjdCopOwogICAgIHZvaWQgZGlkQ2xvc2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvbm5lY3Rpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvbm5lY3Rpb25DbGllbnQuY3BwCmluZGV4IGE3ZTI3YzBlNzI2NjA2YzZjZGNmZTI5MzU2
NTI4YjlhMWRmYzhlMDYuLmJjM2ZlNjM4ZDQ4M2I0MGU5YjE3MTZmOGMyNzMxMGI1ODIzMTMzZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbkNsaWVudC5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAgdm9pZCBXZWJDb25uZWN0aW9uQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2Fn
ZShXZWJDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBTdHIKICAgICBpZiAoIW1fY2xpZW50
LmRpZFJlY2VpdmVNZXNzYWdlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZU1lc3NhZ2UodG9BUEkoY29ubmVjdGlvbiksIHRvQVBJKG1lc3NhZ2VOYW1lLmlt
cGwoKSksIHRvQVBJKG1lc3NhZ2VCb2R5KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2UodG9BUEkoY29ubmVjdGlvbiksIHRvQVBJKG1lc3NhZ2VO
YW1lLmltcGwoKSksIHRvQVBJKG1lc3NhZ2VCb2R5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKIH0KIAogdm9pZCBXZWJDb25uZWN0aW9uQ2xpZW50OjpkaWRDbG9zZShXZWJDb25uZWN0aW9u
KiBjb25uZWN0aW9uKQpAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFdlYkNvbm5lY3Rpb25DbGllbnQ6
OmRpZENsb3NlKFdlYkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAgICAgaWYgKCFtX2NsaWVudC5k
aWRDbG9zZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fY2xpZW50LmRpZENsb3NlKHRv
QVBJKGNvbm5lY3Rpb24pLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRD
bG9zZSh0b0FQSShjb25uZWN0aW9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29ubmVjdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rp
b25DbGllbnQuaAppbmRleCA5ZDQ5MjZiNDE3OGFkZThjYjYyYWE1MGIwZWYxMjMzNDgzOTY5OTYz
Li43ZDRjZmFhZTMxNjM4ZDhkYzNjM2RhYmQ0NDFkYTkwY2Y3YTE5ZjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uQ2xpZW50LmgKQEAgLTMwLDYgKzMwLDEwIEBACiAj
aW5jbHVkZSAiV0tDb25uZWN0aW9uUmVmLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAor
dGVtcGxhdGU8PiBzdHJ1Y3QgQVBJOjpDbGllbnRUcmFpdHM8V0tDb25uZWN0aW9uQ2xpZW50QmFz
ZT4geworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0Nvbm5lY3Rpb25DbGllbnRWMD4gVmVyc2lv
bnM7Cit9OworCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIH0KQEAgLTM4LDcgKzQy
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkNvbm5lY3Rpb247CiAKLWNsYXNz
IFdlYkNvbm5lY3Rpb25DbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQ29ubmVjdGlvbkNsaWVu
dCwgV0tDb25uZWN0aW9uQ2xpZW50Q3VycmVudFZlcnNpb24+IHsKK2NsYXNzIFdlYkNvbm5lY3Rp
b25DbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tDb25uZWN0aW9uQ2xpZW50QmFzZT4gewog
cHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoV2ViQ29ubmVjdGlvbiosIGNvbnN0
IFN0cmluZyYsIEFQSTo6T2JqZWN0Kik7CiAgICAgdm9pZCBkaWRDbG9zZShXZWJDb25uZWN0aW9u
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4
IDZiYjlmYTBlNmU3MzBhMDBlZTcxNjdjMDQ3YWNjNmFkODk2OTE3ZmUuLjJjMTQxNzJjZWNhMDU3
Y2ExNWJkMGYxYWU3ZmM0M2FjYTgyZWEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC04MiwyNyArODIsMjcgQEAgV0tDb250ZXh0UmVmIFdL
Q29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgoV0tTdHJpbmdSZWYgcGF0aFJlZikK
IAogdm9pZCBXS0NvbnRleHRTZXRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0
IFdLQ29udGV4dENsaWVudCogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKGNvbnRleHRSZWYpLT5p
bml0aWFsaXplQ2xpZW50KHdrQ2xpZW50KTsKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPmluaXRp
YWxpemVDbGllbnQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKj4o
d2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChjb250ZXh0UmVmKS0+aW5pdGlhbGl6ZUluamVj
dGVkQnVuZGxlQ2xpZW50KHdrQ2xpZW50KTsKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPmluaXRp
YWxpemVJbmplY3RlZEJ1bmRsZUNsaWVudChyZWludGVycHJldF9jYXN0PGNvbnN0IFdLQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSo+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250
ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250
ZXh0SGlzdG9yeUNsaWVudCogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKGNvbnRleHRSZWYpLT5p
bml0aWFsaXplSGlzdG9yeUNsaWVudCh3a0NsaWVudCk7CisgICAgdG9JbXBsKGNvbnRleHRSZWYp
LT5pbml0aWFsaXplSGlzdG9yeUNsaWVudChyZWludGVycHJldF9jYXN0PGNvbnN0IFdLQ29udGV4
dEhpc3RvcnlDbGllbnRCYXNlKj4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRE
b3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0RG93
bmxvYWRDbGllbnQqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChjb250ZXh0UmVmKS0+aW5pdGlh
bGl6ZURvd25sb2FkQ2xpZW50KHdrQ2xpZW50KTsKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPmlu
aXRpYWxpemVEb3dubG9hZENsaWVudChyZWludGVycHJldF9jYXN0PGNvbnN0IFdLQ29udGV4dERv
d25sb2FkQ2xpZW50QmFzZSo+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0Q29u
bmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q29u
bmVjdGlvbkNsaWVudCogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKGNvbnRleHRSZWYpLT5pbml0
aWFsaXplQ29ubmVjdGlvbkNsaWVudCh3a0NsaWVudCk7CisgICAgdG9JbXBsKGNvbnRleHRSZWYp
LT5pbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudChyZWludGVycHJldF9jYXN0PGNvbnN0IFdLQ29u
dGV4dENvbm5lY3Rpb25DbGllbnRCYXNlKj4od2tDbGllbnQpKTsKIH0KIAogV0tEb3dubG9hZFJl
ZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNv
bnN0IFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAppbmRleCA0OWNlNmFjMGMwMGIyOWQ1
NzNlM2ZkNmEzZmU5YTljYjFiZWE3MjI1Li40MTEzMWExZDlkZjI1MjQxMGE0OTdkODIyMjRkYzgx
NGJiMWE5ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tD
b29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tD
b29raWVNYW5hZ2VyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBXS1R5cGVJRCBXS0Nvb2tpZU1hbmFn
ZXJHZXRUeXBlSUQoKQogCiB2b2lkIFdLQ29va2llTWFuYWdlclNldENsaWVudChXS0Nvb2tpZU1h
bmFnZXJSZWYgY29va2llTWFuYWdlclJlZiwgY29uc3QgV0tDb29raWVNYW5hZ2VyQ2xpZW50KiB3
a0NsaWVudCkKIHsKLSAgICB0b0ltcGwoY29va2llTWFuYWdlclJlZiktPmluaXRpYWxpemVDbGll
bnQod2tDbGllbnQpOworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyUmVmKS0+aW5pdGlhbGl6ZUNs
aWVudChyZWludGVycHJldF9jYXN0PGNvbnN0IFdLQ29va2llTWFuYWdlckNsaWVudEJhc2UqPih3
a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQ29va2llTWFuYWdlckdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyUmVmLCB2b2lkKiBjb250ZXh0LCBX
S0Nvb2tpZU1hbmFnZXJHZXRDb29raWVIb3N0bmFtZXNGdW5jdGlvbiBjYWxsYmFjaykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0RhdGFiYXNlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tEYXRhYmFzZU1hbmFnZXIuY3Bw
CmluZGV4IGQ3YzI2Y2Q1NWMzMWE1Yzc1ZTM3NGRmYTZkNzQzOTcwNDM0NjAzZTkuLjA5MmNkNGFi
MGU0ZmU0M2E4YWNhNmE4NTRhYTUwMjY1OWE3OTU5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTI1LDcgKzEy
NSw3IEBAIHZvaWQgV0tEYXRhYmFzZU1hbmFnZXJTZXRDbGllbnQoV0tEYXRhYmFzZU1hbmFnZXJS
ZWYgZGF0YWJhc2VNYW5hZ2VyUmVmLCBjb25zdCBXCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
ICAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZlcnNpb24pCiAgICAgICAgIHJldHVybjsK
LSAgICB0b0ltcGwoZGF0YWJhc2VNYW5hZ2VyUmVmKS0+aW5pdGlhbGl6ZUNsaWVudCh3a0NsaWVu
dCk7CisgICAgdG9JbXBsKGRhdGFiYXNlTWFuYWdlclJlZiktPmluaXRpYWxpemVDbGllbnQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBXS0RhdGFiYXNlTWFuYWdlckNsaWVudEJhc2UqPih3a0NsaWVu
dCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2VNYW5hZ2VyUmVmKTsKICAgICBV
TlVTRURfUEFSQU0od2tDbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMzg0ZTA1MTU2YjllNzI5
YTY5NWRlY2Y3NzUxZmYwNjllOTdiMmVmMi4uNjgzN2VlN2M4Mjk0ZDZiZjllZTQzYmVkN2FhNzAy
NGQ0ZDJhM2I5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
R2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFdLVHlwZUlEIFdL
R2VvbG9jYXRpb25NYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBXS0dlb2xvY2F0aW9uTWFuYWdl
clNldFByb3ZpZGVyKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJl
ZiwgY29uc3QgV0tHZW9sb2NhdGlvblByb3ZpZGVyKiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1w
bChnZW9sb2NhdGlvbk1hbmFnZXJSZWYpLT5pbml0aWFsaXplUHJvdmlkZXIod2tQcm92aWRlcik7
CisgICAgdG9JbXBsKGdlb2xvY2F0aW9uTWFuYWdlclJlZiktPmluaXRpYWxpemVQcm92aWRlcihy
ZWludGVycHJldF9jYXN0PGNvbnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlckJhc2UqPih3a1Byb3Zp
ZGVyKSk7CiB9CiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJQcm92aWRlckRpZENoYW5nZVBv
c2l0aW9uKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgV0tH
ZW9sb2NhdGlvblBvc2l0aW9uUmVmIHBvc2l0aW9uUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0ljb25EYXRhYmFzZS5jcHAKaW5kZXggZDY2N2JiNzUyMzQxZDIz
NmY3NjM1ZjRmYjgxMjI3OGJjYzdjNWUyMS4uY2YzNDAzZWNmMzE4OTNjNGMyMDNmYWY4YzliNWJl
ZmM0MGU2MmE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
SWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJ
Y29uRGF0YWJhc2UuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFdLVHlwZUlEIFdLSWNvbkRhdGFiYXNl
R2V0VHlwZUlEKCkKIAogdm9pZCBXS0ljb25EYXRhYmFzZVNldEljb25EYXRhYmFzZUNsaWVudChX
S0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIGNvbnN0IFdLSWNvbkRhdGFiYXNlQ2xp
ZW50KiB3a0NsaWVudCkKIHsKLSAgICB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+aW5pdGlhbGl6
ZUljb25EYXRhYmFzZUNsaWVudCh3a0NsaWVudCk7CisgICAgdG9JbXBsKGljb25EYXRhYmFzZVJl
ZiktPmluaXRpYWxpemVJY29uRGF0YWJhc2VDbGllbnQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBX
S0ljb25EYXRhYmFzZUNsaWVudEJhc2UqPih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLSWNvbkRh
dGFiYXNlUmV0YWluSWNvbkZvclVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYs
IFdLVVJMUmVmIHBhZ2VVUkxSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDYwNjcxYTdlMTdkMDEx
NzQxMGM2YzhlZDBkNDcxNDllMDkxNzEyMTcuLmZhZTI3MTM2YWEzMTgwNTYyYmVlZGJjZTE2NjI5
M2Q3YzZjZjZkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFdLVHlwZUlE
IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tOb3RpZmljYXRpb25N
YW5hZ2VyU2V0UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIGNv
bnN0IFdLTm90aWZpY2F0aW9uUHJvdmlkZXIqIHdrUHJvdmlkZXIpCiB7Ci0gICAgdG9JbXBsKG1h
bmFnZXJSZWYpLT5pbml0aWFsaXplUHJvdmlkZXIod2tQcm92aWRlcik7CisgICAgdG9JbXBsKG1h
bmFnZXJSZWYpLT5pbml0aWFsaXplUHJvdmlkZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBXS05v
dGlmaWNhdGlvblByb3ZpZGVyQmFzZSo+KHdrUHJvdmlkZXIpKTsKIH0KIAogdm9pZCBXS05vdGlm
aWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmIG1hbmFnZXJSZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3JpZ2luRGF0YU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3JpZ2luRGF0YU1hbmFnZXIuY3Bw
CmluZGV4IGNmODUzOTI3OTdlZjU0YjlkNWVmZjNiNjc0MWZiNDk3YmQ3YzNmNTAuLjFhMmQyNmZi
MzEzM2VlY2VjOWEzNmUzMGQ5YWZiMDhlMGE5OGQzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09yaWdpbkRhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcmlnaW5EYXRhTWFuYWdlci5jcHAKQEAgLTYzLDUg
KzYzLDUgQEAgdm9pZCBXS09yaWdpbkRhdGFNYW5hZ2VyU3RvcE9ic2VydmluZ0NoYW5nZXMoV0tP
cmlnaW5EYXRhTWFuYWdlclJlZiBvcmlnaW5EYXRhTWEKIAogdm9pZCBXS09yaWdpbkRhdGFNYW5h
Z2VyU2V0Q2hhbmdlQ2xpZW50KFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0YU1hbmFn
ZXJSZWYsIGNvbnN0IFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFuZ2VDbGllbnQgKmNsaWVudCkKIHsK
LSAgICB0b0ltcGwob3JpZ2luRGF0YU1hbmFnZXJSZWYpLT5zZXRDaGFuZ2VDbGllbnQoY2xpZW50
KTsKKyAgICB0b0ltcGwob3JpZ2luRGF0YU1hbmFnZXJSZWYpLT5zZXRDaGFuZ2VDbGllbnQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xpZW50QmFzZSo+
KGNsaWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApp
bmRleCBkNTZjNTc3ZTc0NGM1MzA3Y2U0YTQ1MGQ0ZTIyNmViZDAyMzdiYzZiLi44OTJlYWQ2NTBh
ZWUwODdkMDA5NWM2NTg2OGM1NGUyNDU4YjE0Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtNjMyLDIzICs2MzIsMjMgQEAgdm9pZCBXS1BhZ2VDb3Vu
dFN0cmluZ01hdGNoZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZywgV0tG
aW5kT3B0aW8KIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsaWVudCogd2tDbGllbnQpCiB7CiAjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplQ29u
dGV4dE1lbnVDbGllbnQod2tDbGllbnQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6
ZUNvbnRleHRNZW51Q2xpZW50KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV0tQYWdlQ29udGV4dE1l
bnVDbGllbnRCYXNlKj4od2tDbGllbnQpKTsKICNlbmRpZgogfQogCiB2b2lkIFdLUGFnZVNldFBh
Z2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50KiB3
a0NsaWVudCkKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVGaW5kQ2xpZW50KHdr
Q2xpZW50KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVGaW5kQ2xpZW50KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqPih3a0NsaWVudCkpOwogfQog
CiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwg
Y29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnQqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChw
YWdlUmVmKS0+aW5pdGlhbGl6ZUZpbmRNYXRjaGVzQ2xpZW50KHdrQ2xpZW50KTsKKyAgICB0b0lt
cGwocGFnZVJlZiktPmluaXRpYWxpemVGaW5kTWF0Y2hlc0NsaWVudChyZWludGVycHJldF9jYXN0
PGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZSo+KHdrQ2xpZW50KSk7CiB9CiAKIHZv
aWQgV0tQYWdlU2V0UGFnZUZvcm1DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFn
ZUZvcm1DbGllbnQqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6
ZUZvcm1DbGllbnQod2tDbGllbnQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUZv
cm1DbGllbnQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBXS1BhZ2VGb3JtQ2xpZW50QmFzZSo+KHdr
Q2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50KiB3a0NsaWVudCkKQEAgLTY1OCwxMiAr
NjU4LDEyIEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJl
ZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50KiB3a0NsCiAKIHZvaWQgV0tQYWdlU2V0UGFnZVBv
bGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50KiB3
a0NsaWVudCkKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVQb2xpY3lDbGllbnQo
d2tDbGllbnQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZVBvbGljeUNsaWVudChy
ZWludGVycHJldF9jYXN0PGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqPih3a0NsaWVudCkp
OwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlVUlDbGllbnQqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+aW5p
dGlhbGl6ZVVJQ2xpZW50KHdrQ2xpZW50KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxp
emVVSUNsaWVudChyZWludGVycHJldF9jYXN0PGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSo+KHdr
Q2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFn
ZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFn
ZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIubW0KaW5kZXggOWY2Y2ZjODdjNDg0Y2Y4YWY5OWMyNWYxYmNlN2U1NjQyZmY1YTQ5Mi4u
Y2UyNzBmZDQ5MmFkMTYxOTQyZDJiMGNjZjZlMDdjZmVjOTQyMDg5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIubW0KQEAgLTU0Miw3ICs1NDIsNyBAQCBzdGF0aWMgdm9pZCBzZXRV
cFBhZ2VQb2xpY3lDbGllbnQoV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpicm93c2luZ0Nv
bnRleHQsCiAgICAgICAgICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UobGlzdGVuZXIpOwog
ICAgIH07CiAKLSAgICBwYWdlLmluaXRpYWxpemVQb2xpY3lDbGllbnQoJnBvbGljeUNsaWVudCk7
CisgICAgcGFnZS5pbml0aWFsaXplUG9saWN5Q2xpZW50KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
V0tQYWdlUG9saWN5Q2xpZW50QmFzZSo+KCZwb2xpY3lDbGllbnQpKTsKIH0KIAogLSAoaWQgPFdL
QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPilsb2FkRGVsZWdhdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZiNjhlYWI5NDliM2RhMWNiODBjNjg3
MGNmZWFmZTUxYTcxYmRiOGEuLjUwMzAyYmY1OGE0MjJmZWQ5ZGU1M2VhNWRlOWQ2ZTAxZGQzMDE4
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtNjIs
NyArNjIsNyBAQCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eShXZWJDb250ZXh0KiBjb250ZXh0KQogewogfQogCi12b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLTm90aWZpY2F0aW9u
UHJvdmlkZXIgKnByb3ZpZGVyKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Omlu
aXRpYWxpemVQcm92aWRlcihjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyQmFzZSogcHJvdmlk
ZXIpCiB7CiAgICAgbV9wcm92aWRlci5pbml0aWFsaXplKHByb3ZpZGVyKTsKICAgICBtX3Byb3Zp
ZGVyLmFkZE5vdGlmaWNhdGlvbk1hbmFnZXIodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5oCmluZGV4IDhiZGE4M2VmODM5ZDU4M2NiODkyZGU1MjUxMjkxYTBkNDAz
ZjVhOGEuLmRlODAyMTJiN2Y3OGY0ZDZjYTg5NDE1N2U5MjRkMTMxNTYyYzQ3NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4g
Y3JlYXRlKFdlYkNvbnRleHQqKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0
IFdLTm90aWZpY2F0aW9uUHJvdmlkZXIqKTsKKyAgICB2b2lkIGluaXRpYWxpemVQcm92aWRlcihj
b25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyQmFzZSopOwogICAgIHZvaWQgcG9wdWxhdGVDb3B5
T2ZOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhIYXNoTWFwPFN0cmluZywgYm9vbD4mKTsKIAogICAg
IHZvaWQgc2hvdyhXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJp
bmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0
IFN0cmluZyYgbGFuZywgY29uc3QgU3RyaW5nJiBkaXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3Ry
aW5nLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXIuY3BwCmluZGV4IGNlYTc0NjlkZTM4ZTBiMGFlNThkOGEwYzA2MzUxNTllNjIwMTBj
MjUuLmI1ZWZmZTI5NzYxYjFlMTc2NmFjMWVlYTI3NzJkZDI0MzE0MDQ5NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlcjo6c2hvdyhXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYk5vdGlmaWNhdGlv
biogbm90aWZpY2EKICAgICBpZiAoIW1fY2xpZW50LnNob3cpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBtX2NsaWVudC5zaG93KHRvQVBJKHBhZ2UpLCB0b0FQSShub3RpZmljYXRpb24pLCBt
X2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5zaG93KHRvQVBJKHBhZ2UpLCB0b0FQ
SShub3RpZmljYXRpb24pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjYW5jZWwoV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRp
b24pCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmNhbmNl
bChXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICBpZiAoIW1fY2xpZW50LmNhbmNl
bCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fY2xpZW50LmNhbmNlbCh0b0FQSShub3Rp
ZmljYXRpb24pLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5jYW5jZWwodG9B
UEkobm90aWZpY2F0aW9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBX
ZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJOb3RpZmlj
YXRpb24qIG5vdGlmaWNhdGlvbikKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRp
b25Qcm92aWRlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJOb3RpZmljYXRpb24qIG5vdGlm
aWNhdGkKICAgICBpZiAoIW1fY2xpZW50LmRpZERlc3Ryb3lOb3RpZmljYXRpb24pCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBtX2NsaWVudC5kaWREZXN0cm95Tm90aWZpY2F0aW9uKHRvQVBJ
KG5vdGlmaWNhdGlvbiksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZERl
c3Ryb3lOb3RpZmljYXRpb24odG9BUEkobm90aWZpY2F0aW9uKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2xlYXJOb3RpZmlj
YXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykKQEAgLTcxLDcg
KzcxLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2xlYXJOb3RpZmljYXRpb25z
KGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWMKICAgICBmb3IgKGNvbnN0IGF1dG8mIG5v
dGlmaWNhdGlvbklEIDogbm90aWZpY2F0aW9uSURzKQogICAgICAgICBhcnJheUlEcy51bmNoZWNr
ZWRBcHBlbmQoV2ViVUludDY0OjpjcmVhdGUobm90aWZpY2F0aW9uSUQpKTsKIAotICAgIG1fY2xp
ZW50LmNsZWFyTm90aWZpY2F0aW9ucyh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjptb3Zl
KGFycmF5SURzKSkuZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5j
bGVhck5vdGlmaWNhdGlvbnModG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShhcnJh
eUlEcykpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJO
b3RpZmljYXRpb25Qcm92aWRlcjo6YWRkTm90aWZpY2F0aW9uTWFuYWdlcihXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkqIG1hbmFnZXIpCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXI6OmFkZE5vdGlmaWNhdGlvbk1hbmFnZXIoV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5CiAgICAgaWYgKCFtX2NsaWVudC5hZGROb3RpZmljYXRpb25NYW5hZ2VyKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgbV9jbGllbnQuYWRkTm90aWZpY2F0aW9uTWFuYWdlcih0
b0FQSShtYW5hZ2VyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuYWRkTm90
aWZpY2F0aW9uTWFuYWdlcih0b0FQSShtYW5hZ2VyKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVtb3ZlTm90aWZpY2F0aW9u
TWFuYWdlcihXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkqIG1hbmFnZXIpCkBAIC04Nyw3ICs4
Nyw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlbW92ZU5vdGlmaWNhdGlvbk1h
bmFnZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByCiAgICAgaWYgKCFtX2NsaWVudC5yZW1vdmVO
b3RpZmljYXRpb25NYW5hZ2VyKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9jbGllbnQu
cmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcih0b0FQSShtYW5hZ2VyKSwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CisgICAgbV9jbGllbnQucmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcih0b0FQSShtYW5h
Z2VyKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogUGFzc1JlZlB0cjxJbW11dGFi
bGVEaWN0aW9uYXJ5PiBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6bm90aWZpY2F0aW9uUGVybWlz
c2lvbnMoKQpAQCAtOTUsNyArOTUsNyBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+
IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucwogICAgIGlm
ICghbV9jbGllbnQubm90aWZpY2F0aW9uUGVybWlzc2lvbnMpCiAgICAgICAgIHJldHVybiBJbW11
dGFibGVEaWN0aW9uYXJ5OjpjcmVhdGUoKTsKIAotICAgIHJldHVybiBhZG9wdFJlZih0b0ltcGwo
bV9jbGllbnQubm90aWZpY2F0aW9uUGVybWlzc2lvbnMobV9jbGllbnQuY2xpZW50SW5mbykpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50Lm5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCA1NzRiODg3YTRkNjE4ZGFm
N2ZkYzI3N2RkMzg4YTQxZjM5NjA2NDcyLi5mMzU5YmQ5YzFiZDMwM2E2YTE1ODZkODZjNzliMzE0
ZTVlMThmNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAgLTMxLDYgKzMx
LDEwIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFQSTo6Q2xpZW50VHJhaXRzPFdLTm90aWZpY2F0aW9uUHJv
dmlkZXJCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLTm90aWZpY2F0aW9uUHJvdmlk
ZXJWMD4gVmVyc2lvbnM7Cit9OworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgSW1tdXRh
YmxlRGljdGlvbmFyeTsKQEAgLTM5LDcgKzQzLDcgQEAgY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47
CiAgICAgCi1jbGFzcyBXZWJOb3RpZmljYXRpb25Qcm92aWRlciA6IHB1YmxpYyBBUElDbGllbnQ8
V0tOb3RpZmljYXRpb25Qcm92aWRlciwga1dLTm90aWZpY2F0aW9uUHJvdmlkZXJDdXJyZW50VmVy
c2lvbj4geworY2xhc3MgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgOiBwdWJsaWMgQVBJOjpDbGll
bnQ8V0tOb3RpZmljYXRpb25Qcm92aWRlckJhc2U+IHsKIHB1YmxpYzoKICAgICB2b2lkIHNob3co
V2ViUGFnZVByb3h5KiwgV2ViTm90aWZpY2F0aW9uKik7CiAgICAgdm9pZCBjYW5jZWwoV2ViTm90
aWZpY2F0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXgg
YzI0ZGQ1NGY0OWYyYTY0NmY1Y2VlMzZkOGM5YzE4MDk0ZTQ1OTE4Ni4uYTFkNmZmYjQ3MmM4Mjhl
NWU4MzNhZDJiZTM2OGM0YzdiODI1YjZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcApAQCAtMjU1LDI5ICsyNTUsMjkgQEAgV2ViQ29udGV4dDo6fldlYkNvbnRleHQo
KQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBX
S0NvbnRleHRDbGllbnQqIGNsaWVudCkKK3ZvaWQgV2ViQ29udGV4dDo6aW5pdGlhbGl6ZUNsaWVu
dChjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpCiB7CiAgICAgbV9jbGllbnQuaW5p
dGlhbGl6ZShjbGllbnQpOwogfQogCi12b2lkIFdlYkNvbnRleHQ6OmluaXRpYWxpemVJbmplY3Rl
ZEJ1bmRsZUNsaWVudChjb25zdCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCogY2xpZW50
KQordm9pZCBXZWJDb250ZXh0Ojppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3Qg
V0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKiBjbGllbnQpCiB7CiAgICAgbV9pbmpl
Y3RlZEJ1bmRsZUNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKLXZvaWQgV2ViQ29udGV4
dDo6aW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNs
aWVudCogY2xpZW50KQordm9pZCBXZWJDb250ZXh0Ojppbml0aWFsaXplQ29ubmVjdGlvbkNsaWVu
dChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogY2xpZW50KQogewogICAgIG1f
Y29ubmVjdGlvbkNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKLXZvaWQgV2ViQ29udGV4
dDo6aW5pdGlhbGl6ZUhpc3RvcnlDbGllbnQoY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudCog
Y2xpZW50KQordm9pZCBXZWJDb250ZXh0Ojppbml0aWFsaXplSGlzdG9yeUNsaWVudChjb25zdCBX
S0NvbnRleHRIaXN0b3J5Q2xpZW50QmFzZSogY2xpZW50KQogewogICAgIG1faGlzdG9yeUNsaWVu
dC5pbml0aWFsaXplKGNsaWVudCk7CiAKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OlNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKG1faGlzdG9yeUNsaWVudC5z
aG91bGRUcmFja1Zpc2l0ZWRMaW5rcygpKSk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6aW5pdGlh
bGl6ZURvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50KiBjbGllbnQp
Cit2b2lkIFdlYkNvbnRleHQ6OmluaXRpYWxpemVEb3dubG9hZENsaWVudChjb25zdCBXS0NvbnRl
eHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkKIHsKICAgICBtX2Rvd25sb2FkQ2xpZW50Lmlu
aXRpYWxpemUoY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmlu
ZGV4IGI3ZmQzYWRjMDQwMjA3ODFkYWJkNDQ2MDlmMjBlYjQ2MTg1ODJlZDYuLmEwZWRiNDllZDhj
OWViNDA3ODk0YmNiZTdjYmU1MzY2YmYzNThmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaApAQCAtMTI2LDExICsxMjYsMTEgQEAgcHVibGljOgogICAgIGJvb2wgZGlzcGF0
Y2hNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYp
OwogICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29y
ZUlQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8Q29yZUlQQzo6TWVzc2FnZUVu
Y29kZXI+Jik7CiAKLSAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xp
ZW50Kik7Ci0gICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3QgV0tD
b250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQqKTsKLSAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0
aW9uQ2xpZW50KGNvbnN0IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQqKTsKLSAgICB2b2lkIGlu
aXRpYWxpemVIaXN0b3J5Q2xpZW50KGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbGllbnQqKTsKLSAg
ICB2b2lkIGluaXRpYWxpemVEb3dubG9hZENsaWVudChjb25zdCBXS0NvbnRleHREb3dubG9hZENs
aWVudCopOworICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0NvbnRleHRDbGllbnRC
YXNlKik7CisgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3QgV0tD
b250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKik7CisgICAgdm9pZCBpbml0aWFsaXplQ29u
bmVjdGlvbkNsaWVudChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSopOworICAg
IHZvaWQgaW5pdGlhbGl6ZUhpc3RvcnlDbGllbnQoY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVu
dEJhc2UqKTsKKyAgICB2b2lkIGluaXRpYWxpemVEb3dubG9hZENsaWVudChjb25zdCBXS0NvbnRl
eHREb3dubG9hZENsaWVudEJhc2UqKTsKIAogICAgIHZvaWQgc2V0UHJvY2Vzc01vZGVsKFByb2Nl
c3NNb2RlbCk7IC8vIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9jZXNz
ZXMgcnVubmluZy4KICAgICBQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKCkgY29uc3QgeyByZXR1
cm4gbV9wcm9jZXNzTW9kZWw7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0Q2xpZW50LmNwcAppbmRleCAwM2YxYzY0MDQ4YWI2NTgzOTc3MjkzOGI0NjU2OGI1MGViZmZh
NTcxLi5mYzcxOGQ5MmFjOTM4MmI2MWZkMTM1NWUxYWYzYmVkMjc1YjI5ODdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuY3BwCkBAIC0zNiw3ICszNiw3
IEBAIHZvaWQgV2ViQ29udGV4dENsaWVudDo6cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ2hh
bmdlZChXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9jbGllbnQucGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzQ2hhbmdlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQu
cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ2hhbmdlZCh0b0FQSShjb250ZXh0KSwgbV9jbGll
bnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVz
Q2hhbmdlZCh0b0FQSShjb250ZXh0KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAog
dm9pZCBXZWJDb250ZXh0Q2xpZW50OjpuZXR3b3JrUHJvY2Vzc0RpZENyYXNoKFdlYkNvbnRleHQq
IGNvbnRleHQpCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgV2ViQ29udGV4dENsaWVudDo6bmV0d29y
a1Byb2Nlc3NEaWRDcmFzaChXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9jbGllbnQu
bmV0d29ya1Byb2Nlc3NEaWRDcmFzaCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQu
bmV0d29ya1Byb2Nlc3NEaWRDcmFzaCh0b0FQSShjb250ZXh0KSwgbV9jbGllbnQuY2xpZW50SW5m
byk7CisgICAgbV9jbGllbnQubmV0d29ya1Byb2Nlc3NEaWRDcmFzaCh0b0FQSShjb250ZXh0KSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0Q2xpZW50Ojpw
bHVnSW5JbmZvcm1hdGlvbkJlY2FtZUF2YWlsYWJsZShXZWJDb250ZXh0KiBjb250ZXh0LCBBUEk6
OkFycmF5KiBwbHVnSW5JbmZvKQpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFdlYkNvbnRleHRDbGll
bnQ6OnBsdWdJbkluZm9ybWF0aW9uQmVjYW1lQXZhaWxhYmxlKFdlYkNvbnRleHQqIGNvbnRleHQs
IEFQSQogICAgIC8vIEZJWE1FOiBUaGUgQVBJIGNvbnRyYWN0IGV4cGVjdHMgdXMgdG8gaGFuZCBh
IHJlZmVyZW5jZSB0byB0aGUgYXJyYXkgaGVyZS4gVGhpcyBpcyB3cm9uZy4KICAgICBwbHVnSW5J
bmZvLT5yZWYoKTsKIAotICAgIG1fY2xpZW50LnBsdWdJbkluZm9ybWF0aW9uQmVjYW1lQXZhaWxh
YmxlKHRvQVBJKGNvbnRleHQpLCB0b0FQSShwbHVnSW5JbmZvKSwgbV9jbGllbnQuY2xpZW50SW5m
byk7CisgICAgbV9jbGllbnQucGx1Z0luSW5mb3JtYXRpb25CZWNhbWVBdmFpbGFibGUodG9BUEko
Y29udGV4dCksIHRvQVBJKHBsdWdJbkluZm8pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dENsaWVudC5oCmluZGV4IDQ3ZjAxMGI0ZTJkNTJlNTg4NTVmMDFkOWRjMjBlMzAzOWY2
ZTA0ZDkuLjAyN2E3YzZmMTkxYjU1NWIzYmU4MzlkOGI5NGU0YmU5NWFmNzg3NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuaApAQCAtMjksNiArMjksMTAg
QEAKICNpbmNsdWRlICJBUElDbGllbnQuaCIKICNpbmNsdWRlICJXS0NvbnRleHQuaCIKIAordGVt
cGxhdGU8PiBzdHJ1Y3QgQVBJOjpDbGllbnRUcmFpdHM8V0tDb250ZXh0Q2xpZW50QmFzZT4gewor
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0NvbnRleHRDbGllbnRWMD4gVmVyc2lvbnM7Cit9Owor
CiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEFycmF5OwogfQpAQCAtMzcsNyArNDEsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29udGV4dDsKIAotY2xhc3MgV2ViQ29udGV4dENs
aWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tDb250ZXh0Q2xpZW50LCBrV0tDb250ZXh0Q2xpZW50
Q3VycmVudFZlcnNpb24+IHsKK2NsYXNzIFdlYkNvbnRleHRDbGllbnQgOiBwdWJsaWMgQVBJOjpD
bGllbnQ8V0tDb250ZXh0Q2xpZW50QmFzZT4gewogcHVibGljOgogICAgIHZvaWQgcGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzQ2hhbmdlZChXZWJDb250ZXh0Kik7CiAgICAgdm9pZCBuZXR3b3Jr
UHJvY2Vzc0RpZENyYXNoKFdlYkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuY3BwCmluZGV4IGM1ODczYWI1
MmZiYTk2MWNiYTlhZDIxYmI4YmQzNmU5NzQyOGZlNjMuLjMzNmU0NDk2N2UxM2EyZDkzMDk1NmUx
MDYwMTRhYWU1OWQxZTBiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHRDb25uZWN0aW9uQ2xpZW50LmNwcApAQCAtMzUsNyArMzUsNyBAQCB2b2lk
IFdlYkNvbnRleHRDb25uZWN0aW9uQ2xpZW50OjpkaWRDcmVhdGVDb25uZWN0aW9uKFdlYkNvbnRl
eHQqIGNvbnRleHQsIFdlYkNvbgogICAgIGlmICghbV9jbGllbnQuZGlkQ3JlYXRlQ29ubmVjdGlv
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlkQ3JlYXRlQ29ubmVjdGlvbih0
b0FQSShjb250ZXh0KSwgdG9BUEkoY29ubmVjdGlvbiksIG1fY2xpZW50LmNsaWVudEluZm8pOwor
ICAgIG1fY2xpZW50LmRpZENyZWF0ZUNvbm5lY3Rpb24odG9BUEkoY29udGV4dCksIHRvQVBJKGNv
bm5lY3Rpb24pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
Q29ubmVjdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRD
b25uZWN0aW9uQ2xpZW50LmgKaW5kZXggMTQ4YmQxYmRiMDAxOTc3MmYxYjIxZGUwODdmMzJkMzcx
Y2NhNjNlZC4uNmM2MzZjZjA5NDUwY2FiNjE0Yjk5ZDY4MjE4NDY1M2E4M2RhOTJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRDb25uZWN0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRDb25uZWN0aW9uQ2xp
ZW50LmgKQEAgLTI5LDEyICsyOSwxNiBAQAogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgogI2luY2x1
ZGUgIldLQ29udGV4dC5oIgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBUEk6OkNsaWVudFRyYWl0czxX
S0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZT4geworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxX
S0NvbnRleHRDb25uZWN0aW9uQ2xpZW50VjA+IFZlcnNpb25zOworfTsKKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYkNvbm5lY3Rpb247CiBjbGFzcyBXZWJDb250ZXh0OwogCi1jbGFz
cyBXZWJDb250ZXh0Q29ubmVjdGlvbkNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tDb250ZXh0
Q29ubmVjdGlvbkNsaWVudCwga1dLQ29udGV4dENvbm5lY3Rpb25DbGllbnRDdXJyZW50VmVyc2lv
bj4geworY2xhc3MgV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQgOiBwdWJsaWMgQVBJOjpDbGll
bnQ8V0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2U+IHsKIHB1YmxpYzoKICAgICB2b2lkIGRp
ZENyZWF0ZUNvbm5lY3Rpb24oV2ViQ29udGV4dCosIFdlYkNvbm5lY3Rpb24qKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxl
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQuY3BwCmluZGV4IDI4YjkxM2U3YTM0ZTEyMTE4MmFmMzZjM2Y0NTkwYjdiODRm
N2M4ODQuLjliYWY0ZjcxYjU5NWRlYWQ2YzljODI5MmQ5NTY0ZWRkZDAxZmNhNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgV2ViQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJDb250
CiAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUodG9BUEkoY29udGV4dCksIHRvQVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRv
QVBJKG1lc3NhZ2VCb2R5KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodG9BUEkoY29udGV4dCksIHRvQVBJKG1l
c3NhZ2VOYW1lLmltcGwoKSksIHRvQVBJKG1lc3NhZ2VCb2R5KSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJl
Y2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5
LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKQpAQCAtNDcsNyArNDcsNyBAQCB2b2lk
IFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVz
c2FnZUZyb21JbmplY3RlZEJ1bgogICAgICAgICByZXR1cm47CiAKICAgICBXS1R5cGVSZWYgcmV0
dXJuRGF0YVJlZiA9IDA7Ci0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSh0b0FQSShjb250ZXh0KSwgdG9BUEkobWVzc2FnZU5hbWUuaW1w
bCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCAmcmV0dXJuRGF0YVJlZiwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSh0b0FQSShjb250ZXh0KSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9B
UEkobWVzc2FnZUJvZHkpLCAmcmV0dXJuRGF0YVJlZiwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKICAgICByZXR1cm5EYXRhID0gYWRvcHRSZWYodG9JbXBsKHJldHVybkRhdGFSZWYpKTsKIH0K
IApAQCAtNTYsNyArNTYsNyBAQCBQYXNzUmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJDb250ZXh0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ6OmdldEluamVjdGVkQnVuZGxlSW5pdGlhbAogICAgIGlmICghbV9j
bGllbnQuZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ltcGwobV9jbGllbnQuZ2V0SW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhKHRvQVBJKGNvbnRleHQpLCBtX2NsaWVudC5jbGllbnRJbmZv
KSk7CisgICAgcmV0dXJuIHRvSW1wbChtX2NsaWVudC5nZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxp
emF0aW9uVXNlckRhdGEodG9BUEkoY29udGV4dCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAppbmRleCA4MTU5
NDYzOTMzYTA4YWRlZjkzNTgzZmY4Njc4MzAzM2VjOGVhYzg3Li4yMmM2ODIyMDVhMjQ1ZjE5NTY1
YWY1MGFkMzc3YjE0YTA1Nzk1YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oCkBAIC0zMCw2ICszMCwx
MCBAQAogI2luY2x1ZGUgIldLQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAK
K3RlbXBsYXRlPD4gc3RydWN0IEFQSTo6Q2xpZW50VHJhaXRzPFdLQ29udGV4dEluamVjdGVkQnVu
ZGxlQ2xpZW50QmFzZT4geworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0NvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudFYwLCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYxPiBWZXJzaW9u
czsKK307CisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogfQpAQCAtMzgsNyArNDIs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29udGV4dDsKIAotY2xhc3MgV2Vi
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0NvbnRleHRJ
bmplY3RlZEJ1bmRsZUNsaWVudCwga1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Q3VycmVu
dFZlcnNpb24+IHsKK2NsYXNzIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCA6IHB1Ymxp
YyBBUEk6OkNsaWVudDxXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2U+IHsKIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCopOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJDb250ZXh0KiwgY29uc3QgU3Ry
aW5nJiwgQVBJOjpPYmplY3QqLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAK
aW5kZXggNjIwZmVjMjkyNjQxOTBlOGFmOTFhYzc3ZjZhNzdmY2RhYzU2Yjk0MC4uNDYxZmMwZTgw
Yjg4YmE4YjQ3YWMyYWVkNTJjODJiNTM4MmJkMjkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
V2ViQ29va2llTWFuYWdlclByb3h5Ojp+V2ViQ29va2llTWFuYWdlclByb3h5KCkKIHsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb29r
aWVNYW5hZ2VyQ2xpZW50KiBjbGllbnQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6aW5p
dGlhbGl6ZUNsaWVudChjb25zdCBXS0Nvb2tpZU1hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpCiB7
CiAgICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCmluZGV4IGI3MzJkMzQ1NGZmOWQx
N2ZjY2VhODQwODBlMWRlOGRmZWRjYzRkZTkuLmJhOTRkZDkyZTUxMmY4MDAxYzEzMWM0NGQ2MGVl
MTQ4ZWVhODYyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvb2tpZU1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYkNvbnRleHQqKTsKICAgICB2
aXJ0dWFsIH5XZWJDb29raWVNYW5hZ2VyUHJveHkoKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZUNs
aWVudChjb25zdCBXS0Nvb2tpZU1hbmFnZXJDbGllbnQqKTsKKyAgICB2b2lkIGluaXRpYWxpemVD
bGllbnQoY29uc3QgV0tDb29raWVNYW5hZ2VyQ2xpZW50QmFzZSopOwogICAgIAogICAgIHZvaWQg
Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoUGFzc1JlZlB0cjxBcnJheUNhbGxiYWNrPik7CiAgICAg
dm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHlDbGllbnQuY3BwCmluZGV4IGRhNTUxMmRmN2MyODNkNzFhMDNiMWFmMDBiYzBkNDEyMTdiMjEy
ZTguLjA4OGYzNmNlY2QzOWI1ZDNiNDU5NjgwZmQyY2Q4OGNjYmMzNWY2M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHlDbGll
bnQuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50
Ojpjb29raWVzRGlkQ2hhbmdlKFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llCiAgICAgaWYg
KCFtX2NsaWVudC5jb29raWVzRGlkQ2hhbmdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Ns
aWVudC5jb29raWVzRGlkQ2hhbmdlKHRvQVBJKGNvb2tpZU1hbmFnZXIpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKKyAgICBtX2NsaWVudC5jb29raWVzRGlkQ2hhbmdlKHRvQVBJKGNvb2tpZU1hbmFn
ZXIpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHlDbGllbnQuaAppbmRleCAyZmFhMTY3YzBjZjZhNWQ5OTNmNDI0MGE0N2U0NzNiZWY4ZjM4
MmEwLi45Yzc2Y2I0MzM1Njg3YzkyNTQ2NGM3YjcwMjU3YTkyMTg2OTdhMGI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eUNsaWVu
dC5oCkBAIC0zMCwxMSArMzAsMTUgQEAKICNpbmNsdWRlICJXS0Nvb2tpZU1hbmFnZXIuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBUEk6OkNsaWVudFRy
YWl0czxXS0Nvb2tpZU1hbmFnZXJDbGllbnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PFdLQ29va2llTWFuYWdlckNsaWVudFYwPiBWZXJzaW9uczsKK307CisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJDb29raWVNYW5hZ2VyUHJveHk7CiAKLWNsYXNzIFdlYkNvb2tpZU1h
bmFnZXJQcm94eUNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tDb29raWVNYW5hZ2VyQ2xpZW50
LCBrV0tDb29raWVNYW5hZ2VyQ2xpZW50Q3VycmVudFZlcnNpb24+IHsKK2NsYXNzIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS0Nvb2tpZU1hbmFnZXJD
bGllbnRCYXNlPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBjb29raWVzRGlkQ2hhbmdlKFdlYkNvb2tp
ZU1hbmFnZXJQcm94eSopOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDFmMWM4M2Y5ZjgxNDNjY2RiM2Q1YzY2
MWEyZjcyZTQ1NmU4NTBjZmUuLjYzM2Y2ZmJkZjJhNDkxODQxN2FkMDljYTE4YTA5YjJlZjQwMWMw
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFu
YWdlclByb3h5LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5
Ojp+V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkoKQogewogfQogCi12b2lkIFdlYkRhdGFiYXNlTWFu
YWdlclByb3h5Ojppbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
KiBjbGllbnQpCit2b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Ojppbml0aWFsaXplQ2xpZW50
KGNvbnN0IFdLRGF0YWJhc2VNYW5hZ2VyQ2xpZW50QmFzZSogY2xpZW50KQogewogICAgIG1fY2xp
ZW50LmluaXRpYWxpemUoY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmgKaW5kZXggODhkZmRmNWJhMTM2N2NmMGZiY2M3
OTk2ZGYxN2RkNWYwZDhhNmFkNy4uMmNlNzE5NjFkYTUxOTViYWI0ZmE2ZjBhZDgwNTA2YzIxYjRj
MmJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFu
YWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFu
YWdlclByb3h5LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYkRhdGFiYXNlTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViQ29udGV4dCopOwogICAgIHZp
cnR1YWwgfldlYkRhdGFiYXNlTWFuYWdlclByb3h5KCk7CiAKLSAgICB2b2lkIGluaXRpYWxpemVD
bGllbnQoY29uc3QgV0tEYXRhYmFzZU1hbmFnZXJDbGllbnQqKTsKKyAgICB2b2lkIGluaXRpYWxp
emVDbGllbnQoY29uc3QgV0tEYXRhYmFzZU1hbmFnZXJDbGllbnRCYXNlKik7CiAKICAgICB2b2lk
IGdldERhdGFiYXNlc0J5T3JpZ2luKFBhc3NSZWZQdHI8QXJyYXlDYWxsYmFjaz4pOwogICAgIHZv
aWQgZ2V0RGF0YWJhc2VPcmlnaW5zKFBhc3NSZWZQdHI8QXJyYXlDYWxsYmFjaz4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94
eUNsaWVudC5jcHAKaW5kZXggMmYzYzc2N2U2ZTU2ZGYwZmQ0ZGQxYjI2NmI2ZDMzODgwZjU0NTA4
OS4uNGU5MzJkMjE4MGMyM2MzMmU0M2ZkMTUzMzU3MGJmOGFkNGIwMGQxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlD
bGllbnQuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlD
bGllbnQ6OmRpZE1vZGlmeU9yaWdpbihXZWJEYXRhYmFzZU1hbmFnZXJQcm94eSogZGF0CiAgICAg
aWYgKCFtX2NsaWVudC5kaWRNb2RpZnlPcmlnaW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
Y2xpZW50LmRpZE1vZGlmeU9yaWdpbih0b0FQSShkYXRhYmFzZU1hbmFnZXIpLCB0b0FQSShvcmln
aW4pLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRNb2RpZnlPcmlnaW4o
dG9BUEkoZGF0YWJhc2VNYW5hZ2VyKSwgdG9BUEkob3JpZ2luKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKIH0KIAogdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudDo6ZGlkTW9k
aWZ5RGF0YWJhc2UoV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkqIGRhdGFiYXNlTWFuYWdlciwgV2Vi
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIp
CkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQ6OmRp
ZE1vZGlmeURhdGFiYXNlKFdlYkRhdGFiYXNlTWFuYWdlclByb3h5KiBkCiAgICAgaWYgKCFtX2Ns
aWVudC5kaWRNb2RpZnlEYXRhYmFzZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQu
ZGlkTW9kaWZ5RGF0YWJhc2UodG9BUEkoZGF0YWJhc2VNYW5hZ2VyKSwgdG9BUEkob3JpZ2luKSwg
dG9BUEkoZGF0YWJhc2VJZGVudGlmaWVyLmltcGwoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOwor
ICAgIG1fY2xpZW50LmRpZE1vZGlmeURhdGFiYXNlKHRvQVBJKGRhdGFiYXNlTWFuYWdlciksIHRv
QVBJKG9yaWdpbiksIHRvQVBJKGRhdGFiYXNlSWRlbnRpZmllci5pbXBsKCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50
LmgKaW5kZXggMzE2NDZkMmM4MGI4OGNkMmY4YTczNGVhNjFkNjAzOWU4NTgxNzM1NS4uNzZmNmYx
NDk0NjE5MTNiOGE1ODc5ZTdkODRiZTUwMmRmOGIxMjI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmgKQEAg
LTMwLDEyICszMCwxNiBAQAogI2luY2x1ZGUgIldLRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAordGVtcGxhdGU8PiBzdHJ1Y3QgQVBJOjpDbGllbnRUcmFpdHM8
V0tEYXRhYmFzZU1hbmFnZXJDbGllbnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdL
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50VjA+IFZlcnNpb25zOworfTsKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OwogY2xhc3MgV2ViU2VjdXJpdHlP
cmlnaW47CiAKLWNsYXNzIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50IDogcHVibGljIEFQ
SUNsaWVudDxXS0RhdGFiYXNlTWFuYWdlckNsaWVudCwga1dLRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
Q3VycmVudFZlcnNpb24+IHsKK2NsYXNzIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50IDog
cHVibGljIEFQSTo6Q2xpZW50PFdLRGF0YWJhc2VNYW5hZ2VyQ2xpZW50QmFzZT4gewogcHVibGlj
OgogICAgIHZvaWQgZGlkTW9kaWZ5T3JpZ2luKFdlYkRhdGFiYXNlTWFuYWdlclByb3h5KiwgV2Vi
U2VjdXJpdHlPcmlnaW4qKTsKICAgICB2b2lkIGRpZE1vZGlmeURhdGFiYXNlKFdlYkRhdGFiYXNl
TWFuYWdlclByb3h5KiwgV2ViU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRG93
bmxvYWRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRvd25sb2FkQ2xp
ZW50LmNwcAppbmRleCA2MTJhMDU2YzIwNjgyMTllNzNjYzRmNTNhZDFmY2ExMmFhZmQ5MjI0Li40
NjJkMmM1YzAyMjBhYzRhNGU5N2Q2NWUxMTc1OGZkY2RkMWIxMWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRG93bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJEb3dubG9hZENsaWVudC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
dm9pZCBXZWJEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoV2ViQ29udGV4dCogd2ViQ29udGV4dCwg
RG93bmxvYWRQcm94eSogZG93bmxvYWQKICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5kaWRTdGFydCh0b0FQSSh3ZWJDb250ZXh0KSwg
dG9BUEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50
LmRpZFN0YXJ0KHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJEb3dubG9hZENsaWVudDo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIERvd25s
b2FkUHJveHkqIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgV2ViRG93
bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb250ZXh0
KiB3ZWJDb250ZXh0CiAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94
eSksIHRvQVBJKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodG9B
UEkod2ViQ29udGV4dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCB0b0FQSShhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBX
ZWJEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvbnRleHQqIHdlYkNvbnRl
eHQsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFdlYkRvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eQogICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UodG9BUEkod2ViQ29udGV4dCksIHRvQVBJKGRv
d25sb2FkUHJveHkpLCB0b0FQSShXZWJVUkxSZXNwb25zZTo6Y3JlYXRlKHJlc3BvbnNlKS5nZXQo
KSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25z
ZSh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJKFdlYlVSTFJl
c3BvbnNlOjpjcmVhdGUocmVzcG9uc2UpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKIH0KIAogdm9pZCBXZWJEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoV2ViQ29udGV4
dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVu
Z3RoKQpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFdlYkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5KiBkbwogICAgIGlmICgh
bV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhKHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwg
bGVuZ3RoLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0
YSh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogYm9vbCBXZWJEb3dubG9hZENsaWVudDo6c2hvdWxk
RGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxv
YWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTcxLDcg
KzcxLDcgQEAgYm9vbCBXZWJEb3dubG9hZENsaWVudDo6c2hvdWxkRGVjb2RlU291cmNlRGF0YU9m
TUlNRVR5cGUoV2ViQ29udGV4dCogd2ViQ29udGV4dCwKICAgICBpZiAoIW1fY2xpZW50LnNob3Vs
ZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IHJldHVybiBtX2NsaWVudC5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSh0b0FQSSh3
ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJKG1pbWVUeXBlLmltcGwoKSks
IG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHJldHVybiBtX2NsaWVudC5zaG91bGREZWNvZGVT
b3VyY2VEYXRhT2ZNSU1FVHlwZSh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94
eSksIHRvQVBJKG1pbWVUeXBlLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9
CiAKIFN0cmluZyBXZWJEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eSogZG93bmxv
YWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgYm9vbCYgYWxsb3dPdmVyd3JpdGUpCkBA
IC03OSw3ICs3OSw3IEBAIFN0cmluZyBXZWJEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViQ29udGV4dCogd2ViCiAgICAgaWYgKCFtX2NsaWVu
dC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRlc3RpbmF0aW9uKEFk
b3B0V0ssIG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKHRv
QVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkoZmlsZW5hbWUuaW1w
bCgpKSwgJmFsbG93T3ZlcndyaXRlLCBtX2NsaWVudC5jbGllbnRJbmZvKSk7CisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IGRlc3RpbmF0aW9uKEFkb3B0V0ssIG1fY2xpZW50LmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShk
b3dubG9hZFByb3h5KSwgdG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFsbG93T3ZlcndyaXRlLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKICAgICByZXR1cm4gdG9XVEZTdHJpbmcoZGVzdGlu
YXRpb24uZ2V0KCkpOwogfQogCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgV2ViRG93bmxvYWRDbGll
bnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIERvd25sb2Fk
UHJvCiAgICAgaWYgKCFtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9jbGllbnQuZGlkQ3JlYXRlRGVzdGluYXRpb24odG9BUEkod2ViQ29udGV4
dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCB0b0FQSShwYXRoLmltcGwoKSksIG1fY2xpZW50LmNs
aWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKHRvQVBJKHdlYkNv
bnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYkRvd25sb2FkQ2xpZW50OjpkaWRGaW5p
c2goV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkK
QEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBXZWJEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKFdlYkNv
bnRleHQqIHdlYkNvbnRleHQsIERvd25sb2FkUHJveHkqIGRvd25sb2EKICAgICBpZiAoIW1fY2xp
ZW50LmRpZEZpbmlzaCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fY2xpZW50LmRpZEZp
bmlzaCh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmNs
aWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZEZpbmlzaCh0b0FQSSh3ZWJDb250ZXh0KSwgdG9B
UEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQg
V2ViRG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxv
YWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0x
MDQsNyArMTA0LDcgQEAgdm9pZCBXZWJEb3dubG9hZENsaWVudDo6ZGlkRmFpbChXZWJDb250ZXh0
KiB3ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFAKICAgICBpZiAoIW1fY2xpZW50
LmRpZEZhaWwpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZEZhaWwodG9BUEko
d2ViQ29udGV4dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCB0b0FQSShlcnJvciksIG1fY2xpZW50
LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZEZhaWwodG9BUEkod2ViQ29udGV4dCksIHRv
QVBJKGRvd25sb2FkUHJveHkpLCB0b0FQSShlcnJvciksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiB9CiAKIHZvaWQgV2ViRG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbChXZWJDb250ZXh0KiB3
ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQpAQCAtMTEyLDcgKzExMiw3
IEBAIHZvaWQgV2ViRG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbChXZWJDb250ZXh0KiB3ZWJDb250
ZXh0LCBEb3dubG9hZFByb3h5KiBkb3dubG9hCiAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZENhbmNlbCh0b0FQSSh3ZWJDb250
ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1f
Y2xpZW50LmRpZENhbmNlbCh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViRG93bmxvYWRDbGllbnQ6
OnByb2Nlc3NEaWRDcmFzaChXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5KiBk
b3dubG9hZFByb3h5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgV2ViRG93bmxvYWRDbGllbnQ6
OnByb2Nlc3NEaWRDcmFzaChXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5KiBk
CiAgICAgaWYgKCFtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93
bmxvYWRQcm94eSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LnByb2Nlc3NE
aWRDcmFzaCh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRG93bmxvYWRDbGllbnQuaAppbmRleCAyMDk1MGU1Njk2Zjdk
NTQ0NjJhMWRmYWUxZDQ2MWEyODBkM2M1N2NhLi5jZWI0Y2UyYjMyZWY0NzE5ZjBhN2NkZGE4YTNj
ZWY4NDc0OTM5MDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRG93
bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRG93bmxvYWRD
bGllbnQuaApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRlICJXS0NvbnRleHQuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBUEk6OkNsaWVudFRyYWl0
czxXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
V0tDb250ZXh0RG93bmxvYWRDbGllbnRWMD4gVmVyc2lvbnM7Cit9OworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwpAQCAtNDEsNyArNDUsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
OwogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIFdlYkNvbnRleHQ7CiAKLWNsYXNzIFdlYkRv
d25sb2FkQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0NvbnRleHREb3dubG9hZENsaWVudCwg
a1dLQ29udGV4dERvd25sb2FkQ2xpZW50Q3VycmVudFZlcnNpb24+IHsKK2NsYXNzIFdlYkRvd25s
b2FkQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFz
ZT4gewogcHVibGljOgogICAgIHZvaWQgZGlkU3RhcnQoV2ViQ29udGV4dCosIERvd25sb2FkUHJv
eHkqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb250
ZXh0KiwgRG93bmxvYWRQcm94eSosIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGaW5kQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGaW5kQ2xpZW50LmNwcAppbmRleCAwMjY1OWI0YzE5
M2MxMTVhYzcxYmQ2NzgyMzQxZmVhNGQ2YzNhOTdjLi40MmUyMWM3OTg5MDY2NjEzNzEwZDA0Yjcx
MmI1NjI2Y2MyOWEyZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
RmluZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZpbmRDbGll
bnQuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHZvaWQgV2ViRmluZENsaWVudDo6ZGlkRmluZFN0cmlu
ZyhXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50CiAgICAgaWYg
KCFtX2NsaWVudC5kaWRGaW5kU3RyaW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVu
dC5kaWRGaW5kU3RyaW5nKHRvQVBJKHBhZ2UpLCB0b0FQSShzdHJpbmcuaW1wbCgpKSwgbWF0Y2hD
b3VudCwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkRmluZFN0cmluZyh0
b0FQSShwYWdlKSwgdG9BUEkoc3RyaW5nLmltcGwoKSksIG1hdGNoQ291bnQsIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiAKIH0KIApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIFdlYkZpbmRDbGll
bnQ6OmRpZEZhaWxUb0ZpbmRTdHJpbmcoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcm
IHN0cmluZwogICAgIGlmICghbV9jbGllbnQuZGlkRmFpbFRvRmluZFN0cmluZykKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIG1fY2xpZW50LmRpZEZhaWxUb0ZpbmRTdHJpbmcodG9BUEkocGFn
ZSksIHRvQVBJKHN0cmluZy5pbXBsKCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2Ns
aWVudC5kaWRGYWlsVG9GaW5kU3RyaW5nKHRvQVBJKHBhZ2UpLCB0b0FQSShzdHJpbmcuaW1wbCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJGaW5kQ2xpZW50Ojpk
aWRDb3VudFN0cmluZ01hdGNoZXMoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN0
cmluZywgdWludDMyX3QgbWF0Y2hDb3VudCkKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBXZWJGaW5k
Q2xpZW50OjpkaWRDb3VudFN0cmluZ01hdGNoZXMoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBT
dHJpbmcmIHN0cmkKICAgICBpZiAoIW1fY2xpZW50LmRpZENvdW50U3RyaW5nTWF0Y2hlcykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlkQ291bnRTdHJpbmdNYXRjaGVzKHRvQVBJ
KHBhZ2UpLCB0b0FQSShzdHJpbmcuaW1wbCgpKSwgbWF0Y2hDb3VudCwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CisgICAgbV9jbGllbnQuZGlkQ291bnRTdHJpbmdNYXRjaGVzKHRvQVBJKHBhZ2UpLCB0
b0FQSShzdHJpbmcuaW1wbCgpKSwgbWF0Y2hDb3VudCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKIH0KIAogdm9pZCBXZWJGaW5kTWF0Y2hlc0NsaWVudDo6ZGlkRmluZFN0cmluZ01hdGNoZXMo
V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN0cmluZywgQVBJOjpBcnJheSogbWF0
Y2hlcywgaW50IGZpcnN0SW5kZXgpCkBAIC02MCwxNCArNjAsMTQgQEAgdm9pZCBXZWJGaW5kTWF0
Y2hlc0NsaWVudDo6ZGlkRmluZFN0cmluZ01hdGNoZXMoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25z
dCBTdHJpbmcKICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmRTdHJpbmdNYXRjaGVzKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5kaWRGaW5kU3RyaW5nTWF0Y2hlcyh0b0FQSShwYWdl
KSwgdG9BUEkoc3RyaW5nLmltcGwoKSksIHRvQVBJKG1hdGNoZXMpLCBmaXJzdEluZGV4LCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRGaW5kU3RyaW5nTWF0Y2hlcyh0b0FQ
SShwYWdlKSwgdG9BUEkoc3RyaW5nLmltcGwoKSksIHRvQVBJKG1hdGNoZXMpLCBmaXJzdEluZGV4
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYkZpbmRNYXRjaGVzQ2xp
ZW50OjpkaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViSW1h
Z2UqIGltYWdlLCB1aW50MzJfdCBpbmRleCkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZEdldElt
YWdlRm9yTWF0Y2hSZXN1bHQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NsaWVudC5kaWRHZXRJ
bWFnZUZvck1hdGNoUmVzdWx0KHRvQVBJKHBhZ2UpLCB0b0FQSShpbWFnZSksIGluZGV4LCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0
KHRvQVBJKHBhZ2UpLCB0b0FQSShpbWFnZSksIGluZGV4LCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJGaW5kQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRmluZENsaWVudC5oCmluZGV4IGRkNmIxZDZiMTg0Mzg0ZmQyOWM1M2M1YjA3YjI4ZmE5MGNm
OTM3ZGMuLjBjMjE0ZmM1MzY1YmZjYTE1NDgyNDUyYmY3Yzc1NTY3MGRlN2M3ODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGaW5kQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkZpbmRDbGllbnQuaApAQCAtMzAsNiArMzAsMTQgQEAKICNp
bmNsdWRlICJXS1BhZ2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCit0ZW1wbGF0ZTw+
IHN0cnVjdCBBUEk6OkNsaWVudFRyYWl0czxXS1BhZ2VGaW5kQ2xpZW50QmFzZT4geworICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VGaW5kQ2xpZW50VjA+IFZlcnNpb25zOworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgQVBJOjpDbGllbnRUcmFpdHM8V0tQYWdlRmluZE1hdGNoZXNDbGllbnRC
YXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50VjA+
IFZlcnNpb25zOworfTsKKwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBcnJheTsKIH0KQEAgLTM5
LDE0ICs0NywxNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNs
YXNzIFdlYkltYWdlOwogCi1jbGFzcyBXZWJGaW5kQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxX
S1BhZ2VGaW5kQ2xpZW50LCBrV0tQYWdlRmluZENsaWVudEN1cnJlbnRWZXJzaW9uPiB7CitjbGFz
cyBXZWJGaW5kQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUZpbmRDbGllbnRCYXNl
PiB7CiBwdWJsaWM6CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFN0cmluZyYsIHVpbnQzMl90IG1hdGNoQ291bnQpOwogICAgIHZvaWQgZGlkRmFpbFRvRmluZFN0
cmluZyhXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZENvdW50U3Ry
aW5nTWF0Y2hlcyhXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBtYXRjaENv
dW50KTsKIH07CiAKLWNsYXNzIFdlYkZpbmRNYXRjaGVzQ2xpZW50IDogcHVibGljIEFQSUNsaWVu
dDxXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudCwga1dLUGFnZUZpbmRNYXRjaGVzQ2xpZW50Q3VycmVu
dFZlcnNpb24+IHsKK2NsYXNzIFdlYkZpbmRNYXRjaGVzQ2xpZW50IDogcHVibGljIEFQSTo6Q2xp
ZW50PFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZT4gewogcHVibGljOgogICAgIHZvaWQgZGlk
RmluZFN0cmluZ01hdGNoZXMoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJOjpBcnJh
eSosIGludCk7CiAgICAgdm9pZCBkaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0KFdlYlBhZ2VQcm94
eSosIFdlYkltYWdlKiwgdWludDMyX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkZvcm1DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZv
cm1DbGllbnQuY3BwCmluZGV4IDZiZWMzZTEyNTAwZjc4M2Q2Zjg2YTZkNTQzMWQ3YTUyYThlMzdh
ZTguLjdhYjZlMmY0OTMzYzIzZWJhYmQ0MDgzNGYyZWQ2N2ZiOTI4ZTY0MzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRm9ybUNsaWVudC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9v
bCBXZWJGb3JtQ2xpZW50Ojp3aWxsU3VibWl0Rm9ybShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBXZWIKICAgICAgICAgbWFwLnNldCh0ZXh0RmllbGRWYWx1ZXNbaV0u
Zmlyc3QsIFdlYlN0cmluZzo6Y3JlYXRlKHRleHRGaWVsZFZhbHVlc1tpXS5zZWNvbmQpKTsKICAg
ICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gdGV4dEZpZWxkc01hcCA9IEltbXV0YWJsZURp
Y3Rpb25hcnk6OmFkb3B0KG1hcCk7CiAKLSAgICBtX2NsaWVudC53aWxsU3VibWl0Rm9ybSh0b0FQ
SShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzb3VyY2VGcmFtZSksIHRvQVBJKHRleHRGaWVs
ZHNNYXAuZ2V0KCkpLCB0b0FQSSh1c2VyRGF0YSksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQu
Y2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQud2lsbFN1Ym1pdEZvcm0odG9BUEkocGFnZSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkoc291cmNlRnJhbWUpLCB0b0FQSSh0ZXh0RmllbGRzTWFwLmdldCgp
KSwgdG9BUEkodXNlckRhdGEpLCB0b0FQSShsaXN0ZW5lciksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGb3JtQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Rm9ybUNsaWVudC5oCmluZGV4IDVlZThhMGE2YzJhMDlkZDMyYjc5ODBlY2ExYWI3MWYyMWY0ZmEx
ODEuLmE2ZTJiNWExOWEyZjg4NjU4MjA0YWUzMWJjZGU4YWU1NGUwYjRmMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuaApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAordGVtcGxhdGU8
PiBzdHJ1Y3QgQVBJOjpDbGllbnRUcmFpdHM8V0tQYWdlRm9ybUNsaWVudEJhc2U+IHsKKyAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlRm9ybUNsaWVudFYwPiBWZXJzaW9uczsKK307CisKIG5h
bWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogfQpAQCAtNDIsNyArNDYsNyBAQCBjbGFzcyBX
ZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViRm9ybVN1Ym1pc3Np
b25MaXN0ZW5lclByb3h5OwogCi1jbGFzcyBXZWJGb3JtQ2xpZW50IDogcHVibGljIEFQSUNsaWVu
dDxXS1BhZ2VGb3JtQ2xpZW50LCBrV0tQYWdlRm9ybUNsaWVudEN1cnJlbnRWZXJzaW9uPiB7Citj
bGFzcyBXZWJGb3JtQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUZvcm1DbGllbnRC
YXNlPiB7CiBwdWJsaWM6CiAgICAgYm9vbCB3aWxsU3VibWl0Rm9ybShXZWJQYWdlUHJveHkqLCBX
ZWJGcmFtZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+PiYgdGV4dEZpZWxkVmFsdWVzLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdl
YkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eSopOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGEx
MDQxYzEyMmZkYmFlMzcxYTdkNzE4MjY1M2U2OGE3NTEyN2MxNzAuLjcxODRkODIwMGI2YzQ2MmFk
OTZkODY3YThhOTA4ODZkZWExYzE5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtNDgsNyArNDgsNyBA
QCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHko
V2ViQ29udGV4dCogY29udGV4dCkKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6Y29udGV4dCgp
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIoY29uc3QgV0tHZW9sb2NhdGlvblByb3Zp
ZGVyKiBwcm92aWRlcikKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmluaXRpYWxp
emVQcm92aWRlcihjb25zdCBXS0dlb2xvY2F0aW9uUHJvdmlkZXJCYXNlKiBwcm92aWRlcikKIHsK
ICAgICBtX3Byb3ZpZGVyLmluaXRpYWxpemUocHJvdmlkZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBk
ZmU4MmVhMDllY2Q5MTkyOGY2NDk0OGY3ZDVmMmFmZTk5NjQ5ZjYwLi41MTExM2EwZGY3MDMwNDQ1
NzYwYjQ3ZjI0Mzg4Zjk2YTI2MmJiZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtNDUsNyArNDUsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eT4gY3JlYXRlKFdlYkNvbnRleHQqKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZVByb3ZpZGVyKGNv
bnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlciopOworICAgIHZvaWQgaW5pdGlhbGl6ZVByb3ZpZGVy
KGNvbnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlckJhc2UqKTsKIAogICAgIHZvaWQgcHJvdmlkZXJE
aWRDaGFuZ2VQb3NpdGlvbihXZWJHZW9sb2NhdGlvblBvc2l0aW9uKik7CiAgICAgdm9pZCBwcm92
aWRlckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
ID0gU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdlb2xv
Y2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDBiODY0Y2NmM2E4YjVkODg2YzdlY2E4NDFkYjkwOTdm
MGEwYThlYmIuLmNjNWRkYzE4M2U4OTU3NWNkYzBkYzk5ODdlZjAwNjcxZmYzZDczMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvblByb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25Qcm92aWRlci5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAgdm9pZCBXZWJHZW9sb2NhdGlvblByb3ZpZGVyOjpzdGFydFVw
ZGF0aW5nKFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KiBnZW9sb2NhdGkKICAgICBpZiAoIW1f
Y2xpZW50LnN0YXJ0VXBkYXRpbmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LnN0
YXJ0VXBkYXRpbmcodG9BUEkoZ2VvbG9jYXRpb25NYW5hZ2VyKSwgbV9jbGllbnQuY2xpZW50SW5m
byk7CisgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZyh0b0FQSShnZW9sb2NhdGlvbk1hbmFnZXIp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uUHJv
dmlkZXI6OnN0b3BVcGRhdGluZyhXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSogZ2VvbG9jYXRp
b25NYW5hZ2VyKQpAQCAtNDQsNyArNDQsNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI6
OnN0b3BVcGRhdGluZyhXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSogZ2VvbG9jYXRpbwogICAg
IGlmICghbV9jbGllbnQuc3RvcFVwZGF0aW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Ns
aWVudC5zdG9wVXBkYXRpbmcodG9BUEkoZ2VvbG9jYXRpb25NYW5hZ2VyKSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7CisgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5nKHRvQVBJKGdlb2xvY2F0aW9uTWFu
YWdlciksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRp
b25Qcm92aWRlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5KiBnZW9sb2NhdGlvbk1hbmFnZXIsIGJvb2wgZW5hYmxlZCkKQEAgLTUyLDcgKzUyLDcgQEAg
dm9pZCBXZWJHZW9sb2NhdGlvblByb3ZpZGVyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3koV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkqIGcKICAgICBpZiAoIW1fY2xpZW50LnNldEVuYWJsZUhpZ2hB
Y2N1cmFjeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFj
Y3VyYWN5KHRvQVBJKGdlb2xvY2F0aW9uTWFuYWdlciksIGVuYWJsZWQsIG1fY2xpZW50LmNsaWVu
dEluZm8pOworICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0b0FQSShnZW9sb2Nh
dGlvbk1hbmFnZXIpLCBlbmFibGVkLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJHZW9sb2NhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
R2VvbG9jYXRpb25Qcm92aWRlci5oCmluZGV4IGYyNTBjODEwN2I1MDFjYTUxMTA3ZmIyNTJlZTZj
NjJjNmExYThmYmEuLjNjYTQ2YTkwZmFhYzE2MzU3MmMxZmFhMzNlNTMxYmQ4M2I0YjhlODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvblByb3ZpZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXIu
aApAQCAtMzAsMTEgKzMwLDE1IEBACiAjaW5jbHVkZSAiV0tHZW9sb2NhdGlvbk1hbmFnZXIuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBUEk6OkNsaWVu
dFRyYWl0czxXS0dlb2xvY2F0aW9uUHJvdmlkZXJCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPFdLR2VvbG9jYXRpb25Qcm92aWRlclYwLCBXS0dlb2xvY2F0aW9uUHJvdmlkZXJWMT4gVmVy
c2lvbnM7Cit9OworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk7CiAKLWNsYXNzIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXIgOiBwdWJsaWMgQVBJ
Q2xpZW50PFdLR2VvbG9jYXRpb25Qcm92aWRlciwga1dLR2VvbG9jYXRpb25Qcm92aWRlckN1cnJl
bnRWZXJzaW9uPiB7CitjbGFzcyBXZWJHZW9sb2NhdGlvblByb3ZpZGVyIDogcHVibGljIEFQSTo6
Q2xpZW50PFdLR2VvbG9jYXRpb25Qcm92aWRlckJhc2U+IHsKIHB1YmxpYzoKICAgICB2b2lkIHN0
YXJ0VXBkYXRpbmcoV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkqKTsKICAgICB2b2lkIHN0b3BV
cGRhdGluZyhXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkhpc3RvcnlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkhpc3RvcnlDbGllbnQuY3BwCmluZGV4IGZmNjI2NzY0NDcyYzVmMTg0NzQ3
Mzk2YTI4ZmM5ZGNhNmZlM2FmZGQuLmQ1MjI5N2YwOTJjNjY2YWU0N2UyMDIwZDc2YTNkMDRkM2U1
Y2FiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJIaXN0b3J5Q2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSGlzdG9yeUNsaWVudC5j
cHAKQEAgLTQwLDcgKzQwLDcgQEAgdm9pZCBXZWJIaXN0b3J5Q2xpZW50OjpkaWROYXZpZ2F0ZVdp
dGhOYXZpZ2F0aW9uRGF0YShXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWcKICAgICAgICAgcmV0
dXJuOwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkRhdGE+IG5hdmlnYXRpb25EYXRhID0g
QVBJOjpOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlKG5hdmlnYXRpb25EYXRhU3RvcmUpOwotICAgIG1f
Y2xpZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKHRvQVBJKGNvbnRleHQpLCB0b0FQ
SShwYWdlKSwgdG9BUEkobmF2aWdhdGlvbkRhdGEuZ2V0KCkpLCB0b0FQSShmcmFtZSksIG1fY2xp
ZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25E
YXRhKHRvQVBJKGNvbnRleHQpLCB0b0FQSShwYWdlKSwgdG9BUEkobmF2aWdhdGlvbkRhdGEuZ2V0
KCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQg
V2ViSGlzdG9yeUNsaWVudDo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYkNvbnRleHQqIGNv
bnRleHQsIFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb25VUkwsIFdlYkZyYW1lUHJveHkqIGZyYW1lKQpAQCAtNDgsNyAr
NDgsNyBAQCB2b2lkIFdlYkhpc3RvcnlDbGllbnQ6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChX
ZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlUHJveAogICAgIGlmICghbV9jbGllbnQuZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5kaWRQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QodG9BUEkoY29udGV4dCksIHRvQVBJKHBhZ2UpLCB0b1VSTFJl
Zihzb3VyY2VVUkwuaW1wbCgpKSwgdG9VUkxSZWYoZGVzdGluYXRpb25VUkwuaW1wbCgpKSwgdG9B
UEkoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QodG9BUEkoY29udGV4dCksIHRvQVBJKHBhZ2UpLCB0b1VSTFJlZihzb3Vy
Y2VVUkwuaW1wbCgpKSwgdG9VUkxSZWYoZGVzdGluYXRpb25VUkwuaW1wbCgpKSwgdG9BUEkoZnJh
bWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYkhpc3RvcnlDbGll
bnQ6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdl
UHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uVVJMLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBX
ZWJIaXN0b3J5Q2xpZW50OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoV2ViQ29udGV4dCogY29u
dGV4dCwgV2ViUGFnZVByb3gKICAgICBpZiAoIW1fY2xpZW50LmRpZFBlcmZvcm1TZXJ2ZXJSZWRp
cmVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlkUGVyZm9ybVNlcnZlclJl
ZGlyZWN0KHRvQVBJKGNvbnRleHQpLCB0b0FQSShwYWdlKSwgdG9VUkxSZWYoc291cmNlVVJMLmlt
cGwoKSksIHRvVVJMUmVmKGRlc3RpbmF0aW9uVVJMLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0
KHRvQVBJKGNvbnRleHQpLCB0b0FQSShwYWdlKSwgdG9VUkxSZWYoc291cmNlVVJMLmltcGwoKSks
IHRvVVJMUmVmKGRlc3RpbmF0aW9uVVJMLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJIaXN0b3J5Q2xpZW50OjpkaWRVcGRhdGVI
aXN0b3J5VGl0bGUoV2ViQ29udGV4dCogY29udGV4dCwgV2ViUGFnZVByb3h5KiBwYWdlLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgV2ViRnJhbWVQcm94eSogZnJhbWUp
CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgV2ViSGlzdG9yeUNsaWVudDo6ZGlkVXBkYXRlSGlzdG9y
eVRpdGxlKFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VQcm94eSoKICAgICBpZiAoIW1fY2xp
ZW50LmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGll
bnQuZGlkVXBkYXRlSGlzdG9yeVRpdGxlKHRvQVBJKGNvbnRleHQpLCB0b0FQSShwYWdlKSwgdG9B
UEkodGl0bGUuaW1wbCgpKSwgdG9VUkxSZWYodXJsLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkVXBkYXRlSGlzdG9yeVRpdGxlKHRv
QVBJKGNvbnRleHQpLCB0b0FQSShwYWdlKSwgdG9BUEkodGl0bGUuaW1wbCgpKSwgdG9VUkxSZWYo
dXJsLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0K
IAogdm9pZCBXZWJIaXN0b3J5Q2xpZW50Ojpwb3B1bGF0ZVZpc2l0ZWRMaW5rcyhXZWJDb250ZXh0
KiBjb250ZXh0KQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYkhpc3RvcnlDbGllbnQ6OnBvcHVs
YXRlVmlzaXRlZExpbmtzKFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKCFtX2NsaWVudC5w
b3B1bGF0ZVZpc2l0ZWRMaW5rcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQucG9w
dWxhdGVWaXNpdGVkTGlua3ModG9BUEkoY29udGV4dCksIG1fY2xpZW50LmNsaWVudEluZm8pOwor
ICAgIG1fY2xpZW50LnBvcHVsYXRlVmlzaXRlZExpbmtzKHRvQVBJKGNvbnRleHQpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJIaXN0b3J5Q2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSGlzdG9yeUNsaWVudC5oCmluZGV4IGRhYWVhNGY0ZTI4YTk2
OTc5ZDRlMGJhYTJmYjdhMWZhMGY1ZGZjZWYuLjUwNmRkNzlkNjRlM2I4ZmY3YjAwZjk5MWM0NWM5
ZjJjNjQ3MjJjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJIaXN0
b3J5Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkhpc3RvcnlDbGll
bnQuaApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRlICJXS0NvbnRleHQuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBUEk6OkNsaWVudFRyYWl0czxX
S0NvbnRleHRIaXN0b3J5Q2xpZW50QmFzZT4geworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0Nv
bnRleHRIaXN0b3J5Q2xpZW50VjA+IFZlcnNpb25zOworfTsKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFdlYkNvbnRleHQ7CkBAIC0zNyw3ICs0MSw3IEBAIGNsYXNzIFdlYkZyYW1lUHJv
eHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsK
IAotY2xhc3MgV2ViSGlzdG9yeUNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tDb250ZXh0SGlz
dG9yeUNsaWVudCwga1dLQ29udGV4dEhpc3RvcnlDbGllbnRDdXJyZW50VmVyc2lvbj4geworY2xh
c3MgV2ViSGlzdG9yeUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS0NvbnRleHRIaXN0b3J5
Q2xpZW50QmFzZT4gewogcHVibGljOgogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlv
bkRhdGEoV2ViQ29udGV4dCosIFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRh
U3RvcmUmLCBXZWJGcmFtZVByb3h5Kik7CiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QoV2ViQ29udGV4dCosIFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJGcmFtZVByb3h5Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCmluZGV4IDFjYzk3OGJhZDRkOGQ0
YTc4M2U3ZjI5ZTAwODAwOGZkNGRhYmY4ZDguLjFjODZjMzU4NGQxNzFlNzBiNmVlOTZlZTE1NGQ1
ODkxYTU3MDVhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29u
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJh
c2UuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBXZWJJY29uRGF0YWJhc2U6OmNsb3NlKCkK
ICAgICAgICAgbV9pY29uRGF0YWJhc2VJbXBsLT5jbG9zZSgpOwogfQogCi12b2lkIFdlYkljb25E
YXRhYmFzZTo6aW5pdGlhbGl6ZUljb25EYXRhYmFzZUNsaWVudChjb25zdCBXS0ljb25EYXRhYmFz
ZUNsaWVudCogY2xpZW50KQordm9pZCBXZWJJY29uRGF0YWJhc2U6OmluaXRpYWxpemVJY29uRGF0
YWJhc2VDbGllbnQoY29uc3QgV0tJY29uRGF0YWJhc2VDbGllbnRCYXNlKiBjbGllbnQpCiB7CiAg
ICAgbV9pY29uRGF0YWJhc2VDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5oCmluZGV4IDgwNDRkNzZiOTg0MWNhMWZh
NTk0NGFlMTIyM2RkZjJiNWRmMzMzNDcuLjdlMGRiZGY5ZjEwYmJlZDI2MmIzNmU1ODlmYzZhOTFh
NDJjYWIyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0
YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmgK
QEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tJbnRlZ3JpdHlCZWZvcmVP
cGVuaW5nKCk7CiAgICAgdm9pZCBjbG9zZSgpOwogCi0gICAgdm9pZCBpbml0aWFsaXplSWNvbkRh
dGFiYXNlQ2xpZW50KGNvbnN0IFdLSWNvbkRhdGFiYXNlQ2xpZW50Kik7CisgICAgdm9pZCBpbml0
aWFsaXplSWNvbkRhdGFiYXNlQ2xpZW50KGNvbnN0IFdLSWNvbkRhdGFiYXNlQ2xpZW50QmFzZSop
OwogCiAgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcApp
bmRleCA0ZmJmZDNjY2Q4NTdiNDFkZjQ3MWJjMDVkYjI2MTViZGZlMTA3N2FhLi41OWUyZTRiMDkz
MzlkOTU4MzhiMTNkZjI1ZGQyZGQ3NzIxMmE0NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcApAQCAtMzYsNyArMzYsNyBAQCB2
b2lkIFdlYkljb25EYXRhYmFzZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoV2ViSWNv
bkRhdGFiYXNlKiBpY29uRGF0YWJhcwogICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSWNvbkZv
clBhZ2VVUkwpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX2NsaWVudC5kaWRDaGFuZ2VJ
Y29uRm9yUGFnZVVSTCh0b0FQSShpY29uRGF0YWJhc2UpLCB0b0FQSSh1cmwpLCBtX2NsaWVudC5j
bGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRDaGFuZ2VJY29uRm9yUGFnZVVSTCh0b0FQSShp
Y29uRGF0YWJhc2UpLCB0b0FQSSh1cmwpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQog
CiB2b2lkIFdlYkljb25EYXRhYmFzZUNsaWVudDo6ZGlkUmVtb3ZlQWxsSWNvbnMoV2ViSWNvbkRh
dGFiYXNlKiBpY29uRGF0YWJhc2UpCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgV2ViSWNvbkRhdGFi
YXNlQ2xpZW50OjpkaWRSZW1vdmVBbGxJY29ucyhXZWJJY29uRGF0YWJhc2UqIGljb25EYXRhYmFz
ZSkKICAgICBpZiAoIW1fY2xpZW50LmRpZFJlbW92ZUFsbEljb25zKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgbV9jbGllbnQuZGlkUmVtb3ZlQWxsSWNvbnModG9BUEkoaWNvbkRhdGFiYXNl
KSwgIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZFJlbW92ZUFsbEljb25z
KHRvQVBJKGljb25EYXRhYmFzZSksICBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2
b2lkIFdlYkljb25EYXRhYmFzZUNsaWVudDo6aWNvbkRhdGFSZWFkeUZvclBhZ2VVUkwoV2ViSWNv
bkRhdGFiYXNlKiBpY29uRGF0YWJhc2UsIFdlYlVSTCogdXJsKQpAQCAtNTIsNyArNTIsNyBAQCB2
b2lkIFdlYkljb25EYXRhYmFzZUNsaWVudDo6aWNvbkRhdGFSZWFkeUZvclBhZ2VVUkwoV2ViSWNv
bkRhdGFiYXNlKiBpY29uRGF0YWJhcwogICAgIGlmICghbV9jbGllbnQuaWNvbkRhdGFSZWFkeUZv
clBhZ2VVUkwpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50Lmljb25EYXRhUmVhZHlG
b3JQYWdlVVJMKHRvQVBJKGljb25EYXRhYmFzZSksIHRvQVBJKHVybCksIG1fY2xpZW50LmNsaWVu
dEluZm8pOworICAgIG1fY2xpZW50Lmljb25EYXRhUmVhZHlGb3JQYWdlVVJMKHRvQVBJKGljb25E
YXRhYmFzZSksIHRvQVBJKHVybCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkljb25EYXRhYmFzZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYklj
b25EYXRhYmFzZUNsaWVudC5oCmluZGV4IGNlYTdkZjA0NTU0YmY3ZDE1NzY5ZjMwMzkwN2U2ZDRj
NTYyY2M1ZGMuLmY1MmY0ZThmYmI2NDY2ODE0ZWMwMDgzZjNlMDY4ZDFiMzM1OWRlNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgKQEAg
LTI5LDEyICsyOSwxNiBAQAogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgogI2luY2x1ZGUgIldLSWNv
bkRhdGFiYXNlLmgiCiAKK3RlbXBsYXRlPD4gc3RydWN0IEFQSTo6Q2xpZW50VHJhaXRzPFdLSWNv
bkRhdGFiYXNlQ2xpZW50QmFzZT4geworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0ljb25EYXRh
YmFzZUNsaWVudFYwLCBXS0ljb25EYXRhYmFzZUNsaWVudFYxPiBWZXJzaW9uczsKK307CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBXZWJVUkw7
CiAKLWNsYXNzIFdlYkljb25EYXRhYmFzZUNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tJY29u
RGF0YWJhc2VDbGllbnQsIGtXS0ljb25EYXRhYmFzZUNsaWVudEN1cnJlbnRWZXJzaW9uPiB7Citj
bGFzcyBXZWJJY29uRGF0YWJhc2VDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tJY29uRGF0
YWJhc2VDbGllbnRCYXNlPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBkaWRDaGFuZ2VJY29uRm9yUGFn
ZVVSTChXZWJJY29uRGF0YWJhc2UqLCBXZWJVUkwqKTsKICAgICB2b2lkIGRpZFJlbW92ZUFsbElj
b25zKFdlYkljb25EYXRhYmFzZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5jcHAKaW5kZXggMmZjNGZjOGZjZmFlNTcyYWY0YThhYThlNDI2NTYzYWZm
MWYwNWJjOS4uOTJlNGI2YzVmYzU3ZTFhMzVjMTQ3ZTdmOTU5ZDZiYThhZjBlNDIwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC00NDks
NyArNDQ5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZSh1
aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3IKICAgICAgICAgMCwgLyogZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UgKi8KICAgICB9OwogCi0gICAgaW5zcGVjdG9yUGFnZS0+aW5pdGlh
bGl6ZVBvbGljeUNsaWVudCgmcG9saWN5Q2xpZW50KTsKKyAgICBpbnNwZWN0b3JQYWdlLT5pbml0
aWFsaXplUG9saWN5Q2xpZW50KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV0tQYWdlUG9saWN5Q2xp
ZW50QmFzZSo+KCZwb2xpY3lDbGllbnQpKTsKIAogICAgIFN0cmluZyB1cmwgPSBpbnNwZWN0b3JQ
YWdlVVJMKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaApp
bmRleCAyN2QxNWFkMDYxNTgxMjgwNzVkMTZlYTUyZWNhYzdjOTdlODRmYTRlLi4xYzIwYjBhYmFh
ZDRiN2M1NjA1MDMzYTk3MDNiNWQyNWIzYjE5NDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkxvYWRlckNsaWVudC5oCkBAIC0zNSwxMyArMzUsMTIgQEAKICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgQVBJIHsKLWNs
YXNzIE9iamVjdDsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZUxvYWRl
ckNsaWVudEJhc2U+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEFQSTo6Q2xpZW50VHJhaXRzPFdLUGFn
ZUxvYWRlckNsaWVudEJhc2U+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlTG9hZGVy
Q2xpZW50VjAsIFdLUGFnZUxvYWRlckNsaWVudFYxLCBXS1BhZ2VMb2FkZXJDbGllbnRWMiwgV0tQ
YWdlTG9hZGVyQ2xpZW50VjM+IFZlcnNpb25zOwogfTsKIAorbmFtZXNwYWNlIEFQSSB7CitjbGFz
cyBPYmplY3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcAppbmRleCA0OTYw
NDM3MzM4ODFiMWYxODU0OTMzZmI1ZTVkYTc2ZmRmYTFhMDAwLi4zZGUwY2E1MWU5ZjVlZTBlNDkw
ZGQxODc3M2NjMDgyOTU3ZTQ2Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAg
dm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpzdG9wT2JzZXJ2aW5nQ2hhbmdlcyhXS09y
aWdpbkRhdGFUeXBlcyB0eXBlcykKICAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1Jl
bGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6
U3RhcnRPYnNlcnZpbmdDaGFuZ2VzKHR5cGVzKSk7CiB9CiAKLXZvaWQgV2ViT3JpZ2luRGF0YU1h
bmFnZXJQcm94eTo6c2V0Q2hhbmdlQ2xpZW50KGNvbnN0IFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFu
Z2VDbGllbnQgKmNsaWVudCkKK3ZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6c2V0Q2hh
bmdlQ2xpZW50KGNvbnN0IFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFuZ2VDbGllbnRCYXNlICpjbGll
bnQpCiB7CiAgICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmgKaW5kZXgg
NjIzZmUxZTdlNjJhY2E1MzMxZWZmMjk1MjJkZDc4ZGI4ZDk3NDc1Mi4uZDBmNzFjMjY2YWU2MjRi
ZDhkYmUwMTQ4ZGJlZTFkZmYwZGU4ZWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdDaGFuZ2VzKFdLT3JpZ2luRGF0YVR5cGVz
KTsKICAgICB2b2lkIHN0b3BPYnNlcnZpbmdDaGFuZ2VzKFdLT3JpZ2luRGF0YVR5cGVzKTsKLSAg
ICB2b2lkIHNldENoYW5nZUNsaWVudChjb25zdCBXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xp
ZW50Kik7CisgICAgdm9pZCBzZXRDaGFuZ2VDbGllbnQoY29uc3QgV0tPcmlnaW5EYXRhTWFuYWdl
ckNoYW5nZUNsaWVudEJhc2UqKTsKIAogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CiAgICAg
dXNpbmcgQVBJOjpPYmplY3Q6OmRlcmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQu
Y3BwCmluZGV4IDY2NjAxYTljOWZiMzZjOGIwN2MyM2M2NWFiNzM5ZDQzY2I1NjMzZjAuLmYxZWU4
MjBlODNhYTkxNjkyYzFlZjZlYTNjMGE3ZmVjYWUyZjdlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94
eUNoYW5nZUNsaWVudC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBXZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5Q2hhbmdlQ2xpZW50OjpkaWRDaGFuZ2UoV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94
eSoKICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9jbGllbnQuZGlkQ2hhbmdlKHRvQVBJKG9yaWdpbkRhdGFNYW5hZ2VyKSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkQ2hhbmdlKHRvQVBJKG9yaWdpbkRhdGFNYW5hZ2Vy
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFn
ZXJQcm94eUNoYW5nZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdp
bkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuaAppbmRleCBiYTc2N2NkYjUxOGMxNzg0YzI0
YTJhYWE3NGRmZDI1ZjFmZDFhYjk0Li40Y2NiZDBhNjE5ZTJiZTVmMTY1Y2NiNWU5NDllNjNlOTM0
OGVlYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0
YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmgKQEAgLTMwLDExICszMCwx
NSBAQAogI2luY2x1ZGUgIldLT3JpZ2luRGF0YU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBUEk6OkNsaWVudFRyYWl0czxXS09yaWdpbkRh
dGFNYW5hZ2VyQ2hhbmdlQ2xpZW50QmFzZT4geworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS09y
aWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xpZW50VjA+IFZlcnNpb25zOworfTsKKwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk7CiAKLWNsYXNzIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdL
T3JpZ2luRGF0YU1hbmFnZXJDaGFuZ2VDbGllbnQsIGtXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdl
Q2xpZW50VmVyc2lvbj4geworY2xhc3MgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNs
aWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xpZW50
QmFzZT4gewogcHVibGljOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYk9yaWdpbkRhdGFNYW5hZ2Vy
UHJveHkqKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZUNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
Q29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IGMxMGY1NmVmNGVkMjBkMTJiNzRiOTgxOWI3YTIw
MTA4MTI4ZTY3MmQuLjJmYzM0MGY2NzZmNjkxOTUyNjhiMTBjNmU2YjcxMmU5OGQwN2E1YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVD
bGllbnQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIGJvb2wgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50
OjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlCiAgICAg
aWYgKCFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUgJiYgIW1fY2xpZW50
LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9jbGllbnQudmVyc2lvbiA+PSAyICYm
ICFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpCisgICAgaWYgKG1fY2xp
ZW50LmJhc2UudmVyc2lvbiA+PSAyICYmICFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFZlY3RvcjxSZWZQdHI8QVBJ
OjpPYmplY3Q+PiBwcm9wb3NlZE1lbnVJdGVtczsKQEAgLTUyLDExICs1MiwxMSBAQCBib29sIFdl
YlBhZ2VDb250ZXh0TWVudUNsaWVudDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdl
YlBhZ2VQcm94eSogcGFnZQogICAgICAgICBwcm9wb3NlZE1lbnVJdGVtcy51bmNoZWNrZWRBcHBl
bmQoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUobWVudUl0ZW0pKTsKIAogICAgIFdLQXJyYXlS
ZWYgbmV3TWVudSA9IG51bGxwdHI7Ci0gICAgaWYgKG1fY2xpZW50LnZlcnNpb24gPj0gMikgewor
ICAgIGlmIChtX2NsaWVudC5iYXNlLnZlcnNpb24gPj0gMikgewogICAgICAgICBSZWZQdHI8V2Vi
SGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVzdFJlc3VsdCA9IFdlYkhpdFRlc3RSZXN1bHQ6OmNyZWF0
ZShoaXRUZXN0UmVzdWx0RGF0YSk7Ci0gICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJv
bVByb3Bvc2VkTWVudSh0b0FQSShwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6
bW92ZShwcm9wb3NlZE1lbnVJdGVtcykpLmdldCgpKSwgJm5ld01lbnUsIHRvQVBJKHdlYkhpdFRl
c3RSZXN1bHQuZ2V0KCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwor
ICAgICAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodG9BUEkocGFn
ZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUocHJvcG9zZWRNZW51SXRlbXMp
KS5nZXQoKSksICZuZXdNZW51LCB0b0FQSSh3ZWJIaXRUZXN0UmVzdWx0LmdldCgpKSwgdG9BUEko
dXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgIH0gZWxzZQotICAgICAg
ICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMCh0b0FQSShwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShw
cm9wb3NlZE1lbnVJdGVtcykpLmdldCgpKSwgJm5ld01lbnUsIHRvQVBJKHVzZXJEYXRhKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7CisgICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVBy
b3Bvc2VkTWVudV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShBUEk6
OkFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSkuZ2V0KCkpLCAmbmV3
TWVudSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogCiAgICAg
UmVmUHRyPEFQSTo6QXJyYXk+IGFycmF5ID0gYWRvcHRSZWYodG9JbXBsKG5ld01lbnUpKTsKICAg
ICAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmN1c3Rv
bUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYlBhZ2VQcm94eSogcGFnZSwKICAgICAgICAgcmV0
dXJuOwogCiAgICAgUmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4gaXRlbSA9IFdlYkNvbnRleHRN
ZW51SXRlbTo6Y3JlYXRlKGl0ZW1EYXRhKTsKLSAgICBtX2NsaWVudC5jdXN0b21Db250ZXh0TWVu
dUl0ZW1TZWxlY3RlZCh0b0FQSShwYWdlKSwgdG9BUEkoaXRlbS5nZXQoKSksIG1fY2xpZW50LmNs
aWVudEluZm8pOworICAgIG1fY2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKHRv
QVBJKHBhZ2UpLCB0b0FQSShpdGVtLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
IH0KIAogdm9pZCBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51RGlzbWlzc2Vk
KFdlYlBhZ2VQcm94eSogcGFnZSkKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBXZWJQYWdlQ29udGV4
dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51RGlzbWlzc2VkKFdlYlBhZ2VQcm94eSogcGFnZSkKICAg
ICBpZiAoIW1fY2xpZW50LmNvbnRleHRNZW51RGlzbWlzc2VkKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgbV9jbGllbnQuY29udGV4dE1lbnVEaXNtaXNzZWQodG9BUEkocGFnZSksIG1fY2xp
ZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmNvbnRleHRNZW51RGlzbWlzc2VkKHRvQVBJ
KHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiBib29sIFdlYlBhZ2VDb250
ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbURhdGE+JiBtZW51SXRlbXNWZWN0b3IpCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBX
ZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6OnNob3dDb250ZXh0TWVudShXZWJQYWdlUHJveHkqIHBh
Z2UsIGNvbnN0IFdlYkNvcmUKICAgICBmb3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDogbWVudUl0
ZW1zVmVjdG9yKQogICAgICAgICBtZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkNvbnRleHRN
ZW51SXRlbTo6Y3JlYXRlKG1lbnVJdGVtKSk7CiAKLSAgICBtX2NsaWVudC5zaG93Q29udGV4dE1l
bnUodG9BUEkocGFnZSksIHRvQVBJKG1lbnVMb2NhdGlvbiksIHRvQVBJKEFQSTo6QXJyYXk6OmNy
ZWF0ZShzdGQ6Om1vdmUobWVudUl0ZW1zKSkuZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsK
KyAgICBtX2NsaWVudC5zaG93Q29udGV4dE1lbnUodG9BUEkocGFnZSksIHRvQVBJKG1lbnVMb2Nh
dGlvbiksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUobWVudUl0ZW1zKSkuZ2V0
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC0xMTQsNyArMTE0LDcgQEAgYm9vbCBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmhpZGVDb250
ZXh0TWVudShXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgaWYgKCFtX2NsaWVudC5oaWRlQ29udGV4
dE1lbnUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fY2xpZW50LmhpZGVDb250ZXh0
TWVudSh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuaGlk
ZUNvbnRleHRNZW51KHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZUNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggMzkwOTY4OGU1MDdkMTFkNWNjMGYzMzM0Mzky
MzUzYmFjYzg1MzY3Zi4uZmM3NDU2MjU5YTMzY2E4ODk2OTA2MmQ1NjQ4MjFjYmY2M2RhYmU4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVD
bGllbnQuaApAQCAtMzQsMTIgKzM0LDE2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAordGVtcGxhdGU8PiBzdHJ1Y3QgQVBJOjpDbGll
bnRUcmFpdHM8V0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjAsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50
VjEsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjIsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjM+
IFZlcnNpb25zOworfTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkNvbnRleHRN
ZW51SXRlbURhdGE7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKLWNsYXNzIFdlYlBhZ2VDb250ZXh0
TWVudUNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tQYWdlQ29udGV4dE1lbnVDbGllbnQsIGtX
S1BhZ2VDb250ZXh0TWVudUNsaWVudEN1cnJlbnRWZXJzaW9uPiB7CitjbGFzcyBXZWJQYWdlQ29u
dGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlQ29udGV4dE1lbnVDbGll
bnRCYXNlPiB7CiBwdWJsaWM6CiAgICAgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1l
bnUoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBw
cm9wb3NlZE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgY3VzdG9tTWVudSwg
Y29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSk7CiAg
ICAgdm9pZCBjdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZChXZWJQYWdlUHJveHkqLCBjb25z
dCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGI0NGUzYTg4MjE2MDYyYzBiZjkxY2VhMmUxNTNkYjczYmQ5ZGJj
ZGIuLjBlMTlkY2I2YWJiMDkzYmMyYjRkMzMyYjllMTczZGZmMGE2MmRjZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MjAsMTcgKzQyMCwxNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUxvYWRlckNsaWVudChjb25zdCBXS1BhZ2VMb2Fk
ZXJDbGllbnRCYXNlKiBsb2FkQ2xpZQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0V2lsbEdvVG9CYWNrRm9yd2FyZEl0ZW1DYWxsYmFja0VuYWJsZWQobG9hZENsaWVu
dC0+dmVyc2lvbiA+IDApLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojppbml0
aWFsaXplUG9saWN5Q2xpZW50KGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudCogcG9saWN5Q2xpZW50
KQordm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVQb2xpY3lDbGllbnQoY29uc3QgV0tQYWdl
UG9saWN5Q2xpZW50QmFzZSogcG9saWN5Q2xpZW50KQogewogICAgIG1fcG9saWN5Q2xpZW50Lmlu
aXRpYWxpemUocG9saWN5Q2xpZW50KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxp
emVGb3JtQ2xpZW50KGNvbnN0IFdLUGFnZUZvcm1DbGllbnQqIGZvcm1DbGllbnQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUZvcm1DbGllbnQoY29uc3QgV0tQYWdlRm9ybUNsaWVudEJh
c2UqIGZvcm1DbGllbnQpCiB7CiAgICAgbV9mb3JtQ2xpZW50LmluaXRpYWxpemUoZm9ybUNsaWVu
dCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplVUlDbGllbnQoY29uc3QgV0tQ
YWdlVUlDbGllbnQqIGNsaWVudCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplVUlDbGll
bnQoY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiBjbGllbnQpCiB7CiAgICAgaWYgKCFpc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ0MSwxOCArNDQxLDE4IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojppbml0aWFsaXplVUlDbGllbnQoY29uc3QgV0tQYWdlVUlDbGllbnQqIGNsaWVudCkKICAg
ICBzZXRDYW5SdW5Nb2RhbChtX3VpQ2xpZW50LmNhblJ1bk1vZGFsKCkpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUZpbmRDbGllbnQoY29uc3QgV0tQYWdlRmluZENsaWVudCog
Y2xpZW50KQordm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVGaW5kQ2xpZW50KGNvbnN0IFdL
UGFnZUZpbmRDbGllbnRCYXNlKiBjbGllbnQpCiB7CiAgICAgbV9maW5kQ2xpZW50LmluaXRpYWxp
emUoY2xpZW50KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVGaW5kTWF0Y2hl
c0NsaWVudChjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudCogY2xpZW50KQordm9pZCBXZWJQ
YWdlUHJveHk6OmluaXRpYWxpemVGaW5kTWF0Y2hlc0NsaWVudChjb25zdCBXS1BhZ2VGaW5kTWF0
Y2hlc0NsaWVudEJhc2UqIGNsaWVudCkKIHsKICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50LmluaXRp
YWxpemUoY2xpZW50KTsKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotdm9pZCBXZWJQ
YWdlUHJveHk6OmluaXRpYWxpemVDb250ZXh0TWVudUNsaWVudChjb25zdCBXS1BhZ2VDb250ZXh0
TWVudUNsaWVudCogY2xpZW50KQordm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVDb250ZXh0
TWVudUNsaWVudChjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqIGNsaWVudCkKIHsK
ICAgICBtX2NvbnRleHRNZW51Q2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3N2MzYWU0ZmM2NzA5ZjRiZGJkNTMx
ZTU2YzZjZGNiMzNiZGRhNjAwLi5jMDFmMWM3NDUxMzE5NmM0MzVjMmM4YWQ3YmY4YWU3MzljMGFk
OGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zNDgsMTQg
KzM0OCwxNCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQot
ICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRNZW51Q2xpZW50KGNvbnN0IFdLUGFnZUNvbnRleHRN
ZW51Q2xpZW50Kik7CisgICAgdm9pZCBpbml0aWFsaXplQ29udGV4dE1lbnVDbGllbnQoY29uc3Qg
V0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKik7CiAjZW5kaWYKLSAgICB2b2lkIGluaXRpYWxp
emVGaW5kQ2xpZW50KGNvbnN0IFdLUGFnZUZpbmRDbGllbnQqKTsKLSAgICB2b2lkIGluaXRpYWxp
emVGaW5kTWF0Y2hlc0NsaWVudChjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudCopOwotICAg
IHZvaWQgaW5pdGlhbGl6ZUZvcm1DbGllbnQoY29uc3QgV0tQYWdlRm9ybUNsaWVudCopOworICAg
IHZvaWQgaW5pdGlhbGl6ZUZpbmRDbGllbnQoY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqKTsK
KyAgICB2b2lkIGluaXRpYWxpemVGaW5kTWF0Y2hlc0NsaWVudChjb25zdCBXS1BhZ2VGaW5kTWF0
Y2hlc0NsaWVudEJhc2UqKTsKKyAgICB2b2lkIGluaXRpYWxpemVGb3JtQ2xpZW50KGNvbnN0IFdL
UGFnZUZvcm1DbGllbnRCYXNlKik7CiAgICAgdm9pZCBpbml0aWFsaXplTG9hZGVyQ2xpZW50KGNv
bnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqKTsKLSAgICB2b2lkIGluaXRpYWxpemVQb2xpY3lD
bGllbnQoY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50Kik7Ci0gICAgdm9pZCBpbml0aWFsaXplVUlD
bGllbnQoY29uc3QgV0tQYWdlVUlDbGllbnQqKTsKKyAgICB2b2lkIGluaXRpYWxpemVQb2xpY3lD
bGllbnQoY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSopOworICAgIHZvaWQgaW5pdGlhbGl6
ZVVJQ2xpZW50KGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSopOwogI2lmIFBMQVRGT1JNKEVGTCkK
ICAgICB2b2lkIGluaXRpYWxpemVVSVBvcHVwTWVudUNsaWVudChjb25zdCBXS1BhZ2VVSVBvcHVw
TWVudUNsaWVudCopOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUG9saWN5Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb2xp
Y3lDbGllbnQuY3BwCmluZGV4IDk5YTI2ZDlkMTdjNThiZjQzZmNkOTY2OGRkNjc4Y2IxZTE2NGQ4
NGQuLjU5M2ZmYjdhMjdhNTg3MDczZmRiMGE4YmI0NjVmZDYwZGY1YmRiNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb2xpY3lDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb2xpY3lDbGllbnQuY3BwCkBAIC00Miw5ICs0Miw5IEBA
IGJvb2wgV2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdl
YlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhCiAgICAgUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IHJlcXVl
c3QgPSBXZWJVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKIAogICAgIGlmICht
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjApCi0gICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25f
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh0
eXBlKSwgdG9BUEkobW9kaWZpZXJzKSwgdG9BUEkobW91c2VCdXR0b24pLCB0b0FQSShyZXF1ZXN0
LmdldCgpKSwgdG9BUEkobGlzdGVuZXIpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVu
dEluZm8pOworICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEko
dHlwZSksIHRvQVBJKG1vZGlmaWVycyksIHRvQVBJKG1vdXNlQnV0dG9uKSwgdG9BUEkocmVxdWVz
dC5nZXQoKSksIHRvQVBJKGxpc3RlbmVyKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwogICAgIGVsc2UKLSAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbih0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh0eXBlKSwg
dG9BUEkobW9kaWZpZXJzKSwgdG9BUEkobW91c2VCdXR0b24pLCB0b0FQSShvcmlnaW5hdGluZ0Zy
YW1lKSwgdG9BUEkocmVxdWVzdC5nZXQoKSksIHRvQVBJKGxpc3RlbmVyKSwgdG9BUEkodXNlckRh
dGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbih0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh0eXBl
KSwgdG9BUEkobW9kaWZpZXJzKSwgdG9BUEkobW91c2VCdXR0b24pLCB0b0FQSShvcmlnaW5hdGlu
Z0ZyYW1lKSwgdG9BUEkocmVxdWVzdC5nZXQoKSksIHRvQVBJKGxpc3RlbmVyKSwgdG9BUEkodXNl
ckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC01Niw3ICs1Niw3IEBAIGJvb2wgV2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24oV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtCiAKICAgICBSZWZQdHI8
V2ViVVJMUmVxdWVzdD4gcmVxdWVzdCA9IFdlYlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNvdXJjZVJl
cXVlc3QpOwogCi0gICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHRv
QVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHR5cGUpLCB0b0FQSShtb2RpZmllcnMpLCB0
b0FQSShtb3VzZUJ1dHRvbiksIHRvQVBJKHJlcXVlc3QuZ2V0KCkpLCB0b0FQSShmcmFtZU5hbWUu
aW1wbCgpKSwgdG9BUEkobGlzdGVuZXIpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVu
dEluZm8pOworICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih0b0FQ
SShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh0eXBlKSwgdG9BUEkobW9kaWZpZXJzKSwgdG9B
UEkobW91c2VCdXR0b24pLCB0b0FQSShyZXF1ZXN0LmdldCgpKSwgdG9BUEkoZnJhbWVOYW1lLmlt
cGwoKSksIHRvQVBJKGxpc3RlbmVyKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02OSw5ICs2OSw5IEBAIGJvb2wg
V2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJQYWdlUHJveHkqIHBh
Z2UsIFdlYkZyYW1lUHJveHkqCiAgICAgUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBX
ZWJVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKIAogICAgIGlmIChtX2NsaWVu
dC5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQotICAgICAg
ICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHJlc3BvbnNlLmdldCgpKSwgdG9BUEko
cmVxdWVzdC5nZXQoKSksIHRvQVBJKGxpc3RlbmVyKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKKyAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Vf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShy
ZXNwb25zZS5nZXQoKSksIHRvQVBJKHJlcXVlc3QuZ2V0KCkpLCB0b0FQSShsaXN0ZW5lciksIHRv
QVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHRvQVBJKHBhZ2UpLCB0b0FQSShm
cmFtZSksIHRvQVBJKHJlc3BvbnNlLmdldCgpKSwgdG9BUEkocmVxdWVzdC5nZXQoKSksIGNhblNo
b3dNSU1FVHlwZSwgdG9BUEkobGlzdGVuZXIpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNs
aWVudEluZm8pOworICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh0b0FQ
SShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShyZXNwb25zZS5nZXQoKSksIHRvQVBJKHJlcXVl
c3QuZ2V0KCkpLCBjYW5TaG93TUlNRVR5cGUsIHRvQVBJKGxpc3RlbmVyKSwgdG9BUEkodXNlckRh
dGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC04MSw3ICs4MSw3IEBAIHZvaWQgV2ViUG9saWN5Q2xpZW50Ojp1bmFibGVUb0ltcGxlbWVudFBv
bGljeShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqCiAgICAgaWYgKCFtX2NsaWVu
dC51bmFibGVUb0ltcGxlbWVudFBvbGljeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGll
bnQudW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9B
UEkoZXJyb3IpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1f
Y2xpZW50LnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSks
IHRvQVBJKGVycm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQb2xpY3lDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQb2xpY3lDbGllbnQuaAppbmRleCBmMTJmMTE0Mzc2ZGZkYjJlZGUxMzM4MWQ4NzRlM2MwNjA1
NTE1MDFiLi45NzJjMjEyMTA4M2RhOTc0YTFiNTQxZGQyYzA1NTRjYzVlNjA4N2U2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5oCkBAIC0zMiwxNCArMzIsMTgg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBUEk6OkNsaWVudFRyYWl0czxXS1BhZ2VQ
b2xpY3lDbGllbnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZVBvbGljeUNs
aWVudFYwLCBXS1BhZ2VQb2xpY3lDbGllbnRWMT4gVmVyc2lvbnM7Cit9OworCiBuYW1lc3BhY2Ug
QVBJIHsKIGNsYXNzIE9iamVjdDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNz
IFJlc291cmNlRXJyb3I7Ci0gICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotICAgIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC00OCw3ICs1Miw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7
CiBjbGFzcyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk7CiAKLWNsYXNzIFdlYlBvbGljeUNs
aWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tQYWdlUG9saWN5Q2xpZW50LCBrV0tQYWdlUG9saWN5
Q2xpZW50Q3VycmVudFZlcnNpb24+IHsKK2NsYXNzIFdlYlBvbGljeUNsaWVudCA6IHB1YmxpYyBB
UEk6OkNsaWVudDxXS1BhZ2VQb2xpY3lDbGllbnRCYXNlPiB7CiBwdWJsaWM6CiAgICAgYm9vbCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJv
eHkqLCBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSwgV2ViRXZlbnQ6Ok1vZGlmaWVycywgV2ViTW91
c2VFdmVudDo6QnV0dG9uLCBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkqLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpOwogICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpOYXZpZ2F0aW9u
VHlwZSwgV2ViRXZlbnQ6Ok1vZGlmaWVycywgV2ViTW91c2VFdmVudDo6QnV0dG9uLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5KiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCmluZGV4IGYwYTA4ZTMzM2FhZWRhNmFlNDYx
MGQ4NGU5MWFjZTk4NmIyNTA3M2YuLmQzYmU1MWExOTdhMzA2YWVjMjdkMDAwOWRhNDhhYWM2NDgy
MGI2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcApAQCAtNDgs
MTAgKzQ4LDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94
eT4gV2ViVUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIHdp
bmRvd0ZlYXR1cmVzLCBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycywgV2ViTW91c2VFdmVu
dDo6QnV0dG9uIGJ1dHRvbikKIHsKLSAgICBpZiAoIW1fY2xpZW50LnZlcnNpb24gJiYgIW1fY2xp
ZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkKKyAgICBpZiAoIW1fY2xp
ZW50LmJhc2UudmVyc2lvbiAmJiAhbV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBpZiAobV9jbGllbnQudmVy
c2lvbiA9PSBrV0tQYWdlVUlDbGllbnRDdXJyZW50VmVyc2lvbiAmJiAhbV9jbGllbnQuY3JlYXRl
TmV3UGFnZSkKKyAgICBpZiAobV9jbGllbnQuYmFzZS52ZXJzaW9uID09IGtXS1BhZ2VVSUNsaWVu
dEN1cnJlbnRWZXJzaW9uICYmICFtX2NsaWVudC5jcmVhdGVOZXdQYWdlKQogICAgICAgICByZXR1
cm4gMDsKIAogICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgbWFwOwpAQCAtNzMsMTEg
KzczLDExIEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJVSUNsaWVudDo6Y3JlYXRlTmV3
UGFnZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFJlCiAgICAgbWFwLnNldCgiZGlhbG9nIiwg
V2ViQm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmRpYWxvZykpOwogICAgIFJlZlB0cjxJ
bW11dGFibGVEaWN0aW9uYXJ5PiBmZWF0dXJlc01hcCA9IEltbXV0YWJsZURpY3Rpb25hcnk6OmFk
b3B0KG1hcCk7CiAKLSAgICBpZiAoIW1fY2xpZW50LnZlcnNpb24pCi0gICAgICAgIHJldHVybiBh
ZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0
aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShmZWF0dXJlc01hcC5nZXQoKSksIHRvQVBJKG1vZGlmaWVy
cyksIHRvQVBJKGJ1dHRvbiksIG1fY2xpZW50LmNsaWVudEluZm8pKSk7CisgICAgaWYgKCFtX2Ns
aWVudC5iYXNlLnZlcnNpb24pCisgICAgICAgIHJldHVybiBhZG9wdFJlZih0b0ltcGwobV9jbGll
bnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKHBhZ2UpLCB0b0FQ
SShmZWF0dXJlc01hcC5nZXQoKSksIHRvQVBJKG1vZGlmaWVycyksIHRvQVBJKGJ1dHRvbiksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKIAogICAgIFJlZlB0cjxXZWJVUkxSZXF1ZXN0PiBy
ZXF1ZXN0ID0gV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKHJlc291cmNlUmVxdWVzdCk7ICAgIAotICAg
IHJldHVybiBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlTmV3UGFnZSh0b0FQSShwYWdl
KSwgdG9BUEkocmVxdWVzdC5nZXQoKSksIHRvQVBJKGZlYXR1cmVzTWFwLmdldCgpKSwgdG9BUEko
bW9kaWZpZXJzKSwgdG9BUEkoYnV0dG9uKSwgbV9jbGllbnQuY2xpZW50SW5mbykpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2UodG9BUEkocGFnZSks
IHRvQVBJKHJlcXVlc3QuZ2V0KCkpLCB0b0FQSShmZWF0dXJlc01hcC5nZXQoKSksIHRvQVBJKG1v
ZGlmaWVycyksIHRvQVBJKGJ1dHRvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKIH0g
CiAKIHZvaWQgV2ViVUlDbGllbnQ6OnNob3dQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkKQEAgLTg1
LDcgKzg1LDcgQEAgdm9pZCBXZWJVSUNsaWVudDo6c2hvd1BhZ2UoV2ViUGFnZVByb3h5KiBwYWdl
KQogICAgIGlmICghbV9jbGllbnQuc2hvd1BhZ2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBtX2NsaWVudC5zaG93UGFnZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cisg
ICAgbV9jbGllbnQuc2hvd1BhZ2UodG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiB9CiAKIHZvaWQgV2ViVUlDbGllbnQ6OmNsb3NlKFdlYlBhZ2VQcm94eSogcGFnZSkKQEAg
LTkzLDcgKzkzLDcgQEAgdm9pZCBXZWJVSUNsaWVudDo6Y2xvc2UoV2ViUGFnZVByb3h5KiBwYWdl
KQogICAgIGlmICghbV9jbGllbnQuY2xvc2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBt
X2NsaWVudC5jbG9zZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9j
bGllbnQuY2xvc2UodG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAK
IHZvaWQgV2ViVUlDbGllbnQ6OnRha2VGb2N1cyhXZWJQYWdlUHJveHkqIHBhZ2UsIFdLRm9jdXNE
aXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgV2ViVUlDbGllbnQ6
OnRha2VGb2N1cyhXZWJQYWdlUHJveHkqIHBhZ2UsIFdLRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgIGlmICghbV9jbGllbnQudGFrZUZvY3VzKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgbV9jbGllbnQudGFrZUZvY3VzKHRvQVBJKHBhZ2UpLCBkaXJlY3Rpb24sIG1fY2xpZW50LmNs
aWVudEluZm8pOworICAgIG1fY2xpZW50LnRha2VGb2N1cyh0b0FQSShwYWdlKSwgZGlyZWN0aW9u
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYlVJQ2xpZW50Ojpmb2N1
cyhXZWJQYWdlUHJveHkqIHBhZ2UpCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJVSUNsaWVu
dDo6Zm9jdXMoV2ViUGFnZVByb3h5KiBwYWdlKQogICAgIGlmICghbV9jbGllbnQuZm9jdXMpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX2NsaWVudC5mb2N1cyh0b0FQSShwYWdlKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZm9jdXModG9BUEkocGFnZSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViVUlDbGllbnQ6OnVuZm9jdXMoV2Vi
UGFnZVByb3h5KiBwYWdlKQpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgV2ViVUlDbGllbnQ6OnVu
Zm9jdXMoV2ViUGFnZVByb3h5KiBwYWdlKQogICAgIGlmICghbV9jbGllbnQudW5mb2N1cykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQudW5mb2N1cyh0b0FQSShwYWdlKSwgbV9jbGll
bnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQudW5mb2N1cyh0b0FQSShwYWdlKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJVSUNsaWVudDo6cnVuSmF2YVNjcmlw
dEFsZXJ0KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFt
ZVByb3h5KiBmcmFtZSkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFdlYlVJQ2xpZW50OjpydW5K
YXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
CiAgICAgaWYgKCFtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQodG9BUEkocGFnZSksIHRvQVBJ
KG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAg
ICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2Uu
aW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiBi
b29sIFdlYlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkqIHBhZ2Us
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUpCkBAIC0xMzMsNyAr
MTMzLDcgQEAgYm9vbCBXZWJVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVBy
b3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UKICAgICBpZiAoIW1fY2xpZW50LnJ1bkph
dmFTY3JpcHRDb25maXJtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9j
bGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm0odG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1w
bCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICByZXR1cm4gbV9j
bGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm0odG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1w
bCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiBTdHJp
bmcgV2ViVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5KiBwYWdlLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFt
ZVByb3h5KiBmcmFtZSkKQEAgLTE0MSw3ICsxNDEsNyBAQCBTdHJpbmcgV2ViVUlDbGllbnQ6OnJ1
bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3Nh
ZwogICAgIGlmICghbV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdCkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCi0gICAgV2ViU3RyaW5nKiBzdHJpbmcgPSB0b0ltcGwobV9jbGllbnQucnVu
SmF2YVNjcmlwdFByb21wdCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQ
SShkZWZhdWx0VmFsdWUuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZv
KSk7CisgICAgV2ViU3RyaW5nKiBzdHJpbmcgPSB0b0ltcGwobV9jbGllbnQucnVuSmF2YVNjcmlw
dFByb21wdCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShkZWZhdWx0
VmFsdWUuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsK
ICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0xNTYsNyAr
MTU2LDcgQEAgdm9pZCBXZWJVSUNsaWVudDo6c2V0U3RhdHVzVGV4dChXZWJQYWdlUHJveHkqIHBh
Z2UsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBpZiAoIW1fY2xpZW50LnNldFN0YXR1c1RleHQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LnNldFN0YXR1c1RleHQodG9BUEkocGFn
ZSksIHRvQVBJKHRleHQuaW1wbCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGll
bnQuc2V0U3RhdHVzVGV4dCh0b0FQSShwYWdlKSwgdG9BUEkodGV4dC5pbXBsKCkpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYlVJQ2xpZW50Ojptb3VzZURpZE1vdmVP
dmVyRWxlbWVudChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRh
dGEmIGRhdGEsIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpCkBAIC0xNjQsMTYgKzE2NCwxNiBAQCB2b2lkIFdlYlVJQ2xpZW50Ojptb3VzZURpZE1v
dmVPdmVyRWxlbWVudChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkhpdFRlc3RSZQogICAg
IGlmICghbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQgJiYgIW1fY2xpZW50Lm1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX2NsaWVudC52ZXJzaW9uID09IGtXS1BhZ2VVSUNsaWVudEN1cnJlbnRW
ZXJzaW9uICYmICFtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCkKKyAgICBpZiAobV9j
bGllbnQuYmFzZS52ZXJzaW9uID09IGtXS1BhZ2VVSUNsaWVudEN1cnJlbnRWZXJzaW9uICYmICFt
X2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKCFtX2NsaWVudC52ZXJzaW9uKSB7Ci0gICAgICAgIG1fY2xpZW50Lm1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkocGFnZSksIHRvQVBJKG1vZGlm
aWVycyksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgaWYgKCFt
X2NsaWVudC5iYXNlLnZlcnNpb24pIHsKKyAgICAgICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0b0FQSShwYWdlKSwgdG9BUEkobW9kaWZp
ZXJzKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYkhpdFRlc3RSZXN1bHQ+IHdlYkhpdFRl
c3RSZXN1bHQgPSBXZWJIaXRUZXN0UmVzdWx0OjpjcmVhdGUoZGF0YSk7Ci0gICAgbV9jbGllbnQu
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJKHdlYkhpdFRlc3RSZXN1
bHQuZ2V0KCkpLCB0b0FQSShtb2RpZmllcnMpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNs
aWVudEluZm8pOworICAgIG1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHRvQVBJKHBh
Z2UpLCB0b0FQSSh3ZWJIaXRUZXN0UmVzdWx0LmdldCgpKSwgdG9BUEkobW9kaWZpZXJzKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBXZWJVSUNsaWVu
dDo6dW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKFdlYlBhZ2VQcm94eSogcGFnZSwgV0tQ
bHVnaW5VbmEKICAgICAgICAgICAgICAgICB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbi0+Z2V0PFdl
YlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtleSgpKSksCiAgICAgICAgICAgICAg
ICAgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdldDxXZWJTdHJpbmc+KHBsdWdpbkluZm9ybWF0
aW9uUGx1Z2luVVJMS2V5KCkpKSwKICAgICAgICAgICAgICAgICB0b0FQSShwbHVnaW5JbmZvcm1h
dGlvbi0+Z2V0PFdlYlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0
ZVVSTEtleSgpKSksCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAg
ICAgICAgICAgICAgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB9CiAKICAgICBpZiAo
bV9jbGllbnQudW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjEpCkBAIC0xOTYsMTQgKzE5NiwxNCBAQCB2b2lkIFdlYlVJQ2xpZW50Ojp1bmF2YWlsYWJs
ZVBsdWdpbkJ1dHRvbkNsaWNrZWQoV2ViUGFnZVByb3h5KiBwYWdlLCBXS1BsdWdpblVuYQogICAg
ICAgICAgICAgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdldDxXZWJTdHJpbmc+KHBsdWdpbklu
Zm9ybWF0aW9uTUlNRVR5cGVLZXkoKSkpLAogICAgICAgICAgICAgdG9BUEkocGx1Z2luSW5mb3Jt
YXRpb24tPmdldDxXZWJTdHJpbmc+KHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCkpKSwK
ICAgICAgICAgICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uLT5nZXQ8V2ViU3RyaW5nPihwbHVn
aW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KCkpKSwKLSAgICAgICAgICAg
IG1fY2xpZW50LmNsaWVudEluZm8pOworICAgICAgICAgICAgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKIAogICAgIGlmIChtX2NsaWVudC51bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQp
CiAgICAgICAgIG1fY2xpZW50LnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCgKICAgICAg
ICAgICAgIHRvQVBJKHBhZ2UpLAogICAgICAgICAgICAgcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFz
b24sCiAgICAgICAgICAgICB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbiksCi0gICAgICAgICAgICBt
X2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKQEAgLTIxNiw3
ICsyMTYsNyBAQCB2b2lkIFdlYlVJQ2xpZW50OjpkaWROb3RIYW5kbGVLZXlFdmVudChXZWJQYWdl
UHJveHkqIHBhZ2UsIGNvbnN0IE5hdGl2ZVdlYktleWJvYQogewogICAgIGlmICghbV9jbGllbnQu
ZGlkTm90SGFuZGxlS2V5RXZlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NsaWVudC5kaWRO
b3RIYW5kbGVLZXlFdmVudCh0b0FQSShwYWdlKSwgZXZlbnQubmF0aXZlRXZlbnQoKSwgbV9jbGll
bnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkTm90SGFuZGxlS2V5RXZlbnQodG9BUEko
cGFnZSksIGV2ZW50Lm5hdGl2ZUV2ZW50KCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9
CiAKIGJvb2wgV2ViVUlDbGllbnQ6OmltcGxlbWVudHNEaWROb3RIYW5kbGVXaGVlbEV2ZW50KCkg
Y29uc3QKQEAgLTIyOCw2MyArMjI4LDYzIEBAIHZvaWQgV2ViVUlDbGllbnQ6OmRpZE5vdEhhbmRs
ZVdoZWVsRXZlbnQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBOYXRpdmVXZWJXaGVlCiB7CiAg
ICAgaWYgKCFtX2NsaWVudC5kaWROb3RIYW5kbGVXaGVlbEV2ZW50KQogICAgICAgICByZXR1cm47
Ci0gICAgbV9jbGllbnQuZGlkTm90SGFuZGxlV2hlZWxFdmVudCh0b0FQSShwYWdlKSwgZXZlbnQu
bmF0aXZlRXZlbnQoKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkTm90
SGFuZGxlV2hlZWxFdmVudCh0b0FQSShwYWdlKSwgZXZlbnQubmF0aXZlRXZlbnQoKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogYm9vbCBXZWJVSUNsaWVudDo6dG9vbGJhcnNBcmVW
aXNpYmxlKFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICBpZiAoIW1fY2xpZW50LnRvb2xiYXJz
QXJlVmlzaWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fY2xpZW50LnRv
b2xiYXJzQXJlVmlzaWJsZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAg
cmV0dXJuIG1fY2xpZW50LnRvb2xiYXJzQXJlVmlzaWJsZSh0b0FQSShwYWdlKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKIAogfQogdm9pZCBXZWJVSUNsaWVudDo6c2V0VG9vbGJhcnNBcmVW
aXNpYmxlKFdlYlBhZ2VQcm94eSogcGFnZSwgYm9vbCB2aXNpYmxlKQogewogICAgIGlmICghbV9j
bGllbnQuc2V0VG9vbGJhcnNBcmVWaXNpYmxlKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jbGll
bnQuc2V0VG9vbGJhcnNBcmVWaXNpYmxlKHRvQVBJKHBhZ2UpLCB2aXNpYmxlLCBtX2NsaWVudC5j
bGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5zZXRUb29sYmFyc0FyZVZpc2libGUodG9BUEkocGFn
ZSksIHZpc2libGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIGJvb2wgV2ViVUlD
bGllbnQ6Om1lbnVCYXJJc1Zpc2libGUoV2ViUGFnZVByb3h5KiBwYWdlKQogewogICAgIGlmICgh
bV9jbGllbnQubWVudUJhcklzVmlzaWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0
dXJuIG1fY2xpZW50Lm1lbnVCYXJJc1Zpc2libGUodG9BUEkocGFnZSksIG1fY2xpZW50LmNsaWVu
dEluZm8pOworICAgIHJldHVybiBtX2NsaWVudC5tZW51QmFySXNWaXNpYmxlKHRvQVBJKHBhZ2Up
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYlVJQ2xpZW50OjpzZXRN
ZW51QmFySXNWaXNpYmxlKFdlYlBhZ2VQcm94eSogcGFnZSwgYm9vbCB2aXNpYmxlKQogewogICAg
IGlmICghbV9jbGllbnQuc2V0TWVudUJhcklzVmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fY2xpZW50LnNldE1lbnVCYXJJc1Zpc2libGUodG9BUEkocGFnZSksIHZpc2libGUsIG1fY2xp
ZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LnNldE1lbnVCYXJJc1Zpc2libGUodG9BUEko
cGFnZSksIHZpc2libGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIGJvb2wgV2Vi
VUlDbGllbnQ6OnN0YXR1c0JhcklzVmlzaWJsZShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7CiAgICAg
aWYgKCFtX2NsaWVudC5zdGF0dXNCYXJJc1Zpc2libGUpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIHJldHVybiBtX2NsaWVudC5zdGF0dXNCYXJJc1Zpc2libGUodG9BUEkocGFnZSksIG1fY2xp
ZW50LmNsaWVudEluZm8pOworICAgIHJldHVybiBtX2NsaWVudC5zdGF0dXNCYXJJc1Zpc2libGUo
dG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViVUlD
bGllbnQ6OnNldFN0YXR1c0JhcklzVmlzaWJsZShXZWJQYWdlUHJveHkqIHBhZ2UsIGJvb2wgdmlz
aWJsZSkKIHsKICAgICBpZiAoIW1fY2xpZW50LnNldFN0YXR1c0JhcklzVmlzaWJsZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fY2xpZW50LnNldFN0YXR1c0JhcklzVmlzaWJsZSh0b0FQSShwYWdl
KSwgdmlzaWJsZSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuc2V0U3RhdHVz
QmFySXNWaXNpYmxlKHRvQVBJKHBhZ2UpLCB2aXNpYmxlLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogfQogCiBib29sIFdlYlVJQ2xpZW50Ojppc1Jlc2l6YWJsZShXZWJQYWdlUHJveHkqIHBh
Z2UpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5pc1Jlc2l6YWJsZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgcmV0dXJuIG1fY2xpZW50LmlzUmVzaXphYmxlKHRvQVBJKHBhZ2UpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKKyAgICByZXR1cm4gbV9jbGllbnQuaXNSZXNpemFibGUodG9BUEkocGFn
ZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViVUlDbGllbnQ6OnNl
dElzUmVzaXphYmxlKFdlYlBhZ2VQcm94eSogcGFnZSwgYm9vbCByZXNpemFibGUpCiB7CiAgICAg
aWYgKCFtX2NsaWVudC5zZXRJc1Jlc2l6YWJsZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2xp
ZW50LnNldElzUmVzaXphYmxlKHRvQVBJKHBhZ2UpLCByZXNpemFibGUsIG1fY2xpZW50LmNsaWVu
dEluZm8pOworICAgIG1fY2xpZW50LnNldElzUmVzaXphYmxlKHRvQVBJKHBhZ2UpLCByZXNpemFi
bGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViVUlDbGllbnQ6OnNl
dFdpbmRvd0ZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgRmxvYXRSZWN0JiBmcmFtZSkK
QEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIFdlYlVJQ2xpZW50OjpzZXRXaW5kb3dGcmFtZShXZWJQ
YWdlUHJveHkqIHBhZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWUpCiAgICAgaWYgKCFtX2NsaWVu
dC5zZXRXaW5kb3dGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuc2V0V2lu
ZG93RnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7
CisgICAgbV9jbGllbnQuc2V0V2luZG93RnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogRmxvYXRSZWN0IFdlYlVJQ2xpZW50Ojp3
aW5kb3dGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UpCkBAIC0zMDAsNyArMzAwLDcgQEAgRmxvYXRS
ZWN0IFdlYlVJQ2xpZW50Ojp3aW5kb3dGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgaWYg
KCFtX2NsaWVudC5nZXRXaW5kb3dGcmFtZSkKICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwog
Ci0gICAgcmV0dXJuIHRvRmxvYXRSZWN0KG1fY2xpZW50LmdldFdpbmRvd0ZyYW1lKHRvQVBJKHBh
Z2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKSk7CisgICAgcmV0dXJuIHRvRmxvYXRSZWN0KG1fY2xp
ZW50LmdldFdpbmRvd0ZyYW1lKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
KTsKIH0KIAogYm9vbCBXZWJVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KCkgY29uc3QKQEAgLTMxMyw3ICszMTMsNyBAQCBib29sIFdlYlVJQ2xpZW50OjpydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmCiAgICAg
aWYgKCFtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgcmV0dXJuIG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xp
ZW50LmNsaWVudEluZm8pOworICAgIHJldHVybiBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYlVJQ2xpZW50OjpkaWRE
cmF3KFdlYlBhZ2VQcm94eSogcGFnZSkKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFdlYlVJQ2xp
ZW50OjpkaWREcmF3KFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICBpZiAoIW1fY2xpZW50LmRpZERy
YXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZERyYXcodG9BUEkocGFnZSks
IG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZERyYXcodG9BUEkocGFnZSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViVUlDbGllbnQ6OnBhZ2VE
aWRTY3JvbGwoV2ViUGFnZVByb3h5KiBwYWdlKQpAQCAtMzI5LDcgKzMyOSw3IEBAIHZvaWQgV2Vi
VUlDbGllbnQ6OnBhZ2VEaWRTY3JvbGwoV2ViUGFnZVByb3h5KiBwYWdlKQogICAgIGlmICghbV9j
bGllbnQucGFnZURpZFNjcm9sbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQucGFn
ZURpZFNjcm9sbCh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGll
bnQucGFnZURpZFNjcm9sbCh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
IH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFdlYlVJQ2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXVv
dGEoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VEaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5z
aWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1
cnJlbnREYXRhYmFzZVVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSkKQEAg
LTMzNyw3ICszMzcsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgV2ViVUlDbGllbnQ6OmV4Y2VlZGVk
RGF0YWJhc2VRdW90YShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYQogICAgIGlmICghbV9jbGll
bnQuZXhjZWVkZWREYXRhYmFzZVF1b3RhKQogICAgICAgICByZXR1cm4gY3VycmVudFF1b3RhOwog
Ci0gICAgcmV0dXJuIG1fY2xpZW50LmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh0b0FQSShwYWdlKSwg
dG9BUEkoZnJhbWUpLCB0b0FQSShvcmlnaW4pLCB0b0FQSShkYXRhYmFzZU5hbWUuaW1wbCgpKSwg
dG9BUEkoZGF0YWJhc2VEaXNwbGF5TmFtZS5pbXBsKCkpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRP
cmlnaW5Vc2FnZSwgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIG1fY2xpZW50
LmNsaWVudEluZm8pOworICAgIHJldHVybiBtX2NsaWVudC5leGNlZWRlZERhdGFiYXNlUXVvdGEo
dG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkob3JpZ2luKSwgdG9BUEkoZGF0YWJhc2VO
YW1lLmltcGwoKSksIHRvQVBJKGRhdGFiYXNlRGlzcGxheU5hbWUuaW1wbCgpKSwgY3VycmVudFF1
b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVz
YWdlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiBib29sIFdlYlVJQ2xpZW50Ojpy
dW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2Vi
T3BlblBhbmVsUGFyYW1ldGVycyogcGFyYW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eSogbGlzdGVuZXIpCkBAIC0zNDUsNyArMzQ1LDcgQEAgYm9vbCBXZWJVSUNsaWVudDo6
cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdl
Yk9wZW4KICAgICBpZiAoIW1fY2xpZW50LnJ1bk9wZW5QYW5lbCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgbV9jbGllbnQucnVuT3BlblBhbmVsKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFt
ZSksIHRvQVBJKHBhcmFtZXRlcnMpLCB0b0FQSShsaXN0ZW5lciksIG1fY2xpZW50LmNsaWVudElu
Zm8pOworICAgIG1fY2xpZW50LnJ1bk9wZW5QYW5lbCh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUp
LCB0b0FQSShwYXJhbWV0ZXJzKSwgdG9BUEkobGlzdGVuZXIpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNTQsNyArMzU0LDcgQEAgYm9vbCBX
ZWJVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChX
ZWJQYWdlUHJveHkqIHBhZ2UKICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1f
Y2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QodG9BUEko
cGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkob3JpZ2luKSwgdG9BUEkocGVybWlzc2lvblJlcXVl
c3QpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRv
QVBJKG9yaWdpbiksIHRvQVBJKHBlcm1pc3Npb25SZXF1ZXN0KSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzYzLDcgKzM2Myw3IEBAIGJvb2wg
V2ViVUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
KFdlYlBhZ2VQcm94eSogcGFnCiAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAot
ICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
KHRvQVBJKHBhZ2UpLCB0b0FQSShvcmlnaW4pLCB0b0FQSShwZXJtaXNzaW9uUmVxdWVzdCksIG1f
Y2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0KHRvQVBJKHBhZ2UpLCB0b0FQSShvcmlnaW4pLCB0b0FQSShw
ZXJtaXNzaW9uUmVxdWVzdCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTM3Miw3ICszNzIsNyBAQCBmbG9hdCBXZWJVSUNsaWVudDo6aGVhZGVy
SGVpZ2h0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUpCiAgICAgaWYg
KCFtX2NsaWVudC5oZWFkZXJIZWlnaHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJu
IG1fY2xpZW50LmhlYWRlckhlaWdodCh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKKyAgICByZXR1cm4gbV9jbGllbnQuaGVhZGVySGVpZ2h0KHRvQVBJKHBh
Z2UpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIGZsb2F0
IFdlYlVJQ2xpZW50Ojpmb290ZXJIZWlnaHQoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVBy
b3h5KiBmcmFtZSkKQEAgLTM4MCw3ICszODAsNyBAQCBmbG9hdCBXZWJVSUNsaWVudDo6Zm9vdGVy
SGVpZ2h0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUpCiAgICAgaWYg
KCFtX2NsaWVudC5mb290ZXJIZWlnaHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJu
IG1fY2xpZW50LmZvb3RlckhlaWdodCh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKKyAgICByZXR1cm4gbV9jbGllbnQuZm9vdGVySGVpZ2h0KHRvQVBJKHBh
Z2UpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQg
V2ViVUlDbGllbnQ6OmRyYXdIZWFkZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5
KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0KQpAQCAtMzg4LDcgKzM4OCw3
IEBAIHZvaWQgV2ViVUlDbGllbnQ6OmRyYXdIZWFkZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJG
cmFtZVByb3h5KiBmcmFtZSwgY29uc3QgV2ViCiAgICAgaWYgKCFtX2NsaWVudC5kcmF3SGVhZGVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5kcmF3SGVhZGVyKHRvQVBJKHBhZ2Up
LCB0b0FQSShmcmFtZSksIHRvQVBJKHJlY3QpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBt
X2NsaWVudC5kcmF3SGVhZGVyKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHJlY3Qp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYlVJQ2xpZW50OjpkcmF3
Rm9vdGVyKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIFdlYlVJQ2xp
ZW50OjpkcmF3Rm9vdGVyKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUs
IGNvbnN0IFdlYgogICAgIGlmICghbV9jbGllbnQuZHJhd0Zvb3RlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9jbGllbnQuZHJhd0Zvb3Rlcih0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0
b0FQSShyZWN0KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZHJhd0Zvb3Rl
cih0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShyZWN0KSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJVSUNsaWVudDo6cHJpbnRGcmFtZShXZWJQYWdlUHJv
eHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lKQpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQg
V2ViVUlDbGllbnQ6OnByaW50RnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5
KiBmcmFtZSkKICAgICBpZiAoIW1fY2xpZW50LnByaW50RnJhbWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY2xpZW50LnByaW50RnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQucHJpbnRGcmFtZSh0b0FQSShwYWdlKSwg
dG9BUEkoZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiBib29sIFdlYlVJ
Q2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBXZWJV
SUNsaWVudDo6cnVuTW9kYWwoV2ViUGFnZVByb3h5KiBwYWdlKQogICAgIGlmICghbV9jbGllbnQu
cnVuTW9kYWwpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LnJ1bk1vZGFsKHRvQVBJ
KHBhZ2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5ydW5Nb2RhbCh0b0FQ
SShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJVSUNsaWVu
dDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIFdlYkRhdGEqIGRhdGEpCkBAIC00MjUs
NyArNDI1LDcgQEAgdm9pZCBXZWJVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0Zv
bGRlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmkKICAgICBpZiAoIW1fY2xpZW50LnNh
dmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
Y2xpZW50LnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIodG9BUEkocGFnZSksIHRvQVBJ
KHN1Z2dlc3RlZEZpbGVuYW1lLmltcGwoKSksIHRvQVBJKG1pbWVUeXBlLmltcGwoKSksIHRvVVJM
UmVmKG9yaWdpbmF0aW5nVVJMU3RyaW5nLmltcGwoKSksIHRvQVBJKGRhdGEpLCBtX2NsaWVudC5j
bGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5zYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVy
KHRvQVBJKHBhZ2UpLCB0b0FQSShzdWdnZXN0ZWRGaWxlbmFtZS5pbXBsKCkpLCB0b0FQSShtaW1l
VHlwZS5pbXBsKCkpLCB0b1VSTFJlZihvcmlnaW5hdGluZ1VSTFN0cmluZy5pbXBsKCkpLCB0b0FQ
SShkYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogYm9vbCBXZWJVSUNsaWVu
dDo6c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdChXZWJQYWdlUHJveHkqIHBhZ2UpCkBAIC00MzMs
NyArNDMzLDcgQEAgYm9vbCBXZWJVSUNsaWVudDo6c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdChX
ZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgaWYgKCFtX2NsaWVudC5zaG91bGRJbnRlcnJ1cHRKYXZh
U2NyaXB0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9jbGllbnQuc2hv
dWxkSW50ZXJydXB0SmF2YVNjcmlwdCh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7
CisgICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZEludGVycnVwdEphdmFTY3JpcHQodG9BUEkocGFn
ZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKQEAgLTQ0Miw3ICs0NDIsNyBAQCBib29sIFdlYlVJQ2xpZW50OjpzaG93Q29sb3JQ
aWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIGluaXRpYWxDb2xvcgogICAg
IGlmICghbV9jbGllbnQuc2hvd0NvbG9yUGlja2VyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBtX2NsaWVudC5zaG93Q29sb3JQaWNrZXIodG9BUEkocGFnZSksIHRvQVBJKGluaXRpYWxD
b2xvci5pbXBsKCkpLCB0b0FQSShsaXN0ZW5lciksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAg
IG1fY2xpZW50LnNob3dDb2xvclBpY2tlcih0b0FQSShwYWdlKSwgdG9BUEkoaW5pdGlhbENvbG9y
LmltcGwoKSksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDUxLDcgKzQ1MSw3IEBAIGJvb2wgV2ViVUlDbGllbnQ6
OmhpZGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgaWYgKCFtX2NsaWVudC5o
aWRlQ29sb3JQaWNrZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fY2xpZW50Lmhp
ZGVDb2xvclBpY2tlcih0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9j
bGllbnQuaGlkZUNvbG9yUGlja2VyKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJVSUNsaWVudC5oCmluZGV4IDA5MTc4OWJmYzg4NmYwZjA2MTAxNGIzNWEyOTBmNDFkNTM0ZDYx
MjkuLmJiYjIyODMxNDEzYWRhZjU5ZDk1MmRlMGM4ZTY5MjQzMzJkMWU0MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAordGVtcGxhdGU8
PiBzdHJ1Y3QgQVBJOjpDbGllbnRUcmFpdHM8V0tQYWdlVUlDbGllbnRCYXNlPiB7CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZVVJQ2xpZW50VjAsIFdLUGFnZVVJQ2xpZW50VjEsIFdLUGFn
ZVVJQ2xpZW50VjI+IFZlcnNpb25zOworfTsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIEZsb2F0UmVjdDsKICAgICBjbGFzcyBJbnRTaXplOwpAQCAtNTUsNyArNTksNyBAQCBjbGFz
cyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiAKLWNsYXNzIFdlYlVJQ2xpZW50IDogcHVibGljIEFQ
SUNsaWVudDxXS1BhZ2VVSUNsaWVudCwga1dLUGFnZVVJQ2xpZW50Q3VycmVudFZlcnNpb24+IHsK
K2NsYXNzIFdlYlVJQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZVVJQ2xpZW50QmFz
ZT4gewogcHVibGljOgogICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQYWdl
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgV2ViRXZlbnQ6Ok1vZGlmaWVycywgV2ViTW91c2VFdmVu
dDo6QnV0dG9uKTsKICAgICB2b2lkIHNob3dQYWdlKFdlYlBhZ2VQcm94eSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5k
ZXggNDBlNTA0Yzg0OTkwMGU0Yjc3OGY5MDM1MWEwNjE1ZmZhY2I3YzYzMi4uMmM5NjUwZmE4YzI5
OTJkY2M0YTRhMmE4MDA2ZWI1ZTQzMDkzNjg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC00NTAsNyArNDUwLDcg
QEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0
b3JQYWdlKCkKICAgICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkCiAg
ICAgfTsKIAotICAgIGluc3BlY3RvclBhZ2UtPmluaXRpYWxpemVVSUNsaWVudCgmdWlDbGllbnQp
OworICAgIGluc3BlY3RvclBhZ2UtPmluaXRpYWxpemVVSUNsaWVudChyZWludGVycHJldF9jYXN0
PGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSo+KCZ1aUNsaWVudCkpOwogCiAgICAgcmV0dXJuIGlu
c3BlY3RvclBhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IGIxNWFkYTlmZGU1MTg2
ZmY4MzNhNzMxZGQ1MTlmNmZkZmZlMWI4Y2EuLjkzZjMwNGJjNDQ4NTY3YTI4MjEyN2U5NzAyZjg0
YzQ1MjM4YjJiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCkBAIC00MCw5ICs0MCw5IEBAIFdL
VHlwZUlEIFdLQnVuZGxlR2V0VHlwZUlEKCkKICAgICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5k
bGU6OkFQSVR5cGUpOwogfQogCi12b2lkIFdLQnVuZGxlU2V0Q2xpZW50KFdLQnVuZGxlUmVmIGJ1
bmRsZVJlZiwgV0tCdW5kbGVDbGllbnQgKiB3a0NsaWVudCkKK3ZvaWQgV0tCdW5kbGVTZXRDbGll
bnQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZUNsaWVudCAqd2tDbGllbnQpCiB7Ci0g
ICAgdG9JbXBsKGJ1bmRsZVJlZiktPmluaXRpYWxpemVDbGllbnQod2tDbGllbnQpOworICAgIHRv
SW1wbChidW5kbGVSZWYpLT5pbml0aWFsaXplQ2xpZW50KHJlaW50ZXJwcmV0X2Nhc3Q8V0tCdW5k
bGVDbGllbnRCYXNlKj4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBvc3RNZXNzYWdl
KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWVSZWYsIFdLVHlw
ZVJlZiBtZXNzYWdlQm9keVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCBk
ZGQyMDI1NTJiMzlkMmFmM2U4NTkzMmIxNGFjNThhNTMyYmJlOTBjLi5hMzZhNDdjOTQ3NjA2YjAy
N2MyNmI0ZGRmYzA0MzVlNmNkNDVkZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3Bw
CkBAIC02NCw0NCArNjQsNDQgQEAgV0tUeXBlSUQgV0tCdW5kbGVQYWdlR2V0VHlwZUlEKCkKIHZv
aWQgV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYsIFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50KiB3a0NsaWVudCkKIHsKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKLSAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVJbmplY3Rl
ZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHdrQ2xpZW50KTsKKyAgICB0b0ltcGwocGFnZVJlZikt
PmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHJlaW50ZXJwcmV0X2Nh
c3Q8V0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKj4od2tDbGllbnQpKTsKICNlbmRp
ZgogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldEVkaXRvckNsaWVudChXS0J1bmRsZVBhZ2VSZWYg
cGFnZVJlZiwgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50KiB3a0NsaWVudCkKIHsKLSAgICB0b0lt
cGwocGFnZVJlZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCh3a0NsaWVu
dCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQocmVpbnRlcnByZXRfY2FzdDxXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRCYXNlKj4od2tD
bGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KFdLQnVuZGxlUGFn
ZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50KiB3a0NsaWVudCkKIHsKLSAgICB0
b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQod2tDbGll
bnQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRm9ybUNs
aWVudChyZWludGVycHJldF9jYXN0PFdLQnVuZGxlUGFnZUZvcm1DbGllbnRCYXNlKj4od2tDbGll
bnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQqIHdrQ2xpZW50KQogewot
ICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50
KHdrQ2xpZW50KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRs
ZUxvYWRlckNsaWVudChyZWludGVycHJldF9jYXN0PFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJh
c2UqPih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFJlc291cmNlTG9hZENs
aWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xp
ZW50KiB3a0NsaWVudCkKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVJbmplY3Rl
ZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudCh3a0NsaWVudCk7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5pbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQocmVpbnRlcnByZXRf
Y2FzdDxXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnRCYXNlKj4od2tDbGllbnQpKTsKIH0K
IAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYsIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudCogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKHBh
Z2VSZWYpLT5pbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQod2tDbGllbnQpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50
KHJlaW50ZXJwcmV0X2Nhc3Q8V0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50QmFzZSo+KHdrQ2xpZW50
KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBh
Z2VSZWYsIFdLQnVuZGxlUGFnZVVJQ2xpZW50KiB3a0NsaWVudCkKIHsKLSAgICB0b0ltcGwocGFn
ZVJlZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHdrQ2xpZW50KTsKKyAgICB0
b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHJlaW50ZXJw
cmV0X2Nhc3Q8V0tCdW5kbGVQYWdlVUlDbGllbnRCYXNlKj4od2tDbGllbnQpKTsKIH0KIAogdm9p
ZCBXS0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
LCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50KiB3a0NsaWVudCkKIHsKICNpZiBkZWZpbmVk
KEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJCi0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KHdr
Q2xpZW50KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUZ1
bGxTY3JlZW5DbGllbnQocmVpbnRlcnByZXRfY2FzdDxXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xp
ZW50QmFzZSo+KHdrQ2xpZW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsK
ICAgICBVTlVTRURfUEFSQU0od2tDbGllbnQpOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgV0tC
dW5kbGVQYWdlRGlkRXhpdEZ1bGxTY3JlZW4oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiAKIHZv
aWQgV0tCdW5kbGVQYWdlU2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KiBjbGllbnQpCiB7
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudChjbGllbnQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUlu
amVjdGVkQnVuZGxlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQocmVpbnRlcnByZXRfY2FzdDxXS0J1
bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudEJhc2UqPihjbGllbnQpKTsKIH0KIAogV0tC
dW5kbGVQYWdlR3JvdXBSZWYgV0tCdW5kbGVQYWdlR2V0UGFnZUdyb3VwKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBlZTczOTA1Y2YyMDgxNjY0NTQ1
NTk4N2M5YWIyZDY0YmM3MTE4N2NiLi5iNDU3YzdlZmM1MzdjMDQ2MzM2MGIyODUwNjhmYmZiYmUy
ZTQ4ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtOTQsNyArOTQsNyBAQCBJbmplY3Rl
ZEJ1bmRsZTo6fkluamVjdGVkQnVuZGxlKCkKIHsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZTo6
aW5pdGlhbGl6ZUNsaWVudChXS0J1bmRsZUNsaWVudCogY2xpZW50KQordm9pZCBJbmplY3RlZEJ1
bmRsZTo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0J1bmRsZUNsaWVudEJhc2UqIGNsaWVudCkK
IHsKICAgICBtX2NsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
aW5kZXggNTVmM2Q4Y2NkM2ZiZDQ3MDM2NzlmY2YzZDZjYzg1YmI5NDI3NjE3Zi4uODU5ZTMwZDI0
NDVkOTg4MDJlNTdjMjZkZWQ0MjUzNzhiY2QwYzhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAt
ODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTYW5kYm94RXh0ZW5zaW9uKFBhc3NS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gc2FuZGJveEV4dGVuc2lvbikgeyBtX3NhbmRib3hFeHRl
bnNpb24gPSBzYW5kYm94RXh0ZW5zaW9uOyB9CiAKICAgICAvLyBBUEkKLSAgICB2b2lkIGluaXRp
YWxpemVDbGllbnQoV0tCdW5kbGVDbGllbnQqKTsKKyAgICB2b2lkIGluaXRpYWxpemVDbGllbnQo
Y29uc3QgV0tCdW5kbGVDbGllbnRCYXNlKik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBT
dHJpbmcmLCBBUEk6Ok9iamVjdCopOwogICAgIHZvaWQgcG9zdFN5bmNocm9ub3VzTWVzc2FnZShj
b25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCosIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVybkRh
dGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IGUwZTZjMmI4NzBm
ZjYwYTcxM2UzMmVhZjYyZDNhODQxY2UyNTY0ZjUuLjRlMjE1ODI2ZWFkMmI2Nzg0YzYyMWZhMThj
ZjA4YjFhM2Y3YmNmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCkBAIC0z
NSw3ICszNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZENyZWF0ZVBhZ2UoSW5q
ZWN0ZWRCdW5kbGUqIGJ1bmRsZSwgV2ViUGFnZSogcGFnZSkKICAgICBpZiAoIW1fY2xpZW50LmRp
ZENyZWF0ZVBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZENyZWF0ZVBh
Z2UodG9BUEkoYnVuZGxlKSwgdG9BUEkocGFnZSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAg
IG1fY2xpZW50LmRpZENyZWF0ZVBhZ2UodG9BUEkoYnVuZGxlKSwgdG9BUEkocGFnZSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVDbGllbnQ6Ondp
bGxEZXN0cm95UGFnZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBXZWJQYWdlKiBwYWdlKQpAQCAt
NDMsNyArNDMsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlQ2xpZW50Ojp3aWxsRGVzdHJveVBhZ2Uo
SW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSwgV2ViUGFnZSogcGFnZQogICAgIGlmICghbV9jbGllbnQu
d2lsbERlc3Ryb3lQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC53aWxsRGVz
dHJveVBhZ2UodG9BUEkoYnVuZGxlKSwgdG9BUEkocGFnZSksIG1fY2xpZW50LmNsaWVudEluZm8p
OworICAgIG1fY2xpZW50LndpbGxEZXN0cm95UGFnZSh0b0FQSShidW5kbGUpLCB0b0FQSShwYWdl
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZUNs
aWVudDo6ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBXZWJQ
YWdlR3JvdXBQcm94eSogcGFnZUdyb3VwKQpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIEluamVjdGVk
QnVuZGxlQ2xpZW50OjpkaWRJbml0aWFsaXplUGFnZUdyb3VwKEluamVjdGVkQnVuZGxlKiBidW5k
bGUsIFdlYlBhZwogICAgIGlmICghbV9jbGllbnQuZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cCh0b0FQ
SShidW5kbGUpLCB0b0FQSShwYWdlR3JvdXApLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBt
X2NsaWVudC5kaWRJbml0aWFsaXplUGFnZUdyb3VwKHRvQVBJKGJ1bmRsZSksIHRvQVBJKHBhZ2VH
cm91cCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5k
bGVDbGllbnQ6OmRpZFJlY2VpdmVNZXNzYWdlKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKQEAgLTU5LDcg
KzU5LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSW5q
ZWN0ZWRCdW5kbGUqIGJ1bmRsZSwgY29uc3QgU3RyaW4KICAgICBpZiAoIW1fY2xpZW50LmRpZFJl
Y2VpdmVNZXNzYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZl
TWVzc2FnZSh0b0FQSShidW5kbGUpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSSht
ZXNzYWdlQm9keSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVNZXNzYWdlKHRvQVBJKGJ1bmRsZSksIHRvQVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRvQVBJ
KG1lc3NhZ2VCb2R5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJbmpl
Y3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoSW5qZWN0ZWRCdW5kbGUq
IGJ1bmRsZSwgV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBX
ZWJQYQogICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKHRvQVBJKGJ1
bmRsZSksIHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSShtZXNz
YWdlQm9keSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVN
ZXNzYWdlVG9QYWdlKHRvQVBJKGJ1bmRsZSksIHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlTmFt
ZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdlQm9keSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5o
CmluZGV4IDc3ODVkYTU2MzBmNWJmMjI4MjYzYWZmMjZkNmU1MDRlOTcyMjgyMmEuLjg2ZWY3ZTI4
ZWQ1YmIyMDc3ZDMyNDNiOTk3ZTU5ZmFmMDNjODZhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
Q2xpZW50LmgKQEAgLTMwLDYgKzMwLDEwIEBACiAjaW5jbHVkZSAiV0tCdW5kbGUuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBUEk6OkNsaWVudFRyYWl0
czxXS0J1bmRsZUNsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVD
bGllbnRWMCwgV0tCdW5kbGVDbGllbnRWMT4gVmVyc2lvbnM7Cit9OworCiBuYW1lc3BhY2UgQVBJ
IHsKIGNsYXNzIE9iamVjdDsKIH0KQEAgLTQwLDcgKzQ0LDcgQEAgY2xhc3MgSW5qZWN0ZWRCdW5k
bGU7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CiAKLWNsYXNzIElu
amVjdGVkQnVuZGxlQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1bmRsZUNsaWVudCwga1dL
QnVuZGxlQ2xpZW50Q3VycmVudFZlcnNpb24+IHsKK2NsYXNzIEluamVjdGVkQnVuZGxlQ2xpZW50
IDogcHVibGljIEFQSTo6Q2xpZW50PFdLQnVuZGxlQ2xpZW50QmFzZT4gewogcHVibGljOgogICAg
IHZvaWQgZGlkQ3JlYXRlUGFnZShJbmplY3RlZEJ1bmRsZSosIFdlYlBhZ2UqKTsKICAgICB2b2lk
IHdpbGxEZXN0cm95UGFnZShJbmplY3RlZEJ1bmRsZSosIFdlYlBhZ2UqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXgg
ZTE1MWM0NWM1MDY4NjI4MmJlYThjYTY2ODQyYWNkZWVmNTkwMWMzYi4uMzYyMzM4NzRkYjRiODMz
OTRhOTg1Yzk0ZWEwNmVhYmE3NGQ4MmI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgYm9v
bCBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21E
ZWZhdWx0SXRlbXMoV2ViUGFnZSoKIAogICAgIFdLQXJyYXlSZWYgbmV3TWVudVdLID0gMDsKICAg
ICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOwotICAgIG1fY2xpZW50LmdldENvbnRleHRN
ZW51RnJvbURlZmF1bHRNZW51KHRvQVBJKHBhZ2UpLCB0b0FQSShoaXRUZXN0UmVzdWx0KSwgdG9B
UEkoQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShkZWZhdWx0TWVudUl0ZW1zKSkuZ2V0KCkp
LCAmbmV3TWVudVdLLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAg
IG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbURlZmF1bHRNZW51KHRvQVBJKHBhZ2UpLCB0b0FQ
SShoaXRUZXN0UmVzdWx0KSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShkZWZh
dWx0TWVudUl0ZW1zKSkuZ2V0KCkpLCAmbmV3TWVudVdLLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFycmF5ID0gYWRv
cHRSZWYodG9JbXBsKG5ld01lbnVXSykpOwogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBs
KHVzZXJEYXRhVG9QYXNzKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggZWNkZmQ3YTA4YmY4ODkyZTMzZDQyMDJh
ZWU5OTA1ZGVmM2I3NmI0Ni4uMTYwMGE2ZGQwOGM0MDZhMTkxMzAzNGE5MWNmOTllOTVjOTJkODgz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQuaApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFQSTo6Q2xpZW50VHJh
aXRzPFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZT4geworICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudFYwPiBWZXJzaW9uczsKK307CisK
IG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogfQpAQCAtNDYsNyArNTAsNyBAQCBjbGFz
cyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW1E
YXRhOwogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1l
bnVDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
LCBrV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRDdXJyZW50VmVyc2lvbj4geworY2xhc3Mg
SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8
V0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlPiB7CiBwdWJsaWM6CiAgICAgYm9vbCBn
ZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJQYWdlKiwgSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0KiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBkZWZhdWx0
TWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBuZXdNZW51LCBSZWZQdHI8QVBJ
OjpPYmplY3Q+JiB1c2VyRGF0YSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNwcAppbmRleCA2ZjI2NGNi
NjJhMGFhODQwNWMyM2U4MjBjZjc5NTRhNDE2YjkyODdhLi4wNmZjYzVhNjQ2ODFlMWQ1NjhiN2M1
ZjE1MGJiZjVmODU1MDE5YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNwcApAQCAtMzUsNyArMzUsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Ojpsb2dEaWFn
bm9zdGljTWVzc2FnZShXZWJQYWdlKiBwYQogewogICAgIGlmICghbV9jbGllbnQubG9nRGlhZ25v
c3RpY01lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NsaWVudC5sb2dEaWFnbm9zdGlj
TWVzc2FnZSh0b0FQSShwYWdlKSwgdG9Db3BpZWRBUEkobWVzc2FnZSksIHRvQ29waWVkQVBJKGRl
c2NyaXB0aW9uKSwgdG9Db3BpZWRBUEkoc3VjY2VzcyksIG1fY2xpZW50LmNsaWVudEluZm8pOwor
ICAgIG1fY2xpZW50LmxvZ0RpYWdub3N0aWNNZXNzYWdlKHRvQVBJKHBhZ2UpLCB0b0NvcGllZEFQ
SShtZXNzYWdlKSwgdG9Db3BpZWRBUEkoZGVzY3JpcHRpb24pLCB0b0NvcGllZEFQSShzdWNjZXNz
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCmluZGV4
IGQxYjE2YmU5ODA1NTYyNmE1ZjRlNWY5M2Y4YjY0MTVmNTY0YjNhODMuLmE5Mzg4OGU2NDYwMjA2
MzRmOWFmZmE1M2YwYzIzNTFhMDQ4Njc3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKQEAgLTMxLDEzICsz
MSwxNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFQSTo6Q2xpZW50VHJhaXRzPFdLQnVu
ZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50QmFzZT4geworICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxXS0J1bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudFYwPiBWZXJzaW9uczsKK307
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQ7CiBjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOwogY2xhc3MgV2ViUGFnZTsKIAotY2xh
c3MgSW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgOiBwdWJsaWMgQVBJ
Q2xpZW50PFdLQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LCBrV0tCdW5kbGVQYWdl
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnRDdXJyZW50VmVyc2lvbj4geworY2xhc3MgSW5qZWN0ZWRC
dW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tC
dW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnRCYXNlPiB7CiBwdWJsaWM6CiAgICAgdm9p
ZCBsb2dEaWFnbm9zdGljTWVzc2FnZShXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHN1Y2Nlc3MpOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCBk
NmE2Nzg5ODFlZTZjZTFiYWMzM2MxOWI5MzZkZTZkNWJjMDk1ZjdmLi4xMGM5NTFkZTRlZTBhMjMz
YzA1YjRkZWU5YmMzNTFjMWQ0MmQzYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRCZWdpbkVkaXRpbmcoV2ViUGFnZSogcGFnZSwg
UmFuZ2UqIHJhCiB7CiAgICAgaWYgKG1fY2xpZW50LnNob3VsZEJlZ2luRWRpdGluZykgewogICAg
ICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSBJbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShyYW5nZSk7Ci0gICAgICAgIHJldHVy
biBtX2NsaWVudC5zaG91bGRCZWdpbkVkaXRpbmcodG9BUEkocGFnZSksIHRvQVBJKHJhbmdlSGFu
ZGxlLmdldCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgICAgIHJldHVybiBtX2NsaWVu
dC5zaG91bGRCZWdpbkVkaXRpbmcodG9BUEkocGFnZSksIHRvQVBJKHJhbmdlSGFuZGxlLmdldCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC01Miw3ICs1Miw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojpz
aG91bGRFbmRFZGl0aW5nKFdlYlBhZ2UqIHBhZ2UsIFJhbmdlKiByYW5nCiB7CiAgICAgaWYgKG1f
Y2xpZW50LnNob3VsZEVuZEVkaXRpbmcpIHsKICAgICAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU+IHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0
T3JDcmVhdGUocmFuZ2UpOwotICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkRW5kRWRpdGlu
Zyh0b0FQSShwYWdlKSwgdG9BUEkocmFuZ2VIYW5kbGUuZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZEVuZEVkaXRpbmcodG9BUEkocGFn
ZSksIHRvQVBJKHJhbmdlSGFuZGxlLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
ICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC02Miw3ICs2Miw3IEBAIGJvb2wgSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKFdlYlBhZ2UqIHBhZ2Us
IE5vZGUqIG5vZGUsCiAgICAgaWYgKG1fY2xpZW50LnNob3VsZEluc2VydE5vZGUpIHsKICAgICAg
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IEluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUobm9kZSk7CiAgICAgICAgIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiByYW5nZVRvUmVwbGFjZUhhbmRsZSA9IEluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKHJhbmdlVG9SZXBsYWNlKTsKLSAgICAgICAgcmV0
dXJuIG1fY2xpZW50LnNob3VsZEluc2VydE5vZGUodG9BUEkocGFnZSksIHRvQVBJKG5vZGVIYW5k
bGUuZ2V0KCkpLCB0b0FQSShyYW5nZVRvUmVwbGFjZUhhbmRsZS5nZXQoKSksIHRvQVBJKGFjdGlv
biksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxk
SW5zZXJ0Tm9kZSh0b0FQSShwYWdlKSwgdG9BUEkobm9kZUhhbmRsZS5nZXQoKSksIHRvQVBJKHJh
bmdlVG9SZXBsYWNlSGFuZGxlLmdldCgpKSwgdG9BUEkoYWN0aW9uKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC03MSw3ICs3MSw3IEBA
IGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnRUZXh0KFdl
YlBhZ2UqIHBhZ2UsIFN0cmluZ0ltcGwqCiB7CiAgICAgaWYgKG1fY2xpZW50LnNob3VsZEluc2Vy
dFRleHQpIHsKICAgICAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdl
VG9SZXBsYWNlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUo
cmFuZ2VUb1JlcGxhY2UpOwotICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkSW5zZXJ0VGV4
dCh0b0FQSShwYWdlKSwgdG9BUEkodGV4dCksIHRvQVBJKHJhbmdlVG9SZXBsYWNlSGFuZGxlLmdl
dCgpKSwgdG9BUEkoYWN0aW9uKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgICAgIHJldHVy
biBtX2NsaWVudC5zaG91bGRJbnNlcnRUZXh0KHRvQVBJKHBhZ2UpLCB0b0FQSSh0ZXh0KSwgdG9B
UEkocmFuZ2VUb1JlcGxhY2VIYW5kbGUuZ2V0KCkpLCB0b0FQSShhY3Rpb24pLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTgwLDcgKzgw
LDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZERlbGV0ZVJh
bmdlKFdlYlBhZ2UqIHBhZ2UsIFJhbmdlKiByYW4KIHsKICAgICBpZiAobV9jbGllbnQuc2hvdWxk
RGVsZXRlUmFuZ2UpIHsKICAgICAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+
IHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUocmFu
Z2UpOwotICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkRGVsZXRlUmFuZ2UodG9BUEkocGFn
ZSksIHRvQVBJKHJhbmdlSGFuZGxlLmdldCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAg
ICAgIHJldHVybiBtX2NsaWVudC5zaG91bGREZWxldGVSYW5nZSh0b0FQSShwYWdlKSwgdG9BUEko
cmFuZ2VIYW5kbGUuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViUGFnZSogcGFnZSwg
UmEKICAgICBpZiAobV9jbGllbnQuc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSkgewogICAgICAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gZnJvbVJhbmdlSGFuZGxlID0gSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUoZnJvbVJhbmdlKTsKICAgICAgICAg
UmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHRvUmFuZ2VIYW5kbGUgPSBJbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZSh0b1JhbmdlKTsKLSAgICAgICAgcmV0dXJu
IG1fY2xpZW50LnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UodG9BUEkocGFnZSksIHRvQVBJKGZy
b21SYW5nZUhhbmRsZS5nZXQoKSksIHRvQVBJKHRvUmFuZ2VIYW5kbGUuZ2V0KCkpLCB0b0FQSShh
ZmZpbml0eSksIHN0aWxsU2VsZWN0aW5nLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAgICAg
cmV0dXJuIG1fY2xpZW50LnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UodG9BUEkocGFnZSksIHRv
QVBJKGZyb21SYW5nZUhhbmRsZS5nZXQoKSksIHRvQVBJKHRvUmFuZ2VIYW5kbGUuZ2V0KCkpLCB0
b0FQSShhZmZpbml0eSksIHN0aWxsU2VsZWN0aW5nLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk5LDcgKzk5LDcgQEAgYm9vbCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoV2ViUGFnZSogcGFn
ZSwgQ1NTU3R5bGVEZWMKIHsKICAgICBpZiAobV9jbGllbnQuc2hvdWxkQXBwbHlTdHlsZSkgewog
ICAgICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSBJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShyYW5nZSk7Ci0gICAgICAgIHJl
dHVybiBtX2NsaWVudC5zaG91bGRBcHBseVN0eWxlKHRvQVBJKHBhZ2UpLCB0b0FQSShzdHlsZSks
IHRvQVBJKHJhbmdlSGFuZGxlLmdldCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgICAg
IHJldHVybiBtX2NsaWVudC5zaG91bGRBcHBseVN0eWxlKHRvQVBJKHBhZ2UpLCB0b0FQSShzdHls
ZSksIHRvQVBJKHJhbmdlSGFuZGxlLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
ICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDcsMzIgKzEwNywzMiBAQCBib29sIElu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShXZWJQYWdlKiBw
YWdlLCBDU1NTdHlsZURlYwogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmRp
ZEJlZ2luRWRpdGluZyhXZWJQYWdlKiBwYWdlLCBTdHJpbmdJbXBsKiBub3RpZmljYXRpb25OYW1l
KQogewogICAgIGlmIChtX2NsaWVudC5kaWRCZWdpbkVkaXRpbmcpCi0gICAgICAgIG1fY2xpZW50
LmRpZEJlZ2luRWRpdGluZyh0b0FQSShwYWdlKSwgdG9BUEkobm90aWZpY2F0aW9uTmFtZSksIG1f
Y2xpZW50LmNsaWVudEluZm8pOworICAgICAgICBtX2NsaWVudC5kaWRCZWdpbkVkaXRpbmcodG9B
UEkocGFnZSksIHRvQVBJKG5vdGlmaWNhdGlvbk5hbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6ZGlkRW5kRWRp
dGluZyhXZWJQYWdlKiBwYWdlLCBTdHJpbmdJbXBsKiBub3RpZmljYXRpb25OYW1lKQogewogICAg
IGlmIChtX2NsaWVudC5kaWRFbmRFZGl0aW5nKQotICAgICAgICBtX2NsaWVudC5kaWRFbmRFZGl0
aW5nKHRvQVBJKHBhZ2UpLCB0b0FQSShub3RpZmljYXRpb25OYW1lKSwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CisgICAgICAgIG1fY2xpZW50LmRpZEVuZEVkaXRpbmcodG9BUEkocGFnZSksIHRvQVBJ
KG5vdGlmaWNhdGlvbk5hbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6ZGlkQ2hhbmdlKFdlYlBhZ2UqIHBhZ2Us
IFN0cmluZ0ltcGwqIG5vdGlmaWNhdGlvbk5hbWUpCiB7CiAgICAgaWYgKG1fY2xpZW50LmRpZENo
YW5nZSkKLSAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlKHRvQVBJKHBhZ2UpLCB0b0FQSShub3Rp
ZmljYXRpb25OYW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgICAgIG1fY2xpZW50LmRp
ZENoYW5nZSh0b0FQSShwYWdlKSwgdG9BUEkobm90aWZpY2F0aW9uTmFtZSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
OjpkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSogcGFnZSwgU3RyaW5nSW1wbCogbm90aWZpY2F0
aW9uTmFtZSkKIHsKICAgICBpZiAobV9jbGllbnQuZGlkQ2hhbmdlU2VsZWN0aW9uKQotICAgICAg
ICBtX2NsaWVudC5kaWRDaGFuZ2VTZWxlY3Rpb24odG9BUEkocGFnZSksIHRvQVBJKG5vdGlmaWNh
dGlvbk5hbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hh
bmdlU2VsZWN0aW9uKHRvQVBJKHBhZ2UpLCB0b0FQSShub3RpZmljYXRpb25OYW1lKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlKiBwYWdlLCBSYW5nZSogcmFuZ2Up
CiB7CiAgICAgaWYgKG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCkgewogICAgICAgICBS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShyYW5nZSk7Ci0gICAgICAgIG1fY2xpZW50Lndp
bGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSShwYWdlKSwgdG9BUEkocmFuZ2VIYW5kbGUuZ2V0KCkp
LCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0
ZWJvYXJkKHRvQVBJKHBhZ2UpLCB0b0FQSShyYW5nZUhhbmRsZS5nZXQoKSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiAgICAgfQogfQogCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2Vi
UGFnZSogcGFnZSwgUmEKICAgICAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+
IHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUocmFu
Z2UpOwogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gMDsKICAgICAgICAgV0tBcnJheVJlZiBk
YXRhID0gMDsKLSAgICAgICAgbV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSh0b0FQ
SShwYWdlKSwgdG9BUEkocmFuZ2VIYW5kbGUuZ2V0KCkpLCAmdHlwZXMsICZkYXRhLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKKyAgICAgICAgbV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZSh0b0FQSShwYWdlKSwgdG9BUEkocmFuZ2VIYW5kbGUuZ2V0KCkpLCAmdHlwZXMsICZkYXRhLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICBSZWZQdHI8QVBJOjpBcnJheT4gdHlw
ZXNBcnJheSA9IGFkb3B0UmVmKHRvSW1wbCh0eXBlcykpOwogICAgICAgICBSZWZQdHI8QVBJOjpB
cnJheT4gZGF0YUFycmF5ID0gYWRvcHRSZWYodG9JbXBsKGRhdGEpKTsKIApAQCAtMTc1LDcgKzE3
NSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKFdlYlBhZ2UqIHBhZ2UsIFJhCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudDo6ZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSogcGFnZSkKIHsKICAgICBp
ZiAobV9jbGllbnQuZGlkV3JpdGVUb1Bhc3RlYm9hcmQpCi0gICAgICAgIG1fY2xpZW50LmRpZFdy
aXRlVG9QYXN0ZWJvYXJkKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAg
ICAgbV9jbGllbnQuZGlkV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkocGFnZSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggMTQwMGQ1ZjQ3Y2FmMGVi
NjYxZTA1ODFmNWU3YTY3MDgwNWJkNjIyYy4uZDNjNTRhMTI2ZDI0NmExOTdiMzM3YWEyMTMxZjIx
N2NkMWU4MTM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5oCkBAIC0zMyw2ICszMywxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEFmZmluaXR5
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAordGVtcGxhdGU8PiBzdHJ1Y3QgQVBJOjpD
bGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50QmFzZT4geworICAgIHR5cGVkZWYg
c3RkOjp0dXBsZTxXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRWMCwgV0tCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50VjE+IFZlcnNpb25zOworfTsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IENTU1N0eWxlRGVjbGFyYXRpb247CiAgICAgY2xhc3MgTm9kZTsKQEAgLTQ1LDcgKzQ5LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7CiAKLWNs
YXNzIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LCBrV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Q3VycmVudFZl
cnNpb24+IHsKK2NsYXNzIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudCA6IHB1YmxpYyBB
UEk6OkNsaWVudDxXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRCYXNlPiB7CiBwdWJsaWM6CiAgICAg
Ym9vbCBzaG91bGRCZWdpbkVkaXRpbmcoV2ViUGFnZSosIFdlYkNvcmU6OlJhbmdlKik7CiAgICAg
Ym9vbCBzaG91bGRFbmRFZGl0aW5nKFdlYlBhZ2UqLCBXZWJDb3JlOjpSYW5nZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VGb3JtQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5jcHAKaW5kZXggMmM2YjU3ZTVh
Mzc1OTFhMjdjMDI5Y2EyNDliNGJiM2NlMjAwYWQyNC4uOTY1NDRkOGM2ODJkNGMwOTRjMmZjZTJj
NTE5YTFkMTFiYmI3M2FmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZv
cm1DbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRm9y
bUNsaWVudDo6ZGlkRm9jdXNUZXh0RmllbGQoV2ViUGFnZSogcGFnZSwgSFRNTElucHV0RWxlCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5v
ZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKGlucHV0RWxl
bWVudCk7Ci0gICAgbV9jbGllbnQuZGlkRm9jdXNUZXh0RmllbGQodG9BUEkocGFnZSksIHRvQVBJ
KG5vZGVIYW5kbGUuZ2V0KCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmNsaWVudEluZm8pOwor
ICAgIG1fY2xpZW50LmRpZEZvY3VzVGV4dEZpZWxkKHRvQVBJKHBhZ2UpLCB0b0FQSShub2RlSGFu
ZGxlLmdldCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OnRleHRGaWVsZERpZEJlZ2luRWRp
dGluZyhXZWJQYWdlKiBwYWdlLCBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIFdlYkZy
YW1lKiBmcmFtZSkKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3Jt
Q2xpZW50Ojp0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoV2ViUGFnZSogcGFnZSwgSFRNTEkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9k
ZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoaW5wdXRFbGVt
ZW50KTsKLSAgICBtX2NsaWVudC50ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcodG9BUEkocGFnZSks
IHRvQVBJKG5vZGVIYW5kbGUuZ2V0KCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmNsaWVudElu
Zm8pOworICAgIG1fY2xpZW50LnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyh0b0FQSShwYWdlKSwg
dG9BUEkobm9kZUhhbmRsZS5nZXQoKSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Ojp0ZXh0Rmll
bGREaWRFbmRFZGl0aW5nKFdlYlBhZ2UqIHBhZ2UsIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxl
bWVudCwgV2ViRnJhbWUqIGZyYW1lKQpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUZvcm1DbGllbnQ6OnRleHRGaWVsZERpZEVuZEVkaXRpbmcoV2ViUGFnZSogcGFnZSwg
SFRNTElucAogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlPiBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0
ZShpbnB1dEVsZW1lbnQpOwotICAgIG1fY2xpZW50LnRleHRGaWVsZERpZEVuZEVkaXRpbmcodG9B
UEkocGFnZSksIHRvQVBJKG5vZGVIYW5kbGUuZ2V0KCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50
LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LnRleHRGaWVsZERpZEVuZEVkaXRpbmcodG9BUEko
cGFnZSksIHRvQVBJKG5vZGVIYW5kbGUuZ2V0KCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudDo6
dGV4dERpZENoYW5nZUluVGV4dEZpZWxkKFdlYlBhZ2UqIHBhZ2UsIEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCwgV2ViRnJhbWUqIGZyYW1lKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OnRleHREaWRDaGFuZ2VJblRleHRGaWVsZChXZWJQ
YWdlKiBwYWdlLCBIVE1MSQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpn
ZXRPckNyZWF0ZShpbnB1dEVsZW1lbnQpOwotICAgIG1fY2xpZW50LnRleHREaWRDaGFuZ2VJblRl
eHRGaWVsZCh0b0FQSShwYWdlKSwgdG9BUEkobm9kZUhhbmRsZS5nZXQoKSksIHRvQVBJKGZyYW1l
KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQudGV4dERpZENoYW5nZUluVGV4
dEZpZWxkKHRvQVBJKHBhZ2UpLCB0b0FQSShub2RlSGFuZGxlLmdldCgpKSwgdG9BUEkoZnJhbWUp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZUZvcm1DbGllbnQ6OnRleHREaWRDaGFuZ2VJblRleHRBcmVhKFdlYlBhZ2UqIHBhZ2UsIEhUTUxU
ZXh0QXJlYUVsZW1lbnQqIHRleHRBcmVhRWxlbWVudCwgV2ViRnJhbWUqIGZyYW1lKQpAQCAtODEs
NyArODEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OnRleHREaWRDaGFu
Z2VJblRleHRBcmVhKFdlYlBhZ2UqIHBhZ2UsIEhUTUxUZQogICAgICAgICByZXR1cm47CiAKICAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZSh0ZXh0QXJlYUVsZW1lbnQpOwotICAgIG1fY2xp
ZW50LnRleHREaWRDaGFuZ2VJblRleHRBcmVhKHRvQVBJKHBhZ2UpLCB0b0FQSShub2RlSGFuZGxl
LmdldCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVu
dC50ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSh0b0FQSShwYWdlKSwgdG9BUEkobm9kZUhhbmRsZS5n
ZXQoKSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogYm9v
bCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50OjpzaG91bGRQZXJmb3JtQWN0aW9uSW5UZXh0
RmllbGQoV2ViUGFnZSogcGFnZSwgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBXS0lu
cHV0RmllbGRBY3Rpb25UeXBlIGFjdGlvblR5cGUsIFdlYkZyYW1lKiBmcmFtZSkKQEAgLTkwLDcg
KzkwLDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50OjpzaG91bGRQZXJmb3Jt
QWN0aW9uSW5UZXh0RmllbGQoV2ViUGFnZSogcGFnZSwKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoaW5wdXRFbGVtZW50KTsKLSAgICByZXR1
cm4gbV9jbGllbnQuc2hvdWxkUGVyZm9ybUFjdGlvbkluVGV4dEZpZWxkKHRvQVBJKHBhZ2UpLCB0
b0FQSShub2RlSGFuZGxlLmdldCgpKSwgYWN0aW9uVHlwZSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKKyAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkUGVyZm9ybUFjdGlvbklu
VGV4dEZpZWxkKHRvQVBJKHBhZ2UpLCB0b0FQSShub2RlSGFuZGxlLmdldCgpKSwgYWN0aW9uVHlw
ZSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OndpbGxTZW5kU3VibWl0RXZlbnQoV2ViUGFnZSog
cGFnZSwgSFRNTEZvcm1FbGVtZW50KiBmb3JtRWxlbWVudCwgV2ViRnJhbWUqIGZyYW1lLCBXZWJG
cmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+
PiYgdmFsdWVzKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRm9y
bUNsaWVudDo6d2lsbFNlbmRTdWJtaXRFdmVudChXZWJQYWdlKiBwYWdlLCBIVE1MRm9ybUVsCiAg
ICAgICAgIG1hcC5zZXQodmFsdWVzW2ldLmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZSh2YWx1ZXNb
aV0uc2Vjb25kKSk7CiAgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IHRleHRGaWVsZHNN
YXAgPSBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChtYXApOwogCi0gICAgbV9jbGllbnQud2ls
bFNlbmRTdWJtaXRFdmVudCh0b0FQSShwYWdlKSwgdG9BUEkobm9kZUhhbmRsZS5nZXQoKSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkoc291cmNlRnJhbWUpLCB0b0FQSSh0ZXh0RmllbGRzTWFwLmdldCgp
KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQud2lsbFNlbmRTdWJtaXRFdmVu
dCh0b0FQSShwYWdlKSwgdG9BUEkobm9kZUhhbmRsZS5nZXQoKSksIHRvQVBJKGZyYW1lKSwgdG9B
UEkoc291cmNlRnJhbWUpLCB0b0FQSSh0ZXh0RmllbGRzTWFwLmdldCgpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Ojp3
aWxsU3VibWl0Rm9ybShXZWJQYWdlKiBwYWdlLCBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50
LCBXZWJGcmFtZSogZnJhbWUsIFdlYkZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YWx1ZXMsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVz
ZXJEYXRhKQpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNs
aWVudDo6d2lsbFN1Ym1pdEZvcm0oV2ViUGFnZSogcGFnZSwgSFRNTEZvcm1FbGVtZW50CiAgICAg
UmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IHRleHRGaWVsZHNNYXAgPSBJbW11dGFibGVEaWN0
aW9uYXJ5OjphZG9wdChtYXApOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsK
LSAgICBtX2NsaWVudC53aWxsU3VibWl0Rm9ybSh0b0FQSShwYWdlKSwgdG9BUEkobm9kZUhhbmRs
ZS5nZXQoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc291cmNlRnJhbWUpLCB0b0FQSSh0ZXh0Rmll
bGRzTWFwLmdldCgpKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAg
ICBtX2NsaWVudC53aWxsU3VibWl0Rm9ybSh0b0FQSShwYWdlKSwgdG9BUEkobm9kZUhhbmRsZS5n
ZXQoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc291cmNlRnJhbWUpLCB0b0FQSSh0ZXh0RmllbGRz
TWFwLmdldCgpKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
ICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKQEAg
LTEzNiw3ICsxMzYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OmRpZEFz
c29jaWF0ZUZvcm1Db250cm9scyhXZWJQYWdlKiBwYWdlLCBjb25zdAogICAgIGZvciAoY29uc3Qg
YXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKQogICAgICAgICBlbGVtZW50SGFuZGxlcy51bmNoZWNr
ZWRBcHBlbmQoSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShlbGVtZW50Lmdl
dCgpKSk7CiAKLSAgICBtX2NsaWVudC5kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHModG9BUEkocGFn
ZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUoZWxlbWVudEhhbmRsZXMpKS5n
ZXQoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZEFzc29jaWF0ZUZv
cm1Db250cm9scyh0b0FQSShwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92
ZShlbGVtZW50SGFuZGxlcykpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0K
IAogYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50OjpzaG91bGROb3RpZnlPbkZvcm1D
aGFuZ2VzKFdlYlBhZ2UqIHBhZ2UpCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBJbmplY3RlZEJ1
bmRsZVBhZ2VGb3JtQ2xpZW50OjpzaG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKFdlYlBhZ2UqIHBh
Z2UpCiAgICAgaWYgKCFtX2NsaWVudC5zaG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkTm90aWZ5T25Gb3Jt
Q2hhbmdlcyh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgcmV0dXJuIG1f
Y2xpZW50LnNob3VsZE5vdGlmeU9uRm9ybUNoYW5nZXModG9BUEkocGFnZSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VGb3JtQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuaAppbmRleCBjN2VkMjk0M2IzYTcwMTNmZDli
MmVkNmQ5ZjNjNTA5NjMzZDJhNGUxLi5kYzFiYzBjYmFjNDBlYjQ3Y2VlMzY1OGMzMTdkZjc2OTMw
MTgxYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuaApA
QCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAordGVtcGxhdGU8PiBzdHJ1Y3QgQVBJOjpDbGllbnRUcmFpdHM8V0tCdW5k
bGVQYWdlRm9ybUNsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVQ
YWdlRm9ybUNsaWVudFYwLCBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50VjEsIFdLQnVuZGxlUGFnZUZv
cm1DbGllbnRWMj4gVmVyc2lvbnM7Cit9OworCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVj
dDsKIH0KQEAgLTQ5LDcgKzUzLDcgQEAgY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKIGNsYXNz
IFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlRm9y
bUNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tCdW5kbGVQYWdlRm9ybUNsaWVudCwga1dLQnVu
ZGxlUGFnZUZvcm1DbGllbnRDdXJyZW50VmVyc2lvbj4geworY2xhc3MgSW5qZWN0ZWRCdW5kbGVQ
YWdlRm9ybUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50
QmFzZT4gewogcHVibGljOgogICAgIHZvaWQgZGlkRm9jdXNUZXh0RmllbGQoV2ViUGFnZSosIFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqLCBXZWJGcmFtZSopOwogICAgIHZvaWQgdGV4dEZpZWxk
RGlkQmVnaW5FZGl0aW5nKFdlYlBhZ2UqLCBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiwgV2Vi
RnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVu
Q2xpZW50LmgKaW5kZXggODFhYjNjZTE4YjE1YzYyZmY0YzM0NTljMzQ4NzFlMzQxYzgyNjgwMi4u
NzgyNWFjOWM5YjY2YWYyMWMzZmM4ZWY5ZTI0MjljOTg4Njg1N2JkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VG
dWxsU2NyZWVuQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmgKQEAgLTMzLDYgKzMz
LDEwIEBACiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBUEk6OkNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VGdWxsU2Ny
ZWVuQ2xpZW50QmFzZT4geworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0J1bmRsZVBhZ2VGdWxs
U2NyZWVuQ2xpZW50VjAsIFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRWMT4gVmVyc2lvbnM7
Cit9OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW50UmVj
dDsKQEAgLTQyLDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2U7
CiAKLWNsYXNzIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQgOiBwdWJsaWMgQVBJ
Q2xpZW50PFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQsIGtXS0J1bmRsZVBhZ2VGdWxsU2Ny
ZWVuQ2xpZW50Q3VycmVudFZlcnNpb24+IHsKK2NsYXNzIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxT
Y3JlZW5DbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNs
aWVudEJhc2U+IHsKIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzRnVsbFNjcmVlbihXZWJQYWdl
KiwgYm9vbCB3aXRoS2V5Ym9hcmQpOwogICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChXZWJQYWdlKiwgV2ViQ29yZTo6RWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDBiZDk3YTg4NGVhYzQ2YzAzMzhjN2Y5
OThjNDg0ZWZmN2FiYzgxMjEuLmU0MDY3ZTYzOTVhYjU0MjljMTA4NGQ4MTI3NmU1YjM3YTI5ZDgx
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5j
cHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlKiBwYWdlLCBjb25zdCBSZXMKICAgICBpZiAoIW1f
Y2xpZW50LndpbGxMb2FkVVJMUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGll
bnQud2lsbExvYWRVUkxSZXF1ZXN0KHRvQVBJKHBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEko
dXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC53aWxsTG9hZFVS
TFJlcXVlc3QodG9BUEkocGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSSh1c2VyRGF0YSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRC
dWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCkBAIC02Niw3ICs2Niw3IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0
KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFJlCiAgICAgICAgIHdlYkRhdGEgPSBXZWJEYXRhOjpjcmVh
dGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGRhdGEpOwogICAgIH0KIAotICAgIG1fY2xp
ZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkocGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQ
SSh3ZWJEYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdO
YW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRv
QVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQud2lsbExv
YWREYXRhUmVxdWVzdCh0b0FQSShwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKHdlYkRhdGEu
Z2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgp
KSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRh
dGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiBib29sIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6c2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViUGFnZSog
cGFnZSwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtLCBSZWZQdHI8QVBJ
OjpPYmplY3Q+JiB1c2VyRGF0YSkKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2Uq
IHBhZ2UKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bh
c3MgPSAwOwotICAgIGJvb2wgcmVzdWx0ID0gbV9jbGllbnQuc2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0odG9BUEkocGFnZSksIHRvQVBJKGl0ZW0pLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xp
ZW50LmNsaWVudEluZm8pOworICAgIGJvb2wgcmVzdWx0ID0gbV9jbGllbnQuc2hvdWxkR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0odG9BUEkocGFnZSksIHRvQVBJKGl0ZW0pLCAmdXNlckRhdGFUb1Bh
c3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0
b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtODcs
NyArODcsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlKiBwYQogICAgICAgICByZXR1cm47CiAKICAg
ICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOwotICAgIG1fY2xpZW50LmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgJnVzZXJEYXRh
VG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksICZ1c2VyRGF0YVRv
UGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVm
KHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWRGCiAgICAgICAgIHJldHVybjsKIAogICAgIFdLVHlwZVJlZiB1c2VyRGF0
YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgJnVzZXJEYXRh
VG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEko
ZnJhbWUpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAg
dXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIApAQCAtMTA3
LDcgKzEwNyw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGYWls
UHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGllbnQuZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSks
IHRvQVBJKGVycm9yKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAg
ICBtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodG9BUEko
cGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoZXJyb3IpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNl
ckRhdGFUb1Bhc3MpKTsKIH0KIApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwg
V2ViRnJhCiAgICAgICAgIHJldHVybjsKIAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9
IDA7Ci0gICAgbV9jbGllbnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQ
SShmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9j
bGllbnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksICZ1
c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9
IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCkBAIC0xMjcsNyArMTI3LDcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgV0tUeXBl
UmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5kaWRGaW5pc2hEb2N1bWVudExv
YWRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCAmdXNlckRhdGFUb1Bhc3MsIG1f
Y2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2Vy
RGF0YVRvUGFzcykpOwogfQogCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBX
ZWJGcmEKICAgICAgICAgcmV0dXJuOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0g
MDsKLSAgICBtX2NsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJ
KGZyYW1lKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2Ns
aWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgJnVz
ZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0g
YWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKQEAgLTE0Niw3ICsxNDYsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoUHJvZ3Jlc3Mo
V2ViUGFnZSogcGFnZSkKICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaFByb2dyZXNzKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5kaWRGaW5pc2hQcm9ncmVzcyh0b0FQSShwYWdl
KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkRmluaXNoUHJvZ3Jlc3Mo
dG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdl
YlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKQpAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZy
YW1lKFdlYlBhZ2UqIHBhZ2UsCiAgICAgICAgIHJldHVybjsKIAogICAgIFdLVHlwZVJlZiB1c2Vy
RGF0YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGllbnQuZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFt
ZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShlcnJvciksICZ1c2VyRGF0YVRvUGFz
cywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkRmFpbExvYWRXaXRoRXJy
b3JGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShlcnJvciksICZ1c2Vy
RGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFk
b3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCkBAIC0xNjUsNyArMTY1LDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZShXZWJQYWdlKgogICAgICAgICByZXR1cm47CiAKICAgICBXS1R5cGVSZWYg
dXNlckRhdGFUb1Bhc3MgPSAwOwotICAgIG1fY2xpZW50LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh0eXBlKSwgJnVzZXJE
YXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEko
dHlwZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1
c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCkBAIC0xNzUs
NyArMTc1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlY2Vp
dmVUaXRsZUZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnMKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZl
VGl0bGVGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkodGl0bGUuaW1wbCgpKSwgdG9BUEkoZnJh
bWUpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSSh0aXRsZS5pbXBsKCkp
LCB0b0FQSShmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQog
CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJQYWdlKiBwYWdlICwKICAgICAgICAgcmV0
dXJuOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5k
aWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgJnVz
ZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRSZW1v
dmVGcmFtZUZyb21IaWVyYXJjaHkodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgJnVzZXJEYXRh
VG9QYXNzLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0gYWRvcHRS
ZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVu
dEZvckZyYW1lKFdlYlBhZ2UqCiAgICAgICAgIHJldHVybjsKIAogICAgIFdLVHlwZVJlZiB1c2Vy
RGF0YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGllbnQuZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZv
ckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGll
bnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZv
ckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2Vy
RGF0YVRvUGFzcykpOwogfQogCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2Uq
IHBhZ2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0g
MDsKLSAgICBtX2NsaWVudC5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh0b0FQSShwYWdl
KSwgdG9BUEkoZnJhbWUpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwor
ICAgIG1fY2xpZW50LmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0
b0FQSShmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
ICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCkBA
IC0yMTUsNyArMjE1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRp
ZERldGVjdFhTU0ZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW0KICAgICAgICAgcmV0dXJu
OwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5kaWRE
ZXRlY3RYU1NGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCAmdXNlckRhdGFUb1Bh
c3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZERldGVjdFhTU0ZvckZy
YW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0
YVRvUGFzcykpOwogfQogCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2Vi
RnIKICAgICAgICAgcmV0dXJuOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsK
LSAgICBtX2NsaWVudC5kaWRGaXJzdExheW91dEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShm
cmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGll
bnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCAmdXNl
ckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgdXNlckRhdGEgPSBh
ZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIApAQCAtMjM1LDcgKzIzNSw3IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQCiAgICAgICAgIHJldHVybjsKIAogICAgIFdLVHlwZVJl
ZiB1c2VyRGF0YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGllbnQuZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgJnVzZXJEYXRhVG9Q
YXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCAmdXNlckRh
dGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgdXNlckRhdGEgPSBhZG9w
dFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRMYXlvdXRGb3JGcmFtZShXZWJQ
YWdlKiBwYWdlLCBXZWJGcmFtZSoKICAgICBpZiAoIW1fY2xpZW50LmRpZExheW91dEZvckZyYW1l
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5kaWRMYXlvdXRGb3JGcmFtZSh0b0FQ
SShwYWdlKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVu
dC5kaWRMYXlvdXRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6ZGlkTGF5b3V0KFdlYlBhZ2UqIHBhZ2UsIExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcywg
UmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpCkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZExheW91dChXZWJQYWdlKiBwYWdlLCBM
YXlvdXRNaWxlc3RvbmVzIG0KICAgICAgICAgcmV0dXJuOwogCiAgICAgV0tUeXBlUmVmIHVzZXJE
YXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5kaWRMYXlvdXQodG9BUEkocGFnZSksIHRvV0tM
YXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNs
aWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZExheW91dCh0b0FQSShwYWdlKSwgdG9XS0xheW91
dE1pbGVzdG9uZXMobWlsZXN0b25lcyksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFz
cykpOwogfQogCkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViUGFnZSogcGFnZSwKICAg
ICBpZiAoIW1fY2xpZW50LmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fY2xpZW50LmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUodG9BUEko
cGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Z2V0
T3JDcmVhdGUod29ybGQpLmdldCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGll
bnQuZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUp
LCB0b0FQSShJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZSh3b3JsZCkuZ2V0
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShXZWJQYWdl
KiBwYWdlLCBXZWJGcmFtZSogZnJhbWUpCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUo
V2ViUGFnZSogcGEKICAgICBpZiAoIW1fY2xpZW50LmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9y
RnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZENhbmNlbENsaWVudFJl
ZGlyZWN0Rm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CisgICAgbV9jbGllbnQuZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh0b0FQ
SShwYWdlKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5n
JiB1cmwsIGRvdWJsZSBkZWxheSwgZG91YmxlIGRhdGUpCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3RGb3JGcmFtZShXZWJQYWdlKgogICAgIGlmICghbV9jbGllbnQud2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdEZvckZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC53aWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9V
UkxSZWYodXJsLmltcGwoKSksIGRlbGF5LCBkYXRlLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAg
ICBtX2NsaWVudC53aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUodG9BUEkocGFnZSks
IHRvQVBJKGZyYW1lKSwgdG9VUkxSZWYodXJsLmltcGwoKSksIGRlbGF5LCBkYXRlLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJh
bWUqIGZyYW1lKQpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50OjpkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZShXZWJQYWdlKiBwYWdlCiAg
ICAgaWYgKCFtX2NsaWVudC5kaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUodG9B
UEkocGFnZSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGll
bnQuZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1l
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6Omdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV2ViUGFnZSog
cGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmIHdvcmxkKQpA
QCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojpn
bG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKFdlYlBhZ2UqIHBhCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gaW5qZWN0ZWRX
b3JsZCA9IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmdldE9yQ3JlYXRlKHdvcmxkKTsKLSAg
ICBtX2NsaWVudC5nbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0
b0FQSShmcmFtZSksIHRvQVBJKGluamVjdGVkV29ybGQuZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKKyAgICBtX2NsaWVudC5nbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKHRvQVBJ
KHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKGluamVjdGVkV29ybGQuZ2V0KCkpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6d2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KFdl
YlBhZ2UqIHBhZ2UsIFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiogY29yZUV4dGVuc2lvbikK
QEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsTwogCiAgICAgUmVmUHRy
PEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBJbmplY3RlZEJ1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6Z2V0KGNvcmVFeHRlbnNpb24pOwogICAgIEFTU0VSVChl
eHRlbnNpb24pOwotICAgIG1fY2xpZW50LndpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
RnJvbUdsb2JhbE9iamVjdCh0b0FQSShwYWdlKSwgdG9BUEkoZXh0ZW5zaW9uLmdldCgpKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQud2lsbERpc2Nvbm5lY3RET01XaW5kb3dF
eHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KHRvQVBJKHBhZ2UpLCB0b0FQSShleHRlbnNpb24uZ2V0
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6ZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxP
YmplY3QoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKiBjb3JlRXh0
ZW5zaW9uKQpAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50OjpkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjCiAKICAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24+IGV4dGVuc2lvbiA9IElu
amVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpnZXQoY29yZUV4dGVuc2lvbik7CiAgICAg
QVNTRVJUKGV4dGVuc2lvbik7Ci0gICAgbV9jbGllbnQuZGlkUmVjb25uZWN0RE9NV2luZG93RXh0
ZW5zaW9uVG9HbG9iYWxPYmplY3QodG9BUEkocGFnZSksIHRvQVBJKGV4dGVuc2lvbi5nZXQoKSks
IG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZFJlY29ubmVjdERPTVdpbmRv
d0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KHRvQVBJKHBhZ2UpLCB0b0FQSShleHRlbnNpb24uZ2V0
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRl
bnNpb24oV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKiBjb3JlRXh0
ZW5zaW9uKQpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Ojp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvCiAKICAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24+IGV4dGVuc2lvbiA9IElu
amVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpnZXQoY29yZUV4dGVuc2lvbik7CiAgICAg
QVNTRVJUKGV4dGVuc2lvbik7Ci0gICAgbV9jbGllbnQud2lsbERlc3Ryb3lHbG9iYWxPYmplY3RG
b3JET01XaW5kb3dFeHRlbnNpb24odG9BUEkocGFnZSksIHRvQVBJKGV4dGVuc2lvbi5nZXQoKSks
IG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LndpbGxEZXN0cm95R2xvYmFsT2Jq
ZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKHRvQVBJKHBhZ2UpLCB0b0FQSShleHRlbnNpb24uZ2V0
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiBib29sIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwo
V2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiB1cmwpCkBAIC0zMzMsNyArMzMzLDcgQEAgYm9v
bCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2FsQWNj
ZXNzRnJvbUxvY2FsVVJMKFdlYlAKICAgICBpZiAoIW1fY2xpZW50LnNob3VsZEZvcmNlVW5pdmVy
c2FsQWNjZXNzRnJvbUxvY2FsVVJMKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gbV9jbGllbnQuc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwodG9BUEko
cGFnZSksIHRvQVBJKHVybC5pbXBsKCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICByZXR1
cm4gbV9jbGllbnQuc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwodG9BUEko
cGFnZSksIHRvQVBJKHVybC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZmVhdHVyZXNVc2VkSW5QYWdl
KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmZWF0dXJlcykKQEAgLTM0MSw3
ICszNDEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZmVhdHVyZXNV
c2VkSW5QYWdlKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFZlYwogICAgIGlmICghbV9jbGllbnQuZmVh
dHVyZXNVc2VkSW5QYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICByZXR1cm4gbV9jbGllbnQu
ZmVhdHVyZXNVc2VkSW5QYWdlKHRvQVBJKHBhZ2UpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGVT
dHJpbmdBcnJheShmZWF0dXJlcykuZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBy
ZXR1cm4gbV9jbGllbnQuZmVhdHVyZXNVc2VkSW5QYWdlKHRvQVBJKHBhZ2UpLCB0b0FQSShBUEk6
OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShmZWF0dXJlcykuZ2V0KCkpLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbERlc3Ryb3lGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUpCkBAIC0zNDks
NyArMzQ5LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxEZXN0
cm95RnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGYKICAgICBpZiAoIW1fY2xpZW50Lndp
bGxEZXN0cm95RnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LndpbGxEZXN0
cm95RnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7
CisgICAgbV9jbGllbnQud2lsbERlc3Ryb3lGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCmluZGV4IDZi
ZGRlODJiNTJkNjJkODViMDcxN2MxZTJmZDE2NDdhYTJjOWMwMDQuLjc0ZjMwMDNmMGYyODM2MTEx
NGMwYWJiZmY0ZGYzOWRlNmU2ZGRjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtMzgsNiArMzgsMTAgQEAgbmFtZXNwYWNlIEFQSSB7CiBj
bGFzcyBPYmplY3Q7CiB9CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFQSTo6Q2xpZW50VHJhaXRzPFdL
QnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50VjAsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYxLCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnRWMiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjMsIFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudFY0LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNSwgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50VjYsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY3PiBWZXJzaW9u
czsKK307CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTVdpbmRvd0V4dGVuc2lvbjsK
IGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKQEAgLTU0LDcgKzU4LDcgQEAgY2xhc3MgSW5qZWN0ZWRC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYkZyYW1l
OwogCi1jbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJQ2xp
ZW50PFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCwga1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudEN1
cnJlbnRWZXJzaW9uPiB7CitjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQgOiBw
dWJsaWMgQVBJOjpDbGllbnQ8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZT4gewogcHVibGlj
OgogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopOwogICAgIHZvaWQgd2lsbExvYWREYXRhUmVx
dWVzdChXZWJQYWdlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgQVBJOjpPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlUG9saWN5Q2xpZW50LmNwcAppbmRleCBlMjMyOTBmYmI0M2NiZWM3NDNkZWIyYzdm
MDMxYmNlZWUxMDg0Yzk4Li5jOWRhOGIzMWFmYjZlMGQ1OWYyZDlkZmRhMTEzMGU1YTMzYzg4OGE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuY3Bw
CkBAIC00Miw3ICs0Miw3IEBAIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBJbmplY3RlZEJ1bmRs
ZVBhZ2VQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpCiAgICAgUmVmUHRyPFdl
YlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBXZWJVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1
ZXN0KTsKIAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7Ci0gICAgV0tCdW5kbGVQ
YWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24odG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoYWN0aW9uKSwgdG9BUEko
cmVxdWVzdC5nZXQoKSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7Cisg
ICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IG1fY2xpZW50LmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24odG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoYWN0
aW9uKSwgdG9BUEkocmVxdWVzdC5nZXQoKSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRv
UGFzcykpOwogICAgIHJldHVybiBwb2xpY3k7CiB9CkBAIC01NSw3ICs1NSw3IEBAIFdLQnVuZGxl
UGFnZVBvbGljeUFjdGlvbiBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQ6OmRlY2lkZVBv
bGljeUZvck5ld1dpbmRvCiAgICAgUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBXZWJV
UkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKIAogICAgIFdLVHlwZVJlZiB1c2Vy
RGF0YVRvUGFzcyA9IDA7Ci0gICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IG1f
Y2xpZW50LmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih0b0FQSShwYWdlKSwgdG9BUEko
ZnJhbWUpLCB0b0FQSShhY3Rpb24pLCB0b0FQSShyZXF1ZXN0LmdldCgpKSwgdG9BUEkoZnJhbWVO
YW1lLmltcGwoKSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAg
V0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IG1fY2xpZW50LmRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbih0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShhY3Rpb24p
LCB0b0FQSShyZXF1ZXN0LmdldCgpKSwgdG9BUEkoZnJhbWVOYW1lLmltcGwoKSksICZ1c2VyRGF0
YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0
UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogICAgIHJldHVybiBwb2xpY3k7CiB9CkBAIC02
OSw3ICs2OSw3IEBAIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBJbmplY3RlZEJ1bmRsZVBhZ2VQ
b2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlCiAgICAgUmVmUHRyPFdlYlVSTFJl
cXVlc3Q+IHJlcXVlc3QgPSBXZWJVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsK
IAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7Ci0gICAgV0tCdW5kbGVQYWdlUG9s
aWN5QWN0aW9uIHBvbGljeSA9IG1fY2xpZW50LmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHRvQVBJ
KHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHJlc3BvbnNlLmdldCgpKSwgdG9BUEkocmVxdWVz
dC5nZXQoKSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgV0tC
dW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IG1fY2xpZW50LmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHJlc3BvbnNlLmdldCgpKSwg
dG9BUEkocmVxdWVzdC5nZXQoKSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykp
OwogICAgIHJldHVybiBwb2xpY3k7CiB9CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlUG9saWN5Q2xpZW50Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeShXZWJQYWdlKiBw
YWdlLCBXZWJGCiAgICAgICAgIHJldHVybjsKIAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFz
cyA9IDA7Ci0gICAgbV9jbGllbnQudW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodG9BUEkocGFnZSks
IHRvQVBJKGZyYW1lKSwgdG9BUEkoZXJyb3IpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNs
aWVudEluZm8pOworICAgIG1fY2xpZW50LnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHRvQVBJKHBh
Z2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKGVycm9yKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJE
YXRhVG9QYXNzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGlj
eUNsaWVudC5oCmluZGV4IDE4YTczYTY2YTUyYTkxMDZjMTQ1N2YzMjc5MmE0MzJhNzlkYzI5MDMu
LjNkYzU1ZjZlZjNmOWJlOTY3OWVkMjBhNTBlYjc3MWQwNjlmOWFmMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
UG9saWN5Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuaApAQCAtMzEsNiArMzEsMTAgQEAK
ICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCit0
ZW1wbGF0ZTw+IHN0cnVjdCBBUEk6OkNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VQb2xpY3lDbGll
bnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQnVuZGxlUGFnZVBvbGljeUNsaWVu
dFYwPiBWZXJzaW9uczsKK307CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZXNv
dXJjZUVycm9yOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTQzLDcgKzQ3LDcgQEAg
Y2xhc3MgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgV2ViRnJhbWU7CiBj
bGFzcyBXZWJQYWdlOwogCi1jbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQgOiBw
dWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudCwga1dLQnVuZGxlUGFnZVBv
bGljeUNsaWVudEN1cnJlbnRWZXJzaW9uPiB7CitjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xp
Y3lDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50QmFz
ZT4gewogcHVibGljOgogICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2UqLCBXZWJGcmFtZSosIEluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZlB0cjxB
UEk6Ok9iamVjdD4mIHVzZXJEYXRhKTsKICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2UqLCBXZWJGcmFtZSosIEluamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENs
aWVudC5jcHAKaW5kZXggODI5MGIxMWU1M2M0NThiNmM2OTk1OTc5NDUzZjQyMGRlZjk4ZjMwNS4u
ZDcwMzhmZGExYjQyNjQ2N2IzOTY1NjAzZTY4ZjA4ZWJmMjM5ZmU3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VS
ZXNvdXJjZUxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcApAQCAt
MzgsNyArMzgsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudDo6
ZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UoV2ViUGFnZSogcAogICAgIGlmICghbV9jbGllbnQu
ZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xp
ZW50LmRpZEluaXRpYXRlTG9hZEZvclJlc291cmNlKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSks
IGlkZW50aWZpZXIsIHRvQVBJKHJlcXVlc3QpLCBwYWdlSXNQcm92aXNpb25hbGx5TG9hZGluZywg
bV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkSW5pdGlhdGVMb2FkRm9yUmVz
b3VyY2UodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgaWRlbnRpZmllciwgdG9BUEkocmVxdWVz
dCksIHBhZ2VJc1Byb3Zpc2lvbmFsbHlMb2FkaW5nLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudDo6d2lsbFNl
bmRSZXF1ZXN0Rm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCB1aW50NjRf
dCBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3RGb3JGcmFtZShXZWJQ
YWdlKiBwYWdlCiAgICAgaWYgKCFtX2NsaWVudC53aWxsU2VuZFJlcXVlc3RGb3JGcmFtZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IHJldHVybmVkUmVxdWVz
dCA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC53aWxsU2VuZFJlcXVlc3RGb3JGcmFtZSh0b0FQ
SShwYWdlKSwgdG9BUEkoZnJhbWUpLCBpZGVudGlmaWVyLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEko
cmVkaXJlY3RSZXNwb25zZSksIG1fY2xpZW50LmNsaWVudEluZm8pKSk7CisgICAgUmVmUHRyPFdl
YlVSTFJlcXVlc3Q+IHJldHVybmVkUmVxdWVzdCA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC53
aWxsU2VuZFJlcXVlc3RGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBpZGVudGlm
aWVyLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkocmVkaXJlY3RSZXNwb25zZSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbykpKTsKICAgICBpZiAocmV0dXJuZWRSZXF1ZXN0KQogICAgICAgICByZXF1
ZXN0LnVwZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRIVFRQQm9keShyZXR1cm5lZFJlcXVl
c3QtPnJlc291cmNlUmVxdWVzdCgpKTsKICAgICBlbHNlCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VG
b3JSZXNvdXJjZShXZWJQYWdlCiAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2VG
b3JSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJl
c3BvbnNlRm9yUmVzb3VyY2UodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgaWRlbnRpZmllciwg
dG9BUEkocmVzcG9uc2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBpZGVu
dGlmaWVyLCB0b0FQSShyZXNwb25zZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAK
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRSZWNlaXZlQ29u
dGVudExlbmd0aEZvclJlc291cmNlKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgdWlu
dDY0X3QgaWRlbnRpZmllciwgdWludDY0X3QgY29udGVudExlbmd0aCkKQEAgLTY2LDcgKzY2LDcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZFJlY2VpdmVD
b250ZW50TGVuZ3RoRm9yUmVzb3VyY2UoV2UKICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVD
b250ZW50TGVuZ3RoRm9yUmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoRm9yUmVzb3VyY2UodG9BUEkocGFnZSksIHRvQVBJKGZy
YW1lKSwgaWRlbnRpZmllciwgY29udGVudExlbmd0aCwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cisg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGhGb3JSZXNvdXJjZSh0b0FQSShwYWdl
KSwgdG9BUEkoZnJhbWUpLCBpZGVudGlmaWVyLCBjb250ZW50TGVuZ3RoLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENs
aWVudDo6ZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBm
cmFtZSwgdWludDY0X3QgaWRlbnRpZmllcikKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZShX
ZWJQYWdlKiBwYWcKICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlkRmluaXNoTG9hZEZvclJlc291cmNl
KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIGlkZW50aWZpZXIsIG1fY2xpZW50LmNsaWVudElu
Zm8pOworICAgIG1fY2xpZW50LmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSh0b0FQSShwYWdlKSwg
dG9BUEkoZnJhbWUpLCBpZGVudGlmaWVyLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudDo6ZGlkRmFpbExvYWRG
b3JSZXNvdXJjZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtODIsNyArODIs
NyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudDo6ZGlkRmFpbExv
YWRGb3JSZXNvdXJjZShXZWJQYWdlKiBwYWdlLAogICAgIGlmICghbV9jbGllbnQuZGlkRmFpbExv
YWRGb3JSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlkRmFpbExv
YWRGb3JSZXNvdXJjZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBpZGVudGlmaWVyLCB0b0FQ
SShlcnJvciksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZEZhaWxMb2Fk
Rm9yUmVzb3VyY2UodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgaWRlbnRpZmllciwgdG9BUEko
ZXJyb3IpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiBib29sIEluamVjdGVkQnVu
ZGxlUGFnZVJlc291cmNlTG9hZENsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShXZWJQYWdlKiBw
YWdlLCBXZWJGcmFtZSogZnJhbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIpCkBAIC05MCw3ICs5MCw3
IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50OjpzaG91bGRDYWNo
ZVJlc3BvbnNlKFdlYlBhZ2UqIHBhZ2UsIFdlCiAgICAgaWYgKCFtX2NsaWVudC5zaG91bGRDYWNo
ZVJlc3BvbnNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBtX2NsaWVudC5z
aG91bGRDYWNoZVJlc3BvbnNlKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIGlkZW50aWZpZXIs
IG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRDYWNoZVJl
c3BvbnNlKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIGlkZW50aWZpZXIsIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiB9CiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2Fk
Q2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFt
ZSogZnJhbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIpCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgSW5q
ZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZShXZWJQYWdlKiBwCiAgICAgaWYgKCFtX2NsaWVudC5zaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgaWRlbnRpZmll
ciwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIGlkZW50aWZpZXIsIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmgK
aW5kZXggOTM3NWZmODE1Yzg0OTE1YjEwMGE2YzUxZDA0OTVlMTkzNjdjYmMzNS4uZGU2M2M5MDE0
YmU2YTUwNmUyYWJjZWUzNzNmMjFiMjJiYTEzNjRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxv
YWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oCkBAIC0zMiw2ICszMiwxMCBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFQSTo6Q2xpZW50VHJhaXRzPFdLQnVuZGxlUGFn
ZVJlc291cmNlTG9hZENsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5k
bGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50VjAsIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVu
dFYxPiBWZXJzaW9uczsKK307CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC00Myw3ICs0Nyw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYkZyYW1lOwogCi1jbGFzcyBJbmpl
Y3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVu
ZGxlUGFnZVJlc291cmNlTG9hZENsaWVudCwga1dLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVu
dEN1cnJlbnRWZXJzaW9uPiB7CitjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRD
bGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50
QmFzZT4gewogcHVibGljOgogICAgIHZvaWQgZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UoV2Vi
UGFnZSosIFdlYkZyYW1lKiwgdWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgYm9vbCBwYWdlSXNQcm92aXNpb25hbGx5TG9hZGluZyk7CiAgICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3RGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCB1aW50NjRfdCBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQu
Y3BwCmluZGV4IDk3YTZkODQ5Yjc5MTZkOWY4ZGE5NTMxOWZkMjEzYjkwMjhkZTUxNDMuLmQwZDZh
YmMwMmU5NDcwZTQ0NWQ0NTkyZDFlZjdiMjQ1M2Y3MWZhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCkBAIC0zOSwzMSArMzksMzEgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojp3aWxsQWRkTWVzc2Fn
ZVRvQ29uc29sZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludDMyX3Qg
bGluZU51bWJlcikKIHsKICAgICBpZiAobV9jbGllbnQud2lsbEFkZE1lc3NhZ2VUb0NvbnNvbGUp
Ci0gICAgICAgIG1fY2xpZW50LndpbGxBZGRNZXNzYWdlVG9Db25zb2xlKHRvQVBJKHBhZ2UpLCB0
b0FQSShtZXNzYWdlLmltcGwoKSksIGxpbmVOdW1iZXIsIG1fY2xpZW50LmNsaWVudEluZm8pOwor
ICAgICAgICBtX2NsaWVudC53aWxsQWRkTWVzc2FnZVRvQ29uc29sZSh0b0FQSShwYWdlKSwgdG9B
UEkobWVzc2FnZS5pbXBsKCkpLCBsaW5lTnVtYmVyLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojp3aWxsU2V0U3RhdHVzYmFy
VGV4dChXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIHN0YXR1c2JhclRleHQpCiB7CiAgICAg
aWYgKG1fY2xpZW50LndpbGxTZXRTdGF0dXNiYXJUZXh0KQotICAgICAgICBtX2NsaWVudC53aWxs
U2V0U3RhdHVzYmFyVGV4dCh0b0FQSShwYWdlKSwgdG9BUEkoc3RhdHVzYmFyVGV4dC5pbXBsKCkp
LCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAgICAgbV9jbGllbnQud2lsbFNldFN0YXR1c2Jh
clRleHQodG9BUEkocGFnZSksIHRvQVBJKHN0YXR1c2JhclRleHQuaW1wbCgpKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6
d2lsbFJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGFsZXJ0
VGV4dCwgV2ViRnJhbWUqIGZyYW1lKQogewogICAgIGlmIChtX2NsaWVudC53aWxsUnVuSmF2YVNj
cmlwdEFsZXJ0KQotICAgICAgICBtX2NsaWVudC53aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KHRvQVBJ
KHBhZ2UpLCB0b0FQSShhbGVydFRleHQuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5j
bGllbnRJbmZvKTsKKyAgICAgICAgbV9jbGllbnQud2lsbFJ1bkphdmFTY3JpcHRBbGVydCh0b0FQ
SShwYWdlKSwgdG9BUEkoYWxlcnRUZXh0LmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6
d2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgV2ViRnJhbWUqIGZyYW1lKQogewogICAgIGlmIChtX2NsaWVudC53aWxsUnVuSmF2YVNj
cmlwdENvbmZpcm0pCi0gICAgICAgIG1fY2xpZW50LndpbGxSdW5KYXZhU2NyaXB0Q29uZmlybSh0
b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50
LmNsaWVudEluZm8pOworICAgICAgICBtX2NsaWVudC53aWxsUnVuSmF2YVNjcmlwdENvbmZpcm0o
dG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
Ojp3aWxsUnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFtZSogZnJhbWUpCiB7CiAg
ICAgaWYgKG1fY2xpZW50LndpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KQotICAgICAgICBtX2NsaWVu
dC53aWxsUnVuSmF2YVNjcmlwdFByb21wdCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBs
KCkpLCB0b0FQSShkZWZhdWx0VmFsdWUuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5j
bGllbnRJbmZvKTsKKyAgICAgICAgbV9jbGllbnQud2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQodG9B
UEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZGVmYXVsdFZhbHVlLmltcGwo
KSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFn
ZSogcGFnZSwgY29uc3QgSGl0VGVzdFJlc3VsdCYgY29yZUhpdFRlc3RSZXN1bHQsIFdlYkV2ZW50
OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkKQEAg
LTc0LDcgKzc0LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQoV2ViUGFnZSogcGFnZSwgY29uc3QgSGkKICAgICBSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0OjpjcmVhdGUoY29yZUhpdFRlc3RSZXN1bHQpOwogCiAgICAgV0tUeXBlUmVmIHVz
ZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0
b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJlc3VsdC5nZXQoKSksIHRvQVBJKG1vZGlmaWVycyks
ICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQubW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJKGhpdFRlc3RSZXN1bHQuZ2V0
KCkpLCB0b0FQSShtb2RpZmllcnMpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3Mp
KTsKIH0KIApAQCAtODMsMTQgKzgzLDE0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQ6OnBhZ2VEaWRTY3JvbGwoV2ViUGFnZSogcGFnZSkKICAgICBpZiAoIW1fY2xpZW50LnBhZ2VE
aWRTY3JvbGwpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LnBhZ2VEaWRTY3JvbGwo
dG9BUEkocGFnZSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LnBhZ2VEaWRT
Y3JvbGwodG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIFN0cmlu
ZyBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6c2hvdWxkR2VuZXJhdGVGaWxlRm9yVXBsb2Fk
KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxGaWxlUGF0aCkKIHsKICAgICBp
ZiAoIW1fY2xpZW50LnNob3VsZEdlbmVyYXRlRmlsZUZvclVwbG9hZCkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIFJlZlB0cjxXZWJTdHJpbmc+IGdlbmVyYXRlZEZpbGVQYXRoID0gYWRv
cHRSZWYodG9JbXBsKG1fY2xpZW50LnNob3VsZEdlbmVyYXRlRmlsZUZvclVwbG9hZCh0b0FQSShw
YWdlKSwgdG9BUEkob3JpZ2luYWxGaWxlUGF0aC5pbXBsKCkpLCBtX2NsaWVudC5jbGllbnRJbmZv
KSkpOworICAgIFJlZlB0cjxXZWJTdHJpbmc+IGdlbmVyYXRlZEZpbGVQYXRoID0gYWRvcHRSZWYo
dG9JbXBsKG1fY2xpZW50LnNob3VsZEdlbmVyYXRlRmlsZUZvclVwbG9hZCh0b0FQSShwYWdlKSwg
dG9BUEkob3JpZ2luYWxGaWxlUGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
KSk7CiAgICAgcmV0dXJuIGdlbmVyYXRlZEZpbGVQYXRoID8gZ2VuZXJhdGVkRmlsZVBhdGgtPnN0
cmluZygpIDogU3RyaW5nKCk7CiB9CiAKQEAgLTk4LDcgKzk4LDcgQEAgU3RyaW5nIEluamVjdGVk
QnVuZGxlUGFnZVVJQ2xpZW50OjpnZW5lcmF0ZUZpbGVGb3JVcGxvYWQoV2ViUGFnZSogcGFnZSwg
Y29uc3QgU3QKIHsKICAgICBpZiAoIW1fY2xpZW50LnNob3VsZEdlbmVyYXRlRmlsZUZvclVwbG9h
ZCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIFJlZlB0cjxXZWJTdHJpbmc+IGdlbmVy
YXRlZEZpbGVQYXRoID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmdlbmVyYXRlRmlsZUZvclVw
bG9hZCh0b0FQSShwYWdlKSwgdG9BUEkob3JpZ2luYWxGaWxlUGF0aC5pbXBsKCkpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKSkpOworICAgIFJlZlB0cjxXZWJTdHJpbmc+IGdlbmVyYXRlZEZpbGVQYXRo
ID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmdlbmVyYXRlRmlsZUZvclVwbG9hZCh0b0FQSShw
YWdlKSwgdG9BUEkob3JpZ2luYWxGaWxlUGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRlZEZpbGVQYXRoID8gZ2VuZXJhdGVkRmlsZVBh
dGgtPnN0cmluZygpIDogU3RyaW5nKCk7CiB9CiAKQEAgLTEwNyw3ICsxMDcsNyBAQCBXS0J1bmRs
ZVBhZ2VVSUVsZW1lbnRWaXNpYmlsaXR5IEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpzdGF0
dXNCYXJJc1Zpc2libGUoVwogICAgIGlmICghbV9jbGllbnQuc3RhdHVzQmFySXNWaXNpYmxlKQog
ICAgICAgICByZXR1cm4gV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eVVua25vd247CiAg
ICAgCi0gICAgcmV0dXJuIG1fY2xpZW50LnN0YXR1c0JhcklzVmlzaWJsZSh0b0FQSShwYWdlKSwg
bV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgcmV0dXJuIG1fY2xpZW50LnN0YXR1c0JhcklzVmlz
aWJsZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogV0tCdW5k
bGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eSBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bWVu
dUJhcklzVmlzaWJsZShXZWJQYWdlKiBwYWdlKQpAQCAtMTE1LDcgKzExNSw3IEBAIFdLQnVuZGxl
UGFnZVVJRWxlbWVudFZpc2liaWxpdHkgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6Om1lbnVC
YXJJc1Zpc2libGUoV2ViCiAgICAgaWYgKCFtX2NsaWVudC5tZW51QmFySXNWaXNpYmxlKQogICAg
ICAgICByZXR1cm4gV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eVVua25vd247CiAgICAg
Ci0gICAgcmV0dXJuIG1fY2xpZW50Lm1lbnVCYXJJc1Zpc2libGUodG9BUEkocGFnZSksIG1fY2xp
ZW50LmNsaWVudEluZm8pOworICAgIHJldHVybiBtX2NsaWVudC5tZW51QmFySXNWaXNpYmxlKHRv
QVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiBXS0J1bmRsZVBhZ2VV
SUVsZW1lbnRWaXNpYmlsaXR5IEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojp0b29sYmFyc0Fy
ZVZpc2libGUoV2ViUGFnZSogcGFnZSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBXS0J1bmRsZVBhZ2VV
SUVsZW1lbnRWaXNpYmlsaXR5IEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojp0b29sYmFyc0Fy
ZVZpc2libGUoVwogICAgIGlmICghbV9jbGllbnQudG9vbGJhcnNBcmVWaXNpYmxlKQogICAgICAg
ICByZXR1cm4gV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eVVua25vd247CiAgICAgCi0g
ICAgcmV0dXJuIG1fY2xpZW50LnRvb2xiYXJzQXJlVmlzaWJsZSh0b0FQSShwYWdlKSwgbV9jbGll
bnQuY2xpZW50SW5mbyk7CisgICAgcmV0dXJuIG1fY2xpZW50LnRvb2xiYXJzQXJlVmlzaWJsZSh0
b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VVSUNsaWVudDo6ZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
V2ViUGFnZSogcGFnZSwgV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5
dGVzTmVlZGVkKQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlVUlD
bGllbnQ6OmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2UqIHBhCiAg
ICAgaWYgKCFtX2NsaWVudC5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEodG9BUEkocGFnZSksIHRvQVBJKG9yaWdpbiksIHRvdGFsQnl0ZXNOZWVkZWQsIG1f
Y2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZFJlYWNoQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKHRvQVBJKHBhZ2UpLCB0b0FQSShvcmlnaW4pLCB0b3RhbEJ5dGVzTmVlZGVk
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB1aW50NjRfdCBJbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudDo6ZGlkRXhjZWVkRGF0YWJhc2VRdW90YShXZWJQYWdlKiBwYWdlLCBXZWJT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZURpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGFCeXRlcywg
dWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlQnl0ZXMsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFz
ZVVzYWdlQnl0ZXMsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2VCeXRlcykKQEAgLTEzOSw3ICsxMzks
NyBAQCB1aW50NjRfdCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6ZGlkRXhjZWVkRGF0YWJh
c2VRdW90YShXZWJQYWdlKiBwYWdlLCBXZWJTZQogICAgIGlmICghbV9jbGllbnQuZGlkRXhjZWVk
RGF0YWJhc2VRdW90YSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9jbGllbnQu
ZGlkRXhjZWVkRGF0YWJhc2VRdW90YSh0b0FQSShwYWdlKSwgdG9BUEkob3JpZ2luKSwgdG9BUEko
ZGF0YWJhc2VOYW1lLmltcGwoKSksIHRvQVBJKGRhdGFiYXNlRGlzcGxheU5hbWUuaW1wbCgpKSwg
Y3VycmVudFF1b3RhQnl0ZXMsIGN1cnJlbnRPcmlnaW5Vc2FnZUJ5dGVzLCBjdXJyZW50RGF0YWJh
c2VVc2FnZUJ5dGVzLCBleHBlY3RlZFVzYWdlQnl0ZXMsIG1fY2xpZW50LmNsaWVudEluZm8pOwor
ICAgIHJldHVybiBtX2NsaWVudC5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKHRvQVBJKHBhZ2UpLCB0
b0FQSShvcmlnaW4pLCB0b0FQSShkYXRhYmFzZU5hbWUuaW1wbCgpKSwgdG9BUEkoZGF0YWJhc2VE
aXNwbGF5TmFtZS5pbXBsKCkpLCBjdXJyZW50UXVvdGFCeXRlcywgY3VycmVudE9yaWdpblVzYWdl
Qnl0ZXMsIGN1cnJlbnREYXRhYmFzZVVzYWdlQnl0ZXMsIGV4cGVjdGVkVXNhZ2VCeXRlcywgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogU3RyaW5nIEluamVjdGVkQnVuZGxlUGFnZVVJ
Q2xpZW50OjpwbHVnSW5TdGFydExhYmVsVGl0bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29u
c3QKQEAgLTE0Nyw3ICsxNDcsNyBAQCBTdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6
OnBsdWdJblN0YXJ0TGFiZWxUaXRsZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIGlmICgh
bV9jbGllbnQuY3JlYXRlUGx1Z0luU3RhcnRMYWJlbFRpdGxlKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKLSAgICBSZWZQdHI8V2ViU3RyaW5nPiB0aXRsZSA9IGFkb3B0UmVmKHRvSW1wbCht
X2NsaWVudC5jcmVhdGVQbHVnSW5TdGFydExhYmVsVGl0bGUodG9BUEkobWltZVR5cGUuaW1wbCgp
KSwgbV9jbGllbnQuY2xpZW50SW5mbykpKTsKKyAgICBSZWZQdHI8V2ViU3RyaW5nPiB0aXRsZSA9
IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVQbHVnSW5TdGFydExhYmVsVGl0bGUodG9B
UEkobWltZVR5cGUuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpOwogICAgIHJl
dHVybiB0aXRsZSA/IHRpdGxlLT5zdHJpbmcoKSA6IFN0cmluZygpOwogfQogCkBAIC0xNTYsNyAr
MTU2LDcgQEAgU3RyaW5nIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpwbHVnSW5TdGFydExh
YmVsU3VidGl0bGUoY29uc3QgU3RyaW5nJiBtaW1lVHkKICAgICBpZiAoIW1fY2xpZW50LmNyZWF0
ZVBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0g
ICAgUmVmUHRyPFdlYlN0cmluZz4gc3VidGl0bGUgPSBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQu
Y3JlYXRlUGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKHRvQVBJKG1pbWVUeXBlLmltcGwoKSksIG1f
Y2xpZW50LmNsaWVudEluZm8pKSk7CisgICAgUmVmUHRyPFdlYlN0cmluZz4gc3VidGl0bGUgPSBh
ZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlUGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKHRv
QVBJKG1pbWVUeXBlLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKICAgICBy
ZXR1cm4gc3VidGl0bGUgPyBzdWJ0aXRsZS0+c3RyaW5nKCkgOiBTdHJpbmcoKTsKIH0KIApAQCAt
MTY1LDcgKzE2NSw3IEBAIFN0cmluZyBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6cGx1Z0lu
RXh0cmFTdHlsZVNoZWV0KCkgY29uc3QKICAgICBpZiAoIW1fY2xpZW50LmNyZWF0ZVBsdWdJbkV4
dHJhU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgUmVmUHRyPFdl
YlN0cmluZz4gc3R5bGVTaGVldCA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVQbHVn
SW5FeHRyYVN0eWxlU2hlZXQobV9jbGllbnQuY2xpZW50SW5mbykpKTsKKyAgICBSZWZQdHI8V2Vi
U3RyaW5nPiBzdHlsZVNoZWV0ID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZVBsdWdJ
bkV4dHJhU3R5bGVTaGVldChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7CiAgICAgcmV0dXJu
IHN0eWxlU2hlZXQgPyBzdHlsZVNoZWV0LT5zdHJpbmcoKSA6IFN0cmluZygpOwogfQogCkBAIC0x
NzQsNyArMTc0LDcgQEAgU3RyaW5nIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpwbHVnSW5F
eHRyYVNjcmlwdCgpIGNvbnN0CiAgICAgaWYgKCFtX2NsaWVudC5jcmVhdGVQbHVnSW5FeHRyYVNj
cmlwdCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgUmVmUHRyPFdlYlN0cmluZz4g
c2NyaXB0ID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZVBsdWdJbkV4dHJhU2NyaXB0
KG1fY2xpZW50LmNsaWVudEluZm8pKSk7CisgICAgUmVmUHRyPFdlYlN0cmluZz4gc2NyaXB0ID0g
YWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZVBsdWdJbkV4dHJhU2NyaXB0KG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbykpKTsKICAgICByZXR1cm4gc2NyaXB0ID8gc2NyaXB0LT5zdHJpbmco
KSA6IFN0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
LmgKaW5kZXggNGIyNGMxNGU4YjMyYzBkYzRlN2Q5NzU5NmQ4MmUyYjI0Mzg4YjJhNy4uNzZiZDA4
MGE2YmRkMjk0NGM4ZDdkZTEwN2YzYjA4ZmVjZDg2ZjcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlVUlDbGllbnQuaApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAordGVtcGxhdGU8PiBzdHJ1Y3QgQVBJOjpDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlVUlDbGll
bnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQnVuZGxlUGFnZVVJQ2xpZW50VjAs
IFdLQnVuZGxlUGFnZVVJQ2xpZW50VjEsIFdLQnVuZGxlUGFnZVVJQ2xpZW50VjI+IFZlcnNpb25z
OworfTsKKwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiB9CkBAIC00OCw3ICs1Miw3
IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlNlY3VyaXR5T3Jp
Z2luOwogCi1jbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudCA6IHB1YmxpYyBBUElDbGll
bnQ8V0tCdW5kbGVQYWdlVUlDbGllbnQsIGtXS0J1bmRsZVBhZ2VVSUNsaWVudEN1cnJlbnRWZXJz
aW9uPiB7CitjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudCA6IHB1YmxpYyBBUEk6OkNs
aWVudDxXS0J1bmRsZVBhZ2VVSUNsaWVudEJhc2U+IHsKIHB1YmxpYzoKICAgICB2b2lkIHdpbGxB
ZGRNZXNzYWdlVG9Db25zb2xlKFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludDMy
X3QgbGluZU51bWJlcik7CiAgICAgdm9pZCB3aWxsU2V0U3RhdHVzYmFyVGV4dChXZWJQYWdlKiwg
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggZGNlZDVlZjhlNDljZWIyMGFjOGY1YWY1OGQzMjcxYzVjMWI2ZjUyNC4u
NWViNmZlMjAyMTg5YmQzOGE1YTNlZjc0YWE1ZTdhMjAzMWQzNGYxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDgyLDY0ICs0ODIsNjQg
QEAgdWludDY0X3QgV2ViUGFnZTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKQogfQogCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi12b2lkIFdlYlBhZ2U6OmluaXRpYWxpemVJbmplY3Rl
ZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50KiBj
bGllbnQpCit2b2lkIFdlYlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51
Q2xpZW50KFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZSogY2xpZW50KQogewogICAg
IG1fY29udGV4dE1lbnVDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwogfQogI2VuZGlmCiAKLXZv
aWQgV2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KFdLQnVuZGxl
UGFnZUVkaXRvckNsaWVudCogY2xpZW50KQordm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0
ZWRCdW5kbGVFZGl0b3JDbGllbnQoV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50QmFzZSogY2xpZW50
KQogewogICAgIG1fZWRpdG9yQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KFdLQnVuZGxlUGFnZUZv
cm1DbGllbnQqIGNsaWVudCkKK3ZvaWQgV2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxl
Rm9ybUNsaWVudChXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50QmFzZSogY2xpZW50KQogewogICAgIG1f
Zm9ybUNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6aW5pdGlh
bGl6ZUluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCog
Y2xpZW50KQordm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGll
bnQoV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZSogY2xpZW50KQogeworICAgIG1fbG9hZGVy
Q2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKKwogICAgIC8vIEl0IHdvdWxkIGJlIG5pY2UgdG8g
Z2V0IHJpZCBvZiB0aGlzIGNvZGUgYW5kIHRyYW5zaXRpb24gYWxsIGNsaWVudHMgdG8gdXNpbmcg
ZGlkTGF5b3V0IGluc3RlYWQgb2YKICAgICAvLyBkaWRGaXJzdExheW91dEluRnJhbWUgYW5kIGRp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWUuIEluIHRoZSBtZWFudGltZSwgdGhp
cyBpcyByZXF1aXJlZAogICAgIC8vIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICAgICBM
YXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMgPSAwOwogICAgIGlmIChjbGllbnQpIHsKLSAgICAg
ICAgaWYgKGNsaWVudC0+ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSkKKyAgICAgICAgaWYgKG1fbG9h
ZGVyQ2xpZW50LmNsaWVudCgpLmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUpCiAgICAgICAgICAgICBt
aWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEZpcnN0TGF5b3V0OwotICAgICAgICBpZiAoY2xpZW50
LT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSkKKyAgICAgICAgaWYgKG1f
bG9hZGVyQ2xpZW50LmNsaWVudCgpLmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZy
YW1lKQogICAgICAgICAgICAgbWlsZXN0b25lcyB8PSBXZWJDb3JlOjpEaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXQ7CiAgICAgfQogCiAgICAgaWYgKG1pbGVzdG9uZXMpCiAgICAgICAgIGxp
c3RlbkZvckxheW91dE1pbGVzdG9uZXMobWlsZXN0b25lcyk7Ci0KLSAgICBtX2xvYWRlckNsaWVu
dC5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6aW5pdGlhbGl6ZUluamVj
dGVkQnVuZGxlUG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudCogY2xpZW50KQor
dm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoV0tCdW5k
bGVQYWdlUG9saWN5Q2xpZW50QmFzZSogY2xpZW50KQogewogICAgIG1fcG9saWN5Q2xpZW50Lmlu
aXRpYWxpemUoY2xpZW50KTsKIH0KIAotdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRC
dW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50KiBj
bGllbnQpCit2b2lkIFdlYlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9h
ZENsaWVudChXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnRCYXNlKiBjbGllbnQpCiB7CiAg
ICAgbV9yZXNvdXJjZUxvYWRDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwogfQogCi12b2lkIFdl
YlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KFdLQnVuZGxlUGFnZVVJQ2xp
ZW50KiBjbGllbnQpCit2b2lkIFdlYlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVVJQ2xp
ZW50KFdLQnVuZGxlUGFnZVVJQ2xpZW50QmFzZSogY2xpZW50KQogewogICAgIG1fdWlDbGllbnQu
aW5pdGlhbGl6ZShjbGllbnQpOwogfQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotdm9p
ZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KFdLQnVu
ZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQqIGNsaWVudCkKK3ZvaWQgV2ViUGFnZTo6aW5pdGlhbGl6
ZUluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudChXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xp
ZW50QmFzZSogY2xpZW50KQogewogICAgIG1fZnVsbFNjcmVlbkNsaWVudC5pbml0aWFsaXplKGNs
aWVudCk7CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5k
bGVEaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXS0J1bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudCogY2xpZW50KQordm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudChXS0J1bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudEJh
c2UqIGNsaWVudCkKIHsKICAgICBtX2xvZ0RpYWdub3N0aWNNZXNzYWdlQ2xpZW50LmluaXRpYWxp
emUoY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDhmMzdjNzNmMjI1MGIxZjI1MjY4MThiMzRmNDllODRjYjczMmI4NzQuLjE0YTNj
MTVhYzlkNWY5NzExOTAwY2Y5ZmYyNGM3YTdmMjI0OTBkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjQyLDE4ICsyNDIsMTggQEAgcHVibGlj
OgogCiAgICAgLy8gLS0gSW5qZWN0ZWRCdW5kbGUgbWV0aG9kcwogI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQotICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGll
bnQoV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQqKTsKKyAgICB2b2lkIGluaXRpYWxpemVJ
bmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50QmFzZSopOwogI2VuZGlmCi0gICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQoV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Kik7Ci0gICAgdm9pZCBpbml0aWFsaXpl
SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KFdLQnVuZGxlUGFnZUZvcm1DbGllbnQqKTsKLSAgICB2
b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudChXS0J1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQqKTsKLSAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVu
dChXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQqKTsKLSAgICB2b2lkIGluaXRpYWxpemVJbmplY3Rl
ZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQq
KTsKLSAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KFdLQnVuZGxlUGFn
ZVVJQ2xpZW50Kik7CisgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQoV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50QmFzZSopOworICAgIHZvaWQgaW5pdGlhbGl6ZUlu
amVjdGVkQnVuZGxlRm9ybUNsaWVudChXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50QmFzZSopOworICAg
IHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KFdLQnVuZGxlUGFnZUxv
YWRlckNsaWVudEJhc2UqKTsKKyAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvbGlj
eUNsaWVudChXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRCYXNlKik7CisgICAgdm9pZCBpbml0aWFs
aXplSW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoV0tCdW5kbGVQYWdlUmVzb3VyY2VM
b2FkQ2xpZW50QmFzZSopOworICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlVUlDbGll
bnQoV0tCdW5kbGVQYWdlVUlDbGllbnRCYXNlKik7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudChXS0J1
bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Kik7CisgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRC
dW5kbGVGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRCYXNlKik7
CiAjZW5kaWYKLSAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50KFdLQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Kik7CisgICAgdm9p
ZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVEaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXS0J1bmRs
ZVBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudEJhc2UqKTsKIAogI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQogICAgIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50JiBpbmplY3Rl
ZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KCkgeyByZXR1cm4gbV9jb250ZXh0TWVudUNsaWVudDsg
fQo=
</data>
<flag name="review"
          id="241609"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>