<?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>110035</bug_id>
          
          <creation_ts>2013-02-16 15:37:07 -0800</creation_ts>
          <short_desc>Remove support for bytecode comments, since it doesn&apos;t build, and hasn&apos;t been used in a while</short_desc>
          <delta_ts>2013-02-16 21:39:10 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>834847</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-16 15:37:07 -0800</bug_when>
    <thetext>Patch forthcoming.  Rubber stamped by Andreas Kling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834850</commentid>
    <comment_count>1</comment_count>
      <attachid>188734</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-16 15:38:38 -0800</bug_when>
    <thetext>Created attachment 188734
patch for landing

Making sure it doesn&apos;t break anyone before I land it.  Also giving people a chance to protest if anyone is super passionate about this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834897</commentid>
    <comment_count>2</comment_count>
      <attachid>188734</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-02-16 17:02:45 -0800</bug_when>
    <thetext>Comment on attachment 188734
patch for landing

Attachment 188734 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/16589715</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834901</commentid>
    <comment_count>3</comment_count>
      <attachid>188745</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-16 17:17:47 -0800</bug_when>
    <thetext>Created attachment 188745
patch for landing

Trying again.  I forgot to remove Comment.h from the build system files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834932</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-16 21:39:10 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/143122</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188734</attachid>
            <date>2013-02-16 15:38:38 -0800</date>
            <delta_ts>2013-02-16 17:17:47 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20883</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQzMTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDEzLTAyLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIHN1cHBvcnQgZm9yIGJ5dGVjb2RlIGNvbW1lbnRzLCBzaW5jZSBpdCBkb2Vzbid0IGJ1
