<?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>124247</bug_id>
          
          <creation_ts>2013-11-12 16:37:09 -0800</creation_ts>
          <short_desc>Rename APIObject to API::Object</short_desc>
          <delta_ts>2013-11-12 16:55:35 -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>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>949937</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-12 16:37:09 -0800</bug_when>
    <thetext>Rename APIObject to API::Object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949941</commentid>
    <comment_count>1</comment_count>
      <attachid>216742</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-12 16:40:01 -0800</bug_when>
    <thetext>Created attachment 216742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949946</commentid>
    <comment_count>2</comment_count>
      <attachid>216742</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-12 16:47:12 -0800</bug_when>
    <thetext>Comment on attachment 216742
Patch

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

rs=me with one comment

&gt; Source/WebKit2/ChangeLog:8
&gt; +        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:

Please omit this ridiculous and useless list and note that you did so in the change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949953</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-12 16:55:35 -0800</bug_when>
    <thetext>Committed r159163: &lt;http://trac.webkit.org/changeset/159163&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216742</attachid>
            <date>2013-11-12 16:40:01 -0800</date>
            <delta_ts>2013-11-12 16:47:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124247-20131112164000.patch</filename>
            <type>text/plain</type>
            <size>265462</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjU3OGNmMmRmMzMzZTRj
