<?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>126543</bug_id>
          
          <creation_ts>2014-01-06 15:41:01 -0800</creation_ts>
          <short_desc>FTL should ascribe range meta-data when loading array.length</short_desc>
          <delta_ts>2014-01-30 13:30:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>atrick</cc>
    
    <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>964784</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-06 15:41:01 -0800</bug_when>
    <thetext>This will allow some interesting optimizations on the LLVM side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969661</commentid>
    <comment_count>1</comment_count>
      <attachid>221604</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-19 17:20:46 -0800</bug_when>
    <thetext>Created attachment 221604
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969662</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-19 17:22:34 -0800</bug_when>
    <thetext>Landed in branch in http://trac.webkit.org/changeset/162299</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969669</commentid>
    <comment_count>3</comment_count>
      <attachid>221604</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-01-19 17:59:37 -0800</bug_when>
    <thetext>Comment on attachment 221604
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=221604&amp;action=review

r=me

&gt; Source/JavaScriptCore/ftl/FTLCommonValues.cpp:65
&gt; +    , nonNegativeInt32(constInt(int32, 0, SignExtend), constInt(int32, 1ll &lt;&lt; 31, SignExtend))

Why the &quot;ll&quot; after the &quot;1&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969672</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-19 18:12:23 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 221604 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221604&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLCommonValues.cpp:65
&gt; &gt; +    , nonNegativeInt32(constInt(int32, 0, SignExtend), constInt(int32, 1ll &lt;&lt; 31, SignExtend))
&gt; 
&gt; Why the &quot;ll&quot; after the &quot;1&quot;?

constInt() takes a long long, so I figured that I&apos;d avoid all ambiguity in the implicit integer casting by just starting out with 1 being a long long.

Also, &quot;1&quot; is a 32-bit int and 2^31 isn&apos;t a valid 32-bit int value.  So, 1 &lt;&lt; 31 is subject to some overflow rules, and I don&apos;t feel like figuring out what exactly they are.  It&apos;s one of those things that feels like it might fall under undefined behavior and I don&apos;t like having to think about that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221604</attachid>
            <date>2014-01-19 17:20:46 -0800</date>
            <delta_ts>2014-01-19 17:59:36 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>19883</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYyMjk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE0LTAxLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBhc2NyaWJlIHJhbmdlIG1ldGEtZGF0YSB3aGVuIGxvYWRpbmcgYXJyYXkubGVu