aWxkLCBhbmQgaGFzbid0IGJlZW4gdXNlZCBpbiBhIHdoaWxlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMDM1CisKKyAgICAgICAgUnViYmVyIHN0
YW1wZWQgYnkgQW5kcmVhcyBLbGluZy4KKyAgICAgICAgCisgICAgICAgIFRoZXJlIGFyZSBvdGhl
ciB3YXlzIG9mIGFjaGlldmluZyB0aGUgc2FtZSBlZmZlY3QsIGxpa2UgYWRkaW5nIHByaW50IHN0
YXRlbWVudHMgdG8gdGhlIGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICAgICAgVGhlIGZhY3QgdGhh
dCB0aGlzIGZlYXR1cmUgZG9lc24ndCBidWlsZCBhbmQgbm9ib2R5IG5vdGljZWQgaW1wbGllcyB0
aGF0IGl0J3MgcHJvYmFibHkgbm90IGEgcG9wdWxhcgorICAgICAgICBmZWF0dXJlLiBBcyB3ZWxs
LCB0aGUgYW1vdW50IG9mIHdpcmluZyB0aGF0IHdhcyByZXF1aXJlZCBmb3IgaXQgd2FzIHF1aXRl
IGJpZyBjb25zaWRlcmluZyBpdHMgcmVsYXRpdmVseQorICAgICAgICBtb2Rlc3QgdXRpbGl0eS4K
KworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAg
ICAgKENvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29tbWVudC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0T3Bjb2RlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChCeXRlY29kZUdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzeW1ib2xUYWJsZSk6
CisKIDIwMTMtMDItMTYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggaW5kZW50YXRpb24gb2YgU3RydWN0dXJlLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNDMwMzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU2LDI3ICsxNTYsNiBAQCBzdGF0aWMgQ1N0cmluZyBpZE5hbWUoaW50IGlkMCwgY29uc3Qg
SWRlCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoaWRlbnQuc3RyaW5nKCksICIoQGlkIiwgU3RyaW5n
OjpudW1iZXIoaWQwKSwgIikiKS51dGY4KCk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24pCi17
Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgVmVjdG9yPEZyZXF1ZW50RXhpdFNpdGU+IGV4aXRT
aXRlcyA9IGV4aXRQcm9maWxlKCkuZXhpdFNpdGVzRm9yKGxvY2F0aW9uKTsKLSAgICBpZiAoIWV4
aXRTaXRlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgb3V0LnByaW50KCIgISEgZnJlcXVlbnQgZXhp
dHM6ICIpOwotICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBleGl0U2l0ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBvdXQucHJp
bnQoY29tbWEsIGV4aXRTaXRlc1tpXS5raW5kKCkpOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKLSNpZiBFTkFCTEUoQllURUNPREVfQ09NTUVOVFMpCi0gICAgY29uc3QgY2hhciog
Y29tbWVudCA9IGNvbW1lbnRGb3JCeXRlY29kZU9mZnNldChsb2NhdGlvbik7Ci0gICAgaWYgKGNv
bW1lbnQpCi0gICAgICAgIG91dC5wcmludGYoIlx0XHQgOyAlcyIsIGNvbW1lbnQpOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotI2VuZGlmCi0gICAgb3V0LnByaW50KCJcbiIp
OwotfQotCiBDU3RyaW5nIENvZGVCbG9jazo6cmVnaXN0ZXJOYW1lKEV4ZWNTdGF0ZSogZXhlYywg
aW50IHIpIGNvbnN0CiB7CiAgICAgaWYgKHIgPT0gbWlzc2luZ1RoaXNPYmplY3RNYXJrZXIoKSkK
QEAgLTE1MDYsNyArMTQ4NSwxOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50
U3RyZWFtCiAgICAgZHVtcFJhcmVDYXNlUHJvZmlsZShvdXQsICJzcGVjaWFsIGZhc3QgY2FzZTog
Iiwgc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGxvY2F0aW9uKSwgaGFz
UHJpbnRlZFByb2ZpbGluZyk7CiAjZW5kaWYKICAgICAKLSAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShvdXQsIGxvY2F0aW9uKTsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBWZWN0
b3I8RnJlcXVlbnRFeGl0U2l0ZT4gZXhpdFNpdGVzID0gZXhpdFByb2ZpbGUoKS5leGl0U2l0ZXNG
b3IobG9jYXRpb24pOworICAgIGlmICghZXhpdFNpdGVzLmlzRW1wdHkoKSkgeworICAgICAgICBv
dXQucHJpbnQoIiAhISBmcmVxdWVudCBleGl0czogIik7CisgICAgICAgIENvbW1hUHJpbnRlciBj
b21tYTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4aXRTaXRlcy5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZXhpdFNpdGVzW2ldLmtpbmQoKSk7
CisgICAgfQorI2Vsc2UgLy8gRU5BQkxFKERGR19KSVQpCisgICAgVU5VU0VEX1BBUkFNKGxvY2F0
aW9uKTsKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKyAgICBvdXQucHJpbnQoIlxuIik7CiB9
CiAKIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpCkBAIC0xNjY1LDkgKzE2NTUsNiBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsCiAgICAgLCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyKDApCiAgICAgLCBtX3Jlc29sdmVPcGVyYXRpb25zKG90aGVyLm1fcmVzb2x2ZU9wZXJhdGlv
bnMpCiAgICAgLCBtX3B1dFRvQmFzZU9wZXJhdGlvbnMob3RoZXIubV9wdXRUb0Jhc2VPcGVyYXRp
b25zKQotI2lmIEVOQUJMRShCWVRFQ09ERV9DT01NRU5UUykKLSAgICAsIG1fYnl0ZWNvZGVDb21t
ZW50SXRlcmF0b3IoMCkKLSNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgLCBtX2NhbkNvbXBp
bGVXaXRoREZHU3RhdGUoREZHOjpDYXBhYmlsaXR5TGV2ZWxOb3RTZXQpCiAjZW5kaWYKQEAgLTE3
MDYsOSArMTY5Myw2IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8K
ICAgICAsIG1fb3NyRXhpdENvdW50ZXIoMCkKICAgICAsIG1fb3B0aW1pemF0aW9uRGVsYXlDb3Vu
dGVyKDApCiAgICAgLCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKDApCi0jaWYgRU5BQkxF
KEJZVEVDT0RFX0NPTU1FTlRTKQotICAgICwgbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcigwKQot
I2VuZGlmCiB7CiAgICAgbV9nbG9iYWxEYXRhLT5zdGFydGVkQ29tcGlsaW5nKHRoaXMpOwogCkBA
IC0yNDc5LDgyICsyNDYzLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRXZWFrUmVm
ZXJlbgogI2VuZGlmICAgIAogfQogCi0jaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQotLy8g
RmluZHMgdGhlIGNvbW1lbnQgc3RyaW5nIGZvciB0aGUgc3BlY2lmaWVkIGJ5dGVjb2RlIG9mZnNl
dC9QQyBpcyBhdmFpbGFibGUuIAotY29uc3QgY2hhciogQ29kZUJsb2NrOjpjb21tZW50Rm9yQnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0gICAgQVNTRVJUKGJ5dGVj
b2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLQotICAgIFZlY3RvcjxDb21tZW50
PiYgY29tbWVudHMgPSBtX2J5dGVjb2RlQ29tbWVudHM7Ci0gICAgc2l6ZV90IG51bWJlck9mQ29t
bWVudHMgPSBjb21tZW50cy5zaXplKCk7Ci0gICAgY29uc3QgY2hhciogcmVzdWx0ID0gMDsKLQot
ICAgIGlmICghbnVtYmVyT2ZDb21tZW50cykKLSAgICAgICAgcmV0dXJuIDA7IC8vIE5vIGNvbW1l
bnRzIHRvIG1hdGNoIHdpdGguCi0KLSAgICAvLyBUaGUgbmV4dCBtYXRjaCBpcyBtb3N0IGxpa2Vs
eSB0aGUgbmV4dCBjb21tZW50IGluIHRoZSBsaXN0LgotICAgIC8vIERvIGEgcXVpY2sgY2hlY2sg
dG8gc2VlIGlmIHRoYXQgaXMgYSBtYXRjaCBmaXJzdC4KLSAgICAvLyBtX2J5dGVjb2RlQ29tbWVu
dEl0ZXJhdG9yIHNob3VsZCBhbHJlYWR5IGJlIHBvaW50aW5nIHRvIHRoZQotICAgIC8vIG5leHQg
Y29tbWVudCB3ZSBzaG91bGQgY2hlY2suCi0KLSAgICBBU1NFUlQobV9ieXRlY29kZUNvbW1lbnRJ
dGVyYXRvciA8IGNvbW1lbnRzLnNpemUoKSk7Ci0KLSAgICBzaXplX3QgaSA9IG1fYnl0ZWNvZGVD
b21tZW50SXRlcmF0b3I7Ci0gICAgc2l6ZV90IGNvbW1lbnRQQyA9IGNvbW1lbnRzW2ldLnBjOwot
ICAgIGlmIChjb21tZW50UEMgPT0gYnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgLy8gV2UndmUg
Z290IGEgbWF0Y2guIEFsbCBkb25lIQotICAgICAgICBtX2J5dGVjb2RlQ29tbWVudEl0ZXJhdG9y
ID0gaTsKLSAgICAgICAgcmVzdWx0ID0gY29tbWVudHNbaV0uc3RyaW5nOwotICAgIH0gZWxzZSBp
ZiAoY29tbWVudFBDID4gYnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgLy8gVGhlIGN1cnJlbnQg
Y29tbWVudCBpcyBhbHJlYWR5IGdyZWF0ZXIgdGhhbiB0aGUgcmVxdWVzdGVkIFBDLgotICAgICAg
ICAvLyBTdGFydCBzZWFyY2hpbmcgZnJvbSB0aGUgZmlyc3QgY29tbWVudC4KLSAgICAgICAgaSA9
IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgY3VycmVudCBjb21t
ZW50J3MgUEMgaXMgbGVzcyB0aGFuIHRoZSByZXF1ZXN0ZWQgUEMuCi0gICAgICAgIC8vIEhlbmNl
LCB3ZSBjYW4ganVzdCBzdGFydCBzZWFyY2hpbmcgZnJvbSB0aGUgbmV4dCBjb21tZW50IGluIHRo
ZQotICAgICAgICAvLyBsaXN0LgotICAgICAgICBpKys7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhl
IHJlc3VsdCBpcyBzdGlsbCBub3QgZm91bmQsIGRvIGEgbGluZWFyIHNlYXJjaCBpbiB0aGUgcmFu
Z2UKLSAgICAvLyB0aGF0IHdlJ3ZlIGRldGVybWluZWQgYWJvdmUuCi0gICAgaWYgKCFyZXN1bHQp
IHsKLSAgICAgICAgZm9yICg7IGkgPCBjb21tZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAg
ICAgY29tbWVudFBDID0gY29tbWVudHNbaV0ucGM7Ci0gICAgICAgICAgICBpZiAoY29tbWVudFBD
ID09IGJ5dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tbWVudHNb
aV0uc3RyaW5nOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKGNvbW1lbnRzW2ldLnBjID4gYnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgICAg
ICAgICAvLyBUaGUgY3VycmVudCBjb21tZW50IFBDIGlzIGFscmVhZHkgcGFzdCB0aGUgcmVxdWVz
dGVkCi0gICAgICAgICAgICAgICAgLy8gYnl0ZWNvZGVPZmZzZXQuIEhlbmNlLCB0aGVyZSBhcmUg
bm8gbW9yZSBwb3NzaWJsZQotICAgICAgICAgICAgICAgIC8vIG1hdGNoZXMuIEp1c3QgZmFpbC4K
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIC8vIFVwZGF0ZSB0aGUgaXRlcmF0b3IgdG8gcG9pbnQgdG8gdGhlIG5leHQgY29tbWVu
dC4KLSAgICBpZiAoKytpID49IG51bWJlck9mQ29tbWVudHMpIHsKLSAgICAgICAgLy8gQXQgbW9z
dCBwb2ludCB0byB0aGUgbGFzdCBjb21tZW50IGVudHJ5LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUK
LSAgICAgICAgLy8gbmV4dCB0aW1lIHdlIGNhbGwgdGhpcyBmdW5jdGlvbiwgdGhlIHF1aWNrIGNo
ZWNrcyB3aWxsIGF0IGxlYXN0Ci0gICAgICAgIC8vIGhhdmUgb25lIGVudHJ5IHRvIGNoZWNrIGFu
ZCBjYW4gZmFpbCBmYXN0IGlmIGFwcHJvcHJpYXRlLgotICAgICAgICBpID0gbnVtYmVyT2ZDb21t
ZW50cyAtIDE7Ci0gICAgfQotICAgIG1fYnl0ZWNvZGVDb21tZW50SXRlcmF0b3IgPSBpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGVDb21tZW50
cygpCi17Ci0gICAgVmVjdG9yPENvbW1lbnQ+JiBjb21tZW50cyA9IG1fYnl0ZWNvZGVDb21tZW50
czsKLSAgICBwcmludGYoIkNvbW1lbnRzIGZvciBjb2RlYmxvY2sgJXA6IHNpemUgJWx1XG4iLCB0
aGlzLCBjb21tZW50cy5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tbWVu
dHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHByaW50ZigiICAgICBwYyAlbHUgOiAnJXMnXG4iLCBj
b21tZW50c1tpXS5wYywgY29tbWVudHNbaV0uc3RyaW5nKTsKLSAgICBwcmludGYoIkVuZCBvZiBj
b21tZW50cyBmb3IgY29kZWJsb2NrICVwXG4iLCB0aGlzKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEVf
QllURUNPREVfQ09NTUVOVFMKLQogSGFuZGxlckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZvckJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIFJFTEVBU0VfQVNT
RVJUKGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE0MzAzMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKICNpbmNs
dWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKLSNpbmNsdWRlICJDb21t
ZW50LmgiCiAjaW5jbHVkZSAiQ29tcGFjdEpJVENvZGVNYXAuaCIKICNpbmNsdWRlICJERkdDb2Rl
QmxvY2tzLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCkBAIC03OSwzMCArNzgsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAot
Ly8gU2V0IEVOQUJMRV9CWVRFQ09ERV9DT01NRU5UUyB0byAxIHRvIGVuYWJsZSByZWNvcmRpbmcg
Ynl0ZWNvZGUgZ2VuZXJhdG9yCi0vLyBjb21tZW50cyBmb3IgdGhlIGJ5dGVjb2RlcyB0aGF0IGl0
IGdlbmVyYXRlcy4gVGhpcyB3aWxsIGFsbG93Ci0vLyBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgp
IHRvIHByb3ZpZGUgc29tZSBjb250ZXh0dWFsIGluZm8gYWJvdXQgdGhlIGJ5dGVjb2Rlcy4KLS8v
Ci0vLyBUaGUgd2F5IHRoaXMgY29tbWVudCBzeXN0ZW0gd29ya3MgaXMgYXMgZm9sbG93czoKLS8v
IDEuIFRoZSBCeXRlY29kZUdlbmVyYXRvciBjYWxscyBwcmVwZW5kQ29tbWVudCgpIHdpdGggYSBj
b25zdGFudCBjb21tZW50Ci0vLyAgICBzdHJpbmcgaW4gLnRleHQuIFRoZSBzdHJpbmcgbXVzdCBu
b3QgYmUgYSBzdGFjayBvciBoZWFwIGFsbG9jYXRlZAotLy8gICAgc3RyaW5nLgotLy8gMi4gV2hl
biB0aGUgQnl0ZWNvZGVHZW5lcmF0b3IncyBlbWl0T3Bjb2RlKCkgaXMgY2FsbGVkLCB0aGUgbGFz
dAotLy8gICAgcHJlcGVuZGVkIGNvbW1lbnQgd2lsbCBiZSByZWNvcmRlZCB3aXRoIHRoZSBQQyBv
ZiB0aGUgb3Bjb2RlIGJlaW5nCi0vLyAgICBlbWl0dGVkLiBUaGlzIGNvbW1lbnQgaXMgYmVpbmcg
cmVjb3JkZWQgaW4gdGhlIENvZGVCbG9jaydzCi0vLyAgICBtX2J5dGVjb2RlQ29tbWVudHMuCi0v
LyAzLiBXaGVuIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkgaXMgY2FsbGVkLCBpdCB3aWxsIHBh
aXIgdXAgdGhlIGNvbW1lbnRzIHdpdGgKLS8vICAgIHRoZWlyIGNvcnJlc3BvbmRpbmcgYnl0ZWNv
ZGVzIGJhc2VkIG9uIHRoZSBieXRlY29kZSBhbmQgY29tbWVudCdzCi0vLyAgICBQQy4gSWYgYSBt
YXRjaGluZyBwYWlyIGlzIGZvdW5kLCB0aGUgY29tbWVudCB3aWxsIGJlIHByaW50ZWQgYWZ0ZXIK
LS8vICAgIHRoZSBieXRlY29kZS4gSWYgbm90LCBubyBjb21tZW50IGlzIHByaW50ZWQuCi0vLwot
Ly8gTk9URTogRW5hYmxpbmcgdGhpcyB3aWxsIGNvbnN1bWUgYWRkaXRpb25hbCBtZW1vcnkgYXQg
cnVudGltZSB0byBzdG9yZQotLy8gdGhlIGNvbW1lbnRzLiBTaW5jZSB0aGVzZSBjb21tZW50cyBh
cmUgb25seSB1c2VmdWwgZm9yIFZNIGRlYnVnZ2luZwotLy8gKGFzIG9wcG9zZWQgdG8gYXBwIGRl
YnVnZ2luZyksIHRoaXMgZmVhdHVyZSBpcyB0byBiZSBkaXNhYmxlZCBieSBkZWZhdWx0LAotLy8g
YW5kIGNhbiBiZSBlbmFibGVkIGFzIG5lZWRlZCBmb3IgVk0gZGV2ZWxvcG1lbnQgdXNlIG9ubHku
Ci0KLSNkZWZpbmUgRU5BQkxFX0JZVEVDT0RFX0NPTU1FTlRTIDAKLQogbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOwpAQCAtMjAxLDEyICsxNzYsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBpbmRleCA+PSBtX251bVZhcnM7CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKFByaW50U3Ry
ZWFtJiwgaW50IGxvY2F0aW9uKTsKLSNpZiBFTkFCTEUoQllURUNPREVfQ09NTUVOVFMpCi0gICAg
ICAgIGNvbnN0IGNoYXIqIGNvbW1lbnRGb3JCeXRlY29kZU9mZnNldChQcmludFN0cmVhbSYsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGVDb21tZW50
cyhQcmludFN0cmVhbSYpOwotI2VuZGlmCi0KICAgICAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJG
b3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAgICAgICAgIGludCBs
aW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwogICAg
ICAgICB2b2lkIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCk7
CkBAIC00NDQsMTAgKzQxMyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZDb3VudGVk
QXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9u
czsgfQogICAgICAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVj
dGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogICAgICAgICAKLSNpZiBF
TkFCTEUoQllURUNPREVfQ09NTUVOVFMpCi0gICAgICAgIFZlY3RvcjxDb21tZW50PiYgYnl0ZWNv
ZGVDb21tZW50cygpIHsgcmV0dXJuIG1fYnl0ZWNvZGVDb21tZW50czsgfQotI2VuZGlmCi0KICAg
ICAgICAgc2l6ZV90IHByZWRpY3RlZE1hY2hpbmVDb2RlU2l6ZSgpOwogICAgICAgICAKICAgICAg
ICAgYm9vbCB1c2VzT3Bjb2RlKE9wY29kZUlEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db21tZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvbW1lbnQuaAkocmV2aXNpb24gMTQzMDMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvbW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzNyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
Ci0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENvbW1lbnRfaAotI2RlZmluZSBDb21tZW50X2gKLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLXN0cnVjdCBDb21tZW50IHsKLSAgICBzaXplX3QgcGM7Ci0gICAg
Y29uc3QgY2hhciogc3RyaW5nOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAv
LyBDb21tZW50X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxNDMwMzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJh
dG9yLmgiCiAKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIgotI2luY2x1
ZGUgIkNvbW1lbnQuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQWN0
aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTIzMCw5ICsyMjksNiBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwcmVzZXJ2ZUxhc3RWYXIoCiBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtTm9k
ZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBEZWJ1
Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlKQogICAgIDog
bV9zaG91bGRFbWl0RGVidWdIb29rcyhkZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJPbikKICAgICAs
IG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhwcm9maWxlck1vZGUgPT0gUHJvZmlsZXJPbikKLSNp
ZiBFTkFCTEUoQllURUNPREVfQ09NTUVOVFMpCi0gICAgLCBtX2N1cnJlbnRDb21tZW50U3RyaW5n
KDApCi0jZW5kaWYKICAgICAsIG1fc3ltYm9sVGFibGUoMCkKICAgICAsIG1fc2NvcGVOb2RlKHBy
b2dyYW1Ob2RlKQogICAgICwgbV9jb2RlQmxvY2soZ2xvYmFsRGF0YSwgY29kZUJsb2NrKQpAQCAt
MjYxLDcgKzI1Nyw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihKU0cK
IAogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBBbGxvY2F0ZSBzcGFj
ZSBmb3IgInRoaXMiCiAKLSAgICBwcmVwZW5kQ29tbWVudCgiZW50ZXJpbmcgUHJvZ3JhbSBibG9j
ayIpOwogICAgIGVtaXRPcGNvZGUob3BfZW50ZXIpOwogCiAgICAgY29uc3QgVmFyU3RhY2smIHZh
clN0YWNrID0gcHJvZ3JhbU5vZGUtPnZhclN0YWNrKCk7CkBAIC0yODIsOSArMjc3LDYgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpTRwogICAgIDogbV9zaG91bGRFbWl0
RGVidWdIb29rcyhkZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJPbikKICAgICAsIG1fc2hvdWxkRW1p
dFByb2ZpbGVIb29rcyhwcm9maWxlck1vZGUgPT0gUHJvZmlsZXJPbikKICAgICAsIG1fc3ltYm9s
VGFibGUoY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpKQotI2lmIEVOQUJMRShCWVRFQ09ERV9DT01N
RU5UUykKLSAgICAsIG1fY3VycmVudENvbW1lbnRTdHJpbmcoMCkKLSNlbmRpZgogICAgICwgbV9z
Y29wZU5vZGUoZnVuY3Rpb25Cb2R5KQogICAgICwgbV9jb2RlQmxvY2soZ2xvYmFsRGF0YSwgY29k
ZUJsb2NrKQogICAgICwgbV9hY3RpdmF0aW9uUmVnaXN0ZXIoMCkKQEAgLTMxMywxMSArMzA1LDkg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpTRwogICAgIG1fc3ltYm9s
VGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgbV9zeW1ib2xUYWJsZS0+c2V0UGFyYW1ldGVy
Q291bnRJbmNsdWRpbmdUaGlzKGZ1bmN0aW9uQm9keS0+cGFyYW1ldGVycygpLT5zaXplKCkgKyAx
KTsKIAotICAgIHByZXBlbmRDb21tZW50KCJlbnRlcmluZyBGdW5jdGlvbiBibG9jayIpOwogICAg
IGVtaXRPcGNvZGUob3BfZW50ZXIpOwogICAgIGlmIChtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2Nv
cGVDaGFpbigpKSB7CiAgICAgICAgIG1fYWN0aXZhdGlvblJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0g
ICAgICAgIHByZXBlbmRDb21tZW50KCJhY3RpdmF0aW9uIGZvciBGdWxsIFNjb3BlIENoYWluIik7
CiAgICAgICAgIGVtaXRJbml0TGF6eVJlZ2lzdGVyKG1fYWN0aXZhdGlvblJlZ2lzdGVyKTsKICAg
ICAgICAgbV9jb2RlQmxvY2stPnNldEFjdGl2YXRpb25SZWdpc3RlcihtX2FjdGl2YXRpb25SZWdp
c3Rlci0+aW5kZXgoKSk7CiAgICAgfQpAQCAtMzM0LDEzICszMjQsMTAgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpTRwogICAgICAgICBjb2RlQmxvY2stPnNldEFyZ3Vt
ZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIsIHVubW9kaWZpZWRBcmd1bWVudHNS
ZWdpc3Rlci0+aW5kZXgoKSA9PSBKU0M6OnVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihjb2Rl
QmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpKTsKIAotICAgICAgICBwcmVwZW5kQ29tbWVudCgi
YXJndW1lbnRzIGZvciBGdWxsIFNjb3BlIENoYWluIik7CiAgICAgICAgIGVtaXRJbml0TGF6eVJl
Z2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKTsKLSAgICAgICAgcHJlcGVuZENvbW1lbnQoInVubW9k
aWZpZWQgYXJndW1lbnRzIGZvciBGdWxsIFNjb3BlIENoYWluIik7CiAgICAgICAgIGVtaXRJbml0
TGF6eVJlZ2lzdGVyKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcik7CiAgICAgICAgIAogICAg
ICAgICBpZiAobV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7Ci0gICAgICAgICAgICBwcmVw
ZW5kQ29tbWVudCgiY3JlYXRlIGFyZ3VtZW50cyBmb3Igc3RyaWN0IG1vZGUiKTsKICAgICAgICAg
ICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2FyZ3VtZW50cyk7CiAgICAgICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoYXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkpOwogICAgICAgICB9CkBA
IC0zNDksNyArMzM2LDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpT
RwogICAgICAgICAvLyBpdCBmcm9tIGEgY2FsbCBmcmFtZS4gIEluIHRoZSBsb25nLXRlcm0gaXQg
c2hvdWxkIHN0b3AgZG9pbmcgdGhhdCAoPHJkYXI6Ly9wcm9ibGVtLzY5MTE4ODY+KSwKICAgICAg
ICAgLy8gYnV0IGZvciBub3cgd2UgZm9yY2UgZWFnZXIgY3JlYXRpb24gb2YgdGhlIGFyZ3VtZW50
cyBvYmplY3Qgd2hlbiBkZWJ1Z2dpbmcuCiAgICAgICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hv
b2tzKSB7Ci0gICAgICAgICAgICBwcmVwZW5kQ29tbWVudCgiY3JlYXRlIGFyZ3VtZW50cyBmb3Ig
ZGVidWcgaG9va3MiKTsKICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2FyZ3VtZW50
cyk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnRzUmVnaXN0ZXIt
PmluZGV4KCkpOwogICAgICAgICB9CkBAIC00MDEsMTIgKzM4NywxMCBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHCiAgICAgICAgICAgICBpZiAoZnVuY3Rpb25Cb2R5
LT5jYXB0dXJlcyhpZGVudCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1faGFzQ3JlYXRlZEFj
dGl2YXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgbV9oYXNDcmVhdGVkQWN0aXZhdGlvbiA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHByZXBlbmRDb21tZW50KCJhY3RpdmF0aW9uIGZv
ciBjYXB0dXJlZCB2YXJzIik7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfY3Jl
YXRlX2FjdGl2YXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobV9hY3RpdmF0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBtX2Z1bmN0aW9ucy5hZGQoaWRlbnQuaW1wbCgpKTsKLSAgICAgICAgICAg
ICAgICBwcmVwZW5kQ29tbWVudCgiY2FwdHVyZWQgZnVuY3Rpb24gdmFyIik7CiAgICAgICAgICAg
ICAgICAgZW1pdE5ld0Z1bmN0aW9uKGFkZFZhcihpZGVudCwgZmFsc2UpLCBmdW5jdGlvbik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQxOSw3ICs0MDMsNiBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHCiAgICAgYm9vbCBjYW5MYXppbHlDcmVhdGVGdW5j
dGlvbnMgPSAhZnVuY3Rpb25Cb2R5LT5uZWVkc0FjdGl2YXRpb25Gb3JNb3JlVGhhblZhcmlhYmxl
cygpICYmICFtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOwogICAgIGlmICghY2FuTGF6aWx5Q3JlYXRl
RnVuY3Rpb25zICYmICFtX2hhc0NyZWF0ZWRBY3RpdmF0aW9uKSB7CiAgICAgICAgIG1faGFzQ3Jl
YXRlZEFjdGl2YXRpb24gPSB0cnVlOwotICAgICAgICBwcmVwZW5kQ29tbWVudCgiY2Fubm90IGxh
emlseSBjcmVhdGUgZnVuY3Rpb25zIik7CiAgICAgICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2Fj
dGl2YXRpb24pOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9hY3RpdmF0aW9uUmVn
aXN0ZXItPmluZGV4KCkpOwogICAgIH0KQEAgLTQzNSw3ICs0MTgsNiBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmVnID0gYWRkVmFyKGlkZW50LCBmYWxzZSk7CiAgICAgICAgICAgICAvLyBEb24ndCBsYXpp
bHkgY3JlYXRlIGZ1bmN0aW9ucyB0aGF0IG92ZXJyaWRlIHRoZSBuYW1lICdhcmd1bWVudHMnCiAg
ICAgICAgICAgICAvLyBhcyB0aGlzIHdvdWxkIGNvbXBsaWNhdGUgbGF6eSBpbnN0YW50aWF0aW9u
IG9mIGFjdHVhbCBhcmd1bWVudHMuCi0gICAgICAgICAgICBwcmVwZW5kQ29tbWVudCgiYSBmdW5j
dGlvbiB0aGF0IG92ZXJyaWRlICdhcmd1bWVudHMnIik7CiAgICAgICAgICAgICBpZiAoIWNhbkxh
emlseUNyZWF0ZUZ1bmN0aW9ucyB8fCBpZGVudCA9PSBwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRz
KQogICAgICAgICAgICAgICAgIGVtaXROZXdGdW5jdGlvbihyZWcuZ2V0KCksIGZ1bmN0aW9uKTsK
ICAgICAgICAgICAgIGVsc2UgewpAQCAtNDc4LDcgKzQ2MCw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihKU0cKICAgICBhZGRDYWxsZWUoZnVuY3Rpb25Cb2R5LCBjYWxs
ZWVSZWdpc3Rlcik7CiAKICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIHByZXBl
bmRDb21tZW50KCIndGhpcycgYmVjYXVzZSB3ZSBhcmUgYSBDb25zdHJ1Y3RvciBmdW5jdGlvbiIp
OwogICAgICAgICBlbWl0Q3JlYXRlVGhpcygmbV90aGlzUmVnaXN0ZXIpOwogICAgIH0gZWxzZSBp
ZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgJiYgKGZ1bmN0aW9uQm9keS0+dXNlc1RoaXMo
KSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgbV9zaG91bGRFbWl0RGVidWdIb29rcykpIHsK
ICAgICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29k
ZShvcF9jb252ZXJ0X3RoaXMpOwpAQCAtNDkxLDkgKzQ3Miw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihKU0cKICAgICA6IG1fc2hvdWxkRW1pdERlYnVnSG9va3MoZGVi
dWdnZXJNb2RlID09IERlYnVnZ2VyT24pCiAgICAgLCBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3Mo
cHJvZmlsZXJNb2RlID09IFByb2ZpbGVyT24pCiAgICAgLCBtX3N5bWJvbFRhYmxlKGNvZGVCbG9j
ay0+c3ltYm9sVGFibGUoKSkKLSNpZiBFTkFCTEUoQllURUNPREVfQ09NTUVOVFMpCi0gICAgLCBt
X2N1cnJlbnRDb21tZW50U3RyaW5nKDApCi0jZW5kaWYKICAgICAsIG1fc2NvcGVOb2RlKGV2YWxO
b2RlKQogICAgICwgbV9jb2RlQmxvY2soZ2xvYmFsRGF0YSwgY29kZUJsb2NrKQogICAgICwgbV90
aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKQEAgLTUyMSw3ICs0
OTksNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHCiAgICAgbV9z
eW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYm
ICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFy
YW1ldGVycygxKTsKIAotICAgIHByZXBlbmRDb21tZW50KCJlbnRlcmluZyBFdmFsIGJsb2NrIik7
CiAgICAgZW1pdE9wY29kZShvcF9lbnRlcik7CiAKICAgICBjb25zdCBEZWNsYXJhdGlvblN0YWNr
czo6RnVuY3Rpb25TdGFjayYgZnVuY3Rpb25TdGFjayA9IGV2YWxOb2RlLT5mdW5jdGlvblN0YWNr
KCk7CkBAIC03MDQsMzEgKzY4MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0T3Bj
b2RlKE9wY29kCiAgICAgQVNTRVJUKG9wY29kZVBvc2l0aW9uIC0gbV9sYXN0T3Bjb2RlUG9zaXRp
b24gPT0gb3Bjb2RlTGVuZ3RoKG1fbGFzdE9wY29kZUlEKSB8fCBtX2xhc3RPcGNvZGVJRCA9PSBv
cF9lbmQpOwogICAgIG1fbGFzdE9wY29kZVBvc2l0aW9uID0gb3Bjb2RlUG9zaXRpb247CiAjZW5k
aWYKLSAgICBlbWl0Q29tbWVudCgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChvcGNvZGVJ
RCk7CiAgICAgbV9sYXN0T3Bjb2RlSUQgPSBvcGNvZGVJRDsKIH0KIAotI2lmIEVOQUJMRShCWVRF
Q09ERV9DT01NRU5UUykKLS8vIFJlY29yZCBhIGNvbW1lbnQgaW4gdGhlIENvZGVCbG9jaydzIGNv
bW1lbnRzIGxpc3QgZm9yIHRoZSBjdXJyZW50IG9wY29kZQotLy8gdGhhdCBpcyBhYm91dCB0byBi
ZSBlbWl0dGVkLgotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbW1lbnQoKQotewotICAg
IGlmIChtX2N1cnJlbnRDb21tZW50U3RyaW5nKSB7Ci0gICAgICAgIHNpemVfdCBvcGNvZGVQb3Np
dGlvbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKLSAgICAgICAgQ29tbWVudCBjb21tZW50ID0g
eyBvcGNvZGVQb3NpdGlvbiwgbV9jdXJyZW50Q29tbWVudFN0cmluZyB9OwotICAgICAgICBtX2Nv
ZGVCbG9jay0+Ynl0ZWNvZGVDb21tZW50cygpLmFwcGVuZChjb21tZW50KTsKLSAgICAgICAgbV9j
dXJyZW50Q29tbWVudFN0cmluZyA9IDA7Ci0gICAgfQotfQotCi0vLyBSZWdpc3RlciBhIGNvbW1l
bnQgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBuZXh0IG9wY29kZSB0aGF0IHdpbGwgYmUgZW1p
dHRlZC4KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXBlbmRDb21tZW50KGNvbnN0IGNoYXIq
IHN0cmluZykKLXsKLSAgICBtX2N1cnJlbnRDb21tZW50U3RyaW5nID0gc3RyaW5nOwotfQotI2Vu
ZGlmCi0KIFVubGlua2VkQXJyYXlQcm9maWxlIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdBcnJheVBy
b2ZpbGUoKQogewogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJ
KHJldmlzaW9uIDE0MzAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTA5LDE4ICs1MDksNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGFiZWw7
CiAgICAgICAgIAotI2lmIEVOQUJMRShCWVRFQ09ERV9DT01NRU5UUykKLSAgICAgICAgLy8gUmVj
b3JkIGEgY29tbWVudCBpbiB0aGUgQ29kZUJsb2NrJ3MgY29tbWVudHMgbGlzdCBmb3IgdGhlIGN1
cnJlbnQKLSAgICAgICAgLy8gb3Bjb2RlIHRoYXQgaXMgYWJvdXQgdG8gYmUgZW1pdHRlZC4KLSAg
ICAgICAgdm9pZCBlbWl0Q29tbWVudCgpOwotICAgICAgICAvLyBSZWdpc3RlciBhIGNvbW1lbnQg
dG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBuZXh0IG9wY29kZSB0aGF0IHdpbGwKLSAgICAgICAg
Ly8gYmUgZW1pdHRlZC4KLSAgICAgICAgdm9pZCBwcmVwZW5kQ29tbWVudChjb25zdCBjaGFyKiBz
dHJpbmcpOwotI2Vsc2UKLSAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIGVtaXRDb21tZW50KCkg
eyB9Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwcmVwZW5kQ29tbWVudChjb25zdCBjaGFy
KikgeyB9Ci0jZW5kaWYKLQogICAgICAgICB2b2lkIGVtaXRPcGNvZGUoT3Bjb2RlSUQpOwogICAg
ICAgICBVbmxpbmtlZEFycmF5QWxsb2NhdGlvblByb2ZpbGUgbmV3QXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZSgpOwogICAgICAgICBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIG5ld09iamVj
dEFsbG9jYXRpb25Qcm9maWxlKCk7CkBAIC02MjEsOSArNjA5LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgeyBy
ZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KIAogICAgICAgICBTaGFyZWRTeW1ib2xUYWJsZSYgc3lt
Ym9sVGFibGUoKSB7IHJldHVybiAqbV9zeW1ib2xUYWJsZTsgfQotI2lmIEVOQUJMRShCWVRFQ09E
RV9DT01NRU5UUykKLSAgICAgICAgVmVjdG9yPENvbW1lbnQ+JiBjb21tZW50cygpIHsgcmV0dXJu
IG1fY29tbWVudHM7IH0KLSNlbmRpZgogCiAgICAgICAgIGJvb2wgc2hvdWxkT3B0aW1pemVMb2Nh
bHMoKQogICAgICAgICB7CkBAIC02NjMsMTEgKzY0OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBtX3N5bWJvbFRhYmxlOwogCi0jaWYgRU5BQkxFKEJZ
VEVDT0RFX0NPTU1FTlRTKQotICAgICAgICBWZWN0b3I8Q29tbWVudD4gbV9jb21tZW50czsKLSAg
ICAgICAgY29uc3QgY2hhciAqbV9jdXJyZW50Q29tbWVudFN0cmluZzsKLSNlbmRpZgotCiAgICAg
ICAgIFNjb3BlTm9kZSogbV9zY29wZU5vZGU7CiAgICAgICAgIFN0cm9uZzxVbmxpbmtlZENvZGVC
bG9jaz4gbV9jb2RlQmxvY2s7CiAK
</data>
<flag name="commit-queue"
          id="208949"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188745</attachid>
            <date>2013-02-16 17:17:47 -0800</date>
            <delta_ts>2013-02-16 17:17:47 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>23768</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQzMTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDEzLTAyLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIHN1cHBvcnQgZm9yIGJ5dGVjb2RlIGNvbW1lbnRzLCBzaW5jZSBpdCBkb2Vzbid0IGJ1
