<?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>242537</bug_id>
          
          <creation_ts>2022-07-08 14:40:21 -0700</creation_ts>
          <short_desc>Add taintedness tracking to JSC</short_desc>
          <delta_ts>2023-09-12 11:24:26 -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>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=261471</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>mark.lam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1881771</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2022-07-08 14:40:21 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1881783</commentid>
    <comment_count>1</comment_count>
      <attachid>460769</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2022-07-08 15:04:43 -0700</bug_when>
    <thetext>Created attachment 460769
WIP here since GH seems to be broken for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1884241</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-07-15 14:41:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/97095169&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974441</commentid>
    <comment_count>3</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2023-08-30 06:15:57 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/17221</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1976003</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2023-09-06 17:52:23 -0700</bug_when>
    <thetext>rdar://83222586</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1976311</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-09-07 21:09:39 -0700</bug_when>
    <thetext>Committed 267765@main (3a1c346c2fde): &lt;https://commits.webkit.org/267765@main&gt;

Reviewed commits have been landed. Closing PR #17221 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>460769</attachid>
            <date>2022-07-08 15:04:43 -0700</date>
            <delta_ts>2022-07-08 15:04:43 -0700</delta_ts>
            <desc>WIP here since GH seems to be broken for me.</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>101263</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3RhaW50ZWRuZXNzLXRyYWNraW5nLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvdGFpbnRlZG5lc3MtdHJhY2tpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi4wOWU4ZmExZjcyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy90YWludGVkbmVzcy10cmFja2luZy5qcwpAQCAtMCwwICsxLDU3IEBACitmdW5j
