<?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>101511</bug_id>
          
          <creation_ts>2012-11-07 14:25:33 -0800</creation_ts>
          <short_desc>DFG constant folding and CFG simplification should be smart enough to know that if a logical op&apos;s operand is proven to have a non-masquerading structure then it always evaluates to true</short_desc>
          <delta_ts>2012-11-10 15:34:31 -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>
          <dependson>101839</dependson>
          
          <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>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>761052</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-07 14:25:33 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761060</commentid>
    <comment_count>1</comment_count>
      <attachid>172873</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-07 14:31:57 -0800</bug_when>
    <thetext>Created attachment 172873
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762295</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-08 16:16:35 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/133971</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763651</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-10 07:03:31 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 101839</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763709</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-10 13:24:55 -0800</bug_when>
    <thetext>Wow, that was a silly mistake.  I need to exclude strings from the boolean optimizations, since a string can be false (!!&quot;&quot; == false).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763719</commentid>
    <comment_count>5</comment_count>
      <attachid>173471</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-10 14:04:34 -0800</bug_when>
    <thetext>Created attachment 173471
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763721</commentid>
    <comment_count>6</comment_count>
      <attachid>173473</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-10 14:05:31 -0800</bug_when>
    <thetext>Created attachment 173473
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763747</commentid>
    <comment_count>7</comment_count>
      <attachid>173473</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-11-10 15:32:20 -0800</bug_when>
    <thetext>Comment on attachment 173473
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763748</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-10 15:34:31 -0800</bug_when>
    <thetext>Relanded in http://trac.webkit.org/changeset/134164</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172873</attachid>
            <date>2012-11-07 14:31:57 -0800</date>
            <delta_ts>2012-11-10 14:04:34 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>logicalobject.patch</filename>
            <type>text/plain</type>
            <size>20021</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzODA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDEyLTExLTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGNvbnN0YW50IGZvbGRpbmcgYW5kIENGRyBzaW1wbGlmaWNhdGlvbiBzaG91bGQgYmUgc21h