Z3RoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY1
NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIFRoZSBtYWluIHRoaW5nIHRoaXMgYWNjb21wbGlzaGVzIGlzIHdlIG5vdyBoYXZlIE91dHB1
dDo6bG9hZDMyTm9uTmVnYXRpdmUoKSB3aGljaCBpcworICAgICAgICBhIDMyLWJpdCBpbnRlZ2Vy
IGxvYWQgdGhhdCBwcm9taXNlcyB0aGF0IHRoZSB2YWx1ZSBpcyBub3QgbmVnYXRpdmUuIFdlIHRo
ZW4gdXNlIHRoYXQKKyAgICAgICAgZm9yIGFsbCBsZW5ndGggbG9hZHMuCisgICAgICAgIAorICAg
ICAgICBCdXQgdW5kZXJuZWF0aCB0aGF0LCB3ZSBoYXZlIHRoZSBub3Rpb24gb2YgVmFsdWVSYW5n
ZSwgd2hpY2ggaXMgYSBzaW1wbGlmaWVkCisgICAgICAgIGVuY2Fwc3VsYXRpb24gb2YgTExWTSAi
cmFuZ2UiIG1ldGFkYXRhLgorICAgICAgICAKKyAgICAgICAgSSBjb25zaWRlcmVkIG1ha2luZyB0
aGUgcmFuZ2UgbWV0YS1kYXRhIHBhcnQgb2YgQWJzdHJhY3RIZWFwLiBJdCB3b3VsZCBtYWtlIHNl
bnNlCisgICAgICAgIHRoZXJlLiBCdXQgY29uc2lkZXJpbmcgdGhhdCB3ZSBqdXN0IHVzZSB0aGlz
IGZvciBiYXNpY2FsbHkgb25lIHRoaW5nICh0aGUgbGVuZ3RoKSwgaXQKKyAgICAgICAgZmVlbHMg
bGlrZSBjb25mbGF0aW5nIHRoaXMgd2l0aCB0aGUgQWJzdHJhY3RIZWFwIHdvdWxkIHJlc3VsdCBp
biBzb21lCisgICAgICAgIG92ZXJlbmdpbmVlcmluZy4gV2Ugc2hvdWxkIHJldmlzaXQgdGhpcyBp
ZiB3ZSBldmVyIGhhdmUgb3RoZXIgcmFuZ2VzLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9uVmFsdWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpDb21tb25WYWx1ZXM6OkNvbW1vblZhbHVlcyk6Cisg
ICAgICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVH
ZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVT
dHJpbmdDaGFyQXQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
U3RyaW5nQ2hhckNvZGVBdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNv
bXBpbGVTd2l0Y2gpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjp0eXBlZEFy
cmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Ym9vbGlmeSk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbnRpZ3VvdXNQdXRCeVZhbE91
dE9mQm91bmRzKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZU
TDo6T3V0cHV0Ojphc2NyaWJlUmFuZ2UpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bm9u
TmVnYXRpdmUzMik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkMzJOb25OZWdhdGl2
ZSk6CisgICAgICAgICogZnRsL0ZUTFZhbHVlUmFuZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6RlRMOjpWYWx1ZVJhbmdlOjpkZWNvcmF0ZUluc3RydWN0aW9uKToKKyAgICAgICAgKiBmdGwv
RlRMVmFsdWVSYW5nZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpWYWx1ZVJhbmdlOjpW
YWx1ZVJhbmdlKToKKyAgICAgICAgKEpTQzo6RlRMOjpWYWx1ZVJhbmdlOjpiZWdpbik6CisgICAg
ICAgIChKU0M6OkZUTDo6VmFsdWVSYW5nZTo6ZW5kKToKKwogMjAxNC0wMS0xNiAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IDMyLWJpdCBDIGxvb3AgTExJTlQu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTYyMjg1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1Miw2ICsyNTIsOCBAQAogCQkwRjU2QTFENTE1MDAx
Q0Y0MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU2QTFENDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhl
Y3V0aW9uQ291bnRlci5jcHAgKi87IH07CiAJCTBGNTcyRDRGMTY4NzlGREQwMEU1N0ZCRCAvKiBU
aHVua0dlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY1NzJENEQxNjg3OUZEQjAwRTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1QTUyRDAxN0FE
RDcxNzAwOEVDQjJEIC8qIENvcHlUb2tlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY1QTUyQ0YxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tlbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNUE2
MjgzMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUE2MjgxMTg4Qzk4RDQwMDcyQzlERiAv
KiBGVExWYWx1ZVJhbmdlLmNwcCAqLzsgfTsKKwkJMEY1QTYyODQxODhDOThENDAwNzJDOURGIC8q
IEZUTFZhbHVlUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNUE2MjgyMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RUY5MUUxNjg3
OEY3QTAwM0U1QzI1IC8qIEpJVFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFRjkxQjE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtz
LmNwcCAqLzsgfTsKIAkJMEY1RUY5MUYxNjg3OEY3RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RUY5MUMxNjg3
OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRp
dGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXpl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
NTg4LDYgKzE1OTAsOCBAQAogCQkwRjU2QTFENDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9u
Q291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGVjdXRp
b25Db3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NzJENEQxNjg3
OUZEQjAwRTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRodW5rR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNUE1MkNGMTdBREQ3MTcwMDhFQ0IyRCAvKiBDb3B5VG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29weVRva2VuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNUE2MjgxMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFZhbHVlUmFuZ2UuY3BwOyBwYXRoID0g
ZnRsL0ZUTFZhbHVlUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVB
NjI4MjE4OEM5OEQ0MDA3MkM5REYgLyogRlRMVmFsdWVSYW5nZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBGVExWYWx1ZVJhbmdlLmg7IHBhdGggPSBmdGwvRlRMVmFsdWVSYW5n
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFRjkxQjE2ODc4Rjc4MDAzRTVD
MjUgLyogSklUVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpJVFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUVGOTFDMTY4
NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSklUVGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENF
MTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5NDksNiArMjk1Myw4IEBACiAJCQkJMEYyMzVCQ0QxNzE3
OEUxQzAwNjkwQzdGIC8qIEZUTFZhbHVlRm9ybWF0LmNwcCAqLywKIAkJCQkwRjIzNUJDRTE3MTc4
RTFDMDA2OTBDN0YgLyogRlRMVmFsdWVGb3JtYXQuaCAqLywKIAkJCQkwRkRCMkNDODE3M0RBNTFF
MDA3QjNDMUIgLyogRlRMVmFsdWVGcm9tQmxvY2suaCAqLywKKwkJCQkwRjVBNjI4MTE4OEM5OEQ0
MDA3MkM5REYgLyogRlRMVmFsdWVSYW5nZS5jcHAgKi8sCisJCQkJMEY1QTYyODIxODhDOThENDAw
NzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gZnRsOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQ1ODgsNiArNDU5NCw3IEBACiAJCQkJMEZFQTBB
MjQxNzA5NjA2OTAwQkI3MjJDIC8qIEZUTEludHJpbnNpY1JlcG9zaXRvcnkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRUEwQTBFMTcwNTEzREIwMEJCNzIyQyAvKiBGVExKSVRDb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzhBOTc4MTE3OTczOEQ1MDA5REY3NDQgLyogRlRMSklURmluYWxpemVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjVBNjI4NDE4OEM5OEQ0MDA3MkM5REYgLyogRlRMVmFs
dWVSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4RjJCOTYxNzJFMDRBMzAwN0RCREE1IC8q
IEZUTExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUUwMTgwNzM4QzAwMDQ3MkNFNCAv
KiBGVExMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3
MjJDIC8qIEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAqLywKQEAgLTU0NzAsNiArNTQ3
Nyw3IEBACiAJCQkJMTQyODA4MkQxMDdFQzA1NzAwMTNFN0IyIC8qIENhbGxEYXRhLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0MjlEOEREMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5r
SW5mby5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjVBNjI4MzE4OEM5OEQ0MDA3MkM5REYgLyog
RlRMVmFsdWVSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMzI5RDE0Q0E3REMzMDA4
NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3M0Q3QUUx
NjVBMTQyRDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTY5QTA3OTYwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5jcHAgaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZh
bHVlcy5jcHAJKHJldmlzaW9uIDE2MjI4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tbW9uVmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjEsNiArNjEsOCBAQCBDb21tb25W
YWx1ZXM6OkNvbW1vblZhbHVlcyhMQ29udGV4dCBjb250CiAgICAgLCBpbnRQdHJFaWdodChjb25z
dEludChpbnRQdHIsIDgsIFNpZ25FeHRlbmQpKQogICAgICwgaW50UHRyUHRyKGNvbnN0SW50KGlu
dFB0ciwgc2l6ZW9mKHZvaWQqKSwgU2lnbkV4dGVuZCkpCiAgICAgLCBkb3VibGVaZXJvKGNvbnN0
UmVhbChkb3VibGVUeXBlLCAwKSkKKyAgICAsIHJhbmdlS2luZChtZEtpbmRJRChjb250ZXh0LCAi
cmFuZ2UiKSkKKyAgICAsIG5vbk5lZ2F0aXZlSW50MzIoY29uc3RJbnQoaW50MzIsIDAsIFNpZ25F
eHRlbmQpLCBjb25zdEludChpbnQzMiwgMWxsIDw8IDMxLCBTaWduRXh0ZW5kKSkKICAgICAsIG1f
Y29udGV4dChjb250ZXh0KQogICAgICwgbV9tb2R1bGUoMCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAkocmV2aXNpb24gMTYyMjg1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzEsNiArMzEsNyBAQAogI2lmIEVOQUJMRShGVExfSklUKQogCiAjaW5jbHVkZSAiRlRMQWJi
cmV2aWF0aW9ucy5oIgorI2luY2x1ZGUgIkZUTFZhbHVlUmFuZ2UuaCIKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBGVEwgewogCkBAIC03NCw2ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgY29u
c3QgTFZhbHVlIGludFB0clB0cjsKICAgICBjb25zdCBMVmFsdWUgZG91YmxlWmVybzsKICAgICAK
KyAgICBjb25zdCB1bnNpZ25lZCByYW5nZUtpbmQ7CisgICAgCisgICAgY29uc3QgVmFsdWVSYW5n
ZSBub25OZWdhdGl2ZUludDMyOworICAgIAogICAgIExDb250ZXh0IGNvbnN0IG1fY29udGV4dDsK
ICAgICBMTW9kdWxlIG1fbW9kdWxlOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjIyODUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU2OSwyMCArMTU2OSwyMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFycmF5OjpJ
bnQzMjoKICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICBjYXNlIEFycmF5OjpD
b250aWd1b3VzOiB7Ci0gICAgICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkMzIobG93U3RvcmFn
ZShtX25vZGUtPmNoaWxkMigpKSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKSk7Cisg
ICAgICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShsb3dTdG9yYWdlKG1f
bm9kZS0+Y2hpbGQyKCkpLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJy
YXk6OlN0cmluZzogewogICAgICAgICAgICAgTFZhbHVlIHN0cmluZyA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkMzIoc3RyaW5nLCBt
X2hlYXBzLkpTU3RyaW5nX2xlbmd0aCkpOworICAgICAgICAgICAgc2V0SW50MzIobV9vdXQubG9h
ZDMyTm9uTmVnYXRpdmUoc3RyaW5nLCBtX2hlYXBzLkpTU3RyaW5nX2xlbmd0aCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGlmIChpc1R5cGVkVmlldyhtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJy
YXlUeXBlKCkpKSB7CiAgICAgICAgICAgICAgICAgc2V0SW50MzIoCi0gICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmxvYWQzMihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzJO
b25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZm
ZXJWaWV3X2xlbmd0aCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIApAQCAtMTYyNCw3ICsxNjI0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgICAgIG1fb3V0LmFib3Zl
T3JFcXVhbCgKLSAgICAgICAgICAgICAgICAgICAgaW5kZXgsIG1fb3V0LmxvYWQzMihzdG9yYWdl
LCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpKSwKKyAgICAgICAgICAgICAgICAgICAg
aW5kZXgsIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5
X3B1YmxpY0xlbmd0aCkpLAogICAgICAgICAgICAgICAgIHNsb3dDYXNlLCBmYXN0Q2FzZSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8oZmFzdENhc2UsIHNsb3dDYXNlKTsKQEAgLTE2NzEsNyArMTY3MSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgICAg
ICBtX291dC5hYm92ZU9yRXF1YWwoCi0gICAgICAgICAgICAgICAgICAgIGluZGV4LCBtX291dC5s
b2FkMzIoc3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKSksCisgICAgICAg
ICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShzdG9yYWdlLCBtX2hl
YXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpKSwKICAgICAgICAgICAgICAgICBzbG93Q2FzZSwg
aW5Cb3VuZHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGluQm91bmRzLCBib3hQYXRoKTsKQEAgLTIyNDMsNyArMjI0Myw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAg
ICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKAotICAgICAgICAgICAgICAgIGluZGV4LCBtX291dC5s
b2FkMzIoYmFzZSwgbV9oZWFwcy5KU1N0cmluZ19sZW5ndGgpKSwKKyAgICAgICAgICAgICAgICBp
bmRleCwgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoYmFzZSwgbV9oZWFwcy5KU1N0cmluZ19sZW5n
dGgpKSwKICAgICAgICAgICAgIHNsb3dQYXRoLCBmYXN0UGF0aCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhmYXN0UGF0aCwgc2xv
d1BhdGgpOwpAQCAtMjMzOSw3ICsyMzM5LDggQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAg
IHNwZWN1bGF0ZSgKICAgICAgICAgICAgIFVuY291bnRhYmxlLCBub1ZhbHVlKCksIDAsCi0gICAg
ICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIG1fb3V0LmxvYWQzMihiYXNlLCBtX2hl
YXBzLkpTU3RyaW5nX2xlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbCgK
KyAgICAgICAgICAgICAgICBpbmRleCwgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoYmFzZSwgbV9o
ZWFwcy5KU1N0cmluZ19sZW5ndGgpKSk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgc3RyaW5n
SW1wbCA9IG1fb3V0LmxvYWRQdHIoYmFzZSwgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7CiAgICAg
ICAgIApAQCAtMjc2Myw3ICsyNzY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKAotICAg
ICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIoc3RyaW5nVmFsdWUsIG1faGVhcHMuSlNTdHJp
bmdfbGVuZ3RoKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUo
c3RyaW5nVmFsdWUsIG1faGVhcHMuSlNTdHJpbmdfbGVuZ3RoKSwKICAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuaW50MzJPbmUpLAogICAgICAgICAgICAgICAgIGxvd0Jsb2NrKGRhdGEtPmZhbGxU
aHJvdWdoKSwgbGVuZ3RoSXMxKTsKICAgICAgICAgICAgIApAQCAtMzA2Niw3ICszMDY3LDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1f
Z3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGJhc2VFZGdlLm5vZGUoKSwgYXJyYXlNb2RlKSkKICAg
ICAgICAgICAgIHJldHVybiBtX291dC5jb25zdEludDMyKHZpZXctPmxlbmd0aCgpKTsKLSAgICAg
ICAgcmV0dXJuIG1fb3V0LmxvYWQzMihiYXNlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xl
bmd0aCk7CisgICAgICAgIHJldHVybiBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShiYXNlLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSB0
eXBlZEFycmF5TGVuZ3RoKEVkZ2UgYmFzZUVkZ2UsIEFycmF5TW9kZSBhcnJheU1vZGUpCkBAIC0z
MDkwLDcgKzMwOTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pKTsKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6IHsKICAgICAgICAgICAg
IExWYWx1ZSBzdHJpbmdWYWx1ZSA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkMzIoc3RyaW5nVmFsdWUsIG1faGVhcHMu
SlNTdHJpbmdfbGVuZ3RoKTsKKyAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2Fk
MzJOb25OZWdhdGl2ZShzdHJpbmdWYWx1ZSwgbV9oZWFwcy5KU1N0cmluZ19sZW5ndGgpOwogICAg
ICAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKGxlbmd0aCwgbV9vdXQuaW50MzJaZXJvKTsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKQEAgLTMyMjQsNyArMzIyNSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbikKICAgICB7CiAg
ICAgICAgIExWYWx1ZSBpc05vdEluQm91bmRzID0gbV9vdXQuYWJvdmVPckVxdWFsKAotICAgICAg
ICAgICAgaW5kZXgsIG1fb3V0LmxvYWQzMihzdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJs
aWNMZW5ndGgpKTsKKyAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShz
dG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpKTsKICAgICAgICAgaWYgKCFt
X25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkgewogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbm90SW5Cb3VuZHNDYXNlID0KICAgICAgICAgICAgICAgICBGVExfTkVXX0JMT0NLKG1fb3V0
LCAoIlB1dEJ5VmFsIG5vdCBpbiBib3VuZHMiKSk7CkBAIC0zMjM2LDcgKzMyMzcsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhu
b3RJbkJvdW5kc0Nhc2UsIHBlcmZvcm1TdG9yZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICBMVmFsdWUgaXNPdXRPZkJvdW5kcyA9IG1fb3V0LmFib3ZlT3JFcXVhbCgKLSAgICAgICAg
ICAgICAgICBpbmRleCwgbV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5X3Zl
Y3Rvckxlbmd0aCkpOworICAgICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdh
dGl2ZShzdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV92ZWN0b3JMZW5ndGgpKTsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmICghbV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91
bmRzKCkpCiAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCks
IDAsIGlzT3V0T2ZCb3VuZHMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
dXRwdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1
dC5oCShyZXZpc2lvbiAxNjIyODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91
dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMTksNiArMzE5LDIwIEBAIHB1YmxpYzoKICAgICB2b2lk
IHN0b3JlUHRyKExWYWx1ZSB2YWx1ZSwgTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0RmllbGQm
IGZpZWxkKSB7IHN0b3JlUHRyKHZhbHVlLCBhZGRyZXNzKGJhc2UsIGZpZWxkKSk7IH0KICAgICB2
b2lkIHN0b3JlRG91YmxlKExWYWx1ZSB2YWx1ZSwgTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0
RmllbGQmIGZpZWxkKSB7IHN0b3JlRG91YmxlKHZhbHVlLCBhZGRyZXNzKGJhc2UsIGZpZWxkKSk7
IH0KICAgICAKKyAgICB2b2lkIGFzY3JpYmVSYW5nZShMVmFsdWUgbG9hZEluc3RydWN0aW9uLCBj
b25zdCBWYWx1ZVJhbmdlJiByYW5nZSkKKyAgICB7CisgICAgICAgIHJhbmdlLmRlY29yYXRlSW5z
dHJ1Y3Rpb24obV9jb250ZXh0LCBsb2FkSW5zdHJ1Y3Rpb24sIHJhbmdlS2luZCk7CisgICAgfQor
ICAgIAorICAgIExWYWx1ZSBub25OZWdhdGl2ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rpb24pCisg
ICAgeworICAgICAgICBhc2NyaWJlUmFuZ2UobG9hZEluc3RydWN0aW9uLCBub25OZWdhdGl2ZUlu
dDMyKTsKKyAgICAgICAgcmV0dXJuIGxvYWRJbnN0cnVjdGlvbjsKKyAgICB9CisgICAgCisgICAg
TFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBu
b25OZWdhdGl2ZTMyKGxvYWQzMihwb2ludGVyKSk7IH0KKyAgICBMVmFsdWUgbG9hZDMyTm9uTmVn
YXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0RmllbGQmIGZpZWxkKSB7IHJldHVybiBu
b25OZWdhdGl2ZTMyKGxvYWQzMihiYXNlLCBmaWVsZCkpOyB9CisgICAgCiAgICAgTFZhbHVlIGlj
bXAoTEludFByZWRpY2F0ZSBjb25kLCBMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVy
biBidWlsZElDbXAobV9idWlsZGVyLCBjb25kLCBsZWZ0LCByaWdodCk7IH0KICAgICBMVmFsdWUg
ZXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gaWNtcChMTFZNSW50RVEs
IGxlZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBub3RFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KSB7IHJldHVybiBpY21wKExMVk1JbnRORSwgbGVmdCwgcmlnaHQpOyB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlUmFuZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVSYW5nZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlUmFuZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZUTFZhbHVlUmFu
Z2UuaCIKKworI2luY2x1ZGUgIkZUTEFiYnJldmlhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgeworCit2b2lkIFZhbHVlUmFuZ2U6OmRlY29yYXRlSW5zdHJ1Y3Rpb24o
CisgICAgTENvbnRleHQgY29udGV4dCwgTFZhbHVlIGxvYWRJbnN0cnVjdGlvbiwgdW5zaWduZWQg
cmFuZ2VLaW5kKSBjb25zdAoreworICAgIGlmICghbV9yYW5nZU1ldGFkYXRhKQorICAgICAgICBt
X3JhbmdlTWV0YWRhdGEgPSBtZE5vZGUoY29udGV4dCwgbV9iZWdpbiwgbV9lbmQpOworICAgIHNl
dE1ldGFkYXRhKGxvYWRJbnN0cnVjdGlvbiwgcmFuZ2VLaW5kLCBtX3JhbmdlTWV0YWRhdGEpOwor
fQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMVmFsdWVSYW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMVmFsdWVSYW5nZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExWYWx1ZVJhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEZUTFZhbHVlUmFuZ2VfaAorI2RlZmluZSBGVExWYWx1ZVJhbmdlX2gKKworI2lmIEVOQUJMRShG
VExfSklUKQorCisjaW5jbHVkZSAiRlRMQWJicmV2aWF0ZWRUeXBlcy5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEZUTCB7CisKK2NsYXNzIFZhbHVlUmFuZ2UgeworcHVibGljOgorICAg
IFZhbHVlUmFuZ2UoKQorICAgICAgICA6IG1fYmVnaW4oMCkKKyAgICAgICAgLCBtX2VuZCgwKQor
ICAgICAgICAsIG1fcmFuZ2VNZXRhZGF0YSgwKQorICAgIHsKKyAgICB9CisgICAgCisgICAgVmFs
dWVSYW5nZShMVmFsdWUgYmVnaW4sIExWYWx1ZSBlbmQpCisgICAgICAgIDogbV9iZWdpbihiZWdp
bikKKyAgICAgICAgLCBtX2VuZChlbmQpCisgICAgICAgICwgbV9yYW5nZU1ldGFkYXRhKDApCisg
ICAgeworICAgIH0KKyAgICAKKyAgICBMVmFsdWUgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2Jl
Z2luOyB9CisgICAgTFZhbHVlIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9CisgICAgCisg
ICAgdm9pZCBkZWNvcmF0ZUluc3RydWN0aW9uKExDb250ZXh0LCBMVmFsdWUgbG9hZEluc3RydWN0
aW9uLCB1bnNpZ25lZCByYW5nZUtpbmQpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBMVmFs
dWUgbV9iZWdpbjsKKyAgICBMVmFsdWUgbV9lbmQ7CisgICAgbXV0YWJsZSBMVmFsdWUgbV9yYW5n
ZU1ldGFkYXRhOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAorCisjZW5kaWYgLy8g
RU5BQkxFKEZUTF9KSVQpCisKKyNlbmRpZiAvLyBGVExWYWx1ZVJhbmdlX2gKKwo=
</data>
<flag name="review"
          id="245551"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>