dGlvbiBjaGVjayhleHBlY3RlZCwgc3RhdGUgPSAkdm0udm1UYWludGVkU3RhdGUoKSkgeworICAg
IGlmIChleHBlY3RlZCAhPSBzdGF0ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWQgKyAiIGJ1dCBzdGF0ZSB3YXMgIiArIHN0YXRlKTsKKworfQorCitjaGVj
aygiVW50YWludGVkIik7CisKK2xldCBzdGF0ZSA9ICR2bS5ydW5UYWludGVkU3RyaW5nKCJmdW5j
dGlvbiB0YWludGVkRnVuYygpIHsgcmV0dXJuICR2bS52bVRhaW50ZWRTdGF0ZSgpOyB9ICR2bS52
bVRhaW50ZWRTdGF0ZSgpIik7CitjaGVjaygiS25vd25UYWludGVkIiwgc3RhdGUpOworY2hlY2so
IkluZGlyZWN0bHlUYWludGVkQnlIaXN0b3J5Iik7CisKK2xldCBmdW5jID0gRnVuY3Rpb24oInJl
dHVybiAkdm0udm1UYWludGVkU3RhdGUoKTsiKQorCitzZXRUaW1lb3V0KCgpID0+IHsKKyAgICBj
aGVjaygiVW50YWludGVkIik7CisgICAgc3RhdGUgPSBmdW5jKCk7CisgICAgY2hlY2soIkluZGly
ZWN0bHlUYWludGVkQnlIaXN0b3J5Iiwgc3RhdGUpOworICAgIGNoZWNrKCJJbmRpcmVjdGx5VGFp
bnRlZEJ5SGlzdG9yeSIpOworfSk7CisKK3NldFRpbWVvdXQoKCkgPT4geworICAgIHN0YXRlID0g
dGFpbnRlZEZ1bmMoKTsKKyAgICBjaGVjaygiS25vd25UYWludGVkIiwgc3RhdGUpOworICAgIGNo
ZWNrKCJJbmRpcmVjdGx5VGFpbnRlZEJ5SGlzdG9yeSIpOworfSk7CisKK2xldCBldmFsRnVuYyA9
ICR2bS5ydW5UYWludGVkU3RyaW5nKGAoZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIGV2YWwoIkZ1
bmN0aW9uKCdyZXR1cm4gJHZtLnZtVGFpbnRlZFN0YXRlKCk7JykiKTsKK30pYCk7CisKK3NldFRp
bWVvdXQoKCkgPT4geworICAgIGxldCBmdW5jID0gZXZhbEZ1bmMoKTsKKyAgICBzZXRUaW1lb3V0
KCgpID0+IHsKKyAgICAgICAgY2hlY2soIkluZGlyZWN0bHlUYWludGVkIiwgZnVuYygpKTsKKyAg
ICB9KTsKK30pOworCitQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKKyAgICBjaGVjaygi
SW5kaXJlY3RseVRhaW50ZWRCeUhpc3RvcnkiKTsKK30pOworCisKK3NldFRpbWVvdXQoKCkgPT4g
eworICAgIC8vIFRlc3QgSlNPTlAgY29kZSBwYXRocywgd2hpY2ggY2FuIGNyZWF0ZSBjb2RlIHZp
YSBzZXR0ZXJzLgorICAgIGNoZWNrKCJVbnRhaW50ZWQiKTsKKyAgICBnbG9iYWxUaGlzLmZvbyA9
IHsgc2V0IGJhcih2YWx1ZSkgeyB0aGlzLmJheiA9IGV2YWwodmFsdWUpOyB9fQorICAgICR2bS5y
dW5UYWludGVkU3RyaW5nKCJmb28uYmFyID0gJyhmdW5jdGlvbigpIHsgcmV0dXJuICR2bS52bVRh
aW50ZWRTdGF0ZSgpOyB9KSciKTsKKyAgICBjaGVjaygiSW5kaXJlY3RseVRhaW50ZWRCeUhpc3Rv
cnkiKTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgY2hlY2soIlVudGFpbnRlZCIp
OworICAgICAgICBzdGF0ZSA9IGZvby5iYXooKTsKKyAgICAgICAgLy8gc3RhdGUgaXMgSW5kaXJl
Y3RseVRhaW50ZWRCeUhpc3RvcnkgYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXRzZWxmIGlzIGNyZWF0
ZWQgaW4gdGhlIGV2YWwgYWJvdmUgbm90IHRoZSBydW5UYWludGVkU3RyaW5nIGNhbGwgYW5kIHdl
IGRvbid0IGhhdmUgYSBKUyBmcmFtZSBvbiB0aGUgc3RhY2sgZm9yIHRhaW50ZWRuZXNzIHRyYWNr
aW5nLgorICAgICAgICBjaGVjaygiSW5kaXJlY3RseVRhaW50ZWRCeUhpc3RvcnkiLCBzdGF0ZSk7
CisgICAgICAgIGNoZWNrKCJJbmRpcmVjdGx5VGFpbnRlZEJ5SGlzdG9yeSIpOworICAgIH0pCit9
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy90YWludGVkbmVzcy1pbm5lcmh0bWwuaHRtbCBiL0xheW91dFRlc3RzL2pzL3RhaW50ZWRuZXNz
LWlubmVyaHRtbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
NWUwYzdlMjRmMTQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvdGFpbnRlZG5l
c3MtaW5uZXJodG1sLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBqc2NPcHRpb25zPS0tdXNlRG9sbGFyVk09dHJ1ZSBdIC0tPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImZvbyI+PC9kaXY+Cis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUZXN0IHRhaW50ZWRuZXNzIGlzIHRyYWNrZWQgdmlhIHNldmVyYWwg
d2F5cyB0byBpbmplY3Qgc2NyaXB0cyBpbiBXZWJDb3JlIik7CisgICAgLy8ganNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKworICAgIGxldCBmb28gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9v
Iik7CisKKyAgICBzaG91bGRCZUluZGlyZWN0bHlUYWludGVkU3RyaW5nID0gInNob3VsZEJlRXF1
YWxUb1N0cmluZyhcXCckdm0udm1UYWludGVkU3RhdGUoKVxcJywgXFwnSW5kaXJlY3RseVRhaW50
ZWRcXCcpIjsKKyAgICBzaG91bGRCZUluZGlyZWN0bHlUYWludGVkQnlIaXN0b3J5U3RyaW5nID0g
InNob3VsZEJlRXF1YWxUb1N0cmluZyhcXCckdm0udm1UYWludGVkU3RhdGUoKVxcJywgXFwnSW5k
aXJlY3RseVRhaW50ZWRCeUhpc3RvcnlcXCcpIjsKKyAgICAvLyBzdGF0ZSBpcyBJbmRpcmVjdGx5
VGFpbnRlZCBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpdHNlbGYgaXMgY3JlYXRlZCBpbiB0aGUgaW5u
ZXJIVE1MIGZ1bmN0aW9uIG5vdCB0aGUgcnVuVGFpbnRlZFN0cmluZyBjYWxsIGFuZCB3ZSBkb24n
dCBoYXZlIGEgSlMgZnJhbWUgb24gdGhlIHN0YWNrIGZvciB0YWludGVkbmVzcyB0cmFja2luZyBh
cyB0aGlzIGlzIGV4ZWN1dGVkIGFzIEpTT05QLgorICAgICR2bS5ydW5UYWludGVkU3RyaW5nKGAK
KyAgICAgICAgZm9vLmlubmVySFRNTCA9ICc8aW1nIHNyYz0ieCIgb25lcnJvcj0iJHtzaG91bGRC
ZUluZGlyZWN0bHlUYWludGVkQnlIaXN0b3J5U3RyaW5nfSIgLz47JzsKKyAgICBgKTsKKworICAg
IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIiR2bS52
bVRhaW50ZWRTdGF0ZSgpIiwgIlVudGFpbnRlZCIpOworICAgICAgICAkdm0ucnVuVGFpbnRlZFN0
cmluZyhgCisgICAgICAgICAgICBsZXQgc29tZV9zY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzY3JpcHQiKTsKKyAgICAgICAgICAgIHNvbWVfc2NyaXB0LnR5cGUgPSAidGV4dC9qYXZh
c2NyaXB0IjsKKyAgICAgICAgICAgIHNvbWVfc2NyaXB0LnRleHQgPSAiJHtzaG91bGRCZUluZGly
ZWN0bHlUYWludGVkU3RyaW5nfSI7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKHNvbWVfc2NyaXB0KTsKKyAgICAgICAgYCk7CisgICAgfSk7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL3RhaW50ZWRuZXNzLXNldHRpbWVvdXQuaHRtbCBiL0xheW91dFRlc3RzL2pz
L3RhaW50ZWRuZXNzLXNldHRpbWVvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjZhOTE1YTkxNTNmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3RhaW50ZWRuZXNzLXNldHRpbWVvdXQuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZ
UEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGpzY09wdGlvbnM9LS11c2VEb2xsYXJW
TT10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZm9vIj48L2Rp
dj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgdGFpbnRlZG5lc3MgaXMgdHJhY2tl
ZCB2aWEgc2V2ZXJhbCB3YXlzIHRvIGluamVjdCBzY3JpcHRzIGluIFdlYkNvcmUiKTsKKyAgICAv
LyBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgIGxldCBmb28gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9vIik7CisKKyAg
ICBzaG91bGRCZUluZGlyZWN0bHlUYWludGVkU3RyaW5nID0gInNob3VsZEJlRXF1YWxUb1N0cmlu
ZyhcXCckdm0udm1UYWludGVkU3RhdGUoKVxcJywgXFwnSW5kaXJlY3RseVRhaW50ZWRcXCcpIjsK
KyAgICBzaG91bGRCZUluZGlyZWN0bHlUYWludGVkQnlIaXN0b3J5U3RyaW5nID0gInNob3VsZEJl
RXF1YWxUb1N0cmluZyhcXCckdm0udm1UYWludGVkU3RhdGUoKVxcJywgXFwnSW5kaXJlY3RseVRh
aW50ZWRCeUhpc3RvcnlcXCcpIjsKKyAgICAvLyBzdGF0ZSBpcyBJbmRpcmVjdGx5VGFpbnRlZCBi
ZWNhdXNlIHRoZSBmdW5jdGlvbiBpdHNlbGYgaXMgY3JlYXRlZCBpbiB0aGUgaW5uZXJIVE1MIGZ1
bmN0aW9uIG5vdCB0aGUgcnVuVGFpbnRlZFN0cmluZyBjYWxsIGFuZCB3ZSBkb24ndCBoYXZlIGEg
SlMgZnJhbWUgb24gdGhlIHN0YWNrIGZvciB0YWludGVkbmVzcyB0cmFja2luZyBhcyB0aGlzIGlz
IGV4ZWN1dGVkIGFzIEpTT05QLgorCisgICAgZnVuY3Rpb24gY2hlY2tGcm9tT3V0ZXJTY3JpcHQo
KSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiJHZtLnZtVGFpbnRlZFN0YXRlKCki
LCAiJ1VudGFpbnRlZCciKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorICAgICR2
bS5ydW5UYWludGVkU3RyaW5nKGAKKyAgICAgICAgc2V0VGltZW91dChcYAorICAgICAgICAgICAg
Ly8gSW5kaXJlY3RseVRhaW50ZWQgYmVjYXVzZSB0aGlzIGNvZGUgaXMgY3JlYXRlZCBieSB0aGUg
c2V0VGltZW91dCBmdW5jdGlvbi4KKyAgICAgICAgICAgIC8vIGlmICgkdm0udm1UYWludGVkU3Rh
dGUoKSAhPT0gIkluZGlyZWN0bHlUYWludGVkIikKKyAgICAgICAgICAgIC8vICAgICB0ZXN0RmFp
bGVkKCIkdm0udm1UYWludGVkU3RhdGUoKTogIiAkdm0udm1UYWludGVkU3RhdGUoKSArICIgaXMg
bm90IEluZGlyZWN0bHlUYWludGVkIik7CisgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50
aGVuKGNoZWNrRnJvbU91dGVyU2NyaXB0KTsKKyAgICAgICAgICAgIDQyICsgMDsKKyAgICAgICAg
XGAsIDApOworICAgIGApOworCisgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7CisgICAgLy8gICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiJHZtLnZtVGFpbnRlZFN0YXRlKCkiLCAiVW50YWludGVk
Iik7CisgICAgLy8gICAgICR2bS5ydW5UYWludGVkU3RyaW5nKGAKKyAgICAvLyAgICAgICAgIGxl
dCBzb21lX3NjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOworICAgIC8v
ICAgICAgICAgc29tZV9zY3JpcHQudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOworICAgIC8vICAg
ICAgICAgc29tZV9zY3JpcHQudGV4dCA9ICIke3Nob3VsZEJlSW5kaXJlY3RseVRhaW50ZWRTdHJp
bmd9IjsKKyAgICAvLyAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc29tZV9zY3Jp
cHQpOworICAgIC8vICAgICBgKTsKKyAgICAvLyB9KTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0Jhc2UuY3BwCmluZGV4IGNlMTMyM2Q1NjI2Yi4uZjI2N2NiZjZiNzM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC04Niw3ICs4Niw3IEBAIEpTVmFsdWVSZWYgSlNFdmFs
dWF0ZVNjcmlwdChKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzY3JpcHQsIEpTT2JqZWN0
UmVmIHRoCiAgICAgc3RhcnRpbmdMaW5lTnVtYmVyID0gc3RkOjptYXgoMSwgc3RhcnRpbmdMaW5l
TnVtYmVyKTsKIAogICAgIGF1dG8gc291cmNlVVJMID0gc291cmNlVVJMU3RyaW5nID8gVVJMKHsg
fSwgc291cmNlVVJMU3RyaW5nLT5zdHJpbmcoKSkgOiBVUkwoKTsKLSAgICBTb3VyY2VDb2RlIHNv
dXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT5zdHJpbmcoKSwgU291cmNlT3JpZ2luIHsgc291cmNl
VVJMIH0sIHNvdXJjZVVSTC5zdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZy
b21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyKCkpKTsKKyAg
ICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT5zdHJpbmcoKSwgU291cmNl
T3JpZ2luIHsgc291cmNlVVJMIH0sIFNvdXJjZVRhaW50ZWRPcmlnaW46OlVudGFpbnRlZCwgc291
cmNlVVJMLnN0cmluZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2Vk
SW50KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogCiAgICAgcmV0dXJu
IEpTRXZhbHVhdGVTY3JpcHRJbnRlcm5hbChsb2NrZXIsIGN0eCwgdGhpc09iamVjdCwgc291cmNl
LCBleGNlcHRpb24pOwogfQpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgSlNDaGVja1NjcmlwdFN5
bnRheChKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzY3JpcHQsIEpTU3RyaW5nUmVmIHNv
dXJjCiAgICAgc3RhcnRpbmdMaW5lTnVtYmVyID0gc3RkOjptYXgoMSwgc3RhcnRpbmdMaW5lTnVt
YmVyKTsKIAogICAgIGF1dG8gc291cmNlVVJMID0gc291cmNlVVJMU3RyaW5nID8gVVJMKHsgfSwg
c291cmNlVVJMU3RyaW5nLT5zdHJpbmcoKSkgOiBVUkwoKTsKLSAgICBTb3VyY2VDb2RlIHNvdXJj
ZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT5zdHJpbmcoKSwgU291cmNlT3JpZ2luIHsgc291cmNlVVJM
IH0sIHNvdXJjZVVSTC5zdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21P
bmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICBT
b3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT5zdHJpbmcoKSwgU291cmNlT3Jp
Z2luIHsgc291cmNlVVJMIH0sIFNvdXJjZVRhaW50ZWRPcmlnaW46OlVudGFpbnRlZCwgc291cmNl
VVJMLnN0cmluZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50
KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIAogICAgIEpTVmFs
dWUgc3ludGF4RXhjZXB0aW9uOwogICAgIGJvb2wgaXNWYWxpZFN5bnRheCA9IGNoZWNrU3ludGF4
KGdsb2JhbE9iamVjdCwgc291cmNlLCAmc3ludGF4RXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggNDhlOTBjZGUzODBiLi4xNjhmZTdjMjFm
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC0xNTIs
NyArMTUyLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRnVuY3Rpb24oSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgbmFtZSwgdW5zaWduZWQgcGEKICAgICB9CiAKICAgICBhdXRvIHNv
dXJjZVVSTCA9IHNvdXJjZVVSTFN0cmluZyA/IFVSTCh7IH0sIHNvdXJjZVVSTFN0cmluZy0+c3Ry
aW5nKCkpIDogVVJMKCk7Ci0gICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEZ1bmN0aW9u
KGdsb2JhbE9iamVjdCwgYXJncywgbmFtZUlELCBTb3VyY2VPcmlnaW4geyBzb3VyY2VVUkwgfSwg
c291cmNlVVJMLnN0cmluZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJh
c2VkSW50KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOworICAgIEpTT2Jq
ZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RGdW5jdGlvbihnbG9iYWxPYmplY3QsIGFyZ3MsIG5hbWVJ
RCwgU291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sIHNvdXJjZVVSTC5zdHJpbmcoKSwgU291cmNl
VGFpbnRlZE9yaWdpbjo6VW50YWludGVkLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJv
bU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAg
IGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pID09IEV4
Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCiAgICAgICAgIHJlc3VsdCA9IG51bGxwdHI7CiAgICAg
cmV0dXJuIHRvUmVmKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTU2NyaXB0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQpp
bmRleCAyYTg4ZTU5MWVjNDkuLjdlMjkyZWE0YjIwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU2NyaXB0Lm1tCkBAIC0yNzEsNyArMjcxLDcgQEAgLSAoSlNDOjpTb3VyY2VDb2RlKXNvdXJj
ZUNvZGUKICAgICBVUkwgdXJsID0gVVJMKHsgfSwgZmlsZW5hbWUpOwogICAgIGF1dG8gdHlwZSA9
IG1fdHlwZSA9PSBrSlNTY3JpcHRUeXBlTW9kdWxlID8gSlNDOjpTb3VyY2VQcm92aWRlclNvdXJj
ZVR5cGU6Ok1vZHVsZSA6IEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtOwog
ICAgIEpTQzo6U291cmNlT3JpZ2luIG9yaWdpbih1cmwpOwotICAgIFJlZjxKU1NjcmlwdFNvdXJj
ZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciA9IEpTU2NyaXB0U291cmNlUHJvdmlkZXI6OmNyZWF0
ZShzZWxmLCBvcmlnaW4sIFdURk1vdmUoZmlsZW5hbWUpLCBzdGFydFBvc2l0aW9uLCB0eXBlKTsK
KyAgICBSZWY8SlNTY3JpcHRTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIgPSBKU1Njcmlw
dFNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc2VsZiwgb3JpZ2luLCBXVEZNb3ZlKGZpbGVuYW1lKSwg
SlNDOjpTb3VyY2VUYWludGVkT3JpZ2luOjpVbnRhaW50ZWQsIHN0YXJ0UG9zaXRpb24sIHR5cGUp
OwogICAgIEpTQzo6U291cmNlQ29kZSBzb3VyY2VDb2RlKFdURk1vdmUoc291cmNlUHJvdmlkZXIp
LCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29s
dW1uLm9uZUJhc2VkSW50KCkpOwogICAgIHJldHVybiBzb3VyY2VDb2RlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCBhNWE5NjMwZTJlYjguLjNiMzc2
MGU2NGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJl
Zi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKQEAg
LTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE9wYXF1ZUpTU2NyaXB0KFZN
JiB2bSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFN0cmluZyYmIGZpbGVuYW1l
LCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkKLSAgICAgICAg
OiBTb3VyY2VQcm92aWRlcihzb3VyY2VPcmlnaW4sIFdURk1vdmUoZmlsZW5hbWUpLCBUZXh0UG9z
aXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51bWJlciks
IE9yZGluYWxOdW1iZXIoKSksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKKyAg
ICAgICAgOiBTb3VyY2VQcm92aWRlcihzb3VyY2VPcmlnaW4sIFdURk1vdmUoZmlsZW5hbWUpLCBT
b3VyY2VUYWludGVkT3JpZ2luOjpVbnRhaW50ZWQsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVy
Ojpmcm9tT25lQmFzZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcigpKSwg
U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtKQogICAgICAgICAsIG1fdm0odm0pCiAg
ICAgICAgICwgbV9zb3VyY2Uoc291cmNlLmlzTnVsbCgpID8gKlN0cmluZ0ltcGw6OmVtcHR5KCkg
OiAqc291cmNlLmltcGwoKSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ29udGV4dC5jcHAKaW5kZXggMjhiZDc0ZGY5MWM3Li4zOGU2ZWM0ODNmNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC05NzMsNyArOTc0
LDcgQEAgSlNDQ2hlY2tTeW50YXhSZXN1bHQganNjX2NvbnRleHRfY2hlY2tfc3ludGF4KEpTQ0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIGMKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2Nr
ZXIodm0pOwogCiAgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJpbmc6OmZyb21MYXRp
bjEodXJpKSkgOiBVUkwoKTsKLSAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjptYWtl
U291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2RlKSA6
IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCisgICAgSlNDOjpTb3Vy
Y2VDb2RlIHNvdXJjZSA9IEpTQzo6bWFrZVNvdXJjZShTdHJpbmc6OmZyb21VVEY4KGNvZGUsIGxl
bmd0aCA8IDAgPyBzdHJsZW4oY29kZSkgOiBsZW5ndGgpLCBKU0M6OlNvdXJjZU9yaWdpbiB7IHNv
dXJjZVVSTCB9LCBTb3VyY2VUYWludGVkT3JpZ2luOjpVbnRhaW50ZWQsCiAgICAgICAgIHNvdXJj
ZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJ
bnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9IGZh
bHNlOwogICAgIEpTQzo6UGFyc2VyRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVz
LnB5CmluZGV4IGQzODM0ZDNjODI1Yi4uNGViMDI0OWM4Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX3Rl
bXBsYXRlcy5weQpAQCAtMjksNyArMjksNyBAQAogCiBjbGFzcyBCdWlsdGluc0dlbmVyYXRvclRl
bXBsYXRlczoKIAotICAgIERlZmF1bHRDb3B5cmlnaHQgPSAiMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuIgorICAgIERlZmF1bHRDb3B5cmlnaHQgPSAiMjAxNi0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4iCiAgICAgTGljZW5zZVRleHQgPSAoCiAgICAgIiIi
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgZXhw
bGljaXQgJHtvYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNJiB2bSkKICAgICAgICAg
OiBtX3ZtKHZtKQogICAgICAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCi0jZGVmaW5l
IElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIG92
ZXJyaWRkZW5OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1ha2VTb3VyY2Uo
U3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoc18jI25hbWUsIGxlbmd0aCksIHsgfSkp
CisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlv
bk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1h
a2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoc18jI25hbWUsIGxlbmd0
aCksIHsgfSwgSlNDOjpTb3VyY2VUYWludGVkT3JpZ2luOjpVbnRhaW50ZWQpKQogICAgICAgICAk
e21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShJTklUSUFM
SVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCiAjdW5kZWYgSU5JVElBTElaRV9CVUlMVElOX1NP
VVJDRV9NRU1CRVJTCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCA3MDk5MjZhZTczODYuLmIyY2Q0OWUw
ZjlkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEJ1
aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZNJiB2bSkKICAgICA6IG1fdm0o
dm0pCi0gICAgLCBtX2NvbWJpbmVkU291cmNlUHJvdmlkZXIoU3RyaW5nU291cmNlUHJvdmlkZXI6
OmNyZWF0ZShTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhzX0pTQ0NvbWJpbmVkQ29k
ZSwgc19KU0NDb21iaW5lZENvZGVMZW5ndGgpLCB7IH0sIFN0cmluZygpKSkKKyAgICAsIG1fY29t
YmluZWRTb3VyY2VQcm92aWRlcihTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKFN0cmluZ0lt
cGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHNfSlNDQ29tYmluZWRDb2RlLCBzX0pTQ0NvbWJpbmVk
Q29kZUxlbmd0aCksIHsgfSwgU3RyaW5nKCksIFNvdXJjZVRhaW50ZWRPcmlnaW46OlVudGFpbnRl
ZCkpCiB7CiB9CiAKQEAgLTQ4LDExICs0OCwxMSBAQCBTb3VyY2VDb2RlIEJ1aWx0aW5FeGVjdXRh
Ymxlczo6ZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShDb25zdHJ1Y3RvcktpbmQgY29ucwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZTogewogICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBiYXNlQ29uc3RydWN0b3JDb2Rl
KE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCIoZnVuY3Rpb24gKCkgeyB9KSIpKTsKLSAgICAgICAg
cmV0dXJuIG1ha2VTb3VyY2UoYmFzZUNvbnN0cnVjdG9yQ29kZSwgeyB9KTsKKyAgICAgICAgcmV0
dXJuIG1ha2VTb3VyY2UoYmFzZUNvbnN0cnVjdG9yQ29kZSwgeyB9LCBTb3VyY2VUYWludGVkT3Jp
Z2luOjpVbnRhaW50ZWQpOwogICAgIH0KICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6RXh0ZW5k
czogewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBkZXJpdmVk
Q29uc3RydWN0b3JDb2RlKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCIoZnVuY3Rpb24gKC4uLmFy
Z3MpIHsgc3VwZXIoLi4uYXJncyk7IH0pIikpOwotICAgICAgICByZXR1cm4gbWFrZVNvdXJjZShk
ZXJpdmVkQ29uc3RydWN0b3JDb2RlLCB7IH0pOworICAgICAgICByZXR1cm4gbWFrZVNvdXJjZShk
ZXJpdmVkQ29uc3RydWN0b3JDb2RlLCB7IH0sIFNvdXJjZVRhaW50ZWRPcmlnaW46OlVudGFpbnRl
ZCk7CiAgICAgfQogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA4MjEwZDFj
NGQ3YzQuLjIwZjY5NmFmM2Y5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKQEAgLTI4Myw2ICsyODMsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9j
awogICAgICwgbV9udW1DYWxsZWVMb2NhbHMob3RoZXIubV9udW1DYWxsZWVMb2NhbHMpCiAgICAg
LCBtX251bVZhcnMob3RoZXIubV9udW1WYXJzKQogICAgICwgbV9udW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcChvdGhlci5tX251bWJlck9mQXJndW1lbnRzVG9Ta2lwKQorICAgICwgbV9jb3VsZEJlVGFp
bnRlZChvdGhlci5tX2NvdWxkQmVUYWludGVkKQogICAgICwgbV9oYXNEZWJ1Z2dlclN0YXRlbWVu
dChmYWxzZSkKICAgICAsIG1fc3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZURpc2FibGVkKQogICAg
ICwgbV9udW1CcmVha3BvaW50cygwKQpAQCAtMzA1LDYgKzMwNiw3IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvcHlQYXJzZWRCbG9ja1RhZywg
Q29kZUJsb2NrCiAgICAgQVNTRVJUKHNvdXJjZSgpLnByb3ZpZGVyKCkpOwogICAgIHNldE51bVBh
cmFtZXRlcnMob3RoZXIubnVtUGFyYW1ldGVycygpKTsKIAorICAgIEFTU0VSVChtX2NvdWxkQmVU
YWludGVkID09ICh0YWludGVkbmVzc1RvVHJpU3RhdGUoc291cmNlKCkucHJvdmlkZXIoKS0+c291
cmNlVGFpbnRlZE9yaWdpbigpKSAhPSBUcmlTdGF0ZTo6VHJ1ZSkpOwogICAgIHZtLmhlYXAuY29k
ZUJsb2NrU2V0KCkuYWRkKHRoaXMpOwogfQogCkBAIC0zMzMsNiArMzM1LDggQEAgQ29kZUJsb2Nr
OjpDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXQKICAgICAsIG1faXNKZXR0aXNvbmVkKGZhbHNlKQogICAgICwgbV9udW1D
YWxsZWVMb2NhbHModW5saW5rZWRDb2RlQmxvY2stPm51bUNhbGxlZUxvY2FscygpKQogICAgICwg
bV9udW1WYXJzKHVubGlua2VkQ29kZUJsb2NrLT5udW1WYXJzKCkpCisgICAgLCBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwKDApCisgICAgLCBtX2NvdWxkQmVUYWludGVkKGZhbHNlKQogICAgICwg
bV9oYXNEZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKICAgICAsIG1fc3RlcHBpbmdNb2RlKFN0ZXBw
aW5nTW9kZURpc2FibGVkKQogICAgICwgbV9udW1CcmVha3BvaW50cygwKQpAQCAtMzUwLDYgKzM1
NCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0CiAgICAgQVNTRVJUKHNvdXJjZSgpLnByb3Zp
ZGVyKCkpOwogICAgIHNldE51bVBhcmFtZXRlcnModW5saW5rZWRDb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSk7CiAKKyAgICBtX2NvdWxkQmVUYWludGVkID0gc291cmNlKCkucHJvdmlkZXIoKS0+
Y291bGRCZVRhaW50ZWQoKTsKICAgICB2bS5oZWFwLmNvZGVCbG9ja1NldCgpLmFkZCh0aGlzKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGI5
N2EwYjAzMWUyYy4uZjM2ZmNjZjcwNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCkBAIC0xNTksNiArMTU5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dE51bVBhcmFtZXRlcnModW5zaWduZWQgbmV3VmFsdWUpOwogcHVibGljOgogCisgICAgYm9vbCBj
b3VsZEJlVGFpbnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRCZVRhaW50ZWQ7IH0KKwogICAg
IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCkgY29uc3QgeyByZXR1cm4gbV9udW1i
ZXJPZkFyZ3VtZW50c1RvU2tpcDsgfQogCiAgICAgdW5zaWduZWQgbnVtQ2FsbGVlTG9jYWxzKCkg
Y29uc3QgeyByZXR1cm4gbV9udW1DYWxsZWVMb2NhbHM7IH0KQEAgLTkxNiw3ICs5MTgsOCBAQCBw
cml2YXRlOgogICAgIGNvbnN0IHVuc2lnbmVkIG1fbnVtQ2FsbGVlTG9jYWxzOwogICAgIGNvbnN0
IHVuc2lnbmVkIG1fbnVtVmFyczsKICAgICB1bnNpZ25lZCBtX251bVBhcmFtZXRlcnM7Ci0gICAg
dW5zaWduZWQgbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCB7IDAgfTsKKyAgICB1bnNpZ25lZCBt
X251bWJlck9mQXJndW1lbnRzVG9Ta2lwIDogMzE7CisgICAgdW5zaWduZWQgbV9jb3VsZEJlVGFp
bnRlZCA6IDE7CiAgICAgdWludDMyX3QgbV9vc3JFeGl0Q291bnRlciB7IDAgfTsKICAgICB1bmlv
biB7CiAgICAgICAgIHVuc2lnbmVkIG1fZGVidWdnZXJSZXF1ZXN0czsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IDg1
MjE1YmQzODA0Yi4uNTY4YmFlZTQ1NWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCBK
U1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihWTSYg
dm0sIGNvbnN0IFN0cmluZyYgc2NyaQogICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFi
bGVzVW5kZXJURFooc2NvcGUodm0pLT5qc1Njb3BlKCksIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2
YXRlTmFtZUVudmlyb25tZW50KTsKIAogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJp
Y3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJh
bWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2Nr
KCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkt
Pm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVC
bG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1Vu
ZGVyVERaLCAmcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOworICAgIGF1dG8qIGV2
YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJj
ZShzY3JpcHQsIGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKSwgU291cmNlVGFpbnRl
ZE9yaWdpbjo6VW50YWludGVkKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJp
dmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5uZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPnBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50KCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+
aXNBcnJvd0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRl
T3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwg
JnByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKICAgICBpZiAoVU5MSUtFTFkoY2F0
Y2hTY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5l
eGNlcHRpb24oKTsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBkOTJiNmFkMjBi
NzguLmIwZWNkODFhNTYxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAKQEAgLTE1Miw2ICsxNTIsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxl
RW50cnkoKQogICAgIC8vIGJvdGggbm9ybWFsIHJldHVybiBjb2RlIGFuZCB3aGVuIGp1bXBpbmcg
dG8gYW4gZXhjZXB0aW9uIGhhbmRsZXIpLgogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAg
ICAgaml0QXNzZXJ0Q29kZUJsb2NrT25DYWxsRnJhbWVXaXRoVHlwZShHUFJJbmZvOjpyZWdUMiwg
SklUVHlwZTo6REZHSklUKTsKKyAgICBpZiAobV9ncmFwaC5tX2NvZGVCbG9jay0+Y291bGRCZVRh
aW50ZWQoKSkKKyAgICAgICAgc3RvcmU4KFRydXN0ZWRJbW0zMigxKSwgdm0oKS5hZGRyZXNzT2ZN
aWdodEJlRXhlY3V0aW5nVGFpbnRlZENvZGUoKSk7CiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmNv
bXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBiNDI0OTUwZWIwZTQuLjMwNGIyODVkMGI5OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAt
MjYzLDYgKzI2Myw5IEBAIHB1YmxpYzoKICAgICAgICAgbV92bVZhbHVlID0gbV9vdXQuY29uc3RJ
bnRQdHIodm0pOwogICAgICAgICBtX251bWJlclRhZyA9IG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1
ZTo6TnVtYmVyVGFnKTsKICAgICAgICAgbV9ub3RDZWxsTWFzayA9IG1fb3V0LmNvbnN0SW50NjQo
SlNWYWx1ZTo6Tm90Q2VsbE1hc2spOworCisgICAgICAgIGlmIChtX2dyYXBoLm1fY29kZUJsb2Nr
LT5jb3VsZEJlVGFpbnRlZCgpKQorICAgICAgICAgICAgbV9vdXQuc3RvcmUzMkFzOChtX291dC5p
bnQzMk9uZSwgbV9vdXQuYWJzb2x1dGUodm0tPmFkZHJlc3NPZk1pZ2h0QmVFeGVjdXRpbmdUYWlu
dGVkQ29kZSgpKSk7CiAgICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZURGR0Nsb2JiZXJpemUo
KSkKICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzJBczgobV9vdXQuaW50MzJaZXJvLCBtX291dC5h
YnNvbHV0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPih2bSkgKyBPQkpFQ1RfT0ZGU0VUT0YoVk0s
IGRpZEVudGVyVk0pKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCAyMmQxYmNlN2VhYjAuLmI0
ZGUzZjJiZDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDhlZjAyNDRmMGVkYy4uZDliNjQ0MTlkM2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlw
dEhvc3Q6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
CiAKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBKU09iamVjdCogc2Nv
cGVFeHRlbnNpb24gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmdldE9iamVjdCgpOwotICAgIEpT
VmFsdWUgcmVzdWx0ID0gSlNDOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihnbG9iYWxPYmpl
Y3QsIG1ha2VTb3VyY2UocHJvZ3JhbSwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0p
KSwgc2NvcGVFeHRlbnNpb24sIGV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6
OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShwcm9n
cmFtLCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSksIFNvdXJjZVRhaW50ZWRPcmln
aW46OlVudGFpbnRlZCksIHNjb3BlRXh0ZW5zaW9uLCBleGNlcHRpb24pOwogICAgIGlmIChleGNl
cHRpb24pCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGV4Y2Vw
dGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDZlOTc2NjIxMTg2
My4uNGExMjAzZDk5NDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTg5
LDcgKzg5LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxQcm90b2NvbDo6
UnVudGltZTo6U3ludGF4RXJyb3JUeXBlLCBTdHJpbmcgLyoKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhtX3ZtKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwotICAgIGNoZWNrU3ludGF4KG1fdm0s
IEpTQzo6bWFrZVNvdXJjZShleHByZXNzaW9uLCB7IH0pLCBlcnJvcik7CisgICAgY2hlY2tTeW50
YXgobV92bSwgSlNDOjptYWtlU291cmNlKGV4cHJlc3Npb24sIHsgfSwgU291cmNlVGFpbnRlZE9y
aWdpbjo6VW50YWludGVkKSwgZXJyb3IpOwogCiAgICAgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6
UnVudGltZTo6U3ludGF4RXJyb3JUeXBlPiByZXN1bHQ7CiAgICAgU3RyaW5nIG1lc3NhZ2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApp
bmRleCA4NGZjNmQ3MTM2MGUuLmMyNDA4Y2Q0ZTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xMzUsNiArMTM1LDcgQEAg
SlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBFQ01BTW9kZSBlY21hTW8KICAgICBlbHNlCiAgICAgICAgIGV2YWxDb250ZXh0VHlw
ZSA9IEV2YWxDb250ZXh0VHlwZTo6Tm9uZTsKIAorICAgIC8vIFRPRE86IFNob3VsZCB0aGlzIGF2
b2lkIHRoZSBjYWNoZSBpZiB0YWludGVkPwogICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBldmFs
ID0gY2FsbGVyQ29kZUJsb2NrLT5kaXJlY3RFdmFsQ29kZUNhY2hlKCkudHJ5R2V0KHByb2dyYW1T
b3VyY2UsIGNhbGxlckNhbGxTaXRlSW5kZXgpOwogICAgIGlmICghZXZhbCkgewogICAgICAgICBp
ZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpIHsKQEAgLTE1NSw3ICsxNTYsOCBAQCBKU1ZhbHVlIGV2
YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVD
TUFNb2RlIGVjbWFNbwogICAgICAgICBURFpFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsK
ICAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBwcml2YXRlTmFtZUVudmlyb25tZW50Owog
ICAgICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNj
b3BlQ2hhaW4sIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50KTsKLSAg
ICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBt
YWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlk
ZXIoKS0+c291cmNlT3JpZ2luKCkpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2Vk
Q29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjYWxsZXJVbmxpbmtlZENv
ZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCAmcHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOworICAgICAgICBTb3VyY2VUYWludGVkT3JpZ2luIHNv
dXJjZVRhaW50ZWRPcmlnaW4gPSBjb21wdXRlTmV3U291cmNlVGFpbnRlZE9yaWdpbkZyb21TdGFj
ayh2bSwgY2FsbEZyYW1lKTsKKyAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpj
cmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVC
bG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCksIHNvdXJjZVRhaW50ZWRP
cmlnaW4pLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5uZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+cHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY2FsbGVyQ29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxD
b250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCAmcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwg
ZWNtYU1vZGUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkg
PT0gIWV2YWwpOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKQEAgLTgyNiw2ICs4MjgsOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
UHJvZ3JhbShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiwgSgogCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIGlmIChwYXJzZVJl
c3VsdCkgeworICAgICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPmNvdWxkQmVUYWludGVkKCkp
CisgICAgICAgICAgICB2bS5zZXRNaWdodEJlRXhlY3V0aW5nVGFpbnRlZENvZGUoKTsKICAgICAg
ICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgZW50cnkgPSAwOyBlbnRy
eSA8IEpTT05QRGF0YS5zaXplKCk7IGVudHJ5KyspIHsKICAgICAgICAgICAgIFZlY3RvcjxKU09O
UFBhdGhFbnRyeT4gSlNPTlBQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCA2MmJhMDAxOTJlNjIuLmI5ZWJlMWJiMmYwNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtMjAxLDcgKzIwMSw3IEBAIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICB2b2lkIHNldHVwVmFy
YXJnc0ZyYW1lQW5kU2V0VGhpcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogZXhlY0NhbGxl
ciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBhcmd1
bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwogICAg
IHZvaWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgdWludDMyX3QgbGVuZ3RoKTsK
ICAgICB2b2lkIHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lQW5kU2V0VGhpcyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgdWludDMyX3QgbGVuZ3RoKTsKLSAgICAKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAxOWMxZDgzM2E2
MDMuLjMzNWY5YjU3MWQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTExNjgsMTMgKzExNjgs
MTIgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTaGVsbFNvdXJjZVByb3ZpZGVyKGNvbnN0IFN0
cmluZyYgc291cmNlLCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgU3RyaW5nJiYg
c291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIFNvdXJjZVByb3Zp
ZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlKQotICAgICAgICA6IFN0cmluZ1NvdXJjZVByb3ZpZGVy
KHNvdXJjZSwgc291cmNlT3JpZ2luLCBXVEZNb3ZlKHNvdXJjZVVSTCksIHN0YXJ0UG9zaXRpb24s
IHNvdXJjZVR5cGUpCisgICAgICAgIDogU3RyaW5nU291cmNlUHJvdmlkZXIoc291cmNlLCBzb3Vy
Y2VPcmlnaW4sIFNvdXJjZVRhaW50ZWRPcmlnaW46OlVudGFpbnRlZCwgV1RGTW92ZShzb3VyY2VV
UkwpLCBzdGFydFBvc2l0aW9uLCBzb3VyY2VUeXBlKQogICAgICAgICAvLyBXb3JrZXJzIHN0YXJ0
ZWQgdmlhICQuYWdlbnQuc3RhcnQgYXJlIG5vdCBzaHV0IGRvd24gaW4gYSBzeW5jaHJvbm91cyBt
YW5uZXIsIGFuZCBpdAogICAgICAgICAvLyBpcyBwb3NzaWJsZSB0aGUgbWFpbiB0aHJlYWQgdGVy
bWluYXRlcyB0aGUgcHJvY2VzcyB3aGlsZSBhIHdvcmtlciBpcyB3cml0aW5nIGl0cwogICAgICAg
ICAvLyBieXRlY29kZSBjYWNoZSwgd2hpY2ggcmVzdWx0cyBpbiBpbnRlcm1pdHRlbnQgdGVzdCBm
YWlsdXJlcy4gQXMgJC5hZ2VudC5zdGFydCBpcyBvbmx5CiAgICAgICAgIC8vIGEgcmFyZWx5IHVz
ZWQgdGVzdGluZyBmYWNpbGl0eSwgd2Ugc2ltcGx5IGRvIG5vdCBjYWNoZSBieXRlY29kZSBvbiB0
aGVzZSB0aHJlYWRzLgogICAgICAgICAsIG1fY2FjaGVFbmFibGVkKFdvcmtlcjo6Y3VycmVudCgp
LmlzTWFpbigpICYmICEhT3B0aW9uczo6ZGlza0NhY2hlUGF0aCgpKQotCiAgICAgewogICAgIH0K
IApAQCAtMTYyMCw3ICsxNjE5LDEwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
blJ1blN0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGCiAgICAgcmVh
bG0tPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFyZ3VtZW50cyJf
cyksIGFycmF5KTsKIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgIGV2
YWx1YXRlKHJlYWxtLCBqc2NTb3VyY2Uoc291cmNlLCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9y
aWdpbih2bSkpLCBKU1ZhbHVlKCksIGV4Y2VwdGlvbik7CisgICAgeworICAgICAgICBTb3VyY2VD
b2RlIGNvZGUgPSBqc2NTb3VyY2Uoc291cmNlLCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdp
bih2bSksIFN0cmluZygpLCBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBl
OjpQcm9ncmFtKTsKKyAgICAgICAgZXZhbHVhdGUocmVhbG0sIGNvZGUsIEpTVmFsdWUoKSwgZXhj
ZXB0aW9uKTsKKyAgICB9CiAKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgIGlmICh2bS5p
c1Rlcm1pbmF0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbi5nZXQoKSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCmluZGV4IDg2ZmUxMjRhODczYy4uMzUwN2YxNGVkZmFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaApAQCAtOTYsOSAr
OTYsOSBAQCBwcml2YXRlOgogICAgIE9yZGluYWxOdW1iZXIgbV9zdGFydENvbHVtbjsKIH07CiAK
LWlubGluZSBTb3VyY2VDb2RlIG1ha2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0
IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBTdHJpbmcgZmlsZW5hbWUgPSBTdHJpbmcoKSwg
Y29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKCksIFNvdXJj
ZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlID0gU291cmNlUHJvdmlkZXJTb3VyY2VUeXBl
OjpQcm9ncmFtKQoraW5saW5lIFNvdXJjZUNvZGUgbWFrZVNvdXJjZShjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFNvdXJjZVRhaW50ZWRPcmln
aW4gc291cmNlVGFpbnRlZE9yaWdpbiwgU3RyaW5nIGZpbGVuYW1lID0gU3RyaW5nKCksIGNvbnN0
IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbigpLCBTb3VyY2VQcm92
aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSA9IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJv
Z3JhbSkKIHsKLSAgICByZXR1cm4gU291cmNlQ29kZShTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3Jl
YXRlKHNvdXJjZSwgc291cmNlT3JpZ2luLCBXVEZNb3ZlKGZpbGVuYW1lKSwgc3RhcnRQb3NpdGlv
biwgc291cmNlVHlwZSksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0
UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSk7CisgICAgcmV0dXJuIFNvdXJjZUNvZGUo
U3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHNvdXJjZU9yaWdpbiwgV1RGTW92
ZShmaWxlbmFtZSksIHNvdXJjZVRhaW50ZWRPcmlnaW4sIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5
cGUpLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1f
Y29sdW1uLm9uZUJhc2VkSW50KCkpOwogfQogCiBpbmxpbmUgU291cmNlQ29kZSBTb3VyY2VDb2Rl
OjpzdWJFeHByZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xvc2VCcmFjZSwg
aW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmNwcAppbmRleCA0ZDE0YzAzNDIzODMuLjBl
NTZkOTM0M2VkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3Vy
Y2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQ
cm92aWRlci5jcHAKQEAgLTMwLDExICszMCw2MyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogREVGSU5F
X0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihTdHJpbmdTb3VyY2VQcm92aWRlcik7CiAK
LVNvdXJjZVByb3ZpZGVyOjpTb3VyY2VQcm92aWRlcihjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJj
ZU9yaWdpbiwgU3RyaW5nJiYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9z
aXRpb24sIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlKQorU3RyaW5nIHNvdXJj
ZVRhaW50ZWRPcmlnaW5Ub1N0cmluZyhTb3VyY2VUYWludGVkT3JpZ2luIHRhaW50ZWRuZXNzKQor
eworICAgIHN3aXRjaCAodGFpbnRlZG5lc3MpIHsKKyAgICBjYXNlIFNvdXJjZVRhaW50ZWRPcmln
aW46OlVudGFpbnRlZDogcmV0dXJuICJVbnRhaW50ZWQiX3M7CisgICAgY2FzZSBTb3VyY2VUYWlu
dGVkT3JpZ2luOjpLbm93blRhaW50ZWQ6IHJldHVybiAiS25vd25UYWludGVkIl9zOworICAgIGNh
c2UgU291cmNlVGFpbnRlZE9yaWdpbjo6SW5kaXJlY3RseVRhaW50ZWQ6IHJldHVybiAiSW5kaXJl
Y3RseVRhaW50ZWQiX3M7CisgICAgY2FzZSBTb3VyY2VUYWludGVkT3JpZ2luOjpJbmRpcmVjdGx5
VGFpbnRlZEJ5SGlzdG9yeTogcmV0dXJuICJJbmRpcmVjdGx5VGFpbnRlZEJ5SGlzdG9yeSJfczsK
KyAgICBkZWZhdWx0OiBicmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitTb3VyY2VUYWludGVkT3JpZ2luIHNvdXJjZVRh
aW50ZWRPcmlnaW5Gcm9tU3RhY2soVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAg
ICBpZiAoIXZtLm1pZ2h0QmVFeGVjdXRpbmdUYWludGVkQ29kZSgpKQorICAgICAgICByZXR1cm4g
U291cmNlVGFpbnRlZE9yaWdpbjo6VW50YWludGVkOworICAgIFNvdXJjZVRhaW50ZWRPcmlnaW4g
cmVzdWx0ID0gU291cmNlVGFpbnRlZE9yaWdpbjo6SW5kaXJlY3RseVRhaW50ZWRCeUhpc3Rvcnk7
CisKKyAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFtZSwgdm0sIFsmXSAoU3RhY2tWaXNp
dG9yJiB2aXNpdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICBpZiAoIXZpc2l0b3It
PmNvZGVCbG9jaygpIHx8ICF2aXNpdG9yLT5jb2RlQmxvY2soKS0+Y291bGRCZVRhaW50ZWQoKSkK
KyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworCisgICAgICAg
IHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdCwgdmlzaXRvci0+Y29kZUJsb2NrKCktPnNvdXJjZSgp
LnByb3ZpZGVyKCktPnNvdXJjZVRhaW50ZWRPcmlnaW4oKSk7CisgICAgICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkRvbmU7CisgICAgfSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitT
b3VyY2VUYWludGVkT3JpZ2luIGNvbXB1dGVOZXdTb3VyY2VUYWludGVkT3JpZ2luRnJvbVN0YWNr
KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgaWYgKCF2bS5taWdodEJlRXhl
Y3V0aW5nVGFpbnRlZENvZGUoKSkKKyAgICAgICAgcmV0dXJuIFNvdXJjZVRhaW50ZWRPcmlnaW46
OlVudGFpbnRlZDsKKworICAgIFNvdXJjZVRhaW50ZWRPcmlnaW4gcmVzdWx0ID0gU291cmNlVGFp
bnRlZE9yaWdpbjo6SW5kaXJlY3RseVRhaW50ZWRCeUhpc3Rvcnk7CisgICAgU3RhY2tWaXNpdG9y
Ojp2aXNpdChjYWxsRnJhbWUsIHZtLCBbJl0gKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgLT4gSXRl
cmF0aW9uU3RhdHVzIHsKKyAgICAgICAgaWYgKHZpc2l0b3ItPmNvZGVCbG9jaygpICYmIHZpc2l0
b3ItPmNvZGVCbG9jaygpLT5jb3VsZEJlVGFpbnRlZCgpKSB7CisgICAgICAgICAgICBTb3VyY2VU
YWludGVkT3JpZ2luIGN1cnJlbnRUYWludGVkT3JpZ2luID0gdmlzaXRvci0+Y29kZUJsb2NrKCkt
PnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJjZVRhaW50ZWRPcmlnaW4oKTsKKyAgICAgICAgICAg
IGlmIChjdXJyZW50VGFpbnRlZE9yaWdpbiA+PSBTb3VyY2VUYWludGVkT3JpZ2luOjpJbmRpcmVj
dGx5VGFpbnRlZCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IFNvdXJjZVRhaW50ZWRPcmln
aW46OkluZGlyZWN0bHlUYWludGVkOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkRvbmU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICB9KTsKKworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK1NvdXJjZVByb3ZpZGVyOjpTb3VyY2VQcm92aWRlcihjb25zdCBTb3VyY2VPcmlnaW4m
IHNvdXJjZU9yaWdpbiwgU3RyaW5nJiYgc291cmNlVVJMLCBTb3VyY2VUYWludGVkT3JpZ2luIHRh
aW50ZWRuZXNzLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIFNvdXJjZVByb3Zp
ZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlKQogICAgIDogbV9zb3VyY2VUeXBlKHNvdXJjZVR5cGUp
CiAgICAgLCBtX3NvdXJjZU9yaWdpbihzb3VyY2VPcmlnaW4pCiAgICAgLCBtX3NvdXJjZVVSTChX
VEZNb3ZlKHNvdXJjZVVSTCkpCiAgICAgLCBtX3N0YXJ0UG9zaXRpb24oc3RhcnRQb3NpdGlvbikK
KyAgICAsIG1fdGFpbnRlZG5lc3ModGFpbnRlZG5lc3MpCiB7CiB9CiAKQEAgLTUzLDcgKzEwNSw3
IEBAIHZvaWQgU291cmNlUHJvdmlkZXI6OmdldElEKCkKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKIEJhc2VXZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVyOjpCYXNlV2ViQXNzZW1ibHlTb3VyY2VQ
cm92aWRlcihjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgU3RyaW5nJiYgc291cmNl
VVJMKQotICAgIDogU291cmNlUHJvdmlkZXIoc291cmNlT3JpZ2luLCBXVEZNb3ZlKHNvdXJjZVVS
TCksIFRleHRQb3NpdGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OldlYkFzc2VtYmx5
KQorICAgIDogU291cmNlUHJvdmlkZXIoc291cmNlT3JpZ2luLCBXVEZNb3ZlKHNvdXJjZVVSTCks
IFNvdXJjZVRhaW50ZWRPcmlnaW46OlVudGFpbnRlZCwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVBy
b3ZpZGVyU291cmNlVHlwZTo6V2ViQXNzZW1ibHkpCiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAppbmRleCA1N2Q4Mzk0ZDg0M2Mu
LmI3YTllZTI4NjM1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
b3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
UHJvdmlkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ5LDExICs0OSwzMyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrOwogCiAgICAgdXNpbmcgQnl0ZWNvZGVDYWNoZUdlbmVyYXRvciA9IEZ1bmN0aW9uPFJl
ZlB0cjxDYWNoZWRCeXRlY29kZT4oKT47CiAKKyAgICBlbnVtIGNsYXNzIFNvdXJjZVRhaW50ZWRP
cmlnaW4gOiB1aW50OF90IHsKKyAgICAgICAgVW50YWludGVkID0gMCwKKyAgICAgICAgSW5kaXJl
Y3RseVRhaW50ZWRCeUhpc3RvcnksIC8vIE1lYW5zIHRoZSBWTSBzYXcgc29tZSB0YWludGVkIGNv
ZGUgdGhpcyBldmVudCBsb29wIHR1cm4gYnV0IG5vIHN1Y2ggY29kZSB3YXMgb24gdGhlIHN0YWNr
IHdoZW4gdGhpcyBzb3VyY2Ugd2FzIGNyZWF0ZWQuCisgICAgICAgIEluZGlyZWN0bHlUYWludGVk
LAorICAgICAgICBLbm93blRhaW50ZWQsCisgICAgfTsKKworICAgIGlubGluZSBUcmlTdGF0ZSB0
YWludGVkbmVzc1RvVHJpU3RhdGUoU291cmNlVGFpbnRlZE9yaWdpbiBvcmlnaW4pCisgICAgewor
ICAgICAgICBpZiAob3JpZ2luID09IFNvdXJjZVRhaW50ZWRPcmlnaW46OlVudGFpbnRlZCkKKyAg
ICAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CisgICAgICAgIGlmIChvcmlnaW4gPT0g
U291cmNlVGFpbnRlZE9yaWdpbjo6S25vd25UYWludGVkKQorICAgICAgICAgICAgcmV0dXJuIFRy
aVN0YXRlOjpUcnVlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7Cisg
ICAgfQorCisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTb3VyY2VUYWludGVkT3JpZ2luIHNvdXJj
ZVRhaW50ZWRPcmlnaW5Gcm9tU3RhY2soVk0mLCBDYWxsRnJhbWUqKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBTb3VyY2VUYWludGVkT3JpZ2luIGNvbXB1dGVOZXdTb3VyY2VUYWludGVkT3JpZ2lu
RnJvbVN0YWNrKFZNJiwgQ2FsbEZyYW1lKik7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIHNvdXJjZVRhaW50ZWRPcmlnaW5Ub1N0cmluZyhTb3VyY2VUYWludGVkT3JpZ2luIHRhaW50
ZWRuZXNzKTsKKwogICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8
U291cmNlUHJvdmlkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnRw
dHJfdCBudWxsSUQgPSAxOwogICAgICAgICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU291
cmNlUHJvdmlkZXIoY29uc3QgU291cmNlT3JpZ2luJiwgU3RyaW5nJiYgc291cmNlVVJMLCBjb25z
dCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSk7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFNvdXJjZVByb3ZpZGVyKGNvbnN0IFNvdXJjZU9y
aWdpbiYsIFN0cmluZyYmIHNvdXJjZVVSTCwgU291cmNlVGFpbnRlZE9yaWdpbiwgY29uc3QgVGV4
dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUpOwogCiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgflNvdXJjZVByb3ZpZGVyKCk7CiAKQEAg
LTg5LDYgKzExMSw5IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7CiAgICAgICAg
IHZvaWQgc2V0U291cmNlVVJMRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgc291cmNlVVJMRGlyZWN0
aXZlKSB7IG1fc291cmNlVVJMRGlyZWN0aXZlID0gc291cmNlVVJMRGlyZWN0aXZlOyB9CiAgICAg
ICAgIHZvaWQgc2V0U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJj
ZU1hcHBpbmdVUkxEaXJlY3RpdmUpIHsgbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlID0gc291
cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsgfQogCisgICAgICAgIFNvdXJjZVRhaW50ZWRPcmlnaW4g
c291cmNlVGFpbnRlZE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdGFpbnRlZG5lc3M7IH0KKyAg
ICAgICAgYm9vbCBjb3VsZEJlVGFpbnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFpbnRlZG5lc3Mg
IT0gU291cmNlVGFpbnRlZE9yaWdpbjo6VW50YWludGVkOyB9CisKICAgICBwcml2YXRlOgogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdldElEKCk7CiAKQEAgLTk5LDE1ICsxMjQsMTYg
QEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKICAgICAgICAgU3RyaW5nIG1fc291
cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsKICAgICAgICAgVGV4dFBvc2l0aW9uIG1fc3RhcnRQb3Np
dGlvbjsKICAgICAgICAgU291cmNlSUQgbV9pZCB7IDAgfTsKKyAgICAgICAgU291cmNlVGFpbnRl
ZE9yaWdpbiBtX3RhaW50ZWRuZXNzOwogICAgIH07CiAKICAgICBERUNMQVJFX0FMTE9DQVRPUl9X
SVRIX0hFQVBfSURFTlRJRklFUihTdHJpbmdTb3VyY2VQcm92aWRlcik7CiAgICAgY2xhc3MgU3Ry
aW5nU291cmNlUHJvdmlkZXIgOiBwdWJsaWMgU291cmNlUHJvdmlkZXIgewogICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRF9XSVRIX0hFQVBfSURFTlRJRklFUihTdHJpbmdTb3VyY2VQcm92
aWRlcik7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPFN0cmluZ1NvdXJjZVByb3Zp
ZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291
cmNlT3JpZ2luLCBTdHJpbmcgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9z
aXRpb24gPSBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5
cGUgPSBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pCisgICAgICAgIHN0YXRpYyBS
ZWY8U3RyaW5nU291cmNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29u
c3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFN0cmluZyBzb3VyY2VVUkwsIFNvdXJjZVRh
aW50ZWRPcmlnaW4gdGFpbnRlZG5lc3MsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlv
biA9IFRleHRQb3NpdGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSA9
IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nU291cmNlUHJvdmlkZXIoc291cmNlLCBzb3Vy
Y2VPcmlnaW4sIFdURk1vdmUoc291cmNlVVJMKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkp
OworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nU291cmNlUHJvdmlkZXIo
c291cmNlLCBzb3VyY2VPcmlnaW4sIHRhaW50ZWRuZXNzLCBXVEZNb3ZlKHNvdXJjZVVSTCksIHN0
YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0IG92ZXJyaWRlCkBAIC0xMjEsOCArMTQ3LDggQEAgY2xhc3Mg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgot
ICAgICAgICBTdHJpbmdTb3VyY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFN0cmluZyYmIHNvdXJjZVVSTCwgY29uc3QgVGV4
dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNl
VHlwZSkKLSAgICAgICAgICAgIDogU291cmNlUHJvdmlkZXIoc291cmNlT3JpZ2luLCBXVEZNb3Zl
KHNvdXJjZVVSTCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpCisgICAgICAgIFN0cmluZ1Nv
dXJjZVByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTb3VyY2VPcmlnaW4mIHNv
dXJjZU9yaWdpbiwgU291cmNlVGFpbnRlZE9yaWdpbiB0YWludGVkbmVzcywgU3RyaW5nJiYgc291
cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIFNvdXJjZVByb3ZpZGVy
U291cmNlVHlwZSBzb3VyY2VUeXBlKQorICAgICAgICAgICAgOiBTb3VyY2VQcm92aWRlcihzb3Vy
Y2VPcmlnaW4sIFdURk1vdmUoc291cmNlVVJMKSwgdGFpbnRlZG5lc3MsIHN0YXJ0UG9zaXRpb24s
IHNvdXJjZVR5cGUpCiAgICAgICAgICAgICAsIG1fc291cmNlKHNvdXJjZS5pc051bGwoKSA/ICpT
dHJpbmdJbXBsOjplbXB0eSgpIDogKnNvdXJjZS5pbXBsKCkpCiAgICAgICAgIHsKICAgICAgICAg
fQpAQCAtMjA5LDMgKzIzNSwxNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOwog
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW4+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBKU0M6OlNvdXJjZVRhaW50ZWRPcmln
aW4sCisgICAgICAgIEpTQzo6U291cmNlVGFpbnRlZE9yaWdpbjo6VW50YWludGVkLAorICAgICAg
ICBKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW46OkluZGlyZWN0bHlUYWludGVkQnlIaXN0b3J5LAor
ICAgICAgICBKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW46OkluZGlyZWN0bHlUYWludGVkLAorICAg
ICAgICBKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW46Oktub3duVGFpbnRlZAorICAgID47Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcAppbmRleCBmOWExZDRkZDlmMjIuLjA1NWJiYjEwNTlkZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMTU0Myw2ICsx
NTQzLDcgQEAgcHVibGljOgogICAgICAgICBtX3NvdXJjZVVSTERpcmVjdGl2ZS5lbmNvZGUoZW5j
b2Rlciwgc291cmNlUHJvdmlkZXIuc291cmNlVVJMRGlyZWN0aXZlKCkpOwogICAgICAgICBtX3Nv
dXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUuZW5jb2RlKGVuY29kZXIsIHNvdXJjZVByb3ZpZGVyLnNv
dXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoKSk7CiAgICAgICAgIG1fc3RhcnRQb3NpdGlvbi5lbmNv
ZGUoZW5jb2Rlciwgc291cmNlUHJvdmlkZXIuc3RhcnRQb3NpdGlvbigpKTsKKyAgICAgICAgbV9z
b3VyY2VUYWludGVkT3JpZ2luID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc291cmNlUHJvdmlkZXIu
c291cmNlVGFpbnRlZE9yaWdpbigpKTsKICAgICB9CiAKICAgICB2b2lkIGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBTb3VyY2VQcm92aWRlciYgc291cmNlUHJvdmlkZXIpIGNvbnN0CkBAIC0xNTU3
LDYgKzE1NTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQ2FjaGVkU3RyaW5nIG1fc291cmNlVVJMRGly
ZWN0aXZlOwogICAgIENhY2hlZFN0cmluZyBtX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmU7CiAg
ICAgQ2FjaGVkVGV4dFBvc2l0aW9uIG1fc3RhcnRQb3NpdGlvbjsKKyAgICB1aW50OF90IG1fc291
cmNlVGFpbnRlZE9yaWdpbjsKIH07CiAKIGNsYXNzIENhY2hlZFN0cmluZ1NvdXJjZVByb3ZpZGVy
IDogcHVibGljIENhY2hlZFNvdXJjZVByb3ZpZGVyU2hhcGU8U3RyaW5nU291cmNlUHJvdmlkZXIs
IENhY2hlZFN0cmluZ1NvdXJjZVByb3ZpZGVyPiB7CkBAIC0xNTc1LDggKzE1NzcsOSBAQCBwdWJs
aWM6CiAgICAgICAgIFNvdXJjZU9yaWdpbiBkZWNvZGVkU291cmNlT3JpZ2luID0gbV9zb3VyY2VP
cmlnaW4uZGVjb2RlKGRlY29kZXIpOwogICAgICAgICBTdHJpbmcgZGVjb2RlZFNvdXJjZVVSTCA9
IG1fc291cmNlVVJMLmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgVGV4dFBvc2l0aW9uIGRlY29k
ZWRTdGFydFBvc2l0aW9uID0gbV9zdGFydFBvc2l0aW9uLmRlY29kZShkZWNvZGVyKTsKKyAgICAg
ICAgU291cmNlVGFpbnRlZE9yaWdpbiBkZWNvZGVkU291cmNlVGFpbnRlZE9yaWdpbiA9IHN0YXRp
Y19jYXN0PFNvdXJjZVRhaW50ZWRPcmlnaW4+KG1fc291cmNlVGFpbnRlZE9yaWdpbik7CiAKLSAg
ICAgICAgUmVmPFN0cmluZ1NvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciA9IFN0cmluZ1Nv
dXJjZVByb3ZpZGVyOjpjcmVhdGUoZGVjb2RlZFNvdXJjZSwgZGVjb2RlZFNvdXJjZU9yaWdpbiwg
ZGVjb2RlZFNvdXJjZVVSTCwgZGVjb2RlZFN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpOworICAg
ICAgICBSZWY8U3RyaW5nU291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyID0gU3RyaW5nU291
cmNlUHJvdmlkZXI6OmNyZWF0ZShkZWNvZGVkU291cmNlLCBkZWNvZGVkU291cmNlT3JpZ2luLCBk
ZWNvZGVkU291cmNlVVJMLCBkZWNvZGVkU291cmNlVGFpbnRlZE9yaWdpbiwgZGVjb2RlZFN0YXJ0
UG9zaXRpb24sIHNvdXJjZVR5cGUpOwogICAgICAgICBCYXNlOjpkZWNvZGUoZGVjb2Rlciwgc291
cmNlUHJvdmlkZXIuZ2V0KCkpOwogICAgICAgICByZXR1cm4gJnNvdXJjZVByb3ZpZGVyLmxlYWtS
ZWYoKTsKICAgICB9CkBAIC0xNjAxLDYgKzE2MDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBkZWNvZGVkRGF0YTsKICAgICAgICAgU291cmNlT3JpZ2luIGRlY29kZWRTb3Vy
Y2VPcmlnaW4gPSBtX3NvdXJjZU9yaWdpbi5kZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIFN0cmlu
ZyBkZWNvZGVkU291cmNlVVJMID0gbV9zb3VyY2VVUkwuZGVjb2RlKGRlY29kZXIpOworICAgICAg
ICAvLyBTb3VyY2VUYWludGVkT3JpZ2luIGRlY29kZWRTb3VyY2VUYWludGVkT3JpZ2luID0gc3Rh
dGljX2Nhc3Q8U291cmNlVGFpbnRlZE9yaWdpbj4obV9zb3VyY2VUYWludGVkT3JpZ2luKTsKIAog
ICAgICAgICBtX2RhdGEuZGVjb2RlKGRlY29kZXIsIGRlY29kZWREYXRhKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggZTRk
ZmJlMTZiMjE3Li40NmFhMTE4MjlmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtOTY3LDYgKzk2Nyw4IEBAIEpTQ19ERUZJ
TkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW50ZXIpCiB7CiAgICAgQkVHSU4oKTsKICAg
ICBIZWFwOjpoZWFwKGNvZGVCbG9jayktPndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgIGlm
IChVTkxJS0VMWShjb2RlQmxvY2stPmNvdWxkQmVUYWludGVkKCkpKQorICAgICAgICB2bS5zZXRN
aWdodEJlRXhlY3V0aW5nVGFpbnRlZENvZGUoKTsKICAgICBFTkQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRm9yd2FyZC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRm9yd2FyZC5oCmluZGV4IGEzNmY0ZTBhNWI5ZS4uMTk1YzllNmY3
NDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Gb3J3YXJkLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRm9yd2FyZC5oCkBAIC0zMCw2ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQXJyYXlCdWZmZXI7CitlbnVtIGNsYXNz
IFNvdXJjZVRhaW50ZWRPcmlnaW4gOiB1aW50OF90OwogfQogCiB1c2luZyBKU0M6OkFycmF5QnVm
ZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcAppbmRleCBlYTM1NGEwY2ZmZjMuLjcwMjc0NDVmZDI4NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgU3RyaW5nIHN0cmluZ2lmeUZ1bmN0aW9uKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZwogfQogCiAvLyBF
Q01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKLUpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdz
LCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291
cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBw
b3NpdGlvbiwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRp
ZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwsIFNvdXJjZVRhaW50ZWRPcmlnaW4gdGFpbnRlZE9yaWdpbiwg
Y29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIGZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTE0OCwxMCArMTQ4LDEwIEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjCiAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUV2YWxFcnJv
cihnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkp
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZ2xvYmFs
T2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZU9yaWdpbiwgc291cmNlVVJMLCBwb3Np
dGlvbiwgLTEsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgbmV3VGFyZ2V0KSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJs
ZWRDaGVjayhnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwgc291cmNlT3JpZ2luLCBz
b3VyY2VVUkwsIHRhaW50ZWRPcmlnaW4sIHBvc2l0aW9uLCAtMSwgZnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlLCBuZXdUYXJnZXQpKTsKIH0KIAotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tp
cHBpbmdFdmFsRW5hYmxlZENoZWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU291
cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBU
ZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlLCBKU1ZhbHVlIG5ld1Rhcmdl
dCkKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJ
ZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgU291cmNlVGFpbnRlZE9yaWdpbiB0YWludGVkT3Jp
Z2luLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVy
LCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlLCBKU1Zh
bHVlIG5ld1RhcmdldCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTYxLDcgKzE2MSw3IEBA
IEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgaWYgKHByb2dyYW0uaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNl
KHByb2dyYW0sIHNvdXJjZU9yaWdpbiwgc291cmNlVVJMLCBwb3NpdGlvbik7CisgICAgU291cmNl
Q29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHByb2dyYW0sIHNvdXJjZU9yaWdpbiwgdGFpbnRlZE9y
aWdpbiwgc291cmNlVVJMLCBwb3NpdGlvbik7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IG51
bGxwdHI7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZnJvbUdsb2JhbENvZGUoZnVuY3Rpb25OYW1lLCBnbG9iYWxPYmplY3QsIHNvdXJjZSwg
ZXhjZXB0aW9uLCBvdmVycmlkZUxpbmVOdW1iZXIsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0
ZXJzRW5kUG9zaXRpb24pOwogICAgIGlmIChVTkxJS0VMWSghZnVuY3Rpb24pKSB7CkBAIC0yMTYs
NyArMjE2LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxl
ZENoZWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIEpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgY29uc3QgQXJnTGlzdCYgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIGZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwotICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihnbG9iYWxPYmpl
Y3QsIGFyZ3MsIHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91cywgY2FsbEZyYW1lLT5jYWxsZXJT
b3VyY2VPcmlnaW4odm0pLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKCksIGZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZSwgbmV3VGFyZ2V0KTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb24oZ2xv
YmFsT2JqZWN0LCBhcmdzLCB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMsIGNhbGxGcmFtZS0+
Y2FsbGVyU291cmNlT3JpZ2luKHZtKSwgU3RyaW5nKCksIGNvbXB1dGVOZXdTb3VyY2VUYWludGVk
T3JpZ2luRnJvbVN0YWNrKHZtLCBjYWxsRnJhbWUpLCBUZXh0UG9zaXRpb24oKSwgZnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlLCBuZXdUYXJnZXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
aAppbmRleCA3N2QzODFlNzRkMDEuLjkxMTM1ZTI5NmJiYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNjEsMTIgKzYx
LDEyIEBAIGVudW0gY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIHsKICAgICBBc3luY0dl
bmVyYXRvciwKIH07CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihKU0dsb2JhbE9iamVj
dCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFNvdXJjZU9yaWdpbiYsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQ
b3NpdGlvbiYsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZTo6RnVuY3Rpb24sIEpTVmFsdWUgbmV3VGFyZ2V0ID0gSlNWYWx1ZSgpKTsKK0pTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25z
dCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFNvdXJjZU9yaWdpbiYsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCBTb3VyY2VUYWludGVkT3JpZ2luLCBjb25zdCBXVEY6OlRleHRQb3Np
dGlvbiYsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZTo6RnVuY3Rpb24sIEpTVmFsdWUgbmV3VGFyZ2V0ID0gSlNWYWx1ZSgpKTsKIEpTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIGNvbnN0IEFyZ0xp
c3QmLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6
OkZ1bmN0aW9uLCBKU1ZhbHVlIG5ld1RhcmdldCA9IEpTVmFsdWUoKSk7CiAKIEpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVj
aygKICAgICBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgU291cmNlT3JpZ2luJiwKLSAgICBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRl
eHRQb3NpdGlvbiYsIGludCBvdmVycmlkZUxpbmVOdW1iZXIgPSAtMSwKKyAgICBjb25zdCBTdHJp
bmcmLCBTb3VyY2VUYWludGVkT3JpZ2luLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGludCBv
dmVycmlkZUxpbmVOdW1iZXIgPSAtMSwKICAgICBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPSBG
dW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uLCBKU1ZhbHVlIG5ld1RhcmdldCA9IEpT
VmFsdWUoKSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IDg2
MWU0ZjQ4NzYwOC4uYWZlNjA5MTBlN2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC00OTQsNyAr
NDk0LDggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNFdmFsLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW0KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShwYXJzZWRPYmplY3QpOwogCiAgICAgU291cmNlT3JpZ2luIHNvdXJjZU9yaWdpbiA9
IGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKTsKLSAgICBFdmFsRXhlY3V0YWJsZSog
ZXZhbCA9IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIG1h
a2VTb3VyY2Uocywgc291cmNlT3JpZ2luKSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxz
ZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKKyAgICBTb3VyY2VUYWludGVkT3JpZ2luIHNvdXJj
ZVRhaW50ZWRPcmlnaW4gPSBjb21wdXRlTmV3U291cmNlVGFpbnRlZE9yaWdpbkZyb21TdGFjayh2
bSwgY2FsbEZyYW1lKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZhbEV4
ZWN1dGFibGU6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uocywgc291cmNlT3Jp
Z2luLCBzb3VyY2VUYWludGVkT3JpZ2luKSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxz
ZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUu
ZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgIGlmICghZXZhbCkKICAgICAgICAgcmV0dXJuIGVu
Y29kZWRKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKaW5kZXggMzM4YTk2ZGJlZjU2Li40YWM3NGQwYjA5
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxt
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dS
ZWFsbVByb3RvdHlwZS5jcHAKQEAgLTEwMSw3ICsxMDEsOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oZXZhbEluUmVhbG0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIE5ha2VkUHRy
PEpTT2JqZWN0PiBleGVjdXRhYmxlRXJyb3I7Ci0gICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtl
U291cmNlKHNjcmlwdCwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKTsKKyAgICBT
b3VyY2VUYWludGVkT3JpZ2luIHNvdXJjZVRhaW50ZWRPcmlnaW4gPSBjb21wdXRlTmV3U291cmNl
VGFpbnRlZE9yaWdpbkZyb21TdGFjayh2bSwgY2FsbEZyYW1lKTsKKyAgICBTb3VyY2VDb2RlIHNv
dXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2
bSksIHNvdXJjZVRhaW50ZWRPcmlnaW4pOwogICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKHJlYWxtR2xvYmFsT2JqZWN0LCBzb3VyY2UsIERl
cml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgZXhl
Y3V0YWJsZUVycm9yKTsKICAgICBpZiAoZXhlY3V0YWJsZUVycm9yKSB7CiAgICAgICAgIEVycm9y
SW5zdGFuY2UqIGVycm9yID0ganNEeW5hbWljQ2FzdDxFcnJvckluc3RhbmNlKj4oSlNWYWx1ZShl
eGVjdXRhYmxlRXJyb3IuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IDgyNWVmMjZmZDNkNC4uMjA1YzIyZTBiNGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKQEAgLTM5NCw2ICszOTQsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBHQ0NsaWVu
dDo6SXNvU3Vic3BhY2UmIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKSB7IHJldHVy
biBjbGllbnRIZWFwLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7IH0KIAogICAgIFZN
VHlwZSB2bVR5cGU7CisgICAgYm9vbCBtX21pZ2h0QmVFeGVjdXRpbmdUYWludGVkQ29kZSB7IGZh
bHNlIH07CiAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsKICAgICBFbnRyeUZyYW1lKiB0b3BF
bnRyeUZyYW1lIHsgbnVsbHB0ciB9OwogICAgIC8vIE5PVEU6IFdoZW4gdGhyb3dpbmcgYW4gZXhj
ZXB0aW9uIHdoaWxlIHJvbGxpbmcgYmFjayB0aGUgY2FsbCBmcmFtZSwgdGhpcyBtYXkgYmUgZXF1
YWwgdG8KQEAgLTQ3OCw2ICs0NzksMTAgQEAgcHVibGljOgogICAgIFJlZjxBdG9tU3RyaW5nSW1w
bD4gbGFzdEF0b21pemVkSWRlbnRpZmllckF0b21TdHJpbmdJbXBsIHsgKnN0YXRpY19jYXN0PEF0
b21TdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSkgfTsKICAgICBKU09OQXRvbVN0cmlu
Z0NhY2hlIGpzb25BdG9tU3RyaW5nQ2FjaGU7CiAKKyAgICBib29sIG1pZ2h0QmVFeGVjdXRpbmdU
YWludGVkQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWlnaHRCZUV4ZWN1dGluZ1RhaW50ZWRDb2Rl
OyB9CisgICAgYm9vbCogYWRkcmVzc09mTWlnaHRCZUV4ZWN1dGluZ1RhaW50ZWRDb2RlKCkgeyBy
ZXR1cm4gJm1fbWlnaHRCZUV4ZWN1dGluZ1RhaW50ZWRDb2RlOyB9CisgICAgdm9pZCBzZXRNaWdo
dEJlRXhlY3V0aW5nVGFpbnRlZENvZGUoYm9vbCB2YWx1ZSA9IHRydWUpIHsgbV9taWdodEJlRXhl
Y3V0aW5nVGFpbnRlZENvZGUgPSB2YWx1ZTsgfQorCiAgICAgQXRvbVN0cmluZ1RhYmxlKiBhdG9t
U3RyaW5nVGFibGUoKSBjb25zdCB7IHJldHVybiBtX2F0b21TdHJpbmdUYWJsZTsgfQogICAgIFdU
Rjo6U3ltYm9sUmVnaXN0cnkmIHN5bWJvbFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zeW1ib2xSZWdp
c3RyeTsgfQogICAgIFdURjo6U3ltYm9sUmVnaXN0cnkmIHByaXZhdGVTeW1ib2xSZWdpc3RyeSgp
IHsgcmV0dXJuIG1fcHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAppbmRleCBiMWQ4ZGIxZjcyNDQuLjcyYWIz
YjU0YWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRy
eVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2Nv
cGUuY3BwCkBAIC05OCw2ICs5OCw3IEBAIFZNRW50cnlTY29wZTo6flZNRW50cnlTY29wZSgpCiAg
ICAgaWYgKFVOTElLRUxZKG1fdm0ud2F0Y2hkb2coKSkpCiAgICAgICAgIG1fdm0ud2F0Y2hkb2co
KS0+ZXhpdGVkVk0oKTsKIAorICAgIG1fdm0uc2V0TWlnaHRCZUV4ZWN1dGluZ1RhaW50ZWRDb2Rl
KGZhbHNlKTsKICAgICBtX3ZtLmVudHJ5U2NvcGUgPSBudWxscHRyOwogCiAgICAgZm9yIChhdXRv
JiBsaXN0ZW5lciA6IG1fZGlkUG9wTGlzdGVuZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKaW5kZXggMmI1ZjI4ZDQ5YjM0Li5jMmI3
MmUxNDJlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlv
bk92ZXJyaWRlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9u
T3ZlcnJpZGVzLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVP
dmVycmlkZUluZm8oY29uc3QgU291cmNlQ29kZSYgb3JpZ0NvZGUsIGNvbnN0IFN0cmluZyYgbmV3
CiAKICAgICBhdXRvIG92ZXJyaWRkZW4gPSAiPG92ZXJyaWRkZW4+Il9zOwogICAgIFVSTCB1cmwo
eyB9LCBvdmVycmlkZGVuKTsKLSAgICBSZWY8U291cmNlUHJvdmlkZXI+IG5ld1Byb3ZpZGVyID0g
U3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShuZXdQcm92aWRlclN0cmluZywgU291cmNlT3Jp
Z2luIHsgdXJsIH0sIG92ZXJyaWRkZW4pOworICAgIFJlZjxTb3VyY2VQcm92aWRlcj4gbmV3UHJv
dmlkZXIgPSBTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG5ld1Byb3ZpZGVyU3RyaW5nLCBT
b3VyY2VPcmlnaW4geyB1cmwgfSwgb3ZlcnJpZGRlbiwgU291cmNlVGFpbnRlZE9yaWdpbjo6VW50
YWludGVkKTsKIAogICAgIGluZm8uZmlyc3RMaW5lID0gMTsKICAgICBpbmZvLmxpbmVDb3VudCA9
IDE7IC8vIEZha2luZyBpdC4gVGhpcyBkb2Vzbid0IHJlYWxseSBtYXR0ZXIgZm9yIG5vdy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBjOTg1MmY1MzUw
NDMuLjU2ZjNjNThiNTg0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiQ29tcGxldGlvbi5oIgogI2luY2x1ZGUgIkNvbnRyb2xGbG93UHJvZmlsZXIuaCIKICNpbmNs
dWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01KSVRHZXR0ZXJT
ZXR0ZXIuaCIKQEAgLTIxMjMsNiArMjEyNCw3IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uQ2xlYXJMaW5rQnVmZmVyU3RhdHMpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25MaW5rQnVmZmVyU3RhdHMpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25WYWx1ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvbkdldFBJRCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihmdW5jdGlvblZNVGFpbnRlZFN0YXRlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uSGF2ZUFCYWRUaW1lKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uSXNIYXZpbmdBQmFkVGltZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplKTsKQEAgLTIxNTEsNiArMjE1Myw3
IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uQ3JlYXRlT2JqZWN0
RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihmdW5jdGlvbkNyZWF0ZUVtcHR5RnVuY3Rpb25XaXRoTmFtZSk7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbik7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblJ1blRhaW50ZWRTdHJpbmcp
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25HZXRQcml2YXRlUHJv
cGVydHkpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25DcmVhdGVS
b290KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uQ3JlYXRlRWxl
bWVudCk7CkBAIC0yNzgyLDYgKzI3ODUsMTkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1
bmN0aW9uR2V0UElELCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSkKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpOwogfQogCisv
LyBSZXR1cm5zIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGN1cnJlbnQgdGFpbnRlZG5lc3Mgc3Rh
dGUgb2YgdGhlIFZNLgorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uVk1UYWludGVk
U3RhdGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFN0cmluZyBsZXZlbCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIFNvdXJjZVRhaW50ZWRP
cmlnaW4gc291cmNlVGFpbnRlZE9yaWdpbiA9IHNvdXJjZVRhaW50ZWRPcmlnaW5Gcm9tU3RhY2so
dm0sIGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwg
c291cmNlVGFpbnRlZE9yaWdpblRvU3RyaW5nKHNvdXJjZVRhaW50ZWRPcmlnaW4pKSk7Cit9CisK
IC8vIE1ha2UgdGhlIGdsb2JhbE9iamVjdCBoYXZlIGEgYmFkIHRpbWUuIERvZXMgbm90aGluZyBp
ZiB0aGUgb2JqZWN0IGlzIG5vdCBhIEpTR2xvYmFsT2JqZWN0LgogLy8gVXNhZ2U6ICR2bS5oYXZl
QUJhZFRpbWUoZ2xvYmFsT2JqZWN0KQogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9u
SGF2ZUFCYWRUaW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtMzIyMiwxMiArMzIzOCwzNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZnVuY3Rpb25DcmVhdGVCdWlsdGluLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
QwogICAgIFN0cmluZyBmdW5jdGlvblRleHQgPSBhc1N0cmluZyhjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJj
ZShXVEZNb3ZlKGZ1bmN0aW9uVGV4dCksIHsgfSk7CisgICAgU291cmNlQ29kZSBzb3VyY2UgPSBt
YWtlU291cmNlKFdURk1vdmUoZnVuY3Rpb25UZXh0KSwgeyB9LCBTb3VyY2VUYWludGVkT3JpZ2lu
OjpVbnRhaW50ZWQpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJmb28iX3MpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIENvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdCktPmxpbmsodm0sIG51bGxwdHIsIHNvdXJjZSksIGdsb2JhbE9i
amVjdCk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZ1bmMpOwogfQogCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25SdW5UYWludGVkU3RyaW5nLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIERvbGxhclZN
QXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEgfHwgIWNhbGxGcmFtZS0+YXJndW1lbnQoMCku
aXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKworICAgIFN0cmluZyBmdW5jdGlvblRleHQgPSBhc1N0cmluZyhjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNv
dXJjZShmdW5jdGlvblRleHQsIHsgfSwgU291cmNlVGFpbnRlZE9yaWdpbjo6S25vd25UYWludGVk
KTsKKyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGVycm9yOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIEpTVmFsdWUoKSwgZXJyb3IpOworCisgICAg
aWYgKGVycm9yKQorICAgICAgICByZXR1cm4gdGhyb3dWTUV4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBlcnJvci5nZXQoKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7Cit9CisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkdldFByaXZhdGVQcm9w
ZXJ0eSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwpAQCAtNDAyNSw2ICs0
MDYzLDEwIEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiY3JlYXRlRE9NSklUQ2hlY2tKU0Nhc3RPYmplY3QiX3MsIGZ1bmN0aW9u
Q3JlYXRlRE9NSklUQ2hlY2tKU0Nhc3RPYmplY3QsIDApOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAi
Y3JlYXRlRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0Il9zLCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdl
dHRlckJhc2VKU09iamVjdCwgMCk7CiAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVCdWlsdGlu
Il9zLCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4sIDIpOworCisgICAgYWRkRnVuY3Rpb24odm0sICJ2
bVRhaW50ZWRTdGF0ZSJfcywgZnVuY3Rpb25WTVRhaW50ZWRTdGF0ZSwgMCk7CisgICAgYWRkRnVu
Y3Rpb24odm0sICJydW5UYWludGVkU3RyaW5nIl9zLCBmdW5jdGlvblJ1blRhaW50ZWRTdHJpbmcs
IDEpOworCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3Jl
YXRlV2FzbVN0cmVhbWluZ1BhcnNlciJfcywgZnVuY3Rpb25DcmVhdGVXYXNtU3RyZWFtaW5nUGFy
c2VyLCAwKTsKICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZVdhc21TdHJlYW1pbmdDb21waWxl
ckZvckNvbXBpbGUiX3MsIGZ1bmN0aW9uQ3JlYXRlV2FzbVN0cmVhbWluZ0NvbXBpbGVyRm9yQ29t
cGlsZSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVk
U2NyaXB0U291cmNlUHJvdmlkZXIuaAppbmRleCBmZjZjMjBmZGJhYWMuLjc5YmU0YjdkYTgxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNl
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRT
b3VyY2VQcm92aWRlci5oCkBAIC00OCw3ICs0OCw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcihDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCwg
SlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSwgUmVmPENhY2hlZFNjcmlw
dEZldGNoZXI+JiYgc2NyaXB0RmV0Y2hlcikKLSAgICAgICAgOiBTb3VyY2VQcm92aWRlcihKU0M6
OlNvdXJjZU9yaWdpbiB7IGNhY2hlZFNjcmlwdC0+cmVzcG9uc2UoKS51cmwoKSwgV1RGTW92ZShz
Y3JpcHRGZXRjaGVyKSB9LCBTdHJpbmcoY2FjaGVkU2NyaXB0LT5yZXNwb25zZSgpLnVybCgpLnN0
cmluZygpKSwgVGV4dFBvc2l0aW9uKCksIHNvdXJjZVR5cGUpCisgICAgICAgIC8vIFRPRE8gSSB0
aGluayB0aGlzIG5lZWRzIHRvIGFzayBJVFAuCisgICAgICAgIDogU291cmNlUHJvdmlkZXIoSlND
OjpTb3VyY2VPcmlnaW4geyBjYWNoZWRTY3JpcHQtPnJlc3BvbnNlKCkudXJsKCksIFdURk1vdmUo
c2NyaXB0RmV0Y2hlcikgfSwgU3RyaW5nKGNhY2hlZFNjcmlwdC0+cmVzcG9uc2UoKS51cmwoKS5z
dHJpbmcoKSksIEpTQzo6U291cmNlVGFpbnRlZE9yaWdpbjo6VW50YWludGVkLCBUZXh0UG9zaXRp
b24oKSwgc291cmNlVHlwZSkKICAgICAgICAgLCBtX2NhY2hlZFNjcmlwdChjYWNoZWRTY3JpcHQp
CiAgICAgewogICAgICAgICBtX2NhY2hlZFNjcmlwdC0+YWRkQ2xpZW50KCp0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5k
ZXggMmU2OTAwMWI1ZDc0Li5hMmQ5MjAzZGQ0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2F0Y2hTY29wZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uQ29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
ZGVudGlmaWVySW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NvdXJjZVByb3Zp
ZGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAg
LTc0LDYgKzc1LDggQEAgSlNMYXp5RXZlbnRMaXN0ZW5lcjo6SlNMYXp5RXZlbnRMaXN0ZW5lcihD
cmVhdGlvbkFyZ3VtZW50cyYmIGFyZ3VtZW50cywgY29uc3QgVVIKICAgICAsIG1fY29kZShhcmd1
bWVudHMuYXR0cmlidXRlVmFsdWUpCiAgICAgLCBtX3NvdXJjZVVSTChzb3VyY2VVUkwpCiAgICAg
LCBtX3NvdXJjZVBvc2l0aW9uKGNvbnZlcnRaZXJvVG9PbmUoc291cmNlUG9zaXRpb24pKQorICAg
IC8vIFRPRE8gU2hvdWxkIHRoaXMgYmUgaG9pc3RlZCBzb21ld2hlcmUgdXAgdGhlIGNhbGwgc3Rh
Y2s/CisgICAgLCBtX3NvdXJjZVRhaW50ZWRPcmlnaW4oSlNDOjpjb21wdXRlTmV3U291cmNlVGFp
bnRlZE9yaWdpbkZyb21TdGFjayhhcmd1bWVudHMuZG9jdW1lbnQudm0oKSwgYXJndW1lbnRzLmRv
Y3VtZW50LnZtKCkudG9wQ2FsbEZyYW1lKSkKICAgICAsIG1fb3JpZ2luYWxOb2RlKFdURk1vdmUo
YXJndW1lbnRzLm5vZGUpKQogewogI2lmbmRlZiBOREVCVUcKQEAgLTE1OSw3ICsxNjIsNyBAQCBK
U09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgZXhlYwogICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0gY29uc3Ry
dWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgICAgIGxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3MsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIG1fZnVuY3Rpb25OYW1l
KSwKICAgICAgICAgU291cmNlT3JpZ2luIHsgbV9zb3VyY2VVUkwsIENhY2hlZFNjcmlwdEZldGNo
ZXI6OmNyZWF0ZShkb2N1bWVudC5jaGFyc2V0KCkpIH0sCi0gICAgICAgIG1fc291cmNlVVJMLnN0
cmluZygpLCBtX3NvdXJjZVBvc2l0aW9uLCBvdmVycmlkZUxpbmVOdW1iZXIpOworICAgICAgICBt
X3NvdXJjZVVSTC5zdHJpbmcoKSwgbV9zb3VyY2VUYWludGVkT3JpZ2luLCBtX3NvdXJjZVBvc2l0
aW9uLCBvdmVycmlkZUxpbmVOdW1iZXIpOwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpIHsKICAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaAppbmRleCBlZjE1ODczYzcxZjcu
LmYyYjg4ZTgwZTgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNM
YXp5RXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6
eUV2ZW50TGlzdGVuZXIuaApAQCAtNTksNiArNTksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
X2NvZGU7CiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIFRleHRQb3NpdGlvbiBtX3NvdXJjZVBv
c2l0aW9uOworICAgIEpTQzo6U291cmNlVGFpbnRlZE9yaWdpbiBtX3NvdXJjZVRhaW50ZWRPcmln
aW47CiAgICAgV2Vha1B0cjxDb250YWluZXJOb2RlPiBtX29yaWdpbmFsTm9kZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cy5oCmluZGV4IDA2YWQ4OWQ0ZjY0My4uMWYxNWZjMjk0N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsMjcgKzM4
LDMwIEBAIGVudW0gY2xhc3MgRm9yY2VVc2VyR2VzdHVyZSA6IGJvb2wgeyBObywgWWVzIH07CiB1
c2luZyBBcmd1bWVudFdpcmVCeXRlc01hcCA9IEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhf
dD4+OwogCiBzdHJ1Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgewotICAgIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzKFN0cmluZyYmIHNvdXJjZSwgVVJMJiYgc291cmNlVVJMLCBSdW5Bc0FzeW5j
RnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uLCBzdGQ6Om9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5
dGVzTWFwPiYmIGFyZ3VtZW50cywgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0dXJlKQor
ICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKFN0cmluZyYmIHNvdXJjZSwgSlNDOjpTb3VyY2VU
YWludGVkT3JpZ2luIHRhaW50ZWRuZXNzLCBVUkwmJiBzb3VyY2VVUkwsIFJ1bkFzQXN5bmNGdW5j
dGlvbiBydW5Bc0FzeW5jRnVuY3Rpb24sIHN0ZDo6b3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNN
YXA+JiYgYXJndW1lbnRzLCBGb3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdlc3R1cmUpCiAgICAg
ICAgIDogc291cmNlKFdURk1vdmUoc291cmNlKSkKICAgICAgICAgLCBzb3VyY2VVUkwoV1RGTW92
ZShzb3VyY2VVUkwpKQorICAgICAgICAsIHRhaW50ZWRuZXNzKHRhaW50ZWRuZXNzKQogICAgICAg
ICAsIHJ1bkFzQXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24pCiAgICAgICAgICwgYXJn
dW1lbnRzKFdURk1vdmUoYXJndW1lbnRzKSkKICAgICAgICAgLCBmb3JjZVVzZXJHZXN0dXJlKGZv
cmNlVXNlckdlc3R1cmUpCiAgICAgewogICAgIH0KIAotICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzKGNvbnN0IFN0cmluZyYgc291cmNlLCBVUkwmJiBzb3VyY2VVUkwsIGJvb2wgcnVuQXNBc3lu
Y0Z1bmN0aW9uLCBzdGQ6Om9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3VtZW50
cywgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKGNv
bnN0IFN0cmluZyYgc291cmNlLCBKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW4gdGFpbnRlZG5lc3Ms
IFVSTCYmIHNvdXJjZVVSTCwgYm9vbCBydW5Bc0FzeW5jRnVuY3Rpb24sIHN0ZDo6b3B0aW9uYWw8
QXJndW1lbnRXaXJlQnl0ZXNNYXA+JiYgYXJndW1lbnRzLCBib29sIGZvcmNlVXNlckdlc3R1cmUp
CiAgICAgICAgIDogc291cmNlKHNvdXJjZSkKICAgICAgICAgLCBzb3VyY2VVUkwoV1RGTW92ZShz
b3VyY2VVUkwpKQorICAgICAgICAsIHRhaW50ZWRuZXNzKHRhaW50ZWRuZXNzKQogICAgICAgICAs
IHJ1bkFzQXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24gPyBSdW5Bc0FzeW5jRnVuY3Rp
b246OlllcyA6IFJ1bkFzQXN5bmNGdW5jdGlvbjo6Tm8pCiAgICAgICAgICwgYXJndW1lbnRzKFdU
Rk1vdmUoYXJndW1lbnRzKSkKICAgICAgICAgLCBmb3JjZVVzZXJHZXN0dXJlKGZvcmNlVXNlckdl
c3R1cmUgPyBGb3JjZVVzZXJHZXN0dXJlOjpZZXMgOiBGb3JjZVVzZXJHZXN0dXJlOjpObykKICAg
ICB7CiAgICAgfQogCi0gICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoU3RyaW5nJiYgc291cmNl
LCBVUkwmJiBzb3VyY2VVUkwsIGJvb2wgcnVuQXNBc3luY0Z1bmN0aW9uLCBzdGQ6Om9wdGlvbmFs
PEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3VtZW50cywgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
KQorICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKFN0cmluZyYmIHNvdXJjZSwgSlNDOjpTb3Vy
Y2VUYWludGVkT3JpZ2luIHRhaW50ZWRuZXNzLCBVUkwmJiBzb3VyY2VVUkwsIGJvb2wgcnVuQXNB
c3luY0Z1bmN0aW9uLCBzdGQ6Om9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3Vt
ZW50cywgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogICAgICAgICA6IHNvdXJjZShXVEZNb3ZlKHNv
dXJjZSkpCiAgICAgICAgICwgc291cmNlVVJMKFdURk1vdmUoc291cmNlVVJMKSkKKyAgICAgICAg
LCB0YWludGVkbmVzcyh0YWludGVkbmVzcykKICAgICAgICAgLCBydW5Bc0FzeW5jRnVuY3Rpb24o
cnVuQXNBc3luY0Z1bmN0aW9uID8gUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXMgOiBSdW5Bc0FzeW5j
RnVuY3Rpb246Ok5vKQogICAgICAgICAsIGFyZ3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50cykpCiAg
ICAgICAgICwgZm9yY2VVc2VyR2VzdHVyZShmb3JjZVVzZXJHZXN0dXJlID8gRm9yY2VVc2VyR2Vz
dHVyZTo6WWVzIDogRm9yY2VVc2VyR2VzdHVyZTo6Tm8pCkBAIC02NywxNiArNzAsMTkgQEAgc3Ry
dWN0IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBzb3VyY2U7CiAgICAg
VVJMIHNvdXJjZVVSTDsKKyAgICBKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW4gdGFpbnRlZG5lc3M7
CiAgICAgUnVuQXNBc3luY0Z1bmN0aW9uIHJ1bkFzQXN5bmNGdW5jdGlvbjsKICAgICBzdGQ6Om9w
dGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHM7CiAgICAgRm9yY2VVc2VyR2Vz
dHVyZSBmb3JjZVVzZXJHZXN0dXJlOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICBlbmNvZGVyIDw8IHNvdXJjZSA8PCBzb3VyY2VVUkwgPDwgcnVuQXNBc3luY0Z1
bmN0aW9uIDw8IGFyZ3VtZW50cyA8PCBmb3JjZVVzZXJHZXN0dXJlOwogICAgIH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPgorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIFN0cmluZyBz
b3VyY2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKQEAgLTg2LDYgKzky
LDEwIEBAIHN0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc291cmNlVVJMKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKKyAgICAgICAgSlNDOjpTb3VyY2VUYWludGVkT3JpZ2luIHRhaW50ZWRuZXNzOworICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHRhaW50ZWRuZXNzKSkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKICAgICAgICAgUnVuQXNBc3luY0Z1bmN0aW9uIHJ1bkFzQXN5bmNGdW5j
dGlvbjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShydW5Bc0FzeW5jRnVuY3Rpb24pKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTk4LDcgKzEwOCw3IEBAIHN0cnVj
dCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Zm9yY2VVc2VyR2VzdHVyZSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgIHJldHVybiB7IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHsgV1RGTW92ZShzb3VyY2Up
LCBXVEZNb3ZlKHNvdXJjZVVSTCksIHJ1bkFzQXN5bmNGdW5jdGlvbiwgV1RGTW92ZShhcmd1bWVu
dHMpLCBmb3JjZVVzZXJHZXN0dXJlIH0gfTsKKyAgICAgICAgcmV0dXJuIHsgUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMgeyBXVEZNb3ZlKHNvdXJjZSksIHRhaW50ZWRuZXNzLCBXVEZNb3ZlKHNvdXJj
ZVVSTCksIHJ1bkFzQXN5bmNGdW5jdGlvbiwgV1RGTW92ZShhcmd1bWVudHMpLCBmb3JjZVVzZXJH
ZXN0dXJlIH0gfTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCBiZDNhZTFmZDg0OTcuLjg3ZWU2ZjgyNGY2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJX
b3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Tb3VyY2VQcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtNTksNiArNjAsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8U2NoZWR1bGVkQWN0aW9uPiBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZShET01XcmFwcGVyV29y
bGQmIGlzb2xhdAogU2NoZWR1bGVkQWN0aW9uOjpTY2hlZHVsZWRBY3Rpb24oRE9NV3JhcHBlcldv
cmxkJiBpc29sYXRlZFdvcmxkLCBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+JiYgZnVuY3Rpb24p
CiAgICAgOiBtX2lzb2xhdGVkV29ybGQoaXNvbGF0ZWRXb3JsZCkKICAgICAsIG1fZnVuY3Rpb24o
V1RGTW92ZShmdW5jdGlvbikpCisgICAgLCBtX3NvdXJjZVRhaW50ZWRPcmlnaW4oSlNDOjpTb3Vy
Y2VUYWludGVkT3JpZ2luOjpVbnRhaW50ZWQpCiB7CiB9CiAKQEAgLTY2LDYgKzY4LDcgQEAgU2No
ZWR1bGVkQWN0aW9uOjpTY2hlZHVsZWRBY3Rpb24oRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdv
cmxkLCBTdHJpbmcmJiBjb2RlKQogICAgIDogbV9pc29sYXRlZFdvcmxkKGlzb2xhdGVkV29ybGQp
CiAgICAgLCBtX2Z1bmN0aW9uKGlzb2xhdGVkV29ybGQudm0oKSkKICAgICAsIG1fY29kZShXVEZN
b3ZlKGNvZGUpKQorICAgICwgbV9zb3VyY2VUYWludGVkT3JpZ2luKEpTQzo6Y29tcHV0ZU5ld1Nv
dXJjZVRhaW50ZWRPcmlnaW5Gcm9tU3RhY2soaXNvbGF0ZWRXb3JsZC52bSgpLCBpc29sYXRlZFdv
cmxkLnZtKCkudG9wQ2FsbEZyYW1lKSkKIHsKIH0KIApAQCAtMTQxLDcgKzE0NCw3IEBAIHZvaWQg
U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAobV9m
dW5jdGlvbikKICAgICAgICAgZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KHdpbmRvdywgJndpbmRv
dy0+cHJveHkoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24obV9pc29sYXRlZFdvcmxkLCBt
X2NvZGUpOworICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbihtX2lzb2xhdGVkV29ybGQsIG1fY29kZSwgbV9zb3VyY2VUYWludGVkT3Jp
Z2luKTsKIH0KIAogdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlKQpAQCAtMTU1LDcgKzE1OCw3IEBAIHZvaWQgU2NoZWR1bGVk
QWN0aW9uOjpleGVjdXRlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAg
ICAgICAgYXV0byogY29udGV4dFdyYXBwZXIgPSBzY3JpcHRDb250cm9sbGVyLT5nbG9iYWxTY29w
ZVdyYXBwZXIoKTsKICAgICAgICAgZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KGNvbnRleHRXcmFw
cGVyLCBjb250ZXh0V3JhcHBlciwgd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIFNjcmlwdFNvdXJjZUNvZGUgY29kZShtX2NvZGUsIFVSTCh3b3JrZXJHbG9iYWxTY29w
ZS51cmwoKSkpOworICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIGNvZGUobV9jb2RlLCBtX3NvdXJj
ZVRhaW50ZWRPcmlnaW4sIFVSTCh3b3JrZXJHbG9iYWxTY29wZS51cmwoKSkpOwogICAgICAgICBz
Y3JpcHRDb250cm9sbGVyLT5ldmFsdWF0ZShjb2RlKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oCmluZGV4IDI1Nzk1YjE5ODliMC4uOTVj
YWFhMGEwY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uaApAQCAtNjMsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5r
bm93bj4gbV9mdW5jdGlvbjsKICAgICBGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25v
d24+PiBtX2FyZ3VtZW50czsKICAgICBTdHJpbmcgbV9jb2RlOworICAgIEpTQzo6U291cmNlVGFp
bnRlZE9yaWdpbiBtX3NvdXJjZVRhaW50ZWRPcmlnaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZm
ZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVm
ZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjYmJhNWZmOTY0NDEuLjQwZTRiNTVjMDA1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJv
dmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3Vy
Y2VQcm92aWRlci5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBT
Y3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlcihjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdEJ1ZmZl
ciwgY29uc3QgSlNDOjpTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgU3RyaW5nJiYgc291cmNl
VVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlk
ZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCi0gICAgICAgIDogSlNDOjpTb3VyY2VQcm92aWRlcihz
b3VyY2VPcmlnaW4sIFdURk1vdmUoc291cmNlVVJMKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlw
ZSkKKyAgICAgICAgOiBKU0M6OlNvdXJjZVByb3ZpZGVyKHNvdXJjZU9yaWdpbiwgV1RGTW92ZShz
b3VyY2VVUkwpLCBKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW46OlVudGFpbnRlZCwgc3RhcnRQb3Np
dGlvbiwgc291cmNlVHlwZSkKICAgICAgICAgLCBtX3NjcmlwdEJ1ZmZlcihzY3JpcHRCdWZmZXIp
CiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKaW5kZXggMWNkODdmNWY2NzQ5Li40YjI5Njg1MzhhZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NTIsMTQg
KzU1MiwxNCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyU2NyaXB0T2JqZWN0cygpCiAg
ICAgfQogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEln
bm9yaW5nRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5n
RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW4g
dGFpbnRlZG5lc3MsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKLSAgICByZXR1cm4gZXhlY3V0
ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwg
c2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlKTsKKyAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29y
bGRJZ25vcmluZ0V4Y2VwdGlvbihtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc2NyaXB0LCB0YWlu
dGVkbmVzcywgZm9yY2VVc2VyR2VzdHVyZSk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBTY3JpcHRDb250
cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUp
CitKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCwgSlNDOjpTb3VyY2VUYWludGVkT3JpZ2luIHRhaW50ZWRuZXNzLCBib29sIGZvcmNlVXNlckdl
c3R1cmUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwg
eyBzY3JpcHQsIFVSTCB7IH0sIGZhbHNlLCBzdGQ6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUg
fSk7CisgICAgYXV0byByZXN1bHQgPSBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgeyBzY3Jp
cHQsIHRhaW50ZWRuZXNzLCBVUkwgeyB9LCBmYWxzZSwgc3RkOjpudWxsb3B0LCBmb3JjZVVzZXJH
ZXN0dXJlIH0pOwogICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNW
YWx1ZSB7IH07CiB9CiAKQEAgLTU4OCw3ICs1ODgsNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
CiAKICAgICBzd2l0Y2ggKHBhcmFtZXRlcnMucnVuQXNBc3luY0Z1bmN0aW9uKSB7CiAgICAgY2Fz
ZSBSdW5Bc0FzeW5jRnVuY3Rpb246Ok5vOgotICAgICAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxk
KHsgcGFyYW1ldGVycy5zb3VyY2UsIFdURk1vdmUoc291cmNlVVJMKSwgVGV4dFBvc2l0aW9uKCks
IEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRj
aGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpIH0sIHdvcmxkKTsKKyAg
ICAgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlIHsgcGFyYW1ldGVy
cy5zb3VyY2UsIHBhcmFtZXRlcnMudGFpbnRlZG5lc3MsIFdURk1vdmUoc291cmNlVVJMKSwgVGV4
dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNo
ZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpIH0s
IHdvcmxkKTsKICAgICBjYXNlIFJ1bkFzQXN5bmNGdW5jdGlvbjo6WWVzOgogICAgICAgICByZXR1
cm4gY2FsbEluV29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGQpOwogICAgIGRlZmF1bHQ6
CkBAIC02MzIsNyArNjMyLDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpj
YWxsSW5Xb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXQKIAogICAgIGZ1bmN0
aW9uU3RyaW5nQnVpbGRlci5hcHBlbmQoIil7IiwgcGFyYW1ldGVycy5zb3VyY2UsICJ9KSIpOwog
Ci0gICAgYXV0byBzb3VyY2VDb2RlID0gU2NyaXB0U291cmNlQ29kZSB7IGZ1bmN0aW9uU3RyaW5n
QnVpbGRlci50b1N0cmluZygpLCBXVEZNb3ZlKHBhcmFtZXRlcnMuc291cmNlVVJMKSwgVGV4dFBv
c2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBDYWNoZWRT
Y3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5jaGFyc2V0KCkpIH07Cisg
ICAgYXV0byBzb3VyY2VDb2RlID0gU2NyaXB0U291cmNlQ29kZSB7IGZ1bmN0aW9uU3RyaW5nQnVp
bGRlci50b1N0cmluZygpLCBwYXJhbWV0ZXJzLnRhaW50ZWRuZXNzLCBXVEZNb3ZlKHBhcmFtZXRl
cnMuc291cmNlVVJMKSwgVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VU
eXBlOjpQcm9ncmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVu
dCgpLT5jaGFyc2V0KCkpIH07CiAgICAgY29uc3QgYXV0byYganNTb3VyY2VDb2RlID0gc291cmNl
Q29kZS5qc1NvdXJjZUNvZGUoKTsKIAogICAgIGNvbnN0IFVSTCYgc291cmNlVVJMID0ganNTb3Vy
Y2VDb2RlLnByb3ZpZGVyKCktPnNvdXJjZU9yaWdpbigpLnVybCgpOwpAQCAtNjg3LDcgKzY4Nyw3
IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0
SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPCiB9CiBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENv
bnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYg
d29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7Ci0g
ICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCB7IHNjcmlwdCwgVVJMIHsgfSwg
ZmFsc2UsIHN0ZDo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9KTsKKyAgICByZXR1cm4gZXhl
Y3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHsgc2NyaXB0LCBKU0M6OlNvdXJjZVRhaW50ZWRPcmln
aW46OlVudGFpbnRlZCwgVVJMIHsgfSwgZmFsc2UsIHN0ZDo6bnVsbG9wdCwgZm9yY2VVc2VyR2Vz
dHVyZSB9KTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlQXN5bmNocm9ub3Vz
VXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIFJlc29sdmVGdW5jdGlvbiYmIHJlc29sdmVDb21w
bGV0aW9uSGFuZGxlcikKQEAgLTc5Miw3ICs3OTIsOCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBSZWZQdHI8U2VjdXJpdHlPcmln
aQogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
U3RyaW5nIGRlY29kZWRVUkwgPSBQQUw6OmRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3Ry
aW5nKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KGRlY29kZWRVUkwuc3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpKTsKKyAgICAvLyBG
SVhNRTogVGhpcyBwcm9iYWJseSBuZWVkcyB0byBmaWd1cmUgb3V0IGlmIHRoZSBvcmlnaW4gaXMg
Y29uc2lkZXJlZCB0YW5pdGVkLgorICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdElnbm9y
aW5nRXhjZXB0aW9uKGRlY29kZWRVUkwuc3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgp
LCBKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW46OlVudGFpbnRlZCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoJnZtID09ICZqc1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS53aW5kb3co
KS0+dm0oKSk7CiAKICAgICAvLyBJZiBleGVjdXRpbmcgc2NyaXB0IGNhdXNlZCB0aGlzIGZyYW1l
IHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSwgd2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBkOWZlOTNmOGEwNzEuLjM5YTY3NTZiOTgw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApA
QCAtOTcsOCArOTcsOCBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNvbHZlRnVuY3Rpb24gPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhbHVlT3JFeGNlcHRpb24pPjsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTQzo6U291
cmNlVGFpbnRlZE9yaWdpbiwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIFdF
QkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBKU0M6OlNvdXJj
ZVRhaW50ZWRPcmlnaW4sIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUgZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWYWx1ZU9yRXhjZXB0aW9u
IGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkJiwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgUmVzb2x2ZUZ1bmN0aW9uJiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCmluZGV4IGQx
YTBlMThhYmZjZS4uZmI2NmJjYjUxZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U291cmNlQ29kZS5oCkBAIC00NSwxOCArNDUsMjAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlIHsKIHB1YmxpYzoKLSAgICBTY3JpcHRTb3Vy
Y2VDb2RlKGNvbnN0IFN0cmluZyYgc291cmNlLCBVUkwmJiB1cmwgPSBVUkwoKSwgY29uc3QgVGV4
dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJv
dmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlw
ZTo6UHJvZ3JhbSkKLSAgICAgICAgOiBtX3Byb3ZpZGVyKEpTQzo6U3RyaW5nU291cmNlUHJvdmlk
ZXI6OmNyZWF0ZShzb3VyY2UsIEpTQzo6U291cmNlT3JpZ2luIHsgdXJsIH0sIHVybC5zdHJpbmco
KSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkpCisgICAgU2NyaXB0U291cmNlQ29kZShjb25z
dCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpTb3VyY2VUYWludGVkT3JpZ2luIHNvdXJjZVRhaW50ZWRP
cmlnaW4sIFVSTCYmIHVybCA9IFVSTCgpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRp
b24gPSBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNl
VHlwZSA9IEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtKQorICAgICAgICA6
IG1fcHJvdmlkZXIoSlNDOjpTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgSlND
OjpTb3VyY2VPcmlnaW4geyB1cmwgfSwgdXJsLnN0cmluZygpLCBzb3VyY2VUYWludGVkT3JpZ2lu
LCBzdGFydFBvc2l0aW9uLCBzb3VyY2VUeXBlKSkKICAgICAgICAgLCBtX2NvZGUobV9wcm92aWRl
ci5jb3B5UmVmKCksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9z
aXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSkKICAgICB7CiAgICAgfQogCisgICAgLy8gVE9E
TyBpcyB0aGlzIG9ubHkgdXNlZCBmb3Igd29ya2Vycz8KICAgICBTY3JpcHRTb3VyY2VDb2RlKGNv
bnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlLCBVUkwmJiB1cmwgPSBVUkwoKSwgY29uc3QgVGV4dFBv
c2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlk
ZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6
UHJvZ3JhbSkKICAgICAgICAgOiBtX3Byb3ZpZGVyKFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVy
OjpjcmVhdGUoc291cmNlLCBKU0M6OlNvdXJjZU9yaWdpbiB7IHVybCB9LCB1cmwuc3RyaW5nKCks
IHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpKQogICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVy
LmNvcHlSZWYoKSwgc3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSwgc3RhcnRQb3Np
dGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpKQogICAgIHsKICAgICB9CiAKKyAgICAvLyBUT0RP
IG5vdCBzdXJlIGhvdyB0aGlzIHdvcmtzLgogICAgIFNjcmlwdFNvdXJjZUNvZGUoQ2FjaGVkU2Ny
aXB0KiBjYWNoZWRTY3JpcHQsIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5
cGUsIFJlZjxDYWNoZWRTY3JpcHRGZXRjaGVyPiYmIHNjcmlwdEZldGNoZXIpCiAgICAgICAgIDog
bV9wcm92aWRlcihDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNhY2hlZFNjcmlw
dCwgc291cmNlVHlwZSwgV1RGTW92ZShzY3JpcHRGZXRjaGVyKSkpCiAgICAgICAgICwgbV9jb2Rl
KG1fcHJvdmlkZXIuY29weVJlZigpKQpAQCAtNjQsOCArNjYsOCBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAotICAgIFNjcmlwdFNvdXJjZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFVSTCYm
IHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBKU0M6OlNvdXJjZVByb3Zp
ZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlLCBSZWY8SlNDOjpTY3JpcHRGZXRjaGVyPiYmIHNjcmlw
dEZldGNoZXIpCi0gICAgICAgIDogbV9wcm92aWRlcihKU0M6OlN0cmluZ1NvdXJjZVByb3ZpZGVy
OjpjcmVhdGUoc291cmNlLCBKU0M6OlNvdXJjZU9yaWdpbiB7IHVybCwgV1RGTW92ZShzY3JpcHRG
ZXRjaGVyKSB9LCB1cmwuc3RyaW5nKCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpKQorICAg
IFNjcmlwdFNvdXJjZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6U291cmNlVGFpbnRl
ZE9yaWdpbiBzb3VyY2VUYWludGVkT3JpZ2luLCBVUkwmJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlv
biYgc3RhcnRQb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlw
ZSwgUmVmPEpTQzo6U2NyaXB0RmV0Y2hlcj4mJiBzY3JpcHRGZXRjaGVyKQorICAgICAgICA6IG1f
cHJvdmlkZXIoSlNDOjpTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgSlNDOjpT
b3VyY2VPcmlnaW4geyB1cmwsIFdURk1vdmUoc2NyaXB0RmV0Y2hlcikgfSwgdXJsLnN0cmluZygp
LCBzb3VyY2VUYWludGVkT3JpZ2luLCBzdGFydFBvc2l0aW9uLCBzb3VyY2VUeXBlKSkKICAgICAg
ICAgLCBtX2NvZGUobV9wcm92aWRlci5jb3B5UmVmKCksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9u
ZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSkKICAgICB7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0
T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1t
CmluZGV4IGVkYTFjNzQ4MTk4My4uN2IzMTk1ODg1YWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC0zOTAsOCArMzkwLDggQEAgLSAoaWQp
ZXZhbHVhdGVXZWJTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBV
TlVTRURfUEFSQU0oc2NvcGUpOwotICAgIAotICAgIEpTQzo6SlNWYWx1ZSByZXR1cm5WYWx1ZSA9
IEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKGdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxp
bmdSZWFzb246Ok90aGVyLCBtYWtlU291cmNlKFN0cmluZyhzY3JpcHQpLCB7IH0pLCBKU0M6OkpT
VmFsdWUoKSk7CisKKyAgICBKU0M6OkpTVmFsdWUgcmV0dXJuVmFsdWUgPSBKU0V4ZWNTdGF0ZTo6
cHJvZmlsZWRFdmFsdWF0ZShnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhl
ciwgbWFrZVNvdXJjZShTdHJpbmcoc2NyaXB0KSwgeyB9LCBKU0M6OlNvdXJjZVRhaW50ZWRPcmln
aW46OlVudGFpbnRlZCksIEpTQzo6SlNWYWx1ZSgpKTsKIAogICAgIGlkIHJlc3VsdE9iaiA9IFtX
ZWJTY3JpcHRPYmplY3QgX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOnJldHVyblZhbHVlIG9yaWdp
blJvb3RPYmplY3Q6W3NlbGYgX29yaWdpblJvb3RPYmplY3RdIHJvb3RPYmplY3Q6W3NlbGYgX3Jv
b3RPYmplY3RdXTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IDkzZDg5NTdk
NTQ5Ni4uM2E5YzMwYzRjYzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKQEAgLTI4NCw3
ICsyODQsNyBAQCBDb250ZW50UnVsZUxpc3RSZXN1bHRzIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZDo6cHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JMb2FkKAogICAgICAgICAgICAgICAgICYmICgo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwgInd3dy5nb29nbGUtYW5h
bHl0aWNzLmNvbSJfcykgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLnBhdGgo
KSwgIi9hbmFseXRpY3MuanMiX3MpKQogICAgICAgICAgICAgICAgICAgICB8fCAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLmhvc3QoKSwgInd3dy5nb29nbGV0YWdtYW5hZ2VyLmNv
bSJfcykgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsLnBhdGgoKSwgIi9ndG0u
anMiX3MpKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBjdXJyZW50RG9j
dW1lbnQtPmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFs
dWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRh
dGFMYXllci5oaWRlLmVuZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIu
aGlkZS5lbmQoKSBpbiBmcmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250
ZW50IGJsb2NrZXIgYmxvY2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFu
YWx5dGljcy5jb20vYW5hbHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MgfSk7
CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhj
ZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUgeyAidHJ5IHsgd2luZG93LmRhdGFMYXllci5oaWRlLmVu
ZCgpOyBjb25zb2xlLmxvZygnQ2FsbGVkIHdpbmRvdy5kYXRhTGF5ZXIuaGlkZS5lbmQoKSBpbiBm
cmFtZSAnICsgZG9jdW1lbnQuVVJMICsgJyBiZWNhdXNlIHRoZSBjb250ZW50IGJsb2NrZXIgYmxv
Y2tlZCB0aGUgbG9hZCBvZiB0aGUgaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5h
bHl0aWNzLmpzIHNjcmlwdCcpOyB9IGNhdGNoIChlKSB7IH0iX3MsIEpTQzo6U291cmNlVGFpbnRl
ZE9yaWdpbjo6VW50YWludGVkIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcAppbmRleCAwM2UyZmFiMzZl
MjkuLmI1ODc4YjRhYWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1Bh
aW50V29ya2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xl
dC5jcHAKQEAgLTY4LDcgKzY4LDggQEAgdm9pZCBQYWludFdvcmtsZXQ6OmFkZE1vZHVsZShjb25z
dCBTdHJpbmcmIG1vZHVsZVVSTCwgV29ya2xldE9wdGlvbnMmJiwgRE9NUHJvbWkKIAogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgZG93bmxvYWQgdGhlIHNvdXJjZSBmcm9tIHRoZSBVUkwKICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMTM2Ci0gICAgYXV0
byBtYXliZUNvbnRleHQgPSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dHJ5Q3JlYXRlKCpkb2N1
bWVudCwgU2NyaXB0U291cmNlQ29kZShtb2R1bGVVUkwpKTsKKyAgICAvLyBQYWludFdvcmtsZXRz
IGRvbid0IGhhdmUgYWNjZXNzIHRvIGFueSBzZW5zaXRpdmUgQVBJcyBzbyB3ZSBkb24ndCBib3Ro
ZXIgdHJhY2tpbmcgdGFpbnRlZG5lc3MgdGhlcmUuCisgICAgYXV0byBtYXliZUNvbnRleHQgPSBQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6dHJ5Q3JlYXRlKCpkb2N1bWVudCwgU2NyaXB0U291cmNl
Q29kZShtb2R1bGVVUkwsIEpTQzo6U291cmNlVGFpbnRlZE9yaWdpbjo6VW50YWludGVkKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFtYXliZUNvbnRleHQpKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0
KEV4Y2VwdGlvbiB7IE91dE9mTWVtb3J5RXJyb3IgfSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDE2YzEyYTU4Yjc5Mi4uYzllODJlYTY5M2ZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc3ODUsNyArNzc4NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmVu
c3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgIGlm
ICghanNTdHJpbmcpCiAgICAgICAgIGpzU3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91
dENvcHlpbmcocGx1Z0luc0phdmFTY3JpcHQsIHNpemVvZihwbHVnSW5zSmF2YVNjcmlwdCkpOwog
Ci0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihT
Y3JpcHRTb3VyY2VDb2RlKGpzU3RyaW5nKSwgd29ybGQpOworICAgIHNjcmlwdENvbnRyb2xsZXIu
ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShqc1N0cmlu
ZywgSlNDOjpTb3VyY2VUYWludGVkT3JpZ2luOjpVbnRhaW50ZWQpLCB3b3JsZCk7CiAKICAgICBt
X2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudC5jcHAKaW5kZXggY2M2YjA1ZjE3OWEwLi5mOTAwM2IwZTE0OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMp
IDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBB
bnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBE
aXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
OCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIK
KyNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5o
IgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkN1cnJl
bnRTY3JpcHRJbmNyZW1lbnRlci5oIgpAQCAtODEsNiArODIsNyBAQCBTY3JpcHRFbGVtZW50OjpT
Y3JpcHRFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgcGFyc2VySW5zZXJ0ZWQsIGJvb2wg
YWxyZWFkeQogICAgICwgbV9jcmVhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCiAgICAg
LCBtX3VzZXJHZXN0dXJlVG9rZW4oVXNlckdlc3R1cmVJbmRpY2F0b3I6OmN1cnJlbnRVc2VyR2Vz
dHVyZSgpKQogeworICAgIG1fdGFpbnRlZE9yaWdpbiA9IGNvbXB1dGVOZXdTb3VyY2VUYWludGVk
T3JpZ2luRnJvbVN0YWNrKGNvbW1vblZNKCksIGNvbW1vblZNKCkudG9wQ2FsbEZyYW1lKTsKICAg
ICBpZiAocGFyc2VySW5zZXJ0ZWQpIHsKICAgICAgICAgUmVmIGRvY3VtZW50ID0gbV9lbGVtZW50
LmRvY3VtZW50KCk7CiAgICAgICAgIGlmIChSZWZQdHIgcGFyc2VyID0gZG9jdW1lbnQtPnNjcmlw
dGFibGVEb2N1bWVudFBhcnNlcigpOyBwYXJzZXIgJiYgIWRvY3VtZW50LT5pc0luRG9jdW1lbnRX
cml0ZSgpKQpAQCAtMjczLDE0ICsyNzUsMTYgQEAgYm9vbCBTY3JpcHRFbGVtZW50OjpwcmVwYXJl
U2NyaXB0KGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbiwgTGVnYWMKICAg
ICAgICAgQVNTRVJUKG1fbG9hZGFibGVTY3JpcHQpOwogICAgICAgICBBU1NFUlQoaGFzQXN5bmNB
dHRyaWJ1dGUoKSB8fCBtX2ZvcmNlQXN5bmMpOwogICAgICAgICBkb2N1bWVudC5zY3JpcHRSdW5u
ZXIoKS5xdWV1ZVNjcmlwdEZvckV4ZWN1dGlvbigqdGhpcywgKm1fbG9hZGFibGVTY3JpcHQsIFNj
cmlwdFJ1bm5lcjo6QVNZTkNfRVhFQ1VUSU9OKTsKLSAgICB9IGVsc2UgaWYgKCFoYXNTb3VyY2VB
dHRyaWJ1dGUoKSAmJiBtX3BhcnNlckluc2VydGVkID09IFBhcnNlckluc2VydGVkOjpZZXMgJiYg
IWRvY3VtZW50LmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKSB7CisgICAgfSBlbHNlIGlmIChtX3Bh
cnNlckluc2VydGVkID09IFBhcnNlckluc2VydGVkOjpZZXMgJiYgIWRvY3VtZW50LmhhdmVTdHls
ZXNoZWV0c0xvYWRlZCgpKSB7CiAgICAgICAgIEFTU0VSVChzY3JpcHRUeXBlID09IFNjcmlwdFR5
cGU6OkNsYXNzaWMpOworICAgICAgICBBU1NFUlQoIWhhc1NvdXJjZUF0dHJpYnV0ZSgpKTsKICAg
ICAgICAgbV93aWxsQmVQYXJzZXJFeGVjdXRlZCA9IHRydWU7CiAgICAgICAgIG1fcmVhZHlUb0Jl
UGFyc2VyRXhlY3V0ZWQgPSB0cnVlOwogICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVCghaGFz
U291cmNlQXR0cmlidXRlKCkpOwogICAgICAgICBBU1NFUlQoc2NyaXB0VHlwZSA9PSBTY3JpcHRU
eXBlOjpDbGFzc2ljKTsKICAgICAgICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gZG9jdW1lbnQu
aXNJbkRvY3VtZW50V3JpdGUoKSA/IFRleHRQb3NpdGlvbigpIDogc2NyaXB0U3RhcnRQb3NpdGlv
bjsKLSAgICAgICAgZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzb3VyY2VU
ZXh0LCBVUkwoZG9jdW1lbnQudXJsKCkpLCBwb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92aWRlclNv
dXJjZVR5cGU6OlByb2dyYW0sIElubGluZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZSgqdGhpcykpKTsK
KyAgICAgICAgZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzb3VyY2VUZXh0
LCBtX3RhaW50ZWRPcmlnaW4sIFVSTChkb2N1bWVudC51cmwoKSksIHBvc2l0aW9uLCBKU0M6OlNv
dXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgSW5saW5lQ2xhc3NpY1NjcmlwdDo6Y3Jl
YXRlKCp0aGlzKSkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzU0LDcgKzM1OCw3
IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVzdE1vZHVsZVNjcmlwdChjb25zdCBUZXh0UG9z
aXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24pCiAgICAgYXV0byBzY3JpcHQgPSBMb2FkYWJsZU1v
ZHVsZVNjcmlwdDo6Y3JlYXRlKG5vbmNlLCBlbXB0eUF0b20oKSwgcmVmZXJyZXJQb2xpY3koKSwg
Y3Jvc3NPcmlnaW5Nb2RlLCBzY3JpcHRDaGFyc2V0KCksIG1fZWxlbWVudC5sb2NhbE5hbWUoKSwg
bV9lbGVtZW50LmlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKCkpOwogCiAgICAgVGV4dFBvc2l0aW9u
IHBvc2l0aW9uID0gbV9lbGVtZW50LmRvY3VtZW50KCkuaXNJbkRvY3VtZW50V3JpdGUoKSA/IFRl
eHRQb3NpdGlvbigpIDogc2NyaXB0U3RhcnRQb3NpdGlvbjsKLSAgICBTY3JpcHRTb3VyY2VDb2Rl
IHNvdXJjZUNvZGUoc2NyaXB0Q29udGVudCgpLCBVUkwobV9lbGVtZW50LmRvY3VtZW50KCkudXJs
KCkpLCBwb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSwgc2Ny
aXB0LmNvcHlSZWYoKSk7CisgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdENv
bnRlbnQoKSwgbV90YWludGVkT3JpZ2luLCBVUkwobV9lbGVtZW50LmRvY3VtZW50KCkudXJsKCkp
LCBwb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSwgc2NyaXB0
LmNvcHlSZWYoKSk7CiAKICAgICBBU1NFUlQobV9lbGVtZW50LmRvY3VtZW50KCkuY29udGVudFNl
Y3VyaXR5UG9saWN5KCkpOwogICAgIGNvbnN0IGF1dG8mIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9
ICptX2VsZW1lbnQuZG9jdW1lbnQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKTsKQEAgLTQ2OCw3
ICs0NzIsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0KFBlbmRp
bmdTY3JpcHQmIHBlbmRpbmdTY3JpcHQpCiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVCghcGVu
ZGluZ1NjcmlwdC5lcnJvcigpKTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShzY3JpcHRU
eXBlKCkgPT0gU2NyaXB0VHlwZTo6Q2xhc3NpYywgIk1vZHVsZSBzY3JpcHQgYWx3YXlzIGhhdmUg
YSBsb2FkYWJsZVNjcmlwdCBwb2ludGVyLiIpOwotICAgICAgICBleGVjdXRlQ2xhc3NpY1Njcmlw
dChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdENvbnRlbnQoKSwgVVJMKG1fZWxlbWVudC5kb2N1bWVu
dCgpLnVybCgpKSwgcGVuZGluZ1NjcmlwdC5zdGFydGluZ1Bvc2l0aW9uKCksIEpTQzo6U291cmNl
UHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBJbmxpbmVDbGFzc2ljU2NyaXB0OjpjcmVhdGUo
KnRoaXMpKSk7CisgICAgICAgIGV4ZWN1dGVDbGFzc2ljU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUo
c2NyaXB0Q29udGVudCgpLCBtX3RhaW50ZWRPcmlnaW4sIFVSTChtX2VsZW1lbnQuZG9jdW1lbnQo
KS51cmwoKSksIHBlbmRpbmdTY3JpcHQuc3RhcnRpbmdQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVBy
b3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgSW5saW5lQ2xhc3NpY1NjcmlwdDo6Y3JlYXRlKCp0
aGlzKSkpOwogICAgICAgICBkaXNwYXRjaExvYWRFdmVudFJlc3BlY3RpbmdVc2VyR2VzdHVyZUlu
ZGljYXRvcigpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCmluZGV4IDNl
NTk4ODQ5ZWY1Ni4uZTg5YjhmNzVlNGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVmZXJyZXJQb2xpY3kuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5k
aWNhdG9yLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+
CiAKQEAgLTc3LDYgKzc4LDggQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgU2NyaXB0VHlwZSB7
IENsYXNzaWMsIE1vZHVsZSB9OwogICAgIFNjcmlwdFR5cGUgc2NyaXB0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNNb2R1bGVTY3JpcHQgPyBTY3JpcHRUeXBlOjpNb2R1bGUgOiBTY3JpcHRUeXBl
OjpDbGFzc2ljOyB9CiAKKyAgICBKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW4gc291cmNlVGFpbnRl
ZE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdGFpbnRlZE9yaWdpbjsgfQorCiAgICAgdm9pZCBy
ZWYoKTsKICAgICB2b2lkIGRlcmVmKCk7CiAKQEAgLTEyNCw2ICsxMjcsNyBAQCBwcml2YXRlOgog
ICAgIEVsZW1lbnQmIG1fZWxlbWVudDsKICAgICBPcmRpbmFsTnVtYmVyIG1fc3RhcnRMaW5lTnVt
YmVyOwogICAgIFBhcnNlckluc2VydGVkIG1fcGFyc2VySW5zZXJ0ZWQ7CisgICAgSlNDOjpTb3Vy
Y2VUYWludGVkT3JpZ2luIG1fdGFpbnRlZE9yaWdpbjsKICAgICBib29sIG1faXNFeHRlcm5hbFNj
cmlwdCA6IDE7CiAgICAgYm9vbCBtX2FscmVhZHlTdGFydGVkIDogMTsKICAgICBib29sIG1faGF2
ZUZpcmVkTG9hZCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCA3MjJjY2Y4ZDdmNTQuLjdkYmUyZGFjOTZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC03NjU4LDcgKzc2NTgsNyBAQCBib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCgpCiAgICAgICAgIGZvciAo
YXV0byYgbWVkaWFDb250cm9sc1NjcmlwdCA6IG1lZGlhQ29udHJvbHNTY3JpcHRzKSB7CiAgICAg
ICAgICAgICBpZiAobWVkaWFDb250cm9sc1NjcmlwdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3Js
ZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUobWVkaWFDb250cm9sc1NjcmlwdCks
IHdvcmxkKTsKKyAgICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXIuZXZhbHVhdGVJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShtZWRpYUNvbnRyb2xzU2NyaXB0LCBKU0M6
OlNvdXJjZVRhaW50ZWRPcmlnaW46OlVudGFpbnRlZCksIHdvcmxkKTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlcG9ydEV4Y2VwdGlvbkFuZFJldHVybkZhbHNlKCkp
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5jcHAKaW5kZXggY2NlMGE3
YzM4ZDQyLi4yOTdhZTU3OTQyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERG
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCkBA
IC0xODcsNyArMTg3LDcgQEAgdm9pZCBQREZEb2N1bWVudDo6c2VuZFBERkFycmF5QnVmZmVyKCkK
IAogICAgIGF1dG8qIGZyYW1lID0gbV9pZnJhbWUtPmNvbnRlbnRGcmFtZSgpOwogICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NjY4IC0gVXNl
IHBvc3RNZXNzYWdlCi0gICAgYXV0byBvcGVuRnVuY3Rpb24gPSBmcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKCJQREZKU0NvbnRlbnRTY3JpcHQub3BlbiJfcyku
Z2V0T2JqZWN0KCk7CisgICAgYXV0byBvcGVuRnVuY3Rpb24gPSBmcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKCJQREZKU0NvbnRlbnRTY3JpcHQub3BlbiJfcywg
SlNDOjpTb3VyY2VUYWludGVkT3JpZ2luOjpVbnRhaW50ZWQpLmdldE9iamVjdCgpOwogCiAgICAg
YXV0byBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFNjcmlwdFJ1bm5lci5jcHAKaW5kZXggNGFjYjIyYzViZWVmLi43NTI0MWM4MjQ3MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCkBAIC0y
NTksNyArMjU5LDcgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpydW5TY3JpcHQoU2NyaXB0RWxl
bWVudCYgc2NyaXB0RWxlbWVudCwgY29uc3QgVGV4dFBvc2l0aW8KICAgICAgICAgaWYgKG1fc2Ny
aXB0TmVzdGluZ0xldmVsID09IDEpCiAgICAgICAgICAgICBtX3BhcnNlckJsb2NraW5nU2NyaXB0
ID0gUGVuZGluZ1NjcmlwdDo6Y3JlYXRlKHNjcmlwdEVsZW1lbnQsIHNjcmlwdFN0YXJ0UG9zaXRp
b24pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY3JpcHRFbGVtZW50LmV4ZWN1dGVDbGFz
c2ljU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0RWxlbWVudC5lbGVtZW50KCkudGV4dENv
bnRlbnQoKSwgZG9jdW1lbnRVUkxGb3JTY3JpcHRFeGVjdXRpb24obV9kb2N1bWVudC5nZXQoKSks
IHNjcmlwdFN0YXJ0UG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9n
cmFtLCBJbmxpbmVDbGFzc2ljU2NyaXB0OjpjcmVhdGUoc2NyaXB0RWxlbWVudCkpKTsKKyAgICAg
ICAgICAgIHNjcmlwdEVsZW1lbnQuZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0U291cmNlQ29k
ZShzY3JpcHRFbGVtZW50LmVsZW1lbnQoKS50ZXh0Q29udGVudCgpLCBzY3JpcHRFbGVtZW50LnNv
dXJjZVRhaW50ZWRPcmlnaW4oKSwgZG9jdW1lbnRVUkxGb3JTY3JpcHRFeGVjdXRpb24obV9kb2N1
bWVudC5nZXQoKSksIHNjcmlwdFN0YXJ0UG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlkZXJTb3Vy
Y2VUeXBlOjpQcm9ncmFtLCBJbmxpbmVDbGFzc2ljU2NyaXB0OjpjcmVhdGUoc2NyaXB0RWxlbWVu
dCkpKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVxdWVzdFBhcnNpbmdCbG9ja2luZ1NjcmlwdChz
Y3JpcHRFbGVtZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5kZXggZDA0NTJjOTk3ZjIy
Li4zNGYwNTA2ZTgxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCkBAIC0yNTksNyArMjU5LDcg
QEAgVmFsdWVPckV4Y2VwdGlvbiBJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1
YXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcKICAgICBBU1NFUlQobV9xdWV1ZWRFdmFsdWF0aW9u
cy5pc0VtcHR5KCkpOwogCiAgICAgSlNDOjpTdXNwZW5kRXhjZXB0aW9uU2NvcGUgc2NvcGUobV9m
cm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS52bSgpKTsKLSAgICByZXR1cm4gbV9m
cm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRT
b3VyY2VDb2RlKGV4cHJlc3Npb24pLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgcmV0
dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZUluV29ybGQo
U2NyaXB0U291cmNlQ29kZShleHByZXNzaW9uLCBKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW46OlVu
dGFpbnRlZCksIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRlRXhwcmVzc2lvbkZvclRlc3RpbmcoY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCBlZjdmYTVmZTBmYmUuLjVlMTI5NTNmMzkyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAKQEAgLTc4NCw4ICs3ODQsOSBAQCBFeGNlcHRpb25PcjxKU0M6OkpTVmFsdWU+IEluc3Bl
Y3RvckZyb250ZW5kSG9zdDo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihIVAogICAgIGlm
ICghZnJhbWVHbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgIlVuYWJsZSB0byBmaW5kIGdsb2JhbCBvYmplY3QgZm9yIDxpZnJhbWU+Il9z
IH07CiAKKwogICAgIEpTQzo6U3VzcGVuZEV4Y2VwdGlvblNjb3BlIHNjb3BlKGZyYW1lR2xvYmFs
T2JqZWN0LT52bSgpKTsKLSAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCA9IGZyYW1lLT5zY3Jp
cHQoKS5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRTb3VyY2UpLCBtYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQgPSBmcmFt
ZS0+c2NyaXB0KCkuZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U291cmNl
LCBKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW46OlVudGFpbnRlZCksIG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKTsKICAgICAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yLCByZXN1bHQuZXJyb3IoKS5tZXNzYWdlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKaW5kZXggYTZlNDE1YTliZjQ3Li5mNWUwOTE1NTAzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC05MDUsNyArOTA1LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZChGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3IKICAgICBpZiAobV9ib290
c3RyYXBTY3JpcHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFtZS5zY3Jp
cHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUobV9ib290c3Ry
YXBTY3JpcHQsIFVSTCB7ICJ3ZWItaW5zcGVjdG9yOi8vYm9vdHN0cmFwLmpzIl9zdHIgfSkpOwor
ICAgIGZyYW1lLnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNl
Q29kZShtX2Jvb3RzdHJhcFNjcmlwdCwgSlNDOjpTb3VyY2VUYWludGVkT3JpZ2luOjpVbnRhaW50
ZWQsIFVSTCB7ICJ3ZWItaW5zcGVjdG9yOi8vYm9vdHN0cmFwLmpzIl9zdHIgfSkpOwogfQogCiB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVuZGVyT2JqZWN0JiByZW5kZXJlciwg
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCmluZGV4IDk1ZjhmNWM3OTI0Ny4uMzc5NmVjYzI5OWZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTI1MDIsOCArMjUwMiwxMCBAQCBSZXNvdXJj
ZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVu
dEZpbHRlclVuYmxvY2tIYQogICAgIHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJMKGRv
Y3VtZW50VVJMKCkpOwogICAgIGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0
eSgpICYmIGZyYW1lKCkpIHsKICAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lv
bkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIgPSBXZWFrUHRyIHsgZnJhbWUoKS0+c2NyaXB0KCkg
fSwgc2NyaXB0ID0gV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkuaXNvbGF0ZWRD
b3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7Ci0gICAgICAgICAgICBpZiAoIXVuYmxvY2tlZCAmJiBz
Y3JpcHRDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1
dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQpOworICAgICAgICAgICAgaWYgKCF1bmJs
b2NrZWQgJiYgc2NyaXB0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHByb2JhYmx5IG5lZWRzIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIG9yaWdpbiBpcyBjb25zaWRl
cmVkIHRhbml0ZWQuCisgICAgICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNj
cmlwdElnbm9yaW5nRXhjZXB0aW9uKHNjcmlwdCwgSlNDOjpTb3VyY2VUYWludGVkT3JpZ2luOjpV
bnRhaW50ZWQpOworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9CiAgICAgZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxv
Y2tIYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDJkMTEzM2E4N2U1Ni4uNjgxYzYy
NGM0ZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAg
ICAgICAgICAgICAgMjAwMCBTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2RlLm9yZz4KICAqICAg
ICAgICAgICAgICAgICAgICAgMjAwMCBTdGVmYW4gU2NoaW1hbnNraSA8MVN0ZWluQGdteC5kZT4K
ICAqICAgICAgICAgICAgICAgICAgICAgMjAwMSBHZW9yZ2UgU3RhaWtvcyA8c3RhaWtvc0BrZGUu
b3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA1IEFsZXhleSBQcm9za3VyeWFrb3YgPGFw
QG55cG9wLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRl
bCA8ZXJpY0B3ZWJraXQub3JnPgpAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgRnJhbWU6OmluamVj
dFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2Vy
U2NyaXB0CiAKICAgICBkb2N1bWVudC0+c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKICAgICBs
b2FkZXIoKS5jbGllbnQoKS53aWxsSW5qZWN0VXNlclNjcmlwdCh3b3JsZCk7Ci0gICAgbV9zY3Jp
cHQtPmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoc2Ny
aXB0LnNvdXJjZSgpLCBVUkwoc2NyaXB0LnVybCgpKSksIHdvcmxkKTsKKyAgICBtX3NjcmlwdC0+
ZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShzY3JpcHQu
c291cmNlKCksIEpTQzo6U291cmNlVGFpbnRlZE9yaWdpbjo6VW50YWludGVkLCBVUkwoc2NyaXB0
LnVybCgpKSksIHdvcmxkKTsKIH0KIAogdm9pZCBGcmFtZTo6YWRkVXNlclNjcmlwdEF3YWl0aW5n
Tm90aWZpY2F0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNj
cmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAzMTM4OWNiYmQ3YTEu
LjVjZWNhY2M0YzUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzkx
Miw3ICszOTEyLDcgQEAgSlNDOjpKU1ZhbHVlIEludGVybmFsczo6ZXZhbHVhdGVJbldvcmxkSWdu
b3JpbmdFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBjb24KICAgICBhdXRvKiBkb2N1bWVu
dCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGF1dG8mIHNjcmlwdENvbnRyb2xsZXIgPSBkb2N1
bWVudC0+ZnJhbWUoKS0+c2NyaXB0KCk7CiAgICAgYXV0byB3b3JsZCA9IFNjcmlwdENvbnRyb2xs
ZXI6OmNyZWF0ZVdvcmxkKG5hbWUpOwotICAgIHJldHVybiBzY3JpcHRDb250cm9sbGVyLmV4ZWN1
dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24od29ybGQsIHNvdXJjZSk7CisgICAgcmV0
dXJuIHNjcmlwdENvbnRyb2xsZXIuZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlv
bih3b3JsZCwgc291cmNlLCBKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW46OlVudGFpbnRlZCk7CiB9
CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoYm9vbCBlbmFibGVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IGE5MWU3ZWE3ZGQ3OS4uMWYz
MzU3ZDdhMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCkBAIC01NSw4ICs1
NSw4IEBAIFhNTFRyZWVWaWV3ZXI6OlhNTFRyZWVWaWV3ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQog
dm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcoKQogewogICAg
IFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhY
TUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKLSAgICBtX2RvY3VtZW50LmZyYW1l
KCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShz
Y3JpcHRTdHJpbmcpKTsKLSAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRl
SWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3RyaW5nKCJwcmVwYXJlV2Vi
S2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVhciB0byBoYXZlIGFueSBz
dHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBkb2N1bWVudCB0cmVlIGlz
IHNob3duIGJlbG93LicpOyJfcykpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgp
LmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShzY3JpcHRTdHJpbmcs
IEpTQzo6U291cmNlVGFpbnRlZE9yaWdpbjo6VW50YWludGVkKSk7CisgICAgbV9kb2N1bWVudC5m
cmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNv
ZGUoQXRvbVN0cmluZygicHJlcGFyZVdlYktpdFhNTFZpZXdlcignVGhpcyBYTUwgZmlsZSBkb2Vz
IG5vdCBhcHBlYXIgdG8gaGF2ZSBhbnkgc3R5bGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRo
IGl0LiBUaGUgZG9jdW1lbnQgdHJlZSBpcyBzaG93biBiZWxvdy4nKTsiX3MpLCBKU0M6OlNvdXJj
ZVRhaW50ZWRPcmlnaW46OlVudGFpbnRlZCkpOwogCiAgICAgU3RyaW5nIGNzc1N0cmluZyA9IFN0
cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFhNTFZpZXdlcl9jc3MsIHNpemVvZihYTUxW
aWV3ZXJfY3NzKSk7CiAgICAgYXV0byB0ZXh0ID0gbV9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShX
VEZNb3ZlKGNzc1N0cmluZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGQ1MmE4ZGNjMzIyNS4uNGZiZGQz
NDg2YWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwMCBQZXRlciBLZWxseSA8cG1rQHBvc3QuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDA1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCkBAIC04
ODMsNyArODgzLDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZW5kRWxlbWVudE5zKCkKICAg
ICAgICAgLy8gdGhlIGxpYnhtbDIgYW5kIFF0IFhNTERvY3VtZW50UGFyc2VyIGltcGxlbWVudGF0
aW9ucy4KIAogICAgICAgICBpZiAoc2NyaXB0RWxlbWVudC5yZWFkeVRvQmVQYXJzZXJFeGVjdXRl
ZCgpKQotICAgICAgICAgICAgc2NyaXB0RWxlbWVudC5leGVjdXRlQ2xhc3NpY1NjcmlwdChTY3Jp
cHRTb3VyY2VDb2RlKHNjcmlwdEVsZW1lbnQuc2NyaXB0Q29udGVudCgpLCBVUkwoZG9jdW1lbnQo
KS0+dXJsKCkpLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlkZXJTb3Vy
Y2VUeXBlOjpQcm9ncmFtLCBJbmxpbmVDbGFzc2ljU2NyaXB0OjpjcmVhdGUoc2NyaXB0RWxlbWVu
dCkpKTsKKyAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQuZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2Ny
aXB0U291cmNlQ29kZShzY3JpcHRFbGVtZW50LnNjcmlwdENvbnRlbnQoKSwgc2NyaXB0RWxlbWVu
dC5zb3VyY2VUYWludGVkT3JpZ2luKCksIFVSTChkb2N1bWVudCgpLT51cmwoKSksIG1fc2NyaXB0
U3RhcnRQb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIElu
bGluZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZShzY3JpcHRFbGVtZW50KSkpOwogICAgICAgICBlbHNl
IGlmIChzY3JpcHRFbGVtZW50LndpbGxCZVBhcnNlckV4ZWN1dGVkKCkgJiYgc2NyaXB0RWxlbWVu
dC5sb2FkYWJsZVNjcmlwdCgpKSB7CiAgICAgICAgICAgICBtX3BlbmRpbmdTY3JpcHQgPSBQZW5k
aW5nU2NyaXB0OjpjcmVhdGUoc2NyaXB0RWxlbWVudCwgKnNjcmlwdEVsZW1lbnQubG9hZGFibGVT
Y3JpcHQoKSk7CiAgICAgICAgICAgICBtX3BlbmRpbmdTY3JpcHQtPnNldENsaWVudCgqdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRl
eCBmOTFhNzU1YTlmYTEuLmJhYzI0ZmUzYzQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC02NTEsNCArNjUxLDMgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LmFkYXR0
cmlidXRpb25kLnNiCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L2NvbS5hcHBsZS5XZWJLaXQucGx1Z2luLWNvbW1vbi5zYgogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LndlYnB1c2hkLnNiCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L2NvbS5hcHBsZS5XZWJQcm9j
ZXNzLnNiCi08PDw8PDw8IEhFQUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCmluZGV4IDJkMmNhNzAxYzkwOS4uMWI0MGRlZDdjMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNTc0LDcgKzI1NzQsNyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlU3RhdGVDbGllbnRC
YXNlKiBjbGllbnQpCiB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VS
dW5KYXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgdG9JbXBs
KHNjcmlwdFJlZiktPnN0cmluZygpLCBVUkwgeyB9LCBmYWxzZSwgc3RkOjpudWxsb3B0LCB0cnVl
IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8mJiByZXN1bHQpIHsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJp
bmcoKSwgSlNDOjpTb3VyY2VUYWludGVkT3JpZ2luOjpVbnRhaW50ZWQsIFVSTCB7IH0sIGZhbHNl
LCBzdGQ6Om51bGxvcHQsIHRydWUgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSAoYXV0byYmIHJlc3Vs
dCkgewogICAgICAgICBpZiAocmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgY2FsbGJh
Y2sodG9BUEkocmVzdWx0LnZhbHVlKCkuZ2V0KCkpLCBudWxscHRyLCBjb250ZXh0KTsKICAgICAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KaW5kZXggMDQxMDBlMjZiMzQxLi5jNTc3ZDQ1ODU4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTE2Myw3ICsxMTYzLDcgQEAg
LSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcg
YXNBc3luY0Z1bmN0aW9uOihCT09MKWEKICAgICAgICAgICAgIGZyYW1lSUQgPSBtYWtlT2JqZWN0
SWRlbnRpZmllcjxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyKTsKICAg
ICB9CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHsgamF2
YVNjcmlwdFN0cmluZywgc291cmNlVVJMLCAhIWFzQXN5bmNGdW5jdGlvbiwgV1RGTW92ZShhcmd1
bWVudHNNYXApLCAhIWZvcmNlVXNlckdlc3R1cmUgfSwgZnJhbWVJRCwgKndvcmxkLT5fY29udGVu
dFdvcmxkLmdldCgpLCBbaGFuZGxlcl0gKGF1dG8mJiByZXN1bHQpIHsKKyAgICBfcGFnZS0+cnVu
SmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHsgamF2YVNjcmlwdFN0cmluZywgSlNDOjpT
b3VyY2VUYWludGVkT3JpZ2luOjpVbnRhaW50ZWQsIHNvdXJjZVVSTCwgISFhc0FzeW5jRnVuY3Rp
b24sIFdURk1vdmUoYXJndW1lbnRzTWFwKSwgISFmb3JjZVVzZXJHZXN0dXJlIH0sIGZyYW1lSUQs
ICp3b3JsZC0+X2NvbnRlbnRXb3JsZC5nZXQoKSwgW2hhbmRsZXJdIChhdXRvJiYgcmVzdWx0KSB7
CiAgICAgICAgIGlmICghaGFuZGxlcikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggODk3YTE4NThjYzZhLi41
YzM1M2UzNWQ5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY4OSw3ICs2ODksNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgZm9yY2VVcwogICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGpzY0xvY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAjZW5kaWYKIAot
ICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlKTsK
KyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHN0cmluZywgSlNDOjpTb3VyY2VUYWludGVk
T3JpZ2luOjpVbnRhaW50ZWQsIGZvcmNlVXNlckdlc3R1cmUpOwogCiAgICAgaWYgKCFfcHJpdmF0
ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVtb3ZlZCBvdXIgZnJhbWUgZnJv
bSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBmNTdmZjE4NjJmN2IuLjhlYmMxODNiNGE1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNzUyMSw3ICs3
NTIxLDcgQEAgLSAoTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAqKWFlRGVzY0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXMKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICBpZiAoIWNvcmVGcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBK
U0M6OkpTVmFsdWUgcmVzdWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdu
b3JpbmdFeGNlcHRpb24oc2NyaXB0LCB0cnVlKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0g
Y29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0
LCBKU0M6OlNvdXJjZVRhaW50ZWRPcmlnaW46OlVudGFpbnRlZCwgdHJ1ZSk7CiAgICAgaWYgKCFy
ZXN1bHQpIC8vIEZJWE1FOiBwYXNzIGVycm9ycwogICAgICAgICByZXR1cm4gMDsKICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrKGNvcmVGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KFdlYkNv
cmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>