<?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>150828</bug_id>
          
          <creation_ts>2015-11-02 17:36:23 -0800</creation_ts>
          <short_desc>B3/Air should use bubble sort for their insertion sets, because it&apos;s faster than std::stable_sort</short_desc>
          <delta_ts>2015-11-03 12:27:55 -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>150279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138786</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-02 17:36:23 -0800</bug_when>
    <thetext>std::stable_sort really sucks.  We should use bubble sort instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138787</commentid>
    <comment_count>1</comment_count>
      <attachid>264651</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-02 17:43:20 -0800</bug_when>
    <thetext>Created attachment 264651
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138788</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-02 17:46:13 -0800</bug_when>
    <thetext>Attachment 264651 did not pass style-queue:


ERROR: Source/WTF/wtf/BubbleSort.h:42:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/BubbleSort.h:44:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 2 in 8 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>1138816</commentid>
    <comment_count>3</comment_count>
      <attachid>264651</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-02 20:41:15 -0800</bug_when>
    <thetext>Comment on attachment 264651
the patch

Would it be as fast if you added something to eliminate the possibility of the worst case, such as when the number of swaps reaches 5 times the number of elements fall back to std::stable_sort? 5 is arbitrary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138825</commentid>
    <comment_count>4</comment_count>
      <attachid>264651</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-11-02 21:19:25 -0800</bug_when>
    <thetext>Comment on attachment 264651
the patch

Why not insertion sort? Equally easy, fewer writes because it doesn&apos;t swap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138969</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-03 10:41:32 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 264651 [details]
&gt; the patch
&gt; 
&gt; Why not insertion sort? Equally easy, fewer writes because it doesn&apos;t swap.

