<?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>153386</bug_id>
          
          <creation_ts>2016-01-22 17:54:39 -0800</creation_ts>
          <short_desc>B3 should strength-reduce division by a constant</short_desc>
          <delta_ts>2016-01-22 19:40:32 -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>WebKit 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>150507</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1157922</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-22 17:54:39 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157923</commentid>
    <comment_count>1</comment_count>
      <attachid>269627</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-22 17:59:03 -0800</bug_when>
    <thetext>Created attachment 269627
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157927</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-22 18:00:16 -0800</bug_when>
    <thetext>Attachment 269627 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:125:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:126:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:127:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:128:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:129:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:130:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:133:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:134:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:135:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:135:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:139:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:140:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:141:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:141:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:141:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:146:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:150:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h:151:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 18 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157940</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-22 19:40:32 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/195503</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269627</attachid>
            <date>2016-01-22 17:59:03 -0800</date>
            <delta_ts>2016-01-22 18:07:37 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18281</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk1NDk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE2LTAxLTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QjMgc2hvdWxkIHN0cmVuZ3RoLXJlZHVjZSBkaXZpc2lvbiBieSBhIGNvbnN0YW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMzODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBZb3UgY2FuIHR1cm4gYSAz
Mi1iaXQgZGl2aXNpb24gYnkgYSBjb25zdGFudCBpbnRvIGEgNjQtYml0IG11bHRpcGxpY2F0aW9u
IGJ5IGEgY29uc3RhbnQKKyAgICAgICAgcGx1cyBzb21lIHNoaWZ0cy4gQSBib29rIGNhbGxlZCAi
SGFja2VyJ3MgRGVsaWdodCIgaGFzIGEgYnVuY2ggb2YgbWF0aCBhYm91dCB0aGlzLiBUaGUKKyAg
ICAgICAgaGFyZCBwYXJ0IGlzIGZpbmRpbmcgdGhlIGNvbnN0YW50IGJ5IHdoaWNoIHRvIG11bHRp
cGx5LCBhbmQgdGhlIGFtb3VudCBieSB3aGljaCB0byBzaGlmdC4KKyAgICAgICAgVGhlIGJvb2sg
dGVsbHMgeW91IHNvbWUgdGhlcm9lbXMsIGJ1dCB5b3Ugc3RpbGwgaGF2ZSB0byB0dXJuIHRoYXQg
aW50byBjb2RlLiBJdCB0dXJucyBvdXQKKyAgICAgICAgdGhhdCBMTFZNIGFscmVhZHkgaGFzIGNv
ZGUgZm9yIHRoaXMsIGl0J3MgY2FsbGVkIEFQSW50OjptYWdpYygpLCB3aGVyZSBBUEludCBpcyB0
aGVpcgorICAgICAgICBjbGFzcyBmb3IgcmVhc29uaW5nIGFib3V0IGludGVnZXJzLgorCisgICAg
ICAgIFRoZSBjb2RlIGhhcyBhIGNvbXBhdGlibGUgbGljZW5zZSB0byBvdXJzIGFuZCB3ZSBoYXZl
IGFscmVhZHkgaW4gdGhlIHBhc3QgdGFrZW4gY29kZSBmcm9tCisgICAgICAgIExMVk0uIFNvLCB0
aGF0J3Mgd2hhdCB0aGlzIHBhdGNoIGRvZXMuIFRoZSBMTFZNIGNvZGUgaXMgbG9jYWxpemVkIGlu
CisgICAgICAgIEIzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaC4gVGhlbiByZWR1Y2VTdHJlbmd0aCgp
IHVzZXMgdGhhdCB0byBjb25zdHJ1Y3QgdGhlIG11bHRpcGx5K3NoaWZ0CisgICAgICAgIHNlcXVl
bmNlLgorCisgICAgICAgIFRoaXMgaXMgYW4gZW5vcm1vdXMgc3BlZWQtdXAgb24gQXNtQmVuY2gt
MC45L2JpZ2ZpYi5jcHAuanMuIEl0IG1ha2VzIGFzIGZhc3Qgb24gdGhhdCB0ZXN0CisgICAgICAg
IGFzIExMVk0uIEl0IHJlZHVjZXMgb3VyIGRlZmljaXQgb24gQXNtQmVuY2ggdG8gMS41JS4gUHJl
dmlvdXNseSBpdCB3YXMgNC41JS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYjMvQjNDb21wdXRlRGl2aXNpb25NYWdpYy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OmNvbXB1dGVEaXZpc2lvbk1hZ2ljKToKKyAgICAg
ICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKwogMjAxNi0wMS0yMiAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgV2Ugc2hvdWxkIE9TUiBleGl0IHdpdGggSW50
NTJPdmVyZmxvdyB3aGVuIHdlIGZhaWwgdG8gbWFrZSBhbiBJbnQ1MiB3aGVyZSB3ZSBleHBlY3Qg
b25lLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5NTQ2NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OTIsNiArNDkyLDcgQEAKIAkJMEY4MzM1Qjcx
NjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjQxNjM5QzFFMzAwMTQ0
M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovOyB9OwogCQkwRjgzMzVCODE2MzlD
MUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8q
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyogREZHQnJhbmNo
RGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi87IH07
CisJCTBGODZBRTIwMUM1MzExQzUwMDZCRThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg2QUUxRjFD
NTMxMUM1MDA2QkU4RUMgLyogQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oICovOyB9OwogCQkwRjg4
NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAv
KiBCeXRlY29kZVVzZURlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGODkzQkRCMTkzNkUyM0MwMDEyMTFGNCAvKiBERkdTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGODkzQkRBMTkzNkUyM0MwMDEyMTFGNCAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
LmNwcCAqLzsgfTsKIAkJMEY4OThGMzExQjI3Njg5RjAwODNBMzNDIC8qIERGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGODk4RjJGMUIyNzY4OUYwMDgzQTMzQyAvKiBERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZS5jcHAgKi87IH07CkBAIC0yNjc0LDYgKzI2NzUsNyBAQAogCQkwRjgz
MzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1
IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5jaERpcmVjdGlvbi5oOyBwYXRo
ID0gZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjg2QUUxRjFDNTMxMUM1MDA2QkU4RUMgLyogQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmg7
IHBhdGggPSBiMy9CM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVVzZURlZi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg5M0JEQTE5MzZFMjNDMDAxMjExRjQgLyogREZHU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4OThG
MkYxQjI3Njg5RjAwODNBMzNDIC8qIERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0ludGVnZXJSYW5nZU9w
dGltaXphdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRp
b25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzcxLDYgKzQ3NzMs
NyBAQAogCQkJCTBGRUM4NEMyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbW11dGF0aXZpdHkuaCAq
LywKIAkJCQkwRjMzOERGRjFCRjAyNzZDMDAxM0M4OEYgLyogQjNDb21waWxhdGlvbi5jcHAgKi8s
CiAJCQkJMEYzMzhFMDAxQkYwMjc2QzAwMTNDODhGIC8qIEIzQ29tcGlsYXRpb24uaCAqLywKKwkJ
CQkwRjg2QUUxRjFDNTMxMUM1MDA2QkU4RUMgLyogQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oICov
LAogCQkJCTBGRUM4NEMzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0MzJWYWx1ZS5jcHAgKi8s
CiAJCQkJMEZFQzg0QzQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3QzMlZhbHVlLmggKi8sCiAJ
CQkJMEZFQzg0QzUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3Q2NFZhbHVlLmNwcCAqLywKQEAg
LTc5ODksNiArNzk5Miw3IEBACiAJCQkJQkMxOEM0NTYwRTE2RjVDRDAwQjM0NDYwIC8qIFByb3Rl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzRDMzNCMTZBQTJEOTUwMDYyRjAxRCAvKiBQcm90
b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTc4MEEyMThGRTFFOTgwMDFFNzJEOSAv
KiBQdXJlTmFOLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjg2QUUyMDFDNTMxMUM1MDA2QkU4RUMg
LyogQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUNEMjMx
QkE1Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5
MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOTMyNzVGMUMyMUVGN0YwMENGNjU2NCAvKiBKU09iamVjdElubGluZXMuaCBpbiBIZWFk
ZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tcHV0ZURpdmlzaW9u
TWFnaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21wdXRl
RGl2aXNpb25NYWdpYy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKiBUaGlzIGNv
bnRhaW5zIGNvZGUgdGFrZW4gZnJvbSBMTFZNJ3MgQVBJbnQgY2xhc3MuIFRoYXQgY29kZSBpbXBs
ZW1lbnRzIGZpbmRpbmcgdGhlIG1hZ2ljCisgKiBudW1iZXJzIGZvciBzdHJlbmd0aC1yZWR1Y2lu
ZyBkaXZpc2lvbi4gVGhlIExMVk0gY29kZSBvbiB3aGljaCB0aGlzIGNvZGUgaXMgYmFzZWQgd2Fz
CisgKiBpbXBsZW1lbnRlZCB1c2luZyAiSGFja2VyJ3MgRGVsaWdodCIsIEhlbnJ5IFMuIFdhcnJl
biwgSnIuLCBjaGFwdGVyIDEwLgorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogTExW
TSBSZWxlYXNlIExpY2Vuc2UKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogVW5pdmVyc2l0
eSBvZiBJbGxpbm9pcy9OQ1NBCisgKiBPcGVuIFNvdXJjZSBMaWNlbnNlCisgKiAKKyAqIENvcHly
aWdodCAoYykgMjAwMy0yMDE0IFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgYXQgVXJiYW5hLUNoYW1w
YWlnbi4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIERldmVsb3BlZCBieToKKyAq
IAorICogICAgIExMVk0gVGVhbQorICogCisgKiAgICAgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBh
dCBVcmJhbmEtQ2hhbXBhaWduCisgKiAKKyAqICAgICBodHRwOi8vbGx2bS5vcmcKKyAqIAorICog
UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz
b24gb2J0YWluaW5nIGEgY29weSBvZgorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk
b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgd2l0aAorICogdGhl
IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp
b24gdGhlIHJpZ2h0cyB0bworICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk
aXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMKKyAqIG9mIHRoZSBTb2Z0
d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5p
c2hlZCB0byBkbworICogc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor
ICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVycy4KKyAqIAorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlLAorICogICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcnMgaW4gdGhlCisgKiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lcyBvZiB0aGUgTExWTSBUZWFtLCBVbml2ZXJzaXR5IG9mIEls
bGlub2lzIGF0CisgKiAgICAgICBVcmJhbmEtQ2hhbXBhaWduLCBub3IgdGhlIG5hbWVzIG9mIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8KKyAqICAgICAgIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljCisg
KiAgICAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT
IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIENPTlRS
SUJVVE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN
QUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U
UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBD
T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1Mg
V0lUSCBUSEUKKyAqIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgQjNDb21wdXRlRGl2aXNpb25N
YWdpY19oCisjZGVmaW5lIEIzQ29tcHV0ZURpdmlzaW9uTWFnaWNfaAorCisjaWYgRU5BQkxFKEIz
X0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgRGl2aXNpb25NYWdpYyB7CisgICAgVCBtYWdpY011bHRpcGxpZXI7Cisg
ICAgdW5zaWduZWQgc2hpZnQ7Cit9OworCisvLyBUaGlzIGNvbnRhaW5zIGNvZGUgdGFrZW4gZnJv
bSBMTFZNJ3MgQVBJbnQ6Om1hZ2ljKCkuIEl0J3MgbW9kZXN0bHkgYWRhcHRlZCB0byBvdXIgc3R5
bGUsIGJ1dAorLy8gbm90IGNvbXBsZXRlbHksIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGFwcGx5IHRo
ZWlyIGNoYW5nZXMgaW4gdGhlIGZ1dHVyZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitEaXZpc2lv
bk1hZ2ljPFQ+IGNvbXB1dGVEaXZpc2lvbk1hZ2ljKFQgZGl2aXNvcikKK3sKKyAgICBUIGQgPSBk
aXZpc29yOworICAgIHVuc2lnbmVkIHA7CisgICAgVCBhZCwgYW5jLCBkZWx0YSwgcTEsIHIxLCBx
MiwgcjIsIHQ7CisgICAgVCBzaWduZWRNaW4gPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4o
KTsKKyAgICBEaXZpc2lvbk1hZ2ljPFQ+IG1hZzsKKyAgICB1bnNpZ25lZCBiaXRXaWR0aCA9IHNp
emVvZihkaXZpc29yKSAqIDg7CisKKyAgICAvLyBUaGlzIGNvZGUgZG9lc24ndCBsaWtlIHRvIHRo
aW5rIG9mIHNpZ25lZG5lc3MgYXMgYSB0eXBlLiBJbnN0ZWFkIGl0IGxpa2VzIHRvIHRoaW5rIHRo
YXQKKyAgICAvLyBvcGVyYXRpb25zIGhhdmUgc2lnbmVkbmVzcy4gVGhpcyBpcyBob3cgd2UgZ2Vu
ZXJhbGx5IGRvIGl0IGluIEIzIGFzIHdlbGwuIEZvciB0aGlzIHJlYXNvbiwKKyAgICAvLyB0aGlz
IHByb3ZpZGVzIGhlbHBlcnMgZm9yIHVuc2lnbmVkIG9wZXJhdGlvbnMgb24gdGhlIHNpZ25lZCB0
eXBlIChUKS4KKyAgICAKKyAgICBhdXRvIHpzaHIgPSBbJl0gKFQgdmFsdWUsIGludCBhbW91bnQp
IC0+IFQgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vu
c2lnbmVkPFQ+Ojp0eXBlPih2YWx1ZSkgPj4gYW1vdW50OworICAgIH07CisKKyAgICBhdXRvIHVk
aXYgPSBbJl0gKFQgbGVmdCwgVCByaWdodCkgLT4gVCB7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUPihzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8VD46OnR5cGU+
KGxlZnQpIC8gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBl
PihyaWdodCkpOworICAgIH07CisKKyAgICBhdXRvIHVyZW0gPSBbJl0gKFQgbGVmdCwgVCByaWdo
dCkgLT4gVCB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihzdGF0aWNfY2FzdDx0eXBl
bmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8VD46OnR5cGU+KGxlZnQpICUgc3RhdGljX2Nhc3Q8dHlw
ZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlPihyaWdodCkpOworICAgIH07CisKKyAg
ICBhdXRvIGFib3ZlRXF1YWwgPSBbJl0gKFQgbGVmdCwgVCByaWdodCkgLT4gYm9vbCB7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8VD46OnR5
cGU+KGxlZnQpID49IHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxUPjo6
dHlwZT4ocmlnaHQpOworICAgIH07CisKKyAgICBhdXRvIGJlbG93ID0gWyZdIChUIGxlZnQsIFQg
cmlnaHQpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3Rk
OjptYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlPihsZWZ0KSA8IHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0
ZDo6bWFrZV91bnNpZ25lZDxUPjo6dHlwZT4ocmlnaHQpOworICAgIH07CisKKyAgICBhZCA9IGQg
PCAwID8gLWQgOiBkOworICAgIHQgPSBzaWduZWRNaW4gKyB6c2hyKGQsIGJpdFdpZHRoIC0gMSk7
CisgICAgYW5jID0gdCAtIDEgLSB1cmVtKHQsIGFkKTsgICAvLyBhYnNvbHV0ZSB2YWx1ZSBvZiBu
YworICAgIHAgPSBiaXRXaWR0aCAtIDE7ICAgIC8vIGluaXRpYWxpemUgcAorICAgIHExID0gdWRp
dihzaWduZWRNaW4sIGFuYyk7ICAgLy8gaW5pdGlhbGl6ZSBxMSA9IDJwL2FicyhuYykKKyAgICBy
MSA9IHNpZ25lZE1pbiAtIHExKmFuYzsgICAgLy8gaW5pdGlhbGl6ZSByMSA9IHJlbSgycCxhYnMo
bmMpKQorICAgIHEyID0gdWRpdihzaWduZWRNaW4sIGFkKTsgICAgLy8gaW5pdGlhbGl6ZSBxMiA9
IDJwL2FicyhkKQorICAgIHIyID0gc2lnbmVkTWluIC0gcTIqYWQ7ICAgICAvLyBpbml0aWFsaXpl
IHIyID0gcmVtKDJwLGFicyhkKSkKKyAgICBkbyB7CisgICAgICAgIHAgPSBwICsgMTsKKyAgICAg
ICAgcTEgPSBxMSA8PCAxOyAgICAgICAgICAvLyB1cGRhdGUgcTEgPSAycC9hYnMobmMpCisgICAg
ICAgIHIxID0gcjEgPDwgMTsgICAgICAgICAgLy8gdXBkYXRlIHIxID0gcmVtKDJwL2FicyhuYykp
CisgICAgICAgIGlmIChhYm92ZUVxdWFsKHIxLCBhbmMpKSB7ICAvLyBtdXN0IGJlIHVuc2lnbmVk
IGNvbXBhcmlzb24KKyAgICAgICAgICAgIHExID0gcTEgKyAxOworICAgICAgICAgICAgcjEgPSBy
MSAtIGFuYzsKKyAgICAgICAgfQorICAgICAgICBxMiA9IHEyIDw8IDE7ICAgICAgICAgIC8vIHVw
ZGF0ZSBxMiA9IDJwL2FicyhkKQorICAgICAgICByMiA9IHIyIDw8IDE7ICAgICAgICAgIC8vIHVw
ZGF0ZSByMiA9IHJlbSgycC9hYnMoZCkpCisgICAgICAgIGlmIChhYm92ZUVxdWFsKHIyLGFkKSkg
eyAgIC8vIG11c3QgYmUgdW5zaWduZWQgY29tcGFyaXNvbgorICAgICAgICAgICAgcTIgPSBxMiAr
IDE7CisgICAgICAgICAgICByMiA9IHIyIC0gYWQ7CisgICAgICAgIH0KKyAgICAgICAgZGVsdGEg
PSBhZCAtIHIyOworICAgIH0gd2hpbGUgKGJlbG93KHExLCBkZWx0YSkgfHwgKHExID09IGRlbHRh
ICYmIHIxID09IDApKTsKKworICAgIG1hZy5tYWdpY011bHRpcGxpZXIgPSBxMiArIDE7CisgICAg
aWYgKGQgPCAwKQorICAgICAgICBtYWcubWFnaWNNdWx0aXBsaWVyID0gLW1hZy5tYWdpY011bHRp
cGxpZXI7ICAgLy8gcmVzdWx0aW5nIG1hZ2ljIG51bWJlcgorICAgIG1hZy5zaGlmdCA9IHAgLSBi
aXRXaWR0aDsgICAgICAgICAgLy8gcmVzdWx0aW5nIHNoaWZ0CisKKyAgICByZXR1cm4gbWFnOwor
fQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CisKKyNlbmRpZiAvLyBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkocmV2aXNpb24gMTk1NDY2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQjNCbG9ja0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkIzQ29t
cHV0ZURpdmlzaW9uTWFnaWMuaCIKICNpbmNsdWRlICJCM0NvbnRyb2xWYWx1ZS5oIgogI2luY2x1
ZGUgIkIzRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKQEAgLTUwOSw2ICs1
MTAsODkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIGFyZSBzdHJpY3RseSB3ZWFrZXI6IGl0
IGhhcyBjb3JuZXIgY2FzZXMgd2hlcmUgaXQncyBhbGxvd2VkIHRvIGRvIGFueXRoaW5nIGl0CiAg
ICAgICAgICAgICAvLyBsaWtlcy4KICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3VmFsdWUobV92
YWx1ZS0+Y2hpbGQoMCktPmRpdkNvbnN0YW50KG1fcHJvYywgbV92YWx1ZS0+Y2hpbGQoMSkpKTsK
KworICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5oYXNJbnQoKSkgeworICAgICAg
ICAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+Y2hpbGQoMSktPmFzSW50KCkpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIC0xOgorICAgICAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IERpdih2
YWx1ZSwgLTEpCisgICAgICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogTmVnKHZhbHVlKQor
ICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aE5ld1ZhbHVlKAorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9wcm9jLmFkZDxWYWx1ZT4oTmVnLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1
ZS0+Y2hpbGQoMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogRGl2KHZhbHVl
LCAwKQorICAgICAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IDAKKyAgICAgICAgICAgICAg
ICAgICAgLy8gV2UgY2FuIGRvIHRoaXMgYmVjYXVzZSBpdCdzIHByZWNpc2VseSBjb3JyZWN0IGZv
ciBDaGlsbERpdiBhbmQgZm9yIERpdiB3ZQorICAgICAgICAgICAgICAgICAgICAvLyBhcmUgYWxs
b3dlZCB0byBkbyB3aGF0ZXZlciB3ZSB3YW50LgorICAgICAgICAgICAgICAgICAgICBtX3ZhbHVl
LT5yZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczog
RGl2KHZhbHVlLCAxKQorICAgICAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IHZhbHVlCisg
ICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+
Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIC8vIFBlcmZvcm0gc3VwZXIgY29tcHJlaGVuc2l2ZSBzdHJlbmd0aCByZWR1
Y3Rpb24gb2YgZGl2aXNpb24uIEN1cnJlbnRseSB3ZQorICAgICAgICAgICAgICAgICAgICAvLyBv
bmx5IGRvIHRoaXMgZm9yIDMyLWJpdCBkaXZpc2lvbnMsIHNpbmNlIHdlIG5lZWQgYSBoaWdoIG11
bHRpcGx5CisgICAgICAgICAgICAgICAgICAgIC8vIG9wZXJhdGlvbi4gV2UgZW11bGF0ZSBpdCB1
c2luZyA2NC1iaXQgbXVsdGlwbHkuIFdlIGNhbid0IGVtdWxhdGUgNjQtYml0CisgICAgICAgICAg
ICAgICAgICAgIC8vIGhpZ2ggbXVsdGlwbHkgd2l0aCBhIDEyOC1iaXQgbXVsdGlwbHkgYmVjYXVz
ZSB3ZSBkb24ndCBoYXZlIGEgMTI4LWJpdAorICAgICAgICAgICAgICAgICAgICAvLyBtdWx0aXBs
eS4gV2UgY291bGQgZG8gaXQgd2l0aCBhIHBhdGNocG9pbnQgaWYgd2UgY2FyZWQgYmFkbHkgZW5v
dWdoLgorCisgICAgICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT50eXBlKCkgIT0gSW50MzIp
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBp
bnQzMl90IGRpdmlzb3IgPSBtX3ZhbHVlLT5jaGlsZCgxKS0+YXNJbnQzMigpOworICAgICAgICAg
ICAgICAgICAgICBEaXZpc2lvbk1hZ2ljPGludDMyX3Q+IG1hZ2ljID0gY29tcHV0ZURpdmlzaW9u
TWFnaWMoZGl2aXNvcik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gUGVyZm9ybSB0aGUgImhp
Z2giIG11bHRpcGxpY2F0aW9uLiBXZSBkbyBpdCBqdXN0IHRvIGdldCB0aGUgaGlnaCBiaXRzLgor
ICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHNvcnQgb2YgbGlrZSBtdWx0aXBseWluZyBi
eSB0aGUgcmVjaXByb2NhbCwganVzdCBtb3JlIGduYXJseS4gSXQncworICAgICAgICAgICAgICAg
ICAgICAvLyBmcm9tIEhhY2tlcidzIERlbGlnaHQgYW5kIEkgZG9uJ3QgY2xhaW0gdG8gdW5kZXJz
dGFuZCBpdC4KKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG1hZ2ljUXVvdGllbnQgPSBtX2lu
c2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRl
eCwgVHJ1bmMsIG1fdmFsdWUtPm9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2luZGV4LCBaU2hyLCBtX3ZhbHVlLT5vcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2luZGV4LCBNdWwsIG1fdmFsdWUtPm9yaWdpbigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgU0V4dDMyLCBtX3ZhbHVlLT5v
cmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3Q2NFZhbHVlPigKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIG1fdmFsdWUtPm9yaWdpbigpLCBtYWdpYy5t
YWdpY011bHRpcGxpZXIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlv
blNldC5pbnNlcnQ8Q29uc3QzMlZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbmRleCwgbV92YWx1ZS0+b3JpZ2luKCksIDMyKSkpOworCisgICAgICAgICAgICAgICAg
ICAgIGlmIChkaXZpc29yID4gMCAmJiBtYWdpYy5tYWdpY011bHRpcGxpZXIgPCAwKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtYWdpY1F1b3RpZW50ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBBZGQsIG1fdmFs
dWUtPm9yaWdpbigpLCBtYWdpY1F1b3RpZW50LCBtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGRpdmlzb3IgPCAwICYmIG1h
Z2ljLm1hZ2ljTXVsdGlwbGllciA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hZ2lj
UXVvdGllbnQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5kZXgsIFN1YiwgbV92YWx1ZS0+b3JpZ2luKCksIG1hZ2ljUXVvdGll
bnQsIG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBpZiAobWFnaWMuc2hpZnQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtYWdpY1F1b3RpZW50ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBTU2hyLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbWFn
aWNRdW90aWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnQ8Q29uc3QzMlZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9p
bmRleCwgbV92YWx1ZS0+b3JpZ2luKCksIG1hZ2ljLnNoaWZ0KSk7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgQWRkLCBtX3ZhbHVlLT5vcmlnaW4o
KSwgbWFnaWNRdW90aWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlv
blNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2lu
ZGV4LCBaU2hyLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbWFnaWNRdW90aWVudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0MzJWYWx1ZT4o
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBtX3ZhbHVlLT5v
cmlnaW4oKSwgMzEpKSkpOworICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBpZiAobV92YWx1ZS0+b3Bjb2RlKCkgIT0gQ2hpbGxEaXYgJiYgbV92YWx1ZS0+b3Bj
b2RlKCkgIT0gRGl2KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgTW9kOgo=
</data>
<flag name="review"
          id="294540"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>