<?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>233549</bug_id>
          
          <creation_ts>2021-11-28 23:57:52 -0800</creation_ts>
          <short_desc>[WebGPU] Delete ObjectRegistry in favor of ObjectHeap</short_desc>
          <delta_ts>2021-11-29 12:35:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1818139</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-28 23:57:52 -0800</bug_when>
    <thetext>[WebGPU] Delete ObjectRegistry in favor of ObjectHeap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818140</commentid>
    <comment_count>1</comment_count>
      <attachid>445254</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-29 00:13:37 -0800</bug_when>
    <thetext>Created attachment 445254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818299</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-29 10:38:12 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 445254 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818407</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-29 12:34:04 -0800</bug_when>
    <thetext>Committed r286256 (244619@main): &lt;https://commits.webkit.org/244619@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818408</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-29 12:35:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/85830064&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445254</attachid>
            <date>2021-11-29 00:13:37 -0800</date>
            <delta_ts>2021-11-29 10:38:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233549-20211129001336.patch</filename>
            <type>text/plain</type>
            <size>185012</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFkOGU2ODgwZjA1NTk4MTZh
NDcwZDc1NTA1YjE4OWVmMTkyYTY4NTQuLmFiN2Q5M2Q0YzdhZjcxM2FlYzM3M2U4MzI4YmFkZjY3
MjM1NGZjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjE0IEBACisyMDIxLTExLTI4ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRGVs
ZXRlIE9iamVjdFJlZ2lzdHJ5IGluIGZhdm9yIG9mIE9iamVjdEhlYXAKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzU0OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9yaWdpbmFsbHksIEkgbWFkZSB0aGVz
ZSB0d28gY2xhc3NlcyBkaXN0aW5jdCBiZWNhdXNlIEkgdGhvdWdodCB0aGVyZSB3ZXJlIHR3byBz
ZXBhcmF0ZSB1c2UgY2FzZXM6CisgICAgICAgIDEuIE9iamVjdEhlYXAgaXMgdGhlIG9iamVjdCB0
aGF0IG93bnMgYWxsIFdlYkdQVSBvYmplY3RzIGluIHRoZSBHUFUgcHJvY2VzcworICAgICAgICAy
LiBPYmplY3RSZWdpc3RyeSBpcyB0aGUgb2JqZWN0IHRoYXQgY2FuIG1hcCBiZXR3ZWVuIFdlYkdQ
VUlkZW50aWZpZXJzIGFuZCB0aGVpciBmdWxsIG9iamVjdHMuIFRoaXMKKyAgICAgICAgICAgICAg
IGlzIG5lZWRlZCB3aGVuIHdlIHJlY2VpdmUgYSBtZXNzYWdlIHRoYXQgY29udGFpbnMgYSBXZWJH
UFVJZGVudGlmaWVyLCBhbmQgd2UgbmVlZCB0byBsb29rIHVwCisgICAgICAgICAgICAgICBpdHMg
cmVwcmVzZW50ZWQgb2JqZWN0LgorCisgICAgICAgIFRoZSBvcmlnaW5hbCBpZGVhIHdhcyBmb3Ig
T2JqZWN0SGVhcCB0byBvd24gdGhlIG9iamVjdHMsIGFuZCBlYWNoIG9iamVjdCB3b3VsZCBob2xk
IGEgcmVmZXJlbmNlIHRvIHRoZQorICAgICAgICBzaGFyZWQgT2JqZWN0UmVnaXN0cnkuIEhvd2V2
ZXIsIHRoaXMgdHVybnMgb3V0IG5vdCB0byBiZSBuZWNlc3NhcnksIGJlY2F1c2UgbmV3IG9iamVj
dHMgYXJlIGNyZWF0ZWQKKyAgICAgICAgdmlhIGNyZWF0aW9uIHJvdXRpbmVzIG9uIF9vdGhlciBv
YmplY3RzXy4gVGhpcyBtZWFucyB0aGF0IGV2ZXJ5IG9iamVjdCBpcyBnb2luZyB0byBoYXZlIHRv
IGtub3cgYWJvdXQKKyAgICAgICAgaXRzIG93bmluZyBPYmplY3RIZWFwIGFueXdheSAodG8gYmUg
YWJsZSB0byBhZGQgbmV3bHkgY3JlYXRlZCBvYmplY3RzIHRvIGl0KSwgc28gdGhlcmUgYXJlbid0
IGFueQorICAgICAgICBzZXBhcmF0aW9uLW9mLWNvbmNlcm5zIGJlbmVmaXRzIHRvIGJlIGhhZC4g
SWYgdGhlIE9iamVjdEhlYXAgb3duZWQgYWxsIHRoZSBvYmplY3RzIGJ5IGp1c3Qgc3RvcmluZwor
ICAgICAgICB0aGVtIGluIGEgSGFzaE1hcDxXZWJHUFVJZGVudGlmaWVyLCBSZWY8T2JqZWN0Pj4g
bWFwLCB0aGF0IHdvdWxkIGFsbG93IGl0IHRvIGRvIGRvdWJsZSBkdXR5IC0gaXQgY291bGQKKyAg
ICAgICAgb3duIGFsbCB0aGUgb2JqZWN0cyBfYW5kXyBiZSBhYmxlIHRvIGxvb2sgdXAgd2hpY2gg
V2ViR1BVSWRlbnRpZmllciBpcyBhc3NvY2lhdGVkIHdpdGggd2hpY2ggb2JqZWN0LgorICAgICAg
ICBTbyB0aGVyZSdzIG5vIHBvaW50IGluIGhhdmluZyB0d28gZGlzdGluY3Qgb2JqZWN0cywgd2hl
biBqdXN0IG9uZSBpcyBzdWZmaWNpZW50LgorCisgICAgICAgIFNvLCBhY2NlcHRpbmcgdGhhdCwg
dGhpcyBwYXRjaCBpcyBmYWlybHkgc3RyYWlnaHRmb3J3YXJkLCBkZXNwaXRlIGJlaW5nIGxhcmdl
OgorICAgICAgICAtIEJlZm9yZSwgd2Ugd2VyZSBkb2luZyBtX29iamVjdFJlZ2lzdHJ5LmFkZE9i
amVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZykgYW5kCisgICAgICAgICAgICAgIG1fb2JqZWN0
SGVhcC5hZGRPYmplY3QocmVtb3RlUmVuZGVyUGFzc0VuY29kZXIpLiBOb3csIHdlIGp1c3QgZG8K
KyAgICAgICAgICAgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVS
ZW5kZXJQYXNzRW5jb2RlcikgaW5zdGVhZC4KKyAgICAgICAgLSBjb252ZXJ0RnJvbUJhY2tpbmco
KSBjYWxscyBnbyBmcm9tIG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKCkgdG8K
KyAgICAgICAgICAgICAgbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZygpLgorICAgICAg
ICAtIG9iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdCgpIGNhbGxzIGNhbiBiZSBlbnRpcmVseSBk
ZWxldGVkLCBiZWNhdXNlIHRoZSBPYmplY3RIZWFwIGFscmVhZHkga25vd3MKKyAgICAgICAgICAg
ICAgd2hlbiBvYmplY3RzIGFyZSBkZWxldGVkLCBiZWNhdXNlIGl0IG93bnMgdGhlbSBpbiB0aGUg
Zmlyc3QgcGxhY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8g
YmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQWRhcHRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUFkYXB0ZXI6OlJlbW90
ZUFkYXB0ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBZGFwdGVyOjpyZXF1ZXN0RGV2aWNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQWRhcHRlcjo6flJlbW90ZUFkYXB0ZXIpOiBEZWxl
dGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVCaW5kR3JvdXA6OlJlbW90ZUJpbmRHcm91cCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUJpbmRHcm91cDo6flJlbW90ZUJpbmRHcm91cCk6IERl
bGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdy
b3VwLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdy
b3VwTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0OjpS
ZW1vdGVCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVCaW5kR3JvdXBM
YXlvdXQ6On5SZW1vdGVCaW5kR3JvdXBMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUJ1ZmZlcjo6UmVtb3RlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQnVmZmVyOjp+UmVtb3RlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ29tbWFuZEJ1ZmZlcjo6UmVtb3RlQ29tbWFuZEJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNvbW1hbmRCdWZmZXI6On5SZW1vdGVDb21tYW5kQnVmZmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVy
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVu
Y29kZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6UmVtb3Rl
Q29tbWFuZEVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6
YmVnaW5SZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29kZXI6
OmJlZ2luQ29tcHV0ZVBhc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rl
cjo6Y29weUJ1ZmZlclRvQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVu
Y29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21t
YW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpmaWxsQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ29tbWFuZEVuY29kZXI6OndyaXRlVGltZXN0YW1wKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ29tbWFuZEVuY29kZXI6OnJlc29sdmVRdWVyeVNldCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNvbW1hbmRFbmNvZGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21t
YW5kRW5jb2Rlcjo6flJlbW90ZUNvbW1hbmRFbmNvZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6UmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyOjpzZXRQaXBlbGluZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQYXNzRW5j
b2Rlcjo6ZGlzcGF0Y2hJbmRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2Rlcjo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjp+UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21wdXRlUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21w
dXRlUGlwZWxpbmU6OlJlbW90ZUNvbXB1dGVQaXBlbGluZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNvbXB1dGVQaXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjp+UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlw
ZWxpbmUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZp
Y2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OlJlbW90ZURldmljZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlRGV2aWNlOjpjcmVhdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNl
OjppbXBvcnRFeHRlcm5hbFRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6
OmNyZWF0ZUJpbmRHcm91cExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6
Y3JlYXRlUGlwZWxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNy
ZWF0ZUJpbmRHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlU2hh
ZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVDb21wdXRl
UGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRlclBp
cGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlw
ZWxpbmVBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlUmVuZGVy
UGlwZWxpbmVBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlQ29t
bWFuZEVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRl
ckJ1bmRsZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVF1
ZXJ5U2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjp+UmVtb3RlRGV2aWNlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZp
Y2UuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5h
bFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVFeHRlcm5hbFRleHR1cmU6OlJl
bW90ZUV4dGVybmFsVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUV4dGVybmFsVGV4
dHVyZTo6flJlbW90ZUV4dGVybmFsVGV4dHVyZSk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR1BVOjpSZW1vdGVHUFUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OnJl
cXVlc3RBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjp+UmVtb3RlR1BVKTog
RGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxh
eW91dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVBpcGVsaW5lTGF5b3V0OjpSZW1vdGVQ
aXBlbGluZUxheW91dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVBpcGVsaW5lTGF5b3V0Ojp+
UmVtb3RlUGlwZWxpbmVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0Lmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVRdWVyeVNldDo6UmVtb3RlUXVlcnlTZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVR
dWVyeVNldDo6flJlbW90ZVF1ZXJ5U2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UXVldWU6OlJlbW90ZVF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUXVldWU6OnN1Ym1p
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjp3cml0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjp3cml0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVRdWV1ZTo6Y29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVRdWV1ZTo6flJlbW90ZVF1ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlckJ1bmRsZTo6UmVtb3RlUmVuZGVyQnVuZGxlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyQnVuZGxlOjp+UmVtb3RlUmVuZGVyQnVuZGxlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXI6OnNldFBpcGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3SW5kaXJlY3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3SW5kZXhlZEluZGlyZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0QmluZEdyb3VwKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZmluaXNoKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6flJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXIpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGly
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRl
eGVkSW5kaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
c2V0QmluZEdyb3VwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6
OnNldEJsZW5kQ29uc3RhbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyOjpleGVjdXRlQnVuZGxlcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjp+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIpOiBEZWxl
dGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBh
c3NFbmNvZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQaXBlbGlu
ZTo6UmVtb3RlUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQ
aXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyUGlwZWxpbmU6On5SZW1vdGVSZW5kZXJQaXBlbGluZSk6IERlbGV0ZWQuCisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlcjo6UmVtb3RlU2FtcGxlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNhbXBsZXI6On5SZW1vdGVTYW1wbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlU2hhZGVyTW9kdWxlOjpSZW1vdGVTaGFkZXJNb2R1bGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVTaGFkZXJNb2R1bGU6On5SZW1vdGVTaGFkZXJNb2R1bGUpOiBEZWxl
dGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1v
ZHVsZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0dXJlOjpSZW1vdGVUZXh0dXJlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZTo6Y3JlYXRlVmlldyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVRleHR1cmU6On5SZW1vdGVUZXh0dXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVUZXh0dXJlVmlldzo6UmVtb3RlVGV4dHVyZVZpZXcpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVUZXh0dXJlVmlldzo6flJlbW90ZVRleHR1cmVWaWV3KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmll
dy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhl
YXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmFkZE9iamVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0QWRhcHRlckZyb21CYWNr
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0QmluZEdy
b3VwRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNv
bnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQ
VTo6T2JqZWN0SGVhcDo6Y29udmVydEJ1ZmZlckZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0Q29tbWFuZEJ1ZmZlckZyb21CYWNraW5nKToK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0Q29tbWFuZEVuY29k
ZXJGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29u
dmVydENvbXB1dGVQYXNzRW5jb2RlckZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnREZXZpY2VGcm9tQmFja2lu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydEV4dGVybmFs
VGV4dHVyZUZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFw
Ojpjb252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRRdWV1ZUZyb21CYWNraW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0UmVuZGVyQnVuZGxlRW5j
b2RlckZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpj
b252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
Ok9iamVjdEhlYXA6OmNvbnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNraW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9t
QmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydFNh
bXBsZXJGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6
Y29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpPYmplY3RIZWFwOjpjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVhcC5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVPYmplY3RSZWdpc3RyeS5oOiBSZW1vdmVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHk6OmNyZWF0ZVJpbmdCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHk6OnN0b3JhZ2VDaGFuZ2Vk
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29u
dGV4dC5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTExLTI2ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJv
ICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIE9wdGlv
bnNXUEUuY21ha2UgYW5kIE5FV1MgZm9yIHRoZSAyLjM1LjEgcmVsZWFzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRl
ci5jcHAKaW5kZXggNDFiZGYxNjUyMDZiMDk2OTlhYjE1MzYyMWFkM2MyZWUxZTg2ODg0OC4uOWE1
MTgwNWRkMDdiMDUzMTNiOGMwYWY5NDA5MGExNDY5MDFiYmE2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIu
Y3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiUmVtb3RlRGV2aWNlLmgiCiAjaW5jbHVk
ZSAiV2ViR1BVRGV2aWNlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAu
aCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYkdQVVN1
cHBvcnRlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViR1BVU3VwcG9ydGVkTGltaXRzLmgiCiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+CkBAIC0zOSwzNCAr
MzgsMjcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUFkYXB0ZXI6OlJlbW90ZUFk
YXB0ZXIoUEFMOjpXZWJHUFU6OkFkYXB0ZXImIGFkYXB0ZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0
cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZUFkYXB0ZXI6OlJlbW90ZUFkYXB0ZXIoUEFM
OjpXZWJHUFU6OkFkYXB0ZXImIGFkYXB0ZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGFkYXB0ZXIp
Ci0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RI
ZWFwKG9iamVjdEhlYXApCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBt
X29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAK
LVJlbW90ZUFkYXB0ZXI6On5SZW1vdGVBZGFwdGVyKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5
LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlQWRhcHRlcjo6flJlbW90ZUFk
YXB0ZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQWRhcHRlcjo6cmVxdWVzdERldmljZShj
b25zdCBXZWJHUFU6OkRldmljZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkdQVTo6U3VwcG9y
dGVkRmVhdHVyZXMmJiwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmJik+JiYgY2FsbGJhY2spCiB7
Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0g
bV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQo
Y29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CiAg
ICAgICAgIGNhbGxiYWNrKHsgeyB9IH0sIHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX2JhY2tpbmctPnJlcXVlc3REZXZpY2UoKmNvbnZlcnRlZERlc2NyaXB0b3IsIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrT2JqZWN0SGVhcCA9IFdlYWtQdHI8V2ViR1BV
OjpPYmplY3RIZWFwPihtX29iamVjdEhlYXApLCBvYmplY3RSZWdpc3RyeSA9IG1fb2JqZWN0UmVn
aXN0cnksIGlkZW50aWZpZXJdIChSZWY8UEFMOjpXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UpIG11
dGFibGUgewotICAgICAgICBpZiAoIXdlYWtPYmplY3RIZWFwKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBhdXRvIHJlbW90ZURldmljZSA9IFJlbW90ZURldmljZTo6Y3JlYXRlKGRldmlj
ZSwgb2JqZWN0UmVnaXN0cnksICp3ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgICAg
IHdlYWtPYmplY3RIZWFwLT5hZGRPYmplY3QocmVtb3RlRGV2aWNlKTsKKyAgICBtX2JhY2tpbmct
PnJlcXVlc3REZXZpY2UoKmNvbnZlcnRlZERlc2NyaXB0b3IsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBvYmplY3RIZWFwID0gUmVmIHsgbV9vYmplY3RIZWFwIH0sIGlkZW50aWZpZXJd
IChSZWY8UEFMOjpXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UpIG11dGFibGUgeworICAgICAgICBh
dXRvIHJlbW90ZURldmljZSA9IFJlbW90ZURldmljZTo6Y3JlYXRlKGRldmljZSwgb2JqZWN0SGVh
cCwgaWRlbnRpZmllcik7CisgICAgICAgIG9iamVjdEhlYXAtPmFkZE9iamVjdChpZGVudGlmaWVy
LCByZW1vdGVEZXZpY2UpOwogICAgICAgICBjb25zdCBhdXRvJiBmZWF0dXJlcyA9IGRldmljZS0+
ZmVhdHVyZXMoKTsKICAgICAgICAgY29uc3QgYXV0byYgbGltaXRzID0gZGV2aWNlLT5saW1pdHMo
KTsKICAgICAgICAgY2FsbGJhY2soV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyB7IGZlYXR1cmVz
LmZlYXR1cmVzKCkgfSwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaApp
bmRleCAxZWEyYzEwMTg2ZTFiNmY4OGIwYTMyY2UwNDI3ODViZmMyOGFmMzJhLi5lZjEwZWRhMDdi
OTE0NjFhNjIyOGJmOTg3MDc4YWNlNDRmMzlkZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaApAQCAtNDEs
MzYgKzQxLDM2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIFdlYkdQVSB7CiBzdHJ1
Y3QgRGV2aWNlRGVzY3JpcHRvcjsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdp
c3RyeTsKIHN0cnVjdCBTdXBwb3J0ZWRGZWF0dXJlczsKIHN0cnVjdCBTdXBwb3J0ZWRMaW1pdHM7
CiB9CiAKIGNsYXNzIFJlbW90ZUFkYXB0ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQWRhcHRlcj4gY3Jl
YXRlKFBBTDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFwdGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVBZGFwdGVyPiBjcmVh
dGUoUEFMOjpXZWJHUFU6OkFkYXB0ZXImIGFkYXB0ZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQWRhcHRlcihhZGFwdGVyLCBvYmplY3RSZWdpc3RyeSwg
b2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVBZGFwdGVyKGFkYXB0ZXIsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIH5SZW1vdGVBZGFwdGVyKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIGZyaWVuZCBjbGFzcyBXZWJHUFU6Ok9iamVjdEhlYXA7
CiAKLSAgICBSZW1vdGVBZGFwdGVyKFBBTDo6V2ViR1BVOjpBZGFwdGVyJiwgV2ViR1BVOjpPYmpl
Y3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAg
IFJlbW90ZUFkYXB0ZXIoUEFMOjpXZWJHUFU6OkFkYXB0ZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAm
LCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUFkYXB0ZXIoY29uc3QgUmVtb3RlQWRh
cHRlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZUFkYXB0ZXIoUmVtb3RlQWRhcHRlciYmKSA9IGRl
bGV0ZTsKICAgICBSZW1vdGVBZGFwdGVyJiBvcGVyYXRvcj0oY29uc3QgUmVtb3RlQWRhcHRlciYp
ID0gZGVsZXRlOwogICAgIFJlbW90ZUFkYXB0ZXImIG9wZXJhdG9yPShSZW1vdGVBZGFwdGVyJiYp
ID0gZGVsZXRlOwogCisgICAgUEFMOjpXZWJHUFU6OkFkYXB0ZXImIGJhY2tpbmcoKSB7IHJldHVy
biBtX2JhY2tpbmc7IH0KKwogICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAg
dm9pZCByZXF1ZXN0RGV2aWNlKGNvbnN0IFdlYkdQVTo6RGV2aWNlRGVzY3JpcHRvciYsIFdlYkdQ
VUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJHUFU6OlN1cHBvcnRl
ZEZlYXR1cmVzJiYsIFdlYkdQVTo6U3VwcG9ydGVkTGltaXRzJiYpPiYmKTsKIAogICAgIFJlZjxQ
QUw6OldlYkdQVTo6QWRhcHRlcj4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0
cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhl
YXA7CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5k
R3JvdXAuY3BwCmluZGV4IDA4NWY0OTUzODRlM2VmM2NjNDRhNTMyYzU2ODg1YjQxOWZmNDE3NWQu
Ljg0OTU1MmQ0OWM2NGViMzMwNDY0ZGUzODQ5MjlkMmMwMDI3Yzc0NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJp
bmRHcm91cC5jcHAKQEAgLTI5LDI0ICsyOSwxOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3Vw
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVCaW5kR3JvdXA6OlJlbW90ZUJpbmRH
cm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsIFdlYkdQVTo6T2JqZWN0UmVn
aXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZUJpbmRHcm91cDo6UmVtb3RlQmluZEdy
b3VwKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRHcm91cCwgV2ViR1BVOjpPYmplY3RIZWFw
JiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tp
bmcoYmluZEdyb3VwKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAg
ICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2Jh
Y2tpbmcpOwogfQogCi1SZW1vdGVCaW5kR3JvdXA6On5SZW1vdGVCaW5kR3JvdXAoKQotewotICAg
IG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7Ci19CitSZW1vdGVC
aW5kR3JvdXA6On5SZW1vdGVCaW5kR3JvdXAoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQmlu
ZEdyb3VwOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oCmlu
ZGV4IGNlMTQwOGM2N2Q1NDgxMmQ5ZGQ0YzE3ZTYzZGQwYjBiMjQ2NzBmNWYuLjUwYWFkZjg3ZWZk
Yzg2M2NiNTdhZGQzYWIxMjI5M2JlYTg4NTFiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuaApAQCAt
NDAsMzQgKzQwLDM0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsK
IGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVt
b3RlQmluZEdyb3VwIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cD4gY3JlYXRlKFBBTDo6V2Vi
R1BVOjpCaW5kR3JvdXAmIGJpbmRHcm91cCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0
UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQmluZEdyb3VwPiBjcmVhdGUoUEFM
OjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZUJpbmRHcm91cChiaW5kR3JvdXAsIG9iamVjdFJlZ2lzdHJ5
LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZUJpbmRHcm91cChiaW5kR3JvdXAsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVCaW5kR3JvdXAoKTsKIAogcHJpdmF0ZToKLSAgICBm
cmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgZnJpZW5kIGNsYXNzIFdlYkdQVTo6T2Jq
ZWN0SGVhcDsKIAotICAgIFJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiwg
V2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50
aWZpZXIpOworICAgIFJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiwgV2Vi
R1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVCaW5kR3Jv
dXAoY29uc3QgUmVtb3RlQmluZEdyb3VwJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmluZEdyb3Vw
KFJlbW90ZUJpbmRHcm91cCYmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVCaW5kR3JvdXAmIG9wZXJh
dG9yPShjb25zdCBSZW1vdGVCaW5kR3JvdXAmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVCaW5kR3Jv
dXAmIG9wZXJhdG9yPShSZW1vdGVCaW5kR3JvdXAmJikgPSBkZWxldGU7CiAKKyAgICBQQUw6Oldl
YkdQVTo6QmluZEdyb3VwJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKICAgICB2
b2lkIGRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2UmLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYp
OwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXA+IG1fYmFja2luZzsKLSAgICBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0
SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQmluZEdyb3VwTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmNwcAppbmRleCAwYjE2ZmYyOTg3ZDE1
NDJhM2FhYTJhZWQwNjQyZWVhZjJlN2Q1MTkyLi5hOWE4OGEyNjhmYTVhOWJjYWVjMTE3MDhmMjEx
NzA2OTc1Yjc5NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuY3BwCkBAIC0y
OSwyNCArMjksMTggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJH
UFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dC5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpSZW1vdGVCaW5kR3JvdXBM
YXlvdXQoUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmluZEdyb3VwTGF5b3V0LCBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVCaW5kR3JvdXBM
YXlvdXQ6OlJlbW90ZUJpbmRHcm91cExheW91dChQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0
JiBiaW5kR3JvdXBMYXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGJpbmRHcm91cExheW91dCkK
LSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhl
YXAob2JqZWN0SGVhcCkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1f
b2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAot
UmVtb3RlQmluZEdyb3VwTGF5b3V0Ojp+UmVtb3RlQmluZEdyb3VwTGF5b3V0KCkKLXsKLSAgICBt
X29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlQmlu
ZEdyb3VwTGF5b3V0Ojp+UmVtb3RlQmluZEdyb3VwTGF5b3V0KCkgPSBkZWZhdWx0OwogCiB2b2lk
IFJlbW90ZUJpbmRHcm91cExheW91dDo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJp
bmRHcm91cExheW91dC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuaAppbmRleCAyOGQwYmU0YmI0MzkwODc1NWJiZjg5Mzhl
ZDIwOGU2N2ZkZmNmYzg3Li5mZGYzYzI0ODkwOGU0Y2M4MmE0MGM3MzQ1ZTVmOGZlZWY5MmIyZDU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUJpbmRHcm91cExheW91dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgKQEAgLTQwLDM0ICs0MCwzNCBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFw
OwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUJpbmRHcm91cExheW91
dCBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6
QmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkm
IG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cExheW91
dD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQmIGJpbmRHcm91cExheW91dCwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXBM
YXlvdXQoYmluZEdyb3VwTGF5b3V0LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRp
ZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXBMYXlv
dXQoYmluZEdyb3VwTGF5b3V0LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+UmVtb3RlQmluZEdyb3VwTGF5b3V0KCk7CiAKIHByaXZhdGU6Ci0gICAgZnJp
ZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIGZyaWVuZCBjbGFzcyBXZWJHUFU6Ok9iamVj
dEhlYXA7CiAKLSAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXQoUEFMOjpXZWJHUFU6OkJpbmRHcm91
cExheW91dCYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBX
ZWJHUFVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXQoUEFMOjpXZWJHUFU6
OkJpbmRHcm91cExheW91dCYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIp
OwogCiAgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFJlbW90ZUJpbmRHcm91cExheW91
dCYpID0gZGVsZXRlOwogICAgIFJlbW90ZUJpbmRHcm91cExheW91dChSZW1vdGVCaW5kR3JvdXBM
YXlvdXQmJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0JiBvcGVyYXRvcj0o
Y29uc3QgUmVtb3RlQmluZEdyb3VwTGF5b3V0JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmluZEdy
b3VwTGF5b3V0JiBvcGVyYXRvcj0oUmVtb3RlQmluZEdyb3VwTGF5b3V0JiYpID0gZGVsZXRlOwog
CisgICAgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmFja2luZygpIHsgcmV0dXJuIG1f
YmFja2luZzsgfQorCiAgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICB2b2lk
IHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5
b3V0PiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdp
c3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKICAgICBXZWJHUFVJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHAKaW5kZXggYzY2NGIz
ODM5OThiNzNjMmQ3Y2JjYTMxMmY1OWY5YjdlNGJkMjdkNy4uMTg5M2JhZGJlNGQ1MDVlNjlkOWVj
NWNmOWVjMzUzYTc3YTg3NTY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmNwcApAQCAtMjksMjMgKzI5LDE3
IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVh
cC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1SZW1vdGVCdWZmZXI6OlJlbW90ZUJ1ZmZlcihQQUw6OldlYkdQVTo6QnVmZmVyJiBi
dWZmZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90
ZUJ1ZmZlcjo6UmVtb3RlQnVmZmVyKFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgOiBtX2JhY2tpbmcoYnVmZmVyKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdp
c3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwgbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlm
aWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVCdWZmZXI6On5SZW1vdGVCdWZmZXIoKQotewot
ICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7Ci19CitSZW1v
dGVCdWZmZXI6On5SZW1vdGVCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQnVmZmVy
OjptYXBBc3luYyhQQUw6OldlYkdQVTo6TWFwTW9kZUZsYWdzIG1hcE1vZGVGbGFncywgc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpX
ZWJHUFU6OlNpemU2ND4gc2l6ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmKT4mJiBjYWxsYmFjaykKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5oCmlu
ZGV4IGE1ZmFkNWIyZWZkMDgxMzZjMDJjZWI4NTlmYWQzN2UyNWMzMjNmMzMuLjMwNmMwYzEzMmFh
MTQ1NDA3ZDQ3MjM3NTI1MTQ0YWI0ODRmY2YxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuaApAQCAtNDUsMjgg
KzQ1LDI5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNz
IE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlQnVm
ZmVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFJlbW90ZUJ1ZmZlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCdWZmZXIm
IGJ1ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAg
IHN0YXRpYyBSZWY8UmVtb3RlQnVmZmVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVm
ZmVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJ1ZmZl
cihidWZmZXIsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJ1ZmZlcihidWZmZXIsIG9iamVjdEhlYXAs
IGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVCdWZmZXIoKTsKIAog
cHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgZnJpZW5kIGNs
YXNzIFdlYkdQVTo6T2JqZWN0SGVhcDsKIAotICAgIFJlbW90ZUJ1ZmZlcihQQUw6OldlYkdQVTo6
QnVmZmVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdl
YkdQVUlkZW50aWZpZXIpOworICAgIFJlbW90ZUJ1ZmZlcihQQUw6OldlYkdQVTo6QnVmZmVyJiwg
V2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVCdWZm
ZXIoY29uc3QgUmVtb3RlQnVmZmVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQnVmZmVyKFJlbW90
ZUJ1ZmZlciYmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVCdWZmZXImIG9wZXJhdG9yPShjb25zdCBS
ZW1vdGVCdWZmZXImKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVCdWZmZXImIG9wZXJhdG9yPShSZW1v
dGVCdWZmZXImJikgPSBkZWxldGU7CiAKKyAgICBQQUw6OldlYkdQVTo6QnVmZmVyJiBiYWNraW5n
KCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKICAgICB2b2lkIGRpZFJlY2VpdmVTdHJlYW1NZXNz
YWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKIAogICAgIHZvaWQgbWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFncywgc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpX
ZWJHUFU6OlNpemU2ND4gc2l6ZUZvck1hcCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmKT4mJik7CkBAIC03Nyw3ICs3OCw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJH
UFU6OkJ1ZmZlcj4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2Jq
ZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CiAgICAg
V2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgYm9vbCBtX2lzTWFwcGVkIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuY3BwCmluZGV4IGE5YzZhMmI2ZTYwM2Y0
MDc4MGNhZWEwMDdiNTczYjJlNGQ2ZDRhMzUuLjdjMmE4N2NkMTRjOWJkY2MwNzAyZWViN2Q3Yzk1
NmUyNGUyNTgxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmNwcApAQCAtMjksMjQg
KzI5LDE4IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1SZW1vdGVDb21tYW5kQnVmZmVyOjpSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6
V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVDb21tYW5kQnVmZmVyOjpSZW1vdGVDb21t
YW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICA6IG1fYmFja2luZyhjb21tYW5kQnVmZmVyKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShv
YmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3Qo
bV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVDb21tYW5kQnVmZmVyOjp+UmVt
b3RlQ29tbWFuZEJ1ZmZlcigpCi17Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3Qo
bV9pZGVudGlmaWVyKTsKLX0KK1JlbW90ZUNvbW1hbmRCdWZmZXI6On5SZW1vdGVDb21tYW5kQnVm
ZmVyKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbW90ZUNvbW1hbmRCdWZmZXI6OnNldExhYmVsKFN0
cmluZyYmIGxhYmVsKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuaAppbmRleCAxNDBjMWE0
OGExMWRlZjljYWJhYzlhNTFjODRhMWNkZGM3NDJkODVkLi4zMjBlMTZiNDYyZjEzOWIzMmIyZjdm
MTJjMjAzNDIyYjI0YTJkYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuaApAQCAtNDAs
MzQgKzQwLDM0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNs
YXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3Rl
Q29tbWFuZEJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUEFM
OjpXZWJHUFU6OkNvbW1hbmRCdWZmZXImIGNvbW1hbmRCdWZmZXIsIFdlYkdQVTo6T2JqZWN0UmVn
aXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbW1hbmRC
dWZmZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlciwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21tYW5kQnVm
ZmVyKGNvbW1hbmRCdWZmZXIsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVy
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbW1hbmRCdWZmZXIoY29t
bWFuZEJ1ZmZlciwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgflJlbW90ZUNvbW1hbmRCdWZmZXIoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3Mg
T2JqZWN0UmVnaXN0cnk7CisgICAgZnJpZW5kIGNsYXNzIFdlYkdQVTo6T2JqZWN0SGVhcDsKIAot
ICAgIFJlbW90ZUNvbW1hbmRCdWZmZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXImLCBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmll
cik7CisgICAgUmVtb3RlQ29tbWFuZEJ1ZmZlcihQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYs
IFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQ29t
bWFuZEJ1ZmZlcihjb25zdCBSZW1vdGVDb21tYW5kQnVmZmVyJikgPSBkZWxldGU7CiAgICAgUmVt
b3RlQ29tbWFuZEJ1ZmZlcihSZW1vdGVDb21tYW5kQnVmZmVyJiYpID0gZGVsZXRlOwogICAgIFJl
bW90ZUNvbW1hbmRCdWZmZXImIG9wZXJhdG9yPShjb25zdCBSZW1vdGVDb21tYW5kQnVmZmVyJikg
PSBkZWxldGU7CiAgICAgUmVtb3RlQ29tbWFuZEJ1ZmZlciYgb3BlcmF0b3I9KFJlbW90ZUNvbW1h
bmRCdWZmZXImJikgPSBkZWxldGU7CiAKKyAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYg
YmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQorCiAgICAgdm9pZCBkaWRSZWNlaXZlU3Ry
ZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7CiAKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6
OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVn
aXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVj
dEhlYXA7CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5k
RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbW1hbmRFbmNvZGVyLmNwcAppbmRleCBhYzk0OWVmYTRiNmI0ZWNlMjJmMjE2Y2NhMTY1
M2U1NzYwMGIwZDgyLi5mYzQ1NDkxNjZiMGI4MTM5ZTQ1NWY0ZmU5ZGE0OTY1M2NjYzQ5ZDE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbW1hbmRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmNwcApAQCAtMzMsNDIgKzMzLDM2IEBACiAj
aW5jbHVkZSAiUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaCIKICNpbmNsdWRlICJXZWJHUFVDb21w
dXRlUGFzc0Rlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5j
bHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1v
dGVDb21tYW5kRW5jb2Rlcjo6UmVtb3RlQ29tbWFuZEVuY29kZXIoUEFMOjpXZWJHUFU6OkNvbW1h
bmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0
UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorUmVtb3RlQ29tbWFuZEVuY29kZXI6OlJlbW90ZUNvbW1hbmRFbmNvZGVy
KFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDog
bV9iYWNraW5nKGNvbW1hbmRFbmNvZGVyKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RS
ZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwgbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVu
dGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVDb21tYW5kRW5jb2Rlcjo6flJlbW90ZUNv
bW1hbmRFbmNvZGVyKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lk
ZW50aWZpZXIpOwotfQorUmVtb3RlQ29tbWFuZEVuY29kZXI6On5SZW1vdGVDb21tYW5kRW5jb2Rl
cigpID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5kZXJQ
YXNzKGNvbnN0IFdlYkdQVTo6UmVuZGVyUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3Ig
PSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBh
dXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5n
KGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAo
IWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcmVuZGVy
UGFzc0VuY29kZXIgPSBtX2JhY2tpbmctPmJlZ2luUmVuZGVyUGFzcygqY29udmVydGVkRGVzY3Jp
cHRvcik7Ci0gICAgYXV0byByZW1vdGVSZW5kZXJQYXNzRW5jb2RlciA9IFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyOjpjcmVhdGUocmVuZGVyUGFzc0VuY29kZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1f
b2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1v
dGVSZW5kZXJQYXNzRW5jb2Rlcik7CisgICAgYXV0byByZW1vdGVSZW5kZXJQYXNzRW5jb2RlciA9
IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUocmVuZGVyUGFzc0VuY29kZXIsIG1fb2Jq
ZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlm
aWVyLCByZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVu
Y29kZXI6OmJlZ2luQ29tcHV0ZVBhc3MoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJHUFU6OkNvbXB1
dGVQYXNzRGVzY3JpcHRvcj4mIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0Rlc2NyaXB0
b3I+IGNvbnZlcnRlZERlc2NyaXB0b3I7CiAgICAgaWYgKGRlc2NyaXB0b3IpIHsKLSAgICAgICAg
YXV0byByZXN1bHREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tp
bmcoKmRlc2NyaXB0b3IpOworICAgICAgICBhdXRvIHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVj
dEhlYXAuY29udmVydEZyb21CYWNraW5nKCpkZXNjcmlwdG9yKTsKICAgICAgICAgQVNTRVJUKHJl
c3VsdERlc2NyaXB0b3IpOwogICAgICAgICBjb252ZXJ0ZWREZXNjcmlwdG9yID0gV1RGTW92ZShy
ZXN1bHREZXNjcmlwdG9yKTsKICAgICAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQpAQCAt
NzYsOCArNzAsOCBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpiZWdpbkNvbXB1dGVQYXNz
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViR1BVOjpDb21wdXRlUAogICAgIH0KIAogICAgIGF1dG8g
Y29tcHV0ZVBhc3NFbmNvZGVyID0gbV9iYWNraW5nLT5iZWdpbkNvbXB1dGVQYXNzKCpjb252ZXJ0
ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIGNvbXB1dGVSZW5kZXJQYXNzRW5jb2RlciA9IFJlbW90
ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKGNvbXB1dGVQYXNzRW5jb2RlciwgbV9vYmplY3RS
ZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRk
T2JqZWN0KGNvbXB1dGVSZW5kZXJQYXNzRW5jb2Rlcik7CisgICAgYXV0byBjb21wdXRlUmVuZGVy
UGFzc0VuY29kZXIgPSBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmNyZWF0ZShjb21wdXRlUGFz
c0VuY29kZXIsIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFk
ZE9iamVjdChpZGVudGlmaWVyLCBjb21wdXRlUmVuZGVyUGFzc0VuY29kZXIpOwogfQogCiB2b2lk
IFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoCkBAIC04Nyw5ICs4MSw5
IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigKICAgICBQ
QUw6OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0LAogICAgIFBBTDo6V2ViR1BVOjpT
aXplNjQgc2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2JqZWN0UmVnaXN0
cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKHNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0ZWRT
b3VyY2UgPSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKHNvdXJjZSk7CiAg
ICAgQVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlv
biA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKHNvdXJjZSk7Cisg
ICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVy
RnJvbUJhY2tpbmcoc291cmNlKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOwog
ICAgIGlmICghY29udmVydGVkU291cmNlIHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbikKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTAyLDExICs5NiwxMSBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVy
Ojpjb3B5QnVmZmVyVG9UZXh0dXJlKAogICAgIGNvbnN0IFdlYkdQVTo6SW1hZ2VDb3B5VGV4dHVy
ZSYgZGVzdGluYXRpb24sCiAgICAgY29uc3QgV2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpCiB7
Ci0gICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9t
QmFja2luZyhzb3VyY2UpOworICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RIZWFw
LmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2UpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRTb3VyY2Up
OwotICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlv
biA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOwogICAgIEFT
U0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7Ci0gICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9
IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGNvcHlTaXplKTsKKyAgICBhdXRv
IGNvbnZlcnRlZENvcHlTaXplID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhjb3B5
U2l6ZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZENvcHlTaXplKTsKICAgICBpZiAoIWNvbnZlcnRl
ZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENvcHlTaXplKQog
ICAgICAgICByZXR1cm47CkBAIC0xMTksMTEgKzExMywxMSBAQCB2b2lkIFJlbW90ZUNvbW1hbmRF
bmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKAogICAgIGNvbnN0IFdlYkdQVTo6SW1hZ2VDb3B5
QnVmZmVyJiBkZXN0aW5hdGlvbiwKICAgICBjb25zdCBXZWJHUFU6OkV4dGVudDNEJiBjb3B5U2l6
ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVy
dEZyb21CYWNraW5nKHNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBtX29iamVj
dEhlYXAuY29udmVydEZyb21CYWNraW5nKHNvdXJjZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZFNv
dXJjZSk7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0UmVnaXN0cnku
Y29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3Rp
bmF0aW9uID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CiAg
ICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKLSAgICBhdXRvIGNvbnZlcnRlZENvcHlT
aXplID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoY29weVNpemUpOworICAg
IGF1dG8gY29udmVydGVkQ29weVNpemUgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5n
KGNvcHlTaXplKTsKICAgICBBU1NFUlQoY29udmVydGVkQ29weVNpemUpOwogICAgIGlmICghY29u
dmVydGVkU291cmNlIHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVkQ29weVNp
emUpCiAgICAgICAgIHJldHVybjsKQEAgLTEzNiwxMSArMTMwLDExIEBAIHZvaWQgUmVtb3RlQ29t
bWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKAogICAgIGNvbnN0IFdlYkdQVTo6SW1h
Z2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sCiAgICAgY29uc3QgV2ViR1BVOjpFeHRlbnQzRCYg
Y29weVNpemUpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBtX29iamVjdFJlZ2lzdHJ5
LmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2UpOworICAgIGF1dG8gY29udmVydGVkU291cmNlID0g
bV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2UpOwogICAgIEFTU0VSVChjb252
ZXJ0ZWRTb3VyY2UpOwotICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJl
Z2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0
ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRp
b24pOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7Ci0gICAgYXV0byBjb252ZXJ0
ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGNvcHlTaXpl
KTsKKyAgICBhdXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9t
QmFja2luZyhjb3B5U2l6ZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZENvcHlTaXplKTsKICAgICBp
ZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRl
ZENvcHlTaXplKQogICAgICAgICByZXR1cm47CkBAIC0xNTMsNyArMTQ3LDcgQEAgdm9pZCBSZW1v
dGVDb21tYW5kRW5jb2Rlcjo6ZmlsbEJ1ZmZlcigKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRl
c3RpbmF0aW9uT2Zmc2V0LAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgc2l6ZSkKIHsKLSAgICBh
dXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVy
RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24g
PSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKICAg
ICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOwogICAgIGlmICghY29udmVydGVkRGVzdGlu
YXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTE3OCw3ICsxNzIsNyBAQCB2b2lkIFJlbW90ZUNv
bW1hbmRFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCkKIAog
dm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXAoV2ViR1BVSWRlbnRpZmll
ciBxdWVyeVNldCwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQogewotICAgIGF1dG8g
Y29udmVydGVkUXVlcnlTZXQgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRRdWVyeVNldEZyb21C
YWNraW5nKHF1ZXJ5U2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RI
ZWFwLmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKICAgICBBU1NFUlQoY29u
dmVydGVkUXVlcnlTZXQpOwogICAgIGlmICghY29udmVydGVkUXVlcnlTZXQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE5Myw5ICsxODcsOSBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpyZXNv
bHZlUXVlcnlTZXQoCiAgICAgV2ViR1BVSWRlbnRpZmllciBkZXN0aW5hdGlvbiwKICAgICBQQUw6
OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIGF1dG8gY29udmVydGVk
UXVlcnlTZXQgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHF1
ZXJ5U2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RIZWFwLmNvbnZl
cnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKICAgICBBU1NFUlQoY29udmVydGVkUXVl
cnlTZXQpOwotICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5
LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0
ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoZGVz
dGluYXRpb24pOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CiAgICAgaWYgKCFj
b252ZXJ0ZWRRdWVyeVNldCB8fCAhY29udmVydGVkRGVzdGluYXRpb24pCiAgICAgICAgIHJldHVy
bjsKQEAgLTIwNSwxNCArMTk5LDE0IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OnJlc29s
dmVRdWVyeVNldCgKIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKGNvbnN0IFdl
YkdQVTo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVj
dFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZl
cnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0
b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRl
ZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gY29tbWFuZEJ1ZmZlciA9
IG1fYmFja2luZy0+ZmluaXNoKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90
ZUNvbW1hbmRCdWZmZXIgPSBSZW1vdGVDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZl
ciwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29i
amVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZUNvbW1hbmRCdWZmZXIpOworICAgIGF1dG8gcmVtb3Rl
Q29tbWFuZEJ1ZmZlciA9IFJlbW90ZUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShjb21tYW5kQnVmZmVy
LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3Qo
aWRlbnRpZmllciwgcmVtb3RlQ29tbWFuZEJ1ZmZlcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFu
ZEVuY29kZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5j
b2Rlci5oCmluZGV4IGJiNjA0YWE3YzhhZGRiNGMxZjBiOWUwMDBkY2JiYWFmNDk4NzIyNzYuLmQy
OWRkZjY4ZDdkNGY4NDY5ZmVlYmIyZmVjNjMwYWE2YTcxYWM2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bW1hbmRFbmNvZGVyLmgKQEAgLTQ2LDI5ICs0NiwzMCBAQCBzdHJ1Y3QgQ29tcHV0ZVBhc3NEZXNj
cmlwdG9yOwogc3RydWN0IEltYWdlQ29weUJ1ZmZlcjsKIHN0cnVjdCBJbWFnZUNvcHlUZXh0dXJl
OwogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5Owogc3RydWN0IFJlbmRl
clBhc3NEZXNjcmlwdG9yOwogfQogCiBjbGFzcyBSZW1vdGVDb21tYW5kRW5jb2RlciBmaW5hbCA6
IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxSZW1vdGVDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5j
b2RlciYgY29tbWFuZEVuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lz
dHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbW1hbmRFbmNvZGVyPiBjcmVhdGUoUEFM
OjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlciwgV2ViR1BVOjpPYmplY3RI
ZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21tYW5kRW5jb2Rlcihjb21tYW5kRW5j
b2Rlciwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFuZEVuY29kZXIoY29tbWFuZEVuY29kZXIs
IG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVD
b21tYW5kRW5jb2RlcigpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdp
c3RyeTsKKyAgICBmcmllbmQgY2xhc3MgV2ViR1BVOjpPYmplY3RIZWFwOwogCi0gICAgUmVtb3Rl
Q29tbWFuZEVuY29kZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiwgV2ViR1BVOjpPYmpl
Y3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAg
IFJlbW90ZUNvbW1hbmRFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQ29tbWFuZEVu
Y29kZXIoY29uc3QgUmVtb3RlQ29tbWFuZEVuY29kZXImKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVD
b21tYW5kRW5jb2RlcihSZW1vdGVDb21tYW5kRW5jb2RlciYmKSA9IGRlbGV0ZTsKICAgICBSZW1v
dGVDb21tYW5kRW5jb2RlciYgb3BlcmF0b3I9KGNvbnN0IFJlbW90ZUNvbW1hbmRFbmNvZGVyJikg
PSBkZWxldGU7CiAgICAgUmVtb3RlQ29tbWFuZEVuY29kZXImIG9wZXJhdG9yPShSZW1vdGVDb21t
YW5kRW5jb2RlciYmKSA9IGRlbGV0ZTsKIAorICAgIFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rl
ciYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQorCiAgICAgdm9pZCBkaWRSZWNlaXZl
U3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CiAKICAgICB2b2lkIGJlZ2luUmVuZGVyUGFzcyhjb25zdCBXZWJHUFU6OlJl
bmRlclBhc3NEZXNjcmlwdG9yJiwgV2ViR1BVSWRlbnRpZmllcik7CkBAIC0xMTksNyArMTIwLDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6
OldlYkdQVTo6Q29tbWFuZEVuY29kZXI+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmpl
Y3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcAppbmRleCA4YjEyMzMxNTk3NGRhNjRhYjEx
OGYyODUyZjI5MGM3YzJkNWJjZGVjLi4wNmU2YWQ4MDhhNTc1ZDljYTgzNjYwYzRlMTAyM2IwZjk0
NDNiZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuY3BwCkBAIC0y
OSwyOCArMjksMjIgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJH
UFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpSZW1vdGVDb21w
dXRlUGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYgY29tcHV0ZVBh
c3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcihQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDog
bV9iYWNraW5nKGNvbXB1dGVQYXNzRW5jb2RlcikKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2Jq
ZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKICAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1f
aWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAotUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjp+
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92
ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjp+UmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoV2ViR1BVSWRlbnRpZmllciBjb21wdXRlUGlwZWxpbmUp
CiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRDb21wdXRlUGlwZWxpbmUgPSBtX29iamVjdFJlZ2lzdHJ5
LmNvbnZlcnRDb21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyhjb21wdXRlUGlwZWxpbmUpOworICAg
IGF1dG8gY29udmVydGVkQ29tcHV0ZVBpcGVsaW5lID0gbV9vYmplY3RIZWFwLmNvbnZlcnRDb21w
dXRlUGlwZWxpbmVGcm9tQmFja2luZyhjb21wdXRlUGlwZWxpbmUpOwogICAgIEFTU0VSVChjb252
ZXJ0ZWRDb21wdXRlUGlwZWxpbmUpOwogICAgIGlmICghY29udmVydGVkQ29tcHV0ZVBpcGVsaW5l
KQogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs1OSw3IEBAIHZvaWQgUmVtb3RlQ29tcHV0ZVBh
c3NFbmNvZGVyOjpkaXNwYXRjaChQQUw6OldlYkdQVTo6U2l6ZTMyIHgsIHN0ZDo6b3B0aW9uYWw8
UEFMCiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaEluZGlyZWN0KFdl
YkdQVUlkZW50aWZpZXIgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQgaW5kaXJl
Y3RPZmZzZXQpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0
UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBh
dXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCdWZmZXJG
cm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZEluZGlyZWN0
QnVmZmVyKTsKICAgICBpZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKQogICAgICAgICByZXR1
cm47CkBAIC03NSw3ICs2OSw3IEBAIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNw
YXRjaEluZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJlY3RCdWZmZXIsCiAKIHZvaWQgUmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KFdlYkdQ
VUlkZW50aWZpZXIgcXVlcnlTZXQsIFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKIHsK
LSAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0UXVl
cnlTZXRGcm9tQmFja2luZyhxdWVyeVNldCk7CisgICAgYXV0byBjb252ZXJ0ZWRRdWVyeVNldCA9
IG1fb2JqZWN0SGVhcC5jb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhxdWVyeVNldCk7CiAgICAg
QVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKICAgICBpZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0KQog
ICAgICAgICByZXR1cm47CkBAIC05Niw3ICs5MCw3IEBAIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyOjplbmRQYXNzKCkKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRCaW5k
R3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5kZXgsIFdlYkdQVUlkZW50aWZpZXIgYmluZEdy
b3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5hbWlj
T2Zmc2V0Pj4mJiBvZmZzZXRzKQogewotICAgIGF1dG8gY29udmVydGVkQmluZEdyb3VwID0gbV9v
YmplY3RSZWdpc3RyeS5jb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoYmluZEdyb3VwKTsKKyAg
ICBhdXRvIGNvbnZlcnRlZEJpbmRHcm91cCA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QmluZEdyb3Vw
RnJvbUJhY2tpbmcoYmluZEdyb3VwKTsKICAgICBBU1NFUlQoY29udmVydGVkQmluZEdyb3VwKTsK
ICAgICBpZiAoIWNvbnZlcnRlZEJpbmRHcm91cCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRl
UGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmgKaW5kZXggMDBmOWRkMzBkNzE2NWViZjk4ZDNiYTVh
N2ZlYThhMDFiNjBlOThiNi4uODdjZGM1ODRiNTc5NjQwYWVlZWQxMWE2ZDhmYWI5Y2FkYzE4ODhh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5oCkBAIC00MSwyOCArNDEs
MjkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2Jq
ZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVDb21wdXRl
UGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyPiBjcmVhdGUo
UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYgY29tcHV0ZVBhc3NFbmNvZGVyLCBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NF
bmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKGNvbXB1dGVQYXNzRW5jb2Rlciwg
b2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKGNvbXB1dGVQYXNzRW5jb2Rl
ciwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlcigpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmpl
Y3RSZWdpc3RyeTsKKyAgICBmcmllbmQgY2xhc3MgV2ViR1BVOjpPYmplY3RIZWFwOwogCi0gICAg
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIm
LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRl
bnRpZmllcik7CisgICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21w
dXRlUGFzc0VuY29kZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsK
IAogICAgIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcihjb25zdCBSZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXImKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoUmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyJiYpID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
ciYgb3BlcmF0b3I9KGNvbnN0IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlciYpID0gZGVsZXRlOwog
ICAgIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlciYgb3BlcmF0b3I9KFJlbW90ZUNvbXB1dGVQYXNz
RW5jb2RlciYmKSA9IGRlbGV0ZTsKIAorICAgIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29k
ZXImIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKwogICAgIHZvaWQgZGlkUmVjZWl2
ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRQaXBlbGluZShXZWJHUFVJZGVudGlmaWVyKTsK
QEAgLTg0LDcgKzg1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsK
IAogICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPiBtX2JhY2tpbmc7Ci0g
ICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6
Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5jcHAKaW5kZXggNzAxNmEx
Zjk3OTA5ZWMyYjRiNmZmZDBmMWI4YjM0YmY0ZjExZTY4Zi4uNDE0NDE1YTM5YzI3NDk1MjE2ZTNk
YmM0MGJkYTJlYjU3Zjg4NzU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmNw
cApAQCAtMzAsMzEgKzMwLDI1IEBACiAKICNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXBMYXlvdXQu
aCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0
UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91
cExheW91dC5oPgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVDb21wdXRlUGlwZWxpbmU6
OlJlbW90ZUNvbXB1dGVQaXBlbGluZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiBjb21w
dXRlUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
K1JlbW90ZUNvbXB1dGVQaXBlbGluZTo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKFBBTDo6V2ViR1BV
OjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmco
Y29tcHV0ZVBpcGVsaW5lKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkK
ICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBt
X2JhY2tpbmcpOwogfQogCi1SZW1vdGVDb21wdXRlUGlwZWxpbmU6On5SZW1vdGVDb21wdXRlUGlw
ZWxpbmUoKQotewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmll
cik7Ci19CitSZW1vdGVDb21wdXRlUGlwZWxpbmU6On5SZW1vdGVDb21wdXRlUGlwZWxpbmUoKSA9
IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlv
dXQodWludDMyX3QgaW5kZXgsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBh
dXRvIGJpbmRHcm91cExheW91dCA9IG1fYmFja2luZy0+Z2V0QmluZEdyb3VwTGF5b3V0KGluZGV4
KTsKLSAgICBhdXRvIHJlbW90ZUJpbmRHcm91cExheW91dCA9IFJlbW90ZUJpbmRHcm91cExheW91
dDo6Y3JlYXRlKGJpbmRHcm91cExheW91dCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFw
LCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZUJpbmRHcm91
cExheW91dCk7CisgICAgYXV0byByZW1vdGVCaW5kR3JvdXBMYXlvdXQgPSBSZW1vdGVCaW5kR3Jv
dXBMYXlvdXQ6OmNyZWF0ZShiaW5kR3JvdXBMYXlvdXQsIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmll
cik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVCaW5kR3Jv
dXBMYXlvdXQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQaXBlbGluZTo6c2V0TGFiZWwoU3Ry
aW5nJiYgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuaAppbmRleCA4NGRhYWI4
NmNjNjlkYjRmMzM1MWUxZmMxMGVmMzQ2M2JhNzc3ZGI3Li44NDQ4NWU2MTEzMjVmNDQ0ZTY1ODlk
MWY3MWVhMjgwOTFkZTYxY2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmgKQEAg
LTQwLDI4ICs0MCwyOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7
CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJl
bW90ZUNvbXB1dGVQaXBlbGluZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGlwZWxpbmU+IGNy
ZWF0ZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUsIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9i
amVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJl
bW90ZUNvbXB1dGVQaXBlbGluZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUm
IGNvbXB1dGVQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lLCBvYmplY3RSZWdpc3RyeSwg
b2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lLCBvYmplY3RIZWFwLCBpZGVudGlm
aWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKCk7CiAK
IHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIGZyaWVuZCBj
bGFzcyBXZWJHUFU6Ok9iamVjdEhlYXA7CiAKLSAgICBSZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFM
OjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJH
UFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVDb21wdXRlUGlw
ZWxpbmUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYs
IFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFJl
bW90ZUNvbXB1dGVQaXBlbGluZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbXB1dGVQaXBlbGlu
ZShSZW1vdGVDb21wdXRlUGlwZWxpbmUmJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQ29tcHV0ZVBp
cGVsaW5lJiBvcGVyYXRvcj0oY29uc3QgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lJikgPSBkZWxldGU7
CiAgICAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lJiBvcGVyYXRvcj0oUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lJiYpID0gZGVsZXRlOwogCisgICAgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYgYmFj
a2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQorCiAgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFt
TWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CiAKICAgICB2b2lkIGdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBpbmRleCwgV2Vi
R1BVSWRlbnRpZmllcik7CkBAIC02OSw3ICs3MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRM
YWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4g
bV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7
CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CiAgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwCmluZGV4IDg0NWM0M2I0ZDE0
MTUyM2RhNjQwOWJlODA0NDM4NjgxY2NiZjNlYmEuLjlkZjg5NzA0NjI0NTNlMjljZTc4ZDZjNTU0
NWYyZTkwYzhlMmVhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNp
bmNsdWRlICJSZW1vdGVUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEVuY29kZXJE
ZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldl
YkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiV2ViR1BVT3V0T2ZNZW1vcnlFcnJvci5o
IgogI2luY2x1ZGUgIldlYkdQVVZhbGlkYXRpb25FcnJvci5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwLmg+CkBAIC03NywxOSArNzYsMTQgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZURldmljZTo6UmVtb3RlRGV2aWNlKFBBTDo6V2ViR1BV
OjpEZXZpY2UmIGRldmljZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnks
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQorUmVtb3RlRGV2aWNlOjpSZW1vdGVEZXZpY2UoUEFMOjpXZWJHUFU6OkRldmljZSYgZGV2
aWNlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICA6IG1fYmFja2luZyhkZXZpY2UpCi0gICAgLCBtX29iamVjdFJlZ2lzdHJ5
KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCiAgICAgLCBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVj
dChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZURldmljZTo6flJlbW90ZURl
dmljZSgpCi17Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVy
KTsKLX0KK1JlbW90ZURldmljZTo6flJlbW90ZURldmljZSgpID0gZGVmYXVsdDsKIAogdm9pZCBS
ZW1vdGVEZXZpY2U6OmRlc3Ryb3koKQogewpAQCAtOTgsMTU2ICs5MiwxNTIgQEAgdm9pZCBSZW1v
dGVEZXZpY2U6OmRlc3Ryb3koKQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlQnVmZmVyKGNv
bnN0IFdlYkdQVTo6QnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0
UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGF1dG8gY29udmVy
dGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRv
cik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwogICAgIGlmICghY29udmVydGVk
RGVzY3JpcHRvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBidWZmZXIgPSBtX2JhY2tp
bmctPmNyZWF0ZUJ1ZmZlcigqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVC
dWZmZXIgPSBSZW1vdGVCdWZmZXI6OmNyZWF0ZShidWZmZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1f
b2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1v
dGVCdWZmZXIpOworICAgIGF1dG8gcmVtb3RlQnVmZmVyID0gUmVtb3RlQnVmZmVyOjpjcmVhdGUo
YnVmZmVyLCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRP
YmplY3QoaWRlbnRpZmllciwgcmVtb3RlQnVmZmVyKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6
OmNyZWF0ZVRleHR1cmUoY29uc3QgV2ViR1BVOjpUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gY29udmVydGVkRGVz
Y3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3Ip
OworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJv
bUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwog
ICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byB0ZXh0dXJlID0gbV9iYWNraW5nLT5jcmVhdGVUZXh0dXJlKCpjb252ZXJ0ZWREZXNjcmlwdG9y
KTsKLSAgICBhdXRvIHJlbW90ZVRleHR1cmUgPSBSZW1vdGVUZXh0dXJlOjpjcmVhdGUodGV4dHVy
ZSwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29i
amVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVRleHR1cmUpOworICAgIGF1dG8gcmVtb3RlVGV4dHVy
ZSA9IFJlbW90ZVRleHR1cmU6OmNyZWF0ZSh0ZXh0dXJlLCBtX29iamVjdEhlYXAsIGlkZW50aWZp
ZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlVGV4dHVy
ZSk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVTYW1wbGVyKGNvbnN0IFdlYkdQVTo6
U2FtcGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0
b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFT
U0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3Ip
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gc2FtcGxlciA9IG1fYmFja2luZy0+Y3JlYXRl
U2FtcGxlcigqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVTYW1wbGVyID0g
UmVtb3RlU2FtcGxlcjo6Y3JlYXRlKHNhbXBsZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0
SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVTYW1w
bGVyKTsKKyAgICBhdXRvIHJlbW90ZVNhbXBsZXIgPSBSZW1vdGVTYW1wbGVyOjpjcmVhdGUoc2Ft
cGxlciwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2Jq
ZWN0KGlkZW50aWZpZXIsIHJlbW90ZVNhbXBsZXIpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6
aW1wb3J0RXh0ZXJuYWxUZXh0dXJlKGNvbnN0IFdlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlRGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1
dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNr
aW5nKGRlc2NyaXB0b3IpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0
SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNvbnZlcnRl
ZERlc2NyaXB0b3IpOwogICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgYXV0byBleHRlcm5hbFRleHR1cmUgPSBtX2JhY2tpbmctPmltcG9ydEV4dGVy
bmFsVGV4dHVyZSgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVFeHRlcm5h
bFRleHR1cmUgPSBSZW1vdGVFeHRlcm5hbFRleHR1cmU6OmNyZWF0ZShleHRlcm5hbFRleHR1cmUs
IG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmpl
Y3RIZWFwLmFkZE9iamVjdChyZW1vdGVFeHRlcm5hbFRleHR1cmUpOworICAgIGF1dG8gcmVtb3Rl
RXh0ZXJuYWxUZXh0dXJlID0gUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpjcmVhdGUoZXh0ZXJuYWxU
ZXh0dXJlLCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRP
YmplY3QoaWRlbnRpZmllciwgcmVtb3RlRXh0ZXJuYWxUZXh0dXJlKTsKIH0KIAogdm9pZCBSZW1v
dGVEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBXZWJHUFU6OkJpbmRHcm91cExh
eW91dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3Ig
PSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VS
VChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gYmluZEdyb3VwTGF5b3V0ID0gbV9iYWNraW5nLT5j
cmVhdGVCaW5kR3JvdXBMYXlvdXQoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVt
b3RlQmluZEdyb3VwTGF5b3V0ID0gUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoYmluZEdy
b3VwTGF5b3V0LCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwot
ICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQmluZEdyb3VwTGF5b3V0KTsKKyAgICBh
dXRvIHJlbW90ZUJpbmRHcm91cExheW91dCA9IFJlbW90ZUJpbmRHcm91cExheW91dDo6Y3JlYXRl
KGJpbmRHcm91cExheW91dCwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVj
dEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZUJpbmRHcm91cExheW91dCk7CiB9CiAK
IHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVQaXBlbGluZUxheW91dChjb25zdCBXZWJHUFU6OlBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogewotICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0
cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGF1dG8gY29udmVydGVkRGVz
Y3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAg
ICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwogICAgIGlmICghY29udmVydGVkRGVzY3Jp
cHRvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBwaXBlbGluZUxheW91dCA9IG1fYmFj
a2luZy0+Y3JlYXRlUGlwZWxpbmVMYXlvdXQoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1
dG8gcmVtb3RlUGlwZWxpbmVMYXlvdXQgPSBSZW1vdGVQaXBlbGluZUxheW91dDo6Y3JlYXRlKHBp
cGVsaW5lTGF5b3V0LCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIp
OwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlUGlwZWxpbmVMYXlvdXQpOworICAg
IGF1dG8gcmVtb3RlUGlwZWxpbmVMYXlvdXQgPSBSZW1vdGVQaXBlbGluZUxheW91dDo6Y3JlYXRl
KHBpcGVsaW5lTGF5b3V0LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0
SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlUGlwZWxpbmVMYXlvdXQpOwogfQogCiB2
b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFdlYkdQVTo6QmluZEdyb3Vw
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewot
ICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZy
b21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1f
b2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNv
bnZlcnRlZERlc2NyaXB0b3IpOwogICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byBiaW5kR3JvdXAgPSBtX2JhY2tpbmctPmNyZWF0ZUJpbmRH
cm91cCgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVCaW5kR3JvdXAgPSBS
ZW1vdGVCaW5kR3JvdXA6OmNyZWF0ZShiaW5kR3JvdXAsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2Jq
ZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVC
aW5kR3JvdXApOworICAgIGF1dG8gcmVtb3RlQmluZEdyb3VwID0gUmVtb3RlQmluZEdyb3VwOjpj
cmVhdGUoYmluZEdyb3VwLCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0
SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlQmluZEdyb3VwKTsKIH0KIAogdm9pZCBS
ZW1vdGVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXZWJHUFU6OlNoYWRlck1vZHVs
ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
LSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRG
cm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBt
X29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChj
b252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8gc2hhZGVyTW9kdWxlID0gbV9iYWNraW5nLT5jcmVhdGVT
aGFkZXJNb2R1bGUoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlU2hhZGVy
TW9kdWxlID0gUmVtb3RlU2hhZGVyTW9kdWxlOjpjcmVhdGUoc2hhZGVyTW9kdWxlLCBtX29iamVj
dFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5h
ZGRPYmplY3QocmVtb3RlU2hhZGVyTW9kdWxlKTsKKyAgICBhdXRvIHJlbW90ZVNoYWRlck1vZHVs
ZSA9IFJlbW90ZVNoYWRlck1vZHVsZTo6Y3JlYXRlKHNoYWRlck1vZHVsZSwgbV9vYmplY3RIZWFw
LCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJl
bW90ZVNoYWRlck1vZHVsZSk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVDb21wdXRl
UGlwZWxpbmUoY29uc3QgV2ViR1BVOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRE
ZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRv
cik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRG
cm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7
CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvIGNvbXB1dGVQaXBlbGluZSA9IG1fYmFja2luZy0+Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCpj
b252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZUNvbXB1dGVQaXBlbGluZSA9IFJl
bW90ZUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKGNvbXB1dGVQaXBlbGluZSwgbV9vYmplY3RSZWdp
c3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2Jq
ZWN0KHJlbW90ZUNvbXB1dGVQaXBlbGluZSk7CisgICAgYXV0byByZW1vdGVDb21wdXRlUGlwZWxp
bmUgPSBSZW1vdGVDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZShjb21wdXRlUGlwZWxpbmUsIG1fb2Jq
ZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlm
aWVyLCByZW1vdGVDb21wdXRlUGlwZWxpbmUpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3Jl
YXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgV2ViR1BVOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNv
bnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhk
ZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAu
Y29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNj
cmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGF1dG8gcmVuZGVyUGlwZWxpbmUgPSBtX2JhY2tpbmctPmNyZWF0ZVJlbmRlclBpcGVs
aW5lKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVJlbmRlclBpcGVsaW5l
ID0gUmVtb3RlUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShyZW5kZXJQaXBlbGluZSwgbV9vYmplY3RS
ZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRk
T2JqZWN0KHJlbW90ZVJlbmRlclBpcGVsaW5lKTsKKyAgICBhdXRvIHJlbW90ZVJlbmRlclBpcGVs
aW5lID0gUmVtb3RlUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShyZW5kZXJQaXBlbGluZSwgbV9vYmpl
Y3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZp
ZXIsIHJlbW90ZVJlbmRlclBpcGVsaW5lKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0
ZUNvbXB1dGVQaXBlbGluZUFzeW5jKGNvbnN0IFdlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERl
c2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9y
KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZy
b21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsK
ICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKICAgICAgICAgY2FsbGJhY2soKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fYmFja2luZy0+Y3JlYXRlQ29tcHV0ZVBpcGVs
aW5lQXN5bmMoKmNvbnZlcnRlZERlc2NyaXB0b3IsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCB3ZWFrT2JqZWN0SGVhcCA9IFdlYWtQdHI8V2ViR1BVOjpPYmplY3RIZWFwPihtX29iamVj
dEhlYXApLCBvYmplY3RSZWdpc3RyeSA9IG1fb2JqZWN0UmVnaXN0cnksIGlkZW50aWZpZXJdIChS
ZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4mJiBjb21wdXRlUGlwZWxpbmUpIG11dGFi
bGUgewotICAgICAgICBpZiAoIXdlYWtPYmplY3RIZWFwKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBhdXRvIHJlbW90ZUNvbXB1dGVQaXBlbGluZSA9IFJlbW90ZUNvbXB1dGVQaXBlbGlu
ZTo6Y3JlYXRlKGNvbXB1dGVQaXBlbGluZSwgb2JqZWN0UmVnaXN0cnksICp3ZWFrT2JqZWN0SGVh
cCwgaWRlbnRpZmllcik7Ci0gICAgICAgIHdlYWtPYmplY3RIZWFwLT5hZGRPYmplY3QocmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lKTsKKyAgICBtX2JhY2tpbmctPmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFz
eW5jKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
b2JqZWN0SGVhcCA9IFJlZiB7IG1fb2JqZWN0SGVhcCB9LCBpZGVudGlmaWVyXSAoUmVmPFBBTDo6
V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYgY29tcHV0ZVBpcGVsaW5lKSBtdXRhYmxlIHsKKyAg
ICAgICAgYXV0byByZW1vdGVDb21wdXRlUGlwZWxpbmUgPSBSZW1vdGVDb21wdXRlUGlwZWxpbmU6
OmNyZWF0ZShjb21wdXRlUGlwZWxpbmUsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgICAg
ICBvYmplY3RIZWFwLT5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlQ29tcHV0ZVBpcGVsaW5l
KTsKICAgICAgICAgY2FsbGJhY2soKTsKICAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6
OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoY29uc3QgV2ViR1BVOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byBjb252ZXJ0
ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3Jp
cHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZl
cnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRv
cik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CiAgICAgICAgIGNhbGxiYWNrKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2JhY2tpbmctPmNyZWF0ZVJlbmRlclBp
cGVsaW5lQXN5bmMoKmNvbnZlcnRlZERlc2NyaXB0b3IsIFtjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCB3ZWFrT2JqZWN0SGVhcCA9IFdlYWtQdHI8V2ViR1BVOjpPYmplY3RIZWFwPihtX29i
amVjdEhlYXApLCBvYmplY3RSZWdpc3RyeSA9IG1fb2JqZWN0UmVnaXN0cnksIGlkZW50aWZpZXJd
IChSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiYmIHJlbmRlclBpcGVsaW5lKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrT2JqZWN0SGVhcCkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgYXV0byByZW1vdGVSZW5kZXJQaXBlbGluZSA9IFJlbW90ZVJlbmRlclBpcGVsaW5l
OjpjcmVhdGUocmVuZGVyUGlwZWxpbmUsIG9iamVjdFJlZ2lzdHJ5LCAqd2Vha09iamVjdEhlYXAs
IGlkZW50aWZpZXIpOwotICAgICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRkT2JqZWN0KHJlbW90ZVJl
bmRlclBpcGVsaW5lKTsKKyAgICBtX2JhY2tpbmctPmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMo
KmNvbnZlcnRlZERlc2NyaXB0b3IsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBvYmpl
Y3RIZWFwID0gUmVmIHsgbV9vYmplY3RIZWFwIH0sIGlkZW50aWZpZXJdIChSZWY8UEFMOjpXZWJH
UFU6OlJlbmRlclBpcGVsaW5lPiYmIHJlbmRlclBpcGVsaW5lKSBtdXRhYmxlIHsKKyAgICAgICAg
YXV0byByZW1vdGVSZW5kZXJQaXBlbGluZSA9IFJlbW90ZVJlbmRlclBpcGVsaW5lOjpjcmVhdGUo
cmVuZGVyUGlwZWxpbmUsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgICAgICBvYmplY3RI
ZWFwLT5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlUmVuZGVyUGlwZWxpbmUpOwogICAgICAg
ICBjYWxsYmFjaygpOwogICAgIH0pOwogfQpAQCAtMjU2LDM5ICsyNDYsMzkgQEAgdm9pZCBSZW1v
dGVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViR1BV
OjpDb21tYW5kRW5jb2QKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpDb21tYW5k
RW5jb2RlckRlc2NyaXB0b3I+IGNvbnZlcnRlZERlc2NyaXB0b3I7CiAgICAgaWYgKGRlc2NyaXB0
b3IpIHsKLSAgICAgICAgYXV0byByZXN1bHREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5j
b252ZXJ0RnJvbUJhY2tpbmcoKmRlc2NyaXB0b3IpOworICAgICAgICBhdXRvIHJlc3VsdERlc2Ny
aXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKCpkZXNjcmlwdG9yKTsKICAg
ICAgICAgQVNTRVJUKHJlc3VsdERlc2NyaXB0b3IpOwogICAgICAgICBjb252ZXJ0ZWREZXNjcmlw
dG9yID0gV1RGTW92ZShyZXN1bHREZXNjcmlwdG9yKTsKICAgICAgICAgaWYgKCFjb252ZXJ0ZWRE
ZXNjcmlwdG9yKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIGNvbW1hbmRF
bmNvZGVyID0gbV9iYWNraW5nLT5jcmVhdGVDb21tYW5kRW5jb2RlcigqY29udmVydGVkRGVzY3Jp
cHRvcik7Ci0gICAgYXV0byByZW1vdGVDb21tYW5kRW5jb2RlciA9IFJlbW90ZUNvbW1hbmRFbmNv
ZGVyOjpjcmVhdGUoY29tbWFuZEVuY29kZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVh
cCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVDb21tYW5k
RW5jb2Rlcik7CisgICAgYXV0byByZW1vdGVDb21tYW5kRW5jb2RlciA9IFJlbW90ZUNvbW1hbmRF
bmNvZGVyOjpjcmVhdGUoY29tbWFuZEVuY29kZXIsIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7
CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVDb21tYW5kRW5j
b2Rlcik7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVy
KGNvbnN0IFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2Ny
aXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsK
KyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21C
YWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAg
ICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8g
cmVuZGVyQnVuZGxlRW5jb2RlciA9IG1fYmFja2luZy0+Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rl
cigqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyID0gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6Y3JlYXRlKHJlbmRlckJ1bmRsZUVuY29k
ZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9v
YmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKTsKKyAgICBhdXRv
IHJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIgPSBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpj
cmVhdGUocmVuZGVyQnVuZGxlRW5jb2RlciwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAg
ICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXIpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlUXVlcnlTZXQoY29uc3QgV2Vi
R1BVOjpRdWVyeVNldERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lz
dHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERl
c2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwog
ICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2Ny
aXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcXVlcnlTZXQgPSBtX2JhY2tpbmct
PmNyZWF0ZVF1ZXJ5U2V0KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVF1
ZXJ5U2V0ID0gUmVtb3RlUXVlcnlTZXQ6OmNyZWF0ZShxdWVyeVNldCwgbV9vYmplY3RSZWdpc3Ry
eSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0
KHJlbW90ZVF1ZXJ5U2V0KTsKKyAgICBhdXRvIHJlbW90ZVF1ZXJ5U2V0ID0gUmVtb3RlUXVlcnlT
ZXQ6OmNyZWF0ZShxdWVyeVNldCwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29i
amVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZVF1ZXJ5U2V0KTsKIH0KIAogdm9p
ZCBSZW1vdGVEZXZpY2U6OnB1c2hFcnJvclNjb3BlKFBBTDo6V2ViR1BVOjpFcnJvckZpbHRlciBl
cnJvckZpbHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlRGV2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZURldmljZS5oCmluZGV4IDQ5N2NkYTA5NjE0ZWU0NmFkMGMxNTc5Mjhk
MTZhMjJhYjYwYmU3NmEuLjJjMTk5ZGQwZTBiYzFjYzkwZTgwNWU5YmJkY2Y3OWQzODU1YTBlMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVEZXZpY2UuaApAQCAtNDksNyArNDksNiBAQCBzdHJ1Y3QgQ29tbWFuZEVuY29kZXJE
ZXNjcmlwdG9yOwogc3RydWN0IENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I7CiBzdHJ1Y3QgRXh0
ZXJuYWxUZXh0dXJlRGVzY3JpcHRvcjsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RS
ZWdpc3RyeTsKIHN0cnVjdCBQaXBlbGluZUxheW91dERlc2NyaXB0b3I7CiBzdHJ1Y3QgUXVlcnlT
ZXREZXNjcmlwdG9yOwogc3RydWN0IFJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yOwpAQCAt
NjEsMjMgKzYwLDI1IEBAIHN0cnVjdCBUZXh0dXJlRGVzY3JpcHRvcjsKIAogY2xhc3MgUmVtb3Rl
RGV2aWNlIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZURldmljZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpEZXZp
Y2UmIGRldmljZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQor
ICAgIHN0YXRpYyBSZWY8UmVtb3RlRGV2aWNlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkRldmljZSYg
ZGV2aWNlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZURl
dmljZShkZXZpY2UsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZURldmljZShkZXZpY2UsIG9iamVjdEhl
YXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB+UmVtb3RlRGV2aWNlKCk7CiAKIHByaXZh
dGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIGZyaWVuZCBjbGFzcyBX
ZWJHUFU6Ok9iamVjdEhlYXA7CiAKLSAgICBSZW1vdGVEZXZpY2UoUEFMOjpXZWJHUFU6OkRldmlj
ZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJ
ZGVudGlmaWVyKTsKKyAgICBSZW1vdGVEZXZpY2UoUEFMOjpXZWJHUFU6OkRldmljZSYsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlRGV2aWNlKGNv
bnN0IFJlbW90ZURldmljZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZURldmljZShSZW1vdGVEZXZp
Y2UmJikgPSBkZWxldGU7CiAgICAgUmVtb3RlRGV2aWNlJiBvcGVyYXRvcj0oY29uc3QgUmVtb3Rl
RGV2aWNlJikgPSBkZWxldGU7CiAgICAgUmVtb3RlRGV2aWNlJiBvcGVyYXRvcj0oUmVtb3RlRGV2
aWNlJiYpID0gZGVsZXRlOwogCisgICAgUEFMOjpXZWJHUFU6OkRldmljZSYgYmFja2luZygpIHsg
cmV0dXJuIG1fYmFja2luZzsgfQorCiAgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJ
UEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAK
ICAgICB2b2lkIGRlc3Ryb3koKTsKQEAgLTEwOCw3ICsxMDksNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpEZXZpY2U+IG1f
YmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5Owog
ICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmNwcApp
bmRleCA5NTNkMGU0ZDgwYTZlZjhmZGIzZDc2MTU3ZDcyY2E0NDllODQwMmJhLi4xOGEwZjE1NmYy
NjBjYzA4YWQzMTE3ZWM5ZGQxNTAyODVmOGEwYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5h
bFRleHR1cmUuY3BwCkBAIC0yOSwyNCArMjksMTggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0
UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUV4dGVybmFs
VGV4dHVyZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlRXh0ZXJuYWxUZXh0dXJl
OjpSZW1vdGVFeHRlcm5hbFRleHR1cmUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0
ZXJuYWxUZXh0dXJlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2Vi
R1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CitSZW1vdGVFeHRlcm5hbFRleHR1cmU6OlJlbW90ZUV4dGVybmFsVGV4dHVyZShQQUw6OldlYkdQ
VTo6RXh0ZXJuYWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5n
KGV4dGVybmFsVGV4dHVyZSkKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkp
CiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKICAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwg
bV9iYWNraW5nKTsKIH0KIAotUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjp+UmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZp
ZXIpOwotfQorUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjp+UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKCkg
PSBkZWZhdWx0OwogCiB2b2lkIFJlbW90ZUV4dGVybmFsVGV4dHVyZTo6c2V0TGFiZWwoU3RyaW5n
JiYgbGFiZWwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuaAppbmRleCAzMWQxYzU0
Mzk5MmJiYmJlZjEzNDYyYmQxMDNiYjgyOGUxZmY5NjBmLi4zY2U5MWI3N2ZmZmI3ZThhYTFiYThl
ODRlNDJjYzQwM2Y2MTQyYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmgKQEAg
LTQwLDM0ICs0MCwzNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7
CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJl
bW90ZUV4dGVybmFsVGV4dHVyZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVFeHRlcm5hbFRleHR1cmU+IGNy
ZWF0ZShQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUsIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9i
amVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJl
bW90ZUV4dGVybmFsVGV4dHVyZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUm
IGV4dGVybmFsVGV4dHVyZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVFeHRlcm5hbFRleHR1cmUoZXh0ZXJuYWxUZXh0dXJlLCBvYmplY3RSZWdpc3RyeSwg
b2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVFeHRlcm5hbFRleHR1cmUoZXh0ZXJuYWxUZXh0dXJlLCBvYmplY3RIZWFwLCBpZGVudGlm
aWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKCk7CiAK
IHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIGZyaWVuZCBj
bGFzcyBXZWJHUFU6Ok9iamVjdEhlYXA7CiAKLSAgICBSZW1vdGVFeHRlcm5hbFRleHR1cmUoUEFM
OjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJH
UFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVFeHRlcm5hbFRl
eHR1cmUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYs
IFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKGNvbnN0IFJl
bW90ZUV4dGVybmFsVGV4dHVyZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUV4dGVybmFsVGV4dHVy
ZShSZW1vdGVFeHRlcm5hbFRleHR1cmUmJikgPSBkZWxldGU7CiAgICAgUmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlJiBvcGVyYXRvcj0oY29uc3QgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlJikgPSBkZWxldGU7
CiAgICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlJiBvcGVyYXRvcj0oUmVtb3RlRXh0ZXJuYWxUZXh0
dXJlJiYpID0gZGVsZXRlOwogCisgICAgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgYmFj
a2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQorCiAgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFt
TWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CiAKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6Oldl
YkdQVTo6RXh0ZXJuYWxUZXh0dXJlPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0
SGVhcDsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAK
aW5kZXggZDcyZWVlOWE4NTc0NjBmYjdhNWJkNzE1OTIyNDk5YzllNGIyYzg5MC4uYmYwZjJlZWUx
N2YyYTA3Mjg4ZGNkMGUzOTU4MWZhNDk3MWE2OGRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcApAQCAtMzAsNDIg
KzMwLDM2IEBACiAKICNpbmNsdWRlICJSZW1vdGVBZGFwdGVyLmgiCiAjaW5jbHVkZSAiV2ViR1BV
T2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFUuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUFkYXB0ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUdQ
VTo6UmVtb3RlR1BVKFBBTDo6V2ViR1BVOjpHUFUmIGdwdSwgV2ViR1BVOjpPYmplY3RSZWdpc3Ry
eSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlR1BVOjpSZW1vdGVHUFUoUEFMOjpXZWJHUFU6
OkdQVSYgZ3B1LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhncHUpCi0gICAgLCBtX29iamVjdFJlZ2lz
dHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCiAgICAg
LCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9i
amVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZUdQVTo6flJlbW90ZUdQ
VSgpCi17Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsK
LX0KK1JlbW90ZUdQVTo6flJlbW90ZUdQVSgpID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVHUFU6
OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRp
b25zLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcmJiwgV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBv
cnRlZExpbWl0cyYmLCBib29sKT4mJiBjYWxsYmFjaykKIHsKLSAgICBhdXRvIGNvbnZlcnRlZE9w
dGlvbnMgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhvcHRpb25zKTsKKyAg
ICBhdXRvIGNvbnZlcnRlZE9wdGlvbnMgPSBtX29iamVjdEhlYXAtPmNvbnZlcnRGcm9tQmFja2lu
ZyhvcHRpb25zKTsKICAgICBBU1NFUlQoY29udmVydGVkT3B0aW9ucyk7CiAgICAgaWYgKCFjb252
ZXJ0ZWRPcHRpb25zKSB7CiAgICAgICAgIGNhbGxiYWNrKFN0cmluZ0ltcGw6OmVtcHR5KCksIHsg
eyB9IH0sIHsgfSwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9iYWNr
aW5nLT5yZXF1ZXN0QWRhcHRlcigqY29udmVydGVkT3B0aW9ucywgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHdlYWtPYmplY3RIZWFwID0gV2Vha1B0cjxXZWJHUFU6Ok9iamVjdEhlYXA+
KG1fb2JqZWN0SGVhcCksIG9iamVjdFJlZ2lzdHJ5ID0gbV9vYmplY3RSZWdpc3RyeSwgaWRlbnRp
Zmllcl0gKFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKCF3ZWFrT2JqZWN0SGVhcCB8fCAhYWRhcHRlcikgewotICAgICAgICAgICAg
Ly8gRklYTUU6IERlYWwgd2l0aCBmYWlsdXJlIGhlcmUuCisgICAgbV9iYWNraW5nLT5yZXF1ZXN0
QWRhcHRlcigqY29udmVydGVkT3B0aW9ucywgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IG9iamVjdEhlYXAgPSBtX29iamVjdEhlYXAuY29weVJlZigpLCBpZGVudGlmaWVyXSAoUmVmUHRy
PFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYmIGFkYXB0ZXIpIG11dGFibGUgeworICAgICAgICBpZiAo
IWFkYXB0ZXIpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFN0cmluZ0ltcGw6OmVtcHR5KCksIHsg
eyB9IH0sIHsgfSwgZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAg
ICAgIGF1dG8gcmVtb3RlQWRhcHRlciA9IFJlbW90ZUFkYXB0ZXI6OmNyZWF0ZSgqYWRhcHRlciwg
b2JqZWN0UmVnaXN0cnksICp3ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgICAgIHdl
YWtPYmplY3RIZWFwLT5hZGRPYmplY3QocmVtb3RlQWRhcHRlcik7CisgICAgICAgIGF1dG8gcmVt
b3RlQWRhcHRlciA9IFJlbW90ZUFkYXB0ZXI6OmNyZWF0ZSgqYWRhcHRlciwgb2JqZWN0SGVhcCwg
aWRlbnRpZmllcik7CisgICAgICAgIG9iamVjdEhlYXAtPmFkZE9iamVjdChpZGVudGlmaWVyLCBy
ZW1vdGVBZGFwdGVyKTsKICAgICAgICAgYXV0byBuYW1lID0gYWRhcHRlci0+bmFtZSgpOwogICAg
ICAgICBjb25zdCBhdXRvJiBmZWF0dXJlcyA9IGFkYXB0ZXItPmZlYXR1cmVzKCk7CiAgICAgICAg
IGNvbnN0IGF1dG8mIGxpbWl0cyA9IGFkYXB0ZXItPmxpbWl0cygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmgKaW5kZXggNzU4
NTU0MzM0NTYwYzEyM2MzZTFmZmI5YTg0MTk3ODRlYmFmZDA3OS4uOGU5MGQ2YTE3NmQzZGJmZWE2
MGM5NzlmOTU1YzZjNmMxNmM4OGRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oCkBAIC00MiwyMyArNDIsMjIgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsK
LWNsYXNzIE9iamVjdFJlZ2lzdHJ5Owogc3RydWN0IFJlcXVlc3RBZGFwdGVyT3B0aW9uczsKIH0K
IAogY2xhc3MgUmVtb3RlR1BVIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2Vp
dmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUdQVT4gY3JlYXRlKFBBTDo6V2Vi
R1BVOjpHUFUmIGdwdSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlR1BVPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkdQVSYgZ3B1
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUdQVShncHUs
IG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZUdQVShncHUsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVHUFUoKTsKIAogcHJpdmF0ZToKLSAgICBmcmll
bmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgZnJpZW5kIGNsYXNzIFdlYkdQVTo6T2JqZWN0
SGVhcDsKIAotICAgIFJlbW90ZUdQVShQQUw6OldlYkdQVTo6R1BVJiwgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFJl
bW90ZUdQVShQQUw6OldlYkdQVTo6R1BVJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRl
bnRpZmllcik7CiAKICAgICBSZW1vdGVHUFUoY29uc3QgUmVtb3RlR1BVJikgPSBkZWxldGU7CiAg
ICAgUmVtb3RlR1BVKFJlbW90ZUdQVSYmKSA9IGRlbGV0ZTsKQEAgLTcwLDggKzY5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlcXVlc3RBZGFwdGVyKGNvbnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0
ZXJPcHRpb25zJiwgV2ViR1BVSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQVTo6U3VwcG9ydGVk
TGltaXRzJiYsIGJvb2wpPiYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6R1BVPiBtX2JhY2tp
bmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKLSAgICBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8V2ViR1BVOjpPYmplY3RI
ZWFwPiBtX29iamVjdEhlYXA7CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVBpcGVsaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuY3BwCmluZGV4IDZjZDhiNjc3ZDU5MTgw
MmM2MjlkYjZmZDM0ODc0NzZhYTNlNmUwYzAuLmYwNjQyN2NkNmQ0Zjk5ZmNjODk2YjMzZWMzOTFm
OGI4ZmQyNDdjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuY3BwCkBAIC0yOSwy
NCArMjksMTggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVP
YmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1SZW1vdGVQaXBlbGluZUxheW91dDo6UmVtb3RlUGlwZWxpbmVMYXlvdXQo
UEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCwgV2ViR1BVOjpPYmpl
Y3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OlJl
bW90ZVBpcGVsaW5lTGF5b3V0KFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYgcGlwZWxpbmVM
YXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHBpcGVsaW5lTGF5b3V0KQotICAgICwgbV9vYmpl
Y3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFw
KQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3Ry
eS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVQaXBlbGlu
ZUxheW91dDo6flJlbW90ZVBpcGVsaW5lTGF5b3V0KCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5
LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlUGlwZWxpbmVMYXlvdXQ6On5S
ZW1vdGVQaXBlbGluZUxheW91dCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVQaXBlbGluZUxh
eW91dDo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5
b3V0LmgKaW5kZXggMjNiY2FlYjYwNjQxMjBiNTMyMDcyYzczNjJhODZmMGY2YzY3ZjIwZS4uNTZl
NWNlYzY2MmZjMWNhNTliZThhMDdhMjdiZTEzNDQ1MDEzNjQ4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlw
ZWxpbmVMYXlvdXQuaApAQCAtNDAsMzQgKzQwLDM0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBu
YW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3Ry
eTsKIH0KIAogY2xhc3MgUmVtb3RlUGlwZWxpbmVMYXlvdXQgZmluYWwgOiBwdWJsaWMgSVBDOjpT
dHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUGlw
ZWxpbmVMYXlvdXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5l
TGF5b3V0LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpP
YmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAg
c3RhdGljIFJlZjxSZW1vdGVQaXBlbGluZUxheW91dD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpQaXBl
bGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXQsIG9iamVjdFJl
Z2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0LCBvYmplY3RIZWFwLCBp
ZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlUGlwZWxpbmVMYXlvdXQo
KTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgZnJp
ZW5kIGNsYXNzIFdlYkdQVTo6T2JqZWN0SGVhcDsKIAotICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0
KFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVQaXBlbGlu
ZUxheW91dChQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmLCBXZWJHUFU6Ok9iamVjdEhlYXAm
LCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFJl
bW90ZVBpcGVsaW5lTGF5b3V0JikgPSBkZWxldGU7CiAgICAgUmVtb3RlUGlwZWxpbmVMYXlvdXQo
UmVtb3RlUGlwZWxpbmVMYXlvdXQmJikgPSBkZWxldGU7CiAgICAgUmVtb3RlUGlwZWxpbmVMYXlv
dXQmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVQaXBlbGluZUxheW91dCYpID0gZGVsZXRlOwogICAg
IFJlbW90ZVBpcGVsaW5lTGF5b3V0JiBvcGVyYXRvcj0oUmVtb3RlUGlwZWxpbmVMYXlvdXQmJikg
PSBkZWxldGU7CiAKKyAgICBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmIGJhY2tpbmcoKSB7
IHJldHVybiBtX2JhY2tpbmc7IH0KKwogICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2Uo
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwog
CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlBp
cGVsaW5lTGF5b3V0PiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9v
YmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKICAg
ICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3Bw
CmluZGV4IGUwY2QxYzVjM2Q3YjE1NDU1NWRkMTE4OTFkNmFiMjAwN2NhZjRhNzUuLjBmNjA2NTAw
MDA4Yjk4N2Y4NmY1YTZhYjVkZWMzMWU2ZDliNWNmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3Bw
CkBAIC0yOSwyNCArMjksMTggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIK
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1SZW1vdGVRdWVyeVNldDo6UmVtb3RlUXVlcnlTZXQoUEFMOjpXZWJH
UFU6OlF1ZXJ5U2V0JiBxdWVyeVNldCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVn
aXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQorUmVtb3RlUXVlcnlTZXQ6OlJlbW90ZVF1ZXJ5U2V0KFBBTDo6V2ViR1BVOjpR
dWVyeVNldCYgcXVlcnlTZXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHF1ZXJ5U2V0KQotICAgICwg
bV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmpl
Y3RIZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RS
ZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVR
dWVyeVNldDo6flJlbW90ZVF1ZXJ5U2V0KCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92
ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlUXVlcnlTZXQ6On5SZW1vdGVRdWVyeVNl
dCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVRdWVyeVNldDo6ZGVzdHJveSgpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1
ZXJ5U2V0LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVF1ZXJ5U2V0LmgKaW5kZXggZTE3ZDczYzMyZWYzZWYwZjM3ZDZhYmVhNTU1OTBmOWQwNTEyNjM4
YS4uNzcwMDE1OTE2MzkzNjYzYWMzMTgzNTdiYzA4MzUwZjI2MmIwMmNkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVl
cnlTZXQuaApAQCAtNDAsMjggKzQwLDI5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0K
IAogY2xhc3MgUmVtb3RlUXVlcnlTZXQgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUXVlcnlTZXQ+IGNyZWF0
ZShQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVRdWVyeVNldD4gY3Jl
YXRlKFBBTDo6V2ViR1BVOjpRdWVyeVNldCYgcXVlcnlTZXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUXVlcnlTZXQocXVlcnlTZXQsIG9iamVjdFJlZ2lz
dHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZVF1ZXJ5U2V0KHF1ZXJ5U2V0LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlUXVlcnlTZXQoKTsKIAogcHJpdmF0ZToKLSAgICBm
cmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgZnJpZW5kIGNsYXNzIFdlYkdQVTo6T2Jq
ZWN0SGVhcDsKIAotICAgIFJlbW90ZVF1ZXJ5U2V0KFBBTDo6V2ViR1BVOjpRdWVyeVNldCYsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlm
aWVyKTsKKyAgICBSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQVTo6UXVlcnlTZXQmLCBXZWJHUFU6
Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVF1ZXJ5U2V0KGNv
bnN0IFJlbW90ZVF1ZXJ5U2V0JikgPSBkZWxldGU7CiAgICAgUmVtb3RlUXVlcnlTZXQoUmVtb3Rl
UXVlcnlTZXQmJikgPSBkZWxldGU7CiAgICAgUmVtb3RlUXVlcnlTZXQmIG9wZXJhdG9yPShjb25z
dCBSZW1vdGVRdWVyeVNldCYpID0gZGVsZXRlOwogICAgIFJlbW90ZVF1ZXJ5U2V0JiBvcGVyYXRv
cj0oUmVtb3RlUXVlcnlTZXQmJikgPSBkZWxldGU7CiAKKyAgICBQQUw6OldlYkdQVTo6UXVlcnlT
ZXQmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKwogICAgIHZvaWQgZGlkUmVjZWl2
ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95KCk7CkBAIC02OSw3ICs3MCw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJH
UFU6OlF1ZXJ5U2V0PiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9v
YmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKICAg
ICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuY3BwCmluZGV4
IGRlYTY0MDk4ZmE2ZDQ1Yzg1NzM5MzQ0ZTVhYTdmMGYwODIzYjlhOTYuLmZmYWE2NmQ2YjAzZDNi
NzIyNDMyMWE3ZDVjNzEwMTVjNzYxMTk0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuY3BwCkBAIC0yOSwzMSAr
MjksMjUgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmpl
Y3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1SZW1vdGVRdWV1ZTo6UmVtb3RlUXVldWUoUEFMOjpXZWJHUFU6OlF1ZXVlJiBxdWV1ZSwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlUXVldWU6OlJl
bW90ZVF1ZXVlKFBBTDo6V2ViR1BVOjpRdWV1ZSYgcXVldWUsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5n
KHF1ZXVlKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1f
b2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7
Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcp
OwogfQogCi1SZW1vdGVRdWV1ZTo6flJlbW90ZVF1ZXVlKCkKLXsKLSAgICBtX29iamVjdFJlZ2lz
dHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlUXVldWU6On5SZW1vdGVR
dWV1ZSgpID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVRdWV1ZTo6c3VibWl0KFZlY3RvcjxXZWJH
UFVJZGVudGlmaWVyPiYmIGNvbW1hbmRCdWZmZXJzKQogewogICAgIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyPj4gY29udmVydGVkQ29tbWFu
ZEJ1ZmZlcnM7CiAgICAgY29udmVydGVkQ29tbWFuZEJ1ZmZlcnMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShjb21tYW5kQnVmZmVycy5zaXplKCkpOwogICAgIGZvciAoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyIDogY29tbWFuZEJ1ZmZlcnMpIHsKLSAgICAgICAgYXV0byBjb252ZXJ0ZWRDb21t
YW5kQnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0Q29tbWFuZEJ1ZmZlckZyb21CYWNr
aW5nKGlkZW50aWZpZXIpOworICAgICAgICBhdXRvIGNvbnZlcnRlZENvbW1hbmRCdWZmZXIgPSBt
X29iamVjdEhlYXAuY29udmVydENvbW1hbmRCdWZmZXJGcm9tQmFja2luZyhpZGVudGlmaWVyKTsK
ICAgICAgICAgQVNTRVJUKGNvbnZlcnRlZENvbW1hbmRCdWZmZXIpOwogICAgICAgICBpZiAoIWNv
bnZlcnRlZENvbW1hbmRCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NCw3ICs2OCw3
IEBAIHZvaWQgUmVtb3RlUXVldWU6OndyaXRlQnVmZmVyKAogICAgIFBBTDo6V2ViR1BVOjpTaXpl
NjQgYnVmZmVyT2Zmc2V0LAogICAgIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgYXV0
byBjb252ZXJ0ZWRCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFj
a2luZyhidWZmZXIpOworICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RIZWFwLmNv
bnZlcnRCdWZmZXJGcm9tQmFja2luZyhidWZmZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZm
ZXIpOwogICAgIGlmICghY29udmVydGVkQnVmZmVyKQogICAgICAgICByZXR1cm47CkBAIC04OCwx
MSArODIsMTEgQEAgdm9pZCBSZW1vdGVRdWV1ZTo6d3JpdGVUZXh0dXJlKAogICAgIGNvbnN0IFdl
YkdQVTo6SW1hZ2VEYXRhTGF5b3V0JiBkYXRhTGF5b3V0LAogICAgIGNvbnN0IFdlYkdQVTo6RXh0
ZW50M0QmIHNpemUpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0
UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGNvbnZl
cnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXN0aW5h
dGlvbik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKLSAgICBhdXRvIGNvbnZl
cnRlZERhdGFMYXlvdXQgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkYXRh
TGF5b3V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZERhdGFMYXlvdXQgPSBtX29iamVjdEhlYXAuY29u
dmVydEZyb21CYWNraW5nKGRhdGFMYXlvdXQpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5h
dGlvbik7Ci0gICAgYXV0byBjb252ZXJ0ZWRTaXplID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
RnJvbUJhY2tpbmcoc2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRTaXplID0gbV9vYmplY3RIZWFw
LmNvbnZlcnRGcm9tQmFja2luZyhzaXplKTsKICAgICBBU1NFUlQoY29udmVydGVkU2l6ZSk7CiAg
ICAgaWYgKCFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwg
IWNvbnZlcnRlZFNpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNSwxMSArOTksMTEgQEAgdm9p
ZCBSZW1vdGVRdWV1ZTo6Y29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUoCiAgICAgY29uc3QgV2Vi
R1BVOjpJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkJiBkZXN0aW5hdGlvbiwKICAgICBjb25zdCBXZWJH
UFU6OkV4dGVudDNEJiBjb3B5U2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1f
b2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKHNvdXJjZSk7CisgICAgYXV0byBjb252
ZXJ0ZWRTb3VyY2UgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKHNvdXJjZSk7CiAg
ICAgQVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlv
biA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAg
ICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFj
a2luZyhkZXN0aW5hdGlvbik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKLSAg
ICBhdXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJh
Y2tpbmcoY29weVNpemUpOworICAgIGF1dG8gY29udmVydGVkQ29weVNpemUgPSBtX29iamVjdEhl
YXAuY29udmVydEZyb21CYWNraW5nKGNvcHlTaXplKTsKICAgICBBU1NFUlQoY29udmVydGVkQ29w
eVNpemUpOwogICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZERlc3Rp
bmF0aW9uIHx8ICFjb252ZXJ0ZWRDb3B5U2l6ZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5o
CmluZGV4IGE1MGFmODI0NTFmYjlmYmVkYTk3YzEwNjVlNjkzNjVmMzlmN2IzODYuLmE0MWEyNmEz
OWExMmY2NWUzNWFkZDRmMGM0ODc2ZWJhYzRlMmQ1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmgKQEAgLTQ5LDI4
ICs0OSwyOSBAQCBzdHJ1Y3QgSW1hZ2VDb3B5VGV4dHVyZTsKIHN0cnVjdCBJbWFnZUNvcHlUZXh0
dXJlVGFnZ2VkOwogc3RydWN0IEltYWdlRGF0YUxheW91dDsKIGNsYXNzIE9iamVjdEhlYXA7Ci1j
bGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlUXVldWUgZmluYWwgOiBwdWJs
aWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
UmVtb3RlUXVldWU+IGNyZWF0ZShQQUw6OldlYkdQVTo6UXVldWUmIHF1ZXVlLCBXZWJHUFU6Ok9i
amVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVR
dWV1ZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpRdWV1ZSYgcXVldWUsIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUXVldWUocXVldWUsIG9iamVjdFJlZ2lzdHJ5
LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZVF1ZXVlKHF1ZXVlLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+UmVtb3RlUXVldWUoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3Mg
T2JqZWN0UmVnaXN0cnk7CisgICAgZnJpZW5kIGNsYXNzIFdlYkdQVTo6T2JqZWN0SGVhcDsKIAot
ICAgIFJlbW90ZVF1ZXVlKFBBTDo6V2ViR1BVOjpRdWV1ZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0
cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVR
dWV1ZShQQUw6OldlYkdQVTo6UXVldWUmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVu
dGlmaWVyKTsKIAogICAgIFJlbW90ZVF1ZXVlKGNvbnN0IFJlbW90ZVF1ZXVlJikgPSBkZWxldGU7
CiAgICAgUmVtb3RlUXVldWUoUmVtb3RlUXVldWUmJikgPSBkZWxldGU7CiAgICAgUmVtb3RlUXVl
dWUmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVRdWV1ZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZVF1
ZXVlJiBvcGVyYXRvcj0oUmVtb3RlUXVldWUmJikgPSBkZWxldGU7CiAKKyAgICBQQUw6OldlYkdQ
VTo6UXVldWUmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgdm9pZCBzdWJtaXQoVmVjdG9yPFdlYkdQVUlkZW50
aWZpZXI+JiYpOwpAQCAtOTYsNyArOTcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwo
U3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpRdWV1ZT4gbV9iYWNraW5nOwotICAg
IFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpP
YmplY3RIZWFwJiBtX29iamVjdEhlYXA7CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3BwCmluZGV4IDE3ZTBhY2Y5MDE5YzM0
ZDk5ZjJiMDY3NzI4NDFkMzVkMzhmOGM5ZTQuLjVhZDVkYzdhZjAwM2FiMWZiMzc4OWY5ZjYzZmFl
OTY0MmNlMTY5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5jcHAKQEAgLTI5LDI0ICsy
OSwxOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVj
dEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1SZW1vdGVSZW5kZXJCdW5kbGU6OlJlbW90ZVJlbmRlckJ1bmRsZShQQUw6OldlYkdQ
VTo6UmVuZGVyQnVuZGxlJiByZW5kZXJCdW5kbGUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9i
amVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZVJlbmRlckJ1bmRsZTo6UmVtb3RlUmVuZGVyQnVuZGxl
KFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RI
ZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2Jh
Y2tpbmcocmVuZGVyQnVuZGxlKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3Ry
eSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVy
LCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVSZW5kZXJCdW5kbGU6On5SZW1vdGVSZW5kZXJCdW5k
bGUoKQotewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7
Ci19CitSZW1vdGVSZW5kZXJCdW5kbGU6On5SZW1vdGVSZW5kZXJCdW5kbGUoKSA9IGRlZmF1bHQ7
CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyQnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oCmluZGV4IDZiODBkNTliYTcyNzI4MjJkZTA3NmEyYTU3
N2M2MTdlMTg5YTFjYWYuLjJkNTFmMDFiNTBhZDE1MThjZTgwOWRlOTJjM2YxNzIzYzdlODFmODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaApAQCAtNDAsMzQgKzQwLDM0IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFz
cyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxlIGZpbmFsIDog
cHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFJlbW90ZVJlbmRlckJ1bmRsZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUm
IHJlbmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlPiBjcmVhdGUoUEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZSYgcmVuZGVyQnVuZGxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhl
YXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1bmRsZShyZW5kZXJCdW5kbGUsIG9iamVjdFJlZ2lz
dHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZVJlbmRlckJ1bmRsZShyZW5kZXJCdW5kbGUsIG9iamVjdEhlYXAsIGlkZW50aWZp
ZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJCdW5kbGUoKTsKIAogcHJp
dmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgZnJpZW5kIGNsYXNz
IFdlYkdQVTo6T2JqZWN0SGVhcDsKIAotICAgIFJlbW90ZVJlbmRlckJ1bmRsZShQQUw6OldlYkdQ
VTo6UmVuZGVyQnVuZGxlJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0
SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFJlbW90ZVJlbmRlckJ1bmRsZShQQUw6Oldl
YkdQVTo6UmVuZGVyQnVuZGxlJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmll
cik7CiAKICAgICBSZW1vdGVSZW5kZXJCdW5kbGUoY29uc3QgUmVtb3RlUmVuZGVyQnVuZGxlJikg
PSBkZWxldGU7CiAgICAgUmVtb3RlUmVuZGVyQnVuZGxlKFJlbW90ZVJlbmRlckJ1bmRsZSYmKSA9
IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJCdW5kbGUmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVS
ZW5kZXJCdW5kbGUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJCdW5kbGUmIG9wZXJhdG9y
PShSZW1vdGVSZW5kZXJCdW5kbGUmJikgPSBkZWxldGU7CiAKKyAgICBQQUw6OldlYkdQVTo6UmVu
ZGVyQnVuZGxlJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKICAgICB2b2lkIGRp
ZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAg
ICAgUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVh
cCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuY3BwCmluZGV4IDc3MmNmODJh
OTE2MGE4NmUzMDQxNDg4NDQ2OWNiMTJhOGU5ZjVjYWMuLjczMzc2OTk0NTAxY2NmOGJjOGJjNWE5
ZDhiZDUwODA2YmJkYjVlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyLmNwcApAQCAtMzAsMjkgKzMwLDIzIEBACiAKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5k
bGUuaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRl
ckJ1bmRsZS5oPgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyQnVu
ZGxlRW5jb2Rlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2Rlcjo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcihQQUw6OldlYkdQVTo6UmVuZGVyQnVu
ZGxlRW5jb2RlciYgcmVuZGVyQnVuZGxlRW5jb2RlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYg
b2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6UmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2RlcihQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVy
QnVuZGxlRW5jb2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocmVuZGVyQnVuZGxlRW5jb2RlcikK
LSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhl
YXAob2JqZWN0SGVhcCkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1f
b2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAot
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6flJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoKQot
ewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7Ci19CitS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjp+UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcigpID0g
ZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRQaXBlbGluZShX
ZWJHUFVJZGVudGlmaWVyIHJlbmRlclBpcGVsaW5lKQogewotICAgIGF1dG8gY29udmVydGVkUmVu
ZGVyUGlwZWxpbmUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21C
YWNraW5nKHJlbmRlclBpcGVsaW5lKTsKKyAgICBhdXRvIGNvbnZlcnRlZFJlbmRlclBpcGVsaW5l
ID0gbV9vYmplY3RIZWFwLmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKHJlbmRlclBp
cGVsaW5lKTsKICAgICBBU1NFUlQoY29udmVydGVkUmVuZGVyUGlwZWxpbmUpOwogICAgIGlmICgh
Y29udmVydGVkUmVuZGVyUGlwZWxpbmUpCiAgICAgICAgIHJldHVybjsKQEAgLTYyLDcgKzU2LDcg
QEAgdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRQaXBlbGluZShXZWJHUFVJZGVu
dGlmaWVyIHJlbmRlclBpcGVsaW5lKQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6
OnNldEluZGV4QnVmZmVyKFdlYkdQVUlkZW50aWZpZXIgYnVmZmVyLCBQQUw6OldlYkdQVTo6SW5k
ZXhGb3JtYXQgaW5kZXhGb3JtYXQsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9w
dGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRC
dWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhidWZmZXIp
OworICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCdWZmZXJG
cm9tQmFja2luZyhidWZmZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZmZXIpOwogICAgIGlm
ICghY29udmVydGVkQnVmZmVyKQogICAgICAgICByZXR1cm47CkBAIC03Miw3ICs2Niw3IEBAIHZv
aWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoV2ViR1BVSWRlbnRp
ZmllciBidWZmZXIsIFBBTDo6V2ViCiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6
c2V0VmVydGV4QnVmZmVyKFBBTDo6V2ViR1BVOjpJbmRleDMyIHNsb3QsIFdlYkdQVUlkZW50aWZp
ZXIgYnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6
OldlYkdQVTo6U2l6ZTY0PiBzaXplKQogewotICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9v
YmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoYnVmZmVyKTsKKyAgICBhdXRv
IGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmco
YnVmZmVyKTsKICAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKICAgICBpZiAoIWNvbnZlcnRl
ZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtOTYsNyArOTAsNyBAQCB2b2lkIFJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkKFBBTDo6V2ViR1BVOjpTaXplMzIgaW5kZXhD
b3VudCwgUEFMOgogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRpcmVj
dChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGlu
ZGlyZWN0T2Zmc2V0KQogewotICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29i
amVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7Cisg
ICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVm
ZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRp
cmVjdEJ1ZmZlcik7CiAgICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKICAgICAgICAg
cmV0dXJuOwpAQCAtMTA2LDcgKzEwMCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
cjo6ZHJhd0luZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJlY3RCdWZmZXIsIFBBCiAKIHZv
aWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVjdChXZWJHUFVJ
ZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zm
c2V0KQogewotICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdFJlZ2lz
dHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgYXV0byBj
b252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJh
Y2tpbmcoaW5kaXJlY3RCdWZmZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZl
cik7CiAgICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpA
QCAtMTE3LDcgKzExMSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0lu
ZGV4ZWRJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmCiB2b2lkIFJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXI6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5kZXgzMiBpbmRl
eCwgV2ViR1BVSWRlbnRpZmllciBiaW5kR3JvdXAsCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIGR5bmFtaWNPZmZzZXRzKQogewot
ICAgIGF1dG8gY29udmVydGVkQmluZEdyb3VwID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0Qmlu
ZEdyb3VwRnJvbUJhY2tpbmcoYmluZEdyb3VwKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJpbmRHcm91
cCA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoYmluZEdyb3VwKTsK
ICAgICBBU1NFUlQoY29udmVydGVkQmluZEdyb3VwKTsKICAgICBpZiAoIWNvbnZlcnRlZEJpbmRH
cm91cCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQyLDE0ICsxMzYsMTQgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJl
bCkKIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpmaW5pc2goY29uc3QgV2ViR1BV
OjpSZW5kZXJCdW5kbGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdp
c3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWRE
ZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsK
ICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNj
cmlwdG9yKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHJlbmRlckJ1bmRsZSA9IG1fYmFj
a2luZy0+ZmluaXNoKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVJlbmRl
ckJ1bmRsZSA9IFJlbW90ZVJlbmRlckJ1bmRsZTo6Y3JlYXRlKHJlbmRlckJ1bmRsZSwgbV9vYmpl
Y3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAu
YWRkT2JqZWN0KHJlbW90ZVJlbmRlckJ1bmRsZSk7CisgICAgYXV0byByZW1vdGVSZW5kZXJCdW5k
bGUgPSBSZW1vdGVSZW5kZXJCdW5kbGU6OmNyZWF0ZShyZW5kZXJCdW5kbGUsIG1fb2JqZWN0SGVh
cCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCBy
ZW1vdGVSZW5kZXJCdW5kbGUpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6
OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXIuaAppbmRleCBmODdiNzNlMDFjN2FhNGIxYjY2ZDRjNWE3NmFhYmI1NTNkNzcxNjMyLi4x
Mzg3YTgwOGQyYjAyYTIwYzhlYTI5ZDc4ZTFkZTQ2ODIxZTUxYzY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuaApAQCAtNDIsMjkgKzQyLDMwIEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBP
YmplY3RSZWdpc3RyeTsKIHN0cnVjdCBSZW5kZXJCdW5kbGVEZXNjcmlwdG9yOwogfQogCiBjbGFz
cyBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVz
c2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVy
QnVuZGxlRW5jb2RlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcj4gY3JlYXRlKFBBTDo6
V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5kZXJCdW5kbGVFbmNvZGVyLCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXIocmVuZGVyQnVuZGxlRW5jb2Rlciwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50
aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlcihyZW5kZXJCdW5kbGVFbmNvZGVyLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAg
ICAgfQogCiAgICAgflJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoKTsKIAogcHJpdmF0ZToKLSAg
ICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgZnJpZW5kIGNsYXNzIFdlYkdQVTo6
T2JqZWN0SGVhcDsKIAotICAgIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoUEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZUVuY29kZXImLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpP
YmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2RlcihQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0SGVh
cCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcihj
b25zdCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2RlcihSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJiYpID0gZGVsZXRlOwog
ICAgIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImIG9wZXJhdG9yPShjb25zdCBSZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
ciYgb3BlcmF0b3I9KFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImJikgPSBkZWxldGU7CiAKKyAg
ICBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYgYmFja2luZygpIHsgcmV0dXJuIG1f
YmFja2luZzsgfQorCiAgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICB2b2lk
IHNldFBpcGVsaW5lKFdlYkdQVUlkZW50aWZpZXIpOwpAQCAtOTQsNyArOTUsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpS
ZW5kZXJCdW5kbGVFbmNvZGVyPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3Ry
eSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVh
cDsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NF
bmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwCmluZGV4IDk3YjgxMjM0MDcwZDYyZmE4ZDJjMzFkOGM1
ZjgxN2FkNjI4ZmM4ZmUuLmZjNWVjMDA2OWM1MTI1M2JmZDhiYTM1ZjViYTM2YzdkYjQzODg4ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwCkBAIC0yOSwyOCArMjks
MjIgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RI
ZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6UmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXIoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2RlciwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXI6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNz
RW5jb2RlciYgcmVuZGVyUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHJlbmRlclBh
c3NFbmNvZGVyKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAs
IG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
CiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tp
bmcpOwogfQogCi1SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6flJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIp
OwotfQorUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6On5SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcigp
ID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUo
V2ViR1BVSWRlbnRpZmllciByZW5kZXJQaXBlbGluZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFJl
bmRlclBpcGVsaW5lID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9t
QmFja2luZyhyZW5kZXJQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRSZW5kZXJQaXBlbGlu
ZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhyZW5kZXJQ
aXBlbGluZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZFJlbmRlclBpcGVsaW5lKTsKICAgICBpZiAo
IWNvbnZlcnRlZFJlbmRlclBpcGVsaW5lKQogICAgICAgICByZXR1cm47CkBAIC02MCw3ICs1NCw3
IEBAIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKFdlYkdQVUlkZW50
aWZpZXIgcmVuZGVyUGlwZWxpbmUpCiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNl
dEluZGV4QnVmZmVyKFdlYkdQVUlkZW50aWZpZXIgYnVmZmVyLCBQQUw6OldlYkdQVTo6SW5kZXhG
b3JtYXQgaW5kZXhGb3JtYXQsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlv
bmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRCdWZm
ZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhidWZmZXIpOwor
ICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCdWZmZXJGcm9t
QmFja2luZyhidWZmZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZmZXIpOwogICAgIGlmICgh
Y29udmVydGVkQnVmZmVyKQogICAgICAgICByZXR1cm47CkBAIC03MCw3ICs2NCw3IEBAIHZvaWQg
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKFdlYkdQVUlkZW50aWZpZXIg
YnVmZmVyLCBQQUw6OldlYkdQCiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFZl
cnRleEJ1ZmZlcihQQUw6OldlYkdQVTo6SW5kZXgzMiBzbG90LCBXZWJHUFVJZGVudGlmaWVyIGJ1
ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OlNpemU2ND4gc2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0
UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CisgICAgYXV0byBjb252
ZXJ0ZWRCdWZmZXIgPSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZl
cik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CiAgICAgaWYgKCFjb252ZXJ0ZWRCdWZm
ZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTk0LDcgKzg4LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQoUEFMOjpXZWJHUFU6OlNpemUzMiBpbmRleENvdW50LCBQ
QUw6OlcKIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGlyZWN0KFdlYkdQ
VUlkZW50aWZpZXIgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQgaW5kaXJlY3RP
ZmZzZXQpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0UmVn
aXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBhdXRv
IGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCdWZmZXJGcm9t
QmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZEluZGlyZWN0QnVm
ZmVyKTsKICAgICBpZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKQogICAgICAgICByZXR1cm47
CkBAIC0xMDQsNyArOTgsNyBAQCB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5k
aXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRpcmVjdEJ1ZmZlciwgUEFMOgogCiB2b2lkIFJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZEluZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIg
aW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQgaW5kaXJlY3RPZmZzZXQpCiB7Ci0g
ICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVy
dEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZElu
ZGlyZWN0QnVmZmVyID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbmRp
cmVjdEJ1ZmZlcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKTsKICAgICBp
ZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKQogICAgICAgICByZXR1cm47CkBAIC0xMTUsNyAr
MTA5LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVj
dChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmZmUKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXI6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgV2ViR1BVSWRl
bnRpZmllciBiaW5kR3JvdXAsCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6
OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIGR5bmFtaWNPZmZzZXRzKQogewotICAgIGF1dG8gY29u
dmVydGVkQmluZEdyb3VwID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QmluZEdyb3VwRnJvbUJh
Y2tpbmcoYmluZEdyb3VwKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJpbmRHcm91cCA9IG1fb2JqZWN0
SGVhcC5jb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoYmluZEdyb3VwKTsKICAgICBBU1NFUlQo
Y29udmVydGVkQmluZEdyb3VwKTsKICAgICBpZiAoIWNvbnZlcnRlZEJpbmRHcm91cCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTUzLDcgKzE0Nyw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXI6OnNldFNjaXNzb3JSZWN0KFBBTDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZSB4LCBQCiAK
IHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEJsZW5kQ29uc3RhbnQoV2ViR1BVOjpD
b2xvciBjb2xvcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZENvbG9yID0gbV9vYmplY3RSZWdpc3Ry
eS5jb252ZXJ0RnJvbUJhY2tpbmcoY29sb3IpOworICAgIGF1dG8gY29udmVydGVkQ29sb3IgPSBt
X29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGNvbG9yKTsKICAgICBBU1NFUlQoY29udmVy
dGVkQ29sb3IpOwogICAgIGlmICghY29udmVydGVkQ29sb3IpCiAgICAgICAgIHJldHVybjsKQEAg
LTE3OCw3ICsxNzIsNyBAQCB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjplbmRPY2NsdXNp
b25RdWVyeSgpCiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVT
dGF0aXN0aWNzUXVlcnkoV2ViR1BVSWRlbnRpZmllciBxdWVyeVNldCwgUEFMOjpXZWJHUFU6OlNp
emUzMiBxdWVyeUluZGV4KQogewotICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29iamVj
dFJlZ2lzdHJ5LmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKKyAgICBhdXRv
IGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RIZWFwLmNvbnZlcnRRdWVyeVNldEZyb21CYWNr
aW5nKHF1ZXJ5U2V0KTsKICAgICBBU1NFUlQoY29udmVydGVkUXVlcnlTZXQpOwogICAgIGlmICgh
Y29udmVydGVkUXVlcnlTZXQpCiAgICAgICAgIHJldHVybjsKQEAgLTE5Niw3ICsxOTAsNyBAQCB2
b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpleGVjdXRlQnVuZGxlcyhWZWN0b3I8V2ViR1BV
SWRlbnRpZmllcj4mJiByZW5kZXJCdQogICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+PiBjb252ZXJ0ZWRCdW5kbGVzOwogICAgIGNvbnZl
cnRlZEJ1bmRsZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZW5kZXJCdW5kbGVzLnNpemUoKSk7
CiAgICAgZm9yIChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIgOiByZW5kZXJCdW5kbGVzKSB7
Ci0gICAgICAgIGF1dG8gY29udmVydGVkQnVuZGxlID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
UmVuZGVyQnVuZGxlRnJvbUJhY2tpbmcoaWRlbnRpZmllcik7CisgICAgICAgIGF1dG8gY29udmVy
dGVkQnVuZGxlID0gbV9vYmplY3RIZWFwLmNvbnZlcnRSZW5kZXJCdW5kbGVGcm9tQmFja2luZyhp
ZGVudGlmaWVyKTsKICAgICAgICAgQVNTRVJUKGNvbnZlcnRlZEJ1bmRsZSk7CiAgICAgICAgIGlm
ICghY29udmVydGVkQnVuZGxlKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJQYXNzRW5jb2Rlci5oCmluZGV4IGZiNmQzZGI1OWE5MzIxNGFkOGQ0MDRmZGFkYzVkYzcx
YTkzZWFjZWMuLjY5MTFlMjc1OGNlMGJlNWRlZTVmMzkwMWIyMzU3ZTk1MTE1MWY4ZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmgKQEAgLTQzLDI4ICs0MywyOSBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwot
Y2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
IGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6
OlJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2RlciwgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGFz
c0VuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBh
c3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyKHJlbmRlclBhc3NFbmNvZGVyLCBvYmplY3RSZWdpc3RyeSwgb2Jq
ZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVSZW5kZXJQYXNzRW5jb2RlcihyZW5kZXJQYXNzRW5jb2Rlciwgb2JqZWN0SGVhcCwgaWRlbnRp
ZmllcikpOwogICAgIH0KIAogICAgIH5SZW1vdGVSZW5kZXJQYXNzRW5jb2RlcigpOwogCiBwcml2
YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBmcmllbmQgY2xhc3Mg
V2ViR1BVOjpPYmplY3RIZWFwOwogCi0gICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoUEFMOjpX
ZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0SGVh
cCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoY29u
c3QgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXImKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlcihSZW1vdGVSZW5kZXJQYXNzRW5jb2RlciYmKSA9IGRlbGV0ZTsKICAgICBSZW1v
dGVSZW5kZXJQYXNzRW5jb2RlciYgb3BlcmF0b3I9KGNvbnN0IFJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXImIG9wZXJhdG9yPShS
ZW1vdGVSZW5kZXJQYXNzRW5jb2RlciYmKSA9IGRlbGV0ZTsKIAorICAgIFBBTDo6V2ViR1BVOjpS
ZW5kZXJQYXNzRW5jb2RlciYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQorCiAgICAg
dm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICB2b2lkIHNldFBpcGVsaW5lKFdlYkdQ
VUlkZW50aWZpZXIpOwpAQCAtMTExLDcgKzExMiw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRM
YWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVy
PiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3Ry
eTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKICAgICBXZWJHUFVJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuY3Bw
CmluZGV4IDE1NTE1MDM3YzUxNDAyNzJiMGM5OWRmM2MxZGViYzM3ZDA4NTVlZDEuLmNiMDAxOWM0
YmY5OTc5ZTdmNzkzYjQ4NDE3OThkZTIyZmVhZGIxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGlwZWxpbmUuY3BwCkBAIC0zMCwzMSArMzAsMjUgQEAKIAogI2luY2x1ZGUgIlJlbW90ZUJpbmRH
cm91cExheW91dC5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJX
ZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVQmluZEdyb3VwTGF5b3V0Lmg+CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVSZW5kZXJQaXBlbGluZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlUmVuZGVy
UGlwZWxpbmU6OlJlbW90ZVJlbmRlclBpcGVsaW5lKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGlu
ZSYgcmVuZGVyUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK1JlbW90ZVJlbmRlclBpcGVsaW5lOjpSZW1vdGVSZW5kZXJQaXBlbGluZShQQUw6Oldl
YkdQVTo6UmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lLCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2lu
ZyhyZW5kZXJQaXBlbGluZSkKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkp
CiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKICAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwg
bV9iYWNraW5nKTsKIH0KIAotUmVtb3RlUmVuZGVyUGlwZWxpbmU6On5SZW1vdGVSZW5kZXJQaXBl
bGluZSgpCi17Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVy
KTsKLX0KK1JlbW90ZVJlbmRlclBpcGVsaW5lOjp+UmVtb3RlUmVuZGVyUGlwZWxpbmUoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGlwZWxpbmU6OmdldEJpbmRHcm91cExheW91dCh1
aW50MzJfdCBpbmRleCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8g
YmluZEdyb3VwTGF5b3V0ID0gbV9iYWNraW5nLT5nZXRCaW5kR3JvdXBMYXlvdXQoaW5kZXgpOwot
ICAgIGF1dG8gcmVtb3RlQmluZEdyb3VwTGF5b3V0ID0gUmVtb3RlQmluZEdyb3VwTGF5b3V0Ojpj
cmVhdGUoYmluZEdyb3VwTGF5b3V0LCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlk
ZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQmluZEdyb3VwTGF5
b3V0KTsKKyAgICBhdXRvIHJlbW90ZUJpbmRHcm91cExheW91dCA9IFJlbW90ZUJpbmRHcm91cExh
eW91dDo6Y3JlYXRlKGJpbmRHcm91cExheW91dCwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsK
KyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZUJpbmRHcm91cExh
eW91dCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGlwZWxpbmU6OnNldExhYmVsKFN0cmluZyYm
IGxhYmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oCmluZGV4IGJjNmI5NjU3NWRjY2Qz
YmY5YzA2YzI4OTIxY2Y5NWQ2MGM4NjY1ODAuLmU3MDRlY2RkMDg0ODcxMWYyMmJjZTg0MmY2NWVj
NGVlMjFmN2ZjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmgKQEAgLTQwLDI4ICs0
MCwyOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBP
YmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVJlbmRl
clBpcGVsaW5lIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUEFMOjpX
ZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGlw
ZWxpbmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5l
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBp
cGVsaW5lKHJlbmRlclBpcGVsaW5lLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRp
ZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJQaXBlbGlu
ZShyZW5kZXJQaXBlbGluZSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgflJlbW90ZVJlbmRlclBpcGVsaW5lKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5k
IGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIGZyaWVuZCBjbGFzcyBXZWJHUFU6Ok9iamVjdEhl
YXA7CiAKLSAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxp
bmUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BV
SWRlbnRpZmllcik7CisgICAgUmVtb3RlUmVuZGVyUGlwZWxpbmUoUEFMOjpXZWJHUFU6OlJlbmRl
clBpcGVsaW5lJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAg
ICBSZW1vdGVSZW5kZXJQaXBlbGluZShjb25zdCBSZW1vdGVSZW5kZXJQaXBlbGluZSYpID0gZGVs
ZXRlOwogICAgIFJlbW90ZVJlbmRlclBpcGVsaW5lKFJlbW90ZVJlbmRlclBpcGVsaW5lJiYpID0g
ZGVsZXRlOwogICAgIFJlbW90ZVJlbmRlclBpcGVsaW5lJiBvcGVyYXRvcj0oY29uc3QgUmVtb3Rl
UmVuZGVyUGlwZWxpbmUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJQaXBlbGluZSYgb3Bl
cmF0b3I9KFJlbW90ZVJlbmRlclBpcGVsaW5lJiYpID0gZGVsZXRlOwogCisgICAgUEFMOjpXZWJH
UFU6OlJlbmRlclBpcGVsaW5lJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKICAg
ICB2b2lkIGRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2UmLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIHZvaWQgZ2V0QmluZEdyb3VwTGF5
b3V0KHVpbnQzMl90IGluZGV4LCBXZWJHUFVJZGVudGlmaWVyKTsKQEAgLTY5LDcgKzcwLDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6Oldl
YkdQVTo6UmVuZGVyUGlwZWxpbmU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RI
ZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBs
ZXIuY3BwCmluZGV4IGE3NmI2OTQ1ZDU3ODNmZjAwYzg5Nzk1ZWQ0MjNjNTJiMDBjMDRiYWQuLjZm
YzMyMTEzMTdiNjVjY2I1Yjg3N2QxMTgxMDQ1YWE4YWQ2ZDExY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVy
LmNwcApAQCAtMjksMjQgKzI5LDE4IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTYW1wbGVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVTYW1wbGVyOjpSZW1vdGVTYW1wbGVyKFBBTDo6V2Vi
R1BVOjpTYW1wbGVyJiBzYW1wbGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdp
c3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCitSZW1vdGVTYW1wbGVyOjpSZW1vdGVTYW1wbGVyKFBBTDo6V2ViR1BVOjpTYW1w
bGVyJiBzYW1wbGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhzYW1wbGVyKQotICAgICwgbV9vYmpl
Y3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFw
KQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3Ry
eS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVTYW1wbGVy
Ojp+UmVtb3RlU2FtcGxlcigpCi17Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3Qo
bV9pZGVudGlmaWVyKTsKLX0KK1JlbW90ZVNhbXBsZXI6On5SZW1vdGVTYW1wbGVyKCkgPSBkZWZh
dWx0OwogCiB2b2lkIFJlbW90ZVNhbXBsZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVNhbXBsZXIuaAppbmRleCBhYzkwMzhhNWI5Y2E4N2VjYmY1YmZlNDFmODc0NjA0M2UwMDBj
YTMzLi5lMWVlNjM1ZjIyNjJhYzI1NThiYzBiZmI0OGU2MDliN2M5ZjY1YzY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNh
bXBsZXIuaApAQCAtNDAsMzQgKzQwLDM0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0K
IAogY2xhc3MgUmVtb3RlU2FtcGxlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VS
ZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVTYW1wbGVyPiBjcmVhdGUo
UEFMOjpXZWJHUFU6OlNhbXBsZXImIHNhbXBsZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9i
amVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVNhbXBsZXI+IGNyZWF0ZShQ
QUw6OldlYkdQVTo6U2FtcGxlciYgc2FtcGxlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZW1vdGVTYW1wbGVyKHNhbXBsZXIsIG9iamVjdFJlZ2lzdHJ5LCBvYmpl
Y3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90
ZVNhbXBsZXIoc2FtcGxlciwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgflJlbW90ZVNhbXBsZXIoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3Mg
T2JqZWN0UmVnaXN0cnk7CisgICAgZnJpZW5kIGNsYXNzIFdlYkdQVTo6T2JqZWN0SGVhcDsKIAot
ICAgIFJlbW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6OlNhbXBsZXImLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUmVt
b3RlU2FtcGxlcihQQUw6OldlYkdQVTo6U2FtcGxlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdl
YkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlU2FtcGxlcihjb25zdCBSZW1vdGVTYW1wbGVy
JikgPSBkZWxldGU7CiAgICAgUmVtb3RlU2FtcGxlcihSZW1vdGVTYW1wbGVyJiYpID0gZGVsZXRl
OwogICAgIFJlbW90ZVNhbXBsZXImIG9wZXJhdG9yPShjb25zdCBSZW1vdGVTYW1wbGVyJikgPSBk
ZWxldGU7CiAgICAgUmVtb3RlU2FtcGxlciYgb3BlcmF0b3I9KFJlbW90ZVNhbXBsZXImJikgPSBk
ZWxldGU7CiAKKyAgICBQQUw6OldlYkdQVTo6U2FtcGxlciYgYmFja2luZygpIHsgcmV0dXJuIG1f
YmFja2luZzsgfQorCiAgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICB2b2lk
IHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6U2FtcGxlcj4gbV9i
YWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAg
ICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CiAgICAgV2ViR1BVSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3BwCmluZGV4IDQ1
YWMwZDNmNzM2NWMxOWI1NDg4Y2MxZGQwOTRkMjJhMTQ3ZTAzNjcuLjgxYjQwNTA2NWYzMDBkMTAz
NmMwMzYzNzgwYjNjNjE1NGZkYzc5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5jcHAK
QEAgLTI5LDI2ICsyOSwyMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUg
IldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25JbmZvLmg+CiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21waWxhdGlvbk1lc3NhZ2UuaD4K
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZS5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlU2hhZGVyTW9kdWxlOjpSZW1vdGVTaGFkZXJNb2R1
bGUoUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVTaGFkZXJNb2R1bGU6OlJlbW90
ZVNoYWRlck1vZHVsZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUsIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIDogbV9iYWNraW5nKHNoYWRlck1vZHVsZSkKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnko
b2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKICAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0
KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAotUmVtb3RlU2hhZGVyTW9kdWxlOjp+UmVt
b3RlU2hhZGVyTW9kdWxlKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdCht
X2lkZW50aWZpZXIpOwotfQorUmVtb3RlU2hhZGVyTW9kdWxlOjp+UmVtb3RlU2hhZGVyTW9kdWxl
KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbW90ZVNoYWRlck1vZHVsZTo6Y29tcGlsYXRpb25JbmZv
KFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViR1BVOjpDb21waWxhdGlvbk1l
c3NhZ2U+JiYpPiYmIGNhbGxiYWNrKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmgKaW5kZXgg
Zjk3ZjAxOTZiYjA2N2VkYmNiOTIzNWNkZWMxMDY0ZWMzNDE2NzJiYi4uZDk3MjdkMjg0Yzc3OTEx
MmQyZjNlNGY2OTVlMDJkMWIxNDVkMzBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5oCkBA
IC00MywyOCArNDMsMjkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUg
ewogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBS
ZW1vdGVTaGFkZXJNb2R1bGUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlU2hhZGVyTW9kdWxlPiBjcmVhdGUo
UEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVTaGFkZXJN
b2R1bGU+IGNyZWF0ZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUsIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlU2hhZGVyTW9kdWxl
KHNoYWRlck1vZHVsZSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlU2hhZGVyTW9kdWxlKHNoYWRlck1v
ZHVsZSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJl
bW90ZVNoYWRlck1vZHVsZSgpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RS
ZWdpc3RyeTsKKyAgICBmcmllbmQgY2xhc3MgV2ViR1BVOjpPYmplY3RIZWFwOwogCi0gICAgUmVt
b3RlU2hhZGVyTW9kdWxlKFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAg
UmVtb3RlU2hhZGVyTW9kdWxlKFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmLCBXZWJHUFU6Ok9i
amVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVNoYWRlck1vZHVsZShj
b25zdCBSZW1vdGVTaGFkZXJNb2R1bGUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVTaGFkZXJNb2R1
bGUoUmVtb3RlU2hhZGVyTW9kdWxlJiYpID0gZGVsZXRlOwogICAgIFJlbW90ZVNoYWRlck1vZHVs
ZSYgb3BlcmF0b3I9KGNvbnN0IFJlbW90ZVNoYWRlck1vZHVsZSYpID0gZGVsZXRlOwogICAgIFJl
bW90ZVNoYWRlck1vZHVsZSYgb3BlcmF0b3I9KFJlbW90ZVNoYWRlck1vZHVsZSYmKSA9IGRlbGV0
ZTsKIAorICAgIFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmIGJhY2tpbmcoKSB7IHJldHVybiBt
X2JhY2tpbmc7IH0KKwogICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgdm9p
ZCBjb21waWxhdGlvbkluZm8oV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJH
UFU6OkNvbXBpbGF0aW9uTWVzc2FnZT4mJik+JiYpOwpAQCAtNzIsNyArNzMsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpT
aGFkZXJNb2R1bGU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29i
amVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAg
IFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuY3BwCmlu
ZGV4IGEwMWY0MmQwMDllZTUyNmQxODY4NzYwNTQ4NmEwNDQyZmE1N2Q0M2IuLjY1Nzk2YzljNjJj
ZGFmZjBkYzAzMzkxOTU2ZTcxODQ5ODhhYTU1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmNwcApAQCAt
MzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiUmVtb3RlVGV4dHVyZVZpZXcuaCIKICNpbmNsdWRl
ICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJXZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuaCIKICNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmUuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3Lmg+CkBAIC0zOCwyNSArMzcsMjAgQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVJlbW90ZVRleHR1cmU6OlJlbW90ZVRleHR1cmUoUEFMOjpXZWJHUFU6
OlRleHR1cmUmIHRleHR1cmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK1JlbW90ZVRleHR1cmU6OlJlbW90ZVRleHR1cmUoUEFMOjpXZWJHUFU6OlRleHR1cmUm
IHRleHR1cmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHRleHR1cmUpCi0gICAgLCBtX29iamVjdFJl
Z2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCiAg
ICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFk
ZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZVRleHR1cmU6On5S
ZW1vdGVUZXh0dXJlKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lk
ZW50aWZpZXIpOwotfQorUmVtb3RlVGV4dHVyZTo6flJlbW90ZVRleHR1cmUoKSA9IGRlZmF1bHQ7
CiAKIHZvaWQgUmVtb3RlVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkdQVTo6VGV4dHVyZVZpZXdEZXNjcmlwdG9yPiYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1cmVW
aWV3RGVzY3JpcHRvcj4gY29udmVydGVkRGVzY3JpcHRvcjsKICAgICBpZiAoZGVzY3JpcHRvcikg
ewotICAgICAgICBhdXRvIHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRGcm9tQmFja2luZygqZGVzY3JpcHRvcik7CisgICAgICAgIGF1dG8gcmVzdWx0RGVzY3JpcHRv
ciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoKmRlc2NyaXB0b3IpOwogICAgICAg
ICBBU1NFUlQocmVzdWx0RGVzY3JpcHRvcik7CiAgICAgICAgIGNvbnZlcnRlZERlc2NyaXB0b3Ig
PSBXVEZNb3ZlKHJlc3VsdERlc2NyaXB0b3IpOwogICAgICAgICBpZiAoIWNvbnZlcnRlZERlc2Ny
aXB0b3IpCkBAIC02NCw4ICs1OCw4IEBAIHZvaWQgUmVtb3RlVGV4dHVyZTo6Y3JlYXRlVmlldyhj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6VGV4dHVyZVZpZXdEZXNjcmlwdG9yCiAgICAgfQog
ICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBhdXRvIHRleHR1cmVWaWV3ID0g
bV9iYWNraW5nLT5jcmVhdGVWaWV3KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJl
bW90ZVRleHR1cmVWaWV3ID0gUmVtb3RlVGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlVmlldywg
bV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVj
dEhlYXAuYWRkT2JqZWN0KHJlbW90ZVRleHR1cmVWaWV3KTsKKyAgICBhdXRvIHJlbW90ZVRleHR1
cmVWaWV3ID0gUmVtb3RlVGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlVmlldywgbV9vYmplY3RI
ZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIs
IHJlbW90ZVRleHR1cmVWaWV3KTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0dXJlOjpkZXN0cm95KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlVGV4dHVyZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVUZXh0dXJlLmgKaW5kZXggZGZlY2Y5ZGFmNzA5MWU4OTgwZTkzZmYwZTZjYWMwZTY1MGFh
ODVjZS4uYjUwZWE5MGViMTI5OTRlMzc3OTYyMjZjNTUxNmMzNzBkOGYzNDgxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJl
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVU
ZXh0dXJlLmgKQEAgLTQwLDI5ICs0MCwzMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNw
YWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiBz
dHJ1Y3QgVGV4dHVyZVZpZXdEZXNjcmlwdG9yOwogfQogCiBjbGFzcyBSZW1vdGVUZXh0dXJlIGZp
bmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFJlbW90ZVRleHR1cmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6VGV4dHVyZSYgdGV4
dHVyZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0
YXRpYyBSZWY8UmVtb3RlVGV4dHVyZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpUZXh0dXJlJiB0ZXh0
dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1
cmUodGV4dHVyZSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZSh0ZXh0dXJlLCBvYmplY3RI
ZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlVGV4dHVyZSgp
OwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBmcmll
bmQgY2xhc3MgV2ViR1BVOjpPYmplY3RIZWFwOwogCi0gICAgUmVtb3RlVGV4dHVyZShQQUw6Oldl
YkdQVTo6VGV4dHVyZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhl
YXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVUZXh0dXJlKFBBTDo6V2ViR1BVOjpU
ZXh0dXJlJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBS
ZW1vdGVUZXh0dXJlKGNvbnN0IFJlbW90ZVRleHR1cmUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVU
ZXh0dXJlKFJlbW90ZVRleHR1cmUmJikgPSBkZWxldGU7CiAgICAgUmVtb3RlVGV4dHVyZSYgb3Bl
cmF0b3I9KGNvbnN0IFJlbW90ZVRleHR1cmUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVUZXh0dXJl
JiBvcGVyYXRvcj0oUmVtb3RlVGV4dHVyZSYmKSA9IGRlbGV0ZTsKIAorICAgIFBBTDo6V2ViR1BV
OjpUZXh0dXJlJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKICAgICB2b2lkIGRp
ZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIHZvaWQgY3JlYXRlVmlldyhjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkdQVTo6VGV4dHVyZVZpZXdEZXNjcmlwdG9yPiYsIFdlYkdQVUlkZW50aWZpZXIp
OwpAQCAtNzIsNyArNzMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYp
OwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpUZXh0dXJlPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhl
YXAmIG1fb2JqZWN0SGVhcDsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVRleHR1cmVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwCmluZGV4IGJlODYzZGY1ZjY0MmI4NGMxMDA3MjRm
ODA3YTY2OGIxZjNhZWNjNTEuLjdmYzhhYjY1MzQ3YWY4NjM4MzExOTA2ZDhiNzI0YmIxMDE0Yjk1
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlVGV4dHVyZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwCkBAIC0yOSwyNCArMjksMTggQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0j
aW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1v
dGVUZXh0dXJlVmlldzo6UmVtb3RlVGV4dHVyZVZpZXcoUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3
JiB0ZXh0dXJlVmlldywgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQorUmVtb3RlVGV4dHVyZVZpZXc6OlJlbW90ZVRleHR1cmVWaWV3KFBBTDo6V2ViR1BVOjpUZXh0
dXJlVmlldyYgdGV4dHVyZVZpZXcsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHRleHR1cmVWaWV3KQot
ICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVh
cChvYmplY3RIZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9v
YmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1S
ZW1vdGVUZXh0dXJlVmlldzo6flJlbW90ZVRleHR1cmVWaWV3KCkKLXsKLSAgICBtX29iamVjdFJl
Z2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlVGV4dHVyZVZpZXc6
On5SZW1vdGVUZXh0dXJlVmlldygpID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVUZXh0dXJlVmll
dzo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmgKaW5k
ZXggNDY4N2MzYjgzMzk5ZjQzNjY0ZDkyMTJmZjNhODc4NDQzOWNiZjZjNy4uOTY0NWM4NGEzODZj
YjAyMmFkZTA4MDc4NDcyZTk0NDgyOTUzZWFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuaApA
QCAtNDAsMzQgKzQwLDM0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BV
IHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3Mg
UmVtb3RlVGV4dHVyZVZpZXcgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZVZpZXc+IGNyZWF0ZShQ
QUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3LCBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0dXJlVmll
dz4gY3JlYXRlKFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcsIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZVZpZXcodGV4dHVy
ZVZpZXcsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1cmVWaWV3KHRleHR1cmVWaWV3LCBvYmpl
Y3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlVGV4dHVy
ZVZpZXcoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7Cisg
ICAgZnJpZW5kIGNsYXNzIFdlYkdQVTo6T2JqZWN0SGVhcDsKIAotICAgIFJlbW90ZVRleHR1cmVW
aWV3KFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVUZXh0dXJl
VmlldyhQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJH
UFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVRleHR1cmVWaWV3KGNvbnN0IFJlbW90ZVRleHR1
cmVWaWV3JikgPSBkZWxldGU7CiAgICAgUmVtb3RlVGV4dHVyZVZpZXcoUmVtb3RlVGV4dHVyZVZp
ZXcmJikgPSBkZWxldGU7CiAgICAgUmVtb3RlVGV4dHVyZVZpZXcmIG9wZXJhdG9yPShjb25zdCBS
ZW1vdGVUZXh0dXJlVmlldyYpID0gZGVsZXRlOwogICAgIFJlbW90ZVRleHR1cmVWaWV3JiBvcGVy
YXRvcj0oUmVtb3RlVGV4dHVyZVZpZXcmJikgPSBkZWxldGU7CiAKKyAgICBQQUw6OldlYkdQVTo6
VGV4dHVyZVZpZXcmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAK
ICAgICBSZWY8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3PiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhl
YXAmIG1fb2JqZWN0SGVhcDsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVPYmplY3RIZWFwLmNwcAppbmRleCBkMGEwZWMzMDk0MjgwNTI1NDlkMzIxMjFk
ODQ5ZWY0Yzg5ZTBmNWIxLi5lZTA2YjAwMTdkNTU5NWIyYjM2MjNhMWQ4MjBjZTBmMDI3ZTEzZjll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVU9iamVjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVhcC5jcHAKQEAgLTYxLDI2OCArNjEsMzA0IEBAIE9iamVj
dEhlYXA6On5PYmplY3RIZWFwKCkKIHsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3Qo
UmVtb3RlQWRhcHRlciYgYWRhcHRlcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQWRhcHRlciYgYWRhcHRlcikKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmFkYXB0ZXIsIGFkYXB0ZXIpOworICAgIGF1dG8g
cmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBhZGFwdGVyKTsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6
OmFkZE9iamVjdChSZW1vdGVCaW5kR3JvdXAmIGJpbmRHcm91cCkKK3ZvaWQgT2JqZWN0SGVhcDo6
YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQmluZEdyb3VwJiBi
aW5kR3JvdXApCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZiaW5kR3JvdXAs
IGJpbmRHcm91cCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIs
IGJpbmRHcm91cCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5
KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlQmluZEdyb3VwTGF5b3V0
JiBiaW5kR3JvdXBMYXlvdXQpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZUJpbmRHcm91cExheW91dCYgYmluZEdyb3VwTGF5b3V0
KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmYmluZEdyb3VwTGF5b3V0LCBi
aW5kR3JvdXBMYXlvdXQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlm
aWVyLCBiaW5kR3JvdXBMYXlvdXQpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUJ1ZmZl
ciYgYnVmZmVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBSZW1vdGVCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5hZGQoJmJ1ZmZlciwgYnVmZmVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoaWRlbnRpZmllciwgYnVmZmVyKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVD
b21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVDb21tYW5kQnVmZmVyJiBjb21tYW5k
QnVmZmVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmY29tbWFuZEJ1ZmZl
ciwgY29tbWFuZEJ1ZmZlcik7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50
aWZpZXIsIGNvbW1hbmRCdWZmZXIpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUNvbW1h
bmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQ29tbWFuZEVuY29kZXImIGNvbW1hbmRF
bmNvZGVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmY29tbWFuZEVuY29k
ZXIsIGNvbW1hbmRFbmNvZGVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRl
bnRpZmllciwgY29tbWFuZEVuY29kZXIpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUNv
bXB1dGVQYXNzRW5jb2RlciYgY29tcHV0ZVBhc3NFbmNvZGVyKQordm9pZCBPYmplY3RIZWFwOjph
ZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXImIGNvbXB1dGVQYXNzRW5jb2RlcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoJmNvbXB1dGVQYXNzRW5jb2RlciwgY29tcHV0ZVBhc3NFbmNvZGVyKTsKKyAgICBhdXRv
IHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgY29tcHV0ZVBhc3NFbmNvZGVyKTsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lk
IE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBl
bGluZSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUpCiB7Ci0gICAgYXV0
byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZjb21wdXRlUGlwZWxpbmUsIGNvbXB1dGVQaXBlbGlu
ZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGNvbXB1dGVQ
aXBlbGluZSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
IH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlRGV2aWNlJiBkZXZpY2UpCit2
b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJl
bW90ZURldmljZSYgZGV2aWNlKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgm
ZGV2aWNlLCBkZXZpY2UpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlm
aWVyLCBkZXZpY2UpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRy
eSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUV4dGVybmFsVGV4dHVy
ZSYgZXh0ZXJuYWxUZXh0dXJlKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVy
ZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmV4dGVybmFsVGV4dHVyZSwg
ZXh0ZXJuYWxUZXh0dXJlKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRp
ZmllciwgZXh0ZXJuYWxUZXh0dXJlKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVHUFUm
IGdwdSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUmVtb3RlUGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0KQogewotICAgIGF1dG8g
cmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmZ3B1LCBncHUpOworICAgIGF1dG8gcmVzdWx0ID0gbV9v
YmplY3RzLmFkZChpZGVudGlmaWVyLCBwaXBlbGluZUxheW91dCk7CiAgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRP
YmplY3QoUmVtb3RlUGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0KQordm9pZCBPYmplY3RI
ZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVRdWVyeVNl
dCYgcXVlcnlTZXQpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZwaXBlbGlu
ZUxheW91dCwgcGlwZWxpbmVMYXlvdXQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFk
ZChpZGVudGlmaWVyLCBxdWVyeVNldCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUXVl
cnlTZXQmIHF1ZXJ5U2V0KQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBSZW1vdGVRdWV1ZSYgcXVldWUpCiB7Ci0gICAgYXV0byByZXN1bHQg
PSBtX29iamVjdHMuYWRkKCZxdWVyeVNldCwgcXVlcnlTZXQpOworICAgIGF1dG8gcmVzdWx0ID0g
bV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBxdWV1ZSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3Qo
UmVtb3RlUXVldWUmIHF1ZXVlKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5kZXJCdW5k
bGVFbmNvZGVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmcXVldWUsIHF1
ZXVlKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgcmVuZGVy
QnVuZGxlRW5jb2Rlcik7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlciYgcmVuZGVyQnVuZGxlRW5jb2RlcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0
KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlUmVuZGVyQnVuZGxlJiByZW5kZXJC
dW5kbGUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZyZW5kZXJCdW5kbGVF
bmNvZGVyLCByZW5kZXJCdW5kbGVFbmNvZGVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoaWRlbnRpZmllciwgcmVuZGVyQnVuZGxlKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChS
ZW1vdGVSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2Jq
ZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIm
IHJlbmRlclBhc3NFbmNvZGVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgm
cmVuZGVyQnVuZGxlLCByZW5kZXJCdW5kbGUpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3Rz
LmFkZChpZGVudGlmaWVyLCByZW5kZXJQYXNzRW5jb2Rlcik7CiAgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmpl
Y3QoUmVtb3RlUmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVyKQordm9pZCBPYmpl
Y3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVSZW5k
ZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMuYWRkKCZyZW5kZXJQYXNzRW5jb2RlciwgcmVuZGVyUGFzc0VuY29kZXIpOworICAgIGF1dG8g
cmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCByZW5kZXJQaXBlbGluZSk7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmpl
Y3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lKQor
dm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBS
ZW1vdGVTYW1wbGVyJiBzYW1wbGVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFk
ZCgmcmVuZGVyUGlwZWxpbmUsIHJlbmRlclBpcGVsaW5lKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5hZGQoaWRlbnRpZmllciwgc2FtcGxlcik7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3Qo
UmVtb3RlU2FtcGxlciYgc2FtcGxlcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlU2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUp
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZzYW1wbGVyLCBzYW1wbGVyKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgc2hhZGVyTW9kdWxl
KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12
b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVs
ZSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgUmVtb3RlVGV4dHVyZSYgdGV4dHVyZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoJnNoYWRlck1vZHVsZSwgc2hhZGVyTW9kdWxlKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5hZGQoaWRlbnRpZmllciwgdGV4dHVyZSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3Qo
UmVtb3RlVGV4dHVyZSYgdGV4dHVyZSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlVGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3KQog
ewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmdGV4dHVyZSwgdGV4dHVyZSk7Cisg
ICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHRleHR1cmVWaWV3KTsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lk
IE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcpCit2
b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZ0ZXh0dXJlVmlldywgdGV4dHVy
ZVZpZXcpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19
Ci0KLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUFkYXB0ZXImIGFkYXB0ZXIp
Ci17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZhZGFwdGVyKTsKKyAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoaWRlbnRpZmllcik7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0
KFJlbW90ZUJpbmRHcm91cCYgYmluZEdyb3VwKQorUEFMOjpXZWJHUFU6OkFkYXB0ZXIqIE9iamVj
dEhlYXA6OmNvbnZlcnRBZGFwdGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmYmluZEdyb3VwKTsK
LSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0g
bV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0
cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlQWRhcHRlcj4+KGl0
ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3Rk
OjpnZXQ8UmVmPFJlbW90ZUFkYXB0ZXI+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9
CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUJpbmRHcm91cExheW91dCYg
YmluZEdyb3VwTGF5b3V0KQorUEFMOjpXZWJHUFU6OkJpbmRHcm91cCogT2JqZWN0SGVhcDo6Y29u
dmVydEJpbmRHcm91cEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
LSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmJpbmRHcm91cExheW91dCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1f
b2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMu
ZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZUJpbmRHcm91cD4+KGl0
ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3Rk
OjpnZXQ8UmVmPFJlbW90ZUJpbmRHcm91cD4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsK
IH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQnVmZmVyJiBidWZmZXIp
CitQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0KiBPYmplY3RIZWFwOjpjb252ZXJ0QmluZEdy
b3VwTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmYnVmZmVyKTsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQo
aWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlQmluZEdyb3VwTGF5b3V0Pj4oaXRlcmF0b3It
PnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxS
ZWY8UmVtb3RlQmluZEdyb3VwTGF5b3V0Pj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwog
fQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVDb21tYW5kQnVmZmVyJiBj
b21tYW5kQnVmZmVyKQorUEFMOjpXZWJHUFU6OkJ1ZmZlciogT2JqZWN0SGVhcDo6Y29udmVydEJ1
ZmZlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmNvbW1hbmRCdWZmZXIpOwotICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmlu
ZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PFJlZjxSZW1v
dGVCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0
SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUNvbW1hbmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlcikK
K1BBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyKiBPYmplY3RIZWFwOjpjb252ZXJ0Q29tbWFuZEJ1
ZmZlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmNvbW1hbmRFbmNvZGVyKTsKLSAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZp
bmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAh
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlcj4+KGl0ZXJhdG9y
LT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8
UmVmPFJlbW90ZUNvbW1hbmRCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9
CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
ciYgY29tcHV0ZVBhc3NFbmNvZGVyKQorUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyKiBPYmpl
Y3RIZWFwOjpjb252ZXJ0Q29tbWFuZEVuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZjb21w
dXRlUGFzc0VuY29kZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAg
IGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRl
cmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxS
ZW1vdGVDb21tYW5kRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJlbW90ZUNvbW1hbmRFbmNvZGVyPj4o
aXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92
ZU9iamVjdChSZW1vdGVDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSkKK1BBTDo6V2Vi
R1BVOjpDb21wdXRlUGFzc0VuY29kZXIqIE9iamVjdEhlYXA6OmNvbnZlcnRDb21wdXRlUGFzc0Vu
Y29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0
byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZjb21wdXRlUGlwZWxpbmUpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMu
ZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8
ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+Pihp
dGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0
ZDo6Z2V0PFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpLT5i
YWNraW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZURldmlj
ZSYgZGV2aWNlKQorUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSogT2JqZWN0SGVhcDo6Y29u
dmVydENvbXB1dGVQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmRldmljZSk7Ci0gICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2Jq
ZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5k
KCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4+
KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAm
c3RkOjpnZXQ8UmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJh
Y2tpbmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlRXh0ZXJu
YWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUpCitQQUw6OldlYkdQVTo6RGV2aWNlKiBPYmplY3RI
ZWFwOjpjb252ZXJ0RGV2aWNlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmZXh0ZXJuYWxUZXh0dXJl
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2Jq
ZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlRGV2aWNlPj4o
aXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZz
dGQ6OmdldDxSZWY8UmVtb3RlRGV2aWNlPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwog
fQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVHUFUmIGdwdSkKK1BBTDo6
V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUqIE9iamVjdEhlYXA6OmNvbnZlcnRFeHRlcm5hbFRleHR1
cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZncHUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVy
KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxSZW1vdGVFeHRlcm5hbFRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PFJlZjxSZW1vdGVF
eHRlcm5hbFRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKLXZvaWQg
T2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxh
eW91dCkKK1BBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCogT2JqZWN0SGVhcDo6Y29udmVydFBp
cGVsaW5lTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewot
ICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcGlwZWxpbmVMYXlvdXQpOwotICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29i
amVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVu
ZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVQaXBlbGluZUxheW91dD4+
KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAm
c3RkOjpnZXQ8UmVmPFJlbW90ZVBpcGVsaW5lTGF5b3V0Pj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFj
a2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVRdWVyeVNl
dCYgcXVlcnlTZXQpCitQQUw6OldlYkdQVTo6UXVlcnlTZXQqIE9iamVjdEhlYXA6OmNvbnZlcnRR
dWVyeVNldEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnF1ZXJ5U2V0KTsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQo
aWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlUXVlcnlTZXQ+PihpdGVyYXRvci0+dmFsdWUp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PFJlZjxSZW1v
dGVRdWVyeVNldD4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9pZCBPYmpl
Y3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUXVldWUmIHF1ZXVlKQorUEFMOjpXZWJHUFU6OlF1
ZXVlKiBPYmplY3RIZWFwOjpjb252ZXJ0UXVldWVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZxdWV1
ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRv
ciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29i
amVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZVF1ZXVlPj4o
aXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZz
dGQ6OmdldDxSZWY8UmVtb3RlUXVldWU+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9
CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXImIHJlbmRlckJ1bmRsZUVuY29kZXIpCitQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rl
ciogT2JqZWN0SGVhcDo6Y29udmVydFJlbmRlckJ1bmRsZUVuY29kZXJGcm9tQmFja2luZyhXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
cmVtb3ZlKCZyZW5kZXJCdW5kbGVFbmNvZGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7
CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAK
LXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRlckJ1bmRsZSYgcmVuZGVy
QnVuZGxlKQorUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSogT2JqZWN0SGVhcDo6Y29udmVydFJl
bmRlckJ1bmRsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAg
ICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnJlbmRlckJ1bmRsZSk7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0
cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZVJlbmRlckJ1bmRsZT4+KGl0ZXJh
dG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpn
ZXQ8UmVmPFJlbW90ZVJlbmRlckJ1bmRsZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsK
IH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXImIHJlbmRlclBhc3NFbmNvZGVyKQorUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyKiBP
YmplY3RIZWFwOjpjb252ZXJ0UmVuZGVyUGFzc0VuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3Zl
KCZyZW5kZXJQYXNzRW5jb2Rlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7
CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlm
IChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxSZWY8UmVtb3RlUmVuZGVyUGFz
c0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0
SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSkK
K1BBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSogT2JqZWN0SGVhcDo6Y29udmVydFJlbmRlclBp
cGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1
dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcmVuZGVyUGlwZWxpbmUpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMu
ZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8
ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVSZW5kZXJQaXBlbGluZT4+KGl0ZXJh
dG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpn
ZXQ8UmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygp
OwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVTYW1wbGVyJiBzYW1w
bGVyKQorUEFMOjpXZWJHUFU6OlNhbXBsZXIqIE9iamVjdEhlYXA6OmNvbnZlcnRTYW1wbGVyRnJv
bUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0
ID0gbV9vYmplY3RzLnJlbW92ZSgmc2FtcGxlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIp
OworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFJlbW90ZVNhbXBsZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PFJlZjxSZW1vdGVTYW1wbGVyPj4o
aXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92
ZU9iamVjdChSZW1vdGVTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSkKK1BBTDo6V2ViR1BVOjpT
aGFkZXJNb2R1bGUqIE9iamVjdEhlYXA6OmNvbnZlcnRTaGFkZXJNb2R1bGVGcm9tQmFja2luZyhX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMucmVtb3ZlKCZzaGFkZXJNb2R1bGUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxSZW1vdGVTaGFkZXJNb2R1bGU+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PFJlZjxSZW1vdGVTaGFkZXJNb2R1
bGU+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6
cmVtb3ZlT2JqZWN0KFJlbW90ZVRleHR1cmUmIHRleHR1cmUpCitQQUw6OldlYkdQVTo6VGV4dHVy
ZSogT2JqZWN0SGVhcDo6Y29udmVydFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZ0ZXh0
dXJlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJh
dG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1f
b2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlVGV4dHVy
ZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biAmc3RkOjpnZXQ8UmVmPFJlbW90ZVRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5n
KCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVRleHR1cmVWaWV3
JiB0ZXh0dXJlVmlldykKK1BBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyogT2JqZWN0SGVhcDo6Y29u
dmVydFRleHR1cmVWaWV3RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmdGV4dHVyZVZpZXcpOwotICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29i
amVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVu
ZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVUZXh0dXJlVmlldz4+KGl0
ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3Rk
OjpnZXQ8UmVmPFJlbW90ZVRleHR1cmVWaWV3Pj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAu
aAppbmRleCBhMTZjZDI2Njk4MTM3N2NhOTE4ZTUxMGI2OGZjODVmMzhlNDE5ZDkyLi45MDY0MTgw
NTg3OTY5OTgyYzAwYTY3ZjQ0NTJkODM1ZjJmYTQ3MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAu
aApAQCAtMjcsMTIgKzI3LDM4IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbmNs
dWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250
ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPGZ1bmN0aW9u
YWw+CiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgUEFM
OjpXZWJHUFUgeworY2xhc3MgQWRhcHRlcjsKK2NsYXNzIEJpbmRHcm91cDsKK2NsYXNzIEJpbmRH
cm91cExheW91dDsKK2NsYXNzIEJ1ZmZlcjsKK2NsYXNzIENvbW1hbmRCdWZmZXI7CitjbGFzcyBD
b21tYW5kRW5jb2RlcjsKK2NsYXNzIENvbXB1dGVQYXNzRW5jb2RlcjsKK2NsYXNzIENvbXB1dGVQ
aXBlbGluZTsKK2NsYXNzIERldmljZTsKK2NsYXNzIEV4dGVybmFsVGV4dHVyZTsKK2NsYXNzIEdQ
VTsKK2NsYXNzIFBpcGVsaW5lTGF5b3V0OworY2xhc3MgUXVlcnlTZXQ7CitjbGFzcyBRdWV1ZTsK
K2NsYXNzIFJlbmRlckJ1bmRsZUVuY29kZXI7CitjbGFzcyBSZW5kZXJCdW5kbGU7CitjbGFzcyBS
ZW5kZXJQYXNzRW5jb2RlcjsKK2NsYXNzIFJlbmRlclBpcGVsaW5lOworY2xhc3MgU2FtcGxlcjsK
K2NsYXNzIFNoYWRlck1vZHVsZTsKK2NsYXNzIFRleHR1cmU7CitjbGFzcyBUZXh0dXJlVmlldzsK
K30KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVBZGFwdGVyOwpAQCAtNDUsNyAr
NzEsNiBAQCBjbGFzcyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI7CiBjbGFzcyBSZW1vdGVDb21w
dXRlUGlwZWxpbmU7CiBjbGFzcyBSZW1vdGVEZXZpY2U7CiBjbGFzcyBSZW1vdGVFeHRlcm5hbFRl
eHR1cmU7Ci1jbGFzcyBSZW1vdGVHUFU7CiBjbGFzcyBSZW1vdGVQaXBlbGluZUxheW91dDsKIGNs
YXNzIFJlbW90ZVF1ZXJ5U2V0OwogY2xhc3MgUmVtb3RlUXVldWU7CkBAIC02MSw1OCArODYsNjUg
QEAgY2xhc3MgUmVtb3RlVGV4dHVyZVZpZXc7CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiAKLWNsYXNzIE9iamVjdEhlYXAgZmluYWwgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8T2JqZWN0
SGVhcD4geworY2xhc3MgT2JqZWN0SGVhcCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9iamVj
dEhlYXA+LCBwdWJsaWMgV2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBPYmplY3RIZWFwKCk7CisgICAg
c3RhdGljIFJlZjxPYmplY3RIZWFwPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgT2JqZWN0SGVhcCgpKTsKKyAgICB9CisKICAgICB+T2JqZWN0SGVhcCgpOwog
Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlQWRhcHRlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0
KFJlbW90ZUJpbmRHcm91cCYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUJpbmRHcm91cExh
eW91dCYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUJ1ZmZlciYpOwotICAgIHZvaWQgYWRk
T2JqZWN0KFJlbW90ZUNvbW1hbmRCdWZmZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVD
b21tYW5kRW5jb2RlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUNvbXB1dGVQYXNzRW5j
b2RlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUNvbXB1dGVQaXBlbGluZSYpOwotICAg
IHZvaWQgYWRkT2JqZWN0KFJlbW90ZURldmljZSYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90
ZUV4dGVybmFsVGV4dHVyZSYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUdQVSYpOwotICAg
IHZvaWQgYWRkT2JqZWN0KFJlbW90ZVBpcGVsaW5lTGF5b3V0Jik7Ci0gICAgdm9pZCBhZGRPYmpl
Y3QoUmVtb3RlUXVlcnlTZXQmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVRdWV1ZSYpOwot
ICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImKTsKLSAgICB2b2lk
IGFkZE9iamVjdChSZW1vdGVSZW5kZXJCdW5kbGUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1v
dGVSZW5kZXJQYXNzRW5jb2RlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVJlbmRlclBp
cGVsaW5lJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlU2FtcGxlciYpOwotICAgIHZvaWQg
YWRkT2JqZWN0KFJlbW90ZVNoYWRlck1vZHVsZSYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90
ZVRleHR1cmUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVUZXh0dXJlVmlldyYpOworICAg
IHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFJlbW90ZUFkYXB0ZXImKTsKKyAgICB2
b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVCaW5kR3JvdXAmKTsKKyAgICB2
b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVCaW5kR3JvdXBMYXlvdXQmKTsK
KyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVCdWZmZXImKTsKKyAg
ICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVDb21tYW5kQnVmZmVyJik7
CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQ29tbWFuZEVuY29k
ZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVDb21wdXRl
UGFzc0VuY29kZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1v
dGVDb21wdXRlUGlwZWxpbmUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVy
LCBSZW1vdGVEZXZpY2UmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBS
ZW1vdGVFeHRlcm5hbFRleHR1cmUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyLCBSZW1vdGVQaXBlbGluZUxheW91dCYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIsIFJlbW90ZVF1ZXJ5U2V0Jik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciwgUmVtb3RlUXVldWUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyLCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyQnVuZGxlJik7CisgICAgdm9pZCBhZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXImKTsKKyAgICB2b2lkIGFk
ZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJQaXBlbGluZSYpOworICAgIHZv
aWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFJlbW90ZVNhbXBsZXImKTsKKyAgICB2b2lk
IGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVTaGFkZXJNb2R1bGUmKTsKKyAgICB2
b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVUZXh0dXJlJik7CisgICAgdm9p
ZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlVGV4dHVyZVZpZXcmKTsKIAotICAg
IHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZUFkYXB0ZXImKTsKLSAgICB2b2lkIHJlbW92ZU9iamVj
dChSZW1vdGVCaW5kR3JvdXAmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVCaW5kR3Jv
dXBMYXlvdXQmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVCdWZmZXImKTsKLSAgICB2
b2lkIHJlbW92ZU9iamVjdChSZW1vdGVDb21tYW5kQnVmZmVyJik7Ci0gICAgdm9pZCByZW1vdmVP
YmplY3QoUmVtb3RlQ29tbWFuZEVuY29kZXImKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1v
dGVDb21wdXRlUGFzc0VuY29kZXImKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVDb21w
dXRlUGlwZWxpbmUmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVEZXZpY2UmKTsKLSAg
ICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVFeHRlcm5hbFRleHR1cmUmKTsKLSAgICB2b2lkIHJl
bW92ZU9iamVjdChSZW1vdGVHUFUmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVQaXBl
bGluZUxheW91dCYpOwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVF1ZXJ5U2V0Jik7Ci0g
ICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUXVldWUmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVj
dChSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVt
b3RlUmVuZGVyQnVuZGxlJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXImKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJQaXBlbGluZSYp
OwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVNhbXBsZXImKTsKLSAgICB2b2lkIHJlbW92
ZU9iamVjdChSZW1vdGVTaGFkZXJNb2R1bGUmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1v
dGVUZXh0dXJlJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlVGV4dHVyZVZpZXcmKTsK
KyAgICB2b2lkIHJlbW92ZU9iamVjdChXZWJHUFVJZGVudGlmaWVyKTsKKworICAgIFBBTDo6V2Vi
R1BVOjpBZGFwdGVyKiBjb252ZXJ0QWRhcHRlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIp
IGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAqIGNvbnZlcnRCaW5kR3JvdXBGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6QmluZEdy
b3VwTGF5b3V0KiBjb252ZXJ0QmluZEdyb3VwTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkJ1ZmZlciogY29udmVydEJ1ZmZlckZyb21C
YWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpDb21tYW5k
QnVmZmVyKiBjb252ZXJ0Q29tbWFuZEJ1ZmZlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIp
IGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciogY29udmVydENvbW1hbmRF
bmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJH
UFU6OkNvbXB1dGVQYXNzRW5jb2RlciogY29udmVydENvbXB1dGVQYXNzRW5jb2RlckZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpDb21wdXRlUGlw
ZWxpbmUqIGNvbnZlcnRDb21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6RGV2aWNlKiBjb252ZXJ0RGV2aWNlRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4
dHVyZSogY29udmVydEV4dGVybmFsVGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIp
IGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCogY29udmVydFBpcGVsaW5l
TGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJH
UFU6OlF1ZXJ5U2V0KiBjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UXVldWUqIGNvbnZlcnRRdWV1ZUZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVF
bmNvZGVyKiBjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUqIGNvbnZlcnRSZW5k
ZXJCdW5kbGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6Oldl
YkdQVTo6UmVuZGVyUGFzc0VuY29kZXIqIGNvbnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBl
bGluZSogY29udmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikg
ZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlNhbXBsZXIqIGNvbnZlcnRTYW1wbGVyRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVs
ZSogY29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFs
OworICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlKiBjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyogY29u
dmVydFRleHR1cmVWaWV3RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CiAKIHBy
aXZhdGU6CisgICAgT2JqZWN0SGVhcCgpOworCiAgICAgdXNpbmcgT2JqZWN0ID0gc3RkOjp2YXJp
YW50PAogICAgICAgICBzdGQ6Om1vbm9zdGF0ZSwKICAgICAgICAgUmVmPFJlbW90ZUFkYXB0ZXI+
LApAQCAtMTI1LDcgKzE1Nyw2IEBAIHByaXZhdGU6CiAgICAgICAgIFJlZjxSZW1vdGVDb21wdXRl
UGlwZWxpbmU+LAogICAgICAgICBSZWY8UmVtb3RlRGV2aWNlPiwKICAgICAgICAgUmVmPFJlbW90
ZUV4dGVybmFsVGV4dHVyZT4sCi0gICAgICAgIFJlZjxSZW1vdGVHUFU+LAogICAgICAgICBSZWY8
UmVtb3RlUGlwZWxpbmVMYXlvdXQ+LAogICAgICAgICBSZWY8UmVtb3RlUXVlcnlTZXQ+LAogICAg
ICAgICBSZWY8UmVtb3RlUXVldWU+LApAQCAtMTM4LDkgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFJlZjxSZW1vdGVUZXh0dXJlPiwKICAgICAgICAgUmVmPFJlbW90ZVRleHR1cmVWaWV3Pgog
ICAgID47Ci0gICAgSGFzaE1hcDx2b2lkKiwgT2JqZWN0PiBtX29iamVjdHM7Ci0KLSAgICBPYmpl
Y3RSZWdpc3RyeSBtX29iamVjdFJlZ2lzdHJ5OworICAgIEhhc2hNYXA8V2ViR1BVSWRlbnRpZmll
ciwgT2JqZWN0PiBtX29iamVjdHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYWIyN2ExYTVmYmU0ZGU0MGJiYmUyZDU2NWVkMGRjMzM1N2ZlMDVhOC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDM4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCi0KLSNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCi0KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVS5oPgotI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQWRhcHRlci5oPgotI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUJ1ZmZlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
Q29tbWFuZEVuY29kZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNv
bXB1dGVQYXNzRW5jb2Rlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVE
ZXZpY2UuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4
dHVyZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxpbmVMYXlv
dXQuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+Ci0j
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWV1ZS5oPgotI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlLmg+Ci0jaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVyLmg+Ci0jaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oPgotI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaD4KLSNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNhbXBsZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVVGV4dHVyZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
VGV4dHVyZVZpZXcuaD4KLQotbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKLQotT2JqZWN0UmVn
aXN0cnk6Ok9iamVjdFJlZ2lzdHJ5KCkKLXsKLX0KLQotT2JqZWN0UmVnaXN0cnk6On5PYmplY3RS
ZWdpc3RyeSgpCi17Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFwdGVyKQotewot
ICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBhZGFwdGVyKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9i
amVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6
OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXApCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29i
amVjdHMuYWRkKGlkZW50aWZpZXIsIGJpbmRHcm91cCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2Jq
ZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExh
eW91dCYgYmluZEdyb3VwTGF5b3V0KQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFk
ZChpZGVudGlmaWVyLCBiaW5kR3JvdXBMYXlvdXQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVj
dChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZl
cikKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgYnVmZmVy
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12
b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
LCBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlcikKLXsKLSAgICBhdXRv
IHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgY29tbWFuZEJ1ZmZlcik7Ci0gICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmpl
Y3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpX
ZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlcikKLXsKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgY29tbWFuZEVuY29kZXIpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVn
aXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BV
OjpDb21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2RlcikKLXsKLSAgICBhdXRvIHJl
c3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgY29tcHV0ZVBhc3NFbmNvZGVyKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9i
amVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6
OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUpCi17Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGNvbXB1dGVQaXBlbGluZSk7Ci0gICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmpl
Y3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpX
ZWJHUFU6OkRldmljZSYgZGV2aWNlKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFk
ZChpZGVudGlmaWVyLCBkZXZpY2UpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmIGV4dGVy
bmFsVGV4dHVyZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmll
ciwgZXh0ZXJuYWxUZXh0dXJlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6R1BVJiBncHUpCi17Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGdwdSk7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6
YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlBpcGVs
aW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoaWRlbnRpZmllciwgcGlwZWxpbmVMYXlvdXQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9i
amVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpRdWVyeVNldCYg
cXVlcnlTZXQpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIs
IHF1ZXJ5U2V0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkp
OwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UXVldWUmIHF1ZXVlKQotewotICAgIGF1dG8gcmVzdWx0
ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBxdWV1ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRk
T2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlckJ1
bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIpCi17Ci0gICAgYXV0byByZXN1bHQgPSBt
X29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHJlbmRlckJ1bmRsZUVuY29kZXIpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVn
aXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BV
OjpSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2Jq
ZWN0cy5hZGQoaWRlbnRpZmllciwgcmVuZGVyQnVuZGxlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRP
YmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGFz
c0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVyKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmpl
Y3RzLmFkZChpZGVudGlmaWVyLCByZW5kZXJQYXNzRW5jb2Rlcik7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6
YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRl
clBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoaWRlbnRpZmllciwgcmVuZGVyUGlwZWxpbmUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9i
amVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpTYW1wbGVyJiBz
YW1wbGVyKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBz
YW1wbGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwot
fQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUpCi17Ci0gICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHNoYWRlck1vZHVsZSk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBP
YmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFM
OjpXZWJHUFU6OlRleHR1cmUmIHRleHR1cmUpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMuYWRkKGlkZW50aWZpZXIsIHRleHR1cmUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4
dHVyZVZpZXcpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIs
IHRleHR1cmVWaWV3KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjpyZW1vdmVPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZShp
ZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLX0KLQotUEFM
OjpXZWJHUFU6OkFkYXB0ZXIqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0QWRhcHRlckZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0g
bV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0
cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFBBTDo6V2ViR1BVOjpBZGFwdGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBB
TDo6V2ViR1BVOjpBZGFwdGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpX
ZWJHUFU6OkJpbmRHcm91cCogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9
IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVj
dHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFBBTDo6V2ViR1BVOjpCaW5kR3JvdXA+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1Q
QUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0KiBPYmplY3RSZWdpc3RyeTo6Y29udmVydEJpbmRH
cm91cExheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0
ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRv
ci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4+KGl0
ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpCdWZmZXIqIE9iamVjdFJl
Z2lzdHJ5Ojpjb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsK
LSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJ1ZmZlcj4+KGl0ZXJh
dG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpn
ZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QnVmZmVyPj4oaXRlcmF0b3It
PnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIqIE9iamVjdFJl
Z2lzdHJ5Ojpjb252ZXJ0Q29tbWFuZEJ1ZmZlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRp
Zmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21tYW5k
QnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21t
YW5kQnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkNv
bW1hbmRFbmNvZGVyKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydENvbW1hbmRFbmNvZGVyRnJvbUJh
Y2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmpl
Y3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0
KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIqIE9iamVjdFJlZ2lzdHJ5
Ojpjb252ZXJ0Q29tcHV0ZVBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlm
aWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbXB1dGVQ
YXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6
Q29tcHV0ZVBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpX
ZWJHUFU6OkNvbXB1dGVQaXBlbGluZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRDb21wdXRlUGlw
ZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0
byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRv
ciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPj4oaXRlcmF0b3ItPnZh
bHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+PihpdGVyYXRv
ci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6RGV2aWNlKiBPYmplY3RSZWdpc3Ry
eTo6Y29udmVydERldmljZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
LXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAg
aWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpEZXZpY2U+PihpdGVyYXRvci0+
dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkRldmljZT4+KGl0ZXJhdG9yLT52YWx1
ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUqIE9iamVjdFJlZ2lz
dHJ5Ojpjb252ZXJ0RXh0ZXJuYWxUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlm
aWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkV4dGVybmFs
VGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6RXh0
ZXJuYWxUZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6
OkdQVSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRHUFVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlk
ZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6R1BV
Pj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
ICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpHUFU+PihpdGVy
YXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQqIE9i
amVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5k
KGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6
UGlwZWxpbmVMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJH
UFU6OlBpcGVsaW5lTGF5b3V0Pj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpX
ZWJHUFU6OlF1ZXJ5U2V0KiBPYmplY3RSZWdpc3RyeTo6Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3Rz
LmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OlF1ZXJ5U2V0Pj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBB
TDo6V2ViR1BVOjpRdWVyeVNldD4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6
V2ViR1BVOjpRdWV1ZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRRdWV1ZUZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmpl
Y3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQo
KSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpRdWV1ZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQ
VTo6UXVldWU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6UmVu
ZGVyQnVuZGxlRW5jb2RlciogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJCdW5kbGVFbmNv
ZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8g
aXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3Ig
PT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+PihpdGVyYXRvci0+
dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+Pihp
dGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlKiBP
YmplY3RSZWdpc3RyeTo6Y29udmVydFJlbmRlckJ1bmRsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQo
aWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpS
ZW5kZXJCdW5kbGU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZT4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BV
OjpSZW5kZXJQYXNzRW5jb2RlciogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJQYXNzRW5j
b2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRv
IGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9y
ID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52
YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+PihpdGVy
YXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUqIE9i
amVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5k
KGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6
UmVuZGVyUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJH
UFU6OlJlbmRlclBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpX
ZWJHUFU6OlNhbXBsZXIqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0U2FtcGxlckZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
YmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5l
bmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBB
TDo6V2ViR1BVOjpTYW1wbGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpTYW1wbGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJH
UFU6OlNoYWRlck1vZHVsZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRTaGFkZXJNb2R1bGVGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRv
ciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29i
amVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgp
OwotfQotCi1QQUw6OldlYkdQVTo6VGV4dHVyZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRUZXh0
dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8g
aXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3Ig
PT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwot
fQotCi1QQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0VGV4
dHVyZVZpZXdGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAg
YXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVy
YXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXc+PihpdGVyYXRvci0+dmFs
dWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3Pj4oaXRlcmF0b3ItPnZh
bHVlKS5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKLQotI2VuZGlm
IC8vIEhBVkUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMzc3ODU0N2EzYTRiYTM1NWE3NTIzZDJlY2Q2MjA2
NTM3ZTEwOTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RSZWdp
c3RyeS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIldlYkdQVUNv
bnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgi
Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx2YXJpYW50PgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0KLW5hbWVzcGFjZSBQQUw6OldlYkdQVSB7Ci1jbGFzcyBBZGFwdGVyOwot
Y2xhc3MgQmluZEdyb3VwOwotY2xhc3MgQmluZEdyb3VwTGF5b3V0OwotY2xhc3MgQnVmZmVyOwot
Y2xhc3MgQ29tbWFuZEJ1ZmZlcjsKLWNsYXNzIENvbW1hbmRFbmNvZGVyOwotY2xhc3MgQ29tcHV0
ZVBhc3NFbmNvZGVyOwotY2xhc3MgQ29tcHV0ZVBpcGVsaW5lOwotY2xhc3MgRGV2aWNlOwotY2xh
c3MgRXh0ZXJuYWxUZXh0dXJlOwotY2xhc3MgR1BVOwotY2xhc3MgUGlwZWxpbmVMYXlvdXQ7Ci1j
bGFzcyBRdWVyeVNldDsKLWNsYXNzIFF1ZXVlOwotY2xhc3MgUmVuZGVyQnVuZGxlRW5jb2RlcjsK
LWNsYXNzIFJlbmRlckJ1bmRsZTsKLWNsYXNzIFJlbmRlclBhc3NFbmNvZGVyOwotY2xhc3MgUmVu
ZGVyUGlwZWxpbmU7Ci1jbGFzcyBTYW1wbGVyOwotY2xhc3MgU2hhZGVyTW9kdWxlOwotY2xhc3Mg
VGV4dHVyZTsKLWNsYXNzIFRleHR1cmVWaWV3OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0OjpXZWJH
UFUgewotCi1jbGFzcyBPYmplY3RSZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBXZWJHUFU6OkNvbnZl
cnRGcm9tQmFja2luZ0NvbnRleHQgewotcHVibGljOgotICAgIE9iamVjdFJlZ2lzdHJ5KCk7Ci0g
ICAgfk9iamVjdFJlZ2lzdHJ5KCk7Ci0KLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyLCBQQUw6OldlYkdQVTo6QWRhcHRlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmKTsKLSAgICB2b2lkIGFkZE9iamVjdChX
ZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0Jik7Ci0gICAgdm9p
ZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkJ1ZmZlciYpOwotICAg
IHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21tYW5kQnVm
ZmVyJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6
OkNvbW1hbmRFbmNvZGVyJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwg
UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdl
YkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmKTsKLSAgICB2b2lk
IGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6RGV2aWNlJik7Ci0gICAg
dm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4
dHVyZSYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BV
OjpHUFUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQ
VTo6UGlwZWxpbmVMYXlvdXQmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVy
LCBQQUw6OldlYkdQVTo6UXVlcnlTZXQmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVu
dGlmaWVyLCBQQUw6OldlYkdQVTo6UXVldWUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYpOwotICAgIHZvaWQg
YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmKTsK
LSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVy
UGFzc0VuY29kZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6
OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVu
dGlmaWVyLCBQQUw6OldlYkdQVTo6U2FtcGxlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmKTsKLSAgICB2b2lkIGFkZE9i
amVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6VGV4dHVyZSYpOwotICAgIHZvaWQg
YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYpOwot
Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoV2ViR1BVSWRlbnRpZmllcik7Ci0KLSAgICBQQUw6Oldl
YkdQVTo6QWRhcHRlciogY29udmVydEFkYXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6QmluZEdyb3VwKiBjb252ZXJ0QmluZEdyb3VwRnJv
bUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkJpbmRH
cm91cExheW91dCogY29udmVydEJpbmRHcm91cExheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpCdWZmZXIqIGNvbnZlcnRCdWZmZXJGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6Q29tbWFu
ZEJ1ZmZlciogY29udmVydENvbW1hbmRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXIqIGNvbnZlcnRDb21tYW5k
RW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2Vi
R1BVOjpDb21wdXRlUGFzc0VuY29kZXIqIGNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6Q29tcHV0ZVBp
cGVsaW5lKiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
cikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkRldmljZSogY29udmVydERldmljZUZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRl
eHR1cmUqIGNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6R1BVKiBjb252ZXJ0R1BVRnJvbUJhY2tpbmcoV2Vi
R1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBj
b252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsK
LSAgICBQQUw6OldlYkdQVTo6UXVlcnlTZXQqIGNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpRdWV1ZSogY29udmVydFF1
ZXVlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZUVuY29kZXIqIGNvbnZlcnRSZW5kZXJCdW5kbGVFbmNvZGVyRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRs
ZSogY29udmVydFJlbmRlckJ1bmRsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFs
OwotICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciogY29udmVydFJlbmRlclBhc3NF
bmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJH
UFU6OlJlbmRlclBpcGVsaW5lKiBjb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhXZWJH
UFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6U2FtcGxlciogY29udmVydFNh
bXBsZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQ
VTo6U2hhZGVyTW9kdWxlKiBjb252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlRleHR1cmUqIGNvbnZlcnRUZXh0dXJl
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlRl
eHR1cmVWaWV3KiBjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKLQotcHJpdmF0ZToKLSAgICB1c2luZyBPYmplY3QgPSBzdGQ6OnZhcmlhbnQ8Ci0g
ICAgICAgIHN0ZDo6bW9ub3N0YXRlLAotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBB
TDo6V2ViR1BVOjpBZGFwdGVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6QmluZEdyb3VwPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0PiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6QnVmZmVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQ
QUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPiwKLSAgICAgICAgc3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiwKLSAgICAgICAg
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6RGV2aWNlPiwKLSAgICAgICAgc3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPiwKLSAgICAg
ICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6R1BVPiwKLSAgICAgICAgc3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+LAotICAgICAg
ICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWVyeVNldD4sCi0gICAgICAg
IHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlF1ZXVlPiwKLSAgICAgICAgc3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4sCi0g
ICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4s
Ci0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NF
bmNvZGVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVu
ZGVyUGlwZWxpbmU+LAotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BV
OjpTYW1wbGVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6
U2hhZGVyTW9kdWxlPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQ
VTo6VGV4dHVyZT4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OlRleHR1cmVWaWV3PgotICAgID47Ci0gICAgSGFzaE1hcDxXZWJHUFVJZGVudGlmaWVyLCBPYmpl
Y3Q+IG1fb2JqZWN0czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCi0KLSNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHku
Y3BwCmluZGV4IGM5MmQyMTIxZTZmMjlhN2FkYzA0MTA0YWU3NjY2OTE1MzlmZjRmMWYuLmE1ZjRl
NTEzNWZmNzAwMTliZjc2Mjg1MDU2ZmMxNDRmYzkzZjBlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVBy
b3ZpZGVyUHJveHkuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1SZWY8UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5PiBSZW1vdGVBdWRpb1NvdXJjZVBy
b3ZpZGVyUHJveHk6OmNyZWF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQyYgbG9jYWxQcm92aWRlcikKK1JlZjxSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVy
UHJveHk+IFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eTo6Y3JlYXRlKFdlYkNvcmU6Ok1l
ZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24sIFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDJiBsb2NhbFByb3Zp
ZGVyKQogewogICAgIGF1dG8gcmVtb3RlUHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IFJlbW90ZUF1
ZGlvU291cmNlUHJvdmlkZXJQcm94eShpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7
CiAKQEAgLTU1LDkgKzU1LDkgQEAgUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpSZW1v
dGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHkoV2ViQ29yZTo6TWVkaWFQbGEKIAogUmVtb3RlQXVk
aW9Tb3VyY2VQcm92aWRlclByb3h5Ojp+UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5KCkg
PSBkZWZhdWx0OwogCi1VbmlxdWVSZWY8Q0FSaW5nQnVmZmVyPiBSZW1vdGVBdWRpb1NvdXJjZVBy
b3ZpZGVyUHJveHk6OmNyZWF0ZVJpbmdCdWZmZXIoKQorVW5pcXVlUmVmPFdlYkNvcmU6OkNBUmlu
Z0J1ZmZlcj4gUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpjcmVhdGVSaW5nQnVmZmVy
KCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVS
ZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fV0oU2hhcmVkTWVtb3J5KiBtZW1vcnksIGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYg
Zm9ybWF0LCBzaXplX3QgZnJhbWVDb3VudCkgbXV0YWJsZSB7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWVSZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZm
ZXJTdG9yYWdlPihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKFNoYXJlZE1lbW9yeSog
bWVtb3J5LCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwg
c2l6ZV90IGZyYW1lQ291bnQpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zdG9y
YWdlQ2hhbmdlZChtZW1vcnksIGZvcm1hdCwgZnJhbWVDb3VudCk7CiAgICAgfSkpOwogfQpAQCAt
NjcsNyArNjcsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eTo6bmV3QXVk
aW9TYW1wbGVzKHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NAogICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI6OkF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZSB7IG1faWRlbnRpZmllciwgc3RhcnRGcmFtZSwgbnVtYmVyT2ZGcmFtZXMg
fSwgMCk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpzdG9yYWdl
Q2hhbmdlZChTaGFyZWRNZW1vcnkqIG1lbW9yeSwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiBmb3JtYXQsIHNpemVfdCBmcmFtZUNvdW50KQordm9pZCBSZW1vdGVBdWRpb1NvdXJjZVBy
b3ZpZGVyUHJveHk6OnN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSogbWVtb3J5LCBjb25zdCBX
ZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IGZyYW1lQ291
bnQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChtZW1vcnkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgKaW5kZXggZDY1NTBhNGNhNTgzNzMwZWQ5ZjY0OWYwZDJh
YWU0MTY5OWYxNjU4My4uODFiMDU5NTg4MTNiYzUzMDVmZGYzYzI3MDI1MTJkZTc3YTQyNjM5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21CYWNraW5n
Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRGcm9t
QmFja2luZ0NvbnRleHQuaAppbmRleCBhOTQ2OGY1MjdjNGMxZDExMzJhMGQ4NDNlMmQ0ZmYxMjZi
YWZiNmY5Li45OTJmMjdkYTBlNGJhNTE1Y2ZiZmQ5ODA2Njk0NzcwZDNjOTg4NDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21CYWNraW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0
RnJvbUJhY2tpbmdDb250ZXh0LmgKQEAgLTI3NCw3ICsyNzQsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lKiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5l
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgUEFMOjpXZWJH
UFU6OkRldmljZSogY29udmVydERldmljZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpID0g
MDsKICAgICB2aXJ0dWFsIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUqIGNvbnZlcnRFeHRl
cm5hbFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVh
bCBQQUw6OldlYkdQVTo6R1BVKiBjb252ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
cikgPSAwOwogICAgIHZpcnR1YWwgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBjb252ZXJ0
UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSA9IDA7CiAgICAgdmly
dHVhbCBQQUw6OldlYkdQVTo6UXVlcnlTZXQqIGNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIFBBTDo6V2ViR1BVOjpRdWV1ZSogY29u
dmVydFF1ZXVlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5k
ZXggZGMyZGJkNTI2ZDViOGFhNGU5MTE5MDFiNzIwNDY3ZjBlMjNkMzI5NS4uYjEzOGZkZDA1NzA1
OGM4NTJkMTAyYmYyMmQ4YTA1MzA0ZWM1YWYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC01Myw3ICs1Myw2
IEBAIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5jcHAKIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuY3BwCiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlldy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuY3BwCi1HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9IYXJk
d2FyZUxpc3RlbmVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFn
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA2NTJjMmJlM2I4YmYwZDZhY2ZkZTc4ZWIwYzkwMTU1MGI1OWFkMTRmLi5hN2FjNGE5
Zjc5YjI0NzgwODllODhjZWMwMWU4MDJjMTdhMWY5ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MTEsMTMgKzI5MTEsMTEgQEAK
IAkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3Rvck1lc3NhZ2VzLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rvck1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JE
MCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzk4QzAxRDI3NDQ2QTAzMDAyQ0NCNzggLyogUmVtb3RlR1BVLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUdQVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
OThDMDFFMjc0NDZBMDMwMDJDQ0I3OCAvKiBXZWJHUFVPYmplY3RSZWdpc3RyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHUFVPYmplY3RSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzk4QzAxRjI3NDQ2QTAzMDAyQ0NCNzggLyogUmVtb3RlUXVlcnlTZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlUXVlcnlTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM5OEMwMjAyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlckJ1bmRsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVSZW5kZXJCdW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM5OEMwMjEyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVF1ZXVlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZVF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM5OEMwMjIyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzk4QzAyMzI3NDQ2QTA1MDAyQ0NCNzggLyogUmVtb3RlU2hhZGVy
TW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVNoYWRlck1vZHVsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOThDMDI0Mjc0NDZBMDUwMDJDQ0I3OCAvKiBX
ZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVPYmplY3RS
ZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOThDMDI1Mjc0NDZB
MDYwMDJDQ0I3OCAvKiBSZW1vdGVUZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVRleHR1
cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjYyNzQ0NkEwNjAwMkND
Qjc4IC8qIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM5OEMwMjcyNzQ0NkEwNjAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03NDE2LDggKzc0MTQsNiBAQAogCQkJCTFDOThDMDg4Mjc0NEJEOTkwMDJD
Q0I3OCAvKiBSZW1vdGVUZXh0dXJlVmlldy5tZXNzYWdlcy5pbiAqLywKIAkJCQkxQ0JENzUzQzI3
NDdBQTMxMDA0RkEwRkYgLyogV2ViR1BVT2JqZWN0SGVhcC5jcHAgKi8sCiAJCQkJMUNCRDc1M0Qy
NzQ3QUEzMTAwNEZBMEZGIC8qIFdlYkdQVU9iamVjdEhlYXAuaCAqLywKLQkJCQkxQzk4QzAyNDI3
NDQ2QTA1MDAyQ0NCNzggLyogV2ViR1BVT2JqZWN0UmVnaXN0cnkuY3BwICovLAotCQkJCTFDOThD
MDFFMjc0NDZBMDMwMDJDQ0I3OCAvKiBXZWJHUFVPYmplY3RSZWdpc3RyeS5oICovLAogCQkJKTsK
IAkJCXBhdGggPSBXZWJHUFU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwo=
</data>
<flag name="review"
          id="470400"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="470449"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>