cnQgZW5vdWdoIHRvIGtub3cgdGhhdCBpZiBhIGxvZ2ljYWwgb3AncyBvcGVyYW5kIGlzIHByb3Zl
biB0byBoYXZlIGEgbm9uLW1hc3F1ZXJhZGluZyBzdHJ1Y3R1cmUgdGhlbiBpdCBhbHdheXMgZXZh
bHVhdGVzIHRvIHRydWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMTUxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRvIG1ha2UgbGlmZSBlYXNpZXIsIHRoaXMgbW92ZXMgQnJhbmNoRGlyZWN0aW9uIGlu
dG8gQmFzaWNCbG9jayBzbyB0aGF0IGFmdGVyCisgICAgICAgIHJ1bm5pbmcgdGhlIENGQSwgd2Ug
YWx3YXlzIGtub3csIGZvciBlYWNoIGJsb2NrLCB3aGF0IGRpcmVjdGlvbiB0aGUgQ0ZBCisgICAg
ICAgIHByb3ZlZC4gQ0ZHIHNpbXBsaWZpY2F0aW9uIG5vdyBib3RoIHVzZXMgYW5kIHByZXNlcnZl
cyBjZmFCcmFuY2hEaXJlY3Rpb24gaW4KKyAgICAgICAgaXRzIHRyYW5zZm9ybWF0aW9ucy4KKyAg
ICAgICAgCisgICAgICAgIEFsc28gbWFkZSBib3RoIExvZ2ljYWxOb3QgYW5kIEJyYW5jaCBjaGVj
ayB3aGV0aGVyIHRoZSBvcGVyYW5kIGlzIGEga25vd24gY2VsbAorICAgICAgICB3aXRoIGEga25v
d24gc3RydWN0dXJlLCBhbmQgaWYgc28sIG1hZGUgdGhlbSBkbyB0aGUgYXBwcm9wcmlhdGUgZm9s
ZGluZy4KKyAgICAgICAgCisgICAgICAgIDUlIHNwZWVkLXVwIG9uIFY4L3JheXRyYWNlIGJlY2F1
c2UgaXQgbWFrZXMgcmF5dHJhY2UncyBvd24gbnVsbCBjaGVja3MKKyAgICAgICAgZXZhcG9yYXRl
IChpLmUuIGlkaW9tcyBsaWtlICdpZiAoIXgpIHRocm93ICJ1bmhhcHBpbmVzcyInKSB0aGFua3Mg
dG8gdGhlIGZhY3QKKyAgICAgICAgdGhhdCB3ZSB3ZXJlIGFscmVhZHkgZG9pbmcgc3RydWN0dXJl
IGNoZWNrIGhvaXN0aW5nLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayk6CisgICAgICAgIChK
U0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RTdGF0ZTo6bWVyZ2VUb1N1Y2Nlc3NvcnMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dFN0YXRlLmg6CisgICAgICAgIChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQmFz
aWNCbG9jay5oOgorICAgICAgICAoSlNDOjpERkc6OkJhc2ljQmxvY2s6OkJhc2ljQmxvY2spOgor
ICAgICAgICAoQmFzaWNCbG9jayk6CisgICAgICAgICogZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6YnJhbmNoRGlyZWN0
aW9uVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OmlzS25vd25EaXJlY3Rpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OmJyYW5jaENvbmRpdGlvbik6CisgICAgICAgICogZGZnL0RGR0NGR1Np
bXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0
aW9uUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFz
ZTo6bWVyZ2VCbG9ja3MpOgorCiAyMDEyLTExLTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgSW5kZW50YXRpb24gb2YgQXJnTGlzdC5oIGlzIHdyb25nCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTMzNjg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTE2NSw2ICsxNjUsNyBAQAogCQkwRjdCMjk0QzE0QzNDRDQzMDA3
QzNEQjEgLyogREZHQnl0ZUNvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVDb2Rl
Q2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIg
LyogREZHQ29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAw
QTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
ODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjkxOUQwQzE1N0VFMDlG
MDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwOTE1N0VFMDlEMDA0QTRFN0QgLyogSlNT
eW1ib2xUYWJsZU9iamVjdC5jcHAgKi87IH07CiAJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAv
KiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjkxOUQwQTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9i
amVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGOTE5RDEwMTU3RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDBF
MTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCAqLzsgfTsK
QEAgLTk0Niw2ICs5NDcsNyBAQAogCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxp
bmdDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBs
aW5nQ291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0IyOTQ4MTRD
M0NEMjMwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHQ0NhbGxIZWxwZXJzLmg7IHBhdGggPSBkZmcvREZHQ0NhbGxIZWxwZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0
NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJ
bmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGODM2NEI1MTY0QjBDMEUwMDUz
MzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHQnJhbmNoRGlyZWN0aW9uLmg7IHBhdGggPSBkZmcvREZHQnJhbmNoRGlyZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTE5RDA5MTU3RUUwOUQwMDRBNEU3
RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTU3ltYm9sVGFibGVPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjkxOUQwQTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N5bWJvbFRhYmxlT2JqZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTE5RDBFMTU3RjMzMjcwMDRBNEU3RCAv
KiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjM0OSw2ICsyMzUxLDcgQEAKIAkJCQkwRkMwOTc2QjE0NjhBQjRB
MDBDRjI0NDIgLyogREZHQXNzZW1ibHlIZWxwZXJzLmNwcCAqLywKIAkJCQkwRkMwOTc2QzE0NjhB
QjRBMDBDRjI0NDIgLyogREZHQXNzZW1ibHlIZWxwZXJzLmggKi8sCiAJCQkJMEY2MjAxNzAxNDNG
Q0QyRjAwNjhCNzdDIC8qIERGR0Jhc2ljQmxvY2suaCAqLywKKwkJCQkwRjgzNjRCNTE2NEIwQzBF
MDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi8sCiAJCQkJMEY1RjA4Q0MxNDZCRTYw
MjAwMDQ3MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAqLywKIAkJCQk4NkVDOURCNDEzMjhERjgy
MDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwICovLAogCQkJCTg2RUM5REI1MTMyOERG
ODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oICovLApAQCAtMjk5Myw2ICsyOTk2LDcg
QEAKIAkJCQkwRkVCM0VDRDE2MjM3RjREMDBBQjY3QUQgLyogVHlwZWRBcnJheURlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIy
MzlEMUIxNjI2MkJERDAwNUFDNUZEIC8qIEdDVGhyZWFkLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0
YXRlLmNwcAkocmV2aXNpb24gMTMzNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIHZv
aWQgQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZShHcmFwaCYgZ3IKICAgICB9CiB9CiAKLWJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayhNZXJnZU1vZGUgbWVyZ2VNb2RlLCBCcmFuY2hE
aXJlY3Rpb24qIGJyYW5jaERpcmVjdGlvblB0cikKK2Jvb2wgQWJzdHJhY3RTdGF0ZTo6ZW5kQmFz
aWNCbG9jayhNZXJnZU1vZGUgbWVyZ2VNb2RlKQogewogICAgIEFTU0VSVChtX2Jsb2NrKTsKICAg
ICAKQEAgLTE2Nyw2ICsxNjcsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2so
TWVyZ2VNCiAgICAgCiAgICAgYmxvY2stPmNmYUZvdW5kQ29uc3RhbnRzID0gbV9mb3VuZENvbnN0
YW50czsKICAgICBibG9jay0+Y2ZhRGlkRmluaXNoID0gbV9pc1ZhbGlkOworICAgIGJsb2NrLT5j
ZmFCcmFuY2hEaXJlY3Rpb24gPSBtX2JyYW5jaERpcmVjdGlvbjsKICAgICAKICAgICBpZiAoIW1f
aXNWYWxpZCkgewogICAgICAgICByZXNldCgpOwpAQCAtMTk1LDEyICsxOTYsOCBAQCBib29sIEFi
c3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2soTWVyZ2VNCiAgICAgCiAgICAgQVNTRVJUKG1lcmdl
TW9kZSAhPSBEb250TWVyZ2UgfHwgIWNoYW5nZWQpOwogICAgIAotICAgIEJyYW5jaERpcmVjdGlv
biBicmFuY2hEaXJlY3Rpb24gPSBtX2JyYW5jaERpcmVjdGlvbjsKLSAgICBpZiAoYnJhbmNoRGly
ZWN0aW9uUHRyKQotICAgICAgICAqYnJhbmNoRGlyZWN0aW9uUHRyID0gYnJhbmNoRGlyZWN0aW9u
OwotICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICBk
YXRhTG9nKCIgICAgICAgIEJyYW5jaCBkaXJlY3Rpb24gPSAlc1xuIiwgYnJhbmNoRGlyZWN0aW9u
VG9TdHJpbmcoYnJhbmNoRGlyZWN0aW9uKSk7CisgICAgZGF0YUxvZygiICAgICAgICBCcmFuY2gg
ZGlyZWN0aW9uID0gJXNcbiIsIGJyYW5jaERpcmVjdGlvblRvU3RyaW5nKG1fYnJhbmNoRGlyZWN0
aW9uKSk7CiAjZW5kaWYKICAgICAKICAgICByZXNldCgpOwpAQCAtMjA4LDcgKzIwNSw3IEBAIGJv
b2wgQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayhNZXJnZU0KICAgICBpZiAobWVyZ2VNb2Rl
ICE9IE1lcmdlVG9TdWNjZXNzb3JzKQogICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICAKLSAg
ICByZXR1cm4gbWVyZ2VUb1N1Y2Nlc3NvcnMobV9ncmFwaCwgYmxvY2ssIGJyYW5jaERpcmVjdGlv
bik7CisgICAgcmV0dXJuIG1lcmdlVG9TdWNjZXNzb3JzKG1fZ3JhcGgsIGJsb2NrKTsKIH0KIAog
dm9pZCBBYnN0cmFjdFN0YXRlOjpyZXNldCgpCkBAIC02MDUsMTIgKzYwMiwyMiBAQCBib29sIEFi
c3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgfQogICAgICAgICAgICAgCiAg
ICAgY2FzZSBMb2dpY2FsTm90OiB7CisgICAgICAgIC8vIEZpcnN0IGNoZWNrIGlmIHdlIGNhbiBm
b2xkIGJlY2F1c2UgdGhlIHNvdXJjZSBpcyBhIGNvbnN0YW50LgogICAgICAgICBKU1ZhbHVlIGNo
aWxkQ29uc3QgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChj
aGlsZENvbnN0ICYmIHRyeVNldENvbnN0YW50KG5vZGVJbmRleCwganNCb29sZWFuKCFjaGlsZENv
bnN0LnRvQm9vbGVhbihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdp
biktPmdsb2JhbEV4ZWMoKSkpKSkgewogICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRy
dWU7CiAgICAgICAgICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgLy8gTmV4dCBjaGVjayBpZiB3ZSBjYW4gZm9sZCBiZWNh
dXNlIHdlIGtub3cgdGhhdCB0aGUgc291cmNlIGlzIGFuIG9iamVjdCBvciBzdHJpbmcgYW5kIGRv
ZXMgbm90IGVxdWFsIHVuZGVmaW5lZC4KKyAgICAgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKQorICAgICAgICAgICAgJiYgZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5oYXNTaW5nbGV0b24oKQorICAgICAg
ICAgICAgJiYgIWZvck5vZGUobm9kZS5jaGlsZDEoKSkubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUu
c2luZ2xldG9uKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdEZvcihub2RlLmNvZGVPcmlnaW4pKQorICAgICAgICAgICAgJiYgdHJ5U2V0Q29uc3RhbnQo
bm9kZUluZGV4LCBqc0Jvb2xlYW4oZmFsc2UpKSkgeworICAgICAgICAgICAgbV9mb3VuZENvbnN0
YW50cyA9IHRydWU7CisgICAgICAgICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgTm9kZSYgY2hpbGQgPSBtX2dyYXBoW25v
ZGUuY2hpbGQxKCldOwogICAgICAgICBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24oY2hpbGQucHJl
ZGljdGlvbigpKSkKICAgICAgICAgICAgIHNwZWN1bGF0ZUJvb2xlYW5VbmFyeShub2RlKTsKQEAg
LTEwNDMsNiArMTA1MCw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBp
bmQKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIEJyYW5jaDogeworICAg
ICAgICAvLyBGaXJzdCBjaGVjayBpZiB3ZSBjYW4gZm9sZCBiZWNhdXNlIHRoZSBzb3VyY2UgaXMg
YSBjb25zdGFudC4KICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS5jaGlsZDEo
KSkudmFsdWUoKTsKICAgICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgICBib29sIGJvb2xl
YW5WYWx1ZSA9IHZhbHVlLnRvQm9vbGVhbihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUuY29kZU9yaWdpbiktPmdsb2JhbEV4ZWMoKSk7CkBAIC0xMDUzLDYgKzEwNjEsMTQgQEAgYm9v
bCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgbm9kZS5z
ZXRDYW5FeGl0KGZhbHNlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IC8vIE5leHQgY2hlY2sgaWYgd2UgY2FuIGZvbGQgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNv
dXJjZSBpcyBhbiBvYmplY3Qgb3Igc3RyaW5nIGFuZCBkb2VzIG5vdCBlcXVhbCB1bmRlZmluZWQu
CisgICAgICAgIGlmIChpc0NlbGxTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1f
dHlwZSkKKyAgICAgICAgICAgICYmIGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV9jdXJyZW50S25v
d25TdHJ1Y3R1cmUuaGFzU2luZ2xldG9uKCkKKyAgICAgICAgICAgICYmICFmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fY3VycmVudEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigpLT5tYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2lu
KSkpIHsKKyAgICAgICAgICAgIG1fYnJhbmNoRGlyZWN0aW9uID0gVGFrZVRydWU7CisgICAgICAg
ICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgLy8gRklYTUU6IFRoZSBhYm92ZSBoYW5kbGVzIHRoZSB0cml2aWFsIGNhc2Vz
IG9mIHNwYXJzZSBjb25kaXRpb25hbAogICAgICAgICAvLyBjb25zdGFudCBwcm9wYWdhdGlvbiwg
YnV0IHdlIGNhbiBkbyBiZXR0ZXI6CiAgICAgICAgIC8vIDEpIElmIHRoZSBhYnN0cmFjdCB2YWx1
ZSBkb2VzIG5vdCBoYXZlIGEgY29uY3JldGUgdmFsdWUgYnV0IGRlc2NyaWJlcwpAQCAtMTcyMiw3
ICsxNzM4LDcgQEAgaW5saW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbAogfQog
CiBpbmxpbmUgYm9vbCBBYnN0cmFjdFN0YXRlOjptZXJnZVRvU3VjY2Vzc29ycygKLSAgICBHcmFw
aCYgZ3JhcGgsIEJhc2ljQmxvY2sqIGJhc2ljQmxvY2ssIEJyYW5jaERpcmVjdGlvbiBicmFuY2hE
aXJlY3Rpb24pCisgICAgR3JhcGgmIGdyYXBoLCBCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrKQogewog
ICAgIE5vZGUmIHRlcm1pbmFsID0gZ3JhcGhbYmFzaWNCbG9jay0+bGFzdCgpXTsKICAgICAKQEAg
LTE3MzAsNyArMTc0Niw3IEBAIGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlVG9TdWNj
ZXMKICAgICAKICAgICBzd2l0Y2ggKHRlcm1pbmFsLm9wKCkpIHsKICAgICBjYXNlIEp1bXA6IHsK
LSAgICAgICAgQVNTRVJUKGJyYW5jaERpcmVjdGlvbiA9PSBJbnZhbGlkQnJhbmNoRGlyZWN0aW9u
KTsKKyAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbiA9PSBJbnZh
bGlkQnJhbmNoRGlyZWN0aW9uKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZF
UkJPU0UpCiAgICAgICAgIGRhdGFMb2coIiAgICAgICAgTWVyZ2luZyB0byBibG9jayAjJXUuXG4i
LCB0ZXJtaW5hbC50YWtlbkJsb2NrSW5kZXgoKSk7CiAjZW5kaWYKQEAgLTE3MzgsMTcgKzE3NTQs
MTcgQEAgaW5saW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUb1N1Y2NlcwogICAgIH0KICAg
ICAgICAgCiAgICAgY2FzZSBCcmFuY2g6IHsKLSAgICAgICAgQVNTRVJUKGJyYW5jaERpcmVjdGlv
biAhPSBJbnZhbGlkQnJhbmNoRGlyZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2st
PmNmYUJyYW5jaERpcmVjdGlvbiAhPSBJbnZhbGlkQnJhbmNoRGlyZWN0aW9uKTsKICAgICAgICAg
Ym9vbCBjaGFuZ2VkID0gZmFsc2U7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9W
RVJCT1NFKQogICAgICAgICBkYXRhTG9nKCIgICAgICAgIE1lcmdpbmcgdG8gYmxvY2sgIyV1Llxu
IiwgdGVybWluYWwudGFrZW5CbG9ja0luZGV4KCkpOwogI2VuZGlmCi0gICAgICAgIGlmIChicmFu
Y2hEaXJlY3Rpb24gIT0gVGFrZUZhbHNlKQorICAgICAgICBpZiAoYmFzaWNCbG9jay0+Y2ZhQnJh
bmNoRGlyZWN0aW9uICE9IFRha2VGYWxzZSkKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2Uo
YmFzaWNCbG9jaywgZ3JhcGgubV9ibG9ja3NbdGVybWluYWwudGFrZW5CbG9ja0luZGV4KCldLmdl
dCgpKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAg
IGRhdGFMb2coIiAgICAgICAgTWVyZ2luZyB0byBibG9jayAjJXUuXG4iLCB0ZXJtaW5hbC5ub3RU
YWtlbkJsb2NrSW5kZXgoKSk7CiAjZW5kaWYKLSAgICAgICAgaWYgKGJyYW5jaERpcmVjdGlvbiAh
PSBUYWtlVHJ1ZSkKKyAgICAgICAgaWYgKGJhc2ljQmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbiAh
PSBUYWtlVHJ1ZSkKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgZ3Jh
cGgubV9ibG9ja3NbdGVybWluYWwubm90VGFrZW5CbG9ja0luZGV4KCldLmdldCgpKTsKICAgICAg
ICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQpAQCAtMTc1Niw3ICsxNzcyLDcgQEAgaW5saW5lIGJv
b2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUb1N1Y2NlcwogICAgIGNhc2UgUmV0dXJuOgogICAgIGNh
c2UgVGhyb3c6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgotICAgICAgICBBU1NFUlQo
YnJhbmNoRGlyZWN0aW9uID09IEludmFsaWRCcmFuY2hEaXJlY3Rpb24pOworICAgICAgICBBU1NF
UlQoYmFzaWNCbG9jay0+Y2ZhQnJhbmNoRGlyZWN0aW9uID09IEludmFsaWRCcmFuY2hEaXJlY3Rp
b24pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAkocmV2aXNp
b24gMTMzNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAog
I2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIKKyNpbmNsdWRlICJERkdCcmFuY2hEaXJlY3Rp
b24uaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC05MiwzNiArOTMsNiBAQCBwdWJsaWM6CiAgICAgICAgIE1l
cmdlVG9TdWNjZXNzb3JzCiAgICAgfTsKICAgICAKLSAgICBlbnVtIEJyYW5jaERpcmVjdGlvbiB7
Ci0gICAgICAgIC8vIFRoaXMgaXMgbm90IGEgYnJhbmNoIGFuZCBzbyB0aGVyZSBpcyBubyBicmFu
Y2ggZGlyZWN0aW9uLCBvcgotICAgICAgICAvLyB0aGUgYnJhbmNoIGRpcmVjdGlvbiBoYXMgeWV0
IHRvIGJlIHNldC4KLSAgICAgICAgSW52YWxpZEJyYW5jaERpcmVjdGlvbiwKLSAgICAgICAgCi0g
ICAgICAgIC8vIFRoZSBicmFuY2ggdGFrZXMgdGhlIHRydWUgY2FzZS4KLSAgICAgICAgVGFrZVRy
dWUsCi0gICAgICAgIAotICAgICAgICAvLyBUaGUgYnJhbmNoIHRha2VzIHRoZSBmYWxzZSBjYXNl
LgotICAgICAgICBUYWtlRmFsc2UsCi0gICAgICAgIAotICAgICAgICAvLyBGb3IgYWxsIHdlIGtu
b3csIHRoZSBicmFuY2ggY291bGQgZ28gZWl0aGVyIGRpcmVjdGlvbiwgc28gd2UKLSAgICAgICAg
Ly8gaGF2ZSB0byBhc3N1bWUgdGhlIHdvcnN0LgotICAgICAgICBUYWtlQm90aAotICAgIH07Ci0g
ICAgCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGJyYW5jaERpcmVjdGlvblRvU3RyaW5nKEJyYW5j
aERpcmVjdGlvbiBicmFuY2hEaXJlY3Rpb24pCi0gICAgewotICAgICAgICBzd2l0Y2ggKGJyYW5j
aERpcmVjdGlvbikgewotICAgICAgICBjYXNlIEludmFsaWRCcmFuY2hEaXJlY3Rpb246Ci0gICAg
ICAgICAgICByZXR1cm4gIkludmFsaWQiOwotICAgICAgICBjYXNlIFRha2VUcnVlOgotICAgICAg
ICAgICAgcmV0dXJuICJUYWtlVHJ1ZSI7Ci0gICAgICAgIGNhc2UgVGFrZUZhbHNlOgotICAgICAg
ICAgICAgcmV0dXJuICJUYWtlRmFsc2UiOwotICAgICAgICBjYXNlIFRha2VCb3RoOgotICAgICAg
ICAgICAgcmV0dXJuICJUYWtlQm90aCI7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBBYnN0cmFj
dFN0YXRlKEdyYXBoJik7CiAgICAgCiAgICAgfkFic3RyYWN0U3RhdGUoKTsKQEAgLTE3NCwxMSAr
MTQ1LDcgQEAgcHVibGljOgogICAgIC8vICAgIEEgdHJ1ZSByZXR1cm4gbWVhbnMgdGhhdCB5b3Ug
bXVzdCByZXZpc2l0IChhdCBsZWFzdCkgdGhlIHN1Y2Nlc3NvcgogICAgIC8vICAgIGJsb2Nrcy4g
VGhpcyBhbHNvIHNldHMgY2ZhU2hvdWxkUmV2aXNpdCB0byB0cnVlIGZvciBiYXNpYyBibG9ja3MK
ICAgICAvLyAgICB0aGF0IG11c3QgYmUgdmlzaXRlZCBuZXh0LgotICAgIC8vCi0gICAgLy8gSWYg
eW91J2QgbGlrZSB0byBrbm93IHdoYXQgZGlyZWN0aW9uIHRoZSBicmFuY2ggYXQgdGhlIGVuZCBv
ZiB0aGUKLSAgICAvLyBiYXNpYyBibG9jayBpcyB0aG91Z2h0IHRvIGhhdmUgdGFrZW4sIHlvdSBj
YW4gcGFzcyBhIG5vbi0wIHBvaW50ZXIKLSAgICAvLyBmb3IgQnJhbmNoRGlyZWN0aW9uLgotICAg
IGJvb2wgZW5kQmFzaWNCbG9jayhNZXJnZU1vZGUsIEJyYW5jaERpcmVjdGlvbiogPSAwKTsKKyAg
ICBib29sIGVuZEJhc2ljQmxvY2soTWVyZ2VNb2RlKTsKICAgICAKICAgICAvLyBSZXNldCB0aGUg
QWJzdHJhY3RTdGF0ZS4gVGhpcyB0aHJvd3MgYXdheSBhbnkgcmVzdWx0cywgYW5kIGF0IHRoaXMg
cG9pbnQKICAgICAvLyB5b3UgY2FuIHNhZmVseSBjYWxsIGJlZ2luQmFzaWNCbG9jaygpIG9uIGFu
eSBiYXNpYyBibG9jay4KQEAgLTIxMSw4ICsxNzgsOCBAQCBwdWJsaWM6CiAgICAgLy8gc3VjY2Vz
c29ycy4gUmV0dXJucyB0cnVlIGlmIGFueSBvZiB0aGUgc3VjY2Vzc29ycycgc3RhdGVzIGNoYW5n
ZWQuIE5vdGUKICAgICAvLyB0aGF0IHRoaXMgaXMgYXV0b21hdGljYWxseSBjYWxsZWQgaW4gZW5k
QmFzaWNCbG9jaygpIGlmIE1lcmdlTW9kZSBpcwogICAgIC8vIE1lcmdlVG9TdWNjZXNzb3JzLgot
ICAgIGJvb2wgbWVyZ2VUb1N1Y2Nlc3NvcnMoR3JhcGgmLCBCYXNpY0Jsb2NrKiwgQnJhbmNoRGly
ZWN0aW9uKTsKLQorICAgIGJvb2wgbWVyZ2VUb1N1Y2Nlc3NvcnMoR3JhcGgmLCBCYXNpY0Jsb2Nr
Kik7CisgICAgCiAgICAgdm9pZCBkdW1wKEZJTEUqIG91dCk7CiAgICAgCiBwcml2YXRlOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDEz
MzY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNs
dWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiREZHQnJhbmNoRGlyZWN0aW9uLmgi
CiAjaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgpAQCAtNDYsNiArNDcsNyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFZlY3Rv
cjxOb2RlSW5kZXgsIDg+CiAgICAgICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAg
ICAgLCBjZmFGb3VuZENvbnN0YW50cyhmYWxzZSkKICAgICAgICAgLCBjZmFEaWRGaW5pc2godHJ1
ZSkKKyAgICAgICAgLCBjZmFCcmFuY2hEaXJlY3Rpb24oSW52YWxpZEJyYW5jaERpcmVjdGlvbikK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICwgaXNMaW5rZWQoZmFsc2UpCiAjZW5kaWYK
QEAgLTEwNSw2ICsxMDcsNyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFZlY3RvcjxOb2RlSW5kZXgs
IDg+CiAgICAgYm9vbCBjZmFTaG91bGRSZXZpc2l0OwogICAgIGJvb2wgY2ZhRm91bmRDb25zdGFu
dHM7CiAgICAgYm9vbCBjZmFEaWRGaW5pc2g7CisgICAgQnJhbmNoRGlyZWN0aW9uIGNmYUJyYW5j
aERpcmVjdGlvbjsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBpc0xpbmtlZDsKICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCcmFuY2hEaXJlY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JyYW5jaERpcmVj
dGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCcmFu
Y2hEaXJlY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR0JyYW5jaERpcmVj
dGlvbl9oCisjZGVmaW5lIERGR0JyYW5jaERpcmVjdGlvbl9oCisKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CisKK2VudW0gQnJhbmNoRGlyZWN0aW9uIHsKKyAgICAvLyBUaGlzIGlzIG5vdCBh
IGJyYW5jaCBhbmQgc28gdGhlcmUgaXMgbm8gYnJhbmNoIGRpcmVjdGlvbiwgb3IKKyAgICAvLyB0
aGUgYnJhbmNoIGRpcmVjdGlvbiBoYXMgeWV0IHRvIGJlIHNldC4KKyAgICBJbnZhbGlkQnJhbmNo
RGlyZWN0aW9uLAorICAgICAgICAKKyAgICAvLyBUaGUgYnJhbmNoIHRha2VzIHRoZSB0cnVlIGNh
c2UuCisgICAgVGFrZVRydWUsCisgICAgICAgIAorICAgIC8vIFRoZSBicmFuY2ggdGFrZXMgdGhl
IGZhbHNlIGNhc2UuCisgICAgVGFrZUZhbHNlLAorICAgICAgICAKKyAgICAvLyBGb3IgYWxsIHdl
IGtub3csIHRoZSBicmFuY2ggY291bGQgZ28gZWl0aGVyIGRpcmVjdGlvbiwgc28gd2UKKyAgICAv
LyBoYXZlIHRvIGFzc3VtZSB0aGUgd29yc3QuCisgICAgVGFrZUJvdGgKK307CisgICAgCitzdGF0
aWMgaW5saW5lIGNvbnN0IGNoYXIqIGJyYW5jaERpcmVjdGlvblRvU3RyaW5nKEJyYW5jaERpcmVj
dGlvbiBicmFuY2hEaXJlY3Rpb24pCit7CisgICAgc3dpdGNoIChicmFuY2hEaXJlY3Rpb24pIHsK
KyAgICBjYXNlIEludmFsaWRCcmFuY2hEaXJlY3Rpb246CisgICAgICAgIHJldHVybiAiSW52YWxp
ZCI7CisgICAgY2FzZSBUYWtlVHJ1ZToKKyAgICAgICAgcmV0dXJuICJUYWtlVHJ1ZSI7CisgICAg
Y2FzZSBUYWtlRmFsc2U6CisgICAgICAgIHJldHVybiAiVGFrZUZhbHNlIjsKKyAgICBjYXNlIFRh
a2VCb3RoOgorICAgICAgICByZXR1cm4gIlRha2VCb3RoIjsKKyAgICB9Cit9CisgICAgCitzdGF0
aWMgaW5saW5lIGJvb2wgaXNLbm93bkRpcmVjdGlvbihCcmFuY2hEaXJlY3Rpb24gYnJhbmNoRGly
ZWN0aW9uKQoreworICAgIHN3aXRjaCAoYnJhbmNoRGlyZWN0aW9uKSB7CisgICAgY2FzZSBUYWtl
VHJ1ZToKKyAgICBjYXNlIFRha2VGYWxzZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdGljIGlubGluZSBi
b29sIGJyYW5jaENvbmRpdGlvbihCcmFuY2hEaXJlY3Rpb24gYnJhbmNoRGlyZWN0aW9uKQorewor
ICAgIGlmIChicmFuY2hEaXJlY3Rpb24gPT0gVGFrZVRydWUpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIEFTU0VSVChicmFuY2hEaXJlY3Rpb24gPT0gVGFrZUZhbHNlKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQorCisjZW5kaWYgLy8gREZHQnJhbmNoRGlyZWN0aW9uX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMTMzNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksOSArOTks
OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBCcmFu
Y2g6IHsKICAgICAgICAgICAgICAgICAgICAgLy8gQnJhbmNoIG9uIGNvbnN0YW50IC0+IGpldHRp
c29uIHRoZSBub3QtdGFrZW4gYmxvY2sgYW5kIG1lcmdlLgotICAgICAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaFttX2dyYXBoW2Jsb2NrLT5sYXN0KCldLmNoaWxkMSgpXS5oYXNDb25zdGFudCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbmRpdGlvbiA9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChtX2dyYXBoW2Jsb2Nr
LT5sYXN0KCldLmNoaWxkMSgpLmluZGV4KCkpLnRvQm9vbGVhbihtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX2dyYXBoW2Jsb2NrLT5sYXN0KCldLmNvZGVPcmlnaW4pLT5nbG9iYWxFeGVjKCkpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNLbm93bkRpcmVjdGlvbihibG9jay0+Y2ZhQnJhbmNo
RGlyZWN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb25kaXRpb24gPSBi
cmFuY2hDb25kaXRpb24oYmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiB0YXJnZXRCbG9jayA9IG1fZ3JhcGgubV9ibG9ja3NbCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5zdWNjZXNzb3JGb3JDb25kaXRpb24o
YmxvY2ssIGNvbmRpdGlvbildLmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRh
cmdldEJsb2NrLT5tX3ByZWRlY2Vzc29ycy5zaXplKCkgPT0gMSkgewpAQCAtNzMwLDYgKzcyOSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZpcnN0QmxvY2stPnZh
bHVlc0F0VGFpbCA9IHNlY29uZEJsb2NrLT52YWx1ZXNBdFRhaWw7CisgICAgICAgIGZpcnN0Qmxv
Y2stPmNmYUJyYW5jaERpcmVjdGlvbiA9IHNlY29uZEJsb2NrLT5jZmFCcmFuY2hEaXJlY3Rpb247
CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLm1fYmxvY2tzW3NlY29uZEJsb2NrSW5kZXhdLmNs
ZWFyKCk7CiAgICAgfQo=
</data>
<flag name="review"
          id="187353"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173471</attachid>
            <date>2012-11-10 14:04:34 -0800</date>
            <delta_ts>2012-11-10 14:05:31 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>bool.patch</filename>
            <type>text/plain</type>
            <size>21635</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM0MTYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDEyLTExLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGNvbnN0YW50IGZvbGRpbmcgYW5kIENGRyBzaW1wbGlmaWNhdGlvbiBzaG91bGQgYmUgc21h