N2M0ZmY0MjNhYjM0Yjc4OThkNTY4MjA2Zi4uMDc5NzZmOWM4ODY4ODk2OTdiMzU4NGM1ODBmODFk
M2I5NDQzN2Q5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQyMCBAQAogMjAxMy0xMS0xMiAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbmFtZSBBUElP
YmplY3QgdG8gQVBJOjpPYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNDI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
OgorICAgICAgICAoLVtXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9oYW5kbGVNZXNzYWdlV2l0aE5h
bWU6Ym9keTpdKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tBcnJheS5jcHA6CisgICAgICAg
IChXS0FycmF5Q3JlYXRlKToKKyAgICAgICAgKFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyk6
CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAg
KFdLQ29udGV4dE1lbnVJdGVtR2V0VHlwZUlEKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tT
aGFyZWRBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvV0tUeXBlLmNwcDoKKyAgICAgICAgKFdLR2V0VHlwZUlEKToKKyAgICAgICAgKFdL
UmV0YWluKToKKyAgICAgICAgKFdLUmVsZWFzZSk6CisgICAgICAgICogU2hhcmVkL0FQSU9iamVj
dC5jcHA6CisgICAgICAgIChBUEk6Ok9iamVjdDo6T2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQv
QVBJT2JqZWN0Lmg6CisgICAgICAgIChBUEk6Ok9iamVjdDo6fk9iamVjdCk6CisgICAgICAgIChB
UEk6OlR5cGVkT2JqZWN0Ojp+VHlwZWRPYmplY3QpOgorICAgICAgICAoQVBJOjpUeXBlZE9iamVj
dDo6VHlwZWRPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06Cisg
ICAgICAgIChBUEk6Ok9iamVjdDo6cmVmKToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpkZXJlZik6
CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvV0tOU0FycmF5Lm1tOgorICAgICAgICAoLVtXS05TQXJyYXkgb2JqZWN0QXRJbmRleDpdKToK
KyAgICAgICAgKC1bV0tOU0FycmF5IEFQSTo6XSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dL
TlNEaWN0aW9uYXJ5Lm1tOgorICAgICAgICAoLVtXS05TRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
XSk6CisgICAgICAgICgtW1dLTlNEaWN0aW9uYXJ5IEFQSTo6XSk6CisgICAgICAgICogU2hhcmVk
L0NvY29hL1dLT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dLT2JqZWN0Lm1tOgor
ICAgICAgICAoLVtXS09iamVjdCBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLT2JqZWN0IEFQSTo6
XSk6CisgICAgICAgICogU2hhcmVkL0ltbXV0YWJsZUFycmF5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW1tdXRhYmxlQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkltbXV0YWJsZUFy
cmF5OjpjcmVhdGVTdHJpbmdBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OkltbXV0YWJsZUFycmF5
OjpJbW11dGFibGVBcnJheSk6CisgICAgICAgICogU2hhcmVkL0ltbXV0YWJsZUFycmF5Lmg6Cisg
ICAgICAgICogU2hhcmVkL0ltbXV0YWJsZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbW11dGFibGVEaWN0aW9uYXJ5OjprZXlzKToKKyAgICAgICAgKiBTaGFyZWQvSW1tdXRhYmxl
RGljdGlvbmFyeS5oOgorICAgICAgICAoV2ViS2l0OjpJbW11dGFibGVEaWN0aW9uYXJ5OjpnZXQp
OgorICAgICAgICAqIFNoYXJlZC9NdXRhYmxlRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok11dGFibGVEaWN0aW9uYXJ5OjphZGQpOgorICAgICAgICAoV2ViS2l0OjpNdXRhYmxlRGlj
dGlvbmFyeTo6c2V0KToKKyAgICAgICAgKiBTaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
cGVyZm9ybUFQSUNhbGxiYWNrV2l0aFNlY3VyaXR5T3JpZ2luRGF0YVZlY3Rvcik6CisgICAgICAg
ICogU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNz
YWdlRW5jb2Rlcjo6YmFzZUVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlRW5j
b2Rlcjo6VXNlck1lc3NhZ2VFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lc3NhZ2VE
ZWNvZGVyOjpiYXNlRGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lc3NhZ2VEZWNvZGVy
OjpVc2VyTWVzc2FnZURlY29kZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJBcmNoaXZlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZTo6c3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQXJjaGl2ZTo6c3ViZnJhbWVBcmNoaXZlcyk6CisgICAgICAgICogU2hhcmVkL1dl
YkFyY2hpdmUuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQXJjaGl2ZVJlc291cmNlLmg6CisgICAg
ICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaDoKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ2VydGlmaWNhdGVJbmZvLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbm5lY3Rpb246OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb25uZWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvbm5lY3Rpb25DbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb25uZWN0aW9uQ2xpZW50OjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbm5lY3Rpb25DbGllbnQuaDoKKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVJdGVtOjpzdWJtZW51SXRlbXNBc0ltbXV0YWJsZUFycmF5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjp1c2VyRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHRNZW51SXRlbTo6c2V0VXNlckRhdGEpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb250
ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE6OnVzZXJEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YTo6c2V0VXNlckRhdGEpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmg6CisgICAgICAgICogU2hh
cmVkL1dlYkRhdGEuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViRXJyb3IuaDoKKyAgICAgICAgKiBT
aGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9XZWJHZW9t
ZXRyeS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJHcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAg
KiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAqIFNoYXJlZC9XZWJJbWFnZS5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJOdW1iZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViT3Bl
blBhbmVsUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlckxheWVyOjpjcmVhdGVBcnJheUZyb21MYXllckxp
c3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJMYXllci5oOgorICAgICAgICAqIFNoYXJl
ZC9XZWJSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJPYmplY3Q6
OldlYlJlbmRlck9iamVjdCk6CisgICAgICAgICogU2hhcmVkL1dlYlJlbmRlck9iamVjdC5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJTZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIFNoYXJlZC9X
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViU3RyaW5nLmg6
CisgICAgICAgICogU2hhcmVkL1dlYlVSTC5oOgorICAgICAgICAqIFNoYXJlZC9XZWJVUkxSZXF1
ZXN0Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlVSTFJlc3BvbnNlLmg6CisgICAgICAgICogU2hh
cmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvT2Jq
Q09iamVjdEdyYXBoLmg6CisgICAgICAgICogU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGhDb2Rl
cnMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRPYmpDT2JqZWN0R3JhcGhEZWNvZGVy
SW1wbDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVPYmpDT2JqZWN0
R3JhcGhEZWNvZGVySW1wbDo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQ
bHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tQbHVnaW5TaXRlRGF0YU1hbmFn
ZXJHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJp
dmF0ZU1hYy5tbToKKyAgICAgICAgKFdLQ29udGV4dEdldEluZm9Gb3JJbnN0YWxsZWRQbHVnSW5z
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0Lm1tOgor
ICAgICAgICAoLVtXS0JhY2tGb3J3YXJkTGlzdCBBUEk6Ol0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJdGVtLm1tOgorICAgICAgICAoLVtXS0JhY2tG
b3J3YXJkTGlzdEl0ZW0gQVBJOjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbkRhdGEubW06CisgICAgICAgICgtW1dLTmF2aWdhdGlvbkRhdGEgQVBJOjpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1tOgor
ICAgICAgICAoY3JlYXRlV0tBcnJheSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmg6CisgICAgICAgICog
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpyZWZXZWJDb250
ZXh0U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2xlYXJOb3RpZmljYXRpb25zKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3RhdGlzdGljc1JlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTdGF0aXN0aWNzUmVxdWVzdDo6Y29tcGxldGVkUmVxdWVzdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxl
bWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHk6
OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tG
b3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YWRk
SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RBc0lt
bXV0YWJsZUFycmF5V2l0aExpbWl0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0Ojpmb3J3YXJkTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZW5jb2RlTWVzc2FnZUJvZHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkZWNvZGVNZXNzYWdlQm9keSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBs
dWdpbkluZm9TdG9yZURpZExvYWRQbHVnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29u
dGV4dC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRJbmplY3RlZEJ1bmRsZUlu
aXRpYWxpemF0aW9uVXNlckRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0
ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZl
U3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50OjpnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxp
emF0aW9uVXNlckRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dFVzZXJNZXNzYWdl
Q29kZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRVc2VyTWVzc2FnZUVuY29kZXI6
OldlYkNvbnRleHRVc2VyTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0VXNlck1lc3NhZ2VFbmNvZGVyOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0VXNlck1lc3NhZ2VEZWNvZGVyOjpXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3Vw
cGxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkZXJlZldlYkNv
bnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHk6OmRpZEdldERhdGFiYXNlc0J5T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJh
c2VNYW5hZ2VyUHJveHk6OmRpZEdldERhdGFiYXNlT3JpZ2lucyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkVk
aXRDb21tYW5kUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRm9ybUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZvcm1DbGllbnQ6OndpbGxTdWJtaXRGb3JtKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViRm9ybUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJG
cmFtZUxpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0
U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR3JhbW1hckRl
dGFpbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYktleVZhbHVlU3Rv
cmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyOjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZh
bHVlU3RvcmFnZU1hbmFnZXI6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgorICAgICAgICAo
V2ViS2l0OjpkaWRHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJDbGllbnQ6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJD
bGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJDbGllbnQ6
OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlckNsaWVu
dDo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
b2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxvYWRlckNsaWVudDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxvYWRlckNsaWVudDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlVGl0bGVGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlckNsaWVudDo6ZGlkRmlyc3RMYXlvdXRG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlckNsaWVudDo6ZGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJD
bGllbnQ6OmRpZExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlckNsaWVudDo6ZGlk
UmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xp
ZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1NGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50Ojp3aWxsR29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250
ZXh0U3VwcGxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2Vy
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTmF2aWdhdGlvbkRhdGEuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkZXJlZldlYkNv
bnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFn
ZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmdldENvbnRl
eHRNZW51RnJvbVByb3Bvc2VkTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDb250ZXh0
TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZUNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlbGF0ZWRQYWdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bG9hZFVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFVSTFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRGaWxlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkUGxhaW5UZXh0U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpsb2FkV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21t
aXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWRGaW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZEZhaWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVuYWJsZVRv
SW1wbGVtZW50UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aWxsU3Vi
bWl0Rm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmRTdHJpbmdN
YXRjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwb3N0TWVzc2FnZVRvSW5q
ZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludGVybmFsU2hv
d0NvbnRleHRNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvbGljeUNsaWVudDo6dW5hYmxlVG9JbXBsZW1l
bnRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQb2xpY3lDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3Vw
cGxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVSUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVSUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4
dE1lbnVQcm94eU1hYy5tbToKKyAgICAgICAgKC1bV0tVc2VyRGF0YVdyYXBwZXIgaW5pdFdpdGhV
c2VyRGF0YTpBUEk6Ol0pOgorICAgICAgICAoLVtXS1VzZXJEYXRhV3JhcHBlciBBUEk6Ol0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgor
ICAgICAgICAoV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChj
b250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlOjpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlOjpwb3N0U3luY2hyb25vdXNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGU6Om9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZSk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbTo6Y2hpbGRyZW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51
Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Ojp3aWxsU3VibWl0Rm9ybSk6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OmRpZEFzc29jaWF0ZUZvcm1D
b250cm9scyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VGb3JtQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRh
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6c2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkUmVtb3ZlRnJhbWVGcm9t
SGllcmFyY2h5KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
OjpkaWREZXRlY3RYU1NGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ6OmRpZExheW91dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudDo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZVBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNs
aWVudDo6dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlQ29kZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyOjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcik6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRGVjb2Rlcjo6SW5qZWN0ZWRCdW5kbGVV
c2VyTWVzc2FnZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGU6OmxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOjplbmNv
ZGVNZXNzYWdlQm9keSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vz
czo6ZGVjb2RlTWVzc2FnZUJvZHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29ubmVjdGlv
blRvVUlQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6Om1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0
aGluUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFBvcFN0YXRlV2l0aGluUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQ
cm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFibGVUb0lt
cGxlbWVudFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnNob3VsZEdvVG9IaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlQmFubmVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1BhZ2VPdmVybGF5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
bnRleHRNZW51LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnU6OnNob3cpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudTo6bWVudUl0ZW1zV2l0aFVzZXJEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnU6Oml0ZW1zKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y2hpbGRGcmFt
ZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRyYWNrZWRS
ZXBhaW50UmVjdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkVVJMUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhSW1wbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2VHcm91cFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKToKKwor
MjAxMy0xMS0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAg
ICAgIFJlbW92ZSBJbW11dGFibGVBcnJheTo6aXNNdXRhYmxlCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQyNDIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmlu
ZGV4IDMyYTRjZTNiNTAxOWY2ZWNiMWY2YmFhNmYwOGQwMjhlMDZhNTM2YWMuLmI0ZDljYzc3YzYz
ZWIyMTg4MzNhZjZkZTBlMjQ3MTkyY2QxYjIxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTEx
OCw3ICsxMTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIGlmICh0b0ltcGwobmFt
ZSktPnN0cmluZygpICE9IG1lc3NhZ2VOYW1lKQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICBp
ZiAoIXRvSW1wbChib2R5KSB8fCB0b0ltcGwoYm9keSktPnR5cGUoKSAhPSBBUElPYmplY3Q6OlR5
cGVEaWN0aW9uYXJ5KQorICAgIGlmICghdG9JbXBsKGJvZHkpIHx8IHRvSW1wbChib2R5KS0+dHlw
ZSgpICE9IEFQSTo6T2JqZWN0OjpUeXBlRGljdGlvbmFyeSkKICAgICAgICAgcmV0dXJuIE5POwog
CiAgICAgY29uc3QgSW1tdXRhYmxlRGljdGlvbmFyeSogZGljdGlvbmFyeSA9IHRvSW1wbChzdGF0
aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KGJvZHkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS0FycmF5LmNwcAppbmRleCBhZWQ0MjdmOWJjNmRmYmIxYWIxMGFmMTc4M2M1YzNiMWMwMDBh
MDI0Li4yZDNhMTYzNTVjYmFiODg2ZTI1ZWQ5N2JhMGE2ZWI2ZDA5NTNkOWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tBcnJheS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwCkBAIC0zOCwyMiArMzgsMjIgQEAgV0tUeXBl
SUQgV0tBcnJheUdldFR5cGVJRCgpCiAKIFdLQXJyYXlSZWYgV0tBcnJheUNyZWF0ZShXS1R5cGVS
ZWYqIHZhbHVlcywgc2l6ZV90IG51bWJlck9mVmFsdWVzKQogewotICAgIFZlY3RvcjxSZWZQdHI8
QVBJT2JqZWN0Pj4gZWxlbWVudHM7CisgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGVs
ZW1lbnRzOwogICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZWYWx1
ZXMpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVlczsgKytpKQot
ICAgICAgICBlbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoY29uc3RfY2FzdDxBUElPYmplY3QqPihz
dGF0aWNfY2FzdDxjb25zdCBBUElPYmplY3QqPih2YWx1ZXNbaV0pKSk7CisgICAgICAgIGVsZW1l
bnRzLnVuY2hlY2tlZEFwcGVuZChjb25zdF9jYXN0PEFQSTo6T2JqZWN0Kj4oc3RhdGljX2Nhc3Q8
Y29uc3QgQVBJOjpPYmplY3QqPih2YWx1ZXNbaV0pKSk7CiAKICAgICByZXR1cm4gdG9BUEkoSW1t
dXRhYmxlQXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUoZWxlbWVudHMpKS5sZWFrUmVmKCkpOwogfQog
CiBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyhXS1R5cGVSZWYqIHZhbHVl
cywgc2l6ZV90IG51bWJlck9mVmFsdWVzKQogewotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0
Pj4gZWxlbWVudHM7CisgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGVsZW1lbnRzOwog
ICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZWYWx1ZXMpOwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVlczsgKytpKQotICAgICAgICBl
bGVtZW50cy51bmNoZWNrZWRBcHBlbmQoYWRvcHRSZWYoY29uc3RfY2FzdDxBUElPYmplY3QqPihz
dGF0aWNfY2FzdDxjb25zdCBBUElPYmplY3QqPih2YWx1ZXNbaV0pKSkpOworICAgICAgICBlbGVt
ZW50cy51bmNoZWNrZWRBcHBlbmQoYWRvcHRSZWYoY29uc3RfY2FzdDxBUEk6Ok9iamVjdCo+KHN0
YXRpY19jYXN0PGNvbnN0IEFQSTo6T2JqZWN0Kj4odmFsdWVzW2ldKSkpKTsKIAogICAgIHJldHVy
biB0b0FQSShJbW11dGFibGVBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShlbGVtZW50cykpLmxlYWtS
ZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250
ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1l
bnVJdGVtLmNwcAppbmRleCA1MzU4MzM3NDJlNjYyODhlZGVmYzE1NTZhZjJmNWMzYzgyOTliYTJj
Li4wYjQwZWI1ODk2MGQ2ODEzYTUwY2IzNDkzYjhmZjk5MzIyMGExNWQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAKQEAgLTQ0LDcg
KzQ0LDcgQEAgV0tUeXBlSUQgV0tDb250ZXh0TWVudUl0ZW1HZXRUeXBlSUQoKQogI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQogICAgIHJldHVybiB0b0FQSShXZWJDb250ZXh0TWVudUl0ZW06OkFQ
SVR5cGUpOwogI2Vsc2UKLSAgICByZXR1cm4gdG9BUEkoQVBJT2JqZWN0OjpUeXBlTnVsbCk7Cisg
ICAgcmV0dXJuIHRvQVBJKEFQSTo6T2JqZWN0OjpUeXBlTnVsbCk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCmluZGV4IDlmNDkx
OWM3NWUyODliOWVkOTUzOTViNDM1ODVkMjgxMWMzMmYzN2IuLmRjMmQ5ZDRiN2Y5OTI5N2IxZTA1
N2I4NmFiNTRlZjMyMzE0ZWJkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tTaGFyZWRBUElDYXN0LmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBXS19BRERfQVBJX01BUFBJTkco
V0tTZWN1cml0eU9yaWdpblJlZiwgV2ViU2VjdXJpdHlPcmlnaW4pCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYsIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkK
IFdLX0FERF9BUElfTUFQUElORyhXS1NpemVSZWYsIFdlYlNpemUpCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tTdHJpbmdSZWYsIFdlYlN0cmluZykKLVdLX0FERF9BUElfTUFQUElORyhXS1R5cGVSZWYs
IEFQSU9iamVjdCkKK1dLX0FERF9BUElfTUFQUElORyhXS1R5cGVSZWYsIEFQSTo6T2JqZWN0KQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLVUludDY0UmVmLCBXZWJVSW50NjQpCiBXS19BRERfQVBJX01B
UFBJTkcoV0tVUkxSZWYsIFdlYlVSTCkKIFdLX0FERF9BUElfTUFQUElORyhXS1VSTFJlcXVlc3RS
ZWYsIFdlYlVSTFJlcXVlc3QpCkBAIC0yODIsNyArMjgyLDcgQEAgaW5saW5lIFdLUG9pbnQgdG9B
UEkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQogCiAvKiBFbnVtIGNvbnZlcnNpb25z
ICovCiAKLWlubGluZSBXS1R5cGVJRCB0b0FQSShBUElPYmplY3Q6OlR5cGUgdHlwZSkKK2lubGlu
ZSBXS1R5cGVJRCB0b0FQSShBUEk6Ok9iamVjdDo6VHlwZSB0eXBlKQogewogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXS1R5cGVJRD4odHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tUeXBlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S1R5cGUuY3BwCmluZGV4IGYwZTRlYThmYjRlN2M3ZjcyM2NhNjlmZTlkZDBiYjdkMTVhMDg3ZmQu
LmJiMTY1ZTRkZDg2Y2I3OTQ5Yzg0YjBlMjlkYjgzYjE2NDhhZDllYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1R5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS1R5cGUuY3BwCkBAIC0zMywxNiArMzMsMTYgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAogV0tUeXBlSUQgV0tHZXRUeXBlSUQoV0tUeXBlUmVmIHR5cGVSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKHN0YXRpY19jYXN0PEFQSU9iamVjdCo+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KHR5cGVSZWYpKS0+dHlwZSgpKTsKKyAgICByZXR1cm4gdG9BUEkoc3RhdGljX2Nhc3Q8QVBJ
OjpPYmplY3QqPihjb25zdF9jYXN0PHZvaWQqPih0eXBlUmVmKSktPnR5cGUoKSk7CiB9CiAKIFdL
VHlwZVJlZiBXS1JldGFpbihXS1R5cGVSZWYgdHlwZVJlZikKIHsKLSAgICBzdGF0aWNfY2FzdDxB
UElPYmplY3QqPihjb25zdF9jYXN0PHZvaWQqPih0eXBlUmVmKSktPnJlZigpOworICAgIHN0YXRp
Y19jYXN0PEFQSTo6T2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4odHlwZVJlZikpLT5yZWYoKTsK
ICAgICByZXR1cm4gdHlwZVJlZjsKIH0KIAogdm9pZCBXS1JlbGVhc2UoV0tUeXBlUmVmIHR5cGVS
ZWYpCiB7Ci0gICAgc3RhdGljX2Nhc3Q8QVBJT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4odHlw
ZVJlZikpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PEFQSTo6T2JqZWN0Kj4oY29uc3RfY2Fz
dDx2b2lkKj4odHlwZVJlZikpLT5kZXJlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0
LmNwcAppbmRleCAyZmNlZTllYmYzOGRiZDVhZjJhMWZiYzIwZjE5YTMzOWYxMjI0ZTI4Li41NDlj
ODdkNjhhNmIzODJiNzUwMDU5OTlmNDAxMWVjMGZiOGE1MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJT2JqZWN0LmNwcApAQCAtMzUsOSArMzUsOSBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQg
eworbmFtZXNwYWNlIEFQSSB7CiAKLUFQSU9iamVjdDo6QVBJT2JqZWN0KCkKK09iamVjdDo6T2Jq
ZWN0KCkKIHsKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
T2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggYjI1MGFl
NzU5OGNjMzIwZmZmZGQ2YjNmMjZmMTlmYjNmMzM0ZjAyNy4uNGQxYmZlNWQ4NzNjNjkxYzcxMWZk
ZGYyNzljNWRiMzYyYmFlN2QwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtMzgs
MTEgKzM4LDExIEBACiBPQkpDX0NMQVNTIE5TT2JqZWN0OwogI2VuZGlmCiAKLW5hbWVzcGFjZSBX
ZWJLaXQgeworbmFtZXNwYWNlIEFQSSB7CiAKLWNsYXNzIEFQSU9iamVjdAorY2xhc3MgT2JqZWN0
CiAjaWYgIURFTEVHQVRFX1JFRl9DT1VOVElOR19UT19DT0NPQQotICAgIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEFQSU9iamVjdD4KKyAgICA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxPYmplY3Q+CiAjZW5kaWYKIHsKIHB1YmxpYzoKQEAgLTE1OSw3ICsxNTksNyBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICB9OwogCi0gICAgdmlydHVhbCB+QVBJT2JqZWN0KCkKKyAgICB2aXJ0
dWFsIH5PYmplY3QoKQogICAgIHsKICAgICB9CiAKQEAgLTE3Myw3ICsxNzMsNyBAQCBwdWJsaWM6
CiAjZW5kaWYgLy8gREVMRUdBVEVfUkVGX0NPVU5USU5HX1RPX0NPQ09BCiAKIHByb3RlY3RlZDoK
LSAgICBBUElPYmplY3QoKTsKKyAgICBPYmplY3QoKTsKIAogI2lmIERFTEVHQVRFX1JFRl9DT1VO
VElOR19UT19DT0NPQQogICAgIHN0YXRpYyB2b2lkKiBuZXdPYmplY3Qoc2l6ZV90LCBUeXBlKTsK
QEAgLTE4NiwxNyArMTg2LDE3IEBAIHByaXZhdGU6CiAjZW5kaWYgLy8gREVMRUdBVEVfUkVGX0NP
VU5USU5HX1RPX0NPQ09BCiB9OwogCi10ZW1wbGF0ZSA8QVBJT2JqZWN0OjpUeXBlIEFyZ3VtZW50
VHlwZT4KLWNsYXNzIFR5cGVkQVBJT2JqZWN0IDogcHVibGljIEFQSU9iamVjdCB7Cit0ZW1wbGF0
ZSA8T2JqZWN0OjpUeXBlIEFyZ3VtZW50VHlwZT4KK2NsYXNzIFR5cGVkT2JqZWN0IDogcHVibGlj
IE9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IEFyZ3Vt
ZW50VHlwZTsKIAotICAgIHZpcnR1YWwgflR5cGVkQVBJT2JqZWN0KCkKKyAgICB2aXJ0dWFsIH5U
eXBlZE9iamVjdCgpCiAgICAgewogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFR5cGVkQVBJT2Jq
ZWN0KCkKKyAgICBUeXBlZE9iamVjdCgpCiAgICAgewogICAgIH0KIApAQCAtMjA3LDcgKzIwNyw3
IEBAIHByb3RlY3RlZDoKICNlbmRpZgogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8v
IG5hbWVzcGFjZSBPYmplY3QKIAogI3VuZGVmIERFTEVHQVRFX1JFRl9DT1VOVElOR19UT19DT0NP
QQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1t
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRleCBkMzI1OGI2
NjgyZmI2YzVlN2FiYThiOGU5NmNjODBiNDM1YzA0OGQ0Li4xY2VmYTEwZmE0MjkxYjQxOWUwYTI2
MWE1NjkyZGIxMDQ0Y2M1YmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29j
b2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmpl
Y3QubW0KQEAgLTM2LDI1ICszNiwyNSBAQAogI2ltcG9ydCAiV0tOU1VSTC5oIgogI2ltcG9ydCAi
V0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmgiCiAKLW5hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNw
YWNlIEFQSSB7CiAKLXZvaWQgQVBJT2JqZWN0OjpyZWYoKQordm9pZCBPYmplY3Q6OnJlZigpCiB7
CiAgICAgW3dyYXBwZXIoKSByZXRhaW5dOwogfQogCi12b2lkIEFQSU9iamVjdDo6ZGVyZWYoKQor
dm9pZCBPYmplY3Q6OmRlcmVmKCkKIHsKICAgICBbd3JhcHBlcigpIHJlbGVhc2VdOwogfQogCi12
b2lkKiBBUElPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQordm9pZCog
T2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKIHsKICAgICBOU09iamVj
dCA8V0tPYmplY3Q+ICp3cmFwcGVyOwogCi0gICAgLy8gV3JhcHBlcnMgdGhhdCBpbmhlcml0IGZy
b20gV0tPYmplY3Qgc3RvcmUgdGhlIEFQSU9iamVjdCBpbiB0aGVpciBleHRyYSBieXRlcywgc28g
dGhleSBhcmUKKyAgICAvLyBXcmFwcGVycyB0aGF0IGluaGVyaXQgZnJvbSBXS09iamVjdCBzdG9y
ZSB0aGUgQVBJOjpPYmplY3QgaW4gdGhlaXIgZXh0cmEgYnl0ZXMsIHNvIHRoZXkgYXJlCiAgICAg
Ly8gYWxsb2NhdGVkIHVzaW5nIE5TQWxsb2NhdGVkT2JqZWN0LiBUaGUgb3RoZXIgd3JhcHBlciBj
bGFzc2VzIGNvbnRhaW4gaW5saW5lIHN0b3JhZ2UgZm9yIHRoZQotICAgIC8vIEFQSU9iamVjdCwg
c28gdGhleSBhcmUgYWxsb2NhdGVkIHVzaW5nICthbGxvYy4KKyAgICAvLyBBUEk6Ok9iamVjdCwg
c28gdGhleSBhcmUgYWxsb2NhdGVkIHVzaW5nICthbGxvYy4KIAogICAgIHN3aXRjaCAodHlwZSkg
ewogICAgIGNhc2UgVHlwZUFycmF5OgpAQCAtOTAsNyArOTAsNyBAQCB2b2lkKiBBUElPYmplY3Q6
Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKLSAgICBBUElPYmplY3QqIG9iamVjdCA9ICZ3cmFwcGVyLl9hcGlPYmplY3Q7CisgICAgT2Jq
ZWN0KiBvYmplY3QgPSAmd3JhcHBlci5fYXBpT2JqZWN0OwogICAgIG9iamVjdC0+bV93cmFwcGVy
ID0gd3JhcHBlcjsKICAgICByZXR1cm4gb2JqZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NvY29hL1dLTlNBcnJheS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b2NvYS9XS05TQXJyYXkubW0KaW5kZXggZTU0Y2FiYWYyYjI3MzA1OGQwYmY5ZjliMjkyMDMyMjM4
OTQyMmQ5Ny4uYTE1YTRmMjNmNGQ4NmNkMDU2N2Q2ZDhlY2U1YzFjODU4ZmUzYzVmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLTlNBcnJheS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV0tOU0FycmF5Lm1tCkBAIC01MCw3ICs1MCw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIC0gKGlkKW9iamVjdEF0SW5kZXg6KE5TVUludGVnZXIp
aQogewotICAgIEFQSU9iamVjdCogb2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxJbW11dGFibGVB
cnJheSo+KCZfYXJyYXkpLT5hdChpKTsKKyAgICBBUEk6Ok9iamVjdCogb2JqZWN0ID0gcmVpbnRl
cnByZXRfY2FzdDxJbW11dGFibGVBcnJheSo+KCZfYXJyYXkpLT5hdChpKTsKICAgICByZXR1cm4g
b2JqZWN0ID8gb2JqZWN0LT53cmFwcGVyKCkgOiBbTlNOdWxsIG51bGxdOwogfQogCkBAIC02Myw5
ICs2Myw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICNwcmFnbWEgbWFyayBXS09iamVj
dCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgogCi0tIChBUElPYmplY3QmKV9hcGlPYmplY3QKKy0g
KEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CiB7Ci0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PEFQSU9iamVjdCo+KCZfYXJyYXkpOworICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxBUEk6
Ok9iamVjdCo+KCZfYXJyYXkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29jb2EvV0tOU0RpY3Rpb25hcnkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29jb2EvV0tOU0RpY3Rpb25hcnkubW0KaW5kZXggOWE0MmM1MjBjYTQxYjI1YTFmYzAyZmZkMDNi
ODZhYjM2ZDRiODM0ZC4uYjhkYWVhOTdkMmJlNjgwZjI3MzE0YzAwMTUwNjE3MTM0OWY3NzEyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLTlNEaWN0aW9uYXJ5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9XS05TRGljdGlvbmFyeS5tbQpAQCAt
NjIsNyArNjIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgICAgICByZXR1cm4gbmls
OwogCiAgICAgYm9vbCBleGlzdHM7Ci0gICAgQVBJT2JqZWN0KiB2YWx1ZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SW1tdXRhYmxlRGljdGlvbmFyeSo+KCZfZGljdGlvbmFyeSktPmdldCgoTlNTdHJpbmcg
KilrZXksIGV4aXN0cyk7CisgICAgQVBJOjpPYmplY3QqIHZhbHVlID0gcmVpbnRlcnByZXRfY2Fz
dDxJbW11dGFibGVEaWN0aW9uYXJ5Kj4oJl9kaWN0aW9uYXJ5KS0+Z2V0KChOU1N0cmluZyAqKWtl
eSwgZXhpc3RzKTsKICAgICBpZiAoIWV4aXN0cykKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAt
ODcsOSArODcsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAjcHJhZ21hIG1hcmsgV0tP
YmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAotLSAoQVBJT2JqZWN0JilfYXBpT2JqZWN0
CistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogewotICAgIHJldHVybiAqcmVpbnRlcnByZXRf
Y2FzdDxBUElPYmplY3QqPigmX2RpY3Rpb25hcnkpOworICAgIHJldHVybiAqcmVpbnRlcnByZXRf
Y2FzdDxBUEk6Ok9iamVjdCo+KCZfZGljdGlvbmFyeSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9XS09iamVjdC5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0NvY29hL1dLT2JqZWN0LmgKaW5kZXggOTBiZTExYTAwMzQ0MDE5MWE4NWQ0ODE3NTc3
ZTFkMzVjMDJiNTY4My4uZjliYjAwMDU3OGIxMGVkMzkyMmEwYmRlZWMzM2ExNzI0ZmUzMTA2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLT2JqZWN0LmgKQEAgLTI3LDEzICsyNywxMyBA
QAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBBUElP
YmplY3Q7CituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIE9iamVjdDsKIH0KIAogQHByb3RvY29sIFdL
T2JqZWN0IDxOU09iamVjdD4KIAotQHByb3BlcnR5IChyZWFkb25seSkgV2ViS2l0OjpBUElPYmpl
Y3QmIF9hcGlPYmplY3Q7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBBUEk6Ok9iamVjdCYgX2FwaU9i
amVjdDsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2Ev
V0tPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV0tPYmplY3QubW0KaW5k
ZXggM2NmMzNjNTk4NGY0NWU0NTA5ODk5Njc2YTI4ZDRhNDViNjBlMTViZi4uMjAyN2ZmYzliOTQy
ODM0YTRkZjJlNWE1NjhmZjUyMzY0NzgzZmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0NvY29hL1dLT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2Nv
YS9XS09iamVjdC5tbQpAQCAtMzAsOCArMzAsNiBAQAogCiAjaW1wb3J0ICJBUElPYmplY3QuaCIK
IAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogQGltcGxlbWVudGF0aW9uIFdLT2JqZWN0IHsK
ICAgICBCT09MIF9oYXNJbml0aWFsaXplZFRhcmdldDsKICAgICBOU09iamVjdCAqX3RhcmdldDsK
QEAgLTM5LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogLSAodm9pZClkZWFs
bG9jCiB7Ci0gICAgc3RhdGljX2Nhc3Q8QVBJT2JqZWN0Kj4ob2JqZWN0X2dldEluZGV4ZWRJdmFy
cyhzZWxmKSktPn5BUElPYmplY3QoKTsKKyAgICBzdGF0aWNfY2FzdDxBUEk6Ok9iamVjdCo+KG9i
amVjdF9nZXRJbmRleGVkSXZhcnMoc2VsZikpLT5+T2JqZWN0KCk7CiAgICAgW190YXJnZXQgcmVs
ZWFzZV07CiAKICAgICBbc3VwZXIgZGVhbGxvY107CkBAIC0xMjMsOSArMTIxLDkgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGluaXRpYWxpemVUYXJnZXRJZk5lZWRlZChXS09iamVjdCAqc2VsZikKIAog
I3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCiAKLS0gKEFQSU9i
amVjdCYpX2FwaU9iamVjdAorLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIHsKLSAgICByZXR1
cm4gKnN0YXRpY19jYXN0PEFQSU9iamVjdCo+KG9iamVjdF9nZXRJbmRleGVkSXZhcnMoc2VsZikp
OworICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8QVBJOjpPYmplY3QqPihvYmplY3RfZ2V0SW5kZXhl
ZEl2YXJzKHNlbGYpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0ltbXV0YWJsZUFycmF5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVB
cnJheS5jcHAKaW5kZXggYmMwMWE2NTdiZmFkMmZkYjMwYjVlNTFhZDc0OTEyZTY2MjdmNWU2ZC4u
MDUzMWQ5ODU4Mjc0ZDRiYWJkZTdmYzlkOTA2YjZhZWY1NjRjNTgyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXkuY3BwCkBAIC0zMiwxNyArMzIsMTcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IEltbXV0YWJsZUFycmF5Ojpj
cmVhdGUoKQogewotICAgIHJldHVybiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+Pigp
KTsKKyAgICByZXR1cm4gY3JlYXRlKFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PigpKTsKIH0K
IAotUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZShWZWN0
b3I8UmVmUHRyPEFQSU9iamVjdD4+IGVsZW1lbnRzKQorUGFzc1JlZlB0cjxJbW11dGFibGVBcnJh
eT4gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gZWxl
bWVudHMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbW11dGFibGVBcnJheShzdGQ6Om1v
dmUoZWxlbWVudHMpKSk7CiB9CiAKIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IEltbXV0YWJs
ZUFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5ncykK
IHsKLSAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+IGVsZW1lbnRzOworICAgIFZlY3RvcjxS
ZWZQdHI8QVBJOjpPYmplY3Q+PiBlbGVtZW50czsKICAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHN0cmluZ3Muc2l6ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgc3RyaW5n
IDogc3RyaW5ncykKQEAgLTUxLDcgKzUxLDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4g
SW1tdXRhYmxlQXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmcKICAg
ICByZXR1cm4gY3JlYXRlKHN0ZDo6bW92ZShlbGVtZW50cykpOwogfQogCi1JbW11dGFibGVBcnJh
eTo6SW1tdXRhYmxlQXJyYXkoVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBlbGVtZW50cykKK0lt
bXV0YWJsZUFycmF5OjpJbW11dGFibGVBcnJheShWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
ZWxlbWVudHMpCiAgICAgOiBtX2VsZW1lbnRzKHN0ZDo6bW92ZShlbGVtZW50cykpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5oCmluZGV4IDc0NzBkYzNmZjIwNTJmZDBk
OWVjNTI1ZWNkMDAxOTFhNjY0ZjNlOWQuLjkxNjI0ZjgzNGQwNDFlNTM3MzFlY2YzZmM5MWM2MTkw
Mzg2MzVhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJh
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5oCkBAIC0zNSwx
MCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIEltbXV0YWJsZUFycmF5IC0gQW4g
aW1tdXRhYmxlIGFycmF5IHR5cGUgc3VpdGFibGUgZm9yIHZlbmRpbmcgdG8gYW4gQVBJLgogCi1j
bGFzcyBJbW11dGFibGVBcnJheSBGSU5BTCA6IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmpl
Y3Q6OlR5cGVBcnJheT4geworY2xhc3MgSW1tdXRhYmxlQXJyYXkgRklOQUwgOiBwdWJsaWMgQVBJ
OjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZUFycmF5PiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEltbXV0YWJsZUFycmF5PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBl
bGVtZW50cyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGNyZWF0ZShW
ZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gZWxlbWVudHMpOwogCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGNyZWF0ZVN0cmluZ0FycmF5KGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik7CiAKQEAgLTUzLDE2ICs1MywxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUKj4obV9lbGVtZW50c1tpXS5nZXQoKSk7CiAgICAgfQogCi0gICAgQVBJT2JqZWN0
KiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50c1tpXS5nZXQoKTsgfQorICAg
IEFQSTo6T2JqZWN0KiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50c1tpXS5n
ZXQoKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50cy5zaXpl
KCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4mIGVsZW1lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0
Pj4mIGVsZW1lbnRzKCkgeyByZXR1cm4gbV9lbGVtZW50czsgfQorICAgIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8QVBJOjpPYmplY3Q+PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRz
OyB9CisgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBlbGVtZW50cygpIHsgcmV0dXJu
IG1fZWxlbWVudHM7IH0KIAogcHJvdGVjdGVkOgotICAgIEltbXV0YWJsZUFycmF5KFZlY3RvcjxS
ZWZQdHI8QVBJT2JqZWN0Pj4gZWxlbWVudHMpOworICAgIEltbXV0YWJsZUFycmF5KFZlY3RvcjxS
ZWZQdHI8QVBJOjpPYmplY3Q+PiBlbGVtZW50cyk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFQSU9i
amVjdD4+IG1fZWxlbWVudHM7CisgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IG1fZWxl
bWVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5LmNwcAppbmRleCBhOTg5MWFkNzU1ODZlMWY1ZGEyMDM5
Y2EyN2NmNGNhMjk2M2ViYTFhLi5mMzI3Njg4MzU1NmZlNjQ1MDYxNWZhMWI3NmNmZmMxNmI1NDkz
ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFy
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZURpY3Rpb25hcnkuY3Bw
CkBAIC00OSw3ICs0OSw3IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IEltbXV0YWJsZURp
Y3Rpb25hcnk6OmtleXMoKSBjb25zdAogICAgIGlmIChtX21hcC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBJbW11dGFibGVBcnJheTo6Y3JlYXRlKCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFQ
SU9iamVjdD4+IGtleXM7CisgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGtleXM7CiAg
ICAga2V5cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fbWFwLnNpemUoKSk7CiAKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGtleSA6IG1fbWFwLmtleXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
SW1tdXRhYmxlRGljdGlvbmFyeS5oCmluZGV4IGMzODBkMzNlMDE5NTZiODg5OTU1NDM5NDFkNDFl
NTFjMDEzMGYyZTguLjg5MjQ3MDIwZmJjNDlhNGNmNTRlZjg0YjAwYjMzNTQ1ZTc2MGRlMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZURpY3Rpb25hcnkuaApAQCAtMzgsOSAr
MzgsOSBAQCBjbGFzcyBJbW11dGFibGVBcnJheTsKIAogLy8gSW1tdXRhYmxlRGljdGlvbmFyeSAt
IEFuIGltbXV0YWJsZSBkaWN0aW9uYXJ5IHR5cGUgc3VpdGFibGUgZm9yIHZlbmRpbmcgdG8gYW4g
QVBJLgogCi1jbGFzcyBJbW11dGFibGVEaWN0aW9uYXJ5IDogcHVibGljIFR5cGVkQVBJT2JqZWN0
PEFQSU9iamVjdDo6VHlwZURpY3Rpb25hcnk+IHsKK2NsYXNzIEltbXV0YWJsZURpY3Rpb25hcnkg
OiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZURpY3Rpb25hcnk+IHsK
IHB1YmxpYzoKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJT2JqZWN0Pj4g
TWFwVHlwZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpPYmplY3Q+
PiBNYXBUeXBlOwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4g
Y3JlYXRlKCkKICAgICB7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgIFQqIGdldChjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKICAgICB7Ci0g
ICAgICAgIFJlZlB0cjxBUElPYmplY3Q+IGl0ZW0gPSBtX21hcC5nZXQoa2V5KTsKKyAgICAgICAg
UmVmUHRyPEFQSTo6T2JqZWN0PiBpdGVtID0gbV9tYXAuZ2V0KGtleSk7CiAgICAgICAgIGlmICgh
aXRlbSkKICAgICAgICAgICAgIHJldHVybiAwOwogCkBAIC02OCwxMiArNjgsMTIgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KGl0ZW0uZ2V0KCkpOwogICAgIH0KIAot
ICAgIEFQSU9iamVjdCogZ2V0KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAorICAgIEFQSTo6T2Jq
ZWN0KiBnZXQoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
bV9tYXAuZ2V0KGtleSk7CiAgICAgfQogCi0gICAgQVBJT2JqZWN0KiBnZXQoY29uc3QgU3RyaW5n
JiBrZXksIGJvb2wmIGV4aXN0cykgY29uc3QKKyAgICBBUEk6Ok9iamVjdCogZ2V0KGNvbnN0IFN0
cmluZyYga2V5LCBib29sJiBleGlzdHMpIGNvbnN0CiAgICAgewogICAgICAgICBhdXRvIGl0ID0g
bV9tYXAuZmluZChrZXkpOwogICAgICAgICBleGlzdHMgPSBpdCAhPSBtX21hcC5lbmQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlRGljdGlvbmFyeS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3BwCmluZGV4IDM4YmYxYjUx
ZDY0NWRmNDUzNGE2NDM5Mjg5YjkyOWE5MGQ1MWIyYTcuLjEwODRjNmU1MGJlY2Q4Y2VkM2UxNzIx
YWFiNWYxNjUyNzE0ZGEzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRh
YmxlRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL011dGFibGVEaWN0
aW9uYXJ5LmNwcApAQCAtMzYsMTMgKzM2LDEzIEBAIE11dGFibGVEaWN0aW9uYXJ5Ojp+TXV0YWJs
ZURpY3Rpb25hcnkoKQogewogfQogCi1ib29sIE11dGFibGVEaWN0aW9uYXJ5OjphZGQoY29uc3Qg
U3RyaW5nJiBrZXksIFBhc3NSZWZQdHI8QVBJT2JqZWN0PiBpdGVtKQorYm9vbCBNdXRhYmxlRGlj
dGlvbmFyeTo6YWRkKGNvbnN0IFN0cmluZyYga2V5LCBQYXNzUmVmUHRyPEFQSTo6T2JqZWN0PiBp
dGVtKQogewogICAgIE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBp
dGVtKTsKICAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiB9CiAKLWJvb2wgTXV0YWJsZURp
Y3Rpb25hcnk6OnNldChjb25zdCBTdHJpbmcmIGtleSwgUGFzc1JlZlB0cjxBUElPYmplY3Q+IGl0
ZW0pCitib29sIE11dGFibGVEaWN0aW9uYXJ5OjpzZXQoY29uc3QgU3RyaW5nJiBrZXksIFBhc3NS
ZWZQdHI8QVBJOjpPYmplY3Q+IGl0ZW0pCiB7CiAgICAgTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1fbWFwLnNldChrZXksIGl0ZW0pOwogICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlRGljdGlvbmFyeS5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL011dGFibGVEaWN0aW9uYXJ5LmgKaW5kZXggYzU5ZDc2Yjhi
NDEyNmQwOTdlZmY2NDlmN2JhOTU3NjkxN2QyYWQzOS4uZWMzOWU3MDUwNTgxNzU1MWMyOGQ1OWIy
NzYyMjU0MjVkNzY5ZmU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL011dGFi
bGVEaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL011dGFibGVEaWN0aW9u
YXJ5LmgKQEAgLTQxLDggKzQxLDggQEAgcHVibGljOgogCiAgICAgfk11dGFibGVEaWN0aW9uYXJ5
KCk7CiAKLSAgICBib29sIGFkZChjb25zdCBTdHJpbmcmIGtleSwgUGFzc1JlZlB0cjxBUElPYmpl
Y3Q+KTsKLSAgICBib29sIHNldChjb25zdCBTdHJpbmcmIGtleSwgUGFzc1JlZlB0cjxBUElPYmpl
Y3Q+KTsKKyAgICBib29sIGFkZChjb25zdCBTdHJpbmcmIGtleSwgUGFzc1JlZlB0cjxBUEk6Ok9i
amVjdD4pOworICAgIGJvb2wgc2V0KGNvbnN0IFN0cmluZyYga2V5LCBQYXNzUmVmUHRyPEFQSTo6
T2JqZWN0Pik7CiAgICAgdm9pZCByZW1vdmUoY29uc3QgU3RyaW5nJiBrZXkpOwogCiAgICAgdmly
dHVhbCBib29sIGlzTXV0YWJsZSgpIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggNGI2MTI1OTgwYWE5YTUyMjg2ZTdk
ZDI1NzI4NTRlZmIwMzEwYzZmOC4uMDAwMjJlMzU3YzZiZGM3MzczOGNjZDkzZDUwOWQ5NzIwODEw
OTg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAK
QEAgLTc3LDExICs3NywxMSBAQCB2b2lkIHBlcmZvcm1BUElDYWxsYmFja1dpdGhTZWN1cml0eU9y
aWdpbkRhdGFWZWN0b3IoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gc2VjdXJpdHlP
cmlnaW5zOworICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7
CiAgICAgc2VjdXJpdHlPcmlnaW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2luRGF0YXMu
c2l6ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFz
KSB7Ci0gICAgICAgIFJlZlB0cjxBUElPYmplY3Q+IG9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUob3JpZ2luRGF0YS5wcm90b2NvbCwgb3JpZ2luRGF0YS5ob3N0LCBvcmlnaW5EYXRh
LnBvcnQpOworICAgICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IG9yaWdpbiA9IFdlYlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUob3JpZ2luRGF0YS5wcm90b2NvbCwgb3JpZ2luRGF0YS5ob3N0LCBvcmln
aW5EYXRhLnBvcnQpOwogICAgICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBzZWN1cml0eU9yaWdpbnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bW92ZShvcmln
aW4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVy
cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmgKaW5kZXggYTY1
MTk0NTRjOGU0MTdkMjViODk2NWYxZWM0NGIwNTgyMjMzNjdkZC4uNmU1OGM5ZjcyNTBjMTJiODM1
MGU5YTk2MThlNDJlNzk0NzRiZmIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1VzZXJNZXNzYWdlQ29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNz
YWdlQ29kZXJzLmgKQEAgLTcxLDEwICs3MSwxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHRlbXBs
YXRlPHR5cGVuYW1lIE93bmVyPgogY2xhc3MgVXNlck1lc3NhZ2VFbmNvZGVyIHsKIHB1YmxpYzoK
LSAgICBib29sIGJhc2VFbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBB
UElPYmplY3Q6OlR5cGUmIHR5cGUpIGNvbnN0CisgICAgYm9vbCBiYXNlRW5jb2RlKENvcmVJUEM6
OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgQVBJOjpPYmplY3Q6OlR5cGUmIHR5cGUpIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAoIW1fcm9vdCkgewotICAgICAgICAgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oQVBJT2JqZWN0OjpUeXBlTnVsbCk7CisgICAgICAgICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90PihBUEk6Ok9iamVjdDo6VHlwZU51bGwpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtODIsMTQgKzgyLDE0IEBA
IHB1YmxpYzoKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odHlwZSk7
CiAKICAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBl
QXJyYXk6IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZUFycmF5OiB7CiAgICAgICAg
ICAgICBJbW11dGFibGVBcnJheSogYXJyYXkgPSBzdGF0aWNfY2FzdDxJbW11dGFibGVBcnJheSo+
KG1fcm9vdCk7CiAgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihh
cnJheS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXkt
PnNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIGVuY29kZXIgPDwgT3duZXIoYXJyYXktPmF0
KGkpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
QVBJT2JqZWN0OjpUeXBlRGljdGlvbmFyeTogeworICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpU
eXBlRGljdGlvbmFyeTogewogICAgICAgICAgICAgSW1tdXRhYmxlRGljdGlvbmFyeSogZGljdGlv
bmFyeSA9IHN0YXRpY19jYXN0PEltbXV0YWJsZURpY3Rpb25hcnkqPihtX3Jvb3QpOwogICAgICAg
ICAgICAgY29uc3QgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSYgbWFwID0gZGljdGlvbmFy
eS0+bWFwKCk7CiAgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Piht
YXAuc2l6ZSgpKTsKQEAgLTEwMiw0NCArMTAyLDQ0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJT2Jq
ZWN0OjpUeXBlU3RyaW5nOiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGVTdHJpbmc6
IHsKICAgICAgICAgICAgIFdlYlN0cmluZyogc3RyaW5nID0gc3RhdGljX2Nhc3Q8V2ViU3RyaW5n
Kj4obV9yb290KTsKICAgICAgICAgICAgIGVuY29kZXIgPDwgc3RyaW5nLT5zdHJpbmcoKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJT2JqZWN0
OjpUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlOiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6
OlR5cGVTZXJpYWxpemVkU2NyaXB0VmFsdWU6IHsKICAgICAgICAgICAgIFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogc2NyaXB0VmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWUqPihtX3Jvb3QpOwogICAgICAgICAgICAgZW5jb2RlciA8PCBzY3JpcHRWYWx1ZS0+ZGF0
YVJlZmVyZW5jZSgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAg
ICAgY2FzZSBBUElPYmplY3Q6OlR5cGVCb29sZWFuOiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmpl
Y3Q6OlR5cGVCb29sZWFuOiB7CiAgICAgICAgICAgICBXZWJCb29sZWFuKiBib29sZWFuT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8V2ViQm9vbGVhbio+KG1fcm9vdCk7CiAgICAgICAgICAgICBlbmNvZGVy
IDw8IGJvb2xlYW5PYmplY3QtPnZhbHVlKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQotICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZURvdWJsZTogeworICAgICAgICBj
YXNlIEFQSTo6T2JqZWN0OjpUeXBlRG91YmxlOiB7CiAgICAgICAgICAgICBXZWJEb3VibGUqIGRv
dWJsZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkRvdWJsZSo+KG1fcm9vdCk7CiAgICAgICAgICAg
ICBlbmNvZGVyIDw8IGRvdWJsZU9iamVjdC0+dmFsdWUoKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlVUludDY0OiB7Cisg
ICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGVVSW50NjQ6IHsKICAgICAgICAgICAgIFdlYlVJ
bnQ2NCogdWludDY0T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViVUludDY0Kj4obV9yb290KTsKICAg
ICAgICAgICAgIGVuY29kZXIgPDwgdWludDY0T2JqZWN0LT52YWx1ZSgpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVQb2lu
dDogeworICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlUG9pbnQ6IHsKICAgICAgICAgICAg
IFdlYlBvaW50KiBwb2ludE9iamVjdCA9IHN0YXRpY19jYXN0PFdlYlBvaW50Kj4obV9yb290KTsK
ICAgICAgICAgICAgIGVuY29kZXIgPDwgcG9pbnRPYmplY3QtPnBvaW50KCkueDsKICAgICAgICAg
ICAgIGVuY29kZXIgPDwgcG9pbnRPYmplY3QtPnBvaW50KCkueTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlU2l6ZTogewor
ICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlU2l6ZTogewogICAgICAgICAgICAgV2ViU2l6
ZSogc2l6ZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYlNpemUqPihtX3Jvb3QpOwogICAgICAgICAg
ICAgZW5jb2RlciA8PCBzaXplT2JqZWN0LT5zaXplKCkud2lkdGg7CiAgICAgICAgICAgICBlbmNv
ZGVyIDw8IHNpemVPYmplY3QtPnNpemUoKS5oZWlnaHQ7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVJlY3Q6IHsKKyAgICAg
ICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZVJlY3Q6IHsKICAgICAgICAgICAgIFdlYlJlY3QqIHJl
Y3RPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJSZWN0Kj4obV9yb290KTsKICAgICAgICAgICAgIGVu
Y29kZXIgPDwgcmVjdE9iamVjdC0+cmVjdCgpLm9yaWdpbi54OwogICAgICAgICAgICAgZW5jb2Rl
ciA8PCByZWN0T2JqZWN0LT5yZWN0KCkub3JpZ2luLnk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgZW5jb2RlciA8PCByZWN0T2JqZWN0LT5yZWN0KCkuc2l6ZS5oZWln
aHQ7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFQ
SU9iamVjdDo6VHlwZVJlbmRlckxheWVyOiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5
cGVSZW5kZXJMYXllcjogewogICAgICAgICAgICAgV2ViUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVy
ID0gc3RhdGljX2Nhc3Q8V2ViUmVuZGVyTGF5ZXIqPihtX3Jvb3QpOwogICAgICAgICAgICAgZW5j
b2RlciA8PCBPd25lcihyZW5kZXJMYXllci0+cmVuZGVyZXIoKSk7CiAgICAgICAgICAgICBlbmNv
ZGVyIDw8IHJlbmRlckxheWVyLT5pc1JlZmxlY3Rpb24oKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBlbmNvZGVyIDw8IE93bmVyKHJlbmRlckxheWVyLT5wb3NpdGl2
ZVpPcmRlckxpc3QoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAg
ICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVJlbmRlck9iamVjdDogeworICAgICAgICBjYXNlIEFQ
STo6T2JqZWN0OjpUeXBlUmVuZGVyT2JqZWN0OiB7CiAgICAgICAgICAgICBXZWJSZW5kZXJPYmpl
Y3QqIHJlbmRlck9iamVjdCA9IHN0YXRpY19jYXN0PFdlYlJlbmRlck9iamVjdCo+KG1fcm9vdCk7
CiAgICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlck9iamVjdC0+bmFtZSgpOwogICAgICAgICAg
ICAgZW5jb2RlciA8PCByZW5kZXJPYmplY3QtPmVsZW1lbnRUYWdOYW1lKCk7CkBAIC0xNzEsMjcg
KzE3MSwyNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBlbmNvZGVyIDw8IE93bmVyKHJlbmRlck9i
amVjdC0+Y2hpbGRyZW4oKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQotICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVVSTDogeworICAgICAgICBjYXNlIEFQ
STo6T2JqZWN0OjpUeXBlVVJMOiB7CiAgICAgICAgICAgICBXZWJVUkwqIHVybE9iamVjdCA9IHN0
YXRpY19jYXN0PFdlYlVSTCo+KG1fcm9vdCk7CiAgICAgICAgICAgICBlbmNvZGVyIDw8IHVybE9i
amVjdC0+c3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAg
ICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVVSTFJlcXVlc3Q6IHsKKyAgICAgICAgY2FzZSBBUEk6
Ok9iamVjdDo6VHlwZVVSTFJlcXVlc3Q6IHsKICAgICAgICAgICAgIFdlYlVSTFJlcXVlc3QqIHVy
bFJlcXVlc3RPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJVUkxSZXF1ZXN0Kj4obV9yb290KTsKICAg
ICAgICAgICAgIGVuY29kZXIgPDwgdXJsUmVxdWVzdE9iamVjdC0+cmVzb3VyY2VSZXF1ZXN0KCk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFQSU9i
amVjdDo6VHlwZVVSTFJlc3BvbnNlOiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGVV
UkxSZXNwb25zZTogewogICAgICAgICAgICAgV2ViVVJMUmVzcG9uc2UqIHVybFJlc3BvbnNlT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8V2ViVVJMUmVzcG9uc2UqPihtX3Jvb3QpOwogICAgICAgICAgICAg
ZW5jb2RlciA8PCB1cmxSZXNwb25zZU9iamVjdC0+cmVzb3VyY2VSZXNwb25zZSgpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5
cGVVc2VyQ29udGVudFVSTFBhdHRlcm46IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlw
ZVVzZXJDb250ZW50VVJMUGF0dGVybjogewogICAgICAgICAgICAgV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuKiB1cmxQYXR0ZXJuID0gc3RhdGljX2Nhc3Q8V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
Kj4obV9yb290KTsKICAgICAgICAgICAgIGVuY29kZXIgPDwgdXJsUGF0dGVybi0+cGF0dGVyblN0
cmluZygpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBBUElPYmplY3Q6OlR5cGVJbWFnZTogeworICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBl
SW1hZ2U6IHsKICAgICAgICAgICAgIFdlYkltYWdlKiBpbWFnZSA9IHN0YXRpY19jYXN0PFdlYklt
YWdlKj4obV9yb290KTsKIAogICAgICAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFu
ZGxlOwpAQCAtMjA4LDE3ICsyMDgsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgZW5jb2RlciA8
PCBoYW5kbGU7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBj
YXNlIEFQSU9iamVjdDo6VHlwZURhdGE6IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlw
ZURhdGE6IHsKICAgICAgICAgICAgIFdlYkRhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJEYXRh
Kj4obV9yb290KTsKICAgICAgICAgICAgIGVuY29kZXIgPDwgZGF0YS0+ZGF0YVJlZmVyZW5jZSgp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBUElP
YmplY3Q6OlR5cGVDZXJ0aWZpY2F0ZUluZm86IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6
VHlwZUNlcnRpZmljYXRlSW5mbzogewogICAgICAgICAgICAgV2ViQ2VydGlmaWNhdGVJbmZvKiBj
ZXJ0aWZpY2F0ZUluZm8gPSBzdGF0aWNfY2FzdDxXZWJDZXJ0aWZpY2F0ZUluZm8qPihtX3Jvb3Qp
OwogICAgICAgICAgICAgZW5jb2RlciA8PCBjZXJ0aWZpY2F0ZUluZm8tPnBsYXRmb3JtQ2VydGlm
aWNhdGVJbmZvKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAg
ICBjYXNlIEFQSU9iamVjdDo6VHlwZUVycm9yOiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6
OlR5cGVFcnJvcjogewogICAgICAgICAgICAgV2ViRXJyb3IqIGVycm9yT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8V2ViRXJyb3IqPihtX3Jvb3QpOwogICAgICAgICAgICAgZW5jb2RlciA8PCBlcnJvck9i
amVjdC0+cGxhdGZvcm1FcnJvcigpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMzEs
MTIgKzIzMSwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVXNlck1lc3Nh
Z2VFbmNvZGVyKEFQSU9iamVjdCogcm9vdCkgCisgICAgVXNlck1lc3NhZ2VFbmNvZGVyKEFQSTo6
T2JqZWN0KiByb290KSAKICAgICAgICAgOiBtX3Jvb3Qocm9vdCkKICAgICB7CiAgICAgfQogCi0g
ICAgQVBJT2JqZWN0KiBtX3Jvb3Q7CisgICAgQVBJOjpPYmplY3QqIG1fcm9vdDsKIH07CiAKIApA
QCAtMjYwLDIzICsyNjAsMjMgQEAgcHJvdGVjdGVkOgogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXI+
CiBjbGFzcyBVc2VyTWVzc2FnZURlY29kZXIgewogcHVibGljOgotICAgIHN0YXRpYyBib29sIGJh
c2VEZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBPd25lciYgY29kZXIs
IEFQSU9iamVjdDo6VHlwZSYgdHlwZSkKKyAgICBzdGF0aWMgYm9vbCBiYXNlRGVjb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgT3duZXImIGNvZGVyLCBBUEk6Ok9iamVjdDo6
VHlwZSYgdHlwZSkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IHR5cGVBc1VJbnQzMjsKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlQXNVSW50MzIpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxBUElPYmplY3Q6OlR5cGU+KHR5
cGVBc1VJbnQzMik7CisgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxBUEk6Ok9iamVjdDo6VHlw
ZT4odHlwZUFzVUludDMyKTsKIAogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2Fz
ZSBBUElPYmplY3Q6OlR5cGVBcnJheTogeworICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBl
QXJyYXk6IHsKICAgICAgICAgICAgIHVpbnQ2NF90IHNpemU7CiAgICAgICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHNpemUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiB2ZWN0b3I7CisgICAgICAgICAgICBW
ZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gdmVjdG9yOwogICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8QVBJT2Jq
ZWN0PiBlbGVtZW50OworICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gZWxlbWVu
dDsKICAgICAgICAgICAgICAgICBPd25lciBtZXNzYWdlQ29kZXIoY29kZXIsIGVsZW1lbnQpOwog
ICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZUNvZGVyKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IEltbXV0YWJsZUFycmF5OjpjcmVhdGUoc3RkOjpt
b3ZlKHZlY3RvcikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBBUElPYmplY3Q6OlR5cGVEaWN0aW9uYXJ5OiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6
OlR5cGVEaWN0aW9uYXJ5OiB7CiAgICAgICAgICAgICB1aW50NjRfdCBzaXplOwogICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yOTcsNyArMjk3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoa2V5KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgICAgICAgICAgUmVmUHRyPEFQSU9iamVjdD4gZWxlbWVudDsKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8QVBJOjpPYmplY3Q+IGVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgT3duZXIgbWVz
c2FnZUNvZGVyKGNvZGVyLCBlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKG1lc3NhZ2VDb2RlcikpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTMxMCwxNCArMzEwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9
IEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1hcCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQotICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVN0cmluZzogeworICAgICAgICBj
YXNlIEFQSTo6T2JqZWN0OjpUeXBlU3RyaW5nOiB7CiAgICAgICAgICAgICBTdHJpbmcgc3RyaW5n
OwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IFdlYlN0cmluZzo6
Y3JlYXRlKHN0cmluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBj
YXNlIEFQSU9iamVjdDo6VHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTogeworICAgICAgICBjYXNl
IEFQSTo6T2JqZWN0OjpUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlOiB7CiAgICAgICAgICAgICBD
b3JlSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAgICAgICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTMyNiwyOCArMzI2LDI4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNvZGVyLm1fcm9v
dCA9IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQodmVjdG9yKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlRG91YmxlOiB7
CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGVEb3VibGU6IHsKICAgICAgICAgICAgIGRv
dWJsZSB2YWx1ZTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IFdl
YkRvdWJsZTo6Y3JlYXRlKHZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlVUludDY0OiB7CisgICAgICAgIGNhc2UgQVBJOjpP
YmplY3Q6OlR5cGVVSW50NjQ6IHsKICAgICAgICAgICAgIHVpbnQ2NF90IHZhbHVlOwogICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgY29kZXIubV9yb290ID0gV2ViVUludDY0OjpjcmVhdGUodmFs
dWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBUElPYmpl
Y3Q6OlR5cGVCb29sZWFuOiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGVCb29sZWFu
OiB7CiAgICAgICAgICAgICBib29sIHZhbHVlOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
Y29kZXIubV9yb290ID0gV2ViQm9vbGVhbjo6Y3JlYXRlKHZhbHVlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlU2l6ZTogeworICAg
ICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlU2l6ZTogewogICAgICAgICAgICAgZG91YmxlIHdp
ZHRoOwogICAgICAgICAgICAgZG91YmxlIGhlaWdodDsKICAgICAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUod2lkdGgpKQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IGNvZGVyLm1fcm9vdCA9IFdlYlNpemU6OmNyZWF0ZShXS1NpemVNYWtlKHdpZHRoLCBoZWlnaHQp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJT2JqZWN0
OjpUeXBlUG9pbnQ6IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZVBvaW50OiB7CiAg
ICAgICAgICAgICBkb3VibGUgeDsKICAgICAgICAgICAgIGRvdWJsZSB5OwogICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh4KSkKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBjb2Rlci5tX3Jvb3QgPSBXZWJQb2ludDo6Y3JlYXRlKFdLUG9pbnRNYWtlKHgsIHkp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJT2JqZWN0
OjpUeXBlUmVjdDogeworICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlUmVjdDogewogICAg
ICAgICAgICAgZG91YmxlIHg7CiAgICAgICAgICAgICBkb3VibGUgeTsKICAgICAgICAgICAgIGRv
dWJsZSB3aWR0aDsKQEAgLTM4MywyMSArMzgzLDIxIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNv
ZGVyLm1fcm9vdCA9IFdlYlJlY3Q6OmNyZWF0ZShXS1JlY3RNYWtlKHgsIHksIHdpZHRoLCBoZWln
aHQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJT2Jq
ZWN0OjpUeXBlUmVuZGVyTGF5ZXI6IHsKLSAgICAgICAgICAgIFJlZlB0cjxBUElPYmplY3Q+IHJl
bmRlcmVyOworICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlUmVuZGVyTGF5ZXI6IHsKKyAg
ICAgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gcmVuZGVyZXI7CiAgICAgICAgICAgICBib29s
IGlzUmVmbGVjdGlvbjsKICAgICAgICAgICAgIGJvb2wgaXNDbGlwcGluZzsKICAgICAgICAgICAg
IGJvb2wgaXNDbGlwcGVkOwogICAgICAgICAgICAgdWludDMyX3QgY29tcG9zaXRpbmdMYXllclR5
cGVBc1VJbnQzMjsKICAgICAgICAgICAgIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGlu
Z0JveDsKLSAgICAgICAgICAgIFJlZlB0cjxBUElPYmplY3Q+IG5lZ2F0aXZlWk9yZGVyTGlzdDsK
LSAgICAgICAgICAgIFJlZlB0cjxBUElPYmplY3Q+IG5vcm1hbEZsb3dMaXN0OwotICAgICAgICAg
ICAgUmVmUHRyPEFQSU9iamVjdD4gcG9zaXRpdmVaT3JkZXJMaXN0OworICAgICAgICAgICAgUmVm
UHRyPEFQSTo6T2JqZWN0PiBuZWdhdGl2ZVpPcmRlckxpc3Q7CisgICAgICAgICAgICBSZWZQdHI8
QVBJOjpPYmplY3Q+IG5vcm1hbEZsb3dMaXN0OworICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiBwb3NpdGl2ZVpPcmRlckxpc3Q7CiAKICAgICAgICAgICAgIE93bmVyIHJlbmRlcmVyQ29k
ZXIoY29kZXIsIHJlbmRlcmVyKTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVu
ZGVyZXJDb2RlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
aWYgKHJlbmRlcmVyLT50eXBlKCkgIT0gQVBJT2JqZWN0OjpUeXBlUmVuZGVyT2JqZWN0KQorICAg
ICAgICAgICAgaWYgKHJlbmRlcmVyLT50eXBlKCkgIT0gQVBJOjpPYmplY3Q6OlR5cGVSZW5kZXJP
YmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShpc1JlZmxlY3Rpb24pKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTQyMywxNCArNDIzLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBzdGF0aWNf
cG9pbnRlcl9jYXN0PEltbXV0YWJsZUFycmF5Pihwb3NpdGl2ZVpPcmRlckxpc3QpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlUmVu
ZGVyT2JqZWN0OiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGVSZW5kZXJPYmplY3Q6
IHsKICAgICAgICAgICAgIFN0cmluZyBuYW1lOwogICAgICAgICAgICAgU3RyaW5nIGVsZW1lbnRU
YWdOYW1lOwogICAgICAgICAgICAgU3RyaW5nIGVsZW1lbnRJRDsKLSAgICAgICAgICAgIFJlZlB0
cjxBUElPYmplY3Q+IGVsZW1lbnRDbGFzc05hbWVzOworICAgICAgICAgICAgUmVmUHRyPEFQSTo6
T2JqZWN0PiBlbGVtZW50Q2xhc3NOYW1lczsKICAgICAgICAgICAgIFdlYkNvcmU6OkludFBvaW50
IGFic29sdXRlUG9zaXRpb247CiAgICAgICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVj
dDsKLSAgICAgICAgICAgIFJlZlB0cjxBUElPYmplY3Q+IGNoaWxkcmVuOworICAgICAgICAgICAg
UmVmUHRyPEFQSTo6T2JqZWN0PiBjaGlsZHJlbjsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShuYW1lKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC00NDgsNDAgKzQ0OCw0MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBPd25lciBtZXNzYWdl
Q29kZXIoY29kZXIsIGNoaWxkcmVuKTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bWVzc2FnZUNvZGVyKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4tPnR5cGUoKSAhPSBBUElPYmplY3Q6OlR5cGVBcnJh
eSkKKyAgICAgICAgICAgIGlmIChjaGlsZHJlbiAmJiBjaGlsZHJlbi0+dHlwZSgpICE9IEFQSTo6
T2JqZWN0OjpUeXBlQXJyYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgY29kZXIubV9yb290ID0gV2ViUmVuZGVyT2JqZWN0OjpjcmVhdGUobmFtZSwgZWxlbWVu
dFRhZ05hbWUsIGVsZW1lbnRJRCwgc3RhdGljX3BvaW50ZXJfY2FzdDxJbW11dGFibGVBcnJheT4o
ZWxlbWVudENsYXNzTmFtZXMpLCBhYnNvbHV0ZVBvc2l0aW9uLCBmcmFtZVJlY3QsIHN0YXRpY19w
b2ludGVyX2Nhc3Q8SW1tdXRhYmxlQXJyYXk+KGNoaWxkcmVuKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVVSTDogeworICAgICAg
ICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlVVJMOiB7CiAgICAgICAgICAgICBTdHJpbmcgc3RyaW5n
OwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IFdlYlVSTDo6Y3Jl
YXRlKHN0cmluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNl
IEFQSU9iamVjdDo6VHlwZVVSTFJlcXVlc3Q6IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6
VHlwZVVSTFJlcXVlc3Q6IHsKICAgICAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0OwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXF1ZXN0KSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBXZWJV
UkxSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVVSTFJlc3BvbnNlOiB7CisgICAgICAgIGNh
c2UgQVBJOjpPYmplY3Q6OlR5cGVVUkxSZXNwb25zZTogewogICAgICAgICAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzcG9uc2UpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IGNvZGVyLm1fcm9vdCA9IFdlYlVSTFJlc3BvbnNlOjpjcmVhdGUocmVzcG9uc2UpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVVc2Vy
Q29udGVudFVSTFBhdHRlcm46IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZVVzZXJD
b250ZW50VVJMUGF0dGVybjogewogICAgICAgICAgICAgU3RyaW5nIHN0cmluZzsKICAgICAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RyaW5nKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBXZWJVc2VyQ29udGVudFVSTFBhdHRl
cm46OmNyZWF0ZShzdHJpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAg
ICAgY2FzZSBBUElPYmplY3Q6OlR5cGVJbWFnZTogeworICAgICAgICBjYXNlIEFQSTo6T2JqZWN0
OjpUeXBlSW1hZ2U6IHsKICAgICAgICAgICAgIGJvb2wgZGlkRW5jb2RlID0gZmFsc2U7CiAgICAg
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRpZEVuY29kZSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNDk2LDIxICs0OTYsMjEgQEAgcHVibGljOgogICAgICAgICAgICAg
Y29kZXIubV9yb290ID0gV2ViSW1hZ2U6OmNyZWF0ZShTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSho
YW5kbGUpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQVBJT2JqZWN0OjpUeXBlRGF0YTogeworICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBl
RGF0YTogewogICAgICAgICAgICAgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNl
OwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhUmVmZXJlbmNlKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBXZWJE
YXRhOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJT2JqZWN0OjpU
eXBlQ2VydGlmaWNhdGVJbmZvOiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGVDZXJ0
aWZpY2F0ZUluZm86IHsKICAgICAgICAgICAgIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvIHBsYXRm
b3JtQ2VydGlmaWNhdGVJbmZvOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgY29kZXIubV9yb290ID0gV2ViQ2VydGlmaWNhdGVJbmZvOjpjcmVhdGUocGxhdGZv
cm1DZXJ0aWZpY2F0ZUluZm8pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAg
ICAgY2FzZSBBUElPYmplY3Q6OlR5cGVFcnJvcjogeworICAgICAgICBjYXNlIEFQSTo6T2JqZWN0
OjpUeXBlRXJyb3I6IHsKICAgICAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3Vy
Y2VFcnJvcjsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzb3VyY2VFcnJvcikp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTI1LDEyICs1MjUsMTIgQEAgcHVi
bGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFVzZXJNZXNzYWdlRGVjb2RlcihSZWZQdHI8
QVBJT2JqZWN0PiYgcm9vdCkKKyAgICBVc2VyTWVzc2FnZURlY29kZXIoUmVmUHRyPEFQSTo6T2Jq
ZWN0PiYgcm9vdCkKICAgICAgICAgOiBtX3Jvb3Qocm9vdCkKICAgICB7CiAgICAgfQogCi0gICAg
UmVmUHRyPEFQSU9iamVjdD4mIG1fcm9vdDsKKyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+JiBtX3Jv
b3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNo
aXZlLmNwcAppbmRleCAwNTI0ZDUzYjc5NDlhMjI4NTRjYzBmZDUyNThiYzYzZjQ1MzUyZmNkLi41
MjgwMTZkYjk1MjA0YTkyZGEyMzE2ZTU4OTJlNGYzOWRkN2RjY2FhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkFyY2hpdmUuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgV2ViQXJjaGl2ZVJlc291cmNl
KiBXZWJBcmNoaXZlOjptYWluUmVzb3VyY2UoKQogSW1tdXRhYmxlQXJyYXkqIFdlYkFyY2hpdmU6
OnN1YnJlc291cmNlcygpCiB7CiAgICAgaWYgKCFtX2NhY2hlZFN1YnJlc291cmNlcykgewotICAg
ICAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+IHN1YnJlc291cmNlczsKKyAgICAgICAgVmVj
dG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHN1YnJlc291cmNlczsKICAgICAgICAgc3VicmVzb3Vy
Y2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9sZWdhY3lXZWJBcmNoaXZlLT5zdWJyZXNvdXJj
ZXMoKS5zaXplKCkpOwogCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3VicmVzb3VyY2UgOiBt
X2xlZ2FjeVdlYkFyY2hpdmUtPnN1YnJlc291cmNlcygpKQpAQCAtMTIyLDcgKzEyMiw3IEBAIElt
bXV0YWJsZUFycmF5KiBXZWJBcmNoaXZlOjpzdWJyZXNvdXJjZXMoKQogSW1tdXRhYmxlQXJyYXkq
IFdlYkFyY2hpdmU6OnN1YmZyYW1lQXJjaGl2ZXMoKQogewogICAgIGlmICghbV9jYWNoZWRTdWJm
cmFtZUFyY2hpdmVzKSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gc3ViZnJh
bWVXZWJBcmNoaXZlczsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHN1YmZy
YW1lV2ViQXJjaGl2ZXM7CiAgICAgICAgIHN1YmZyYW1lV2ViQXJjaGl2ZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShtX2xlZ2FjeVdlYkFyY2hpdmUtPnN1YmZyYW1lQXJjaGl2ZXMoKS5zaXplKCkp
OwogCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3ViZnJhbWVBcmNoaXZlIDogbV9sZWdhY3lX
ZWJBcmNoaXZlLT5zdWJmcmFtZUFyY2hpdmVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmUu
aAppbmRleCA2YTA3YTQ1YmRhMWJhZTdlNTAzM2E5MTlmZmY4MzlhNDk0Y2RkY2U0Li45MDJlYmRh
MjIzNDgyZGRkOTA1ZWFhYzE5OGEwYTU4YzQyMjE3OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJB
cmNoaXZlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgSW1tdXRhYmxlQXJyYXk7CiBjbGFzcyBX
ZWJBcmNoaXZlUmVzb3VyY2U7CiBjbGFzcyBXZWJEYXRhOwogCi1jbGFzcyBXZWJBcmNoaXZlIDog
cHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZVdlYkFyY2hpdmU+IHsKK2NsYXNz
IFdlYkFyY2hpdmUgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZVdl
YkFyY2hpdmU+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJBcmNoaXZlKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2UuaAppbmRleCAxOWE4NzkwMGM4NjA1
ZTE0NzBhNWFiY2MzYTU0ZmEyOTlkZjRjZmMxLi5kOWExM2Q2NmRkMjkzZWVlZGVmOGY5ODZmZjVk
NGFmNDdjMjdlMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2
ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNvdXJj
ZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJTdHJpbmc7CiBj
bGFzcyBXZWJVUkw7CiAKLWNsYXNzIFdlYkFyY2hpdmVSZXNvdXJjZSA6IHB1YmxpYyBUeXBlZEFQ
SU9iamVjdDxBUElPYmplY3Q6OlR5cGVXZWJBcmNoaXZlUmVzb3VyY2U+IHsKK2NsYXNzIFdlYkFy
Y2hpdmVSZXNvdXJjZSA6IHB1YmxpYyBBUEk6OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBl
V2ViQXJjaGl2ZVJlc291cmNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViQXJjaGl2ZVJl
c291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oCmluZGV4IDE3Mzg5ODNmYTczOGI2MjdmZDRhNWY5OTg0ZTYxYWMzOTI3YjNhMmUuLjVj
MzAzYzM2MDkyN2VkNjk1MzdmMzY2NjllYjFlNWNmNDVmZWEwNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaApAQCAtMzcsNyArMzcsNyBAQCBu
YW1lc3BhY2UgQ29yZUlQQyB7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtIDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0+IHsKK2NsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJs
aWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZUJhY2tGb3J3YXJkTGlzdEl0ZW0+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVt
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IHVpbnQ4X3QqIGJhY2tGb3J3YXJkRGF0YSwgc2l6ZV90
IGJhY2tGb3J3YXJkRGF0YVNpemUsIHVpbnQ2NF90IGl0ZW1JRCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ2VydGlmaWNhdGVJbmZvLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ2VydGlmaWNhdGVJbmZvLmgKaW5kZXggMDYxODJmY2UyZmM2ZDU5N2U5
ZjVmOGMwMzk1NzcxOWEyYWE2MmFmNS4uNmQ3ZDhmYTA2YWQ0MzgyZTRjYzk3OWM4ZjA3NDIzODFm
OWM1NWIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNlcnRpZmljYXRl
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDZXJ0aWZpY2F0ZUluZm8uaApA
QCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViQ2VydGlm
aWNhdGVJbmZvIDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZUNlcnRpZmlj
YXRlSW5mbz4geworY2xhc3MgV2ViQ2VydGlmaWNhdGVJbmZvIDogcHVibGljIEFQSTo6VHlwZWRP
YmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVDZXJ0aWZpY2F0ZUluZm8+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IGNyZWF0ZShjb25zdCBQbGF0Zm9y
bUNlcnRpZmljYXRlSW5mbyYgaW5mbykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29u
bmVjdGlvbi5jcHAKaW5kZXggNmE5NDJjNTIwMzc2ODVhMDk2M2ZhN2JhZGNjN2RlM2JlMjJiMjIz
OS4uNmIwODRjZmU3NmY3M2MxYzdiOTlmMWU0YmNhOTM5MzljMTNlMzYxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFdlYkNv
bm5lY3Rpb246OmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KGNvbnN0IFdLQ29ubmVjdGlvbkNs
aWVudCogY2xpZW50KQogICAgIG1fY2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKIH0KIAotdm9p
ZCBXZWJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBB
UElPYmplY3QqIG1lc3NhZ2VCb2R5KQordm9pZCBXZWJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiB7CiAg
ICAgaWYgKCFoYXNWYWxpZENvbm5lY3Rpb24oKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzQsNyAr
NzQsNyBAQCB2b2lkIFdlYkNvbm5lY3Rpb246OmhhbmRsZU1lc3NhZ2UoQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlTmFtZSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxBUElPYmplY3Q+IG1lc3NhZ2VCb2R5Owor
ICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gbWVzc2FnZUJvZHk7CiAgICAgaWYgKCFkZWNvZGVNZXNz
YWdlQm9keShkZWNvZGVyLCBtZXNzYWdlQm9keSkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmgKaW5kZXggNGEzNjlkOGJmODMyOTg3NmQ1Y2VmZTBl
ZWZiZmNkOTA2ZjZkZmJlYi4uOTJkMjI1ZjcwNWFiMThmNGVlYjYyYTNjYjc1Mzg5OGJkYjJlOGU5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5oCkBAIC0zNCwxOSArMzQsMTkg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkNvbm5lY3Rpb24gOiBwdWJsaWMg
VHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlQ29ubmVjdGlvbj4sIHB1YmxpYyBDb3JlSVBD
OjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDb3JlSVBDOjpNZXNzYWdlU2VuZGVyIHsKK2NsYXNz
IFdlYkNvbm5lY3Rpb24gOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlw
ZUNvbm5lY3Rpb24+LCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ29y
ZUlQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViQ29ubmVjdGlv
bigpOwogCiAgICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudChjb25zdCBXS0Nvbm5l
Y3Rpb25DbGllbnQqKTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYsIEFQSU9i
amVjdCopOworICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3Qq
KTsKICAgICB2b2lkIGRpZENsb3NlKCk7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBXZWJD
b25uZWN0aW9uKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlTWVzc2FnZUJvZHkoQ29yZUlQ
Qzo6QXJndW1lbnRFbmNvZGVyJiwgQVBJT2JqZWN0KikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBk
ZWNvZGVNZXNzYWdlQm9keShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImLCBSZWZQdHI8QVBJT2Jq
ZWN0PiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlTWVzc2FnZUJvZHkoQ29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyJiwgQVBJOjpPYmplY3QqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGRl
Y29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYsIFJlZlB0cjxBUEk6Ok9i
amVjdD4mKSA9IDA7CiAKICAgICAvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdl
RGVjb2RlciYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvbm5lY3Rpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rp
b25DbGllbnQuY3BwCmluZGV4IDA5M2JmNmRmOGVkMDc4N2IzMGQ2M2E0ZTQzZDQ5ZmJkOGYxYWRk
MWYuLmE3ZTI3YzBlNzI2NjA2YzZjZGNmZTI5MzU2NTI4YjlhMWRmYzhlMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbkNsaWVudC5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViQ29ubmVjdGlvbkNsaWVudDo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoV2ViQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkKK3ZvaWQgV2ViQ29ubmVjdGlvbkNs
aWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2UoV2ViQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQogewogICAgIGlm
ICghbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbkNsaWVudC5oCmluZGV4IGFmNDQzZTY1MTBjNDVi
YzRkZjMwYmYzMzU4OGRkY2IxOGIzYjExNWQuLjlkNDkyNmI0MTc4YWRlOGNiNjJhYTUwYjBlZjEy
MzM0ODM5Njk5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb25DbGll
bnQuaApAQCAtMzAsMTQgKzMwLDE3IEBACiAjaW5jbHVkZSAiV0tDb25uZWN0aW9uUmVmLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBPYmplY3Q7
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBBUElPYmplY3Q7CiBjbGFzcyBXZWJD
b25uZWN0aW9uOwogCiBjbGFzcyBXZWJDb25uZWN0aW9uQ2xpZW50IDogcHVibGljIEFQSUNsaWVu
dDxXS0Nvbm5lY3Rpb25DbGllbnQsIFdLQ29ubmVjdGlvbkNsaWVudEN1cnJlbnRWZXJzaW9uPiB7
CiBwdWJsaWM6Ci0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShXZWJDb25uZWN0aW9uKiwgY29u
c3QgU3RyaW5nJiwgQVBJT2JqZWN0Kik7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShXZWJD
b25uZWN0aW9uKiwgY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqKTsKICAgICB2b2lkIGRpZENs
b3NlKFdlYkNvbm5lY3Rpb24qKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
bnRleHRNZW51SXRlbS5jcHAKaW5kZXggMmJkOTVjMjE0YzUxYWI1M2JhYWU4MjU0YzUzZGNhYWY4
OGFiMjI1ZS4uYjJlOTA1ZThlNjZkYWYxN2RhNGFmMGJjOGNkMjZmMWQwMTY2NTQzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAKQEAgLTY2LDcgKzY2
LDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViQ29udGV4dE1lbnVJdGVtOjpzdWJt
ZW51SXRlbXNBc0ltbXV0YWJsZUFycmF5KCkgY28KICAgICBpZiAobV93ZWJDb250ZXh0TWVudUl0
ZW1EYXRhLnR5cGUoKSAhPSBXZWJDb3JlOjpTdWJtZW51VHlwZSkKICAgICAgICAgcmV0dXJuIElt
bXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4g
c3VibWVudUl0ZW1zOworICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBzdWJtZW51SXRl
bXM7CiAgICAgc3VibWVudUl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV93ZWJDb250ZXh0
TWVudUl0ZW1EYXRhLnN1Ym1lbnUoKS5zaXplKCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBp
dGVtIDogbV93ZWJDb250ZXh0TWVudUl0ZW1EYXRhLnN1Ym1lbnUoKSkKQEAgLTc1LDEyICs3NSwx
MiBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJDb250ZXh0TWVudUl0ZW06OnN1Ym1l
bnVJdGVtc0FzSW1tdXRhYmxlQXJyYXkoKSBjbwogICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6
Y3JlYXRlKHN0ZDo6bW92ZShzdWJtZW51SXRlbXMpKTsKIH0KIAotQVBJT2JqZWN0KiBXZWJDb250
ZXh0TWVudUl0ZW06OnVzZXJEYXRhKCkgY29uc3QKK0FQSTo6T2JqZWN0KiBXZWJDb250ZXh0TWVu
dUl0ZW06OnVzZXJEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV93ZWJDb250ZXh0TWVudUl0
ZW1EYXRhLnVzZXJEYXRhKCk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dE1lbnVJdGVtOjpzZXRVc2Vy
RGF0YShBUElPYmplY3QqIHVzZXJEYXRhKQordm9pZCBXZWJDb250ZXh0TWVudUl0ZW06OnNldFVz
ZXJEYXRhKEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBtX3dlYkNvbnRleHRNZW51SXRl
bURhdGEuc2V0VXNlckRhdGEodXNlckRhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvbnRleHRNZW51SXRlbS5oCmluZGV4IDI0MTRhMDVhNGE3MTJiMWVjNzVkYTVmYTczZmQ3ZjIw
Y2EwOWU2ZjIuLjI5NTdiZDE2ZWZhYjhiZWYwYmQzNjJiODRmNWU1MmMwMjVmOTc3MzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgKQEAgLTM1LDcgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEltbXV0YWJsZUFycmF5OwogCi1jbGFzcyBX
ZWJDb250ZXh0TWVudUl0ZW0gOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBl
Q29udGV4dE1lbnVJdGVtPiB7CitjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW0gOiBwdWJsaWMgQVBJ
OjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZUNvbnRleHRNZW51SXRlbT4gewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4gY3JlYXRlKGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGRhdGEpCiAgICAgewpAQCAtNDYsOCArNDYsOCBAQCBw
dWJsaWM6CiAgICAgCiAgICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gc3VibWVudUl0ZW1z
QXNJbW11dGFibGVBcnJheSgpIGNvbnN0OwogICAgIAotICAgIEFQSU9iamVjdCogdXNlckRhdGEo
KSBjb25zdDsKLSAgICB2b2lkIHNldFVzZXJEYXRhKEFQSU9iamVjdCopOworICAgIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSgpIGNvbnN0OworICAgIHZvaWQgc2V0VXNlckRhdGEoQVBJOjpPYmplY3Qq
KTsKICAgICAKICAgICBXZWJDb250ZXh0TWVudUl0ZW1EYXRhKiBkYXRhKCkgeyByZXR1cm4gJm1f
d2ViQ29udGV4dE1lbnVJdGVtRGF0YTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAKaW5kZXggYmRlNzA0ZTBlNjFlYTQxMTBlMWE2N2Vi
OTAzMGQ0YmIzOTA5OTVkMC4uNmQzYTg2ZmY5ZmQwZjE2MjExYjFlYWE4YjU0Yjg3NDQ3YTE4MzY2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRh
LmNwcApAQCAtOTQsMTIgKzk0LDEyIEBAIENvbnRleHRNZW51SXRlbSBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhOjpjb3JlKCkgY29uc3QKICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKG1fYWN0aW9u
LCBtX3RpdGxlLCBtX2VuYWJsZWQsIG1fY2hlY2tlZCwgc3ViTWVudUl0ZW1zKTsKIH0KIAotQVBJ
T2JqZWN0KiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOjp1c2VyRGF0YSgpIGNvbnN0CitBUEk6Ok9i
amVjdCogV2ViQ29udGV4dE1lbnVJdGVtRGF0YTo6dXNlckRhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3VzZXJEYXRhLmdldCgpOwogfQogCi12b2lkIFdlYkNvbnRleHRNZW51SXRlbURhdGE6
OnNldFVzZXJEYXRhKEFQSU9iamVjdCogdXNlckRhdGEpCit2b2lkIFdlYkNvbnRleHRNZW51SXRl
bURhdGE6OnNldFVzZXJEYXRhKEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBtX3VzZXJE
YXRhID0gdXNlckRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRN
ZW51SXRlbURhdGEuaAppbmRleCA5YjA4MTkwMzllMzYxZjFjNmQ3OTE4MjVlNzFlM2Q3OTI0NDAw
M2Y1Li45MTUwNmNkZmE4Yzk2OWQ1MjA5NzBlOTE3NzQ1MWNlMGI5MzE4MmZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgKQEAgLTMxLDYgKzMx
LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBPYmplY3Q7Cit9
CisKIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7CiAgICAg
Y2xhc3MgQXJndW1lbnRFbmNvZGVyOwpAQCAtNDIsOCArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBBUElPYmplY3Q7Ci0KIGNsYXNzIFdl
YkNvbnRleHRNZW51SXRlbURhdGEgewogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51SXRlbURh
dGEoKTsKQEAgLTYwLDggKzYyLDggQEAgcHVibGljOgogICAgIAogICAgIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbSBjb3JlKCkgY29uc3Q7CiAgICAgCi0gICAgQVBJT2JqZWN0KiB1c2VyRGF0YSgp
IGNvbnN0OwotICAgIHZvaWQgc2V0VXNlckRhdGEoQVBJT2JqZWN0Kik7CisgICAgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKCkgY29uc3Q7CisgICAgdm9pZCBzZXRVc2VyRGF0YShBUEk6Ok9iamVjdCop
OwogICAgIAogICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0
OwogICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImLCBXZWJD
b250ZXh0TWVudUl0ZW1EYXRhJik7CkBAIC03Myw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX2NoZWNrZWQ7CiAgICAgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbURhdGE+IG1fc3VibWVudTsKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiBtX3VzZXJEYXRh
OworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gbV91c2VyRGF0YTsKIH07CiAKIFZlY3RvcjxXZWJD
b250ZXh0TWVudUl0ZW1EYXRhPiBraXRJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtPiYsIFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViRGF0YS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkRhdGEu
aAppbmRleCBlMzRiYmVlNjNjOTA5NjYzNTBmODdhZjY2NGY2ZWQ5ZDM5YWJlNGI2Li4wMTA2NjMx
YjkzYzFhNjA3NjE1ZmExZTBjYWRmYWU4Mzk1M2JhNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJEYXRh
LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFdlYkRhdGEgLSBB
IGRhdGEgYnVmZmVyIHR5cGUgc3VpdGFibGUgZm9yIHZlbmRpbmcgdG8gYW4gQVBJLgogCi1jbGFz
cyBXZWJEYXRhIDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZURhdGE+IHsK
K2NsYXNzIFdlYkRhdGEgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlw
ZURhdGE+IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIHZvaWQgKCpGcmVlRGF0YUZ1bmN0aW9uKSh1
bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogY29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJFcnJvci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkVy
cm9yLmgKaW5kZXggMzVlYTM1OTQ5ZjYwYjBkOWY2M2I2OWMwYTA2N2ViODM1N2NhYzZhNi4uZjAz
NTFiZjg2ZmYyNGRlOTk5ODIzZGQzNThmOGM5YWYyODRjZmJhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkVycm9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkVycm9yLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFdlYkVy
cm9yIC0gQW4gZXJyb3IgdHlwZSBzdWl0YWJsZSBmb3IgdmVuZGluZyB0byBhbiBBUEkuCiAKLWNs
YXNzIFdlYkVycm9yIDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZUVycm9y
PiB7CitjbGFzcyBXZWJFcnJvciA6IHB1YmxpYyBBUEk6OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0
OjpUeXBlRXJyb3I+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJFcnJvcj4g
Y3JlYXRlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdlb2xvY2F0aW9u
UG9zaXRpb24uaAppbmRleCA5YmE0MDkzYmJiNzJlMjkyNzVlY2RhOTMwNzM4MjU4ZWFlN2FlOTA4
Li40ZmE5MjdmOTg0OGZjYTk5ZTM3MWQ4MzY0MGZlMjkzNjcxYmY3ZGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24g
OiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlR2VvbG9jYXRpb25Qb3NpdGlv
bj4geworY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBBUEk6OlR5cGVkT2Jq
ZWN0PEFQSTo6T2JqZWN0OjpUeXBlR2VvbG9jYXRpb25Qb3NpdGlvbj4gewogcHVibGljOgogICAg
IHN0cnVjdCBEYXRhIHsKICAgICAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNv
ZGVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR2VvbWV0
cnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9tZXRyeS5oCmluZGV4IDM2NjFhZjA2
Y2ZiMmI4MDBiNTVmMDgyY2YwNjI2NzYwMDNlNzhkN2UuLjkwMWQ5YWE1Y2QxNTYxMWYxYWVmNmY3
OTgzODEwYWM2ODlhMThkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJH
ZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9tZXRyeS5oCkBAIC0z
OCw3ICszOCw3IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIFdlYlNpemUgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlU2l6
ZT4geworY2xhc3MgV2ViU2l6ZSA6IHB1YmxpYyBBUEk6OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0
OjpUeXBlU2l6ZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNpemU+IGNy
ZWF0ZShjb25zdCBXS1NpemUmIHNpemUpCiAgICAgewpAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRl
OgogICAgIFdLU2l6ZSBtX3NpemU7CiB9OwogCi1jbGFzcyBXZWJQb2ludCA6IHB1YmxpYyBUeXBl
ZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVQb2ludD4geworY2xhc3MgV2ViUG9pbnQgOiBwdWJs
aWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZVBvaW50PiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9pbnQ+IGNyZWF0ZShjb25zdCBXS1BvaW50JiBwb2lu
dCkKICAgICB7CkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgV0tQb2ludCBtX3BvaW50
OwogfTsKIAotY2xhc3MgV2ViUmVjdCA6IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6
OlR5cGVSZWN0PiB7CitjbGFzcyBXZWJSZWN0IDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJ
OjpPYmplY3Q6OlR5cGVSZWN0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
UmVjdD4gY3JlYXRlKGNvbnN0IFdLUmVjdCYgcmVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNGNkZDc3MjVlYTNkOWIxNmRmZWMyZTQ2
OWJlMWY3ZWRmYzBiYTIxOS4uMWEzZDcyMWE5NDUzMjlhZjllODg0ZWFlZmYwOTFmNzgyN2E2ZWVk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdyYXBoaWNzQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJHcmFwaGljc0NvbnRleHQuaApAQCAtMzgs
NyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViR3JhcGhpY3NDb250
ZXh0IDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZUdyYXBoaWNzQ29udGV4
dD4geworY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0IDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8
QVBJOjpPYmplY3Q6OlR5cGVHcmFwaGljc0NvbnRleHQ+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhp
dFRlc3RSZXN1bHQuaAppbmRleCBmYTVjOTk3Y2MxZTg0N2ZmNGQxMDZmNmVkY2E4MDFlNmVhNjM3
MDYyLi44ODM3NzgwYWRlNTRiZmRhMWU3NDZiOGZkNmU2NDc4OWZiNzA3ZWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwogCi1jbGFzcyBXZWJIaXRUZXN0UmVzdWx0
IDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZUhpdFRlc3RSZXN1bHQ+IHsK
K2NsYXNzIFdlYkhpdFRlc3RSZXN1bHQgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9i
amVjdDo6VHlwZUhpdFRlc3RSZXN1bHQ+IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgRGF0YSB7CiAg
ICAgICAgIFN0cmluZyBhYnNvbHV0ZUltYWdlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkltYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuaApp
bmRleCBkMmQzODM1ODQwNTJlZDE1N2U3NzRjZDE4NWMyMmU0OTQ4MzU1ZTEwLi5jMTZkNzM0MzA3
YTU0NjAyNDBlNWI0MjU0N2FlNWQ3MzE3NDAwNjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2Uu
aApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiAKIC8vIFdlYkltYWdl
IC0gQW4gaW1hZ2UgdHlwZSBzdWl0YWJsZSBmb3IgdmVuZGluZyB0byBhbiBBUEkuCiAKLWNsYXNz
IFdlYkltYWdlIDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZUltYWdlPiB7
CitjbGFzcyBXZWJJbWFnZSA6IHB1YmxpYyBBUEk6OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpU
eXBlSW1hZ2U+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbWFnZT4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBJbWFnZU9wdGlvbnMpOwogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOdW1iZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJOdW1iZXIuaAppbmRleCBmOTUwN2M5MGJhZmZlOGI0NTM2MDlkYjM5
YmQ0OTY2ODhhY2Q1Mjc4Li5iMTIwNmQ2N2NmYWNkODIwOTA1OGQ1NDI0NWIwNDA3ZDllMTc5MDhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTnVtYmVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYk51bWJlci5oCkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBOdW1iZXJUeXBlLCBBUElPYmplY3Q6
OlR5cGUgQVBJT2JqZWN0VHlwZT4KLWNsYXNzIFdlYk51bWJlciA6IHB1YmxpYyBUeXBlZEFQSU9i
amVjdDxBUElPYmplY3RUeXBlPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBOdW1iZXJUeXBlLCBBUEk6
Ok9iamVjdDo6VHlwZSBBUElPYmplY3RUeXBlPgorY2xhc3MgV2ViTnVtYmVyIDogcHVibGljIEFQ
STo6VHlwZWRPYmplY3Q8QVBJT2JqZWN0VHlwZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYk51bWJlcj4gY3JlYXRlKE51bWJlclR5cGUgdmFsdWUpCiAgICAgewpAQCAtNTAs
OSArNTAsOSBAQCBwcml2YXRlOgogICAgIGNvbnN0IE51bWJlclR5cGUgbV92YWx1ZTsKIH07CiAK
LXR5cGVkZWYgV2ViTnVtYmVyPGJvb2wsIEFQSU9iamVjdDo6VHlwZUJvb2xlYW4+IFdlYkJvb2xl
YW47Ci10eXBlZGVmIFdlYk51bWJlcjxkb3VibGUsIEFQSU9iamVjdDo6VHlwZURvdWJsZT4gV2Vi
RG91YmxlOwotdHlwZWRlZiBXZWJOdW1iZXI8dWludDY0X3QsIEFQSU9iamVjdDo6VHlwZVVJbnQ2
ND4gV2ViVUludDY0OwordHlwZWRlZiBXZWJOdW1iZXI8Ym9vbCwgQVBJOjpPYmplY3Q6OlR5cGVC
b29sZWFuPiBXZWJCb29sZWFuOwordHlwZWRlZiBXZWJOdW1iZXI8ZG91YmxlLCBBUEk6Ok9iamVj
dDo6VHlwZURvdWJsZT4gV2ViRG91YmxlOwordHlwZWRlZiBXZWJOdW1iZXI8dWludDY0X3QsIEFQ
STo6T2JqZWN0OjpUeXBlVUludDY0PiBXZWJVSW50NjQ7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaApp
bmRleCBlZmI3YTgwNGYxZjk3NDNmOGE2ZWJkMDE1OTU5MTk0NzE5NjhmZmYxLi5iYzE1MjZmOTJk
ODY2ZTUzNDFhMmVhNDM5NTM5N2FlMzJlYjQ1NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIEltbXV0YWJsZUFycmF5OwogCi1jbGFzcyBXZWJPcGVuUGFuZWxQ
YXJhbWV0ZXJzIDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZU9wZW5QYW5l
bFBhcmFtZXRlcnM+IHsKK2NsYXNzIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMgOiBwdWJsaWMgQVBJ
OjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZU9wZW5QYW5lbFBhcmFtZXRlcnM+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzPiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogICAgIH5XZWJPcGVuUGFu
ZWxQYXJhbWV0ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcApp
bmRleCAxMTljMmFiMzJlYTE5YjgyNThmYzcwMDZhZjYwNTgwMWM5MDdlZDc2Li4yZGVkNzNhYTE1
NGIyMjBmMmJiNjNjNGViZGEzNDZiMzA5NmYzMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJSZW5kZXJMYXllci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVB
cnJheT4gV2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdChWZWN0b3I8UmVu
ZGUKICAgICBpZiAoIWxpc3QgfHwgIWxpc3QtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+IGxheWVyczsKKyAgICBWZWN0b3I8
UmVmUHRyPEFQSTo6T2JqZWN0Pj4gbGF5ZXJzOwogICAgIGxheWVycy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGxpc3QtPnNpemUoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGxheWVyIDogKmxp
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJMYXllci5oCmluZGV4IDk1ODNkODYxMDM1
M2ZmYWQ5ZmY1NzgzZDBmNGI5ZTU2MmFlNjE0MWIuLjgyZmQ3NGY0YzdmNjVhZTVkYmUwNDEwMDcy
MTUxOTUzMDNhNzlkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5k
ZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJMYXllci5oCkBA
IC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOwogCi1j
bGFzcyBXZWJSZW5kZXJMYXllciA6IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5
cGVSZW5kZXJMYXllcj4geworY2xhc3MgV2ViUmVuZGVyTGF5ZXIgOiBwdWJsaWMgQVBJOjpUeXBl
ZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZVJlbmRlckxheWVyPiB7CiBwdWJsaWM6CiAgICAgZW51
bSBDb21wb3NpdGluZ0xheWVyVHlwZSB7IE5vbmUsIE5vcm1hbCwgVGlsZWQsIE1lZGlhLCBDb250
YWluZXIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCBiNDIwOTU0ZDkzNDMzZGRmMTFiMjY4ZTY1ZDVkMmU3MThiMTNiOTU2Li5iMGNhZDJiZTI2ZTgz
MzViNmRiZDkzOTFmMzBkNTQ2NTU4ODFkZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UmVuZGVyT2JqZWN0LmNwcApAQCAtNjYsNyArNjYsNyBAQCBXZWJSZW5kZXJPYmplY3Q6OldlYlJl
bmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIHNob3VsZEluY2x1ZGVEZXNj
ZQogICAgICAgICAgICAgbV9lbGVtZW50SUQgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkg
JiYgZWxlbWVudC0+aGFzQ2xhc3MoKSkgewotICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8
QVBJT2JqZWN0Pj4gY2xhc3NOYW1lczsKKyAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFQ
STo6T2JqZWN0Pj4gY2xhc3NOYW1lczsKICAgICAgICAgICAgICAgICBjbGFzc05hbWVzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoZWxlbWVudC0+Y2xhc3NOYW1lcygpLnNpemUoKSk7CiAKICAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGVsZW1lbnQtPmNsYXNzTmFtZXMo
KS5zaXplKCk7IGkgPCBzaXplOyArK2kpCkBAIC05Miw3ICs5Miw3IEBAIFdlYlJlbmRlck9iamVj
dDo6V2ViUmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgc2hvdWxkSW5j
bHVkZURlc2NlCiAgICAgaWYgKCFzaG91bGRJbmNsdWRlRGVzY2VuZGFudHMpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gY2hpbGRyZW47CisgICAgVmVj
dG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGNoaWxkcmVuOwogCiAgICAgZm9yIChSZW5kZXJPYmpl
Y3QqIGNvcmVDaGlsZCA9IHJlbmRlcmVyLT5maXJzdENoaWxkU2xvdygpOyBjb3JlQ2hpbGQ7IGNv
cmVDaGlsZCA9IGNvcmVDaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBSZWZQdHI8V2Vi
UmVuZGVyT2JqZWN0PiBjaGlsZCA9IGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QoY29yZUNo
aWxkLCBzaG91bGRJbmNsdWRlRGVzY2VuZGFudHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJS
ZW5kZXJPYmplY3QuaAppbmRleCA4OTcwNGZhNGE4NzYxNzRjNTZlNDVjMWMxOTM3NzU0ZjA3ZDA3
ZDAxLi5mNmM5MDVkMDc0YjU1MmVhMWVkN2VlYzdjOWE4MzZkZDQ5ZTY0MDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOwogCi1jbGFzcyBXZWJSZW5kZXJPYmplY3QgOiBw
dWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlUmVuZGVyT2JqZWN0PiB7CitjbGFz
cyBXZWJSZW5kZXJPYmplY3QgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6
VHlwZVJlbmRlck9iamVjdD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlJl
bmRlck9iamVjdD4gY3JlYXRlKFdlYlBhZ2UqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJS
ZW5kZXJPYmplY3Q+IGNyZWF0ZShXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlNlY3VyaXR5T3JpZ2luLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViU2VjdXJpdHlPcmlnaW4uaAppbmRleCBjODkxYjdhNzZhY2E3
NDIzNzZmY2I3ZWI2ODE0MTU0MTQxZTZhOTE2Li5iMjI5OTM0ZThiZWFiYmUzYWMzOGY4MDk5NTU4
NmRkZTQzMmQ1MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViU2VjdXJp
dHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViU2VjdXJpdHlPcmlnaW4u
aApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU2Vj
dXJpdHlPcmlnaW4gOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlU2VjdXJp
dHlPcmlnaW4+IHsKK2NsYXNzIFdlYlNlY3VyaXR5T3JpZ2luIDogcHVibGljIEFQSTo6VHlwZWRP
YmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVTZWN1cml0eU9yaWdpbj4gewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCAwZTUxOGZlYjg3YmM4OGIzZjNhZWQ3YjA4NzYw
NzdkZmI0ODAxYTg4Li4wMzQzNjRjNjlkYzliNWRlMDA4ODY0MzNjYWVmNzBjOGZhNjU0MjdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBl
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CitjbGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUg
OiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkVmFsdWUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlN0cmluZy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlN0cmluZy5oCmlu
ZGV4IDJkNjA1ZDMyOTMyODkyZWNhNzZkMDg2YzkxZjZhN2NlMDk2ZDFiYjEuLmZkOGFlNmZiNGMz
NzdmNWY2OWFhMzFlNTYxOTg4ZDBhMjM0Y2M0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJTdHJpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViU3RyaW5n
LmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFdlYlN0cmluZyAt
IEEgc3RyaW5nIHR5cGUgc3VpdGFibGUgZm9yIHZlbmRpbmcgdG8gYW4gQVBJLgogCi1jbGFzcyBX
ZWJTdHJpbmcgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlU3RyaW5nPiB7
CitjbGFzcyBXZWJTdHJpbmcgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6
VHlwZVN0cmluZz4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlN0cmluZz4g
Y3JlYXRlTnVsbCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlVSTC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5oCmluZGV4IDkzNzhiMGFmZGNi
NWNiOWQzMWQ4N2QyNzMwNDE0MTQ2YjdhNGE5ZDQuLmNkMDRiZGZlYjY5MGUzMmFmMjg1YWNjYzhj
ZTdlODAyYmRjNWMxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmgKQEAgLTM3LDcgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFdlYlVSTCAtIEEgVVJMIHR5cGUgc3VpdGFibGUgZm9y
IHZlbmRpbmcgdG8gYW4gQVBJLgogCi1jbGFzcyBXZWJVUkwgOiBwdWJsaWMgVHlwZWRBUElPYmpl
Y3Q8QVBJT2JqZWN0OjpUeXBlVVJMPiB7CitjbGFzcyBXZWJVUkwgOiBwdWJsaWMgQVBJOjpUeXBl
ZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZVVSTD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYlVSTD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViVVJMUmVxdWVzdC5oCmluZGV4IDlmMmY0ZjcwNWM5Yjc1YTk2M2NjMTI4
MTlhOWJlZTk3MzI4YjZlMjYuLmYyZWU0NDViOTc5NGFhODhhMTVmOThiYzM0ZjhjYmJkYjFjMGI5
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTFJlcXVlc3QuaApAQCAtMzgsNyArMzgsNyBA
QCB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtUmVxdWVzdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIFdlYlVSTFJlcXVlc3QgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpU
eXBlVVJMUmVxdWVzdD4geworY2xhc3MgV2ViVVJMUmVxdWVzdCA6IHB1YmxpYyBBUEk6OlR5cGVk
T2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlVVJMUmVxdWVzdD4gewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpVUkwmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTFJlc3BvbnNlLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVzcG9uc2UuaAppbmRleCBhZGQzNDY2YjE0YjNl
ZjI2Y2MyZjA4ZWVjYjA0ZDM3YmU3ODZjOWFhLi5kNGFjZjM4YTU2ZGNhYzg1Y2U5N2RiZWRlNDdj
NGFkOTQ0NGRiYjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVzcG9uc2UuaApAQCAt
MzgsNyArMzgsNyBAQCB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtUmVzcG9uc2U7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1jbGFzcyBXZWJVUkxSZXNwb25zZSA6IHB1YmxpYyBUeXBlZEFQSU9iamVj
dDxBUElPYmplY3Q6OlR5cGVVUkxSZXNwb25zZT4geworY2xhc3MgV2ViVVJMUmVzcG9uc2UgOiBw
dWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZVVSTFJlc3BvbnNlPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVVJMUmVzcG9uc2U+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKaW5kZXggYjMzZjQ5
NzcxNmRkZjE5N2ZhNTIwY2E2MWQxMGI3OGMwYzA4NDg0OC4uMzExZTY5OTE1OTQ1NGQ0MDk0Y2Qw
ZWQ2ZGI5N2U1MWUzOGJkNmE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlVzZXJDb250ZW50VVJMUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4uaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIDogcHVibGljIFR5cGVkQVBJ
T2JqZWN0PEFQSU9iamVjdDo6VHlwZVVzZXJDb250ZW50VVJMUGF0dGVybj4geworY2xhc3MgV2Vi
VXNlckNvbnRlbnRVUkxQYXR0ZXJuIDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmpl
Y3Q6OlR5cGVVc2VyQ29udGVudFVSTFBhdHRlcm4+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBh
dHRlcm4pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9PYmpD
T2JqZWN0R3JhcGguaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBo
LmgKaW5kZXggOWQ2M2YwNTVlODBjZDNjNjI5NjA3N2M2ODZmMDU4OTBjZjNiNzJiMS4uZTNmODYy
ZmY2ZjE5ZDkwNDdmOTkzODE3MzRkOWI2NTZhOTYwZTMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGguaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1jbGFzcyBPYmpDT2JqZWN0R3JhcGggOiBwdWJsaWMgVHlwZWRBUElPYmpl
Y3Q8QVBJT2JqZWN0OjpUeXBlT2JqQ09iamVjdEdyYXBoPiB7CitjbGFzcyBPYmpDT2JqZWN0R3Jh
cGggOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZU9iakNPYmplY3RH
cmFwaD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9iakNPYmplY3RHcmFwaD4g
Y3JlYXRlKGlkIHJvb3RPYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGhDb2RlcnMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL09iakNPYmplY3RHcmFwaENvZGVycy5tbQppbmRleCAwNTRkN2MzZjQwMzY5MTRjZWUw
MjBjYTRkNjM2YjM1OTNkMTRkYWZjLi41YTkxY2NhNTA0NjBmNTgyMGY1OGU2OTE0Mjk2MTBkYTFm
MWIyZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL09iakNPYmplY3RH
cmFwaENvZGVycy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL09iakNPYmplY3RH
cmFwaENvZGVycy5tbQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV0tUeXBlUmVmV3JhcHBlclR5cGU6IHsKLSAg
ICAgICAgICAgIFJlZlB0cjxBUElPYmplY3Q+IG9iamVjdDsKKyAgICAgICAgICAgIFJlZlB0cjxB
UEk6Ok9iamVjdD4gb2JqZWN0OwogICAgICAgICAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVj
b2RlciBvYmplY3REZWNvZGVyKG9iamVjdCwgY29kZXIubV9wcm9jZXNzKTsKICAgICAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUob2JqZWN0RGVjb2RlcikpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNDQ5LDcgKzQ0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV0tUeXBlUmVmV3JhcHBlclR5cGU6IHsKLSAgICAg
ICAgICAgIFJlZlB0cjxBUElPYmplY3Q+IG9iamVjdDsKKyAgICAgICAgICAgIFJlZlB0cjxBUEk6
Ok9iamVjdD4gb2JqZWN0OwogICAgICAgICAgICAgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURl
Y29kZXIgb2JqZWN0RGVjb2RlcihvYmplY3QpOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShvYmplY3REZWNvZGVyKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQbHVnaW5TaXRlRGF0YU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGx1Z2luU2l0ZURh
dGFNYW5hZ2VyLmNwcAppbmRleCAxMTA1Y2EyN2FjZTk4NWM5Yjc1YzAyNjJjZDYzNTkwYjIzOTUx
YWE1Li41OTgwNDUxNzhkMjEwNTA2ZTc3M2RhZGM4NDhiYjdiZmZiNTJmOTJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BsdWdpblNpdGVEYXRh
TWFuYWdlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV0tUeXBlSUQgV0tQbHVnaW5TaXRlRGF0YU1h
bmFnZXJHZXRUeXBlSUQoKQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHJl
dHVybiB0b0FQSShXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OkFQSVR5cGUpOwogI2Vsc2UKLSAg
ICByZXR1cm4gQVBJT2JqZWN0OjpUeXBlTnVsbDsKKyAgICByZXR1cm4gQVBJOjpPYmplY3Q6OlR5
cGVOdWxsOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQppbmRleCA3N2UwMzNkYzI0MzAx
MmM5Yzg5MzIzNWJmNzRkN2FhMTdkM2Y3ZmIwLi4xYzg4NTdjMDNhYzMwN2UwYjY2Y2YxNTU2ODJm
MTY1NjVkZDI1OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
bWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQg
V0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnMoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIFdLQ29udGV4dEdldEluCiB7CiAgICAgVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+IHBsdWdp
bnMgPSB0b0ltcGwoY29udGV4dFJlZiktPnBsdWdpbkluZm9TdG9yZSgpLnBsdWdpbnMoKTsKIAot
ICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gcGx1Z2luSW5mb0RpY3Rpb25hcmllczsKKyAg
ICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gcGx1Z2luSW5mb0RpY3Rpb25hcmllczsKICAg
ICBwbHVnaW5JbmZvRGljdGlvbmFyaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocGx1Z2lucy5z
aXplKCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBwbHVnaW46IHBsdWdpbnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlz
dC5tbQppbmRleCA0M2U3ZWQ2NjgzYzdiNzA0OGQwMjRjY2Y3NjVmM2ZmNDQyNWY4NTkzLi5hZjZk
MzMyNDA1NjBhMTZhZjQzMmZmYTUyMmU1NzI5YjBiMTYyMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3QubW0KQEAg
LTEwMiw5ICsxMDIsOSBAQCBzdGF0aWMgV0tCYWNrRm9yd2FyZExpc3RJdGVtICp0b1dLQmFja0Zv
cndhcmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdAogCiAjcHJhZ21hIG1hcmsg
V0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAotLSAoQVBJT2JqZWN0ICYpX2FwaU9i
amVjdAorLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIHsKLSAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8QVBJT2JqZWN0Kj4oJl9saXN0KTsKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8QVBJOjpPYmplY3QqPigmX2xpc3QpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJdGVtLm1t
CmluZGV4IGFmMjdlZTIxOWZiMTI5ZGM3ZmE4Njc0OTNlMmY3ZDY4MzYwMDRkYjIuLjVhMTk0N2Uw
ZGE0Y2FhNzQ2MWRiNTk5NDk4NGI1OTUzYTM4ZjBlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJdGVtLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJdGVtLm1t
CkBAIC02Myw5ICs2Myw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICNwcmFnbWEgbWFy
ayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgogCi0tIChBUElPYmplY3QmKV9hcGlP
YmplY3QKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CiB7Ci0gICAgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PEFQSU9iamVjdCo+KCZfaXRlbSk7CisgICAgcmV0dXJuICpyZWludGVycHJldF9j
YXN0PEFQSTo6T2JqZWN0Kj4oJl9pdGVtKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EYXRhLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EYXRhLm1tCmluZGV4IDVh
NjViM2NiMjM0MjNmYTlkZWQ4MGNhYzljOTUwN2JmOWI1MGFlNDYuLmQzZTU4NmE4ZDkzYmZjZDNj
NTY2YWNkMjQ0MmRiZjJmNDI0MzY5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRhdGEubW0KQEAgLTY3LDkgKzY3LDkgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29s
IGltcGxlbWVudGF0aW9uCiAKLS0gKEFQSU9iamVjdCYpX2FwaU9iamVjdAorLSAoQVBJOjpPYmpl
Y3QmKV9hcGlPYmplY3QKIHsKLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QVBJT2JqZWN0
Kj4oJl9kYXRhKTsKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QVBJOjpPYmplY3QqPigm
X2RhdGEpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5tbQppbmRleCBhN2IzMTA0MThlZDRk
MTE0ZmVlYjc4MWY0NTNiZjc0MzhhNDU4NjYxLi4xNWE0ZWIwOTQ3N2JhZjNhNGY2YjNkNWRlMzA0
MDA5Yjc4YWUyOTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAubW0KQEAgLTExMyw3ICsxMTMsNyBAQCBz
dGF0aWMgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gY3JlYXRlV0tBcnJheShOU0FycmF5ICphcnJh
eSkKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3Rv
cjxSZWZQdHI8QVBJT2JqZWN0Pj4gc3RyaW5nczsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2Jq
ZWN0Pj4gc3RyaW5nczsKICAgICBzdHJpbmdzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQp
OwogCiAgICAgZm9yIChpZCBlbnRyeSBpbiBhcnJheSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5LmgKaW5kZXggY2UzZDZkNmU1ODFkOWVkMWVjNTVjNmY4MDQyYTQw
MDU3YTQyZGE4NC4uZGNkN2M0NzBmYzI2ZmQzYmFkM2FmZTRmODMyZTFlNTg5OWZiNTZlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oCkBAIC00MSw3ICs0MSw3
IEBAIGNsYXNzIENoaWxkUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViQ3JlZGVudGlhbDsKIGNsYXNz
IFdlYlByb3RlY3Rpb25TcGFjZTsKIAotY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eSA6IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZT4geworY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSA6IHB1YmxpYyBB
UEk6OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgQ29yZUlQQzo6Q29u
bmVjdGlvbiogY29ubmVjdGlvbikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmgKaW5kZXggOTQwYTY1MDIxZmNkZjNiOGUwYWUxOWU5ZTJlYzY1M2Rh
NDIzMGMxNC4uYzBmZDI0OTdhY2UwMDdkM2QwZjdhYWQ5YzFhOTRiZmY0NDRkZDQxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaApAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHk7CiBjbGFzcyBXZWJDcmVkZW50aWFsOwogCi1jbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXIgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyPiB7CitjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXIgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZUF1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lcj4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcj4gY3JlYXRlKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5o
CmluZGV4IGE5NTdlNzgyNzIyNmQyMWU3MzQ4NWJmNjY5ZDNlOGViN2IyOWQ1YWUuLjMwMjQ0YWQ1
ODVhMjVkZDkxOGE0Y2Y3MGU1MzQ4ZDUzNGQ0Zjc1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaApAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ2VydGlmaWNhdGVJbmZv
OwogCi1jbGFzcyBXZWJDcmVkZW50aWFsIDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVj
dDo6VHlwZUNyZWRlbnRpYWw+IHsKK2NsYXNzIFdlYkNyZWRlbnRpYWwgOiBwdWJsaWMgQVBJOjpU
eXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZUNyZWRlbnRpYWw+IHsKIHB1YmxpYzoKICAgICB+
V2ViQ3JlZGVudGlhbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmgKaW5kZXggNGQ0OTA1ZmU5
NmY2ZmJjMjM0NzgyZmNjMzU4ZGUwMzg0MDVlMTRhMi4uMzg3MmUwMGZkOTE5ZDU5NzZmNjhlM2M5
ZTk3MDI0YjYyMjk3MmM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaApAQCAtMzIsNyArMzIs
NyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlIDog
cHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZVByb3RlY3Rpb25TcGFjZT4gewor
Y2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlIDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpP
YmplY3Q6OlR5cGVQcm90ZWN0aW9uU3BhY2U+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJQcm90ZWN0aW9uU3BhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9u
U3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCmluZGV4IDIwYTczMjM2NDY0ZGQ0Zjhh
NzI1MTRkYTc2NGMxOWY1NGRkZmNkZTYuLjE3ODExODQxNTY2ODU1YmRiYmMwMDYzOTg4ZTUwOGRj
YzU4Mjc4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFdlYkNvbnRleHQ7CiBjbGFz
cyBXZWJEYXRhOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCi1jbGFzcyBEb3dubG9hZFByb3h5IDog
cHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZURvd25sb2FkPiwgcHVibGljIENv
cmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBEb3dubG9hZFByb3h5IDogcHVibGljIEFQ
STo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVEb3dubG9hZD4sIHB1YmxpYyBDb3JlSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvd25s
b2FkUHJveHk+IGNyZWF0ZShEb3dubG9hZFByb3h5TWFwJiwgV2ViQ29udGV4dCopOwogICAgIH5E
b3dubG9hZFByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgKaW5kZXggMzkxMjc1NDEyMzNk
Mzk1N2ZiNTQyYWRkOWIyMmExNThmODY3MTY3Ny4uOWZmZTc5M2E1OTYxYjM5YjJlMzZhYjc5ZThh
NGUyZTM0ZmM2MTA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaApAQCAtMzMsNyArMzMsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTsKIAotY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5
IDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZUdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3Q+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSA6
IHB1YmxpYyBBUEk6OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eT4gY3JlYXRlKEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkqIG1hbmFnZXIsIHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKaW5kZXggMjU3NmE3
YTZmYzU5ODU3ODUwMjNhMTYyNWI2ODdhYmVjNGViZjNjYy4uNGM1ZGEwOGRjZmYwMTcyMTI1ZTZm
NWZmYWIzMjc2NzNlMzI4ZWVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTsKIAotY2xhc3MgTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0
OjpUeXBlTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsKK2NsYXNzIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0IDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6
OlR5cGVOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkqLCB1aW50NjRfdCBub3RpZmljYXRp
b25JRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKaW5kZXggMTRlOTA1YzUzOTk3ZTZiMGZhZWNkZGE4ZDdh
Y2JjYmY2MzE5NmFiMC4uNzZiMzU3NDIxODM5ZDFmZDk0ZjM4OWY4NjY1MmQ5NDFlMDJmOWExZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQXJndW1lbnRFbmNvZGVy
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViTm90aWZpY2F0aW9uIDogcHVibGlj
IFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZU5vdGlmaWNhdGlvbj4geworY2xhc3MgV2Vi
Tm90aWZpY2F0aW9uIDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVO
b3RpZmljYXRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJOb3RpZmlj
YXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNv
bnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFu
ZywgY29uc3QgU3RyaW5nJiBkaXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRf
dCBub3RpZmljYXRpb25JRCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmNwcAppbmRleCA5ZTQ2MmFmOWIzYzNiODhiOWYzZTUxNTlhMDdkMDAzZWZkOWJlMDQ5
Li5lYzkwNWE5ZWVhMjRjZGQwMzg5N2IzY2FhYTA2MmI4ZTc1MzQ1OGRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTc3LDEyICs3NywxMiBAQCB2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y29udGV4dERlc3Ryb3llZCgpCiAKIHZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiB7
Ci0gICAgQVBJT2JqZWN0OjpyZWYoKTsKKyAgICBBUEk6Ok9iamVjdDo6cmVmKCk7CiB9CiAKIHZv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50
KCkKIHsKLSAgICBBUElPYmplY3Q6OmRlcmVmKCk7CisgICAgQVBJOjpPYmplY3Q6OmRlcmVmKCk7
CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwb3B1bGF0ZUNvcHlPZk5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKEhhc2hNYXA8U3RyaW5nLCBib29sPiYgcGVybWlzc2lvbnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IDU4OTBiNWMxYjBl
NGY1ZDYwYzg5NjAxY2ZhNjg2YWQxZTllMGEwZmMuLmI2MDdiYWViNjdkNjE3MWVlZjk1YjUzOTRm
MmFkN2FlYzhlNWQ3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
CkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFdlYkNvbnRleHQ7CiBjbGFzcyBXZWJQYWdlUHJveHk7
CiBjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIAotY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5IDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZU5vdGlmaWNhdGlv
bk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQgeworY2xhc3MgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6
OlR5cGVOb3RpZmljYXRpb25NYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50IHsK
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwpAQCAt
NjUsOCArNjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNh
dGlvblBvbGljeShjb25zdCBXZWJTZWN1cml0eU9yaWdpbiosIGJvb2wgYWxsb3dlZCk7CiAgICAg
dm9pZCBwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKEltbXV0YWJsZUFycmF5
KiBvcmlnaW5zKTsKIAotICAgIHVzaW5nIEFQSU9iamVjdDo6cmVmOwotICAgIHVzaW5nIEFQSU9i
amVjdDo6ZGVyZWY7CisgICAgdXNpbmcgQVBJOjpPYmplY3Q6OnJlZjsKKyAgICB1c2luZyBBUEk6
Ok9iamVjdDo6ZGVyZWY7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcAppbmRleCA1MjFhZGE1NTQzMDNkMzczNjIzNzcxZWI1Nzc3YjNhZGFlYzk1ZGIwLi40YzEz
ZDJkMjVkNjc5ODY5Mzk2ZmEyY2Q2MzE5YTAzNmQ3MjVhOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3Rp
ZmljCiAgICAgaWYgKCFtX2NsaWVudC5jbGVhck5vdGlmaWNhdGlvbnMpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gYXJyYXlJRHM7CisgICAgVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFycmF5SURzOwogICAgIGFycmF5SURzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobm90aWZpY2F0aW9uSURzLnNpemUoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1
dG8mIG5vdGlmaWNhdGlvbklEIDogbm90aWZpY2F0aW9uSURzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIu
aAppbmRleCA3NjYwODZlMjc5MDRlZmQ4MjA4ZTA1ZmI0OGM4ZGQyYjI5NGViMWE1Li5mNTVkNmQx
YTBhNzAwODJmZmI1MGQ2ODY1MWY0YTZiMTgwOTNjZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIu
aApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIHR5cGVkZWYgR2Vu
ZXJpY0NhbGxiYWNrPFdLQXJyYXlSZWY+IEFycmF5Q2FsbGJhY2s7CiAKLWNsYXNzIFdlYlBsdWdp
blNpdGVEYXRhTWFuYWdlciA6IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVQ
bHVnaW5TaXRlRGF0YU1hbmFnZXI+IHsKK2NsYXNzIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlciA6
IHB1YmxpYyBBUEk6OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlUGx1Z2luU2l0ZURhdGFN
YW5hZ2VyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGx1Z2luU2l0ZURh
dGFNYW5hZ2VyPiBjcmVhdGUoV2ViQ29udGV4dCopOwogICAgIHZpcnR1YWwgfldlYlBsdWdpblNp
dGVEYXRhTWFuYWdlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0
YXRpc3RpY3NSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdGF0aXN0aWNz
UmVxdWVzdC5jcHAKaW5kZXggM2ViYWNjNzk4NDQwZDgwMDczODM1Y2Q5YTc5NjI3MTEwNmFmZDhm
OS4uOWI0NzRiY2FlYmYwNmYyMDBhN2FiMDJkZWVkZWIzZWE4ZmE0Y2EyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RhdGlzdGljc1JlcXVlc3QuY3BwCkBAIC04NSw3ICs4NSw3
IEBAIHZvaWQgU3RhdGlzdGljc1JlcXVlc3Q6OmNvbXBsZXRlZFJlcXVlc3QodWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBTdGF0aXN0aWNzRGF0CiAgICAgICAgIG1fcmVzcG9uc2VEaWN0aW9uYXJ5
LT5zZXQoIkphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRzIiwgY3JlYXRlRGljdGlvbmFyeUZyb21I
YXNoTWFwKGRhdGEuamF2YVNjcmlwdE9iamVjdFR5cGVDb3VudHMpLmdldCgpKTsKIAogICAgIGlm
ICghZGF0YS53ZWJDb3JlQ2FjaGVTdGF0aXN0aWNzLmlzRW1wdHkoKSkgewotICAgICAgICBWZWN0
b3I8UmVmUHRyPEFQSU9iamVjdD4+IGNhY2hlU3RhdGlzdGljczsKKyAgICAgICAgVmVjdG9yPFJl
ZlB0cjxBUEk6Ok9iamVjdD4+IGNhY2hlU3RhdGlzdGljczsKICAgICAgICAgY2FjaGVTdGF0aXN0
aWNzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGF0YS53ZWJDb3JlQ2FjaGVTdGF0aXN0aWNzLnNp
emUoKSk7CiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdGF0aXN0aWMgOiBkYXRhLndlYkNv
cmVDYWNoZVN0YXRpc3RpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggNDk0Y2E2YmQ3
YjFmZjA5OGY5ZTY0MWQ1ZmQwMzhhMzEwYTY1YzE1My4uMDRkOTY2ZDU4ZDQ0MDc5MWY5MGQ5ODk0
OTVhMjNlYTAxN2M1MDBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5LmNwcApAQCAtNzIsMTIgKzcy
LDEyIEBAIGJvb2wgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eTo6c2hvdWxkVGVybWlu
YXRlKFdlYlByb2Nlc3NQcm94eSopIGNvbnN0CiAKIHZvaWQgV2ViQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogewotICAgIEFQSU9iamVjdDo6
cmVmKCk7CisgICAgQVBJOjpPYmplY3Q6OnJlZigpOwogfQogCiB2b2lkIFdlYkFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogewotICAgIEFQ
SU9iamVjdDo6ZGVyZWYoKTsKKyAgICBBUEk6Ok9iamVjdDo6ZGVyZWYoKTsKIH0KIAogdm9pZCBX
ZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5OjpnZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
cyhQYXNzUmVmUHRyPEFycmF5Q2FsbGJhY2s+IHBycENhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5
LmgKaW5kZXggZjVmOGNlMWM0YzY3YmFiYjI5Mzk4M2UwMGU3MDEwMGI1OTI0MjM2MS4uODQ0N2Q5
OGFlOWI1OWNlOTk0ZjZiOWE0MmY2YTJkYzQ4NDcyZmYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eS5o
CkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIHR5cGVkZWYg
R2VuZXJpY0NhbGxiYWNrPFdLQXJyYXlSZWY+IEFycmF5Q2FsbGJhY2s7CiAKLWNsYXNzIFdlYkFw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2Jq
ZWN0OjpUeXBlQXBwbGljYXRpb25DYWNoZU1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBs
ZW1lbnQsIHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYkFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9i
amVjdDo6VHlwZUFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBw
bGVtZW50LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKQEAgLTU3LDggKzU3LDggQEAg
cHVibGljOgogICAgIHZvaWQgZGVsZXRlRW50cmllc0Zvck9yaWdpbihXZWJTZWN1cml0eU9yaWdp
biopOwogICAgIHZvaWQgZGVsZXRlQWxsRW50cmllcygpOwogCi0gICAgdXNpbmcgQVBJT2JqZWN0
OjpyZWY7Ci0gICAgdXNpbmcgQVBJT2JqZWN0OjpkZXJlZjsKKyAgICB1c2luZyBBUEk6Ok9iamVj
dDo6cmVmOworICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKIAogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXgg
NDFkNmE2NDRjZDJjYWMwZGE3OGEzZmRjNDI3MDMyMmI3YTFiMDc1Yy4uZTQ1N2NkYzNjMDZkNzg1
MDdhNjQ2NDljNDc4ODhhY2Y1NjkwMGZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXZWJCYWNr
Rm9yd2FyZExpc3Q6OmFkZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogbmV3SXRlbSkKICAg
ICBpZiAoIW1fY2FwYWNpdHkgfHwgIW5ld0l0ZW0gfHwgIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiByZW1vdmVkSXRlbXM7CisgICAgVmVj
dG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHJlbW92ZWRJdGVtczsKICAgICAKICAgICBpZiAobV9o
YXNDdXJyZW50SW5kZXgpIHsKICAgICAgICAgLy8gVG9zcyBldmVyeXRoaW5nIGluIHRoZSBmb3J3
YXJkIGxpc3QuCkBAIC0yMTIsNyArMjEyLDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4g
V2ViQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQKICAg
ICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6Y3JlYXRlKCk7CiAK
LSAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+IHZlY3RvcjsKKyAgICBWZWN0b3I8UmVmUHRy
PEFQSTo6T2JqZWN0Pj4gdmVjdG9yOwogICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHNpemUpOwogCiAgICAgQVNTRVJUKGJhY2tMaXN0U2l6ZSA+PSBzaXplKTsKQEAgLTIzNSw3ICsy
MzUsNyBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJCYWNrRm9yd2FyZExpc3Q6OmZv
cndhcmRMaXN0QXNJbW11dGFibGVBcnJheVdpdGhMaQogICAgIGlmICghc2l6ZSkKICAgICAgICAg
cmV0dXJuIEltbXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8QVBJ
T2JqZWN0Pj4gdmVjdG9yOworICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiB2ZWN0b3I7
CiAgICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CiAKICAgICB1bnNpZ25l
ZCBsYXN0ID0gbV9jdXJyZW50SW5kZXggKyBzaXplOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQg
V2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0
cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjdXJyZW50SXRlbSA9IHRoaXMtPmN1cnJlbnRJdGVt
KCk7Ci0gICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiByZW1vdmVkSXRlbXM7CisgICAgVmVj
dG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHJlbW92ZWRJdGVtczsKIAogICAgIGlmICghY3VycmVu
dEl0ZW0pIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZXZlciBoYXZlIG5vIGN1cnJlbnQg
aXRlbSBpZiB3ZSBhbHNvIGhhdmUgbm8gY3VycmVudCBpdGVtIGluZGV4LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCmluZGV4IGQ3MzllY2FkNTA1OTI0
ZjY0NmViNDEwNTM5YjllNDhhMDNhNmM2NWIuLmYxZmIxOTUyZmE5MjVkYjdmZjY1ZjVhNTFmNmYw
NDZkYzYwNDU2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZExpc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0Zvcndh
cmRMaXN0LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgKiAgICAgIEJh
Y2sgICAgICAgIEZvcndhcmQKICAqLwogCi1jbGFzcyBXZWJCYWNrRm9yd2FyZExpc3QgOiBwdWJs
aWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlQmFja0ZvcndhcmRMaXN0PiB7CitjbGFz
cyBXZWJCYWNrRm9yd2FyZExpc3QgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVj
dDo6VHlwZUJhY2tGb3J3YXJkTGlzdD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYkJhY2tGb3J3YXJkTGlzdD4gY3JlYXRlKFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRM
aXN0ZW5lclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lclByb3h5LmgKaW5kZXggNGZhNWU5NDU4OTkwN2VmODg5NDkyNTE2M2Q4NDkw
MTQ2ZTZhMjg4Ni4uNDc3NjhhYmYzMjU4NzYzYmI5Y2U5MWRlYjg1NmYwMzYyMmU2YmNjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlz
dGVuZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tl
clJlc3VsdExpc3RlbmVyUHJveHkuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgV2ViUGFnZVByb3h5OwogCi1jbGFzcyBXZWJDb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyUHJveHkgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlQ29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lcj4geworY2xhc3MgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
clByb3h5IDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5KiBwYWdl
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBjMmM2ZTI0NTU1MDdmODg3MzlmNmQ4YTkxMmVjNWE2
Nzg3OTczYzEzLi44ODY1NzNmMDFlYjIxYWY5ZGE1ZTlhNDJmNzJkZDE4NWQwNjE1MzAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC01MCwxMiArNTAsMTIgQEAgdm9pZCBXZWJDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjppbnZhbGlkYXRlKCkKIAogLy8gV2ViQ29ubmVjdGlvbgogCi12b2lkIFdlYkNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVuY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rl
ciYgZW5jb2RlciwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkKK3ZvaWQgV2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZW5jb2RlTWVzc2FnZUJvZHkoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBl
bmNvZGVyLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiB7CiAgICAgZW5jb2RlciA8PCBXZWJD
b250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKG1lc3NhZ2VCb2R5KTsKIH0KIAotYm9vbCBXZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWNvZGVNZXNzYWdlQm9keShDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIFJlZlB0cjxBUElPYmplY3Q+JiBtZXNzYWdlQm9keSkKK2Jvb2wgV2Vi
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVjb2RlTWVzc2FnZUJvZHkoQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiBtZXNzYWdlQm9keSkKIHsK
ICAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VCb2R5RGVjb2RlcihtZXNz
YWdlQm9keSwgbV9wcm9jZXNzKTsKICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUobWVzc2FnZUJv
ZHlEZWNvZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDU3MTdmNDYyNTg5ZTY4MTU3ZTJmNDY5N2U5YWFiNjE4
MjU3ZTJjZjQuLjk1MTc4N2ZlZGEyM2NhN2NkYTU2NDZjOWQwODJmY2UzNjdiN2MxMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaApAQCAtNDQsOCArNDQsOCBAQCBwcml2YXRlOgogICAgIFdlYkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Kik7CiAKICAgICAvLyBXZWJDb25uZWN0aW9uCi0gICAgdmly
dHVhbCB2b2lkIGVuY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYsIEFQ
SU9iamVjdCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVNZXNzYWdlQm9keShD
b3JlSVBDOjpBcmd1bWVudERlY29kZXImLCBSZWZQdHI8QVBJT2JqZWN0PiYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVNZXNzYWdlQm9keShDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXImLCBBUEk6Ok9iamVjdCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVNZXNz
YWdlQm9keShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGhhc1ZhbGlkQ29ubmVjdGlvbigpIGNvbnN0IE9W
RVJSSURFOwogCiAgICAgLy8gQ29yZUlQQzo6TWVzc2FnZVNlbmRlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDY2MTc2NTBlOTE5MGFjODI4NTY5NjY1ZGFkYjFl
MjEwYmYxOWJhZjUuLjkzZWNjY2IxZTU4ZTFkMWRjOWY2YjBhYzRkMjM5MDE5NGQ4ZmNkM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTU3MCw3ICs1NzAsNyBA
QCBXZWJQcm9jZXNzUHJveHkqIFdlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAg
IC8vIEFkZCBhbnkgcGxhdGZvcm0gc3BlY2lmaWMgcGFyYW1ldGVycwogICAgIHBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MocGFyYW1ldGVycyk7CiAKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiBp
bmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBtX2luamVjdGVkQnVuZGxlQ2xp
ZW50LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSh0aGlzKTsKKyAgICBS
ZWZQdHI8QVBJOjpPYmplY3Q+IGluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9
IG1faW5qZWN0ZWRCdW5kbGVDbGllbnQuZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVz
ZXJEYXRhKHRoaXMpOwogICAgIGlmICghaW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhKQogICAgICAgICBpbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBtX2lu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YTsKICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpJbml0aWFsaXplV2ViUHJvY2VzcyhwYXJhbWV0ZXJzLCBXZWJD
b250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKGluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YS5nZXQoKSkpLCAwKTsKQEAgLTU4Miw3ICs1ODIsNyBAQCBXZWJQcm9jZXNzUHJveHkqIFdl
YkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogCiAgICAgaWYgKG1fcHJvY2Vzc01vZGVs
ID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgIT0gbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5
Q29udGV4dC5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgcGFpcjxTdHJpbmcsIFJlZlB0cjxB
UElPYmplY3Q+PiYgbWVzc2FnZSA9IG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9F
bXB0eUNvbnRleHRbaV07CisgICAgICAgICAgICBwYWlyPFN0cmluZywgUmVmUHRyPEFQSTo6T2Jq
ZWN0Pj4mIG1lc3NhZ2UgPSBtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlD
b250ZXh0W2ldOwogCiAgICAgICAgICAgICBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIgbWVzc2Fn
ZURhdGE7CiAKQEAgLTc1OCw3ICs3NTgsNyBAQCBEb3dubG9hZFByb3h5KiBXZWJDb250ZXh0Ojpk
b3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBSZXNvdXJjZQogICAg
IHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCi12b2lkIFdlYkNvbnRleHQ6OnBvc3RNZXNzYWdl
VG9JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUElPYmplY3QqIG1l
c3NhZ2VCb2R5KQordm9pZCBXZWJDb250ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQogewog
ICAgIGlmIChtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcHJvY2Vzc01v
ZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpCkBAIC03NzgsMTIgKzc3
OCwxMiBAQCB2b2lkIFdlYkNvbnRleHQ6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb25z
dCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUElPYmplYwogCiAvLyBJbmplY3RlZEJ1bmRsZSBjbGll
bnQKIAotdm9pZCBXZWJDb250ZXh0OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUElPYmplY3QqIG1lc3NhZ2VCb2R5KQordm9p
ZCBXZWJDb250ZXh0OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiB7CiAgICAgbV9p
bmplY3RlZEJ1bmRsZUNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0
aGlzLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwogfQogCi12b2lkIFdlYkNvbnRleHQ6OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5n
JiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSwgUmVmUHRyPEFQSU9iamVjdD4m
IHJldHVybkRhdGEpCit2b2lkIFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmpl
Y3QqIG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKQogewogICAg
IG1faW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSh0aGlzLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHksIHJldHVybkRhdGEp
OwogfQpAQCAtOTM2LDcgKzkzNiw3IEBAIHZvaWQgV2ViQ29udGV4dDo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzCiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IFdlYkNvbnRleHRMZWdhY3lNZXNzYWdl
czo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpCiAgICAgICAgICYmIGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBXZWJDb250ZXh0TGVnYWN5TWVzc2FnZXM6OnBvc3RNZXNzYWdlTWVzc2FnZU5hbWUoKSkg
ewogICAgICAgICBTdHJpbmcgbWVzc2FnZU5hbWU7Ci0gICAgICAgIFJlZlB0cjxBUElPYmplY3Q+
IG1lc3NhZ2VCb2R5OworICAgICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IG1lc3NhZ2VCb2R5Owog
ICAgICAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VCb2R5RGVjb2Rlciht
ZXNzYWdlQm9keSwgV2ViUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uKSk7
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZU5hbWUpKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtOTYyLDE0ICs5NjIsMTQgQEAgdm9pZCBXZWJDb250ZXh0OjpkaWRSZWNlaXZl
U3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzoKICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSBlbmNvZGUgc29tZXRoaW5nIGluIHRo
ZSBjYXNlIHRoYXQgdGhlIGFyZ3VtZW50cyBkbyBub3QgZGVjb2RlIGNvcnJlY3RseS4KIAogICAg
ICAgICBTdHJpbmcgbWVzc2FnZU5hbWU7Ci0gICAgICAgIFJlZlB0cjxBUElPYmplY3Q+IG1lc3Nh
Z2VCb2R5OworICAgICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IG1lc3NhZ2VCb2R5OwogICAgICAg
ICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VCb2R5RGVjb2RlcihtZXNzYWdl
Qm9keSwgV2ViUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uKSk7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZU5hbWUpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VCb2R5RGVjb2RlcikpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUmVmUHRyPEFQSU9iamVjdD4gcmV0dXJuRGF0YTsK
KyAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiByZXR1cm5EYXRhOwogICAgICAgICBkaWRSZWNl
aXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNz
YWdlQm9keS5nZXQoKSwgcmV0dXJuRGF0YSk7CiAgICAgICAgIHJlcGx5RW5jb2Rlci0+ZW5jb2Rl
KFdlYkNvbnRleHRVc2VyTWVzc2FnZUVuY29kZXIocmV0dXJuRGF0YS5nZXQoKSkpOwogICAgICAg
ICByZXR1cm47CkBAIC0xMjU4LDcgKzEyNTgsNyBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsdWdpbklu
Zm9TdG9yZURpZExvYWRQbHVnaW5zKFBsdWdpbkluZm9TdG9yZSogc3RvcmUpCiAKICAgICBWZWN0
b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2luTW9kdWxlcyA9IG1fcGx1Z2luSW5mb1N0b3JlLnBs
dWdpbnMoKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gcGx1Z2luczsKKyAgICBW
ZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gcGx1Z2luczsKICAgICBwbHVnaW5zLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkocGx1Z2luTW9kdWxlcy5zaXplKCkpOwogCiAgICAgZm9yIChjb25zdCBh
dXRvJiBwbHVnaW5Nb2R1bGUgOiBwbHVnaW5Nb2R1bGVzKSB7CkBAIC0xMjY4LDcgKzEyNjgsNyBA
QCB2b2lkIFdlYkNvbnRleHQ6OnBsdWdpbkluZm9TdG9yZURpZExvYWRQbHVnaW5zKFBsdWdpbklu
Zm9TdG9yZSogc3RvcmUpCiAgICAgICAgIG1hcC5zZXQoQVNDSUlMaXRlcmFsKCJmaWxlIiksIFdl
YlN0cmluZzo6Y3JlYXRlKHBsdWdpbk1vZHVsZS5pbmZvLmZpbGUpKTsKICAgICAgICAgbWFwLnNl
dChBU0NJSUxpdGVyYWwoImRlc2MiKSwgV2ViU3RyaW5nOjpjcmVhdGUocGx1Z2luTW9kdWxlLmlu
Zm8uZGVzYykpOwogCi0gICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gbWltZVR5cGVz
OworICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gbWltZVR5cGVzOwogICAgICAg
ICBtaW1lVHlwZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwbHVnaW5Nb2R1bGUuaW5mby5taW1l
cy5zaXplKCkpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1pbWVDbGFzc0luZm8gOiBwbHVn
aW5Nb2R1bGUuaW5mby5taW1lcykKICAgICAgICAgICAgIG1pbWVUeXBlcy51bmNoZWNrZWRBcHBl
bmQoV2ViU3RyaW5nOjpjcmVhdGUobWltZUNsYXNzSW5mby50eXBlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCBlNTc4YjNhMmQ2N2M2ZmQzNmZhYzU0ZWZhYjkwNjky
NzdlMDMyNWEyLi5kNjMyNmYyODk1ZTY3ZTMwYzM4MGNmNDVlMWQ5NWFmNmY5ZjRhMDkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTkxLDcgKzkxLDcgQEAgZXh0ZXJu
IE5TU3RyaW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRpb25O
YW1lOwogZXh0ZXJuIE5TU3RyaW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFVucmVnaXN0ZXJl
ZE5vdGlmaWNhdGlvbk5hbWU7CiAjZW5kaWYKIAotY2xhc3MgV2ViQ29udGV4dCA6IHB1YmxpYyBU
eXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVDb250ZXh0PiwgcHJpdmF0ZSBDb3JlSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKK2NsYXNzIFdlYkNvbnRleHQgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVj
dDxBUEk6Ok9iamVjdDo6VHlwZUNvbnRleHQ+LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICwgcHJpdmF0ZSBQbHVn
aW5JbmZvU3RvcmVDbGllbnQKICNlbmRpZgpAQCAtMTU5LDEzICsxNTksMTMgQEAgcHVibGljOgog
CiAgICAgRG93bmxvYWRQcm94eSogZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFn
ZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSAgICB2b2lkIHNldEluamVj
dGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShQYXNzUmVmUHRyPEFQSU9iamVjdD4gdXNl
ckRhdGEpIHsgbV9pbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEgPSB1c2VyRGF0
YTsgfQorICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFBh
c3NSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFs
aXphdGlvblVzZXJEYXRhID0gdXNlckRhdGE7IH0KIAotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0lu
amVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEFQSU9iamVjdCopOworICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0Kik7CiAKICAg
ICAvLyBJbmplY3RlZEJ1bmRsZSBjbGllbnQKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEFQSU9iamVjdCopOwotICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcm
LCBBUElPYmplY3QqLCBSZWZQdHI8QVBJT2JqZWN0PiYgcmV0dXJuRGF0YSk7CisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmLCBBUEk6Ok9i
amVjdCopOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCosIFJlZlB0cjxBUEk6Ok9iamVjdD4m
IHJldHVybkRhdGEpOwogCiAgICAgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rcygpOwogCkBAIC00
MTcsNyArNDE3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IG1fZGVm
YXVsdFBhZ2VHcm91cDsKIAotICAgIFJlZlB0cjxBUElPYmplY3Q+IG1faW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gbV9pbmplY3Rl
ZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGE7CiAgICAgU3RyaW5nIG1faW5qZWN0ZWRCdW5k
bGVQYXRoOwogICAgIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCBtX2luamVjdGVkQnVu
ZGxlQ2xpZW50OwogCkBAIC00NDUsNyArNDQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3Nh
Z2VzIHRoYXQgd2VyZSBwb3N0ZWQgYmVmb3JlIGFueSBwYWdlcyB3ZXJlIGNyZWF0ZWQuCiAgICAg
Ly8gVGhlIGNsaWVudCBzaG91bGQgdXNlIGluaXRpYWxpemF0aW9uIG1lc3NhZ2VzIGluc3RlYWQs
IHNvIHRoYXQgYSByZXN0YXJ0ZWQgcHJvY2VzcyB3b3VsZCBnZXQgdGhlIHNhbWUgc3RhdGUuCi0g
ICAgVmVjdG9yPHBhaXI8U3RyaW5nLCBSZWZQdHI8QVBJT2JqZWN0Pj4+IG1fbWVzc2FnZXNUb0lu
amVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQ7CisgICAgVmVjdG9yPHBhaXI8U3RyaW5n
LCBSZWZQdHI8QVBJOjpPYmplY3Q+Pj4gbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRU
b0VtcHR5Q29udGV4dDsKIAogICAgIENhY2hlTW9kZWwgbV9jYWNoZU1vZGVsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5k
bGVDbGllbnQuY3BwCmluZGV4IDgyNTM4OGIwOTczMmJlYmE4YTQ4OGU0NmQzODY2MzBlYjlhYTM1
OTMuLjI4YjkxM2U3YTM0ZTEyMTE4MmFmMzZjM2Y0NTkwYjdiODRmN2M4ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5k
bGVDbGllbnQuY3BwCkBAIC0zMyw3ICszMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQ6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdCogbWVzc2FnZUJvZHkpCit2
b2lkIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV2ViQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
TmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQogewogICAgIGlmICghbV9jbGllbnQuZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpCiAgICAgICAgIHJldHVybjsKQEAgLTQx
LDcgKzQxLDcgQEAgdm9pZCBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYkNvbnQKICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0b0FQSShjb250ZXh0KSwgdG9BUEkobWVzc2Fn
ZU5hbWUuaW1wbCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsK
IH0KIAotdm9pZCBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSwgUmVmUHRyPEFQ
SU9iamVjdD4mIHJldHVybkRhdGEpCit2b2lkIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVz
c2FnZUJvZHksIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVybkRhdGEpCiB7CiAgICAgaWYgKCFt
X2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKQog
ICAgICAgICByZXR1cm47CkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgV2ViQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
CiAgICAgcmV0dXJuRGF0YSA9IGFkb3B0UmVmKHRvSW1wbChyZXR1cm5EYXRhUmVmKSk7CiB9CiAK
LVBhc3NSZWZQdHI8QVBJT2JqZWN0PiBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6Omdl
dEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXZWJDb250ZXh0KiBjb250ZXh0
KQorUGFzc1JlZlB0cjxBUEk6Ok9iamVjdD4gV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50
OjpnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV2ViQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBpZiAoIW1fY2xpZW50LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRp
b25Vc2VyRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggZDZi
Mjc0ZWNlMjAzNDUwYzhiOWE0NzNhYWU2NmNhNjBjNTllMzEyZi4uODE1OTQ2MzkzM2EwOGFkZWY5
MzU4M2ZmODY3ODMwMzNlYzhlYWM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaApAQCAtMzAsMTYgKzMw
LDE5IEBACiAjaW5jbHVkZSAiV0tDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1jbGFzcyBBUElPYmplY3Q7CiBjbGFzcyBXZWJDb250ZXh0OwogCiBjbGFzcyBXZWJDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50LCBrV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRDdXJyZW50VmVy
c2lvbj4gewogcHVibGljOgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUoV2ViQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIEFQSU9iamVjdCopOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJDb250ZXh0
KiwgY29uc3QgU3RyaW5nJiwgQVBJT2JqZWN0KiwgUmVmUHRyPEFQSU9iamVjdD4mIHJldHVybkRh
dGEpOwotICAgIFBhc3NSZWZQdHI8QVBJT2JqZWN0PiBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxp
emF0aW9uVXNlckRhdGEoV2ViQ29udGV4dCopOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV2ViQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0
Kik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKFdlYkNvbnRleHQqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCosIFJlZlB0cjxBUEk6
Ok9iamVjdD4mIHJldHVybkRhdGEpOworICAgIFBhc3NSZWZQdHI8QVBJOjpPYmplY3Q+IGdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXZWJDb250ZXh0Kik7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaAppbmRleCAwNDFjMjM0ZmRlNmMyMjdmZTBl
OGE0MDJhZTVhYTUzNzNhMThjY2IzLi5kNzU2Nzc5NzgxMDJmYThlODdkZDA1MDE5NTdmZmYzNGEw
MzZiNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dFVz
ZXJNZXNzYWdlQ29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHRVc2VyTWVzc2FnZUNvZGVycy5oCkBAIC00NSwzNSArNDUsMzUgQEAgY2xhc3MgV2ViQ29udGV4
dFVzZXJNZXNzYWdlRW5jb2RlciA6IHB1YmxpYyBVc2VyTWVzc2FnZUVuY29kZXI8V2ViQ29udGV4
dFVzZXJNZXMKIHB1YmxpYzoKICAgICB0eXBlZGVmIFVzZXJNZXNzYWdlRW5jb2RlcjxXZWJDb250
ZXh0VXNlck1lc3NhZ2VFbmNvZGVyPiBCYXNlOwogCi0gICAgZXhwbGljaXQgV2ViQ29udGV4dFVz
ZXJNZXNzYWdlRW5jb2RlcihBUElPYmplY3QqIHJvb3QpIAorICAgIGV4cGxpY2l0IFdlYkNvbnRl
eHRVc2VyTWVzc2FnZUVuY29kZXIoQVBJOjpPYmplY3QqIHJvb3QpIAogICAgICAgICA6IEJhc2Uo
cm9vdCkKICAgICB7CiAgICAgfQogCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgQVBJT2JqZWN0OjpUeXBlIHR5
cGUgPSBBUElPYmplY3Q6OlR5cGVOdWxsOworICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZSB0eXBl
ID0gQVBJOjpPYmplY3Q6OlR5cGVOdWxsOwogICAgICAgICBpZiAoYmFzZUVuY29kZShlbmNvZGVy
LCB0eXBlKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsK
LSAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVQYWdlOiB7CisgICAgICAgIGNhc2UgQVBJOjpP
YmplY3Q6OlR5cGVQYWdlOiB7CiAgICAgICAgICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBzdGF0
aWNfY2FzdDxXZWJQYWdlUHJveHkqPihtX3Jvb3QpOwogICAgICAgICAgICAgZW5jb2RlciA8PCBw
YWdlLT5wYWdlSUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQVBJT2JqZWN0OjpUeXBlRnJhbWU6IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlw
ZUZyYW1lOiB7CiAgICAgICAgICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHN0YXRpY19jYXN0
PFdlYkZyYW1lUHJveHkqPihtX3Jvb3QpOwogICAgICAgICAgICAgZW5jb2RlciA8PCBmcmFtZS0+
ZnJhbWVJRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBB
UElPYmplY3Q6OlR5cGVQYWdlR3JvdXA6IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlw
ZVBhZ2VHcm91cDogewogICAgICAgICAgICAgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAgPSBzdGF0
aWNfY2FzdDxXZWJQYWdlR3JvdXAqPihtX3Jvb3QpOwogICAgICAgICAgICAgZW5jb2RlciA8PCBw
YWdlR3JvdXAtPmRhdGEoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAjaWYgUExB
VEZPUk0oTUFDKQotICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZU9iakNPYmplY3RHcmFwaDog
eworICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlT2JqQ09iamVjdEdyYXBoOiB7CiAgICAg
ICAgICAgICBPYmpDT2JqZWN0R3JhcGgqIG9iamVjdEdyYXBoID0gc3RhdGljX2Nhc3Q8T2JqQ09i
amVjdEdyYXBoKj4obV9yb290KTsKICAgICAgICAgICAgIGVuY29kZXIgPDwgV2ViQ29udGV4dE9i
akNPYmplY3RHcmFwaEVuY29kZXIob2JqZWN0R3JhcGgpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC05NSwxMyArOTUsMTMgQEAgY2xhc3MgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciA6IHB1
YmxpYyBVc2VyTWVzc2FnZURlY29kZXI8V2ViQ29udGV4dFVzZXJNZXMKIHB1YmxpYzoKICAgICB0
eXBlZGVmIFVzZXJNZXNzYWdlRGVjb2RlcjxXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyPiBC
YXNlOwogCi0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlcihSZWZQdHI8QVBJT2JqZWN0
PiYgcm9vdCwgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQorICAgIFdlYkNvbnRleHRVc2VyTWVz
c2FnZURlY29kZXIoUmVmUHRyPEFQSTo6T2JqZWN0PiYgcm9vdCwgV2ViUHJvY2Vzc1Byb3h5KiBw
cm9jZXNzKQogICAgICAgICA6IEJhc2Uocm9vdCkKICAgICAgICAgLCBtX3Byb2Nlc3MocHJvY2Vz
cykKICAgICB7CiAgICAgfQogCi0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlcihXZWJD
b250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyJiB1c2VyTWVzc2FnZURlY29kZXIsIFJlZlB0cjxBUElP
YmplY3Q+JiByb290KQorICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIoV2ViQ29udGV4
dFVzZXJNZXNzYWdlRGVjb2RlciYgdXNlck1lc3NhZ2VEZWNvZGVyLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JiByb290KQogICAgICAgICA6IEJhc2Uocm9vdCkKICAgICAgICAgLCBtX3Byb2Nlc3ModXNl
ck1lc3NhZ2VEZWNvZGVyLm1fcHJvY2VzcykKICAgICB7CkBAIC0xMDksMjkgKzEwOSwyOSBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyJiBjb2RlcikKICAgICB7Ci0g
ICAgICAgIEFQSU9iamVjdDo6VHlwZSB0eXBlID0gQVBJT2JqZWN0OjpUeXBlTnVsbDsKKyAgICAg
ICAgQVBJOjpPYmplY3Q6OlR5cGUgdHlwZSA9IEFQSTo6T2JqZWN0OjpUeXBlTnVsbDsKICAgICAg
ICAgaWYgKCFCYXNlOjpiYXNlRGVjb2RlKGRlY29kZXIsIGNvZGVyLCB0eXBlKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoY29kZXIubV9yb290IHx8IHR5cGUgPT0g
QVBJT2JqZWN0OjpUeXBlTnVsbCkKKyAgICAgICAgaWYgKGNvZGVyLm1fcm9vdCB8fCB0eXBlID09
IEFQSTo6T2JqZWN0OjpUeXBlTnVsbCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
ICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZUJ1bmRsZVBh
Z2U6IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZUJ1bmRsZVBhZ2U6IHsKICAgICAg
ICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFnZUlEKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBjb2Rl
ci5tX3Jvb3QgPSBjb2Rlci5tX3Byb2Nlc3MtPndlYlBhZ2UocGFnZUlEKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlQnVuZGxlRnJh
bWU6IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZUJ1bmRsZUZyYW1lOiB7CiAgICAg
ICAgICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShmcmFtZUlEKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBj
b2Rlci5tX3Jvb3QgPSBjb2Rlci5tX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVCdW5k
bGVQYWdlR3JvdXA6IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZUJ1bmRsZVBhZ2VH
cm91cDogewogICAgICAgICAgICAgdWludDY0X3QgcGFnZUdyb3VwSUQ7CiAgICAgICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhZ2VHcm91cElEKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBl
T2JqQ09iamVjdEdyYXBoOiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGVPYmpDT2Jq
ZWN0R3JhcGg6IHsKICAgICAgICAgICAgIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IG9iamVjdEdy
YXBoOwogICAgICAgICAgICAgV2ViQ29udGV4dE9iakNPYmplY3RHcmFwaERlY29kZXIgb2JqZWN0
R3JhcGhEZWNvZGVyKG9iamVjdEdyYXBoLCBjb2Rlci5tX3Byb2Nlc3MpOwogICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShvYmplY3RHcmFwaERlY29kZXIpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAppbmRleCA4OGVjYmI1
MDgwZGE3MDA3N2I4YTQwMjJlMTU3NmE5ZGM4MzU0ZmY4Li5mNDhjNWQyYTJhMGM1NzQzZGQwZDJh
ZjRjNTJhMDVlYTk1YTIxNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcApAQCAtOTAsMTIgKzkwLDEyIEBAIGJvb2wgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpzaG91bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3QK
IAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkK
IHsKLSAgICBBUElPYmplY3Q6OnJlZigpOworICAgIEFQSTo6T2JqZWN0OjpyZWYoKTsKIH0KIAog
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQog
ewotICAgIEFQSU9iamVjdDo6ZGVyZWYoKTsKKyAgICBBUEk6Ok9iamVjdDo6ZGVyZWYoKTsKIH0K
IAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBh
c3NSZWZQdHI8QXJyYXlDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggMjE1ZjIyZDY5MmE3MmMx
MjkzZTQxOTQ3NjFiYTJlZjNhMzE2YzY4My4uZmEwMTJiOTZmNmUyYmE4YmRlMjJjNTM5OGNlMmE2
YTEwZjA2NzJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiB0
eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxXS0FycmF5UmVmPiBBcnJheUNhbGxiYWNrOwogdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8V0tIVFRQQ29va2llQWNjZXB0UG9saWN5LCBIVFRQQ29va2llQWNj
ZXB0UG9saWN5PiBIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s7CiAKLWNsYXNzIFdlYkNv
b2tpZU1hbmFnZXJQcm94eSA6IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVD
b29raWVNYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIENvcmVJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBXZWJDb29raWVNYW5hZ2VyUHJveHkgOiBwdWJs
aWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZUNvb2tpZU1hbmFnZXI+LCBwdWJs
aWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIApA
QCAtNzIsOCArNzIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRDb29raWVQZXJzaXN0ZW50U3Rv
cmFnZShTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW50MzJfdCYgc3RvcmFnZVR5cGUpIGNvbnN0Owog
I2VuZGlmCiAKLSAgICB1c2luZyBBUElPYmplY3Q6OnJlZjsKLSAgICB1c2luZyBBUElPYmplY3Q6
OmRlcmVmOworICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CisgICAgdXNpbmcgQVBJOjpPYmpl
Y3Q6OmRlcmVmOwogCiBwcml2YXRlOgogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eShXZWJDb250
ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VN
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFu
YWdlclByb3h5LmNwcAppbmRleCA0MzFhNWIyZGEyYTFjMWUxYjUxNjE2NDE5OTZiYzQ1NzNkYjdk
NWUwLi40OTVhNzdjMTQ3YzZiMGY2MDhiNTQwYmUyYmFiZDUxNDFjZTAxMTQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5jcHAK
QEAgLTEzMSwxMiArMTMxLDEyIEBAIGJvb2wgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OnNob3Vs
ZFRlcm1pbmF0ZShXZWJQcm9jZXNzUHJveHkqKSBjb25zdAogCiB2b2lkIFdlYkRhdGFiYXNlTWFu
YWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiB7Ci0gICAgQVBJT2JqZWN0Ojpy
ZWYoKTsKKyAgICBBUEk6Ok9iamVjdDo6cmVmKCk7CiB9CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5h
Z2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogewotICAgIEFQSU9iamVjdDo6
ZGVyZWYoKTsKKyAgICBBUEk6Ok9iamVjdDo6ZGVyZWYoKTsKIH0KIAogdm9pZCBXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eTo6Z2V0RGF0YWJhc2VzQnlPcmlnaW4oUGFzc1JlZlB0cjxBcnJheUNhbGxi
YWNrPiBwcnBDYWxsYmFjaykKQEAgLTE1NiwxNyArMTU2LDE3IEBAIHZvaWQgV2ViRGF0YWJhc2VN
YW5hZ2VyUHJveHk6OmRpZEdldERhdGFiYXNlc0J5T3JpZ2luKGNvbnN0IFZlY3RvcjxPcmlnaW5B
bmREYXRhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFQSU9i
amVjdD4+IHJlc3VsdDsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gcmVzdWx0Owog
ICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG9yaWdpbkFuZERhdGFiYXNlc1ZlY3Rv
ci5zaXplKCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5BbmREYXRhYmFzZXMgOiBv
cmlnaW5BbmREYXRhYmFzZXNWZWN0b3IpIHsKLSAgICAgICAgUmVmUHRyPEFQSU9iamVjdD4gb3Jp
Z2luID0gV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3Jp
Z2luQW5kRGF0YWJhc2VzLm9yaWdpbklkZW50aWZpZXIpOworICAgICAgICBSZWZQdHI8QVBJOjpP
YmplY3Q+IG9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKG9yaWdpbkFuZERhdGFiYXNlcy5vcmlnaW5JZGVudGlmaWVyKTsKIAotICAgICAgICBW
ZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+IGRhdGFiYXNlczsKKyAgICAgICAgVmVjdG9yPFJlZlB0
cjxBUEk6Ok9iamVjdD4+IGRhdGFiYXNlczsKICAgICAgICAgZGF0YWJhc2VzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkob3JpZ2luQW5kRGF0YWJhc2VzLmRhdGFiYXNlcy5zaXplKCkpOwogCiAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZGF0YWJhc2VEZXRhaWxzIDogb3JpZ2luQW5kRGF0YWJhc2Vz
LmRhdGFiYXNlcykgewotICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBUElPYmpl
Y3Q+PiBkZXRhaWxzTWFwOworICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBUEk6
Ok9iamVjdD4+IGRldGFpbHNNYXA7CiAKICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KGRhdGFi
YXNlRGV0YWlsc05hbWVLZXkoKSwgV2ViU3RyaW5nOjpjcmVhdGUoZGF0YWJhc2VEZXRhaWxzLm5h
bWUoKSkpOwogICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQoZGF0YWJhc2VEZXRhaWxzRGlzcGxh
eU5hbWVLZXkoKSwgV2ViU3RyaW5nOjpjcmVhdGUoZGF0YWJhc2VEZXRhaWxzLmRpc3BsYXlOYW1l
KCkpKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Ojpk
aWRHZXREYXRhYmFzZXNCeU9yaWdpbihjb25zdCBWZWN0b3I8T3JpZ2luQW5kRGF0YQogICAgICAg
ICAgICAgZGF0YWJhc2VzLnVuY2hlY2tlZEFwcGVuZChJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9w
dChkZXRhaWxzTWFwKSk7CiAgICAgICAgIH0KIAotICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVm
UHRyPEFQSU9iamVjdD4+IG9yaWdpbkFuZERhdGFiYXNlc01hcDsKKyAgICAgICAgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxBUEk6Ok9iamVjdD4+IG9yaWdpbkFuZERhdGFiYXNlc01hcDsKICAgICAg
ICAgb3JpZ2luQW5kRGF0YWJhc2VzTWFwLnNldChvcmlnaW5LZXkoKSwgb3JpZ2luKTsKICAgICAg
ICAgb3JpZ2luQW5kRGF0YWJhc2VzTWFwLnNldChvcmlnaW5RdW90YUtleSgpLCBXZWJVSW50NjQ6
OmNyZWF0ZShvcmlnaW5BbmREYXRhYmFzZXMub3JpZ2luUXVvdGEpKTsKICAgICAgICAgb3JpZ2lu
QW5kRGF0YWJhc2VzTWFwLnNldChvcmlnaW5Vc2FnZUtleSgpLCBXZWJVSW50NjQ6OmNyZWF0ZShv
cmlnaW5BbmREYXRhYmFzZXMub3JpZ2luVXNhZ2UpKTsKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lk
IFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkaWRHZXREYXRhYmFzZU9yaWdpbnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIG9yaWdpbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9y
PFJlZlB0cjxBUElPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7CisgICAgVmVjdG9yPFJlZlB0cjxB
UEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2luczsKICAgICBzZWN1cml0eU9yaWdpbnMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShvcmlnaW5JZGVudGlmaWVycy5zaXplKCkpOwogCiAgICAgZm9yIChj
b25zdCBhdXRvJiBvcmlnaW5JZGVudGlmaWVyIDogb3JpZ2luSWRlbnRpZmllcnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oCmluZGV4
IGM4YWJiZTQwMDAyMTg5ZjczYTM1MDc3MTUwZDk1MTcwYjExODBlNTIuLmE5NDE0ZWQ2N2NhNzI2
N2QyM2MxNjRmMjRkNWQ3MTg1NjE2ZjUzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNz
IFdlYlNlY3VyaXR5T3JpZ2luOwogCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxXS0FycmF5UmVm
PiBBcnJheUNhbGxiYWNrOwogCi1jbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eSA6IHB1Ymxp
YyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVEYXRhYmFzZU1hbmFnZXI+LCBwdWJsaWMg
V2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
K2NsYXNzIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5IDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8
QVBJOjpPYmplY3Q6OlR5cGVEYXRhYmFzZU1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBs
ZW1lbnQsIHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIApAQCAtNzEsOCArNzEsOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBkYXRhYmFzZURldGFpbHNFeHBlY3RlZFVzYWdlS2V5
KCk7CiAgICAgc3RhdGljIFN0cmluZyBkYXRhYmFzZURldGFpbHNDdXJyZW50VXNhZ2VLZXkoKTsK
IAotICAgIHVzaW5nIEFQSU9iamVjdDo6cmVmOwotICAgIHVzaW5nIEFQSU9iamVjdDo6ZGVyZWY7
CisgICAgdXNpbmcgQVBJOjpPYmplY3Q6OnJlZjsKKyAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVy
ZWY7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkoV2Vi
Q29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRD
b21tYW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFBy
b3h5LmgKaW5kZXggZjRmMzJjYTQzYmM3ZmM2ZTkwY2FkNWQxZTdjMGYyMjgxNmVkMDU4My4uNTFi
MjE2YzIzZjdiNDQ5MWUzY2FhY2EzMWY0YmI5YjJmZWExNDY4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5oCkBAIC0zNiw3ICszNiw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKLWNsYXNzIFdlYkVkaXRD
b21tYW5kUHJveHkgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlRWRpdENv
bW1hbmRQcm94eT4geworY2xhc3MgV2ViRWRpdENvbW1hbmRQcm94eSA6IHB1YmxpYyBBUEk6OlR5
cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlRWRpdENvbW1hbmRQcm94eT4gewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IGNyZWF0ZSh1aW50NjRf
dCBjb21tYW5kSUQsIFdlYkNvcmU6OkVkaXRBY3Rpb24gZWRpdEFjdGlvbiwgV2ViUGFnZVByb3h5
KiBwYWdlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJG
b3JtQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtQ2xpZW50LmNw
cAppbmRleCBhMTdmNjEzNDQ2NzJjYTU0NzFlMjQxNDBiNzVmMmY0NmRjMDY0ZDk4Li42YmVjM2Ux
MjUwMGY3ODNkNmY4NmE2ZDU0MzFkN2E1MmE4ZTM3YWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRm9ybUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkZvcm1DbGllbnQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1ib29sIFdlYkZvcm1DbGllbnQ6OndpbGxTdWJtaXRGb3JtKFdlYlBhZ2VQcm94
eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYkZyYW1lUHJveHkqIHNvdXJjZUZyYW1l
LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVl
cywgQVBJT2JqZWN0KiB1c2VyRGF0YSwgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5KiBs
aXN0ZW5lcikKK2Jvb2wgV2ViRm9ybUNsaWVudDo6d2lsbFN1Ym1pdEZvcm0oV2ViUGFnZVByb3h5
KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViRnJhbWVQcm94eSogc291cmNlRnJhbWUs
IGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdGV4dEZpZWxkVmFsdWVz
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eSog
bGlzdGVuZXIpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxsU3VibWl0Rm9ybSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZv
cm1DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtQ2xpZW50LmgKaW5k
ZXggY2EwZjJiNGI2YzhhOTJiY2JhMDlmZTU0YjBiNDU1MGQ4M2M3NmYyYi4uNWVlOGEwYTZjMmEw
OWRkMzJiNzk4MGVjYTFhYjcxZjIxZjRmYTE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRm9ybUNsaWVudC5oCkBAIC0zMiwxNiArMzIsMTkgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBP
YmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBBUElPYmplY3Q7CiBjbGFz
cyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViRm9ybVN1Ym1p
c3Npb25MaXN0ZW5lclByb3h5OwogCiBjbGFzcyBXZWJGb3JtQ2xpZW50IDogcHVibGljIEFQSUNs
aWVudDxXS1BhZ2VGb3JtQ2xpZW50LCBrV0tQYWdlRm9ybUNsaWVudEN1cnJlbnRWZXJzaW9uPiB7
CiBwdWJsaWM6Ci0gICAgYm9vbCB3aWxsU3VibWl0Rm9ybShXZWJQYWdlUHJveHkqLCBXZWJGcmFt
ZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYgdGV4dEZpZWxkVmFsdWVzLCBBUElPYmplY3QqIHVzZXJEYXRhLCBXZWJGb3JtU3Vi
bWlzc2lvbkxpc3RlbmVyUHJveHkqKTsgCisgICAgYm9vbCB3aWxsU3VibWl0Rm9ybShXZWJQYWdl
UHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdGV4dEZpZWxkVmFsdWVzLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eSopOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJh
bWVMaXN0ZW5lclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0
ZW5lclByb3h5LmgKaW5kZXggZmQ5YWQ3MTk0Y2JmZWQ5Y2E4ZDI2NTNhZThkMDE5NDBiZjFlMjY3
ZC4uOGIzZWUzNjUzZGQ0OTk0YTQ0NDk2NTQyZDk4YTA3NDA2MDA2MTE3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaApAQCAtMzUsNyAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWVQcm94eTsKIAotY2xh
c3MgV2ViRnJhbWVMaXN0ZW5lclByb3h5IDogcHVibGljIEFQSU9iamVjdCB7CitjbGFzcyBXZWJG
cmFtZUxpc3RlbmVyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3QgewogcHVibGljOgogICAgIHZp
cnR1YWwgfldlYkZyYW1lTGlzdGVuZXJQcm94eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuaAppbmRleCBlN2Q2NTlkZGU0MGU1M2JjZTBhMjYzYTE5M2Y1ZDFlZjUw
MjliNjU2Li5iYmQwZjQxMDcwYzljMWM4YjUyMjlkZTA5OTc3MTUwM2Q5YWJkM2ZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xh
c3MgV2ViUGFnZVByb3h5OwogCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxXS0RhdGFSZWY+IERh
dGFDYWxsYmFjazsKIAotY2xhc3MgV2ViRnJhbWVQcm94eSA6IHB1YmxpYyBUeXBlZEFQSU9iamVj
dDxBUElPYmplY3Q6OlR5cGVGcmFtZT4geworY2xhc3MgV2ViRnJhbWVQcm94eSA6IHB1YmxpYyBB
UEk6OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlRnJhbWU+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJGcmFtZVByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5KiBwYWdl
LCB1aW50NjRfdCBmcmFtZUlEKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGMyMjIwODQ0Mzc4
MTk5M2UzMTNjZDY5ZTA4MjdjNThjM2VhOGVmNWMuLmIzODgxODI0YWZmMDhhM2Q2OWU0MWRmODI1
NTQ1NWU3MGEyNGRhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJv
eHkqIHdlYlByb2Nlc3NQcm94CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJl
ZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIHsKLSAgICBBUElPYmplY3Q6OnJlZigpOworICAgIEFQ
STo6T2JqZWN0OjpyZWYoKTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiB7Ci0gICAgQVBJT2JqZWN0OjpkZXJlZigpOwor
ICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24q
IHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCA5MDc5Zjk5YThmM2U1YjQ0YzUwYmFiNmEyNDhhMDAw
YmVjZDMzMTJkLi4yMTVmZDFiM2VhNGYzNjM1MTY0NDBmYjQ3Y2U0MjYzMzhhMmQ3NDMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkNv
bnRleHQ7CiBjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOwogCi1jbGFzcyBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVH
ZW9sb2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUg
Q29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5IDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVHZW9sb2NhdGlv
bk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgQ29yZUlQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxl
bWVudE5hbWUoKTsKIApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm92aWRl
ckRpZENoYW5nZVBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24qKTsKICAgICB2b2lkIHBy
b3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UgPSBTdHJpbmcoKSk7CiAKLSAgICB1c2luZyBBUElPYmplY3Q6OnJlZjsKLSAgICB1c2luZyBB
UElPYmplY3Q6OmRlcmVmOworICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CisgICAgdXNpbmcg
QVBJOjpPYmplY3Q6OmRlcmVmOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViR3JhbW1hckRldGFpbC5oCmluZGV4IDA0NjA3NDBlNmJlOTIwMTQxNjllOTA1OTdlYmM1MTQ4
MzE3MzAwOTYuLmI5ZGYwNTY1M2ViYzdkYjMwNTBkOTU5N2U3NTAzNjE4NTRkNTAxMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuaApAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgSW1tdXRhYmxlQXJyYXk7CiAKLWNsYXNz
IFdlYkdyYW1tYXJEZXRhaWwgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBl
R3JhbW1hckRldGFpbD4geworY2xhc3MgV2ViR3JhbW1hckRldGFpbCA6IHB1YmxpYyBBUEk6OlR5
cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlR3JhbW1hckRldGFpbD4gewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdyYW1tYXJEZXRhaWw+IGNyZWF0ZShpbnQgbG9jYXRpb24s
IGludCBsZW5ndGgsIEltbXV0YWJsZUFycmF5KiBndWVzc2VzLCBjb25zdCBTdHJpbmcmIHVzZXJE
ZXNjcmlwdGlvbik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR3JhbW1hckRldGFpbD4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJY29uRGF0YWJhc2UuaAppbmRleCBjZGE0NDU1NzliYTU4ZTE2MTc2ZmUwZmViOTRl
ZWI2YTFhNWRhNDJkLi41YjIwZmEwYjY1OWNkMGIzMTBhMDcyODhjZTUyYmY5ZDIwZTRiMDkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5oCkBAIC01Myw3ICs1
Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJDb250ZXh0OwogCi1jbGFzcyBX
ZWJJY29uRGF0YWJhc2UgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlSWNv
bkRhdGFiYXNlPiwgcHVibGljIFdlYkNvcmU6Okljb25EYXRhYmFzZUNsaWVudCwgcHJpdmF0ZSBD
b3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViSWNvbkRhdGFiYXNlIDogcHVibGlj
IEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVJY29uRGF0YWJhc2U+LCBwdWJsaWMg
V2ViQ29yZTo6SWNvbkRhdGFiYXNlQ2xpZW50LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSWNvbkRhdGFiYXNlPiBj
cmVhdGUoV2ViQ29udGV4dCopOwogICAgIHZpcnR1YWwgfldlYkljb25EYXRhYmFzZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNsaWVudC5oCmluZGV4
IDVmZTJmZWE0MzhmMzg0M2JlNjlkODY1YjY5YWJhMzYzMzRlMTZlODUuLmNlYTdkZjA0NTU0YmY3
ZDE1NzY5ZjMwMzkwN2U2ZDRjNTYyY2M1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLWNsYXNzIEFQSU9iamVjdDsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsK
IGNsYXNzIFdlYlVSTDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuaAppbmRleCA2MzlkYjdmYzkyMTJiM2UyZmVmMzlmNTJhNGFkNDI4OTk1MzAzOTkyLi43
Y2YwMGY0ODY4NWMxNGE1OTlhNDBhZjY5YWUzNjI1YzhiZGUyZDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtNjksNyArNjksNyBAQCBlbnVt
IEF0dGFjaG1lbnRTaWRlIHsKICAgICBBdHRhY2htZW50U2lkZVJpZ2h0CiB9OwogCi1jbGFzcyBX
ZWJJbnNwZWN0b3JQcm94eSA6IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVJ
bnNwZWN0b3I+LCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYklu
c3BlY3RvclByb3h5IDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVJ
bnNwZWN0b3I+LCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0b3JQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94
eSogcGFnZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
S2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
S2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggNjE4NDg2OTY1MjU5MTFhZmYyMzQ2Nzg1
ZjNjZWE4YTNmMmNjZjQzNy4uN2JmNjQwNDY3ODk0ZjY1ZTUyNTc3OWRkZmIwNjczNjhiNjBhNTM5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFn
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNTcsMTkgKzU3LDE5IEBAIFdlYktleVZhbHVlU3RvcmFnZU1h
bmFnZXI6On5XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKCkKIAogdm9pZCBXZWJLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyOjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiB7Ci0gICAgQVBJT2JqZWN0
OjpyZWYoKTsKKyAgICBBUEk6Ok9iamVjdDo6cmVmKCk7CiB9CiAKIHZvaWQgV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlcjo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiB7Ci0gICAgQVBJT2Jq
ZWN0OjpkZXJlZigpOworICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwogfQogCiBzdGF0aWMgdm9p
ZCBkaWRHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+PiYgc2VjdXJpdHlPcmlnaW5zLCB2b2lkKiBjb250ZXh0KQogewog
ICAgIFJlZlB0cjxBcnJheUNhbGxiYWNrPiBjYWxsYmFjayA9IGFkb3B0UmVmKHN0YXRpY19jYXN0
PEFycmF5Q2FsbGJhY2sqPihjb250ZXh0KSk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVj
dD4+IHdlYlNlY3VyaXR5T3JpZ2luczsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
d2ViU2VjdXJpdHlPcmlnaW5zOwogICAgIHdlYlNlY3VyaXR5T3JpZ2lucy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHNlY3VyaXR5T3JpZ2lucy5zaXplKCkpOwogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNlY3VyaXR5T3JpZ2lucy5zaXplKCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oCmluZGV4IGViMWM4
ZWI2ZTk3ZjIzMjk1YTZkMWQwZjkwZGE5OTA1MGFhYzRiZDguLjk5NWIyMDQ1YTg1MTNjY2I3Y2Q1
NjNiNTZkZTIzMjM2NTAyMjAzYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tBcnJheVJlZj4gQXJyYXlD
YWxsYmFjazsKIAotY2xhc3MgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlciA6IHB1YmxpYyBUeXBl
ZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyPiwgcHVibGlj
IFdlYkNvbnRleHRTdXBwbGVtZW50IHsKK2NsYXNzIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIg
OiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZUtleVZhbHVlU3RvcmFn
ZU1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQgewogcHVibGljOgogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCkBAIC01MCw4ICs1MCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV2ViU2VjdXJpdHlPcmlnaW4q
KTsKICAgICB2b2lkIGRlbGV0ZUFsbEVudHJpZXMoKTsKIAotICAgIHVzaW5nIEFQSU9iamVjdDo6
cmVmOwotICAgIHVzaW5nIEFQSU9iamVjdDo6ZGVyZWY7CisgICAgdXNpbmcgQVBJOjpPYmplY3Q6
OnJlZjsKKyAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcihXZWJDb250ZXh0Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCmluZGV4IDQ3YTRhYWU5YjM5Zjdl
NDZkYjBjYWU4N2ZkZWMxYmU1MmVmNDcxMDguLjIxNmNlYjUzNmYzYTNjMGU3ZTkwYmNkY2FiODUx
MzM4MDUyYWE2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGll
bnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwg
QVBJT2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJh
bWUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTQ2LDcgKzQ2LDcg
QEAgdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmEKICAgICBtX2NsaWVudC5kaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRh
KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJv
eHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQordm9p
ZCBXZWJMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKQogICAgICAgICByZXR1cm47CkBA
IC01NCw3ICs1NCw3IEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlCiAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodG9BUEkocGFn
ZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsK
IH0KIAotdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJy
b3JGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgV2ViTG9h
ZGVyQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFn
ZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZEZh
aWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NjIsNyArNjIsNyBAQCB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZQogICAgIG1fY2xpZW50LmRpZEZh
aWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJh
bWUpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7
CiB9CiAKLXZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFn
ZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkK
K3ZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5
KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewog
ICAgIGlmICghbV9jbGllbnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lKQogICAgICAgICByZXR1cm47
CkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRDb21taXRMb2FkRm9y
RnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmCiAgICAgbV9jbGllbnQu
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVz
ZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViTG9hZGVyQ2xpZW50
OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQordm9pZCBXZWJMb2FkZXJDbGll
bnQ6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2Vi
RnJhbWVQcm94eSogZnJhbWUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1f
Y2xpZW50LmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKQogICAgICAgICByZXR1cm47CkBA
IC03OCw3ICs3OCw3IEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExv
YWRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lCiAgICAgbV9jbGllbnQuZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJD
bGllbnQ6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQordm9pZCBXZWJMb2FkZXJDbGllbnQ6
OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5kaWRG
aW5pc2hMb2FkRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTg2LDcgKzg2LDcgQEAgdm9p
ZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBh
Z2UsIFdlYkZyYW1lUHJveHkqIGYKICAgICBtX2NsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUo
dG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZhaWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSU9iamVjdCogdXNlckRhdGEpCit2b2lkIFdlYkxvYWRl
ckNsaWVudDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2Us
IFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQuZGlkRmFpbExvYWRXaXRoRXJy
b3JGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFdlYkxv
YWRlckNsaWVudDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBh
Z2UsIFdlYkZyYW1lUAogICAgIG1fY2xpZW50LmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUo
dG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoZXJyb3IpLCB0b0FQSSh1c2VyRGF0YSks
IG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCi12b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQ
cm94eSogZnJhbWUsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIEFQSU9iamVjdCog
dXNlckRhdGEpCit2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bkZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFNhbWVE
b2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAg
ICBpZiAoIW1fY2xpZW50LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGCiAg
ICAgbV9jbGllbnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHRvQVBJKHBhZ2Up
LCB0b0FQSShmcmFtZSksIHRvQVBJKHR5cGUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNs
aWVudEluZm8pOwogfQogCi12b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVRpdGxlRm9y
RnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgV2ViTG9hZGVyQ2xpZW50Ojpk
aWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYg
dGl0bGUsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAg
ICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlVGl0
bGVGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYKICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkodGl0bGUuaW1wbCgp
KSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwog
fQogCi12b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdl
UHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQor
dm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZVByb3h5
KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewog
ICAgIGlmICghbV9jbGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRGaXJzdExheW91
dEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSoKICAgICBtX2NsaWVu
dC5kaWRGaXJzdExheW91dEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJ
KHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViTG9hZGVyQ2xp
ZW50OjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQYWdlUHJveHkq
IHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQordm9pZCBX
ZWJMb2FkZXJDbGllbnQ6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdl
YlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZvckZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBXZWJM
b2FkZXJDbGllbnQ6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdlYlBh
Z2VQcm94eSogcGFnZSwKICAgICBtX2NsaWVudC5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1f
Y2xpZW50LmNsaWVudEluZm8pOwogfQogCi12b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkTGF5b3V0
KFdlYlBhZ2VQcm94eSogcGFnZSwgTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzLCBBUElPYmpl
Y3QqIHVzZXJEYXRhKQordm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZExheW91dChXZWJQYWdlUHJv
eHkqIHBhZ2UsIExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcywgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKQogewogICAgIGlmICghbV9jbGllbnQuZGlkTGF5b3V0KQogICAgICAgICByZXR1cm47CkBA
IC0xMzQsNyArMTM0LDcgQEAgdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZExheW91dChXZWJQYWdl
UHJveHkqIHBhZ2UsIExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcywKICAgICBtX2NsaWVudC5k
aWRMYXlvdXQodG9BUEkocGFnZSksIHRvV0tMYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpLCB0
b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCi12b2lkIFdlYkxvYWRl
ckNsaWVudDo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KFdlYlBhZ2VQcm94eSogcGFnZSwg
V2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVjdCogdXNlckRhdGEpCit2b2lkIFdlYkxvYWRl
ckNsaWVudDo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KFdlYlBhZ2VQcm94eSogcGFnZSwg
V2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAo
IW1fY2xpZW50LmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZW1vdmVGcmFtZUZy
b21IaWVyYXJjaHkoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByCiAgICAgbV9jbGllbnQu
ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRv
QVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViTG9hZGVy
Q2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiBw
YWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgV2Vi
TG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVBy
b3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQog
ewogICAgIGlmICghbV9jbGllbnQuZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKQog
ICAgICAgICByZXR1cm47CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJMb2FkZXJDbGllbnQ6
OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdl
YkYKICAgICBtX2NsaWVudC5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodG9BUEko
cGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZv
KTsKIH0KIAotdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZy
YW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVjdCog
dXNlckRhdGEpCit2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9y
RnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQuZGlkUnVuSW5zZWN1cmVDb250ZW50
Rm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFdlYkxv
YWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiBw
YWdlLCBXZWJGcmFtZQogICAgIG1fY2xpZW50LmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1l
KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1NGb3JGcmFt
ZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVz
ZXJEYXRhKQordm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBh
Z2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZERldGVjdFhTU0ZvckZyYW1lKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBXZWJMb2FkZXJDbGllbnQ6OnByb2Nlc3NE
aWRDcmFzaChXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNo
KHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJD
bGllbnQ6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkSXRlbSwgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+Piog
cmVtb3ZlZEl0ZW1zKQordm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZENoYW5nZUJhY2tGb3J3YXJk
TGlzdChXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkSXRl
bSwgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+KiByZW1vdmVkSXRlbXMpCiB7CiAgICAgaWYg
KCFtX2NsaWVudC5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpCiAgICAgICAgIHJldHVybjsKQEAg
LTI2MSw3ICsyNjEsNyBAQCBib29sIFdlYkxvYWRlckNsaWVudDo6c2hvdWxkR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW0oV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJCYWNrRgogICAgIHJldHVybiBtX2Ns
aWVudC5zaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh0b0FQSShwYWdlKSwgdG9BUEkoaXRl
bSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCi12b2lkIFdlYkxvYWRlckNsaWVudDo6d2ls
bEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSogaXRlbSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgV2ViTG9hZGVyQ2xp
ZW50Ojp3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAg
aWYgKG1fY2xpZW50LndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSkKICAgICAgICAgbV9jbGll
bnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKHRvQVBJKHBhZ2UpLCB0b0FQSShpdGVtKSwg
dG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAppbmRleCBlNjI4ZmIzMzVlMjc4N2E4NGNmMjM5MGQw
MmNhYmFlNjJkNWU5MWZkLi5iMTAxYTJkOTdkMGU2NjI3YjA3ZDQ0YTM3OGZiZjJlOTBiYzJjNWFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oCkBAIC0zNSwx
MyArMzUsMTYgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIE9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIEFQSU9iamVjdDsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBj
bGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBjbGFzcyBJbW11dGFibGVEaWN0
aW9uYXJ5OwpAQCAtNTIsMjYgKzU1LDI2IEBAIGNsYXNzIFdlYlByb3RlY3Rpb25TcGFjZTsKIAog
Y2xhc3MgV2ViTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS1BhZ2VMb2FkZXJDbGll
bnQsIGtXS1BhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbj4gewogcHVibGljOgotICAgIHZv
aWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFt
ZVByb3h5KiwgQVBJT2JqZWN0Kik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kiwg
QVBJT2JqZWN0Kik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9y
RnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBBUElPYmplY3QqKTsKLSAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShX
ZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7Ci0gICAgdm9pZCBkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kiwg
QVBJT2JqZWN0Kik7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5
KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOwotICAgIHZvaWQgZGlkRmFpbExvYWRXaXRo
RXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIEFQSU9iamVjdCopOwotICAgIHZvaWQgZGlkU2FtZURvY3VtZW50
TmF2aWdhdGlvbkZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uVHlwZSwgQVBJT2JqZWN0Kik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlVGl0
bGVGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBXZWJGcmFtZVByb3h5Kiwg
QVBJT2JqZWN0Kik7Ci0gICAgdm9pZCBkaWRGaXJzdExheW91dEZvckZyYW1lKFdlYlBhZ2VQcm94
eSosIFdlYkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSTo6T2Jq
ZWN0Kik7CisgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKTsK
KyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdl
UHJveHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQ
STo6T2JqZWN0Kik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5
KiwgV2ViRnJhbWVQcm94eSosIEFQSTo6T2JqZWN0Kik7CisgICAgdm9pZCBkaWRGaW5pc2hEb2N1
bWVudExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmpl
Y3QqKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJG
cmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKTsKKyAgICB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopOworICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uVHlwZSwgQVBJOjpPYmplY3QqKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVUaXRs
ZUZvckZyYW1lKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIFdlYkZyYW1lUHJveHkqLCBB
UEk6Ok9iamVjdCopOworICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKTsKIAogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgY29uc2lkZXIgcmVtb3ZpbmcgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
RnJhbWUgc2luY2UgaXQgaXMgcmVwbGFjZWQgYnkgZGlkTGF5b3V0LgotICAgIHZvaWQgZGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQ
cm94eSosIEFQSU9iamVjdCopOworICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSTo6T2JqZWN0Kik7
CiAKLSAgICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJQYWdlUHJveHkqLCBX
ZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7Ci0gICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCop
OwotICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5Kiwg
V2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOwotICAgIHZvaWQgZGlkRGV0ZWN0WFNTRm9yRnJh
bWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOworICAgIHZvaWQg
ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkq
LCBBUEk6Ok9iamVjdCopOworICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZy
YW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopOworICAgIHZv
aWQgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQ
cm94eSosIEFQSTo6T2JqZWN0Kik7CisgICAgdm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShXZWJQ
YWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKTsKIAotICAgIHZvaWQgZGlk
TGF5b3V0KFdlYlBhZ2VQcm94eSosIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMsIEFQSU9iamVj
dCopOworICAgIHZvaWQgZGlkTGF5b3V0KFdlYlBhZ2VQcm94eSosIFdlYkNvcmU6OkxheW91dE1p
bGVzdG9uZXMsIEFQSTo6T2JqZWN0Kik7CiAgICAgCiAgICAgYm9vbCBjYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5
KiwgV2ViUHJvdGVjdGlvblNwYWNlKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5Kik7CkBAIC04Niw5ICs4OSw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKFdlYlBhZ2VQcm94eSopOwogICAgIHZvaWQg
cHJvY2Vzc0RpZENyYXNoKFdlYlBhZ2VQcm94eSopOwogCi0gICAgdm9pZCBkaWRDaGFuZ2VCYWNr
Rm9yd2FyZExpc3QoV2ViUGFnZVByb3h5KiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYWRkZWRJ
dGVtLCBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+KiByZW1vdmVkSXRlbXMpOworICAgIHZvaWQg
ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYlBhZ2VQcm94eSosIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIGFkZGVkSXRlbSwgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+KiByZW1vdmVkSXRl
bXMpOwogICAgIGJvb2wgc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViUGFnZVByb3h5
KiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSopOwotICAgIHZvaWQgd2lsbEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtKFdlYlBhZ2VQcm94eSosIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBBUElPYmpl
Y3QqKTsKKyAgICB2b2lkIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJQYWdlUHJveHkq
LCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwgQVBJOjpPYmplY3QqKTsKIAogICAgIFBsdWdpbk1v
ZHVsZUxvYWRQb2xpY3kgcGx1Z2luTG9hZFBvbGljeShXZWJQYWdlUHJveHkqLCBQbHVnaW5Nb2R1
bGVMb2FkUG9saWN5IGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5LCBJbW11dGFibGVEaWN0aW9uYXJ5
KiwgU3RyaW5nJiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uT3V0UGFyYW1ldGVyKTsKICAgICB2
b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oV2ViUGFnZVByb3h5KiwgSW1tdXRhYmxlRGlj
dGlvbmFyeSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlh
Q2FjaGVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlh
Q2FjaGVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDIxZmIxNjJiNmM5NGVkMTMxZWJiYWQxMjUyYTc1
NmQwMWE1NzZjY2UuLjhkYmMyYzkzYjkxMmQ5YzBmMTQ3YzA4OGIyYWFkYThhNTQ5MmY0MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFn
ZXJQcm94eS5jcHAKQEAgLTcyLDEyICs3MiwxMiBAQCBib29sIFdlYk1lZGlhQ2FjaGVNYW5hZ2Vy
UHJveHk6OnNob3VsZFRlcm1pbmF0ZShXZWJQcm9jZXNzUHJveHkqKSBjb25zdAogCiB2b2lkIFdl
Yk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIHsKLSAg
ICBBUElPYmplY3Q6OnJlZigpOworICAgIEFQSTo6T2JqZWN0OjpyZWYoKTsKIH0KIAogdm9pZCBX
ZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIHsK
LSAgICBBUElPYmplY3Q6OmRlcmVmKCk7CisgICAgQVBJOjpPYmplY3Q6OmRlcmVmKCk7CiB9CiAK
IHZvaWQgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aE1lZGlhQ2Fj
aGUoUGFzc1JlZlB0cjxBcnJheUNhbGxiYWNrPiBwcnBDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oCmluZGV4IDVk
NTU3ODc5ZWUzZjJkMDFhZWE3ZWU0ODNmZjczZTM0MzM0YzY2NzguLjA5Yzc0MmM5OWUzY2YyNDlj
ODA3ZGIyY2M1NmU5ZmI0OWY0YjYxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFz
cyBXZWJQcm9jZXNzUHJveHk7CiAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFdLQXJyYXlSZWY+
IEFycmF5Q2FsbGJhY2s7CiAKLWNsYXNzIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkgOiBwdWJs
aWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlTWVkaWFDYWNoZU1hbmFnZXI+LCBwdWJs
aWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKK2NsYXNzIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpUeXBlZE9i
amVjdDxBUEk6Ok9iamVjdDo6VHlwZU1lZGlhQ2FjaGVNYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRl
eHRTdXBwbGVtZW50LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKQEAgLTUzLDggKzUz
LDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJDYWNoZUZvckhvc3RuYW1lKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgY2xlYXJDYWNoZUZvckFsbEhvc3RuYW1lcygpOwogCi0gICAgdXNpbmcg
QVBJT2JqZWN0OjpyZWY7Ci0gICAgdXNpbmcgQVBJT2JqZWN0OjpkZXJlZjsKKyAgICB1c2luZyBB
UEk6Ok9iamVjdDo6cmVmOworICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uRGF0YS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25EYXRhLmgKaW5kZXggNzZk
Zjk1ZGVmZjhiYjZkNjIxN2VjNTMxNTVhMWJhMGNiZTRkM2ZlMi4uM2Y2ZTgzOTVkNWNkNjhmZmIz
MDM5MDEyZmI2YmQ5YjFiNjY1OWJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYk5hdmlnYXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Yk5hdmlnYXRpb25EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWNsYXNzIFdlYk5hdmlnYXRpb25EYXRhIDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9i
amVjdDo6VHlwZU5hdmlnYXRpb25EYXRhPiB7CitjbGFzcyBXZWJOYXZpZ2F0aW9uRGF0YSA6IHB1
YmxpYyBBUEk6OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlTmF2aWdhdGlvbkRhdGE+IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJOYXZpZ2F0aW9uRGF0YT4gY3JlYXRl
KGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQ
cm94eS5oCmluZGV4IDk4YWIzMGNlODkzODNhYzA1NDA3N2Q2MDM3MmY2MGU5ZGQ1NmJiNDEuLjlj
YjYzZjE1OTM4MDI5YmMzNWQwZmQ0MjllNmY4NDhhMzQ1MjAyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEltbXV0YWJs
ZUFycmF5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogCi1jbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5IDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZUZyYW1l
UG9saWN5TGlzdGVuZXI+IHsKK2NsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkg
OiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZUZyYW1lUG9saWN5TGlz
dGVuZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5KiBwYWdlKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
LmNwcAppbmRleCBiY2RmNjFmNjczODljZjc0ZWVkYzFkYWU4NDljMjIxOWUzY2RiMjA3Li40OTYw
NDM3MzM4ODFiMWYxODU0OTMzZmI1ZTVkYTc2ZmRmYTFhMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwCkBAIC03
MiwxMiArNzIsMTIgQEAgYm9vbCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpzaG91bGRUZXJt
aW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3QKIAogdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdl
clByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiB7Ci0gICAgQVBJT2JqZWN0OjpyZWYo
KTsKKyAgICBBUEk6Ok9iamVjdDo6cmVmKCk7CiB9CiAKIHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFn
ZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiB7Ci0gICAgQVBJT2JqZWN0Ojpk
ZXJlZigpOworICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwogfQogCiB2b2lkIFdlYk9yaWdpbkRh
dGFNYW5hZ2VyUHJveHk6OmdldE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIFBhc3NS
ZWZQdHI8QXJyYXlDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaAppbmRleCA4ZGI3NDBkN2I4
MmFhMWJiOGQ1OTMzMmEwZDVlZGZjMmEyY2Y5NDhkLi45N2ZmODNhNjcxOWViNDY0NzVhZWQ3MDQx
NTU2YWRhZjE3MmM1YThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
T3JpZ2luRGF0YU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IFNlY3Vy
aXR5T3JpZ2luRGF0YTsKIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tBcnJheVJlZj4gQXJy
YXlDYWxsYmFjazsKIAotY2xhc3MgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eSA6IHB1YmxpYyBU
eXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVPcmlnaW5EYXRhTWFuYWdlcj4sIHB1YmxpYyBX
ZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewor
Y2xhc3MgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUEk6OlR5cGVkT2JqZWN0
PEFQSTo6T2JqZWN0OjpUeXBlT3JpZ2luRGF0YU1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1
cHBsZW1lbnQsIHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIApAQCAtNjMsOCArNjMsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wT2JzZXJ2aW5nQ2hhbmdlcyhXS09yaWdpbkRhdGFUeXBl
cyk7CiAgICAgdm9pZCBzZXRDaGFuZ2VDbGllbnQoY29uc3QgV0tPcmlnaW5EYXRhTWFuYWdlckNo
YW5nZUNsaWVudCopOwogCi0gICAgdXNpbmcgQVBJT2JqZWN0OjpyZWY7Ci0gICAgdXNpbmcgQVBJ
T2JqZWN0OjpkZXJlZjsKKyAgICB1c2luZyBBUEk6Ok9iamVjdDo6cmVmOworICAgIHVzaW5nIEFQ
STo6T2JqZWN0OjpkZXJlZjsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJPcmlnaW5EYXRh
TWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggODk4ZmI4YjAwNDc3Mzg3
ZmExMGEyMmNkYjE5ODBlODEzMzA0ODIwNi4uODQ0YTRhY2RlZmQ2ZTBhNDU3MDgzY2RiZDg1OWQw
Zjk4NDgwYmU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VD
b250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50OjpnZXRDb250ZXh0TWVudUZy
b21Qcm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dE1lbnVJdGVtRGF0YT4mIHByb3Bvc2VkTWVudVZlY3RvciwgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbURhdGE+JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBoaXRU
ZXN0UmVzdWx0RGF0YSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKK2Jvb2wgV2ViUGFnZUNvbnRleHRN
ZW51Q2xpZW50OjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5KiBw
YWdlLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIHByb3Bvc2VkTWVudVZl
Y3RvciwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBjdXN0b21NZW51LCBjb25zdCBX
ZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRN
ZW51ICYmICFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDUsNyArNDUsNyBAQCBi
b29sIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRN
ZW51KFdlYlBhZ2VQcm94eSogcGFnZQogICAgIGlmIChtX2NsaWVudC52ZXJzaW9uID49IDIgJiYg
IW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBwcm9wb3NlZE1lbnVJdGVt
czsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gcHJvcG9zZWRNZW51SXRlbXM7CiAg
ICAgcHJvcG9zZWRNZW51SXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwcm9wb3NlZE1lbnVW
ZWN0b3Iuc2l6ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgbWVudUl0ZW0gOiBwcm9wb3Nl
ZE1lbnVWZWN0b3IpCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgV2ViUGFnZUNvbnRleHRNZW51Q2xp
ZW50OjpzaG93Q29udGV4dE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlCiAg
ICAgaWYgKCFtX2NsaWVudC5zaG93Q29udGV4dE1lbnUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gbWVudUl0ZW1zOworICAgIFZlY3RvcjxS
ZWZQdHI8QVBJOjpPYmplY3Q+PiBtZW51SXRlbXM7CiAgICAgbWVudUl0ZW1zLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobWVudUl0ZW1zVmVjdG9yLnNpemUoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1
dG8mIG1lbnVJdGVtIDogbWVudUl0ZW1zVmVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDQ0MmEwNzYzZGQwOGY0
NjNhYTE1NWE1OTZlMzNkNmJhZTNmNWExZGIuLjM5MDk2ODhlNTA3ZDExZDVjYzBmMzMzNDM5MjM1
M2JhY2M4NTM2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
Q29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZUNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTM2LDEzICszNiwxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgQVBJT2JqZWN0OwogY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsK
IGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50IDog
cHVibGljIEFQSUNsaWVudDxXS1BhZ2VDb250ZXh0TWVudUNsaWVudCwga1dLUGFnZUNvbnRleHRN
ZW51Q2xpZW50Q3VycmVudFZlcnNpb24+IHsKIHB1YmxpYzoKLSAgICBib29sIGdldENvbnRleHRN
ZW51RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dE1lbnVJdGVtRGF0YT4mIHByb3Bvc2VkTWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURh
dGE+JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiwgQVBJT2JqZWN0
KiB1c2VyRGF0YSk7CisgICAgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV2Vi
UGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBwcm9wb3Nl
ZE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgY3VzdG9tTWVudSwgY29uc3Qg
V2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSk7CiAgICAgdm9p
ZCBjdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZChXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJD
b250ZXh0TWVudUl0ZW1EYXRhJik7CiAgICAgdm9pZCBjb250ZXh0TWVudURpc21pc3NlZChXZWJQ
YWdlUHJveHkqKTsKICAgICBib29sIHNob3dDb250ZXh0TWVudShXZWJQYWdlUHJveHkqLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRh
PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5oCmluZGV4IGU3ZGI5YzU3
Mzg2MDZjNzQ5OTQyNGYwNDA1Y2RhMmYwZDg4N2M3YmYuLjk1MTg5MzQ1MTgxNGYwZDkyMmE1YmZl
ZmEyN2NkYzM5MTFhZTMxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3Vw
LmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcmVmZXJl
bmNlczsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAotY2xhc3MgV2ViUGFnZUdyb3VwIDogcHVibGlj
IFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZVBhZ2VHcm91cD4geworY2xhc3MgV2ViUGFn
ZUdyb3VwIDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVQYWdlR3Jv
dXA+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIgPSBTdHJpbmcoKSwgYm9vbCB2aXNpYmxlVG9Jbmpl
Y3RlZEJ1bmRsZSA9IHRydWUsIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCA9IHRydWUpOwog
ICAgIHN0YXRpYyBXZWJQYWdlR3JvdXAqIGdldCh1aW50NjRfdCBwYWdlR3JvdXBJRCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGViZTA5Y2RiODAyYzlj
MTE0MzY3Zjg2ZmFiZGMyZmEyM2VmOWJlMjEuLjU4YTU1ZGIyMmUwYjk0NDM5MjRiODUxZDNjZDgz
YjM4MTVjZTI0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0zOTIsNyArMzkyLDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViUGFnZVBy
b3h5OjpyZWxhdGVkUGFnZXMoKSBjb25zdAogICAgIC8vIHBhZ2VzKCkgcmV0dXJucyBhIGxpc3Qg
b2YgcGFnZXMgaW4gV2ViUHJvY2Vzcywgc28gdGhpcyBwYWdlIG1heSBvciBtYXkgbm90IGJlIGFt
b25nIHRoZW0gLSBhIGNsaWVudCBjYW4gdXNlIGEgcmVmZXJlbmNlIHRvIFdlYlBhZ2VQcm94eSBh
ZnRlciB0aGUgcGFnZSBoYXMgY2xvc2VkLgogICAgIFZlY3RvcjxXZWJQYWdlUHJveHkqPiBwYWdl
cyA9IG1fcHJvY2Vzcy0+cGFnZXMoKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4g
cmVzdWx0OworICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiByZXN1bHQ7CiAgICAgcmVz
dWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocGFnZXMuc2l6ZSgpKTsKIAogICAgIGZvciAoY29u
c3QgYXV0byYgcGFnZSA6IHBhZ2VzKSB7CkBAIC02MDEsNyArNjAxLDcgQEAgYm9vbCBXZWJQYWdl
UHJveHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgVVJMJiB1
cmwsIFNhbmRib3gKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omxv
YWRVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEFQSU9iamVjdCogdXNlckRhdGEpCit2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
KQogewogICAgIHNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHVybCk7CiAKQEAgLTYxNiw3ICs2MTYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCwgQVBJT2Jq
ZWN0KiB1c2VyRGF0YSkKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3Rh
cnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRVUkxSZXF1ZXN0KFdlYlVSTFJlcXVl
c3QqIHVybFJlcXVlc3QsIEFQSU9iamVjdCogdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZFVSTFJlcXVlc3QoV2ViVVJMUmVxdWVzdCogdXJsUmVxdWVzdCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKQogewogICAgIHNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHVybFJlcXVlc3QtPnJlc291
cmNlUmVxdWVzdCgpLnVybCgpKTsKIApAQCAtNjMxLDcgKzYzMSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpsb2FkVVJMUmVxdWVzdChXZWJVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCBBUElPYmplY3Qq
IHVzZXJEYXRhCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcsIEFQSU9iamVj
dCogdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJl
YXR0YWNoVG9XZWJQcm9jZXNzKCk7CkBAIC02NTgsNyArNjU4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZUQKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhKFdlYkRhdGEqIGRhdGEsIGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFz
ZVVSTCwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShX
ZWJEYXRhKiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAg
ICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKQEAgLTY2
OCw3ICs2NjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoV2ViRGF0YSogZGF0YSwg
Y29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJgogICAgIG1fcHJvY2Vzcy0+cmVz
cG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9h
ZEhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkwsIEFQSU9iamVjdCogdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEhUTUxTdHJp
bmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRh
Y2hUb1dlYlByb2Nlc3MoKTsKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZEhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJh
c2VVUgogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5n
JiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdW5yZWFj
aGFibGVVUkwsIEFQSU9iamVjdCogdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nl
c3MoKTsKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0
ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbgogICAgIG1f
cHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFBsYWluVGV4dFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgQVBJT2Jq
ZWN0KiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUGxhaW5UZXh0U3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFp
c1ZhbGlkKCkpCiAgICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CkBAIC03MDAsNyArNzAw
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRQbGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIEFQSU9iamVjdCogdXNlckRhdGEKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVu
ZXNzVGltZXIoKS0+c3RhcnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNo
aXZlRGF0YShjb25zdCBXZWJEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJT2JqZWN0KiB1c2VyRGF0
YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEoY29uc3QgV2ViRGF0YSog
d2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIWlzVmFs
aWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKQEAgLTgxMiw3ICs4MTIsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigp
LCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VCYWNrRm9yd2Fy
ZExpc3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYWRkZWQsIFZlY3RvcjxSZWZQdHI8QVBJT2Jq
ZWN0Pj4qIHJlbW92ZWQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkLCBWZWN0b3I8UmVmUHRyPEFQSTo6T2Jq
ZWN0Pj4qIHJlbW92ZWQpCiB7CiAgICAgbV9sb2FkZXJDbGllbnQuZGlkQ2hhbmdlQmFja0Zvcndh
cmRMaXN0KHRoaXMsIGFkZGVkLCByZW1vdmVkKTsKIH0KQEAgLTgyNSw3ICs4MjUsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0odWludDY0X3QgaXRl
bUlELCBib29sJiBzaG91bGRHbwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRl
Y29kZXIpCiB7Ci0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgUmVmUHRyPEFQ
STo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1l
c3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47CkBAIC0yMTMzLDcgKzIx
MzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbgogewogICAgIGNsZWFyUGVuZGluZ0FQSVJl
cXVlc3RVUkwoKTsKIAotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0
cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2Rl
ciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE1MCw3
ICsyMTUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW4KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICBSZWZQdHI8
QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIg
bWVzc2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJvY2Vzcy5nZXQoKSk7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTIxNjYsNyAr
MjE2Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4g
dXNlckRhdGE7CiAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rl
cih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1l
c3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5NCw3ICsyMTk0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNrcygpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgUGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAg
UmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VE
ZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47CkBAIC0y
MjI2LDcgKzIyMjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cAogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ29y
ZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPEFQSU9iamVjdD4g
dXNlckRhdGE7CisgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBXZWJDb250
ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3Mu
Z2V0KCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAg
ICByZXR1cm47CkBAIC0yMjM5LDcgKzIyMzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQQzo6TWVzcwog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxBUElP
YmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAgICAg
V2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgbV9w
cm9jZXNzLmdldCgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjI1NCw3ICsyMjU0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpNZXNzYWdl
RGVjb2QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIENvcmVJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFJl
ZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVj
b2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI3
MSw3ICsyMjcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXIKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiB1
cmwsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxBUElP
YmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAgICAg
V2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgbV9w
cm9jZXNzLmdldCgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjI4OCw3ICsyMjg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
MzJfdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgUmVmUHRy
PEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVy
IG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47CkBAIC0yMzAzLDcg
KzIzMDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB0aXRsZQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpNZXNzYWdl
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAg
ICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogICAgIFdlYkNvbnRleHRVc2VyTWVzc2Fn
ZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJvY2Vzcy5nZXQoKSk7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKQEAg
LTIzMTYsNyArMjMxNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJzdExheW91dEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvCiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8
QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwog
ICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEs
IG1fcHJvY2Vzcy5nZXQoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2Rl
cikpCiAgICAgICAgIHJldHVybjsKQEAgLTIzMjksNyArMjMyOSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBDb3JlCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRMYXlvdXQodWludDMyX3QgbGF5b3V0
TWlsZXN0b25lcywgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVm
UHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0
YTsKICAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJE
YXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURl
Y29kZXIpKQogICAgICAgICByZXR1cm47CkBAIC0yMzM5LDcgKzIzMzksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkTGF5b3V0KHVpbnQzMl90IGxheW91dE1pbGVzdG9uZXMsIENvcmVJUEM6Ok1l
c3NhZ2VEZWNvZGVyJgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGll
cmFyY2h5KHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9i
amVjdD4gdXNlckRhdGE7CiAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdl
RGVjb2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM1Miw3ICsyMzUyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh1aW50NjRf
dCBmcmFtZUlELCBDb3JlSVBDOjpNZXNzYWcKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZERpc3Bs
YXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsK
KyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogICAgIFdlYkNvbnRleHRVc2VyTWVz
c2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJvY2Vzcy5nZXQoKSk7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCiAgICAgICAgIHJldHVybjsK
QEAgLTIzNjUsNyArMjM2NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQQzo6CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8QVBJT2Jq
ZWN0PiB1c2VyRGF0YTsKKyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogICAgIFdl
YkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJv
Y2Vzcy5nZXQoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCiAg
ICAgICAgIHJldHVybjsKQEAgLTIzNzgsNyArMjM3OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpN
ZXNzCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8
QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwog
ICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEs
IG1fcHJvY2Vzcy5nZXQoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2Rl
cikpCiAgICAgICAgIHJldHVybjsKQEAgLTI0MDIsNyArMjQwMiw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpmcmFtZURpZEJlY29tZUZyYW1lU2V0KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgdmFsdWUp
CiAvLyBQb2xpY3lDbGllbnQKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9wYXF1ZU5hdmlnYXRpb25U
eXBlLCB1aW50MzJfdCBvcGFxdWVNb2RpZmllcnMsIGludDMyX3Qgb3BhcXVlTW91c2VCdXR0b24s
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgQ29y
ZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9u
LCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCB1aW50NjRfdCYgZG93bmxvYWRJRCkKIHsKLSAgICBS
ZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJE
YXRhOwogICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNl
ckRhdGEsIG1fcHJvY2Vzcy5nZXQoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdl
RGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTI0NDAsNyArMjQ0MCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQzMl90IG9wCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3BhcXVlTmF2aWdhdGlvblR5
cGUsIHVpbnQzMl90IG9wYXF1ZU1vZGlmaWVycywgaW50MzJfdCBvcGFxdWVNb3VzZUJ1dHRvbiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
dWludDY0X3QgbGlzdGVuZXJJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgUmVmUHRyPEFQSTo6T2JqZWN0
PiB1c2VyRGF0YTsKICAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNv
ZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47CkBAIC0yNDYwLDcgKzI0NjAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQzMl90IG9wYQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPEFQSU9i
amVjdD4gdXNlckRhdGE7CisgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBX
ZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBtX3By
b2Nlc3MuZ2V0KCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQog
ICAgICAgICByZXR1cm47CkBAIC0yNDk5LDcgKzI0OTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlc291
cmNlUgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIENvcmVJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAg
IFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdl
RGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjUxNCw3ICsyNTE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlRXJyb3IKIAogdm9pZCBXZWJQYWdl
UHJveHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZy
YW1lSUQsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdGV4dEZpZWxk
VmFsdWVzLCB1aW50NjRfdCBsaXN0ZW5lcklELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICBSZWZQdHI8QVBJ
OjpPYmplY3Q+IHVzZXJEYXRhOwogICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVz
c2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJvY2Vzcy5nZXQoKSk7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShtZXNzYWdlRGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTI2MDcsNyArMjYw
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCkKIAogdm9pZCBXZWJQYWdlUHJveHk6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IFdl
YkhpdFRlc3RSZXN1bHQ6OkRhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCB1aW50MzJfdCBvcGFxdWVN
b2RpZmllcnMsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0
cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7
CiAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0
YSwgbV9wcm9jZXNzLmdldCgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNv
ZGVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzAzNywxMSArMzAzNywxMSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3QgbWF0
Y2hDb3VudCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiBtYXRjaFJl
Y3RzLCBpbnQzMl90IGZpcnN0SW5kZXhBZnRlclNlbGVjdGlvbikKIHsKLSAgICBWZWN0b3I8UmVm
UHRyPEFQSU9iamVjdD4+IG1hdGNoZXM7CisgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+
IG1hdGNoZXM7CiAgICAgbWF0Y2hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1hdGNoUmVjdHMu
c2l6ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgcmVjdHMgOiBtYXRjaFJlY3RzKSB7Ci0g
ICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gYXBpUmVjdHM7CisgICAgICAgIFZlY3Rv
cjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlSZWN0czsKICAgICAgICAgYXBpUmVjdHMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShyZWN0cy5zaXplKCkpOwogCiAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgcmVjdCA6IHJlY3RzKQpAQCAtMzA3Myw3ICszMDczLDcgQEAgTmF0aXZlV2ViTW91c2VFdmVu
dCogV2ViUGFnZVByb3h5OjpjdXJyZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudCgpCiAgICAg
cmV0dXJuIG1fY3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duRXZlbnQuZ2V0KCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5n
JiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkKK3ZvaWQgV2ViUGFnZVByb3h5
Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwg
QVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQogewogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgV2ViQ29u
dGV4dFVzZXJNZXNzYWdlRW5jb2RlcihtZXNzYWdlQm9keSkpLCBtX3BhZ2VJRCk7CiB9CkBAIC0z
MTQ1LDcgKzMxNDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51KGNvbnN0
IEludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IFdlYkhpdFRlcwogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlv
biwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRJdGVtcywgQ29yZUlQQzo6
TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRh
dGE7CisgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBXZWJDb250ZXh0VXNl
ck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkp
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2FmMTQ3MjQw
OTQyNjgzMGU2MDJlZTQ5MzQ3MzQ4NmE1ZWNhZTc4YS4uOTA0MjFlZThiOTk1ZmU0N2QxNzA2ZjRm
ODExZTk2YzQxMmUxMjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiB9OwogCiBjbGFzcyBXZWJQYWdlUHJveHkK
LSAgICA6IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVQYWdlPgorICAgIDog
cHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVQYWdlPgogI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQogICAgICwgcHVibGljIFdlYkNvbG9yUGlja2VyOjpDbGllbnQK
ICNlbmRpZgpAQCAtMjcxLDE0ICsyNzEsMTQgQEAgcHVibGljOgogICAgIGJvb2wgdHJ5Q2xvc2Uo
KTsKICAgICBib29sIGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nsb3NlZDsgfQogCi0g
ICAgdm9pZCBsb2FkVVJMKGNvbnN0IFN0cmluZyYsIEFQSU9iamVjdCogdXNlckRhdGEgPSAwKTsK
LSAgICB2b2lkIGxvYWRVUkxSZXF1ZXN0KFdlYlVSTFJlcXVlc3QqLCBBUElPYmplY3QqIHVzZXJE
YXRhID0gMCk7Ci0gICAgdm9pZCBsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkwsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEaXJlY3RvcnlVUkwsIEFQSU9iamVjdCogdXNlckRhdGEgPSAwKTsK
LSAgICB2b2lkIGxvYWREYXRhKFdlYkRhdGEqLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSU9iamVjdCogdXNl
ckRhdGEgPSAwKTsKLSAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0
cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUElPYmplY3QqIHVzZXJEYXRhID0gMCk7Ci0g
ICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgQVBJ
T2JqZWN0KiB1c2VyRGF0YSA9IDApOwotICAgIHZvaWQgbG9hZFBsYWluVGV4dFN0cmluZyhjb25z
dCBTdHJpbmcmIHN0cmluZywgQVBJT2JqZWN0KiB1c2VyRGF0YSA9IDApOwotICAgIHZvaWQgbG9h
ZFdlYkFyY2hpdmVEYXRhKGNvbnN0IFdlYkRhdGEqLCBBUElPYmplY3QqIHVzZXJEYXRhID0gMCk7
CisgICAgdm9pZCBsb2FkVVJMKGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9
IG51bGxwdHIpOworICAgIHZvaWQgbG9hZFVSTFJlcXVlc3QoV2ViVVJMUmVxdWVzdCosIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOworICAgIHZvaWQgbG9hZEZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKKyAgICB2b2lkIGxvYWREYXRhKFdlYkRhdGEqLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJp
bmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOworICAgIHZvaWQg
bG9hZEhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJh
c2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOworICAgIHZvaWQgbG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSA9IG51bGxwdHIpOworICAgIHZvaWQgbG9hZFBsYWluVGV4dFN0cmluZyhjb25zdCBTdHJp
bmcmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKKyAgICB2b2lkIGxvYWRXZWJB
cmNoaXZlRGF0YShjb25zdCBXZWJEYXRhKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0
cik7CiAKICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAgICAgdm9pZCByZWxvYWQoYm9vbCByZWxv
YWRGcm9tT3JpZ2luKTsKQEAgLTI5MCw3ICsyOTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdv
VG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSopOwogICAgIHZvaWQgdHJ5
UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgdm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExp
c3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYWRkZWRJdGVtLCBWZWN0b3I8UmVmUHRyPEFQSU9i
amVjdD4+KiByZW1vdmVkSXRlbXMpOworICAgIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkSXRlbSwgVmVjdG9yPFJlZlB0cjxBUEk6Ok9i
amVjdD4+KiByZW1vdmVkSXRlbXMpOwogICAgIHZvaWQgc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW0odWludDY0X3QgaXRlbUlELCBib29sJiBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bSk7CiAgICAgdm9pZCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0odWludDY0X3QgaXRlbUlE
LCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogCkBAIC03MDgsNyArNzA4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyhib29sIGZsYWcpIHsgbV9z
dXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzID0gZmxhZzsgfQogICAgIGJvb2wgc3VwcHJlc3NWaXNp
YmlsaXR5VXBkYXRlcygpIHsgcmV0dXJuIG1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlczsgfQog
Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNz
YWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSk7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRv
SW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1l
c3NhZ2VCb2R5KTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIHZvaWQgc2V0
Q29sb3JQaWNrZXJDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50LmNwcAppbmRleCBjNTdjODk2YjM1NzQ5YmY3NDNh
M2ExY2Y1YmRlNmQ1ZjBiYThiOTgxLi4yZDhhNTllNmMzODcxZDg1NDA2ODdjNjcyNGE1Yzg2M2E0
M2FlNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9saWN5Q2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50LmNw
cApAQCAtMzQsNyArMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLWJvb2wgV2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIE5hdmln
YXRpb25UeXBlIHR5cGUsIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBXZWJNb3VzZUV2
ZW50OjpCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0LCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkqIGxpc3RlbmVyLCBBUElPYmplY3Qq
IHVzZXJEYXRhKQorYm9vbCBXZWJQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgTmF2aWdh
dGlvblR5cGUgdHlwZSwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMsIFdlYk1vdXNlRXZl
bnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSogbGlzdGVuZXIsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ1LDcgKzQ1LDcgQEAgYm9vbCBX
ZWJQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVBy
b3h5KiBwYWdlLCBXZWJGcmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJQb2xpY3lD
bGllbnQ6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJveHkqIHBhZ2Us
IFdlYkZyYW1lUHJveHkqIGZyYW1lLCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBXZWJFdmVudDo6TW9k
aWZpZXJzIG1vZGlmaWVycywgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSogbGlzdGVuZXIsIEFQSU9iamVjdCogdXNl
ckRhdGEpCitib29sIFdlYlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIE5hdmlnYXRpb25U
eXBlIHR5cGUsIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBXZWJNb3VzZUV2ZW50OjpC
dXR0b24gbW91c2VCdXR0b24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KiBs
aXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQuZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01
Niw3ICs1Niw3IEBAIGJvb2wgV2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24oV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgV2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJQYWdl
UHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNvdXJjZVJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KiBsaXN0ZW5lciwgQVBJT2JqZWN0KiB1c2Vy
RGF0YSkKK2Jvb2wgV2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJQ
YWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNvdXJjZVJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KiBsaXN0ZW5lciwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBXZWJQb2xpY3lD
bGllbnQ6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJh
bWVQcm94eSoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJQb2xpY3lDbGllbnQ6OnVu
YWJsZVRvSW1wbGVtZW50UG9saWN5KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSog
ZnJhbWUsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBBUElPYmplY3QqIHVzZXJEYXRhKQor
dm9pZCBXZWJQb2xpY3lDbGllbnQ6OnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KFdlYlBhZ2VQcm94
eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC51bmFibGVUb0lt
cGxlbWVudFBvbGljeSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBvbGljeUNsaWVudC5oCmluZGV4IGU0ZWVmNDg2NzI1NTQwNGE5MWVmOTVkNGRmODg2OTBi
NGJhZDY0MjMuLmE2NDFiNjg5NDk0MWU4MTczMzdmMTg3N2QxZjAyOTY2ZjgyZDljOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb2xpY3lDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50LmgKQEAgLTMyLDYgKzMyLDEw
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBPYmplY3Q7Cit9CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZXNvdXJjZUVycm9yOwogICAgIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKQEAgLTQwLDE3ICs0NCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBBUElPYmplY3Q7CiBjbGFzcyBXZWJQYWdlUHJveHk7
CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
OwogCiBjbGFzcyBXZWJQb2xpY3lDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLUGFnZVBvbGlj
eUNsaWVudCwga1dLUGFnZVBvbGljeUNsaWVudEN1cnJlbnRWZXJzaW9uPiB7CiBwdWJsaWM6Ci0g
ICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSosIFdl
YkZyYW1lUHJveHkqLCBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSwgV2ViRXZlbnQ6Ok1vZGlmaWVy
cywgV2ViTW91c2VFdmVudDo6QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkqLCBBUElPYmplY3QqIHVzZXJEYXRhKTsKLSAg
ICBib29sIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJveHkqLCBXZWJG
cmFtZVByb3h5KiwgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUsIFdlYkV2ZW50OjpNb2RpZmllcnMs
IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSosIEFQ
SU9iamVjdCogdXNlckRhdGEpOwotICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2Vi
UGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkqLCBBUElPYmplY3QqIHVzZXJEYXRhKTsKLSAgICB2b2lkIHVuYWJsZVRvSW1wbGVt
ZW50UG9saWN5KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgQVBJT2JqZWN0KiB1c2VyRGF0YSk7CisgICAgYm9vbCBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJD
b3JlOjpOYXZpZ2F0aW9uVHlwZSwgV2ViRXZlbnQ6Ok1vZGlmaWVycywgV2ViTW91c2VFdmVudDo6
QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHkqLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpOworICAgIGJvb2wgZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJD
b3JlOjpOYXZpZ2F0aW9uVHlwZSwgV2ViRXZlbnQ6Ok1vZGlmaWVycywgV2ViTW91c2VFdmVudDo6
QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KiwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKTsKKyAgICBib29sIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYlBhZ2VQcm94eSosIFdl
YkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KiwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKTsKKyAgICB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5KFdl
YlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaAppbmRleCAyNmQyM2ZiYjEw
YWY3M2MzNDBhY2JhYmYzNTczNmU3NTgyNDJkYTEwLi41MzYxMGJlZjQzN2YxYzBiOWUyZDAyZmU2
ZDc4OGYzNjQ1ZTQ0NDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5j
ZXMuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFn
ZUdyb3VwOwogCi1jbGFzcyBXZWJQcmVmZXJlbmNlcyA6IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxB
UElPYmplY3Q6OlR5cGVQcmVmZXJlbmNlcz4geworY2xhc3MgV2ViUHJlZmVyZW5jZXMgOiBwdWJs
aWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZVByZWZlcmVuY2VzPiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IGNyZWF0ZSgpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVN
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlQ2Fj
aGVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDM4Mjk5ODcxYzUwMTllM2VlOGRkYzZkMjY0ODZlYTgz
MDhiNTU4OWIuLjQ3OGVhZjA3YjFiNTM3Y2Y1MmYyNDMxNzc4NzVjYjk4ZmY5Njc3NzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1h
bmFnZXJQcm94eS5jcHAKQEAgLTgxLDEyICs4MSwxMiBAQCBib29sIFdlYlJlc291cmNlQ2FjaGVN
YW5hZ2VyUHJveHk6OnNob3VsZFRlcm1pbmF0ZShXZWJQcm9jZXNzUHJveHkqKSBjb25zdAogCiB2
b2lkIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50
KCkKIHsKLSAgICBBUElPYmplY3Q6OnJlZigpOworICAgIEFQSTo6T2JqZWN0OjpyZWYoKTsKIH0K
IAogdm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBw
bGVtZW50KCkKIHsKLSAgICBBUElPYmplY3Q6OmRlcmVmKCk7CisgICAgQVBJOjpPYmplY3Q6OmRl
cmVmKCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6Z2V0Q2FjaGVP
cmlnaW5zKFBhc3NSZWZQdHI8QXJyYXlDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHku
aAppbmRleCBlODBhZmMzYzY3YjlmODViMThmZGRhNTI2OTM3OThjYzViNzdiNjE4Li44ZTUwZjZi
MThjMTMwNmI0YTFjY2QxMWYwZDgyZjMzOGRkMWM2OWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CiAKIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPFdLQXJyYXlSZWY+IEFycmF5Q2FsbGJhY2s7CiAKLWNsYXNzIFdlYlJlc291cmNlQ2Fj
aGVNYW5hZ2VyUHJveHkgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlQ2Fj
aGVNYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIENvcmVJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5IDog
cHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVDYWNoZU1hbmFnZXI+LCBw
dWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsK
IApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckNhY2hlRm9yT3JpZ2lu
KFdlYlNlY3VyaXR5T3JpZ2luKiwgUmVzb3VyY2VDYWNoZXNUb0NsZWFyKTsKICAgICB2b2lkIGNs
ZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKFJlc291cmNlQ2FjaGVzVG9DbGVhcik7CiAKLSAgICB1c2lu
ZyBBUElPYmplY3Q6OnJlZjsKLSAgICB1c2luZyBBUElPYmplY3Q6OmRlcmVmOworICAgIHVzaW5n
IEFQSTo6T2JqZWN0OjpyZWY7CisgICAgdXNpbmcgQVBJOjpPYmplY3Q6OmRlcmVmOwogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkoV2ViQ29udGV4
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAKaW5kZXggYmZhNGQ4
ZTQzZTdlYjRmZjY3NTNhY2IzZWJmYzdjMzgxZmIyNDExYy4uNmQ5NDM0MTNhNDkyZjM2MDRhMWRh
NGUzZDUzNWExMTMzMGZmZTQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGll
bnQuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBXZWJVSUNsaWVudDo6c2V0U3RhdHVzVGV4
dChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBtX2NsaWVudC5z
ZXRTdGF0dXNUZXh0KHRvQVBJKHBhZ2UpLCB0b0FQSSh0ZXh0LmltcGwoKSksIG1fY2xpZW50LmNs
aWVudEluZm8pOwogfQogCi12b2lkIFdlYlVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVu
dChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmIGRhdGEs
IFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBBUElPYmplY3QqIHVzZXJEYXRhKQordm9p
ZCBXZWJVSUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5KiBwYWdl
LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBkYXRhLCBXZWJFdmVudDo6TW9kaWZpZXJz
IG1vZGlmaWVycywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQu
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQgJiYgIW1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlVJQ2xpZW50LmgKaW5kZXggOTgxM2Y1NzU0YzgxM2JmMTY5YzZiM2M5Mjhi
OGU1YWE1ZmJhNDNiNy4uZDNmZjM1MDZjYzdlMzE5Yzk2OTI5ZjdlYWM5NWMxZTliMTUxOTQyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmgKQEAgLTQzLDcgKzQzLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgQVBJT2Jq
ZWN0OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgSW1t
dXRhYmxlRGljdGlvbmFyeTsKIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CkBAIC03MSw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdl
UHJveHkqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBXZWJGcmFtZVByb3h5Kik7CiAK
ICAgICB2b2lkIHNldFN0YXR1c1RleHQoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik7Ci0g
ICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJI
aXRUZXN0UmVzdWx0OjpEYXRhJiwgV2ViRXZlbnQ6Ok1vZGlmaWVycywgQVBJT2JqZWN0Kik7Cisg
ICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJI
aXRUZXN0UmVzdWx0OjpEYXRhJiwgV2ViRXZlbnQ6Ok1vZGlmaWVycywgQVBJOjpPYmplY3QqKTsK
ICAgICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChXZWJQYWdlUHJveHkqLCBX
S1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBJbW11dGFibGVEaWN0aW9uYXJ5Kik7CiAgICAg
CiAgICAgYm9vbCBpbXBsZW1lbnRzRGlkTm90SGFuZGxlS2V5RXZlbnQoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5tbQppbmRleCA1MjAxMjAwMGRmODg5MzI0N2RhOWMwNjIwMWYyYzNkZTUwMjBkNWI2Li4yNTdi
ODhmODY3MDdiN2RlNGQ0MzE4YmY1YTJmYzM0MDkyZjUwZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCkBAIC0z
NywxNSArMzcsMTUgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdL
VXNlckRhdGFXcmFwcGVyIDogTlNPYmplY3QgewotICAgIFJlZlB0cjxXZWJLaXQ6OkFQSU9iamVj
dD4gX3dlYlVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gX3dlYlVzZXJEYXRhOwog
fQotLSAoaWQpaW5pdFdpdGhVc2VyRGF0YTooV2ViS2l0OjpBUElPYmplY3QqKXVzZXJEYXRhOwot
LSAoV2ViS2l0OjpBUElPYmplY3QqKXVzZXJEYXRhOworLSAoaWQpaW5pdFdpdGhVc2VyRGF0YToo
QVBJOjpPYmplY3QqKXVzZXJEYXRhOworLSAoQVBJOjpPYmplY3QqKXVzZXJEYXRhOwogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gV0tVc2VyRGF0YVdyYXBwZXIKIAotLSAoaWQpaW5pdFdpdGhVc2Vy
RGF0YTooV2ViS2l0OjpBUElPYmplY3QqKXVzZXJEYXRhCistIChpZClpbml0V2l0aFVzZXJEYXRh
OihBUEk6Ok9iamVjdCopdXNlckRhdGEKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAg
IGlmICghc2VsZikKQEAgLTU1LDcgKzU1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKFdlYktpdDo6QVBJT2JqZWN0Kil1c2VyRGF0YQorLSAo
QVBJOjpPYmplY3QqKXVzZXJEYXRhCiB7CiAgICAgcmV0dXJuIF93ZWJVc2VyRGF0YS5nZXQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5kZXggNjdmNGE4ZDZmYzJjMmM3YWQxZWYxMzJkNDg4
MDI2ZTY4ZGZiMTMwMS4uMWFmYzlhMjViZWVhZDdjMDgzYjIzNTUzNTA0OWEyOTU4MDdhODA4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBXS0J1bmRsZVBv
c3RNZXNzYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWVS
ZWYsIFdLVHkKIAogdm9pZCBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoV0tCdW5kbGVS
ZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZVJlZiwgV0tUeXBlUmVmIG1lc3Nh
Z2VCb2R5UmVmLCBXS1R5cGVSZWYqIHJldHVybkRhdGFSZWYpCiB7Ci0gICAgUmVmUHRyPEFQSU9i
amVjdD4gcmV0dXJuRGF0YTsKKyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHJldHVybkRhdGE7CiAg
ICAgdG9JbXBsKGJ1bmRsZVJlZiktPnBvc3RTeW5jaHJvbm91c01lc3NhZ2UodG9XVEZTdHJpbmco
bWVzc2FnZU5hbWVSZWYpLCB0b0ltcGwobWVzc2FnZUJvZHlSZWYpLCByZXR1cm5EYXRhKTsKICAg
ICBpZiAocmV0dXJuRGF0YVJlZikKICAgICAgICAgKnJldHVybkRhdGFSZWYgPSB0b0FQSShyZXR1
cm5EYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3Bw
CmluZGV4IDdkNjNjNTJlNDg1OGZmYTAxZWU0ZjQyY2RiMDg1NmI1ZjkzZDY3ZmEuLmViMjkxYmZm
MDIxYjNjNzA3MzBlZjAxMDhkN2RjNmQyMTZhNGUyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbW11dGFibGVB
cnJheT4gY29udGV4dE1lbnVJdGVtcyhjb25zdCBXZWJDb250ZXh0TWVudSYgY29udGV4dAogewog
ICAgIGF1dG8gaXRlbXMgPSBjb250ZXh0TWVudS5pdGVtcygpOwogCi0gICAgVmVjdG9yPFJlZlB0
cjxBUElPYmplY3Q+PiBtZW51SXRlbXM7CisgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+
IG1lbnVJdGVtczsKICAgICBtZW51SXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpdGVtcy5z
aXplKCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCmluZGV4IGM0NDE5NzU3MmVhYTUyODFh
NTQxMDk1MjY0MDgyMzRkNjMxMTk1YmQuLmNhOTY1YmEwYWNjYjMwNWQzYTk1OWM4Yjc5YWYzZGI1
NThmMDJmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5o
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ7CiBjbGFz
cyBXZWJGcmFtZTsKIGNsYXNzIFdlYkltYWdlOwogCi1jbGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGUgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlQnVuZGxlTm9kZUhh
bmRsZT4geworY2xhc3MgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlIDogcHVibGljIEFQSTo6VHlw
ZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVCdW5kbGVOb2RlSGFuZGxlPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBnZXRPckNyZWF0
ZShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU+IGdldE9yQ3JlYXRlKFdlYkNvcmU6Ok5vZGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaAppbmRleCBmZDI4MWQwZTkw
ODk2NjJiNDc0ODkyZjUwYzRlYjVmNDhkZjg1MDI0Li44NDZlNzVkOGRhOTdjNjFlNDQzY2Q2NmY1
ZWE3NDVmMmY1YWI1ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwogCi1jbGFzcyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlIDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZUJ1bmRsZVJhbmdlSGFu
ZGxlPiB7CitjbGFzcyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlIDogcHVibGljIEFQSTo6VHlw
ZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVCdW5kbGVSYW5nZUhhbmRsZT4gewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IGdldE9yQ3Jl
YXRlKEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IGdldE9yQ3JlYXRlKFdlYkNvcmU6OlJhbmdlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGE1M2FjZjFlN2U5MjBjMDI1ODc5MDI2ZmEzMDBiZjhh
ZGJkYjBkODcuLjM0MTRlZjMxNDUxMThkMjYxNDQ1YjYyMmIxN2ZiOTNkY2JkMzI0ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OmluaXRpYWxpemVDbGllbnQoV0tCdW5kbGVDbGllbnQqIGNsaWVudCkKICAgICBtX2NsaWVudC5p
bml0aWFsaXplKGNsaWVudCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RNZXNzYWdl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdCogbWVzc2FnZUJvZHkpCit2b2lk
IEluamVjdGVkQnVuZGxlOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBB
UEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiB7CiAgICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4oV2ViQ29udGV4dExlZ2FjeU1lc3NhZ2Vz
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIFdlYkNvbnRleHRMZWdhY3lNZXNzYWdlczo6cG9zdE1l
c3NhZ2VNZXNzYWdlTmFtZSgpLCAwKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZU5hbWUp
OwpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdCogbWVzc2FnZUJvCiAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZE1lc3NhZ2Uoc3Rk
Ojptb3ZlKGVuY29kZXIpKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFN5bmNocm9u
b3VzTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUElPYmplY3QqIG1lc3NhZ2VC
b2R5LCBSZWZQdHI8QVBJT2JqZWN0PiYgcmV0dXJuRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6
OnBvc3RTeW5jaHJvbm91c01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKQogewog
ICAgIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHJldHVy
bkRhdGEpOwogCkBAIC00MDgsNyArNDA4LDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4g
SW5qZWN0ZWRCdW5kbGU6Om9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZSgpCiAgICAgSGFzaFNl
dDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwogICAgIGNhY2hlU3RvcmFnZSgpLmdl
dE9yaWdpbnNXaXRoQ2FjaGUob3JpZ2lucyk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVj
dD4+IG9yaWdpbklkZW50aWZpZXJzOworICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBv
cmlnaW5JZGVudGlmaWVyczsKICAgICBvcmlnaW5JZGVudGlmaWVycy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG9yaWdpbnMuc2l6ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDog
b3JpZ2lucykKQEAgLTU3NiwxMiArNTc2LDEyIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZElu
aXRpYWxpemVQYWdlR3JvdXAoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCkKICAgICBtX2Ns
aWVudC5kaWRJbml0aWFsaXplUGFnZUdyb3VwKHRoaXMsIHBhZ2VHcm91cCk7CiB9CiAKLXZvaWQg
SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5h
bWUsIEFQSU9iamVjdCogbWVzc2FnZUJvZHkpCit2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNl
aXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2Fn
ZUJvZHkpCiB7CiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2UodGhpcywgbWVzc2FnZU5h
bWUsIG1lc3NhZ2VCb2R5KTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1l
c3NhZ2VUb1BhZ2UoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJ
T2JqZWN0KiBtZXNzYWdlQm9keSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNz
YWdlVG9QYWdlKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6
T2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKICAgICBtX2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZVRv
UGFnZSh0aGlzLCBwYWdlLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5oCmluZGV4IGY1MmU5YjNhODhjYzgwZGI3M2ZjNGRhMDJkMjNkY2ZiMzk1Nzc0MmQuLjZi
ZTZiMDNkY2E5OGRkZmIzNWE4Zjc5NDg3ZWViYzg3ZjkxNmJmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmgKQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdlOwogY2xh
c3MgV2ViUGFnZUdyb3VwUHJveHk7CiAKLWNsYXNzIEluamVjdGVkQnVuZGxlIDogcHVibGljIFR5
cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZUJ1bmRsZT4geworY2xhc3MgSW5qZWN0ZWRCdW5k
bGUgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZUJ1bmRsZT4gewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBwYXRoKQogICAgIHsKQEAgLTc5LDEzICs3OSwxMyBAQCBwdWJsaWM6CiAgICAg
fQogICAgIH5JbmplY3RlZEJ1bmRsZSgpOwogCi0gICAgYm9vbCBsb2FkKEFQSU9iamVjdCogaW5p
dGlhbGl6YXRpb25Vc2VyRGF0YSk7CisgICAgYm9vbCBsb2FkKEFQSTo6T2JqZWN0KiBpbml0aWFs
aXphdGlvblVzZXJEYXRhKTsKICAgICB2b2lkIHNldFNhbmRib3hFeHRlbnNpb24oUGFzc1JlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPiBzYW5kYm94RXh0ZW5zaW9uKSB7IG1fc2FuZGJveEV4dGVuc2lv
biA9IHNhbmRib3hFeHRlbnNpb247IH0KIAogICAgIC8vIEFQSQogICAgIHZvaWQgaW5pdGlhbGl6
ZUNsaWVudChXS0J1bmRsZUNsaWVudCopOwotICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3Ry
aW5nJiwgQVBJT2JqZWN0Kik7Ci0gICAgdm9pZCBwb3N0U3luY2hyb25vdXNNZXNzYWdlKGNvbnN0
IFN0cmluZyYsIEFQSU9iamVjdCosIFJlZlB0cjxBUElPYmplY3Q+JiByZXR1cm5EYXRhKTsKKyAg
ICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0Kik7CisgICAgdm9p
ZCBwb3N0U3luY2hyb25vdXNNZXNzYWdlKGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0KiwgUmVm
UHRyPEFQSTo6T2JqZWN0PiYgcmV0dXJuRGF0YSk7CiAKICAgICBXZWJDb25uZWN0aW9uKiB3ZWJD
b25uZWN0aW9uVG9VSVByb2Nlc3MoKSBjb25zdDsKIApAQCAtMTUyLDggKzE1Miw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZENyZWF0ZVBhZ2UoV2ViUGFnZSopOwogICAgIHZvaWQgd2lsbERlc3Ry
b3lQYWdlKFdlYlBhZ2UqKTsKICAgICB2b2lkIGRpZEluaXRpYWxpemVQYWdlR3JvdXAoV2ViUGFn
ZUdyb3VwUHJveHkqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYs
IEFQSU9iamVjdCopOwotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV2ViUGFnZSos
IGNvbnN0IFN0cmluZyYsIEFQSU9iamVjdCopOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
VG9QYWdlKFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCopOwogCiAgICAgc3Rh
dGljIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBleGNlcHRp
b24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgKaW5k
ZXggYTE1MmJhNjNkYTllZjk1MzQzZGM3ZDVlNDFhYWJhZTUxYThhM2RmNC4uMTk0M2IxYThkYzRm
OWU0YTVlZmRjNGIxZmQzM2I4Y2EzNjI1MDU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVCYWNrRm9yd2FyZExpc3QuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBXZWJQYWdlOwog
CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW07CiAKLWNsYXNzIEluamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0IDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVj
dDo6VHlwZUJ1bmRsZUJhY2tGb3J3YXJkTGlzdD4geworY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNr
Rm9yd2FyZExpc3QgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZUJ1
bmRsZUJhY2tGb3J3YXJkTGlzdD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
amVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0PiBjcmVhdGUoV2ViUGFnZSogcGFnZSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5j
cHAKaW5kZXggMDM5Zjc4MDJiMWZkN2IwMjFlNTFmOTA4Y2U2NjU1OWE2YjUyNjkxMS4uNWMwZWZh
YmRjZDMyY2FiMjU3Nzc0MmVmYTNjMmQ0Njc0M2ZiYjNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gSW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjaGlsZHJlbigpIGNvbnN0CiB7Ci0gICAgVmVj
dG9yPFJlZlB0cjxBUElPYmplY3Q+PiBjaGlsZHJlbjsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSTo6
T2JqZWN0Pj4gY2hpbGRyZW47CiAgICAgY2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
X2l0ZW0tPmNoaWxkcmVuKCkuc2l6ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQg
OiBtX2l0ZW0tPmNoaWxkcmVuKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaAppbmRleCBiMTYzYzE1Mjk2YWFkOWExODllY2M2OWEwZTEyNjc2
ZmQ5YmQwNDRhLi45ZGNmZGJkNGNhNGJkNTliMGVlOTRjZmRmNDFhNjcwODI4NDdiZWY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJbW11dGFibGVBcnJheTsK
IGNsYXNzIFdlYlBhZ2VQcm94eTsKIAotY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtIDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZUJ1bmRsZUJhY2tG
b3J3YXJkTGlzdEl0ZW0+IHsKK2NsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bSA6IHB1YmxpYyBBUEk6OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVk
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SGlz
dG9yeUl0ZW0+IGl0ZW0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcApp
bmRleCA4ZWJmODk3ODExODg1Yjg1ZWZkMjliZGFjYzE4NWEyMDA0MmZmMGM2Li5lMGU2YzJiODcw
ZmY2MGE3MTNlMzJlYWY2MmQzYTg0MWNlMjU2NGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
Q2xpZW50LmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlQ2xpZW50Ojpk
aWRJbml0aWFsaXplUGFnZUdyb3VwKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIFdlYlBhZwogICAg
IG1fY2xpZW50LmRpZEluaXRpYWxpemVQYWdlR3JvdXAodG9BUEkoYnVuZGxlKSwgdG9BUEkocGFn
ZUdyb3VwKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVD
bGllbnQ6OmRpZFJlY2VpdmVNZXNzYWdlKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdCogbWVzc2FnZUJvZHkpCit2b2lkIEluamVjdGVk
QnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiB7CiAg
ICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2Fn
ZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBjb25zdCBTdHJpbgogICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVNZXNzYWdlKHRvQVBJKGJ1bmRsZSksIHRvQVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRv
QVBJKG1lc3NhZ2VCb2R5KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0
ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKEluamVjdGVkQnVuZGxlKiBi
dW5kbGUsIFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVj
dCogbWVzc2FnZUJvZHkpCit2b2lkIEluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVz
c2FnZVRvUGFnZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBXZWJQYWdlKiBwYWdlLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiB7CiAgICAgaWYg
KCFtX2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IGVmMTQxNDI3NGE5Y2I0ZjZhYTIwOWJmMjM1
MmUxZDJmMzc5NDJlYTkuLjc3ODVkYTU2MzBmNWJmMjI4MjYzYWZmMjZkNmU1MDRlOTcyMjgyMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTMwLDkgKzMwLDEyIEBACiAjaW5j
bHVkZSAiV0tCdW5kbGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCituYW1lc3BhY2Ug
QVBJIHsKK2NsYXNzIE9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEFQ
SU9iamVjdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlOwogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdl
YlBhZ2VHcm91cFByb3h5OwpAQCAtNDIsOCArNDUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRD
cmVhdGVQYWdlKEluamVjdGVkQnVuZGxlKiwgV2ViUGFnZSopOwogICAgIHZvaWQgd2lsbERlc3Ry
b3lQYWdlKEluamVjdGVkQnVuZGxlKiwgV2ViUGFnZSopOwogICAgIHZvaWQgZGlkSW5pdGlhbGl6
ZVBhZ2VHcm91cChJbmplY3RlZEJ1bmRsZSosIFdlYlBhZ2VHcm91cFByb3h5Kik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJbmplY3RlZEJ1bmRsZSosIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIEFQSU9iamVjdCogbWVzc2FnZUJvZHkpOwotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2VUb1BhZ2UoSW5qZWN0ZWRCdW5kbGUqLCBXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
TmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSk7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJbmplY3RlZEJ1bmRsZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0
KiBtZXNzYWdlQm9keSk7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShJbmplY3Rl
ZEJ1bmRsZSosIFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVj
dCogbWVzc2FnZUJvZHkpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgKaW5kZXggYTY2NGExNGUy
YWRkZmUyMDQ5NDVhZTg4ODQyNWYxZTQzYTFjNDNjYi4uMWQ5YWU3ODQxYTAzODc2NDQ3Y2EwZDhi
MWZlMTUyZWQzYzUyNWNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01X
aW5kb3dFeHRlbnNpb24uaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ7CiBjbGFzcyBXZWJGcmFtZTsKIAotY2xhc3Mg
SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24gOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8
QVBJT2JqZWN0OjpUeXBlQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uPiB7CitjbGFzcyBJbmplY3Rl
ZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiA6IHB1YmxpYyBBUEk6OlR5cGVkT2JqZWN0PEFQSTo6
T2JqZWN0OjpUeXBlQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uPiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24+IGNyZWF0ZShX
ZWJGcmFtZSosIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqKTsKICAgICBzdGF0aWMgSW5qZWN0
ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIGdldChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNp
b24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oCmluZGV4IDI2
NGRmNmRmOTRmNjhiMTFmZDI5ZDQ1MDI4MzE0Y2EyYjIxMzI5MTQuLjdjMmZhMDQ5MTkzN2I0OTJh
M2YxYWM2NTk2NTY4Yjk0ZTBiOTgxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTsKIGNsYXNzIFdlYkZyYW1lOwogCi1jbGFzcyBJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0
OjpUeXBlQnVuZGxlSGl0VGVzdFJlc3VsdD4geworY2xhc3MgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0IDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVCdW5kbGVI
aXRUZXN0UmVzdWx0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAppbmRl
eCBmOTQzNmU3ODNiOGRiNDU4ZTkwNDBlZmQ5OTJmZmU3MDA5YTgxNjQyLi44NWVmMDM2ZjE4MDQ1
NWNjMGQxYTJiYTMxYTVhNGUyZWRlMTgyNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFdlYkZyYW1lOwogCi1jbGFzcyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb24gOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbj4geworY2xhc3MgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uIDogcHVi
bGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uPiBjcmVhdGUoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9u
QWN0aW9uJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA2
OTE3YzRjNTBlZmFkZmQxZGVmMDk0MGY1YzkxNjE2NTE3YTNiYjQ5Li4wMmNkYjQyYjBmMDk5ZjFl
Y2Q5MmU3YjhhNzMyZjNjMTcwOTNiNjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNDEsMTIgKzQxLDEyIEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0
SXRlbXMoV2ViUGFnZSogcGFnZSwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KiBoaXRUZXN0
UmVzdWx0LCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGRlZmF1bHRNZW51
LCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIG5ld01lbnUsIFJlZlB0cjxBUElPYmpl
Y3Q+JiB1c2VyRGF0YSkKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ6
OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UqIHBhZ2UsIEluamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbURhdGE+JiBkZWZhdWx0TWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+
JiBuZXdNZW51LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1f
Y2xpZW50LmdldENvbnRleHRNZW51RnJvbURlZmF1bHRNZW51KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+IGRlZmF1bHRNZW51SXRlbXM7Cisg
ICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGRlZmF1bHRNZW51SXRlbXM7CiAgICAgZGVm
YXVsdE1lbnVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRlZmF1bHRNZW51LnNpemUoKSk7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogZGVmYXVsdE1lbnUpCiAgICAgICAgIGRlZmF1
bHRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGl0
ZW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQuaAppbmRleCA2YTgxZDA1NDc1YzY0ZWU3MDc5MjJkNDg5ZjU2NTUzZTJiY2NmMDg4Li5l
Y2RmZDdhMDhiZjg4OTJlMzNkNDIwMmFlZTk5MDVkZWYzYjc2YjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oCkBAIC0zMiwyMCAr
MzIsMjMgQEAKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKK25hbWVzcGFjZSBBUEkgeworY2xhc3MgT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0gICAgY2xhc3MgQ29udGV4dE1lbnU7CitjbGFzcyBDb250ZXh0TWVudTsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEFQSU9iamVjdDsKIGNsYXNzIEluamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdDsKIGNsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CiBjbGFzcyBX
ZWJQYWdlOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCA6IHB1
YmxpYyBBUElDbGllbnQ8V0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQsIGtXS0J1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudEN1cnJlbnRWZXJzaW9uPiB7CiBwdWJsaWM6Ci0gICAgYm9vbCBn
ZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJQYWdlKiwgSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0KiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBkZWZhdWx0
TWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBuZXdNZW51LCBSZWZQdHI8QVBJ
T2JqZWN0PiYgdXNlckRhdGEpOworICAgIGJvb2wgZ2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRl
bXMoV2ViUGFnZSosIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCosIGNvbnN0IFZlY3RvcjxX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgZGVmYXVsdE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhPiYgbmV3TWVudSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5n
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKaW5kZXggZTc5ZTgxYTAzZmNk
MjQ3ZTNmYjNlNTQ2MmY2ZjU1NGIyYWUxODU4ZC4uZDFiMTZiZTk4MDU1NjI2YTVmNGU1ZjkzZjhi
NjQxNWY1NjRiM2E4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaApAQCAtMzIsOCArMzIsNyBAQAogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotICAgIAotY2xhc3MgQVBJ
T2JqZWN0OworCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBXZWJD
b250ZXh0TWVudUl0ZW1EYXRhOwogY2xhc3MgV2ViUGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuY3BwCmluZGV4IGMzM2IwMjY4OTVkM2IwMmQ2MjM3ZmUz
YTViYTM2YmE5NjNmMWU3YWIuLjg3ZmRiY2U3MDVjYzZjMWVlYTVhZmFhZjkzMGMxZGY2NGJhYzM2
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmNwcApA
QCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudDo6d2ls
bFNlbmRTdWJtaXRFdmVudChXZWJQYWdlKiBwYWdlLCBIVE1MRm9ybUVsCiAgICAgbV9jbGllbnQu
d2lsbFNlbmRTdWJtaXRFdmVudCh0b0FQSShwYWdlKSwgdG9BUEkobm9kZUhhbmRsZS5nZXQoKSks
IHRvQVBJKGZyYW1lKSwgdG9BUEkoc291cmNlRnJhbWUpLCB0b0FQSSh0ZXh0RmllbGRzTWFwLmdl
dCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
Rm9ybUNsaWVudDo6d2lsbFN1Ym1pdEZvcm0oV2ViUGFnZSogcGFnZSwgSFRNTEZvcm1FbGVtZW50
KiBmb3JtRWxlbWVudCwgV2ViRnJhbWUqIGZyYW1lLCBXZWJGcmFtZSogc291cmNlRnJhbWUsIGNv
bnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFsdWVzLCBSZWZQdHI8QVBJ
T2JqZWN0PiYgdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6Ondp
bGxTdWJtaXRGb3JtKFdlYlBhZ2UqIHBhZ2UsIEhUTUxGb3JtRWxlbWVudCogZm9ybUVsZW1lbnQs
IFdlYkZyYW1lKiBmcmFtZSwgV2ViRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhbHVlcywgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNl
ckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxsU3VibWl0Rm9ybSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVu
dDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0CiAgICAgaWYg
KCFtX2NsaWVudC5kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gZWxlbWVudEhhbmRsZXM7CisgICAgVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IGVsZW1lbnRIYW5kbGVzOwogICAgIGVsZW1lbnRIYW5kbGVz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZWxlbWVudHMuc2l6ZSgpKTsKIAogICAgIGZvciAoY29u
c3QgYXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUZvcm1DbGllbnQuaAppbmRleCA0N2JiYzcyZWQ4N2U4OTIzMGE5MTJjYWNmMmI4OGEyYTEx
MjI2ZWIzLi5jN2VkMjk0M2IzYTcwMTNmZDliMmVkNmQ5ZjNjNTA5NjMzZDJhNGUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUZvcm1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuaApAQCAtMzIsNiArMzIsMTAg
QEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAor
bmFtZXNwYWNlIEFQSSB7CitjbGFzcyBPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CkBAIC00MSw3ICs0NSw2IEBA
IGNsYXNzIEhUTUxUZXh0QXJlYUVsZW1lbnQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFz
cyBBUElPYmplY3Q7CiBjbGFzcyBJbW11dGFibGVEaWN0aW9uYXJ5OwogY2xhc3MgV2ViRnJhbWU7
CiBjbGFzcyBXZWJQYWdlOwpAQCAtNTQsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0
RGlkQ2hhbmdlSW5UZXh0RmllbGQoV2ViUGFnZSosIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQq
LCBXZWJGcmFtZSopOwogICAgIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoV2ViUGFnZSos
IFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQqLCBXZWJGcmFtZSopOwogICAgIGJvb2wgc2hv
dWxkUGVyZm9ybUFjdGlvbkluVGV4dEZpZWxkKFdlYlBhZ2UqLCBXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50KiwgV0tJbnB1dEZpZWxkQWN0aW9uVHlwZSwgV2ViRnJhbWUqKTsgICAgCi0gICAgdm9p
ZCB3aWxsU3VibWl0Rm9ybShXZWJQYWdlKiwgV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50KiwgV2Vi
RnJhbWUqLCBXZWJGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+PiYsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCB3
aWxsU3VibWl0Rm9ybShXZWJQYWdlKiwgV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50KiwgV2ViRnJh
bWUqLCBXZWJGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBTdHJpbmc+PiYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKTsKICAgICB2b2lkIHdp
bGxTZW5kU3VibWl0RXZlbnQoV2ViUGFnZSosIFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudCosIFdl
YkZyYW1lKiwgV2ViRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPj4mKTsKICAgICB2b2lkIGRpZEFzc29jaWF0ZUZvcm1Db250cm9scyhXZWJQ
YWdlKiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpFbGVtZW50Pj4mKTsKICAgICBib29s
IHNob3VsZE5vdGlmeU9uRm9ybUNoYW5nZXMoV2ViUGFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IGQ3MTJhODRjZjYwZGNhMmU0
MzM5ODdhYzlmOWE4NGFjYmU0YWIyODQuLmUzY2E0MDg0MzgxNDA4YmYzMjExNDBlODBkN2QzYzQ5
NTg1M2VmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSogcGFnZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFt
X2NsaWVudC53aWxsTG9hZFVSTFJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTU1LDcgKzU1
LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29u
c3Qgdm9pZCogZGF0YSkKICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0
PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJl
YWNoYWJsZVVSTCwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBT
dHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1
bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGll
bnQud2lsbExvYWREYXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwpAQCAtNjksNyArNjksNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVz
dChXZWJQYWdlKiBwYWdlLCBjb25zdCBSZQogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVl
c3QodG9BUEkocGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSSh3ZWJEYXRhLmdldCgpKSwgdG9B
UEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVm
KHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGll
bnQuY2xpZW50SW5mbyk7CiB9CiAKLWJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
OjpzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJQYWdlKiBwYWdlLCBJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0sIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0
YSkKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpzaG91bGRHb1RvQmFja0Zv
cndhcmRMaXN0SXRlbShXZWJQYWdlKiBwYWdlLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlz
dEl0ZW0qIGl0ZW0sIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKQogewogICAgIGlmICgh
bV9jbGllbnQuc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtODEsNyArODEsNyBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6c2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViUGFnZSogcGFnZQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFt
ZSwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSogcGFn
ZSwgV2ViRnJhbWUqIGZyYW1lLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkKIHsKICAg
ICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpCiAgICAgICAg
IHJldHVybjsKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSogcGEKICAgICB1
c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCi12b2lkIElu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBS
ZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1
c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC0xMDEsNyArMTAx
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEYKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRv
SW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2Uq
IHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlZlB0
cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFnZSogcGFn
ZSwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVmUHRyPEFQ
STo6T2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsUHJvdmlz
aW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTExMSw3ICsx
MTEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYgogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYo
dG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUq
IGZyYW1lLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdl
YkZyYW1lKiBmcmFtZSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYg
KCFtX2NsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTEy
MSw3ICsxMjEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkQ29t
bWl0TG9hZEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYQogICAgIHVzZXJEYXRhID0gYWRv
cHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQYWdlKiBw
YWdlLCBXZWJGcmFtZSogZnJhbWUsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKK3ZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JG
cmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIFJlZlB0cjxBUEk6Ok9iamVjdD4m
IHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQuZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2Vi
UGFnZSogcGFnZQogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNz
KSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBSZWZQdHI8QVBJT2Jq
ZWN0PiYgdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlk
RmluaXNoTG9hZEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2hM
b2FkRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoUHJvZ3Jlc3MoV2ViUGFnZSog
cGFnZSkKICAgICBtX2NsaWVudC5kaWRGaW5pc2hQcm9ncmVzcyh0b0FQSShwYWdlKSwgbV9jbGll
bnQuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2Vy
RGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGYWlsTG9hZFdp
dGhFcnJvckZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKQogewogICAg
IGlmICghbV9jbGllbnQuZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsCiAgICAgdXNl
ckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIAotdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIFNhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlIHR5cGUsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKK3ZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUo
V2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZSB0eXBlLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xp
ZW50LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojpk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2ViUGFnZSoKICAgICB1c2VyRGF0YSA9
IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCi12b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV2ViUGFnZSogcGFn
ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgV2ViRnJhbWUqIGZyYW1lLCBSZWZQdHI8QVBJT2JqZWN0
PiYgdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZVRpdGxlRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgV2Vi
RnJhbWUqIGZyYW1lLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkKIHsKICAgICBpZiAo
IW1fY2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC0x
NzksNyArMTc5LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJl
Y2VpdmVUaXRsZUZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnMKICAgICB1c2VyRGF0YSA9IGFk
b3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KFdlYlBhZ2UqIHBh
Z2UgLCBXZWJGcmFtZSogZnJhbWUsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKK3ZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJj
aHkoV2ViUGFnZSogcGFnZSAsIFdlYkZyYW1lKiBmcmFtZSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYg
dXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5kaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJj
aHkpCiAgICAgICAgIHJldHVybjsKQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KFdlYlBhZ2Uq
IHBhZ2UgLAogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7
CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5z
ZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBSZWZQ
dHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdl
YkZyYW1lKiBmcmFtZSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYg
KCFtX2NsaWVudC5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2UqCiAgICAgdXNl
ckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIAotdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1l
KFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJE
YXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJl
Q29udGVudEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgUmVmUHRyPEFQ
STo6T2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5kaWRSdW5JbnNlY3Vy
ZUNvbnRlbnRGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnRG
b3JGcmFtZShXZWJQYWdlKiBwYWdlCiAgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNl
ckRhdGFUb1Bhc3MpKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OmRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgUmVm
UHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFt
ZSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5k
aWREZXRlY3RYU1NGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5LDcgKzIxOSw3IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1NGb3JGcmFt
ZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtCiAgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwo
dXNlckRhdGFUb1Bhc3MpKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1l
LCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudDo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFt
ZSogZnJhbWUsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKQogewogICAgIGlmICghbV9j
bGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI5LDcg
KzIyOSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaXJzdExh
eW91dEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyCiAgICAgdXNlckRhdGEgPSBhZG9wdFJl
Zih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdlYlBh
Z2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQor
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5kaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ3LDcg
KzI0Nyw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRMYXlvdXRG
b3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSoKICAgICBtX2NsaWVudC5kaWRMYXlvdXRG
b3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsK
IH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZExheW91dChXZWJQ
YWdlKiBwYWdlLCBMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMsIFJlZlB0cjxBUElPYmplY3Q+
JiB1c2VyRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRMYXlv
dXQoV2ViUGFnZSogcGFnZSwgTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzLCBSZWZQdHI8QVBJ
OjpPYmplY3Q+JiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZExheW91dCkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZGZjZThlNTkyZTQ5OTA5YjNjNmQxZjlkMzg3ZmI3YzdkNzgzM2I1Zi4uNmJk
ZGU4MmI1MmQ2MmQ4NWIwNzE3YzFlMmZkMTY0N2FhMmM5YzAwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCituYW1lc3Bh
Y2UgQVBJIHsKK2NsYXNzIE9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
RE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwpAQCAtNDYsMzYgKzUw
LDM1IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IEFQSU9iamVjdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNs
YXNzIFdlYlBhZ2U7CiBjbGFzcyBXZWJGcmFtZTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQs
IGtXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbj4gewogcHVibGljOgotICAg
IHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBBUElPYmplY3QqKTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2Vi
UGFnZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIEFQSU9iamVjdCopOwotCi0gICAgYm9vbCBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbShXZWJQYWdlKiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKiwgUmVmUHRy
PEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKLSAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRh
KTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7
Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFn
ZSosIFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFJlZlB0cjxBUElP
YmplY3Q+JiB1c2VyRGF0YSk7Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFn
ZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKLSAgICB2b2lkIGRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxB
UElPYmplY3Q+JiB1c2VyRGF0YSk7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2Vi
UGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKKyAgICB2b2lk
IHdpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgQVBJOjpPYmplY3QqKTsKKyAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFn
ZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIEFQSTo6T2JqZWN0Kik7CisKKyAgICBib29sIHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtKFdlYlBhZ2UqLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBSZWZQdHI8
QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJE
YXRhKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJE
YXRhKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShX
ZWJQYWdlKiwgV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1l
KFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKTsKKyAg
ICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSos
IFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRG
b3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0
YSk7CiAgICAgdm9pZCBkaWRGaW5pc2hQcm9ncmVzcyhXZWJQYWdlKik7Ci0gICAgdm9pZCBkaWRG
YWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwotICAgIHZv
aWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSos
IFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEp
OwotICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV2ViUGFnZSosIGNvbnN0IFN0cmlu
ZyYsIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKLSAgICB2b2lkIGRp
ZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJ
T2JqZWN0PiYgdXNlckRhdGEpOwotICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZv
ckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7
Ci0gICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJh
bWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwotICAgIHZvaWQgZGlkRGV0ZWN0WFNT
Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRh
KTsKLQotICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUq
LCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwotICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9i
amVjdD4mIHVzZXJEYXRhKTsKKyAgICB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUo
V2ViUGFnZSosIFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFJlZlB0
cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKTsKKyAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpOworICAgIHZvaWQgZGlkUmVjZWl2
ZVRpdGxlRm9yRnJhbWUoV2ViUGFnZSosIGNvbnN0IFN0cmluZyYsIFdlYkZyYW1lKiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpOworICAgIHZvaWQgZGlkUmVtb3ZlRnJhbWVGcm9tSGll
cmFyY2h5KFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRh
KTsKKyAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlKiwg
V2ViRnJhbWUqLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWRS
dW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJ
OjpPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShXZWJQ
YWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSk7CisKKyAgICB2
b2lkIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQ
STo6T2JqZWN0PiYgdXNlckRhdGEpOworICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYg
dXNlckRhdGEpOwogICAgIHZvaWQgZGlkTGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1l
Kik7Ci0gICAgdm9pZCBkaWRMYXlvdXQoV2ViUGFnZSosIFdlYkNvcmU6OkxheW91dE1pbGVzdG9u
ZXMsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWRMYXlvdXQoV2Vi
UGFnZSosIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVz
ZXJEYXRhKTsKIAogICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJQYWdl
KiwgV2ViRnJhbWUqLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGRpZENh
bmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVBvbGljeUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5jcHAKaW5kZXggYjkwY2Yx
ZjllMzUyMTQ5ZDBjNjdiZDdlYWU5OTVmYmIyYTYwMDI2Yi4uZTIzMjkwZmJiNDNjYmVjNzQzZGVi
MmM3ZjAzMWJjZWVlMTA4NGM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlUG9saWN5Q2xpZW50LmNwcApAQCAtMzQsNyArMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBJ
bmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBJbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24qIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKK1dLQnVuZGxlUGFnZVBvbGljeUFjdGlv
biBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBJbmplY3RlZEJ1bmRsZU5h
dmlnYXRpb25BY3Rpb24qIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGll
bnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbikKICAgICAgICAgcmV0dXJuIFdLQnVu
ZGxlUGFnZVBvbGljeUFjdGlvblBhc3NUaHJvdWdoOwpAQCAtNDcsNyArNDcsNyBAQCBXS0J1bmRs
ZVBhZ2VQb2xpY3lBY3Rpb24gSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aQogICAgIHJldHVybiBwb2xpY3k7CiB9CiAKLVdLQnVuZGxlUGFnZVBv
bGljeUFjdGlvbiBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIEluamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbiogYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFJlZlB0cjxBUElPYmplY3Q+
JiB1c2VyRGF0YSkKK1dLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBJbmplY3RlZEJ1bmRsZVBhZ2VQ
b2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlKiBwYWdl
LCBXZWJGcmFtZSogZnJhbWUsIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbiogYWN0aW9u
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKQogewogICAgIGlmICghbV9j
bGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKQogICAgICAgICByZXR1cm4gV0tC
dW5kbGVQYWdlUG9saWN5QWN0aW9uUGFzc1Rocm91Z2g7CkBAIC02MCw3ICs2MCw3IEBAIFdLQnVu
ZGxlUGFnZVBvbGljeUFjdGlvbiBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQ6OmRlY2lk
ZVBvbGljeUZvck5ld1dpbmRvCiAgICAgcmV0dXJuIHBvbGljeTsKIH0KIAotV0tCdW5kbGVQYWdl
UG9saWN5QWN0aW9uIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQorV0tCdW5kbGVQYWdlUG9s
aWN5QWN0aW9uIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2Ns
aWVudC5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSkKICAgICAgICAgcmV0dXJuIFdLQnVuZGxlUGFn
ZVBvbGljeUFjdGlvblBhc3NUaHJvdWdoOwpAQCAtNzQsNyArNzQsNyBAQCBXS0J1bmRsZVBhZ2VQ
b2xpY3lBY3Rpb24gSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZQogICAgIHJldHVybiBwb2xpY3k7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlUG9saWN5Q2xpZW50Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeShXZWJQYWdlKiBwYWdlLCBX
ZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBSZWZQ
dHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNs
aWVudDo6dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZy
YW1lLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC51bmFibGVUb0ltcGxlbWVudFBv
bGljeSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
UG9saWN5Q2xpZW50LmgKaW5kZXggM2NkYmViZTYwMmJhOTE1MzkwZTg3ZTgyYmJlZWU1YTllMWIy
ZDJlMi4uMThhNzNhNjZhNTJhOTEwNmMxNDU3ZjMyNzkyYTQzMmE3OWRjMjkwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oCkBAIC00NSwxMCArNDUs
MTAgQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xp
ZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQsIGtXS0J1bmRs
ZVBhZ2VQb2xpY3lDbGllbnRDdXJyZW50VmVyc2lvbj4gewogcHVibGljOgotICAgIFdLQnVuZGxl
UGFnZVBvbGljeUFjdGlvbiBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2Uq
LCBXZWJGcmFtZSosIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbiosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7Ci0gICAg
V0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihX
ZWJQYWdlKiwgV2ViRnJhbWUqLCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24qLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVm
UHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKLSAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24g
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViUGFnZSosIFdlYkZyYW1lKiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJl
ZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7Ci0gICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBv
bGljeShXZWJQYWdlKiwgV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
UmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKKyAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rp
b24gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlKiwgV2ViRnJhbWUqLCBJ
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgV0tCdW5kbGVQYWdl
UG9saWN5QWN0aW9uIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlKiwgV2Vi
RnJhbWUqLCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24qLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiYgdXNlckRhdGEpOworICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVmUHRyPEFQSTo6
T2JqZWN0PiYgdXNlckRhdGEpOworICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koV2Vi
UGFnZSosIFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFJlZlB0cjxB
UEk6Ok9iamVjdD4mIHVzZXJEYXRhKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmgK
aW5kZXggZTZjMmJkZmM3MDg2NjdkNTY1MmZkZGM1ZDA4YWY1Y2Q4NTk3ZmYwZi4uOTM3NWZmODE1
Yzg0OTE1YjEwMGE2YzUxZDA0OTVlMTkzNjdjYmMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxv
YWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oCkBAIC00MCw3ICs0MCw2IEBA
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBB
UElPYmplY3Q7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViRnJhbWU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKaW5kZXggOTdjNmY2ZWFlZmY4MWQxMTdh
MDhlOGVhNjE5NzVmOTQyNzgxNzU2NS4uOGQ5MTk1ZDNjOWJiYTJkNDEwODkyOTE4ZTAzNTNmMDgw
NWU3M2U4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAK
QEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6d2lsbFJ1
bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZSogcGFnZSwgY29uc3QgU3QKICAgICAgICAgbV9jbGll
bnQud2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1w
bCgpKSwgdG9BUEkoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQu
Y2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6Om1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIGNv
cmVIaXRUZXN0UmVzdWx0LCBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycywgUmVmUHRyPEFQ
SU9iamVjdD4mIHVzZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZSogcGFnZSwgY29uc3QgSGl0VGVzdFJlc3VsdCYg
Y29yZUhpdFRlc3RSZXN1bHQsIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBSZWZQdHI8
QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50Lm1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZVVJQ2xpZW50LmgKaW5kZXggNDdiNWU4OThkYzJlZDhjMGM4MzRlMzEyODY2MGNkYmJlYzMx
OTQzOS4uM2E4YTY0ZjkwNjY3Mjg5M2JkMTlkYWQ2MTUwMDcxNjYzNzlhOTFlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaApAQCAtMzIsNiArMzIsMTAgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBPYmplY3Q7Cit9CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEhpdFRlc3RSZXN1
bHQ7CkBAIC00MCw3ICs0NCw2IEBAIGNsYXNzIEludFJlY3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1jbGFzcyBBUElPYmplY3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7CiBj
bGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKQEAgLTUyLDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgd2lsbFJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiwgV2ViRnJh
bWUqKTsKICAgICB2b2lkIHdpbGxSdW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlKiwgY29uc3Qg
U3RyaW5nJiwgV2ViRnJhbWUqKTsKICAgICB2b2lkIHdpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KFdl
YlBhZ2UqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBXZWJGcmFtZSopOwotICAgIHZv
aWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQmLCBXZWJFdmVudDo6TW9kaWZpZXJzLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRh
dGEpOworICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZSosIGNvbnN0IFdl
YkNvcmU6OkhpdFRlc3RSZXN1bHQmLCBXZWJFdmVudDo6TW9kaWZpZXJzLCBSZWZQdHI8QVBJOjpP
YmplY3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKFdlYlBhZ2UqKTsKIAog
ICAgIGJvb2wgc2hvdWxkUGFpbnRDdXN0b21PdmVyaGFuZ0FyZWEoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgKaW5kZXggNDhhNmYwZmQ0NzQwMDgwYzQyYTZkNmMzM2M0
YzljY2MwOTIzZDczMi4uN2VmZWE0NWI4NTc5Y2E2Nzg5MDIyZWIyYjcwMjYyMzcyYmYzZGJlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgKQEAgLTM2LDcgKzM2LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCA6IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6
OlR5cGVCdW5kbGVTY3JpcHRXb3JsZD4geworY2xhc3MgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZCA6IHB1YmxpYyBBUEk6OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlQnVuZGxlU2NyaXB0
V29ybGQ+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkPiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkPiBnZXRPckNyZWF0ZShXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgKaW5kZXggNzBh
ZjVlNWY4ZDY1ODdkYWQ5YTZlYWQwNjNjOTI4ZTBlNzcxNmI0Yi4uZTkzMzMzM2I0ZjI1MzY2MDQ2
NjVjMWI4M2NjNzQzOGIyYmUyZTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVVzZXJNZXNzYWdlQ29kZXJzLmgKQEAgLTQ4LDM1ICs0OCwzNSBAQCBjbGFzcyBJbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlRW5jb2RlciA6IHB1YmxpYyBVc2VyTWVzc2FnZUVuY29kZXI8SW5qZWN0
ZWRCdW5kbAogcHVibGljOgogICAgIHR5cGVkZWYgVXNlck1lc3NhZ2VFbmNvZGVyPEluamVjdGVk
QnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyPiBCYXNlOwogCi0gICAgSW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUVuY29kZXIoQVBJT2JqZWN0KiByb290KSAKKyAgICBJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2RlcihBUEk6Ok9iamVjdCogcm9vdCkgCiAgICAgICAgIDogQmFzZShyb290KQog
ICAgIHsKICAgICB9CiAKICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgewotICAgICAgICBBUElPYmplY3Q6OlR5cGUgdHlwZSA9IEFQ
SU9iamVjdDo6VHlwZU51bGw7CisgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlIHR5cGUgPSBBUEk6
Ok9iamVjdDo6VHlwZU51bGw7CiAgICAgICAgIGlmIChiYXNlRW5jb2RlKGVuY29kZXIsIHR5cGUp
KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAg
ICBjYXNlIEFQSU9iamVjdDo6VHlwZUJ1bmRsZVBhZ2U6IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9i
amVjdDo6VHlwZUJ1bmRsZVBhZ2U6IHsKICAgICAgICAgICAgIFdlYlBhZ2UqIHBhZ2UgPSBzdGF0
aWNfY2FzdDxXZWJQYWdlKj4obV9yb290KTsKICAgICAgICAgICAgIGVuY29kZXIgPDwgcGFnZS0+
cGFnZUlEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFQ
SU9iamVjdDo6VHlwZUJ1bmRsZUZyYW1lOiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5
cGVCdW5kbGVGcmFtZTogewogICAgICAgICAgICAgV2ViRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nh
c3Q8V2ViRnJhbWUqPihtX3Jvb3QpOwogICAgICAgICAgICAgZW5jb2RlciA8PCBmcmFtZS0+ZnJh
bWVJRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBUElP
YmplY3Q6OlR5cGVCdW5kbGVQYWdlR3JvdXA6IHsKKyAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6
VHlwZUJ1bmRsZVBhZ2VHcm91cDogewogICAgICAgICAgICAgV2ViUGFnZUdyb3VwUHJveHkqIHBh
Z2VHcm91cCA9IHN0YXRpY19jYXN0PFdlYlBhZ2VHcm91cFByb3h5Kj4obV9yb290KTsKICAgICAg
ICAgICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwLT5wYWdlR3JvdXBJRCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIGNhc2UgQVBJT2Jq
ZWN0OjpUeXBlT2JqQ09iamVjdEdyYXBoOiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5
cGVPYmpDT2JqZWN0R3JhcGg6IHsKICAgICAgICAgICAgIE9iakNPYmplY3RHcmFwaCogb2JqZWN0
R3JhcGggPSBzdGF0aWNfY2FzdDxPYmpDT2JqZWN0R3JhcGgqPihtX3Jvb3QpOwogICAgICAgICAg
ICAgZW5jb2RlciA8PCBJbmplY3RlZEJ1bmRsZU9iakNPYmplY3RHcmFwaEVuY29kZXIob2JqZWN0
R3JhcGgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05OCw0MSArOTgsNDEgQEAgY2xhc3MgSW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIgOiBwdWJsaWMgVXNlck1lc3NhZ2VEZWNvZGVy
PEluamVjdGVkQnVuZGwKIHB1YmxpYzoKICAgICB0eXBlZGVmIFVzZXJNZXNzYWdlRGVjb2RlcjxJ
bmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRGVjb2Rlcj4gQmFzZTsKIAotICAgIEluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VEZWNvZGVyKFJlZlB0cjxBUElPYmplY3Q+JiByb290KQorICAgIEluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyKFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJvb3QpCiAg
ICAgICAgIDogQmFzZShyb290KQogICAgIHsKICAgICB9CiAKLSAgICBJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlRGVjb2RlcihJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRGVjb2RlciYsIFJlZlB0
cjxBUElPYmplY3Q+JiByb290KQorICAgIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVy
KEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYg
cm9vdCkKICAgICAgICAgOiBCYXNlKHJvb3QpCiAgICAgewogICAgIH0KIAogICAgIHN0YXRpYyBi
b29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VEZWNvZGVyJiBjb2RlcikKICAgICB7Ci0gICAgICAgIEFQSU9iamVjdDo6
VHlwZSB0eXBlID0gQVBJT2JqZWN0OjpUeXBlTnVsbDsKKyAgICAgICAgQVBJOjpPYmplY3Q6OlR5
cGUgdHlwZSA9IEFQSTo6T2JqZWN0OjpUeXBlTnVsbDsKICAgICAgICAgaWYgKCFCYXNlOjpiYXNl
RGVjb2RlKGRlY29kZXIsIGNvZGVyLCB0eXBlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBpZiAoY29kZXIubV9yb290IHx8IHR5cGUgPT0gQVBJT2JqZWN0OjpUeXBlTnVs
bCkKKyAgICAgICAgaWYgKGNvZGVyLm1fcm9vdCB8fCB0eXBlID09IEFQSTo6T2JqZWN0OjpUeXBl
TnVsbCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIHN3aXRjaCAodHlwZSkg
ewotICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVBhZ2U6IHsKKyAgICAgICAgY2FzZSBBUEk6
Ok9iamVjdDo6VHlwZVBhZ2U6IHsKICAgICAgICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKICAgICAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFnZUlEKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBXZWJQcm9jZXNzOjpzaGFyZWQo
KS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICBjYXNlIEFQSU9iamVjdDo6VHlwZUZyYW1lOiB7CisgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6
OlR5cGVGcmFtZTogewogICAgICAgICAgICAgdWludDY0X3QgZnJhbWVJRDsKICAgICAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVJRCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgY29kZXIubV9yb290ID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2Vi
RnJhbWUoZnJhbWVJRCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBj
YXNlIEFQSU9iamVjdDo6VHlwZVBhZ2VHcm91cDogeworICAgICAgICBjYXNlIEFQSTo6T2JqZWN0
OjpUeXBlUGFnZUdyb3VwOiB7CiAgICAgICAgICAgICBXZWJQYWdlR3JvdXBEYXRhIHBhZ2VHcm91
cERhdGE7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhZ2VHcm91cERhdGEpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAg
ICAgY2FzZSBBUElPYmplY3Q6OlR5cGVPYmpDT2JqZWN0R3JhcGg6IHsKKyAgICAgICAgY2FzZSBB
UEk6Ok9iamVjdDo6VHlwZU9iakNPYmplY3RHcmFwaDogewogICAgICAgICAgICAgUmVmUHRyPE9i
akNPYmplY3RHcmFwaD4gb2JqZWN0R3JhcGg7CiAgICAgICAgICAgICBJbmplY3RlZEJ1bmRsZU9i
akNPYmplY3RHcmFwaERlY29kZXIgb2JqZWN0R3JhcGhEZWNvZGVyKG9iamVjdEdyYXBoLCAmV2Vi
UHJvY2Vzczo6c2hhcmVkKCkpOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvYmpl
Y3RHcmFwaERlY29kZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbQppbmRleCAx
MzRlN2QwODE4ODdmODkxYWE4MmE0YTQwNDU2OTNjMzk2YzhjMzA5Li5jYzI4MzUxYWQ3OWE2MDE5
MGM1MWQ5MTRhNjdlNWUxMDNkYzA2MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1h
Yy5tbQpAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLWJvb2wgSW5qZWN0ZWRCdW5kbGU6OmxvYWQoQVBJT2JqZWN0KiBpbml0
aWFsaXphdGlvblVzZXJEYXRhKQorYm9vbCBJbmplY3RlZEJ1bmRsZTo6bG9hZChBUEk6Ok9iamVj
dCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKIHsKICAgICBpZiAobV9zYW5kYm94RXh0ZW5zaW9u
KSB7CiAgICAgICAgIGlmICghbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lUGVybWFuZW50bHko
KSkgewpAQCAtMTA5LDcgKzEwOSw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGU6OmxvYWQoQVBJT2Jq
ZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKQogCiAgICAgaWYgKFtpbnN0YW5jZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVnSW46aW5pdGlhbGl6ZVdpdGhPYmpl
Y3Q6KV0pIHsKICAgICAgICAgUmV0YWluUHRyPGlkPiBvYmpDSW5pdGlhbGl6YXRpb25Vc2VyRGF0
YTsKLSAgICAgICAgaWYgKGluaXRpYWxpemF0aW9uVXNlckRhdGEgJiYgaW5pdGlhbGl6YXRpb25V
c2VyRGF0YS0+dHlwZSgpID09IEFQSU9iamVjdDo6VHlwZU9iakNPYmplY3RHcmFwaCkKKyAgICAg
ICAgaWYgKGluaXRpYWxpemF0aW9uVXNlckRhdGEgJiYgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YS0+
dHlwZSgpID09IEFQSTo6T2JqZWN0OjpUeXBlT2JqQ09iamVjdEdyYXBoKQogICAgICAgICAgICAg
b2JqQ0luaXRpYWxpemF0aW9uVXNlckRhdGEgPSBzdGF0aWNfY2FzdDxPYmpDT2JqZWN0R3JhcGgq
Pihpbml0aWFsaXphdGlvblVzZXJEYXRhKS0+cm9vdE9iamVjdCgpOwogICAgICAgICBbaW5zdGFu
Y2Ugd2ViUHJvY2Vzc1BsdWdJbjpbV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciBfc2hhcmVk
XSBpbml0aWFsaXplV2l0aE9iamVjdDpvYmpDSW5pdGlhbGl6YXRpb25Vc2VyRGF0YS5nZXQoKV07
CiAgICAgfSBlbHNlIGlmIChbaW5zdGFuY2UgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3
ZWJQcm9jZXNzUGx1Z0luSW5pdGlhbGl6ZTopXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCmluZGV4IGU4ZjhkMmI0
YTkwZGJmMGRhNDI1MzI1ZDc0ZjdmMGY3ZGRjNmNiODkuLjQyNTQwMmRhYjBlYzY2MmMyMDA0N2Y1
MTBmYWU3MDZiMDBkMjdmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCB2b2lk
IFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6aW52YWxpZGF0ZSgpCiAKIC8vIFdlYkNvbm5lY3Rp
b24KIAotdm9pZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmVuY29kZU1lc3NhZ2VCb2R5KENv
cmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkK
K3ZvaWQgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOjplbmNvZGVNZXNzYWdlQm9keShDb3JlSVBD
OjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIHsK
ICAgICBlbmNvZGVyIDw8IEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKG1lc3NhZ2VC
b2R5KTsKIH0KIAotYm9vbCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmRlY29kZU1lc3NhZ2VC
b2R5KENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPEFQSU9iamVjdD4m
IG1lc3NhZ2VCb2R5KQorYm9vbCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmRlY29kZU1lc3Nh
Z2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiYgbWVzc2FnZUJvZHkpCiB7CiAgICAgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29k
ZXIgbWVzc2FnZUJvZHlEZWNvZGVyKG1lc3NhZ2VCb2R5KTsKICAgICByZXR1cm4gZGVjb2Rlci5k
ZWNvZGUobWVzc2FnZUJvZHlEZWNvZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5oCmluZGV4IDJhOTEzMWQ3NDAxNjNiMDQ5
OWE5NWMzNjE3ODhhMTkzYWE1ODBkMmYuLjE3NjA5YTc3YjNhNTkyZDYwOTNmODZiZDk3NjA1MmVl
MGQ1OWMwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVj
dGlvblRvVUlQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9VSVByb2Nlc3MuaApAQCAtNDIsOCArNDIsOCBAQCBwcml2YXRlOgogICAgIFdlYkNv
bm5lY3Rpb25Ub1VJUHJvY2VzcyhXZWJQcm9jZXNzKik7CiAKICAgICAvLyBXZWJDb25uZWN0aW9u
Ci0gICAgdmlydHVhbCB2b2lkIGVuY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciYsIEFQSU9iamVjdCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVNZXNz
YWdlQm9keShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImLCBSZWZQdHI8QVBJT2JqZWN0PiYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVNZXNzYWdlQm9keShDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXImLCBBUEk6Ok9iamVjdCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBk
ZWNvZGVNZXNzYWdlQm9keShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImLCBSZWZQdHI8QVBJOjpP
YmplY3Q+JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGhhc1ZhbGlkQ29ubmVjdGlvbigp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gQ29yZUlQQzo6TWVzc2FnZVNlbmRlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCmluZGV4IGYyNTQyZTAxYTllYzk0MzU3Y2Y4ZGM4ZTRiMzQ5Njk1Yzgy
ZGRhZTQuLmUyY2VlOGFkMzg3Njk5Mjg4YjBiYzgxYzkzYzBlMjdjNzA3NjYyODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKQEAgLTU1Miw3ICs1NTIsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6c2Nyb2xsYmFyc01vZGVEaWRDaGFuZ2UoKSBjb25zdAogCiB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJl
c3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykKIHsKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1
c2VyRGF0YTsKKyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCiAgICAgLy8gTm90
aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVu
dCgpLm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KG1fcGFnZSwgaGl0VGVzdFJlc3VsdCwgc3RhdGlj
X2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4obW9kaWZpZXJGbGFncyksIHVzZXJEYXRhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMDcxYzFiMDc1OWM1YTUxNjMzODk2
NmM0ZDQ4YWZjNzRkZDBjZjhjNC4uMDllNjFhYmVmZTZjZDcyNjE3MTdlNGI2YTdiMTM0M2UzZjQ3
ODJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEzNiw3ICsxMzYs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkZXRhY2hlZEZyb21QYXJlbnQyKCkKICAg
ICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxBUElPYmplY3Q+
IHVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKICAgICAvLyBO
b3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2Fk
ZXJDbGllbnQoKS5kaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkod2ViUGFnZSwgbV9mcmFtZSwg
dXNlckRhdGEpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkKIAog
ICAgIERvY3VtZW50TG9hZGVyKiBwcm92aXNpb25hbExvYWRlciA9IG1fZnJhbWUtPmNvcmVGcmFt
ZSgpLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCk7CiAgICAgY29uc3QgU3Ry
aW5nJiB1cmwgPSBwcm92aXNpb25hbExvYWRlci0+dXJsKCkuc3RyaW5nKCk7Ci0gICAgUmVmUHRy
PEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsK
IAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICB3ZWJQYWdlLT5pbmplY3Rl
ZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIHVzZXJEYXRhKTsKQEAgLTMxMiw3ICsz
MTIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUxvY2F0
aW9uV2l0aGluUGFnZSgpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVz
ZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIHdlYlBhZ2Ut
PmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25BbmNob3JOYXZp
Z2F0aW9uLCB1c2VyRGF0YSk7CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkKICAgICBpZiAoIXdlYlBh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwor
ICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1
bmRsZSBjbGllbnQuCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5k
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgU2FtZURv
Y3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVB1c2gsIHVzZXJEYXRhKTsKQEAgLTM0Miw3ICsz
NDIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlcGxhY2VTdGF0
ZVdpdGhpblBhZ2UoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2Vy
RGF0YTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICB3ZWJQYWdlLT5p
bmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRl
UmVwbGFjZSwgdXNlckRhdGEpOwpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCkKICAgICBpZiAoIXdlYlBh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwor
ICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1
bmRsZSBjbGllbnQuCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5k
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgU2FtZURv
Y3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVBvcCwgdXNlckRhdGEpOwpAQCAtMzkzLDcgKzM5
Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKQogCiAgICAgRG9jdW1lbnRMb2FkZXIqIHByb3Zpc2lvbmFsTG9hZGVyID0gbV9m
cmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKTsK
ICAgICBjb25zdCBTdHJpbmcmIHVybCA9IHByb3Zpc2lvbmFsTG9hZGVyLT51cmwoKS5zdHJpbmco
KTsKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICBSZWZQdHI8QVBJOjpPYmpl
Y3Q+IHVzZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIHdl
YlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CkBAIC00MTAsNyArNDEwLDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6
Ok9iamVjdD4gdXNlckRhdGE7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAg
ICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCkBAIC00MzIsNyArNDMyLDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UgPSBtX2Zy
YW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsK
LSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+
IHVzZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIHdlYlBh
Z2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkQ29tbWl0TG9hZEZvckZyYW1lKHdl
YlBhZ2UsIG1fZnJhbWUsIHVzZXJEYXRhKTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVz
b3VyY2VFcnJvciYgZQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2Vy
RGF0YTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICB3ZWJQYWdlLT5p
bmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJy
b3JGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCBlcnJvciwgdXNlckRhdGEpOwpAQCAtNDczLDcg
KzQ3Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICBSZWZQdHI8QVBJ
OjpPYmplY3Q+IHVzZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50Lgog
ICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkRmFpbExvYWRXaXRo
RXJyb3JGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCBlcnJvciwgdXNlckRhdGEpOwpAQCAtNDky
LDcgKzQ5Miw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNo
RG9jdW1lbnRMb2FkKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNl
ckRhdGE7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgd2ViUGFnZS0+
aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkKICAgICBpZiAoIXdl
YlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRh
OworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKICAgICAvLyBOb3RpZnkgdGhl
IGJ1bmRsZSBjbGllbnQuCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQo
KS5kaWRGaW5pc2hMb2FkRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgdXNlckRhdGEpOwpAQCAt
NTQxLDcgKzU0MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5
b3V0KExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0
cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKICAgICBpZiAobWlsZXN0b25lcyAmIERpZEZpcnN0
TGF5b3V0KSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgcmVtb3Zpbmcg
dGhlIG9sZCBkaWRGaXJzdExheW91dCBBUEkgc2luY2UgdGhpcyBpcyBkb2luZyBkb3VibGUgZHV0
eSB3aXRoIHRoZQpAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsK
KyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRoZSBi
dW5kbGUgY2xpZW50LgogICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQ
YWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclJlc3BvbnNl
KHdlYlBhZ2UsIG1fZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCB1c2VyRGF0YSk7CkBAIC02NTgs
NyArNjU4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGkKICAgICBpZiAoIXdlYlBhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFJl
ZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uPiBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246
OmNyZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUpOwogCkBAIC02ODgs
NyArNjg4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9i
amVjdD4gdXNlckRhdGE7CiAKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uPiBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShtX2Zy
YW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUpOwogCkBAIC03MjQsNyArNzI0LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGlj
eShjb25zdCBSZXNvdXJjZUVycm9yJgogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiB1c2VyRGF0YTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICB3
ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLnVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5KHdlYlBhZ2UsIG1fZnJhbWUsIGVycm9yLCB1c2VyRGF0YSk7CkBAIC03NjYsNyArNzY2LDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVMKIAogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+PiYgdmFsdWVzID0gZm9ybVN0YXRlLT50ZXh0RmllbGRWYWx1ZXMoKTsK
IAotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9iamVj
dD4gdXNlckRhdGE7CiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KCkud2ls
bFN1Ym1pdEZvcm0od2ViUGFnZSwgZm9ybSwgbV9mcmFtZSwgc291cmNlRnJhbWUsIHZhbHVlcywg
dXNlckRhdGEpOwogCiAKQEAgLTk1MCw3ICs5NTAsNyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0CiAgICAg
fQogCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbT4gYnVuZGxl
SXRlbSA9IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKGl0ZW0pOwot
ICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4g
dXNlckRhdGE7CiAKICAgICAvLyBBc2sgdGhlIGJ1bmRsZSBjbGllbnQgZmlyc3QKICAgICBib29s
IHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVM
b2FkZXJDbGllbnQoKS5zaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh3ZWJQYWdlLCBidW5k
bGVJdGVtLmdldCgpLCB1c2VyRGF0YSk7CkBAIC05NzksNyArOTc5LDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpCiAgICAgaWYgKCF3ZWJQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsK
KyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCiAgICAgd2ViUGFnZS0+aW5qZWN0
ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUo
d2ViUGFnZSwgbV9mcmFtZSwgdXNlckRhdGEpOwogCkBAIC05OTIsNyArOTkyLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgVVJMJikKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNl
ckRhdGE7CiAKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJ1
bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIHVzZXJEYXRhKTsKIApA
QCAtMTAwNSw3ICsxMDA1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0
WFNTKGNvbnN0IFVSTCYsIGJvb2wpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICBSZWZQdHI8QVBJOjpPYmpl
Y3Q+IHVzZXJEYXRhOwogCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQo
KS5kaWREZXRlY3RYU1NGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlQmFubmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZUJhbm5lci5oCmluZGV4IDBj
OGYzNGYzODgyNGVkYjdhYmUwNGZmYTE3NDVkYzgwZGRlNTM3OWUuLmQ0ODYwYmVkOTQwOGQ3M2M1
YzMxZjExYzBhZmUwMmJiZjJjMjY3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9QYWdlQmFubmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1BhZ2VCYW5uZXIuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgUGFnZUJhbm5lciA6IHB1YmxpYyBUeXBlZEFQ
SU9iamVjdDxBUElPYmplY3Q6OlR5cGVCdW5kbGVQYWdlQmFubmVyPiB7CitjbGFzcyBQYWdlQmFu
bmVyIDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVCdW5kbGVQYWdl
QmFubmVyPiB7CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgTm90U2V0LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaAppbmRleCA2
MWM2ODE4ZGQ2YjVmYmMwYzVjOTQ0MzY2OWY4Zjk5Njc5ZGM3MTg4Li4zMmJlN2NmNTE5MzFjM2Nh
NGMzMmE0MTJmODE1OGRiODYyYmI3MDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJQYWdlOwogCi1jbGFzcyBQYWdl
T3ZlcmxheSA6IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVCdW5kbGVQYWdl
T3ZlcmxheT4geworY2xhc3MgUGFnZU92ZXJsYXkgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxB
UEk6Ok9iamVjdDo6VHlwZUJ1bmRsZVBhZ2VPdmVybGF5PiB7CiBwdWJsaWM6CiAgICAgY2xhc3Mg
Q2xpZW50IHsKICAgICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAppbmRleCA1NmFlMDg0OWY1OTk5YTRhZmI4
OTYyMzdjODA1MWFmMDViY2IxN2E4Li5mNmM5NDBlN2FlNTU5YzQzZjllMGU1NzFmZGYwMmJkM2Mz
MjU0MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29udGV4dE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb250ZXh0TWVudS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudTo6
c2hvdygpCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiBtZW51SXRlbXM7Ci0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgUmVm
UHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBtZW51SXRlbXNXaXRoVXNlckRhdGEobWVu
dUl0ZW1zLCB1c2VyRGF0YSk7CiAgICAgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSB3ZWJIaXRUZXN0
UmVzdWx0RGF0YShjb250cm9sbGVyLmhpdFRlc3RSZXN1bHQoKSk7CiAKQEAgLTc5LDcgKzc5LDcg
QEAgdm9pZCBXZWJDb250ZXh0TWVudTo6aXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51
SXRlbURhdGEmIGl0ZW0pCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5jb250ZXh0TWVudUNvbnRy
b2xsZXIoKS5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZCgmY29yZUl0ZW0pOwogfQogCi12b2lkIFdl
YkNvbnRleHRNZW51OjptZW51SXRlbXNXaXRoVXNlckRhdGEoVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbURhdGE+ICZtZW51SXRlbXMsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkgY29uc3QK
K3ZvaWQgV2ViQ29udGV4dE1lbnU6Om1lbnVJdGVtc1dpdGhVc2VyRGF0YShWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YT4gJm1lbnVJdGVtcywgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRh
dGEpIGNvbnN0CiB7CiAgICAgQ29udGV4dE1lbnVDb250cm9sbGVyJiBjb250cm9sbGVyID0gbV9w
YWdlLT5jb3JlUGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKTsKIApAQCAtMTA0LDcgKzEw
NCw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnU6Om1lbnVJdGVtc1dpdGhVc2VyRGF0YShWZWN0b3I8
V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gJm1lbnVJCiBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVt
RGF0YT4gV2ViQ29udGV4dE1lbnU6Oml0ZW1zKCkgY29uc3QKIHsKICAgICBWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YT4gbWVudUl0ZW1zOwotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJE
YXRhOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAgICAgbWVudUl0ZW1zV2l0
aFVzZXJEYXRhKG1lbnVJdGVtcywgdXNlckRhdGEpOwogICAgIHJldHVybiBtZW51SXRlbXM7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4
dE1lbnUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVu
dS5oCmluZGV4IGI0ZmE2NmVlMzhjMzUwNTA1OTFiM2VkMjNkNjMwYjQxY2UzZmNkMmIuLjc1ZWQ3
ZTY5YWNiYjRlMTdmNzRkMDgyYTEwMWIzMjgwZWUwYmZmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJDb250ZXh0TWVudShXZWJQYWdlKik7Ci0g
ICAgdm9pZCBtZW51SXRlbXNXaXRoVXNlckRhdGEoVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURh
dGE+JiwgUmVmUHRyPEFQSU9iamVjdD4mKSBjb25zdDsKKyAgICB2b2lkIG1lbnVJdGVtc1dpdGhV
c2VyRGF0YShWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JikgY29uc3Q7CiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOGFmMjRhZGU3NjY2MDli
YzNmYmZkNzk4NTE3NjZiYTJmMjYyMGM4ZC4uZmIxZThiOGE0OWRhMmQzYmRjYzAzNjkxZTEyMzVh
YjU2OGRhMDVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4g
V2ViRnJhbWU6OmNoaWxkRnJhbWVzKCkKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBJ
bW11dGFibGVBcnJheTo6Y3JlYXRlKCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+
IHZlY3RvcjsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gdmVjdG9yOwogICAgIHZl
Y3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwogCiAgICAgZm9yIChGcmFtZSogY2hp
bGQgPSBtX2NvcmVGcmFtZS0+dHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPnRyZWUoKS5uZXh0U2libGluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IDk1N2YwYjU1ZmM4M2YyYmMwNDZjMzllYmY3NzdmMWMy
ZjM5MDg0OTIuLjgzYmYyZGUzM2RiMjJmNzg3NDAyMTlhNWRmMjEyYzc5NzFjZmFjYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC01NSw3ICs1
NSw3IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU7CiBjbGFzcyBJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViRnJhbWUgOiBwdWJs
aWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlQnVuZGxlRnJhbWU+IHsKK2NsYXNzIFdl
YkZyYW1lIDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVCdW5kbGVG
cmFtZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkZyYW1lPiBjcmVhdGVX
aXRoQ29yZU1haW5GcmFtZShXZWJQYWdlKiwgV2ViQ29yZTo6RnJhbWUqKTsKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJGcmFtZT4gY3JlYXRlU3ViZnJhbWUoV2ViUGFnZSosIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCA0Yzk2
NGYwZjUwM2I1ZDczZjAyNmQ2ZTllMDZmMjM1NjUwNjc0YjUxLi4wZWY0ZDI4MTFhMDdhYTNkNGQy
MDFjMjJkNDkzZWFkMjkyZTM4NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OwogY2xhc3MgV2ViUGFnZTsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOwogCi1jbGFzcyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMgVHlwZWRBUElPYmpl
Y3Q8QVBJT2JqZWN0OjpUeXBlQnVuZGxlSW5zcGVjdG9yPiB7CitjbGFzcyBXZWJJbnNwZWN0b3Ig
OiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZUJ1bmRsZUluc3BlY3Rv
cj4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gY3JlYXRl
KFdlYlBhZ2UqLCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQ3Mzg1OGQ2
ZWJiOGE4Zjg2NzU0ZGNiNWI5NmZjNjBkMWMzYjJlNmIuLjhiNjhiNjM4OWZhNDUzZWM4MWIwMDNh
Mzk5NGVkZTI0OGE4MWU0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTY2Miw3ICs2NjIsNyBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZUFy
cmF5PiBXZWJQYWdlOjp0cmFja2VkUmVwYWludFJlY3RzKCkKICAgICBpZiAoIXZpZXcpCiAgICAg
ICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6Y3JlYXRlKCk7CiAKLSAgICBWZWN0b3I8UmVmUHRy
PEFQSU9iamVjdD4+IHJlcGFpbnRSZWN0czsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0
Pj4gcmVwYWludFJlY3RzOwogICAgIHJlcGFpbnRSZWN0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHZpZXctPnRyYWNrZWRSZXBhaW50UmVjdHMoKS5zaXplKCkpOwogCiAgICAgZm9yIChjb25zdCBh
dXRvJiByZXBhaW50UmVjdCA6IHZpZXctPnRyYWNrZWRSZXBhaW50UmVjdHMoKSkKQEAgLTgzNSw3
ICs4MzUsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU2FuZGJveEV4dGVucwogewogICAgIFNlbmRTdG9wUmVzcG9u
c2l2ZW5lc3NUaW1lciBzdG9wcGVyKHRoaXMpOwogCi0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNl
ckRhdGE7CisgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBJbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlRGVjb2RlciB1c2VyTWVzc2FnZURlY29kZXIodXNlckRhdGEpOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodXNlck1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtODU0LDcgKzg1NCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYKIHsKICAgICBTZW5k
U3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcih0aGlzKTsKIAotICAgIFJlZlB0cjxBUElP
YmplY3Q+IHVzZXJEYXRhOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAgICAg
SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIgdXNlck1lc3NhZ2VEZWNvZGVyKHVzZXJE
YXRhKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVzZXJNZXNzYWdlRGVjb2RlcikpCiAgICAg
ICAgIHJldHVybjsKQEAgLTEzMTgsNyArMTMxOCw3IEBAIHZvaWQgV2ViUGFnZTo6cG9zdEluamVj
dGVkQnVuZGxlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBDb3JlSVBDOjpNZXNz
CiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRy
PEFQSU9iamVjdD4gbWVzc2FnZUJvZHk7CisgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBtZXNzYWdl
Qm9keTsKICAgICBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlQm9keURl
Y29kZXIobWVzc2FnZUJvZHkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZUJvZHlE
ZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggMGQ0N2JmNmFiNDdjNWZkZTc0MTA0Yjc0MjUwNWVmNjU2ZjYx
ZmZhNy4uNGU4ZDI0Njg0MDgzMTkyNDIyNWY0ODQzNWEyZjhmNTExNTgzY2FmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTQsNyArMTU0LDcg
QEAgY2xhc3MgV2ViVG91Y2hFdmVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFBhZ2VPdmVy
bGF5Pj4gUGFnZU92ZXJsYXlMaXN0OwogCi1jbGFzcyBXZWJQYWdlIDogcHVibGljIFR5cGVkQVBJ
T2JqZWN0PEFQSU9iamVjdDo6VHlwZUJ1bmRsZVBhZ2U+LCBwdWJsaWMgQ29yZUlQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJQYWdl
IDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGVCdW5kbGVQYWdlPiwg
cHVibGljIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENvcmVJUEM6Ok1lc3NhZ2VT
ZW5kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2U+IGNyZWF0ZSh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2
aXJ0dWFsIH5XZWJQYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5oCmluZGV4IDg5MmY3MjBmNzkwZjMzMGZlMmJkOTFl
ZDYwNTU1MGQxZjdhNGQ0ODguLmQxZDc0NGI2YjcyZGVhMmQ4YjdhZmIwYzFmZTc2YjBlMWQ5N2Ux
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
R3JvdXBQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlR3JvdXBQcm94eS5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFBhZ2VHcm91cDsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlBhZ2VHcm91cFByb3h5IDogcHVibGljIFR5cGVk
QVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZUJ1bmRsZVBhZ2VHcm91cD4geworY2xhc3MgV2ViUGFn
ZUdyb3VwUHJveHkgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZUJ1
bmRsZVBhZ2VHcm91cD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VH
cm91cFByb3h5PiBjcmVhdGUoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYpOwogICAgIHZpcnR1YWwg
fldlYlBhZ2VHcm91cFByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAppbmRleCAzNDQ0MzQ3YThiYTI1YzUzM2U5NTI2MDUxNTZiNmY4YzY3MGYzODVhLi5jYWQ5
YWM1NmQ4YTVhNWQ5YTQ4NzVjMWM4NzllNmYxYjc2ZDI4ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIFdlYlByb2Nl
c3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZQogCiAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkuaW5zdGFsbCgpOwogCi0g
ICAgUmVmUHRyPEFQSU9iamVjdD4gaW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
OworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gaW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVz
ZXJEYXRhOwogICAgIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNv
ZGVyKGluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTk4Miw3ICs5
ODIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2UoY29uc3Qg
Q29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bWVzc2FnZU5hbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiBt
ZXNzYWdlQm9keTsKKyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IG1lc3NhZ2VCb2R5OwogICAgIElu
amVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VCb2R5RGVjb2RlcihtZXNzYWdl
Qm9keSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlQm9keURlY29kZXIpKQogICAg
ICAgICByZXR1cm47Cg==
</data>
<flag name="review"
          id="239769"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>