aWxkLCBhbmQgaGFzbid0IGJlZW4gdXNlZCBpbiBhIHdoaWxlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMDM1CisKKyAgICAgICAgUnViYmVyIHN0
YW1wZWQgYnkgQW5kcmVhcyBLbGluZy4KKyAgICAgICAgCisgICAgICAgIFRoZXJlIGFyZSBvdGhl
ciB3YXlzIG9mIGFjaGlldmluZyB0aGUgc2FtZSBlZmZlY3QsIGxpa2UgYWRkaW5nIHByaW50IHN0
YXRlbWVudHMgdG8gdGhlIGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICAgICAgVGhlIGZhY3QgdGhh
dCB0aGlzIGZlYXR1cmUgZG9lc24ndCBidWlsZCBhbmQgbm9ib2R5IG5vdGljZWQgaW1wbGllcyB0
aGF0IGl0J3MgcHJvYmFibHkgbm90IGEgcG9wdWxhcgorICAgICAgICBmZWF0dXJlLiBBcyB3ZWxs
LCB0aGUgYW1vdW50IG9mIHdpcmluZyB0aGF0IHdhcyByZXF1aXJlZCBmb3IgaXQgd2FzIHF1aXRl
IGJpZyBjb25zaWRlcmluZyBpdHMgcmVsYXRpdmVseQorICAgICAgICBtb2Rlc3QgdXRpbGl0eS4K
KworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAg
ICAgKENvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29tbWVudC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0T3Bjb2RlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChCeXRlY29kZUdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzeW1ib2xUYWJsZSk6
CisKIDIwMTMtMDItMTYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggaW5kZW50YXRpb24gb2YgU3RydWN0dXJlLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDMwMzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcg
KzEwNSw2IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tXaXRoSklUVHlwZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlT3JpZ2luLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b21tZW50LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0Lmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qCShyZXZpc2lvbiAxNDMwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTc5NCwxMCArMTc5NCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXENvbW1lbnQuaCIKLQkJCQk+
Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVc
RXZhbENvZGVDYWNoZS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDMwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTc2Niw3ICsxNzY2LDYgQEAKIAkJRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50
Q0xvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDTG9vcC5oOyBw
YXRoID0gbGxpbnQvTExJbnRDTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk1JbnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1JbnNwZWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkVCNjNBQTIxNTlCOURBMzAwODkzMkE2IC8qIENvbW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRUQyODdCMTE1RUM5QTU3MDBEQTgxNjEgLyogTExJbnRPcGNv
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRPcGNvZGUuaDsgcGF0
aCA9IGxsaW50L0xMSW50T3Bjb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBF
bmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKQEAgLTI4MTYsNyArMjgxNSw2IEBACiAJ
CQkJMEZCRDdFNjcxNDQ3OTk4RjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCAqLywKIAkJCQkwRjhG
OTQzRjE2Njc2MzJEMDBENjE5NzEgLyogQ29kZVR5cGUuY3BwICovLAogCQkJCTBGMEI4M0E1MTRC
Q0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovLAotCQkJCUZFQjYzQUEyMTU5QjlEQTMwMDg5
MzJBNiAvKiBDb21tZW50LmggKi8sCiAJCQkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERh
dGFGb3JtYXQuaCAqLywKIAkJCQkwRkJDMEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFBy
b2ZpbGUuY3BwICovLAogCQkJCTBGQkMwQUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJv
ZmlsZS5oICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHJldmlzaW9uIDE0MzAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMjcgKzE1Niw2IEBAIHN0
YXRpYyBDU3RyaW5nIGlkTmFtZShpbnQgaWQwLCBjb25zdCBJZGUKICAgICByZXR1cm4gbWFrZVN0
cmluZyhpZGVudC5zdHJpbmcoKSwgIihAaWQiLCBTdHJpbmc6Om51bWJlcihpZDApLCAiKSIpLnV0
ZjgoKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbikKLXsKLSNpZiBFTkFCTEUoREZHX0pJVCkK
LSAgICBWZWN0b3I8RnJlcXVlbnRFeGl0U2l0ZT4gZXhpdFNpdGVzID0gZXhpdFByb2ZpbGUoKS5l
eGl0U2l0ZXNGb3IobG9jYXRpb24pOwotICAgIGlmICghZXhpdFNpdGVzLmlzRW1wdHkoKSkgewot
ICAgICAgICBvdXQucHJpbnQoIiAhISBmcmVxdWVudCBleGl0czogIik7Ci0gICAgICAgIENvbW1h
UHJpbnRlciBjb21tYTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4aXRTaXRl
cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZXhpdFNpdGVzW2ld
LmtpbmQoKSk7Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotI2lmIEVOQUJMRShC
WVRFQ09ERV9DT01NRU5UUykKLSAgICBjb25zdCBjaGFyKiBjb21tZW50ID0gY29tbWVudEZvckJ5
dGVjb2RlT2Zmc2V0KGxvY2F0aW9uKTsKLSAgICBpZiAoY29tbWVudCkKLSAgICAgICAgb3V0LnBy
aW50ZigiXHRcdCA7ICVzIiwgY29tbWVudCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShsb2Nh
dGlvbik7Ci0jZW5kaWYKLSAgICBvdXQucHJpbnQoIlxuIik7Ci19Ci0KIENTdHJpbmcgQ29kZUJs
b2NrOjpyZWdpc3Rlck5hbWUoRXhlY1N0YXRlKiBleGVjLCBpbnQgcikgY29uc3QKIHsKICAgICBp
ZiAociA9PSBtaXNzaW5nVGhpc09iamVjdE1hcmtlcigpKQpAQCAtMTUwNiw3ICsxNDg1LDE4IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAgICBkdW1wUmFyZUNh
c2VQcm9maWxlKG91dCwgInNwZWNpYWwgZmFzdCBjYXNlOiAiLCBzcGVjaWFsRmFzdENhc2VQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQobG9jYXRpb24pLCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICNl
bmRpZgogICAgIAotICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRp
b24pOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPiBl
eGl0U2l0ZXMgPSBleGl0UHJvZmlsZSgpLmV4aXRTaXRlc0Zvcihsb2NhdGlvbik7CisgICAgaWYg
KCFleGl0U2l0ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIG91dC5wcmludCgiICEhIGZyZXF1ZW50
IGV4aXRzOiAiKTsKKyAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZXhpdFNpdGVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCBleGl0U2l0ZXNbaV0ua2luZCgpKTsKKyAgICB9CisjZWxzZSAvLyBFTkFC
TEUoREZHX0pJVCkKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQorICAgIG91dC5wcmludCgiXG4iKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKQEAg
LTE2NjUsOSArMTY1NSw2IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1Rh
ZywKICAgICAsIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoMCkKICAgICAsIG1fcmVzb2x2
ZU9wZXJhdGlvbnMob3RoZXIubV9yZXNvbHZlT3BlcmF0aW9ucykKICAgICAsIG1fcHV0VG9CYXNl
T3BlcmF0aW9ucyhvdGhlci5tX3B1dFRvQmFzZU9wZXJhdGlvbnMpCi0jaWYgRU5BQkxFKEJZVEVD
T0RFX0NPTU1FTlRTKQotICAgICwgbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcigwKQotI2VuZGlm
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAsIG1fY2FuQ29tcGlsZVdpdGhERkdTdGF0ZShERkc6OkNh
cGFiaWxpdHlMZXZlbE5vdFNldCkKICNlbmRpZgpAQCAtMTcwNiw5ICsxNjkzLDYgQEAgQ29kZUJs
b2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgICwgbV9vc3JFeGl0Q291bnRl
cigwKQogICAgICwgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoMCkKICAgICAsIG1fcmVvcHRp
bWl6YXRpb25SZXRyeUNvdW50ZXIoMCkKLSNpZiBFTkFCTEUoQllURUNPREVfQ09NTUVOVFMpCi0g
ICAgLCBtX2J5dGVjb2RlQ29tbWVudEl0ZXJhdG9yKDApCi0jZW5kaWYKIHsKICAgICBtX2dsb2Jh
bERhdGEtPnN0YXJ0ZWRDb21waWxpbmcodGhpcyk7CiAKQEAgLTI0NzksODIgKzI0NjMsNiBAQCB2
b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFdlYWtSZWZlcmVuCiAjZW5kaWYgICAgCiB9CiAK
LSNpZiBFTkFCTEUoQllURUNPREVfQ09NTUVOVFMpCi0vLyBGaW5kcyB0aGUgY29tbWVudCBzdHJp
bmcgZm9yIHRoZSBzcGVjaWZpZWQgYnl0ZWNvZGUgb2Zmc2V0L1BDIGlzIGF2YWlsYWJsZS4gCi1j
b25zdCBjaGFyKiBDb2RlQmxvY2s6OmNvbW1lbnRGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCkKLXsKLSAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlv
bnMoKS5zaXplKCkpOwotCi0gICAgVmVjdG9yPENvbW1lbnQ+JiBjb21tZW50cyA9IG1fYnl0ZWNv
ZGVDb21tZW50czsKLSAgICBzaXplX3QgbnVtYmVyT2ZDb21tZW50cyA9IGNvbW1lbnRzLnNpemUo
KTsKLSAgICBjb25zdCBjaGFyKiByZXN1bHQgPSAwOwotCi0gICAgaWYgKCFudW1iZXJPZkNvbW1l
bnRzKQotICAgICAgICByZXR1cm4gMDsgLy8gTm8gY29tbWVudHMgdG8gbWF0Y2ggd2l0aC4KLQot
ICAgIC8vIFRoZSBuZXh0IG1hdGNoIGlzIG1vc3QgbGlrZWx5IHRoZSBuZXh0IGNvbW1lbnQgaW4g
dGhlIGxpc3QuCi0gICAgLy8gRG8gYSBxdWljayBjaGVjayB0byBzZWUgaWYgdGhhdCBpcyBhIG1h
dGNoIGZpcnN0LgotICAgIC8vIG1fYnl0ZWNvZGVDb21tZW50SXRlcmF0b3Igc2hvdWxkIGFscmVh
ZHkgYmUgcG9pbnRpbmcgdG8gdGhlCi0gICAgLy8gbmV4dCBjb21tZW50IHdlIHNob3VsZCBjaGVj
ay4KLQotICAgIEFTU0VSVChtX2J5dGVjb2RlQ29tbWVudEl0ZXJhdG9yIDwgY29tbWVudHMuc2l6
ZSgpKTsKLQotICAgIHNpemVfdCBpID0gbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcjsKLSAgICBz
aXplX3QgY29tbWVudFBDID0gY29tbWVudHNbaV0ucGM7Ci0gICAgaWYgKGNvbW1lbnRQQyA9PSBi
eXRlY29kZU9mZnNldCkgewotICAgICAgICAvLyBXZSd2ZSBnb3QgYSBtYXRjaC4gQWxsIGRvbmUh
Ci0gICAgICAgIG1fYnl0ZWNvZGVDb21tZW50SXRlcmF0b3IgPSBpOwotICAgICAgICByZXN1bHQg
PSBjb21tZW50c1tpXS5zdHJpbmc7Ci0gICAgfSBlbHNlIGlmIChjb21tZW50UEMgPiBieXRlY29k
ZU9mZnNldCkgewotICAgICAgICAvLyBUaGUgY3VycmVudCBjb21tZW50IGlzIGFscmVhZHkgZ3Jl
YXRlciB0aGFuIHRoZSByZXF1ZXN0ZWQgUEMuCi0gICAgICAgIC8vIFN0YXJ0IHNlYXJjaGluZyBm
cm9tIHRoZSBmaXJzdCBjb21tZW50LgotICAgICAgICBpID0gMDsKLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBPdGhlcndpc2UsIHRoZSBjdXJyZW50IGNvbW1lbnQncyBQQyBpcyBsZXNzIHRoYW4g
dGhlIHJlcXVlc3RlZCBQQy4KLSAgICAgICAgLy8gSGVuY2UsIHdlIGNhbiBqdXN0IHN0YXJ0IHNl
YXJjaGluZyBmcm9tIHRoZSBuZXh0IGNvbW1lbnQgaW4gdGhlCi0gICAgICAgIC8vIGxpc3QuCi0g
ICAgICAgIGkrKzsKLSAgICB9Ci0KLSAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIHN0aWxsIG5vdCBm
b3VuZCwgZG8gYSBsaW5lYXIgc2VhcmNoIGluIHRoZSByYW5nZQotICAgIC8vIHRoYXQgd2UndmUg
ZGV0ZXJtaW5lZCBhYm92ZS4KLSAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICBmb3IgKDsgaSA8
IGNvbW1lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBjb21tZW50UEMgPSBjb21tZW50
c1tpXS5wYzsKLSAgICAgICAgICAgIGlmIChjb21tZW50UEMgPT0gYnl0ZWNvZGVPZmZzZXQpIHsK
LSAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21tZW50c1tpXS5zdHJpbmc7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY29tbWVudHNbaV0u
cGMgPiBieXRlY29kZU9mZnNldCkgewotICAgICAgICAgICAgICAgIC8vIFRoZSBjdXJyZW50IGNv
bW1lbnQgUEMgaXMgYWxyZWFkeSBwYXN0IHRoZSByZXF1ZXN0ZWQKLSAgICAgICAgICAgICAgICAv
LyBieXRlY29kZU9mZnNldC4gSGVuY2UsIHRoZXJlIGFyZSBubyBtb3JlIHBvc3NpYmxlCi0gICAg
ICAgICAgICAgICAgLy8gbWF0Y2hlcy4gSnVzdCBmYWlsLgotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVXBkYXRlIHRoZSBp
dGVyYXRvciB0byBwb2ludCB0byB0aGUgbmV4dCBjb21tZW50LgotICAgIGlmICgrK2kgPj0gbnVt
YmVyT2ZDb21tZW50cykgewotICAgICAgICAvLyBBdCBtb3N0IHBvaW50IHRvIHRoZSBsYXN0IGNv
bW1lbnQgZW50cnkuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZQotICAgICAgICAvLyBuZXh0IHRpbWUg
d2UgY2FsbCB0aGlzIGZ1bmN0aW9uLCB0aGUgcXVpY2sgY2hlY2tzIHdpbGwgYXQgbGVhc3QKLSAg
ICAgICAgLy8gaGF2ZSBvbmUgZW50cnkgdG8gY2hlY2sgYW5kIGNhbiBmYWlsIGZhc3QgaWYgYXBw
cm9wcmlhdGUuCi0gICAgICAgIGkgPSBudW1iZXJPZkNvbW1lbnRzIC0gMTsKLSAgICB9Ci0gICAg
bV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvciA9IGk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZUNvbW1lbnRzKCkKLXsKLSAgICBWZWN0b3I8Q29t
bWVudD4mIGNvbW1lbnRzID0gbV9ieXRlY29kZUNvbW1lbnRzOwotICAgIHByaW50ZigiQ29tbWVu
dHMgZm9yIGNvZGVibG9jayAlcDogc2l6ZSAlbHVcbiIsIHRoaXMsIGNvbW1lbnRzLnNpemUoKSk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb21tZW50cy5zaXplKCk7ICsraSkKLSAgICAg
ICAgcHJpbnRmKCIgICAgIHBjICVsdSA6ICclcydcbiIsIGNvbW1lbnRzW2ldLnBjLCBjb21tZW50
c1tpXS5zdHJpbmcpOwotICAgIHByaW50ZigiRW5kIG9mIGNvbW1lbnRzIGZvciBjb2RlYmxvY2sg
JXBcbiIsIHRoaXMpOwotfQotI2VuZGlmIC8vIEVOQUJMRV9CWVRFQ09ERV9DT01NRU5UUwotCiBI
YW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoYnl0ZWNvZGVPZmZzZXQgPCBp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTQzMDMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBA
CiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNp
bmNsdWRlICJDb2RlVHlwZS5oIgotI2luY2x1ZGUgIkNvbW1lbnQuaCIKICNpbmNsdWRlICJDb21w
YWN0SklUQ29kZU1hcC5oIgogI2luY2x1ZGUgIkRGR0NvZGVCbG9ja3MuaCIKICNpbmNsdWRlICJE
RkdDb21tb24uaCIKQEAgLTc5LDMwICs3OCw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0vLyBTZXQgRU5BQkxFX0JZVEVDT0RF
X0NPTU1FTlRTIHRvIDEgdG8gZW5hYmxlIHJlY29yZGluZyBieXRlY29kZSBnZW5lcmF0b3IKLS8v
IGNvbW1lbnRzIGZvciB0aGUgYnl0ZWNvZGVzIHRoYXQgaXQgZ2VuZXJhdGVzLiBUaGlzIHdpbGwg
YWxsb3cKLS8vIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkgdG8gcHJvdmlkZSBzb21lIGNvbnRl
eHR1YWwgaW5mbyBhYm91dCB0aGUgYnl0ZWNvZGVzLgotLy8KLS8vIFRoZSB3YXkgdGhpcyBjb21t
ZW50IHN5c3RlbSB3b3JrcyBpcyBhcyBmb2xsb3dzOgotLy8gMS4gVGhlIEJ5dGVjb2RlR2VuZXJh
dG9yIGNhbGxzIHByZXBlbmRDb21tZW50KCkgd2l0aCBhIGNvbnN0YW50IGNvbW1lbnQKLS8vICAg
IHN0cmluZyBpbiAudGV4dC4gVGhlIHN0cmluZyBtdXN0IG5vdCBiZSBhIHN0YWNrIG9yIGhlYXAg
YWxsb2NhdGVkCi0vLyAgICBzdHJpbmcuCi0vLyAyLiBXaGVuIHRoZSBCeXRlY29kZUdlbmVyYXRv
cidzIGVtaXRPcGNvZGUoKSBpcyBjYWxsZWQsIHRoZSBsYXN0Ci0vLyAgICBwcmVwZW5kZWQgY29t
bWVudCB3aWxsIGJlIHJlY29yZGVkIHdpdGggdGhlIFBDIG9mIHRoZSBvcGNvZGUgYmVpbmcKLS8v
ICAgIGVtaXR0ZWQuIFRoaXMgY29tbWVudCBpcyBiZWluZyByZWNvcmRlZCBpbiB0aGUgQ29kZUJs
b2NrJ3MKLS8vICAgIG1fYnl0ZWNvZGVDb21tZW50cy4KLS8vIDMuIFdoZW4gQ29kZUJsb2NrOjpk
dW1wQnl0ZWNvZGUoKSBpcyBjYWxsZWQsIGl0IHdpbGwgcGFpciB1cCB0aGUgY29tbWVudHMgd2l0
aAotLy8gICAgdGhlaXIgY29ycmVzcG9uZGluZyBieXRlY29kZXMgYmFzZWQgb24gdGhlIGJ5dGVj
b2RlIGFuZCBjb21tZW50J3MKLS8vICAgIFBDLiBJZiBhIG1hdGNoaW5nIHBhaXIgaXMgZm91bmQs
IHRoZSBjb21tZW50IHdpbGwgYmUgcHJpbnRlZCBhZnRlcgotLy8gICAgdGhlIGJ5dGVjb2RlLiBJ
ZiBub3QsIG5vIGNvbW1lbnQgaXMgcHJpbnRlZC4KLS8vCi0vLyBOT1RFOiBFbmFibGluZyB0aGlz
IHdpbGwgY29uc3VtZSBhZGRpdGlvbmFsIG1lbW9yeSBhdCBydW50aW1lIHRvIHN0b3JlCi0vLyB0
aGUgY29tbWVudHMuIFNpbmNlIHRoZXNlIGNvbW1lbnRzIGFyZSBvbmx5IHVzZWZ1bCBmb3IgVk0g
ZGVidWdnaW5nCi0vLyAoYXMgb3Bwb3NlZCB0byBhcHAgZGVidWdnaW5nKSwgdGhpcyBmZWF0dXJl
IGlzIHRvIGJlIGRpc2FibGVkIGJ5IGRlZmF1bHQsCi0vLyBhbmQgY2FuIGJlIGVuYWJsZWQgYXMg
bmVlZGVkIGZvciBWTSBkZXZlbG9wbWVudCB1c2Ugb25seS4KLQotI2RlZmluZSBFTkFCTEVfQllU
RUNPREVfQ09NTUVOVFMgMAotCiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERGR0NvZGVC
bG9ja3M7CkBAIC0yMDEsMTIgKzE3Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIGluZGV4ID49IG1fbnVtVmFyczsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUoUHJpbnRTdHJlYW0mLCBpbnQgbG9jYXRpb24pOwot
I2lmIEVOQUJMRShCWVRFQ09ERV9DT01NRU5UUykKLSAgICAgICAgY29uc3QgY2hhciogY29tbWVu
dEZvckJ5dGVjb2RlT2Zmc2V0KFByaW50U3RyZWFtJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQp
OwotICAgICAgICB2b2lkIGR1bXBCeXRlY29kZUNvbW1lbnRzKFByaW50U3RyZWFtJik7Ci0jZW5k
aWYKLQogICAgICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgaW50IGxpbmVOdW1iZXJGb3JCeXRlY29kZU9m
ZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAgICAgICAgIHZvaWQgZXhwcmVzc2lvblJh
bmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGludCYgZGl2b3Qs
IGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0KTsKQEAgLTQ0NCwxMCArNDEzLDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGlu
c3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAgICAgIGNvbnN0IFJl
ZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAgICAgIAotI2lmIEVOQUJMRShCWVRFQ09ERV9DT01NRU5U
UykKLSAgICAgICAgVmVjdG9yPENvbW1lbnQ+JiBieXRlY29kZUNvbW1lbnRzKCkgeyByZXR1cm4g
bV9ieXRlY29kZUNvbW1lbnRzOyB9Ci0jZW5kaWYKLQogICAgICAgICBzaXplX3QgcHJlZGljdGVk
TWFjaGluZUNvZGVTaXplKCk7CiAgICAgICAgIAogICAgICAgICBib29sIHVzZXNPcGNvZGUoT3Bj
b2RlSUQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvbW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29tbWVudC5oCShy
ZXZpc2lvbiAxNDMwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29tbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgQ29tbWVudF9oCi0jZGVmaW5lIENvbW1lbnRfaAotCi1uYW1lc3BhY2UgSlNDIHsKLQotc3Ry
dWN0IENvbW1lbnQgewotICAgIHNpemVfdCBwYzsKLSAgICBjb25zdCBjaGFyKiBzdHJpbmc7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIENvbW1lbnRfaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAJKHJldmlzaW9uIDE0MzAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw2IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKIAogI2luY2x1ZGUgIkJh
dGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgiCi0jaW5jbHVkZSAiQ29tbWVudC5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgpAQCAtMjMwLDkgKzIyOSw2IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OnByZXNlcnZlTGFzdFZhcigKIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUs
IFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUpCiAgICAgOiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
KGRlYnVnZ2VyTW9kZSA9PSBEZWJ1Z2dlck9uKQogICAgICwgbV9zaG91bGRFbWl0UHJvZmlsZUhv
b2tzKHByb2ZpbGVyTW9kZSA9PSBQcm9maWxlck9uKQotI2lmIEVOQUJMRShCWVRFQ09ERV9DT01N
RU5UUykKLSAgICAsIG1fY3VycmVudENvbW1lbnRTdHJpbmcoMCkKLSNlbmRpZgogICAgICwgbV9z
eW1ib2xUYWJsZSgwKQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCiAgICAgLCBtX2Nv
ZGVCbG9jayhnbG9iYWxEYXRhLCBjb2RlQmxvY2spCkBAIC0yNjEsNyArMjU3LDYgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpTRwogCiAgICAgbV9jb2RlQmxvY2stPnNl
dE51bVBhcmFtZXRlcnMoMSk7IC8vIEFsbG9jYXRlIHNwYWNlIGZvciAidGhpcyIKIAotICAgIHBy
ZXBlbmRDb21tZW50KCJlbnRlcmluZyBQcm9ncmFtIGJsb2NrIik7CiAgICAgZW1pdE9wY29kZShv
cF9lbnRlcik7CiAKICAgICBjb25zdCBWYXJTdGFjayYgdmFyU3RhY2sgPSBwcm9ncmFtTm9kZS0+
dmFyU3RhY2soKTsKQEAgLTI4Miw5ICsyNzcsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoSlNHCiAgICAgOiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKGRlYnVnZ2VyTW9k
ZSA9PSBEZWJ1Z2dlck9uKQogICAgICwgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKHByb2ZpbGVy
TW9kZSA9PSBQcm9maWxlck9uKQogICAgICwgbV9zeW1ib2xUYWJsZShjb2RlQmxvY2stPnN5bWJv
bFRhYmxlKCkpCi0jaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQotICAgICwgbV9jdXJyZW50
Q29tbWVudFN0cmluZygwKQotI2VuZGlmCiAgICAgLCBtX3Njb3BlTm9kZShmdW5jdGlvbkJvZHkp
CiAgICAgLCBtX2NvZGVCbG9jayhnbG9iYWxEYXRhLCBjb2RlQmxvY2spCiAgICAgLCBtX2FjdGl2
YXRpb25SZWdpc3RlcigwKQpAQCAtMzEzLDExICszMDUsOSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHCiAgICAgbV9zeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmlj
dEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KTsKICAgICBtX3N5bWJvbFRhYmxlLT5zZXRQYXJhbWV0ZXJDb3VudEluY2x1ZGluZ1RoaXMoZnVu
Y3Rpb25Cb2R5LT5wYXJhbWV0ZXJzKCktPnNpemUoKSArIDEpOwogCi0gICAgcHJlcGVuZENvbW1l
bnQoImVudGVyaW5nIEZ1bmN0aW9uIGJsb2NrIik7CiAgICAgZW1pdE9wY29kZShvcF9lbnRlcik7
CiAgICAgaWYgKG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpIHsKICAgICAgICAg
bV9hY3RpdmF0aW9uUmVnaXN0ZXIgPSBhZGRWYXIoKTsKLSAgICAgICAgcHJlcGVuZENvbW1lbnQo
ImFjdGl2YXRpb24gZm9yIEZ1bGwgU2NvcGUgQ2hhaW4iKTsKICAgICAgICAgZW1pdEluaXRMYXp5
UmVnaXN0ZXIobV9hY3RpdmF0aW9uUmVnaXN0ZXIpOwogICAgICAgICBtX2NvZGVCbG9jay0+c2V0
QWN0aXZhdGlvblJlZ2lzdGVyKG1fYWN0aXZhdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICB9
CkBAIC0zMzQsMTMgKzMyNCwxMCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoSlNHCiAgICAgICAgIGNvZGVCbG9jay0+c2V0QXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRz
UmVnaXN0ZXItPmluZGV4KCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlciwgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpID09IEpT
Qzo6dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGNvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0
ZXIoKSkpOwogCi0gICAgICAgIHByZXBlbmRDb21tZW50KCJhcmd1bWVudHMgZm9yIEZ1bGwgU2Nv
cGUgQ2hhaW4iKTsKICAgICAgICAgZW1pdEluaXRMYXp5UmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0
ZXIpOwotICAgICAgICBwcmVwZW5kQ29tbWVudCgidW5tb2RpZmllZCBhcmd1bWVudHMgZm9yIEZ1
bGwgU2NvcGUgQ2hhaW4iKTsKICAgICAgICAgZW1pdEluaXRMYXp5UmVnaXN0ZXIodW5tb2RpZmll
ZEFyZ3VtZW50c1JlZ2lzdGVyKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgICAgIHByZXBlbmRDb21tZW50KCJjcmVhdGUgYXJn
dW1lbnRzIGZvciBzdHJpY3QgbW9kZSIpOwogICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVh
dGVfYXJndW1lbnRzKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1bWVu
dHNSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgICAgIH0KQEAgLTM0OSw3ICszMzYsNiBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHCiAgICAgICAgIC8vIGl0IGZyb20g
YSBjYWxsIGZyYW1lLiAgSW4gdGhlIGxvbmctdGVybSBpdCBzaG91bGQgc3RvcCBkb2luZyB0aGF0
ICg8cmRhcjovL3Byb2JsZW0vNjkxMTg4Nj4pLAogICAgICAgICAvLyBidXQgZm9yIG5vdyB3ZSBm
b3JjZSBlYWdlciBjcmVhdGlvbiBvZiB0aGUgYXJndW1lbnRzIG9iamVjdCB3aGVuIGRlYnVnZ2lu
Zy4KICAgICAgICAgaWYgKG1fc2hvdWxkRW1pdERlYnVnSG9va3MpIHsKLSAgICAgICAgICAgIHBy
ZXBlbmRDb21tZW50KCJjcmVhdGUgYXJndW1lbnRzIGZvciBkZWJ1ZyBob29rcyIpOwogICAgICAg
ICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYXJndW1lbnRzKTsKICAgICAgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChhcmd1bWVudHNSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgICAgIH0K
QEAgLTQwMSwxMiArMzg3LDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihKU0cKICAgICAgICAgICAgIGlmIChmdW5jdGlvbkJvZHktPmNhcHR1cmVzKGlkZW50KSkgewog
ICAgICAgICAgICAgICAgIGlmICghbV9oYXNDcmVhdGVkQWN0aXZhdGlvbikgewogICAgICAgICAg
ICAgICAgICAgICBtX2hhc0NyZWF0ZWRBY3RpdmF0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgcHJlcGVuZENvbW1lbnQoImFjdGl2YXRpb24gZm9yIGNhcHR1cmVkIHZhcnMiKTsKICAg
ICAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYWN0aXZhdGlvbik7CiAgICAg
ICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2FjdGl2YXRpb25SZWdpc3Rl
ci0+aW5kZXgoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fZnVuY3Rp
b25zLmFkZChpZGVudC5pbXBsKCkpOwotICAgICAgICAgICAgICAgIHByZXBlbmRDb21tZW50KCJj
YXB0dXJlZCBmdW5jdGlvbiB2YXIiKTsKICAgICAgICAgICAgICAgICBlbWl0TmV3RnVuY3Rpb24o
YWRkVmFyKGlkZW50LCBmYWxzZSksIGZ1bmN0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtNDE5LDcgKzQwMyw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihKU0cKICAgICBib29sIGNhbkxhemlseUNyZWF0ZUZ1bmN0aW9ucyA9ICFmdW5jdGlvbkJvZHkt
Pm5lZWRzQWN0aXZhdGlvbkZvck1vcmVUaGFuVmFyaWFibGVzKCkgJiYgIW1fc2hvdWxkRW1pdERl
YnVnSG9va3M7CiAgICAgaWYgKCFjYW5MYXppbHlDcmVhdGVGdW5jdGlvbnMgJiYgIW1faGFzQ3Jl
YXRlZEFjdGl2YXRpb24pIHsKICAgICAgICAgbV9oYXNDcmVhdGVkQWN0aXZhdGlvbiA9IHRydWU7
Ci0gICAgICAgIHByZXBlbmRDb21tZW50KCJjYW5ub3QgbGF6aWx5IGNyZWF0ZSBmdW5jdGlvbnMi
KTsKICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYWN0aXZhdGlvbik7CiAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtX2FjdGl2YXRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAg
fQpAQCAtNDM1LDcgKzQxOCw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihKU0cKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWcgPSBhZGRWYXIoaWRlbnQs
IGZhbHNlKTsKICAgICAgICAgICAgIC8vIERvbid0IGxhemlseSBjcmVhdGUgZnVuY3Rpb25zIHRo
YXQgb3ZlcnJpZGUgdGhlIG5hbWUgJ2FyZ3VtZW50cycKICAgICAgICAgICAgIC8vIGFzIHRoaXMg
d291bGQgY29tcGxpY2F0ZSBsYXp5IGluc3RhbnRpYXRpb24gb2YgYWN0dWFsIGFyZ3VtZW50cy4K
LSAgICAgICAgICAgIHByZXBlbmRDb21tZW50KCJhIGZ1bmN0aW9uIHRoYXQgb3ZlcnJpZGUgJ2Fy
Z3VtZW50cyciKTsKICAgICAgICAgICAgIGlmICghY2FuTGF6aWx5Q3JlYXRlRnVuY3Rpb25zIHx8
IGlkZW50ID09IHByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgZW1p
dE5ld0Z1bmN0aW9uKHJlZy5nZXQoKSwgZnVuY3Rpb24pOwogICAgICAgICAgICAgZWxzZSB7CkBA
IC00NzgsNyArNDYwLDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpT
RwogICAgIGFkZENhbGxlZShmdW5jdGlvbkJvZHksIGNhbGxlZVJlZ2lzdGVyKTsKIAogICAgIGlm
IChpc0NvbnN0cnVjdG9yKCkpIHsKLSAgICAgICAgcHJlcGVuZENvbW1lbnQoIid0aGlzJyBiZWNh
dXNlIHdlIGFyZSBhIENvbnN0cnVjdG9yIGZ1bmN0aW9uIik7CiAgICAgICAgIGVtaXRDcmVhdGVU
aGlzKCZtX3RoaXNSZWdpc3Rlcik7CiAgICAgfSBlbHNlIGlmICghY29kZUJsb2NrLT5pc1N0cmlj
dE1vZGUoKSAmJiAoZnVuY3Rpb25Cb2R5LT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2
YWwoKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKSkgewogICAgICAgICBVbmxpbmtlZFZhbHVl
UHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NvbnZlcnRfdGhpcyk7CkBA
IC00OTEsOSArNDcyLDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpT
RwogICAgIDogbV9zaG91bGRFbWl0RGVidWdIb29rcyhkZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJP
bikKICAgICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhwcm9maWxlck1vZGUgPT0gUHJvZmls
ZXJPbikKICAgICAsIG1fc3ltYm9sVGFibGUoY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpKQotI2lm
IEVOQUJMRShCWVRFQ09ERV9DT01NRU5UUykKLSAgICAsIG1fY3VycmVudENvbW1lbnRTdHJpbmco
MCkKLSNlbmRpZgogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCiAgICAgLCBtX2NvZGVCbG9j
ayhnbG9iYWxEYXRhLCBjb2RlQmxvY2spCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6
OnRoaXNBcmd1bWVudE9mZnNldCgpKQpAQCAtNTIxLDcgKzQ5OSw2IEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihKU0cKICAgICBtX3N5bWJvbFRhYmxlLT5zZXRVc2VzTm9u
U3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpOwogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwogCi0gICAgcHJl
cGVuZENvbW1lbnQoImVudGVyaW5nIEV2YWwgYmxvY2siKTsKICAgICBlbWl0T3Bjb2RlKG9wX2Vu
dGVyKTsKIAogICAgIGNvbnN0IERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrJiBmdW5j
dGlvblN0YWNrID0gZXZhbE5vZGUtPmZ1bmN0aW9uU3RhY2soKTsKQEAgLTcwNCwzMSArNjgxLDEw
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRPcGNvZGUoT3Bjb2QKICAgICBBU1NFUlQo
b3Bjb2RlUG9zaXRpb24gLSBtX2xhc3RPcGNvZGVQb3NpdGlvbiA9PSBvcGNvZGVMZW5ndGgobV9s
YXN0T3Bjb2RlSUQpIHx8IG1fbGFzdE9wY29kZUlEID09IG9wX2VuZCk7CiAgICAgbV9sYXN0T3Bj
b2RlUG9zaXRpb24gPSBvcGNvZGVQb3NpdGlvbjsKICNlbmRpZgotICAgIGVtaXRDb21tZW50KCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG9wY29kZUlEKTsKICAgICBtX2xhc3RPcGNvZGVJ
RCA9IG9wY29kZUlEOwogfQogCi0jaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQotLy8gUmVj
b3JkIGEgY29tbWVudCBpbiB0aGUgQ29kZUJsb2NrJ3MgY29tbWVudHMgbGlzdCBmb3IgdGhlIGN1
cnJlbnQgb3Bjb2RlCi0vLyB0aGF0IGlzIGFib3V0IHRvIGJlIGVtaXR0ZWQuCi12b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q29tbWVudCgpCi17Ci0gICAgaWYgKG1fY3VycmVudENvbW1lbnRT
dHJpbmcpIHsKLSAgICAgICAgc2l6ZV90IG9wY29kZVBvc2l0aW9uID0gaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpOwotICAgICAgICBDb21tZW50IGNvbW1lbnQgPSB7IG9wY29kZVBvc2l0aW9uLCBtX2N1
cnJlbnRDb21tZW50U3RyaW5nIH07Ci0gICAgICAgIG1fY29kZUJsb2NrLT5ieXRlY29kZUNvbW1l
bnRzKCkuYXBwZW5kKGNvbW1lbnQpOwotICAgICAgICBtX2N1cnJlbnRDb21tZW50U3RyaW5nID0g
MDsKLSAgICB9Ci19Ci0KLS8vIFJlZ2lzdGVyIGEgY29tbWVudCB0byBiZSBhc3NvY2lhdGVkIHdp
dGggdGhlIG5leHQgb3Bjb2RlIHRoYXQgd2lsbCBiZSBlbWl0dGVkLgotdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6cHJlcGVuZENvbW1lbnQoY29uc3QgY2hhciogc3RyaW5nKQotewotICAgIG1fY3Vy
cmVudENvbW1lbnRTdHJpbmcgPSBzdHJpbmc7Ci19Ci0jZW5kaWYKLQogVW5saW5rZWRBcnJheVBy
b2ZpbGUgQnl0ZWNvZGVHZW5lcmF0b3I6Om5ld0FycmF5UHJvZmlsZSgpCiB7CiAjaWYgRU5BQkxF
KFZBTFVFX1BST0ZJTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTQzMDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MDksMTggKzUwOSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHBy
aXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCi0jaWYgRU5BQkxF
KEJZVEVDT0RFX0NPTU1FTlRTKQotICAgICAgICAvLyBSZWNvcmQgYSBjb21tZW50IGluIHRoZSBD
b2RlQmxvY2sncyBjb21tZW50cyBsaXN0IGZvciB0aGUgY3VycmVudAotICAgICAgICAvLyBvcGNv
ZGUgdGhhdCBpcyBhYm91dCB0byBiZSBlbWl0dGVkLgotICAgICAgICB2b2lkIGVtaXRDb21tZW50
KCk7Ci0gICAgICAgIC8vIFJlZ2lzdGVyIGEgY29tbWVudCB0byBiZSBhc3NvY2lhdGVkIHdpdGgg
dGhlIG5leHQgb3Bjb2RlIHRoYXQgd2lsbAotICAgICAgICAvLyBiZSBlbWl0dGVkLgotICAgICAg
ICB2b2lkIHByZXBlbmRDb21tZW50KGNvbnN0IGNoYXIqIHN0cmluZyk7Ci0jZWxzZQotICAgICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgZW1pdENvbW1lbnQoKSB7IH0KLSAgICAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHByZXBlbmRDb21tZW50KGNvbnN0IGNoYXIqKSB7IH0KLSNlbmRpZgotCiAgICAg
ICAgIHZvaWQgZW1pdE9wY29kZShPcGNvZGVJRCk7CiAgICAgICAgIFVubGlua2VkQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSBuZXdBcnJheUFsbG9jYXRpb25Qcm9maWxlKCk7CiAgICAgICAgIFVubGlu
a2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgbmV3T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKTsK
QEAgLTYyMSw5ICs2MDksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFVubGlu
a2VkSW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsg
fQogCiAgICAgICAgIFNoYXJlZFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSgpIHsgcmV0dXJuICpt
X3N5bWJvbFRhYmxlOyB9Ci0jaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQotICAgICAgICBW
ZWN0b3I8Q29tbWVudD4mIGNvbW1lbnRzKCkgeyByZXR1cm4gbV9jb21tZW50czsgfQotI2VuZGlm
CiAKICAgICAgICAgYm9vbCBzaG91bGRPcHRpbWl6ZUxvY2FscygpCiAgICAgICAgIHsKQEAgLTY2
MywxMSArNjQ4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU2hhcmVkU3ltYm9sVGFi
bGUqIG1fc3ltYm9sVGFibGU7CiAKLSNpZiBFTkFCTEUoQllURUNPREVfQ09NTUVOVFMpCi0gICAg
ICAgIFZlY3RvcjxDb21tZW50PiBtX2NvbW1lbnRzOwotICAgICAgICBjb25zdCBjaGFyICptX2N1
cnJlbnRDb21tZW50U3RyaW5nOwotI2VuZGlmCi0KICAgICAgICAgU2NvcGVOb2RlKiBtX3Njb3Bl
Tm9kZTsKICAgICAgICAgU3Ryb25nPFVubGlua2VkQ29kZUJsb2NrPiBtX2NvZGVCbG9jazsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>