cnQgZW5vdWdoIHRvIGtub3cgdGhhdCBpZiBhIGxvZ2ljYWwgb3AncyBvcGVyYW5kIGlzIHByb3Zl
biB0byBoYXZlIGEgbm9uLW1hc3F1ZXJhZGluZyBzdHJ1Y3R1cmUgdGhlbiBpdCBhbHdheXMgZXZh
bHVhdGVzIHRvIHRydWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMTUxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEhKS4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgaXMgdGhlIHNlY29uZCBhdHRlbXB0IGF0IHRoaXMgcGF0Y2gs
IHdoaWNoIGZpeGVzIHRoZSAhIiIgY2FzZS4KKworICAgICAgICBUbyBtYWtlIGxpZmUgZWFzaWVy
LCB0aGlzIG1vdmVzIEJyYW5jaERpcmVjdGlvbiBpbnRvIEJhc2ljQmxvY2sgc28gdGhhdCBhZnRl
cgorICAgICAgICBydW5uaW5nIHRoZSBDRkEsIHdlIGFsd2F5cyBrbm93LCBmb3IgZWFjaCBibG9j
aywgd2hhdCBkaXJlY3Rpb24gdGhlIENGQQorICAgICAgICBwcm92ZWQuIENGRyBzaW1wbGlmaWNh
dGlvbiBub3cgYm90aCB1c2VzIGFuZCBwcmVzZXJ2ZXMgY2ZhQnJhbmNoRGlyZWN0aW9uIGluCisg
ICAgICAgIGl0cyB0cmFuc2Zvcm1hdGlvbnMuCisgICAgICAgIAorICAgICAgICBBbHNvIG1hZGUg
Ym90aCBMb2dpY2FsTm90IGFuZCBCcmFuY2ggY2hlY2sgd2hldGhlciB0aGUgb3BlcmFuZCBpcyBh
IGtub3duIGNlbGwKKyAgICAgICAgd2l0aCBhIGtub3duIHN0cnVjdHVyZSwgYW5kIGlmIHNvLCBt
YWRlIHRoZW0gZG8gdGhlIGFwcHJvcHJpYXRlIGZvbGRpbmcuCisgICAgICAgIAorICAgICAgICA1
JSBzcGVlZC11cCBvbiBWOC9yYXl0cmFjZSBiZWNhdXNlIGl0IG1ha2VzIHJheXRyYWNlJ3Mgb3du
IG51bGwgY2hlY2tzCisgICAgICAgIGV2YXBvcmF0ZSAoaS5lLiBpZGlvbXMgbGlrZSAnaWYgKCF4
KSB0aHJvdyAidW5oYXBwaW5lc3MiJykgdGhhbmtzIHRvIHRoZSBmYWN0CisgICAgICAgIHRoYXQg
d2Ugd2VyZSBhbHJlYWR5IGRvaW5nIHN0cnVjdHVyZSBjaGVjayBob2lzdGluZy4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3Rh
dGU6OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4
ZWN1dGUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6Om1lcmdlVG9TdWNjZXNz
b3JzKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoQWJzdHJh
Y3RTdGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoKKyAgICAgICAgKEpTQzo6
REZHOjpCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKToKKyAgICAgICAgKEJhc2ljQmxvY2spOgorICAg
ICAgICAqIGRmZy9ERkdCcmFuY2hEaXJlY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChERkcpOgor
ICAgICAgICAoSlNDOjpERkc6OmJyYW5jaERpcmVjdGlvblRvU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjppc0tub3duRGlyZWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpicmFuY2hDb25k
aXRpb24pOgorICAgICAgICAqIGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAo
SlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6Om1lcmdlQmxvY2tzKToKKwogMjAxMi0x
MS0xMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzMzk3MS4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzQxNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTY1LDYgKzE2NSw3IEBACiAJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdCeXRl
Q29kZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVDYWNoZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGN0IyOTREMTRDM0NE
NEMwMDdDM0RCMSAvKiBERkdDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgwMjNF
QTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJ
bmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY4MzY0QjcxNjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzY0QjUxNjRCMEMwRTAw
NTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5
MTlEMEMxNTdFRTA5RjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMDkxNTdFRTA5RDAw
NEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwICovOyB9OwpAQCAtOTUzLDYgKzk1NCw3
IEBACiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIxIC8q
IERGR0NDYWxsSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdD
Q2FsbEhlbHBlcnMuaDsgcGF0aCA9IGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeVZhbEluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4MzY0QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5j
aERpcmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCcmFuY2hE
aXJlY3Rpb24uaDsgcGF0aCA9IGRmZy9ERkdCcmFuY2hEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
ODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMDkxNTdFRTA5RDAwNEE0RTdEIC8qIEpT
U3ltYm9sVGFibGVPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTeW1ib2xUYWJsZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMzY2LDYgKzIzNjgsNyBAQAogCQkJCTBGQzA5NzZCMTQ2OEFCNEEwMENGMjQ0MiAvKiBERkdB
c3NlbWJseUhlbHBlcnMuY3BwICovLAogCQkJCTBGQzA5NzZDMTQ2OEFCNEEwMENGMjQ0MiAvKiBE
RkdBc3NlbWJseUhlbHBlcnMuaCAqLywKIAkJCQkwRjYyMDE3MDE0M0ZDRDJGMDA2OEI3N0MgLyog
REZHQmFzaWNCbG9jay5oICovLAorCQkJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdC
cmFuY2hEaXJlY3Rpb24uaCAqLywKIAkJCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZH
Qnl0ZUNvZGVDYWNoZS5oICovLAogCQkJCTg2RUM5REI0MTMyOERGODIwMDJCMkFENyAvKiBERkdC
eXRlQ29kZVBhcnNlci5jcHAgKi8sCiAJCQkJODZFQzlEQjUxMzI4REY4MjAwMkIyQUQ3IC8qIERG
R0J5dGVDb2RlUGFyc2VyLmggKi8sCkBAIC0zMDE0LDYgKzMwMTcsNyBAQAogCQkJCTBGRUIzRUNE
MTYyMzdGNEQwMEFCNjdBRCAvKiBUeXBlZEFycmF5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNs
b3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjIzOUQxQjE2MjYyQkREMDA1
QUM1RkQgLyogR0NUaHJlYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGODM2NEI3MTY0QjBDMTEw
MDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMz
NUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5saW5rZWRDb2RlQmxvY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0YxODIyMTY0MDg4QjIwMDY0MEE0NyAvKiBDb2RlQ2Fj
aGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMzQxNjEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTks
NyArMTU5LDcgQEAgdm9pZCBBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKEdyYXBoJiBncgogICAg
IH0KIH0KIAotYm9vbCBBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1lcmdlTW9kZSBtZXJn
ZU1vZGUsIEJyYW5jaERpcmVjdGlvbiogYnJhbmNoRGlyZWN0aW9uUHRyKQorYm9vbCBBYnN0cmFj
dFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1lcmdlTW9kZSBtZXJnZU1vZGUpCiB7CiAgICAgQVNTRVJU
KG1fYmxvY2spOwogICAgIApAQCAtMTY3LDYgKzE2Nyw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6
ZW5kQmFzaWNCbG9jayhNZXJnZU0KICAgICAKICAgICBibG9jay0+Y2ZhRm91bmRDb25zdGFudHMg
PSBtX2ZvdW5kQ29uc3RhbnRzOwogICAgIGJsb2NrLT5jZmFEaWRGaW5pc2ggPSBtX2lzVmFsaWQ7
CisgICAgYmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbiA9IG1fYnJhbmNoRGlyZWN0aW9uOwogICAg
IAogICAgIGlmICghbV9pc1ZhbGlkKSB7CiAgICAgICAgIHJlc2V0KCk7CkBAIC0xOTUsMTIgKzE5
Niw4IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayhNZXJnZU0KICAgICAKICAg
ICBBU1NFUlQobWVyZ2VNb2RlICE9IERvbnRNZXJnZSB8fCAhY2hhbmdlZCk7CiAgICAgCi0gICAg
QnJhbmNoRGlyZWN0aW9uIGJyYW5jaERpcmVjdGlvbiA9IG1fYnJhbmNoRGlyZWN0aW9uOwotICAg
IGlmIChicmFuY2hEaXJlY3Rpb25QdHIpCi0gICAgICAgICpicmFuY2hEaXJlY3Rpb25QdHIgPSBi
cmFuY2hEaXJlY3Rpb247Ci0gICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9W
RVJCT1NFKQotICAgIGRhdGFMb2coIiAgICAgICAgQnJhbmNoIGRpcmVjdGlvbiA9ICVzXG4iLCBi
cmFuY2hEaXJlY3Rpb25Ub1N0cmluZyhicmFuY2hEaXJlY3Rpb24pKTsKKyAgICBkYXRhTG9nKCIg
ICAgICAgIEJyYW5jaCBkaXJlY3Rpb24gPSAlc1xuIiwgYnJhbmNoRGlyZWN0aW9uVG9TdHJpbmco
bV9icmFuY2hEaXJlY3Rpb24pKTsKICNlbmRpZgogICAgIAogICAgIHJlc2V0KCk7CkBAIC0yMDgs
NyArMjA1LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1lcmdlTQogICAg
IGlmIChtZXJnZU1vZGUgIT0gTWVyZ2VUb1N1Y2Nlc3NvcnMpCiAgICAgICAgIHJldHVybiBjaGFu
Z2VkOwogICAgIAotICAgIHJldHVybiBtZXJnZVRvU3VjY2Vzc29ycyhtX2dyYXBoLCBibG9jaywg
YnJhbmNoRGlyZWN0aW9uKTsKKyAgICByZXR1cm4gbWVyZ2VUb1N1Y2Nlc3NvcnMobV9ncmFwaCwg
YmxvY2spOwogfQogCiB2b2lkIEFic3RyYWN0U3RhdGU6OnJlc2V0KCkKQEAgLTIxOCw2ICsyMTUs
MjcgQEAgdm9pZCBBYnN0cmFjdFN0YXRlOjpyZXNldCgpCiAgICAgbV9icmFuY2hEaXJlY3Rpb24g
PSBJbnZhbGlkQnJhbmNoRGlyZWN0aW9uOwogfQogCitBYnN0cmFjdFN0YXRlOjpCb29sZWFuUmVz
dWx0IEFic3RyYWN0U3RhdGU6OmJvb2xlYW5SZXN1bHQoTm9kZSYgbm9kZSwgQWJzdHJhY3RWYWx1
ZSYgdmFsdWUpCit7CisgICAgSlNWYWx1ZSBjaGlsZENvbnN0ID0gdmFsdWUudmFsdWUoKTsKKyAg
ICBpZiAoY2hpbGRDb25zdCkgeworICAgICAgICBpZiAoY2hpbGRDb25zdC50b0Jvb2xlYW4obV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5nbG9iYWxFeGVjKCkp
KQorICAgICAgICAgICAgcmV0dXJuIERlZmluaXRlbHlUcnVlOworICAgICAgICByZXR1cm4gRGVm
aW5pdGVseUZhbHNlOworICAgIH0KKworICAgIC8vIE5leHQgY2hlY2sgaWYgd2UgY2FuIGZvbGQg
YmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNvdXJjZSBpcyBhbiBvYmplY3Qgb3Igc3RyaW5nIGFu
ZCBkb2VzIG5vdCBlcXVhbCB1bmRlZmluZWQuCisgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHZh
bHVlLm1fdHlwZSkKKyAgICAgICAgJiYgdmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaGFz
U2luZ2xldG9uKCkpIHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS5tX2N1
cnJlbnRLbm93blN0cnVjdHVyZS5zaW5nbGV0b24oKTsKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUt
Pm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2Rl
LmNvZGVPcmlnaW4pKQorICAgICAgICAgICAgJiYgc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUo
KSAhPSBTdHJpbmdUeXBlKQorICAgICAgICAgICAgcmV0dXJuIERlZmluaXRlbHlUcnVlOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gVW5rbm93bkJvb2xlYW5SZXN1bHQ7Cit9CisKIGJvb2wgQWJz
dHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmRleEluQmxvY2spCiB7CiAgICAgQVNTRVJU
KG1fYmxvY2spOwpAQCAtNjE2LDggKzYzNCwxOCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1
dGUodW5zaWduZWQgaW5kCiAgICAgfQogICAgICAgICAgICAgCiAgICAgY2FzZSBMb2dpY2FsTm90
OiB7Ci0gICAgICAgIEpTVmFsdWUgY2hpbGRDb25zdCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSku
dmFsdWUoKTsKLSAgICAgICAgaWYgKGNoaWxkQ29uc3QgJiYgdHJ5U2V0Q29uc3RhbnQobm9kZUlu
ZGV4LCBqc0Jvb2xlYW4oIWNoaWxkQ29uc3QudG9Cb29sZWFuKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+Z2xvYmFsRXhlYygpKSkpKSB7CisgICAgICAgIGJv
b2wgZGlkU2V0Q29uc3RhbnQgPSBmYWxzZTsKKyAgICAgICAgc3dpdGNoIChib29sZWFuUmVzdWx0
KG5vZGUsIGZvck5vZGUobm9kZS5jaGlsZDEoKSkpKSB7CisgICAgICAgIGNhc2UgRGVmaW5pdGVs
eVRydWU6CisgICAgICAgICAgICBkaWRTZXRDb25zdGFudCA9IHRyeVNldENvbnN0YW50KG5vZGVJ
bmRleCwganNCb29sZWFuKGZhbHNlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBEZWZpbml0ZWx5RmFsc2U6CisgICAgICAgICAgICBkaWRTZXRDb25zdGFudCA9IHRyeVNldENv
bnN0YW50KG5vZGVJbmRleCwganNCb29sZWFuKHRydWUpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGRpZFNldENvbnN0YW50KSB7CiAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1
ZTsKICAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTExMDUsMjMgKzExMzMsMjEgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVu
c2lnbmVkIGluZAogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgQnJhbmNo
OiB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVl
KCk7Ci0gICAgICAgIGlmICh2YWx1ZSkgewotICAgICAgICAgICAgYm9vbCBib29sZWFuVmFsdWUg
PSB2YWx1ZS50b0Jvb2xlYW4obV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVP
cmlnaW4pLT5nbG9iYWxFeGVjKCkpOwotICAgICAgICAgICAgaWYgKGJvb2xlYW5WYWx1ZSkKLSAg
ICAgICAgICAgICAgICBtX2JyYW5jaERpcmVjdGlvbiA9IFRha2VUcnVlOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIG1fYnJhbmNoRGlyZWN0aW9uID0gVGFrZUZhbHNlOworICAg
ICAgICBCb29sZWFuUmVzdWx0IHJlc3VsdCA9IGJvb2xlYW5SZXN1bHQobm9kZSwgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKSk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gRGVmaW5pdGVseVRydWUpIHsK
KyAgICAgICAgICAgIG1fYnJhbmNoRGlyZWN0aW9uID0gVGFrZVRydWU7CisgICAgICAgICAgICBu
b2RlLnNldENhbkV4aXQoZmFsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHJlc3VsdCA9PSBEZWZpbml0ZWx5RmFsc2UpIHsKKyAgICAgICAgICAgIG1fYnJh
bmNoRGlyZWN0aW9uID0gVGFrZUZhbHNlOwogICAgICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KGZh
bHNlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBU
aGUgYWJvdmUgaGFuZGxlcyB0aGUgdHJpdmlhbCBjYXNlcyBvZiBzcGFyc2UgY29uZGl0aW9uYWwK
ICAgICAgICAgLy8gY29uc3RhbnQgcHJvcGFnYXRpb24sIGJ1dCB3ZSBjYW4gZG8gYmV0dGVyOgot
ICAgICAgICAvLyAxKSBJZiB0aGUgYWJzdHJhY3QgdmFsdWUgZG9lcyBub3QgaGF2ZSBhIGNvbmNy
ZXRlIHZhbHVlIGJ1dCBkZXNjcmliZXMKLSAgICAgICAgLy8gICAgc29tZXRoaW5nIHRoYXQgaXMg
a25vd24gdG8gZXZhbHVhdGUgdHJ1ZSAob3IgZmFsc2UpIHRoZW4gd2Ugb3VnaHQKLSAgICAgICAg
Ly8gICAgdG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoYXQuCi0gICAgICAgIC8vIDIpIFdlIGNhbiBz
cGVjaWFsaXplIHRoZSBzb3VyY2UgdmFyaWFibGUncyB2YWx1ZSBvbiBlYWNoIGRpcmVjdGlvbiBv
ZgotICAgICAgICAvLyAgICB0aGUgYnJhbmNoLgorICAgICAgICAvLyBXZSBjYW4gc3BlY2lhbGl6
ZSB0aGUgc291cmNlIHZhcmlhYmxlJ3MgdmFsdWUgb24gZWFjaCBkaXJlY3Rpb24gb2YKKyAgICAg
ICAgLy8gdGhlIGJyYW5jaC4KICAgICAgICAgTm9kZSYgY2hpbGQgPSBtX2dyYXBoW25vZGUuY2hp
bGQxKCldOwogICAgICAgICBpZiAoY2hpbGQuc2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKQogICAg
ICAgICAgICAgc3BlY3VsYXRlQm9vbGVhblVuYXJ5KG5vZGUpOwpAQCAtMTc4NCw3ICsxODEwLDcg
QEAgaW5saW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbAogfQogCiBpbmxpbmUg
Ym9vbCBBYnN0cmFjdFN0YXRlOjptZXJnZVRvU3VjY2Vzc29ycygKLSAgICBHcmFwaCYgZ3JhcGgs
IEJhc2ljQmxvY2sqIGJhc2ljQmxvY2ssIEJyYW5jaERpcmVjdGlvbiBicmFuY2hEaXJlY3Rpb24p
CisgICAgR3JhcGgmIGdyYXBoLCBCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrKQogewogICAgIE5vZGUm
IHRlcm1pbmFsID0gZ3JhcGhbYmFzaWNCbG9jay0+bGFzdCgpXTsKICAgICAKQEAgLTE3OTIsNyAr
MTgxOCw3IEBAIGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlVG9TdWNjZXMKICAgICAK
ICAgICBzd2l0Y2ggKHRlcm1pbmFsLm9wKCkpIHsKICAgICBjYXNlIEp1bXA6IHsKLSAgICAgICAg
QVNTRVJUKGJyYW5jaERpcmVjdGlvbiA9PSBJbnZhbGlkQnJhbmNoRGlyZWN0aW9uKTsKKyAgICAg
ICAgQVNTRVJUKGJhc2ljQmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbiA9PSBJbnZhbGlkQnJhbmNo
RGlyZWN0aW9uKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAg
ICAgICAgIGRhdGFMb2coIiAgICAgICAgTWVyZ2luZyB0byBibG9jayAjJXUuXG4iLCB0ZXJtaW5h
bC50YWtlbkJsb2NrSW5kZXgoKSk7CiAjZW5kaWYKQEAgLTE4MDAsMTcgKzE4MjYsMTcgQEAgaW5s
aW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUb1N1Y2NlcwogICAgIH0KICAgICAgICAgCiAg
ICAgY2FzZSBCcmFuY2g6IHsKLSAgICAgICAgQVNTRVJUKGJyYW5jaERpcmVjdGlvbiAhPSBJbnZh
bGlkQnJhbmNoRGlyZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2stPmNmYUJyYW5j
aERpcmVjdGlvbiAhPSBJbnZhbGlkQnJhbmNoRGlyZWN0aW9uKTsKICAgICAgICAgYm9vbCBjaGFu
Z2VkID0gZmFsc2U7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQog
ICAgICAgICBkYXRhTG9nKCIgICAgICAgIE1lcmdpbmcgdG8gYmxvY2sgIyV1LlxuIiwgdGVybWlu
YWwudGFrZW5CbG9ja0luZGV4KCkpOwogI2VuZGlmCi0gICAgICAgIGlmIChicmFuY2hEaXJlY3Rp
b24gIT0gVGFrZUZhbHNlKQorICAgICAgICBpZiAoYmFzaWNCbG9jay0+Y2ZhQnJhbmNoRGlyZWN0
aW9uICE9IFRha2VGYWxzZSkKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9j
aywgZ3JhcGgubV9ibG9ja3NbdGVybWluYWwudGFrZW5CbG9ja0luZGV4KCldLmdldCgpKTsKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIGRhdGFMb2co
IiAgICAgICAgTWVyZ2luZyB0byBibG9jayAjJXUuXG4iLCB0ZXJtaW5hbC5ub3RUYWtlbkJsb2Nr
SW5kZXgoKSk7CiAjZW5kaWYKLSAgICAgICAgaWYgKGJyYW5jaERpcmVjdGlvbiAhPSBUYWtlVHJ1
ZSkKKyAgICAgICAgaWYgKGJhc2ljQmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbiAhPSBUYWtlVHJ1
ZSkKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgZ3JhcGgubV9ibG9j
a3NbdGVybWluYWwubm90VGFrZW5CbG9ja0luZGV4KCldLmdldCgpKTsKICAgICAgICAgcmV0dXJu
IGNoYW5nZWQ7CiAgICAgfQpAQCAtMTgxOCw3ICsxODQ0LDcgQEAgaW5saW5lIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6bWVyZ2VUb1N1Y2NlcwogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGhyb3c6
CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgotICAgICAgICBBU1NFUlQoYnJhbmNoRGly
ZWN0aW9uID09IEludmFsaWRCcmFuY2hEaXJlY3Rpb24pOworICAgICAgICBBU1NFUlQoYmFzaWNC
bG9jay0+Y2ZhQnJhbmNoRGlyZWN0aW9uID09IEludmFsaWRCcmFuY2hEaXJlY3Rpb24pOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAkocmV2aXNpb24gMTM0MTYx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMxLDYgKzMxLDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUg
IkRGR0Fic3RyYWN0VmFsdWUuaCIKKyNpbmNsdWRlICJERkdCcmFuY2hEaXJlY3Rpb24uaCIKICNp
bmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC05MiwzNiArOTMsNiBAQCBwdWJsaWM6CiAgICAgICAgIE1lcmdlVG9TdWNj
ZXNzb3JzCiAgICAgfTsKICAgICAKLSAgICBlbnVtIEJyYW5jaERpcmVjdGlvbiB7Ci0gICAgICAg
IC8vIFRoaXMgaXMgbm90IGEgYnJhbmNoIGFuZCBzbyB0aGVyZSBpcyBubyBicmFuY2ggZGlyZWN0
aW9uLCBvcgotICAgICAgICAvLyB0aGUgYnJhbmNoIGRpcmVjdGlvbiBoYXMgeWV0IHRvIGJlIHNl
dC4KLSAgICAgICAgSW52YWxpZEJyYW5jaERpcmVjdGlvbiwKLSAgICAgICAgCi0gICAgICAgIC8v
IFRoZSBicmFuY2ggdGFrZXMgdGhlIHRydWUgY2FzZS4KLSAgICAgICAgVGFrZVRydWUsCi0gICAg
ICAgIAotICAgICAgICAvLyBUaGUgYnJhbmNoIHRha2VzIHRoZSBmYWxzZSBjYXNlLgotICAgICAg
ICBUYWtlRmFsc2UsCi0gICAgICAgIAotICAgICAgICAvLyBGb3IgYWxsIHdlIGtub3csIHRoZSBi
cmFuY2ggY291bGQgZ28gZWl0aGVyIGRpcmVjdGlvbiwgc28gd2UKLSAgICAgICAgLy8gaGF2ZSB0
byBhc3N1bWUgdGhlIHdvcnN0LgotICAgICAgICBUYWtlQm90aAotICAgIH07Ci0gICAgCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIqIGJyYW5jaERpcmVjdGlvblRvU3RyaW5nKEJyYW5jaERpcmVjdGlv
biBicmFuY2hEaXJlY3Rpb24pCi0gICAgewotICAgICAgICBzd2l0Y2ggKGJyYW5jaERpcmVjdGlv
bikgewotICAgICAgICBjYXNlIEludmFsaWRCcmFuY2hEaXJlY3Rpb246Ci0gICAgICAgICAgICBy
ZXR1cm4gIkludmFsaWQiOwotICAgICAgICBjYXNlIFRha2VUcnVlOgotICAgICAgICAgICAgcmV0
dXJuICJUYWtlVHJ1ZSI7Ci0gICAgICAgIGNhc2UgVGFrZUZhbHNlOgotICAgICAgICAgICAgcmV0
dXJuICJUYWtlRmFsc2UiOwotICAgICAgICBjYXNlIFRha2VCb3RoOgotICAgICAgICAgICAgcmV0
dXJuICJUYWtlQm90aCI7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBBYnN0cmFjdFN0YXRlKEdy
YXBoJik7CiAgICAgCiAgICAgfkFic3RyYWN0U3RhdGUoKTsKQEAgLTE3NCwxMSArMTQ1LDcgQEAg
cHVibGljOgogICAgIC8vICAgIEEgdHJ1ZSByZXR1cm4gbWVhbnMgdGhhdCB5b3UgbXVzdCByZXZp
c2l0IChhdCBsZWFzdCkgdGhlIHN1Y2Nlc3NvcgogICAgIC8vICAgIGJsb2Nrcy4gVGhpcyBhbHNv
IHNldHMgY2ZhU2hvdWxkUmV2aXNpdCB0byB0cnVlIGZvciBiYXNpYyBibG9ja3MKICAgICAvLyAg
ICB0aGF0IG11c3QgYmUgdmlzaXRlZCBuZXh0LgotICAgIC8vCi0gICAgLy8gSWYgeW91J2QgbGlr
ZSB0byBrbm93IHdoYXQgZGlyZWN0aW9uIHRoZSBicmFuY2ggYXQgdGhlIGVuZCBvZiB0aGUKLSAg
ICAvLyBiYXNpYyBibG9jayBpcyB0aG91Z2h0IHRvIGhhdmUgdGFrZW4sIHlvdSBjYW4gcGFzcyBh
IG5vbi0wIHBvaW50ZXIKLSAgICAvLyBmb3IgQnJhbmNoRGlyZWN0aW9uLgotICAgIGJvb2wgZW5k
QmFzaWNCbG9jayhNZXJnZU1vZGUsIEJyYW5jaERpcmVjdGlvbiogPSAwKTsKKyAgICBib29sIGVu
ZEJhc2ljQmxvY2soTWVyZ2VNb2RlKTsKICAgICAKICAgICAvLyBSZXNldCB0aGUgQWJzdHJhY3RT
dGF0ZS4gVGhpcyB0aHJvd3MgYXdheSBhbnkgcmVzdWx0cywgYW5kIGF0IHRoaXMgcG9pbnQKICAg
ICAvLyB5b3UgY2FuIHNhZmVseSBjYWxsIGJlZ2luQmFzaWNCbG9jaygpIG9uIGFueSBiYXNpYyBi
bG9jay4KQEAgLTIxMSw4ICsxNzgsOCBAQCBwdWJsaWM6CiAgICAgLy8gc3VjY2Vzc29ycy4gUmV0
dXJucyB0cnVlIGlmIGFueSBvZiB0aGUgc3VjY2Vzc29ycycgc3RhdGVzIGNoYW5nZWQuIE5vdGUK
ICAgICAvLyB0aGF0IHRoaXMgaXMgYXV0b21hdGljYWxseSBjYWxsZWQgaW4gZW5kQmFzaWNCbG9j
aygpIGlmIE1lcmdlTW9kZSBpcwogICAgIC8vIE1lcmdlVG9TdWNjZXNzb3JzLgotICAgIGJvb2wg
bWVyZ2VUb1N1Y2Nlc3NvcnMoR3JhcGgmLCBCYXNpY0Jsb2NrKiwgQnJhbmNoRGlyZWN0aW9uKTsK
LQorICAgIGJvb2wgbWVyZ2VUb1N1Y2Nlc3NvcnMoR3JhcGgmLCBCYXNpY0Jsb2NrKik7CisgICAg
CiAgICAgdm9pZCBkdW1wKEZJTEUqIG91dCk7CiAgICAgCiBwcml2YXRlOgpAQCAtMjY4LDYgKzIz
NSwxMyBAQCBwcml2YXRlOgogICAgICAgICBjaGlsZFZhbHVlMi5maWx0ZXIoU3BlY051bWJlcik7
CiAgICAgfQogICAgIAorICAgIGVudW0gQm9vbGVhblJlc3VsdCB7CisgICAgICAgIFVua25vd25C
b29sZWFuUmVzdWx0LAorICAgICAgICBEZWZpbml0ZWx5RmFsc2UsCisgICAgICAgIERlZmluaXRl
bHlUcnVlCisgICAgfTsKKyAgICBCb29sZWFuUmVzdWx0IGJvb2xlYW5SZXN1bHQoTm9kZSYsIEFi
c3RyYWN0VmFsdWUmKTsKKyAgICAKICAgICBib29sIHRyeVNldENvbnN0YW50KE5vZGVJbmRleCBu
b2RlSW5kZXgsIEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBNYWtlIHN1cmUgd2Ug
ZG9uJ3QgY29uc3RhbnQgZm9sZCBzb21ldGhpbmcgdGhhdCB3aWxsIHByb2R1Y2UgdmFsdWVzIHRo
YXQgY29udHJhdmVuZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgJKHJldmlzaW9uIDEzNDE2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxF
KERGR19KSVQpCiAKICNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiREZH
QnJhbmNoRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIk9wZXJh
bmRzLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDYsNiArNDcsNyBAQCBzdHJ1Y3Qg
QmFzaWNCbG9jayA6IFZlY3RvcjxOb2RlSW5kZXgsIDg+CiAgICAgICAgICwgY2ZhU2hvdWxkUmV2
aXNpdChmYWxzZSkKICAgICAgICAgLCBjZmFGb3VuZENvbnN0YW50cyhmYWxzZSkKICAgICAgICAg
LCBjZmFEaWRGaW5pc2godHJ1ZSkKKyAgICAgICAgLCBjZmFCcmFuY2hEaXJlY3Rpb24oSW52YWxp
ZEJyYW5jaERpcmVjdGlvbikKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICwgaXNMaW5r
ZWQoZmFsc2UpCiAjZW5kaWYKQEAgLTEwNSw2ICsxMDcsNyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6
IFZlY3RvcjxOb2RlSW5kZXgsIDg+CiAgICAgYm9vbCBjZmFTaG91bGRSZXZpc2l0OwogICAgIGJv
b2wgY2ZhRm91bmRDb25zdGFudHM7CiAgICAgYm9vbCBjZmFEaWRGaW5pc2g7CisgICAgQnJhbmNo
RGlyZWN0aW9uIGNmYUJyYW5jaERpcmVjdGlvbjsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAg
Ym9vbCBpc0xpbmtlZDsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCcmFuY2hEaXJlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCcmFuY2hEaXJlY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIERGR0JyYW5jaERpcmVjdGlvbl9oCisjZGVmaW5lIERGR0JyYW5jaERpcmVjdGlvbl9oCisK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2VudW0gQnJhbmNoRGlyZWN0aW9uIHsKKyAg
ICAvLyBUaGlzIGlzIG5vdCBhIGJyYW5jaCBhbmQgc28gdGhlcmUgaXMgbm8gYnJhbmNoIGRpcmVj
dGlvbiwgb3IKKyAgICAvLyB0aGUgYnJhbmNoIGRpcmVjdGlvbiBoYXMgeWV0IHRvIGJlIHNldC4K
KyAgICBJbnZhbGlkQnJhbmNoRGlyZWN0aW9uLAorICAgICAgICAKKyAgICAvLyBUaGUgYnJhbmNo
IHRha2VzIHRoZSB0cnVlIGNhc2UuCisgICAgVGFrZVRydWUsCisgICAgICAgIAorICAgIC8vIFRo
ZSBicmFuY2ggdGFrZXMgdGhlIGZhbHNlIGNhc2UuCisgICAgVGFrZUZhbHNlLAorICAgICAgICAK
KyAgICAvLyBGb3IgYWxsIHdlIGtub3csIHRoZSBicmFuY2ggY291bGQgZ28gZWl0aGVyIGRpcmVj
dGlvbiwgc28gd2UKKyAgICAvLyBoYXZlIHRvIGFzc3VtZSB0aGUgd29yc3QuCisgICAgVGFrZUJv
dGgKK307CisgICAgCitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGJyYW5jaERpcmVjdGlvblRv
U3RyaW5nKEJyYW5jaERpcmVjdGlvbiBicmFuY2hEaXJlY3Rpb24pCit7CisgICAgc3dpdGNoIChi
cmFuY2hEaXJlY3Rpb24pIHsKKyAgICBjYXNlIEludmFsaWRCcmFuY2hEaXJlY3Rpb246CisgICAg
ICAgIHJldHVybiAiSW52YWxpZCI7CisgICAgY2FzZSBUYWtlVHJ1ZToKKyAgICAgICAgcmV0dXJu
ICJUYWtlVHJ1ZSI7CisgICAgY2FzZSBUYWtlRmFsc2U6CisgICAgICAgIHJldHVybiAiVGFrZUZh
bHNlIjsKKyAgICBjYXNlIFRha2VCb3RoOgorICAgICAgICByZXR1cm4gIlRha2VCb3RoIjsKKyAg
ICB9Cit9CisgICAgCitzdGF0aWMgaW5saW5lIGJvb2wgaXNLbm93bkRpcmVjdGlvbihCcmFuY2hE
aXJlY3Rpb24gYnJhbmNoRGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoYnJhbmNoRGlyZWN0aW9u
KSB7CisgICAgY2FzZSBUYWtlVHJ1ZToKKyAgICBjYXNlIFRha2VGYWxzZToKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
Kworc3RhdGljIGlubGluZSBib29sIGJyYW5jaENvbmRpdGlvbihCcmFuY2hEaXJlY3Rpb24gYnJh
bmNoRGlyZWN0aW9uKQoreworICAgIGlmIChicmFuY2hEaXJlY3Rpb24gPT0gVGFrZVRydWUpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIEFTU0VSVChicmFuY2hEaXJlY3Rpb24gPT0gVGFrZUZh
bHNlKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
KworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHQnJhbmNoRGlyZWN0
aW9uX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
RkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTM0MTYxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTksOSArOTksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgY2FzZSBCcmFuY2g6IHsKICAgICAgICAgICAgICAgICAgICAgLy8gQnJhbmNoIG9u
IGNvbnN0YW50IC0+IGpldHRpc29uIHRoZSBub3QtdGFrZW4gYmxvY2sgYW5kIG1lcmdlLgotICAg
ICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaFttX2dyYXBoW2Jsb2NrLT5sYXN0KCldLmNoaWxk
MSgpXS5oYXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbmRp
dGlvbiA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC52YWx1ZU9mSlNDb25z
dGFudChtX2dyYXBoW2Jsb2NrLT5sYXN0KCldLmNoaWxkMSgpLmluZGV4KCkpLnRvQm9vbGVhbiht
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX2dyYXBoW2Jsb2NrLT5sYXN0KCldLmNvZGVPcmlnaW4p
LT5nbG9iYWxFeGVjKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNLbm93bkRpcmVjdGlv
bihibG9jay0+Y2ZhQnJhbmNoRGlyZWN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBjb25kaXRpb24gPSBicmFuY2hDb25kaXRpb24oYmxvY2stPmNmYUJyYW5jaERpcmVjdGlv
bik7CiAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiB0YXJnZXRCbG9jayA9IG1f
Z3JhcGgubV9ibG9ja3NbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5zdWNj
ZXNzb3JGb3JDb25kaXRpb24oYmxvY2ssIGNvbmRpdGlvbildLmdldCgpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRhcmdldEJsb2NrLT5tX3ByZWRlY2Vzc29ycy5zaXplKCkgPT0gMSkg
ewpAQCAtNzMwLDYgKzcyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGZpcnN0QmxvY2stPnZhbHVlc0F0VGFpbCA9IHNlY29uZEJsb2NrLT52YWx1ZXNBdFRhaWw7
CisgICAgICAgIGZpcnN0QmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbiA9IHNlY29uZEJsb2NrLT5j
ZmFCcmFuY2hEaXJlY3Rpb247CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLm1fYmxvY2tzW3Nl
Y29uZEJsb2NrSW5kZXhdLmNsZWFyKCk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173473</attachid>
            <date>2012-11-10 14:05:31 -0800</date>
            <delta_ts>2012-11-10 15:32:20 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>bool.patch</filename>
            <type>text/plain</type>
            <size>21625</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM0MTYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDEyLTExLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGNvbnN0YW50IGZvbGRpbmcgYW5kIENGRyBzaW1wbGlmaWNhdGlvbiBzaG91bGQgYmUgc21h