Style points!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138970</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-11-03 10:43:01 -0800</bug_when>
    <thetext>:(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138974</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-03 10:50:41 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; :(

In all seriousness, I just wanted a quick fix to undo the perf regression caused by using std::stable_sort.

I filed a bug to fix this: https://bugs.webkit.org/show_bug.cgi?id=150843</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139018</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-03 12:27:55 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/191960</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264651</attachid>
            <date>2015-11-02 17:43:20 -0800</date>
            <delta_ts>2015-11-02 21:19:25 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>13240</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkxOTMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDE1LTExLTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QjMvQWlyIHNob3VsZCB1c2UgYnViYmxlIHNvcnQgZm9yIHRoZWlyIGluc2VydGlvbiBzZXRzLCBi
ZWNhdXNlIGl0J3MgZmFzdGVyIHRoYW4gc3RkOjpzdGFibGVfc29ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODI4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5kbyB0aGUgMiUgY29tcGlsZSB0aW1l
IHJlZ3Jlc3Npb24gY2F1c2VkIGJ5IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE5
MTkxMy4KKworICAgICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6
QjM6Okluc2VydGlvblNldDo6ZXhlY3V0ZSk6IFN3aXRjaCB0byBidWJibGUgc29ydC4KKyAgICAg
ICAgKiBiMy9haXIvQWlySW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
SW5zZXJ0aW9uU2V0OjpleGVjdXRlKTogU3dpdGNoIHRvIGJ1YmJsZSBzb3J0LgorICAgICAgICAq
IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QmxvY2tJ
bnNlcnRpb25TZXQ6OmV4ZWN1dGUpOiBTd2l0Y2ggYmFjayB0byBxdWlja3NvcnQuCisKIDIwMTUt
MTEtMDIgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV3Jvbmcg
dmFsdWUgcmVjb3ZlcnkgZm9yIERGRyB0cnkvY2F0Y2ggd2l0aCBhIGdldHRlciB0aGF0IHRocm93
cyBkdXJpbmcgYW4gSUMgbWlzcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5z
ZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJ
bnNlcnRpb25TZXQuY3BwCShyZXZpc2lvbiAxOTE5MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjksMTMg
QEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrLmgiCisjaW5j
bHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
CiAKIHZvaWQgSW5zZXJ0aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKQogewotICAg
IHN0ZDo6c3RhYmxlX3NvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQo
KSk7CisgICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVu
ZCgpKTsKICAgICBleGVjdXRlSW5zZXJ0aW9ucyhibG9jay0+bV92YWx1ZXMsIG1faW5zZXJ0aW9u
cyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zZXJ0aW9u
U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpcklu
c2VydGlvblNldC5jcHAJKHJldmlzaW9uIDE5MTkxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlySW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5
LDEzIEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkFpckJhc2ljQmxvY2suaCIK
LSNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCiB2b2lkIEluc2Vy
dGlvblNldDo6ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKIHsKLSAgICBzdGQ6OnN0YWJsZV9z
b3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOworICAgIGJ1YmJs
ZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7CiAgICAgZXhl
Y3V0ZUluc2VydGlvbnMoYmxvY2stPm1faW5zdHMsIG1faW5zZXJ0aW9ucyk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQu
Y3BwCShyZXZpc2lvbiAxOTE5MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Js
b2NrSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsOSArNzEsMTAgQEAgYm9v
bCBCbG9ja0luc2VydGlvblNldDo6ZXhlY3V0ZSgpCiAgICAgaWYgKG1faW5zZXJ0aW9ucy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICAvLyBXZSBhbGxvdyBpbnNl
cnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5lZWQgdG8KLSAg
ICAvLyBzb3J0IHRoZW0gYmVmb3JlIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4KLSAg
ICBzdGQ6OnN0YWJsZV9zb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5k
KCkpOworICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMgaW4gYW55
IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCisgICAgLy8gcnVubmluZyBX
VEY6OmV4ZWN1dGVJbnNlcnRpb25zLiBBbHNvLCB3ZSBkb24ndCByZWFsbHkgY2FyZSBpZiB0aGUg
c29ydCBpcyBzdGFibGUgc2luY2UKKyAgICAvLyBiYXNpYyBibG9jayBvcmRlciBkb2Vzbid0IGhh
dmUgc2VtYW50aWNzIC0gaXQncyBqdXN0IHRvIG1ha2UgY29kZSBlYXNpZXIgdG8gcmVhZC4KKyAg
ICBzdGQ6OnNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7CiAK
ICAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX2dyYXBoLm1fYmxvY2tzLCBtX2luc2VydGlvbnMpOwog
ICAgIApJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTkxMykKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTUtMTEtMDIgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBCMy9BaXIgc2hvdWxkIHVzZSBidWJibGUgc29y
dCBmb3IgdGhlaXIgaW5zZXJ0aW9uIHNldHMsIGJlY2F1c2UgaXQncyBmYXN0ZXIgdGhhbiBzdGQ6
OnN0YWJsZV9zb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTA4MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBwcmV0dHkgZ29vZCBidWJibGUgc29ydCBpbXBsZW1lbnRhdGlvbiB0byBXVEYu
IFRoaXMgaW1wbGVtZW50YXRpb24gaGFzIHRocmVlCisgICAgICAgIGNvbW1vbiB0cmlja3M6CisK
KyAgICAgICAgLSBGb3J3YXJkIGFuZCBiYWNrd2FyZCBzY2Fucy4gVGhpcyByZWR1Y2VzIHRoZSBz
ZXZlcml0eSBvZiBjZXJ0YWluIGtpbmRzIG9mIGJ1YmJsZSBzb3J0CisgICAgICAgICAgcGF0aG9s
b2dpZXMuCisKKyAgICAgICAgLSBSZXR1cm4gaWYgYSBzY2FuIGZpbmRzIHRoZSBsaXN0IHRvIGJl
IHNvcnRlZC4gVGhpcyBnaXZlcyB0aGUgYWxnb3JpdGhtIG9uZSBvZiBpdHMgbW9zdAorICAgICAg
ICAgIGF0dHJhY3RpdmUgcHJvcGVydGllczogaXQncyBzdXBlciBmYXN0IHdoZW4gdGhlIGxpc3Qg
aXMgYWxyZWFkeSBzb3J0ZWQuCisKKyAgICAgICAgLSBFYWNoIHNjYW4gZWxpbWluYXRlcyBvbmUg
ZWxlbWVudCBmcm9tIGZ1dHVyZSBzY2Fucy4gVGhpcyBtYWtlcyB0aGUgYWxnb3JpdGhtIG5vIHdv
cnNlCisgICAgICAgICAgdGhhbiBpbnNlcnRpb24gc29ydC4KKworICAgICAgICBXaHkgZG8gd2Ug
d2FudCB0aGlzPyBCZWNhdXNlIGJ1YmJsZSBzb3J0IGlzIGEgcmVhbGx5IGdyZWF0IHN0YWJsZSBz
b3J0IGZvciBzbWFsbCBsaXN0cywKKyAgICAgICAgb3IgbGFyZ2UgbGlzdHMgaW4gd2hpY2ggb25s
eSBhIGhhbmRmdWwgb2YgZWxlbWVudHMgYXJlIG91dCBvZiBvcmRlci4gQ29tcGlsZXIgaW5zZXJ0
aW9uCisgICAgICAgIHNldHMgdGVuZCB0byBiZSBvbmUgb2YgdGhvc2Ugb3Igc29tZXdoZXJlIGlu
IGJldHdlZW46IHVzdWFsbHkgdGhleSBhcmUgdmVyeSBzbWFsbCwgYW5kCisgICAgICAgIHVzdWFs
bHkgdGhleSBhcmUgc29ydGVkLiBJdCdzIHJhcmUgdGhhdCBhbiBlbGVtZW50IHdpbGwgYmUgb3V0
IG9mIG9yZGVyLCBhbmQgd2hlbiBpdCBpcywKKyAgICAgICAgaXQncyB1c3VhbGx5IHZlcnkgY2xv
c2UgdG8gd2hlcmUgaXQncyBzdXBwb3NlZCB0byBiZS4KKworICAgICAgICBUaGlzIGlzIGEgc2ln
bmlmaWNhbnQgc3BlZWQtdXAgZm9yIEIzIGNvbXBpbGUgdGltZXMuCisKKyAgICAgICAgKiBXVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQnViYmxlU29ydC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdURjo6YnViYmxlU29ydCk6CisgICAgICAgICogd3RmL0NNYWtlTGlz
dHMudHh0OgorCiAyMDE1LTExLTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gUmVtb3ZlIHN1cHBvcnQgZm9yIEdTb2NrZXQgbWFp
biBsb29wIHNvdXJjZXMgZnJvbSBHTWFpbkxvb3BTb3VyY2UKSW5kZXg6IFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkxOTEzKQorKysgU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNyBAQAogCQkwRjJCNjZBNzE3QjZCNEZEMDBBN0FFM0YgLyogRmxpcEJ5dGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZBNTE3QjZCNEY3
MDBBN0FFM0YgLyogRmxpcEJ5dGVzLmggKi87IH07CiAJCTBGMzUwMTY0MUJCMjU4RDUwMEYwQTJB
MyAvKiBXZWFrUmFuZG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjM1MDE2MzFCQjI1OEM4MDBGMEEyQTMgLyogV2Vha1JhbmRvbS5oICovOyB9Owog
CQkwRjQ1NzA0MzFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwNDIxQkU1QjU4RjAwNjJBNjI5
IC8qIERvbWluYXRvcnMuaCAqLzsgfTsKKwkJMEY0NTcwNDUxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1
YmJsZVNvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggKi87IH07CiAJCTBGODI0
QTY4MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODI0QTY0MUI3NDQzQTAwMDJFMzQ1RCAvKiBQ
YXJraW5nTG90LmNwcCAqLzsgfTsKIAkJMEY4MjRBNjkxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtp
bmdMb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
ODI0QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi87IH07CiAJCTBGODcxMDVB
MTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg3MTA1OTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9p
bnRlci5oICovOyB9OwpAQCAtMzIzLDYgKzMyNCw3IEBACiAJCTBGMzAwQjdEMThBQjQ4QjQwMEE2
RDcyRSAvKiBIYXNoTWV0aG9kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hNZXRob2QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzNTAxNjMxQkIyNThDODAwRjBBMkEzIC8qIFdlYWtS
YW5kb20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JhbmRvbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyog
RG9taW5hdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb21pbmF0b3Jz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDU3MDQ0MUJFODM0NDEwMDYyQTYy
OSAvKiBCdWJibGVTb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1YmJs
ZVNvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MjRBNjQxQjc0NDNBMDAw
MkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGFya2luZ0xvdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODI0
QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhcmtpbmdMb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY4NzEwNTkxNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmF3UG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzQyLDYgKzc0NCw3IEBACiAJCQkJQThBNDcyNjExNTFBODI1QTAwNDEyM0ZGIC8qIEJp
dFZlY3Rvci5oICovLAogCQkJCUE4QTQ3MjY0MTUxQTgyNUEwMDQxMjNGRiAvKiBCbG9ja1N0YWNr
LmggKi8sCiAJCQkJQThBNDcyNjUxNTFBODI1QTAwNDEyM0ZGIC8qIEJsb29tRmlsdGVyLmggKi8s
CisJCQkJMEY0NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLywKIAkJCQlB
OEE0NzI2NzE1MUE4MjVBMDA0MTIzRkYgLyogQnVtcFBvaW50ZXJBbGxvY2F0b3IuaCAqLywKIAkJ
CQlFQjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi8sCiAJCQkJQThBNDcy
NkExNTFBODI1QTAwNDEyM0ZGIC8qIENoZWNrZWRBcml0aG1ldGljLmggKi8sCkBAIC0xMjI5LDYg
KzEyMzIsNyBAQAogCQkJCUZFREFDRDNFMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyOTE1MUE4MjVCMDA0MTIzRkYgLyogU3RhdGljQ29u
c3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyQTE1MUE4MjVCMDA0MTIzRkYg
LyogU3RkTGliRXh0cmFzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ1NzA0NTFCRTgzNDQxMDA2
MkE2MjkgLyogQnViYmxlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzRGOEE5MzcxOUM2NUVC
NDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2QkI3NjkxNjJG
MzAwNTAwREQxNkRCIC8qIFN0cmVhbUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0
M0IxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9CdWJibGVTb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvQnViYmxlU29ydC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvQnViYmxlU29y
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQnViYmxlU29ydF9oCisjZGVmaW5l
IEJ1YmJsZVNvcnRfaAorCituYW1lc3BhY2UgV1RGIHsKKworLy8gV2h5IHdvdWxkIHlvdSB3YW50
IHRvIHVzZSBidWJibGUgc29ydD8gV2hlbiB5b3Uga25vdyB0aGF0IHlvdXIgaW5wdXQgaXMgYWxy
ZWFkeSBtb3N0bHkKKy8vIHNvcnRlZCEgVGhpcyBzb3J0IGlzIGd1YXJhbnRlZWQgc3RhYmxlIChp
dCB3b24ndCByZW9yZGVyIGVsZW1lbnRzIHRoYXQgd2VyZSBlcXVhbCksIGl0CisvLyBkb2Vzbid0
IHJlcXVpcmUgYW55IHNjcmF0Y2ggbWVtb3J5LCBhbmQgaXMgdGhlIGZhc3Rlc3QgYXZhaWxhYmxl
IHNvcnRpbmcgYWxnb3JpdGhtIGlmIHlvdXIKKy8vIGlucHV0IGFscmVhZHkgaGFwcGVucyB0byBi
ZSBzb3J0ZWQuIFRoaXMgc29ydCBpcyBhbHNvIGxpa2VseSB0byBoYXZlIGNvbXBldGV0aXZlIHBl
cmZvcm1hbmNlCisvLyBmb3Igc21hbGwgaW5wdXRzLCBldmVuIGlmIHRoZXkgYXJlIHZlcnkgdW5z
b3J0ZWQuCisKKy8vIFdlIHVzZSB0aGlzIHNvcnRpbmcgYWxnb3JpdGhtIGZvciBjb21waWxlciBp
bnNlcnRpb24gc2V0cy4gQW4gaW5zZXJ0aW9uIHNldCBpcyB1c3VhbGx5IHZlcnkKKy8vIG5lYXJs
eSBzb3J0ZWQuIEl0IHNob3VsZG4ndCB0YWtlIG1vcmUgdGhhbiBhIGZldyBidWJibGVzIHRvIG1h
a2UgaXQgZnVsbHkgc29ydGVkLiBXZSBtYWRlCisvLyB0aGlzIGRlY2lzaW9uIGRlbGliZXJhdGVs
eS4gSGVyZSdzIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgdGVzdGIzIENvbXBsZXgoNjQsIDM4NCkg
YmVuY2htYXJrCisvLyB3aXRoIHRoZSBBaXI6Okluc2VydGlvblNldCBkb2luZyBubyBzb3J0aW5n
LCBzdGQ6OnN0YWJsZV9zb3J0aW5nLCBhbmQgYnViYmxlU29ydGluZzoKKy8vCisvLyBubyBzb3J0
OiAgICAgICAgICA4LjgyMjIgKy0gMC4xOTExIG1zLgorLy8gc3RkOjpzdGFibGVfc29ydDogOS4w
MTM1ICstIDAuMTQxOCBtcy4KKy8vIGJ1YmJsZVNvcnQ6ICAgICAgIDguODQ1NyArLSAwLjE1MTEg
bXMuCisvLworLy8gQ2xlYXJseSwgYnViYmxlIHNvcnQgaXMgc3VwZXJpb3IuCisvLworLy8gTm90
ZSB0aGF0IHRoZSBjcml0aWNhbCBwaWVjZSBoZXJlIGlzIHRoYXQgaW5zZXJ0aW9uIHNldHMgdGVu
ZCB0byBiZSBzbWFsbCwgdGhleSBtdXN0IGJlCisvLyBzb3J0ZWQsIHRoZSBzb3J0IG11c3QgYmUg
c3RhYmxlLCB0aGV5IGFyZSB1c3VhbGx5IGFscmVhZHkgc29ydGVkIHRvIGJlZ2luIHdpdGgsIGFu
ZCB3aGVuIHRoZXkKKy8vIGFyZSB1bnNvcnRlZCBpdCdzIHVzdWFsbHkgYmVjYXVzZSBvZiBhIGZl
dyBvdXQtb2YtcGxhY2UgZWxlbWVudHMuCisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlw
ZSwgdHlwZW5hbWUgTGVzc1RoYW4+Cit2b2lkIGJ1YmJsZVNvcnQoSXRlcmF0b3JUeXBlIGJlZ2lu
LCBJdGVyYXRvclR5cGUgZW5kLCBjb25zdCBMZXNzVGhhbiYgbGVzc1RoYW4pCit7CisgICAgZm9y
ICg7OykgeworICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgQVNTRVJUKGVu
ZCA+PSBiZWdpbik7CisgICAgICAgIHNpemVfdCBsaW1pdCA9IGVuZCAtIGJlZ2luOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gbGltaXQ7IGktLSA+IDE7KSB7CisgICAgICAgICAgICBpZiAobGVz
c1RoYW4oYmVnaW5baV0sIGJlZ2luW2kgLSAxXSkpIHsKKyAgICAgICAgICAgICAgICBzdGQ6OnN3
YXAoYmVnaW5baV0sIGJlZ2luW2kgLSAxXSk7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFjaGFuZ2VkKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBBZnRlciBvbmUgcnVuLCB0aGUgZmlyc3QgZWxl
bWVudCBpbiB0aGUgbGlzdCBpcyBndWFyYW50ZWVkIHRvIGJlIHRoZSBzbWFsbGVzdC4KKyAgICAg
ICAgYmVnaW4rKzsKKworICAgICAgICAvLyBOb3cgZ28gaW4gdGhlIG90aGVyIGRpcmVjdGlvbi4g
VGhpcyBlbGltaW5hdGVzIG1vc3Qgc29ydGluZyBwYXRob2xvZ2llcy4KKyAgICAgICAgY2hhbmdl
ZCA9IGZhbHNlOworICAgICAgICBBU1NFUlQoZW5kID49IGJlZ2luKTsKKyAgICAgICAgbGltaXQg
PSBlbmQgLSBiZWdpbjsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBsaW1pdDsgKytp
KSB7CisgICAgICAgICAgICBpZiAobGVzc1RoYW4oYmVnaW5baV0sIGJlZ2luW2kgLSAxXSkpIHsK
KyAgICAgICAgICAgICAgICBzdGQ6OnN3YXAoYmVnaW5baV0sIGJlZ2luW2kgLSAxXSk7CisgICAg
ICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKCFjaGFuZ2VkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBOb3cg
dGhlIGxhc3QgZWxlbWVudCBpcyBndWFyYW50ZWVkIHRvIGJlIHRoZSBsYXJnZXN0LgorICAgICAg
ICBlbmQtLTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4KK3Zv
aWQgYnViYmxlU29ydChJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJhdG9yVHlwZSBlbmQpCit7Cisg
ICAgYnViYmxlU29ydCgKKyAgICAgICAgYmVnaW4sIGVuZCwKKyAgICAgICAgW10gKHR5cGVuYW1l
IHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yVHlwZT46OnZhbHVlX3R5cGUgbGVmdCwKKyAg
ICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yVHlwZT46OnZh
bHVlX3R5cGUgcmlnaHQpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIGxlZnQgPCByaWdo
dDsKKyAgICAgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OmJ1
YmJsZVNvcnQ7CisKKyNlbmRpZiAvLyBCdWJibGVTb3J0X2gKKwpJbmRleDogU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDE5MTkxMykKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC02LDYgKzYsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBCYWdU
b0hhc2hNYXAuaAogICAgIEJpdFZlY3Rvci5oCiAgICAgQml0bWFwLmgKKyAgICBCdWJibGVTb3J0
LmgKICAgICBCdW1wUG9pbnRlckFsbG9jYXRvci5oCiAgICAgQnl0ZU9yZGVyLmgKICAgICBDb21w
aWxhdGlvblRocmVhZC5oCg==
</data>
<flag name="review"
          id="289743"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>