<?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>126043</bug_id>
          
          <creation_ts>2013-12-19 19:57:01 -0800</creation_ts>
          <short_desc>Arity check slow path should ensure that when we return, we restore SP back to what the caller expects</short_desc>
          <delta_ts>2014-01-30 13:27:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>113621</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>961703</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-19 19:57:01 -0800</bug_when>
    <thetext>Patch forthcoming.


Test case:

function bar(a,b,c,d,e,f,g,h,i,j,k) {
}

noInline(bar);

for (var i = 0; i &lt; 10000000; ++i)
    bar();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961713</commentid>
    <comment_count>1</comment_count>
      <attachid>219723</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-19 20:42:43 -0800</bug_when>
    <thetext>Created attachment 219723
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961729</commentid>
    <comment_count>2</comment_count>
      <attachid>219729</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-19 21:26:14 -0800</bug_when>
    <thetext>Created attachment 219729
it takes shape</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961730</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-19 21:28:02 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=219729) [details]
&gt; it takes shape

What remains:

- Do the same thing in FTL &amp; DFG that I&apos;m doing in the baseline JIT.

- Port to 32-bit.

- Make it work in LLInt&apos;s copy loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961778</commentid>
    <comment_count>4</comment_count>
      <attachid>219739</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-20 00:55:42 -0800</bug_when>
    <thetext>Created attachment 219739
it runs things

Still need to do:

- LLInt

- 32-bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961792</commentid>
    <comment_count>5</comment_count>
      <attachid>219742</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-20 02:02:22 -0800</bug_when>
    <thetext>Created attachment 219742
LLInt starting to work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962076</commentid>
    <comment_count>6</comment_count>
      <attachid>219803</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-20 15:22:38 -0800</bug_when>
    <thetext>Created attachment 219803
the patch

Still need to do 32-bit.  But, I don&apos;t think I can even test 32-bit right now.  Porting it would be easy if I could test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962079</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-20 15:34:57 -0800</bug_when>
    <thetext>64-bit parts landed in http://trac.webkit.org/changeset/160936</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968051</commentid>
    <comment_count>8</comment_count>
      <attachid>219803</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-01-14 14:44:15 -0800</bug_when>
    <thetext>Comment on attachment 219803
the patch

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219723</attachid>
            <date>2013-12-19 20:42:43 -0800</date>
            <delta_ts>2013-12-19 21:26:14 -0800</delta_ts>
            <desc>it begins</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>7268</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVu
a3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVj
a0ZhaWxSZXR1cm5UaHVua3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5U
aHVua3MuaCIKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOjpBcml0
eUNoZWNrRmFpbFJldHVyblRodW5rcygpIHsgfQorQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M6
On5Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcygpIHsgfQorCitDb2RlTG9jYXRpb25MYWJlbCog
QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M6OnJldHVyblBDc0ZvcigKKyAgICBWTSYgdm0sIHVu
c2lnbmVkIG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcykKK3sKKyAgICBBU1NFUlQo
bnVtRXhwZWN0ZWRBcmd1bWVudHNJbmN1ZGluZ1RoaXMgPj0gMSk7CisgICAgCisgICAgSGFzaE1h
cDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPERhdGE+Pjo6aXRlcmF0b3IgaXRlciA9CisgICAg
ICAgIG1fbWFwLmZpbmQobnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlzKTsKKyAgICBp
ZiAoaXRlciAhPSBtX21hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLm1fcmV0
dXJuUENzLmdldCgpOworICAgIAorICAgIEFzc2VtYmx5SGVscGVycyBqaXQoJnZtLCAwKTsKKyAg
ICAKKyAgICBWZWN0b3I8QXNzZW1ibHlIZWxwZXJzOjpMYWJlbD4gcmV0dXJuTGFiZWxzOworICAg
IAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1
ZGluZ1RoaXMgLSAxOyArK2kpIHsKKyAgICAgICAgcmV0dXJuTGFiZWxzLmFwcGVuZChqaXQubGFi
ZWwoKSk7CisgICAgICAgIAorICAgICAgICBqaXQubG9hZFB0cigKKyAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6QWRkcmVzcygKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLAorICAgICAgICAgICAgICAgIChKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUgKyBudW1FeHBlY3RlZEFy
Z3VtZW50c0luY2x1ZGluZ1RoaXMpICogc2l6ZW9mKFJlZ2lzdGVyKSksCisgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMSk7CisgICAgICAgIAorICAgICAgICBqaXQuYWRkUHRyKAorICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCisgICAgICAgICAgICAgICAgKG51bUV4
cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcyAtIGkgKyAxKSAqIHNpemVvZihSZWdpc3Rlcikp
LAorICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Cisg
ICAgICAgIAorICAgICAgICBqaXQuanVtcChHUFJJbmZvOjpyZWdUMSk7CisgICAgfQorICAgIAor
ICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAg
ICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YT4gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0
YT4oKTsKKyAgICBkYXRhLT5tX3JldHVyblBDcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29kZUxvY2F0
aW9uTGFiZWxbXT4ocmV0dXJuTGFiZWxzLnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
cmV0dXJuTGFiZWxzLnNpemUoKTsgaS0tOykKKyAgICAgICAgZGF0YS0+bV9yZXR1cm5QQ3NbaV0g
PSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocmV0dXJuTGFiZWxzW2ldKTsKKyAgICBkYXRhLT5tX3Jl
ZiA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJBcml0eSBjaGVjayBmYWlsIHJldHVybiB0
aHVuayBmb3IgbnVtQXJncyA9ICV1IiwgbnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlz
KSk7CisgICAgCisgICAgQ29kZUxvY2F0aW9uTGFiZWwqIHJlc3VsdCA9IGRhdGEtPm1fcmV0dXJu
UENzLmdldCgpOworICAgIAorICAgIG1fbWFwLmFkZChudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1
ZGluZ1RoaXMsIHN0ZDo6bW92ZShkYXRhKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bcml0eUNoZWNrRmFpbFJldHVy
blRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bcml0
eUNoZWNrRmFpbFJldHVyblRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBB
cml0eUNoZWNrRmFpbFJldHVyblRodW5rc19oCisjZGVmaW5lIEFyaXR5Q2hlY2tGYWlsUmV0dXJu
VGh1bmtzX2gKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXJp
dHlDaGVja0ZhaWxSZXR1cm5UaHVua3MgeworcHVibGljOgorICAgIEFyaXR5Q2hlY2tGYWlsUmV0
dXJuVGh1bmtzKCk7CisgICAgfkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzKCk7CisgICAgCisg
ICAgQ29kZUxvY2F0aW9uTGFiZWwqIHJldHVyblBDc0ZvcigKKyAgICAgICAgVk0mLCB1bnNpZ25l
ZCBudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMpOworICAgIAorcHJpdmF0ZToKKyAg
ICBzdHJ1Y3QgRGF0YSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDb2RlTG9jYXRpb25MYWJl
bFtdPiBtX3JldHVyblBDczsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fcmVmOwor
ICAgIH07CisgICAgCisgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPERhdGE+
PiBtX21hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKKworI2VuZGlmIC8vIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzX2gKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTYwODkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiAr
MjY2LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogCiAjaWYg
RU5BQkxFKEpJVCkKICAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVua3MoKSk7Cisg
ICAgYXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEFyaXR5Q2hl
Y2tGYWlsUmV0dXJuVGh1bmtzPigpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTYwODkyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiAr
NjQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0
dXJuVGh1bmtzOwogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBDb2RlQ2FjaGU7CiAg
ICAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CkBAIC0zMzIsNiArMzMzLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gaml0U3R1YnMtPmN0aVN0dWIodGhpcywgZ2VuZXJh
dG9yKTsKICAgICAgICAgfQogICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rp
b24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyk7CisgICAgICAgIAorICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M+IGFyaXR5Q2hlY2tGYWlsUmV0dXJu
VGh1bmtzOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219729</attachid>
            <date>2013-12-19 21:26:14 -0800</date>
            <delta_ts>2013-12-20 00:55:42 -0800</delta_ts>
            <desc>it takes shape</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>11376</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVu
a3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVj
a0ZhaWxSZXR1cm5UaHVua3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5U
aHVua3MuaCIKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOjpBcml0
eUNoZWNrRmFpbFJldHVyblRodW5rcygpIHsgfQorQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M6
On5Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcygpIHsgfQorCitDb2RlTG9jYXRpb25MYWJlbCog
QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M6OnJldHVyblBDc0ZvcigKKyAgICBWTSYgdm0sIHVu
c2lnbmVkIG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcykKK3sKKyAgICBBU1NFUlQo
bnVtRXhwZWN0ZWRBcmd1bWVudHNJbmN1ZGluZ1RoaXMgPj0gMSk7CisgICAgCisgICAgSGFzaE1h
cDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPERhdGE+Pjo6aXRlcmF0b3IgaXRlciA9CisgICAg
ICAgIG1fbWFwLmZpbmQobnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlzKTsKKyAgICBp
ZiAoaXRlciAhPSBtX21hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLm1fcmV0
dXJuUENzLmdldCgpOworICAgIAorICAgIEFzc2VtYmx5SGVscGVycyBqaXQoJnZtLCAwKTsKKyAg
ICAKKyAgICBWZWN0b3I8QXNzZW1ibHlIZWxwZXJzOjpMYWJlbD4gcmV0dXJuTGFiZWxzOworICAg
IAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1
ZGluZ1RoaXMgLSAxOyArK2kpIHsKKyAgICAgICAgcmV0dXJuTGFiZWxzLmFwcGVuZChqaXQubGFi
ZWwoKSk7CisgICAgICAgIAorICAgICAgICBqaXQubG9hZFB0cigKKyAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6QWRkcmVzcygKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLAorICAgICAgICAgICAgICAgIChKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUgKyBudW1FeHBlY3RlZEFy
Z3VtZW50c0luY2x1ZGluZ1RoaXMpICogc2l6ZW9mKFJlZ2lzdGVyKSksCisgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMSk7CisgICAgICAgIAorICAgICAgICBqaXQuYWRkUHRyKAorICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoKGkgKyAxKSAqIHNpemVvZihSZWdpc3Rl
cikpLAorICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CisgICAgICAgIAorICAgICAgICBqaXQuanVtcChHUFJJbmZvOjpyZWdUMSk7CisgICAgfQorICAg
IAorICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsK
KyAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YT4gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
RGF0YT4oKTsKKyAgICBkYXRhLT5tX3JldHVyblBDcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29kZUxv
Y2F0aW9uTGFiZWxbXT4ocmV0dXJuTGFiZWxzLnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gcmV0dXJuTGFiZWxzLnNpemUoKTsgaS0tOykKKyAgICAgICAgZGF0YS0+bV9yZXR1cm5QQ3Nb
aV0gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocmV0dXJuTGFiZWxzW2ldKTsKKyAgICBkYXRhLT5t
X3JlZiA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJBcml0eSBjaGVjayBmYWlsIHJldHVy
biB0aHVuayBmb3IgbnVtQXJncyA9ICV1IiwgbnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRpbmdU
aGlzKSk7CisgICAgCisgICAgQ29kZUxvY2F0aW9uTGFiZWwqIHJlc3VsdCA9IGRhdGEtPm1fcmV0
dXJuUENzLmdldCgpOworICAgIAorICAgIG1fbWFwLmFkZChudW1FeHBlY3RlZEFyZ3VtZW50c0lu
Y2x1ZGluZ1RoaXMsIHN0ZDo6bW92ZShkYXRhKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bcml0eUNoZWNrRmFpbFJl
dHVyblRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
cml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rc19oCisjZGVmaW5lIEFyaXR5Q2hlY2tGYWlsUmV0
dXJuVGh1bmtzX2gKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJDb2RlTG9jYXRpb24u
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MgeworcHVibGljOgorICAgIEFyaXR5Q2hlY2tGYWls
UmV0dXJuVGh1bmtzKCk7CisgICAgfkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzKCk7CisgICAg
CisgICAgLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgcmV0dXJuIGxhYmVscyBp
bmRleGVkIGJ5IG1pc3NpbmdBcmdzLgorICAgIENvZGVMb2NhdGlvbkxhYmVsKiByZXR1cm5QQ3NG
b3IoVk0mLCB1bnNpZ25lZCBudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMpOworICAg
IAorcHJpdmF0ZToKKyAgICBzdHJ1Y3QgRGF0YSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxD
b2RlTG9jYXRpb25MYWJlbFtdPiBtX3JldHVyblBDczsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIG1fcmVmOworICAgIH07CisgICAgCisgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1
bmlxdWVfcHRyPERhdGE+PiBtX21hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtz
X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTYwODkzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NzYsNiArNTc2LDggQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSQog
ICAgICAgICBpZiAocmV0dXJuVmFsdWVHUFIgIT0gcmVnVDApCiAgICAgICAgICAgICBtb3ZlKHJl
dHVyblZhbHVlR1BSLCByZWdUMCk7CiAgICAgICAgIGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMCku
bGlua1RvKGJlZ2luTGFiZWwsIHRoaXMpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV92
bS0+YXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MtPnJldHVyblBDc0ZvcigqbV92bSwgbV9jb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSkpLCByZWdUNSk7CisgICAgICAgIGxvYWRQdHIoQmFzZUlu
ZGV4KHJlZ1Q1LCByZWdUMCwgVGltZXNQdHIpLCByZWdUNSk7CiAgICAgICAgIGVtaXROYWtlZENh
bGwobV92bS0+Z2V0Q1RJU3R1Yihhcml0eUZpeHVwKS5jb2RlKCkpOwogCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcAkocmV2aXNpb24gMTYwODkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDAsMTQgKzQ0MCwxNiBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJpdHlGaXh1cChWTSogdm0pCiB7CiAgICAgSlNJbnRlcmZh
Y2VKSVQgaml0KHZtKTsKIAotICAgIC8vIFdlIGVudGVyIHdpdGggZml4dXAgY291bnQgaW4gcmVn
VDAKKyAgICAvLyBXZSBlbnRlciB3aXRoIGZpeHVwIGNvdW50IGluIHJlZ1QwIGFuZCB0aGUgcmV0
dXJuIHRodW5rIGluIHJlZ1Q1LiBXZSB1c2UKKyAgICAvLyBWTTo6Y3VycmVudFJldHVyblRodW5r
UEMgaW5zdGVhZCBvZiByZWdUNSBvbiBYODYtMzIuCiAjaWYgVVNFKEpTVkFMVUU2NCkKICMgIGlm
IENQVShYODZfNjQpCiAgICAgaml0LnBvcChKU0ludGVyZmFjZUpJVDo6cmVnVDQpOwogIyAgZW5k
aWYKKyAgICBqaXQuYWRkMzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigxKSwgSlNJbnRl
cmZhY2VKSVQ6OnJlZ1QwKTsKICAgICBqaXQubmVnNjQoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsK
ICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJm
YWNlSklUOjpyZWdUMyk7Ci0gICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhK
U0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQg
KiA4KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsKKyAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNl
SklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNTdGFjazo6
QXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIp
OwogICAgIGppdC5hZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKEpTU3RhY2s6OkNh
bGxGcmFtZUhlYWRlclNpemUpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwogCiAgICAgLy8gTW92
ZSBjdXJyZW50IGZyYW1lIGRvd24gcmVnVDAgbnVtYmVyIG9mIHNsb3RzCkBAIC00NTcsMTggKzQ1
OSwyNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJpdHlGaXh1cChWTSogdm0pCiAgICAgaml0
LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDgpLCBKU0ludGVyZmFjZUpJVDo6
cmVnVDMpOwogICAgIGppdC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgSlNJ
bnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigxKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKS5saW5r
VG8oY29weUxvb3AsICZqaXQpOwogCi0gICAgLy8gRmlsbCBpbiByZWdUMCBtaXNzaW5nIGFyZyBz
bG90cyB3aXRoIHVuZGVmaW5lZAorICAgIC8vIEZpbGwgaW4gcmVnVDAgLSAxIG1pc3NpbmcgYXJn
IHNsb3RzIHdpdGggdW5kZWZpbmVkCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qw
LCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpU
cnVzdGVkSW1tNjQoVmFsdWVVbmRlZmluZWQpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDEpOworICAg
IGppdC5hZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDEpLCBKU0ludGVyZmFjZUpJ
VDo6cmVnVDIpOwogICAgIEpTSW50ZXJmYWNlSklUOjpMYWJlbCBmaWxsVW5kZWZpbmVkTG9vcChq
aXQubGFiZWwoKSk7CiAgICAgaml0LnN0b3JlNjQoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxLCBNYWNy
b0Fzc2VtYmxlcjo6QmFzZUluZGV4KEpTSW50ZXJmYWNlSklUOjpyZWdUMywgSlNJbnRlcmZhY2VK
SVQ6OnJlZ1QwLCBKU0ludGVyZmFjZUpJVDo6VGltZXNFaWdodCkpOwogICAgIGppdC5hZGRQdHIo
SlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMig4KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsK
ICAgICBqaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIEpTSW50ZXJmYWNl
SklUOjpUcnVzdGVkSW1tMzIoMSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMikubGlua1RvKGZpbGxV
bmRlZmluZWRMb29wLCAmaml0KTsKLQorICAgIAogICAgIC8vIEFkanVzdCBjYWxsIGZyYW1lIHJl
Z2lzdGVyIGFuZCBzdGFjayBwb2ludGVyIHRvIGFjY291bnQgZm9yIG1pc3NpbmcgYXJncwotICAg
IGppdC5sc2hpZnQ2NChKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDMpLCBKU0ludGVyZmFj
ZUpJVDo6cmVnVDApOwotICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwLCBKU0lu
dGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgIGppdC5hZGRQdHIoSlNJbnRlcmZh
Y2VKSVQ6OnJlZ1QwLCBKU0ludGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAg
IGppdC5sc2hpZnQ2NChKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDMpLCBKU0ludGVyZmFj
ZUpJVDo6cmVnVDEpOworICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxLCBKU0lu
dGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIGppdC5hZGRQdHIoSlNJbnRlcmZh
Y2VKSVQ6OnJlZ1QxLCBKU0ludGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCisg
ICAgLy8gU2F2ZSB0aGUgb3JpZ2luYWwgcmV0dXJuIFBDLgorICAgIGppdC5sb2FkUHRyKEpTSW50
ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2Fs
bEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5zdG9y
ZVB0cihHUFJJbmZvOjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChKU0ludGVyZmFj
ZUpJVDo6cmVnVDMsIEpTSW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VKSVQ6OlRpbWVz
RWlnaHQpKTsKKyAgICAKKyAgICAvLyBJbnN0YWxsIHRoZSBuZXcgcmV0dXJuIFBDLgorICAgIGpp
dC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUNSwgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRl
cmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkp
KTsKIAogIyAgaWYgQ1BVKFg4Nl82NCkKICAgICBqaXQucHVzaChKU0ludGVyZmFjZUpJVDo6cmVn
VDQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTYw
ODkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjYsNiArMjY2LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhl
YXBUeXBlKQogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBK
SVRUaHVua3MoKSk7CisgICAgYXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzPigpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoRlRMX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24g
MTYwODkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBj
b3B5KQpAQCAtNjQsNiArNjQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIEFy
aXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOwogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFz
cyBDb2RlQ2FjaGU7CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CkBAIC0zMzIsNyArMzMz
LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGppdFN0dWJzLT5jdGlT
dHViKHRoaXMsIGdlbmVyYXRvcik7CiAgICAgICAgIH0KICAgICAgICAgTmF0aXZlRXhlY3V0YWJs
ZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMpOwotI2VuZGlmCisg
ICAgICAgIAorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVu
a3M+IGFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOworI2lmIENQVShYODYpCisgICAgICAgIHZv
aWQqIGN1cnJlbnRSZXR1cm5UaHVua1BDOworI2VuZGlmIC8vIENQVShYODYpCisjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEZUTDo6VGh1bmtzPiBmdGxUaHVua3M7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219739</attachid>
            <date>2013-12-20 00:55:42 -0800</date>
            <delta_ts>2013-12-20 02:02:22 -0800</delta_ts>
            <desc>it runs things</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>33357</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjA4OTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3Nyw4IEBACiAJCTBGNkIxQ0M0MTg2MkM0
NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjZCMUNDMDE4NjJDNDc4MDA4NDVEOTcgLyogRlRM
UmVnaXN0ZXJBdE9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNkIxQ0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0Mx
MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCAqLzsgfTsKIAkJMEY2QjFDQzYx
ODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0MyMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExV
bndpbmRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEY2QjFDQzkxODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1
bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NkIxQ0M3MTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAg
Ki87IH07CisJCTBGNkIxQ0NBMTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNoZWNrRmFpbFJldHVy
blRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY2QjFDQzgxODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3MDI1
QTkxNzE0QjBGQTAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcwMjVBNzE3MTRCMEY4
MDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCAqLzsgfTsKIAkJMEY3MDI1
QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MDI1QTgxNzE0QjBGODAw
MzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzE0Q0E0MTZFQTkyRjAwMEYzRUJFQiAv
KiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzE0Q0ExMTZFQTkyRUQwMEYzRUJFQiAvKiBERkdC
YWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCAqLzsgfTsKQEAgLTE1OTksNiArMTYwMSw4IEBA
CiAJCTBGNkIxQ0MwMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFJlZ2lzdGVyQXRPZmZzZXQuaDsgcGF0
aCA9IGZ0bC9GVExSZWdpc3RlckF0T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNkIxQ0MxMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFVud2luZEluZm8uY3BwOyBwYXRoID0g
ZnRsL0ZUTFVud2luZEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZC
MUNDMjE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5kSW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBGVExVbndpbmRJbmZvLmg7IHBhdGggPSBmdGwvRlRMVW53aW5kSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjZCMUNDNzE4NjQxREY4MDA4NDVE
OTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjZCMUNDODE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlD
aGVja0ZhaWxSZXR1cm5UaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY3MDI1QTcxNzE0QjBGODAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzAyNUE4MTcxNEIwRjgwMDM4MkMwRSAvKiBE
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzE0Q0ExMTZFQTky
RUQwMEYzRUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2Uu
Y3BwOyBwYXRoID0gZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAwNSw2ICszMDA5LDggQEAKIAkJMTQyOUQ5MkMwRUQy
MkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMEY2QjFDQzcxODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0
dXJuVGh1bmtzLmNwcCAqLywKKwkJCQkwRjZCMUNDODE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlD
aGVja0ZhaWxSZXR1cm5UaHVua3MuaCAqLywKIAkJCQkwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcg
LyogQXNzZW1ibHlIZWxwZXJzLmNwcCAqLywKIAkJCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcg
LyogQXNzZW1ibHlIZWxwZXJzLmggKi8sCiAJCQkJMEYyNEU1M0QxN0VBOUY1OTAwQUJCMjE3IC8q
IENDYWxsSGVscGVycy5oICovLApAQCAtNDk3OSw2ICs0OTg1LDcgQEAKIAkJCQk5Njg4Q0IxNjBF
RDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NTE1
MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NjZF
Q0QxODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY2QjFDQ0ExODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hl
Y2tGYWlsUmV0dXJuVGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4NTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4
NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRC
ODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNTgw
NSw2ICs1ODEyLDcgQEAKIAkJCQkwRjhGMkI5RTE3MzA2QzhEMDA3REJEQTUgLyogU291cmNlQ29k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ5M0FGQTE2RDBDQUQzMDA4NDUwOEIgLyogU291
cmNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ5REMxNkIxMkVGMjkzRTAwMTg0
QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY2QjFD
QzkxODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMENENEM0MTVGNkI2QkIwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZh
bHVlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTU0MUIxMTYxM0MxRkIwMENFM0UyNSAv
KiBTcGVjaWFsUG9pbnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkU4NjE0MUYzRkYx
MDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTYw
ODkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisj
aW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJERkdGYWlsZWRGaW5hbGl6ZXIuaCIKICNpbmNsdWRlICJERkdJbmxp
bmVDYWNoZVdyYXBwZXJJbmxpbmVzLmgiCkBAIC0zNjgsNiArMzY5LDggQEAgdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9u
V2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPm1faXNDb25zdHJ1
Y3RvciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlD
aGVjaywgR1BSSW5mbzo6cmVnVDApOwogICAgIGJyYW5jaFRlc3QzMihaZXJvLCBHUFJJbmZvOjpy
ZWdUMCkubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0aGlzKTsKICAgICBlbWl0U3RvcmVDb2RlT3Jp
Z2luKENvZGVPcmlnaW4oMCkpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtLT5hcml0eUNo
ZWNrRmFpbFJldHVyblRodW5rcy0+cmV0dXJuUENzRm9yKCptX3ZtLCBtX2NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKSksIEdQUkluZm86OnJlZ1Q1KTsKKyAgICBsb2FkUHRyKEJhc2VJbmRleChH
UFJJbmZvOjpyZWdUNSwgR1BSSW5mbzo6cmVnVDAsIHRpbWVzUHRyKCkpLCBHUFJJbmZvOjpyZWdU
NSk7CiAgICAgbV9jYWxsQXJpdHlGaXh1cCA9IGNhbGwoKTsKICAgICBqdW1wKGZyb21Bcml0eUNo
ZWNrKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2
aXNpb24gMTYwODkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAK
KyNpbmNsdWRlICJBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkNDYWxs
SGVscGVycy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2tXaXRoSklUVHlwZS5oIgpAQCAtNDYsNiArNDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgREZH
Owogdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrOworICAgIFZNJiB2bSA9IHN0YXRlLmdyYXBoLm1fdm07
CiAgICAgCiAgICAgLy8gTExWTSB3aWxsIGNyZWF0ZSBpdHMgb3duIGp1bXAgdGFibGVzIGFzIG5l
ZWRlZC4KICAgICBjb2RlQmxvY2stPmNsZWFyU3dpdGNoSnVtcFRhYmxlcygpOwpAQCAtNjEsNyAr
NjMsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgIAogICAgIC8vIENyZWF0ZSB0aGUg
ZW50cnlwb2ludC4gTm90ZSB0aGF0IHdlIHVzZSB0aGlzIGVudHJ5cG9pbnQgdG90YWxseSBkaWZm
ZXJlbnRseQogICAgIC8vIGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlJ3JlIGRvaW5nIE9TUiBlbnRy
eSBvciBub3QuCi0gICAgQ0NhbGxIZWxwZXJzIGppdCgmc3RhdGUuZ3JhcGgubV92bSwgY29kZUJs
b2NrKTsKKyAgICBDQ2FsbEhlbHBlcnMgaml0KCZ2bSwgY29kZUJsb2NrKTsKICAgICAKICAgICBP
d25QdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlcjsKICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGFy
aXR5Q2hlY2s7CkBAIC04NCwyNyArODYsMjkgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAg
ICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihDYWxsRnJhbWU6OkxvY2F0aW9uOjplbmNvZGVBc0J5dGVjb2RlT2Zmc2V0KDApKSwKICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKLSAg
ICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmc3RhdGUuZ3Jh
cGgubV92bS50b3BDYWxsRnJhbWUpOworICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgY2FsbEFyaXR5Q2hlY2sgPSBqaXQuY2FsbCgpOwogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgLy8gRklYTUU6IG5lZWQgdG8gbWFrZSB0aGlzIGNhbGwgcmVnaXN0ZXIgd2l0aCBl
eGNlcHRpb24gaGFuZGxpbmcgc29tZWhvdy4gVGhpcyBpcwogICAgICAgICAvLyBwYXJ0IG9mIGEg
YmlnZ2VyIHByb2JsZW06IEZUTCBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgZXhjZXB0aW9ucy4K
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzYy
MgogICAgICAgICAvLyBVbnRpbCB0aGVuLCB1c2UgYSBKSVQgQVNTRVJULgotICAgICAgICBqaXQu
bG9hZDY0KHN0YXRlLmdyYXBoLm1fdm0uYWRkcmVzc09mRXhjZXB0aW9uKCksIEdQUkluZm86OnJl
Z1QxKTsKKyAgICAgICAgaml0LmxvYWQ2NCh2bS5hZGRyZXNzT2ZFeGNlcHRpb24oKSwgR1BSSW5m
bzo6cmVnVDEpOwogICAgICAgICBqaXQuaml0QXNzZXJ0SXNOdWxsKEdQUkluZm86OnJlZ1QxKTsK
ICNlbmRpZgogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5m
bzo6cmVnVDApOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAg
bWFpblBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8s
IEdQUkluZm86OnJlZ1QwKSk7CiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwor
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodm0uYXJpdHlDaGVj
a0ZhaWxSZXR1cm5UaHVua3MtPnJldHVyblBDc0Zvcih2bSwgY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkpKSwgR1BSSW5mbzo6cmVnVDUpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUNSwgR1BSSW5mbzo6cmVnVDAsIENDYWxsSGVscGVy
czo6dGltZXNQdHIoKSksIEdQUkluZm86OnJlZ1Q1KTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIGNhbGxBcml0eUZpeHVwID0gaml0LmNhbGwoKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7CiAgICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOwog
Ci0gICAgICAgIGxpbmtCdWZmZXIgPSBhZG9wdFB0cihuZXcgTGlua0J1ZmZlcihzdGF0ZS5ncmFw
aC5tX3ZtLCAmaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKKyAg
ICAgICAgbGlua0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHZtLCAmaml0LCBjb2Rl
QmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKICAgICAgICAgbGlua0J1ZmZlci0+
bGluayhjYWxsQXJpdHlDaGVjaywgY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBvcGVyYXRp
b25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2spOwotICAgICAg
ICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0cigoc3RhdGUuZ3Jh
cGgubV92bS5nZXRDVElTdHViKGFyaXR5Rml4dXApKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpOworICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0
cigodm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwKSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KTsKICAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBDb2RlTG9jYXRpb25M
YWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOwogCiAg
ICAgICAgIHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikp
KTsKQEAgLTEyMCw4ICsxMjQsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBq
aXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG1h
aW5QYXRoSnVtcCA9IGppdC5qdW1wKCk7CiAgICAgICAgIAotICAgICAgICBsaW5rQnVmZmVyID0g
YWRvcHRQdHIobmV3IExpbmtCdWZmZXIoCi0gICAgICAgICAgICBzdGF0ZS5ncmFwaC5tX3ZtLCAm
aml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKKyAgICAgICAgbGlu
a0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHZtLCAmaml0LCBjb2RlQmxvY2ssIEpJ
VENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKICAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWlu
UGF0aEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2Vu
ZXJhdGVkRnVuY3Rpb24pKSk7CiAKICAgICAgICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUFk
ZHJlc3NGb3JDYWxsKGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yoc3RhcnQpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCShyZXZpc2lvbiAxNjA4OTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5
LDcgKzE0OSw2IEBAIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIERGRzo6T1NSRXhpdEJhc2UKICAg
ICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMsIHVuc2lnbmVkIG51bWJlck9mTG9jYWxz
KTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbV9jb2RlOwotICAgIFJlZlB0cjxK
SVRTdHViUm91dGluZT4gbV9yZWdpc3RlclJlc3RvcmF0aW9uOwogICAgIAogICAgIC8vIFRoZSBm
aXJzdCBhcmd1bWVudCB0byB0aGUgZXhpdCBjYWxsIG1heSBiZSBhIHZhbHVlIHdlIHdpc2ggdG8g
cHJvZmlsZS4KICAgICAvLyBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZSBmb3JtYXQgd2lsbCBiZSBu
b3QgSW52YWxpZCBhbmQgd2UnbGwgaGF2ZSBhCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNjA4OTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDE0ICs0Niw2IEBAIHVzaW5nIG5hbWVzcGFjZSBERkc7CiBzdGF0aWMgdm9p
ZCBjb21waWxlU3R1YigKICAgICB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9T
UkV4aXQmIGV4aXQsIFZNKiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgLy8gUmVn
aXN0ZXIgcmVzdG9yYXRpb24gaXMgYSBHQy1hd2FyZSBKSVQgc3R1YiByb3V0aW5lIHNpbmNlIHdl
IG5lZWQgaXQgdG8gc3RheSBhbGl2ZQotICAgIC8vIGlmIGl0J3Mgb24gdGhlIHN0YWNrIGJ1dCBh
bGwgb2Ygb3VyIG90aGVyIHRoaW5ncyAobGlrZSB0aGUgRlRMOjpPU1JFeGl0KSBhcmUgZGVhZC4K
LSAgICBleGl0Lm1fcmVnaXN0ZXJSZXN0b3JhdGlvbiA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAot
ICAgICAgICBnZW5lcmF0ZVJlZ2lzdGVyUmVzdG9yYXRpb24oCi0gICAgICAgICAgICAqdm0sIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCi0gICAgICAgICAgICBjb2RlQmxvY2stPmNvZGVU
eXBlKCkgPT0gRnVuY3Rpb25Db2RlID8gTXVzdENoZWNrQXJpdHkgOiBBcml0eUNoZWNrTm90UmVx
dWlyZWQpLAotICAgICAgICAqdm0sIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHRydWUp
OwotICAgIAogICAgIFN0YWNrTWFwczo6UmVjb3JkKiByZWNvcmQ7CiAgICAgCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gaml0Q29kZS0+c3RhY2ttYXBzLnJlY29yZHMuc2l6ZSgpOyBpLS07KSB7CkBA
IC0yMTksNyArMjExLDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgaml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAg
ICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgaml0
LnN0b3JlUHRyKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihleGl0Lm1f
cmVnaXN0ZXJSZXN0b3JhdGlvbi0+Y29kZSgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSwK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodm0tPmdldENUSVN0dWIocmVn
aXN0ZXJSZXN0b3JhdGlvblRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSk7CiAgICAgCiAg
ICAgLy8gTm93IGdldCBzdGF0ZSBvdXQgb2YgdGhlIHNjcmF0Y2ggYnVmZmVyIGFuZCBwbGFjZSBp
dCBiYWNrIGludG8gdGhlIHN0YWNrLiBUaGlzIHBhcnQgZG9lcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FyaXR5Q2hlY2tG
YWlsUmV0dXJuVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCIKKworI2lmIEVO
QUJMRShKSVQpCisKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCisjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOjpBcml0eUNoZWNrRmFpbFJldHVyblRodW5r
cygpCisgICAgOiBtX25leHRTaXplKDApCit7Cit9CisKK0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1
bmtzOjp+QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MoKSB7IH0KKworQ29kZUxvY2F0aW9uTGFi
ZWwqIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOjpyZXR1cm5QQ3NGb3IoCisgICAgVk0mIHZt
LCB1bnNpZ25lZCBudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMpCit7CisgICAgQVNT
RVJUKG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcyA+PSAxKTsKKyAgICAKKyAgICBu
dW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2YoCisgICAgICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG51bUV4cGVjdGVkQXJndW1l
bnRzSW5jbHVkaW5nVGhpcyk7CisgICAgCisgICAgeworICAgICAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBpZiAobnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNs
dWRpbmdUaGlzIDwgbV9uZXh0U2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBtX3JldHVyblBDQXJy
YXlzLmxhc3QoKS5nZXQoKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9u
VGhyZWFkKCkpOworICAgIAorICAgIG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcyA9
IHN0ZDo6bWF4KAorICAgICAgICBudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMsCisg
ICAgICAgIG1fbmV4dFNpemUgKiAyKTsKKyAgICAKKyAgICBBc3NlbWJseUhlbHBlcnMgaml0KCZ2
bSwgMCk7CisgICAgCisgICAgVmVjdG9yPEFzc2VtYmx5SGVscGVyczo6TGFiZWw+IGxhYmVsczsK
KyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSBtX25leHRTaXplOyBzaXplIDw9IG51bUV4
cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpczsgc2l6ZSArPSBzdGFja0FsaWdubWVudFJlZ2lz
dGVycygpKSB7CisgICAgICAgIGxhYmVscy5hcHBlbmQoaml0LmxhYmVsKCkpOworICAgICAgICAK
KyAgICAgICAgaml0Lm5lYXJDYWxsKCk7CisgICAgICAgIGppdC5wb3AoR1BSSW5mbzo6cmVnVDIp
OworICAgICAgICBqaXQubG9hZDMyKAorICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpBZGRy
ZXNzKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsCisgICAgICAgICAgICAgICAgKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgLSBKU1N0YWNrOjpD
YWxsZXJGcmFtZUFuZFBDU2l6ZSkgKiBzaXplb2YoUmVnaXN0ZXIpICsKKyAgICAgICAgICAgICAg
ICBQYXlsb2FkT2Zmc2V0KSwKKyAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAg
aml0LmFkZDMyKAorICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCisg
ICAgICAgICAgICAgICAgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIEpTU3RhY2s6OkNh
bGxlckZyYW1lQW5kUENTaXplICsgc2l6ZSAtIDEpLAorICAgICAgICAgICAgR1BSSW5mbzo6cmVn
VDEpOworICAgICAgICBqaXQubHNoaWZ0MzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MyksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgaml0LmFkZFB0cihBc3NlbWJseUhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIGppdC5sb2Fk
UHRyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIAorICAgICAgICBq
aXQuYWRkUHRyKAorICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6
ZSAqIHNpemVvZihSZWdpc3RlcikpLAorICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIAorICAgICAgICBqaXQuanVtcChHUFJJbmZvOjpy
ZWdUMSk7CisgICAgfQorICAgIAorICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwgJmppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKKyAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29kZUxvY2F0aW9u
TGFiZWxbXT4gcmV0dXJuUENzID0KKyAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxDb2RlTG9jYXRp
b25MYWJlbFtdPihsYWJlbHMuc2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyBz
aXplIDw9IG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpczsgc2l6ZSArPSBzdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpKSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc2l6ZSAvIHN0
YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCk7CisgICAgICAgIGlmIChzaXplIDwgbV9uZXh0U2l6ZSkK
KyAgICAgICAgICAgIHJldHVyblBDc1tpbmRleF0gPSBtX3JldHVyblBDQXJyYXlzLmxhc3QoKVtp
bmRleF07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVyblBDc1tpbmRleF0gPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YobGFiZWxzWyhzaXplIC0gbV9uZXh0U2l6ZSkgLyBzdGFja0FsaWdu
bWVudFJlZ2lzdGVycygpXSk7CisgICAgfQorCisgICAgQ29kZUxvY2F0aW9uTGFiZWwqIHJlc3Vs
dCA9IHJldHVyblBDcy5nZXQoKTsKKworICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9yZXR1cm5QQ0FycmF5cy5hcHBlbmQoc3RkOjpt
b3ZlKHJldHVyblBDcykpOworICAgICAgICBtX3JlZnMuYXBwZW5kKEZJTkFMSVpFX0NPREUobGlu
a0J1ZmZlciwgKCJBcml0eSBjaGVjayBmYWlsIHJldHVybiB0aHVua3MgZm9yIHVwIHRvIG51bUFy
Z3MgPSAldSIsIG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcykpKTsKKyAgICAgICAg
bV9uZXh0U2l6ZSA9IG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcyArIHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKCk7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0ZhaWxSZXR1cm5U
aHVua3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlD
aGVja0ZhaWxSZXR1cm5UaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQXJp
dHlDaGVja0ZhaWxSZXR1cm5UaHVua3NfaAorI2RlZmluZSBBcml0eUNoZWNrRmFpbFJldHVyblRo
dW5rc19oCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCisj
aW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3Mgewor
cHVibGljOgorICAgIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzKCk7CisgICAgfkFyaXR5Q2hl
Y2tGYWlsUmV0dXJuVGh1bmtzKCk7CisgICAgCisgICAgLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8g
YW4gYXJyYXkgb2YgcmV0dXJuIGxhYmVscyBpbmRleGVkIGJ5IG1pc3NpbmdBcmdzLgorICAgIENv
ZGVMb2NhdGlvbkxhYmVsKiByZXR1cm5QQ3NGb3IoVk0mLCB1bnNpZ25lZCBudW1FeHBlY3RlZEFy
Z3VtZW50c0luY2x1ZGluZ1RoaXMpOworICAgIAorcHJpdmF0ZToKKyAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPENvZGVMb2NhdGlvbkxhYmVsW10+PiBtX3JldHVyblBDQXJyYXlzOworICAgIHVu
c2lnbmVkIG1fbmV4dFNpemU7CisgICAgVmVjdG9yPE1hY3JvQXNzZW1ibGVyQ29kZVJlZj4gbV9y
ZWZzOworICAgIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9jazsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIEFyaXR5Q2hlY2tGYWls
UmV0dXJuVGh1bmtzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNp
b24gMTYwODkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiBKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpT
U0UyQ2hlY2tTdGF0ZSBKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzX3NzZTJDaGVja1N0
YXRlID0gTm90Q2hlY2tlZFNTRTI7CiAjZW5kaWYKIAorI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWls
UmV0dXJuVGh1bmtzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ2Fw
YWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTU3Niw2ICs1NzcsOCBA
QCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJCiAgICAgICAgIGlmIChy
ZXR1cm5WYWx1ZUdQUiAhPSByZWdUMCkKICAgICAgICAgICAgIG1vdmUocmV0dXJuVmFsdWVHUFIs
IHJlZ1QwKTsKICAgICAgICAgYnJhbmNoVGVzdDMyKFplcm8sIHJlZ1QwKS5saW5rVG8oYmVnaW5M
YWJlbCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtLT5hcml0eUNoZWNr
RmFpbFJldHVyblRodW5rcy0+cmV0dXJuUENzRm9yKCptX3ZtLCBtX2NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpKSksIHJlZ1Q1KTsKKyAgICAgICAgbG9hZFB0cihCYXNlSW5kZXgocmVnVDUsIHJl
Z1QwLCB0aW1lc1B0cigpKSwgcmVnVDUpOwogICAgICAgICBlbWl0TmFrZWRDYWxsKG1fdm0tPmdl
dENUSVN0dWIoYXJpdHlGaXh1cCkuY29kZSgpKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2aXNpb24gMTYwODkzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY4LDcgKzE2OCw3IEBAIEpJVENvZGU6OkNvZGVQdHIgRGlyZWN0SklUQ29kZTo6YWRkcmVz
c0YKICAgICAgICAgY2FzZSBNdXN0UHJlc2VydmVSZWdpc3RlcnM6IHsKICAgICAgICAgICAgIFJl
Z2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlcnMqIHdyYXBwZXJzID0gZW5zdXJlV3JhcHBlcnMoKTsK
ICAgICAgICAgICAgIGlmICghd3JhcHBlcnMtPndpdGhvdXRBcml0eUNoZWNrKQotICAgICAgICAg
ICAgICAgIHdyYXBwZXJzLT53aXRob3V0QXJpdHlDaGVjayA9IGdlbmVyYXRlUmVnaXN0ZXJQcmVz
ZXJ2YXRpb25XcmFwcGVyKHZtLCBleGVjdXRhYmxlLCBtX3JlZi5jb2RlKCksIEFyaXR5Q2hlY2tO
b3RSZXF1aXJlZCk7CisgICAgICAgICAgICAgICAgd3JhcHBlcnMtPndpdGhvdXRBcml0eUNoZWNr
ID0gZ2VuZXJhdGVSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXIodm0sIGV4ZWN1dGFibGUsIG1f
cmVmLmNvZGUoKSk7CiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcnMtPndpdGhvdXRBcml0eUNo
ZWNrLmNvZGUoKTsKICAgICAgICAgfSB9CiAgICAgY2FzZSBNdXN0Q2hlY2tBcml0eToKQEAgLTE3
OSw3ICsxNzksNyBAQCBKSVRDb2RlOjpDb2RlUHRyIERpcmVjdEpJVENvZGU6OmFkZHJlc3NGCiAg
ICAgICAgIGNhc2UgTXVzdFByZXNlcnZlUmVnaXN0ZXJzOiB7CiAgICAgICAgICAgICBSZWdpc3Rl
clByZXNlcnZhdGlvbldyYXBwZXJzKiB3cmFwcGVycyA9IGVuc3VyZVdyYXBwZXJzKCk7CiAgICAg
ICAgICAgICBpZiAoIXdyYXBwZXJzLT53aXRoQXJpdHlDaGVjaykKLSAgICAgICAgICAgICAgICB3
cmFwcGVycy0+d2l0aEFyaXR5Q2hlY2sgPSBnZW5lcmF0ZVJlZ2lzdGVyUHJlc2VydmF0aW9uV3Jh
cHBlcih2bSwgZXhlY3V0YWJsZSwgbV93aXRoQXJpdHlDaGVjaywgTXVzdENoZWNrQXJpdHkpOwor
ICAgICAgICAgICAgICAgIHdyYXBwZXJzLT53aXRoQXJpdHlDaGVjayA9IGdlbmVyYXRlUmVnaXN0
ZXJQcmVzZXJ2YXRpb25XcmFwcGVyKHZtLCBleGVjdXRhYmxlLCBtX3dpdGhBcml0eUNoZWNrKTsK
ICAgICAgICAgICAgIHJldHVybiB3cmFwcGVycy0+d2l0aEFyaXR5Q2hlY2suY29kZSgpOwogICAg
ICAgICB9IH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
UHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3Bw
CShyZXZpc2lvbiAxNjA4OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
UHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcg
KzU4LDcgQEAgcHRyZGlmZl90IHJlZ2lzdGVyUHJlc2VydmF0aW9uT2Zmc2V0KCkKICAgICByZXR1
cm4gc2l6ZW9mKFJlZ2lzdGVyKSAqIG51bWJlck9mTmV3U3RhY2tTbG90czsKIH0KIAotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyKFZNJiB2
bSwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJn
ZXQsIEFyaXR5Q2hlY2tNb2RlIGFyaXR5KQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRl
UmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyKFZNJiB2bSwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQpCiB7CiAjaWYgRU5BQkxFKEZUTF9K
SVQpCiAgICAgLy8gV2Ugc2hvdWxkbid0IGV2ZXIgYmUgZ2VuZXJhdGluZyB3cmFwcGVycyBmb3Ig
bmF0aXZlIGZ1bmN0aW9ucy4KQEAgLTExNCw3ICsxMTQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZ2VuZXJhdGVSZWdpc3RlclByCiAgICAgCiAgICAgQXNzZW1ibHlIZWxwZXJzOjpDYWxsIGNh
bGwgPSBqaXQubmVhckNhbGwoKTsKICAgICAKLSAgICBnZW5lcmF0ZVJlZ2lzdGVyUmVzdG9yYXRp
b24oaml0LCBleGVjdXRhYmxlLCBhcml0eSk7CisgICAgZ2VuZXJhdGVSZWdpc3RlclJlc3RvcmF0
aW9uKGppdCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKHZtLCAmaml0LCBHTE9C
QUxfVEhVTktfSUQpOwogICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBDb2RlTG9jYXRpb25MYWJl
bCh0YXJnZXQpKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2Vu
ZXJhdGVSZWdpc3RlclByCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiB9CiAKLXZvaWQgZ2Vu
ZXJhdGVSZWdpc3RlclJlc3RvcmF0aW9uKEFzc2VtYmx5SGVscGVycyYgaml0LCBFeGVjdXRhYmxl
QmFzZSogZXhlY3V0YWJsZSwgQXJpdHlDaGVja01vZGUgYXJpdHkpCit2b2lkIGdlbmVyYXRlUmVn
aXN0ZXJSZXN0b3JhdGlvbihBc3NlbWJseUhlbHBlcnMmIGppdCkKIHsKICAgICBSZWdpc3RlclNl
dCB0b1NhdmUgPSByZWdpc3RlcnNUb1ByZXNlcnZlKCk7CiAgICAgcHRyZGlmZl90IG9mZnNldCA9
IHJlZ2lzdGVyUHJlc2VydmF0aW9uT2Zmc2V0KCk7CkBAIC0xNDUsMTkgKzE0NSw2IEBAIHZvaWQg
Z2VuZXJhdGVSZWdpc3RlclJlc3RvcmF0aW9uKEFzc2VtYmwKICAgICAgICAgICAgIChKU1N0YWNr
OjpBcmd1bWVudENvdW50IC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpICogc2l6ZW9m
KFJlZ2lzdGVyKSArIFBheWxvYWRPZmZzZXQpLAogICAgICAgICBHUFJJbmZvOjpyZWdUMik7CiAg
ICAgCi0gICAgaWYgKGFyaXR5ID09IE11c3RDaGVja0FyaXR5KSB7Ci0gICAgICAgIC8vIEl0J3Mg
cG9zc2libGUgdGhhdCB0aGUgYXJpdHkgY2hlY2tlciBoYWQgZXh0ZW5kZWQgdGhlIHN0YWNrLiBJ
biB0aGF0IGNhc2UsIHdlIG5lZWQKLSAgICAgICAgLy8gdG8gYWRqdXN0IHRoZSBhcmd1bWVudCBj
b3VudCB0byBiZSB0aGUgbWF4IG9mIHdoYXQgdGhlIGZyYW1lIGNsYWltcyBhbmQgd2hhdCB0aGUK
LSAgICAgICAgLy8gZXhlY3V0YWJsZSBkZXNpcmVkLgotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVj
dXRhYmxlKTsKLSAgICAgICAgaW50IHBhcmFtZXRlckNvdW50ID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5wYXJhbWV0ZXJDb3VudCgpICsgMTsKLSAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIG9r
ID0gaml0LmJyYW5jaDMyKAotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpBYm92ZU9yRXF1
YWwsIEdQUkluZm86OnJlZ1QyLAotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIocGFyYW1ldGVyQ291bnQpKTsKLSAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tMzIocGFyYW1ldGVyQ291bnQpLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAg
IG9rLmxpbmsoJmppdCk7Ci0gICAgfQotICAgIAogICAgIGppdC5sc2hpZnQzMihBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMigzKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIAogICAgIGppdC5h
ZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0KSwgQXNzZW1ibHlIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC0xOTksMTQgKzE4NiwxMiBAQCB2b2lkIGdl
bmVyYXRlUmVnaXN0ZXJSZXN0b3JhdGlvbihBc3NlbWJsCiAgICAgaml0Lmp1bXAoR1BSSW5mbzo6
cmVnVDEpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVSZWdpc3RlclJlc3Rv
cmF0aW9uKAotICAgIFZNJiB2bSwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUsIEFyaXR5Q2hl
Y2tNb2RlIGFyaXR5KQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJlZ2lzdGVyUmVzdG9yYXRpb25U
aHVua0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgU2NyaXB0RXhlY3V0YWJsZSogc2NyaXB0RXhl
Y3V0YWJsZSA9IGpzQ2FzdDxTY3JpcHRFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7Ci0gICAgQXNz
ZW1ibHlIZWxwZXJzIGppdCgmdm0sIDApOwotICAgIGdlbmVyYXRlUmVnaXN0ZXJSZXN0b3JhdGlv
bihqaXQsIGV4ZWN1dGFibGUsIGFyaXR5KTsKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIodm0s
ICZqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0RGR19DT0RFKGxp
bmtCdWZmZXIsICgiUmVnaXN0ZXIgcmVzdG9yYXRpb24gdGh1bmsgZm9yICVzLyVzIiwgdG9DU3Ry
aW5nKHNjcmlwdEV4ZWN1dGFibGUtPmhhc2hGb3IoQ29kZUZvckNhbGwpKS5kYXRhKCksIHRvQ1N0
cmluZyhzY3JpcHRFeGVjdXRhYmxlLT5oYXNoRm9yKENvZGVGb3JDb25zdHJ1Y3QpKS5kYXRhKCkp
KTsKKyAgICBBc3NlbWJseUhlbHBlcnMgaml0KHZtLCAwKTsKKyAgICBnZW5lcmF0ZVJlZ2lzdGVy
UmVzdG9yYXRpb24oaml0KTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoKnZtLCAmaml0LCBH
TE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICgi
UmVnaXN0ZXIgcmVzdG9yYXRpb24gdGh1bmsiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBw
ZXJHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
Z2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oCShyZXZpc2lvbiAxNjA4OTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdl
bmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMSArMzksMTEgQEAgUmVnaXN0ZXJTZXQg
cmVnaXN0ZXJzVG9QcmVzZXJ2ZSgpOwogCiBwdHJkaWZmX3QgcmVnaXN0ZXJQcmVzZXJ2YXRpb25P
ZmZzZXQoKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlUmVnaXN0ZXJQcmVzZXJ2
YXRpb25XcmFwcGVyKFZNJiwgRXhlY3V0YWJsZUJhc2UqLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
dGFyZ2V0LCBBcml0eUNoZWNrTW9kZSk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVS
ZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXIoVk0mLCBFeGVjdXRhYmxlQmFzZSosIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciB0YXJnZXQpOwogCi12b2lkIGdlbmVyYXRlUmVnaXN0ZXJSZXN0b3JhdGlv
bihBc3NlbWJseUhlbHBlcnMmLCBFeGVjdXRhYmxlQmFzZSosIEFyaXR5Q2hlY2tNb2RlKTsKK3Zv
aWQgZ2VuZXJhdGVSZWdpc3RlclJlc3RvcmF0aW9uKEFzc2VtYmx5SGVscGVycyYpOwogCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVSZWdpc3RlclJlc3RvcmF0aW9uKFZNJiwgRXhlY3V0
YWJsZUJhc2UqLCBBcml0eUNoZWNrTW9kZSk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcmVnaXN0
ZXJSZXN0b3JhdGlvblRodW5rR2VuZXJhdG9yKFZNKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CShyZXZpc2lvbiAxNjA4OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0MCwxNCArNDQwLDE2IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBhcml0eUZpeHVwKFZNKiB2bSkKIHsKICAgICBKU0ludGVyZmFjZUpJVCBq
aXQodm0pOwogCi0gICAgLy8gV2UgZW50ZXIgd2l0aCBmaXh1cCBjb3VudCBpbiByZWdUMAorICAg
IC8vIFdlIGVudGVyIHdpdGggZml4dXAgY291bnQsIGluIGFsaWduZWQgc3RhY2sgdW5pdHMsIGlu
IHJlZ1QwIGFuZCB0aGUgcmV0dXJuIHRodW5rIGluCisgICAgLy8gcmVnVDUuIFdlIHVzZSBWTTo6
Y3VycmVudFJldHVyblRodW5rUEMgaW5zdGVhZCBvZiByZWdUNSBvbiBYODYtMzIuCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICMgIGlmIENQVShYODZfNjQpCiAgICAgaml0LnBvcChKU0ludGVyZmFjZUpJ
VDo6cmVnVDQpOwogIyAgZW5kaWYKKyAgICBqaXQubHNoaWZ0MzIoSlNJbnRlcmZhY2VKSVQ6OlRy
dXN0ZWRJbW0zMihsb2dTdGFja0FsaWdubWVudFJlZ2lzdGVycygpKSwgSlNJbnRlcmZhY2VKSVQ6
OnJlZ1QwKTsKICAgICBqaXQubmVnNjQoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKICAgICBqaXQu
bW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJmYWNlSklUOjpy
ZWdUMyk7Ci0gICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFj
ZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiA4KSwgSlNJ
bnRlcmZhY2VKSVQ6OnJlZ1QyKTsKKyAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjpBZGRy
ZXNzKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNTdGFjazo6QXJndW1lbnRD
b3VudCAqIHNpemVvZihSZWdpc3RlcikpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwogICAgIGpp
dC5hZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlclNpemUpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwogCiAgICAgLy8gTW92ZSBjdXJyZW50
IGZyYW1lIGRvd24gcmVnVDAgbnVtYmVyIG9mIHNsb3RzCkBAIC00NTcsMTggKzQ1OSwyNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJpdHlGaXh1cChWTSogdm0pCiAgICAgaml0LmFkZFB0cihK
U0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDgpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOwog
ICAgIGppdC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgSlNJbnRlcmZhY2VK
SVQ6OlRydXN0ZWRJbW0zMigxKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKS5saW5rVG8oY29weUxv
b3AsICZqaXQpOwogCi0gICAgLy8gRmlsbCBpbiByZWdUMCBtaXNzaW5nIGFyZyBzbG90cyB3aXRo
IHVuZGVmaW5lZAorICAgIC8vIEZpbGwgaW4gcmVnVDAgLSAxIG1pc3NpbmcgYXJnIHNsb3RzIHdp
dGggdW5kZWZpbmVkCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwLCBKU0ludGVy
ZmFjZUpJVDo6cmVnVDIpOwogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1t
NjQoVmFsdWVVbmRlZmluZWQpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDEpOworICAgIGppdC5hZGQz
MihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDEpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIp
OwogICAgIEpTSW50ZXJmYWNlSklUOjpMYWJlbCBmaWxsVW5kZWZpbmVkTG9vcChqaXQubGFiZWwo
KSk7CiAgICAgaml0LnN0b3JlNjQoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxLCBNYWNyb0Fzc2VtYmxl
cjo6QmFzZUluZGV4KEpTSW50ZXJmYWNlSklUOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qw
LCBKU0ludGVyZmFjZUpJVDo6VGltZXNFaWdodCkpOwogICAgIGppdC5hZGRQdHIoSlNJbnRlcmZh
Y2VKSVQ6OlRydXN0ZWRJbW0zMig4KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsKICAgICBqaXQu
YnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIEpTSW50ZXJmYWNlSklUOjpUcnVz
dGVkSW1tMzIoMSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMikubGlua1RvKGZpbGxVbmRlZmluZWRM
b29wLCAmaml0KTsKLQorICAgIAogICAgIC8vIEFkanVzdCBjYWxsIGZyYW1lIHJlZ2lzdGVyIGFu
ZCBzdGFjayBwb2ludGVyIHRvIGFjY291bnQgZm9yIG1pc3NpbmcgYXJncwotICAgIGppdC5sc2hp
ZnQ2NChKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDMpLCBKU0ludGVyZmFjZUpJVDo6cmVn
VDApOwotICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwLCBKU0ludGVyZmFjZUpJ
VDo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QwLCBKU0ludGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5tb3Zl
KEpTSW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKKyAgICBqaXQu
bHNoaWZ0NjQoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigzKSwgSlNJbnRlcmZhY2VKSVQ6
OnJlZ1QxKTsKKyAgICBqaXQuYWRkUHRyKEpTSW50ZXJmYWNlSklUOjpyZWdUMSwgSlNJbnRlcmZh
Y2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICBqaXQuYWRkUHRyKEpTSW50ZXJmYWNlSklU
OjpyZWdUMSwgSlNJbnRlcmZhY2VKSVQ6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIC8v
IFNhdmUgdGhlIG9yaWdpbmFsIHJldHVybiBQQy4KKyAgICBqaXQubG9hZFB0cihKU0ludGVyZmFj
ZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFt
ZTo6cmV0dXJuUENPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICBqaXQuc3RvcmVQdHIo
R1BSSW5mbzo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoSlNJbnRlcmZhY2VKSVQ6
OnJlZ1QzLCBKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50ZXJmYWNlSklUOjpUaW1lc0VpZ2h0
KSk7CisgICAgCisgICAgLy8gSW5zdGFsbCB0aGUgbmV3IHJldHVybiBQQy4KKyAgICBqaXQuc3Rv
cmVQdHIoR1BSSW5mbzo6cmVnVDUsIEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNl
SklUOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSk7CiAK
ICMgIGlmIENQVShYODZfNjQpCiAgICAgaml0LnB1c2goSlNJbnRlcmZhY2VKSVQ6OnJlZ1Q0KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCShyZXZpc2lvbiAxNjA4OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTggKzU4LDE5IEBAIEFMV0FZ
U19JTkxJTkUgaW50IGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXQKICAgICAKICAgICBBU1NFUlQoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7
CiAgICAgaW50IG1pc3NpbmdBcmd1bWVudENvdW50ID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKLSAgICBpbnQgcGFkZGVkTWlzc2lu
Z0FyZ3VtZW50Q291bnQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRS
ZWdpc3RlcnMoKSwgbWlzc2luZ0FyZ3VtZW50Q291bnQpOworICAgIGludCBuZWVkZWRTdGFja1Nw
YWNlID0gbWlzc2luZ0FyZ3VtZW50Q291bnQgKyAxOyAvLyBBbGxvdyBzcGFjZSB0byBzYXZlIHRo
ZSBvcmlnaW5hbCByZXR1cm4gUEMuCisgICAgaW50IHBhZGRlZFN0YWNrU3BhY2UgPSBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbmVlZGVkU3RhY2tT
cGFjZSk7CiAKICNpZiBFTkFCTEUoTExJTlRfQ0xPT1ApCi0gICAgaWYgKCFzdGFjay0+Z3Jvdyhl
eGVjLT5yZWdpc3RlcnMoKSAtIHBhZGRlZE1pc3NpbmdBcmd1bWVudENvdW50KSkKKyAgICBpZiAo
IXN0YWNrLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpIC0gcGFzc2VkU3RhY2tTcGFjZSkpCiAgICAg
ICAgIHJldHVybiAtMTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YWNrKTsKLSAgICBpZiAo
IWV4ZWMtPnZtKCkuaXNTYWZlVG9SZWN1cnNlKHBhZGRlZE1pc3NpbmdBcmd1bWVudENvdW50ICog
c2l6ZW9mKFJlZ2lzdGVyKSkpCisgICAgaWYgKCFleGVjLT52bSgpLmlzU2FmZVRvUmVjdXJzZShw
YWRkZWRTdGFja1NwYWNlICogc2l6ZW9mKFJlZ2lzdGVyKSkpCiAgICAgICAgIHJldHVybiAtMTsK
ICNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ0xPT1ApCiAKLSAgICByZXR1cm4gcGFkZGVkTWlzc2lu
Z0FyZ3VtZW50Q291bnQ7CisgICAgcmV0dXJuIHBhZGRlZFN0YWNrU3BhY2UgLyBzdGFja0FsaWdu
bWVudFJlZ2lzdGVycygpOwogfQogCiBpbmxpbmUgYm9vbCBvcEluKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBwcm9wTmFtZSwgSlNWYWx1ZSBiYXNlVmFsKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RhY2tBbGlnbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0FsaWdubWVudC5oCShyZXZpc2lvbiAxNjA4OTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0FsaWdubWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFN0YWNrQWxpZ25tZW50X2gKIAogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKIApAQCAtMzgsNiArMzksMTEgQEAgaW5saW5lIHVuc2lnbmVkIHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKAogICAgIHJldHVybiBzdGFja0FsaWdubWVudEJ5dGVzKCkgLyBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpOwogfQogCitpbmxpbmUgdW5zaWduZWQgbG9nU3RhY2tBbGlnbm1l
bnRSZWdpc3RlcnMoKQoreworICAgIHJldHVybiBXVEY6OmZhc3RMb2cyKHN0YWNrQWxpZ25tZW50
UmVnaXN0ZXJzKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFN0YWNr
QWxpZ25tZW50X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlz
aW9uIDE2MDg5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlZNLmgiCiAKICNpbmNsdWRl
ICJBcmdMaXN0LmgiCisjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCIKICNp
bmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKICNpbmNsdWRlICJDYWxs
RnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCkBAIC0yNjYsNiArMjY3LDcg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogCiAjaWYgRU5BQkxF
KEpJVCkKICAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVua3MoKSk7CisgICAgYXJp
dHlDaGVja0ZhaWxSZXR1cm5UaHVua3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEFyaXR5Q2hlY2tGYWls
UmV0dXJuVGh1bmtzPigpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTYwODkyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1
bmtzOwogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBDb2RlQ2FjaGU7CiAgICAgY2xh
c3MgQ29tbW9uSWRlbnRpZmllcnM7CkBAIC0zMzIsNyArMzMzLDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuIGppdFN0dWJzLT5jdGlTdHViKHRoaXMsIGdlbmVyYXRvcik7
CiAgICAgICAgIH0KICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5h
dGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMpOwotI2VuZGlmCisgICAgICAgIAorICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M+IGFyaXR5Q2hlY2tGYWlsUmV0
dXJuVGh1bmtzOworI2lmIENQVShYODYpCisgICAgICAgIHZvaWQqIGN1cnJlbnRSZXR1cm5UaHVu
a1BDOworI2VuZGlmIC8vIENQVShYODYpCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICNpZiBFTkFC
TEUoRlRMX0pJVCkKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEZUTDo6VGh1bmtzPiBmdGxUaHVu
a3M7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219742</attachid>
            <date>2013-12-20 02:02:22 -0800</date>
            <delta_ts>2013-12-20 15:22:38 -0800</delta_ts>
            <desc>LLInt starting to work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>46053</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjA4OTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3Nyw4IEBACiAJCTBGNkIxQ0M0MTg2MkM0
NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjZCMUNDMDE4NjJDNDc4MDA4NDVEOTcgLyogRlRM
UmVnaXN0ZXJBdE9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNkIxQ0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0Mx
MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCAqLzsgfTsKIAkJMEY2QjFDQzYx
ODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0MyMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExV
bndpbmRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEY2QjFDQzkxODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1
bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NkIxQ0M3MTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAg
Ki87IH07CisJCTBGNkIxQ0NBMTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNoZWNrRmFpbFJldHVy
blRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY2QjFDQzgxODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3MDI1
QTkxNzE0QjBGQTAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcwMjVBNzE3MTRCMEY4
MDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCAqLzsgfTsKIAkJMEY3MDI1
QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MDI1QTgxNzE0QjBGODAw
MzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzE0Q0E0MTZFQTkyRjAwMEYzRUJFQiAv
KiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzE0Q0ExMTZFQTkyRUQwMEYzRUJFQiAvKiBERkdC
YWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCAqLzsgfTsKQEAgLTE1OTksNiArMTYwMSw4IEBA
CiAJCTBGNkIxQ0MwMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFJlZ2lzdGVyQXRPZmZzZXQuaDsgcGF0
aCA9IGZ0bC9GVExSZWdpc3RlckF0T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNkIxQ0MxMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFVud2luZEluZm8uY3BwOyBwYXRoID0g
ZnRsL0ZUTFVud2luZEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZC
MUNDMjE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5kSW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBGVExVbndpbmRJbmZvLmg7IHBhdGggPSBmdGwvRlRMVW53aW5kSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjZCMUNDNzE4NjQxREY4MDA4NDVE
OTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjZCMUNDODE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlD
aGVja0ZhaWxSZXR1cm5UaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY3MDI1QTcxNzE0QjBGODAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzAyNUE4MTcxNEIwRjgwMDM4MkMwRSAvKiBE
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzE0Q0ExMTZFQTky
RUQwMEYzRUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2Uu
Y3BwOyBwYXRoID0gZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAwNSw2ICszMDA5LDggQEAKIAkJMTQyOUQ5MkMwRUQy
MkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMEY2QjFDQzcxODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0
dXJuVGh1bmtzLmNwcCAqLywKKwkJCQkwRjZCMUNDODE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlD
aGVja0ZhaWxSZXR1cm5UaHVua3MuaCAqLywKIAkJCQkwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcg
LyogQXNzZW1ibHlIZWxwZXJzLmNwcCAqLywKIAkJCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcg
LyogQXNzZW1ibHlIZWxwZXJzLmggKi8sCiAJCQkJMEYyNEU1M0QxN0VBOUY1OTAwQUJCMjE3IC8q
IENDYWxsSGVscGVycy5oICovLApAQCAtNDk3OSw2ICs0OTg1LDcgQEAKIAkJCQk5Njg4Q0IxNjBF
RDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NTE1
MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NjZF
Q0QxODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY2QjFDQ0ExODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hl
Y2tGYWlsUmV0dXJuVGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4NTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4
NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRC
ODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNTgw
NSw2ICs1ODEyLDcgQEAKIAkJCQkwRjhGMkI5RTE3MzA2QzhEMDA3REJEQTUgLyogU291cmNlQ29k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ5M0FGQTE2RDBDQUQzMDA4NDUwOEIgLyogU291
cmNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ5REMxNkIxMkVGMjkzRTAwMTg0
QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY2QjFD
QzkxODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMENENEM0MTVGNkI2QkIwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZh
bHVlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTU0MUIxMTYxM0MxRkIwMENFM0UyNSAv
KiBTcGVjaWFsUG9pbnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkU4NjE0MUYzRkYx
MDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTYw
ODkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisj
aW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJERkdGYWlsZWRGaW5hbGl6ZXIuaCIKICNpbmNsdWRlICJERkdJbmxp
bmVDYWNoZVdyYXBwZXJJbmxpbmVzLmgiCkBAIC0zNjgsNiArMzY5LDggQEAgdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9u
V2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPm1faXNDb25zdHJ1
Y3RvciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlD
aGVjaywgR1BSSW5mbzo6cmVnVDApOwogICAgIGJyYW5jaFRlc3QzMihaZXJvLCBHUFJJbmZvOjpy
ZWdUMCkubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0aGlzKTsKICAgICBlbWl0U3RvcmVDb2RlT3Jp
Z2luKENvZGVPcmlnaW4oMCkpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtLT5hcml0eUNo
ZWNrRmFpbFJldHVyblRodW5rcy0+cmV0dXJuUENzRm9yKCptX3ZtLCBtX2NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKSksIEdQUkluZm86OnJlZ1Q1KTsKKyAgICBsb2FkUHRyKEJhc2VJbmRleChH
UFJJbmZvOjpyZWdUNSwgR1BSSW5mbzo6cmVnVDAsIHRpbWVzUHRyKCkpLCBHUFJJbmZvOjpyZWdU
NSk7CiAgICAgbV9jYWxsQXJpdHlGaXh1cCA9IGNhbGwoKTsKICAgICBqdW1wKGZyb21Bcml0eUNo
ZWNrKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2
aXNpb24gMTYwODkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAK
KyNpbmNsdWRlICJBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkNDYWxs
SGVscGVycy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2tXaXRoSklUVHlwZS5oIgpAQCAtNDYsNiArNDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgREZH
Owogdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrOworICAgIFZNJiB2bSA9IHN0YXRlLmdyYXBoLm1fdm07
CiAgICAgCiAgICAgLy8gTExWTSB3aWxsIGNyZWF0ZSBpdHMgb3duIGp1bXAgdGFibGVzIGFzIG5l
ZWRlZC4KICAgICBjb2RlQmxvY2stPmNsZWFyU3dpdGNoSnVtcFRhYmxlcygpOwpAQCAtNjEsNyAr
NjMsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgIAogICAgIC8vIENyZWF0ZSB0aGUg
ZW50cnlwb2ludC4gTm90ZSB0aGF0IHdlIHVzZSB0aGlzIGVudHJ5cG9pbnQgdG90YWxseSBkaWZm
ZXJlbnRseQogICAgIC8vIGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlJ3JlIGRvaW5nIE9TUiBlbnRy
eSBvciBub3QuCi0gICAgQ0NhbGxIZWxwZXJzIGppdCgmc3RhdGUuZ3JhcGgubV92bSwgY29kZUJs
b2NrKTsKKyAgICBDQ2FsbEhlbHBlcnMgaml0KCZ2bSwgY29kZUJsb2NrKTsKICAgICAKICAgICBP
d25QdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlcjsKICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGFy
aXR5Q2hlY2s7CkBAIC04NCwyNyArODYsMjkgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAg
ICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihDYWxsRnJhbWU6OkxvY2F0aW9uOjplbmNvZGVBc0J5dGVjb2RlT2Zmc2V0KDApKSwKICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKLSAg
ICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmc3RhdGUuZ3Jh
cGgubV92bS50b3BDYWxsRnJhbWUpOworICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgY2FsbEFyaXR5Q2hlY2sgPSBqaXQuY2FsbCgpOwogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgLy8gRklYTUU6IG5lZWQgdG8gbWFrZSB0aGlzIGNhbGwgcmVnaXN0ZXIgd2l0aCBl
eGNlcHRpb24gaGFuZGxpbmcgc29tZWhvdy4gVGhpcyBpcwogICAgICAgICAvLyBwYXJ0IG9mIGEg
YmlnZ2VyIHByb2JsZW06IEZUTCBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgZXhjZXB0aW9ucy4K
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzYy
MgogICAgICAgICAvLyBVbnRpbCB0aGVuLCB1c2UgYSBKSVQgQVNTRVJULgotICAgICAgICBqaXQu
bG9hZDY0KHN0YXRlLmdyYXBoLm1fdm0uYWRkcmVzc09mRXhjZXB0aW9uKCksIEdQUkluZm86OnJl
Z1QxKTsKKyAgICAgICAgaml0LmxvYWQ2NCh2bS5hZGRyZXNzT2ZFeGNlcHRpb24oKSwgR1BSSW5m
bzo6cmVnVDEpOwogICAgICAgICBqaXQuaml0QXNzZXJ0SXNOdWxsKEdQUkluZm86OnJlZ1QxKTsK
ICNlbmRpZgogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5m
bzo6cmVnVDApOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAg
bWFpblBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8s
IEdQUkluZm86OnJlZ1QwKSk7CiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwor
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodm0uYXJpdHlDaGVj
a0ZhaWxSZXR1cm5UaHVua3MtPnJldHVyblBDc0Zvcih2bSwgY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkpKSwgR1BSSW5mbzo6cmVnVDUpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUNSwgR1BSSW5mbzo6cmVnVDAsIENDYWxsSGVscGVy
czo6dGltZXNQdHIoKSksIEdQUkluZm86OnJlZ1Q1KTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIGNhbGxBcml0eUZpeHVwID0gaml0LmNhbGwoKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7CiAgICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOwog
Ci0gICAgICAgIGxpbmtCdWZmZXIgPSBhZG9wdFB0cihuZXcgTGlua0J1ZmZlcihzdGF0ZS5ncmFw
aC5tX3ZtLCAmaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKKyAg
ICAgICAgbGlua0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHZtLCAmaml0LCBjb2Rl
QmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKICAgICAgICAgbGlua0J1ZmZlci0+
bGluayhjYWxsQXJpdHlDaGVjaywgY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBvcGVyYXRp
b25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2spOwotICAgICAg
ICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0cigoc3RhdGUuZ3Jh
cGgubV92bS5nZXRDVElTdHViKGFyaXR5Rml4dXApKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpOworICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0
cigodm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwKSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KTsKICAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBDb2RlTG9jYXRpb25M
YWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOwogCiAg
ICAgICAgIHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikp
KTsKQEAgLTEyMCw4ICsxMjQsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBq
aXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG1h
aW5QYXRoSnVtcCA9IGppdC5qdW1wKCk7CiAgICAgICAgIAotICAgICAgICBsaW5rQnVmZmVyID0g
YWRvcHRQdHIobmV3IExpbmtCdWZmZXIoCi0gICAgICAgICAgICBzdGF0ZS5ncmFwaC5tX3ZtLCAm
aml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKKyAgICAgICAgbGlu
a0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHZtLCAmaml0LCBjb2RlQmxvY2ssIEpJ
VENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKICAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWlu
UGF0aEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2Vu
ZXJhdGVkRnVuY3Rpb24pKSk7CiAKICAgICAgICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUFk
ZHJlc3NGb3JDYWxsKGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yoc3RhcnQpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCShyZXZpc2lvbiAxNjA4OTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5
LDcgKzE0OSw2IEBAIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIERGRzo6T1NSRXhpdEJhc2UKICAg
ICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMsIHVuc2lnbmVkIG51bWJlck9mTG9jYWxz
KTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbV9jb2RlOwotICAgIFJlZlB0cjxK
SVRTdHViUm91dGluZT4gbV9yZWdpc3RlclJlc3RvcmF0aW9uOwogICAgIAogICAgIC8vIFRoZSBm
aXJzdCBhcmd1bWVudCB0byB0aGUgZXhpdCBjYWxsIG1heSBiZSBhIHZhbHVlIHdlIHdpc2ggdG8g
cHJvZmlsZS4KICAgICAvLyBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZSBmb3JtYXQgd2lsbCBiZSBu
b3QgSW52YWxpZCBhbmQgd2UnbGwgaGF2ZSBhCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNjA4OTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDE0ICs0Niw2IEBAIHVzaW5nIG5hbWVzcGFjZSBERkc7CiBzdGF0aWMgdm9p
ZCBjb21waWxlU3R1YigKICAgICB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9T
UkV4aXQmIGV4aXQsIFZNKiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgLy8gUmVn
aXN0ZXIgcmVzdG9yYXRpb24gaXMgYSBHQy1hd2FyZSBKSVQgc3R1YiByb3V0aW5lIHNpbmNlIHdl
IG5lZWQgaXQgdG8gc3RheSBhbGl2ZQotICAgIC8vIGlmIGl0J3Mgb24gdGhlIHN0YWNrIGJ1dCBh
bGwgb2Ygb3VyIG90aGVyIHRoaW5ncyAobGlrZSB0aGUgRlRMOjpPU1JFeGl0KSBhcmUgZGVhZC4K
LSAgICBleGl0Lm1fcmVnaXN0ZXJSZXN0b3JhdGlvbiA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAot
ICAgICAgICBnZW5lcmF0ZVJlZ2lzdGVyUmVzdG9yYXRpb24oCi0gICAgICAgICAgICAqdm0sIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCi0gICAgICAgICAgICBjb2RlQmxvY2stPmNvZGVU
eXBlKCkgPT0gRnVuY3Rpb25Db2RlID8gTXVzdENoZWNrQXJpdHkgOiBBcml0eUNoZWNrTm90UmVx
dWlyZWQpLAotICAgICAgICAqdm0sIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHRydWUp
OwotICAgIAogICAgIFN0YWNrTWFwczo6UmVjb3JkKiByZWNvcmQ7CiAgICAgCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gaml0Q29kZS0+c3RhY2ttYXBzLnJlY29yZHMuc2l6ZSgpOyBpLS07KSB7CkBA
IC0yMTksNyArMjExLDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgaml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAg
ICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgaml0
LnN0b3JlUHRyKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihleGl0Lm1f
cmVnaXN0ZXJSZXN0b3JhdGlvbi0+Y29kZSgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSwK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodm0tPmdldENUSVN0dWIocmVn
aXN0ZXJSZXN0b3JhdGlvblRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSk7CiAgICAgCiAg
ICAgLy8gTm93IGdldCBzdGF0ZSBvdXQgb2YgdGhlIHNjcmF0Y2ggYnVmZmVyIGFuZCBwbGFjZSBp
dCBiYWNrIGludG8gdGhlIHN0YWNrLiBUaGlzIHBhcnQgZG9lcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FyaXR5Q2hlY2tG
YWlsUmV0dXJuVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCIKKworI2lmIEVO
QUJMRShKSVQpCisKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCisjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOjpBcml0eUNoZWNrRmFpbFJldHVyblRodW5r
cygpCisgICAgOiBtX25leHRTaXplKDApCit7Cit9CisKK0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1
bmtzOjp+QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MoKSB7IH0KKworQ29kZUxvY2F0aW9uTGFi
ZWwqIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOjpyZXR1cm5QQ3NGb3IoCisgICAgVk0mIHZt
LCB1bnNpZ25lZCBudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMpCit7CisgICAgQVNT
RVJUKG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcyA+PSAxKTsKKyAgICAKKyAgICBu
dW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2YoCisgICAgICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG51bUV4cGVjdGVkQXJndW1l
bnRzSW5jbHVkaW5nVGhpcyk7CisgICAgCisgICAgeworICAgICAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBpZiAobnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNs
dWRpbmdUaGlzIDwgbV9uZXh0U2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBtX3JldHVyblBDQXJy
YXlzLmxhc3QoKS5nZXQoKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9u
VGhyZWFkKCkpOworICAgIAorICAgIG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcyA9
IHN0ZDo6bWF4KAorICAgICAgICBudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMsCisg
ICAgICAgIG1fbmV4dFNpemUgKiAyKTsKKyAgICAKKyAgICBBc3NlbWJseUhlbHBlcnMgaml0KCZ2
bSwgMCk7CisgICAgCisgICAgVmVjdG9yPEFzc2VtYmx5SGVscGVyczo6TGFiZWw+IGxhYmVsczsK
KyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSBtX25leHRTaXplOyBzaXplIDw9IG51bUV4
cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpczsgc2l6ZSArPSBzdGFja0FsaWdubWVudFJlZ2lz
dGVycygpKSB7CisgICAgICAgIGxhYmVscy5hcHBlbmQoaml0LmxhYmVsKCkpOworICAgICAgICAK
KyAgICAgICAgaml0Lm5lYXJDYWxsKCk7CisgICAgICAgIGppdC5wb3AoR1BSSW5mbzo6cmVnVDIp
OworICAgICAgICBqaXQubG9hZDMyKAorICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpBZGRy
ZXNzKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsCisgICAgICAgICAgICAgICAgKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgLSBKU1N0YWNrOjpD
YWxsZXJGcmFtZUFuZFBDU2l6ZSkgKiBzaXplb2YoUmVnaXN0ZXIpICsKKyAgICAgICAgICAgICAg
ICBQYXlsb2FkT2Zmc2V0KSwKKyAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAg
aml0LmFkZDMyKAorICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCisg
ICAgICAgICAgICAgICAgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIEpTU3RhY2s6OkNh
bGxlckZyYW1lQW5kUENTaXplICsgc2l6ZSAtIDEpLAorICAgICAgICAgICAgR1BSSW5mbzo6cmVn
VDEpOworICAgICAgICBqaXQubHNoaWZ0MzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MyksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgaml0LmFkZFB0cihBc3NlbWJseUhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIGppdC5sb2Fk
UHRyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIAorICAgICAgICBq
aXQuYWRkUHRyKAorICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6
ZSAqIHNpemVvZihSZWdpc3RlcikpLAorICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIAorICAgICAgICBqaXQuanVtcChHUFJJbmZvOjpy
ZWdUMSk7CisgICAgfQorICAgIAorICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwgJmppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKKyAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29kZUxvY2F0aW9u
TGFiZWxbXT4gcmV0dXJuUENzID0KKyAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxDb2RlTG9jYXRp
b25MYWJlbFtdPihsYWJlbHMuc2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyBz
aXplIDw9IG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpczsgc2l6ZSArPSBzdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpKSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc2l6ZSAvIHN0
YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCk7CisgICAgICAgIGlmIChzaXplIDwgbV9uZXh0U2l6ZSkK
KyAgICAgICAgICAgIHJldHVyblBDc1tpbmRleF0gPSBtX3JldHVyblBDQXJyYXlzLmxhc3QoKVtp
bmRleF07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVyblBDc1tpbmRleF0gPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YobGFiZWxzWyhzaXplIC0gbV9uZXh0U2l6ZSkgLyBzdGFja0FsaWdu
bWVudFJlZ2lzdGVycygpXSk7CisgICAgfQorCisgICAgQ29kZUxvY2F0aW9uTGFiZWwqIHJlc3Vs
dCA9IHJldHVyblBDcy5nZXQoKTsKKworICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9yZXR1cm5QQ0FycmF5cy5hcHBlbmQoc3RkOjpt
b3ZlKHJldHVyblBDcykpOworICAgICAgICBtX3JlZnMuYXBwZW5kKEZJTkFMSVpFX0NPREUobGlu
a0J1ZmZlciwgKCJBcml0eSBjaGVjayBmYWlsIHJldHVybiB0aHVua3MgZm9yIHVwIHRvIG51bUFy
Z3MgPSAldSIsIG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcykpKTsKKyAgICAgICAg
bV9uZXh0U2l6ZSA9IG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcyArIHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKCk7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K0NvZGVMb2NhdGlvbkxhYmVsIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOjpyZXR1cm5QQ0Zv
cihWTSYgdm0sIHVuc2lnbmVkIHNsb3RzVG9BZGQpCit7CisgICAgcmV0dXJuIHJldHVyblBDc0Zv
cih2bSwgc2xvdHNUb0FkZClbc2xvdHNUb0FkZF07Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVu
a3NfaAorI2RlZmluZSBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rc19oCisKKyNpZiBFTkFCTEUo
SklUKQorCisjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCisjaW5jbHVkZSAiQ29uY3VycmVudEpJ
VExvY2suaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MgeworcHVibGljOgorICAgIEFyaXR5Q2hl
Y2tGYWlsUmV0dXJuVGh1bmtzKCk7CisgICAgfkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzKCk7
CisgICAgCisgICAgLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgcmV0dXJuIGxh
YmVscyBpbmRleGVkIGJ5IG1pc3NpbmdBcmdzLgorICAgIENvZGVMb2NhdGlvbkxhYmVsKiByZXR1
cm5QQ3NGb3IoVk0mLCB1bnNpZ25lZCBudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMp
OworICAgIAorICAgIENvZGVMb2NhdGlvbkxhYmVsIHJldHVyblBDRm9yKFZNJiwgdW5zaWduZWQg
c2xvdHNUb0FkZCk7CisgICAgCitwcml2YXRlOgorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Q29kZUxvY2F0aW9uTGFiZWxbXT4+IG1fcmV0dXJuUENBcnJheXM7CisgICAgdW5zaWduZWQgbV9u
ZXh0U2l6ZTsKKyAgICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPiBtX3JlZnM7CisgICAg
Q29uY3VycmVudEpJVExvY2sgbV9sb2NrOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVu
a3NfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxNjA4OTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDcgQEAKIEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OlNTRTJDaGVja1N0
YXRlIEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnNfc3NlMkNoZWNrU3RhdGUgPSBOb3RD
aGVja2VkU1NFMjsKICNlbmRpZgogCisjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVu
a3MuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNTc2LDYgKzU3Nyw4IEBAIENvbXBpbGF0
aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAgICAgICAgaWYgKHJldHVyblZhbHVl
R1BSICE9IHJlZ1QwKQogICAgICAgICAgICAgbW92ZShyZXR1cm5WYWx1ZUdQUiwgcmVnVDApOwog
ICAgICAgICBicmFuY2hUZXN0MzIoWmVybywgcmVnVDApLmxpbmtUbyhiZWdpbkxhYmVsLCB0aGlz
KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fdm0tPmFyaXR5Q2hlY2tGYWlsUmV0dXJu
VGh1bmtzLT5yZXR1cm5QQ3NGb3IoKm1fdm0sIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
KSwgcmVnVDUpOworICAgICAgICBsb2FkUHRyKEJhc2VJbmRleChyZWdUNSwgcmVnVDAsIHRpbWVz
UHRyKCkpLCByZWdUNSk7CiAgICAgICAgIGVtaXROYWtlZENhbGwobV92bS0+Z2V0Q1RJU3R1Yihh
cml0eUZpeHVwKS5jb2RlKCkpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENvZGUuY3BwCShyZXZpc2lvbiAxNjA4OTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyAr
MTY4LDcgQEAgSklUQ29kZTo6Q29kZVB0ciBEaXJlY3RKSVRDb2RlOjphZGRyZXNzRgogICAgICAg
ICBjYXNlIE11c3RQcmVzZXJ2ZVJlZ2lzdGVyczogewogICAgICAgICAgICAgUmVnaXN0ZXJQcmVz
ZXJ2YXRpb25XcmFwcGVycyogd3JhcHBlcnMgPSBlbnN1cmVXcmFwcGVycygpOwogICAgICAgICAg
ICAgaWYgKCF3cmFwcGVycy0+d2l0aG91dEFyaXR5Q2hlY2spCi0gICAgICAgICAgICAgICAgd3Jh
cHBlcnMtPndpdGhvdXRBcml0eUNoZWNrID0gZ2VuZXJhdGVSZWdpc3RlclByZXNlcnZhdGlvbldy
YXBwZXIodm0sIGV4ZWN1dGFibGUsIG1fcmVmLmNvZGUoKSwgQXJpdHlDaGVja05vdFJlcXVpcmVk
KTsKKyAgICAgICAgICAgICAgICB3cmFwcGVycy0+d2l0aG91dEFyaXR5Q2hlY2sgPSBnZW5lcmF0
ZVJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlcih2bSwgZXhlY3V0YWJsZSwgbV9yZWYuY29kZSgp
KTsKICAgICAgICAgICAgIHJldHVybiB3cmFwcGVycy0+d2l0aG91dEFyaXR5Q2hlY2suY29kZSgp
OwogICAgICAgICB9IH0KICAgICBjYXNlIE11c3RDaGVja0FyaXR5OgpAQCAtMTc5LDcgKzE3OSw3
IEBAIEpJVENvZGU6OkNvZGVQdHIgRGlyZWN0SklUQ29kZTo6YWRkcmVzc0YKICAgICAgICAgY2Fz
ZSBNdXN0UHJlc2VydmVSZWdpc3RlcnM6IHsKICAgICAgICAgICAgIFJlZ2lzdGVyUHJlc2VydmF0
aW9uV3JhcHBlcnMqIHdyYXBwZXJzID0gZW5zdXJlV3JhcHBlcnMoKTsKICAgICAgICAgICAgIGlm
ICghd3JhcHBlcnMtPndpdGhBcml0eUNoZWNrKQotICAgICAgICAgICAgICAgIHdyYXBwZXJzLT53
aXRoQXJpdHlDaGVjayA9IGdlbmVyYXRlUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyKHZtLCBl
eGVjdXRhYmxlLCBtX3dpdGhBcml0eUNoZWNrLCBNdXN0Q2hlY2tBcml0eSk7CisgICAgICAgICAg
ICAgICAgd3JhcHBlcnMtPndpdGhBcml0eUNoZWNrID0gZ2VuZXJhdGVSZWdpc3RlclByZXNlcnZh
dGlvbldyYXBwZXIodm0sIGV4ZWN1dGFibGUsIG1fd2l0aEFyaXR5Q2hlY2spOwogICAgICAgICAg
ICAgcmV0dXJuIHdyYXBwZXJzLT53aXRoQXJpdHlDaGVjay5jb2RlKCk7CiAgICAgICAgIH0gfQog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJQcmVzZXJ2YXRp
b25XcmFwcGVyR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAJKHJldmlzaW9u
IDE2MDg5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJQcmVzZXJ2YXRp
b25XcmFwcGVyR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBw
dHJkaWZmX3QgcmVnaXN0ZXJQcmVzZXJ2YXRpb25PZmZzZXQoKQogICAgIHJldHVybiBzaXplb2Yo
UmVnaXN0ZXIpICogbnVtYmVyT2ZOZXdTdGFja1Nsb3RzOwogfQogCi1NYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZ2VuZXJhdGVSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXIoVk0mIHZtLCBFeGVjdXRh
YmxlQmFzZSogZXhlY3V0YWJsZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHRhcmdldCwgQXJpdHlD
aGVja01vZGUgYXJpdHkpCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVSZWdpc3RlclBy
ZXNlcnZhdGlvbldyYXBwZXIoVk0mIHZtLCBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyIHRhcmdldCkKIHsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICAv
LyBXZSBzaG91bGRuJ3QgZXZlciBiZSBnZW5lcmF0aW5nIHdyYXBwZXJzIGZvciBuYXRpdmUgZnVu
Y3Rpb25zLgpAQCAtMTE0LDcgKzExNCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0
ZVJlZ2lzdGVyUHIKICAgICAKICAgICBBc3NlbWJseUhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5u
ZWFyQ2FsbCgpOwogICAgIAotICAgIGdlbmVyYXRlUmVnaXN0ZXJSZXN0b3JhdGlvbihqaXQsIGV4
ZWN1dGFibGUsIGFyaXR5KTsKKyAgICBnZW5lcmF0ZVJlZ2lzdGVyUmVzdG9yYXRpb24oaml0KTsK
ICAgICAKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIodm0sICZqaXQsIEdMT0JBTF9USFVOS19J
RCk7CiAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIENvZGVMb2NhdGlvbkxhYmVsKHRhcmdldCkp
OwpAQCAtMTMwLDcgKzEzMCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVJlZ2lz
dGVyUHIKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH0KIAotdm9pZCBnZW5lcmF0ZVJlZ2lz
dGVyUmVzdG9yYXRpb24oQXNzZW1ibHlIZWxwZXJzJiBqaXQsIEV4ZWN1dGFibGVCYXNlKiBleGVj
dXRhYmxlLCBBcml0eUNoZWNrTW9kZSBhcml0eSkKK3ZvaWQgZ2VuZXJhdGVSZWdpc3RlclJlc3Rv
cmF0aW9uKEFzc2VtYmx5SGVscGVycyYgaml0KQogewogICAgIFJlZ2lzdGVyU2V0IHRvU2F2ZSA9
IHJlZ2lzdGVyc1RvUHJlc2VydmUoKTsKICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gcmVnaXN0ZXJQ
cmVzZXJ2YXRpb25PZmZzZXQoKTsKQEAgLTE0NSwxOSArMTQ1LDYgQEAgdm9pZCBnZW5lcmF0ZVJl
Z2lzdGVyUmVzdG9yYXRpb24oQXNzZW1ibAogICAgICAgICAgICAgKEpTU3RhY2s6OkFyZ3VtZW50
Q291bnQgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSkgKiBzaXplb2YoUmVnaXN0ZXIp
ICsgUGF5bG9hZE9mZnNldCksCiAgICAgICAgIEdQUkluZm86OnJlZ1QyKTsKICAgICAKLSAgICBp
ZiAoYXJpdHkgPT0gTXVzdENoZWNrQXJpdHkpIHsKLSAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0
aGF0IHRoZSBhcml0eSBjaGVja2VyIGhhZCBleHRlbmRlZCB0aGUgc3RhY2suIEluIHRoYXQgY2Fz
ZSwgd2UgbmVlZAotICAgICAgICAvLyB0byBhZGp1c3QgdGhlIGFyZ3VtZW50IGNvdW50IHRvIGJl
IHRoZSBtYXggb2Ygd2hhdCB0aGUgZnJhbWUgY2xhaW1zIGFuZCB3aGF0IHRoZQotICAgICAgICAv
LyBleGVjdXRhYmxlIGRlc2lyZWQuCi0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwot
ICAgICAgICBpbnQgcGFyYW1ldGVyQ291bnQgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnBhcmFtZXRl
ckNvdW50KCkgKyAxOwotICAgICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJh
bmNoMzIoCi0gICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgR1BSSW5m
bzo6cmVnVDIsCi0gICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihwYXJh
bWV0ZXJDb3VudCkpOwotICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihwYXJhbWV0ZXJDb3VudCksIEdQUkluZm86OnJlZ1QyKTsKLSAgICAgICAgb2subGluaygm
aml0KTsKLSAgICB9Ci0gICAgCiAgICAgaml0LmxzaGlmdDMyKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbTMyKDMpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgCiAgICAgaml0LmFkZFB0cihBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihvZmZzZXQpLCBBc3NlbWJseUhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKQEAgLTE5OSwxNCArMTg2LDEyIEBAIHZvaWQgZ2VuZXJhdGVSZWdp
c3RlclJlc3RvcmF0aW9uKEFzc2VtYmwKICAgICBqaXQuanVtcChHUFJJbmZvOjpyZWdUMSk7CiB9
CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVJlZ2lzdGVyUmVzdG9yYXRpb24oCi0g
ICAgVk0mIHZtLCBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSwgQXJpdHlDaGVja01vZGUgYXJp
dHkpCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcmVnaXN0ZXJSZXN0b3JhdGlvblRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKIHsKLSAgICBTY3JpcHRFeGVjdXRhYmxlKiBzY3JpcHRFeGVjdXRhYmxlID0g
anNDYXN0PFNjcmlwdEV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKLSAgICBBc3NlbWJseUhlbHBl
cnMgaml0KCZ2bSwgMCk7Ci0gICAgZ2VuZXJhdGVSZWdpc3RlclJlc3RvcmF0aW9uKGppdCwgZXhl
Y3V0YWJsZSwgYXJpdHkpOwotICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwgJmppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfREZHX0NPREUobGlua0J1ZmZlciwg
KCJSZWdpc3RlciByZXN0b3JhdGlvbiB0aHVuayBmb3IgJXMvJXMiLCB0b0NTdHJpbmcoc2NyaXB0
RXhlY3V0YWJsZS0+aGFzaEZvcihDb2RlRm9yQ2FsbCkpLmRhdGEoKSwgdG9DU3RyaW5nKHNjcmlw
dEV4ZWN1dGFibGUtPmhhc2hGb3IoQ29kZUZvckNvbnN0cnVjdCkpLmRhdGEoKSkpOworICAgIEFz
c2VtYmx5SGVscGVycyBqaXQodm0sIDApOworICAgIGdlbmVyYXRlUmVnaXN0ZXJSZXN0b3JhdGlv
bihqaXQpOworICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcigqdm0sICZqaXQsIEdMT0JBTF9USFVO
S19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJSZWdpc3RlciBy
ZXN0b3JhdGlvbiB0aHVuayIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJQcmVz
ZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE2MDg5MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDExICszOSwxMSBAQCBSZWdpc3RlclNldCByZWdpc3RlcnNU
b1ByZXNlcnZlKCk7CiAKIHB0cmRpZmZfdCByZWdpc3RlclByZXNlcnZhdGlvbk9mZnNldCgpOwog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVSZWdpc3RlclByZXNlcnZhdGlvbldyYXBw
ZXIoVk0mLCBFeGVjdXRhYmxlQmFzZSosIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQsIEFy
aXR5Q2hlY2tNb2RlKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVJlZ2lzdGVyUHJl
c2VydmF0aW9uV3JhcHBlcihWTSYsIEV4ZWN1dGFibGVCYXNlKiwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIHRhcmdldCk7CiAKLXZvaWQgZ2VuZXJhdGVSZWdpc3RlclJlc3RvcmF0aW9uKEFzc2VtYmx5
SGVscGVycyYsIEV4ZWN1dGFibGVCYXNlKiwgQXJpdHlDaGVja01vZGUpOwordm9pZCBnZW5lcmF0
ZVJlZ2lzdGVyUmVzdG9yYXRpb24oQXNzZW1ibHlIZWxwZXJzJik7CiAKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBnZW5lcmF0ZVJlZ2lzdGVyUmVzdG9yYXRpb24oVk0mLCBFeGVjdXRhYmxlQmFzZSos
IEFyaXR5Q2hlY2tNb2RlKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiByZWdpc3RlclJlc3RvcmF0
aW9uVGh1bmtHZW5lcmF0b3IoVk0qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9u
IDE2MDg5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQwLDE0ICs0NDAsMTYgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGFyaXR5Rml4dXAoVk0qIHZtKQogewogICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CiAK
LSAgICAvLyBXZSBlbnRlciB3aXRoIGZpeHVwIGNvdW50IGluIHJlZ1QwCisgICAgLy8gV2UgZW50
ZXIgd2l0aCBmaXh1cCBjb3VudCwgaW4gYWxpZ25lZCBzdGFjayB1bml0cywgaW4gcmVnVDAgYW5k
IHRoZSByZXR1cm4gdGh1bmsgaW4KKyAgICAvLyByZWdUNS4gV2UgdXNlIFZNOjpjdXJyZW50UmV0
dXJuVGh1bmtQQyBpbnN0ZWFkIG9mIHJlZ1Q1IG9uIFg4Ni0zMi4KICNpZiBVU0UoSlNWQUxVRTY0
KQogIyAgaWYgQ1BVKFg4Nl82NCkKICAgICBqaXQucG9wKEpTSW50ZXJmYWNlSklUOjpyZWdUNCk7
CiAjICBlbmRpZgorICAgIGppdC5sc2hpZnQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMy
KGxvZ1N0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDApOwog
ICAgIGppdC5uZWc2NChKU0ludGVyZmFjZUpJVDo6cmVnVDApOwogICAgIGppdC5tb3ZlKEpTSW50
ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsKLSAg
ICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpjYWxs
RnJhbWVSZWdpc3RlciwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIDgpLCBKU0ludGVyZmFjZUpJ
VDo6cmVnVDIpOworICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRl
cmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc2l6
ZW9mKFJlZ2lzdGVyKSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7CiAgICAgaml0LmFkZDMyKEpT
SW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSks
IEpTSW50ZXJmYWNlSklUOjpyZWdUMik7CiAKICAgICAvLyBNb3ZlIGN1cnJlbnQgZnJhbWUgZG93
biByZWdUMCBudW1iZXIgb2Ygc2xvdHMKQEAgLTQ1NywxOCArNDU5LDI3IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBhcml0eUZpeHVwKFZNKiB2bSkKICAgICBqaXQuYWRkUHRyKEpTSW50ZXJmYWNl
SklUOjpUcnVzdGVkSW1tMzIoOCksIEpTSW50ZXJmYWNlSklUOjpyZWdUMyk7CiAgICAgaml0LmJy
YW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBKU0ludGVyZmFjZUpJVDo6VHJ1c3Rl
ZEltbTMyKDEpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpLmxpbmtUbyhjb3B5TG9vcCwgJmppdCk7
CiAKLSAgICAvLyBGaWxsIGluIHJlZ1QwIG1pc3NpbmcgYXJnIHNsb3RzIHdpdGggdW5kZWZpbmVk
CisgICAgLy8gRmlsbCBpbiByZWdUMCAtIDEgbWlzc2luZyBhcmcgc2xvdHMgd2l0aCB1bmRlZmlu
ZWQKICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50ZXJmYWNlSklUOjpy
ZWdUMik7CiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW02NChWYWx1ZVVu
ZGVmaW5lZCksIEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7CisgICAgaml0LmFkZDMyKEpTSW50ZXJm
YWNlSklUOjpUcnVzdGVkSW1tMzIoMSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7CiAgICAgSlNJ
bnRlcmZhY2VKSVQ6OkxhYmVsIGZpbGxVbmRlZmluZWRMb29wKGppdC5sYWJlbCgpKTsKICAgICBq
aXQuc3RvcmU2NChKU0ludGVyZmFjZUpJVDo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50ZXJm
YWNlSklUOjpUaW1lc0VpZ2h0KSk7CiAgICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6VHJ1
c3RlZEltbTMyKDgpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOwogICAgIGppdC5icmFuY2hBZGQz
MihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigx
KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKS5saW5rVG8oZmlsbFVuZGVmaW5lZExvb3AsICZqaXQp
OwotCisgICAgCiAgICAgLy8gQWRqdXN0IGNhbGwgZnJhbWUgcmVnaXN0ZXIgYW5kIHN0YWNrIHBv
aW50ZXIgdG8gYWNjb3VudCBmb3IgbWlzc2luZyBhcmdzCi0gICAgaml0LmxzaGlmdDY0KEpTSW50
ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoMyksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7Ci0gICAg
aml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50ZXJmYWNlSklUOjpjYWxsRnJh
bWVSZWdpc3Rlcik7Ci0gICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50
ZXJmYWNlSklUOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0Lm1vdmUoSlNJbnRlcmZh
Y2VKSVQ6OnJlZ1QwLCBKU0ludGVyZmFjZUpJVDo6cmVnVDEpOworICAgIGppdC5sc2hpZnQ2NChK
U0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDMpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDEpOwor
ICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxLCBKU0ludGVyZmFjZUpJVDo6Y2Fs
bEZyYW1lUmVnaXN0ZXIpOworICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxLCBK
U0ludGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCisgICAgLy8gU2F2ZSB0aGUg
b3JpZ2luYWwgcmV0dXJuIFBDLgorICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRy
ZXNzKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5Q
Q09mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpy
ZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChKU0ludGVyZmFjZUpJVDo6cmVnVDMsIEpT
SW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VKSVQ6OlRpbWVzRWlnaHQpKTsKKyAgICAK
KyAgICAvLyBJbnN0YWxsIHRoZSBuZXcgcmV0dXJuIFBDLgorICAgIGppdC5zdG9yZVB0cihHUFJJ
bmZvOjpyZWdUNSwgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmNhbGxG
cmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpKTsKIAogIyAgaWYgQ1BV
KFg4Nl82NCkKICAgICBqaXQucHVzaChKU0ludGVyZmFjZUpJVDo6cmVnVDQpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAJKHJldmlzaW9uIDE2MDg5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNp
bmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1
ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJIZWFwLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQkocmV2aXNpb24gMTYwODkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE3Miw5ICsxNzIsOSBA
QCBlbmQKIAogbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsLCBkb1JldHVybikKICAg
ICBpZiBYODYKLSAgICAgICAgY29uc3QgZW50cnkgPSB0NQorICAgICAgICBjb25zdCBlbnRyeSA9
IHQ0CiAgICAgICAgIGNvbnN0IHZtVG9wQ2FsbEZyYW1lID0gdDIKLSAgICAgICAgY29uc3QgcHJv
dG9DYWxsRnJhbWUgPSB0NAorICAgICAgICBjb25zdCBwcm90b0NhbGxGcmFtZSA9IHQ1CiAKICAg
ICAgICAgY29uc3QgZXh0cmFTdGFja1NwYWNlID0gMjgKICAgICAgICAgY29uc3QgcHJldmlvdXND
RlIgPSB0MApAQCAtMTk0LDggKzE5NCw4IEBAIG1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtl
Q2FsbCwgZG9SZXQKICAgICAgICAgY29uc3QgcHJldmlvdXNQQyA9IGxyCiAgICAgICAgIGNvbnN0
IHRlbXAxID0gdDMgIyBTYW1lIGFzIHByZXZpb3VzQ0ZSCiAgICAgICAgIGNvbnN0IHRlbXAyID0g
YTMgIyBTYW1lIGFzIHRvcE9mU3RhY2sKLSAgICAgICAgY29uc3QgdGVtcDMgPSB0NAotICAgICAg
ICBjb25zdCB0ZW1wNCA9IHQ1CisgICAgICAgIGNvbnN0IHRlbXAzID0gdDUKKyAgICAgICAgY29u
c3QgdGVtcDQgPSB0NAogICAgIGVsc2lmIEFSTXY3CiAgICAgICAgIGNvbnN0IGVudHJ5ID0gYTAK
ICAgICAgICAgY29uc3Qgdm1Ub3BDYWxsRnJhbWUgPSBhMQpAQCAtMjA3LDggKzIwNyw4IEBAIG1h
Y3JvIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCwgZG9SZXQKICAgICAgICAgY29uc3QgcHJl
dmlvdXNQQyA9IGxyCiAgICAgICAgIGNvbnN0IHRlbXAxID0gdDMgIyBTYW1lIGFzIHByZXZpb3Vz
Q0ZSCiAgICAgICAgIGNvbnN0IHRlbXAyID0gYTMgIyBTYW1lIGFzIHRvcE9mU3RhY2sKLSAgICAg
ICAgY29uc3QgdGVtcDMgPSB0NAotICAgICAgICBjb25zdCB0ZW1wNCA9IHQ1CisgICAgICAgIGNv
bnN0IHRlbXAzID0gdDUKKyAgICAgICAgY29uc3QgdGVtcDQgPSB0NAogICAgIGVsc2lmIE1JUFMK
ICAgICAgICAgY29uc3QgZW50cnkgPSBhMAogICAgICAgICBjb25zdCB2bVRvcENhbGxGcmFtZSA9
IGExCkBAIC0yMTksOCArMjE5LDggQEAgbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxs
LCBkb1JldAogICAgICAgICBjb25zdCBwcmV2aW91c0NGUiA9IHQyCiAgICAgICAgIGNvbnN0IHBy
ZXZpb3VzUEMgPSBscgogICAgICAgICBjb25zdCB0ZW1wMSA9IHQzCi0gICAgICAgIGNvbnN0IHRl
bXAyID0gdDQKLSAgICAgICAgY29uc3QgdGVtcDMgPSB0NQorICAgICAgICBjb25zdCB0ZW1wMiA9
IHQ1CisgICAgICAgIGNvbnN0IHRlbXAzID0gdDQKICAgICAgICAgY29uc3QgdGVtcDQgPSB0Ngog
ICAgIGVsc2lmIFNINAogICAgICAgICBjb25zdCBlbnRyeSA9IGEwCkBAIC01MTksMTAgKzUxOSwx
MCBAQCBlbmQKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKIAogIyBFeHBlY3Rz
IHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVz
IGJlaGluZC4KLW1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dfcGF0aCkK
K21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQogICAgIGxvYWRp
IFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCiAgICAgYmlhZXEgdDAsIENv
ZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCi0gICAgY0NhbGwyKHNsb3df
cGF0aCwgY2ZyLCBQQykgICAjIFRoaXMgc2xvd19wYXRoIGhhcyBhIHNpbXBsZSBwcm90b2NvbDog
dDAgPSAwID0+IG5vIGVycm9yLCB0MCAhPSAwID0+IGVycm9yCisgICAgY0NhbGwyKHNsb3dQYXRo
LCBjZnIsIFBDKSAgICMgVGhpcyBzbG93UGF0aCBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQwID0g
MCA9PiBubyBlcnJvciwgdDAgIT0gMCA9PiBlcnJvcgogICAgIGJ0aXogdDAsIC5pc0FyaXR5Rml4
dXBOZWVkZWQKICAgICBtb3ZlIHQxLCBjZnIgICAjIHQxIGNvbnRhaW5zIGNhbGxlciBmcmFtZQog
ICAgIGptcCBfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHJldmlzaW9uIDE2MDg5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMCArNTIsMTAg
QEAgbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQogZW5kCiAKIG1hY3JvIGNDYWxsMihmdW5jdGlv
biwgYXJnMSwgYXJnMikKLSAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0NSwgMHhiYWQw
YzAwMikKKyAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0NCwgMHhiYWQwYzAwMikKICAg
ICBpZiBYODZfNjQKLSAgICAgICAgbW92ZSBhcmcxLCB0NQotICAgICAgICBtb3ZlIGFyZzIsIHQ0
CisgICAgICAgIG1vdmUgYXJnMSwgdDQKKyAgICAgICAgbW92ZSBhcmcyLCB0NQogICAgICAgICBj
YWxsIGZ1bmN0aW9uCiAgICAgZWxzaWYgQVJNNjQKICAgICAgICAgbW92ZSBhcmcxLCB0MApAQCAt
NzAsMTAgKzcwLDEwIEBAIGVuZAogCiAjIFRoaXMgYmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0
IHNob3VsZCBwcm9iYWJseSBiZSBpbW1lZGlhdGVzLgogbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBh
cmcxLCBhcmcyLCBhcmczLCBhcmc0KQotICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQ1
LCAweGJhZDBjMDA0KQorICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQ0LCAweGJhZDBj
MDA0KQogICAgIGlmIFg4Nl82NAotICAgICAgICBtb3ZlIGFyZzEsIHQ1Ci0gICAgICAgIG1vdmUg
YXJnMiwgdDQKKyAgICAgICAgbW92ZSBhcmcxLCB0NAorICAgICAgICBtb3ZlIGFyZzIsIHQ1CiAg
ICAgICAgIG1vdmUgYXJnMywgdDEKICAgICAgICAgbW92ZSBhcmc0LCB0MgogICAgICAgICBjYWxs
IGZ1bmN0aW9uCkBAIC0xNTAsOCArMTUwLDggQEAgZW5kCiAKIG1hY3JvIGRvQ2FsbFRvSmF2YVNj
cmlwdChtYWtlQ2FsbCkKICAgICBpZiBYODZfNjQKLSAgICAgICAgY29uc3QgZW50cnkgPSB0NQot
ICAgICAgICBjb25zdCB2bVRvcENhbGxGcmFtZSA9IHQ0CisgICAgICAgIGNvbnN0IGVudHJ5ID0g
dDQKKyAgICAgICAgY29uc3Qgdm1Ub3BDYWxsRnJhbWUgPSB0NQogICAgICAgICBjb25zdCBwcm90
b0NhbGxGcmFtZSA9IHQxCiAgICAgICAgIGNvbnN0IHRvcE9mU3RhY2sgPSB0MgogCkBAIC0xNjYs
MTAgKzE2NiwxMCBAQCBtYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwpCiAgICAgICAg
IGNvbnN0IHByb3RvQ2FsbEZyYW1lID0gYTIKICAgICAgICAgY29uc3QgdG9wT2ZTdGFjayA9IGEz
CiAKLSAgICAgICAgY29uc3QgcHJldmlvdXNDRlIgPSB0NAorICAgICAgICBjb25zdCBwcmV2aW91
c0NGUiA9IHQ1CiAgICAgICAgIGNvbnN0IHByZXZpb3VzUEMgPSBscgogICAgICAgICBjb25zdCB0
ZW1wMSA9IHQzCi0gICAgICAgIGNvbnN0IHRlbXAyID0gdDUKKyAgICAgICAgY29uc3QgdGVtcDIg
PSB0NAogICAgICAgICBjb25zdCB0ZW1wMyA9IHQ2CiAgICAgZW5kCiAKQEAgLTI2NCw3ICsyNjQs
NyBAQCBlbmQKIG1hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCB0ZW1wKQogICAgIG1v
dmUgZW50cnksIHRlbXAKICAgICBpZiBYODZfNjQKLSAgICAgICAgbW92ZSBzcCwgdDUKKyAgICAg
ICAgbW92ZSBzcCwgdDQKICAgICBlbHNpZiBBUk02NCBvciBDX0xPT1AKICAgICAgICAgbW92ZSBz
cCwgYTAKICAgICBlbmQKQEAgLTM5OSwxOSArMzk5LDMxIEBAIGVuZAogIyBFbnRyeXBvaW50cyBp
bnRvIHRoZSBpbnRlcnByZXRlci4KIAogIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQx
LCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KLW1hY3JvIGZ1bmN0aW9u
QXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dfcGF0aCkKK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVj
ayhkb25lTGFiZWwsIHNsb3dQYXRoKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVu
dENvdW50W2Nmcl0sIHQwCiAgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJz
W3QxXSwgZG9uZUxhYmVsCiAgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQotICAgIGNDYWxsMihz
bG93X3BhdGgsIGNmciwgUEMpICAgIyBUaGlzIHNsb3dfcGF0aCBoYXMgYSBzaW1wbGUgcHJvdG9j
b2w6IHQwID0gMCA9PiBubyBlcnJvciwgdDAgIT0gMCA9PiBlcnJvcgotICAgIGJ0aXogdDAsIC5p
c0FyaXR5Rml4dXBOZWVkZWQKKyAgICBjQ2FsbDIoc2xvd1BhdGgsIGNmciwgUEMpICAgIyBUaGlz
IHNsb3dQYXRoIGhhcyB0aGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJvciwgdDAgIT0gMCA9
PiBlcnJvcgorICAgIGJ0aXogdDAsIC5ub0Vycm9yCiAgICAgbW92ZSB0MSwgY2ZyICAgIyB0MSBj
b250YWlucyBjYWxsZXIgZnJhbWUKICAgICBqbXAgX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRo
X3RyYW1wb2xpbmUKIAotLmlzQXJpdHlGaXh1cE5lZWRlZDoKKy5ub0Vycm9yOgorICAgICMgdDEg
cG9pbnRzIHRvIEFyaXR5Q2hlY2tEYXRhLgorICAgIGxvYWRwIENvbW1vblNsb3dQYXRoczo6QXJp
dHlDaGVja0RhdGE6OnRodW5rVG9DYWxsW3QxXSwgdDIKKyAgICBidHB6IHQyLCAucHJvY2VlZElu
bGluZQorICAgIAorICAgIGxvYWRwIENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVja0RhdGE6OnJl
dHVyblBDW3QxXSwgdDUKKyAgICBsb2FkcCBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRh
OjpwYWRkZWRTdGFja1NwYWNlW3QxXSwgdDAKKyAgICBjYWxsIHQyCisgICAgam1wIC5jb250aW51
ZQorCisucHJvY2VlZElubGluZToKKyAgICBsb2FkaSBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hl
Y2tEYXRhOjpwYWRkZWRTdGFja1NwYWNlW3QxXSwgdDEKICAgICBidGl6IHQxLCAuY29udGludWUK
IAotICAgIC8vIE1vdmUgZnJhbWUgdXAgInQxIiBzbG90cworICAgIC8vIE1vdmUgZnJhbWUgdXAg
InQxICogMiIgc2xvdHMKKyAgICBsc2hpZnRwIDEsIHQxCiAgICAgbmVncSB0MQogICAgIG1vdmUg
Y2ZyLCB0MwogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQy
CkBAIC0xOTAzLDkgKzE5MTUsOSBAQCBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRh
YmxlT2ZmCiAgICAgICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIHQwCiAgICAgICAgIGxvYWRx
IFNjb3BlQ2hhaW5bdDBdLCB0MQogICAgICAgICBzdG9yZXEgdDEsIFNjb3BlQ2hhaW5bY2ZyXQot
ICAgICAgICBtb3ZlIGNmciwgdDUgICMgdDUgPSByZGkKLSAgICAgICAgbG9hZHAgQ2FsbGVlW2Nm
cl0sIHQ0ICMgdDQgPSByc2kKLSAgICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxl
W3Q0XSwgdDEKKyAgICAgICAgbW92ZSBjZnIsIHQ0ICAjIHQ0ID0gcmRpCisgICAgICAgIGxvYWRw
IENhbGxlZVtjZnJdLCB0NSAjIHQ1ID0gcnNpCisgICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1f
ZXhlY3V0YWJsZVt0NV0sIHQxCiAgICAgICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQz
LCAweGRlYWQwMDAxKQogICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3Qx
XQogICAgICAgICBsb2FkcCBTY29wZUNoYWluW2Nmcl0sIHQzCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lv
biAxNjA4OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgaWYgSlNWQUxVRTY0CiAg
ICAgIyAgIHRvIEMgZnVuY3Rpb25zLgogICAgICMgLSBDIGNhbGxzIGFyZSBzdGlsbCBnaXZlbiB0
aGUgSW5zdHJ1Y3Rpb24qIHJhdGhlciB0aGFuIHRoZSBQQyBpbmRleC4KICAgICAjICAgVGhpcyBy
ZXF1aXJlcyBhbiBhZGQgYmVmb3JlIHRoZSBjYWxsLCBhbmQgYSBzdWIgYWZ0ZXIuCi0gICAgY29u
c3QgUEMgPSB0NAorICAgIGNvbnN0IFBDID0gdDUKICAgICBjb25zdCBQQiA9IHQ2CiAgICAgY29u
c3QgdGFnVHlwZU51bWJlciA9IGNzcjEKICAgICBjb25zdCB0YWdNYXNrID0gY3NyMgpAQCAtMTEz
LDcgKzExMyw3IEBAIGlmIEpTVkFMVUU2NAogICAgIGVuZAogCiBlbHNlCi0gICAgY29uc3QgUEMg
PSB0NAorICAgIGNvbnN0IFBDID0gdDUKICAgICBtYWNybyBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
b2Zmc2V0LCBkZXN0KQogICAgICAgICBsb2FkaXMgb2Zmc2V0ICogNFtQQ10sIGRlc3QKICAgICBl
bmQKQEAgLTQ4MSwxMSArNDgxLDExIEBAIF9jYWxsVG9OYXRpdmVGdW5jdGlvbjoKICMgdm9pZCBz
YW5pdGl6ZVN0YWNrRm9yVk0oVk0qIHZtKQogX3Nhbml0aXplU3RhY2tGb3JWTToKICAgICBpZiBY
ODZfNjQKLSAgICAgICAgY29uc3Qgdm0gPSB0NQorICAgICAgICBjb25zdCB2bSA9IHQ0CiAgICAg
ICAgIGNvbnN0IGFkZHJlc3MgPSB0MQogICAgICAgICBjb25zdCB6ZXJvVmFsdWUgPSB0MAogICAg
IGVsc2lmIFg4NgotICAgICAgICBjb25zdCB2bSA9IHQ1CisgICAgICAgIGNvbnN0IHZtID0gdDQK
ICAgICAgICAgY29uc3QgYWRkcmVzcyA9IHQxCiAgICAgICAgIGNvbnN0IHplcm9WYWx1ZSA9IHQw
CiAgICAgZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgko
cmV2aXNpb24gMTYwODkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2
LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsMTUgKzE1MCwxNSBAQCBjbGFzcyBSZWdpc3RlcklE
CiAgICAgICAgIHdoZW4gInQ0IgogICAgICAgICAgICAgY2FzZSBraW5kCiAgICAgICAgICAgICB3
aGVuIDpieXRlCi0gICAgICAgICAgICAgICAgIiVzaWwiCisgICAgICAgICAgICAgICAgIiVkaWwi
CiAgICAgICAgICAgICB3aGVuIDpoYWxmCi0gICAgICAgICAgICAgICAgIiVzaSIKKyAgICAgICAg
ICAgICAgICAiJWRpIgogICAgICAgICAgICAgd2hlbiA6aW50Ci0gICAgICAgICAgICAgICAgIiVl
c2kiCisgICAgICAgICAgICAgICAgIiVlZGkiCiAgICAgICAgICAgICB3aGVuIDpwdHIKLSAgICAg
ICAgICAgICAgICBpc1g2NCA/ICIlcnNpIiA6ICIlZXNpIgorICAgICAgICAgICAgICAgIGlzWDY0
ID8gIiVyZGkiIDogIiVlZGkiCiAgICAgICAgICAgICB3aGVuIDpxdWFkCi0gICAgICAgICAgICAg
ICAgaXNYNjQgPyAiJXJzaSIgOiByYWlzZQorICAgICAgICAgICAgICAgIGlzWDY0ID8gIiVyZGki
IDogcmFpc2UKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByYWlzZQogICAgICAg
ICAgICAgZW5kCkBAIC0yMDYsMTUgKzIwNiwxNSBAQCBjbGFzcyBSZWdpc3RlcklECiAgICAgICAg
IHdoZW4gInQ1IgogICAgICAgICAgICAgY2FzZSBraW5kCiAgICAgICAgICAgICB3aGVuIDpieXRl
Ci0gICAgICAgICAgICAgICAgIiVkaWwiCisgICAgICAgICAgICAgICAgIiVzaWwiCiAgICAgICAg
ICAgICB3aGVuIDpoYWxmCi0gICAgICAgICAgICAgICAgIiVkaSIKKyAgICAgICAgICAgICAgICAi
JXNpIgogICAgICAgICAgICAgd2hlbiA6aW50Ci0gICAgICAgICAgICAgICAgIiVlZGkiCisgICAg
ICAgICAgICAgICAgIiVlc2kiCiAgICAgICAgICAgICB3aGVuIDpwdHIKLSAgICAgICAgICAgICAg
ICBpc1g2NCA/ICIlcmRpIiA6ICIlZWRpIgorICAgICAgICAgICAgICAgIGlzWDY0ID8gIiVyc2ki
IDogIiVlc2kiCiAgICAgICAgICAgICB3aGVuIDpxdWFkCi0gICAgICAgICAgICAgICAgaXNYNjQg
PyAiJXJkaSIgOiByYWlzZQorICAgICAgICAgICAgICAgIGlzWDY0ID8gIiVyc2kiIDogcmFpc2UK
ICAgICAgICAgICAgIGVuZAogICAgICAgICB3aGVuICJ0NiIKICAgICAgICAgICAgIHJhaXNlICJD
YW5ub3QgdXNlICN7bmFtZX0gaW4gMzItYml0IFg4NiBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1
bmxlc3MgaXNYNjQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTYwODkyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKIAogI2luY2x1ZGUg
IkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCiAj
aW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2lu
Y2x1ZGUgIkNvZGVQcm9maWxpbmcuaCIKQEAgLTE2OSwyOCArMTcwLDQyIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBDQUxMX0VORF9JTVBMKGNyRXhlYywgY3JDYWxsVGFyZ2V0KTsgICAgICAg
ICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCitzdGF0aWMgQ29tbW9uU2xvd1BhdGhz
OjpBcml0eUNoZWNrRGF0YSogc2V0dXBBcml0eUNoZWNrRGF0YShWTSYgdm0sIGludCBzbG90c1Rv
QWRkKQoreworICAgIENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVja0RhdGEqIHJlc3VsdCA9IHZt
LmFyaXR5Q2hlY2tEYXRhLmdldCgpOworICAgIHJlc3VsdC0+cGFkZGVkU3RhY2tTcGFjZSA9IHNs
b3RzVG9BZGQ7CisgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CisgICAgICAgIHJlc3VsdC0+dGh1
bmtUb0NhbGwgPSB2bS5nZXRDVElTdHViKGFyaXR5Rml4dXApLmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpOworICAgICAgICByZXN1bHQtPnJldHVyblBDID0gdm0uYXJpdHlDaGVja0ZhaWxSZXR1
cm5UaHVua3MtPnJldHVyblBDRm9yKHZtLCBzbG90c1RvQWRkKS5leGVjdXRhYmxlQWRkcmVzcygp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3VsdC0+dGh1bmtUb0NhbGwgPSAwOworICAgICAg
ICByZXN1bHQtPnJldHVyblBDID0gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwog
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKIHsKICAgICBCRUdJTigp
OwotICAgIGludCBTbG90c1RvQWRkID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4
ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNhbGwpOwotICAgIGlmIChTbG90
c1RvQWRkIDwgMCkgeworICAgIGludCBzbG90c1RvQWRkID0gQ29tbW9uU2xvd1BhdGhzOjphcml0
eUNoZWNrRm9yKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNhbGwpOwor
ICAgIGlmIChzbG90c1RvQWRkIDwgMCkgewogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJh
bWUoKTsKICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjppbnRlcnByZXRlclRocm93SW5DYWxsZXIo
ZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKICAgICAgICAgUkVUVVJOX1RX
TyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsK
ICAgICB9Ci0gICAgUkVUVVJOX1RXTygwLCByZWludGVycHJldF9jYXN0PEV4ZWNTdGF0ZSo+KFNs
b3RzVG9BZGQpKTsKKyAgICBSRVRVUk5fVFdPKDAsIHNldHVwQXJpdHlDaGVja0RhdGEodm0sIHNs
b3RzVG9BZGQpKTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0
eUNoZWNrKQogewogICAgIEJFR0lOKCk7Ci0gICAgaW50IFNsb3RzVG9BZGQgPSBDb21tb25TbG93
UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJnZtLmludGVycHJldGVyLT5zdGFjaygpLCBDb2Rl
Rm9yQ29uc3RydWN0KTsKLSAgICBpZiAoU2xvdHNUb0FkZCA8IDApIHsKKyAgICBpbnQgc2xvdHNU
b0FkZCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmdm0uaW50ZXJwcmV0
ZXItPnN0YWNrKCksIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGlmIChzbG90c1RvQWRkIDwgMCkg
ewogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKICAgICAgICAgQ29tbW9uU2xv
d1BhdGhzOjppbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMpKTsKICAgICAgICAgUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKICAgICB9Ci0gICAgUkVUVVJOX1RXTygw
LCByZWludGVycHJldF9jYXN0PEV4ZWNTdGF0ZSo+KFNsb3RzVG9BZGQpKTsKKyAgICBSRVRVUk5f
VFdPKDAsIHNldHVwQXJpdHlDaGVja0RhdGEodm0sIHNsb3RzVG9BZGQpKTsKIH0KIAogU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3RvdWNoX2VudHJ5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDE2MDg5MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw2ICs0OSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIENv
bW1vblNsb3dQYXRocyB7CiAKK3N0cnVjdCBBcml0eUNoZWNrRGF0YSB7CisgICAgdW5zaWduZWQg
cGFkZGVkU3RhY2tTcGFjZTsKKyAgICB2b2lkKiB0aHVua1RvQ2FsbDsKKyAgICB2b2lkKiByZXR1
cm5QQzsKK307CisKIEFMV0FZU19JTkxJTkUgaW50IGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBl
eGVjLCBKU1N0YWNrKiBzdGFjaywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAg
IEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkp
OwpAQCAtNTgsMTggKzY0LDE5IEBAIEFMV0FZU19JTkxJTkUgaW50IGFyaXR5Q2hlY2tGb3IoRXhl
Y1N0YXQKICAgICAKICAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdD
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CiAgICAgaW50IG1pc3NpbmdBcmd1bWVudENvdW50
ID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpczsKLSAgICBpbnQgcGFkZGVkTWlzc2luZ0FyZ3VtZW50Q291bnQgPSBXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbWlzc2luZ0FyZ3VtZW50Q291
bnQpOworICAgIGludCBuZWVkZWRTdGFja1NwYWNlID0gbWlzc2luZ0FyZ3VtZW50Q291bnQgKyAx
OyAvLyBBbGxvdyBzcGFjZSB0byBzYXZlIHRoZSBvcmlnaW5hbCByZXR1cm4gUEMuCisgICAgaW50
IHBhZGRlZFN0YWNrU3BhY2UgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1l
bnRSZWdpc3RlcnMoKSwgbmVlZGVkU3RhY2tTcGFjZSk7CiAKICNpZiBFTkFCTEUoTExJTlRfQ0xP
T1ApCi0gICAgaWYgKCFzdGFjay0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSAtIHBhZGRlZE1pc3Np
bmdBcmd1bWVudENvdW50KSkKKyAgICBpZiAoIXN0YWNrLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygp
IC0gcGFzc2VkU3RhY2tTcGFjZSkpCiAgICAgICAgIHJldHVybiAtMTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKHN0YWNrKTsKLSAgICBpZiAoIWV4ZWMtPnZtKCkuaXNTYWZlVG9SZWN1cnNlKHBh
ZGRlZE1pc3NpbmdBcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lzdGVyKSkpCisgICAgaWYgKCFl
eGVjLT52bSgpLmlzU2FmZVRvUmVjdXJzZShwYWRkZWRTdGFja1NwYWNlICogc2l6ZW9mKFJlZ2lz
dGVyKSkpCiAgICAgICAgIHJldHVybiAtMTsKICNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ0xPT1Ap
CiAKLSAgICByZXR1cm4gcGFkZGVkTWlzc2luZ0FyZ3VtZW50Q291bnQ7CisgICAgcmV0dXJuIHBh
ZGRlZFN0YWNrU3BhY2UgLyBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpOwogfQogCiBpbmxpbmUg
Ym9vbCBvcEluKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm9wTmFtZSwgSlNWYWx1ZSBiYXNl
VmFsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tBbGlnbm1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0FsaWdu
bWVudC5oCShyZXZpc2lvbiAxNjA4OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdGFja0FsaWdubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIFN0YWNrQWxpZ25tZW50X2gKIAogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzgsNiArMzksMTEg
QEAgaW5saW5lIHVuc2lnbmVkIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKAogICAgIHJldHVybiBz
dGFja0FsaWdubWVudEJ5dGVzKCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogfQogCitpbmxp
bmUgdW5zaWduZWQgbG9nU3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKQoreworICAgIHJldHVybiBX
VEY6OmZhc3RMb2cyKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIFN0YWNrQWxpZ25tZW50X2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE2MDg5MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDEzIEBA
CiAjaW5jbHVkZSAiVk0uaCIKIAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKKyNpbmNsdWRlICJBcml0
eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJDb21tb25JZGVu
dGlmaWVycy5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgogI2luY2x1ZGUgIkRGR0xv
bmdMaXZlZFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJEZWJ1
Z2dlckFjdGl2YXRpb24uaCIKQEAgLTI2Niw3ICsyNjgsOSBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAKICNpZiBFTkFCTEUoSklUKQogICAgIGppdFN0dWJzID0g
YWRvcHRQdHIobmV3IEpJVFRodW5rcygpKTsKKyAgICBhcml0eUNoZWNrRmFpbFJldHVyblRodW5r
cyA9IHN0ZDo6bWFrZV91bmlxdWU8QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M+KCk7CiAjZW5k
aWYKKyAgICBhcml0eUNoZWNrRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tbW9uU2xvd1BhdGhz
OjpBcml0eUNoZWNrRGF0YT4oKTsKIAogI2lmIEVOQUJMRShGVExfSklUKQogICAgIGZ0bFRodW5r
cyA9IHN0ZDo6bWFrZV91bmlxdWU8RlRMOjpUaHVua3M+KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE2MDg5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKKyAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKICAgICBj
bGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklk
ZW50aWZpZXJzOwpAQCAtMTA0LDYgKzEwNSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IFRodW5rczsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisgICAgbmFtZXNwYWNl
IENvbW1vblNsb3dQYXRocyB7CisgICAgc3RydWN0IEFyaXR5Q2hlY2tEYXRhOworICAgIH0KIAog
ICAgIHN0cnVjdCBIYXNoVGFibGU7CiAgICAgc3RydWN0IEluc3RydWN0aW9uOwpAQCAtMzMyLDcg
KzMzNiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBqaXRTdHVicy0+
Y3RpU3R1Yih0aGlzLCBnZW5lcmF0b3IpOwogICAgICAgICB9CiAgICAgICAgIE5hdGl2ZUV4ZWN1
dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljKTsKLSNlbmRp
ZgorICAgICAgICAKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFyaXR5Q2hlY2tGYWlsUmV0dXJu
VGh1bmtzPiBhcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKKyNpZiBDUFUoWDg2KQorICAgICAg
ICB2b2lkKiBjdXJyZW50UmV0dXJuVGh1bmtQQzsKKyNlbmRpZiAvLyBDUFUoWDg2KQorI2VuZGlm
IC8vIEVOQUJMRShKSVQpCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDb21tb25TbG93UGF0aHM6
OkFyaXR5Q2hlY2tEYXRhPiBhcml0eUNoZWNrRGF0YTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEZUTDo6VGh1bmtzPiBmdGxUaHVua3M7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219803</attachid>
            <date>2013-12-20 15:22:38 -0800</date>
            <delta_ts>2014-01-14 14:44:15 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>51118</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwOTMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBA
CisyMDEzLTEyLTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QXJpdHkgY2hlY2sgc2xvdyBwYXRoIHNob3VsZCBlbnN1cmUgdGhhdCB3aGVuIHdlIHJldHVybiwg
d2UgcmVzdG9yZSBTUCBiYWNrIHRvIHdoYXQgdGhlIGNhbGxlciBleHBlY3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYwNDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEltcGxlbWVudHMg
cHJvcGVyIHN0YWNrIHJlc3RvcmF0aW9uIGFmdGVyIHJldHVybiBmcm9tIGEgZnVuY3Rpb24gdGhh
dCBmYWlsZWQgYXJpdHkKKyAgICAgICAgY2hlY2suCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6
CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgor
ICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Lmg6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21w
aWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGpp
dC9Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpB
cml0eUNoZWNrRmFpbFJldHVyblRodW5rczo6QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MpOgor
ICAgICAgICAoSlNDOjpBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczo6fkFyaXR5Q2hlY2tGYWls
UmV0dXJuVGh1bmtzKToKKyAgICAgICAgKEpTQzo6QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M6
OnJldHVyblBDc0Zvcik6CisgICAgICAgIChKU0M6OkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtz
OjpyZXR1cm5QQ0Zvcik6CisgICAgICAgICogaml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtz
Lmg6IEFkZGVkLgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6
OkRpcmVjdEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJQ
cmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVS
ZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXIpOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVJlZ2lz
dGVyUmVzdG9yYXRpb24pOgorICAgICAgICAoSlNDOjpyZWdpc3RlclJlc3RvcmF0aW9uVGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5l
cmF0b3IuaDoKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpT
Qzo6YXJpdHlGaXh1cCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAq
IG9mZmxpbmVhc20veDg2LnJiOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKEpTQzo6c2V0dXBBcml0eUNoZWNrRGF0YSk6CisgICAgICAgIChKU0M6OlNM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAg
ICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RhY2tBbGlnbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6bG9nU3RhY2tBbGlnbm1lbnRS
ZWdpc3RlcnMpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6
Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxMy0xMi0yMCAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJyb2tlbiBub24tRlRMIGJ1aWxkLgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2MDg5MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDggQEAKIAkJMEY2QjFDQzQxODYyQzQ3
ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0MwMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExS
ZWdpc3RlckF0T2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQzEx
ODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwICovOyB9OwogCQkwRjZCMUNDNjE4
NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5kSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQzIxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVu
d2luZEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjZCMUNDOTE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVu
a3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
QjFDQzcxODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcCAq
LzsgfTsKKwkJMEY2QjFDQ0ExODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJu
VGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjZCMUNDODE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjcwMjVB
OTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzAyNUE3MTcxNEIwRjgw
MDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwICovOyB9OwogCQkwRjcwMjVB
QTE3MTRCMEZDMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcwMjVBODE3MTRCMEY4MDAz
ODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3MTRDQTQxNkVBOTJGMDAwRjNFQkVCIC8q
IERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MTRDQTExNkVBOTJFRDAwRjNFQkVCIC8qIERGR0Jh
Y2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwICovOyB9OwpAQCAtMTU5OSw2ICsxNjAxLDggQEAK
IAkJMEY2QjFDQzAxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMUmVnaXN0ZXJBdE9mZnNldC5oOyBwYXRo
ID0gZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY2QjFDQzExODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMVW53aW5kSW5mby5jcHA7IHBhdGggPSBm
dGwvRlRMVW53aW5kSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNkIx
Q0MyMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEZUTFVud2luZEluZm8uaDsgcGF0aCA9IGZ0bC9GVExVbndpbmRJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNkIxQ0M3MTg2NDFERjgwMDg0NUQ5
NyAvKiBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNkIxQ0M4MTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNo
ZWNrRmFpbFJldHVyblRodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjcwMjVBNzE3MTRCMEY4MDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3MDI1QTgxNzE0QjBGODAwMzgyQzBFIC8qIERG
R09TUkV4aXRDb21waWxlckNvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3MTRDQTExNkVBOTJF
RDAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5j
cHA7IHBhdGggPSBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDA1LDYgKzMwMDksOCBAQAogCQkxNDI5RDkyQzBFRDIy
RDcwMDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkwRjZCMUNDNzE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1
cm5UaHVua3MuY3BwICovLAorCQkJCTBGNkIxQ0M4MTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNo
ZWNrRmFpbFJldHVyblRodW5rcy5oICovLAogCQkJCTBGMjRFNTNCMTdFQTlGNTkwMEFCQjIxNyAv
KiBBc3NlbWJseUhlbHBlcnMuY3BwICovLAogCQkJCTBGMjRFNTNDMTdFQTlGNTkwMEFCQjIxNyAv
KiBBc3NlbWJseUhlbHBlcnMuaCAqLywKIAkJCQkwRjI0RTUzRDE3RUE5RjU5MDBBQkIyMTcgLyog
Q0NhbGxIZWxwZXJzLmggKi8sCkBAIC00OTc5LDYgKzQ5ODUsNyBAQAogCQkJCTk2ODhDQjE2MEVE
MTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1MTUz
OUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2NkVD
RDE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjZCMUNDQTE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlDaGVj
a0ZhaWxSZXR1cm5UaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0Qjg1MTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0Qjg3
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4
ODEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC01ODA1
LDYgKzU4MTIsNyBAQAogCQkJCTBGOEYyQjlFMTczMDZDOEQwMDdEQkRBNSAvKiBTb3VyY2VDb2Rl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3Vy
Y2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRB
MUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjZCMUND
OTE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYwQ0Q0QzQxNUY2QjZCQjAwMzJGMUMwIC8qIFNwYXJzZUFycmF5VmFs
dWVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NTQxQjExNjEzQzFGQjAwQ0UzRTI1IC8q
IFNwZWNpYWxQb2ludGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTg2MTQxRjNGRjEw
MDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNjA4
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNp
bmNsdWRlICJBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgogI2luY2x1ZGUgIkRGR0ZhaWxlZEZpbmFsaXplci5oIgogI2luY2x1ZGUgIkRGR0lubGlu
ZUNhY2hlV3JhcHBlcklubGluZXMuaCIKQEAgLTM2OCw2ICszNjksOCBAQCB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25X
aXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVCbG9jay0+bV9pc0NvbnN0cnVj
dG9yID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNo
ZWNrLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgYnJhbmNoVGVzdDMyKFplcm8sIEdQUkluZm86OnJl
Z1QwKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOwogICAgIGVtaXRTdG9yZUNvZGVPcmln
aW4oQ29kZU9yaWdpbigwKSk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fdm0tPmFyaXR5Q2hl
Y2tGYWlsUmV0dXJuVGh1bmtzLT5yZXR1cm5QQ3NGb3IoKm1fdm0sIG1fY29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkpKSwgR1BSSW5mbzo6cmVnVDUpOworICAgIGxvYWRQdHIoQmFzZUluZGV4KEdQ
UkluZm86OnJlZ1Q1LCBHUFJJbmZvOjpyZWdUMCwgdGltZXNQdHIoKSksIEdQUkluZm86OnJlZ1Q1
KTsKICAgICBtX2NhbGxBcml0eUZpeHVwID0gY2FsbCgpOwogICAgIGp1bXAoZnJvbUFyaXR5Q2hl
Y2spOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZp
c2lvbiAxNjA4OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAor
I2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCiAjaW5jbHVkZSAiQ0NhbGxI
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVC
bG9ja1dpdGhKSVRUeXBlLmgiCkBAIC00Niw2ICs0Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBERkc7
CiB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
c3RhdGUuZ3JhcGgubV9jb2RlQmxvY2s7CisgICAgVk0mIHZtID0gc3RhdGUuZ3JhcGgubV92bTsK
ICAgICAKICAgICAvLyBMTFZNIHdpbGwgY3JlYXRlIGl0cyBvd24ganVtcCB0YWJsZXMgYXMgbmVl
ZGVkLgogICAgIGNvZGVCbG9jay0+Y2xlYXJTd2l0Y2hKdW1wVGFibGVzKCk7CkBAIC02MSw3ICs2
Myw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgCiAgICAgLy8gQ3JlYXRlIHRoZSBl
bnRyeXBvaW50LiBOb3RlIHRoYXQgd2UgdXNlIHRoaXMgZW50cnlwb2ludCB0b3RhbGx5IGRpZmZl
cmVudGx5CiAgICAgLy8gZGVwZW5kaW5nIG9uIHdoZXRoZXIgd2UncmUgZG9pbmcgT1NSIGVudHJ5
IG9yIG5vdC4KLSAgICBDQ2FsbEhlbHBlcnMgaml0KCZzdGF0ZS5ncmFwaC5tX3ZtLCBjb2RlQmxv
Y2spOworICAgIENDYWxsSGVscGVycyBqaXQoJnZtLCBjb2RlQmxvY2spOwogICAgIAogICAgIE93
blB0cjxMaW5rQnVmZmVyPiBsaW5rQnVmZmVyOwogICAgIENDYWxsSGVscGVyczo6TGFiZWwgYXJp
dHlDaGVjazsKQEAgLTg0LDI3ICs4NiwyOSBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAg
ICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KENhbGxGcmFtZTo6TG9jYXRpb246OmVuY29kZUFzQnl0ZWNvZGVPZmZzZXQoMCkpLAogICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOwotICAg
ICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZzdGF0ZS5ncmFw
aC5tX3ZtLnRvcENhbGxGcmFtZSk7CisgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgJnZtLnRvcENhbGxGcmFtZSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6
Q2FsbCBjYWxsQXJpdHlDaGVjayA9IGppdC5jYWxsKCk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgICAgICAvLyBGSVhNRTogbmVlZCB0byBtYWtlIHRoaXMgY2FsbCByZWdpc3RlciB3aXRoIGV4
Y2VwdGlvbiBoYW5kbGluZyBzb21laG93LiBUaGlzIGlzCiAgICAgICAgIC8vIHBhcnQgb2YgYSBi
aWdnZXIgcHJvYmxlbTogRlRMIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBleGNlcHRpb25zLgog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjIy
CiAgICAgICAgIC8vIFVudGlsIHRoZW4sIHVzZSBhIEpJVCBBU1NFUlQuCi0gICAgICAgIGppdC5s
b2FkNjQoc3RhdGUuZ3JhcGgubV92bS5hZGRyZXNzT2ZFeGNlcHRpb24oKSwgR1BSSW5mbzo6cmVn
VDEpOworICAgICAgICBqaXQubG9hZDY0KHZtLmFkZHJlc3NPZkV4Y2VwdGlvbigpLCBHUFJJbmZv
OjpyZWdUMSk7CiAgICAgICAgIGppdC5qaXRBc3NlcnRJc051bGwoR1BSSW5mbzo6cmVnVDEpOwog
I2VuZGlmCiAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZv
OjpyZWdUMCk7CiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICBt
YWluUGF0aEp1bXBzLmFwcGVuZChqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6WmVybywg
R1BSSW5mbzo6cmVnVDApKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Cisg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih2bS5hcml0eUNoZWNr
RmFpbFJldHVyblRodW5rcy0+cmV0dXJuUENzRm9yKHZtLCBjb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSkpLCBHUFJJbmZvOjpyZWdUNSk7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QmFzZUluZGV4KEdQUkluZm86OnJlZ1Q1LCBHUFJJbmZvOjpyZWdUMCwgQ0NhbGxIZWxwZXJz
Ojp0aW1lc1B0cigpKSwgR1BSSW5mbzo6cmVnVDUpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgY2FsbEFyaXR5Rml4dXAgPSBqaXQuY2FsbCgpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoKTsKICAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7CiAK
LSAgICAgICAgbGlua0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHN0YXRlLmdyYXBo
Lm1fdm0sICZqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkpOworICAg
ICAgICBsaW5rQnVmZmVyID0gYWRvcHRQdHIobmV3IExpbmtCdWZmZXIodm0sICZqaXQsIGNvZGVC
bG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkpOwogICAgICAgICBsaW5rQnVmZmVyLT5s
aW5rKGNhbGxBcml0eUNoZWNrLCBjb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IG9wZXJhdGlv
bkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayk7Ci0gICAgICAg
IGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyKChzdGF0ZS5ncmFw
aC5tX3ZtLmdldENUSVN0dWIoYXJpdHlGaXh1cCkpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
KSk7CisgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRy
KCh2bS5nZXRDVElTdHViKGFyaXR5Rml4dXApKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkp
OwogICAgICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5QYXRoSnVtcHMsIENvZGVMb2NhdGlvbkxh
YmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CiAKICAg
ICAgICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKE1hY3JvQXNzZW1i
bGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkp
OwpAQCAtMTIwLDggKzEyNCw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIGpp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbWFp
blBhdGhKdW1wID0gaml0Lmp1bXAoKTsKICAgICAgICAgCi0gICAgICAgIGxpbmtCdWZmZXIgPSBh
ZG9wdFB0cihuZXcgTGlua0J1ZmZlcigKLSAgICAgICAgICAgIHN0YXRlLmdyYXBoLm1fdm0sICZq
aXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkpOworICAgICAgICBsaW5r
QnVmZmVyID0gYWRvcHRQdHIobmV3IExpbmtCdWZmZXIodm0sICZqaXQsIGNvZGVCbG9jaywgSklU
Q29tcGlsYXRpb25NdXN0U3VjY2VlZCkpOwogICAgICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5Q
YXRoSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5l
cmF0ZWRGdW5jdGlvbikpKTsKIAogICAgICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQWRk
cmVzc0ZvckNhbGwobGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFydCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmgJKHJldmlzaW9uIDE2MDg5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDks
NyArMTQ5LDYgQEAgc3RydWN0IE9TUkV4aXQgOiBwdWJsaWMgREZHOjpPU1JFeGl0QmFzZQogICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cywgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMp
OwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBtX2NvZGU7Ci0gICAgUmVmUHRyPEpJ
VFN0dWJSb3V0aW5lPiBtX3JlZ2lzdGVyUmVzdG9yYXRpb247CiAgICAgCiAgICAgLy8gVGhlIGZp
cnN0IGFyZ3VtZW50IHRvIHRoZSBleGl0IGNhbGwgbWF5IGJlIGEgdmFsdWUgd2Ugd2lzaCB0byBw
cm9maWxlLgogICAgIC8vIElmIHRoYXQncyB0aGUgY2FzZSwgdGhlIGZvcm1hdCB3aWxsIGJlIG5v
dCBJbnZhbGlkIGFuZCB3ZSdsbCBoYXZlIGEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDE2MDg5MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDYsMTQgKzQ2LDYgQEAgdXNpbmcgbmFtZXNwYWNlIERGRzsKIHN0YXRpYyB2b2lk
IGNvbXBpbGVTdHViKAogICAgIHVuc2lnbmVkIGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NS
RXhpdCYgZXhpdCwgVk0qIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICAvLyBSZWdp
c3RlciByZXN0b3JhdGlvbiBpcyBhIEdDLWF3YXJlIEpJVCBzdHViIHJvdXRpbmUgc2luY2Ugd2Ug
bmVlZCBpdCB0byBzdGF5IGFsaXZlCi0gICAgLy8gaWYgaXQncyBvbiB0aGUgc3RhY2sgYnV0IGFs
bCBvZiBvdXIgb3RoZXIgdGhpbmdzIChsaWtlIHRoZSBGVEw6Ok9TUkV4aXQpIGFyZSBkZWFkLgot
ICAgIGV4aXQubV9yZWdpc3RlclJlc3RvcmF0aW9uID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoCi0g
ICAgICAgIGdlbmVyYXRlUmVnaXN0ZXJSZXN0b3JhdGlvbigKLSAgICAgICAgICAgICp2bSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwKLSAgICAgICAgICAgIGNvZGVCbG9jay0+Y29kZVR5
cGUoKSA9PSBGdW5jdGlvbkNvZGUgPyBNdXN0Q2hlY2tBcml0eSA6IEFyaXR5Q2hlY2tOb3RSZXF1
aXJlZCksCi0gICAgICAgICp2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgdHJ1ZSk7
Ci0gICAgCiAgICAgU3RhY2tNYXBzOjpSZWNvcmQqIHJlY29yZDsKICAgICAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBqaXRDb2RlLT5zdGFja21hcHMucmVjb3Jkcy5zaXplKCk7IGktLTspIHsKQEAg
LTIxOSw3ICsyMTEsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICBqaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVn
aXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAg
ICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKICAgICBqaXQu
c3RvcmVQdHIoCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGV4aXQubV9y
ZWdpc3RlclJlc3RvcmF0aW9uLT5jb2RlKCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpLAor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2bS0+Z2V0Q1RJU3R1YihyZWdp
c3RlclJlc3RvcmF0aW9uVGh1bmtHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
KSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OmZyYW1l
UG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpKTsKICAgICAKICAg
ICAvLyBOb3cgZ2V0IHN0YXRlIG91dCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgYW5kIHBsYWNlIGl0
IGJhY2sgaW50byB0aGUgc3RhY2suIFRoaXMgcGFydCBkb2VzCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0Zh
aWxSZXR1cm5UaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIgorCisjaWYgRU5B
QkxFKEpJVCkKKworI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5oIgorI2luY2x1ZGUgIkxpbmtC
dWZmZXIuaCIKKyNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M6OkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtz
KCkKKyAgICA6IG1fbmV4dFNpemUoMCkKK3sKK30KKworQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVu
a3M6On5Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcygpIHsgfQorCitDb2RlTG9jYXRpb25MYWJl
bCogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M6OnJldHVyblBDc0ZvcigKKyAgICBWTSYgdm0s
IHVuc2lnbmVkIG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcykKK3sKKyAgICBBU1NF
UlQobnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlzID49IDEpOworICAgIAorICAgIG51
bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZigKKyAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtRXhwZWN0ZWRBcmd1bWVu
dHNJbmNsdWRpbmdUaGlzKTsKKyAgICAKKyAgICB7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIGlmIChudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1
ZGluZ1RoaXMgPCBtX25leHRTaXplKQorICAgICAgICAgICAgcmV0dXJuIG1fcmV0dXJuUENBcnJh
eXMubGFzdCgpLmdldCgpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25U
aHJlYWQoKSk7CisgICAgCisgICAgbnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlzID0g
c3RkOjptYXgoCisgICAgICAgIG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcywKKyAg
ICAgICAgbV9uZXh0U2l6ZSAqIDIpOworICAgIAorICAgIEFzc2VtYmx5SGVscGVycyBqaXQoJnZt
LCAwKTsKKyAgICAKKyAgICBWZWN0b3I8QXNzZW1ibHlIZWxwZXJzOjpMYWJlbD4gbGFiZWxzOwor
ICAgIAorICAgIGZvciAodW5zaWduZWQgc2l6ZSA9IG1fbmV4dFNpemU7IHNpemUgPD0gbnVtRXhw
ZWN0ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlzOyBzaXplICs9IHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCkpIHsKKyAgICAgICAgbGFiZWxzLmFwcGVuZChqaXQubGFiZWwoKSk7CisgICAgICAgIAor
ICAgICAgICBqaXQubmVhckNhbGwoKTsKKyAgICAgICAgaml0LnBvcChHUFJJbmZvOjpyZWdUMik7
CisgICAgICAgIGppdC5sb2FkMzIoCisgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OkFkZHJl
c3MoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rl
ciwKKyAgICAgICAgICAgICAgICAoSlNTdGFjazo6QXJndW1lbnRDb3VudCAtIEpTU3RhY2s6OkNh
bGxlckZyYW1lQW5kUENTaXplKSAqIHNpemVvZihSZWdpc3RlcikgKworICAgICAgICAgICAgICAg
IFBheWxvYWRPZmZzZXQpLAorICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBq
aXQuYWRkMzIoCisgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigKKyAg
ICAgICAgICAgICAgICBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gSlNTdGFjazo6Q2Fs
bGVyRnJhbWVBbmRQQ1NpemUgKyBzaXplIC0gMSksCisgICAgICAgICAgICBHUFJJbmZvOjpyZWdU
MSk7CisgICAgICAgIGppdC5sc2hpZnQzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigz
KSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgaml0LmxvYWRQ
dHIoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgCisgICAgICAgIGpp
dC5hZGRQdHIoCisgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihzaXpl
ICogc2l6ZW9mKFJlZ2lzdGVyKSksCisgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgCisgICAgICAgIGppdC5qdW1wKEdQUkluZm86OnJl
Z1QxKTsKKyAgICB9CisgICAgCisgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKHZtLCAmaml0LCBH
TE9CQUxfVEhVTktfSUQpOworICAgIAorICAgIHVuc2lnbmVkIHJldHVyblBDc1NpemUgPSBudW1F
eHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMgLyBzdGFja0FsaWdubWVudFJlZ2lzdGVycygp
ICsgMTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29kZUxvY2F0aW9uTGFiZWxbXT4gcmV0dXJuUENz
ID0KKyAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxDb2RlTG9jYXRpb25MYWJlbFtdPihyZXR1cm5Q
Q3NTaXplKTsKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyBzaXplIDw9IG51bUV4cGVjdGVk
QXJndW1lbnRzSW5jbHVkaW5nVGhpczsgc2l6ZSArPSBzdGFja0FsaWdubWVudFJlZ2lzdGVycygp
KSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc2l6ZSAvIHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4IDwgcmV0dXJuUENzU2l6ZSk7Cisg
ICAgICAgIGlmIChzaXplIDwgbV9uZXh0U2l6ZSkKKyAgICAgICAgICAgIHJldHVyblBDc1tpbmRl
eF0gPSBtX3JldHVyblBDQXJyYXlzLmxhc3QoKVtpbmRleF07CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJldHVyblBDc1tpbmRleF0gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobGFiZWxzWyhz
aXplIC0gbV9uZXh0U2l6ZSkgLyBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpXSk7CisgICAgfQor
CisgICAgQ29kZUxvY2F0aW9uTGFiZWwqIHJlc3VsdCA9IHJldHVyblBDcy5nZXQoKTsKKworICAg
IHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAg
bV9yZXR1cm5QQ0FycmF5cy5hcHBlbmQoc3RkOjptb3ZlKHJldHVyblBDcykpOworICAgICAgICBt
X3JlZnMuYXBwZW5kKEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJBcml0eSBjaGVjayBmYWls
IHJldHVybiB0aHVua3MgZm9yIHVwIHRvIG51bUFyZ3MgPSAldSIsIG51bUV4cGVjdGVkQXJndW1l
bnRzSW5jbHVkaW5nVGhpcykpKTsKKyAgICAgICAgbV9uZXh0U2l6ZSA9IG51bUV4cGVjdGVkQXJn
dW1lbnRzSW5jbHVkaW5nVGhpcyArIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCk7CisgICAgfQor
ICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NvZGVMb2NhdGlvbkxhYmVsIEFyaXR5Q2hl
Y2tGYWlsUmV0dXJuVGh1bmtzOjpyZXR1cm5QQ0ZvcihWTSYgdm0sIHVuc2lnbmVkIHNsb3RzVG9B
ZGQpCit7CisgICAgcmV0dXJuIHJldHVyblBDc0Zvcih2bSwgc2xvdHNUb0FkZClbc2xvdHNUb0Fk
ZCAvIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCldOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1
bmtzX2gKKyNkZWZpbmUgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3NfaAorCisjaWYgRU5BQkxF
KEpJVCkKKworI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgIkNvbmN1cnJlbnRK
SVRMb2NrLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzIHsKK3B1YmxpYzoKKyAgICBBcml0eUNo
ZWNrRmFpbFJldHVyblRodW5rcygpOworICAgIH5Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcygp
OworICAgIAorICAgIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIHJldHVybiBs
YWJlbHMgaW5kZXhlZCBieSBtaXNzaW5nQXJncy4KKyAgICBDb2RlTG9jYXRpb25MYWJlbCogcmV0
dXJuUENzRm9yKFZNJiwgdW5zaWduZWQgbnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlz
KTsKKyAgICAKKyAgICBDb2RlTG9jYXRpb25MYWJlbCByZXR1cm5QQ0ZvcihWTSYsIHVuc2lnbmVk
IHNsb3RzVG9BZGQpOworICAgIAorcHJpdmF0ZToKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PENvZGVMb2NhdGlvbkxhYmVsW10+PiBtX3JldHVyblBDQXJyYXlzOworICAgIHVuc2lnbmVkIG1f
bmV4dFNpemU7CisgICAgVmVjdG9yPE1hY3JvQXNzZW1ibGVyQ29kZVJlZj4gbV9yZWZzOworICAg
IENvbmN1cnJlbnRKSVRMb2NrIG1fbG9jazsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1
bmtzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTYwODkz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw2ICszNCw3IEBACiBKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpTU0UyQ2hlY2tT
dGF0ZSBKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzX3NzZTJDaGVja1N0YXRlID0gTm90
Q2hlY2tlZFNTRTI7CiAjZW5kaWYKIAorI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1
bmtzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVz
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTU3Niw2ICs1NzcsOCBAQCBDb21waWxh
dGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJCiAgICAgICAgIGlmIChyZXR1cm5WYWx1
ZUdQUiAhPSByZWdUMCkKICAgICAgICAgICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJlZ1QwKTsK
ICAgICAgICAgYnJhbmNoVGVzdDMyKFplcm8sIHJlZ1QwKS5saW5rVG8oYmVnaW5MYWJlbCwgdGhp
cyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtLT5hcml0eUNoZWNrRmFpbFJldHVy
blRodW5rcy0+cmV0dXJuUENzRm9yKCptX3ZtLCBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
KSksIHJlZ1Q1KTsKKyAgICAgICAgbG9hZFB0cihCYXNlSW5kZXgocmVnVDUsIHJlZ1QwLCB0aW1l
c1B0cigpKSwgcmVnVDUpOwogICAgICAgICBlbWl0TmFrZWRDYWxsKG1fdm0tPmdldENUSVN0dWIo
YXJpdHlGaXh1cCkuY29kZSgpKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTY2NCwyMCAr
NjY3LDEyIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAgICAg
ICAgaW5mby5jYWxsZWVHUFIgPSByZWdUMDsKICAgICB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkg
fHwgRU5BQkxFKExMSU5UKQotICAgIGlmIChjYW5CZU9wdGltaXplZE9ySW5saW5lZCgpCi0jaWYg
RU5BQkxFKExMSU5UKQotICAgICAgICB8fCB0cnVlCi0jZW5kaWYKLSAgICAgICAgKSB7Ci0gICAg
ICAgIENvbXBhY3RKSVRDb2RlTWFwOjpFbmNvZGVyIGppdENvZGVNYXBFbmNvZGVyOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xh
YmVscy5zaXplKCk7ICsrYnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgICAgIGlmIChtX2xhYmVs
c1tieXRlY29kZU9mZnNldF0uaXNTZXQoKSkKLSAgICAgICAgICAgICAgICBqaXRDb2RlTWFwRW5j
b2Rlci5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQsIHBhdGNoQnVmZmVyLm9mZnNldE9mKG1fbGFiZWxz
W2J5dGVjb2RlT2Zmc2V0XSkpOwotICAgICAgICB9Ci0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRK
SVRDb2RlTWFwKGppdENvZGVNYXBFbmNvZGVyLmZpbmlzaCgpKTsKKyAgICBDb21wYWN0SklUQ29k
ZU1hcDo6RW5jb2RlciBqaXRDb2RlTWFwRW5jb2RlcjsKKyAgICBmb3IgKHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVscy5zaXplKCk7ICsrYnl0ZWNv
ZGVPZmZzZXQpIHsKKyAgICAgICAgaWYgKG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0XS5pc1NldCgp
KQorICAgICAgICAgICAgaml0Q29kZU1hcEVuY29kZXIuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0LCBw
YXRjaEJ1ZmZlci5vZmZzZXRPZihtX2xhYmVsc1tieXRlY29kZU9mZnNldF0pKTsKICAgICB9Ci0j
ZW5kaWYKKyAgICBtX2NvZGVCbG9jay0+c2V0SklUQ29kZU1hcChqaXRDb2RlTWFwRW5jb2Rlci5m
aW5pc2goKSk7CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2s7CiAg
ICAgaWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2aXNpb24gMTYwODkzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4
LDcgKzE2OCw3IEBAIEpJVENvZGU6OkNvZGVQdHIgRGlyZWN0SklUQ29kZTo6YWRkcmVzc0YKICAg
ICAgICAgY2FzZSBNdXN0UHJlc2VydmVSZWdpc3RlcnM6IHsKICAgICAgICAgICAgIFJlZ2lzdGVy
UHJlc2VydmF0aW9uV3JhcHBlcnMqIHdyYXBwZXJzID0gZW5zdXJlV3JhcHBlcnMoKTsKICAgICAg
ICAgICAgIGlmICghd3JhcHBlcnMtPndpdGhvdXRBcml0eUNoZWNrKQotICAgICAgICAgICAgICAg
IHdyYXBwZXJzLT53aXRob3V0QXJpdHlDaGVjayA9IGdlbmVyYXRlUmVnaXN0ZXJQcmVzZXJ2YXRp
b25XcmFwcGVyKHZtLCBleGVjdXRhYmxlLCBtX3JlZi5jb2RlKCksIEFyaXR5Q2hlY2tOb3RSZXF1
aXJlZCk7CisgICAgICAgICAgICAgICAgd3JhcHBlcnMtPndpdGhvdXRBcml0eUNoZWNrID0gZ2Vu
ZXJhdGVSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXIodm0sIGV4ZWN1dGFibGUsIG1fcmVmLmNv
ZGUoKSk7CiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcnMtPndpdGhvdXRBcml0eUNoZWNrLmNv
ZGUoKTsKICAgICAgICAgfSB9CiAgICAgY2FzZSBNdXN0Q2hlY2tBcml0eToKQEAgLTE3OSw3ICsx
NzksNyBAQCBKSVRDb2RlOjpDb2RlUHRyIERpcmVjdEpJVENvZGU6OmFkZHJlc3NGCiAgICAgICAg
IGNhc2UgTXVzdFByZXNlcnZlUmVnaXN0ZXJzOiB7CiAgICAgICAgICAgICBSZWdpc3RlclByZXNl
cnZhdGlvbldyYXBwZXJzKiB3cmFwcGVycyA9IGVuc3VyZVdyYXBwZXJzKCk7CiAgICAgICAgICAg
ICBpZiAoIXdyYXBwZXJzLT53aXRoQXJpdHlDaGVjaykKLSAgICAgICAgICAgICAgICB3cmFwcGVy
cy0+d2l0aEFyaXR5Q2hlY2sgPSBnZW5lcmF0ZVJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlcih2
bSwgZXhlY3V0YWJsZSwgbV93aXRoQXJpdHlDaGVjaywgTXVzdENoZWNrQXJpdHkpOworICAgICAg
ICAgICAgICAgIHdyYXBwZXJzLT53aXRoQXJpdHlDaGVjayA9IGdlbmVyYXRlUmVnaXN0ZXJQcmVz
ZXJ2YXRpb25XcmFwcGVyKHZtLCBleGVjdXRhYmxlLCBtX3dpdGhBcml0eUNoZWNrKTsKICAgICAg
ICAgICAgIHJldHVybiB3cmFwcGVycy0+d2l0aEFyaXR5Q2hlY2suY29kZSgpOwogICAgICAgICB9
IH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2Vy
dmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwCShyZXZp
c2lvbiAxNjA4OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2Vy
dmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcg
QEAgcHRyZGlmZl90IHJlZ2lzdGVyUHJlc2VydmF0aW9uT2Zmc2V0KCkKICAgICByZXR1cm4gc2l6
ZW9mKFJlZ2lzdGVyKSAqIG51bWJlck9mTmV3U3RhY2tTbG90czsKIH0KIAotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGdlbmVyYXRlUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyKFZNJiB2bSwgRXhl
Y3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQsIEFy
aXR5Q2hlY2tNb2RlIGFyaXR5KQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlUmVnaXN0
ZXJQcmVzZXJ2YXRpb25XcmFwcGVyKFZNJiB2bSwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUs
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQpCiB7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAg
ICAgLy8gV2Ugc2hvdWxkbid0IGV2ZXIgYmUgZ2VuZXJhdGluZyB3cmFwcGVycyBmb3IgbmF0aXZl
IGZ1bmN0aW9ucy4KQEAgLTExNCw3ICsxMTQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2Vu
ZXJhdGVSZWdpc3RlclByCiAgICAgCiAgICAgQXNzZW1ibHlIZWxwZXJzOjpDYWxsIGNhbGwgPSBq
aXQubmVhckNhbGwoKTsKICAgICAKLSAgICBnZW5lcmF0ZVJlZ2lzdGVyUmVzdG9yYXRpb24oaml0
LCBleGVjdXRhYmxlLCBhcml0eSk7CisgICAgZ2VuZXJhdGVSZWdpc3RlclJlc3RvcmF0aW9uKGpp
dCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKHZtLCAmaml0LCBHTE9CQUxfVEhV
TktfSUQpOwogICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBDb2RlTG9jYXRpb25MYWJlbCh0YXJn
ZXQpKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVS
ZWdpc3RlclByCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiB9CiAKLXZvaWQgZ2VuZXJhdGVS
ZWdpc3RlclJlc3RvcmF0aW9uKEFzc2VtYmx5SGVscGVycyYgaml0LCBFeGVjdXRhYmxlQmFzZSog
ZXhlY3V0YWJsZSwgQXJpdHlDaGVja01vZGUgYXJpdHkpCit2b2lkIGdlbmVyYXRlUmVnaXN0ZXJS
ZXN0b3JhdGlvbihBc3NlbWJseUhlbHBlcnMmIGppdCkKIHsKICAgICBSZWdpc3RlclNldCB0b1Nh
dmUgPSByZWdpc3RlcnNUb1ByZXNlcnZlKCk7CiAgICAgcHRyZGlmZl90IG9mZnNldCA9IHJlZ2lz
dGVyUHJlc2VydmF0aW9uT2Zmc2V0KCk7CkBAIC0xNDUsMTkgKzE0NSw2IEBAIHZvaWQgZ2VuZXJh
dGVSZWdpc3RlclJlc3RvcmF0aW9uKEFzc2VtYmwKICAgICAgICAgICAgIChKU1N0YWNrOjpBcmd1
bWVudENvdW50IC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpICogc2l6ZW9mKFJlZ2lz
dGVyKSArIFBheWxvYWRPZmZzZXQpLAogICAgICAgICBHUFJJbmZvOjpyZWdUMik7CiAgICAgCi0g
ICAgaWYgKGFyaXR5ID09IE11c3RDaGVja0FyaXR5KSB7Ci0gICAgICAgIC8vIEl0J3MgcG9zc2li
bGUgdGhhdCB0aGUgYXJpdHkgY2hlY2tlciBoYWQgZXh0ZW5kZWQgdGhlIHN0YWNrLiBJbiB0aGF0
IGNhc2UsIHdlIG5lZWQKLSAgICAgICAgLy8gdG8gYWRqdXN0IHRoZSBhcmd1bWVudCBjb3VudCB0
byBiZSB0aGUgbWF4IG9mIHdoYXQgdGhlIGZyYW1lIGNsYWltcyBhbmQgd2hhdCB0aGUKLSAgICAg
ICAgLy8gZXhlY3V0YWJsZSBkZXNpcmVkLgotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1
bmN0aW9uRXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxl
KTsKLSAgICAgICAgaW50IHBhcmFtZXRlckNvdW50ID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wYXJh
bWV0ZXJDb3VudCgpICsgMTsKLSAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIG9rID0gaml0
LmJyYW5jaDMyKAotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIEdQ
UkluZm86OnJlZ1QyLAotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
cGFyYW1ldGVyQ291bnQpKTsKLSAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIocGFyYW1ldGVyQ291bnQpLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgIG9rLmxp
bmsoJmppdCk7Ci0gICAgfQotICAgIAogICAgIGppdC5sc2hpZnQzMihBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMigzKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIAogICAgIGppdC5hZGRQdHIo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0KSwgQXNzZW1ibHlIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC0xOTksMTQgKzE4NiwxMiBAQCB2b2lkIGdlbmVyYXRl
UmVnaXN0ZXJSZXN0b3JhdGlvbihBc3NlbWJsCiAgICAgaml0Lmp1bXAoR1BSSW5mbzo6cmVnVDEp
OwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVSZWdpc3RlclJlc3RvcmF0aW9u
KAotICAgIFZNJiB2bSwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUsIEFyaXR5Q2hlY2tNb2Rl
IGFyaXR5KQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJlZ2lzdGVyUmVzdG9yYXRpb25UaHVua0dl
bmVyYXRvcihWTSogdm0pCiB7Ci0gICAgU2NyaXB0RXhlY3V0YWJsZSogc2NyaXB0RXhlY3V0YWJs
ZSA9IGpzQ2FzdDxTY3JpcHRFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7Ci0gICAgQXNzZW1ibHlI
ZWxwZXJzIGppdCgmdm0sIDApOwotICAgIGdlbmVyYXRlUmVnaXN0ZXJSZXN0b3JhdGlvbihqaXQs
IGV4ZWN1dGFibGUsIGFyaXR5KTsKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIodm0sICZqaXQs
IEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0RGR19DT0RFKGxpbmtCdWZm
ZXIsICgiUmVnaXN0ZXIgcmVzdG9yYXRpb24gdGh1bmsgZm9yICVzLyVzIiwgdG9DU3RyaW5nKHNj
cmlwdEV4ZWN1dGFibGUtPmhhc2hGb3IoQ29kZUZvckNhbGwpKS5kYXRhKCksIHRvQ1N0cmluZyhz
Y3JpcHRFeGVjdXRhYmxlLT5oYXNoRm9yKENvZGVGb3JDb25zdHJ1Y3QpKS5kYXRhKCkpKTsKKyAg
ICBBc3NlbWJseUhlbHBlcnMgaml0KHZtLCAwKTsKKyAgICBnZW5lcmF0ZVJlZ2lzdGVyUmVzdG9y
YXRpb24oaml0KTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoKnZtLCAmaml0LCBHTE9CQUxf
VEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICgiUmVnaXN0
ZXIgcmVzdG9yYXRpb24gdGh1bmsiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5l
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
UHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oCShyZXZpc2lvbiAxNjA4OTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMSArMzksMTEgQEAgUmVnaXN0ZXJTZXQgcmVnaXN0
ZXJzVG9QcmVzZXJ2ZSgpOwogCiBwdHJkaWZmX3QgcmVnaXN0ZXJQcmVzZXJ2YXRpb25PZmZzZXQo
KTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlUmVnaXN0ZXJQcmVzZXJ2YXRpb25X
cmFwcGVyKFZNJiwgRXhlY3V0YWJsZUJhc2UqLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgdGFyZ2V0
LCBBcml0eUNoZWNrTW9kZSk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVSZWdpc3Rl
clByZXNlcnZhdGlvbldyYXBwZXIoVk0mLCBFeGVjdXRhYmxlQmFzZSosIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciB0YXJnZXQpOwogCi12b2lkIGdlbmVyYXRlUmVnaXN0ZXJSZXN0b3JhdGlvbihBc3Nl
bWJseUhlbHBlcnMmLCBFeGVjdXRhYmxlQmFzZSosIEFyaXR5Q2hlY2tNb2RlKTsKK3ZvaWQgZ2Vu
ZXJhdGVSZWdpc3RlclJlc3RvcmF0aW9uKEFzc2VtYmx5SGVscGVycyYpOwogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZ2VuZXJhdGVSZWdpc3RlclJlc3RvcmF0aW9uKFZNJiwgRXhlY3V0YWJsZUJh
c2UqLCBBcml0eUNoZWNrTW9kZSk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcmVnaXN0ZXJSZXN0
b3JhdGlvblRodW5rR2VuZXJhdG9yKFZNKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZp
c2lvbiAxNjA4OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0MCwxNCArNDQwLDE2IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBhcml0eUZpeHVwKFZNKiB2bSkKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0p
OwogCi0gICAgLy8gV2UgZW50ZXIgd2l0aCBmaXh1cCBjb3VudCBpbiByZWdUMAorICAgIC8vIFdl
IGVudGVyIHdpdGggZml4dXAgY291bnQsIGluIGFsaWduZWQgc3RhY2sgdW5pdHMsIGluIHJlZ1Qw
IGFuZCB0aGUgcmV0dXJuIHRodW5rIGluCisgICAgLy8gcmVnVDUuIFdlIHVzZSBWTTo6Y3VycmVu
dFJldHVyblRodW5rUEMgaW5zdGVhZCBvZiByZWdUNSBvbiBYODYtMzIuCiAjaWYgVVNFKEpTVkFM
VUU2NCkKICMgIGlmIENQVShYODZfNjQpCiAgICAgaml0LnBvcChKU0ludGVyZmFjZUpJVDo6cmVn
VDQpOwogIyAgZW5kaWYKKyAgICBqaXQubHNoaWZ0MzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJ
bW0zMihsb2dTdGFja0FsaWdubWVudFJlZ2lzdGVycygpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qw
KTsKICAgICBqaXQubmVnNjQoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKICAgICBqaXQubW92ZShK
U0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJmYWNlSklUOjpyZWdUMyk7
Ci0gICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiA4KSwgSlNJbnRlcmZh
Y2VKSVQ6OnJlZ1QyKTsKKyAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpT
SW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAq
IHNpemVvZihSZWdpc3RlcikpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwogICAgIGppdC5hZGQz
MihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNp
emUpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwogCiAgICAgLy8gTW92ZSBjdXJyZW50IGZyYW1l
IGRvd24gcmVnVDAgbnVtYmVyIG9mIHNsb3RzCkBAIC00NTcsMTggKzQ1OSwyNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgYXJpdHlGaXh1cChWTSogdm0pCiAgICAgaml0LmFkZFB0cihKU0ludGVy
ZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDgpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOwogICAgIGpp
dC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgSlNJbnRlcmZhY2VKSVQ6OlRy
dXN0ZWRJbW0zMigxKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKS5saW5rVG8oY29weUxvb3AsICZq
aXQpOwogCi0gICAgLy8gRmlsbCBpbiByZWdUMCBtaXNzaW5nIGFyZyBzbG90cyB3aXRoIHVuZGVm
aW5lZAorICAgIC8vIEZpbGwgaW4gcmVnVDAgLSAxIG1pc3NpbmcgYXJnIHNsb3RzIHdpdGggdW5k
ZWZpbmVkCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwLCBKU0ludGVyZmFjZUpJ
VDo6cmVnVDIpOwogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tNjQoVmFs
dWVVbmRlZmluZWQpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDEpOworICAgIGppdC5hZGQzMihKU0lu
dGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDEpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwogICAg
IEpTSW50ZXJmYWNlSklUOjpMYWJlbCBmaWxsVW5kZWZpbmVkTG9vcChqaXQubGFiZWwoKSk7CiAg
ICAgaml0LnN0b3JlNjQoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6QmFz
ZUluZGV4KEpTSW50ZXJmYWNlSklUOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwLCBKU0lu
dGVyZmFjZUpJVDo6VGltZXNFaWdodCkpOwogICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6
OlRydXN0ZWRJbW0zMig4KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsKICAgICBqaXQuYnJhbmNo
QWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1t
MzIoMSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMikubGlua1RvKGZpbGxVbmRlZmluZWRMb29wLCAm
aml0KTsKLQorICAgIAogICAgIC8vIEFkanVzdCBjYWxsIGZyYW1lIHJlZ2lzdGVyIGFuZCBzdGFj
ayBwb2ludGVyIHRvIGFjY291bnQgZm9yIG1pc3NpbmcgYXJncwotICAgIGppdC5sc2hpZnQ2NChK
U0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDMpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDApOwot
ICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwLCBKU0ludGVyZmFjZUpJVDo6Y2Fs
bEZyYW1lUmVnaXN0ZXIpOwotICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwLCBK
U0ludGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5tb3ZlKEpTSW50
ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKKyAgICBqaXQubHNoaWZ0
NjQoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigzKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qx
KTsKKyAgICBqaXQuYWRkUHRyKEpTSW50ZXJmYWNlSklUOjpyZWdUMSwgSlNJbnRlcmZhY2VKSVQ6
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICBqaXQuYWRkUHRyKEpTSW50ZXJmYWNlSklUOjpyZWdU
MSwgSlNJbnRlcmZhY2VKSVQ6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIC8vIFNhdmUg
dGhlIG9yaWdpbmFsIHJldHVybiBQQy4KKyAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6
QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0
dXJuUENPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5m
bzo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qz
LCBKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50ZXJmYWNlSklUOjpUaW1lc0VpZ2h0KSk7Cisg
ICAgCisgICAgLy8gSW5zdGFsbCB0aGUgbmV3IHJldHVybiBQQy4KKyAgICBqaXQuc3RvcmVQdHIo
R1BSSW5mbzo6cmVnVDUsIEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpj
YWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSk7CiAKICMgIGlm
IENQVShYODZfNjQpCiAgICAgaml0LnB1c2goSlNJbnRlcmZhY2VKSVQ6OnJlZ1Q0KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwCShyZXZpc2lvbiAxNjA4OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNp
bmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNjA4
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHRy
YWNlKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJs
b2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAogICAgICAgICAgICAgb3Bjb2RlTmFtZXNb
ZXhlYy0+dm0oKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSwKICAg
ICAgICAgICAgIGV4ZWMtPnNjb3BlKCksIHBjKTsKKyAgICBpZiAoZXhlYy0+dm0oKS5pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpID09IG9wX2VudGVyKSB7CisgICAgICAg
IGRhdGFMb2dGKCJGcmFtZSB3aWxsIGV2ZW50dWFsbHkgcmV0dXJuIHRvICVwXG4iLCBleGVjLT5y
ZXR1cm5QQygpLnZhbHVlKCkpOworICAgICAgICAqYml0d2lzZV9jYXN0PHZvbGF0aWxlIGNoYXIq
PihleGVjLT5yZXR1cm5QQygpLnZhbHVlKCkpOworICAgIH0KICAgICBpZiAoZXhlYy0+dm0oKS5p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpID09IG9wX3JldCkgewogICAg
ICAgICBkYXRhTG9nRigiV2lsbCBiZSByZXR1cm5pbmcgdG8gJXBcbiIsIGV4ZWMtPnJldHVyblBD
KCkudmFsdWUoKSk7CiAgICAgICAgIGRhdGFMb2dGKCJUaGUgbmV3IGNmciB3aWxsIGJlICVwXG4i
LCBleGVjLT5jYWxsZXJGcmFtZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAx
NjA4OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTcyLDkgKzE3Miw5IEBAIGVuZAogCiBtYWNy
byBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwsIGRvUmV0dXJuKQogICAgIGlmIFg4NgotICAg
ICAgICBjb25zdCBlbnRyeSA9IHQ1CisgICAgICAgIGNvbnN0IGVudHJ5ID0gdDQKICAgICAgICAg
Y29uc3Qgdm1Ub3BDYWxsRnJhbWUgPSB0MgotICAgICAgICBjb25zdCBwcm90b0NhbGxGcmFtZSA9
IHQ0CisgICAgICAgIGNvbnN0IHByb3RvQ2FsbEZyYW1lID0gdDUKIAogICAgICAgICBjb25zdCBl
eHRyYVN0YWNrU3BhY2UgPSAyOAogICAgICAgICBjb25zdCBwcmV2aW91c0NGUiA9IHQwCkBAIC0x
OTQsOCArMTk0LDggQEAgbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsLCBkb1JldAog
ICAgICAgICBjb25zdCBwcmV2aW91c1BDID0gbHIKICAgICAgICAgY29uc3QgdGVtcDEgPSB0MyAj
IFNhbWUgYXMgcHJldmlvdXNDRlIKICAgICAgICAgY29uc3QgdGVtcDIgPSBhMyAjIFNhbWUgYXMg
dG9wT2ZTdGFjawotICAgICAgICBjb25zdCB0ZW1wMyA9IHQ0Ci0gICAgICAgIGNvbnN0IHRlbXA0
ID0gdDUKKyAgICAgICAgY29uc3QgdGVtcDMgPSB0NQorICAgICAgICBjb25zdCB0ZW1wNCA9IHQ0
CiAgICAgZWxzaWYgQVJNdjcKICAgICAgICAgY29uc3QgZW50cnkgPSBhMAogICAgICAgICBjb25z
dCB2bVRvcENhbGxGcmFtZSA9IGExCkBAIC0yMDcsOCArMjA3LDggQEAgbWFjcm8gZG9DYWxsVG9K
YXZhU2NyaXB0KG1ha2VDYWxsLCBkb1JldAogICAgICAgICBjb25zdCBwcmV2aW91c1BDID0gbHIK
ICAgICAgICAgY29uc3QgdGVtcDEgPSB0MyAjIFNhbWUgYXMgcHJldmlvdXNDRlIKICAgICAgICAg
Y29uc3QgdGVtcDIgPSBhMyAjIFNhbWUgYXMgdG9wT2ZTdGFjawotICAgICAgICBjb25zdCB0ZW1w
MyA9IHQ0Ci0gICAgICAgIGNvbnN0IHRlbXA0ID0gdDUKKyAgICAgICAgY29uc3QgdGVtcDMgPSB0
NQorICAgICAgICBjb25zdCB0ZW1wNCA9IHQ0CiAgICAgZWxzaWYgTUlQUwogICAgICAgICBjb25z
dCBlbnRyeSA9IGEwCiAgICAgICAgIGNvbnN0IHZtVG9wQ2FsbEZyYW1lID0gYTEKQEAgLTIxOSw4
ICsyMTksOCBAQCBtYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwsIGRvUmV0CiAgICAg
ICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDIKICAgICAgICAgY29uc3QgcHJldmlvdXNQQyA9IGxy
CiAgICAgICAgIGNvbnN0IHRlbXAxID0gdDMKLSAgICAgICAgY29uc3QgdGVtcDIgPSB0NAotICAg
ICAgICBjb25zdCB0ZW1wMyA9IHQ1CisgICAgICAgIGNvbnN0IHRlbXAyID0gdDUKKyAgICAgICAg
Y29uc3QgdGVtcDMgPSB0NAogICAgICAgICBjb25zdCB0ZW1wNCA9IHQ2CiAgICAgZWxzaWYgU0g0
CiAgICAgICAgIGNvbnN0IGVudHJ5ID0gYTAKQEAgLTUxOSwxMCArNTE5LDEwIEBAIGVuZAogIyBF
bnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgogCiAjIEV4cGVjdHMgdGhhdCBDb2RlQmxv
Y2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgotbWFj
cm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvd19wYXRoKQorbWFjcm8gZnVuY3Rp
b25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKICAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251
bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKLSAgICBjQ2FsbDIoc2xvd19wYXRoLCBjZnIsIFBD
KSAgICMgVGhpcyBzbG93X3BhdGggaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8g
ZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IKKyAgICBjQ2FsbDIoc2xvd1BhdGgsIGNmciwgUEMpICAg
IyBUaGlzIHNsb3dQYXRoIGhhcyBhIHNpbXBsZSBwcm90b2NvbDogdDAgPSAwID0+IG5vIGVycm9y
LCB0MCAhPSAwID0+IGVycm9yCiAgICAgYnRpeiB0MCwgLmlzQXJpdHlGaXh1cE5lZWRlZAogICAg
IG1vdmUgdDEsIGNmciAgICMgdDEgY29udGFpbnMgY2FsbGVyIGZyYW1lCiAgICAgam1wIF9sbGlu
dF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNp
b24gMTYwODkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBAQCBtYWNybyBkaXNw
YXRjaEFmdGVyQ2FsbCgpCiBlbmQKIAogbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcy
KQotICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQ1LCAweGJhZDBjMDAyKQorICAgIGNo
ZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQ0LCAweGJhZDBjMDAyKQogICAgIGlmIFg4Nl82NAot
ICAgICAgICBtb3ZlIGFyZzEsIHQ1Ci0gICAgICAgIG1vdmUgYXJnMiwgdDQKKyAgICAgICAgbW92
ZSBhcmcxLCB0NAorICAgICAgICBtb3ZlIGFyZzIsIHQ1CiAgICAgICAgIGNhbGwgZnVuY3Rpb24K
ICAgICBlbHNpZiBBUk02NAogICAgICAgICBtb3ZlIGFyZzEsIHQwCkBAIC03MCwxMCArNzAsMTAg
QEAgZW5kCiAKICMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFyZzQgc2hvdWxkIHByb2Jh
Ymx5IGJlIGltbWVkaWF0ZXMuCiBtYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFy
ZzMsIGFyZzQpCi0gICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDUsIDB4YmFkMGMwMDQp
CisgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDQsIDB4YmFkMGMwMDQpCiAgICAgaWYg
WDg2XzY0Ci0gICAgICAgIG1vdmUgYXJnMSwgdDUKLSAgICAgICAgbW92ZSBhcmcyLCB0NAorICAg
ICAgICBtb3ZlIGFyZzEsIHQ0CisgICAgICAgIG1vdmUgYXJnMiwgdDUKICAgICAgICAgbW92ZSBh
cmczLCB0MQogICAgICAgICBtb3ZlIGFyZzQsIHQyCiAgICAgICAgIGNhbGwgZnVuY3Rpb24KQEAg
LTE1MCw4ICsxNTAsOCBAQCBlbmQKIAogbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxs
KQogICAgIGlmIFg4Nl82NAotICAgICAgICBjb25zdCBlbnRyeSA9IHQ1Ci0gICAgICAgIGNvbnN0
IHZtVG9wQ2FsbEZyYW1lID0gdDQKKyAgICAgICAgY29uc3QgZW50cnkgPSB0NAorICAgICAgICBj
b25zdCB2bVRvcENhbGxGcmFtZSA9IHQ1CiAgICAgICAgIGNvbnN0IHByb3RvQ2FsbEZyYW1lID0g
dDEKICAgICAgICAgY29uc3QgdG9wT2ZTdGFjayA9IHQyCiAKQEAgLTE2NiwxMCArMTY2LDEwIEBA
IG1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCkKICAgICAgICAgY29uc3QgcHJvdG9D
YWxsRnJhbWUgPSBhMgogICAgICAgICBjb25zdCB0b3BPZlN0YWNrID0gYTMKIAotICAgICAgICBj
b25zdCBwcmV2aW91c0NGUiA9IHQ0CisgICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDUKICAg
ICAgICAgY29uc3QgcHJldmlvdXNQQyA9IGxyCiAgICAgICAgIGNvbnN0IHRlbXAxID0gdDMKLSAg
ICAgICAgY29uc3QgdGVtcDIgPSB0NQorICAgICAgICBjb25zdCB0ZW1wMiA9IHQ0CiAgICAgICAg
IGNvbnN0IHRlbXAzID0gdDYKICAgICBlbmQKIApAQCAtMjY0LDcgKzI2NCw3IEBAIGVuZAogbWFj
cm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50cnksIHRlbXApCiAgICAgbW92ZSBlbnRyeSwgdGVt
cAogICAgIGlmIFg4Nl82NAotICAgICAgICBtb3ZlIHNwLCB0NQorICAgICAgICBtb3ZlIHNwLCB0
NAogICAgIGVsc2lmIEFSTTY0IG9yIENfTE9PUAogICAgICAgICBtb3ZlIHNwLCBhMAogICAgIGVu
ZApAQCAtMzk5LDE5ICszOTksMzUgQEAgZW5kCiAjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVy
cHJldGVyLgogCiAjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdo
YXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgotbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRv
bmVMYWJlbCwgc2xvd19wYXRoKQorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwg
c2xvd1BhdGgpCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwg
dDAKICAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFi
ZWwKICAgICBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgpCi0gICAgY0NhbGwyKHNsb3dfcGF0aCwgY2Zy
LCBQQykgICAjIFRoaXMgc2xvd19wYXRoIGhhcyBhIHNpbXBsZSBwcm90b2NvbDogdDAgPSAwID0+
IG5vIGVycm9yLCB0MCAhPSAwID0+IGVycm9yCi0gICAgYnRpeiB0MCwgLmlzQXJpdHlGaXh1cE5l
ZWRlZAorICAgIGNDYWxsMihzbG93UGF0aCwgY2ZyLCBQQykgICAjIFRoaXMgc2xvd1BhdGggaGFz
IHRoZSBwcm90b2NvbDogdDAgPSAwID0+IG5vIGVycm9yLCB0MCAhPSAwID0+IGVycm9yCisgICAg
YnRpeiB0MCwgLm5vRXJyb3IKICAgICBtb3ZlIHQxLCBjZnIgICAjIHQxIGNvbnRhaW5zIGNhbGxl
ciBmcmFtZQogICAgIGptcCBfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZQog
Ci0uaXNBcml0eUZpeHVwTmVlZGVkOgorLm5vRXJyb3I6CisgICAgIyB0MSBwb2ludHMgdG8gQXJp
dHlDaGVja0RhdGEuCisgICAgbG9hZHAgQ29tbW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YTo6
dGh1bmtUb0NhbGxbdDFdLCB0MgorICAgIGJ0cHogdDIsIC5wcm9jZWVkSW5saW5lCisgICAgCisg
ICAgbG9hZHAgQ29tbW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YTo6cmV0dXJuUENbdDFdLCB0
NQorICAgIGxvYWRwIENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVja0RhdGE6OnBhZGRlZFN0YWNr
U3BhY2VbdDFdLCB0MAorICAgIGNhbGwgdDIKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAg
ICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MAorICAgICAgICBsb2FkcCBbdDBdLCB0MAorICAgIGVu
ZAorICAgIGptcCAuY29udGludWUKKworLnByb2NlZWRJbmxpbmU6CisgICAgbG9hZGkgQ29tbW9u
U2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YTo6cGFkZGVkU3RhY2tTcGFjZVt0MV0sIHQxCiAgICAg
YnRpeiB0MSwgLmNvbnRpbnVlCiAKLSAgICAvLyBNb3ZlIGZyYW1lIHVwICJ0MSIgc2xvdHMKKyAg
ICAvLyBNb3ZlIGZyYW1lIHVwICJ0MSAqIDIiIHNsb3RzCisgICAgbHNoaWZ0cCAxLCB0MQogICAg
IG5lZ3EgdDEKICAgICBtb3ZlIGNmciwgdDMKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJn
dW1lbnRDb3VudFtjZnJdLCB0MgpAQCAtMTczMSw3ICsxNzQ3LDcgQEAgbWFjcm8gZG9DYWxsKHNs
b3dQYXRoKQogICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCiAg
ICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KICAgICBhZGRw
IENhbGxlckZyYW1lQW5kUENTaXplLCB0MwotICAgIGNhbGxUYXJnZXRGdW5jdGlvbih0MSx0MykK
KyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24odDEsIHQzKQogCiAub3BDYWxsU2xvdzoKICAgICBzbG93
UGF0aEZvckNhbGwoc2xvd1BhdGgpCkBAIC0xOTAzLDkgKzE5MTksOSBAQCBtYWNybyBuYXRpdmVD
YWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2ZmCiAgICAgICAgIGxvYWRwIENhbGxlckZyYW1lW2Nm
cl0sIHQwCiAgICAgICAgIGxvYWRxIFNjb3BlQ2hhaW5bdDBdLCB0MQogICAgICAgICBzdG9yZXEg
dDEsIFNjb3BlQ2hhaW5bY2ZyXQotICAgICAgICBtb3ZlIGNmciwgdDUgICMgdDUgPSByZGkKLSAg
ICAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQ0ICMgdDQgPSByc2kKLSAgICAgICAgbG9hZHAgSlNG
dW5jdGlvbjo6bV9leGVjdXRhYmxlW3Q0XSwgdDEKKyAgICAgICAgbW92ZSBjZnIsIHQ0ICAjIHQ0
ID0gcmRpCisgICAgICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0NSAjIHQ1ID0gcnNpCisgICAgICAg
IGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0NV0sIHQxCiAgICAgICAgIGNoZWNrU3Rh
Y2tQb2ludGVyQWxpZ25tZW50KHQzLCAweGRlYWQwMDAxKQogICAgICAgICBjYWxsIGV4ZWN1dGFi
bGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQogICAgICAgICBsb2FkcCBTY29wZUNoYWluW2Nmcl0sIHQz
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNjA4OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1
LDcgQEAgaWYgSlNWQUxVRTY0CiAgICAgIyAgIHRvIEMgZnVuY3Rpb25zLgogICAgICMgLSBDIGNh
bGxzIGFyZSBzdGlsbCBnaXZlbiB0aGUgSW5zdHJ1Y3Rpb24qIHJhdGhlciB0aGFuIHRoZSBQQyBp
bmRleC4KICAgICAjICAgVGhpcyByZXF1aXJlcyBhbiBhZGQgYmVmb3JlIHRoZSBjYWxsLCBhbmQg
YSBzdWIgYWZ0ZXIuCi0gICAgY29uc3QgUEMgPSB0NAorICAgIGNvbnN0IFBDID0gdDUKICAgICBj
b25zdCBQQiA9IHQ2CiAgICAgY29uc3QgdGFnVHlwZU51bWJlciA9IGNzcjEKICAgICBjb25zdCB0
YWdNYXNrID0gY3NyMgpAQCAtMTEzLDcgKzExMyw3IEBAIGlmIEpTVkFMVUU2NAogICAgIGVuZAog
CiBlbHNlCi0gICAgY29uc3QgUEMgPSB0NAorICAgIGNvbnN0IFBDID0gdDUKICAgICBtYWNybyBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob2Zmc2V0LCBkZXN0KQogICAgICAgICBsb2FkaXMgb2Zmc2V0
ICogNFtQQ10sIGRlc3QKICAgICBlbmQKQEAgLTQ4MSwxMSArNDgxLDExIEBAIF9jYWxsVG9OYXRp
dmVGdW5jdGlvbjoKICMgdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0qIHZtKQogX3Nhbml0aXpl
U3RhY2tGb3JWTToKICAgICBpZiBYODZfNjQKLSAgICAgICAgY29uc3Qgdm0gPSB0NQorICAgICAg
ICBjb25zdCB2bSA9IHQ0CiAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSB0MQogICAgICAgICBjb25z
dCB6ZXJvVmFsdWUgPSB0MAogICAgIGVsc2lmIFg4NgotICAgICAgICBjb25zdCB2bSA9IHQ1Cisg
ICAgICAgIGNvbnN0IHZtID0gdDQKICAgICAgICAgY29uc3QgYWRkcmVzcyA9IHQxCiAgICAgICAg
IGNvbnN0IHplcm9WYWx1ZSA9IHQwCiAgICAgZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMTYwODkyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsMTUgKzE1MCwx
NSBAQCBjbGFzcyBSZWdpc3RlcklECiAgICAgICAgIHdoZW4gInQ0IgogICAgICAgICAgICAgY2Fz
ZSBraW5kCiAgICAgICAgICAgICB3aGVuIDpieXRlCi0gICAgICAgICAgICAgICAgIiVzaWwiCisg
ICAgICAgICAgICAgICAgIiVkaWwiCiAgICAgICAgICAgICB3aGVuIDpoYWxmCi0gICAgICAgICAg
ICAgICAgIiVzaSIKKyAgICAgICAgICAgICAgICAiJWRpIgogICAgICAgICAgICAgd2hlbiA6aW50
Ci0gICAgICAgICAgICAgICAgIiVlc2kiCisgICAgICAgICAgICAgICAgIiVlZGkiCiAgICAgICAg
ICAgICB3aGVuIDpwdHIKLSAgICAgICAgICAgICAgICBpc1g2NCA/ICIlcnNpIiA6ICIlZXNpIgor
ICAgICAgICAgICAgICAgIGlzWDY0ID8gIiVyZGkiIDogIiVlZGkiCiAgICAgICAgICAgICB3aGVu
IDpxdWFkCi0gICAgICAgICAgICAgICAgaXNYNjQgPyAiJXJzaSIgOiByYWlzZQorICAgICAgICAg
ICAgICAgIGlzWDY0ID8gIiVyZGkiIDogcmFpc2UKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICByYWlzZQogICAgICAgICAgICAgZW5kCkBAIC0yMDYsMTUgKzIwNiwxNSBAQCBjbGFz
cyBSZWdpc3RlcklECiAgICAgICAgIHdoZW4gInQ1IgogICAgICAgICAgICAgY2FzZSBraW5kCiAg
ICAgICAgICAgICB3aGVuIDpieXRlCi0gICAgICAgICAgICAgICAgIiVkaWwiCisgICAgICAgICAg
ICAgICAgIiVzaWwiCiAgICAgICAgICAgICB3aGVuIDpoYWxmCi0gICAgICAgICAgICAgICAgIiVk
aSIKKyAgICAgICAgICAgICAgICAiJXNpIgogICAgICAgICAgICAgd2hlbiA6aW50Ci0gICAgICAg
ICAgICAgICAgIiVlZGkiCisgICAgICAgICAgICAgICAgIiVlc2kiCiAgICAgICAgICAgICB3aGVu
IDpwdHIKLSAgICAgICAgICAgICAgICBpc1g2NCA/ICIlcmRpIiA6ICIlZWRpIgorICAgICAgICAg
ICAgICAgIGlzWDY0ID8gIiVyc2kiIDogIiVlc2kiCiAgICAgICAgICAgICB3aGVuIDpxdWFkCi0g
ICAgICAgICAgICAgICAgaXNYNjQgPyAiJXJkaSIgOiByYWlzZQorICAgICAgICAgICAgICAgIGlz
WDY0ID8gIiVyc2kiIDogcmFpc2UKICAgICAgICAgICAgIGVuZAogICAgICAgICB3aGVuICJ0NiIK
ICAgICAgICAgICAgIHJhaXNlICJDYW5ub3QgdXNlICN7bmFtZX0gaW4gMzItYml0IFg4NiBhdCAj
e2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgaXNYNjQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTYwODky
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJM
RShMTElOVCkKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkFyaXR5Q2hlY2tG
YWlsUmV0dXJuVGh1bmtzLmgiCiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVQcm9maWxpbmcuaCIKQEAgLTE2OSwyOCAr
MTcwLDQyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDQUxMX0VORF9JTVBMKGNyRXhlYywg
Y3JDYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCitz
dGF0aWMgQ29tbW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YSogc2V0dXBBcml0eUNoZWNrRGF0
YShWTSYgdm0sIGludCBzbG90c1RvQWRkKQoreworICAgIENvbW1vblNsb3dQYXRoczo6QXJpdHlD
aGVja0RhdGEqIHJlc3VsdCA9IHZtLmFyaXR5Q2hlY2tEYXRhLmdldCgpOworICAgIHJlc3VsdC0+
cGFkZGVkU3RhY2tTcGFjZSA9IHNsb3RzVG9BZGQ7CisgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7
CisgICAgICAgIHJlc3VsdC0+dGh1bmtUb0NhbGwgPSB2bS5nZXRDVElTdHViKGFyaXR5Rml4dXAp
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICByZXN1bHQtPnJldHVyblBDID0g
dm0uYXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MtPnJldHVyblBDRm9yKHZtLCBzbG90c1RvQWRk
ICogc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9
IGVsc2UgeworICAgICAgICByZXN1bHQtPnRodW5rVG9DYWxsID0gMDsKKyAgICAgICAgcmVzdWx0
LT5yZXR1cm5QQyA9IDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgQkVHSU4oKTsKLSAgICBp
bnQgU2xvdHNUb0FkZCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmdm0u
aW50ZXJwcmV0ZXItPnN0YWNrKCksIENvZGVGb3JDYWxsKTsKLSAgICBpZiAoU2xvdHNUb0FkZCA8
IDApIHsKKyAgICBpbnQgc2xvdHNUb0FkZCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zv
cihleGVjLCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCksIENvZGVGb3JDYWxsKTsKKyAgICBpZiAo
c2xvdHNUb0FkZCA8IDApIHsKICAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CiAg
ICAgICAgIENvbW1vblNsb3dQYXRoczo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiAgICAgICAgIFJFVFVSTl9UV08oYml0d2lz
ZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CiAgICAgfQot
ICAgIFJFVFVSTl9UV08oMCwgcmVpbnRlcnByZXRfY2FzdDxFeGVjU3RhdGUqPihTbG90c1RvQWRk
KSk7CisgICAgUkVUVVJOX1RXTygwLCBzZXR1cEFyaXR5Q2hlY2tEYXRhKHZtLCBzbG90c1RvQWRk
KSk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykK
IHsKICAgICBCRUdJTigpOwotICAgIGludCBTbG90c1RvQWRkID0gQ29tbW9uU2xvd1BhdGhzOjph
cml0eUNoZWNrRm9yKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNvbnN0
cnVjdCk7Ci0gICAgaWYgKFNsb3RzVG9BZGQgPCAwKSB7CisgICAgaW50IHNsb3RzVG9BZGQgPSBD
b21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJnZtLmludGVycHJldGVyLT5zdGFj
aygpLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAoc2xvdHNUb0FkZCA8IDApIHsKICAgICAg
ICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6
aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihl
eGVjKSk7CiAgICAgICAgIFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CiAgICAgfQotICAgIFJFVFVSTl9UV08oMCwgcmVpbnRl
cnByZXRfY2FzdDxFeGVjU3RhdGUqPihTbG90c1RvQWRkKSk7CisgICAgUkVUVVJOX1RXTygwLCBz
ZXR1cEFyaXR5Q2hlY2tEYXRhKHZtLCBzbG90c1RvQWRkKSk7CiB9CiAKIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF90b3VjaF9lbnRyeSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxNjA4OTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDksNiArNDksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBDb21tb25TbG93
UGF0aHMgewogCitzdHJ1Y3QgQXJpdHlDaGVja0RhdGEgeworICAgIHVuc2lnbmVkIHBhZGRlZFN0
YWNrU3BhY2U7CisgICAgdm9pZCogdGh1bmtUb0NhbGw7CisgICAgdm9pZCogcmV0dXJuUEM7Cit9
OworCiBBTFdBWVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNT
dGFjayogc3RhY2ssIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBKU0Z1bmN0
aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKQEAgLTU4
LDE4ICs2NCwxOSBAQCBBTFdBWVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0CiAg
ICAgCiAgICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2Nr
LT5udW1QYXJhbWV0ZXJzKCkpOwogICAgIGludCBtaXNzaW5nQXJndW1lbnRDb3VudCA9IG5ld0Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0g
ICAgaW50IHBhZGRlZE1pc3NpbmdBcmd1bWVudENvdW50ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG1pc3NpbmdBcmd1bWVudENvdW50KTsKKyAg
ICBpbnQgbmVlZGVkU3RhY2tTcGFjZSA9IG1pc3NpbmdBcmd1bWVudENvdW50ICsgMTsgLy8gQWxs
b3cgc3BhY2UgdG8gc2F2ZSB0aGUgb3JpZ2luYWwgcmV0dXJuIFBDLgorICAgIGludCBwYWRkZWRT
dGFja1NwYWNlID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCksIG5lZWRlZFN0YWNrU3BhY2UpOwogCiAjaWYgRU5BQkxFKExMSU5UX0NMT09QKQotICAg
IGlmICghc3RhY2stPmdyb3coZXhlYy0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRNaXNzaW5nQXJndW1l
bnRDb3VudCkpCisgICAgaWYgKCFzdGFjay0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSAtIHBhc3Nl
ZFN0YWNrU3BhY2UpKQogICAgICAgICByZXR1cm4gLTE7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShzdGFjayk7Ci0gICAgaWYgKCFleGVjLT52bSgpLmlzU2FmZVRvUmVjdXJzZShwYWRkZWRNaXNz
aW5nQXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpKQorICAgIGlmICghZXhlYy0+dm0o
KS5pc1NhZmVUb1JlY3Vyc2UocGFkZGVkU3RhY2tTcGFjZSAqIHNpemVvZihSZWdpc3RlcikpKQog
ICAgICAgICByZXR1cm4gLTE7CiAjZW5kaWYgLy8gRU5BQkxFKExMSU5UX0NMT09QKQogCi0gICAg
cmV0dXJuIHBhZGRlZE1pc3NpbmdBcmd1bWVudENvdW50OworICAgIHJldHVybiBwYWRkZWRTdGFj
a1NwYWNlIC8gc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKTsKIH0KIAogaW5saW5lIGJvb2wgb3BJ
bihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHJvcE5hbWUsIEpTVmFsdWUgYmFzZVZhbCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrQWxpZ25tZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tBbGlnbm1lbnQuaAko
cmV2aXNpb24gMTYwODkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tB
bGlnbm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBTdGFj
a0FsaWdubWVudF9oCiAKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM4LDYgKzM5LDExIEBAIGlubGlu
ZSB1bnNpZ25lZCBzdGFja0FsaWdubWVudFJlZ2lzdGVycygKICAgICByZXR1cm4gc3RhY2tBbGln
bm1lbnRCeXRlcygpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKIH0KIAoraW5saW5lIHVuc2ln
bmVkIGxvZ1N0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkKK3sKKyAgICByZXR1cm4gV1RGOjpmYXN0
TG9nMihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBTdGFja0FsaWdubWVudF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxNjA4OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMyBAQAogI2luY2x1
ZGUgIlZNLmgiCiAKICNpbmNsdWRlICJBcmdMaXN0LmgiCisjaW5jbHVkZSAiQXJpdHlDaGVja0Zh
aWxSZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMu
aCIKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJERkdMb25nTGl2ZWRT
dGF0ZS5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiRGVidWdnZXJBY3Rp
dmF0aW9uLmgiCkBAIC0yNjYsNyArMjY4LDkgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBU
eXBlIGhlYXBUeXBlKQogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBqaXRTdHVicyA9IGFkb3B0UHRy
KG5ldyBKSVRUaHVua3MoKSk7CisgICAgYXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzPigpOwogI2VuZGlmCisgICAg
YXJpdHlDaGVja0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbW1vblNsb3dQYXRoczo6QXJpdHlD
aGVja0RhdGE+KCk7CiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBmdGxUaHVua3MgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZUTDo6VGh1bmtzPigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCShyZXZpc2lvbiAxNjA4OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCisgICAgY2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M7CiAgICAgY2xhc3MgQ29k
ZUJsb2NrOwogICAgIGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVy
czsKQEAgLTEwNCw2ICsxMDUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBUaHVua3M7
CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQorICAgIG5hbWVzcGFjZSBDb21tb25T
bG93UGF0aHMgeworICAgIHN0cnVjdCBBcml0eUNoZWNrRGF0YTsKKyAgICB9CiAKICAgICBzdHJ1
Y3QgSGFzaFRhYmxlOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKQEAgLTMzMiw3ICszMzYsMTMg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gaml0U3R1YnMtPmN0aVN0dWIo
dGhpcywgZ2VuZXJhdG9yKTsKICAgICAgICAgfQogICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiBn
ZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyk7Ci0jZW5kaWYKKyAgICAg
ICAgCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcz4g
YXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M7CisjaWYgQ1BVKFg4NikKKyAgICAgICAgdm9pZCog
Y3VycmVudFJldHVyblRodW5rUEM7CisjZW5kaWYgLy8gQ1BVKFg4NikKKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29tbW9uU2xvd1BhdGhzOjpBcml0eUNo
ZWNrRGF0YT4gYXJpdHlDaGVja0RhdGE7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCg==
</data>
<flag name="review"
          id="243464"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>