<?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>230358</bug_id>
          
          <creation_ts>2021-09-16 10:16:56 -0700</creation_ts>
          <short_desc>REGRESSION(r282478):</short_desc>
          <delta_ts>2021-09-16 11:15:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>230078</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1794082</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-09-16 10:16:56 -0700</bug_when>
    <thetext>https://commits.webkit.org/r282478 introduced a regression:


This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794084</commentid>
    <comment_count>1</comment_count>
      <attachid>438364</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-09-16 10:17:12 -0700</bug_when>
    <thetext>Created attachment 438364
[fast-cq] REVERT of r282478

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794103</commentid>
    <comment_count>2</comment_count>
      <attachid>438369</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-16 10:59:01 -0700</bug_when>
    <thetext>Created attachment 438369
[fast-cq] rollout fast</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794122</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-16 11:14:33 -0700</bug_when>
    <thetext>Committed r282565 (241753@main): &lt;https://commits.webkit.org/241753@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438369.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794123</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-16 11:15:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/83205431&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438364</attachid>
            <date>2021-09-16 10:17:12 -0700</date>
            <delta_ts>2021-09-16 10:59:01 -0700</delta_ts>
            <desc>[fast-cq] REVERT of r282478</desc>
            <filename>bug-230358-20210916101712.patch</filename>
            <type>text/plain</type>
            <size>155794</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OTkxOGViNTc4NDhlZTFhZjZmYTJkNWE5MjM0MTE0M2JjNjhlYjE0Li5kNzJjNjg4MDMxZWJlNDI3
YmUwZWUyZjQyYmZlNzFmZGYwNWM5MjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wOS0xNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODI0NzguCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAzNTgKKworCisgICAg
ICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiTW92ZSBzb21lIHByb2ZpbGluZyB0
byBVbmxpbmtlZENvZGVCbG9jayIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMDA3OAorICAgICAgICBodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy9y
MjgyNDc4CisKIDIwMjEtMDktMTYgIE1pa2hhaWwgUi4gR2FkZWxoYSAgPG1pa2hhaWxAaWdhbGlh
LmNvbT4KIAogICAgICAgICBGaXggY3Jhc2ggaW4gMzIgYml0cyBkdWUgdG8gbm90IGVub3VnaCBz
Y3JhdGNoIHJlZ2lzdGVycyBhdmFpbGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKaW5kZXggNDE4NTg3YWVlZmNlZTljZGRmZGM1NGNiN2Uw
N2Y0ZmU5M2RkZTE2Ni4uOTQ1ZWE4OWE5ZGQ4ZjI0Y2Y4NzllNTViMmE0OTQyOGNhZjFjZGEyYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAK
QEAgLTExOCw0MSArMTE4LDE4IEBAIHZvaWQgZHVtcEFycmF5TW9kZXMoUHJpbnRTdHJlYW0mIG91
dCwgQXJyYXlNb2RlcyBhcnJheU1vZGVzKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJCaWdV
aW50NjRBcnJheU1vZGUiKTsKIH0KIAotdm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3ZvaWQgQXJyYXlQcm9maWxlOjpjb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENv
ZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIC8vIE11bHRpcGxlIHRocmVhZHMgY291bGQgYmUg
Y2FsbGluZyBpbnRvIHRoaXMgYXQgdGhlIHNhbWUgdGltZS4KLSAgICBTdHJ1Y3R1cmVJRCBpZCA9
IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsKLSAgICBpZiAoIWlkKQorICAgIGlmICghbV9sYXN0U2Vl
blN0cnVjdHVyZUlEKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgU3RydWN0dXJlKiBsYXN0
U2VlblN0cnVjdHVyZSA9IGNvZGVCbG9jay0+aGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KGlkKTsKLSAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrLCBsYXN0U2VlblN0
cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSA9IGNvZGVCbG9jay0+
aGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCk7Cisg
ICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBsYXN0U2VlblN0
cnVjdHVyZSk7CiAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gMDsKIH0KIAotdm9pZCBBcnJh
eVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihVbmxpbmtlZENvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2spCit2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKQogewotICAgIC8vIE11bHRpcGxlIHRocmVhZHMgY291
bGQgYmUgY2FsbGluZyBpbnRvIHRoaXMgYXQgdGhlIHNhbWUgdGltZS4KLSAgICBTdHJ1Y3R1cmVJ
RCBpZCA9IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsKLSAgICBpZiAoIWlkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0gdW5saW5rZWRDb2RlQmxv
Y2stPmhlYXAoKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChpZCk7Ci0gICAgY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGxhc3RTZWVuU3RydWN0dXJlLCBudWxscHRyKTsKLSAgICAKLSAgICBtX2xh
c3RTZWVuU3RydWN0dXJlSUQgPSAwOwotfQotCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxhc3RTZWVu
U3RydWN0dXJlKQotewotICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsYXN0U2VlblN0cnVj
dHVyZSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7Ci19Ci0KLXZvaWQgQXJyYXlQcm9maWxl
Ojpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCi17Ci0gICAgLy8gTXVsdGlwbGUg
dGhyZWFkcyBjb3VsZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUgc2FtZSB0aW1lLiBUaGF0
IHdvbid0IGxlYWQKLSAgICAvLyB0byBhbnkgZm9ybSBvZiBjb3JydXB0aW9uLCBidXQgY291bGQg
Y2F1c2UgdXMgdG8gZ28gZG93biAhbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nCi0gICAgLy8g
cGF0aCBzaW11bHRhbmVvdXNseS4KICAgICBtX29ic2VydmVkQXJyYXlNb2RlcyB8PSBhcnJheU1v
ZGVzRnJvbVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAgCiAgICAgaWYgKCFtX2Rp
ZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKQEAgLTE2MywxMSArMTQwLDggQEAgdm9pZCBBcnJheVBy
b2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0
dXJlLCBKU0dsb2IKICAgICAKICAgICBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB8PQog
ICAgICAgICBsYXN0U2VlblN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCk7Ci0gICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGxhc3RTZWVuU3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKTsK
LSAgICBpZiAobGV4aWNhbEdsb2JhbE9iamVjdCAmJiBnbG9iYWxPYmplY3QgJiYgZ2xvYmFsT2Jq
ZWN0ICE9IGxleGljYWxHbG9iYWxPYmplY3QpCi0gICAgICAgIG1fb2JzZXJ2ZWREaWZmZXJlbnRH
bG9iYWxPYmplY3QgPSB0cnVlOwotICAgIGlmIChnbG9iYWxPYmplY3QKLSAgICAgICAgJiYgIWds
b2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKQor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpOworICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobGFz
dFNlZW5TdHJ1Y3R1cmUpCiAgICAgICAgICYmICFnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxUeXBl
ZEFycmF5U3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKSkKICAgICAgICAgbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXMgPSBmYWxzZTsKIH0KQEAgLTE4OSwxMyArMTYzLDEzIEBAIHZvaWQg
QXJyYXlQcm9maWxlOjpvYnNlcnZlSW5kZXhlZFJlYWQoVk0mIHZtLCBKU0NlbGwqIGNlbGwsIHVu
c2lnbmVkIGluZGV4KQogICAgIH0KIH0KIAotQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVz
Y3JpcHRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCitDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJp
ZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7Ci0gICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jayk7
Ci0gICAgcmV0dXJuIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoKTsKKyAgICBjb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2spOworICAgIHJldHVybiBicmll
ZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGxvY2tlcik7CiB9CiAKLUNTdHJpbmcgQXJyYXlQ
cm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKCkKK0NTdHJpbmcgQXJyYXlQ
cm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYpCiB7CiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgIENvbW1hUHJpbnRl
ciBjb21tYTsKQEAgLTIxMCw4ICsxODQsNiBAQCBDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZE
ZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZygpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIklu
dGVyY2VwdCIpOwogICAgIGlmIChtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcykKICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAiT3JpZ2luYWwiKTsKLSAgICBpZiAobV9vYnNlcnZlZERpZmZl
cmVudEdsb2JhbE9iamVjdCkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRGlmZmVyZW50R2xv
YmFsIik7CiAKICAgICByZXR1cm4gb3V0LnRvQ1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDExZjI1MWU5YmMxNjJkODg0
OWRhMWViNDExOTUyYjYxNTc4Y2IzNGEuLjkxZGE4ZjNlZmY5MmZjM2E4OTU3MGQ3NWE0YjkxM2Jk
MjYzMmNjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9m
aWxlLmgKQEAgLTMyLDcgKzMyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9j
azsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLWNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
OwogCiAvLyBUaGlzIGlzIGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0
eXBlIG9mIGFycmF5IGFjY2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBp
bmRleGluZyB0eXBlcyB0aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KQEAgLTIwMiw3ICsyMDEsNiBA
QCBwdWJsaWM6CiAgICAgICAgIDogbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2Up
CiAgICAgICAgICwgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXModHJ1ZSkKICAgICAgICAg
LCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCi0gICAgICAgICwgbV9vYnNlcnZl
ZERpZmZlcmVudEdsb2JhbE9iamVjdChmYWxzZSkKICAgICB7CiAgICAgfQogICAgIApAQCAtMjE5
LDI3ICsyMTcsMjIgQEAgcHVibGljOgogICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZUlEKFN0cnVj
dHVyZUlEIHN0cnVjdHVyZUlEKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZUlE
OyB9CiAgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7IG1f
bGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsgfQogCi0gICAgdm9pZCBjb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oVW5saW5rZWRDb2RlQmxvY2sqKTsKLSAgICB2b2lkIGNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sqKTsKLSAgICB2b2lkIGNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKLSAg
ICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0
dXJlLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgdm9pZCBjb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2Nr
Kik7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAg
CiAgICAgdm9pZCBvYnNlcnZlQXJyYXlNb2RlKEFycmF5TW9kZXMgbW9kZSkgeyBtX29ic2VydmVk
QXJyYXlNb2RlcyB8PSBtb2RlOyB9CiAgICAgdm9pZCBvYnNlcnZlSW5kZXhlZFJlYWQoVk0mLCBK
U0NlbGwqLCB1bnNpZ25lZCBpbmRleCk7CiAKLSAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlN
b2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9Ci0gICAgYm9vbCBt
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSBjb25zdCB7IHJldHVybiBtX21heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3NlczsgfQorICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWRBcnJheU1vZGVzKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWRBcnJheU1v
ZGVzOyB9CisgICAgYm9vbCBtYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXM7IH0KICAgICAKLSAgICBib29sIG1heVN0b3JlVG9Ib2xlKCkgY29uc3QgeyByZXR1cm4gbV9t
YXlTdG9yZVRvSG9sZTsgfQotICAgIGJvb2wgb3V0T2ZCb3VuZHMoKSBjb25zdCB7IHJldHVybiBt
X291dE9mQm91bmRzOyB9CisgICAgYm9vbCBtYXlTdG9yZVRvSG9sZShjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21heVN0b3JlVG9Ib2xlOyB9CisgICAgYm9vbCBv
dXRPZkJvdW5kcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX291
dE9mQm91bmRzOyB9CiAgICAgCi0gICAgYm9vbCB1c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMo
KSBjb25zdCB7IHJldHVybiBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsgfQotICAgIHZv
aWQgc2V0RG9lc05vdFVzZU9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKCkgeyBtX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOyB9CisgICAgYm9vbCB1c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV91c2Vz
T3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7IH0KIAotICAgIGJvb2wgb2JzZXJ2ZWREaWZmZXJlbnRH
bG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkRGlmZmVyZW50R2xvYmFsT2Jq
ZWN0OyB9Ci0KLSAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oQ29kZUJsb2NrKik7Ci0gICAg
Q1N0cmluZyBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKCk7CisgICAgQ1N0cmluZyBi
cmllZkRlc2NyaXB0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayopOwor
ICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyhjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImKTsKICAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKQEAgLTI1Miw3ICsyNDUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9t
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgOiAxOwogICAgIGJvb2wgbV91c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXMgOiAxOwogICAgIGJvb2wgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5n
IDogMTsKLSAgICBib29sIG1fb2JzZXJ2ZWREaWZmZXJlbnRHbG9iYWxPYmplY3QgOiAxOwogICAg
IEFycmF5TW9kZXMgbV9vYnNlcnZlZEFycmF5TW9kZXMgeyAwIH07CiB9Owogc3RhdGljX2Fzc2Vy
dChzaXplb2YoQXJyYXlQcm9maWxlKSA9PSAxMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBiZGYwMTE3ZWNmOGQ5NzI3MGZmYTJiNzM4
OWY3OTU0YTU2ZTAxNzA4Li5iNmQ4MzQ5NTIzNTczYWQxMmExMWIwMzA5MzkwN2ZjY2FjZTk3Yzhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
QEAgLTE2Nyw3ICsxNjcsNyBAQCBvcCA6Z2V0X2FyZ3VtZW50LAogICAgICAgICBpbmRleDogaW50
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKIG9wIDphcmd1bWVu
dF9jb3VudCwKQEAgLTE4Myw3ICsxODMsNyBAQCBvcCA6dG9fdGhpcywKICAgICBtZXRhZGF0YTog
ewogICAgICAgICBjYWNoZWRTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCiAgICAgICAgIHRvVGhp
c1N0YXR1czogVG9UaGlzU3RhdHVzLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwK
KyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIAogb3AgOmNoZWNrX3RkeiwK
QEAgLTMwOSw3ICszMDksNyBAQCBvcF9ncm91cCA6VmFsdWVQcm9maWxlZEJpbmFyeU9wLAogICAg
ICAgICByaHM6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmls
ZQogICAgIH0KIAogb3AgOmJpdG5vdCwKQEAgLTMxOCw3ICszMTgsNyBAQCBvcCA6Yml0bm90LAog
ICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKgorICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUKICAgICB9CiAKIG9wX2dyb3VwIDpVbmFyeU9wLApAQCAtMzYzLDcgKzM2Myw3IEBA
IG9wIDp0b19vYmplY3QsCiAgICAgICAgIG1lc3NhZ2U6IHVuc2lnbmVkLAogICAgIH0sCiAgICAg
bWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKIG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkVW5h
cnlPcCwKQEAgLTM3Niw3ICszNzYsNyBAQCBvcF9ncm91cCA6VmFsdWVQcm9maWxlZFVuYXJ5T3As
CiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUsCiAgICAgfQogCiBvcCA6bmVnYXRlLApAQCAtNDQ1LDcgKzQ0NSw3IEBAIG9w
IDppbl9ieV92YWwsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAor
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKICAgICB9CiAKIG9wIDppbl9ieV9p
ZCwKQEAgLTQ3Niw5ICs0NzYsOCBAQCBvcCA6Z2V0X2J5X2lkLAogICAgICAgICBwcm9wZXJ0eTog
dW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUuKiwKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAg
ICAgbW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUsCiAgICAgfQogCiBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKQEAgLTQ4OSw3
ICs0ODgsNyBAQCBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKICAgICAgICAgcHJvcGVydHk6IHVu
c2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLiosCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKIG9wIDpn
ZXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTUwMCw3ICs0OTksNyBAQCBvcCA6Z2V0X2J5X3ZhbF93
aXRoX3RoaXMsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIAogb3AgOmdldF9ieV9pZF9kaXJlY3QsCkBA
IC01MTAsNyArNTA5LDcgQEAgb3AgOmdldF9ieV9pZF9kaXJlY3QsCiAgICAgICAgIHByb3BlcnR5
OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZS4qLCAjIG5vdCB1c2VkIGluIGxsaW50CisgICAgICAgIHByb2ZpbGU6IFZhbHVl
UHJvZmlsZSwgIyBub3QgdXNlZCBpbiBsbGludAogICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0
dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5zaWduZWQsCiAgICAgfQpAQCAtNTIxLDcgKzUyMCw3
IEBAIG9wIDpnZXRfcHJvdG90eXBlX29mLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKIG9wIDp0cnlfZ2V0
X2J5X2lkLApAQCAtNTMxLDcgKzUzMCw3IEBAIG9wIDp0cnlfZ2V0X2J5X2lkLAogICAgICAgICBw
cm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAg
IH0KIAogb3AgOnB1dF9ieV9pZCwKQEAgLTU3Miw4ICs1NzEsOCBAQCBvcCA6Z2V0X2J5X3ZhbCwK
ICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAotICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAg
ICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6
IEdldEJ5VmFsSGlzdG9yeSwKICAgICB9CiAKQEAgLTU4NCw3ICs1ODMsNyBAQCBvcCA6Z2V0X3By
aXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJ
RCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFy
cmllcltKU0NlbGxdLApAQCAtNjMzLDcgKzYzMiw3IEBAIG9wIDpwdXRfYnlfdmFsLAogICAgICAg
ICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5
UHJvZmlsZSwKICAgICB9CiAKIG9wIDpwdXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTY1Myw3ICs2
NTIsNyBAQCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9k
ZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLiosCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAgIH0KIAog
b3AgOmRlbF9ieV92YWwsCkBAIC04NDMsNyArODQyLDcgQEAgb3AgOmNhbGwsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAogICAgIH0KIAogb3AgOnRhaWxfY2FsbCwKQEAgLTg1NSw3ICs4NTQsNyBAQCBvcCA6
dGFpbF9jYWxsLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZv
OiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisg
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKIG9wIDpjYWxsX2V2YWwsCkBA
IC04NjgsNyArODY3LDcgQEAgb3AgOmNhbGxfZXZhbCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7
CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2Zp
bGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAg
fQogCiBvcCA6Y2FsbF92YXJhcmdzLApAQCAtODgxLDggKzg4MCw4IEBAIG9wIDpjYWxsX3ZhcmFy
Z3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAotICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAg
YXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZCwKQEAgLTkwMiw4ICs5MDEsOCBAQCBvcCA6
dGFpbF9jYWxsX3ZhcmFyZ3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAotICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJh
eVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9LAogICAgIHRt
cHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZApAQCAtOTIzLDgg
KzkyMiw4IEBAIG9wIDp0YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsCiAgICAgICAgIGZpcnN0
VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZS4qLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAg
ICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVl
UHJvZmlsZSwKICAgICB9CiAKIG9wIDpjb25zdHJ1Y3QsCkBAIC05MzUsOCArOTM0LDggQEAgb3Ag
OmNvbnN0cnVjdCwKICAgICAgICAgYXJndjogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0
YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICAgICAgY2FsbExpbmtJ
bmZvOiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAog
ICAgIH0KIAogb3AgOmNvbnN0cnVjdF92YXJhcmdzLApAQCAtOTQ5LDggKzk0OCw4IEBAIG9wIDpj
b25zdHJ1Y3RfdmFyYXJncywKICAgICAgICAgZmlyc3RWYXJBcmc6IGludCwKICAgICB9LAogICAg
IG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCi0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5
UHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0sCiAgICAgdG1w
czogewogICAgICAgICBhcmdDb3VudEluY2x1ZGluZ1RoaXM6IHVuc2lnbmVkCkBAIC0xMDI5LDcg
KzEwMjgsNyBAQCBvcCA6Z2V0X2Zyb21fc2NvcGUsCiAgICAgICAgICAgICBzdHJ1Y3R1cmU6IFdy
aXRlQmFycmllckJhc2VbU3RydWN0dXJlXSwKICAgICAgICAgfSwKICAgICAgICAgb3BlcmFuZDog
dWludHB0cl90LCAjb2Zmc2V0IDYKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosICMg
b2Zmc2V0IDcKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLCAjIG9mZnNldCA3CiAgICAg
fSwKICAgICBtZXRhZGF0YV9pbml0aWFsaXplcnM6IHsKICAgICAgICAgZ2V0UHV0SW5mbzogOmdl
dFB1dEluZm8sCkBAIC0xMDY2LDcgKzEwNjUsNyBAQCBvcCA6Z2V0X2Zyb21fYXJndW1lbnRzLAog
ICAgICAgICBpbmRleDogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LAogICAgIH0KIAogb3AgOnB1dF90b19hcmd1bWVudHMsCkBAIC0xMTc0LDcgKzExNzMsNyBAQCBv
cCA6ZW51bWVyYXRvcl9uZXh0LAogICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIs
CiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKICAgICAgICAgZW51
bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMTg4LDgg
KzExODcsOCBAQCBvcCA6ZW51bWVyYXRvcl9nZXRfYnlfdmFsLAogICAgICAgICBlbnVtZXJhdG9y
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUuKiwKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUu
KiwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6
IEFycmF5UHJvZmlsZSwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0
YWRhdGEsCiAgICAgfQogCkBAIC0xMjAzLDcgKzEyMDIsNyBAQCBvcCA6ZW51bWVyYXRvcl9pbl9i
eV92YWwsCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAg
IG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCisgICAg
ICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRh
dGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAKQEAgLTEyMTcsNyArMTIxNiw3IEBAIG9w
IDplbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHksCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1
YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmls
ZTogQXJyYXlQcm9maWxlLiosCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAog
ICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAK
QEAgLTEyNDksMTIgKzEyNDgsMTIgQEAgb3AgOml0ZXJhdG9yX29wZW4sCiAgICAgICAgIHN0YWNr
T2Zmc2V0OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGl0ZXJh
YmxlUHJvZmlsZTogVmFsdWVQcm9maWxlLiosCi0gICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCi0gICAgICAgIG5leHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICAg
ICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKKyAgICAgICAgaXRl
cmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRD
YWxsTGlua0luZm8sCisgICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAg
ICAgICBtb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAgIG5leHRQcm9m
aWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfSwKICAgICBjaGVja3BvaW50czogewogICAgICAgICBz
eW1ib2xDYWxsOiBuaWwsCkBAIC0xMjcyLDE0ICsxMjcxLDE0IEBAIG9wIDppdGVyYXRvcl9uZXh0
LAogICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewotICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxlLiosCi0gICAgICAgIGRv
bmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKLSAgICAgICAgdmFsdWVQcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKLSAgICAgICAgaXRlcmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAg
ICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKKyAgICAgICAgaXRl
cmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUsCiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRD
YWxsTGlua0luZm8sCisgICAgICAgIG5leHRSZXN1bHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAg
ICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAgIGRv
bmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgICAgIHZhbHVlTW9kZU1ldGFkYXRhOiBHZXRC
eUlkTW9kZU1ldGFkYXRhLAorICAgICAgICB2YWx1ZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAg
ICB9LAogICAgIHRtcHM6IHsKICAgICAgICAgbmV4dFJlc3VsdDogSlNWYWx1ZSwKQEAgLTEzMjMs
NyArMTMyMiw3IEBAIG9wIDpnZXRfaW50ZXJuYWxfZmllbGQsCiAgICAgICAgIGluZGV4OiB1bnNp
Z25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCiBvcCA6cHV0
X2ludGVybmFsX2ZpZWxkLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAppbmRleCBiOTdiMzU4
NTc3NjM1ZGEzMTMzMmU0MGVjMzcxZTNkYzlmYzUyNWUzLi41YjhkYWZlOTYxMTMxZjEwZDNiNjMx
NGRiMGU1ZjhhZGNiMTk1MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaApAQCAtNTcs
MjAgKzU3LDIwIEBAIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlRm9ySW1wbChCeXRlY29kZU1l
dGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2luCiAgICAgVU5VU0VEX1BBUkFNKGNo
ZWNrcG9pbnRJbmRleCk7CiAgICAgaWYgY29uc3RleHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNv
ZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CiAgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludElu
ZGV4KSB7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGw6IHJldHVybiBt
ZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZTsKLSAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6
Z2V0TmV4dDogcmV0dXJuIG1ldGFkYXRhLm1fbmV4dFByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJ
dGVyYXRvck9wZW46OnN5bWJvbENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2Zp
bGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRh
dGEubV9uZXh0UHJvZmlsZTsKICAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgfQogCiAgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVN
ZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgewogICAgICAgICBzd2l0Y2gg
KGNoZWNrcG9pbnRJbmRleCkgewotICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRl
TmV4dDogcmV0dXJuIG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGU7Ci0gICAgICAgIGNhc2Ug
T3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiBtZXRhZGF0YS5tX2RvbmVQcm9maWxlOwot
ICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZTogcmV0dXJuIG1ldGFkYXRhLm1f
dmFsdWVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDog
cmV0dXJuICZtZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRl
cmF0b3JOZXh0OjpnZXREb25lOiByZXR1cm4gJm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7CisgICAg
ICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFs
dWVQcm9maWxlOwogICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICB9CiAgICAgfSBlbHNlIAotICAgICAgICByZXR1cm4gbWV0YWRhdGEubV9wcm9m
aWxlOworICAgICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmlsZTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggY2Y3YmU2MDZiMzY5MDI2NTVjYjQ4NTVkMTM3OWZiMzJl
YTUzYjVmMC4uYzc2NmEyNjllOGNkZWQ0ZDcxZDg2ODJhNjdkN2M0M2M1ZmZhOTk2NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTM3NCwxMCAr
Mzc0LDYgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXQKIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
ZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAogICAgIEpTU2NvcGUqIHNjb3BlKQogewot
ICAgIC8vIFdlIGNhbid0IGZpbmFsaXplIGEgR0Mgd2hpbGUgaW4gaGVyZSBzaW5jZSB3ZSBuZWVk
IHRvIG1ha2Ugc3VyZSB0bwotICAgIC8vIG1ha2Ugc3VyZSBvdXIgVmFsdWVQcm9maWxlcyBhbmQg
QXJyYXlQcm9maWxlcyBhbGwgcG9pbnQgdG8gcHJvcGVyIGxvY2F0aW9ucy4KLSAgICBSRUxFQVNF
X0FTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7IAotCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIGZpbmlzaENyZWF0aW9uQ29tbW9uKHZtKTsKIApAQCAtMzg3LDExICszODMs
OCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB2bS5mdW5jdGlvbkhhc0V4ZWN1
dGVkQ2FjaGUoKS0+cmVtb3ZlVW5leGVjdXRlZFJhbmdlKG93bmVyRXhlY3V0YWJsZS0+c291cmNl
SUQoKSwgb3duZXJFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQodm0pLCBvd25l
ckV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQodm0pKTsKIAogICAgIFNjcmlwdEV4
ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0YWJsZSA9IG93bmVyRXhlY3V0YWJsZS0+dG9wTGV2ZWxF
eGVjdXRhYmxlKCk7Ci0KLSAgICAvLyBXZSB3YWl0IHRvIGluaXRpYWxpemUgdGVtcGxhdGUgb2Jq
ZWN0cyB1bnRpbCB0aGUgZW5kIG9mIGZpbmlzaENyZWF0aW9uIGJlZWNhdXNlIGl0IGNhbgotICAg
IC8vIHRocm93LiBXZSByZWx5IG9uIGxpbmtpbmcgdG8gcHV0IHRoZSBDb2RlQmxvY2sgaW50byBh
IGNvaGVyZW50IHN0YXRlLCBzbyB3ZSBjYW4ndCB0aHJvdwotICAgIC8vIHVudGlsIHdlJ3JlIGFs
bCBkb25lIGxpbmtpbmcuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiB0ZW1wbGF0ZU9iamVjdEluZGlj
ZXMgPSBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRSZWdp
c3RlcnMoKSwgdW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbigpKTsKKyAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+Y29u
c3RhbnRSZWdpc3RlcnMoKSwgdW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50c1NvdXJjZUNvZGVS
ZXByZXNlbnRhdGlvbigpLCB0b3BMZXZlbEV4ZWN1dGFibGUpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogCiAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIHRoZSBj
bG9uZWQgc3ltYm9sIHRhYmxlIGZvciB0aGUgbW9kdWxlIGVudmlyb25tZW50IHNpbmNlIHdlIG5l
ZWQgdG8gaW5zdGFudGlhdGUKICAgICAvLyB0aGUgbW9kdWxlIGVudmlyb25tZW50cyBiZWZvcmUg
bGlua2luZyB0aGUgY29kZSBibG9jay4gV2UgcmVwbGFjZSB0aGUgc3RvcmVkIHN5bWJvbCB0YWJs
ZSB3aXRoIHRoZSBhbHJlYWR5IGNsb25lZCBvbmUuCkBAIC00NDIsOCArNDM1LDcgQEAgYm9vbCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNl
ZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+
IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAgIGF1dG8gbGlua19w
cm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2Rl
Ki8sIGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8VmFsdWVQcm9maWxlKiwgZGVjbHR5cGUobWV0YWRhdGEubV9wcm9maWxlKT4pOworICAgIGF1
dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAv
KmJ5dGVjb2RlKi8sIGF1dG8mIC8qbWV0YWRhdGEqLykgewogICAgICAgICBtX251bWJlck9mTm9u
QXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7CiAgICAgfTsKIApAQCAtNTA3LDkgKzQ5OSw5IEBAIGJv
b2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICAgICAgTElOSyhPcEdldEJ5SWQsIHByb2ZpbGUp
CiAKLSAgICAgICAgTElOSyhPcEVudW1lcmF0b3JOZXh0KQotICAgICAgICBMSU5LKE9wRW51bWVy
YXRvckluQnlWYWwpCi0gICAgICAgIExJTksoT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHkpCisg
ICAgICAgIExJTksoT3BFbnVtZXJhdG9yTmV4dCwgcHJvZmlsZSkKKyAgICAgICAgTElOSyhPcEVu
dW1lcmF0b3JJbkJ5VmFsLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wRW51bWVyYXRvckhhc093
blByb3BlcnR5LCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wRW51bWVyYXRvckdldEJ5VmFsLCBw
cm9maWxlKQogCiAgICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxlKQpAQCAtNTcxLDYgKzU2Myw3
IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChi
eXRlY29kZS5tX3Jlc29sdmVUeXBlICE9IFJlc29sdmVkQ2xvc3VyZVZhcik7CiAKICAgICAgICAg
ICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVj
dC5nZXQoKSwgYnl0ZWNvZGUubV9sb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCBi
eXRlY29kZS5tX3Jlc29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0
aW9uKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogCiAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gb3AudHlwZTsKICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fbG9jYWxTY29wZURlcHRoID0gb3AuZGVwdGg7CkBAIC02MDUsNiAr
NTk4LDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKIAogICAgICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKICAgICAgICAgICAg
IFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC5n
ZXQoKSwgYnl0ZWNvZGUubV9sb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCBieXRl
Y29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJ
bml0aWFsaXphdGlvbik7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKIAogICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0
SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBieXRlY29kZS5tX2dldFB1dElu
Zm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBNb2R1bGVWYXIpCkBA
IC02MzgsNiArNjMyLDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGNv
bnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihieXRlY29kZS5tX3Zhcik7CiAgICAg
ICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBudWxscHRyOwogICAgICAgICAgICAg
UmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0Lmdl
dCgpLCBieXRlY29kZS5tX3N5bWJvbFRhYmxlT3JTY29wZURlcHRoLnNjb3BlRGVwdGgoKSwgc2Nv
cGUsIGlkZW50LCBQdXQsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpLCBieXRl
Y29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAKICAgICAgICAgICAgIG1ldGFk
YXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29s
dmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1v
ZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgaWYg
KG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIgfHwgb3AudHlwZSA9PSBH
bG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKQEAgLTY3MCw2ICs2NjUsNyBA
QCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgICAgIC8vIEV2ZW4gdGhvdWdo
IHR5cGUgcHJvZmlsaW5nIG1heSBiZSBwcm9maWxpbmcgZWl0aGVyIGEgR2V0IG9yIGEgUHV0LCB3
ZSBjYW4gYWx3YXlzIGNsYWltIGEgR2V0IGJlY2F1c2UKICAgICAgICAgICAgICAgICAvLyB3ZSdy
ZSBhYnN0cmFjdGx5ICJyZWFkImluZyBmcm9tIGEgSlNTY29wZS4KICAgICAgICAgICAgICAgICBS
ZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QuZ2V0
KCksIGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIGJ5dGVjb2RlLm1fcmVzb2x2
ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOworICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogCiAgICAgICAg
ICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhciB8fCBvcC50eXBlID09IE1vZHVsZVZh
cikKICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBvcC5sZXhpY2FsRW52aXJvbm1l
bnQtPnN5bWJvbFRhYmxlKCk7CkBAIC03NjUsNTYgKzc2MSw2IEBAIGJvb2wgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rCiAjdW5kZWYgTElOS19GSUVMRAogI3VuZGVmIExJTksKIAotICAgIHsKLSAgICAgICAg
dW5zaWduZWQgaW5kZXggPSBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyAvLyBUaGUg
Zmlyc3QgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKSBwcm9maWxlcyBhcmUgYXJndW1l
bnQgdmFsdWUgcHJvZmlsZXMKLQotICAgICAgICBpZiAobV9tZXRhZGF0YSkgewotICAgICAgICAg
ICAgYXV0byBhc3NpZ24gPSBbJl0gKFZhbHVlUHJvZmlsZSomIHByb2ZpbGUpIHsKLSAgICAgICAg
ICAgICAgICBwcm9maWxlID0gJnVubGlua2VkQ29kZUJsb2NrLT52YWx1ZVByb2ZpbGUoaW5kZXgr
Kyk7Ci0gICAgICAgICAgICB9OwotCi0jZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICAgICAgICAg
IG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBhc3NpZ24o
bWV0YWRhdGEubV9wcm9maWxlKTsgfSk7Ci0gICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lU
SF9WQUxVRV9QUk9GSUxFKFZJU0lUKQotI3VuZGVmIFZJU0lUCi0KLSAgICAgICAgICAgIG1fbWV0
YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9wZW4+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgCi0g
ICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlKTsKLSAgICAg
ICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUpOwotICAgICAgICAg
ICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX25leHRQcm9maWxlKTsKLSAgICAgICAgICAgIH0pOwot
Ci0gICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1
dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fbmV4dFJl
c3VsdFByb2ZpbGUpOwotICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX2RvbmVQcm9m
aWxlKTsKLSAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV92YWx1ZVByb2ZpbGUpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRl
eCA9PSB1bmxpbmtlZENvZGVCbG9jay0+bnVtVmFsdWVQcm9maWxlcygpKTsKLSAgICB9Ci0KLSAg
ICBpZiAobV9tZXRhZGF0YSkgewotICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0KLSAgICAg
ICAgYXV0byBhc3NpZ24gPSBbJl0gKEFycmF5UHJvZmlsZSomIHByb2ZpbGUpIHsKLSAgICAgICAg
ICAgIHByb2ZpbGUgPSAmdW5saW5rZWRDb2RlQmxvY2stPmFycmF5UHJvZmlsZShpbmRleCsrKTsK
LSAgICAgICAgfTsKLQotICAgICAgICAvLyBXZSBvbmx5IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZv
ciB0aGUgb3Bjb2RlcyBpbiBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFLgotICAg
ICAgICAvLyBXZSBkb24ndCB5ZXQgc2hhcmUgYXJyYXkgcHJvZmlsZXMgZm9yIHRoaW5ncyB3aXRo
IExMSW50IENhbGxMaW5rSW5mb3MuCi0jZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGFzc2lnbihtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOwotICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9B
UlJBWV9QUk9GSUxFKFZJU0lUKQotI3VuZGVmIFZJU0lUCi0KLSAgICAgICAgbV9tZXRhZGF0YS0+
Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewotICAgICAgICAg
ICAgYXNzaWduKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlKTsKLSAgICAgICAgfSk7Ci0KLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gdW5saW5rZWRDb2RlQmxvY2stPm51bUFycmF5
UHJvZmlsZXMoKSk7Ci0gICAgfQotCiAgICAgaWYgKG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxl
ZFdpdGhDb250cm9sRmxvd1Byb2ZpbGVyT3Bjb2RlcygpKQogICAgICAgICBpbnNlcnRCYXNpY0Js
b2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIApAQCAtODM1LDkgKzc4MSw2
IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgaWYgKG1fbWV0YWRhdGEpCiAgICAgICAg
IHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQobV9tZXRhZGF0YS0+c2l6ZUluQnl0
ZXMoKSk7CiAKLSAgICBpbml0aWFsaXplVGVtcGxhdGVPYmplY3RzKHRvcExldmVsRXhlY3V0YWJs
ZSwgdGVtcGxhdGVPYmplY3RJbmRpY2VzKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC05MjYsMjAgKzg2OSwx
OSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAK
LVZlY3Rvcjx1bnNpZ25lZD4gQ29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBG
aXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGFudHMsIGNvbnN0IEZpeGVk
VmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbikKK3ZvaWQgQ29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBG
aXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGFudHMsIGNvbnN0IEZpeGVk
VmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKQogewogICAg
IFZNJiB2bSA9ICptX3ZtOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9nbG9iYWxPYmplY3QuZ2V0
KCk7CiAKLSAgICBWZWN0b3I8dW5zaWduZWQ+IHRlbXBsYXRlT2JqZWN0SW5kaWNlczsKLQogICAg
IEFTU0VSVChjb25zdGFudHMuc2l6ZSgpID09IGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbi5zaXplKCkpOwotICAgIHVuc2lnbmVkIGNvdW50ID0gY29uc3RhbnRzLnNpemUoKTsKKyAg
ICBzaXplX3QgY291bnQgPSBjb25zdGFudHMuc2l6ZSgpOwogICAgIHsKICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJz
LnJlc2l6ZVRvRml0KGNvdW50KTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsK
ICAgICAgICAgSlNWYWx1ZSBjb25zdGFudCA9IGNvbnN0YW50c1tpXS5nZXQoKTsKICAgICAgICAg
U291cmNlQ29kZVJlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uID0gY29uc3RhbnRzU291cmNl
Q29kZVJlcHJlc2VudGF0aW9uW2ldOwogICAgICAgICBzd2l0Y2ggKHJlcHJlc2VudGF0aW9uKSB7
CkBAIC05NjMsMjcgKzkwNSwxNyBAQCBWZWN0b3I8dW5zaWduZWQ+IENvZGVCbG9jazo6c2V0Q29u
c3RhbnRSZWdpc3RlcnMoY29uc3QgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsb25lLT5zZXRSYXJlRGF0YUNvZGVCbG9jayh0aGlzKTsKIAog
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSBjbG9uZTsKLSAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
Kj4odm0sIGNlbGwpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVPYmplY3RJbmRp
Y2VzLmFwcGVuZChpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBkZXNj
cmlwdG9yID0ganNEeW5hbWljQ2FzdDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcio+KHZtLCBj
ZWxsKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogdGVtcGxhdGVPYmplY3QgPSB0
b3BMZXZlbEV4ZWN1dGFibGUtPmNyZWF0ZVRlbXBsYXRlT2JqZWN0KGdsb2JhbE9iamVjdCwgZGVz
Y3JpcHRvcik7CisgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0
ZU9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIG1fY29uc3Rh
bnRSZWdpc3RlcnNbaV0uc2V0KHZtLCB0aGlzLCBjb25zdGFudCk7CiAgICAgfQotCi0gICAgcmV0
dXJuIHRlbXBsYXRlT2JqZWN0SW5kaWNlczsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmluaXRpYWxp
emVUZW1wbGF0ZU9iamVjdHMoU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBj
b25zdCBWZWN0b3I8dW5zaWduZWQ+JiB0ZW1wbGF0ZU9iamVjdEluZGljZXMpCi17Ci0gICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0oKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
IDogdGVtcGxhdGVPYmplY3RJbmRpY2VzKSB7Ci0gICAgICAgIGF1dG8qIGRlc2NyaXB0b3IgPSBq
c0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPihtX2NvbnN0YW50UmVnaXN0ZXJzW2ld
LmdldCgpKTsKLSAgICAgICAgYXV0byogdGVtcGxhdGVPYmplY3QgPSB0b3BMZXZlbEV4ZWN1dGFi
bGUtPmNyZWF0ZVRlbXBsYXRlT2JqZWN0KGdsb2JhbE9iamVjdCgpLCBkZXNjcmlwdG9yKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgbV9jb25z
dGFudFJlZ2lzdGVyc1tpXS5zZXQodm0oKSwgdGhpcywgdGVtcGxhdGVPYmplY3QpOwotICAgIH0K
IH0KIAogdm9pZCBDb2RlQmxvY2s6OnNldEFsdGVybmF0aXZlKFZNJiB2bSwgQ29kZUJsb2NrKiBh
bHRlcm5hdGl2ZSkKQEAgLTk5Niw2ICs5MjgsOCBAQCB2b2lkIENvZGVCbG9jazo6c2V0QWx0ZXJu
YXRpdmUoVk0mIHZtLCBDb2RlQmxvY2sqIGFsdGVybmF0aXZlKQogdm9pZCBDb2RlQmxvY2s6OnNl
dE51bVBhcmFtZXRlcnModW5zaWduZWQgbmV3VmFsdWUpCiB7CiAgICAgbV9udW1QYXJhbWV0ZXJz
ID0gbmV3VmFsdWU7CisKKyAgICBtX2FyZ3VtZW50VmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9y
PFZhbHVlUHJvZmlsZT4oT3B0aW9uczo6dXNlSklUKCkgPyBuZXdWYWx1ZSA6IDApOwogfQogCiBD
b2RlQmxvY2sqIENvZGVCbG9jazo6c3BlY2lhbE9TUkVudHJ5QmxvY2tPck51bGwoKQpAQCAtMTA1
Niw3ICs5OTAsNyBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7
CiAgICAgc3Ryb25nbHlWaXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7CiAgICAg
Ci0gICAgdm0oKS5jb2RlQmxvY2tTcGFjZS5zZXQuYWRkKHRoaXMpOworICAgIFZNOjpTcGFjZUFu
ZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpKS5hZGQodGhpcyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFZpc2l0b3I+CkBAIC0xNTgzLDM1ICsxNTE3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFs
aXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogCi0g
ICAgewotICAgICAgICAvLyBXZSBvbmx5IHVwZGF0ZSB0aGUgcHJvZmlsZXMgdGhhdCB0aGUgVW5s
aW5rZWRDb2RlQmxvY2sgZG9lc24ndCBvd24uCi0KLSAgICAgICAgaWYgKG1fbWV0YWRhdGEpIHsK
LSNkZWZpbmUgVVBEQVRFKF9fb3ApIFwKLSAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2Fy
cmF5UHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24odGhpcyk7IH0pOwotICAgICAgICAg
ICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfTExJTlRfQ0FMTF9MSU5LX0lORk8oVVBEQVRFKQotI3Vu
ZGVmIFVQREFURQotCi0gICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ2F0Y2g+KFsm
XShhdXRvJiBtZXRhZGF0YSkgewotICAgICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX2J1ZmZl
cikgewotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2J1ZmZlci0+Zm9yRWFjaChbJl0o
VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyJiBwcm9maWxlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwotICAgICAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICAgICAgICAgIGxhenlPcGVyYW5kVmFs
dWVQcm9maWxlcyhsb2NrZXIpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKLSNl
bmRpZgotICAgICAgICB9Ci0KLSAgICAgICAgZm9yRWFjaEFycmF5QWxsb2NhdGlvblByb2ZpbGUo
WyZdKEFycmF5QWxsb2NhdGlvblByb2ZpbGUmIHByb2ZpbGUpIHsKLSAgICAgICAgICAgIHByb2Zp
bGUudXBkYXRlUHJvZmlsZSgpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgdXBkYXRlQWxsUHJl
ZGljdGlvbnMoKTsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgYm9vbCBpc0VsaWdpYmxlRm9yTExJ
bnREb3duZ3JhZGUgPSBtX2lzRWxpZ2libGVGb3JMTEludERvd25ncmFkZTsKQEAgLTE2OTcsNyAr
MTYwMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0p
CiAgICAgfTsKICAgICB1cGRhdGVBY3Rpdml0eSgpOwogCi0gICAgdm0uY29kZUJsb2NrU3BhY2Uu
c2V0LnJlbW92ZSh0aGlzKTsKKyAgICBWTTo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2Uo
KSkucmVtb3ZlKHRoaXMpOwogCiAgICAgLy8gSW4gQ29kZUJsb2NrOjpzaG91bGRWaXNpdFN0cm9u
Z2x5KCkgd2UgbWF5IGhhdmUgZGVjaWRlZCB0byBza2lwIHZpc2l0aW5nIHRoaXMKICAgICAvLyBj
b2RlQmxvY2suIEJ5IHRoZSB0aW1lIHdlIGdldCBoZXJlLCB3ZSdyZSBkb25lIHdpdGggdGhlIHZl
cmlmaWVyIEdDLiBTbywgbGV0J3MKQEAgLTI4NjcsNyArMjc3Myw3IEBAIEFycmF5UHJvZmlsZSog
Q29kZUJsb2NrOjpnZXRBcnJheVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnl0
ZWNvZGVJbmRlCiAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogI2RlZmlu
ZSBDQVNFMShPcCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiBp
bnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhpcykubV9hcnJheVByb2ZpbGU7CisgICAg
ICAgIHJldHVybiAmaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQ
cm9maWxlOwogCiAjZGVmaW5lIENBU0UyKE9wKSBcCiAgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwK
QEAgLTI4NzksNiArMjc4NSwxMyBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQ
cm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5dGVjb2RlSW5kZQogI3VuZGVmIENB
U0UxCiAjdW5kZWYgQ0FTRTIKIAorICAgIGNhc2UgT3BHZXRCeUlkOjpvcGNvZGVJRDogeworICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKKyAgICAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSh0aGlzKTsKKyAgICAgICAgaWYg
KG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3Ro
KQorICAgICAgICAgICAgcmV0dXJuICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0
aE1vZGUuYXJyYXlQcm9maWxlOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjk4NywxOSArMjkwMCwxOSBAQCB2b2lkIENvZGVC
bG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVu
c2lnbmVkJiBudW1iZQogICAgICAgICAgICAgbnVtU2FtcGxlcyA9IFZhbHVlUHJvZmlsZTo6bnVt
YmVyT2ZCdWNrZXRzOyAvLyBXZSBkb24ndCB3YW50IHByb2ZpbGVzIHRoYXQgYXJlIGV4dHJlbWVs
eSBob3QgdG8gYmUgZ2l2ZW4gbW9yZSB3ZWlnaHQuCiAgICAgICAgIG51bWJlck9mU2FtcGxlc0lu
UHJvZmlsZXMgKz0gbnVtU2FtcGxlczsKICAgICAgICAgaWYgKGlzQXJndW1lbnQpIHsKLSAgICAg
ICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBw
cm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChwcm9maWxlLm51bWJlck9mU2FtcGxlcygpIHx8
IHByb2ZpbGUuaXNTYW1wbGVkQmVmb3JlKCkpCiAgICAgICAgICAgICBudW1iZXJPZkxpdmVOb25B
cmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKLSAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oKTsKKyAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyKTsKICAgICB9KTsKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BDYXRjaD4oWyZdKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBp
ZiAobWV0YWRhdGEubV9idWZmZXIpIHsKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2J1ZmZl
ci0+Zm9yRWFjaChbJl0oVmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyJiBwcm9maWxlKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7
CisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxv
Y2tlcik7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwpA
QCAtMzAxOCw4ICsyOTMxLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2Zp
bGVQcmVkaWN0aW9ucygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxBcnJheVByZWRpY3Rp
b25zKCkKIHsKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAg
ICAgZm9yRWFjaEFycmF5UHJvZmlsZShbJl0oQXJyYXlQcm9maWxlJiBwcm9maWxlKSB7Ci0gICAg
ICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKHRoaXMpOworICAgICAgICBwcm9m
aWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIHRoaXMpOwogICAgIH0pOwogICAg
IAogICAgIGZvckVhY2hBcnJheUFsbG9jYXRpb25Qcm9maWxlKFsmXShBcnJheUFsbG9jYXRpb25Q
cm9maWxlJiBwcm9maWxlKSB7CkBAIC0zMjQ5LDcgKzMxNjQsNyBAQCBWYWx1ZVByb2ZpbGUqIENv
ZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4
IGJ5dGVjbwogCiAjZGVmaW5lIENBU0UoT3ApIFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXAot
ICAgICAgICByZXR1cm4gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fcHJv
ZmlsZTsKKyAgICAgICAgcmV0dXJuICZpbnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhp
cykubV9wcm9maWxlOwogCiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJ
TEUoQ0FTRSkKIApAQCAtMzI2NiwxMCArMzE4MSwxMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9j
azo6dHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVj
bwogICAgIH0KIH0KIAotU3BlY3VsYXRlZFR5cGUgQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVQcmVk
aWN0aW9uRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCitTcGVj
dWxhdGVkVHlwZSBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUlu
ZGV4KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXgpCiB7CiAgICAgaWYgKFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlID0gdHJ5R2V0
VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0
dXJuIHZhbHVlUHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIHJl
dHVybiB2YWx1ZVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAg
IHJldHVybiBTcGVjTm9uZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCmluZGV4IGE4YWU3NTU0MTg3Zjg5ZjM4NzRmNzA5NTIzNzRmYjRkYmYyMTAxZGQu
LmE2M2Y0NzczYWZjZDlhYzQ0YWZlMDY5MjI1NGUxZjk0MDQ0YTM4MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTE0NCw3ICsxNDQsNiBAQCBwdWJs
aWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkNvZGVCbG9jaygpOwogCiAgICAgVW5saW5rZWRD
b2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUuZ2V0KCk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVW5saW5rZWRDb2RlQmxv
Y2soKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX3VubGlua2VkQ29kZSk7
IH0KIAogICAgIENTdHJpbmcgaW5mZXJyZWROYW1lKCkgY29uc3Q7CiAgICAgQ29kZUJsb2NrSGFz
aCBoYXNoKCkgY29uc3Q7CkBAIC00NzUsMTYgKzQ3NCwxOSBAQCBwdWJsaWM6CiAKICAgICB1bnNp
Z25lZCBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpCiAgICAgewotICAgICAgICByZXR1
cm4gbnVtUGFyYW1ldGVycygpOworICAgICAgICBBU1NFUlQobV9hcmd1bWVudFZhbHVlUHJvZmls
ZXMuc2l6ZSgpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX251bVBhcmFtZXRlcnMpIHx8ICFP
cHRpb25zOjp1c2VKSVQoKSk7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50VmFsdWVQcm9maWxl
cy5zaXplKCk7CiAgICAgfQogCiAgICAgVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGVGb3JBcmd1
bWVudCh1bnNpZ25lZCBhcmd1bWVudEluZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHVubGlu
a2VkQ29kZUJsb2NrKCktPnZhbHVlUHJvZmlsZShhcmd1bWVudEluZGV4KTsKKyAgICAgICAgQVNT
RVJUKE9wdGlvbnM6OnVzZUpJVCgpKTsgLy8gVGhpcyBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSB2
YXJpb3VzIEpJVCBjb21waWxlcnMgb3IgcGxhY2VzIHRoYXQgZmlyc3QgY2hlY2sgbnVtYmVyT2ZB
cmd1bWVudFZhbHVlUHJvZmlsZXMgYmVmb3JlIGNhbGxpbmcgdGhpcy4KKyAgICAgICAgVmFsdWVQ
cm9maWxlJiByZXN1bHQgPSBtX2FyZ3VtZW50VmFsdWVQcm9maWxlc1thcmd1bWVudEluZGV4XTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBWYWx1ZVByb2ZpbGUmIHZhbHVl
UHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7Ci0gICAgU3BlY3VsYXRlZFR5
cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7
CisgICAgU3BlY3VsYXRlZFR5cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5k
ZXgoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnl0ZWNvZGVJbmRleCk7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVu
Y3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFycmF5
UHJvZmlsZShjb25zdCBGdW5jdG9yJik7CkBAIC04ODQsOCArODg2LDcgQEAgcHVibGljOgogICAg
IE1ldGFkYXRhJiBtZXRhZGF0YShPcGNvZGVJRCBvcGNvZGVJRCwgdW5zaWduZWQgbWV0YWRhdGFJ
RCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX21ldGFkYXRhKTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChvcGNvZGVJRCwgb3Bjb2RlSUQgPT0gTWV0YWRhdGE6Om9wY29kZUlEKTsKLSAgICAgICAg
cmV0dXJuIG1fbWV0YWRhdGEtPmdldDxNZXRhZGF0YT4oKVttZXRhZGF0YUlEXTsKKyAgICAgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDxNZXRhZGF0YSo+KG1fbWV0YWRhdGEtPmdldChvcGNvZGVJRCkp
W21ldGFkYXRhSURdOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgpA
QCAtOTM4LDggKzkzOSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZUFsbFZhbHVlUHJv
ZmlsZVByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9u
QXJndW1lbnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyk7CiAKLSAgICBWZWN0b3I8dW5zaWduZWQ+IHNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZp
eGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgRml4ZWRW
ZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uKTsKLSAgICB2b2lkIGluaXRpYWxpemVUZW1wbGF0ZU9iamVjdHMoU2NyaXB0RXhl
Y3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBWZWN0b3I8dW5zaWduZWQ+Jik7Cisg
ICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBGaXhlZFZlY3RvcjxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4+JiBjb25zdGFudHMsIGNvbnN0IEZpeGVkVmVjdG9yPFNvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiwgU2NyaXB0RXhl
Y3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKTsKIAogICAgIHZvaWQgcmVwbGFjZUNvbnN0YW50
KFZpcnR1YWxSZWdpc3RlciByZWcsIEpTVmFsdWUgdmFsdWUpCiAgICAgewpAQCAtMTAxNSw2ICsx
MDE1LDcgQEAgcHJpdmF0ZToKICAgICAvLyBmb3IgREZHIGNvZGUgYmxvY2tzLgogICAgIENvbXBy
ZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciBtX2xhenlPcGVyYW5kVmFsdWVQcm9m
aWxlczsKICNlbmRpZgorICAgIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZh
bHVlUHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQb29sCiAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgUmVnaXN0
ZXJfbXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJyaWVyX1Vua25vd24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKaW5kZXggYjAw
ZTI0NmY2OTc4ZTkyOGMzODEwNmVjYTAwNDM2ZDU3N2NmNmRhMy4uNTM2MjI4OTA3ZTg0YzQ5MzNj
ZDI5M2RmMzUwMTdiZjc5ZGU3NGY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCkBAIC0zOSwyMiArMzksMjIgQEAgdm9pZCBDb2Rl
QmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogICAgIGlm
IChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICAgICAgbV9tZXRhZGF0
YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMoKm1ldGFkYXRhLm1f
cHJvZmlsZSwgZmFsc2UpOyB9KTsKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9wcm9maWxlLCBmYWxzZSk7IH0p
OwogCiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUoVklTSVQpCiAK
ICN1bmRlZiBWSVNJVAogCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9w
ZW4+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgCi0gICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5t
X2l0ZXJhYmxlUHJvZmlsZSwgZmFsc2UpOwotICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9p
dGVyYXRvclByb2ZpbGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1fbmV4
dFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVBy
b2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2Zp
bGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFs
c2UpOwogICAgICAgICB9KTsKIAogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0
b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBmdW5jKCptZXRhZGF0
YS5tX25leHRSZXN1bHRQcm9maWxlLCBmYWxzZSk7Ci0gICAgICAgICAgICBmdW5jKCptZXRhZGF0
YS5tX2RvbmVQcm9maWxlLCBmYWxzZSk7Ci0gICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX3Zh
bHVlUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX25leHRSZXN1
bHRQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fZG9uZVByb2Zp
bGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV92YWx1ZVByb2ZpbGUsIGZh
bHNlKTsKICAgICAgICAgfSk7CiAgICAgfSAgIAogCkBAIC02NCw4ICs2NCwxMyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUo
Y29uc3QgRnVuY3RvciYgZnVuYykKIHsKICAgICBpZiAobV9tZXRhZGF0YSkgeworICAgICAgICBt
X21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAg
ICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6
OkFycmF5TGVuZ3RoKQorICAgICAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7CisgICAgICAgIH0pOworCiAjZGVmaW5l
IFZJU0lUMShfX29wKSBcCi0gICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7IGZ1bmMoKm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKTsgfSk7CisgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRh
dGEubV9hcnJheVByb2ZpbGUpOyB9KTsKIAogI2RlZmluZSBWSVNJVDIoX19vcCkgXAogICAgIG1f
bWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFk
YXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlKTsgfSk7CkBAIC03Nyw3ICs4Miw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1bmMp
CiAjdW5kZWYgVklTSVQyCiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9y
TmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewotICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEu
bV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0ZXJhYmxl
UHJvZmlsZSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCmluZGV4IDUwYTNjYjM0OGMxYmMxOTVl
MjJmNGZiNDY4ZGE5NTU5NzkyYzAwZTIuLjI1NTEzNzI5NjU5NmEyNWYxMDYwMDhhMzVhOWM1NmJi
ZTcyYTRjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdF
eGl0UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmNwcApAQCAtODksMTkgKzg5LDYgQEAgVmVjdG9yPEZyZXF1ZW50RXhpdFNpdGU+
IEV4aXRQcm9maWxlOjpleGl0U2l0ZXNGb3IoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgRXhpdFByb2ZpbGU6Omhhc0FueUV4aXRzQXQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KSBj
b25zdAotewotICAgIGlmICghbV9mcmVxdWVudEV4aXRTaXRlcykKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZnJlcXVlbnRFeGl0U2l0ZXMt
PnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2ZyZXF1ZW50RXhpdFNpdGVzLT5hdChpKS5i
eXRlY29kZUluZGV4KCkgPT0gYnl0ZWNvZGVJbmRleCkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBFeGl0UHJvZmlsZTo6aGFz
RXhpdFNpdGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgY29uc3QgRnJlcXVlbnRFeGl0U2l0
ZSYgc2l0ZSkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJlcXVlbnRFeGl0U2l0ZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCmluZGV4IDcyZjVk
ZmY1NGEwNzVjZTQxYjkxMmNiZDJmYzJjNGU0YTg4ZGM4YmMuLjg5ZTA4ZmI1ZDY3ZTQxMjYxMzYy
ODljODk1NGY2ODkxNDdhZTU4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9ERkdFeGl0UHJvZmlsZS5oCkBAIC0xODIsOCArMTgyLDYgQEAgcHVibGljOgogICAgIC8v
IEdldCB0aGUgZnJlcXVlbnQgZXhpdCBzaXRlcyBmb3IgYSBieXRlY29kZSBpbmRleC4gVGhpcyBp
cyBPKG4pLCBhbmQgaXMKICAgICAvLyBtZWFudCB0byBvbmx5IGJlIHVzZWQgZnJvbSBkZWJ1Z2dp
bmcvcHJvZmlsaW5nIGNvZGUuCiAgICAgVmVjdG9yPEZyZXF1ZW50RXhpdFNpdGU+IGV4aXRTaXRl
c0ZvcihCeXRlY29kZUluZGV4KTsKLQotICAgIGJvb2wgaGFzQW55RXhpdHNBdChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBCeXRlY29kZUluZGV4KSBjb25zdDsKICAgICAKICAgICAvLyBUaGlz
IGlzIE8obikgYW5kIHNob3VsZCBiZSBjYWxsZWQgb24gbGVzcy1mcmVxdWVudGx5IGV4ZWN1dGVk
IGNvZGUgcGF0aHMKICAgICAvLyBpbiB0aGUgY29tcGlsZXIuIEl0IHNob3VsZCBiZSBzdHJpY3Rs
eSBjaGVhcGVyIHRoYW4gYnVpbGRpbmcgYQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCmluZGV4IDhhNTA2YWEzOTkyNThkNzAwZTNhMjNjYzU0
YmM3NzQyOTA5ODlhZmIuLmVkY2U0ODkzNzE3NTU5OWJkYjg0MjZmZjU2ODEwMGJjNzYwM2NlYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRh
dGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRh
LmgKQEAgLTQ4LDYgKzQ4LDExIEBAIHN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgewog
fTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFVbnNldCkgPT0gMTIp
OwogCitzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIHsKKyAgICBBcnJheVBy
b2ZpbGUgYXJyYXlQcm9maWxlOworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2Rl
TWV0YWRhdGFBcnJheUxlbmd0aCkgPT0gMTIpOworCiBzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0
YVByb3RvTG9hZCB7CiAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CiAgICAgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0OwpAQCAtODUsNiArOTAsNyBAQCB1bmlvbiBHZXRCeUlkTW9kZU1l
dGFkYXRhIHsKICAgICB9OwogICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRN
b2RlOwogICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFVbnNldCB1bnNldE1vZGU7CisgICAgR2V0QnlJ
ZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIGFycmF5TGVuZ3RoTW9kZTsKICAgICBHZXRCeUlkTW9k
ZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9hZE1vZGU7CiB9Owogc3RhdGljX2Fzc2VydChzaXpl
b2YoR2V0QnlJZE1vZGVNZXRhZGF0YSkgPT0gMTYpOwpAQCAtMTA3LDYgKzExMyw3IEBAIHN0cnVj
dCBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAgICB1bmlvbiB7CiAgICAgICAgIEdldEJ5SWRNb2Rl
TWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2RlOwogICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRh
VW5zZXQgdW5zZXRNb2RlOworICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlMZW5ndGgg
YXJyYXlMZW5ndGhNb2RlOwogICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHBy
b3RvTG9hZE1vZGU7CiAgICAgfTsKICAgICBHZXRCeUlkTW9kZSBtb2RlOwpAQCAtMTMwLDYgKzEz
Nyw3IEBAIGlubGluZSB2b2lkIEdldEJ5SWRNb2RlTWV0YWRhdGE6OnNldFVuc2V0TW9kZShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIGlubGluZSB2b2lkIEdldEJ5SWRNb2RlTWV0YWRhdGE6OnNldEFy
cmF5TGVuZ3RoTW9kZSgpCiB7CiAgICAgbW9kZSA9IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aDsK
KyAgICBuZXcgKCZhcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKSBBcnJheVByb2ZpbGU7CiAg
ICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCiAg
ICAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAKaW5k
ZXggMTc2NTIxNDIyZjE0ZWU3YmNlYzIzZWNjYmE3MGEwZDk4ZDk2ZDAwMi4uNjE3Y2U1ZGVkYWI1
ODA4NDU2NGJlYzgzZTk0YWI2Y2YxZDY0ODliMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCkBAIC0z
MywxMyArMzMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcigp
IHsgfQogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjp+Q29tcHJlc3Nl
ZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCkgeyB9CiAKLXZvaWQgQ29tcHJlc3NlZExh
enlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCit2b2lkIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZUhvbGRlcjo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucyhjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNpemUoKTsgKytpKQot
ICAgICAgICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogfQogCiBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxl
SG9sZGVyOjphZGQoCkBAIC04NywxMyArODcsMTMgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUq
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpnZXRJZlByZXNlbnQoCiB9CiAKIFNwZWN1
bGF0ZWRUeXBlIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpwcmVkaWN0aW9uKAotICAg
IGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxl
S2V5JiBrZXkpIGNvbnN0CisgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIGNv
bnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpIGNvbnN0CiB7CiAgICAgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBnZXRJZlByZXNlbnQoa2V5KTsKICAgICBpZiAo
IXByb2ZpbGUpCiAgICAgICAgIHJldHVybiBTcGVjTm9uZTsKICAgICAKLSAgICByZXR1cm4gcHJv
ZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgcmV0dXJuIHByb2ZpbGUtPmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcApp
bmRleCBiMGQ0YWUwODdjOTExNDIzMWM4YjVmNDU2ZTc1NDhkZWExMWRlY2IwLi42MGM0ZDM2ZjBh
Zjc1ZDM2ZGRiZjkxY2EyZWNjMzE2NDhhODRkZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCkBAIC00NCwxMSArNDQsOSBAQCBzdHJ1
Y3QgRGVhbGxvY1RhYmxlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICBzdGF0aWMg
dm9pZCB3aXRoT3Bjb2RlVHlwZShNZXRhZGF0YVRhYmxlKiB0YWJsZSkKICAgICB7Ci0gICAgICAg
IGlmIGNvbnN0ZXhwciAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE9wOjpvcGNvZGVJRCkgPCBOVU1C
RVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFUQSkgewotICAgICAgICAgICAgdGFibGUtPmZvckVh
Y2g8T3A+KFtdKGF1dG8mIGVudHJ5KSB7Ci0gICAgICAgICAgICAgICAgZW50cnkufk1ldGFkYXRh
KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQorICAgICAgICB0YWJsZS0+Zm9yRWFjaDxP
cD4oW10oYXV0byYgZW50cnkpIHsKKyAgICAgICAgICAgIGVudHJ5Ln5NZXRhZGF0YSgpOworICAg
ICAgICB9KTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGFkYXRhVGFibGUuaAppbmRleCA0ZDY3NThlNDFlOTU5YjhhMDA1MGJiNDY3NTg4MjY4OGEx
ZTZmNjVlLi4xZGMyN2Y0OWU0YTZhMGExNWIyMzJhNjIyODllOTIzZGYyOGY4ZDA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKQEAgLTQ2LDIy
ICs0NiwxOCBAQCBjbGFzcyBNZXRhZGF0YVRhYmxlIHsKIHB1YmxpYzoKICAgICB+TWV0YWRhdGFU
YWJsZSgpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+Ci0gICAgQUxXQVlTX0lO
TElORSBNZXRhZGF0YSogZ2V0KCkKKyAgICBBTFdBWVNfSU5MSU5FIEluc3RydWN0aW9uOjpNZXRh
ZGF0YSogZ2V0KE9wY29kZUlEIG9wY29kZUlEKQogICAgIHsKLSAgICAgICAgYXV0byBvcGNvZGVJ
RCA9IE1ldGFkYXRhOjpvcGNvZGVJRDsKICAgICAgICAgQVNTRVJUKG9wY29kZUlEIDwgTlVNQkVS
X09GX0JZVEVDT0RFX1dJVEhfTUVUQURBVEEpOwotICAgICAgICB1aW50cHRyX3QgcHRyID0gYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oZ2V0V2l0aG91dEFsaWduaW5nKG9wY29kZUlEKSk7Ci0gICAg
ICAgIHB0ciA9IHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZihNZXRhZGF0YSksIHB0cik7Ci0g
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8TWV0YWRhdGEqPihwdHIpOworICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvbjo6TWV0YWRhdGEqPihnZXRJbXBsKG9wY29k
ZUlEKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEZ1bmN0
b3I+CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZvckVhY2goY29uc3QgRnVuY3RvciYgZnVuYykK
ICAgICB7Ci0gICAgICAgIGF1dG8qIG1ldGFkYXRhID0gZ2V0PHR5cGVuYW1lIE9wOjpNZXRhZGF0
YT4oKTsKLSAgICAgICAgYXV0byogZW5kID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIE9wOjpNZXRh
ZGF0YSo+KGdldFdpdGhvdXRBbGlnbmluZyhPcDo6b3Bjb2RlSUQgKyAxKSk7Ci0gICAgICAgIGZv
ciAoOyBtZXRhZGF0YSA8IGVuZDsgKyttZXRhZGF0YSkKKyAgICAgICAgYXV0byogbWV0YWRhdGEg
PSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgT3A6Ok1ldGFkYXRhKj4oZ2V0KE9wOjpvcGNvZGVJRCkp
OworICAgICAgICBhdXRvKiBlbmQgPSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgT3A6Ok1ldGFkYXRh
Kj4oZ2V0SW1wbChPcDo6b3Bjb2RlSUQgKyAxKSk7CisgICAgICAgIGZvciAoOyBtZXRhZGF0YSAr
IDEgPD0gZW5kOyArK21ldGFkYXRhKQogICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEpOwogICAg
IH0KIApAQCAtMTIwLDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBvZmZzZXRU
YWJsZTMyKClbaV07CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB1aW50OF90KiBnZXRXaXRo
b3V0QWxpZ25pbmcodW5zaWduZWQgaSkKKyAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3QqIGdldElt
cGwodW5zaWduZWQgaSkKICAgICB7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludDhf
dCo+KHRoaXMpICsgZ2V0T2Zmc2V0KGkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaAppbmRleCA3YzNmMjI2N2I1MmUxY2Q0MDlkZDgxYmE1MTk0NTVlOTgxOWMw
OTZmLi5hYzdmNzEwZDgwNjVkYzgzZjUwMTcyYjk1ZTJhOTZkNjhkMGQxZWE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0xMzksNyArMTM5LDYgQEAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRXaWR0aEZvck1heE9wY29kZUxlbmd0aCA9IFdURjo6Z2V0
TVNCU2V0Q29uc3RleHByKG0KICAgICBtYWNybyhPcEVudW1lcmF0b3JHZXRCeVZhbCkgXAogICAg
IG1hY3JvKE9wRW51bWVyYXRvckluQnlWYWwpIFwKICAgICBtYWNybyhPcEVudW1lcmF0b3JIYXNP
d25Qcm9wZXJ0eSkgXAotICAgIG1hY3JvKE9wR2V0QnlJZCkgXAogCiAjZGVmaW5lIEZPUl9FQUNI
X09QQ09ERV9XSVRIX0FSUkFZX0FMTE9DQVRJT05fUFJPRklMRShtYWNybykgXAogICAgIG1hY3Jv
KE9wTmV3QXJyYXkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGRmMmRmNmFlYzhhYjA0ODE1OGI5YmE4ZWIxOWE2
NjNjNTUzYmY2ZmUuLjM3NTFhMzI5YjU4MTk4NjFiMzdlMDFjN2Y2YzI0MjQ4MGRkZTg4NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcApAQCAtMTA4LDggKzEwOCw2IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0
Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICBleHRyYU1l
bW9yeSArPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRXhwcnMuYnl0ZVNpemUoKTsKIAogICAgIHZp
c2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKGV4dHJhTWVtb3J5KTsKLQotICAgIFZNOjpT
cGFjZUFuZFNldDo6c2V0Rm9yKCp0aGlzT2JqZWN0LT5zdWJzcGFjZSgpKS5hZGQodGhpc09iamVj
dCk7CiB9CiAKIERFRklORV9WSVNJVF9DSElMRFJFTihVbmxpbmtlZENvZGVCbG9jayk7CkBAIC0z
MTgsNDUgKzMxNiw0IEBAIGludCBVbmxpbmtlZENvZGVCbG9jazo6b3V0T2ZMaW5lSnVtcE9mZnNl
dChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIG1fb3V0
T2ZMaW5lSnVtcFRhcmdldHMuZ2V0KGJ5dGVjb2RlT2Zmc2V0KTsKIH0KIAotdm9pZCBVbmxpbmtl
ZENvZGVCbG9jazo6YWxsb2NhdGVTaGFyZWRQcm9maWxlcygpCi17Ci0gICAgUkVMRUFTRV9BU1NF
UlQoIW1fbWV0YWRhdGEtPmlzRmluYWxpemVkKCkpOwotCi0gICAgewotICAgICAgICB1bnNpZ25l
ZCBudW1iZXJPZlZhbHVlUHJvZmlsZXMgPSBudW1QYXJhbWV0ZXJzKCk7Ci0gICAgICAgIGlmICht
X21ldGFkYXRhLT5oYXNNZXRhZGF0YSgpKSB7Ci0jZGVmaW5lIENPVU5UKF9fb3ApIFwKLSAgICAg
ICAgICAgIG51bWJlck9mVmFsdWVQcm9maWxlcyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPF9f
b3A+KCk7Ci0gICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKENP
VU5UKQotI3VuZGVmIENPVU5UCi0gICAgICAgICAgICBudW1iZXJPZlZhbHVlUHJvZmlsZXMgKz0g
bV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9yT3Blbj4oKSAqIDM7Ci0gICAgICAgICAg
ICBudW1iZXJPZlZhbHVlUHJvZmlsZXMgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJh
dG9yTmV4dD4oKSAqIDM7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3ZhbHVlUHJvZmlsZXMgPSBG
aXhlZFZlY3RvcjxWYWx1ZVByb2ZpbGU+KG51bWJlck9mVmFsdWVQcm9maWxlcyk7Ci0gICAgfQot
Ci0gICAgaWYgKG1fbWV0YWRhdGEtPmhhc01ldGFkYXRhKCkpIHsKLSAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZBcnJheVByb2ZpbGVzID0gMDsKLQotI2RlZmluZSBDT1VOVChfX29wKSBcCi0gICAg
ICAgIG51bWJlck9mQXJyYXlQcm9maWxlcyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPF9fb3A+
KCk7Ci0gICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoQ09VTlQpCi0j
dW5kZWYgQ09VTlQKLSAgICAgICAgbnVtYmVyT2ZBcnJheVByb2ZpbGVzICs9IG1fbWV0YWRhdGEt
Pm51bUVudHJpZXM8T3BJdGVyYXRvck5leHQ+KCk7Ci0KLSAgICAgICAgbV9hcnJheVByb2ZpbGVz
ID0gRml4ZWRWZWN0b3I8QXJyYXlQcm9maWxlPihudW1iZXJPZkFycmF5UHJvZmlsZXMpOwotICAg
IH0KLX0KLQotdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
Vk0mKQotewotICAgIGZvciAoYXV0byYgcHJvZmlsZSA6IG1fdmFsdWVQcm9maWxlcykKLSAgICAg
ICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKLSAgICBmb3IgKGF1dG8mIHBy
b2ZpbGUgOiBtX2FycmF5UHJvZmlsZXMpCi0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKHRoaXMpOwotCi0gICAgVk06OlNwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNl
KCkpLnJlbW92ZSh0aGlzKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGFlOGZm
MGQzNWMzOTQzOTRiMzQ4OTgzYjI1ZDYxYWFjMmZkMGQxYTEuLjgxODFhMjM1ODkxYzQ0MDZiNDcy
YzJmZmY4ZTgzZjdjNzgxYzZhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252
ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAiREZHRXhpdFByb2Zp
bGUuaCIKQEAgLTM5LDcgKzM4LDYgQEAKICNpbmNsdWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlVubGlua2VkTWV0YWRhdGFU
YWJsZS5oIgotI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdp
c3Rlci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+
CkBAIC0zMjYsMTcgKzMyNCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRl
KGxvY2tlciwgc2l0ZSk7CiAgICAgfQogCi0gICAgYm9vbCBoYXNBbnlFeGl0c0F0KGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9leGl0UHJvZmlsZS5oYXNBbnlFeGl0c0F0KGxv
Y2tlciwgYnl0ZWNvZGVJbmRleCk7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNBbnlFeGl0c0F0KEJ5
dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKLSAgICB7Ci0gICAgICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgcmV0dXJuIGhhc0FueUV4aXRzQXQobG9ja2Vy
LCBieXRlY29kZUluZGV4KTsKLSAgICB9Ci0KICAgICBERkc6OkV4aXRQcm9maWxlJiBleGl0UHJv
ZmlsZSgpIHsgcmV0dXJuIG1fZXhpdFByb2ZpbGU7IH0KICNlbmRpZgogCkBAIC0zNDcsOSArMzM0
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9tZXRhZGF0YS0+c2l6ZUluQnl0ZXMoKTsK
ICAgICB9CiAKLSAgICB2b2lkIGFsbG9jYXRlU2hhcmVkUHJvZmlsZXMoKTsKLQotICAgIHZvaWQg
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKIAogcHJvdGVjdGVkOgogICAgIFVubGlua2Vk
Q29kZUJsb2NrKFZNJiwgU3RydWN0dXJlKiwgQ29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJbmZv
JiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4pOwpAQCAtNDM1LDggKzQxOSw2IEBAIHBy
aXZhdGU6CiAgICAgRml4ZWRWZWN0b3I8SWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsKICAgICBG
aXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+IG1fY29uc3RhbnRSZWdpc3RlcnM7CiAg
ICAgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiBtX2NvbnN0YW50c1NvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbjsKLSAgICBGaXhlZFZlY3RvcjxWYWx1ZVByb2ZpbGU+IG1fdmFs
dWVQcm9maWxlczsgLy8gVGhlIGZpcnN0IG51bVBhcmFtZXRlcnMoKSBhcmUgYXJndW1lbnQgcHJv
ZmlsZXMuCi0gICAgRml4ZWRWZWN0b3I8QXJyYXlQcm9maWxlPiBtX2FycmF5UHJvZmlsZXM7CiAg
ICAgdXNpbmcgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJy
aWVyPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPj47CiAgICAgRnVuY3Rpb25FeHByZXNzaW9u
VmVjdG9yIG1fZnVuY3Rpb25EZWNsczsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3IgbV9m
dW5jdGlvbkV4cHJzOwpAQCAtNDc0LDExICs0NTYsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBvdXRPZkxpbmVKdW1wT2Zmc2V0KGluc3RydWN0aW9uLm9mZnNldCgpKTsKICAgICB9CiAKLSAg
ICBWYWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZSh1bnNpZ25lZCBpKSB7IHJldHVybiBtX3ZhbHVl
UHJvZmlsZXNbaV07IH0KLSAgICBBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSh1bnNpZ25lZCBp
KSB7IHJldHVybiBtX2FycmF5UHJvZmlsZXNbaV07IH0KLSAgICB1bnNpZ25lZCBudW1WYWx1ZVBy
b2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZVByb2ZpbGVzLnNpemUoKTsgfQotICAgIHVu
c2lnbmVkIG51bUFycmF5UHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvZmlsZXMu
c2l6ZSgpOyB9Ci0KIHByaXZhdGU6CiAgICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBI
YXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3IuY3BwCmluZGV4IDNiNzFhODAzMTJlY2E2NzViZDRhNDIyMmEyOGFlZDhjODdhMmYyMGQu
LjUxYTg2NTJiZjA1MWE0ODc5MDQzNzliYzRmOGUxODNkZjgxZGU0Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
R2VuZXJhdG9yLmNwcApAQCAtMTE5LDcgKzExOSw2IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3I6OmZpbmFsaXplKHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gaW5z
CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb2RlQmxvY2stPmNlbGxMb2NrKCkg
fTsKICAgICAgICAgbV9jb2RlQmxvY2stPm1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVj
dGlvbnMpOwotICAgICAgICBtX2NvZGVCbG9jay0+YWxsb2NhdGVTaGFyZWRQcm9maWxlcygpOwog
ICAgICAgICBtX2NvZGVCbG9jay0+bV9tZXRhZGF0YS0+ZmluYWxpemUoKTsKIAogICAgICAgICBt
X2NvZGVCbG9jay0+bV9qdW1wVGFyZ2V0cyA9IFdURk1vdmUobV9qdW1wVGFyZ2V0cyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRh
VGFibGUuY3BwCmluZGV4IDVmNGMwYTllN2FjZGQ3ZTdhNDQxOGI5MmM1ZWRhZWZlNzY4NGFlOTIu
LmI3MzAyZjQ0MWI3NjViNTNhMTQ0ZDBhNDhhNWJiNDE4NGM0ZTk0YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUu
Y3BwCkBAIC01NSwxMCArNTUsMTAgQEAgdm9pZCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmZpbmFs
aXplKCkKICAgICAgICAgICAgICAgICBidWZmZXJbaV0gPSBvZmZzZXQ7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBidWZmZXJbaV0gPSBvZmZz
ZXQ7IC8vIFdlIGFsaWduIHdoZW4gd2UgYWNjZXNzIHRoaXMuCiAgICAgICAgICAgICB1bnNpZ25l
ZCBhbGlnbm1lbnQgPSBtZXRhZGF0YUFsaWdubWVudChzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkp
OwogICAgICAgICAgICAgb2Zmc2V0ID0gcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm1lbnQsIG9m
ZnNldCk7CiAgICAgICAgICAgICBBU1NFUlQoYWxpZ25tZW50IDw9IHNfbWF4TWV0YWRhdGFBbGln
bm1lbnQpOworICAgICAgICAgICAgYnVmZmVyW2ldID0gb2Zmc2V0OwogICAgICAgICAgICAgb2Zm
c2V0ICs9IG51bWJlck9mRW50cmllcyAqIG1ldGFkYXRhU2l6ZShzdGF0aWNfY2FzdDxPcGNvZGVJ
RD4oaSkpOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZlcltzX29mZnNldFRhYmxlRW50cmllcyAt
IDFdID0gb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkTWV0YWRhdGFUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCmluZGV4IDk0MDVjZDY2YjUyYWRjZGY0NjA5ZWExMmZi
NzlmOTZmYzM0MmYwMTIuLjIyM2Q1N2M3ZmNkMDM2NWZhMDc1ODEwZTlhYjRmYTA2NGMyMjg0YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFk
YXRhVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRN
ZXRhZGF0YVRhYmxlLmgKQEAgLTUyLDggKzUyLDYgQEAgcHVibGljOgogICAgIH5VbmxpbmtlZE1l
dGFkYXRhVGFibGUoKTsKIAogICAgIHVuc2lnbmVkIGFkZEVudHJ5KE9wY29kZUlEKTsKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQnl0ZWNvZGU+Ci0gICAgdW5zaWduZWQgbnVtRW50cmllcygpOwog
CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCk7CiAKQEAgLTY2LDkgKzY0LDYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVbmxpbmtlZE1ldGFkYXRhVGFibGUpOwogICAg
IH0KIAotICAgIGJvb2wgaXNGaW5hbGl6ZWQoKSB7IHJldHVybiBtX2lzRmluYWxpemVkOyB9Ci0g
ICAgYm9vbCBoYXNNZXRhZGF0YSgpIHsgcmV0dXJuIG1faGFzTWV0YWRhdGE7IH0KLQogcHJpdmF0
ZToKICAgICBlbnVtIEVtcHR5VGFnIHsgRW1wdHkgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGVJbmxpbmVz
LmgKaW5kZXggNzI1MDYzM2Y3NzA5NGY4NGJiMDI3ZWVhNWM4MTFjZWZjZjg2ZDM1NC4uOTgyMmRi
ZDgzMzgwNGMyNWU0ZTdmN2Q1ODBkYTNhNWI0NWM4NTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5s
aW5lcy5oCkBAIC03MywxNCArNzMsNiBAQCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIFVubGlua2Vk
TWV0YWRhdGFUYWJsZTo6YWRkRW50cnkoT3Bjb2RlSUQgb3Bjb2RlSUQpCiAgICAgcmV0dXJuIHBy
ZXByb2Nlc3NCdWZmZXIoKVtvcGNvZGVJRF0rKzsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEJ5
dGVjb2RlPgotQUxXQVlTX0lOTElORSB1bnNpZ25lZCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Om51
bUVudHJpZXMoKQotewotICAgIGNvbnN0ZXhwciBhdXRvIG9wY29kZUlEID0gQnl0ZWNvZGU6Om9w
Y29kZUlEOwotICAgIEFTU0VSVCghbV9pc0ZpbmFsaXplZCAmJiBvcGNvZGVJRCA8IHNfb2Zmc2V0
VGFibGVFbnRyaWVzIC0gMSk7Ci0gICAgcmV0dXJuIHByZXByb2Nlc3NCdWZmZXIoKVtvcGNvZGVJ
RF07Ci19Ci0KIEFMV0FZU19JTkxJTkUgc2l6ZV90IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c2l6
ZUluQnl0ZXMoKQogewogICAgIGlmIChtX2lzRmluYWxpemVkICYmICFtX2hhc01ldGFkYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCmluZGV4IDI0
ZDdiYThkNjBlYTY1NzgzYzU2Mzc1NWQxODg5MzEyNTc5NmU3NDAuLjU3YWZmODI3MTUyZmE5NTBj
YmI0YmM3YjgyNGNiNzc2YzM1ODlhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmFsdWVQcm9maWxlLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJDb25jdXJy
ZW50SlNMb2NrLmgiCiAjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmUuaCIKLSNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIApAQCAtNDUs
MTEgKzQ0LDYgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgdG90YWxOdW1iZXJPZkJ1Y2tldHMgPSBudW1iZXJPZkJ1Y2tldHMgKyBudW1i
ZXJPZlNwZWNGYWlsQnVja2V0czsKICAgICAKICAgICBWYWx1ZVByb2ZpbGVCYXNlKCkKLSAgICB7
Ci0gICAgICAgIGNsZWFyQnVja2V0cygpOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJCdWNrZXRz
KCkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9m
QnVja2V0czsgKytpKQogICAgICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7CkBAIC02MSw2ICs1NSwxNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7
CiAgICAgICAgIHJldHVybiBtX2J1Y2tldHMgKyBudW1iZXJPZkJ1Y2tldHMgKyBpOwogICAgIH0K
ICAgICAKKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyh1bnNpZ25lZCBidWNrZXQpIGNv
bnN0CisgICAgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVj
a2V0c1tidWNrZXRdKTsKKyAgICAgICAgaWYgKCEhdmFsdWUpIHsKKyAgICAgICAgICAgIGlmICgh
dmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
ICAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZTYW1wbGVzKCkgY29uc3QKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHJlc3Vs
dCA9IDA7CkBAIC04Nyw5ICs5Miw5IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRp
b24oKQorICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImIGxvY2tlcikKICAgICB7Ci0gICAgICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwor
ICAgICAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKICAgICAgICAgCiAgICAg
ICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKICAgICAgICAgb3V0LnByaW50KCJwcmVkaWN0aW5n
ICIsIFNwZWN1bGF0aW9uRHVtcChtX3ByZWRpY3Rpb24pKTsKQEAgLTExMywxMCArMTE4LDEwIEBA
IHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBT
cGVjdWxhdGVkVHlwZSBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKQorICAgIC8vIFVwZGF0ZXMg
dGhlIHByZWRpY3Rpb24gYW5kIHJldHVybnMgdGhlIG5ldyBvbmUuIE5ldmVyIGNhbGwgdGhpcyBm
cm9tIGFueSB0aHJlYWQKKyAgICAvLyB0aGF0IGlzbid0IGV4ZWN1dGluZyB0aGUgY29kZS4KKyAg
ICBTcGVjdWxhdGVkVHlwZSBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKICAgICB7Ci0gICAgICAgIC8vIE11bHRpcGxlIHRocmVhZHMgY291bGQgYmUg
Y2FsbGluZyBpbnRvIHRoaXMgYXQgdGhlIHNhbWUgdGltZS4KLSAgICAgICAgLy8gVGhlIGltcG9y
dCBwYXJ0IGlzIHRoYXQgd2UgZG9uJ3QgZW5kIHVwIGNvcnJ1cHRpbmcgYW55IHZhbHVlcy4KICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVtYmVyT2ZCdWNrZXRzOyArK2kp
IHsKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUobV9idWNrZXRz
W2ldKTsKICAgICAgICAgICAgIGlmICghdmFsdWUpCkBAIC0xNTEsNyArMTU2LDYgQEAgc3RydWN0
IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMgOiBwdWJsaWMgVmFsdWVQcm9maWxl
QmFzZTwxIDw8IGxvZ051bWIKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBWYWx1ZVBy
b2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKICAgICBWYWx1ZVByb2ZpbGUoKSA6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mRmlyc3RCdWNrZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVmFs
dWVQcm9maWxlLCBtX2J1Y2tldHNbMF0pOyB9CiB9OwogCiBzdHJ1Y3QgVmFsdWVQcm9maWxlQW5k
VmlydHVhbFJlZ2lzdGVyIDogcHVibGljIFZhbHVlUHJvZmlsZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKaW5kZXggYzc4ZGVlN2ZiMGRhYWQyZDMwNzQwYmYz
YTRhZTY1NzYwMjYyMzhkMS4uNmU0ZmU5YWZhM2ViNzFjMzg5NzEwNzc2NWY0YzQ0ZmE1ZGRiYmQ1
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcApAQCAtMzYs
MTcgKzM2LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotQXJyYXlN
b2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKEdyYXBoJiBncmFwaCwgY29uc3QgQ29kZU9yaWdp
biYgb3JpZ2luLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uLCBi
b29sIG1ha2VTYWZlKQorQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIEFycmF5OjpB
Y3Rpb24gYWN0aW9uLCBib29sIG1ha2VTYWZlKQogewotICAgIGlmIChwcm9maWxlLT5vYnNlcnZl
ZERpZmZlcmVudEdsb2JhbE9iamVjdCgpICYmIGdyYXBoLmhhc0FueUV4aXRzQXQob3JpZ2luKSkg
ewotICAgICAgICAvLyBUaGlzIGNvdWxkIGJlIGFuIG9yaWdpbmFsIGFycmF5IHN0cnVjdHVyZSwg
YnV0IGZyb20gYSBkaWZmZXJlbnQKLSAgICAgICAgLy8gZ2xvYmFsIG9iamVjdCB0aGFuIHRoZSBs
ZXhpY2FsIGdsb2JhbCBvYmplY3QuIFNvIHdlIGNvbnNlcnZhdGl2ZWx5Ci0gICAgICAgIC8vIHNh
eSBpdCBpcyBub3QgYW4gb3JpZ2luYWwgYXJyYXkgc3RydWN0dXJlLgotICAgICAgICBwcm9maWxl
LT5zZXREb2VzTm90VXNlT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMoKTsKLSAgICB9Ci0KICAgICBB
cnJheTo6Q2xhc3Mgbm9uQXJyYXk7Ci0gICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5
U3RydWN0dXJlcygpKQorICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVy
ZXMobG9ja2VyKSkKICAgICAgICAgbm9uQXJyYXkgPSBBcnJheTo6T3JpZ2luYWxOb25BcnJheTsK
ICAgICBlbHNlCiAgICAgICAgIG5vbkFycmF5ID0gQXJyYXk6Ok5vbkFycmF5OwpAQCAtNzAsMjcg
KzYzLDI3IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChHcmFwaCYgZ3JhcGgs
IGNvbnN0IENvZGVPcmlnaW4mIG9yaWdpbiwgQXJyYXlQCiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbnZlcnRzID0gQXJyYXk6OkFzSXM7CiAKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0
eXBlLCBpc0FycmF5LCBjb252ZXJ0cywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtl
U2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVydHMs
IGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgfTsK
IAotICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWQgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMo
KTsKKyAgICBBcnJheU1vZGVzIG9ic2VydmVkID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVz
KGxvY2tlcik7CiAgICAgc3dpdGNoIChvYnNlcnZlZCkgewogICAgIGNhc2UgMDoKICAgICAgICAg
cmV0dXJuIEFycmF5TW9kZShBcnJheTo6VW5wcm9maWxlZCk7CiAgICAgY2FzZSBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5KToKLSAgICAgICAgaWYgKGFjdGlvbiA9PSBB
cnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQor
ICAgICAgICBpZiAoYWN0aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJj
ZXB0SW5kZXhlZEFjY2Vzc2VzKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KEFycmF5OjpTZWxlY3RVc2luZ0FyZ3VtZW50cywgbm9uQXJyYXksIEFycmF5OjpPdXRPZkJvdW5k
cywgQXJyYXk6OkNvbnZlcnQsIGFjdGlvbik7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJy
YXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIG5vbkFycmF5LCBhY3Rpb24pLndpdGhTcGVjdWxh
dGlvbkZyb21Qcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5
TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgbm9uQXJyYXksIGFjdGlvbikud2l0
aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CiAKICAg
ICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoVW5kZWNpZGVk
KToKICAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUpCiAgICAgICAgICAgICByZXR1
cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0FyZ3VtZW50cywgQXJyYXk6OkFycmF5LCBB
cnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pOwotICAgICAgICByZXR1
cm4gQXJyYXlNb2RlKEFycmF5OjpVbmRlY2lkZWQsIEFycmF5OjpBcnJheSwgQXJyYXk6Ok91dE9m
Qm91bmRzLCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVuZGVjaWRlZCwgQXJyYXk6OkFy
cmF5LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOwogICAgICAgICAKICAgICBjYXNlIGFzQXJyYXlN
b2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXkpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhBcnJheVdpdGhVbmRlY2lkZWQpOgotICAgICAgICBpZiAoYWN0aW9uID09IEFy
cmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCisg
ICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNl
cHRJbmRleGVkQWNjZXNzZXMobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUo
QXJyYXk6OlNlbGVjdFVzaW5nQXJndW1lbnRzLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6
Ok91dE9mQm91bmRzLCBBcnJheTo6Q29udmVydCwgYWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgYWN0aW9uKS53aXRoU3BlY3Vs
YXRpb25Gcm9tUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CiAKICAgICBjYXNlIGFz
QXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoSW50MzIpOgogICAgIGNh
c2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhJbnQzMik6CkBAIC0x
MjAsNTAgKzExMyw1MCBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQoR3JhcGgm
IGdyYXBoLCBjb25zdCBDb2RlT3JpZ2luJiBvcmlnaW4sIEFycmF5UAogICAgICAgICByZXR1cm4g
aGFuZGxlQ29udGlndW91c01vZGVzKEFycmF5OjpDb250aWd1b3VzLCBvYnNlcnZlZCk7CiAKICAg
ICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlT
dG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBu
b25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNh
ZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpBcnJheVN0b3JhZ2UsIG5vbkFy
cmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1h
a2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJy
YXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmlu
Z1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25v
cmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBub25BcnJheSwg
QXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOworICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtl
U2FmZSk7CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0
aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3Rv
cmFnZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9m
aWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3Rv
cmFnZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2Nr
ZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlw
ZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5
TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5
TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgot
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBBcnJh
eTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VT
YWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFn
ZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIs
IHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlw
ZWRBcnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZShBcnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpBcnJheVN0b3JhZ2UsIEFycmF5OjpQb3NzaWJseUFycmF5LCBBcnJh
eTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsK
ICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xv
d1B1dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5
V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3Jp
bmdUeXBlZEFycmF5cyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3Jp
bmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlN
b2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6Ci0g
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5
OjpQb3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJh
eVN0b3JhZ2UsIEFycmF5OjpQb3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRo
UHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEludDhBcnJheU1v
ZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDhBcnJheSwgbm9uQXJyYXks
IEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50OEFycmF5LCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CiAg
ICAgY2FzZSBJbnQxNkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
SW50MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHBy
b2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50MTZB
cnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwg
cHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgSW50MzJBcnJheU1vZGU6Ci0gICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OkludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywg
YWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OkludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQ4
QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50OEFycmF5LCBu
b25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNh
ZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50OEFycmF5LCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtl
U2FmZSk7CiAgICAgY2FzZSBVaW50OENsYW1wZWRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpVaW50OENsYW1wZWRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lz
LCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNh
c2UgVWludDE2QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50
MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2Zp
bGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDE2QXJy
YXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHBy
b2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQzMkFycmF5TW9kZToKLSAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywg
YWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OlVpbnQzMkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlv
bikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBGbG9h
dDMyQXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGbG9hdDMyQXJy
YXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBt
YWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZsb2F0MzJBcnJheSwg
bm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmls
ZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgRmxvYXQ2NEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6RmxvYXQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJy
YXlNb2RlKEFycmF5OjpGbG9hdDY0QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEJpZ0lu
dDY0QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdJbnQ2NEFy
cmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwg
bWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdJbnQ2NEFycmF5
LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9m
aWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBCaWdVaW50NjRBcnJheU1vZGU6Ci0gICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFz
SXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1
cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdVaW50NjRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lz
LCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBzZWVuIG11bHRpcGxlIFR5cGVkQXJyYXkg
dHlwZXMsIG9yIGEgVHlwZWRBcnJheSBhbmQgbm9uLXR5cGVkIGFycmF5LCBpdCBkb2Vzbid0IG1h
a2Ugc2Vuc2UgdG8gdHJ5IHRvIGNvbnZlcnQgdGhlIG9iamVjdCBzaW5jZSB5b3UgY2FuJ3QgY29u
dmVydCB0eXBlZCBhcnJheXMuCiAgICAgICAgIGlmIChvYnNlcnZlZCAmIEFMTF9UWVBFRF9BUlJB
WV9NT0RFUykKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CisgICAgICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtl
U2FmZSk7CiAKLSAgICAgICAgaWYgKChvYnNlcnZlZCAmIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlw
ZWRBcnJheXMoTm9uQXJyYXkpKSAmJiBwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJl
ZGljdGlvbnMpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsK
KyAgICAgICAgaWYgKChvYnNlcnZlZCAmIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMo
Tm9uQXJyYXkpKSAmJiBwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMobG9ja2Vy
KSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGlj
dGlvbnMpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNh
ZmUpOwogICAgICAgICAKICAgICAgICAgQXJyYXk6OlR5cGUgdHlwZTsKICAgICAgICAgQXJyYXk6
OkNsYXNzIGFycmF5Q2xhc3M7CkBAIC0xOTAsNyArMTgzLDcgQEAgQXJyYXlNb2RlIEFycmF5TW9k
ZTo6ZnJvbU9ic2VydmVkKEdyYXBoJiBncmFwaCwgY29uc3QgQ29kZU9yaWdpbiYgb3JpZ2luLCBB
cnJheVAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJyYXlDbGFzcyA9IEFycmF5OjpQb3Nz
aWJseUFycmF5OwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJh
eUNsYXNzLCBBcnJheTo6Q29udmVydCwgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtl
U2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcywgQXJyYXk6
OkNvbnZlcnQsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAppbmRl
eCAxYWEyNzczNWQyMmNjNzQ1MzBlN2M1OTM5ODA5MDE4YTI4Y2M3YmY2Li5hMDI2YWFkMTg5M2Jm
MjNjNTcxOTZmY2M2YzkxZmMyMDAwM2M0NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlNb2RlLmgKQEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBBcnJheU1vZGUod29yZCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBBcnJheU1vZGUgZnJv
bU9ic2VydmVkKEdyYXBoJiwgY29uc3QgQ29kZU9yaWdpbiYsIEFycmF5UHJvZmlsZSosIEFycmF5
OjpBY3Rpb24sIGJvb2wgbWFrZVNhZmUpOworICAgIHN0YXRpYyBBcnJheU1vZGUgZnJvbU9ic2Vy
dmVkKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFycmF5OjpBY3Rp
b24sIGJvb2wgbWFrZVNhZmUpOwogICAgIAogICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb24o
QXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKSBjb25zdAogICAgIHsKQEAgLTE5MCwxMyAr
MTkwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5
Q2xhc3MsIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwogICAgIH0KICAg
ICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoQXJyYXlQcm9maWxl
KiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIEFycmF5TW9kZSB3aXRoU3BlY3Vs
YXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQ
cm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJy
YXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRpb247CiAKICAgICAgICAgaWYgKG1ha2VTYWZlKQog
ICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKLSAgICAgICAg
ZWxzZSBpZiAocHJvZmlsZS0+bWF5U3RvcmVUb0hvbGUoKSkKKyAgICAgICAgZWxzZSBpZiAocHJv
ZmlsZS0+bWF5U3RvcmVUb0hvbGUobG9ja2VyKSkKICAgICAgICAgICAgIG15U3BlY3VsYXRpb24g
PSBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBteVNwZWN1bGF0aW9u
ID0gQXJyYXk6OkluQm91bmRzOwpAQCAtMjA0LDYgKzIwNCwyNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CiAgICAgfQogICAgIAorICAg
IEFycmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
QXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQXJyYXk6OkNsYXNzIG15QXJyYXlDbGFzczsKKworICAgICAgICBpZiAoaXNKU0FycmF5KCkp
IHsKKyAgICAgICAgICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMo
bG9ja2VyKSAmJiBiZW5lZml0c0Zyb21PcmlnaW5hbEFycmF5KCkpIHsKKyAgICAgICAgICAgICAg
ICBBcnJheU1vZGVzIGFycmF5TW9kZXMgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9j
a2VyKTsKKyAgICAgICAgICAgICAgICBpZiAoaGFzU2VlbkNvcHlPbldyaXRlQXJyYXkoYXJyYXlN
b2RlcykgJiYgIWhhc1NlZW5Xcml0YWJsZUFycmF5KGFycmF5TW9kZXMpKQorICAgICAgICAgICAg
ICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6T3JpZ2luYWxDb3B5T25Xcml0ZUFycmF5Owor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFoYXNTZWVuQ29weU9uV3JpdGVBcnJheShhcnJheU1v
ZGVzKSAmJiBoYXNTZWVuV3JpdGFibGVBcnJheShhcnJheU1vZGVzKSkKKyAgICAgICAgICAgICAg
ICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6Ok9yaWdpbmFsQXJyYXk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJh
eTo6QXJyYXk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJy
YXlDbGFzcygpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJy
YXlDbGFzcykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtl
U2FmZSk7CisgICAgfQorICAgIAogICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0
eXBlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwpAQCAtNTE3LDI4
ICs1MzgsNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgdS5hc1dvcmQgPSB3b3JkOwogICAg
IH0KLQotICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJv
b2wgbWFrZVNhZmUpIGNvbnN0Ci0gICAgewotICAgICAgICBBcnJheTo6Q2xhc3MgbXlBcnJheUNs
YXNzOwotCi0gICAgICAgIGlmIChpc0pTQXJyYXkoKSkgewotICAgICAgICAgICAgaWYgKHByb2Zp
bGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFs
QXJyYXkoKSkgewotICAgICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2Zp
bGUtPm9ic2VydmVkQXJyYXlNb2RlcygpOwotICAgICAgICAgICAgICAgIGlmIChoYXNTZWVuQ29w
eU9uV3JpdGVBcnJheShhcnJheU1vZGVzKSAmJiAhaGFzU2VlbldyaXRhYmxlQXJyYXkoYXJyYXlN
b2RlcykpCi0gICAgICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpPcmlnaW5h
bENvcHlPbldyaXRlQXJyYXk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWhhc1NlZW5Db3B5
T25Xcml0ZUFycmF5KGFycmF5TW9kZXMpICYmIGhhc1NlZW5Xcml0YWJsZUFycmF5KGFycmF5TW9k
ZXMpKQotICAgICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6T3JpZ2luYWxB
cnJheTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG15QXJyYXlD
bGFzcyA9IEFycmF5OjpBcnJheTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IG15QXJyYXlDbGFzcyA9IEFycmF5OjpBcnJheTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBteUFycmF5Q2xhc3MgPSBhcnJheUNsYXNzKCk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4g
d2l0aEFycmF5Q2xhc3MobXlBcnJheUNsYXNzKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShw
cm9maWxlLCBtYWtlU2FmZSk7Ci0gICAgfQotICAgIAogICAgIAogICAgIEFycmF5TW9kZXMgYXJy
YXlNb2Rlc1dpdGhJbmRleGluZ1NoYXBlcyhJbmRleGluZ1R5cGUgc2hhcGUpIGNvbnN0CiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCA2MmIwNzBhMzlmZjU5NTM3YTNhNDk1OTFkYmQ4YjMzNTAyNmM1OTg4Li4wMzllNzY5ZGNl
Nzc3Mzk2MDhmODNkNjEzODM5Y2E2MDYyY2E3ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtODk1LDcgKzg5NSwxMSBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgYXV0byBnZXRWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uRnJvbUZv
ckNvZGVCbG9ja0FuZEJ5dGVjb2RlT2Zmc2V0ID0gWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICAgICAgewotICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGNvZGVCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlv
bkZvckJ5dGVjb2RlSW5kZXgoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpOworICAgICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbjsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAg
ICAgICAgICAgICBwcmVkaWN0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9u
Rm9yQnl0ZWNvZGVJbmRleChsb2NrZXIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8qIGZ1enplckFnZW50ID0gbV92bS0+ZnV6emVy
QWdlbnQoKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShmdXp6ZXJBZ2VudCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZ1enplckFnZW50LT5nZXRQcmVkaWN0aW9uKGNvZGVCbG9jaywgY29k
ZU9yaWdpbiwgcHJlZGljdGlvbikgJiBTcGVjQnl0ZWNvZGVUb3A7CkBAIC05NzksOSArOTgzLDEw
IEBAIHByaXZhdGU6CiAKICAgICBBcnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5UHJvZmlsZSYg
cHJvZmlsZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCiAgICAgewotICAgICAgICBwcm9maWxlLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2sp
OwotICAgICAgICBib29sIG1ha2VTYWZlID0gcHJvZmlsZS5vdXRPZkJvdW5kcygpOwotICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQobV9ncmFwaCwgY3VycmVudENvZGVPcmln
aW4oKSwgJnByb2ZpbGUsIGFjdGlvbiwgbWFrZVNhZmUpOworICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsK
KyAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2spOworICAgICAgICBib29sIG1ha2VTYWZlID0gcHJv
ZmlsZS5vdXRPZkJvdW5kcyhsb2NrZXIpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlOjpmcm9t
T2JzZXJ2ZWQobG9ja2VyLCAmcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CiAgICAgfQogCiAg
ICAgTm9kZSogbWFrZVNhZmUoTm9kZSogbm9kZSkKQEAgLTIwNTMsOCArMjA1OCw5IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgT3BlcmFuZCByZXN1bHQsCiAgICAgICAgICAgICAvLyBhcmd1bWVudHMgcmVjZWl2ZWQgaW5z
aWRlIHRoZSBjYWxsZWUuIEJ1dCB0aGF0IHByb2JhYmx5IHdvbid0IG1hdHRlciBmb3IgbW9zdAog
ICAgICAgICAgICAgLy8gY2FsbHMuCiAgICAgICAgICAgICBpZiAoY29kZUJsb2NrICYmIGFyZ3Vt
ZW50IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkg
eworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2spOwogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSYgcHJvZmlsZSA9IGNvZGVCbG9j
ay0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJndW1lbnQpOwotICAgICAgICAgICAgICAgIHZh
cmlhYmxlLT5wcmVkaWN0KHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCkpOworICAg
ICAgICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKGxvY2tlcikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgobnVtU2V0QXJndW1lbnRzID49IG1hbmRh
dG9yeU1pbmltdW0gPyBTZXRBcmd1bWVudE1heWJlIDogU2V0QXJndW1lbnREZWZpbml0ZWx5LCBP
cEluZm8odmFyaWFibGUpKTsKQEAgLTYyOTksNyArNjMwNSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ29t
cGlsZUFzR2V0QnlJZCkKICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2RlLm1f
ZHN0LCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRC
eVN0YXR1cywgQWNjZXNzVHlwZTo6R2V0QnlJZCwgbmV4dE9wY29kZUluZGV4KCkpOwogICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFy
cmF5TW9kZSgqYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJy
YXk6OlJlYWQpOworICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJh
eU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6
OlJlYWQpOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBjb25zaWRlciBtYWtp
bmcgdGhpcyBub3QgdmFyYXJnLCBzaW5jZSBpdCBvbmx5IHVzZXMgdGhyZWUgY2hpbGQKICAgICAg
ICAgICAgICAgICAvLyBzbG90cy4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MTkyCkBAIC03MDY5LDkgKzcwNzUsMTEgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBzZWVuQXJndW1lbnRzOwogCiAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisKICAgICAgICAgICAgICAgICBi
dWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXImIHByb2Zp
bGUpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJvZmls
ZS5tX29wZXJhbmQpOwotICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uID0gcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgICAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKGxvY2tlcik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9j
YWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHBy
ZWRpY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTc0MjMsNyArNzQzMSw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICAgICAgQmFzaWNCbG9jayogaXNEb25lQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJs
ZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogZG9Mb2FkQmxvY2sgPSBhbGxv
Y2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CiAKLSAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJy
YXlNb2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6
OlJlYWQpOworICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1v
ZGUobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAg
ICAgICBhdXRvIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoQnl0ZWNv
ZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSwgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVl
KSk7CiAKICAgICAgICAgICAgICAgICB7CkBAIC04MzE4LDcgKzgzMjYsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoIWNvbXBpbGVkQXNJbkJ5SWQpIHsKLSAgICAgICAgICAgICAgICBBcnJh
eU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCpieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgQXJyYXlN
b2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
Lm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAgICAgICAgICAgICAgICAgc2V0KGJ5dGVj
b2RlLm1fZHN0LCBhZGRUb0dyYXBoKEluQnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkp
LCBiYXNlLCBwcm9wZXJ0eSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfaW5fYnlfdmFsKTsKQEAgLTg0MDIsNyArODQxMCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRv
cl9uZXh0OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEVudW1lcmF0b3JOZXh0PigpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5
TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFk
KTsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRh
dGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2Ug
PSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gZ2V0KGJ5
dGVjb2RlLm1faW5kZXgpOwogICAgICAgICAgICAgTm9kZSogZW51bWVyYXRvciA9IGdldChieXRl
Y29kZS5tX2VudW1lcmF0b3IpOwpAQCAtODQzNCw3ICs4NDQyLDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgY2FzZSBvcF9lbnVtZXJh
dG9yX2dldF9ieV92YWw6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckdldEJ5VmFsPigpOwogICAgICAgICAgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAgICAgQXJy
YXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUs
IEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJh
eU1vZGUobWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0
KCk7CiAKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKQEAg
LTg0OTgsNyArODUwNiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9pbl9ieV92YWw6IHsKICAgICAg
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRv
ckluQnlWYWw+KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFk
YXRhKGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJy
YXlNb2RlKCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAg
ICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZSwgQXJyYXk6OlJlYWQpOwogCiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0
ZWNvZGUubV9iYXNlKSk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0ZWNvZGUu
bV9wcm9wZXJ0eU5hbWUpKTsKQEAgLTg1MTMsNyArODUyMSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRv
cl9oYXNfb3duX3Byb3BlcnR5OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKTsKICAgICAgICAg
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAg
ICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2Rl
ID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAK
ICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChieXRlY29kZS5tX2Jhc2UpKTsKICAgICAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkpOwpAQCAt
ODg3Myw3ICs4ODgxLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0
ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICB9CiAKICAgICBp
ZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7Ci0gICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBn
ZXRBcnJheU1vZGUoKmJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVByb2ZpbGUs
IEFycmF5OjpXcml0ZSk7CisgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1v
ZGUoYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6Oldy
aXRlKTsKIAogICAgICAgICBhZGRWYXJBcmdDaGlsZChiYXNlKTsKICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQocHJvcGVydHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggNGJiMTcyZDQzNDkxZjYyY2VlMTExNTc1ZjlkNmEwNTk5Mjg4NGQxMi4uZDU1
ZGY5MjU4N2JiN2MzMmNiMDBlMDkyOTM4MTEzM2U1N2FhMzFlMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC00MDQ3LDggKzQwNDcsOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcHJvZmlsZWRCbG9jay0+Z2V0QXJyYXlQcm9maWxlKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpOwogICAgICAgICBBcnJheU1vZGUgYXJyYXlN
b2RlID0gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zLCBBcnJheTo6UmVh
ZCk7CiAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpIHsKLSAgICAgICAgICAgIGFycmF5UHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKHByb2ZpbGVkQmxvY2spOwotICAgICAgICAgICAg
YXJyYXlNb2RlID0gQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQobV9ncmFwaCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBhcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkLCBmYWxzZSk7CisgICAgICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7CisgICAg
ICAgICAgICBhcnJheVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIHBy
b2ZpbGVkQmxvY2spOworICAgICAgICAgICAgYXJyYXlNb2RlID0gQXJyYXlNb2RlOjpmcm9tT2Jz
ZXJ2ZWQobG9ja2VyLCBhcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkLCBmYWxzZSk7CiAgICAgICAg
ICAgICBpZiAoYXJyYXlNb2RlLnR5cGUoKSA9PSBBcnJheTo6VW5wcm9maWxlZCkgewogICAgICAg
ICAgICAgICAgIC8vIEZvciBub3JtYWwgYXJyYXkgb3BlcmF0aW9ucywgaXQgbWFrZXMgc2Vuc2Ug
dG8gdHJlYXQgVW5wcm9maWxlZAogICAgICAgICAgICAgICAgIC8vIGFjY2Vzc2VzIGFzIEZvcmNl
RXhpdCBhbmQgZ2V0IG1vcmUgZGF0YSByYXRoZXIgdGhhbiB1c2luZwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCmluZGV4IDg0ODc5MWU5OGQxZmNjMDdhYzM1OTZiNDNkNjM1NTJkYTQy
M2ViNTQuLjFiZWM4ZGVlZDlkYmRiYTUwN2Q5YTNmYjFiMDM5ZTI2ZWUxYWRkNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTUyMCwxMiArNTIwLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
ZXhpdEtpbmQpOwogICAgIH0KLQotICAgIGJvb2wgaGFzQW55RXhpdHNBdChjb25zdCBDb2RlT3Jp
Z2luJiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKGNvZGVPcmlnaW4pLT51bmxpbmtlZENvZGVCbG9jaygpLT5oYXNBbnlFeGl0c0F0KGNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKLSAgICB9Ci0KKyAgICAKICAgICBNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlIG1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9kZSogY3Vy
cmVudE5vZGUsIE5vZGUqIG9wZXJhbmROb2RlKTsKICAgICAKICAgICBCbG9ja0luZGV4IG51bUJs
b2NrcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tzLnNpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4
IDBjMmM1N2Q5YTEzNzcxNWY3NDdiMzdlMGRiMmE4NGI4MjcxZjQxMzguLjI4OTczNzhiZjk4NThi
MWM0Y2ZhNmEzMTEwMjhjYmEwY2JlZGRmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKQEAgLTMzNywyOSArMzM3
LDI2IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBvc3JXcml0ZUJh
cnJpZXIoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEdQ
UlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gpCitzdGF0aWMgdm9pZCBvc3JXcml0ZUJhcnJpZXIo
Vk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaCkK
IHsKLSAgICBhdXRvIGVtaXRCYXJyaWVyID0gWyZdIChhdXRvKiBjZWxsKSB7Ci0gICAgICAgIGpp
dC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihjZWxsKSwgb3duZXIpOwotICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGpp
dC5iYXJyaWVyQnJhbmNoV2l0aG91dEZlbmNlKG93bmVyKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6
Okp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoV2l0aG91
dEZlbmNlKG93bmVyKTsKIAotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uT1NSV3JpdGVCYXJyaWVyKT4oJnZtLCBvd25lcik7Ci0gICAgICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk9TUldyaXRl
QmFycmllcikpLCBzY3JhdGNoKTsKLSAgICAgICAgaml0LmNhbGwoc2NyYXRjaCwgT3BlcmF0aW9u
UHRyVGFnKTsKLQotICAgICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7
Ci0gICAgfTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uT1NSV3Jp
dGVCYXJyaWVyKT4oJnZtLCBvd25lcik7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZt
KTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rp
b248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpKSwgc2NyYXRjaCk7
CisgICAgaml0LmNhbGwoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGVtaXRCYXJy
aWVyKGNvZGVCbG9jayk7Ci0gICAgZW1pdEJhcnJpZXIoY29kZUJsb2NrLT51bmxpbmtlZENvZGVC
bG9jaygpKTsKKyAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7CiB9CiAK
IHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IE9TUkV4aXRCYXNlJiBleGl0KQogewogICAgIGppdC5tZW1vcnlGZW5jZSgpOwogICAgIAot
ICAgIG9zcldyaXRlQmFycmllcih2bSwgaml0LCBqaXQuY29kZUJsb2NrKCktPmJhc2VsaW5lQWx0
ZXJuYXRpdmUoKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsK
KyAgICBqaXQubW92ZSgKKyAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKAor
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5iYXNlbGluZUFsdGVybmF0aXZlKCkpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOworICAgIG9zcldyaXRlQmFycmllcih2bSwgaml0LCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEsIEdQUkluZm86Om5vbkFyZ0dQUjApOwogCiAgICAgLy8gV2UgYmFycmll
ciBhbGwgaW5saW5lZCBmcmFtZXMgLS0gYW5kIG5vdCBqdXN0IHRoZSBjdXJyZW50IGlubGluZSBz
dGFjayAtLQogICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGljaCBpbmxpbmVkIGZ1bmN0
aW9uIG93bnMgdGhlIHZhbHVlIHByb2ZpbGUgdGhhdApAQCAtMzcwLDggKzM2NywxMiBAQCB2b2lk
IGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBP
U1JFeGl0QmFzZSYgZXhpdCkKICAgICAvLyB0aGUgdmFsdWUgcHJvZmlsZS4KICAgICBJbmxpbmVD
YWxsRnJhbWVTZXQqIGlubGluZUNhbGxGcmFtZXMgPSBqaXQuY29kZUJsb2NrKCktPmppdENvZGUo
KS0+ZGZnQ29tbW9uKCktPmlubGluZUNhbGxGcmFtZXMuZ2V0KCk7CiAgICAgaWYgKGlubGluZUNh
bGxGcmFtZXMpIHsKLSAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSA6ICppbmxpbmVDYWxsRnJhbWVzKQotICAgICAgICAgICAgb3NyV3JpdGVCYXJyaWVyKHZtLCBq
aXQsIGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGZvciAoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgOiAqaW5saW5lQ2FsbEZyYW1lcykgeworICAgICAgICAg
ICAgaml0Lm1vdmUoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKAorICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJs
b2NrLmdldCgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgICAgIG9zcldyaXRl
QmFycmllcih2bSwgaml0LCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86Om5vbkFyZ0dQ
UjApOworICAgICAgICB9CiAgICAgfQogCiAgICAgYXV0byogZXhpdElubGluZUNhbGxGcmFtZSA9
IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCmlu
ZGV4IDhkMDVjMTg2MDY5ZWRhMGE4OGM2ZGU2NzZmZDI5MjdiMTk3OTFiYjguLjk4NjYyZmE1OWJh
OTBkMmE5Mjc1MTcyZmQ3NDhiNmYzZjc4MDQ5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKQEAgLTQ4
LDEzICs0OCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoY29kZUJsb2Nr
KCktPm51bVBhcmFtZXRlcnMoKSA+PSAxKTsKICAgICAgICAgeworICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CisgICAgICAgICAg
ICAKICAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0
aGUgZmlyc3QgYmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQogICAgICAgICAgICAgLy8gb3RoZXIg
ZW50cnlwb2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGlj
dGlvbnMuCiAgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fcm9vdFRvQXJn
dW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogCiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5u
dW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSYg
cHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsK
LSAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnBy
ZWRpY3QocHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICAg
ICAgYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAorICAgICAg
ICAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAppbmRleCA4ZmQ5YjgzNGIwNWQ4YmJm
YjY5MTliNGU4N2YxY2UyNTA1OWY4YTFhLi41NzU0NTA4MmEyMGJkMzlmOTM1ZGQyMzQxYmNmN2Vl
MTc4N2MyNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxv
Y2tTZXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2Nr
U2V0SW5saW5lcy5oCkBAIC02Miw5ICs2MiwxMiBAQCB2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0
ZShjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVWaWFTdWJzcGFj
ZXMoVk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIHZtLmNvZGVCbG9ja1Nw
YWNlLnNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKLSAgICAgICAgWyZdIChIZWFwQ2VsbCogY2VsbCwg
SGVhcENlbGw6OktpbmQpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoanNDYXN0PENvZGVCbG9jayo+
KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpKSk7CisgICAgdm0uZm9yRWFjaENvZGVCbG9ja1Nw
YWNlKAorICAgICAgICBbJl0gKGF1dG8mIHNwYWNlQW5kU2V0KSB7CisgICAgICAgICAgICBzcGFj
ZUFuZFNldC5zcGFjZS5mb3JFYWNoTGl2ZUNlbGwoCisgICAgICAgICAgICAgICAgWyZdIChIZWFw
Q2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rv
cihqc0Nhc3Q8Q29kZUJsb2NrKj4oc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCkpKTsKKyAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKaW5kZXggY2M5YTk2ODdmMjZkOGQ3MWI4OGUzMzA1NDlmMDM2ZGM3MTBkODhlNS4uYTA3
YjM3MjQ2YWMyYmUwMWFhMjQxNTFmYmFhMzVmZGE5MmYzZmJiZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKQEAgLTU4MywxMCArNTgzLDEwIEBAIHZvaWQgSGVhcDo6YWRkUmVmZXJl
bmNlKEpTQ2VsbCogY2VsbCwgQXJyYXlCdWZmZXIqIGJ1ZmZlcikKICAgICB9CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCB0eXBlbmFtZSBDZWxsU2V0T3JJc29TdWJzcGFjZT4KLXZv
aWQgSGVhcDo6ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVycyhDZWxsU2V0T3JJ
c29TdWJzcGFjZSYgc2V0T3JTdWJzcGFjZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCB0
eXBlbmFtZSBDZWxsU2V0Pgordm9pZCBIZWFwOjpmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzKENlbGxTZXQmIGNlbGxTZXQpCiB7Ci0gICAgc2V0T3JTdWJzcGFjZS5mb3JFYWNo
TWFya2VkQ2VsbCgKKyAgICBjZWxsU2V0LmZvckVhY2hNYXJrZWRDZWxsKAogICAgICAgICBbJl0g
KEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewogICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8Q2VsbFR5cGUqPihjZWxsKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkodm0oKSk7CiAgICAg
ICAgIH0pOwpAQCAtNTk4LDEyICs1OTgsMTAgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxGaW5hbGl6ZXJzKCkKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0oKS5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFj
ZSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTeW1ib2xUYWJs
ZT4odm0oKS5zeW1ib2xUYWJsZVNwYWNlKTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtKCkuZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk7IC8vIFdlIHJ1biB0aGlzIGJlZm9yZSBDb2Rl
QmxvY2sncyB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5jZSBDb2RlQmxvY2sgbG9va3MgYXQg
dGhlIG93bmVyIGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29kZUJsb2NrIGluIGl0cyBmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseS4KLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPENvZGVCbG9jaz4odm0oKS5jb2RlQmxvY2tTcGFjZS5zZXQpOwotICAgIHZtKCkuZm9yRWFj
aFVubGlua2VkQ29kZUJsb2NrU3BhY2UoWyZdIChWTTo6U3BhY2VBbmRTZXQqIHNwYWNlQW5kU2V0
KSB7Ci0gICAgICAgIGlmICghc3BhY2VBbmRTZXQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRDb2RlQmxv
Y2s+KHNwYWNlQW5kU2V0LT5zZXQpOwotICAgIH0pOworICAgIHZtKCkuZm9yRWFjaENvZGVCbG9j
a1NwYWNlKAorICAgICAgICBbJl0gKGF1dG8mIHNwYWNlKSB7CisgICAgICAgICAgICB0aGlzLT5m
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENvZGVCbG9jaz4oc3BhY2Uuc2V0
KTsKKyAgICAgICAgfSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVy
czxTdHJ1Y3R1cmVSYXJlRGF0YT4odm0oKS5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKICAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlPih2bSgpLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0KTsKICAgICBp
ZiAodm0oKS5tX3dlYWtTZXRTcGFjZSkKQEAgLTk3NSw3ICs5NzMsNyBAQCB2b2lkIEhlYXA6OmRl
bGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCkKICAgICB2bSgpLmZvckVhY2hTY3JpcHRFeGVjdXRh
YmxlU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwKCk7IH0pOwogICAg
IC8vIFN3ZWVwaW5nIG11c3Qgb2NjdXIgYmVmb3JlIGRlbGV0aW5nIHN0dWJzLCBvdGhlcndpc2Ug
dGhlIHN0dWJzIG1pZ2h0IHN0aWxsIHRoaW5rIHRoZXkncmUgYWxpdmUgYXMgdGhleSBnZXQgZGVs
ZXRlZC4KICAgICAvLyBBbmQgQ29kZUJsb2NrIGRlc3RydWN0b3IgaXMgYXNzdW1pbmcgdGhhdCBD
b2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQgYmVmb3JlIFVubGlua2VkQ29kZUJsb2NrIGdldHMgZGVz
dHJveWVkLgotICAgIHZtKCkuY29kZUJsb2NrU3BhY2Uuc3BhY2Uuc3dlZXAoKTsKKyAgICB2bSgp
LmZvckVhY2hDb2RlQmxvY2tTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dl
ZXAoKTsgfSk7CiAgICAgbV9qaXRTdHViUm91dGluZXMtPmRlbGV0ZVVubWFya2VkSmV0dGlzb25l
ZFN0dWJSb3V0aW5lcygpOwogfQogCkBAIC0xNDg4LDcgKzE0ODYsNiBAQCBORVZFUl9JTkxJTkUg
Ym9vbCBIZWFwOjpydW5FbmRQaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogICAgIGl0ZXJhdGVFeGVj
dXRpbmdBbmRDb21waWxpbmdDb2RlQmxvY2tzKHZpc2l0b3IsCiAgICAgICAgIFsmXSAoQ29kZUJs
b2NrKiBjb2RlQmxvY2spIHsKICAgICAgICAgICAgIHdyaXRlQmFycmllcihjb2RlQmxvY2spOwot
ICAgICAgICAgICAgd3JpdGVCYXJyaWVyKGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKSk7
CiAgICAgICAgIH0pOwogCiAgICAgdXBkYXRlT2JqZWN0Q291bnRzKCk7CkBAIC0xNTI2LDcgKzE1
MjMsNiBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5FbmRQaGFzZShHQ0NvbmR1Y3RvciBj
b25uKQogICAgIG1fY29kZUJsb2Nrcy0+aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZygKICAgICAg
ICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaykgewogICAgICAgICAgICAgd3JpdGVCYXJyaWVy
KGNvZGVCbG9jayk7Ci0gICAgICAgICAgICB3cml0ZUJhcnJpZXIoY29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpKTsKICAgICAgICAgfSk7CiAgICAgbV9jb2RlQmxvY2tzLT5jbGVhckN1cnJl
bnRseUV4ZWN1dGluZygpOwogICAgICAgICAKQEAgLTI4OTAsMTQgKzI4ODYsMTAgQEAgdm9pZCBI
ZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICAgICAgU2V0Um9vdE1hcmtSZWFzb25T
Y29wZSByb290U2NvcGUodmlzaXRvciwgUm9vdE1hcmtSZWFzb246OkNvZGVCbG9ja3MpOwogICAg
ICAgICAgICAgaXRlcmF0ZUV4ZWN1dGluZ0FuZENvbXBpbGluZ0NvZGVCbG9ja3NXaXRob3V0SG9s
ZGluZ0xvY2tzKHZpc2l0b3IsCiAgICAgICAgICAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVC
bG9jaykgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGhhbmRsZSA9IFsmXSAoYXV0byogY2Vs
bCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQoY2VsbCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBjZWxsLT5jZWxsU3RhdGUoKSA9PSBDZWxs
U3RhdGU6OlBvc3NpYmx5QmxhY2spCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRv
ci52aXNpdEFzQ29uc3RyYWludChjZWxsKTsKLSAgICAgICAgICAgICAgICAgICAgfTsKICAgICAg
ICAgICAgICAgICAgICAgLy8gVmlzaXQgdGhlIENvZGVCbG9jayBhcyBhIGNvbnN0cmFpbnQgb25s
eSBpZiBpdCdzIGJsYWNrLgotICAgICAgICAgICAgICAgICAgICBoYW5kbGUoY29kZUJsb2NrKTsK
LSAgICAgICAgICAgICAgICAgICAgaGFuZGxlKGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2so
KSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykK
KyAgICAgICAgICAgICAgICAgICAgICAgICYmIGNvZGVCbG9jay0+Y2VsbFN0YXRlKCkgPT0gQ2Vs
bFN0YXRlOjpQb3NzaWJseUJsYWNrKQorICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci52
aXNpdEFzQ29uc3RyYWludChjb2RlQmxvY2spOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9KSksCiAgICAgICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5OjpTZWxkb21HcmV5ZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggNmIxMTIxYzYyNzA5Yzg5NWY3YmI3OTMyN2FkNWJmZTQ0
NGM1YjM2MC4uMjNhOWY1ODRiNGU4NDM0MzhkMTFmNzdhMmYyMGJlODE4NWFkY2EzOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC0zMDIsNyArMzAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZSguLi4p
OwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVBy
b2ZpbGUqPjo6dmFsdWUsIHZvaWQ+CisgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19z
YW1lPGRlY2x0eXBlKE9wOjpNZXRhZGF0YTo6bV9wcm9maWxlKSwgVmFsdWVQcm9maWxlPjo6dmFs
dWUsIHZvaWQ+CiAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGVJZlByb2ZpbGVkT3Bjb2Rl
KE9wIGJ5dGVjb2RlKTsKIAogICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRo
Q2VsbChSZWdpc3RlcklEIGNlbGxHUFIsIEFycmF5UHJvZmlsZSosIFJlZ2lzdGVySUQgc2NyYXRj
aEdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDU4MmQ4ZDU0
M2I0MzAwZjM4MmYwZWJiNjFiNjU0OGFmYzY1Zjg0YTcuLmFjMDlmOGZjZjc1YjM1YmFjMmVkYmE2
NzA3ZGYyNTg3NjdiNmU2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CkBAIC0zMTIsNyArMzEyLDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdT
aXRlKFZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxlLCBKU1ZhbHVlUmVncwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KLWlubGluZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNs
dHlwZShPcDo6TWV0YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9p
ZD4gSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBieXRlY29k
ZSkKK2lubGluZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0
YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZT46OnZhbHVlLCB2b2lkPiBKSVQ6OmVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGVJZlByb2ZpbGVkT3Bjb2RlKE9wIGJ5dGVjb2RlKQogewogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayksIHJlZ1QwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCmluZGV4IGNjZmI5NGQ0ZDAyZjMzOTYzZjRkZDVjZDkyMzU1NTAyNmEzNmE3ZDcuLjcw
ODJjYjIwMjg4ZmI3OGYxNWZmNWFmNjMyMTQxODdkMDAyNGRkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTE5NCw3ICsxMTk0LDYgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKQogICAgICAgICBlbWl0SW5pdFJlZ2lz
dGVyKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGopKTsKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIo
bV9jb2RlQmxvY2spOwotICAgIGVtaXRXcml0ZUJhcnJpZXIobV9jb2RlQmxvY2stPnVubGlua2Vk
Q29kZUJsb2NrKCkpOwogCiAgICAgZW1pdEVudGVyT3B0aW1pemF0aW9uQ2hlY2soKTsKICNlbHNl
CkBAIC0xMjQ2LDI5ICsxMjQ1LDE3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICAgICBpbml0RG9u
ZS5saW5rKCZqaXQpOwogCiAgICAgLy8gZW1pdFdyaXRlQmFycmllcihtX2NvZGVCbG9jaykuCi0g
ICAgLy8gZW1pdFdyaXRlQmFycmllcihtX2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKSku
CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBh
cmd1bWVudEdQUjEpOworICAgIEp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5i
YXJyaWVyQnJhbmNoKHZtLCBhcmd1bWVudEdQUjEsIGFyZ3VtZW50R1BSMik7CisKICAgICBqaXQu
bW92ZShjYW5CZU9wdGltaXplZEdQUiwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOyAvLyBz
YXZlLgotICAgIENhbGwgb3BlcmF0aW9uV3JpdGVCYXJyaWVyQ2FsbDE7Ci0gICAgQ2FsbCBvcGVy
YXRpb25Xcml0ZUJhcnJpZXJDYWxsMjsKLSAgICB7Ci0gICAgICAgIEp1bXAgb3duZXJJc1JlbWVt
YmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoKHZtLCBhcmd1bWVudEdQUjEsIGFyZ3Vt
ZW50R1BSMik7Ci0gICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25X
cml0ZUJhcnJpZXJTbG93UGF0aCk+KCZ2bSwgYXJndW1lbnRHUFIxKTsKLSAgICAgICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICAgICAgb3BlcmF0aW9uV3JpdGVCYXJyaWVyQ2Fs
bDEgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAgICBqaXQubG9hZFB0cihhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGFyZ3VtZW50R1BSMSk7Ci0gICAgICAg
IG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4ubGluaygmaml0KTsKLSAgICB9Ci0gICAgewotICAg
ICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGFyZ3VtZW50R1BSMSwgQ29kZUJsb2NrOjpvZmZzZXRP
ZlVubGlua2VkQ29kZUJsb2NrKCkpLCBhcmd1bWVudEdQUjEpOwotICAgICAgICBKdW1wIG93bmVy
SXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJyYW5jaCh2bSwgYXJndW1lbnRHUFIx
LCBhcmd1bWVudEdQUjIpOwotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpPigmdm0sIGFyZ3VtZW50R1BSMSk7Ci0gICAgICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgICAgIG9wZXJhdGlvbldyaXRlQmFy
cmllckNhbGwyID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICAgICAgb3duZXJJc1Jl
bWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOwotICAgIH0KKyAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpPigmdm0sIGFyZ3VtZW50
R1BSMSk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBDYWxsIG9wZXJh
dGlvbldyaXRlQmFycmllckNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworCiAgICAg
aml0Lm1vdmUoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIGNhbkJlT3B0aW1pemVkR1BSKTsg
Ly8gcmVzdG9yZS4KICAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFn
KSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIG93bmVySXNSZW1lbWJlcmVkT3JJ
bkVkZW4ubGluaygmaml0KTsKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIENhbGwgb3BlcmF0
aW9uT3B0aW1pemVDYWxsOwpAQCAtMTMwMiw4ICsxMjg5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZt
KQogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHBh
dGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uV3JpdGVCYXJyaWVyQ2FsbDEsIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpKTsKLSAgICBwYXRj
aEJ1ZmZlci5saW5rKG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwyLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKSk7CisgICAgcGF0Y2hC
dWZmZXIubGluayhvcGVyYXRpb25Xcml0ZUJhcnJpZXJDYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKSk7CiAjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgaWYgKE9wdGlvbnM6OnVzZURGR0pJVCgpKQogICAgICAgICBwYXRjaEJ1ZmZl
ci5saW5rKG9wZXJhdGlvbk9wdGltaXplQ2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihvcGVyYXRpb25PcHRpbWl6ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggOWI1MDcyNDE0ZmJlMGQ5ZmE3ZDE0MGEzYmQxODk1YWUzZGVjNGMy
MS4uMjAzMmRiOTdhYWE4NWEzOTI4MTc0YWE4ZjJkZWRmZGIxZmVjZjJjMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMDI4LDggKzEwMjgsMTAg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG8KICAgICAgICAgaWYgKCFpc0NvcHlPbldyaXRlKGJh
c2VPYmplY3QtPmluZGV4aW5nTW9kZSgpKSAmJiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7
CiAgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNv
ZGVCbG9jaywgc3RydWN0dXJlKSkgewotICAgICAgICAgICAgICAgIGlmIChwcm9maWxlKQotICAg
ICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJs
b2NrLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIGlmIChwcm9maWxlKSB7CisgICAgICAg
ICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2sp
OworICAgICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
bG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlVmFsdWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpOb3REaXJlY3QsIGVjbWFN
b2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTA5Niw4ICsxMDk4LDEwIEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgaWYgKCFpc0NvcHlPbldyaXRlKGJhc2VPYmplY3Qt
PmluZGV4aW5nTW9kZSgpKSAmJiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVy
ZSkpIHsKLSAgICAgICAgICAgIGlmIChwcm9maWxlKQotICAgICAgICAgICAgICAgIHByb2ZpbGUt
PmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIHN0cnVjdHVyZSk7CisgICAgICAg
ICAgICBpZiAocHJvZmlsZSkgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpEaXJl
Y3QsIGVjbWFNb2RlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI0MDgsOCArMjQxMiwxMCBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbE9iagogICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vi
c2NyaXB0LmlzSW50MzIoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VW
YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25z
aWRlckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAg
ICAgIGlmIChwcm9maWxlKQotICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihjb2RlQmxvY2ssIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBpZiAocHJvZmls
ZSkgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2Nr
LT5tX2xvY2spOworICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJlcGF0Y2hBcnJheUdldEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNl
VmFsdWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggZmMyMjVj
Nzk5MTljZWIzOGM3NTdiNzQ0YWRlYmY1NzUxYTI2YzkwNy4uYWY3NGE3NDVhY2EzNzZjMmFjNjc1
ZjI2MjMxZDQ0ZThhNWQ1NzgzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBi
eXRlY29kZS5tX3Byb3BlcnR5OwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5t
X2FycmF5UHJvZmlsZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDAp
OwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTkzLDcg
KzkzLDcgQEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVU
eXBlJiBieXRlY29kZSwgVmVjdG9yPFNsb3dDYXNlRW4KICAgICBpZiAoaGFzQW55U2xvd0Nhc2Vz
KGl0ZXIpKSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsK
ICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7
Ci0gICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxl
OworICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CiAKICAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtNDM5LDcgKzQzOSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5Owog
ICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgQXJyYXlQ
cm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9m
aWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihw
cm9wZXJ0eSwgcmVnVDEpOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTCiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKICAgICAgICAgZWNtYU1vZGUg
PSBieXRlY29kZS5tX2VjbWFNb2RlOwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICAgICAgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlOworICAgICAgICBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwog
ICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC0xMTA4LDggKzExMDgsMTEgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJl
Zyk7CiAgICAgCi0gICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgg
JiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQotICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRl
V2l0aENlbGwocmVnVDAsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCByZWdUMSk7CisgICAgaWYg
KCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2Zp
bGluZygpKSB7CisgICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RF
cXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSwgVHJ1
c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkp
KTsKKyAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCAmbWV0YWRh
dGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgcmVnVDEpOwor
ICAgICAgICBub3RBcnJheUxlbmd0aE1vZGUubGluayh0aGlzKTsKKyAgICB9CiAKICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCkBAIC0xNTA4LDcgKzE1
MTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwot
ICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAg
IEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTE1MzUsNyArMTUzOCw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJbkJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2Rz
dDsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsK
LSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAg
ICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAg
ICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4Kytd
OwogCkBAIC0yMzkwLDggKzIzOTMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6Z2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rKFJlc29sdmVUeQogICAgIH0K
IAogICAgIHN0YXRpY19hc3NlcnQoVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgPT0gMSk7
Ci0gICAgbG9hZFB0cihBZGRyZXNzKG1ldGFkYXRhR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoTWV0YWRh
dGEsIG1fcHJvZmlsZSkpLCByZWdUMSk7Ci0gICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhyZWdU
MSwgVmFsdWVQcm9maWxlOjpvZmZzZXRPZkZpcnN0QnVja2V0KCkpKTsKKyAgICBzdG9yZTY0KHJl
Z1QwLCBBZGRyZXNzKG1ldGFkYXRhR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoTWV0YWRhdGEsIG1fcHJv
ZmlsZSkpKTsKIAogICAgIHJldCgpOwogCkBAIC0yNDQ3LDggKzI0NDksNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfZnJvbV9zY29wZUdl
bmVyYXRvcihWTSYgdgogICAgIENhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRy
VGFnKTsKICAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNl
cHRpb25DaGVjayh2bSk7CiAKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCBPQkpFQ1RfT0ZGU0VUT0YoTWV0YWRhdGEsIG1fcHJvZmlsZSkpLCBHUFJJ
bmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7Ci0gICAgaml0LnN0b3JlNjQocmVnVDAsIEFkZHJlc3Mo
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1
Y2tldCgpKSk7CisgICAgaml0LnN0b3JlNjQocmVnVDAsIEFkZHJlc3MoR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9maWxlKSkpOwogICAg
IGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3Rlcik7CiAKICNpZiBDUFUoWDg2XzY0KQpAQCAtMjg4Nyw3ICsyODg4LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGluZGV4ID0gYnl0ZWNv
ZGUubV9pbmRleDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlOYW1lID0gYnl0ZWNvZGUu
bV9wcm9wZXJ0eU5hbWU7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGVudW1lcmF0b3IgPSBieXRlY29k
ZS5tX2VudW1lcmF0b3I7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9h
cnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlOwogCiAgICAgSnVtcExpc3QgZG9uZUNhc2VzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA5Zjg1
N2ZhOWI5MDg2MzJmODIzYTUxY2UxZGMxM2MwMjJkNjFhMmRmLi5jYjU3M2ZkNjU0OWZjZjhmMTMy
YTAwMjNmNjQxZDQwNjg2ZTJhMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9m
aWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxl
ID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1Qx
LCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0
ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spOwotICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBn
ZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwogICAgICAgICArK21fZ2V0QnlWYWxJ
bmRleDsKQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVy
IGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0g
Ynl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29k
ZS5tX3ZhbHVlOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdU
MywgcmVnVDIpOwogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUNSwgcmVnVDQpOwpAQCAtNTA1LDcg
KzUwNSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIHZhbHVlID0gYnl0ZWNv
ZGUubV92YWx1ZTsKICAgICAgICAgZWNtYU1vZGUgPSBKSVQ6OmVjbWFNb2RlKGJ5dGVjb2RlKTsK
ICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7
Ci0gICAgICAgIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgcHJv
ZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKICAgICB9OwogCiAgICAgaWYgKGlzRGly
ZWN0KQpAQCAtNjIyLDggKzYyMiwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9hZChiYXNlLCBy
ZWdUMSwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdU
MSk7CiAKLSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBz
aG91bGRFbWl0UHJvZmlsaW5nKCkpCi0gICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRo
Q2VsbChyZWdUMCwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIHJlZ1QyKTsKKyAgICBpZiAoKmlk
ZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKKyAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFs
LCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpLCBUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwor
ICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsICZtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCByZWdUMik7CisgICAg
ICAgIG5vdEFycmF5TGVuZ3RoTW9kZS5saW5rKHRoaXMpOworICAgIH0KIAogICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogICAgIEpJVEdldEJ5
SWRHZW5lcmF0b3IgZ2VuKApAQCAtNzk0LDcgKzc5Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lu
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1
YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBw
cm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0g
bWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdU
MCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKGJhc2UsIHJlZ1QxKTsKQEAgLTgxNyw3ICs4MjAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZh
bD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgYXV0
byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgQXJyYXlQ
cm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9m
aWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgSklUSW5CeVZh
bEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggZjk3NGQ2
YWJiOGUxZDcxODgzYzk4ZTdkMWVlYWE5Y2M3OWU5Mjc2OS4uNmQ0MDgyNWFjODE2NzY1YjkzZGNi
N2NhZWY2MTBlNDZmZGRiOGZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgaW5saW5lIEpTVmFsdWUgZ2V0
T3BlcmFuZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsg
cmV0dXIKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9QUk9GSUxFX1ZBTFVF
KHZhbHVlKSBkbyB7IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3By
b2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKKyAgICAgICAg
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNW
YWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExM
SU5UX0NBTExfRU5EX0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFyZ2V0VGFnKSBc
CkBAIC03NjEsNyArNzYxLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2Fj
aGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2QKICAgICB2bS5oZWFw
LndyaXRlQmFycmllcihjb2RlQmxvY2spOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJ
bnRHZXRCeUlEKGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEsIEFycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlKQorc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25z
dCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTgyNCw5ICs4MjQsOCBAQCBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJbnRHZXRCeUlE
KGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgfSBlbHNl
IGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmIGlzSlNBcnJheShiYXNlVmFsdWUpICYm
IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICB7CiAgICAgICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5UHJvZmlsZSk7CiAgICAgICAgICAgICBtZXRhZGF0
YS5zZXRBcnJheUxlbmd0aE1vZGUoKTsKLSAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2
ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOworICAgICAgICAg
ICAgbWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJl
KGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CiAgICAgICAgIH0KICAgICAgICAg
dm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKICAgICB9CkBAIC04NDIsNyArODQxLDcg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3Bl
cnR5KTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX2Jhc2UpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlE
KHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBpZGVudCwgbWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBi
YXNlVmFsdWUsIGlkZW50LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CiAgICAgTExJTlRfUkVU
VVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKQEAgLTg1OCwxMCArODU3LDEwIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQogICAgIGlmICgh
aXRlcmF0b3IuaXNPYmplY3QoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVj
dC4iX3MpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywg
Y29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yLCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0
LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwgbnVsbHB0cik7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0
b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKICAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBuZXh0UmVnaXN0ZXIgPSByZXN1bHQ7Ci0g
ICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX25leHRQcm9maWxlLT5tX2J1Y2tldHNb
MF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2Rl
QmxvY2spLm1fbmV4dFByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKQEAgLTg3OCwxMCArODc3LDEwIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQogICAgIGlmICgh
aXRlcmF0b3JSZXR1cm4uaXNPYmplY3QoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFu
IG9iamVjdC4iX3MpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJ
RChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0
eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEsIG51bGxwdHIpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9i
YWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0
YS5tX2RvbmVNb2RlTWV0YWRhdGEpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAg
IGRvbmVSZWdpc3RlciA9IHJlc3VsdDsKLSAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
Lm1fZG9uZVByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
ICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS5tX2J1Y2tldHNb
MF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIApAQCAt
ODk1LDEwICs4OTQsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9y
X25leHRfZ2V0X3ZhbHVlKQogICAgIFJlZ2lzdGVyJiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1
cm4gPSB2YWx1ZVJlZ2lzdGVyLmpzVmFsdWUoKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVy
Zm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0
dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0
YSwgbnVsbHB0cik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBj
LCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFt
ZXMtPnZhbHVlLCBtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKICAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKICAgICB2YWx1ZVJlZ2lzdGVyID0gcmVzdWx0OwotICAgIGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jaykubV92YWx1ZVByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOworICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV92
YWx1ZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAg
TExJTlRfRU5EKCk7CiB9CiAKQEAgLTEwMjUsNyArMTAyNCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUgZ2V0QnlWYWwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlCiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0
LnRyeUdldEFzVWludDMySW5kZXgoKSkgewogICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4Owog
ICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0g
ICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gJm1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlOwogCiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKICAgICAg
ICAgICAgIGlmIChhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkgewpAQCAtMTQz
MCw3ICsxNDI5LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCkK
ICAgICBMTElOVF9CRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbkJ5VmFs
PigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsK
LSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGds
b2JhbE9iamVjdCwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KSwgbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGUpKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9w
SW5CeVZhbChnbG9iYWxPYmplY3QsIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jh
c2UpLCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSksICZtZXRhZGF0
YS5tX2FycmF5UHJvZmlsZSkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2hhc19wcml2YXRlX25hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYzZiOThjNjM3OTEwOGJhOTM1NzQxMDJkODYy
ZmQ1ZDkwNjEwMmE0ZC4uMjk5MzZkYTlhMWRlZWFjODk3Nzk3ZWU2MWMzZGQ5ZGJlYzIzYTgwYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQpAQCAtNDEzLDExICs0MTMsNiBAQCBtYWNybyBtZXRhZGF0YShzaXplLCBvcGNvZGUs
IGRzdCwgc2NyYXRjaCkKICAgICBtdWxpIHNpemVvZiAlb3Bjb2RlJTo6TWV0YWRhdGEsIHNjcmF0
Y2ggIyBzY3JhdGNoICo9IHNpemVvZihPcDo6TWV0YWRhdGEpCiAgICAgYWRkaSBzY3JhdGNoLCBk
c3QgIyBvZmZzZXQgKz0gc2NyYXRjaAogICAgIGFkZHAgbWV0YWRhdGFUYWJsZSwgZHN0ICMgcmV0
dXJuICZtZXRhZGF0YVRhYmxlW29mZnNldF0KLSAgICAjIHJvdW5kVXBUb011bHRpcGxlT2YoYWxp
Z25vZihNZXRhZGF0YSksIGRzdCkKLSAgICBjb25zdCBhZGRlciA9IChjb25zdGV4cHIgKGFsaWdu
b2YoJW9wY29kZSU6Ok1ldGFkYXRhKSkpIC0gMQotICAgIGNvbnN0IG1hc2sgPSB+YWRkZXIKLSAg
ICBhZGRwIGFkZGVyLCBkc3QKLSAgICBhbmRwIG1hc2ssIGRzdAogZW5kCiAKIG1hY3JvIGp1bXBJ
bXBsKGRpc3BhdGNoSW5kaXJlY3QsIHRhcmdldE9mZnNldFJlZykKQEAgLTEyOTIsMTIgKzEyODcs
MTEgQEAgbWFjcm8gZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wTmFtZSwgc2l6ZSkK
ICAgICBsb2FkaSBMTEludFJldHVyblBDW2Nmcl0sIFBDCiBlbmQKIAotbWFjcm8gYXJyYXlQcm9m
aWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gxLCBzY3Jh
dGNoMikKK21hY3JvIGFycmF5UHJvZmlsZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1l
dGFkYXRhLCBzY3JhdGNoKQogICAgIGNvbnN0IGNlbGwgPSBjZWxsQW5kSW5kZXhpbmdUeXBlCiAg
ICAgY29uc3QgaW5kZXhpbmdUeXBlID0gY2VsbEFuZEluZGV4aW5nVHlwZSAKLSAgICBsb2FkcCBv
ZmZzZXRbbWV0YWRhdGFdLCBzY3JhdGNoMgotICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFtjZWxsXSwgc2NyYXRjaDEKLSAgICBzdG9yZWkgc2NyYXRjaDEsIEFycmF5UHJvZmlsZTo6bV9s
YXN0U2VlblN0cnVjdHVyZUlEW3NjcmF0Y2gyXQorICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFtjZWxsXSwgc2NyYXRjaAorICAgIHN0b3JlaSBzY3JhdGNoLCBvZmZzZXQgKyBBcnJheVBy
b2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFttZXRhZGF0YV0KICAgICBsb2FkYiBKU0NlbGw6
Om1faW5kZXhpbmdUeXBlQW5kTWlzY1tjZWxsXSwgaW5kZXhpbmdUeXBlCiBlbmQKIApAQCAtMTYy
MSw4ICsxNjE1LDggQEAgbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnU2tp
cCkKICAgICBhZGRwIC1wcm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBiZWNhdXNlIHRoYXQn
cyB3aGF0IGhhcyB0aGUgcGVlcGhvbGUKICAgICBhc3NlcnQobWFjcm8gKG9rKSBicGd0ZXEgdDAs
IDAsIG9rIGVuZCkKICAgICBidHB6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQotICAgIGxvYWRw
IENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDFdLCB0MwotICAgIGxvYWRwIFVubGlua2VkQ29k
ZUJsb2NrOjptX3ZhbHVlUHJvZmlsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291
bnRlZEFycmF5OjptX2RhdGFbdDNdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVu
dFZhbHVlUHJvZmlsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5
OjptX2RhdGFbdDFdLCB0MworICAgIGJ0cHogdDMsIC5hcmd1bWVudFByb2ZpbGVEb25lICMgV2hl
biB3ZSBjYW4ndCBKSVQsIHdlIGRvbid0IGFsbG9jYXRlIGFueSBhcmd1bWVudCB2YWx1ZSBwcm9m
aWxlcy4KICAgICBtdWxwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEg
TmVlZCBzdHJlbmd0aCByZWR1Y3Rpb24hCiAgICAgbHNoaWZ0cCAzLCB0MCAjIG9mZnNldCBvZiBs
YXN0IEpTVmFsdWUgYXJndW1lbnRzIG9uIHRoZSBzdGFjay4KICAgICBhZGRwIHQyLCB0MyAjIHBv
aW50ZXIgdG8gZW5kIG9mIFZhbHVlUHJvZmlsZSBhcnJheSBpbiBDb2RlQmxvY2s6Om1fYXJndW1l
bnRWYWx1ZVByb2ZpbGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBmMDM1MTMzZDkwZTA0ZmJlMjdj
ZjlkYWE1OTRiYTQ5N2I5MWIwNWZjLi43ODUyNGNmZjE5Njk4ZGM4MDA1ODZiYTk0YWM0MjI3YjE4
YzNmMzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNjcsNyArNjcsNyBAQCBtYWNybyBtYWtlUmV0
dXJuUHJvZmlsZWQob3Bjb2RlU3RydWN0LCBnZXQsIG1ldGFkYXRhLCBkaXNwYXRjaCwgZm4pCiAg
ICAgICAgIG1vdmUgcGF5bG9hZCwgdDAKIAogICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAg
ICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MCwgdDIp
CisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDUsIHQxLCB0
MCkKICAgICAgICAgZ2V0KG1fZHN0LCB0MikKICAgICAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KICAgICAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CkBAIC04NSw3ICs4NSw3IEBAIG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyCiAgICAgc3RvcmVpIHIx
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9yZWkgcjAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MykKLSAgICB2
YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjEsIHIwLCB0
MykKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0Miwg
cjEsIHIwKQogICAgIGRpc3BhdGNoKCkKIAogZW5kCkBAIC02NzcsMTAgKzY3Nyw5IEBAIG1hY3Jv
IHdyaXRlQmFycmllck9uR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KHNpemUsIGdldCwgdmFsdWVG
aWVsZE5hbWUpCiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2Rl
U3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCwgc2NyYXRjaCkKLSAg
ICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSVbbWV0YWRhdGFd
LCBzY3JhdGNoCi0gICAgc3RvcmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdP
ZmZzZXRbc2NyYXRjaF0KLSAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tl
dHMgKyBQYXlsb2FkT2Zmc2V0W3NjcmF0Y2hdCittYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKKyAgICBzdG9yZWkgdGFn
LCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgVGFn
T2Zmc2V0W21ldGFkYXRhXQorICAgIHN0b3JlaSBwYXlsb2FkLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFttZXRhZGF0YV0K
IGVuZAogCiAKQEAgLTE0MzgsNyArMTQzNyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAg
ICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0OjpNZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0MgogICAg
IGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkRGlyZWN0U2xv
dwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykK
KyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEp
CiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZERpcmVjdFNsb3c6CkBAIC0xNDU5LDI5
ICsxNDU4LDM3IEBAIG1hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwgbW9k
ZU1ldGFkYXRhTmFtZSwgdmFsdWVQcm9maWxlTmFtZSwgc2xvCiAgICAgYmluZXEgdDAsIHQxLCBz
bG93TGFiZWwKICAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFk
YXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEsIHQzKQorICAgIHZhbHVlUHJv
ZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCiAgICAgcmV0
dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZFByb3RvTG9hZDoKLSAgICBiYm5lcSB0MSwgY29uc3Rl
eHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5vcEdldEJ5SWRVbnNldAorICAgIGJibmVxIHQx
LCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OlByb3RvTG9hZCwgLm9wR2V0QnlJZEFycmF5TGVuZ3Ro
CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBsb2FkaSAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLnN0
cnVjdHVyZUlEW3QyXSwgdDMKICAgICBiaW5lcSB0MywgdDEsIHNsb3dMYWJlbAogICAgIGxvYWRp
cyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRN
b2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMK
ICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDAsIHQxKQotICAgIHZh
bHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEsIHQz
KQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0
MCwgdDEpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAotIyBJdCBjYW4ndCBiZSBhcnJheSBsZW5ndGgg
c2luY2Ugd2UgZG9uJ3QgdXNlIHRoaXMgZm9yIGFyYml0cmFyeSBnZXRfYnlfaWQncyB0aGF0IGNv
dWxkCi0jIGFjY2VzcyAibGVuZ3RoIi4gV2Ugb25seSB1c2UgaXQgZm9yIGl0ZXJhdG9yIG9wY29k
ZXMgd2hpY2ggYXJlbid0IHVzaW5nICJsZW5ndGgiIGFzIGFuCi0jIGlkZW50aWZpZXIuCisub3BH
ZXRCeUlkQXJyYXlMZW5ndGg6CisgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6
QXJyYXlMZW5ndGgsIC5vcEdldEJ5SWRVbnNldAorICAgIG1vdmUgdDMsIHQwCisgICAgYXJyYXlQ
cm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmFycmF5
TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCisgICAgYnRpeiB0MCwgSXNBcnJh
eSwgc2xvd0xhYmVsCisgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIHNsb3dMYWJlbAor
ICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwCisgICAgbG9hZGkgLXNpemVv
ZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3Ro
W3QwXSwgdDAKKyAgICBiaWx0IHQwLCAwLCBzbG93TGFiZWwKKyAgICB2YWx1ZVByb2ZpbGUob3Bj
b2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgSW50MzJUYWcsIHQwKQorICAgIHJldHVy
bihJbnQzMlRhZywgdDApCiAgICAgCiAub3BHZXRCeUlkVW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAogICAg
IGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5lZFRhZywgMCwgdDMpCisgICAgdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5lZFRhZywgMCkK
ICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQogCiBlbmQKQEAgLTE0OTksMjAgKzE1MDYsMjAg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRh
OjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDVdLCB0MwogICAgIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykKKyAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwLCB0MSkK
IAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJ
ZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAg
IG1vdmUgdDMsIHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fYXJy
YXlQcm9maWxlLCB0MiwgdDUsIHQwLCB0MSkKKyAgICBhcnJheVByb2ZpbGUoT3BHZXRCeUlkOjpN
ZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDIs
IHQ1LCB0MCkKICAgICBidGl6IHQyLCBJc0FycmF5LCAub3BHZXRCeUlkU2xvdwogICAgIGJ0aXog
dDIsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRCeUlkU2xvdwogICAgIGxvYWRwIEpTT2JqZWN0
OjptX2J1dHRlcmZseVt0M10sIHQwCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0
IHQwLCAwLCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJv
ZmlsZSwgdDUsIEludDMyVGFnLCB0MCwgdDMpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwg
bV9wcm9maWxlLCB0NSwgSW50MzJUYWcsIHQwKQogICAgIHJldHVybihJbnQzMlRhZywgdDApCiAK
IC5vcEdldEJ5SWRVbnNldDoKQEAgLTE1MjAsNyArMTUyNyw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0CiAgICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEudW5z
ZXRNb2RlLnN0cnVjdHVyZUlEW3Q1XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIGJpbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIFVuZGVmaW5lZFRhZywgMCwgdDMpCisgICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgVW5kZWZpbmVkVGFnLCAwKQog
ICAgIHJldHVybihVbmRlZmluZWRUYWcsIDApCiAKIC5vcEdldEJ5SWREZWZhdWx0OgpAQCAtMTUy
OSw3ICsxNTM2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJ
ZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBsb2FkaXMgT3BHZXRC
eUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3Q1
XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJ
ZFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQot
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSwgdDMpCisg
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJl
dHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRTbG93OgpAQCAtMTUzOSw3ICsxNTQ2LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJP
U1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X2lkLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0
MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjAsIHQz
KQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIxLCByMCkKICAg
ICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xNjE3LDcgKzE2MjQsNyBAQCBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZAogICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCiAgICAgICAgIHN0b3Jl
aSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KICAgICAgICAgc3RvcmVpIHJl
c3VsdFBheWxvYWQsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgSW50MzJUYWcsIHJlc3VsdFBheWxv
YWQsIHNjcmF0Y2gpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUs
IHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVu
ZAogCkBAIC0xNjI2LDcgKzE2MzMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92
YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAg
ICBmZDJpaSByZXN1bHQsIHNjcmF0Y2gyLCBzY3JhdGNoMwogICAgICAgICBzdG9yZWkgc2NyYXRj
aDMsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQogICAgICAgICBzdG9yZWkgc2NyYXRjaDIs
IFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNoMiwgc2NyYXRjaDEpCisg
ICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywg
c2NyYXRjaDIpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApAQCAtMTYzNCw3ICsxNjQx
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBnZXQobV9iYXNlLCB0MikKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRhZywgdDAsIC5vcEdl
dEJ5VmFsU2xvdykKICAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5UHJvZmlsZShPcEdldEJ5VmFs
OjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEsIHQzKQorICAgIGFycmF5UHJv
ZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCiAg
ICAgZ2V0KG1fcHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKICAgICBsb2FkcCBKU09i
amVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MwpAQCAtMTY3MSw3ICsxNjc4LDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWQKIC5vcEdldEJ5VmFsTm90RW1wdHk6CiAgICAgc3RvcmVpIHQyLCBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxLCB0
MykKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxKQog
ICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE2ODQs
NyArMTY5MSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZh
bCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAg
ICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAg
ICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2Zp
bGUsIHQyLCByMSwgcjAsIHQzKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2Zp
bGUsIHQyLCByMSwgcjApCiAgICAgcmV0dXJuKHIxLCByMCkKIAogZW5kKQpAQCAtMTcwNSw3ICsx
NzEyLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFBy
aXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKICAgICBiaW5lcSBKU0NlbGw6Om1fc3Ry
dWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0UHJpdmF0ZU5hbWVTbG93CiAKICAgICBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdl
dFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEsIHQzKQorICAgIHZhbHVlUHJvZmls
ZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQw
LCB0MSkKIAogLm9wR2V0UHJpdmF0ZU5hbWVTbG93OgpAQCAtMTc2Nyw4ICsxNzc0LDcgQEAgbWFj
cm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKIAog
ICAgICAgICAub3V0T2ZCb3VuZHM6CiAgICAgICAgICAgICBiaWFlcSB0MywgLXNpemVvZiBJbmRl
eGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QwXSwg
Lm9wUHV0QnlWYWxPdXRPZkJvdW5kcwotICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQyCi0gICAgICAgICAgICBzdG9yZWIgMSwg
QXJyYXlQcm9maWxlOjptX21heVN0b3JlVG9Ib2xlW3QyXQorICAgICAgICAgICAgc3RvcmViIDEs
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9s
ZVt0NV0KICAgICAgICAgICAgIGFkZGkgMSwgdDMsIHQyCiAgICAgICAgICAgICBzdG9yZWkgdDIs
IC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1Ymxp
Y0xlbmd0aFt0MF0KICAgICAgICAgICAgIGptcCAuc3RvcmVSZXN1bHQKQEAgLTE3NzksNyArMTc4
NSw3IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0
UG9pbnQpCiAgICAgICAgIGdldChtX2Jhc2UsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKICAg
ICAgICAgbW92ZSB0MSwgdDIKLSAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDAsIHQzKQorICAgICAgICBhcnJheVBy
b2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0
MCkKICAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MCwgSW50MzJUYWcsIHQzLCAub3BQdXRCeVZhbFNsb3cpCiAg
ICAgICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MV0sIHQwCkBAIC0xODMzLDggKzE4
MzksNyBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhp
dFBvaW50KQogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAub3BQdXRCeVZhbEFycmF5U3RvcmFn
ZUVtcHR5OgotICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQ
cm9maWxlW3Q1XSwgdDEKLSAgICAgICAgc3RvcmViIDEsIEFycmF5UHJvZmlsZTo6bV9tYXlTdG9y
ZVRvSG9sZVt0MV0KKyAgICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9hcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KICAgICAgICAgYWRkaSAxLCBBcnJh
eVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCiAgICAgICAgIGJpYiB0MywgLXNpemVv
ZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3Ro
W3QwXSwgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogICAgICAgICBhZGRpIDEs
IHQzLCB0MQpAQCAtMTg0Miw4ICsxODQ3LDcgQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1l
LCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICAgICAgam1wIC5vcFB1dEJ5VmFsQXJy
YXlTdG9yYWdlU3RvcmVSZXN1bHQKIAogICAgIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHM6Ci0gICAg
ICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGVbdDVdLCB0
MQotICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX291dE9mQm91bmRzW3QxXQorICAg
ICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5t
X291dE9mQm91bmRzW3Q1XQogICAgIC5vcFB1dEJ5VmFsU2xvdzoKICAgICAgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCkBA
IC0yNTExLDcgKzI1MTUsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3Bl
LCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgIG1hY3JvIGdl
dFByb3BlcnR5KCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29w
ZXJhbmRbdDVdLCB0MwogICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQzLCB0
MCwgdDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmls
ZSwgdDUsIHQxLCB0MiwgdDMpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwg
bV9wcm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAog
CkBAIC0yNTIwLDcgKzI1MjQsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Nj
b3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgICAgICBs
b2FkcCBUYWdPZmZzZXRbdDBdLCB0MQogICAgICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3QwXSwg
dDIKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MSkKLSAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIsIHQzKQorICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKICAgICAgICAg
cmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjUyOCw3ICsyNTMyLDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjpt
X29wZXJhbmRbdDVdLCB0MwogICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJp
YWJsZXMgKyBUYWdPZmZzZXRbdDAsIHQzLCA4XSwgdDEKICAgICAgICAgbG9hZHAgSlNMZXhpY2Fs
RW52aXJvbm1lbnRfdmFyaWFibGVzICsgUGF5bG9hZE9mZnNldFt0MCwgdDMsIDhdLCB0MgotICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0Miwg
dDMpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwg
dDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4
IDk4YTZjMTIwYzlmNzRhNmE2NmU5YmRlYjdiN2MwNDg0YzhiZDZiODEuLmE1NjNlMjU3MTc1YjEx
OWM5MDEwM2U1MmEwYTRjYjQ1ODE0ZDMwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC02OCwxNiArNjgsMTUg
QEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRhZGF0YSwg
ZGlzcGF0Y2gsIGZuKQogICAgIGZuKG1hY3JvICh2YWx1ZSkKICAgICAgICAgbW92ZSB2YWx1ZSwg
dDMKICAgICAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2Rl
U3RydWN0LCBtX3Byb2ZpbGUsIHQxLCB0MywgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDEsIHQzKQogICAgICAgICBnZXQobV9kc3QsIHQxKQogICAg
ICAgICBzdG9yZXEgdDMsIFtjZnIsIHQxLCA4XQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5k
KQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBt
ZXRhZGF0YSwgdmFsdWUsIHNjcmF0Y2gpCi0gICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjolcHJvZmlsZU5hbWUlW21ldGFkYXRhXSwgc2NyYXRjaAotICAgIHN0b3JlcSB2YWx1ZSwg
VmFsdWVQcm9maWxlOjptX2J1Y2tldHNbc2NyYXRjaF0KK21hY3JvIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdmFsdWUpCisgICAgc3RvcmVxIHZhbHVl
LCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzW21ldGFk
YXRhXQogZW5kCiAKICMgQWZ0ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFpbWlu
ZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgpAQCAtODgsNyArODcsNyBAQCBtYWNybyBk
aXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRz
dFZpcnR1YWxSZWdpc3RlcgogICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRzdFZpcnR1YWxS
ZWdpc3RlciwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0KICAgICBtZXRhZGF0YShz
aXplLCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjAsIHQzKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCByMCkKICAgICBkaXNwYXRjaCgpCiBlbmQKIApA
QCAtMTUxMCw3ICsxNTA5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGly
ZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3AKICAgICBiaW5lcSB0
MCwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CiAgICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0OjpN
ZXRhZGF0YTo6bV9vZmZzZXRbdDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2Zp
bGUsIHQyLCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9m
aWxlLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAg
LTE1MTksNyArMTUxOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVj
dCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiBlbmQpCiAKICMgVGhl
IGJhc2Ugb2JqZWN0IGlzIGV4cGVjdGVkIGluIHQzCi1tYWNybyBwZXJmb3JtR2V0QnlJREhlbHBl
cihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsb3dM
YWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybiwgZG9BcnJheVByb2ZpbGUpCittYWNybyBwZXJm
b3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJv
ZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKICAgICBtZXRhZGF0
YSh0MiwgdDEpCiAgICAgbG9hZGIgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFk
YXRhTmFtZSUubW9kZVt0Ml0sIHQxCiAKQEAgLTE1MzAsNyArMTUyOSw3IEBAIG1hY3JvIHBlcmZv
cm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwgbW9kZU1ldGFkYXRhTmFtZSwgdmFsdWVQcm9m
aWxlTmFtZSwgc2xvCiAgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKICAgICBsb2FkaXMgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2Fj
aGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0
MywgdDApCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
dDIsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkUHJvdG9Mb2FkOgpAQCAt
MTU0MSwyNyArMTU0MCwyNyBAQCBtYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1
Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsbwogICAgIGxvYWRpcyAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2Rl
LmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKICAg
ICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKKyAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0
dXJuKHQwKQogCiAub3BHZXRCeUlkQXJyYXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhw
ciBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgsIC5vcEdldEJ5SWRVbnNldAogICAgIG1vdmUgdDMs
IHQwCi0gICAgZG9BcnJheVByb2ZpbGUodDAsIHQyLCB0NSwgdDEpCisgICAgYXJyYXlQcm9maWxl
KCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmFycmF5TGVuZ3Ro
TW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCiAgICAgYnRpeiB0MCwgSXNBcnJheSwgc2xv
d0xhYmVsCiAgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIHNsb3dMYWJlbAogICAgIGxv
YWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAsIHQxKQogICAgIGxv
YWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1
YmxpY0xlbmd0aFt0MF0sIHQwCiAgICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCiAgICAgb3JxIG51
bWJlclRhZywgdDAKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCB0MiwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRVbnNldDoKICAg
ICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQogICAgIGxvYWRpICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJ
RFt0Ml0sIHQwCiAgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKLSAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgVmFsdWVVbmRlZmluZWQsIHQxKQor
ICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBWYWx1
ZVVuZGVmaW5lZCkKICAgICByZXR1cm4oVmFsdWVVbmRlZmluZWQpCiAKIGVuZApAQCAtMTU2OSwx
MCArMTU2OCw3IEBAIGVuZAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0
QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAg
Z2V0KG1fYmFzZSwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAs
IHQzLCAub3BHZXRCeUlkU2xvdykKLSAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEdldEJ5SWQs
IG1fbW9kZU1ldGFkYXRhLCBtX3Byb2ZpbGUsIC5vcEdldEJ5SWRTbG93LCBzaXplLCBtZXRhZGF0
YSwgcmV0dXJuLAotICAgICAgICBtYWNybyAoY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEs
IHNjcmF0Y2gxLCBzY3JhdGNoMikKLSAgICAgICAgICAgIGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6
Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEs
IHNjcmF0Y2gxLCBzY3JhdGNoMikKLSAgICAgICAgZW5kKQorICAgIHBlcmZvcm1HZXRCeUlESGVs
cGVyKE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRhdGEsIG1fcHJvZmlsZSwgLm9wR2V0QnlJZFNsb3cs
IHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCiAKIC5vcEdldEJ5SWRTbG93OgogICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKQEAgLTE1ODEsNyArMTU3Nyw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVy
T1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0Miwg
dDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0MiwgcjAsIHQzKQor
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwKQogICAgIHJldHVy
bihyMCkKIAogZW5kKQpAQCAtMTcwMiw3ICsxNjk4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWQKICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAgIGdl
dChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwg
OF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJlc3Vs
dCwgc2NyYXRjaCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwg
dDUsIHJlc3VsdCkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBAIC0xNzIzLDcgKzE3
MTksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVDZWxsKHNpemUsIHQyLCB0MCwgLm9wR2V0QnlWYWxTbG93KQogCiAgICAgbW92ZSB0MCwgdDIK
LSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0
MiwgdDUsIHQxLCB0MykKKyAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1f
YXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQogCiAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xv
dykKQEAgLTE3NjMsNyArMTc1OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3Zh
bCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAKIC5vcEdl
dEJ5VmFsRG9uZToKICAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDMpCisgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyKQogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlW
YWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE3NzYsNyArMTc3Miw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVy
blBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEodDUsIHQyKQotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByMCwgdDMpCisgICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHIwKQogICAgIHJldHVybihyMCkKIAog
ZW5kKQpAQCAtMTc5OCw3ICsxNzk0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJp
dmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKIAogICAg
IGxvYWRpIE9wR2V0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0sIHQxCiAgICAg
bG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmls
ZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQyLCB0MCwgdDMpCisgICAgdmFsdWVQcm9m
aWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkK
IAogLm9wR2V0UHJpdmF0ZU5hbWVTbG93OgpAQCAtMTkwMSw4ICsxODk3LDcgQEAgbWFjcm8gcHV0
QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKIAogICAgICAg
ICAub3V0T2ZCb3VuZHM6CiAgICAgICAgICAgICBiaWFlcSB0MywgLXNpemVvZiBJbmRleGluZ0hl
YWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QwXSwgLm9wUHV0
QnlWYWxPdXRPZkJvdW5kcwotICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQyCi0gICAgICAgICAgICBzdG9yZWIgMSwgQXJyYXlQ
cm9maWxlOjptX21heVN0b3JlVG9Ib2xlW3QyXQorICAgICAgICAgICAgc3RvcmViIDEsICVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0K
ICAgICAgICAgICAgIGFkZGkgMSwgdDMsIHQyCiAgICAgICAgICAgICBzdG9yZWkgdDIsIC1zaXpl
b2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0
aFt0MF0KICAgICAgICAgICAgIGptcCAuc3RvcmVSZXN1bHQKQEAgLTE5MTIsNyArMTkwNyw3IEBA
IG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9pbnQp
CiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MSwgLm9wUHV0
QnlWYWxTbG93KQogICAgICAgICBtb3ZlIHQxLCB0MgogICAgICAgICBtZXRhZGF0YSh0NSwgdDAp
Ci0gICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQ
cm9maWxlLCB0MiwgdDUsIHQwLCB0MykKKyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCiAgICAgICAgIGdldCht
X3Byb3BlcnR5LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUs
IHQwLCB0MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMKQEAgLTE5Njcs
OCArMTk2Miw3IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBv
c3JFeGl0UG9pbnQpCiAgICAgICAgIGRpc3BhdGNoKCkKIAogICAgIC5vcFB1dEJ5VmFsQXJyYXlT
dG9yYWdlRW1wdHk6Ci0gICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9h
cnJheVByb2ZpbGVbdDVdLCB0MQotICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21h
eVN0b3JlVG9Ib2xlW3QxXQorICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQogICAgICAgICBhZGRpIDEs
IEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KICAgICAgICAgYmliIHQzLCAt
c2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNM
ZW5ndGhbdDBdLCAub3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0CiAgICAgICAgIGFk
ZGkgMSwgdDMsIHQxCkBAIC0xOTc2LDggKzE5NzAsNyBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgICAgICBqbXAgLm9wUHV0QnlW
YWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogCiAgICAgLm9wUHV0QnlWYWxPdXRPZkJvdW5kczoK
LSAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0
NV0sIHQxCi0gICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fb3V0T2ZCb3VuZHNbdDFd
CisgICAgICAgIHN0b3JlYiAxLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9m
aWxlLm1fb3V0T2ZCb3VuZHNbdDVdCiAgICAgLm9wUHV0QnlWYWxTbG93OgogICAgICAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNo
KCkKQEAgLTI2NjksNyArMjY2Miw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21f
c2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgbWFj
cm8gZ2V0UHJvcGVydHkoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6
Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQo
dDEsIHQwLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2Zp
bGUsIHQ1LCB0MiwgdDMpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9w
cm9maWxlLCB0NSwgdDIpCiAgICAgICAgIHJldHVybih0MikKICAgICBlbmQKIApAQCAtMjY3Nywx
NCArMjY3MCwxNCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdl
dEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgICAgICBsb2FkcCBPcEdl
dEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQwCiAgICAgICAgIGxvYWRxIFt0
MF0sIHQwCiAgICAgICAgIHRkekNoZWNrSWZOZWNlc3NhcnkodDApCi0gICAgICAgIHZhbHVlUHJv
ZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDAsIHQzKQorICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwKQogICAgICAgICByZXR1
cm4odDApCiAgICAgZW5kCiAKICAgICBtYWNybyBnZXRDbG9zdXJlVmFyKCkKICAgICAgICAgbG9h
ZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBs
b2FkcSBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXNbdDAsIHQxLCA4XSwgdDAKLSAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDMpCisg
ICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDApCiAg
ICAgICAgIHJldHVybih0MCkKICAgICBlbmQKIApAQCAtMzAwOSw3ICszMDAyLDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9vcGVuLCBPcEl0ZXJhdG9yT3BlbiwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gKIAogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1faXRlcmF0b3IsIHQz
KQogICAgIGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0
U2xvdwotICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JPcGVuLCBtX21vZGVNZXRh
ZGF0YSwgbV9uZXh0UHJvZmlsZSwgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdywgc2l6
ZSwgbWV0YWRhdGEsIHN0b3JlTmV4dEFuZERpc3BhdGNoLCBtYWNybyhhLCBiLCBjLCBkKSBlbmQp
CisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck9wZW4sIG1fbW9kZU1ldGFkYXRh
LCBtX25leHRQcm9maWxlLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93LCBzaXplLCBt
ZXRhZGF0YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gpCiAKIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0
TmV4dFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Bl
bl9nZXRfbmV4dCkKQEAgLTMwNjgsNyArMzA2MSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
aXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
CiAKICAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKICAgICBidHFueiB0Mywgbm90
Q2VsbE1hc2ssIC5nZXREb25lU2xvdwotICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0
b3JOZXh0LCBtX2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywg
c2l6ZSwgbWV0YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUsIG1hY3JvKGEsIGIsIGMs
IGQpIGVuZCkKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25l
TW9kZU1ldGFkYXRhLCBtX2RvbmVQcm9maWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRh
LCBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVlKQogCiAuZ2V0RG9uZVNsb3c6CiAgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKQEAgLTMwOTMs
NyArMzA4Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVy
YXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoCiAgICAgIyBSZWxvYWQgdGhlIG5l
eHQgcmVzdWx0IHRtcCBzaW5jZSB0aGUgZ2V0X2J5X2lkIGFib3ZlIG1heSBoYXZlIGNsb2JiZXJl
ZCB0My4KICAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKICAgICAjIFdlIGRvbid0
IG5lZWQgdG8gY2hlY2sgaWYgdGhlIGl0ZXJhdG9yIHJlc3VsdCBpcyBhIGNlbGwgaGVyZSBzaW5j
ZSB3ZSB3aWxsIGhhdmUgdGhyb3duIGFuIGVycm9yIGJlZm9yZS4KLSAgICBwZXJmb3JtR2V0QnlJ
REhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVByb2Zp
bGUsIC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gs
IG1hY3JvKGEsIGIsIGMsIGQpIGVuZCkKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJh
dG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNs
b3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gpCiAKIC5nZXRWYWx1ZVNs
b3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRf
dmFsdWUpCkBAIC0zMTkwLDcgKzMxODMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2VudW1l
cmF0b3JfZ2V0X2J5X3ZhbCwgT3BFbnVtZXJhdG9yR2V0QnlWYWwsIG1hY3JvIChzaXplLAogICAg
IGxvYWRxIGNvbnN0ZXhwciAoKG9mZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0
KSkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKVt0MCwgdDIsIDhdLCB0MgogCiAuZG9uZToKLSAg
ICB2YWx1ZVByb2ZpbGUoT3BFbnVtZXJhdG9yR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0
MykKKyAgICB2YWx1ZVByb2ZpbGUoT3BFbnVtZXJhdG9yR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUs
IHQyKQogICAgIHJldHVybih0MikKIAogLmdldFNsb3dQYXRoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNw
cAppbmRleCAwZTE2NmRlYzUxNTY1MzU2ZjUxODA4NjM3ZjIyNDY5M2I1MWNlYzkxLi40N2RmYTJh
Mjc3OTk2MjUzY2NiOWFlNThlOTQ4NTNmZmQ4YWU5YTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNw
cApAQCAtMzcsNyArMzcsOCBAQCBCeXRlY29kZVNlcXVlbmNlOjpCeXRlY29kZVNlcXVlbmNlKENv
ZGVCbG9jayogY29kZUJsb2NrKQogICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKICAgICAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZkFyZ3VtZW50VmFs
dWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGNvZGVC
bG9jay0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoaSkuYnJpZWZEZXNjcmlwdGlvbigpOworICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAg
ICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGNvZGVCbG9jay0+dmFsdWVQcm9maWxlRm9yQXJndW1l
bnQoaSkuYnJpZWZEZXNjcmlwdGlvbihsb2NrZXIpOwogICAgICAgICBpZiAoIWRlc2NyaXB0aW9u
Lmxlbmd0aCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG91dC5yZXNldCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDg1
ZjU5OWI5MTY3MTZkMGE0YWVhNzFhZDc0NTk4YWMwNWE4NzJjYTcuLjg1OGU0ZTgyZTVjMTBlYjZm
MTJmZjVkOTJlYjFlN2IyODNjMWFhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE5MTYsOSArMTkxNiw2IEBAIHB1YmxpYzoKIAogICAg
IFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YSogcmFyZURhdGEoRGVjb2RlciYgZGVjb2Rlcikg
Y29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YS5kZWNvZGUoZGVjb2Rlcik7IH0KIAotICAgIHVuc2ln
bmVkIG51bVZhbHVlUHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX251bVZhbHVlUHJvZmlsZXM7
IH0KLSAgICB1bnNpZ25lZCBudW1BcnJheVByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1B
cnJheVByb2ZpbGVzOyB9Ci0KIHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fdGhpc1Jl
Z2lzdGVyOwogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CkBAIC0xOTUwLDkg
KzE5NDcsNiBAQCBwcml2YXRlOgogICAgIGludCBtX251bUNhbGxlZUxvY2FsczsKICAgICBpbnQg
bV9udW1QYXJhbWV0ZXJzOwogCi0gICAgdW5zaWduZWQgbV9udW1WYWx1ZVByb2ZpbGVzOwotICAg
IHVuc2lnbmVkIG1fbnVtQXJyYXlQcm9maWxlczsKLQogICAgIENhY2hlZE1ldGFkYXRhVGFibGUg
bV9tZXRhZGF0YTsKIAogICAgIENhY2hlZFB0cjxDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YT4gbV9y
YXJlRGF0YTsKQEAgLTIxNTgsOCArMjE1Miw2IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRDb2Rl
QmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKERlY29kZXImIGRlY29kZXIsIFN0cnVjdHVyZSoKICAg
ICAsIG1fbWV0YWRhdGEoY2FjaGVkQ29kZUJsb2NrLm1ldGFkYXRhKGRlY29kZXIpKQogICAgICwg
bV9pbnN0cnVjdGlvbnMoY2FjaGVkQ29kZUJsb2NrLmluc3RydWN0aW9ucyhkZWNvZGVyKSkKIAot
ICAgICwgbV92YWx1ZVByb2ZpbGVzKGNhY2hlZENvZGVCbG9jay5udW1WYWx1ZVByb2ZpbGVzKCkp
Ci0gICAgLCBtX2FycmF5UHJvZmlsZXMoY2FjaGVkQ29kZUJsb2NrLm51bUFycmF5UHJvZmlsZXMo
KSkKICAgICAsIG1fcmFyZURhdGEoY2FjaGVkQ29kZUJsb2NrLnJhcmVEYXRhKGRlY29kZXIpKQog
ewogfQpAQCAtMjMzMCw4ICsyMzIyLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVC
bG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKICAgICBt
X251bVZhcnMgPSBjb2RlQmxvY2subV9udW1WYXJzOwogICAgIG1fbnVtQ2FsbGVlTG9jYWxzID0g
Y29kZUJsb2NrLm1fbnVtQ2FsbGVlTG9jYWxzOwogICAgIG1fbnVtUGFyYW1ldGVycyA9IGNvZGVC
bG9jay5tX251bVBhcmFtZXRlcnM7Ci0gICAgbV9udW1WYWx1ZVByb2ZpbGVzID0gY29kZUJsb2Nr
Lm1fdmFsdWVQcm9maWxlcy5zaXplKCk7Ci0gICAgbV9udW1BcnJheVByb2ZpbGVzID0gY29kZUJs
b2NrLm1fYXJyYXlQcm9maWxlcy5zaXplKCk7CiAgICAgbV9mZWF0dXJlcyA9IGNvZGVCbG9jay5t
X2ZlYXR1cmVzOwogICAgIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMgPSBjb2RlQmxvY2subV9sZXhp
Y2FsU2NvcGVGZWF0dXJlczsKICAgICBtX3BhcnNlTW9kZSA9IGNvZGVCbG9jay5tX3BhcnNlTW9k
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCmluZGV4IDA4MTkzMGQ1ZmEyMjY3MDMyYjAyNTE5ZmY0YWMxOTFiMzBhODQyNTMuLjFlM2Jh
MWEzYWNiNjkwNGY3NTU4N2E3NjRiYTQ5MzBiMjE1YTM3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTM5LDcgKzEzOSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIFBST0ZJTEVfVkFMVUVfSU4odmFsdWVfXywgbV9wcm9m
aWxlKQogCiAjZGVmaW5lIFBST0ZJTEVfVkFMVUVfSU4odmFsdWUsIHByb2ZpbGVOYW1lKSBkbyB7
IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS0+bV9i
dWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAorICAgICAgICBieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spLnByb2ZpbGVOYW1lLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogc3RhdGljIHZvaWQgdGhyb3dB
cml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRocm93U2NvcGUmIHNjb3BlKQpAQCAtODg3LDcgKzg4Nyw3IEBAIEFMV0FZU19JTkxJTkUgU2xv
d1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG9yTmV4dFRyeUZhc3RJbXBsKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqCiAgICAgSlNDZWxsKiBpdGVyYWJsZSA9IEdFVChieXRlY29kZS5tX2l0ZXJhYmxlKS5q
c1ZhbHVlKCkuYXNDZWxsKCk7CiAgICAgaWYgKGF1dG8gYXJyYXlJdGVyYXRvciA9IGpzRHluYW1p
Y0Nhc3Q8SlNBcnJheUl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yKSkgewogICAgICAgICBpZiAoYXV0
byBhcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCBpdGVyYWJsZSkpIHsKLSAgICAg
ICAgICAgIG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYXJy
YXktPnN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2Zp
bGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKIAogICAgICAgICAg
ICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0
ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKICAg
ICAgICAgICAgIGF1dG8mIGluZGV4U2xvdCA9IGFycmF5SXRlcmF0b3ItPmludGVybmFsRmllbGQo
SlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpOwpAQCAtOTUxLDkgKzk1MSw3IEBAIEpTQ19E
RUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdG9fcHJpbWl0aXZlKQogSlNDX0RFRklO
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbnRlcikKIHsKICAgICBCRUdJTigpOwotICAg
IEhlYXAmIGhlYXAgPSAqSGVhcDo6aGVhcChjb2RlQmxvY2spOwotICAgIGhlYXAud3JpdGVCYXJy
aWVyKGNvZGVCbG9jayk7Ci0gICAgaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpKTsKKyAgICBIZWFwOjpoZWFwKGNvZGVCbG9jayktPndyaXRlQmFycmllcihj
b2RlQmxvY2spOwogICAgIEVORCgpOwogfQogCkBAIC05OTUsNyArOTkzLDcgQEAgSlNDX0RFRklO
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpCiAgICAgQVNTRVJU
KCFiYXNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSk7CiAgICAgSlNPYmplY3QqIGJhc2UgPSBi
YXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsK
LSAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2UtPnN0
cnVjdHVyZUlEKCkpOworICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1
cmVJRChiYXNlLT5zdHJ1Y3R1cmVJRCgpKTsKIAogICAgIEpTU3RyaW5nKiBuYW1lID0gZW51bWVy
YXRvci0+Y29tcHV0ZU5leHQoZ2xvYmFsT2JqZWN0LCBiYXNlLCBpbmRleCwgbW9kZSk7CiAgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7CkBAIC0xMDE5LDcgKzEwMTcsNyBAQCBKU0NfREVGSU5FX0NPTU1P
Tl9TTE9XX1BBVEgoc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCkKICAgICBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IgPSBqc0Nhc3Q8SlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKj4oR0VUKGJ5dGVjb2RlLm1fZW51bWVyYXRvcikuanNWYWx1ZSgpKTsKICAgICB1bnNp
Z25lZCBpbmRleCA9IEdFVChieXRlY29kZS5tX2luZGV4KS5qc1ZhbHVlKCkuYXNJbnQzMigpOwog
Ci0gICAgUkVUVVJOX1BST0ZJTEVEKENvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJhdG9yR2V0QnlW
YWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgaW5kZXgsIG1vZGUsIGVu
dW1lcmF0b3IsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCAmbWV0YWRhdGEubV9lbnVtZXJhdG9y
TWV0YWRhdGEpKTsKKyAgICBSRVRVUk5fUFJPRklMRUQoQ29tbW9uU2xvd1BhdGhzOjpvcEVudW1l
cmF0b3JHZXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgcHJvcGVydHlOYW1lLCBpbmRl
eCwgbW9kZSwgZW51bWVyYXRvciwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCAmbWV0YWRhdGEu
bV9lbnVtZXJhdG9yTWV0YWRhdGEpKTsKIH0KIAogSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCkKQEAgLTEwNDIsNyArMTA0MCw3IEBAIEpT
Q19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwp
CiAgICAgfQogCiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKEdFVChieXRlY29kZS5t
X3Byb3BlcnR5TmFtZSkuanNWYWx1ZSgpKTsKLSAgICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNs
b3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdHJpbmcsIG1ldGFk
YXRhLm1fYXJyYXlQcm9maWxlKSkpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1Bh
dGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN0cmluZywgJm1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlKSkpOwogfQogCiBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggNDk1ZGM2M2M0ZmFiYWE0NTE1NmQ1MzNlYzU3YTU3
MjQ0NTA4NjMwNC4uMzZmZGE1ODQ3ZjM4ZjViYTc0MjkwMzYyOWNhMmNjYTk0NzhhNDI0YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTI3LDEyICsyNywx
MCBAQAogI2luY2x1ZGUgIkpTU2NvcGUuaCIKIAogI2luY2x1ZGUgIkFic3RyYWN0TW9kdWxlUmVj
b3JkLmgiCi0jaW5jbHVkZSAiRGVmZXJUZXJtaW5hdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9k
dWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgotI2luY2x1ZGUgIlZN
VHJhcHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTU2LDcgKzU0LDcgQEAgREVGSU5FX1ZJU0lUX0NISUxEUkVOKEpTU2Nv
cGUpOwogc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0
T3JQdXQgZ2V0T3JQdXQsIHNpemVfdCBkZXB0aCwgYm9vbCYgbmVlZHNWYXJJbmplY3Rpb25DaGVj
a3MsIFJlc29sdmVPcCYgb3AsIEluaXRpYWxpemF0aW9uTW9kZSBpbml0aWFsaXphdGlvbk1vZGUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIERlZmVyVGVybWluYXRp
b25Gb3JBV2hpbGUgZGVmZXJTY29wZSh2bSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoc2NvcGUtPmlzSlNMZXhpY2FsRW52aXJvbm1l
bnQoKSkgewogICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50
ID0ganNDYXN0PEpTTGV4aWNhbEVudmlyb25tZW50Kj4oc2NvcGUpOwpAQCAtODIsOSArODAsOCBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNTY29wZSogc2NvcGUsCiAgICAgICAgIGlmIChzY29wZS0+dHlwZSgpID09IE1v
ZHVsZUVudmlyb25tZW50VHlwZSkgewogICAgICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCog
bW9kdWxlRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KHNjb3BlKTsK
ICAgICAgICAgICAgIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBtb2R1bGVF
bnZpcm9ubWVudC0+bW9kdWxlUmVjb3JkKCk7Ci0gICAgICAgICAgICBhdXRvIGNhdGNoU2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAgICAgICAgIEFic3RyYWN0TW9kdWxlUmVj
b3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBtb2R1bGVSZWNvcmQtPnJlc29sdmVJbXBvcnQo
Z2xvYmFsT2JqZWN0LCBpZGVudCk7Ci0gICAgICAgICAgICBjYXRjaFNjb3BlLnJlbGVhc2VBc3Nl
cnROb0V4Y2VwdGlvbigpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEFic3RyYWN0
TW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgewogICAgICAgICAgICAg
ICAgIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBpbXBvcnRlZFJlY29yZCA9IHJlc29sdXRpb24ubW9k
dWxlUmVjb3JkOwogICAgICAgICAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIGltcG9ydGVk
RW52aXJvbm1lbnQgPSBpbXBvcnRlZFJlY29yZC0+bW9kdWxlRW52aXJvbm1lbnQoKTsKQEAgLTMw
Nyw2ICszMDQsOSBAQCBKU09iamVjdCogSlNTY29wZTo6cmVzb2x2ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBzY29wZSwgY29uc3QgSQogCiBSZXNvbHZlT3AgSlNTY29w
ZTo6YWJzdHJhY3RSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBk
ZXB0aE9mZnNldCwgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRP
clB1dCBnZXRPclB1dCwgUmVzb2x2ZVR5cGUgdW5saW5rZWRUeXBlLCBJbml0aWFsaXphdGlvbk1v
ZGUgaW5pdGlhbGl6YXRpb25Nb2RlKQogeworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IFJlc29sdmVPcCBvcChEeW5hbWljLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAwKTsK
ICAgICBpZiAodW5saW5rZWRUeXBlID09IER5bmFtaWMpCiAgICAgICAgIHJldHVybiBvcDsKQEAg
LTMxNSw2ICszMTUsNyBAQCBSZXNvbHZlT3AgSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBkZXB0aE9mZgogICAgIHNpemVfdCBkZXB0
aCA9IGRlcHRoT2Zmc2V0OwogICAgIGZvciAoOyBzY29wZTsgc2NvcGUgPSBzY29wZS0+bmV4dCgp
KSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGFic3RyYWN0QWNjZXNzKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGlkZW50LCBnZXRPclB1dCwgZGVwdGgsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCBv
cCwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBSZXNvbHZlT3AoRHluYW1pYywgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
MCkpOwogICAgICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAr
K2RlcHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDVhNDA1Mjg4OGU0
NmRjMThkMTEzOTlkNWVlYjBjNWYzZjM0OGE3ZjguLjc5ZWQyMWVlM2E2ZmMzNzE2Yjc0YjI1MjEz
OWUzOTgwOGMwOTU3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTE1
OTcsNiArMTU5NywxMCBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
dWludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLAogRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVWludDhDbGFtcGVkQXJyYXkpCiBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNVaW50MTZBcnJheSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh1aW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQzMkFy
cmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRXZh
bENvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxp
bmtlZEV2YWxDb2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1Nw
YWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
dW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTV2Vha01hcCkgLy8gSGFzaDoweDY2MmIxMmEzCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4MWIzMAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKQEAgLTE2NTAsMTEgKzE2NTQs
NiBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb25TcGFjZSwgY2VsbEhlYQogRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklO
RV9NRU1CRVJfU0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBFdmFsRXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlkCiBEWU5BTUlD
X1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
U3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKSAvLyBIYXNoOjB4NjUwNmZhM2MKIAotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RF
RklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKQotRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
U3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2spCi1EWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKHVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spCi1EWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1Nw
YWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZFByb2dyYW1D
b2RlQmxvY2spCi0KICN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9T
TE9XCiAKIEpTQ2VsbCogVk06OnNlbnRpbmVsU2V0QnVja2V0U2xvdygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAppbmRleCA0YjI0YzYxN2U5MGE4NTc4ZTk5ZWMwOGFjYjQzYTRmMWJiODRl
NWVjLi43YTU4YjI3OWU2NzBhODQwM2QxZjM5NDEyMzU3ZDVlNzcxMTNmNTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTYwMyw2ICs2MDMsMTAgQEAgcHVibGljOgogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkK
ICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQxNkFycmF5U3BhY2Up
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50MzJBcnJheVNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRFdmFsQ29k
ZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUih1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1Nw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmluYWxpemF0aW9u
UmVnaXN0cnlTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdl
YWtPYmplY3RSZWZTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHdlYWtTZXRTcGFjZSkKQEAgLTY3NCwyNSArNjc4LDE5IEBAIHB1YmxpYzoKICAgICAKICAgICBT
cGFjZUFuZFNldCBjb2RlQmxvY2tTcGFjZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+
CisgICAgdm9pZCBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7
CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBpbmNsdWRlIHdlYkFzc2VtYmx5Q29kZUJsb2Nr
U3BhY2UgYmVjYXVzZSB0aGlzIGlzIGFib3V0IHN1YnNjbGFzc2VzIG9mCisgICAgICAgIC8vIEpT
Qzo6Q29kZUJsb2NrLgorICAgICAgICBmdW5jKGNvZGVCbG9ja1NwYWNlKTsKKyAgICB9CisKICAg
ICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNl
KQogICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlU3BhY2UpCiAgICAgU3BhY2VBbmRTZXQgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7
CiAgICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsKIAotICAgIERZTkFNSUNf
U1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlKQot
ICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKHVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2tTcGFjZSkKLSAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUih1
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSkKLSAgICBEWU5BTUlDX1NQQUNFX0FO
RF9TRVRfREVGSU5FX01FTUJFUih1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSkKLQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoVW5saW5rZWRDb2RlQmxv
Y2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAgICAgZnVuYyhtX3VubGlua2Vk
RXZhbENvZGVCbG9ja1NwYWNlLmdldCgpKTsKLSAgICAgICAgZnVuYyhtX3VubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2tTcGFjZS5nZXQoKSk7Ci0gICAgICAgIGZ1bmMobV91bmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2tTcGFjZS5nZXQoKSk7Ci0gICAgICAgIGZ1bmMobV91bmxpbmtlZFByb2dy
YW1Db2RlQmxvY2tTcGFjZS5nZXQoKSk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KICAgICB2b2lkIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoY29uc3QgRnVuYyYg
ZnVuYykKICAgICB7Cg==
</data>
<flag name="commit-queue"
          id="461722"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438369</attachid>
            <date>2021-09-16 10:59:01 -0700</date>
            <delta_ts>2021-09-16 11:14:34 -0700</delta_ts>
            <desc>[fast-cq] rollout fast</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>155794</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OTkxOGViNTc4NDhlZTFhZjZmYTJkNWE5MjM0MTE0M2JjNjhlYjE0Li5kNzJjNjg4MDMxZWJlNDI3
YmUwZWUyZjQyYmZlNzFmZGYwNWM5MjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wOS0xNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODI0NzguCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAzNTgKKworCisgICAg
ICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiTW92ZSBzb21lIHByb2ZpbGluZyB0
byBVbmxpbmtlZENvZGVCbG9jayIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMDA3OAorICAgICAgICBodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy9y
MjgyNDc4CisKIDIwMjEtMDktMTYgIE1pa2hhaWwgUi4gR2FkZWxoYSAgPG1pa2hhaWxAaWdhbGlh
LmNvbT4KIAogICAgICAgICBGaXggY3Jhc2ggaW4gMzIgYml0cyBkdWUgdG8gbm90IGVub3VnaCBz
Y3JhdGNoIHJlZ2lzdGVycyBhdmFpbGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKaW5kZXggNDE4NTg3YWVlZmNlZTljZGRmZGM1NGNiN2Uw
N2Y0ZmU5M2RkZTE2Ni4uOTQ1ZWE4OWE5ZGQ4ZjI0Y2Y4NzllNTViMmE0OTQyOGNhZjFjZGEyYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAK
QEAgLTExOCw0MSArMTE4LDE4IEBAIHZvaWQgZHVtcEFycmF5TW9kZXMoUHJpbnRTdHJlYW0mIG91
dCwgQXJyYXlNb2RlcyBhcnJheU1vZGVzKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJCaWdV
aW50NjRBcnJheU1vZGUiKTsKIH0KIAotdm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3ZvaWQgQXJyYXlQcm9maWxlOjpjb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENv
ZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIC8vIE11bHRpcGxlIHRocmVhZHMgY291bGQgYmUg
Y2FsbGluZyBpbnRvIHRoaXMgYXQgdGhlIHNhbWUgdGltZS4KLSAgICBTdHJ1Y3R1cmVJRCBpZCA9
IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsKLSAgICBpZiAoIWlkKQorICAgIGlmICghbV9sYXN0U2Vl
blN0cnVjdHVyZUlEKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgU3RydWN0dXJlKiBsYXN0
U2VlblN0cnVjdHVyZSA9IGNvZGVCbG9jay0+aGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KGlkKTsKLSAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrLCBsYXN0U2VlblN0
cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSA9IGNvZGVCbG9jay0+
aGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCk7Cisg
ICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBsYXN0U2VlblN0
cnVjdHVyZSk7CiAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gMDsKIH0KIAotdm9pZCBBcnJh
eVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihVbmxpbmtlZENvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2spCit2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKQogewotICAgIC8vIE11bHRpcGxlIHRocmVhZHMgY291
bGQgYmUgY2FsbGluZyBpbnRvIHRoaXMgYXQgdGhlIHNhbWUgdGltZS4KLSAgICBTdHJ1Y3R1cmVJ
RCBpZCA9IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsKLSAgICBpZiAoIWlkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0gdW5saW5rZWRDb2RlQmxv
Y2stPmhlYXAoKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChpZCk7Ci0gICAgY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGxhc3RTZWVuU3RydWN0dXJlLCBudWxscHRyKTsKLSAgICAKLSAgICBtX2xh
c3RTZWVuU3RydWN0dXJlSUQgPSAwOwotfQotCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxhc3RTZWVu
U3RydWN0dXJlKQotewotICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsYXN0U2VlblN0cnVj
dHVyZSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7Ci19Ci0KLXZvaWQgQXJyYXlQcm9maWxl
Ojpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCi17Ci0gICAgLy8gTXVsdGlwbGUg
dGhyZWFkcyBjb3VsZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUgc2FtZSB0aW1lLiBUaGF0
IHdvbid0IGxlYWQKLSAgICAvLyB0byBhbnkgZm9ybSBvZiBjb3JydXB0aW9uLCBidXQgY291bGQg
Y2F1c2UgdXMgdG8gZ28gZG93biAhbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nCi0gICAgLy8g
cGF0aCBzaW11bHRhbmVvdXNseS4KICAgICBtX29ic2VydmVkQXJyYXlNb2RlcyB8PSBhcnJheU1v
ZGVzRnJvbVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAgCiAgICAgaWYgKCFtX2Rp
ZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKQEAgLTE2MywxMSArMTQwLDggQEAgdm9pZCBBcnJheVBy
b2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0
dXJlLCBKU0dsb2IKICAgICAKICAgICBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB8PQog
ICAgICAgICBsYXN0U2VlblN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCk7Ci0gICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGxhc3RTZWVuU3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKTsK
LSAgICBpZiAobGV4aWNhbEdsb2JhbE9iamVjdCAmJiBnbG9iYWxPYmplY3QgJiYgZ2xvYmFsT2Jq
ZWN0ICE9IGxleGljYWxHbG9iYWxPYmplY3QpCi0gICAgICAgIG1fb2JzZXJ2ZWREaWZmZXJlbnRH
bG9iYWxPYmplY3QgPSB0cnVlOwotICAgIGlmIChnbG9iYWxPYmplY3QKLSAgICAgICAgJiYgIWds
b2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKQor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpOworICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobGFz
dFNlZW5TdHJ1Y3R1cmUpCiAgICAgICAgICYmICFnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxUeXBl
ZEFycmF5U3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKSkKICAgICAgICAgbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXMgPSBmYWxzZTsKIH0KQEAgLTE4OSwxMyArMTYzLDEzIEBAIHZvaWQg
QXJyYXlQcm9maWxlOjpvYnNlcnZlSW5kZXhlZFJlYWQoVk0mIHZtLCBKU0NlbGwqIGNlbGwsIHVu
c2lnbmVkIGluZGV4KQogICAgIH0KIH0KIAotQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVz
Y3JpcHRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCitDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJp
ZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7Ci0gICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jayk7
Ci0gICAgcmV0dXJuIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoKTsKKyAgICBjb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2spOworICAgIHJldHVybiBicmll
ZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGxvY2tlcik7CiB9CiAKLUNTdHJpbmcgQXJyYXlQ
cm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKCkKK0NTdHJpbmcgQXJyYXlQ
cm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYpCiB7CiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgIENvbW1hUHJpbnRl
ciBjb21tYTsKQEAgLTIxMCw4ICsxODQsNiBAQCBDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZE
ZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZygpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIklu
dGVyY2VwdCIpOwogICAgIGlmIChtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcykKICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAiT3JpZ2luYWwiKTsKLSAgICBpZiAobV9vYnNlcnZlZERpZmZl
cmVudEdsb2JhbE9iamVjdCkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRGlmZmVyZW50R2xv
YmFsIik7CiAKICAgICByZXR1cm4gb3V0LnRvQ1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDExZjI1MWU5YmMxNjJkODg0
OWRhMWViNDExOTUyYjYxNTc4Y2IzNGEuLjkxZGE4ZjNlZmY5MmZjM2E4OTU3MGQ3NWE0YjkxM2Jk
MjYzMmNjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9m
aWxlLmgKQEAgLTMyLDcgKzMyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9j
azsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLWNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
OwogCiAvLyBUaGlzIGlzIGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0
eXBlIG9mIGFycmF5IGFjY2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBp
bmRleGluZyB0eXBlcyB0aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KQEAgLTIwMiw3ICsyMDEsNiBA
QCBwdWJsaWM6CiAgICAgICAgIDogbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2Up
CiAgICAgICAgICwgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXModHJ1ZSkKICAgICAgICAg
LCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCi0gICAgICAgICwgbV9vYnNlcnZl
ZERpZmZlcmVudEdsb2JhbE9iamVjdChmYWxzZSkKICAgICB7CiAgICAgfQogICAgIApAQCAtMjE5
LDI3ICsyMTcsMjIgQEAgcHVibGljOgogICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZUlEKFN0cnVj
dHVyZUlEIHN0cnVjdHVyZUlEKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZUlE
OyB9CiAgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7IG1f
bGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsgfQogCi0gICAgdm9pZCBjb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oVW5saW5rZWRDb2RlQmxvY2sqKTsKLSAgICB2b2lkIGNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sqKTsKLSAgICB2b2lkIGNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKLSAg
ICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0
dXJlLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgdm9pZCBjb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2Nr
Kik7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAg
CiAgICAgdm9pZCBvYnNlcnZlQXJyYXlNb2RlKEFycmF5TW9kZXMgbW9kZSkgeyBtX29ic2VydmVk
QXJyYXlNb2RlcyB8PSBtb2RlOyB9CiAgICAgdm9pZCBvYnNlcnZlSW5kZXhlZFJlYWQoVk0mLCBK
U0NlbGwqLCB1bnNpZ25lZCBpbmRleCk7CiAKLSAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlN
b2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9Ci0gICAgYm9vbCBt
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSBjb25zdCB7IHJldHVybiBtX21heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3NlczsgfQorICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWRBcnJheU1vZGVzKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWRBcnJheU1v
ZGVzOyB9CisgICAgYm9vbCBtYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXM7IH0KICAgICAKLSAgICBib29sIG1heVN0b3JlVG9Ib2xlKCkgY29uc3QgeyByZXR1cm4gbV9t
YXlTdG9yZVRvSG9sZTsgfQotICAgIGJvb2wgb3V0T2ZCb3VuZHMoKSBjb25zdCB7IHJldHVybiBt
X291dE9mQm91bmRzOyB9CisgICAgYm9vbCBtYXlTdG9yZVRvSG9sZShjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21heVN0b3JlVG9Ib2xlOyB9CisgICAgYm9vbCBv
dXRPZkJvdW5kcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX291
dE9mQm91bmRzOyB9CiAgICAgCi0gICAgYm9vbCB1c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMo
KSBjb25zdCB7IHJldHVybiBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsgfQotICAgIHZv
aWQgc2V0RG9lc05vdFVzZU9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKCkgeyBtX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOyB9CisgICAgYm9vbCB1c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV91c2Vz
T3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7IH0KIAotICAgIGJvb2wgb2JzZXJ2ZWREaWZmZXJlbnRH
bG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkRGlmZmVyZW50R2xvYmFsT2Jq
ZWN0OyB9Ci0KLSAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oQ29kZUJsb2NrKik7Ci0gICAg
Q1N0cmluZyBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKCk7CisgICAgQ1N0cmluZyBi
cmllZkRlc2NyaXB0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayopOwor
ICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyhjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImKTsKICAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKQEAgLTI1Miw3ICsyNDUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9t
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgOiAxOwogICAgIGJvb2wgbV91c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXMgOiAxOwogICAgIGJvb2wgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5n
IDogMTsKLSAgICBib29sIG1fb2JzZXJ2ZWREaWZmZXJlbnRHbG9iYWxPYmplY3QgOiAxOwogICAg
IEFycmF5TW9kZXMgbV9vYnNlcnZlZEFycmF5TW9kZXMgeyAwIH07CiB9Owogc3RhdGljX2Fzc2Vy
dChzaXplb2YoQXJyYXlQcm9maWxlKSA9PSAxMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBiZGYwMTE3ZWNmOGQ5NzI3MGZmYTJiNzM4
OWY3OTU0YTU2ZTAxNzA4Li5iNmQ4MzQ5NTIzNTczYWQxMmExMWIwMzA5MzkwN2ZjY2FjZTk3Yzhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
QEAgLTE2Nyw3ICsxNjcsNyBAQCBvcCA6Z2V0X2FyZ3VtZW50LAogICAgICAgICBpbmRleDogaW50
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKIG9wIDphcmd1bWVu
dF9jb3VudCwKQEAgLTE4Myw3ICsxODMsNyBAQCBvcCA6dG9fdGhpcywKICAgICBtZXRhZGF0YTog
ewogICAgICAgICBjYWNoZWRTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCiAgICAgICAgIHRvVGhp
c1N0YXR1czogVG9UaGlzU3RhdHVzLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwK
KyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIAogb3AgOmNoZWNrX3RkeiwK
QEAgLTMwOSw3ICszMDksNyBAQCBvcF9ncm91cCA6VmFsdWVQcm9maWxlZEJpbmFyeU9wLAogICAg
ICAgICByaHM6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmls
ZQogICAgIH0KIAogb3AgOmJpdG5vdCwKQEAgLTMxOCw3ICszMTgsNyBAQCBvcCA6Yml0bm90LAog
ICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKgorICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUKICAgICB9CiAKIG9wX2dyb3VwIDpVbmFyeU9wLApAQCAtMzYzLDcgKzM2Myw3IEBA
IG9wIDp0b19vYmplY3QsCiAgICAgICAgIG1lc3NhZ2U6IHVuc2lnbmVkLAogICAgIH0sCiAgICAg
bWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKIG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkVW5h
cnlPcCwKQEAgLTM3Niw3ICszNzYsNyBAQCBvcF9ncm91cCA6VmFsdWVQcm9maWxlZFVuYXJ5T3As
CiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUsCiAgICAgfQogCiBvcCA6bmVnYXRlLApAQCAtNDQ1LDcgKzQ0NSw3IEBAIG9w
IDppbl9ieV92YWwsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAor
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKICAgICB9CiAKIG9wIDppbl9ieV9p
ZCwKQEAgLTQ3Niw5ICs0NzYsOCBAQCBvcCA6Z2V0X2J5X2lkLAogICAgICAgICBwcm9wZXJ0eTog
dW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUuKiwKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAg
ICAgbW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAorICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUsCiAgICAgfQogCiBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKQEAgLTQ4OSw3
ICs0ODgsNyBAQCBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKICAgICAgICAgcHJvcGVydHk6IHVu
c2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLiosCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKIG9wIDpn
ZXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTUwMCw3ICs0OTksNyBAQCBvcCA6Z2V0X2J5X3ZhbF93
aXRoX3RoaXMsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIAogb3AgOmdldF9ieV9pZF9kaXJlY3QsCkBA
IC01MTAsNyArNTA5LDcgQEAgb3AgOmdldF9ieV9pZF9kaXJlY3QsCiAgICAgICAgIHByb3BlcnR5
OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZS4qLCAjIG5vdCB1c2VkIGluIGxsaW50CisgICAgICAgIHByb2ZpbGU6IFZhbHVl
UHJvZmlsZSwgIyBub3QgdXNlZCBpbiBsbGludAogICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0
dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5zaWduZWQsCiAgICAgfQpAQCAtNTIxLDcgKzUyMCw3
IEBAIG9wIDpnZXRfcHJvdG90eXBlX29mLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKIG9wIDp0cnlfZ2V0
X2J5X2lkLApAQCAtNTMxLDcgKzUzMCw3IEBAIG9wIDp0cnlfZ2V0X2J5X2lkLAogICAgICAgICBw
cm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAg
IH0KIAogb3AgOnB1dF9ieV9pZCwKQEAgLTU3Miw4ICs1NzEsOCBAQCBvcCA6Z2V0X2J5X3ZhbCwK
ICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAotICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAg
ICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6
IEdldEJ5VmFsSGlzdG9yeSwKICAgICB9CiAKQEAgLTU4NCw3ICs1ODMsNyBAQCBvcCA6Z2V0X3By
aXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJ
RCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFy
cmllcltKU0NlbGxdLApAQCAtNjMzLDcgKzYzMiw3IEBAIG9wIDpwdXRfYnlfdmFsLAogICAgICAg
ICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5
UHJvZmlsZSwKICAgICB9CiAKIG9wIDpwdXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTY1Myw3ICs2
NTIsNyBAQCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9k
ZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLiosCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAgIH0KIAog
b3AgOmRlbF9ieV92YWwsCkBAIC04NDMsNyArODQyLDcgQEAgb3AgOmNhbGwsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAogICAgIH0KIAogb3AgOnRhaWxfY2FsbCwKQEAgLTg1NSw3ICs4NTQsNyBAQCBvcCA6
dGFpbF9jYWxsLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZv
OiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisg
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKIG9wIDpjYWxsX2V2YWwsCkBA
IC04NjgsNyArODY3LDcgQEAgb3AgOmNhbGxfZXZhbCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7
CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2Zp
bGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAg
fQogCiBvcCA6Y2FsbF92YXJhcmdzLApAQCAtODgxLDggKzg4MCw4IEBAIG9wIDpjYWxsX3ZhcmFy
Z3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAotICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAg
YXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZCwKQEAgLTkwMiw4ICs5MDEsOCBAQCBvcCA6
dGFpbF9jYWxsX3ZhcmFyZ3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAotICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJh
eVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9LAogICAgIHRt
cHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZApAQCAtOTIzLDgg
KzkyMiw4IEBAIG9wIDp0YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsCiAgICAgICAgIGZpcnN0
VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZS4qLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAg
ICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVl
UHJvZmlsZSwKICAgICB9CiAKIG9wIDpjb25zdHJ1Y3QsCkBAIC05MzUsOCArOTM0LDggQEAgb3Ag
OmNvbnN0cnVjdCwKICAgICAgICAgYXJndjogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0
YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICAgICAgY2FsbExpbmtJ
bmZvOiBMTEludENhbGxMaW5rSW5mbywKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAog
ICAgIH0KIAogb3AgOmNvbnN0cnVjdF92YXJhcmdzLApAQCAtOTQ5LDggKzk0OCw4IEBAIG9wIDpj
b25zdHJ1Y3RfdmFyYXJncywKICAgICAgICAgZmlyc3RWYXJBcmc6IGludCwKICAgICB9LAogICAg
IG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCi0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5
UHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0sCiAgICAgdG1w
czogewogICAgICAgICBhcmdDb3VudEluY2x1ZGluZ1RoaXM6IHVuc2lnbmVkCkBAIC0xMDI5LDcg
KzEwMjgsNyBAQCBvcCA6Z2V0X2Zyb21fc2NvcGUsCiAgICAgICAgICAgICBzdHJ1Y3R1cmU6IFdy
aXRlQmFycmllckJhc2VbU3RydWN0dXJlXSwKICAgICAgICAgfSwKICAgICAgICAgb3BlcmFuZDog
dWludHB0cl90LCAjb2Zmc2V0IDYKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosICMg
b2Zmc2V0IDcKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLCAjIG9mZnNldCA3CiAgICAg
fSwKICAgICBtZXRhZGF0YV9pbml0aWFsaXplcnM6IHsKICAgICAgICAgZ2V0UHV0SW5mbzogOmdl
dFB1dEluZm8sCkBAIC0xMDY2LDcgKzEwNjUsNyBAQCBvcCA6Z2V0X2Zyb21fYXJndW1lbnRzLAog
ICAgICAgICBpbmRleDogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LAogICAgIH0KIAogb3AgOnB1dF90b19hcmd1bWVudHMsCkBAIC0xMTc0LDcgKzExNzMsNyBAQCBv
cCA6ZW51bWVyYXRvcl9uZXh0LAogICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIs
CiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKICAgICAgICAgZW51
bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMTg4LDgg
KzExODcsOCBAQCBvcCA6ZW51bWVyYXRvcl9nZXRfYnlfdmFsLAogICAgICAgICBlbnVtZXJhdG9y
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUuKiwKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUu
KiwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6
IEFycmF5UHJvZmlsZSwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0
YWRhdGEsCiAgICAgfQogCkBAIC0xMjAzLDcgKzEyMDIsNyBAQCBvcCA6ZW51bWVyYXRvcl9pbl9i
eV92YWwsCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAg
IG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCisgICAg
ICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRh
dGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAKQEAgLTEyMTcsNyArMTIxNiw3IEBAIG9w
IDplbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHksCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1
YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmls
ZTogQXJyYXlQcm9maWxlLiosCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAog
ICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAK
QEAgLTEyNDksMTIgKzEyNDgsMTIgQEAgb3AgOml0ZXJhdG9yX29wZW4sCiAgICAgICAgIHN0YWNr
T2Zmc2V0OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGl0ZXJh
YmxlUHJvZmlsZTogVmFsdWVQcm9maWxlLiosCi0gICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCi0gICAgICAgIG5leHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICAg
ICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKKyAgICAgICAgaXRl
cmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRD
YWxsTGlua0luZm8sCisgICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAg
ICAgICBtb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAgIG5leHRQcm9m
aWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfSwKICAgICBjaGVja3BvaW50czogewogICAgICAgICBz
eW1ib2xDYWxsOiBuaWwsCkBAIC0xMjcyLDE0ICsxMjcxLDE0IEBAIG9wIDppdGVyYXRvcl9uZXh0
LAogICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewotICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxlLiosCi0gICAgICAgIGRv
bmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKLSAgICAgICAgdmFsdWVQcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKLSAgICAgICAgaXRlcmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAg
ICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKKyAgICAgICAgaXRl
cmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUsCiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRD
YWxsTGlua0luZm8sCisgICAgICAgIG5leHRSZXN1bHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAg
ICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCisgICAgICAgIGRv
bmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgICAgIHZhbHVlTW9kZU1ldGFkYXRhOiBHZXRC
eUlkTW9kZU1ldGFkYXRhLAorICAgICAgICB2YWx1ZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAg
ICB9LAogICAgIHRtcHM6IHsKICAgICAgICAgbmV4dFJlc3VsdDogSlNWYWx1ZSwKQEAgLTEzMjMs
NyArMTMyMiw3IEBAIG9wIDpnZXRfaW50ZXJuYWxfZmllbGQsCiAgICAgICAgIGluZGV4OiB1bnNp
Z25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCiBvcCA6cHV0
X2ludGVybmFsX2ZpZWxkLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAppbmRleCBiOTdiMzU4
NTc3NjM1ZGEzMTMzMmU0MGVjMzcxZTNkYzlmYzUyNWUzLi41YjhkYWZlOTYxMTMxZjEwZDNiNjMx
NGRiMGU1ZjhhZGNiMTk1MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaApAQCAtNTcs
MjAgKzU3LDIwIEBAIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlRm9ySW1wbChCeXRlY29kZU1l
dGFkYXRhJiBtZXRhZGF0YSwgdW5zaWduZWQgY2hlY2twb2luCiAgICAgVU5VU0VEX1BBUkFNKGNo
ZWNrcG9pbnRJbmRleCk7CiAgICAgaWYgY29uc3RleHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNv
ZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CiAgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludElu
ZGV4KSB7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGw6IHJldHVybiBt
ZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZTsKLSAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6
Z2V0TmV4dDogcmV0dXJuIG1ldGFkYXRhLm1fbmV4dFByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJ
dGVyYXRvck9wZW46OnN5bWJvbENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2Zp
bGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRh
dGEubV9uZXh0UHJvZmlsZTsKICAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgfQogCiAgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVN
ZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgewogICAgICAgICBzd2l0Y2gg
KGNoZWNrcG9pbnRJbmRleCkgewotICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRl
TmV4dDogcmV0dXJuIG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGU7Ci0gICAgICAgIGNhc2Ug
T3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiBtZXRhZGF0YS5tX2RvbmVQcm9maWxlOwot
ICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZTogcmV0dXJuIG1ldGFkYXRhLm1f
dmFsdWVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDog
cmV0dXJuICZtZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRl
cmF0b3JOZXh0OjpnZXREb25lOiByZXR1cm4gJm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7CisgICAg
ICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFs
dWVQcm9maWxlOwogICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICB9CiAgICAgfSBlbHNlIAotICAgICAgICByZXR1cm4gbWV0YWRhdGEubV9wcm9m
aWxlOworICAgICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmlsZTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggY2Y3YmU2MDZiMzY5MDI2NTVjYjQ4NTVkMTM3OWZiMzJl
YTUzYjVmMC4uYzc2NmEyNjllOGNkZWQ0ZDcxZDg2ODJhNjdkN2M0M2M1ZmZhOTk2NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTM3NCwxMCAr
Mzc0LDYgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXQKIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
ZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAogICAgIEpTU2NvcGUqIHNjb3BlKQogewot
ICAgIC8vIFdlIGNhbid0IGZpbmFsaXplIGEgR0Mgd2hpbGUgaW4gaGVyZSBzaW5jZSB3ZSBuZWVk
IHRvIG1ha2Ugc3VyZSB0bwotICAgIC8vIG1ha2Ugc3VyZSBvdXIgVmFsdWVQcm9maWxlcyBhbmQg
QXJyYXlQcm9maWxlcyBhbGwgcG9pbnQgdG8gcHJvcGVyIGxvY2F0aW9ucy4KLSAgICBSRUxFQVNF
X0FTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7IAotCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIGZpbmlzaENyZWF0aW9uQ29tbW9uKHZtKTsKIApAQCAtMzg3LDExICszODMs
OCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB2bS5mdW5jdGlvbkhhc0V4ZWN1
dGVkQ2FjaGUoKS0+cmVtb3ZlVW5leGVjdXRlZFJhbmdlKG93bmVyRXhlY3V0YWJsZS0+c291cmNl
SUQoKSwgb3duZXJFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQodm0pLCBvd25l
ckV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQodm0pKTsKIAogICAgIFNjcmlwdEV4
ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0YWJsZSA9IG93bmVyRXhlY3V0YWJsZS0+dG9wTGV2ZWxF
eGVjdXRhYmxlKCk7Ci0KLSAgICAvLyBXZSB3YWl0IHRvIGluaXRpYWxpemUgdGVtcGxhdGUgb2Jq
ZWN0cyB1bnRpbCB0aGUgZW5kIG9mIGZpbmlzaENyZWF0aW9uIGJlZWNhdXNlIGl0IGNhbgotICAg
IC8vIHRocm93LiBXZSByZWx5IG9uIGxpbmtpbmcgdG8gcHV0IHRoZSBDb2RlQmxvY2sgaW50byBh
IGNvaGVyZW50IHN0YXRlLCBzbyB3ZSBjYW4ndCB0aHJvdwotICAgIC8vIHVudGlsIHdlJ3JlIGFs
bCBkb25lIGxpbmtpbmcuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiB0ZW1wbGF0ZU9iamVjdEluZGlj
ZXMgPSBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRSZWdp
c3RlcnMoKSwgdW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbigpKTsKKyAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+Y29u
c3RhbnRSZWdpc3RlcnMoKSwgdW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50c1NvdXJjZUNvZGVS
ZXByZXNlbnRhdGlvbigpLCB0b3BMZXZlbEV4ZWN1dGFibGUpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogCiAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIHRoZSBj
bG9uZWQgc3ltYm9sIHRhYmxlIGZvciB0aGUgbW9kdWxlIGVudmlyb25tZW50IHNpbmNlIHdlIG5l
ZWQgdG8gaW5zdGFudGlhdGUKICAgICAvLyB0aGUgbW9kdWxlIGVudmlyb25tZW50cyBiZWZvcmUg
bGlua2luZyB0aGUgY29kZSBibG9jay4gV2UgcmVwbGFjZSB0aGUgc3RvcmVkIHN5bWJvbCB0YWJs
ZSB3aXRoIHRoZSBhbHJlYWR5IGNsb25lZCBvbmUuCkBAIC00NDIsOCArNDM1LDcgQEAgYm9vbCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNl
ZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+
IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAgIGF1dG8gbGlua19w
cm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2Rl
Ki8sIGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8VmFsdWVQcm9maWxlKiwgZGVjbHR5cGUobWV0YWRhdGEubV9wcm9maWxlKT4pOworICAgIGF1
dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAv
KmJ5dGVjb2RlKi8sIGF1dG8mIC8qbWV0YWRhdGEqLykgewogICAgICAgICBtX251bWJlck9mTm9u
QXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7CiAgICAgfTsKIApAQCAtNTA3LDkgKzQ5OSw5IEBAIGJv
b2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICAgICAgTElOSyhPcEdldEJ5SWQsIHByb2ZpbGUp
CiAKLSAgICAgICAgTElOSyhPcEVudW1lcmF0b3JOZXh0KQotICAgICAgICBMSU5LKE9wRW51bWVy
YXRvckluQnlWYWwpCi0gICAgICAgIExJTksoT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHkpCisg
ICAgICAgIExJTksoT3BFbnVtZXJhdG9yTmV4dCwgcHJvZmlsZSkKKyAgICAgICAgTElOSyhPcEVu
dW1lcmF0b3JJbkJ5VmFsLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wRW51bWVyYXRvckhhc093
blByb3BlcnR5LCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wRW51bWVyYXRvckdldEJ5VmFsLCBw
cm9maWxlKQogCiAgICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxlKQpAQCAtNTcxLDYgKzU2Myw3
IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChi
eXRlY29kZS5tX3Jlc29sdmVUeXBlICE9IFJlc29sdmVkQ2xvc3VyZVZhcik7CiAKICAgICAgICAg
ICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVj
dC5nZXQoKSwgYnl0ZWNvZGUubV9sb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCBi
eXRlY29kZS5tX3Jlc29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0
aW9uKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogCiAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gb3AudHlwZTsKICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fbG9jYWxTY29wZURlcHRoID0gb3AuZGVwdGg7CkBAIC02MDUsNiAr
NTk4LDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKIAogICAgICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKICAgICAgICAgICAg
IFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC5n
ZXQoKSwgYnl0ZWNvZGUubV9sb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCBieXRl
Y29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJ
bml0aWFsaXphdGlvbik7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKIAogICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0
SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBieXRlY29kZS5tX2dldFB1dElu
Zm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBNb2R1bGVWYXIpCkBA
IC02MzgsNiArNjMyLDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGNv
bnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihieXRlY29kZS5tX3Zhcik7CiAgICAg
ICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBudWxscHRyOwogICAgICAgICAgICAg
UmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0Lmdl
dCgpLCBieXRlY29kZS5tX3N5bWJvbFRhYmxlT3JTY29wZURlcHRoLnNjb3BlRGVwdGgoKSwgc2Nv
cGUsIGlkZW50LCBQdXQsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpLCBieXRl
Y29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAKICAgICAgICAgICAgIG1ldGFk
YXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29s
dmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1v
ZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgaWYg
KG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIgfHwgb3AudHlwZSA9PSBH
bG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKQEAgLTY3MCw2ICs2NjUsNyBA
QCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgICAgIC8vIEV2ZW4gdGhvdWdo
IHR5cGUgcHJvZmlsaW5nIG1heSBiZSBwcm9maWxpbmcgZWl0aGVyIGEgR2V0IG9yIGEgUHV0LCB3
ZSBjYW4gYWx3YXlzIGNsYWltIGEgR2V0IGJlY2F1c2UKICAgICAgICAgICAgICAgICAvLyB3ZSdy
ZSBhYnN0cmFjdGx5ICJyZWFkImluZyBmcm9tIGEgSlNTY29wZS4KICAgICAgICAgICAgICAgICBS
ZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QuZ2V0
KCksIGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIGJ5dGVjb2RlLm1fcmVzb2x2
ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOworICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogCiAgICAgICAg
ICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhciB8fCBvcC50eXBlID09IE1vZHVsZVZh
cikKICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBvcC5sZXhpY2FsRW52aXJvbm1l
bnQtPnN5bWJvbFRhYmxlKCk7CkBAIC03NjUsNTYgKzc2MSw2IEBAIGJvb2wgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rCiAjdW5kZWYgTElOS19GSUVMRAogI3VuZGVmIExJTksKIAotICAgIHsKLSAgICAgICAg
dW5zaWduZWQgaW5kZXggPSBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyAvLyBUaGUg
Zmlyc3QgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKSBwcm9maWxlcyBhcmUgYXJndW1l
bnQgdmFsdWUgcHJvZmlsZXMKLQotICAgICAgICBpZiAobV9tZXRhZGF0YSkgewotICAgICAgICAg
ICAgYXV0byBhc3NpZ24gPSBbJl0gKFZhbHVlUHJvZmlsZSomIHByb2ZpbGUpIHsKLSAgICAgICAg
ICAgICAgICBwcm9maWxlID0gJnVubGlua2VkQ29kZUJsb2NrLT52YWx1ZVByb2ZpbGUoaW5kZXgr
Kyk7Ci0gICAgICAgICAgICB9OwotCi0jZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICAgICAgICAg
IG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBhc3NpZ24o
bWV0YWRhdGEubV9wcm9maWxlKTsgfSk7Ci0gICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lU
SF9WQUxVRV9QUk9GSUxFKFZJU0lUKQotI3VuZGVmIFZJU0lUCi0KLSAgICAgICAgICAgIG1fbWV0
YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9wZW4+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgCi0g
ICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlKTsKLSAgICAg
ICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUpOwotICAgICAgICAg
ICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX25leHRQcm9maWxlKTsKLSAgICAgICAgICAgIH0pOwot
Ci0gICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1
dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fbmV4dFJl
c3VsdFByb2ZpbGUpOwotICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX2RvbmVQcm9m
aWxlKTsKLSAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV92YWx1ZVByb2ZpbGUpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRl
eCA9PSB1bmxpbmtlZENvZGVCbG9jay0+bnVtVmFsdWVQcm9maWxlcygpKTsKLSAgICB9Ci0KLSAg
ICBpZiAobV9tZXRhZGF0YSkgewotICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0KLSAgICAg
ICAgYXV0byBhc3NpZ24gPSBbJl0gKEFycmF5UHJvZmlsZSomIHByb2ZpbGUpIHsKLSAgICAgICAg
ICAgIHByb2ZpbGUgPSAmdW5saW5rZWRDb2RlQmxvY2stPmFycmF5UHJvZmlsZShpbmRleCsrKTsK
LSAgICAgICAgfTsKLQotICAgICAgICAvLyBXZSBvbmx5IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZv
ciB0aGUgb3Bjb2RlcyBpbiBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFLgotICAg
ICAgICAvLyBXZSBkb24ndCB5ZXQgc2hhcmUgYXJyYXkgcHJvZmlsZXMgZm9yIHRoaW5ncyB3aXRo
IExMSW50IENhbGxMaW5rSW5mb3MuCi0jZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGFzc2lnbihtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOwotICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9B
UlJBWV9QUk9GSUxFKFZJU0lUKQotI3VuZGVmIFZJU0lUCi0KLSAgICAgICAgbV9tZXRhZGF0YS0+
Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewotICAgICAgICAg
ICAgYXNzaWduKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlKTsKLSAgICAgICAgfSk7Ci0KLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gdW5saW5rZWRDb2RlQmxvY2stPm51bUFycmF5
UHJvZmlsZXMoKSk7Ci0gICAgfQotCiAgICAgaWYgKG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxl
ZFdpdGhDb250cm9sRmxvd1Byb2ZpbGVyT3Bjb2RlcygpKQogICAgICAgICBpbnNlcnRCYXNpY0Js
b2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIApAQCAtODM1LDkgKzc4MSw2
IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgaWYgKG1fbWV0YWRhdGEpCiAgICAgICAg
IHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQobV9tZXRhZGF0YS0+c2l6ZUluQnl0
ZXMoKSk7CiAKLSAgICBpbml0aWFsaXplVGVtcGxhdGVPYmplY3RzKHRvcExldmVsRXhlY3V0YWJs
ZSwgdGVtcGxhdGVPYmplY3RJbmRpY2VzKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC05MjYsMjAgKzg2OSwx
OSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAK
LVZlY3Rvcjx1bnNpZ25lZD4gQ29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBG
aXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGFudHMsIGNvbnN0IEZpeGVk
VmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbikKK3ZvaWQgQ29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBG
aXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGFudHMsIGNvbnN0IEZpeGVk
VmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKQogewogICAg
IFZNJiB2bSA9ICptX3ZtOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9nbG9iYWxPYmplY3QuZ2V0
KCk7CiAKLSAgICBWZWN0b3I8dW5zaWduZWQ+IHRlbXBsYXRlT2JqZWN0SW5kaWNlczsKLQogICAg
IEFTU0VSVChjb25zdGFudHMuc2l6ZSgpID09IGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbi5zaXplKCkpOwotICAgIHVuc2lnbmVkIGNvdW50ID0gY29uc3RhbnRzLnNpemUoKTsKKyAg
ICBzaXplX3QgY291bnQgPSBjb25zdGFudHMuc2l6ZSgpOwogICAgIHsKICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJz
LnJlc2l6ZVRvRml0KGNvdW50KTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsK
ICAgICAgICAgSlNWYWx1ZSBjb25zdGFudCA9IGNvbnN0YW50c1tpXS5nZXQoKTsKICAgICAgICAg
U291cmNlQ29kZVJlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uID0gY29uc3RhbnRzU291cmNl
Q29kZVJlcHJlc2VudGF0aW9uW2ldOwogICAgICAgICBzd2l0Y2ggKHJlcHJlc2VudGF0aW9uKSB7
CkBAIC05NjMsMjcgKzkwNSwxNyBAQCBWZWN0b3I8dW5zaWduZWQ+IENvZGVCbG9jazo6c2V0Q29u
c3RhbnRSZWdpc3RlcnMoY29uc3QgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsb25lLT5zZXRSYXJlRGF0YUNvZGVCbG9jayh0aGlzKTsKIAog
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSBjbG9uZTsKLSAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
Kj4odm0sIGNlbGwpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVPYmplY3RJbmRp
Y2VzLmFwcGVuZChpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBkZXNj
cmlwdG9yID0ganNEeW5hbWljQ2FzdDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcio+KHZtLCBj
ZWxsKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogdGVtcGxhdGVPYmplY3QgPSB0
b3BMZXZlbEV4ZWN1dGFibGUtPmNyZWF0ZVRlbXBsYXRlT2JqZWN0KGdsb2JhbE9iamVjdCwgZGVz
Y3JpcHRvcik7CisgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0
ZU9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIG1fY29uc3Rh
bnRSZWdpc3RlcnNbaV0uc2V0KHZtLCB0aGlzLCBjb25zdGFudCk7CiAgICAgfQotCi0gICAgcmV0
dXJuIHRlbXBsYXRlT2JqZWN0SW5kaWNlczsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmluaXRpYWxp
emVUZW1wbGF0ZU9iamVjdHMoU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBj
b25zdCBWZWN0b3I8dW5zaWduZWQ+JiB0ZW1wbGF0ZU9iamVjdEluZGljZXMpCi17Ci0gICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0oKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
IDogdGVtcGxhdGVPYmplY3RJbmRpY2VzKSB7Ci0gICAgICAgIGF1dG8qIGRlc2NyaXB0b3IgPSBq
c0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPihtX2NvbnN0YW50UmVnaXN0ZXJzW2ld
LmdldCgpKTsKLSAgICAgICAgYXV0byogdGVtcGxhdGVPYmplY3QgPSB0b3BMZXZlbEV4ZWN1dGFi
bGUtPmNyZWF0ZVRlbXBsYXRlT2JqZWN0KGdsb2JhbE9iamVjdCgpLCBkZXNjcmlwdG9yKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgbV9jb25z
dGFudFJlZ2lzdGVyc1tpXS5zZXQodm0oKSwgdGhpcywgdGVtcGxhdGVPYmplY3QpOwotICAgIH0K
IH0KIAogdm9pZCBDb2RlQmxvY2s6OnNldEFsdGVybmF0aXZlKFZNJiB2bSwgQ29kZUJsb2NrKiBh
bHRlcm5hdGl2ZSkKQEAgLTk5Niw2ICs5MjgsOCBAQCB2b2lkIENvZGVCbG9jazo6c2V0QWx0ZXJu
YXRpdmUoVk0mIHZtLCBDb2RlQmxvY2sqIGFsdGVybmF0aXZlKQogdm9pZCBDb2RlQmxvY2s6OnNl
dE51bVBhcmFtZXRlcnModW5zaWduZWQgbmV3VmFsdWUpCiB7CiAgICAgbV9udW1QYXJhbWV0ZXJz
ID0gbmV3VmFsdWU7CisKKyAgICBtX2FyZ3VtZW50VmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9y
PFZhbHVlUHJvZmlsZT4oT3B0aW9uczo6dXNlSklUKCkgPyBuZXdWYWx1ZSA6IDApOwogfQogCiBD
b2RlQmxvY2sqIENvZGVCbG9jazo6c3BlY2lhbE9TUkVudHJ5QmxvY2tPck51bGwoKQpAQCAtMTA1
Niw3ICs5OTAsNyBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7
CiAgICAgc3Ryb25nbHlWaXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7CiAgICAg
Ci0gICAgdm0oKS5jb2RlQmxvY2tTcGFjZS5zZXQuYWRkKHRoaXMpOworICAgIFZNOjpTcGFjZUFu
ZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpKS5hZGQodGhpcyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFZpc2l0b3I+CkBAIC0xNTgzLDM1ICsxNTE3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFs
aXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogCi0g
ICAgewotICAgICAgICAvLyBXZSBvbmx5IHVwZGF0ZSB0aGUgcHJvZmlsZXMgdGhhdCB0aGUgVW5s
aW5rZWRDb2RlQmxvY2sgZG9lc24ndCBvd24uCi0KLSAgICAgICAgaWYgKG1fbWV0YWRhdGEpIHsK
LSNkZWZpbmUgVVBEQVRFKF9fb3ApIFwKLSAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2Fy
cmF5UHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24odGhpcyk7IH0pOwotICAgICAgICAg
ICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfTExJTlRfQ0FMTF9MSU5LX0lORk8oVVBEQVRFKQotI3Vu
ZGVmIFVQREFURQotCi0gICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ2F0Y2g+KFsm
XShhdXRvJiBtZXRhZGF0YSkgewotICAgICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX2J1ZmZl
cikgewotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2J1ZmZlci0+Zm9yRWFjaChbJl0o
VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyJiBwcm9maWxlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwotICAgICAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICAgICAgICAgIGxhenlPcGVyYW5kVmFs
dWVQcm9maWxlcyhsb2NrZXIpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKLSNl
bmRpZgotICAgICAgICB9Ci0KLSAgICAgICAgZm9yRWFjaEFycmF5QWxsb2NhdGlvblByb2ZpbGUo
WyZdKEFycmF5QWxsb2NhdGlvblByb2ZpbGUmIHByb2ZpbGUpIHsKLSAgICAgICAgICAgIHByb2Zp
bGUudXBkYXRlUHJvZmlsZSgpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgdXBkYXRlQWxsUHJl
ZGljdGlvbnMoKTsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgYm9vbCBpc0VsaWdpYmxlRm9yTExJ
bnREb3duZ3JhZGUgPSBtX2lzRWxpZ2libGVGb3JMTEludERvd25ncmFkZTsKQEAgLTE2OTcsNyAr
MTYwMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0p
CiAgICAgfTsKICAgICB1cGRhdGVBY3Rpdml0eSgpOwogCi0gICAgdm0uY29kZUJsb2NrU3BhY2Uu
c2V0LnJlbW92ZSh0aGlzKTsKKyAgICBWTTo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2Uo
KSkucmVtb3ZlKHRoaXMpOwogCiAgICAgLy8gSW4gQ29kZUJsb2NrOjpzaG91bGRWaXNpdFN0cm9u
Z2x5KCkgd2UgbWF5IGhhdmUgZGVjaWRlZCB0byBza2lwIHZpc2l0aW5nIHRoaXMKICAgICAvLyBj
b2RlQmxvY2suIEJ5IHRoZSB0aW1lIHdlIGdldCBoZXJlLCB3ZSdyZSBkb25lIHdpdGggdGhlIHZl
cmlmaWVyIEdDLiBTbywgbGV0J3MKQEAgLTI4NjcsNyArMjc3Myw3IEBAIEFycmF5UHJvZmlsZSog
Q29kZUJsb2NrOjpnZXRBcnJheVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnl0
ZWNvZGVJbmRlCiAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogI2RlZmlu
ZSBDQVNFMShPcCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiBp
bnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhpcykubV9hcnJheVByb2ZpbGU7CisgICAg
ICAgIHJldHVybiAmaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQ
cm9maWxlOwogCiAjZGVmaW5lIENBU0UyKE9wKSBcCiAgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwK
QEAgLTI4NzksNiArMjc4NSwxMyBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQ
cm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5dGVjb2RlSW5kZQogI3VuZGVmIENB
U0UxCiAjdW5kZWYgQ0FTRTIKIAorICAgIGNhc2UgT3BHZXRCeUlkOjpvcGNvZGVJRDogeworICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKKyAgICAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSh0aGlzKTsKKyAgICAgICAgaWYg
KG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3Ro
KQorICAgICAgICAgICAgcmV0dXJuICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0
aE1vZGUuYXJyYXlQcm9maWxlOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjk4NywxOSArMjkwMCwxOSBAQCB2b2lkIENvZGVC
bG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVu
c2lnbmVkJiBudW1iZQogICAgICAgICAgICAgbnVtU2FtcGxlcyA9IFZhbHVlUHJvZmlsZTo6bnVt
YmVyT2ZCdWNrZXRzOyAvLyBXZSBkb24ndCB3YW50IHByb2ZpbGVzIHRoYXQgYXJlIGV4dHJlbWVs
eSBob3QgdG8gYmUgZ2l2ZW4gbW9yZSB3ZWlnaHQuCiAgICAgICAgIG51bWJlck9mU2FtcGxlc0lu
UHJvZmlsZXMgKz0gbnVtU2FtcGxlczsKICAgICAgICAgaWYgKGlzQXJndW1lbnQpIHsKLSAgICAg
ICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBw
cm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChwcm9maWxlLm51bWJlck9mU2FtcGxlcygpIHx8
IHByb2ZpbGUuaXNTYW1wbGVkQmVmb3JlKCkpCiAgICAgICAgICAgICBudW1iZXJPZkxpdmVOb25B
cmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKLSAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oKTsKKyAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyKTsKICAgICB9KTsKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BDYXRjaD4oWyZdKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBp
ZiAobWV0YWRhdGEubV9idWZmZXIpIHsKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2J1ZmZl
ci0+Zm9yRWFjaChbJl0oVmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyJiBwcm9maWxlKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7
CisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxv
Y2tlcik7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwpA
QCAtMzAxOCw4ICsyOTMxLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2Zp
bGVQcmVkaWN0aW9ucygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxBcnJheVByZWRpY3Rp
b25zKCkKIHsKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAg
ICAgZm9yRWFjaEFycmF5UHJvZmlsZShbJl0oQXJyYXlQcm9maWxlJiBwcm9maWxlKSB7Ci0gICAg
ICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKHRoaXMpOworICAgICAgICBwcm9m
aWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIHRoaXMpOwogICAgIH0pOwogICAg
IAogICAgIGZvckVhY2hBcnJheUFsbG9jYXRpb25Qcm9maWxlKFsmXShBcnJheUFsbG9jYXRpb25Q
cm9maWxlJiBwcm9maWxlKSB7CkBAIC0zMjQ5LDcgKzMxNjQsNyBAQCBWYWx1ZVByb2ZpbGUqIENv
ZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4
IGJ5dGVjbwogCiAjZGVmaW5lIENBU0UoT3ApIFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXAot
ICAgICAgICByZXR1cm4gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fcHJv
ZmlsZTsKKyAgICAgICAgcmV0dXJuICZpbnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhp
cykubV9wcm9maWxlOwogCiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJ
TEUoQ0FTRSkKIApAQCAtMzI2NiwxMCArMzE4MSwxMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9j
azo6dHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVj
bwogICAgIH0KIH0KIAotU3BlY3VsYXRlZFR5cGUgQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVQcmVk
aWN0aW9uRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCitTcGVj
dWxhdGVkVHlwZSBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUlu
ZGV4KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXgpCiB7CiAgICAgaWYgKFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlID0gdHJ5R2V0
VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0
dXJuIHZhbHVlUHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIHJl
dHVybiB2YWx1ZVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAg
IHJldHVybiBTcGVjTm9uZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCmluZGV4IGE4YWU3NTU0MTg3Zjg5ZjM4NzRmNzA5NTIzNzRmYjRkYmYyMTAxZGQu
LmE2M2Y0NzczYWZjZDlhYzQ0YWZlMDY5MjI1NGUxZjk0MDQ0YTM4MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTE0NCw3ICsxNDQsNiBAQCBwdWJs
aWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkNvZGVCbG9jaygpOwogCiAgICAgVW5saW5rZWRD
b2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUuZ2V0KCk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVW5saW5rZWRDb2RlQmxv
Y2soKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX3VubGlua2VkQ29kZSk7
IH0KIAogICAgIENTdHJpbmcgaW5mZXJyZWROYW1lKCkgY29uc3Q7CiAgICAgQ29kZUJsb2NrSGFz
aCBoYXNoKCkgY29uc3Q7CkBAIC00NzUsMTYgKzQ3NCwxOSBAQCBwdWJsaWM6CiAKICAgICB1bnNp
Z25lZCBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpCiAgICAgewotICAgICAgICByZXR1
cm4gbnVtUGFyYW1ldGVycygpOworICAgICAgICBBU1NFUlQobV9hcmd1bWVudFZhbHVlUHJvZmls
ZXMuc2l6ZSgpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX251bVBhcmFtZXRlcnMpIHx8ICFP
cHRpb25zOjp1c2VKSVQoKSk7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50VmFsdWVQcm9maWxl
cy5zaXplKCk7CiAgICAgfQogCiAgICAgVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGVGb3JBcmd1
bWVudCh1bnNpZ25lZCBhcmd1bWVudEluZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHVubGlu
a2VkQ29kZUJsb2NrKCktPnZhbHVlUHJvZmlsZShhcmd1bWVudEluZGV4KTsKKyAgICAgICAgQVNT
RVJUKE9wdGlvbnM6OnVzZUpJVCgpKTsgLy8gVGhpcyBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSB2
YXJpb3VzIEpJVCBjb21waWxlcnMgb3IgcGxhY2VzIHRoYXQgZmlyc3QgY2hlY2sgbnVtYmVyT2ZB
cmd1bWVudFZhbHVlUHJvZmlsZXMgYmVmb3JlIGNhbGxpbmcgdGhpcy4KKyAgICAgICAgVmFsdWVQ
cm9maWxlJiByZXN1bHQgPSBtX2FyZ3VtZW50VmFsdWVQcm9maWxlc1thcmd1bWVudEluZGV4XTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBWYWx1ZVByb2ZpbGUmIHZhbHVl
UHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7Ci0gICAgU3BlY3VsYXRlZFR5
cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7
CisgICAgU3BlY3VsYXRlZFR5cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5k
ZXgoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnl0ZWNvZGVJbmRleCk7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVu
Y3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFycmF5
UHJvZmlsZShjb25zdCBGdW5jdG9yJik7CkBAIC04ODQsOCArODg2LDcgQEAgcHVibGljOgogICAg
IE1ldGFkYXRhJiBtZXRhZGF0YShPcGNvZGVJRCBvcGNvZGVJRCwgdW5zaWduZWQgbWV0YWRhdGFJ
RCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX21ldGFkYXRhKTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChvcGNvZGVJRCwgb3Bjb2RlSUQgPT0gTWV0YWRhdGE6Om9wY29kZUlEKTsKLSAgICAgICAg
cmV0dXJuIG1fbWV0YWRhdGEtPmdldDxNZXRhZGF0YT4oKVttZXRhZGF0YUlEXTsKKyAgICAgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDxNZXRhZGF0YSo+KG1fbWV0YWRhdGEtPmdldChvcGNvZGVJRCkp
W21ldGFkYXRhSURdOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgpA
QCAtOTM4LDggKzkzOSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZUFsbFZhbHVlUHJv
ZmlsZVByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9u
QXJndW1lbnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyk7CiAKLSAgICBWZWN0b3I8dW5zaWduZWQ+IHNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZp
eGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgRml4ZWRW
ZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uKTsKLSAgICB2b2lkIGluaXRpYWxpemVUZW1wbGF0ZU9iamVjdHMoU2NyaXB0RXhl
Y3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBWZWN0b3I8dW5zaWduZWQ+Jik7Cisg
ICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBGaXhlZFZlY3RvcjxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4+JiBjb25zdGFudHMsIGNvbnN0IEZpeGVkVmVjdG9yPFNvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiwgU2NyaXB0RXhl
Y3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKTsKIAogICAgIHZvaWQgcmVwbGFjZUNvbnN0YW50
KFZpcnR1YWxSZWdpc3RlciByZWcsIEpTVmFsdWUgdmFsdWUpCiAgICAgewpAQCAtMTAxNSw2ICsx
MDE1LDcgQEAgcHJpdmF0ZToKICAgICAvLyBmb3IgREZHIGNvZGUgYmxvY2tzLgogICAgIENvbXBy
ZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciBtX2xhenlPcGVyYW5kVmFsdWVQcm9m
aWxlczsKICNlbmRpZgorICAgIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZh
bHVlUHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQb29sCiAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgUmVnaXN0
ZXJfbXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJyaWVyX1Vua25vd24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKaW5kZXggYjAw
ZTI0NmY2OTc4ZTkyOGMzODEwNmVjYTAwNDM2ZDU3N2NmNmRhMy4uNTM2MjI4OTA3ZTg0YzQ5MzNj
ZDI5M2RmMzUwMTdiZjc5ZGU3NGY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCkBAIC0zOSwyMiArMzksMjIgQEAgdm9pZCBDb2Rl
QmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIAogICAgIGlm
IChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICAgICAgbV9tZXRhZGF0
YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMoKm1ldGFkYXRhLm1f
cHJvZmlsZSwgZmFsc2UpOyB9KTsKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9wcm9maWxlLCBmYWxzZSk7IH0p
OwogCiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUoVklTSVQpCiAK
ICN1bmRlZiBWSVNJVAogCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9w
ZW4+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgCi0gICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5t
X2l0ZXJhYmxlUHJvZmlsZSwgZmFsc2UpOwotICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9p
dGVyYXRvclByb2ZpbGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1fbmV4
dFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVBy
b2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2Zp
bGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFs
c2UpOwogICAgICAgICB9KTsKIAogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0
b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBmdW5jKCptZXRhZGF0
YS5tX25leHRSZXN1bHRQcm9maWxlLCBmYWxzZSk7Ci0gICAgICAgICAgICBmdW5jKCptZXRhZGF0
YS5tX2RvbmVQcm9maWxlLCBmYWxzZSk7Ci0gICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX3Zh
bHVlUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX25leHRSZXN1
bHRQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fZG9uZVByb2Zp
bGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV92YWx1ZVByb2ZpbGUsIGZh
bHNlKTsKICAgICAgICAgfSk7CiAgICAgfSAgIAogCkBAIC02NCw4ICs2NCwxMyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUo
Y29uc3QgRnVuY3RvciYgZnVuYykKIHsKICAgICBpZiAobV9tZXRhZGF0YSkgeworICAgICAgICBt
X21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAg
ICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6
OkFycmF5TGVuZ3RoKQorICAgICAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7CisgICAgICAgIH0pOworCiAjZGVmaW5l
IFZJU0lUMShfX29wKSBcCi0gICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7IGZ1bmMoKm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKTsgfSk7CisgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRh
dGEubV9hcnJheVByb2ZpbGUpOyB9KTsKIAogI2RlZmluZSBWSVNJVDIoX19vcCkgXAogICAgIG1f
bWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFk
YXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlKTsgfSk7CkBAIC03Nyw3ICs4Miw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1bmMp
CiAjdW5kZWYgVklTSVQyCiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9y
TmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewotICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEu
bV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0ZXJhYmxl
UHJvZmlsZSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCmluZGV4IDUwYTNjYjM0OGMxYmMxOTVl
MjJmNGZiNDY4ZGE5NTU5NzkyYzAwZTIuLjI1NTEzNzI5NjU5NmEyNWYxMDYwMDhhMzVhOWM1NmJi
ZTcyYTRjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdF
eGl0UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmNwcApAQCAtODksMTkgKzg5LDYgQEAgVmVjdG9yPEZyZXF1ZW50RXhpdFNpdGU+
IEV4aXRQcm9maWxlOjpleGl0U2l0ZXNGb3IoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgRXhpdFByb2ZpbGU6Omhhc0FueUV4aXRzQXQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KSBj
b25zdAotewotICAgIGlmICghbV9mcmVxdWVudEV4aXRTaXRlcykKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZnJlcXVlbnRFeGl0U2l0ZXMt
PnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2ZyZXF1ZW50RXhpdFNpdGVzLT5hdChpKS5i
eXRlY29kZUluZGV4KCkgPT0gYnl0ZWNvZGVJbmRleCkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBFeGl0UHJvZmlsZTo6aGFz
RXhpdFNpdGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgY29uc3QgRnJlcXVlbnRFeGl0U2l0
ZSYgc2l0ZSkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJlcXVlbnRFeGl0U2l0ZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCmluZGV4IDcyZjVk
ZmY1NGEwNzVjZTQxYjkxMmNiZDJmYzJjNGU0YTg4ZGM4YmMuLjg5ZTA4ZmI1ZDY3ZTQxMjYxMzYy
ODljODk1NGY2ODkxNDdhZTU4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9ERkdFeGl0UHJvZmlsZS5oCkBAIC0xODIsOCArMTgyLDYgQEAgcHVibGljOgogICAgIC8v
IEdldCB0aGUgZnJlcXVlbnQgZXhpdCBzaXRlcyBmb3IgYSBieXRlY29kZSBpbmRleC4gVGhpcyBp
cyBPKG4pLCBhbmQgaXMKICAgICAvLyBtZWFudCB0byBvbmx5IGJlIHVzZWQgZnJvbSBkZWJ1Z2dp
bmcvcHJvZmlsaW5nIGNvZGUuCiAgICAgVmVjdG9yPEZyZXF1ZW50RXhpdFNpdGU+IGV4aXRTaXRl
c0ZvcihCeXRlY29kZUluZGV4KTsKLQotICAgIGJvb2wgaGFzQW55RXhpdHNBdChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBCeXRlY29kZUluZGV4KSBjb25zdDsKICAgICAKICAgICAvLyBUaGlz
IGlzIE8obikgYW5kIHNob3VsZCBiZSBjYWxsZWQgb24gbGVzcy1mcmVxdWVudGx5IGV4ZWN1dGVk
IGNvZGUgcGF0aHMKICAgICAvLyBpbiB0aGUgY29tcGlsZXIuIEl0IHNob3VsZCBiZSBzdHJpY3Rs
eSBjaGVhcGVyIHRoYW4gYnVpbGRpbmcgYQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCmluZGV4IDhhNTA2YWEzOTkyNThkNzAwZTNhMjNjYzU0
YmM3NzQyOTA5ODlhZmIuLmVkY2U0ODkzNzE3NTU5OWJkYjg0MjZmZjU2ODEwMGJjNzYwM2NlYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRh
dGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRh
LmgKQEAgLTQ4LDYgKzQ4LDExIEBAIHN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgewog
fTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFVbnNldCkgPT0gMTIp
OwogCitzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIHsKKyAgICBBcnJheVBy
b2ZpbGUgYXJyYXlQcm9maWxlOworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2Rl
TWV0YWRhdGFBcnJheUxlbmd0aCkgPT0gMTIpOworCiBzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0
YVByb3RvTG9hZCB7CiAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CiAgICAgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0OwpAQCAtODUsNiArOTAsNyBAQCB1bmlvbiBHZXRCeUlkTW9kZU1l
dGFkYXRhIHsKICAgICB9OwogICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRN
b2RlOwogICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFVbnNldCB1bnNldE1vZGU7CisgICAgR2V0QnlJ
ZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIGFycmF5TGVuZ3RoTW9kZTsKICAgICBHZXRCeUlkTW9k
ZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9hZE1vZGU7CiB9Owogc3RhdGljX2Fzc2VydChzaXpl
b2YoR2V0QnlJZE1vZGVNZXRhZGF0YSkgPT0gMTYpOwpAQCAtMTA3LDYgKzExMyw3IEBAIHN0cnVj
dCBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAgICB1bmlvbiB7CiAgICAgICAgIEdldEJ5SWRNb2Rl
TWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2RlOwogICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRh
VW5zZXQgdW5zZXRNb2RlOworICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlMZW5ndGgg
YXJyYXlMZW5ndGhNb2RlOwogICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHBy
b3RvTG9hZE1vZGU7CiAgICAgfTsKICAgICBHZXRCeUlkTW9kZSBtb2RlOwpAQCAtMTMwLDYgKzEz
Nyw3IEBAIGlubGluZSB2b2lkIEdldEJ5SWRNb2RlTWV0YWRhdGE6OnNldFVuc2V0TW9kZShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIGlubGluZSB2b2lkIEdldEJ5SWRNb2RlTWV0YWRhdGE6OnNldEFy
cmF5TGVuZ3RoTW9kZSgpCiB7CiAgICAgbW9kZSA9IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aDsK
KyAgICBuZXcgKCZhcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKSBBcnJheVByb2ZpbGU7CiAg
ICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCiAg
ICAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAKaW5k
ZXggMTc2NTIxNDIyZjE0ZWU3YmNlYzIzZWNjYmE3MGEwZDk4ZDk2ZDAwMi4uNjE3Y2U1ZGVkYWI1
ODA4NDU2NGJlYzgzZTk0YWI2Y2YxZDY0ODliMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCkBAIC0z
MywxMyArMzMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcigp
IHsgfQogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjp+Q29tcHJlc3Nl
ZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCkgeyB9CiAKLXZvaWQgQ29tcHJlc3NlZExh
enlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCit2b2lkIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZUhvbGRlcjo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucyhjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNpemUoKTsgKytpKQot
ICAgICAgICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogfQogCiBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxl
SG9sZGVyOjphZGQoCkBAIC04NywxMyArODcsMTMgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUq
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpnZXRJZlByZXNlbnQoCiB9CiAKIFNwZWN1
bGF0ZWRUeXBlIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpwcmVkaWN0aW9uKAotICAg
IGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxl
S2V5JiBrZXkpIGNvbnN0CisgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIGNv
bnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpIGNvbnN0CiB7CiAgICAgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBnZXRJZlByZXNlbnQoa2V5KTsKICAgICBpZiAo
IXByb2ZpbGUpCiAgICAgICAgIHJldHVybiBTcGVjTm9uZTsKICAgICAKLSAgICByZXR1cm4gcHJv
ZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgcmV0dXJuIHByb2ZpbGUtPmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcApp
bmRleCBiMGQ0YWUwODdjOTExNDIzMWM4YjVmNDU2ZTc1NDhkZWExMWRlY2IwLi42MGM0ZDM2ZjBh
Zjc1ZDM2ZGRiZjkxY2EyZWNjMzE2NDhhODRkZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCkBAIC00NCwxMSArNDQsOSBAQCBzdHJ1
Y3QgRGVhbGxvY1RhYmxlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICBzdGF0aWMg
dm9pZCB3aXRoT3Bjb2RlVHlwZShNZXRhZGF0YVRhYmxlKiB0YWJsZSkKICAgICB7Ci0gICAgICAg
IGlmIGNvbnN0ZXhwciAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE9wOjpvcGNvZGVJRCkgPCBOVU1C
RVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFUQSkgewotICAgICAgICAgICAgdGFibGUtPmZvckVh
Y2g8T3A+KFtdKGF1dG8mIGVudHJ5KSB7Ci0gICAgICAgICAgICAgICAgZW50cnkufk1ldGFkYXRh
KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQorICAgICAgICB0YWJsZS0+Zm9yRWFjaDxP
cD4oW10oYXV0byYgZW50cnkpIHsKKyAgICAgICAgICAgIGVudHJ5Ln5NZXRhZGF0YSgpOworICAg
ICAgICB9KTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGFkYXRhVGFibGUuaAppbmRleCA0ZDY3NThlNDFlOTU5YjhhMDA1MGJiNDY3NTg4MjY4OGEx
ZTZmNjVlLi4xZGMyN2Y0OWU0YTZhMGExNWIyMzJhNjIyODllOTIzZGYyOGY4ZDA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKQEAgLTQ2LDIy
ICs0NiwxOCBAQCBjbGFzcyBNZXRhZGF0YVRhYmxlIHsKIHB1YmxpYzoKICAgICB+TWV0YWRhdGFU
YWJsZSgpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+Ci0gICAgQUxXQVlTX0lO
TElORSBNZXRhZGF0YSogZ2V0KCkKKyAgICBBTFdBWVNfSU5MSU5FIEluc3RydWN0aW9uOjpNZXRh
ZGF0YSogZ2V0KE9wY29kZUlEIG9wY29kZUlEKQogICAgIHsKLSAgICAgICAgYXV0byBvcGNvZGVJ
RCA9IE1ldGFkYXRhOjpvcGNvZGVJRDsKICAgICAgICAgQVNTRVJUKG9wY29kZUlEIDwgTlVNQkVS
X09GX0JZVEVDT0RFX1dJVEhfTUVUQURBVEEpOwotICAgICAgICB1aW50cHRyX3QgcHRyID0gYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oZ2V0V2l0aG91dEFsaWduaW5nKG9wY29kZUlEKSk7Ci0gICAg
ICAgIHB0ciA9IHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZihNZXRhZGF0YSksIHB0cik7Ci0g
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8TWV0YWRhdGEqPihwdHIpOworICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvbjo6TWV0YWRhdGEqPihnZXRJbXBsKG9wY29k
ZUlEKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEZ1bmN0
b3I+CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZvckVhY2goY29uc3QgRnVuY3RvciYgZnVuYykK
ICAgICB7Ci0gICAgICAgIGF1dG8qIG1ldGFkYXRhID0gZ2V0PHR5cGVuYW1lIE9wOjpNZXRhZGF0
YT4oKTsKLSAgICAgICAgYXV0byogZW5kID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIE9wOjpNZXRh
ZGF0YSo+KGdldFdpdGhvdXRBbGlnbmluZyhPcDo6b3Bjb2RlSUQgKyAxKSk7Ci0gICAgICAgIGZv
ciAoOyBtZXRhZGF0YSA8IGVuZDsgKyttZXRhZGF0YSkKKyAgICAgICAgYXV0byogbWV0YWRhdGEg
PSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgT3A6Ok1ldGFkYXRhKj4oZ2V0KE9wOjpvcGNvZGVJRCkp
OworICAgICAgICBhdXRvKiBlbmQgPSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgT3A6Ok1ldGFkYXRh
Kj4oZ2V0SW1wbChPcDo6b3Bjb2RlSUQgKyAxKSk7CisgICAgICAgIGZvciAoOyBtZXRhZGF0YSAr
IDEgPD0gZW5kOyArK21ldGFkYXRhKQogICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEpOwogICAg
IH0KIApAQCAtMTIwLDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBvZmZzZXRU
YWJsZTMyKClbaV07CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB1aW50OF90KiBnZXRXaXRo
b3V0QWxpZ25pbmcodW5zaWduZWQgaSkKKyAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3QqIGdldElt
cGwodW5zaWduZWQgaSkKICAgICB7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludDhf
dCo+KHRoaXMpICsgZ2V0T2Zmc2V0KGkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaAppbmRleCA3YzNmMjI2N2I1MmUxY2Q0MDlkZDgxYmE1MTk0NTVlOTgxOWMw
OTZmLi5hYzdmNzEwZDgwNjVkYzgzZjUwMTcyYjk1ZTJhOTZkNjhkMGQxZWE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0xMzksNyArMTM5LDYgQEAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRXaWR0aEZvck1heE9wY29kZUxlbmd0aCA9IFdURjo6Z2V0
TVNCU2V0Q29uc3RleHByKG0KICAgICBtYWNybyhPcEVudW1lcmF0b3JHZXRCeVZhbCkgXAogICAg
IG1hY3JvKE9wRW51bWVyYXRvckluQnlWYWwpIFwKICAgICBtYWNybyhPcEVudW1lcmF0b3JIYXNP
d25Qcm9wZXJ0eSkgXAotICAgIG1hY3JvKE9wR2V0QnlJZCkgXAogCiAjZGVmaW5lIEZPUl9FQUNI
X09QQ09ERV9XSVRIX0FSUkFZX0FMTE9DQVRJT05fUFJPRklMRShtYWNybykgXAogICAgIG1hY3Jv
KE9wTmV3QXJyYXkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGRmMmRmNmFlYzhhYjA0ODE1OGI5YmE4ZWIxOWE2
NjNjNTUzYmY2ZmUuLjM3NTFhMzI5YjU4MTk4NjFiMzdlMDFjN2Y2YzI0MjQ4MGRkZTg4NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcApAQCAtMTA4LDggKzEwOCw2IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0
Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICBleHRyYU1l
bW9yeSArPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRXhwcnMuYnl0ZVNpemUoKTsKIAogICAgIHZp
c2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKGV4dHJhTWVtb3J5KTsKLQotICAgIFZNOjpT
cGFjZUFuZFNldDo6c2V0Rm9yKCp0aGlzT2JqZWN0LT5zdWJzcGFjZSgpKS5hZGQodGhpc09iamVj
dCk7CiB9CiAKIERFRklORV9WSVNJVF9DSElMRFJFTihVbmxpbmtlZENvZGVCbG9jayk7CkBAIC0z
MTgsNDUgKzMxNiw0IEBAIGludCBVbmxpbmtlZENvZGVCbG9jazo6b3V0T2ZMaW5lSnVtcE9mZnNl
dChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIG1fb3V0
T2ZMaW5lSnVtcFRhcmdldHMuZ2V0KGJ5dGVjb2RlT2Zmc2V0KTsKIH0KIAotdm9pZCBVbmxpbmtl
ZENvZGVCbG9jazo6YWxsb2NhdGVTaGFyZWRQcm9maWxlcygpCi17Ci0gICAgUkVMRUFTRV9BU1NF
UlQoIW1fbWV0YWRhdGEtPmlzRmluYWxpemVkKCkpOwotCi0gICAgewotICAgICAgICB1bnNpZ25l
ZCBudW1iZXJPZlZhbHVlUHJvZmlsZXMgPSBudW1QYXJhbWV0ZXJzKCk7Ci0gICAgICAgIGlmICht
X21ldGFkYXRhLT5oYXNNZXRhZGF0YSgpKSB7Ci0jZGVmaW5lIENPVU5UKF9fb3ApIFwKLSAgICAg
ICAgICAgIG51bWJlck9mVmFsdWVQcm9maWxlcyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPF9f
b3A+KCk7Ci0gICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKENP
VU5UKQotI3VuZGVmIENPVU5UCi0gICAgICAgICAgICBudW1iZXJPZlZhbHVlUHJvZmlsZXMgKz0g
bV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9yT3Blbj4oKSAqIDM7Ci0gICAgICAgICAg
ICBudW1iZXJPZlZhbHVlUHJvZmlsZXMgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJh
dG9yTmV4dD4oKSAqIDM7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3ZhbHVlUHJvZmlsZXMgPSBG
aXhlZFZlY3RvcjxWYWx1ZVByb2ZpbGU+KG51bWJlck9mVmFsdWVQcm9maWxlcyk7Ci0gICAgfQot
Ci0gICAgaWYgKG1fbWV0YWRhdGEtPmhhc01ldGFkYXRhKCkpIHsKLSAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZBcnJheVByb2ZpbGVzID0gMDsKLQotI2RlZmluZSBDT1VOVChfX29wKSBcCi0gICAg
ICAgIG51bWJlck9mQXJyYXlQcm9maWxlcyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPF9fb3A+
KCk7Ci0gICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoQ09VTlQpCi0j
dW5kZWYgQ09VTlQKLSAgICAgICAgbnVtYmVyT2ZBcnJheVByb2ZpbGVzICs9IG1fbWV0YWRhdGEt
Pm51bUVudHJpZXM8T3BJdGVyYXRvck5leHQ+KCk7Ci0KLSAgICAgICAgbV9hcnJheVByb2ZpbGVz
ID0gRml4ZWRWZWN0b3I8QXJyYXlQcm9maWxlPihudW1iZXJPZkFycmF5UHJvZmlsZXMpOwotICAg
IH0KLX0KLQotdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
Vk0mKQotewotICAgIGZvciAoYXV0byYgcHJvZmlsZSA6IG1fdmFsdWVQcm9maWxlcykKLSAgICAg
ICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKLSAgICBmb3IgKGF1dG8mIHBy
b2ZpbGUgOiBtX2FycmF5UHJvZmlsZXMpCi0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKHRoaXMpOwotCi0gICAgVk06OlNwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNl
KCkpLnJlbW92ZSh0aGlzKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGFlOGZm
MGQzNWMzOTQzOTRiMzQ4OTgzYjI1ZDYxYWFjMmZkMGQxYTEuLjgxODFhMjM1ODkxYzQ0MDZiNDcy
YzJmZmY4ZTgzZjdjNzgxYzZhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252
ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAiREZHRXhpdFByb2Zp
bGUuaCIKQEAgLTM5LDcgKzM4LDYgQEAKICNpbmNsdWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlVubGlua2VkTWV0YWRhdGFU
YWJsZS5oIgotI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdp
c3Rlci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+
CkBAIC0zMjYsMTcgKzMyNCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRl
KGxvY2tlciwgc2l0ZSk7CiAgICAgfQogCi0gICAgYm9vbCBoYXNBbnlFeGl0c0F0KGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9leGl0UHJvZmlsZS5oYXNBbnlFeGl0c0F0KGxv
Y2tlciwgYnl0ZWNvZGVJbmRleCk7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNBbnlFeGl0c0F0KEJ5
dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKLSAgICB7Ci0gICAgICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgcmV0dXJuIGhhc0FueUV4aXRzQXQobG9ja2Vy
LCBieXRlY29kZUluZGV4KTsKLSAgICB9Ci0KICAgICBERkc6OkV4aXRQcm9maWxlJiBleGl0UHJv
ZmlsZSgpIHsgcmV0dXJuIG1fZXhpdFByb2ZpbGU7IH0KICNlbmRpZgogCkBAIC0zNDcsOSArMzM0
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9tZXRhZGF0YS0+c2l6ZUluQnl0ZXMoKTsK
ICAgICB9CiAKLSAgICB2b2lkIGFsbG9jYXRlU2hhcmVkUHJvZmlsZXMoKTsKLQotICAgIHZvaWQg
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKIAogcHJvdGVjdGVkOgogICAgIFVubGlua2Vk
Q29kZUJsb2NrKFZNJiwgU3RydWN0dXJlKiwgQ29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJbmZv
JiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4pOwpAQCAtNDM1LDggKzQxOSw2IEBAIHBy
aXZhdGU6CiAgICAgRml4ZWRWZWN0b3I8SWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsKICAgICBG
aXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+IG1fY29uc3RhbnRSZWdpc3RlcnM7CiAg
ICAgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiBtX2NvbnN0YW50c1NvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbjsKLSAgICBGaXhlZFZlY3RvcjxWYWx1ZVByb2ZpbGU+IG1fdmFs
dWVQcm9maWxlczsgLy8gVGhlIGZpcnN0IG51bVBhcmFtZXRlcnMoKSBhcmUgYXJndW1lbnQgcHJv
ZmlsZXMuCi0gICAgRml4ZWRWZWN0b3I8QXJyYXlQcm9maWxlPiBtX2FycmF5UHJvZmlsZXM7CiAg
ICAgdXNpbmcgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJy
aWVyPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPj47CiAgICAgRnVuY3Rpb25FeHByZXNzaW9u
VmVjdG9yIG1fZnVuY3Rpb25EZWNsczsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3IgbV9m
dW5jdGlvbkV4cHJzOwpAQCAtNDc0LDExICs0NTYsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBvdXRPZkxpbmVKdW1wT2Zmc2V0KGluc3RydWN0aW9uLm9mZnNldCgpKTsKICAgICB9CiAKLSAg
ICBWYWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZSh1bnNpZ25lZCBpKSB7IHJldHVybiBtX3ZhbHVl
UHJvZmlsZXNbaV07IH0KLSAgICBBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSh1bnNpZ25lZCBp
KSB7IHJldHVybiBtX2FycmF5UHJvZmlsZXNbaV07IH0KLSAgICB1bnNpZ25lZCBudW1WYWx1ZVBy
b2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZVByb2ZpbGVzLnNpemUoKTsgfQotICAgIHVu
c2lnbmVkIG51bUFycmF5UHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvZmlsZXMu
c2l6ZSgpOyB9Ci0KIHByaXZhdGU6CiAgICAgdXNpbmcgT3V0T2ZMaW5lSnVtcFRhcmdldHMgPSBI
YXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGludD47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3IuY3BwCmluZGV4IDNiNzFhODAzMTJlY2E2NzViZDRhNDIyMmEyOGFlZDhjODdhMmYyMGQu
LjUxYTg2NTJiZjA1MWE0ODc5MDQzNzliYzRmOGUxODNkZjgxZGU0Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
R2VuZXJhdG9yLmNwcApAQCAtMTE5LDcgKzExOSw2IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3I6OmZpbmFsaXplKHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gaW5z
CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb2RlQmxvY2stPmNlbGxMb2NrKCkg
fTsKICAgICAgICAgbV9jb2RlQmxvY2stPm1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVj
dGlvbnMpOwotICAgICAgICBtX2NvZGVCbG9jay0+YWxsb2NhdGVTaGFyZWRQcm9maWxlcygpOwog
ICAgICAgICBtX2NvZGVCbG9jay0+bV9tZXRhZGF0YS0+ZmluYWxpemUoKTsKIAogICAgICAgICBt
X2NvZGVCbG9jay0+bV9qdW1wVGFyZ2V0cyA9IFdURk1vdmUobV9qdW1wVGFyZ2V0cyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRh
VGFibGUuY3BwCmluZGV4IDVmNGMwYTllN2FjZGQ3ZTdhNDQxOGI5MmM1ZWRhZWZlNzY4NGFlOTIu
LmI3MzAyZjQ0MWI3NjViNTNhMTQ0ZDBhNDhhNWJiNDE4NGM0ZTk0YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUu
Y3BwCkBAIC01NSwxMCArNTUsMTAgQEAgdm9pZCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmZpbmFs
aXplKCkKICAgICAgICAgICAgICAgICBidWZmZXJbaV0gPSBvZmZzZXQ7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBidWZmZXJbaV0gPSBvZmZz
ZXQ7IC8vIFdlIGFsaWduIHdoZW4gd2UgYWNjZXNzIHRoaXMuCiAgICAgICAgICAgICB1bnNpZ25l
ZCBhbGlnbm1lbnQgPSBtZXRhZGF0YUFsaWdubWVudChzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkp
OwogICAgICAgICAgICAgb2Zmc2V0ID0gcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm1lbnQsIG9m
ZnNldCk7CiAgICAgICAgICAgICBBU1NFUlQoYWxpZ25tZW50IDw9IHNfbWF4TWV0YWRhdGFBbGln
bm1lbnQpOworICAgICAgICAgICAgYnVmZmVyW2ldID0gb2Zmc2V0OwogICAgICAgICAgICAgb2Zm
c2V0ICs9IG51bWJlck9mRW50cmllcyAqIG1ldGFkYXRhU2l6ZShzdGF0aWNfY2FzdDxPcGNvZGVJ
RD4oaSkpOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZlcltzX29mZnNldFRhYmxlRW50cmllcyAt
IDFdID0gb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkTWV0YWRhdGFUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCmluZGV4IDk0MDVjZDY2YjUyYWRjZGY0NjA5ZWExMmZi
NzlmOTZmYzM0MmYwMTIuLjIyM2Q1N2M3ZmNkMDM2NWZhMDc1ODEwZTlhYjRmYTA2NGMyMjg0YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFk
YXRhVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRN
ZXRhZGF0YVRhYmxlLmgKQEAgLTUyLDggKzUyLDYgQEAgcHVibGljOgogICAgIH5VbmxpbmtlZE1l
dGFkYXRhVGFibGUoKTsKIAogICAgIHVuc2lnbmVkIGFkZEVudHJ5KE9wY29kZUlEKTsKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQnl0ZWNvZGU+Ci0gICAgdW5zaWduZWQgbnVtRW50cmllcygpOwog
CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCk7CiAKQEAgLTY2LDkgKzY0LDYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVbmxpbmtlZE1ldGFkYXRhVGFibGUpOwogICAg
IH0KIAotICAgIGJvb2wgaXNGaW5hbGl6ZWQoKSB7IHJldHVybiBtX2lzRmluYWxpemVkOyB9Ci0g
ICAgYm9vbCBoYXNNZXRhZGF0YSgpIHsgcmV0dXJuIG1faGFzTWV0YWRhdGE7IH0KLQogcHJpdmF0
ZToKICAgICBlbnVtIEVtcHR5VGFnIHsgRW1wdHkgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGVJbmxpbmVz
LmgKaW5kZXggNzI1MDYzM2Y3NzA5NGY4NGJiMDI3ZWVhNWM4MTFjZWZjZjg2ZDM1NC4uOTgyMmRi
ZDgzMzgwNGMyNWU0ZTdmN2Q1ODBkYTNhNWI0NWM4NTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5s
aW5lcy5oCkBAIC03MywxNCArNzMsNiBAQCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIFVubGlua2Vk
TWV0YWRhdGFUYWJsZTo6YWRkRW50cnkoT3Bjb2RlSUQgb3Bjb2RlSUQpCiAgICAgcmV0dXJuIHBy
ZXByb2Nlc3NCdWZmZXIoKVtvcGNvZGVJRF0rKzsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEJ5
dGVjb2RlPgotQUxXQVlTX0lOTElORSB1bnNpZ25lZCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Om51
bUVudHJpZXMoKQotewotICAgIGNvbnN0ZXhwciBhdXRvIG9wY29kZUlEID0gQnl0ZWNvZGU6Om9w
Y29kZUlEOwotICAgIEFTU0VSVCghbV9pc0ZpbmFsaXplZCAmJiBvcGNvZGVJRCA8IHNfb2Zmc2V0
VGFibGVFbnRyaWVzIC0gMSk7Ci0gICAgcmV0dXJuIHByZXByb2Nlc3NCdWZmZXIoKVtvcGNvZGVJ
RF07Ci19Ci0KIEFMV0FZU19JTkxJTkUgc2l6ZV90IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c2l6
ZUluQnl0ZXMoKQogewogICAgIGlmIChtX2lzRmluYWxpemVkICYmICFtX2hhc01ldGFkYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCmluZGV4IDI0
ZDdiYThkNjBlYTY1NzgzYzU2Mzc1NWQxODg5MzEyNTc5NmU3NDAuLjU3YWZmODI3MTUyZmE5NTBj
YmI0YmM3YjgyNGNiNzc2YzM1ODlhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmFsdWVQcm9maWxlLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJDb25jdXJy
ZW50SlNMb2NrLmgiCiAjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmUuaCIKLSNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIApAQCAtNDUs
MTEgKzQ0LDYgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgdG90YWxOdW1iZXJPZkJ1Y2tldHMgPSBudW1iZXJPZkJ1Y2tldHMgKyBudW1i
ZXJPZlNwZWNGYWlsQnVja2V0czsKICAgICAKICAgICBWYWx1ZVByb2ZpbGVCYXNlKCkKLSAgICB7
Ci0gICAgICAgIGNsZWFyQnVja2V0cygpOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJCdWNrZXRz
KCkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9m
QnVja2V0czsgKytpKQogICAgICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7CkBAIC02MSw2ICs1NSwxNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7
CiAgICAgICAgIHJldHVybiBtX2J1Y2tldHMgKyBudW1iZXJPZkJ1Y2tldHMgKyBpOwogICAgIH0K
ICAgICAKKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyh1bnNpZ25lZCBidWNrZXQpIGNv
bnN0CisgICAgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVj
a2V0c1tidWNrZXRdKTsKKyAgICAgICAgaWYgKCEhdmFsdWUpIHsKKyAgICAgICAgICAgIGlmICgh
dmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
ICAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZTYW1wbGVzKCkgY29uc3QKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHJlc3Vs
dCA9IDA7CkBAIC04Nyw5ICs5Miw5IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRp
b24oKQorICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImIGxvY2tlcikKICAgICB7Ci0gICAgICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwor
ICAgICAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKICAgICAgICAgCiAgICAg
ICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKICAgICAgICAgb3V0LnByaW50KCJwcmVkaWN0aW5n
ICIsIFNwZWN1bGF0aW9uRHVtcChtX3ByZWRpY3Rpb24pKTsKQEAgLTExMywxMCArMTE4LDEwIEBA
IHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBT
cGVjdWxhdGVkVHlwZSBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKQorICAgIC8vIFVwZGF0ZXMg
dGhlIHByZWRpY3Rpb24gYW5kIHJldHVybnMgdGhlIG5ldyBvbmUuIE5ldmVyIGNhbGwgdGhpcyBm
cm9tIGFueSB0aHJlYWQKKyAgICAvLyB0aGF0IGlzbid0IGV4ZWN1dGluZyB0aGUgY29kZS4KKyAg
ICBTcGVjdWxhdGVkVHlwZSBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKICAgICB7Ci0gICAgICAgIC8vIE11bHRpcGxlIHRocmVhZHMgY291bGQgYmUg
Y2FsbGluZyBpbnRvIHRoaXMgYXQgdGhlIHNhbWUgdGltZS4KLSAgICAgICAgLy8gVGhlIGltcG9y
dCBwYXJ0IGlzIHRoYXQgd2UgZG9uJ3QgZW5kIHVwIGNvcnJ1cHRpbmcgYW55IHZhbHVlcy4KICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVtYmVyT2ZCdWNrZXRzOyArK2kp
IHsKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUobV9idWNrZXRz
W2ldKTsKICAgICAgICAgICAgIGlmICghdmFsdWUpCkBAIC0xNTEsNyArMTU2LDYgQEAgc3RydWN0
IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMgOiBwdWJsaWMgVmFsdWVQcm9maWxl
QmFzZTwxIDw8IGxvZ051bWIKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBWYWx1ZVBy
b2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKICAgICBWYWx1ZVByb2ZpbGUoKSA6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mRmlyc3RCdWNrZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVmFs
dWVQcm9maWxlLCBtX2J1Y2tldHNbMF0pOyB9CiB9OwogCiBzdHJ1Y3QgVmFsdWVQcm9maWxlQW5k
VmlydHVhbFJlZ2lzdGVyIDogcHVibGljIFZhbHVlUHJvZmlsZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKaW5kZXggYzc4ZGVlN2ZiMGRhYWQyZDMwNzQwYmYz
YTRhZTY1NzYwMjYyMzhkMS4uNmU0ZmU5YWZhM2ViNzFjMzg5NzEwNzc2NWY0YzQ0ZmE1ZGRiYmQ1
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcApAQCAtMzYs
MTcgKzM2LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotQXJyYXlN
b2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKEdyYXBoJiBncmFwaCwgY29uc3QgQ29kZU9yaWdp
biYgb3JpZ2luLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uLCBi
b29sIG1ha2VTYWZlKQorQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIEFycmF5OjpB
Y3Rpb24gYWN0aW9uLCBib29sIG1ha2VTYWZlKQogewotICAgIGlmIChwcm9maWxlLT5vYnNlcnZl
ZERpZmZlcmVudEdsb2JhbE9iamVjdCgpICYmIGdyYXBoLmhhc0FueUV4aXRzQXQob3JpZ2luKSkg
ewotICAgICAgICAvLyBUaGlzIGNvdWxkIGJlIGFuIG9yaWdpbmFsIGFycmF5IHN0cnVjdHVyZSwg
YnV0IGZyb20gYSBkaWZmZXJlbnQKLSAgICAgICAgLy8gZ2xvYmFsIG9iamVjdCB0aGFuIHRoZSBs
ZXhpY2FsIGdsb2JhbCBvYmplY3QuIFNvIHdlIGNvbnNlcnZhdGl2ZWx5Ci0gICAgICAgIC8vIHNh
eSBpdCBpcyBub3QgYW4gb3JpZ2luYWwgYXJyYXkgc3RydWN0dXJlLgotICAgICAgICBwcm9maWxl
LT5zZXREb2VzTm90VXNlT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMoKTsKLSAgICB9Ci0KICAgICBB
cnJheTo6Q2xhc3Mgbm9uQXJyYXk7Ci0gICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5
U3RydWN0dXJlcygpKQorICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVy
ZXMobG9ja2VyKSkKICAgICAgICAgbm9uQXJyYXkgPSBBcnJheTo6T3JpZ2luYWxOb25BcnJheTsK
ICAgICBlbHNlCiAgICAgICAgIG5vbkFycmF5ID0gQXJyYXk6Ok5vbkFycmF5OwpAQCAtNzAsMjcg
KzYzLDI3IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChHcmFwaCYgZ3JhcGgs
IGNvbnN0IENvZGVPcmlnaW4mIG9yaWdpbiwgQXJyYXlQCiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbnZlcnRzID0gQXJyYXk6OkFzSXM7CiAKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0
eXBlLCBpc0FycmF5LCBjb252ZXJ0cywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtl
U2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVydHMs
IGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgfTsK
IAotICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWQgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMo
KTsKKyAgICBBcnJheU1vZGVzIG9ic2VydmVkID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVz
KGxvY2tlcik7CiAgICAgc3dpdGNoIChvYnNlcnZlZCkgewogICAgIGNhc2UgMDoKICAgICAgICAg
cmV0dXJuIEFycmF5TW9kZShBcnJheTo6VW5wcm9maWxlZCk7CiAgICAgY2FzZSBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5KToKLSAgICAgICAgaWYgKGFjdGlvbiA9PSBB
cnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQor
ICAgICAgICBpZiAoYWN0aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJj
ZXB0SW5kZXhlZEFjY2Vzc2VzKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KEFycmF5OjpTZWxlY3RVc2luZ0FyZ3VtZW50cywgbm9uQXJyYXksIEFycmF5OjpPdXRPZkJvdW5k
cywgQXJyYXk6OkNvbnZlcnQsIGFjdGlvbik7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJy
YXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIG5vbkFycmF5LCBhY3Rpb24pLndpdGhTcGVjdWxh
dGlvbkZyb21Qcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5
TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgbm9uQXJyYXksIGFjdGlvbikud2l0
aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CiAKICAg
ICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoVW5kZWNpZGVk
KToKICAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUpCiAgICAgICAgICAgICByZXR1
cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0FyZ3VtZW50cywgQXJyYXk6OkFycmF5LCBB
cnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pOwotICAgICAgICByZXR1
cm4gQXJyYXlNb2RlKEFycmF5OjpVbmRlY2lkZWQsIEFycmF5OjpBcnJheSwgQXJyYXk6Ok91dE9m
Qm91bmRzLCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVuZGVjaWRlZCwgQXJyYXk6OkFy
cmF5LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOwogICAgICAgICAKICAgICBjYXNlIGFzQXJyYXlN
b2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXkpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhBcnJheVdpdGhVbmRlY2lkZWQpOgotICAgICAgICBpZiAoYWN0aW9uID09IEFy
cmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCisg
ICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNl
cHRJbmRleGVkQWNjZXNzZXMobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUo
QXJyYXk6OlNlbGVjdFVzaW5nQXJndW1lbnRzLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6
Ok91dE9mQm91bmRzLCBBcnJheTo6Q29udmVydCwgYWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgYWN0aW9uKS53aXRoU3BlY3Vs
YXRpb25Gcm9tUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CiAKICAgICBjYXNlIGFz
QXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoSW50MzIpOgogICAgIGNh
c2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhJbnQzMik6CkBAIC0x
MjAsNTAgKzExMyw1MCBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQoR3JhcGgm
IGdyYXBoLCBjb25zdCBDb2RlT3JpZ2luJiBvcmlnaW4sIEFycmF5UAogICAgICAgICByZXR1cm4g
aGFuZGxlQ29udGlndW91c01vZGVzKEFycmF5OjpDb250aWd1b3VzLCBvYnNlcnZlZCk7CiAKICAg
ICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlT
dG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBu
b25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNh
ZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpBcnJheVN0b3JhZ2UsIG5vbkFy
cmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1h
a2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJy
YXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmlu
Z1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25v
cmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBub25BcnJheSwg
QXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOworICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtl
U2FmZSk7CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0
aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3Rv
cmFnZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9m
aWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3Rv
cmFnZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2Nr
ZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlw
ZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5
TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5
TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgot
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBBcnJh
eTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VT
YWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFn
ZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIs
IHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlw
ZWRBcnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZShBcnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpBcnJheVN0b3JhZ2UsIEFycmF5OjpQb3NzaWJseUFycmF5LCBBcnJh
eTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsK
ICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xv
d1B1dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5
V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3Jp
bmdUeXBlZEFycmF5cyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3Jp
bmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlN
b2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6Ci0g
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5
OjpQb3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJh
eVN0b3JhZ2UsIEFycmF5OjpQb3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRo
UHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEludDhBcnJheU1v
ZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDhBcnJheSwgbm9uQXJyYXks
IEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50OEFycmF5LCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CiAg
ICAgY2FzZSBJbnQxNkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
SW50MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHBy
b2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50MTZB
cnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwg
cHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgSW50MzJBcnJheU1vZGU6Ci0gICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OkludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywg
YWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OkludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQ4
QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50OEFycmF5LCBu
b25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNh
ZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50OEFycmF5LCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtl
U2FmZSk7CiAgICAgY2FzZSBVaW50OENsYW1wZWRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpVaW50OENsYW1wZWRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lz
LCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNh
c2UgVWludDE2QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50
MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2Zp
bGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDE2QXJy
YXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHBy
b2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQzMkFycmF5TW9kZToKLSAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywg
YWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OlVpbnQzMkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlv
bikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBGbG9h
dDMyQXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGbG9hdDMyQXJy
YXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBt
YWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZsb2F0MzJBcnJheSwg
bm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmls
ZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgRmxvYXQ2NEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6RmxvYXQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJy
YXlNb2RlKEFycmF5OjpGbG9hdDY0QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEJpZ0lu
dDY0QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdJbnQ2NEFy
cmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwg
bWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdJbnQ2NEFycmF5
LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9m
aWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBCaWdVaW50NjRBcnJheU1vZGU6Ci0gICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFz
SXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1
cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdVaW50NjRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lz
LCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBzZWVuIG11bHRpcGxlIFR5cGVkQXJyYXkg
dHlwZXMsIG9yIGEgVHlwZWRBcnJheSBhbmQgbm9uLXR5cGVkIGFycmF5LCBpdCBkb2Vzbid0IG1h
a2Ugc2Vuc2UgdG8gdHJ5IHRvIGNvbnZlcnQgdGhlIG9iamVjdCBzaW5jZSB5b3UgY2FuJ3QgY29u
dmVydCB0eXBlZCBhcnJheXMuCiAgICAgICAgIGlmIChvYnNlcnZlZCAmIEFMTF9UWVBFRF9BUlJB
WV9NT0RFUykKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CisgICAgICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtl
U2FmZSk7CiAKLSAgICAgICAgaWYgKChvYnNlcnZlZCAmIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlw
ZWRBcnJheXMoTm9uQXJyYXkpKSAmJiBwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJl
ZGljdGlvbnMpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsK
KyAgICAgICAgaWYgKChvYnNlcnZlZCAmIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMo
Tm9uQXJyYXkpKSAmJiBwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMobG9ja2Vy
KSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGlj
dGlvbnMpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNh
ZmUpOwogICAgICAgICAKICAgICAgICAgQXJyYXk6OlR5cGUgdHlwZTsKICAgICAgICAgQXJyYXk6
OkNsYXNzIGFycmF5Q2xhc3M7CkBAIC0xOTAsNyArMTgzLDcgQEAgQXJyYXlNb2RlIEFycmF5TW9k
ZTo6ZnJvbU9ic2VydmVkKEdyYXBoJiBncmFwaCwgY29uc3QgQ29kZU9yaWdpbiYgb3JpZ2luLCBB
cnJheVAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJyYXlDbGFzcyA9IEFycmF5OjpQb3Nz
aWJseUFycmF5OwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJh
eUNsYXNzLCBBcnJheTo6Q29udmVydCwgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtl
U2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcywgQXJyYXk6
OkNvbnZlcnQsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAppbmRl
eCAxYWEyNzczNWQyMmNjNzQ1MzBlN2M1OTM5ODA5MDE4YTI4Y2M3YmY2Li5hMDI2YWFkMTg5M2Jm
MjNjNTcxOTZmY2M2YzkxZmMyMDAwM2M0NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlNb2RlLmgKQEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBBcnJheU1vZGUod29yZCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBBcnJheU1vZGUgZnJv
bU9ic2VydmVkKEdyYXBoJiwgY29uc3QgQ29kZU9yaWdpbiYsIEFycmF5UHJvZmlsZSosIEFycmF5
OjpBY3Rpb24sIGJvb2wgbWFrZVNhZmUpOworICAgIHN0YXRpYyBBcnJheU1vZGUgZnJvbU9ic2Vy
dmVkKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFycmF5OjpBY3Rp
b24sIGJvb2wgbWFrZVNhZmUpOwogICAgIAogICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb24o
QXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKSBjb25zdAogICAgIHsKQEAgLTE5MCwxMyAr
MTkwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5
Q2xhc3MsIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwogICAgIH0KICAg
ICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoQXJyYXlQcm9maWxl
KiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIEFycmF5TW9kZSB3aXRoU3BlY3Vs
YXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQ
cm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJy
YXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRpb247CiAKICAgICAgICAgaWYgKG1ha2VTYWZlKQog
ICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKLSAgICAgICAg
ZWxzZSBpZiAocHJvZmlsZS0+bWF5U3RvcmVUb0hvbGUoKSkKKyAgICAgICAgZWxzZSBpZiAocHJv
ZmlsZS0+bWF5U3RvcmVUb0hvbGUobG9ja2VyKSkKICAgICAgICAgICAgIG15U3BlY3VsYXRpb24g
PSBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBteVNwZWN1bGF0aW9u
ID0gQXJyYXk6OkluQm91bmRzOwpAQCAtMjA0LDYgKzIwNCwyNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CiAgICAgfQogICAgIAorICAg
IEFycmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
QXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQXJyYXk6OkNsYXNzIG15QXJyYXlDbGFzczsKKworICAgICAgICBpZiAoaXNKU0FycmF5KCkp
IHsKKyAgICAgICAgICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMo
bG9ja2VyKSAmJiBiZW5lZml0c0Zyb21PcmlnaW5hbEFycmF5KCkpIHsKKyAgICAgICAgICAgICAg
ICBBcnJheU1vZGVzIGFycmF5TW9kZXMgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9j
a2VyKTsKKyAgICAgICAgICAgICAgICBpZiAoaGFzU2VlbkNvcHlPbldyaXRlQXJyYXkoYXJyYXlN
b2RlcykgJiYgIWhhc1NlZW5Xcml0YWJsZUFycmF5KGFycmF5TW9kZXMpKQorICAgICAgICAgICAg
ICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6T3JpZ2luYWxDb3B5T25Xcml0ZUFycmF5Owor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFoYXNTZWVuQ29weU9uV3JpdGVBcnJheShhcnJheU1v
ZGVzKSAmJiBoYXNTZWVuV3JpdGFibGVBcnJheShhcnJheU1vZGVzKSkKKyAgICAgICAgICAgICAg
ICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6Ok9yaWdpbmFsQXJyYXk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJh
eTo6QXJyYXk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJy
YXlDbGFzcygpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJy
YXlDbGFzcykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtl
U2FmZSk7CisgICAgfQorICAgIAogICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0
eXBlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwpAQCAtNTE3LDI4
ICs1MzgsNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgdS5hc1dvcmQgPSB3b3JkOwogICAg
IH0KLQotICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJv
b2wgbWFrZVNhZmUpIGNvbnN0Ci0gICAgewotICAgICAgICBBcnJheTo6Q2xhc3MgbXlBcnJheUNs
YXNzOwotCi0gICAgICAgIGlmIChpc0pTQXJyYXkoKSkgewotICAgICAgICAgICAgaWYgKHByb2Zp
bGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFs
QXJyYXkoKSkgewotICAgICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2Zp
bGUtPm9ic2VydmVkQXJyYXlNb2RlcygpOwotICAgICAgICAgICAgICAgIGlmIChoYXNTZWVuQ29w
eU9uV3JpdGVBcnJheShhcnJheU1vZGVzKSAmJiAhaGFzU2VlbldyaXRhYmxlQXJyYXkoYXJyYXlN
b2RlcykpCi0gICAgICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpPcmlnaW5h
bENvcHlPbldyaXRlQXJyYXk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWhhc1NlZW5Db3B5
T25Xcml0ZUFycmF5KGFycmF5TW9kZXMpICYmIGhhc1NlZW5Xcml0YWJsZUFycmF5KGFycmF5TW9k
ZXMpKQotICAgICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6T3JpZ2luYWxB
cnJheTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG15QXJyYXlD
bGFzcyA9IEFycmF5OjpBcnJheTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IG15QXJyYXlDbGFzcyA9IEFycmF5OjpBcnJheTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBteUFycmF5Q2xhc3MgPSBhcnJheUNsYXNzKCk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4g
d2l0aEFycmF5Q2xhc3MobXlBcnJheUNsYXNzKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShw
cm9maWxlLCBtYWtlU2FmZSk7Ci0gICAgfQotICAgIAogICAgIAogICAgIEFycmF5TW9kZXMgYXJy
YXlNb2Rlc1dpdGhJbmRleGluZ1NoYXBlcyhJbmRleGluZ1R5cGUgc2hhcGUpIGNvbnN0CiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCA2MmIwNzBhMzlmZjU5NTM3YTNhNDk1OTFkYmQ4YjMzNTAyNmM1OTg4Li4wMzllNzY5ZGNl
Nzc3Mzk2MDhmODNkNjEzODM5Y2E2MDYyY2E3ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtODk1LDcgKzg5NSwxMSBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgYXV0byBnZXRWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uRnJvbUZv
ckNvZGVCbG9ja0FuZEJ5dGVjb2RlT2Zmc2V0ID0gWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICAgICAgewotICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGNvZGVCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlv
bkZvckJ5dGVjb2RlSW5kZXgoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpOworICAgICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbjsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAg
ICAgICAgICAgICBwcmVkaWN0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9u
Rm9yQnl0ZWNvZGVJbmRleChsb2NrZXIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8qIGZ1enplckFnZW50ID0gbV92bS0+ZnV6emVy
QWdlbnQoKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShmdXp6ZXJBZ2VudCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZ1enplckFnZW50LT5nZXRQcmVkaWN0aW9uKGNvZGVCbG9jaywgY29k
ZU9yaWdpbiwgcHJlZGljdGlvbikgJiBTcGVjQnl0ZWNvZGVUb3A7CkBAIC05NzksOSArOTgzLDEw
IEBAIHByaXZhdGU6CiAKICAgICBBcnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5UHJvZmlsZSYg
cHJvZmlsZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCiAgICAgewotICAgICAgICBwcm9maWxlLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2sp
OwotICAgICAgICBib29sIG1ha2VTYWZlID0gcHJvZmlsZS5vdXRPZkJvdW5kcygpOwotICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQobV9ncmFwaCwgY3VycmVudENvZGVPcmln
aW4oKSwgJnByb2ZpbGUsIGFjdGlvbiwgbWFrZVNhZmUpOworICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsK
KyAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2spOworICAgICAgICBib29sIG1ha2VTYWZlID0gcHJv
ZmlsZS5vdXRPZkJvdW5kcyhsb2NrZXIpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlOjpmcm9t
T2JzZXJ2ZWQobG9ja2VyLCAmcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CiAgICAgfQogCiAg
ICAgTm9kZSogbWFrZVNhZmUoTm9kZSogbm9kZSkKQEAgLTIwNTMsOCArMjA1OCw5IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgT3BlcmFuZCByZXN1bHQsCiAgICAgICAgICAgICAvLyBhcmd1bWVudHMgcmVjZWl2ZWQgaW5z
aWRlIHRoZSBjYWxsZWUuIEJ1dCB0aGF0IHByb2JhYmx5IHdvbid0IG1hdHRlciBmb3IgbW9zdAog
ICAgICAgICAgICAgLy8gY2FsbHMuCiAgICAgICAgICAgICBpZiAoY29kZUJsb2NrICYmIGFyZ3Vt
ZW50IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkg
eworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2spOwogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSYgcHJvZmlsZSA9IGNvZGVCbG9j
ay0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJndW1lbnQpOwotICAgICAgICAgICAgICAgIHZh
cmlhYmxlLT5wcmVkaWN0KHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCkpOworICAg
ICAgICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKGxvY2tlcikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgobnVtU2V0QXJndW1lbnRzID49IG1hbmRh
dG9yeU1pbmltdW0gPyBTZXRBcmd1bWVudE1heWJlIDogU2V0QXJndW1lbnREZWZpbml0ZWx5LCBP
cEluZm8odmFyaWFibGUpKTsKQEAgLTYyOTksNyArNjMwNSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ29t
cGlsZUFzR2V0QnlJZCkKICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2RlLm1f
ZHN0LCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRC
eVN0YXR1cywgQWNjZXNzVHlwZTo6R2V0QnlJZCwgbmV4dE9wY29kZUluZGV4KCkpOwogICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFy
cmF5TW9kZSgqYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJy
YXk6OlJlYWQpOworICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJh
eU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6
OlJlYWQpOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBjb25zaWRlciBtYWtp
bmcgdGhpcyBub3QgdmFyYXJnLCBzaW5jZSBpdCBvbmx5IHVzZXMgdGhyZWUgY2hpbGQKICAgICAg
ICAgICAgICAgICAvLyBzbG90cy4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MTkyCkBAIC03MDY5LDkgKzcwNzUsMTEgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBzZWVuQXJndW1lbnRzOwogCiAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisKICAgICAgICAgICAgICAgICBi
dWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXImIHByb2Zp
bGUpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJvZmls
ZS5tX29wZXJhbmQpOwotICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uID0gcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgICAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKGxvY2tlcik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9j
YWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHBy
ZWRpY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTc0MjMsNyArNzQzMSw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICAgICAgQmFzaWNCbG9jayogaXNEb25lQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJs
ZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogZG9Mb2FkQmxvY2sgPSBhbGxv
Y2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CiAKLSAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJy
YXlNb2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6
OlJlYWQpOworICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1v
ZGUobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAg
ICAgICBhdXRvIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoQnl0ZWNv
ZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSwgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVl
KSk7CiAKICAgICAgICAgICAgICAgICB7CkBAIC04MzE4LDcgKzgzMjYsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoIWNvbXBpbGVkQXNJbkJ5SWQpIHsKLSAgICAgICAgICAgICAgICBBcnJh
eU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCpieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgQXJyYXlN
b2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
Lm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAgICAgICAgICAgICAgICAgc2V0KGJ5dGVj
b2RlLm1fZHN0LCBhZGRUb0dyYXBoKEluQnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkp
LCBiYXNlLCBwcm9wZXJ0eSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfaW5fYnlfdmFsKTsKQEAgLTg0MDIsNyArODQxMCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRv
cl9uZXh0OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEVudW1lcmF0b3JOZXh0PigpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5
TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFk
KTsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRh
dGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2Ug
PSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gZ2V0KGJ5
dGVjb2RlLm1faW5kZXgpOwogICAgICAgICAgICAgTm9kZSogZW51bWVyYXRvciA9IGdldChieXRl
Y29kZS5tX2VudW1lcmF0b3IpOwpAQCAtODQzNCw3ICs4NDQyLDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgY2FzZSBvcF9lbnVtZXJh
dG9yX2dldF9ieV92YWw6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckdldEJ5VmFsPigpOwogICAgICAgICAgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAgICAgQXJy
YXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUs
IEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJh
eU1vZGUobWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0
KCk7CiAKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKQEAg
LTg0OTgsNyArODUwNiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9pbl9ieV92YWw6IHsKICAgICAg
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRv
ckluQnlWYWw+KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFk
YXRhKGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJy
YXlNb2RlKCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAg
ICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZSwgQXJyYXk6OlJlYWQpOwogCiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0
ZWNvZGUubV9iYXNlKSk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0ZWNvZGUu
bV9wcm9wZXJ0eU5hbWUpKTsKQEAgLTg1MTMsNyArODUyMSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRv
cl9oYXNfb3duX3Byb3BlcnR5OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKTsKICAgICAgICAg
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAg
ICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2Rl
ID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAK
ICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChieXRlY29kZS5tX2Jhc2UpKTsKICAgICAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkpOwpAQCAt
ODg3Myw3ICs4ODgxLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0
ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICB9CiAKICAgICBp
ZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7Ci0gICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBn
ZXRBcnJheU1vZGUoKmJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVByb2ZpbGUs
IEFycmF5OjpXcml0ZSk7CisgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1v
ZGUoYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6Oldy
aXRlKTsKIAogICAgICAgICBhZGRWYXJBcmdDaGlsZChiYXNlKTsKICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQocHJvcGVydHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggNGJiMTcyZDQzNDkxZjYyY2VlMTExNTc1ZjlkNmEwNTk5Mjg4NGQxMi4uZDU1
ZGY5MjU4N2JiN2MzMmNiMDBlMDkyOTM4MTEzM2U1N2FhMzFlMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC00MDQ3LDggKzQwNDcsOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcHJvZmlsZWRCbG9jay0+Z2V0QXJyYXlQcm9maWxlKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpOwogICAgICAgICBBcnJheU1vZGUgYXJyYXlN
b2RlID0gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zLCBBcnJheTo6UmVh
ZCk7CiAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpIHsKLSAgICAgICAgICAgIGFycmF5UHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKHByb2ZpbGVkQmxvY2spOwotICAgICAgICAgICAg
YXJyYXlNb2RlID0gQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQobV9ncmFwaCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBhcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkLCBmYWxzZSk7CisgICAgICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7CisgICAg
ICAgICAgICBhcnJheVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIHBy
b2ZpbGVkQmxvY2spOworICAgICAgICAgICAgYXJyYXlNb2RlID0gQXJyYXlNb2RlOjpmcm9tT2Jz
ZXJ2ZWQobG9ja2VyLCBhcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkLCBmYWxzZSk7CiAgICAgICAg
ICAgICBpZiAoYXJyYXlNb2RlLnR5cGUoKSA9PSBBcnJheTo6VW5wcm9maWxlZCkgewogICAgICAg
ICAgICAgICAgIC8vIEZvciBub3JtYWwgYXJyYXkgb3BlcmF0aW9ucywgaXQgbWFrZXMgc2Vuc2Ug
dG8gdHJlYXQgVW5wcm9maWxlZAogICAgICAgICAgICAgICAgIC8vIGFjY2Vzc2VzIGFzIEZvcmNl
RXhpdCBhbmQgZ2V0IG1vcmUgZGF0YSByYXRoZXIgdGhhbiB1c2luZwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCmluZGV4IDg0ODc5MWU5OGQxZmNjMDdhYzM1OTZiNDNkNjM1NTJkYTQy
M2ViNTQuLjFiZWM4ZGVlZDlkYmRiYTUwN2Q5YTNmYjFiMDM5ZTI2ZWUxYWRkNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTUyMCwxMiArNTIwLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
ZXhpdEtpbmQpOwogICAgIH0KLQotICAgIGJvb2wgaGFzQW55RXhpdHNBdChjb25zdCBDb2RlT3Jp
Z2luJiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKGNvZGVPcmlnaW4pLT51bmxpbmtlZENvZGVCbG9jaygpLT5oYXNBbnlFeGl0c0F0KGNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKLSAgICB9Ci0KKyAgICAKICAgICBNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlIG1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9kZSogY3Vy
cmVudE5vZGUsIE5vZGUqIG9wZXJhbmROb2RlKTsKICAgICAKICAgICBCbG9ja0luZGV4IG51bUJs
b2NrcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tzLnNpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4
IDBjMmM1N2Q5YTEzNzcxNWY3NDdiMzdlMGRiMmE4NGI4MjcxZjQxMzguLjI4OTczNzhiZjk4NThi
MWM0Y2ZhNmEzMTEwMjhjYmEwY2JlZGRmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKQEAgLTMzNywyOSArMzM3
LDI2IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBvc3JXcml0ZUJh
cnJpZXIoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEdQ
UlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gpCitzdGF0aWMgdm9pZCBvc3JXcml0ZUJhcnJpZXIo
Vk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaCkK
IHsKLSAgICBhdXRvIGVtaXRCYXJyaWVyID0gWyZdIChhdXRvKiBjZWxsKSB7Ci0gICAgICAgIGpp
dC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihjZWxsKSwgb3duZXIpOwotICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGpp
dC5iYXJyaWVyQnJhbmNoV2l0aG91dEZlbmNlKG93bmVyKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6
Okp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoV2l0aG91
dEZlbmNlKG93bmVyKTsKIAotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uT1NSV3JpdGVCYXJyaWVyKT4oJnZtLCBvd25lcik7Ci0gICAgICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk9TUldyaXRl
QmFycmllcikpLCBzY3JhdGNoKTsKLSAgICAgICAgaml0LmNhbGwoc2NyYXRjaCwgT3BlcmF0aW9u
UHRyVGFnKTsKLQotICAgICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7
Ci0gICAgfTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uT1NSV3Jp
dGVCYXJyaWVyKT4oJnZtLCBvd25lcik7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZt
KTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rp
b248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpKSwgc2NyYXRjaCk7
CisgICAgaml0LmNhbGwoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGVtaXRCYXJy
aWVyKGNvZGVCbG9jayk7Ci0gICAgZW1pdEJhcnJpZXIoY29kZUJsb2NrLT51bmxpbmtlZENvZGVC
bG9jaygpKTsKKyAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7CiB9CiAK
IHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IE9TUkV4aXRCYXNlJiBleGl0KQogewogICAgIGppdC5tZW1vcnlGZW5jZSgpOwogICAgIAot
ICAgIG9zcldyaXRlQmFycmllcih2bSwgaml0LCBqaXQuY29kZUJsb2NrKCktPmJhc2VsaW5lQWx0
ZXJuYXRpdmUoKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsK
KyAgICBqaXQubW92ZSgKKyAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKAor
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5iYXNlbGluZUFsdGVybmF0aXZlKCkpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOworICAgIG9zcldyaXRlQmFycmllcih2bSwgaml0LCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEsIEdQUkluZm86Om5vbkFyZ0dQUjApOwogCiAgICAgLy8gV2UgYmFycmll
ciBhbGwgaW5saW5lZCBmcmFtZXMgLS0gYW5kIG5vdCBqdXN0IHRoZSBjdXJyZW50IGlubGluZSBz
dGFjayAtLQogICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGljaCBpbmxpbmVkIGZ1bmN0
aW9uIG93bnMgdGhlIHZhbHVlIHByb2ZpbGUgdGhhdApAQCAtMzcwLDggKzM2NywxMiBAQCB2b2lk
IGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBP
U1JFeGl0QmFzZSYgZXhpdCkKICAgICAvLyB0aGUgdmFsdWUgcHJvZmlsZS4KICAgICBJbmxpbmVD
YWxsRnJhbWVTZXQqIGlubGluZUNhbGxGcmFtZXMgPSBqaXQuY29kZUJsb2NrKCktPmppdENvZGUo
KS0+ZGZnQ29tbW9uKCktPmlubGluZUNhbGxGcmFtZXMuZ2V0KCk7CiAgICAgaWYgKGlubGluZUNh
bGxGcmFtZXMpIHsKLSAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSA6ICppbmxpbmVDYWxsRnJhbWVzKQotICAgICAgICAgICAgb3NyV3JpdGVCYXJyaWVyKHZtLCBq
aXQsIGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGZvciAoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgOiAqaW5saW5lQ2FsbEZyYW1lcykgeworICAgICAgICAg
ICAgaml0Lm1vdmUoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKAorICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJs
b2NrLmdldCgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgICAgIG9zcldyaXRl
QmFycmllcih2bSwgaml0LCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86Om5vbkFyZ0dQ
UjApOworICAgICAgICB9CiAgICAgfQogCiAgICAgYXV0byogZXhpdElubGluZUNhbGxGcmFtZSA9
IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCmlu
ZGV4IDhkMDVjMTg2MDY5ZWRhMGE4OGM2ZGU2NzZmZDI5MjdiMTk3OTFiYjguLjk4NjYyZmE1OWJh
OTBkMmE5Mjc1MTcyZmQ3NDhiNmYzZjc4MDQ5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKQEAgLTQ4
LDEzICs0OCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoY29kZUJsb2Nr
KCktPm51bVBhcmFtZXRlcnMoKSA+PSAxKTsKICAgICAgICAgeworICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CisgICAgICAgICAg
ICAKICAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0
aGUgZmlyc3QgYmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQogICAgICAgICAgICAgLy8gb3RoZXIg
ZW50cnlwb2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGlj
dGlvbnMuCiAgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fcm9vdFRvQXJn
dW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogCiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5u
dW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSYg
cHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsK
LSAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnBy
ZWRpY3QocHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICAg
ICAgYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAorICAgICAg
ICAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAppbmRleCA4ZmQ5YjgzNGIwNWQ4YmJm
YjY5MTliNGU4N2YxY2UyNTA1OWY4YTFhLi41NzU0NTA4MmEyMGJkMzlmOTM1ZGQyMzQxYmNmN2Vl
MTc4N2MyNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxv
Y2tTZXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2Nr
U2V0SW5saW5lcy5oCkBAIC02Miw5ICs2MiwxMiBAQCB2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0
ZShjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVWaWFTdWJzcGFj
ZXMoVk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIHZtLmNvZGVCbG9ja1Nw
YWNlLnNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKLSAgICAgICAgWyZdIChIZWFwQ2VsbCogY2VsbCwg
SGVhcENlbGw6OktpbmQpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoanNDYXN0PENvZGVCbG9jayo+
KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpKSk7CisgICAgdm0uZm9yRWFjaENvZGVCbG9ja1Nw
YWNlKAorICAgICAgICBbJl0gKGF1dG8mIHNwYWNlQW5kU2V0KSB7CisgICAgICAgICAgICBzcGFj
ZUFuZFNldC5zcGFjZS5mb3JFYWNoTGl2ZUNlbGwoCisgICAgICAgICAgICAgICAgWyZdIChIZWFw
Q2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rv
cihqc0Nhc3Q8Q29kZUJsb2NrKj4oc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCkpKTsKKyAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKaW5kZXggY2M5YTk2ODdmMjZkOGQ3MWI4OGUzMzA1NDlmMDM2ZGM3MTBkODhlNS4uYTA3
YjM3MjQ2YWMyYmUwMWFhMjQxNTFmYmFhMzVmZGE5MmYzZmJiZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKQEAgLTU4MywxMCArNTgzLDEwIEBAIHZvaWQgSGVhcDo6YWRkUmVmZXJl
bmNlKEpTQ2VsbCogY2VsbCwgQXJyYXlCdWZmZXIqIGJ1ZmZlcikKICAgICB9CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCB0eXBlbmFtZSBDZWxsU2V0T3JJc29TdWJzcGFjZT4KLXZv
aWQgSGVhcDo6ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVycyhDZWxsU2V0T3JJ
c29TdWJzcGFjZSYgc2V0T3JTdWJzcGFjZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCB0
eXBlbmFtZSBDZWxsU2V0Pgordm9pZCBIZWFwOjpmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzKENlbGxTZXQmIGNlbGxTZXQpCiB7Ci0gICAgc2V0T3JTdWJzcGFjZS5mb3JFYWNo
TWFya2VkQ2VsbCgKKyAgICBjZWxsU2V0LmZvckVhY2hNYXJrZWRDZWxsKAogICAgICAgICBbJl0g
KEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewogICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8Q2VsbFR5cGUqPihjZWxsKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkodm0oKSk7CiAgICAg
ICAgIH0pOwpAQCAtNTk4LDEyICs1OTgsMTAgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxGaW5hbGl6ZXJzKCkKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0oKS5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFj
ZSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTeW1ib2xUYWJs
ZT4odm0oKS5zeW1ib2xUYWJsZVNwYWNlKTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtKCkuZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk7IC8vIFdlIHJ1biB0aGlzIGJlZm9yZSBDb2Rl
QmxvY2sncyB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5jZSBDb2RlQmxvY2sgbG9va3MgYXQg
dGhlIG93bmVyIGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29kZUJsb2NrIGluIGl0cyBmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseS4KLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPENvZGVCbG9jaz4odm0oKS5jb2RlQmxvY2tTcGFjZS5zZXQpOwotICAgIHZtKCkuZm9yRWFj
aFVubGlua2VkQ29kZUJsb2NrU3BhY2UoWyZdIChWTTo6U3BhY2VBbmRTZXQqIHNwYWNlQW5kU2V0
KSB7Ci0gICAgICAgIGlmICghc3BhY2VBbmRTZXQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRDb2RlQmxv
Y2s+KHNwYWNlQW5kU2V0LT5zZXQpOwotICAgIH0pOworICAgIHZtKCkuZm9yRWFjaENvZGVCbG9j
a1NwYWNlKAorICAgICAgICBbJl0gKGF1dG8mIHNwYWNlKSB7CisgICAgICAgICAgICB0aGlzLT5m
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENvZGVCbG9jaz4oc3BhY2Uuc2V0
KTsKKyAgICAgICAgfSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVy
czxTdHJ1Y3R1cmVSYXJlRGF0YT4odm0oKS5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKICAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlPih2bSgpLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0KTsKICAgICBp
ZiAodm0oKS5tX3dlYWtTZXRTcGFjZSkKQEAgLTk3NSw3ICs5NzMsNyBAQCB2b2lkIEhlYXA6OmRl
bGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCkKICAgICB2bSgpLmZvckVhY2hTY3JpcHRFeGVjdXRh
YmxlU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwKCk7IH0pOwogICAg
IC8vIFN3ZWVwaW5nIG11c3Qgb2NjdXIgYmVmb3JlIGRlbGV0aW5nIHN0dWJzLCBvdGhlcndpc2Ug
dGhlIHN0dWJzIG1pZ2h0IHN0aWxsIHRoaW5rIHRoZXkncmUgYWxpdmUgYXMgdGhleSBnZXQgZGVs
ZXRlZC4KICAgICAvLyBBbmQgQ29kZUJsb2NrIGRlc3RydWN0b3IgaXMgYXNzdW1pbmcgdGhhdCBD
b2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQgYmVmb3JlIFVubGlua2VkQ29kZUJsb2NrIGdldHMgZGVz
dHJveWVkLgotICAgIHZtKCkuY29kZUJsb2NrU3BhY2Uuc3BhY2Uuc3dlZXAoKTsKKyAgICB2bSgp
LmZvckVhY2hDb2RlQmxvY2tTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dl
ZXAoKTsgfSk7CiAgICAgbV9qaXRTdHViUm91dGluZXMtPmRlbGV0ZVVubWFya2VkSmV0dGlzb25l
ZFN0dWJSb3V0aW5lcygpOwogfQogCkBAIC0xNDg4LDcgKzE0ODYsNiBAQCBORVZFUl9JTkxJTkUg
Ym9vbCBIZWFwOjpydW5FbmRQaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogICAgIGl0ZXJhdGVFeGVj
dXRpbmdBbmRDb21waWxpbmdDb2RlQmxvY2tzKHZpc2l0b3IsCiAgICAgICAgIFsmXSAoQ29kZUJs
b2NrKiBjb2RlQmxvY2spIHsKICAgICAgICAgICAgIHdyaXRlQmFycmllcihjb2RlQmxvY2spOwot
ICAgICAgICAgICAgd3JpdGVCYXJyaWVyKGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKSk7
CiAgICAgICAgIH0pOwogCiAgICAgdXBkYXRlT2JqZWN0Q291bnRzKCk7CkBAIC0xNTI2LDcgKzE1
MjMsNiBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5FbmRQaGFzZShHQ0NvbmR1Y3RvciBj
b25uKQogICAgIG1fY29kZUJsb2Nrcy0+aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZygKICAgICAg
ICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaykgewogICAgICAgICAgICAgd3JpdGVCYXJyaWVy
KGNvZGVCbG9jayk7Ci0gICAgICAgICAgICB3cml0ZUJhcnJpZXIoY29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpKTsKICAgICAgICAgfSk7CiAgICAgbV9jb2RlQmxvY2tzLT5jbGVhckN1cnJl
bnRseUV4ZWN1dGluZygpOwogICAgICAgICAKQEAgLTI4OTAsMTQgKzI4ODYsMTAgQEAgdm9pZCBI
ZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICAgICAgU2V0Um9vdE1hcmtSZWFzb25T
Y29wZSByb290U2NvcGUodmlzaXRvciwgUm9vdE1hcmtSZWFzb246OkNvZGVCbG9ja3MpOwogICAg
ICAgICAgICAgaXRlcmF0ZUV4ZWN1dGluZ0FuZENvbXBpbGluZ0NvZGVCbG9ja3NXaXRob3V0SG9s
ZGluZ0xvY2tzKHZpc2l0b3IsCiAgICAgICAgICAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVC
bG9jaykgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGhhbmRsZSA9IFsmXSAoYXV0byogY2Vs
bCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQoY2VsbCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBjZWxsLT5jZWxsU3RhdGUoKSA9PSBDZWxs
U3RhdGU6OlBvc3NpYmx5QmxhY2spCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRv
ci52aXNpdEFzQ29uc3RyYWludChjZWxsKTsKLSAgICAgICAgICAgICAgICAgICAgfTsKICAgICAg
ICAgICAgICAgICAgICAgLy8gVmlzaXQgdGhlIENvZGVCbG9jayBhcyBhIGNvbnN0cmFpbnQgb25s
eSBpZiBpdCdzIGJsYWNrLgotICAgICAgICAgICAgICAgICAgICBoYW5kbGUoY29kZUJsb2NrKTsK
LSAgICAgICAgICAgICAgICAgICAgaGFuZGxlKGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2so
KSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykK
KyAgICAgICAgICAgICAgICAgICAgICAgICYmIGNvZGVCbG9jay0+Y2VsbFN0YXRlKCkgPT0gQ2Vs
bFN0YXRlOjpQb3NzaWJseUJsYWNrKQorICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci52
aXNpdEFzQ29uc3RyYWludChjb2RlQmxvY2spOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9KSksCiAgICAgICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5OjpTZWxkb21HcmV5ZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggNmIxMTIxYzYyNzA5Yzg5NWY3YmI3OTMyN2FkNWJmZTQ0
NGM1YjM2MC4uMjNhOWY1ODRiNGU4NDM0MzhkMTFmNzdhMmYyMGJlODE4NWFkY2EzOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC0zMDIsNyArMzAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZSguLi4p
OwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVBy
b2ZpbGUqPjo6dmFsdWUsIHZvaWQ+CisgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19z
YW1lPGRlY2x0eXBlKE9wOjpNZXRhZGF0YTo6bV9wcm9maWxlKSwgVmFsdWVQcm9maWxlPjo6dmFs
dWUsIHZvaWQ+CiAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGVJZlByb2ZpbGVkT3Bjb2Rl
KE9wIGJ5dGVjb2RlKTsKIAogICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRo
Q2VsbChSZWdpc3RlcklEIGNlbGxHUFIsIEFycmF5UHJvZmlsZSosIFJlZ2lzdGVySUQgc2NyYXRj
aEdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDU4MmQ4ZDU0
M2I0MzAwZjM4MmYwZWJiNjFiNjU0OGFmYzY1Zjg0YTcuLmFjMDlmOGZjZjc1YjM1YmFjMmVkYmE2
NzA3ZGYyNTg3NjdiNmU2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CkBAIC0zMTIsNyArMzEyLDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdT
aXRlKFZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxlLCBKU1ZhbHVlUmVncwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KLWlubGluZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNs
dHlwZShPcDo6TWV0YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9p
ZD4gSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBieXRlY29k
ZSkKK2lubGluZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0
YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZT46OnZhbHVlLCB2b2lkPiBKSVQ6OmVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGVJZlByb2ZpbGVkT3Bjb2RlKE9wIGJ5dGVjb2RlKQogewogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayksIHJlZ1QwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCmluZGV4IGNjZmI5NGQ0ZDAyZjMzOTYzZjRkZDVjZDkyMzU1NTAyNmEzNmE3ZDcuLjcw
ODJjYjIwMjg4ZmI3OGYxNWZmNWFmNjMyMTQxODdkMDAyNGRkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTE5NCw3ICsxMTk0LDYgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKQogICAgICAgICBlbWl0SW5pdFJlZ2lz
dGVyKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGopKTsKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIo
bV9jb2RlQmxvY2spOwotICAgIGVtaXRXcml0ZUJhcnJpZXIobV9jb2RlQmxvY2stPnVubGlua2Vk
Q29kZUJsb2NrKCkpOwogCiAgICAgZW1pdEVudGVyT3B0aW1pemF0aW9uQ2hlY2soKTsKICNlbHNl
CkBAIC0xMjQ2LDI5ICsxMjQ1LDE3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICAgICBpbml0RG9u
ZS5saW5rKCZqaXQpOwogCiAgICAgLy8gZW1pdFdyaXRlQmFycmllcihtX2NvZGVCbG9jaykuCi0g
ICAgLy8gZW1pdFdyaXRlQmFycmllcihtX2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKSku
CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBh
cmd1bWVudEdQUjEpOworICAgIEp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5i
YXJyaWVyQnJhbmNoKHZtLCBhcmd1bWVudEdQUjEsIGFyZ3VtZW50R1BSMik7CisKICAgICBqaXQu
bW92ZShjYW5CZU9wdGltaXplZEdQUiwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOyAvLyBz
YXZlLgotICAgIENhbGwgb3BlcmF0aW9uV3JpdGVCYXJyaWVyQ2FsbDE7Ci0gICAgQ2FsbCBvcGVy
YXRpb25Xcml0ZUJhcnJpZXJDYWxsMjsKLSAgICB7Ci0gICAgICAgIEp1bXAgb3duZXJJc1JlbWVt
YmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoKHZtLCBhcmd1bWVudEdQUjEsIGFyZ3Vt
ZW50R1BSMik7Ci0gICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25X
cml0ZUJhcnJpZXJTbG93UGF0aCk+KCZ2bSwgYXJndW1lbnRHUFIxKTsKLSAgICAgICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICAgICAgb3BlcmF0aW9uV3JpdGVCYXJyaWVyQ2Fs
bDEgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAgICBqaXQubG9hZFB0cihhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGFyZ3VtZW50R1BSMSk7Ci0gICAgICAg
IG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4ubGluaygmaml0KTsKLSAgICB9Ci0gICAgewotICAg
ICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGFyZ3VtZW50R1BSMSwgQ29kZUJsb2NrOjpvZmZzZXRP
ZlVubGlua2VkQ29kZUJsb2NrKCkpLCBhcmd1bWVudEdQUjEpOwotICAgICAgICBKdW1wIG93bmVy
SXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJyYW5jaCh2bSwgYXJndW1lbnRHUFIx
LCBhcmd1bWVudEdQUjIpOwotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpPigmdm0sIGFyZ3VtZW50R1BSMSk7Ci0gICAgICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgICAgIG9wZXJhdGlvbldyaXRlQmFy
cmllckNhbGwyID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICAgICAgb3duZXJJc1Jl
bWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOwotICAgIH0KKyAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpPigmdm0sIGFyZ3VtZW50
R1BSMSk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBDYWxsIG9wZXJh
dGlvbldyaXRlQmFycmllckNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworCiAgICAg
aml0Lm1vdmUoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIGNhbkJlT3B0aW1pemVkR1BSKTsg
Ly8gcmVzdG9yZS4KICAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFn
KSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIG93bmVySXNSZW1lbWJlcmVkT3JJ
bkVkZW4ubGluaygmaml0KTsKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIENhbGwgb3BlcmF0
aW9uT3B0aW1pemVDYWxsOwpAQCAtMTMwMiw4ICsxMjg5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZt
KQogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHBh
dGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uV3JpdGVCYXJyaWVyQ2FsbDEsIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpKTsKLSAgICBwYXRj
aEJ1ZmZlci5saW5rKG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwyLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKSk7CisgICAgcGF0Y2hC
dWZmZXIubGluayhvcGVyYXRpb25Xcml0ZUJhcnJpZXJDYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKSk7CiAjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgaWYgKE9wdGlvbnM6OnVzZURGR0pJVCgpKQogICAgICAgICBwYXRjaEJ1ZmZl
ci5saW5rKG9wZXJhdGlvbk9wdGltaXplQ2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihvcGVyYXRpb25PcHRpbWl6ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggOWI1MDcyNDE0ZmJlMGQ5ZmE3ZDE0MGEzYmQxODk1YWUzZGVjNGMy
MS4uMjAzMmRiOTdhYWE4NWEzOTI4MTc0YWE4ZjJkZWRmZGIxZmVjZjJjMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMDI4LDggKzEwMjgsMTAg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG8KICAgICAgICAgaWYgKCFpc0NvcHlPbldyaXRlKGJh
c2VPYmplY3QtPmluZGV4aW5nTW9kZSgpKSAmJiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7
CiAgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNv
ZGVCbG9jaywgc3RydWN0dXJlKSkgewotICAgICAgICAgICAgICAgIGlmIChwcm9maWxlKQotICAg
ICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJs
b2NrLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIGlmIChwcm9maWxlKSB7CisgICAgICAg
ICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2sp
OworICAgICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
bG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlVmFsdWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpOb3REaXJlY3QsIGVjbWFN
b2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTA5Niw4ICsxMDk4LDEwIEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgaWYgKCFpc0NvcHlPbldyaXRlKGJhc2VPYmplY3Qt
PmluZGV4aW5nTW9kZSgpKSAmJiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVy
ZSkpIHsKLSAgICAgICAgICAgIGlmIChwcm9maWxlKQotICAgICAgICAgICAgICAgIHByb2ZpbGUt
PmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIHN0cnVjdHVyZSk7CisgICAgICAg
ICAgICBpZiAocHJvZmlsZSkgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpEaXJl
Y3QsIGVjbWFNb2RlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI0MDgsOCArMjQxMiwxMCBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbE9iagogICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vi
c2NyaXB0LmlzSW50MzIoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VW
YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25z
aWRlckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAg
ICAgIGlmIChwcm9maWxlKQotICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihjb2RlQmxvY2ssIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBpZiAocHJvZmls
ZSkgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2Nr
LT5tX2xvY2spOworICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJlcGF0Y2hBcnJheUdldEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNl
VmFsdWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggZmMyMjVj
Nzk5MTljZWIzOGM3NTdiNzQ0YWRlYmY1NzUxYTI2YzkwNy4uYWY3NGE3NDVhY2EzNzZjMmFjNjc1
ZjI2MjMxZDQ0ZThhNWQ1NzgzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBi
eXRlY29kZS5tX3Byb3BlcnR5OwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5t
X2FycmF5UHJvZmlsZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDAp
OwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTkzLDcg
KzkzLDcgQEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVU
eXBlJiBieXRlY29kZSwgVmVjdG9yPFNsb3dDYXNlRW4KICAgICBpZiAoaGFzQW55U2xvd0Nhc2Vz
KGl0ZXIpKSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsK
ICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7
Ci0gICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxl
OworICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CiAKICAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtNDM5LDcgKzQzOSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5Owog
ICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgQXJyYXlQ
cm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9m
aWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihw
cm9wZXJ0eSwgcmVnVDEpOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTCiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKICAgICAgICAgZWNtYU1vZGUg
PSBieXRlY29kZS5tX2VjbWFNb2RlOwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICAgICAgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlOworICAgICAgICBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwog
ICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC0xMTA4LDggKzExMDgsMTEgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJl
Zyk7CiAgICAgCi0gICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgg
JiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQotICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRl
V2l0aENlbGwocmVnVDAsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCByZWdUMSk7CisgICAgaWYg
KCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2Zp
bGluZygpKSB7CisgICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RF
cXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSwgVHJ1
c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkp
KTsKKyAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCAmbWV0YWRh
dGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgcmVnVDEpOwor
ICAgICAgICBub3RBcnJheUxlbmd0aE1vZGUubGluayh0aGlzKTsKKyAgICB9CiAKICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCkBAIC0xNTA4LDcgKzE1
MTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwot
ICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAg
IEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTE1MzUsNyArMTUzOCw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJbkJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2Rz
dDsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsK
LSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAg
ICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAg
ICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4Kytd
OwogCkBAIC0yMzkwLDggKzIzOTMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6Z2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rKFJlc29sdmVUeQogICAgIH0K
IAogICAgIHN0YXRpY19hc3NlcnQoVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgPT0gMSk7
Ci0gICAgbG9hZFB0cihBZGRyZXNzKG1ldGFkYXRhR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoTWV0YWRh
dGEsIG1fcHJvZmlsZSkpLCByZWdUMSk7Ci0gICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhyZWdU
MSwgVmFsdWVQcm9maWxlOjpvZmZzZXRPZkZpcnN0QnVja2V0KCkpKTsKKyAgICBzdG9yZTY0KHJl
Z1QwLCBBZGRyZXNzKG1ldGFkYXRhR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoTWV0YWRhdGEsIG1fcHJv
ZmlsZSkpKTsKIAogICAgIHJldCgpOwogCkBAIC0yNDQ3LDggKzI0NDksNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfZnJvbV9zY29wZUdl
bmVyYXRvcihWTSYgdgogICAgIENhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRy
VGFnKTsKICAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNl
cHRpb25DaGVjayh2bSk7CiAKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCBPQkpFQ1RfT0ZGU0VUT0YoTWV0YWRhdGEsIG1fcHJvZmlsZSkpLCBHUFJJ
bmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7Ci0gICAgaml0LnN0b3JlNjQocmVnVDAsIEFkZHJlc3Mo
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1
Y2tldCgpKSk7CisgICAgaml0LnN0b3JlNjQocmVnVDAsIEFkZHJlc3MoR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9maWxlKSkpOwogICAg
IGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3Rlcik7CiAKICNpZiBDUFUoWDg2XzY0KQpAQCAtMjg4Nyw3ICsyODg4LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGluZGV4ID0gYnl0ZWNv
ZGUubV9pbmRleDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlOYW1lID0gYnl0ZWNvZGUu
bV9wcm9wZXJ0eU5hbWU7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGVudW1lcmF0b3IgPSBieXRlY29k
ZS5tX2VudW1lcmF0b3I7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9h
cnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlOwogCiAgICAgSnVtcExpc3QgZG9uZUNhc2VzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA5Zjg1
N2ZhOWI5MDg2MzJmODIzYTUxY2UxZGMxM2MwMjJkNjFhMmRmLi5jYjU3M2ZkNjU0OWZjZjhmMTMy
YTAwMjNmNjQxZDQwNjg2ZTJhMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9m
aWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxl
ID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1Qx
LCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0
ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spOwotICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBn
ZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwogICAgICAgICArK21fZ2V0QnlWYWxJ
bmRleDsKQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVy
IGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0g
Ynl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29k
ZS5tX3ZhbHVlOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdU
MywgcmVnVDIpOwogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUNSwgcmVnVDQpOwpAQCAtNTA1LDcg
KzUwNSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIHZhbHVlID0gYnl0ZWNv
ZGUubV92YWx1ZTsKICAgICAgICAgZWNtYU1vZGUgPSBKSVQ6OmVjbWFNb2RlKGJ5dGVjb2RlKTsK
ICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7
Ci0gICAgICAgIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgcHJv
ZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKICAgICB9OwogCiAgICAgaWYgKGlzRGly
ZWN0KQpAQCAtNjIyLDggKzYyMiwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9hZChiYXNlLCBy
ZWdUMSwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdU
MSk7CiAKLSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBz
aG91bGRFbWl0UHJvZmlsaW5nKCkpCi0gICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRo
Q2VsbChyZWdUMCwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIHJlZ1QyKTsKKyAgICBpZiAoKmlk
ZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKKyAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFs
LCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpLCBUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwor
ICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsICZtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCByZWdUMik7CisgICAg
ICAgIG5vdEFycmF5TGVuZ3RoTW9kZS5saW5rKHRoaXMpOworICAgIH0KIAogICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogICAgIEpJVEdldEJ5
SWRHZW5lcmF0b3IgZ2VuKApAQCAtNzk0LDcgKzc5Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lu
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1
YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBw
cm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0g
bWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdU
MCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKGJhc2UsIHJlZ1QxKTsKQEAgLTgxNyw3ICs4MjAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZh
bD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgYXV0
byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgQXJyYXlQ
cm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9m
aWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgSklUSW5CeVZh
bEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggZjk3NGQ2
YWJiOGUxZDcxODgzYzk4ZTdkMWVlYWE5Y2M3OWU5Mjc2OS4uNmQ0MDgyNWFjODE2NzY1YjkzZGNi
N2NhZWY2MTBlNDZmZGRiOGZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgaW5saW5lIEpTVmFsdWUgZ2V0
T3BlcmFuZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsg
cmV0dXIKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9QUk9GSUxFX1ZBTFVF
KHZhbHVlKSBkbyB7IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3By
b2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKKyAgICAgICAg
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNW
YWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExM
SU5UX0NBTExfRU5EX0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFyZ2V0VGFnKSBc
CkBAIC03NjEsNyArNzYxLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2Fj
aGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDb2QKICAgICB2bS5oZWFw
LndyaXRlQmFycmllcihjb2RlQmxvY2spOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJ
bnRHZXRCeUlEKGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEsIEFycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlKQorc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25z
dCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTgyNCw5ICs4MjQsOCBAQCBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJbnRHZXRCeUlE
KGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgfSBlbHNl
IGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmIGlzSlNBcnJheShiYXNlVmFsdWUpICYm
IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICB7CiAgICAgICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5UHJvZmlsZSk7CiAgICAgICAgICAgICBtZXRhZGF0
YS5zZXRBcnJheUxlbmd0aE1vZGUoKTsKLSAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2
ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOworICAgICAgICAg
ICAgbWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJl
KGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CiAgICAgICAgIH0KICAgICAgICAg
dm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKICAgICB9CkBAIC04NDIsNyArODQxLDcg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3Bl
cnR5KTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX2Jhc2UpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlE
KHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBpZGVudCwgbWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBi
YXNlVmFsdWUsIGlkZW50LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CiAgICAgTExJTlRfUkVU
VVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKQEAgLTg1OCwxMCArODU3LDEwIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQogICAgIGlmICgh
aXRlcmF0b3IuaXNPYmplY3QoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVj
dC4iX3MpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywg
Y29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yLCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0
LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwgbnVsbHB0cik7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0
b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKICAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBuZXh0UmVnaXN0ZXIgPSByZXN1bHQ7Ci0g
ICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX25leHRQcm9maWxlLT5tX2J1Y2tldHNb
MF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2Rl
QmxvY2spLm1fbmV4dFByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKQEAgLTg3OCwxMCArODc3LDEwIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQogICAgIGlmICgh
aXRlcmF0b3JSZXR1cm4uaXNPYmplY3QoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFu
IG9iamVjdC4iX3MpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJ
RChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0
eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEsIG51bGxwdHIpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9i
YWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0
YS5tX2RvbmVNb2RlTWV0YWRhdGEpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAg
IGRvbmVSZWdpc3RlciA9IHJlc3VsdDsKLSAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
Lm1fZG9uZVByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
ICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS5tX2J1Y2tldHNb
MF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIApAQCAt
ODk1LDEwICs4OTQsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9y
X25leHRfZ2V0X3ZhbHVlKQogICAgIFJlZ2lzdGVyJiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1
cm4gPSB2YWx1ZVJlZ2lzdGVyLmpzVmFsdWUoKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVy
Zm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0
dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0
YSwgbnVsbHB0cik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBj
LCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFt
ZXMtPnZhbHVlLCBtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKICAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKICAgICB2YWx1ZVJlZ2lzdGVyID0gcmVzdWx0OwotICAgIGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jaykubV92YWx1ZVByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOworICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV92
YWx1ZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAg
TExJTlRfRU5EKCk7CiB9CiAKQEAgLTEwMjUsNyArMTAyNCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUgZ2V0QnlWYWwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlCiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0
LnRyeUdldEFzVWludDMySW5kZXgoKSkgewogICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4Owog
ICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0g
ICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gJm1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlOwogCiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKICAgICAg
ICAgICAgIGlmIChhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkgewpAQCAtMTQz
MCw3ICsxNDI5LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCkK
ICAgICBMTElOVF9CRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbkJ5VmFs
PigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsK
LSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGds
b2JhbE9iamVjdCwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KSwgbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGUpKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9w
SW5CeVZhbChnbG9iYWxPYmplY3QsIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jh
c2UpLCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSksICZtZXRhZGF0
YS5tX2FycmF5UHJvZmlsZSkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2hhc19wcml2YXRlX25hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYzZiOThjNjM3OTEwOGJhOTM1NzQxMDJkODYy
ZmQ1ZDkwNjEwMmE0ZC4uMjk5MzZkYTlhMWRlZWFjODk3Nzk3ZWU2MWMzZGQ5ZGJlYzIzYTgwYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQpAQCAtNDEzLDExICs0MTMsNiBAQCBtYWNybyBtZXRhZGF0YShzaXplLCBvcGNvZGUs
IGRzdCwgc2NyYXRjaCkKICAgICBtdWxpIHNpemVvZiAlb3Bjb2RlJTo6TWV0YWRhdGEsIHNjcmF0
Y2ggIyBzY3JhdGNoICo9IHNpemVvZihPcDo6TWV0YWRhdGEpCiAgICAgYWRkaSBzY3JhdGNoLCBk
c3QgIyBvZmZzZXQgKz0gc2NyYXRjaAogICAgIGFkZHAgbWV0YWRhdGFUYWJsZSwgZHN0ICMgcmV0
dXJuICZtZXRhZGF0YVRhYmxlW29mZnNldF0KLSAgICAjIHJvdW5kVXBUb011bHRpcGxlT2YoYWxp
Z25vZihNZXRhZGF0YSksIGRzdCkKLSAgICBjb25zdCBhZGRlciA9IChjb25zdGV4cHIgKGFsaWdu
b2YoJW9wY29kZSU6Ok1ldGFkYXRhKSkpIC0gMQotICAgIGNvbnN0IG1hc2sgPSB+YWRkZXIKLSAg
ICBhZGRwIGFkZGVyLCBkc3QKLSAgICBhbmRwIG1hc2ssIGRzdAogZW5kCiAKIG1hY3JvIGp1bXBJ
bXBsKGRpc3BhdGNoSW5kaXJlY3QsIHRhcmdldE9mZnNldFJlZykKQEAgLTEyOTIsMTIgKzEyODcs
MTEgQEAgbWFjcm8gZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wTmFtZSwgc2l6ZSkK
ICAgICBsb2FkaSBMTEludFJldHVyblBDW2Nmcl0sIFBDCiBlbmQKIAotbWFjcm8gYXJyYXlQcm9m
aWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gxLCBzY3Jh
dGNoMikKK21hY3JvIGFycmF5UHJvZmlsZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1l
dGFkYXRhLCBzY3JhdGNoKQogICAgIGNvbnN0IGNlbGwgPSBjZWxsQW5kSW5kZXhpbmdUeXBlCiAg
ICAgY29uc3QgaW5kZXhpbmdUeXBlID0gY2VsbEFuZEluZGV4aW5nVHlwZSAKLSAgICBsb2FkcCBv
ZmZzZXRbbWV0YWRhdGFdLCBzY3JhdGNoMgotICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFtjZWxsXSwgc2NyYXRjaDEKLSAgICBzdG9yZWkgc2NyYXRjaDEsIEFycmF5UHJvZmlsZTo6bV9s
YXN0U2VlblN0cnVjdHVyZUlEW3NjcmF0Y2gyXQorICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFtjZWxsXSwgc2NyYXRjaAorICAgIHN0b3JlaSBzY3JhdGNoLCBvZmZzZXQgKyBBcnJheVBy
b2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFttZXRhZGF0YV0KICAgICBsb2FkYiBKU0NlbGw6
Om1faW5kZXhpbmdUeXBlQW5kTWlzY1tjZWxsXSwgaW5kZXhpbmdUeXBlCiBlbmQKIApAQCAtMTYy
MSw4ICsxNjE1LDggQEAgbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnU2tp
cCkKICAgICBhZGRwIC1wcm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBiZWNhdXNlIHRoYXQn
cyB3aGF0IGhhcyB0aGUgcGVlcGhvbGUKICAgICBhc3NlcnQobWFjcm8gKG9rKSBicGd0ZXEgdDAs
IDAsIG9rIGVuZCkKICAgICBidHB6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQotICAgIGxvYWRw
IENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDFdLCB0MwotICAgIGxvYWRwIFVubGlua2VkQ29k
ZUJsb2NrOjptX3ZhbHVlUHJvZmlsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291
bnRlZEFycmF5OjptX2RhdGFbdDNdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVu
dFZhbHVlUHJvZmlsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5
OjptX2RhdGFbdDFdLCB0MworICAgIGJ0cHogdDMsIC5hcmd1bWVudFByb2ZpbGVEb25lICMgV2hl
biB3ZSBjYW4ndCBKSVQsIHdlIGRvbid0IGFsbG9jYXRlIGFueSBhcmd1bWVudCB2YWx1ZSBwcm9m
aWxlcy4KICAgICBtdWxwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEg
TmVlZCBzdHJlbmd0aCByZWR1Y3Rpb24hCiAgICAgbHNoaWZ0cCAzLCB0MCAjIG9mZnNldCBvZiBs
YXN0IEpTVmFsdWUgYXJndW1lbnRzIG9uIHRoZSBzdGFjay4KICAgICBhZGRwIHQyLCB0MyAjIHBv
aW50ZXIgdG8gZW5kIG9mIFZhbHVlUHJvZmlsZSBhcnJheSBpbiBDb2RlQmxvY2s6Om1fYXJndW1l
bnRWYWx1ZVByb2ZpbGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBmMDM1MTMzZDkwZTA0ZmJlMjdj
ZjlkYWE1OTRiYTQ5N2I5MWIwNWZjLi43ODUyNGNmZjE5Njk4ZGM4MDA1ODZiYTk0YWM0MjI3YjE4
YzNmMzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNjcsNyArNjcsNyBAQCBtYWNybyBtYWtlUmV0
dXJuUHJvZmlsZWQob3Bjb2RlU3RydWN0LCBnZXQsIG1ldGFkYXRhLCBkaXNwYXRjaCwgZm4pCiAg
ICAgICAgIG1vdmUgcGF5bG9hZCwgdDAKIAogICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAg
ICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MCwgdDIp
CisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDUsIHQxLCB0
MCkKICAgICAgICAgZ2V0KG1fZHN0LCB0MikKICAgICAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KICAgICAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CkBAIC04NSw3ICs4NSw3IEBAIG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyCiAgICAgc3RvcmVpIHIx
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9yZWkgcjAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MykKLSAgICB2
YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjEsIHIwLCB0
MykKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0Miwg
cjEsIHIwKQogICAgIGRpc3BhdGNoKCkKIAogZW5kCkBAIC02NzcsMTAgKzY3Nyw5IEBAIG1hY3Jv
IHdyaXRlQmFycmllck9uR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KHNpemUsIGdldCwgdmFsdWVG
aWVsZE5hbWUpCiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2Rl
U3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCwgc2NyYXRjaCkKLSAg
ICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSVbbWV0YWRhdGFd
LCBzY3JhdGNoCi0gICAgc3RvcmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdP
ZmZzZXRbc2NyYXRjaF0KLSAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tl
dHMgKyBQYXlsb2FkT2Zmc2V0W3NjcmF0Y2hdCittYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKKyAgICBzdG9yZWkgdGFn
LCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgVGFn
T2Zmc2V0W21ldGFkYXRhXQorICAgIHN0b3JlaSBwYXlsb2FkLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFttZXRhZGF0YV0K
IGVuZAogCiAKQEAgLTE0MzgsNyArMTQzNyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAg
ICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0OjpNZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0MgogICAg
IGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkRGlyZWN0U2xv
dwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykK
KyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEp
CiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZERpcmVjdFNsb3c6CkBAIC0xNDU5LDI5
ICsxNDU4LDM3IEBAIG1hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwgbW9k
ZU1ldGFkYXRhTmFtZSwgdmFsdWVQcm9maWxlTmFtZSwgc2xvCiAgICAgYmluZXEgdDAsIHQxLCBz
bG93TGFiZWwKICAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFk
YXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEsIHQzKQorICAgIHZhbHVlUHJv
ZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCiAgICAgcmV0
dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZFByb3RvTG9hZDoKLSAgICBiYm5lcSB0MSwgY29uc3Rl
eHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5vcEdldEJ5SWRVbnNldAorICAgIGJibmVxIHQx
LCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OlByb3RvTG9hZCwgLm9wR2V0QnlJZEFycmF5TGVuZ3Ro
CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBsb2FkaSAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLnN0
cnVjdHVyZUlEW3QyXSwgdDMKICAgICBiaW5lcSB0MywgdDEsIHNsb3dMYWJlbAogICAgIGxvYWRp
cyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRN
b2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMK
ICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDAsIHQxKQotICAgIHZh
bHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEsIHQz
KQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0
MCwgdDEpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAotIyBJdCBjYW4ndCBiZSBhcnJheSBsZW5ndGgg
c2luY2Ugd2UgZG9uJ3QgdXNlIHRoaXMgZm9yIGFyYml0cmFyeSBnZXRfYnlfaWQncyB0aGF0IGNv
dWxkCi0jIGFjY2VzcyAibGVuZ3RoIi4gV2Ugb25seSB1c2UgaXQgZm9yIGl0ZXJhdG9yIG9wY29k
ZXMgd2hpY2ggYXJlbid0IHVzaW5nICJsZW5ndGgiIGFzIGFuCi0jIGlkZW50aWZpZXIuCisub3BH
ZXRCeUlkQXJyYXlMZW5ndGg6CisgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6
QXJyYXlMZW5ndGgsIC5vcEdldEJ5SWRVbnNldAorICAgIG1vdmUgdDMsIHQwCisgICAgYXJyYXlQ
cm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmFycmF5
TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCisgICAgYnRpeiB0MCwgSXNBcnJh
eSwgc2xvd0xhYmVsCisgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIHNsb3dMYWJlbAor
ICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwCisgICAgbG9hZGkgLXNpemVv
ZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3Ro
W3QwXSwgdDAKKyAgICBiaWx0IHQwLCAwLCBzbG93TGFiZWwKKyAgICB2YWx1ZVByb2ZpbGUob3Bj
b2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgSW50MzJUYWcsIHQwKQorICAgIHJldHVy
bihJbnQzMlRhZywgdDApCiAgICAgCiAub3BHZXRCeUlkVW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAogICAg
IGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5lZFRhZywgMCwgdDMpCisgICAgdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5lZFRhZywgMCkK
ICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQogCiBlbmQKQEAgLTE0OTksMjAgKzE1MDYsMjAg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRh
OjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDVdLCB0MwogICAgIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykKKyAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwLCB0MSkK
IAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJ
ZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAg
IG1vdmUgdDMsIHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fYXJy
YXlQcm9maWxlLCB0MiwgdDUsIHQwLCB0MSkKKyAgICBhcnJheVByb2ZpbGUoT3BHZXRCeUlkOjpN
ZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDIs
IHQ1LCB0MCkKICAgICBidGl6IHQyLCBJc0FycmF5LCAub3BHZXRCeUlkU2xvdwogICAgIGJ0aXog
dDIsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRCeUlkU2xvdwogICAgIGxvYWRwIEpTT2JqZWN0
OjptX2J1dHRlcmZseVt0M10sIHQwCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0
IHQwLCAwLCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJv
ZmlsZSwgdDUsIEludDMyVGFnLCB0MCwgdDMpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwg
bV9wcm9maWxlLCB0NSwgSW50MzJUYWcsIHQwKQogICAgIHJldHVybihJbnQzMlRhZywgdDApCiAK
IC5vcEdldEJ5SWRVbnNldDoKQEAgLTE1MjAsNyArMTUyNyw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0CiAgICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEudW5z
ZXRNb2RlLnN0cnVjdHVyZUlEW3Q1XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIGJpbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIFVuZGVmaW5lZFRhZywgMCwgdDMpCisgICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgVW5kZWZpbmVkVGFnLCAwKQog
ICAgIHJldHVybihVbmRlZmluZWRUYWcsIDApCiAKIC5vcEdldEJ5SWREZWZhdWx0OgpAQCAtMTUy
OSw3ICsxNTM2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJ
ZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBsb2FkaXMgT3BHZXRC
eUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3Q1
XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJ
ZFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQot
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSwgdDMpCisg
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQogICAgIHJl
dHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRTbG93OgpAQCAtMTUzOSw3ICsxNTQ2LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJP
U1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X2lkLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0
MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjAsIHQz
KQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIxLCByMCkKICAg
ICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xNjE3LDcgKzE2MjQsNyBAQCBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZAogICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCiAgICAgICAgIHN0b3Jl
aSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KICAgICAgICAgc3RvcmVpIHJl
c3VsdFBheWxvYWQsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgSW50MzJUYWcsIHJlc3VsdFBheWxv
YWQsIHNjcmF0Y2gpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUs
IHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVu
ZAogCkBAIC0xNjI2LDcgKzE2MzMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92
YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAg
ICBmZDJpaSByZXN1bHQsIHNjcmF0Y2gyLCBzY3JhdGNoMwogICAgICAgICBzdG9yZWkgc2NyYXRj
aDMsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQogICAgICAgICBzdG9yZWkgc2NyYXRjaDIs
IFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNoMiwgc2NyYXRjaDEpCisg
ICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywg
c2NyYXRjaDIpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApAQCAtMTYzNCw3ICsxNjQx
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBnZXQobV9iYXNlLCB0MikKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRhZywgdDAsIC5vcEdl
dEJ5VmFsU2xvdykKICAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5UHJvZmlsZShPcEdldEJ5VmFs
OjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEsIHQzKQorICAgIGFycmF5UHJv
ZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCiAg
ICAgZ2V0KG1fcHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKICAgICBsb2FkcCBKU09i
amVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MwpAQCAtMTY3MSw3ICsxNjc4LDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWQKIC5vcEdldEJ5VmFsTm90RW1wdHk6CiAgICAgc3RvcmVpIHQyLCBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxLCB0
MykKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxKQog
ICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE2ODQs
NyArMTY5MSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZh
bCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAg
ICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAg
ICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2Zp
bGUsIHQyLCByMSwgcjAsIHQzKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2Zp
bGUsIHQyLCByMSwgcjApCiAgICAgcmV0dXJuKHIxLCByMCkKIAogZW5kKQpAQCAtMTcwNSw3ICsx
NzEyLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFBy
aXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKICAgICBiaW5lcSBKU0NlbGw6Om1fc3Ry
dWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0UHJpdmF0ZU5hbWVTbG93CiAKICAgICBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdl
dFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEsIHQzKQorICAgIHZhbHVlUHJvZmls
ZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCiAgICAgcmV0dXJuKHQw
LCB0MSkKIAogLm9wR2V0UHJpdmF0ZU5hbWVTbG93OgpAQCAtMTc2Nyw4ICsxNzc0LDcgQEAgbWFj
cm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKIAog
ICAgICAgICAub3V0T2ZCb3VuZHM6CiAgICAgICAgICAgICBiaWFlcSB0MywgLXNpemVvZiBJbmRl
eGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QwXSwg
Lm9wUHV0QnlWYWxPdXRPZkJvdW5kcwotICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQyCi0gICAgICAgICAgICBzdG9yZWIgMSwg
QXJyYXlQcm9maWxlOjptX21heVN0b3JlVG9Ib2xlW3QyXQorICAgICAgICAgICAgc3RvcmViIDEs
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9s
ZVt0NV0KICAgICAgICAgICAgIGFkZGkgMSwgdDMsIHQyCiAgICAgICAgICAgICBzdG9yZWkgdDIs
IC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1Ymxp
Y0xlbmd0aFt0MF0KICAgICAgICAgICAgIGptcCAuc3RvcmVSZXN1bHQKQEAgLTE3NzksNyArMTc4
NSw3IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0
UG9pbnQpCiAgICAgICAgIGdldChtX2Jhc2UsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKICAg
ICAgICAgbW92ZSB0MSwgdDIKLSAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDAsIHQzKQorICAgICAgICBhcnJheVBy
b2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0
MCkKICAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MCwgSW50MzJUYWcsIHQzLCAub3BQdXRCeVZhbFNsb3cpCiAg
ICAgICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MV0sIHQwCkBAIC0xODMzLDggKzE4
MzksNyBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhp
dFBvaW50KQogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAub3BQdXRCeVZhbEFycmF5U3RvcmFn
ZUVtcHR5OgotICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQ
cm9maWxlW3Q1XSwgdDEKLSAgICAgICAgc3RvcmViIDEsIEFycmF5UHJvZmlsZTo6bV9tYXlTdG9y
ZVRvSG9sZVt0MV0KKyAgICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9hcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KICAgICAgICAgYWRkaSAxLCBBcnJh
eVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCiAgICAgICAgIGJpYiB0MywgLXNpemVv
ZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3Ro
W3QwXSwgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogICAgICAgICBhZGRpIDEs
IHQzLCB0MQpAQCAtMTg0Miw4ICsxODQ3LDcgQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1l
LCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICAgICAgam1wIC5vcFB1dEJ5VmFsQXJy
YXlTdG9yYWdlU3RvcmVSZXN1bHQKIAogICAgIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHM6Ci0gICAg
ICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGVbdDVdLCB0
MQotICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX291dE9mQm91bmRzW3QxXQorICAg
ICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5t
X291dE9mQm91bmRzW3Q1XQogICAgIC5vcFB1dEJ5VmFsU2xvdzoKICAgICAgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCkBA
IC0yNTExLDcgKzI1MTUsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3Bl
LCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgIG1hY3JvIGdl
dFByb3BlcnR5KCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29w
ZXJhbmRbdDVdLCB0MwogICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQzLCB0
MCwgdDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmls
ZSwgdDUsIHQxLCB0MiwgdDMpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwg
bV9wcm9maWxlLCB0NSwgdDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAog
CkBAIC0yNTIwLDcgKzI1MjQsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Nj
b3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgICAgICBs
b2FkcCBUYWdPZmZzZXRbdDBdLCB0MQogICAgICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3QwXSwg
dDIKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MSkKLSAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIsIHQzKQorICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKICAgICAgICAg
cmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjUyOCw3ICsyNTMyLDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGMKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjpt
X29wZXJhbmRbdDVdLCB0MwogICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJp
YWJsZXMgKyBUYWdPZmZzZXRbdDAsIHQzLCA4XSwgdDEKICAgICAgICAgbG9hZHAgSlNMZXhpY2Fs
RW52aXJvbm1lbnRfdmFyaWFibGVzICsgUGF5bG9hZE9mZnNldFt0MCwgdDMsIDhdLCB0MgotICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0Miwg
dDMpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwg
dDEsIHQyKQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4
IDk4YTZjMTIwYzlmNzRhNmE2NmU5YmRlYjdiN2MwNDg0YzhiZDZiODEuLmE1NjNlMjU3MTc1YjEx
OWM5MDEwM2U1MmEwYTRjYjQ1ODE0ZDMwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC02OCwxNiArNjgsMTUg
QEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRhZGF0YSwg
ZGlzcGF0Y2gsIGZuKQogICAgIGZuKG1hY3JvICh2YWx1ZSkKICAgICAgICAgbW92ZSB2YWx1ZSwg
dDMKICAgICAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2Rl
U3RydWN0LCBtX3Byb2ZpbGUsIHQxLCB0MywgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDEsIHQzKQogICAgICAgICBnZXQobV9kc3QsIHQxKQogICAg
ICAgICBzdG9yZXEgdDMsIFtjZnIsIHQxLCA4XQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5k
KQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBt
ZXRhZGF0YSwgdmFsdWUsIHNjcmF0Y2gpCi0gICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjolcHJvZmlsZU5hbWUlW21ldGFkYXRhXSwgc2NyYXRjaAotICAgIHN0b3JlcSB2YWx1ZSwg
VmFsdWVQcm9maWxlOjptX2J1Y2tldHNbc2NyYXRjaF0KK21hY3JvIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdmFsdWUpCisgICAgc3RvcmVxIHZhbHVl
LCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzW21ldGFk
YXRhXQogZW5kCiAKICMgQWZ0ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFpbWlu
ZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgpAQCAtODgsNyArODcsNyBAQCBtYWNybyBk
aXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRz
dFZpcnR1YWxSZWdpc3RlcgogICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRzdFZpcnR1YWxS
ZWdpc3RlciwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0KICAgICBtZXRhZGF0YShz
aXplLCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjAsIHQzKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCByMCkKICAgICBkaXNwYXRjaCgpCiBlbmQKIApA
QCAtMTUxMCw3ICsxNTA5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGly
ZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3AKICAgICBiaW5lcSB0
MCwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CiAgICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0OjpN
ZXRhZGF0YTo6bV9vZmZzZXRbdDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2Zp
bGUsIHQyLCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9m
aWxlLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAg
LTE1MTksNyArMTUxOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVj
dCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiBlbmQpCiAKICMgVGhl
IGJhc2Ugb2JqZWN0IGlzIGV4cGVjdGVkIGluIHQzCi1tYWNybyBwZXJmb3JtR2V0QnlJREhlbHBl
cihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsb3dM
YWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybiwgZG9BcnJheVByb2ZpbGUpCittYWNybyBwZXJm
b3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJv
ZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKICAgICBtZXRhZGF0
YSh0MiwgdDEpCiAgICAgbG9hZGIgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFk
YXRhTmFtZSUubW9kZVt0Ml0sIHQxCiAKQEAgLTE1MzAsNyArMTUyOSw3IEBAIG1hY3JvIHBlcmZv
cm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwgbW9kZU1ldGFkYXRhTmFtZSwgdmFsdWVQcm9m
aWxlTmFtZSwgc2xvCiAgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKICAgICBsb2FkaXMgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2Fj
aGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0
MywgdDApCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
dDIsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCB0MiwgdDApCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkUHJvdG9Mb2FkOgpAQCAt
MTU0MSwyNyArMTU0MCwyNyBAQCBtYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1
Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsbwogICAgIGxvYWRpcyAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2Rl
LmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKICAg
ICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKKyAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCiAgICAgcmV0
dXJuKHQwKQogCiAub3BHZXRCeUlkQXJyYXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhw
ciBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgsIC5vcEdldEJ5SWRVbnNldAogICAgIG1vdmUgdDMs
IHQwCi0gICAgZG9BcnJheVByb2ZpbGUodDAsIHQyLCB0NSwgdDEpCisgICAgYXJyYXlQcm9maWxl
KCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmFycmF5TGVuZ3Ro
TW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCiAgICAgYnRpeiB0MCwgSXNBcnJheSwgc2xv
d0xhYmVsCiAgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIHNsb3dMYWJlbAogICAgIGxv
YWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAsIHQxKQogICAgIGxv
YWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1
YmxpY0xlbmd0aFt0MF0sIHQwCiAgICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCiAgICAgb3JxIG51
bWJlclRhZywgdDAKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCB0MiwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIHQyLCB0MCkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRVbnNldDoKICAg
ICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQogICAgIGxvYWRpICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJ
RFt0Ml0sIHQwCiAgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKLSAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgVmFsdWVVbmRlZmluZWQsIHQxKQor
ICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBWYWx1
ZVVuZGVmaW5lZCkKICAgICByZXR1cm4oVmFsdWVVbmRlZmluZWQpCiAKIGVuZApAQCAtMTU2OSwx
MCArMTU2OCw3IEBAIGVuZAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0
QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAg
Z2V0KG1fYmFzZSwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAs
IHQzLCAub3BHZXRCeUlkU2xvdykKLSAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEdldEJ5SWQs
IG1fbW9kZU1ldGFkYXRhLCBtX3Byb2ZpbGUsIC5vcEdldEJ5SWRTbG93LCBzaXplLCBtZXRhZGF0
YSwgcmV0dXJuLAotICAgICAgICBtYWNybyAoY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEs
IHNjcmF0Y2gxLCBzY3JhdGNoMikKLSAgICAgICAgICAgIGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6
Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEs
IHNjcmF0Y2gxLCBzY3JhdGNoMikKLSAgICAgICAgZW5kKQorICAgIHBlcmZvcm1HZXRCeUlESGVs
cGVyKE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRhdGEsIG1fcHJvZmlsZSwgLm9wR2V0QnlJZFNsb3cs
IHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCiAKIC5vcEdldEJ5SWRTbG93OgogICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKQEAgLTE1ODEsNyArMTU3Nyw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVy
T1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0Miwg
dDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0MiwgcjAsIHQzKQor
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwKQogICAgIHJldHVy
bihyMCkKIAogZW5kKQpAQCAtMTcwMiw3ICsxNjk4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWQKICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAgIGdl
dChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwg
OF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJlc3Vs
dCwgc2NyYXRjaCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwg
dDUsIHJlc3VsdCkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBAIC0xNzIzLDcgKzE3
MTksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVDZWxsKHNpemUsIHQyLCB0MCwgLm9wR2V0QnlWYWxTbG93KQogCiAgICAgbW92ZSB0MCwgdDIK
LSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0
MiwgdDUsIHQxLCB0MykKKyAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1f
YXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQogCiAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xv
dykKQEAgLTE3NjMsNyArMTc1OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3Zh
bCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAKIC5vcEdl
dEJ5VmFsRG9uZToKICAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDMpCisgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyKQogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlW
YWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE3NzYsNyArMTc3Miw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVy
blBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEodDUsIHQyKQotICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByMCwgdDMpCisgICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHIwKQogICAgIHJldHVybihyMCkKIAog
ZW5kKQpAQCAtMTc5OCw3ICsxNzk0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJp
dmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKIAogICAg
IGxvYWRpIE9wR2V0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0sIHQxCiAgICAg
bG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmls
ZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQyLCB0MCwgdDMpCisgICAgdmFsdWVQcm9m
aWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDIsIHQwKQogICAgIHJldHVybih0MCkK
IAogLm9wR2V0UHJpdmF0ZU5hbWVTbG93OgpAQCAtMTkwMSw4ICsxODk3LDcgQEAgbWFjcm8gcHV0
QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKIAogICAgICAg
ICAub3V0T2ZCb3VuZHM6CiAgICAgICAgICAgICBiaWFlcSB0MywgLXNpemVvZiBJbmRleGluZ0hl
YWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QwXSwgLm9wUHV0
QnlWYWxPdXRPZkJvdW5kcwotICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQyCi0gICAgICAgICAgICBzdG9yZWIgMSwgQXJyYXlQ
cm9maWxlOjptX21heVN0b3JlVG9Ib2xlW3QyXQorICAgICAgICAgICAgc3RvcmViIDEsICVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0K
ICAgICAgICAgICAgIGFkZGkgMSwgdDMsIHQyCiAgICAgICAgICAgICBzdG9yZWkgdDIsIC1zaXpl
b2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0
aFt0MF0KICAgICAgICAgICAgIGptcCAuc3RvcmVSZXN1bHQKQEAgLTE5MTIsNyArMTkwNyw3IEBA
IG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9pbnQp
CiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MSwgLm9wUHV0
QnlWYWxTbG93KQogICAgICAgICBtb3ZlIHQxLCB0MgogICAgICAgICBtZXRhZGF0YSh0NSwgdDAp
Ci0gICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQ
cm9maWxlLCB0MiwgdDUsIHQwLCB0MykKKyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCiAgICAgICAgIGdldCht
X3Byb3BlcnR5LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUs
IHQwLCB0MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMKQEAgLTE5Njcs
OCArMTk2Miw3IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBv
c3JFeGl0UG9pbnQpCiAgICAgICAgIGRpc3BhdGNoKCkKIAogICAgIC5vcFB1dEJ5VmFsQXJyYXlT
dG9yYWdlRW1wdHk6Ci0gICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9h
cnJheVByb2ZpbGVbdDVdLCB0MQotICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21h
eVN0b3JlVG9Ib2xlW3QxXQorICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQogICAgICAgICBhZGRpIDEs
IEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KICAgICAgICAgYmliIHQzLCAt
c2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNM
ZW5ndGhbdDBdLCAub3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0CiAgICAgICAgIGFk
ZGkgMSwgdDMsIHQxCkBAIC0xOTc2LDggKzE5NzAsNyBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgICAgICBqbXAgLm9wUHV0QnlW
YWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogCiAgICAgLm9wUHV0QnlWYWxPdXRPZkJvdW5kczoK
LSAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0
NV0sIHQxCi0gICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fb3V0T2ZCb3VuZHNbdDFd
CisgICAgICAgIHN0b3JlYiAxLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9m
aWxlLm1fb3V0T2ZCb3VuZHNbdDVdCiAgICAgLm9wUHV0QnlWYWxTbG93OgogICAgICAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNo
KCkKQEAgLTI2NjksNyArMjY2Miw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21f
c2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgbWFj
cm8gZ2V0UHJvcGVydHkoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6
Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQo
dDEsIHQwLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2Zp
bGUsIHQ1LCB0MiwgdDMpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9w
cm9maWxlLCB0NSwgdDIpCiAgICAgICAgIHJldHVybih0MikKICAgICBlbmQKIApAQCAtMjY3Nywx
NCArMjY3MCwxNCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdl
dEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgICAgICBsb2FkcCBPcEdl
dEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQwCiAgICAgICAgIGxvYWRxIFt0
MF0sIHQwCiAgICAgICAgIHRkekNoZWNrSWZOZWNlc3NhcnkodDApCi0gICAgICAgIHZhbHVlUHJv
ZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDAsIHQzKQorICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwKQogICAgICAgICByZXR1
cm4odDApCiAgICAgZW5kCiAKICAgICBtYWNybyBnZXRDbG9zdXJlVmFyKCkKICAgICAgICAgbG9h
ZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBs
b2FkcSBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXNbdDAsIHQxLCA4XSwgdDAKLSAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDMpCisg
ICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDApCiAg
ICAgICAgIHJldHVybih0MCkKICAgICBlbmQKIApAQCAtMzAwOSw3ICszMDAyLDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9vcGVuLCBPcEl0ZXJhdG9yT3BlbiwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gKIAogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1faXRlcmF0b3IsIHQz
KQogICAgIGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0
U2xvdwotICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JPcGVuLCBtX21vZGVNZXRh
ZGF0YSwgbV9uZXh0UHJvZmlsZSwgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdywgc2l6
ZSwgbWV0YWRhdGEsIHN0b3JlTmV4dEFuZERpc3BhdGNoLCBtYWNybyhhLCBiLCBjLCBkKSBlbmQp
CisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck9wZW4sIG1fbW9kZU1ldGFkYXRh
LCBtX25leHRQcm9maWxlLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93LCBzaXplLCBt
ZXRhZGF0YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gpCiAKIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0
TmV4dFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Bl
bl9nZXRfbmV4dCkKQEAgLTMwNjgsNyArMzA2MSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
aXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
CiAKICAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKICAgICBidHFueiB0Mywgbm90
Q2VsbE1hc2ssIC5nZXREb25lU2xvdwotICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0
b3JOZXh0LCBtX2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywg
c2l6ZSwgbWV0YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUsIG1hY3JvKGEsIGIsIGMs
IGQpIGVuZCkKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25l
TW9kZU1ldGFkYXRhLCBtX2RvbmVQcm9maWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRh
LCBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVlKQogCiAuZ2V0RG9uZVNsb3c6CiAgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKQEAgLTMwOTMs
NyArMzA4Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVy
YXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoCiAgICAgIyBSZWxvYWQgdGhlIG5l
eHQgcmVzdWx0IHRtcCBzaW5jZSB0aGUgZ2V0X2J5X2lkIGFib3ZlIG1heSBoYXZlIGNsb2JiZXJl
ZCB0My4KICAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKICAgICAjIFdlIGRvbid0
IG5lZWQgdG8gY2hlY2sgaWYgdGhlIGl0ZXJhdG9yIHJlc3VsdCBpcyBhIGNlbGwgaGVyZSBzaW5j
ZSB3ZSB3aWxsIGhhdmUgdGhyb3duIGFuIGVycm9yIGJlZm9yZS4KLSAgICBwZXJmb3JtR2V0QnlJ
REhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVByb2Zp
bGUsIC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gs
IG1hY3JvKGEsIGIsIGMsIGQpIGVuZCkKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJh
dG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNs
b3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gpCiAKIC5nZXRWYWx1ZVNs
b3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRf
dmFsdWUpCkBAIC0zMTkwLDcgKzMxODMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2VudW1l
cmF0b3JfZ2V0X2J5X3ZhbCwgT3BFbnVtZXJhdG9yR2V0QnlWYWwsIG1hY3JvIChzaXplLAogICAg
IGxvYWRxIGNvbnN0ZXhwciAoKG9mZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0
KSkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKVt0MCwgdDIsIDhdLCB0MgogCiAuZG9uZToKLSAg
ICB2YWx1ZVByb2ZpbGUoT3BFbnVtZXJhdG9yR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0
MykKKyAgICB2YWx1ZVByb2ZpbGUoT3BFbnVtZXJhdG9yR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUs
IHQyKQogICAgIHJldHVybih0MikKIAogLmdldFNsb3dQYXRoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNw
cAppbmRleCAwZTE2NmRlYzUxNTY1MzU2ZjUxODA4NjM3ZjIyNDY5M2I1MWNlYzkxLi40N2RmYTJh
Mjc3OTk2MjUzY2NiOWFlNThlOTQ4NTNmZmQ4YWU5YTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNw
cApAQCAtMzcsNyArMzcsOCBAQCBCeXRlY29kZVNlcXVlbmNlOjpCeXRlY29kZVNlcXVlbmNlKENv
ZGVCbG9jayogY29kZUJsb2NrKQogICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKICAgICAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZkFyZ3VtZW50VmFs
dWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGNvZGVC
bG9jay0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoaSkuYnJpZWZEZXNjcmlwdGlvbigpOworICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAg
ICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGNvZGVCbG9jay0+dmFsdWVQcm9maWxlRm9yQXJndW1l
bnQoaSkuYnJpZWZEZXNjcmlwdGlvbihsb2NrZXIpOwogICAgICAgICBpZiAoIWRlc2NyaXB0aW9u
Lmxlbmd0aCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG91dC5yZXNldCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDg1
ZjU5OWI5MTY3MTZkMGE0YWVhNzFhZDc0NTk4YWMwNWE4NzJjYTcuLjg1OGU0ZTgyZTVjMTBlYjZm
MTJmZjVkOTJlYjFlN2IyODNjMWFhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE5MTYsOSArMTkxNiw2IEBAIHB1YmxpYzoKIAogICAg
IFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YSogcmFyZURhdGEoRGVjb2RlciYgZGVjb2Rlcikg
Y29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YS5kZWNvZGUoZGVjb2Rlcik7IH0KIAotICAgIHVuc2ln
bmVkIG51bVZhbHVlUHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX251bVZhbHVlUHJvZmlsZXM7
IH0KLSAgICB1bnNpZ25lZCBudW1BcnJheVByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1B
cnJheVByb2ZpbGVzOyB9Ci0KIHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fdGhpc1Jl
Z2lzdGVyOwogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CkBAIC0xOTUwLDkg
KzE5NDcsNiBAQCBwcml2YXRlOgogICAgIGludCBtX251bUNhbGxlZUxvY2FsczsKICAgICBpbnQg
bV9udW1QYXJhbWV0ZXJzOwogCi0gICAgdW5zaWduZWQgbV9udW1WYWx1ZVByb2ZpbGVzOwotICAg
IHVuc2lnbmVkIG1fbnVtQXJyYXlQcm9maWxlczsKLQogICAgIENhY2hlZE1ldGFkYXRhVGFibGUg
bV9tZXRhZGF0YTsKIAogICAgIENhY2hlZFB0cjxDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YT4gbV9y
YXJlRGF0YTsKQEAgLTIxNTgsOCArMjE1Miw2IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRDb2Rl
QmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKERlY29kZXImIGRlY29kZXIsIFN0cnVjdHVyZSoKICAg
ICAsIG1fbWV0YWRhdGEoY2FjaGVkQ29kZUJsb2NrLm1ldGFkYXRhKGRlY29kZXIpKQogICAgICwg
bV9pbnN0cnVjdGlvbnMoY2FjaGVkQ29kZUJsb2NrLmluc3RydWN0aW9ucyhkZWNvZGVyKSkKIAot
ICAgICwgbV92YWx1ZVByb2ZpbGVzKGNhY2hlZENvZGVCbG9jay5udW1WYWx1ZVByb2ZpbGVzKCkp
Ci0gICAgLCBtX2FycmF5UHJvZmlsZXMoY2FjaGVkQ29kZUJsb2NrLm51bUFycmF5UHJvZmlsZXMo
KSkKICAgICAsIG1fcmFyZURhdGEoY2FjaGVkQ29kZUJsb2NrLnJhcmVEYXRhKGRlY29kZXIpKQog
ewogfQpAQCAtMjMzMCw4ICsyMzIyLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVC
bG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKICAgICBt
X251bVZhcnMgPSBjb2RlQmxvY2subV9udW1WYXJzOwogICAgIG1fbnVtQ2FsbGVlTG9jYWxzID0g
Y29kZUJsb2NrLm1fbnVtQ2FsbGVlTG9jYWxzOwogICAgIG1fbnVtUGFyYW1ldGVycyA9IGNvZGVC
bG9jay5tX251bVBhcmFtZXRlcnM7Ci0gICAgbV9udW1WYWx1ZVByb2ZpbGVzID0gY29kZUJsb2Nr
Lm1fdmFsdWVQcm9maWxlcy5zaXplKCk7Ci0gICAgbV9udW1BcnJheVByb2ZpbGVzID0gY29kZUJs
b2NrLm1fYXJyYXlQcm9maWxlcy5zaXplKCk7CiAgICAgbV9mZWF0dXJlcyA9IGNvZGVCbG9jay5t
X2ZlYXR1cmVzOwogICAgIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMgPSBjb2RlQmxvY2subV9sZXhp
Y2FsU2NvcGVGZWF0dXJlczsKICAgICBtX3BhcnNlTW9kZSA9IGNvZGVCbG9jay5tX3BhcnNlTW9k
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCmluZGV4IDA4MTkzMGQ1ZmEyMjY3MDMyYjAyNTE5ZmY0YWMxOTFiMzBhODQyNTMuLjFlM2Jh
MWEzYWNiNjkwNGY3NTU4N2E3NjRiYTQ5MzBiMjE1YTM3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTM5LDcgKzEzOSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIFBST0ZJTEVfVkFMVUVfSU4odmFsdWVfXywgbV9wcm9m
aWxlKQogCiAjZGVmaW5lIFBST0ZJTEVfVkFMVUVfSU4odmFsdWUsIHByb2ZpbGVOYW1lKSBkbyB7
IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS0+bV9i
dWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAorICAgICAgICBieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spLnByb2ZpbGVOYW1lLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogc3RhdGljIHZvaWQgdGhyb3dB
cml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRocm93U2NvcGUmIHNjb3BlKQpAQCAtODg3LDcgKzg4Nyw3IEBAIEFMV0FZU19JTkxJTkUgU2xv
d1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG9yTmV4dFRyeUZhc3RJbXBsKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqCiAgICAgSlNDZWxsKiBpdGVyYWJsZSA9IEdFVChieXRlY29kZS5tX2l0ZXJhYmxlKS5q
c1ZhbHVlKCkuYXNDZWxsKCk7CiAgICAgaWYgKGF1dG8gYXJyYXlJdGVyYXRvciA9IGpzRHluYW1p
Y0Nhc3Q8SlNBcnJheUl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yKSkgewogICAgICAgICBpZiAoYXV0
byBhcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCBpdGVyYWJsZSkpIHsKLSAgICAg
ICAgICAgIG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYXJy
YXktPnN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2Zp
bGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKIAogICAgICAgICAg
ICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0
ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKICAg
ICAgICAgICAgIGF1dG8mIGluZGV4U2xvdCA9IGFycmF5SXRlcmF0b3ItPmludGVybmFsRmllbGQo
SlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpOwpAQCAtOTUxLDkgKzk1MSw3IEBAIEpTQ19E
RUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdG9fcHJpbWl0aXZlKQogSlNDX0RFRklO
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbnRlcikKIHsKICAgICBCRUdJTigpOwotICAg
IEhlYXAmIGhlYXAgPSAqSGVhcDo6aGVhcChjb2RlQmxvY2spOwotICAgIGhlYXAud3JpdGVCYXJy
aWVyKGNvZGVCbG9jayk7Ci0gICAgaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpKTsKKyAgICBIZWFwOjpoZWFwKGNvZGVCbG9jayktPndyaXRlQmFycmllcihj
b2RlQmxvY2spOwogICAgIEVORCgpOwogfQogCkBAIC05OTUsNyArOTkzLDcgQEAgSlNDX0RFRklO
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpCiAgICAgQVNTRVJU
KCFiYXNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSk7CiAgICAgSlNPYmplY3QqIGJhc2UgPSBi
YXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsK
LSAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2UtPnN0
cnVjdHVyZUlEKCkpOworICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1
cmVJRChiYXNlLT5zdHJ1Y3R1cmVJRCgpKTsKIAogICAgIEpTU3RyaW5nKiBuYW1lID0gZW51bWVy
YXRvci0+Y29tcHV0ZU5leHQoZ2xvYmFsT2JqZWN0LCBiYXNlLCBpbmRleCwgbW9kZSk7CiAgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7CkBAIC0xMDE5LDcgKzEwMTcsNyBAQCBKU0NfREVGSU5FX0NPTU1P
Tl9TTE9XX1BBVEgoc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCkKICAgICBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IgPSBqc0Nhc3Q8SlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKj4oR0VUKGJ5dGVjb2RlLm1fZW51bWVyYXRvcikuanNWYWx1ZSgpKTsKICAgICB1bnNp
Z25lZCBpbmRleCA9IEdFVChieXRlY29kZS5tX2luZGV4KS5qc1ZhbHVlKCkuYXNJbnQzMigpOwog
Ci0gICAgUkVUVVJOX1BST0ZJTEVEKENvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJhdG9yR2V0QnlW
YWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgaW5kZXgsIG1vZGUsIGVu
dW1lcmF0b3IsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCAmbWV0YWRhdGEubV9lbnVtZXJhdG9y
TWV0YWRhdGEpKTsKKyAgICBSRVRVUk5fUFJPRklMRUQoQ29tbW9uU2xvd1BhdGhzOjpvcEVudW1l
cmF0b3JHZXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgcHJvcGVydHlOYW1lLCBpbmRl
eCwgbW9kZSwgZW51bWVyYXRvciwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCAmbWV0YWRhdGEu
bV9lbnVtZXJhdG9yTWV0YWRhdGEpKTsKIH0KIAogSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCkKQEAgLTEwNDIsNyArMTA0MCw3IEBAIEpT
Q19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwp
CiAgICAgfQogCiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKEdFVChieXRlY29kZS5t
X3Byb3BlcnR5TmFtZSkuanNWYWx1ZSgpKTsKLSAgICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNs
b3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdHJpbmcsIG1ldGFk
YXRhLm1fYXJyYXlQcm9maWxlKSkpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1Bh
dGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN0cmluZywgJm1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlKSkpOwogfQogCiBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggNDk1ZGM2M2M0ZmFiYWE0NTE1NmQ1MzNlYzU3YTU3
MjQ0NTA4NjMwNC4uMzZmZGE1ODQ3ZjM4ZjViYTc0MjkwMzYyOWNhMmNjYTk0NzhhNDI0YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTI3LDEyICsyNywx
MCBAQAogI2luY2x1ZGUgIkpTU2NvcGUuaCIKIAogI2luY2x1ZGUgIkFic3RyYWN0TW9kdWxlUmVj
b3JkLmgiCi0jaW5jbHVkZSAiRGVmZXJUZXJtaW5hdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9k
dWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgotI2luY2x1ZGUgIlZN
VHJhcHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTU2LDcgKzU0LDcgQEAgREVGSU5FX1ZJU0lUX0NISUxEUkVOKEpTU2Nv
cGUpOwogc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0
T3JQdXQgZ2V0T3JQdXQsIHNpemVfdCBkZXB0aCwgYm9vbCYgbmVlZHNWYXJJbmplY3Rpb25DaGVj
a3MsIFJlc29sdmVPcCYgb3AsIEluaXRpYWxpemF0aW9uTW9kZSBpbml0aWFsaXphdGlvbk1vZGUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIERlZmVyVGVybWluYXRp
b25Gb3JBV2hpbGUgZGVmZXJTY29wZSh2bSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoc2NvcGUtPmlzSlNMZXhpY2FsRW52aXJvbm1l
bnQoKSkgewogICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50
ID0ganNDYXN0PEpTTGV4aWNhbEVudmlyb25tZW50Kj4oc2NvcGUpOwpAQCAtODIsOSArODAsOCBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNTY29wZSogc2NvcGUsCiAgICAgICAgIGlmIChzY29wZS0+dHlwZSgpID09IE1v
ZHVsZUVudmlyb25tZW50VHlwZSkgewogICAgICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCog
bW9kdWxlRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KHNjb3BlKTsK
ICAgICAgICAgICAgIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBtb2R1bGVF
bnZpcm9ubWVudC0+bW9kdWxlUmVjb3JkKCk7Ci0gICAgICAgICAgICBhdXRvIGNhdGNoU2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAgICAgICAgIEFic3RyYWN0TW9kdWxlUmVj
b3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBtb2R1bGVSZWNvcmQtPnJlc29sdmVJbXBvcnQo
Z2xvYmFsT2JqZWN0LCBpZGVudCk7Ci0gICAgICAgICAgICBjYXRjaFNjb3BlLnJlbGVhc2VBc3Nl
cnROb0V4Y2VwdGlvbigpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEFic3RyYWN0
TW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgewogICAgICAgICAgICAg
ICAgIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBpbXBvcnRlZFJlY29yZCA9IHJlc29sdXRpb24ubW9k
dWxlUmVjb3JkOwogICAgICAgICAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIGltcG9ydGVk
RW52aXJvbm1lbnQgPSBpbXBvcnRlZFJlY29yZC0+bW9kdWxlRW52aXJvbm1lbnQoKTsKQEAgLTMw
Nyw2ICszMDQsOSBAQCBKU09iamVjdCogSlNTY29wZTo6cmVzb2x2ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBzY29wZSwgY29uc3QgSQogCiBSZXNvbHZlT3AgSlNTY29w
ZTo6YWJzdHJhY3RSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBk
ZXB0aE9mZnNldCwgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRP
clB1dCBnZXRPclB1dCwgUmVzb2x2ZVR5cGUgdW5saW5rZWRUeXBlLCBJbml0aWFsaXphdGlvbk1v
ZGUgaW5pdGlhbGl6YXRpb25Nb2RlKQogeworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IFJlc29sdmVPcCBvcChEeW5hbWljLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAwKTsK
ICAgICBpZiAodW5saW5rZWRUeXBlID09IER5bmFtaWMpCiAgICAgICAgIHJldHVybiBvcDsKQEAg
LTMxNSw2ICszMTUsNyBAQCBSZXNvbHZlT3AgSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBkZXB0aE9mZgogICAgIHNpemVfdCBkZXB0
aCA9IGRlcHRoT2Zmc2V0OwogICAgIGZvciAoOyBzY29wZTsgc2NvcGUgPSBzY29wZS0+bmV4dCgp
KSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGFic3RyYWN0QWNjZXNzKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGlkZW50LCBnZXRPclB1dCwgZGVwdGgsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCBv
cCwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBSZXNvbHZlT3AoRHluYW1pYywgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
MCkpOwogICAgICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAr
K2RlcHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDVhNDA1Mjg4OGU0
NmRjMThkMTEzOTlkNWVlYjBjNWYzZjM0OGE3ZjguLjc5ZWQyMWVlM2E2ZmMzNzE2Yjc0YjI1MjEz
OWUzOTgwOGMwOTU3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTE1
OTcsNiArMTU5NywxMCBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
dWludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLAogRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVWludDhDbGFtcGVkQXJyYXkpCiBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNVaW50MTZBcnJheSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh1aW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQzMkFy
cmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRXZh
bENvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxp
bmtlZEV2YWxDb2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1Nw
YWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
dW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTV2Vha01hcCkgLy8gSGFzaDoweDY2MmIxMmEzCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4MWIzMAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKQEAgLTE2NTAsMTEgKzE2NTQs
NiBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb25TcGFjZSwgY2VsbEhlYQogRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklO
RV9NRU1CRVJfU0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBFdmFsRXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlkCiBEWU5BTUlD
X1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
U3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKSAvLyBIYXNoOjB4NjUwNmZhM2MKIAotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RF
RklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKQotRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
U3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2spCi1EWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKHVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spCi1EWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1Nw
YWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZFByb2dyYW1D
b2RlQmxvY2spCi0KICN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9T
TE9XCiAKIEpTQ2VsbCogVk06OnNlbnRpbmVsU2V0QnVja2V0U2xvdygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAppbmRleCA0YjI0YzYxN2U5MGE4NTc4ZTk5ZWMwOGFjYjQzYTRmMWJiODRl
NWVjLi43YTU4YjI3OWU2NzBhODQwM2QxZjM5NDEyMzU3ZDVlNzcxMTNmNTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTYwMyw2ICs2MDMsMTAgQEAgcHVibGljOgogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkK
ICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQxNkFycmF5U3BhY2Up
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50MzJBcnJheVNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRFdmFsQ29k
ZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUih1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1Nw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmluYWxpemF0aW9u
UmVnaXN0cnlTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdl
YWtPYmplY3RSZWZTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHdlYWtTZXRTcGFjZSkKQEAgLTY3NCwyNSArNjc4LDE5IEBAIHB1YmxpYzoKICAgICAKICAgICBT
cGFjZUFuZFNldCBjb2RlQmxvY2tTcGFjZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+
CisgICAgdm9pZCBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7
CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBpbmNsdWRlIHdlYkFzc2VtYmx5Q29kZUJsb2Nr
U3BhY2UgYmVjYXVzZSB0aGlzIGlzIGFib3V0IHN1YnNjbGFzc2VzIG9mCisgICAgICAgIC8vIEpT
Qzo6Q29kZUJsb2NrLgorICAgICAgICBmdW5jKGNvZGVCbG9ja1NwYWNlKTsKKyAgICB9CisKICAg
ICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNl
KQogICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlU3BhY2UpCiAgICAgU3BhY2VBbmRTZXQgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7
CiAgICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsKIAotICAgIERZTkFNSUNf
U1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlKQot
ICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKHVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2tTcGFjZSkKLSAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUih1
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSkKLSAgICBEWU5BTUlDX1NQQUNFX0FO
RF9TRVRfREVGSU5FX01FTUJFUih1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSkKLQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoVW5saW5rZWRDb2RlQmxv
Y2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAgICAgZnVuYyhtX3VubGlua2Vk
RXZhbENvZGVCbG9ja1NwYWNlLmdldCgpKTsKLSAgICAgICAgZnVuYyhtX3VubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2tTcGFjZS5nZXQoKSk7Ci0gICAgICAgIGZ1bmMobV91bmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2tTcGFjZS5nZXQoKSk7Ci0gICAgICAgIGZ1bmMobV91bmxpbmtlZFByb2dy
YW1Db2RlQmxvY2tTcGFjZS5nZXQoKSk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KICAgICB2b2lkIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoY29uc3QgRnVuYyYg
ZnVuYykKICAgICB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>