cnQgZW5vdWdoIHRvIGtub3cgdGhhdCBpZiBhIGxvZ2ljYWwgb3AncyBvcGVyYW5kIGlzIHByb3Zl
biB0byBoYXZlIGEgbm9uLW1hc3F1ZXJhZGluZyBzdHJ1Y3R1cmUgdGhlbiBpdCBhbHdheXMgZXZh
bHVhdGVzIHRvIHRydWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMTUxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEhKS4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgaXMgdGhlIHNlY29uZCBhdHRlbXB0IGF0IHRoaXMgcGF0Y2gs
IHdoaWNoIGZpeGVzIHRoZSAhIiIgY2FzZS4KKworICAgICAgICBUbyBtYWtlIGxpZmUgZWFzaWVy
LCB0aGlzIG1vdmVzIEJyYW5jaERpcmVjdGlvbiBpbnRvIEJhc2ljQmxvY2sgc28gdGhhdCBhZnRl
cgorICAgICAgICBydW5uaW5nIHRoZSBDRkEsIHdlIGFsd2F5cyBrbm93LCBmb3IgZWFjaCBibG9j
aywgd2hhdCBkaXJlY3Rpb24gdGhlIENGQQorICAgICAgICBwcm92ZWQuIENGRyBzaW1wbGlmaWNh
dGlvbiBub3cgYm90aCB1c2VzIGFuZCBwcmVzZXJ2ZXMgY2ZhQnJhbmNoRGlyZWN0aW9uIGluCisg
ICAgICAgIGl0cyB0cmFuc2Zvcm1hdGlvbnMuCisgICAgICAgIAorICAgICAgICBBbHNvIG1hZGUg
Ym90aCBMb2dpY2FsTm90IGFuZCBCcmFuY2ggY2hlY2sgd2hldGhlciB0aGUgb3BlcmFuZCBpcyBh
IGtub3duIGNlbGwKKyAgICAgICAgd2l0aCBhIGtub3duIHN0cnVjdHVyZSwgYW5kIGlmIHNvLCBt
YWRlIHRoZW0gZG8gdGhlIGFwcHJvcHJpYXRlIGZvbGRpbmcuCisgICAgICAgIAorICAgICAgICA1
JSBzcGVlZC11cCBvbiBWOC9yYXl0cmFjZSBiZWNhdXNlIGl0IG1ha2VzIHJheXRyYWNlJ3Mgb3du
IG51bGwgY2hlY2tzCisgICAgICAgIGV2YXBvcmF0ZSAoaS5lLiBpZGlvbXMgbGlrZSAnaWYgKCF4
KSB0aHJvdyAidW5oYXBwaW5lc3MiJykgdGhhbmtzIHRvIHRoZSBmYWN0CisgICAgICAgIHRoYXQg
d2Ugd2VyZSBhbHJlYWR5IGRvaW5nIHN0cnVjdHVyZSBjaGVjayBob2lzdGluZy4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3Rh
dGU6OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4
ZWN1dGUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6Om1lcmdlVG9TdWNjZXNz
b3JzKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoQWJzdHJh
Y3RTdGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoKKyAgICAgICAgKEpTQzo6
REZHOjpCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKToKKyAgICAgICAgKEJhc2ljQmxvY2spOgorICAg
ICAgICAqIGRmZy9ERkdCcmFuY2hEaXJlY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChERkcpOgor
ICAgICAgICAoSlNDOjpERkc6OmJyYW5jaERpcmVjdGlvblRvU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjppc0tub3duRGlyZWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpicmFuY2hDb25k
aXRpb24pOgorICAgICAgICAqIGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAo
SlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6Om1lcmdlQmxvY2tzKToKKwogMjAxMi0x
MS0xMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzMzk3MS4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzQxNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTY1LDYgKzE2NSw3IEBACiAJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdCeXRl
Q29kZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVDYWNoZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGN0IyOTREMTRDM0NE
NEMwMDdDM0RCMSAvKiBERkdDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgwMjNF
QTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJ
bmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY4MzY0QjcxNjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzY0QjUxNjRCMEMwRTAw
NTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5
MTlEMEMxNTdFRTA5RjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMDkxNTdFRTA5RDAw
NEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwICovOyB9OwpAQCAtOTUzLDYgKzk1NCw3
IEBACiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIxIC8q
IERGR0NDYWxsSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdD
Q2FsbEhlbHBlcnMuaDsgcGF0aCA9IGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeVZhbEluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4MzY0QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5j
aERpcmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCcmFuY2hE
aXJlY3Rpb24uaDsgcGF0aCA9IGRmZy9ERkdCcmFuY2hEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
ODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMDkxNTdFRTA5RDAwNEE0RTdEIC8qIEpT
U3ltYm9sVGFibGVPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTeW1ib2xUYWJsZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMzY2LDYgKzIzNjgsNyBAQAogCQkJCTBGQzA5NzZCMTQ2OEFCNEEwMENGMjQ0MiAvKiBERkdB
c3NlbWJseUhlbHBlcnMuY3BwICovLAogCQkJCTBGQzA5NzZDMTQ2OEFCNEEwMENGMjQ0MiAvKiBE
RkdBc3NlbWJseUhlbHBlcnMuaCAqLywKIAkJCQkwRjYyMDE3MDE0M0ZDRDJGMDA2OEI3N0MgLyog
REZHQmFzaWNCbG9jay5oICovLAorCQkJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdC
cmFuY2hEaXJlY3Rpb24uaCAqLywKIAkJCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZH
Qnl0ZUNvZGVDYWNoZS5oICovLAogCQkJCTg2RUM5REI0MTMyOERGODIwMDJCMkFENyAvKiBERkdC
eXRlQ29kZVBhcnNlci5jcHAgKi8sCiAJCQkJODZFQzlEQjUxMzI4REY4MjAwMkIyQUQ3IC8qIERG
R0J5dGVDb2RlUGFyc2VyLmggKi8sCkBAIC0zMDE0LDYgKzMwMTcsNyBAQAogCQkJCTBGRUIzRUNE
MTYyMzdGNEQwMEFCNjdBRCAvKiBUeXBlZEFycmF5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNs
b3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjIzOUQxQjE2MjYyQkREMDA1
QUM1RkQgLyogR0NUaHJlYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGODM2NEI3MTY0QjBDMTEw
MDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMz
NUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5saW5rZWRDb2RlQmxvY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0YxODIyMTY0MDg4QjIwMDY0MEE0NyAvKiBDb2RlQ2Fj
aGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMzQxNjEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTks
NyArMTU5LDcgQEAgdm9pZCBBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKEdyYXBoJiBncgogICAg
IH0KIH0KIAotYm9vbCBBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1lcmdlTW9kZSBtZXJn
ZU1vZGUsIEJyYW5jaERpcmVjdGlvbiogYnJhbmNoRGlyZWN0aW9uUHRyKQorYm9vbCBBYnN0cmFj
dFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1lcmdlTW9kZSBtZXJnZU1vZGUpCiB7CiAgICAgQVNTRVJU
KG1fYmxvY2spOwogICAgIApAQCAtMTY3LDYgKzE2Nyw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6
ZW5kQmFzaWNCbG9jayhNZXJnZU0KICAgICAKICAgICBibG9jay0+Y2ZhRm91bmRDb25zdGFudHMg
PSBtX2ZvdW5kQ29uc3RhbnRzOwogICAgIGJsb2NrLT5jZmFEaWRGaW5pc2ggPSBtX2lzVmFsaWQ7
CisgICAgYmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbiA9IG1fYnJhbmNoRGlyZWN0aW9uOwogICAg
IAogICAgIGlmICghbV9pc1ZhbGlkKSB7CiAgICAgICAgIHJlc2V0KCk7CkBAIC0xOTUsMTIgKzE5
Niw4IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayhNZXJnZU0KICAgICAKICAg
ICBBU1NFUlQobWVyZ2VNb2RlICE9IERvbnRNZXJnZSB8fCAhY2hhbmdlZCk7CiAgICAgCi0gICAg
QnJhbmNoRGlyZWN0aW9uIGJyYW5jaERpcmVjdGlvbiA9IG1fYnJhbmNoRGlyZWN0aW9uOwotICAg
IGlmIChicmFuY2hEaXJlY3Rpb25QdHIpCi0gICAgICAgICpicmFuY2hEaXJlY3Rpb25QdHIgPSBi
cmFuY2hEaXJlY3Rpb247Ci0gICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9W
RVJCT1NFKQotICAgIGRhdGFMb2coIiAgICAgICAgQnJhbmNoIGRpcmVjdGlvbiA9ICVzXG4iLCBi
cmFuY2hEaXJlY3Rpb25Ub1N0cmluZyhicmFuY2hEaXJlY3Rpb24pKTsKKyAgICBkYXRhTG9nKCIg
ICAgICAgIEJyYW5jaCBkaXJlY3Rpb24gPSAlc1xuIiwgYnJhbmNoRGlyZWN0aW9uVG9TdHJpbmco
bV9icmFuY2hEaXJlY3Rpb24pKTsKICNlbmRpZgogICAgIAogICAgIHJlc2V0KCk7CkBAIC0yMDgs
NyArMjA1LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1lcmdlTQogICAg
IGlmIChtZXJnZU1vZGUgIT0gTWVyZ2VUb1N1Y2Nlc3NvcnMpCiAgICAgICAgIHJldHVybiBjaGFu
Z2VkOwogICAgIAotICAgIHJldHVybiBtZXJnZVRvU3VjY2Vzc29ycyhtX2dyYXBoLCBibG9jaywg
YnJhbmNoRGlyZWN0aW9uKTsKKyAgICByZXR1cm4gbWVyZ2VUb1N1Y2Nlc3NvcnMobV9ncmFwaCwg
YmxvY2spOwogfQogCiB2b2lkIEFic3RyYWN0U3RhdGU6OnJlc2V0KCkKQEAgLTIxOCw2ICsyMTUs
MjcgQEAgdm9pZCBBYnN0cmFjdFN0YXRlOjpyZXNldCgpCiAgICAgbV9icmFuY2hEaXJlY3Rpb24g
PSBJbnZhbGlkQnJhbmNoRGlyZWN0aW9uOwogfQogCitBYnN0cmFjdFN0YXRlOjpCb29sZWFuUmVz
dWx0IEFic3RyYWN0U3RhdGU6OmJvb2xlYW5SZXN1bHQoTm9kZSYgbm9kZSwgQWJzdHJhY3RWYWx1
ZSYgdmFsdWUpCit7CisgICAgSlNWYWx1ZSBjaGlsZENvbnN0ID0gdmFsdWUudmFsdWUoKTsKKyAg
ICBpZiAoY2hpbGRDb25zdCkgeworICAgICAgICBpZiAoY2hpbGRDb25zdC50b0Jvb2xlYW4obV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5nbG9iYWxFeGVjKCkp
KQorICAgICAgICAgICAgcmV0dXJuIERlZmluaXRlbHlUcnVlOworICAgICAgICByZXR1cm4gRGVm
aW5pdGVseUZhbHNlOworICAgIH0KKworICAgIC8vIE5leHQgY2hlY2sgaWYgd2UgY2FuIGZvbGQg
YmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNvdXJjZSBpcyBhbiBvYmplY3QgYW5kIGRvZXMgbm90
IGVxdWFsIHVuZGVmaW5lZC4KKyAgICBpZiAoaXNDZWxsU3BlY3VsYXRpb24odmFsdWUubV90eXBl
KQorICAgICAgICAmJiB2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5oYXNTaW5nbGV0b24o
KSkgeworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLm1fY3VycmVudEtub3du
U3RydWN0dXJlLnNpbmdsZXRvbigpOworICAgICAgICBpZiAoIXN0cnVjdHVyZS0+bWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZChtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdp
bikpCisgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpICE9IFN0cmlu
Z1R5cGUpCisgICAgICAgICAgICByZXR1cm4gRGVmaW5pdGVseVRydWU7CisgICAgfQorICAgIAor
ICAgIHJldHVybiBVbmtub3duQm9vbGVhblJlc3VsdDsKK30KKwogYm9vbCBBYnN0cmFjdFN0YXRl
OjpleGVjdXRlKHVuc2lnbmVkIGluZGV4SW5CbG9jaykKIHsKICAgICBBU1NFUlQobV9ibG9jayk7
CkBAIC02MTYsOCArNjM0LDE4IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25l
ZCBpbmQKICAgICB9CiAgICAgICAgICAgICAKICAgICBjYXNlIExvZ2ljYWxOb3Q6IHsKLSAgICAg
ICAgSlNWYWx1ZSBjaGlsZENvbnN0ID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOwot
ICAgICAgICBpZiAoY2hpbGRDb25zdCAmJiB0cnlTZXRDb25zdGFudChub2RlSW5kZXgsIGpzQm9v
bGVhbighY2hpbGRDb25zdC50b0Jvb2xlYW4obV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihu
b2RlLmNvZGVPcmlnaW4pLT5nbG9iYWxFeGVjKCkpKSkpIHsKKyAgICAgICAgYm9vbCBkaWRTZXRD
b25zdGFudCA9IGZhbHNlOworICAgICAgICBzd2l0Y2ggKGJvb2xlYW5SZXN1bHQobm9kZSwgZm9y
Tm9kZShub2RlLmNoaWxkMSgpKSkpIHsKKyAgICAgICAgY2FzZSBEZWZpbml0ZWx5VHJ1ZToKKyAg
ICAgICAgICAgIGRpZFNldENvbnN0YW50ID0gdHJ5U2V0Q29uc3RhbnQobm9kZUluZGV4LCBqc0Jv
b2xlYW4oZmFsc2UpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERlZmluaXRl
bHlGYWxzZToKKyAgICAgICAgICAgIGRpZFNldENvbnN0YW50ID0gdHJ5U2V0Q29uc3RhbnQobm9k
ZUluZGV4LCBqc0Jvb2xlYW4odHJ1ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGlkU2V0
Q29uc3RhbnQpIHsKICAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOwogICAgICAg
ICAgICAgbm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEw
NSwyMyArMTEzMywyMSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5k
CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBCcmFuY2g6IHsKLSAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAg
ICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgICAgICBib29sIGJvb2xlYW5WYWx1ZSA9IHZhbHVlLnRv
Qm9vbGVhbihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiktPmds
b2JhbEV4ZWMoKSk7Ci0gICAgICAgICAgICBpZiAoYm9vbGVhblZhbHVlKQotICAgICAgICAgICAg
ICAgIG1fYnJhbmNoRGlyZWN0aW9uID0gVGFrZVRydWU7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgbV9icmFuY2hEaXJlY3Rpb24gPSBUYWtlRmFsc2U7CisgICAgICAgIEJvb2xl
YW5SZXN1bHQgcmVzdWx0ID0gYm9vbGVhblJlc3VsdChub2RlLCBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBEZWZpbml0ZWx5VHJ1ZSkgeworICAgICAgICAg
ICAgbV9icmFuY2hEaXJlY3Rpb24gPSBUYWtlVHJ1ZTsKKyAgICAgICAgICAgIG5vZGUuc2V0Q2Fu
RXhpdChmYWxzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAo
cmVzdWx0ID09IERlZmluaXRlbHlGYWxzZSkgeworICAgICAgICAgICAgbV9icmFuY2hEaXJlY3Rp
b24gPSBUYWtlRmFsc2U7CiAgICAgICAgICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IFRoZSBhYm92ZSBo
YW5kbGVzIHRoZSB0cml2aWFsIGNhc2VzIG9mIHNwYXJzZSBjb25kaXRpb25hbAogICAgICAgICAv
LyBjb25zdGFudCBwcm9wYWdhdGlvbiwgYnV0IHdlIGNhbiBkbyBiZXR0ZXI6Ci0gICAgICAgIC8v
IDEpIElmIHRoZSBhYnN0cmFjdCB2YWx1ZSBkb2VzIG5vdCBoYXZlIGEgY29uY3JldGUgdmFsdWUg
YnV0IGRlc2NyaWJlcwotICAgICAgICAvLyAgICBzb21ldGhpbmcgdGhhdCBpcyBrbm93biB0byBl
dmFsdWF0ZSB0cnVlIChvciBmYWxzZSkgdGhlbiB3ZSBvdWdodAotICAgICAgICAvLyAgICB0byBz
cGFyc2UgY29uZGl0aW9uYWwgdGhhdC4KLSAgICAgICAgLy8gMikgV2UgY2FuIHNwZWNpYWxpemUg
dGhlIHNvdXJjZSB2YXJpYWJsZSdzIHZhbHVlIG9uIGVhY2ggZGlyZWN0aW9uIG9mCi0gICAgICAg
IC8vICAgIHRoZSBicmFuY2guCisgICAgICAgIC8vIFdlIGNhbiBzcGVjaWFsaXplIHRoZSBzb3Vy
Y2UgdmFyaWFibGUncyB2YWx1ZSBvbiBlYWNoIGRpcmVjdGlvbiBvZgorICAgICAgICAvLyB0aGUg
YnJhbmNoLgogICAgICAgICBOb2RlJiBjaGlsZCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV07CiAg
ICAgICAgIGlmIChjaGlsZC5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpCiAgICAgICAgICAgICBz
cGVjdWxhdGVCb29sZWFuVW5hcnkobm9kZSk7CkBAIC0xNzg0LDcgKzE4MTAsNyBAQCBpbmxpbmUg
Ym9vbCBBYnN0cmFjdFN0YXRlOjptZXJnZShCYXNpY0JsCiB9CiAKIGlubGluZSBib29sIEFic3Ry
YWN0U3RhdGU6Om1lcmdlVG9TdWNjZXNzb3JzKAotICAgIEdyYXBoJiBncmFwaCwgQmFzaWNCbG9j
ayogYmFzaWNCbG9jaywgQnJhbmNoRGlyZWN0aW9uIGJyYW5jaERpcmVjdGlvbikKKyAgICBHcmFw
aCYgZ3JhcGgsIEJhc2ljQmxvY2sqIGJhc2ljQmxvY2spCiB7CiAgICAgTm9kZSYgdGVybWluYWwg
PSBncmFwaFtiYXNpY0Jsb2NrLT5sYXN0KCldOwogICAgIApAQCAtMTc5Miw3ICsxODE4LDcgQEAg
aW5saW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUb1N1Y2NlcwogICAgIAogICAgIHN3aXRj
aCAodGVybWluYWwub3AoKSkgewogICAgIGNhc2UgSnVtcDogewotICAgICAgICBBU1NFUlQoYnJh
bmNoRGlyZWN0aW9uID09IEludmFsaWRCcmFuY2hEaXJlY3Rpb24pOworICAgICAgICBBU1NFUlQo
YmFzaWNCbG9jay0+Y2ZhQnJhbmNoRGlyZWN0aW9uID09IEludmFsaWRCcmFuY2hEaXJlY3Rpb24p
OwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgZGF0
YUxvZygiICAgICAgICBNZXJnaW5nIHRvIGJsb2NrICMldS5cbiIsIHRlcm1pbmFsLnRha2VuQmxv
Y2tJbmRleCgpKTsKICNlbmRpZgpAQCAtMTgwMCwxNyArMTgyNiwxNyBAQCBpbmxpbmUgYm9vbCBB
YnN0cmFjdFN0YXRlOjptZXJnZVRvU3VjY2VzCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEJy
YW5jaDogewotICAgICAgICBBU1NFUlQoYnJhbmNoRGlyZWN0aW9uICE9IEludmFsaWRCcmFuY2hE
aXJlY3Rpb24pOworICAgICAgICBBU1NFUlQoYmFzaWNCbG9jay0+Y2ZhQnJhbmNoRGlyZWN0aW9u
ICE9IEludmFsaWRCcmFuY2hEaXJlY3Rpb24pOwogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxz
ZTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIGRh
dGFMb2coIiAgICAgICAgTWVyZ2luZyB0byBibG9jayAjJXUuXG4iLCB0ZXJtaW5hbC50YWtlbkJs
b2NrSW5kZXgoKSk7CiAjZW5kaWYKLSAgICAgICAgaWYgKGJyYW5jaERpcmVjdGlvbiAhPSBUYWtl
RmFsc2UpCisgICAgICAgIGlmIChiYXNpY0Jsb2NrLT5jZmFCcmFuY2hEaXJlY3Rpb24gIT0gVGFr
ZUZhbHNlKQogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShiYXNpY0Jsb2NrLCBncmFwaC5t
X2Jsb2Nrc1t0ZXJtaW5hbC50YWtlbkJsb2NrSW5kZXgoKV0uZ2V0KCkpOwogI2lmIERGR19FTkFC
TEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgZGF0YUxvZygiICAgICAgICBN
ZXJnaW5nIHRvIGJsb2NrICMldS5cbiIsIHRlcm1pbmFsLm5vdFRha2VuQmxvY2tJbmRleCgpKTsK
ICNlbmRpZgotICAgICAgICBpZiAoYnJhbmNoRGlyZWN0aW9uICE9IFRha2VUcnVlKQorICAgICAg
ICBpZiAoYmFzaWNCbG9jay0+Y2ZhQnJhbmNoRGlyZWN0aW9uICE9IFRha2VUcnVlKQogICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZShiYXNpY0Jsb2NrLCBncmFwaC5tX2Jsb2Nrc1t0ZXJtaW5h
bC5ub3RUYWtlbkJsb2NrSW5kZXgoKV0uZ2V0KCkpOwogICAgICAgICByZXR1cm4gY2hhbmdlZDsK
ICAgICB9CkBAIC0xODE4LDcgKzE4NDQsNyBAQCBpbmxpbmUgYm9vbCBBYnN0cmFjdFN0YXRlOjpt
ZXJnZVRvU3VjY2VzCiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNl
IFRocm93UmVmZXJlbmNlRXJyb3I6Ci0gICAgICAgIEFTU0VSVChicmFuY2hEaXJlY3Rpb24gPT0g
SW52YWxpZEJyYW5jaERpcmVjdGlvbik7CisgICAgICAgIEFTU0VSVChiYXNpY0Jsb2NrLT5jZmFC
cmFuY2hEaXJlY3Rpb24gPT0gSW52YWxpZEJyYW5jaERpcmVjdGlvbik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCShyZXZpc2lvbiAxMzQxNjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzEsNiArMzEsNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHQWJzdHJh
Y3RWYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0JyYW5jaERpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkRG
R0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTkyLDM2ICs5Myw2IEBAIHB1YmxpYzoKICAgICAgICAgTWVyZ2VUb1N1Y2Nlc3NvcnMKICAg
ICB9OwogICAgIAotICAgIGVudW0gQnJhbmNoRGlyZWN0aW9uIHsKLSAgICAgICAgLy8gVGhpcyBp
cyBub3QgYSBicmFuY2ggYW5kIHNvIHRoZXJlIGlzIG5vIGJyYW5jaCBkaXJlY3Rpb24sIG9yCi0g
ICAgICAgIC8vIHRoZSBicmFuY2ggZGlyZWN0aW9uIGhhcyB5ZXQgdG8gYmUgc2V0LgotICAgICAg
ICBJbnZhbGlkQnJhbmNoRGlyZWN0aW9uLAotICAgICAgICAKLSAgICAgICAgLy8gVGhlIGJyYW5j
aCB0YWtlcyB0aGUgdHJ1ZSBjYXNlLgotICAgICAgICBUYWtlVHJ1ZSwKLSAgICAgICAgCi0gICAg
ICAgIC8vIFRoZSBicmFuY2ggdGFrZXMgdGhlIGZhbHNlIGNhc2UuCi0gICAgICAgIFRha2VGYWxz
ZSwKLSAgICAgICAgCi0gICAgICAgIC8vIEZvciBhbGwgd2Uga25vdywgdGhlIGJyYW5jaCBjb3Vs
ZCBnbyBlaXRoZXIgZGlyZWN0aW9uLCBzbyB3ZQotICAgICAgICAvLyBoYXZlIHRvIGFzc3VtZSB0
aGUgd29yc3QuCi0gICAgICAgIFRha2VCb3RoCi0gICAgfTsKLSAgICAKLSAgICBzdGF0aWMgY29u
c3QgY2hhciogYnJhbmNoRGlyZWN0aW9uVG9TdHJpbmcoQnJhbmNoRGlyZWN0aW9uIGJyYW5jaERp
cmVjdGlvbikKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoYnJhbmNoRGlyZWN0aW9uKSB7Ci0gICAg
ICAgIGNhc2UgSW52YWxpZEJyYW5jaERpcmVjdGlvbjoKLSAgICAgICAgICAgIHJldHVybiAiSW52
YWxpZCI7Ci0gICAgICAgIGNhc2UgVGFrZVRydWU6Ci0gICAgICAgICAgICByZXR1cm4gIlRha2VU
cnVlIjsKLSAgICAgICAgY2FzZSBUYWtlRmFsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIlRha2VG
YWxzZSI7Ci0gICAgICAgIGNhc2UgVGFrZUJvdGg6Ci0gICAgICAgICAgICByZXR1cm4gIlRha2VC
b3RoIjsKLSAgICAgICAgfQotICAgIH0KLQogICAgIEFic3RyYWN0U3RhdGUoR3JhcGgmKTsKICAg
ICAKICAgICB+QWJzdHJhY3RTdGF0ZSgpOwpAQCAtMTc0LDExICsxNDUsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gICAgQSB0cnVlIHJldHVybiBtZWFucyB0aGF0IHlvdSBtdXN0IHJldmlzaXQgKGF0IGxl
YXN0KSB0aGUgc3VjY2Vzc29yCiAgICAgLy8gICAgYmxvY2tzLiBUaGlzIGFsc28gc2V0cyBjZmFT
aG91bGRSZXZpc2l0IHRvIHRydWUgZm9yIGJhc2ljIGJsb2NrcwogICAgIC8vICAgIHRoYXQgbXVz
dCBiZSB2aXNpdGVkIG5leHQuCi0gICAgLy8KLSAgICAvLyBJZiB5b3UnZCBsaWtlIHRvIGtub3cg
d2hhdCBkaXJlY3Rpb24gdGhlIGJyYW5jaCBhdCB0aGUgZW5kIG9mIHRoZQotICAgIC8vIGJhc2lj
IGJsb2NrIGlzIHRob3VnaHQgdG8gaGF2ZSB0YWtlbiwgeW91IGNhbiBwYXNzIGEgbm9uLTAgcG9p
bnRlcgotICAgIC8vIGZvciBCcmFuY2hEaXJlY3Rpb24uCi0gICAgYm9vbCBlbmRCYXNpY0Jsb2Nr
KE1lcmdlTW9kZSwgQnJhbmNoRGlyZWN0aW9uKiA9IDApOworICAgIGJvb2wgZW5kQmFzaWNCbG9j
ayhNZXJnZU1vZGUpOwogICAgIAogICAgIC8vIFJlc2V0IHRoZSBBYnN0cmFjdFN0YXRlLiBUaGlz
IHRocm93cyBhd2F5IGFueSByZXN1bHRzLCBhbmQgYXQgdGhpcyBwb2ludAogICAgIC8vIHlvdSBj
YW4gc2FmZWx5IGNhbGwgYmVnaW5CYXNpY0Jsb2NrKCkgb24gYW55IGJhc2ljIGJsb2NrLgpAQCAt
MjExLDggKzE3OCw4IEBAIHB1YmxpYzoKICAgICAvLyBzdWNjZXNzb3JzLiBSZXR1cm5zIHRydWUg
aWYgYW55IG9mIHRoZSBzdWNjZXNzb3JzJyBzdGF0ZXMgY2hhbmdlZC4gTm90ZQogICAgIC8vIHRo
YXQgdGhpcyBpcyBhdXRvbWF0aWNhbGx5IGNhbGxlZCBpbiBlbmRCYXNpY0Jsb2NrKCkgaWYgTWVy
Z2VNb2RlIGlzCiAgICAgLy8gTWVyZ2VUb1N1Y2Nlc3NvcnMuCi0gICAgYm9vbCBtZXJnZVRvU3Vj
Y2Vzc29ycyhHcmFwaCYsIEJhc2ljQmxvY2sqLCBCcmFuY2hEaXJlY3Rpb24pOwotCisgICAgYm9v
bCBtZXJnZVRvU3VjY2Vzc29ycyhHcmFwaCYsIEJhc2ljQmxvY2sqKTsKKyAgICAKICAgICB2b2lk
IGR1bXAoRklMRSogb3V0KTsKICAgICAKIHByaXZhdGU6CkBAIC0yNjgsNiArMjM1LDEzIEBAIHBy
aXZhdGU6CiAgICAgICAgIGNoaWxkVmFsdWUyLmZpbHRlcihTcGVjTnVtYmVyKTsKICAgICB9CiAg
ICAgCisgICAgZW51bSBCb29sZWFuUmVzdWx0IHsKKyAgICAgICAgVW5rbm93bkJvb2xlYW5SZXN1
bHQsCisgICAgICAgIERlZmluaXRlbHlGYWxzZSwKKyAgICAgICAgRGVmaW5pdGVseVRydWUKKyAg
ICB9OworICAgIEJvb2xlYW5SZXN1bHQgYm9vbGVhblJlc3VsdChOb2RlJiwgQWJzdHJhY3RWYWx1
ZSYpOworICAgIAogICAgIGJvb2wgdHJ5U2V0Q29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCwg
SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBjb25z
dGFudCBmb2xkIHNvbWV0aGluZyB0aGF0IHdpbGwgcHJvZHVjZSB2YWx1ZXMgdGhhdCBjb250cmF2
ZW5lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2
aXNpb24gMTM0MTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkK
IAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIKKyNpbmNsdWRlICJERkdCcmFuY2hEaXJl
Y3Rpb24uaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC00Niw2ICs0Nyw3IEBAIHN0cnVjdCBCYXNpY0Jsb2Nr
IDogVmVjdG9yPE5vZGVJbmRleCwgOD4KICAgICAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZhbHNl
KQogICAgICAgICAsIGNmYUZvdW5kQ29uc3RhbnRzKGZhbHNlKQogICAgICAgICAsIGNmYURpZEZp
bmlzaCh0cnVlKQorICAgICAgICAsIGNmYUJyYW5jaERpcmVjdGlvbihJbnZhbGlkQnJhbmNoRGly
ZWN0aW9uKQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLCBpc0xpbmtlZChmYWxzZSkK
ICNlbmRpZgpAQCAtMTA1LDYgKzEwNyw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogVmVjdG9yPE5v
ZGVJbmRleCwgOD4KICAgICBib29sIGNmYVNob3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3Vu
ZENvbnN0YW50czsKICAgICBib29sIGNmYURpZEZpbmlzaDsKKyAgICBCcmFuY2hEaXJlY3Rpb24g
Y2ZhQnJhbmNoRGlyZWN0aW9uOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBib29sIGlzTGlu
a2VkOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JyYW5jaERp
cmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnJh
bmNoRGlyZWN0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0JyYW5jaERpcmVjdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQnJh
bmNoRGlyZWN0aW9uX2gKKyNkZWZpbmUgREZHQnJhbmNoRGlyZWN0aW9uX2gKKworI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKKworZW51bSBCcmFuY2hEaXJlY3Rpb24geworICAgIC8vIFRoaXMg
aXMgbm90IGEgYnJhbmNoIGFuZCBzbyB0aGVyZSBpcyBubyBicmFuY2ggZGlyZWN0aW9uLCBvcgor
ICAgIC8vIHRoZSBicmFuY2ggZGlyZWN0aW9uIGhhcyB5ZXQgdG8gYmUgc2V0LgorICAgIEludmFs
aWRCcmFuY2hEaXJlY3Rpb24sCisgICAgICAgIAorICAgIC8vIFRoZSBicmFuY2ggdGFrZXMgdGhl
IHRydWUgY2FzZS4KKyAgICBUYWtlVHJ1ZSwKKyAgICAgICAgCisgICAgLy8gVGhlIGJyYW5jaCB0
YWtlcyB0aGUgZmFsc2UgY2FzZS4KKyAgICBUYWtlRmFsc2UsCisgICAgICAgIAorICAgIC8vIEZv
ciBhbGwgd2Uga25vdywgdGhlIGJyYW5jaCBjb3VsZCBnbyBlaXRoZXIgZGlyZWN0aW9uLCBzbyB3
ZQorICAgIC8vIGhhdmUgdG8gYXNzdW1lIHRoZSB3b3JzdC4KKyAgICBUYWtlQm90aAorfTsKKyAg
ICAKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogYnJhbmNoRGlyZWN0aW9uVG9TdHJpbmcoQnJh
bmNoRGlyZWN0aW9uIGJyYW5jaERpcmVjdGlvbikKK3sKKyAgICBzd2l0Y2ggKGJyYW5jaERpcmVj
dGlvbikgeworICAgIGNhc2UgSW52YWxpZEJyYW5jaERpcmVjdGlvbjoKKyAgICAgICAgcmV0dXJu
ICJJbnZhbGlkIjsKKyAgICBjYXNlIFRha2VUcnVlOgorICAgICAgICByZXR1cm4gIlRha2VUcnVl
IjsKKyAgICBjYXNlIFRha2VGYWxzZToKKyAgICAgICAgcmV0dXJuICJUYWtlRmFsc2UiOworICAg
IGNhc2UgVGFrZUJvdGg6CisgICAgICAgIHJldHVybiAiVGFrZUJvdGgiOworICAgIH0KK30KKyAg
ICAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0tub3duRGlyZWN0aW9uKEJyYW5jaERpcmVjdGlvbiBi
cmFuY2hEaXJlY3Rpb24pCit7CisgICAgc3dpdGNoIChicmFuY2hEaXJlY3Rpb24pIHsKKyAgICBj
YXNlIFRha2VUcnVlOgorICAgIGNhc2UgVGFrZUZhbHNlOgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgYnJhbmNoQ29uZGl0aW9uKEJyYW5jaERpcmVjdGlvbiBicmFuY2hEaXJlY3Rp
b24pCit7CisgICAgaWYgKGJyYW5jaERpcmVjdGlvbiA9PSBUYWtlVHJ1ZSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgQVNTRVJUKGJyYW5jaERpcmVjdGlvbiA9PSBUYWtlRmFsc2UpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdCcmFuY2hEaXJlY3Rpb25faApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZp
Y2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMzQxNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
OSw5ICs5OSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBj
YXNlIEJyYW5jaDogewogICAgICAgICAgICAgICAgICAgICAvLyBCcmFuY2ggb24gY29uc3RhbnQg
LT4gamV0dGlzb24gdGhlIG5vdC10YWtlbiBibG9jayBhbmQgbWVyZ2UuCi0gICAgICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoW21fZ3JhcGhbYmxvY2stPmxhc3QoKV0uY2hpbGQxKCldLmhhc0Nv
bnN0YW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29uZGl0aW9uID0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG1fZ3Jh
cGhbYmxvY2stPmxhc3QoKV0uY2hpbGQxKCkuaW5kZXgoKSkudG9Cb29sZWFuKG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fZ3JhcGhbYmxvY2stPmxhc3QoKV0uY29kZU9yaWdpbiktPmdsb2JhbEV4
ZWMoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0tub3duRGlyZWN0aW9uKGJsb2NrLT5j
ZmFCcmFuY2hEaXJlY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbmRp
dGlvbiA9IGJyYW5jaENvbmRpdGlvbihibG9jay0+Y2ZhQnJhbmNoRGlyZWN0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHRhcmdldEJsb2NrID0gbV9ncmFwaC5tX2Js
b2Nrc1sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnN1Y2Nlc3NvckZvckNv
bmRpdGlvbihibG9jaywgY29uZGl0aW9uKV0uZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodGFyZ2V0QmxvY2stPm1fcHJlZGVjZXNzb3JzLnNpemUoKSA9PSAxKSB7CkBAIC03MzAs
NiArNzI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZmlyc3RC
bG9jay0+dmFsdWVzQXRUYWlsID0gc2Vjb25kQmxvY2stPnZhbHVlc0F0VGFpbDsKKyAgICAgICAg
Zmlyc3RCbG9jay0+Y2ZhQnJhbmNoRGlyZWN0aW9uID0gc2Vjb25kQmxvY2stPmNmYUJyYW5jaERp
cmVjdGlvbjsKICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9ibG9ja3Nbc2Vjb25kQmxvY2tJ
bmRleF0uY2xlYXIoKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="188172"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>