<?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>155993</bug_id>
          
          <creation_ts>2016-03-29 16:09:38 -0700</creation_ts>
          <short_desc>bmalloc: page size should be configurable at runtime</short_desc>
          <delta_ts>2016-03-29 19:34:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>bmalloc</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>msaboff</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1178851</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-29 16:09:38 -0700</bug_when>
    <thetext>bmalloc: page size should be configurable at runtime</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178856</commentid>
    <comment_count>1</comment_count>
      <attachid>275146</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-29 16:26:38 -0700</bug_when>
    <thetext>Created attachment 275146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178901</commentid>
    <comment_count>2</comment_count>
      <attachid>275146</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-03-29 18:29:54 -0700</bug_when>
    <thetext>Comment on attachment 275146
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178917</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-29 19:22:43 -0700</bug_when>
    <thetext>Committed r198821: &lt;http://trac.webkit.org/changeset/198821&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178920</commentid>
    <comment_count>4</comment_count>
      <attachid>275146</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-03-29 19:29:00 -0700</bug_when>
    <thetext>Comment on attachment 275146
Patch

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

&gt; Source/bmalloc/bmalloc/VMAllocate.h:51
&gt; +    return sysconf(_SC_PAGESIZE);

Would it be worth caching the result here? - or are all interesting uses via Heap?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178921</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-03-29 19:29:32 -0700</bug_when>
    <thetext>r=me &amp; Ellie Barraclough too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178922</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-29 19:33:44 -0700</bug_when>
    <thetext>&gt; &gt; Source/bmalloc/bmalloc/VMAllocate.h:51
&gt; &gt; +    return sysconf(_SC_PAGESIZE);
&gt; 
&gt; Would it be worth caching the result here? - or are all interesting uses via
&gt; Heap?

Hmmm... At first I didn&apos;t want to because threads. But I guess we can assume that writing a size_t is atomic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178923</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-29 19:34:05 -0700</bug_when>
    <thetext>&gt; r=me &amp; Ellie Barraclough too.

\0/</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275146</attachid>
            <date>2016-03-29 16:26:38 -0700</date>
            <delta_ts>2016-03-29 18:29:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155993-20160329162641.patch</filename>
            <type>text/plain</type>
            <size>20968</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODgwOCkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk2IEBACisyMDE2LTAzLTI5ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYzogcGFnZSBzaXpl
IHNob3VsZCBiZSBjb25maWd1cmFibGUgYXQgcnVudGltZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1OTkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIG1lbW9yeSB3aW4gb24gMzJiaXQg
aU9TIGRldmljZXMsIHNpbmNlIHRoZWlyIHBhZ2Ugc2l6ZXMgYXJlCisgICAgICAgIDRrQiBhbmQg
bm90IDE2a0IuCisKKyAgICAgICAgSXQncyBhbHNvIGEgc3RlcCB0b3dhcmQgc3VwcG9ydGluZyA2
NGJpdCBpT1MgZGV2aWNlcyB0aGF0IGhhdmUgYQorICAgICAgICAxNmtCLzRrQiB2aXJ0dWFsL3Bo
eXNpY2FsIHBhZ2Ugc2l6ZSBzcGxpdC4KKworICAgICAgICAqIGJtYWxsb2MvQ2h1bmsuaDogQWxp
Z24gdG8gbGFyZ2VBbGlnbm1lbnQgc2luY2UgMiAqIHNtYWxsTWF4IGlzbid0CisgICAgICAgIHJl
cXVpcmVkIGJ5IHRoZSBib3VuZGFyeSB0YWcgYWxsb2NhdG9yLgorCisgICAgICAgIChibWFsbG9j
OjpDaHVuazo6cGFnZSk6IEFjY291bnQgZm9yIHRoZSBzbGlkZSB3aGVuIGFjY2Vzc2luZyBhIHBh
Z2UuCisgICAgICAgIEVhY2ggU21hbGxQYWdlIGhhc2hlcyA0a0Igb2YgbWVtb3J5LiBXaGVuIHdl
IHdhbnQgdG8gYWxsb2NhdGUgYSByZWdpb24KKyAgICAgICAgb2YgbWVtb3J5IGxhcmdlciB0aGFu
IDRrQiwgd2Ugc3RvcmUgb3VyIG1ldGFkYXRhIGluIHRoZSBmaXJzdCBTbWFsbFBhZ2UKKyAgICAg
ICAgaW4gdGhlIHJlZ2lvbiBhbmQgd2UgYXNzaWduIGEgc2xpZGUgdG8gdGhlIHJlbWFpbmluZyBT
bWFsbFBhZ2VzLCBzbworICAgICAgICB0aGV5IGZvcndhcmQgdG8gdGhhdCBmaXJzdCBTbWFsbFBh
Z2Ugd2hlbiBhY2Nlc3NlZC4KKworICAgICAgICBOT1RFOiBXZSBjb3VsZCB1c2UgYSBsZXNzIGZs
ZXhpYmxlIHRlY2huaXF1ZSB0aGF0IGp1c3QgaGFzaGVkIGJ5CisgICAgICAgIHZtUGFnZVNpemUo
KSBpbnN0ZWFkIG9mIDRrQiBhdCBydW50aW1lLCB3aXRoIG5vIHNsaWRlLCBidXQgSSB0aGluayB3
ZSdsbAorICAgICAgICBiZSBhYmxlIHRvIHVzZSB0aGlzIHNsaWRlIHRlY2huaXF1ZSB0byBtYWtl
IGV2ZW4gbW9yZSBwYWdlIHNpemVzCisgICAgICAgIGR5bmFtaWNhbGx5IGF0IHJ1bnRpbWUsIHdo
aWNoIHNob3VsZCBzYXZlIHNvbWUgbWVtb3J5IGFuZCBzaW1wbGlmeQorICAgICAgICB0aGUgYWxs
b2NhdG9yLgorCisgICAgICAgIChibWFsbG9jOjpTbWFsbFBhZ2U6OmJlZ2luKTogSXQncyBpbnZh
bGlkIHRvIGFjY2VzcyBhIFNtYWxsUGFnZSB3aXRoCisgICAgICAgIGEgc2xpZGUsIHNpbmNlIHN1
Y2ggU21hbGxQYWdlcyBkbyBub3QgY29udGFpbiBtZWFuaW5nZnVsIGRhdGEuCisKKyAgICAgICAg
KGJtYWxsb2M6OlNtYWxsUGFnZTo6ZW5kKTogQWNjb3VudCBmb3Igc21hbGxQYWdlQ291bnQgd2hl
biBjb21wdXRpbmcKKyAgICAgICAgdGhlIHNpemUgb2YgYSBwYWdlLgorCisgICAgICAgIChibWFs
bG9jOjpDaHVuazo6cGFnZUJlZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OkNodW5r
OjpwYWdlRW5kKTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdDo6cGFnZUJlZ2lu
KTogRGVsZXRlZC4KKworICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6CisgICAgICAgIChibWFs
bG9jOjpIZWFwOjpIZWFwKTogQ2FjaGUgdm1QYWdlU2l6ZSBiZWNhdXNlIGNvbXB1dGluZyBpdCBt
aWdodCByZXF1aXJlCisgICAgICAgIGEgc3lzY2FsbC4KKworICAgICAgICAoYm1hbGxvYzo6SGVh
cDo6aW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSk6IExpbmUgbWV0YWRhdGEgaXMgYSB2ZWN0b3IgaW5z
dGVhZAorICAgICAgICBvZiBhIDJEIGFycmF5IGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBob3cgbXVj
aCBtZXRhZGF0YSB3ZSdsbCBuZWVkIHVudGlsCisgICAgICAgIHdlIGtub3cgdGhlIHBhZ2Ugc2l6
ZS4KKworICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2VTbWFsbFBhZ2UpOiBCZSBzdXJl
IHRvIHJldmVydCB0aGUgc2xpZGUgd2hlbgorICAgICAgICBkZWFsbG9jYXRpbmcgYSBwYWdlLiBP
dGhlcndpc2UsIHRoZSBuZXh0IGF0dGVtcHQgdG8gYWxsb2NhdGUgdGhlIHBhZ2UKKyAgICAgICAg
d2lsbCBzbGlkZSB3aGVuIGluaXRpYWxpemluZyBpdCwgc2xpZGluZyB0byBub3doZXJlLgorCisg
ICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZVNtYWxsQnVtcFJhbmdlcyk6IEFjY291bnQg
Zm9yIHZlY3RvciBjaGFuZ2UgdG8KKyAgICAgICAgbGluZSBtZXRhZGF0YS4KKworICAgICAgICAo
Ym1hbGxvYzo6SGVhcDo6YWxsb2NhdGVTbWFsbFBhZ2UpOiBJbml0aWFsaXplIHNsaWRlIGFuZCBz
bWFsbFBhZ2VDb3VudAorICAgICAgICBzaW5jZSB0aGV5IGFyZW4ndCBjb25zdGFudCBhbnltb3Jl
LgorCisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZUxhcmdlKToKKyAgICAgICAgKGJt
YWxsb2M6OkhlYXA6OnNwbGl0QW5kQWxsb2NhdGUpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6
dHJ5QWxsb2NhdGVYTGFyZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2hyaW5rWExhcmdl
KTogQWRvcHQgZHluYW1pYyBwYWdlIHNpemUuCisKKyAgICAgICAgKiBibWFsbG9jL0hlYXAuaDoK
KworICAgICAgICAqIGJtYWxsb2MvU2l6ZXMuaDogc21hbGxQYWdlU2l6ZSBpcyBubyBsb25nZXIg
ZXF1YWwgdG8gdGhlIFZNIHBhZ2UKKyAgICAgICAgc2l6ZSAtLSBpdCdzIGp1c3QgdGhlIHNtYWxs
ZXN0IFZNIHBhZ2Ugc2l6ZSB3ZSdyZSBpbnRlcmVzdGVkIGluIHN1cHBvcnRpbmcuCisKKyAgICAg
ICAgKiBibWFsbG9jL1NtYWxsUGFnZS5oOgorICAgICAgICAoYm1hbGxvYzo6U21hbGxQYWdlOjpz
bGlkZSk6CisgICAgICAgIChibWFsbG9jOjpTbWFsbFBhZ2U6OnNldFNsaWRlKToKKyAgICAgICAg
KGJtYWxsb2M6OlNtYWxsUGFnZTo6c21hbGxQYWdlQ291bnQpOgorICAgICAgICAoYm1hbGxvYzo6
U21hbGxQYWdlOjpzZXRTbWFsbFBhZ2VDb3VudCk6CisgICAgICAgIChibWFsbG9jOjpTbWFsbFBh
Z2U6OnJlZik6CisgICAgICAgIChibWFsbG9jOjpTbWFsbFBhZ2U6OmRlcmVmKTogU3VwcG9ydCBz
bGlkZSBhbmQgc21hbGwgcGFnZSBjb3VudCBhcworICAgICAgICBkeW5hbWljIHZhbHVlcy4gVGhp
cyBkb2Vzbid0IGluY3JlYXNlIG1ldGFkYXRhIHNpemUgc2luY2Ugc2l6ZW9mKFNtYWxsUGFnZSkK
KyAgICAgICAgcm91bmRzIHVwIHRvIGFsaWdubWVudCBhbnl3YXkuCisKKyAgICAgICAgKiBibWFs
bG9jL1ZNQWxsb2NhdGUuaDoKKyAgICAgICAgKGJtYWxsb2M6OnZtUGFnZVNpemUpOgorICAgICAg
ICAoYm1hbGxvYzo6dm1QYWdlU2hpZnQpOgorICAgICAgICAoYm1hbGxvYzo6dm1TaXplKToKKyAg
ICAgICAgKGJtYWxsb2M6OnZtVmFsaWRhdGUpOgorICAgICAgICAoYm1hbGxvYzo6dHJ5Vk1BbGxv
Y2F0ZSk6CisgICAgICAgIChibWFsbG9jOjp2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzU2xvcHB5
KToKKyAgICAgICAgKGJtYWxsb2M6OnZtQWxsb2NhdGVQaHlzaWNhbFBhZ2VzU2xvcHB5KTogVHJl
YXQgcGFnZSBzaXplIGFzIGEgdmFyaWFibGUuCisKKyAgICAgICAgKiBibWFsbG9jL1ZlY3Rvci5o
OgorICAgICAgICAoYm1hbGxvYzo6VmVjdG9yOjppbml0aWFsQ2FwYWNpdHkpOgorICAgICAgICAo
Ym1hbGxvYzo6VmVjdG9yPFQ+OjppbnNlcnQpOgorICAgICAgICAoYm1hbGxvYzo6VmVjdG9yPFQ+
Ojpncm93KToKKyAgICAgICAgKGJtYWxsb2M6OlZlY3RvcjxUPjo6c2hyaW5rKToKKyAgICAgICAg
KGJtYWxsb2M6OlZlY3RvcjxUPjo6c2hyaW5rQ2FwYWNpdHkpOgorICAgICAgICAoYm1hbGxvYzo6
VmVjdG9yPFQ+Ojpncm93Q2FwYWNpdHkpOiBUcmVhdCBwYWdlIHNpemUgYXMgYSB2YXJpYWJsZS4K
KwogMjAxNi0wMy0yNiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTg3MDIsIHIxOTg3MDQuCkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0NodW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9DaHVuay5oCShyZXZpc2lvbiAxOTg3ODYpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0NodW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDYgQEAgcHVibGljOgogICAg
IFNtYWxsUGFnZSogcGFnZShzaXplX3Qgb2Zmc2V0KTsKICAgICBTbWFsbExpbmUqIGxpbmUoc2l6
ZV90IG9mZnNldCk7CiAKLSAgICBTbWFsbFBhZ2UqIHBhZ2VCZWdpbigpIHsgcmV0dXJuIE9iamVj
dChtX21lbW9yeSkucGFnZSgpOyB9Ci0gICAgU21hbGxQYWdlKiBwYWdlRW5kKCkgeyByZXR1cm4g
bV9wYWdlcy5lbmQoKTsgfQotICAgIAogICAgIFNtYWxsTGluZSogbGluZXMoKSB7IHJldHVybiBt
X2xpbmVzLmJlZ2luKCk7IH0KICAgICBTbWFsbFBhZ2UqIHBhZ2VzKCkgeyByZXR1cm4gbV9wYWdl
cy5iZWdpbigpOyB9CiAKQEAgLTgxLDE1ICs3OCwxMiBAQCBwcml2YXRlOgogICAgIC8vIFdlIHVz
ZSB0aGUgWCdzIGZvciBib3VuZGFyeSB0YWdzIGFuZCB0aGUgTydzIGZvciBlZGdlIHNlbnRpbmVs
cy4KIAogICAgIHN0ZDo6YXJyYXk8U21hbGxMaW5lLCBjaHVua1NpemUgLyBzbWFsbExpbmVTaXpl
PiBtX2xpbmVzOwotICAgIHN0ZDo6YXJyYXk8U21hbGxQYWdlLCBjaHVua1NpemUgLyB2bVBhZ2VT
aXplPiBtX3BhZ2VzOworICAgIHN0ZDo6YXJyYXk8U21hbGxQYWdlLCBjaHVua1NpemUgLyBzbWFs
bFBhZ2VTaXplPiBtX3BhZ2VzOwogICAgIHN0ZDo6YXJyYXk8Qm91bmRhcnlUYWcsIGJvdW5kYXJ5
VGFnQ291bnQ+IG1fYm91bmRhcnlUYWdzOwotICAgIGNoYXIgbV9tZW1vcnlbXSBfX2F0dHJpYnV0
ZV9fKChhbGlnbmVkKDIgKiBzbWFsbE1heCArIDApKSk7CisgICAgY2hhciBtX21lbW9yeVtdIF9f
YXR0cmlidXRlX18oKGFsaWduZWQobGFyZ2VBbGlnbm1lbnQgKyAwKSkpOwogfTsKIAogc3RhdGlj
X2Fzc2VydChzaXplb2YoQ2h1bmspICsgbGFyZ2VNYXggPD0gY2h1bmtTaXplLCAibGFyZ2VNYXgg
aXMgdG9vIGJpZyIpOwotc3RhdGljX2Fzc2VydCgKLSAgICBzaXplb2YoQ2h1bmspICUgdm1QYWdl
U2l6ZSArIDIgKiBzbWFsbE1heCA8PSB2bVBhZ2VTaXplLAotICAgICJ0aGUgZmlyc3QgcGFnZSBv
ZiBvYmplY3QgbWVtb3J5IGluIGEgc21hbGwgY2h1bmsgbXVzdCBiZSBhYmxlIHRvIGFsbG9jYXRl
IHNtYWxsTWF4Iik7CiAKIGlubGluZSBDaHVuazo6Q2h1bmsoc3RkOjpsb2NrX2d1YXJkPFN0YXRp
Y011dGV4PiYgbG9jaykKIHsKQEAgLTE2NSw4ICsxNTksOSBAQCBpbmxpbmUgdm9pZCogQ2h1bms6
Om9iamVjdChzaXplX3Qgb2Zmc2V0CiAKIGlubGluZSBTbWFsbFBhZ2UqIENodW5rOjpwYWdlKHNp
emVfdCBvZmZzZXQpCiB7Ci0gICAgc2l6ZV90IHBhZ2VOdW1iZXIgPSBvZmZzZXQgLyB2bVBhZ2VT
aXplOwotICAgIHJldHVybiAmbV9wYWdlc1twYWdlTnVtYmVyXTsKKyAgICBzaXplX3QgcGFnZU51
bWJlciA9IG9mZnNldCAvIHNtYWxsUGFnZVNpemU7CisgICAgU21hbGxQYWdlKiBwYWdlID0gJm1f
cGFnZXNbcGFnZU51bWJlcl07CisgICAgcmV0dXJuIHBhZ2UgLSBwYWdlLT5zbGlkZSgpOwogfQog
CiBpbmxpbmUgU21hbGxMaW5lKiBDaHVuazo6bGluZShzaXplX3Qgb2Zmc2V0KQpAQCAtMTkwLDE1
ICsxODUsMTcgQEAgaW5saW5lIGNoYXIqIFNtYWxsTGluZTo6ZW5kKCkKIAogaW5saW5lIFNtYWxs
TGluZSogU21hbGxQYWdlOjpiZWdpbigpCiB7CisgICAgQkFTU0VSVCghbV9zbGlkZSk7CiAgICAg
Q2h1bmsqIGNodW5rID0gQ2h1bms6OmdldCh0aGlzKTsKICAgICBzaXplX3QgcGFnZU51bWJlciA9
IHRoaXMgLSBjaHVuay0+cGFnZXMoKTsKLSAgICBzaXplX3QgbGluZU51bWJlciA9IHBhZ2VOdW1i
ZXIgKiBzbWFsbExpbmVDb3VudDsKKyAgICBzaXplX3QgbGluZU51bWJlciA9IHBhZ2VOdW1iZXIg
KiBzbWFsbFBhZ2VMaW5lQ291bnQ7CiAgICAgcmV0dXJuICZjaHVuay0+bGluZXMoKVtsaW5lTnVt
YmVyXTsKIH0KIAogaW5saW5lIFNtYWxsTGluZSogU21hbGxQYWdlOjplbmQoKQogewotICAgIHJl
dHVybiBiZWdpbigpICsgc21hbGxMaW5lQ291bnQ7CisgICAgQkFTU0VSVCghbV9zbGlkZSk7Cisg
ICAgcmV0dXJuIGJlZ2luKCkgKyBtX3NtYWxsUGFnZUNvdW50ICogc21hbGxQYWdlTGluZUNvdW50
OwogfQogCiBpbmxpbmUgT2JqZWN0OjpPYmplY3Qodm9pZCogb2JqZWN0KQpAQCAtMjE5LDExICsy
MTYsNiBAQCBpbmxpbmUgdm9pZCogT2JqZWN0OjpiZWdpbigpCiAgICAgcmV0dXJuIG1fY2h1bmst
Pm9iamVjdChtX29mZnNldCk7CiB9CiAKLWlubGluZSB2b2lkKiBPYmplY3Q6OnBhZ2VCZWdpbigp
Ci17Ci0gICAgcmV0dXJuIG1fY2h1bmstPm9iamVjdChyb3VuZERvd25Ub011bHRpcGxlT2Yodm1Q
YWdlU2l6ZSwgbV9vZmZzZXQpKTsKLX0KLQogaW5saW5lIFNtYWxsTGluZSogT2JqZWN0OjpsaW5l
KCkKIHsKICAgICByZXR1cm4gbV9jaHVuay0+bGluZShtX29mZnNldCk7CkluZGV4OiBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSGVhcC5jcHAJKHJldmlzaW9uIDE5ODc4NikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDggQEAKIG5hbWVzcGFjZSBi
bWFsbG9jIHsKIAogSGVhcDo6SGVhcChzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JikKLSAg
ICA6IG1fbGFyZ2VPYmplY3RzKFZNU3RhdGU6Okhhc1BoeXNpY2FsOjpUcnVlKQorICAgIDogbV92
bVBhZ2VTaXplKHZtUGFnZVNpemUoKSkKKyAgICAsIG1fbGFyZ2VPYmplY3RzKFZNU3RhdGU6Okhh
c1BoeXNpY2FsOjpUcnVlKQogICAgICwgbV9pc0FsbG9jYXRpbmdQYWdlcyhmYWxzZSkKICAgICAs
IG1fc2NhdmVuZ2VyKCp0aGlzLCAmSGVhcDo6Y29uY3VycmVudFNjYXZlbmdlKQogewpAQCAtNDYs
MTMgKzQ3LDE2IEBAIHZvaWQgSGVhcDo6aW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSgpCiB7CiAgICAg
Ly8gV2UgYXNzdW1lIHRoYXQgbV9zbWFsbExpbmVNZXRhZGF0YSBpcyB6ZXJvLWZpbGxlZC4KIAor
ICAgIHNpemVfdCBzbWFsbExpbmVDb3VudCA9IG1fdm1QYWdlU2l6ZSAvIHNtYWxsTGluZVNpemU7
CisgICAgbV9zbWFsbExpbmVNZXRhZGF0YS5ncm93KHNpemVDbGFzc0NvdW50ICogc21hbGxMaW5l
Q291bnQpOworCiAgICAgZm9yIChzaXplX3Qgc2l6ZUNsYXNzID0gMDsgc2l6ZUNsYXNzIDwgc2l6
ZUNsYXNzQ291bnQ7ICsrc2l6ZUNsYXNzKSB7CiAgICAgICAgIHNpemVfdCBzaXplID0gb2JqZWN0
U2l6ZShzaXplQ2xhc3MpOwotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IG1fc21hbGxMaW5lTWV0
YWRhdGFbc2l6ZUNsYXNzXTsKKyAgICAgICAgTGluZU1ldGFkYXRhKiBwYWdlTWV0YWRhdGEgPSAm
bV9zbWFsbExpbmVNZXRhZGF0YVtzaXplQ2xhc3MgKiBzbWFsbExpbmVDb3VudF07CiAKICAgICAg
ICAgc2l6ZV90IG9iamVjdCA9IDA7CiAgICAgICAgIHNpemVfdCBsaW5lID0gMDsKLSAgICAgICAg
d2hpbGUgKG9iamVjdCA8IHZtUGFnZVNpemUpIHsKKyAgICAgICAgd2hpbGUgKG9iamVjdCA8IG1f
dm1QYWdlU2l6ZSkgewogICAgICAgICAgICAgbGluZSA9IG9iamVjdCAvIHNtYWxsTGluZVNpemU7
CiAgICAgICAgICAgICBzaXplX3QgbGVmdG92ZXIgPSBvYmplY3QgJSBzbWFsbExpbmVTaXplOwog
CkBAIC02MCwxNSArNjQsMTUgQEAgdm9pZCBIZWFwOjppbml0aWFsaXplTGluZU1ldGFkYXRhKCkK
ICAgICAgICAgICAgIHNpemVfdCByZW1haW5kZXI7CiAgICAgICAgICAgICBkaXZpZGVSb3VuZGlu
Z1VwKHNtYWxsTGluZVNpemUgLSBsZWZ0b3Zlciwgc2l6ZSwgb2JqZWN0Q291bnQsIHJlbWFpbmRl
cik7CiAKLSAgICAgICAgICAgIG1ldGFkYXRhW2xpbmVdID0geyBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBzaG9ydD4obGVmdG92ZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4ob2JqZWN0Q291
bnQpIH07CisgICAgICAgICAgICBwYWdlTWV0YWRhdGFbbGluZV0gPSB7IHN0YXRpY19jYXN0PHVu
c2lnbmVkIHNob3J0PihsZWZ0b3ZlciksIHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihvYmpl
Y3RDb3VudCkgfTsKIAogICAgICAgICAgICAgb2JqZWN0ICs9IG9iamVjdENvdW50ICogc2l6ZTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIERvbid0IGFsbG93IHRoZSBsYXN0IG9iamVjdCBpbiBh
IHBhZ2UgdG8gZXNjYXBlIHRoZSBwYWdlLgotICAgICAgICBpZiAob2JqZWN0ID4gdm1QYWdlU2l6
ZSkgewotICAgICAgICAgICAgQkFTU0VSVChtZXRhZGF0YVtsaW5lXS5vYmplY3RDb3VudCk7Ci0g
ICAgICAgICAgICAtLW1ldGFkYXRhW2xpbmVdLm9iamVjdENvdW50OworICAgICAgICBpZiAob2Jq
ZWN0ID4gbV92bVBhZ2VTaXplKSB7CisgICAgICAgICAgICBCQVNTRVJUKHBhZ2VNZXRhZGF0YVts
aW5lXS5vYmplY3RDb3VudCk7CisgICAgICAgICAgICAtLXBhZ2VNZXRhZGF0YVtsaW5lXS5vYmpl
Y3RDb3VudDsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEwMCw3ICsxMDQsMTIgQEAgdm9pZCBI
ZWFwOjpzY2F2ZW5nZVNtYWxsUGFnZShzdGQ6OmxvY2tfZwogewogICAgIFNtYWxsUGFnZSogcGFn
ZSA9IG1fc21hbGxQYWdlcy5wb3AoKTsKIAotICAgIC8vIFRyYW5zZm9ybSBzbWFsbCBvYmplY3Qg
cGFnZSBiYWNrIGludG8gYSBsYXJnZSBvYmplY3QuCisgICAgLy8gUmV2ZXJ0IHRoZSBzbGlkZSgp
IHZhbHVlIG9uIGludGVybWVkaWF0ZSBTbWFsbFBhZ2VzIHNvIHRoZXkgaGFzaCB0bworICAgIC8v
IHRoZW1zZWx2ZXMgYWdhaW4uCisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBwYWdlLT5zbWFs
bFBhZ2VDb3VudCgpOyArK2kpCisgICAgICAgIHBhZ2VbaV0uc2V0U2xpZGUoMCk7CisKKyAgICAv
LyBSZXZlcnQgb3VyIHNtYWxsIG9iamVjdCBwYWdlIGJhY2sgdG8gbGFyZ2Ugb2JqZWN0LgogICAg
IHBhZ2UtPnNldE9iamVjdFR5cGUoT2JqZWN0VHlwZTo6TGFyZ2UpOwogCiAgICAgTGFyZ2VPYmpl
Y3QgbGFyZ2VPYmplY3QocGFnZS0+YmVnaW4oKS0+YmVnaW4oKSk7CkBAIC0xNDMsMTMgKzE1Miwx
NSBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzKHN0ZDo6CiAgICAgU21hbGxQ
YWdlKiBwYWdlID0gYWxsb2NhdGVTbWFsbFBhZ2UobG9jaywgc2l6ZUNsYXNzKTsKICAgICBTbWFs
bExpbmUqIGxpbmVzID0gcGFnZS0+YmVnaW4oKTsKICAgICBCQVNTRVJUKHBhZ2UtPmhhc0ZyZWVM
aW5lcyhsb2NrKSk7CisgICAgc2l6ZV90IHNtYWxsTGluZUNvdW50ID0gbV92bVBhZ2VTaXplIC8g
c21hbGxMaW5lU2l6ZTsKKyAgICBMaW5lTWV0YWRhdGEqIHBhZ2VNZXRhZGF0YSA9ICZtX3NtYWxs
TGluZU1ldGFkYXRhW3NpemVDbGFzcyAqIHNtYWxsTGluZUNvdW50XTsKIAogICAgIC8vIEZpbmQg
YSBmcmVlIGxpbmUuCiAgICAgZm9yIChzaXplX3QgbGluZU51bWJlciA9IDA7IGxpbmVOdW1iZXIg
PCBzbWFsbExpbmVDb3VudDsgKytsaW5lTnVtYmVyKSB7CiAgICAgICAgIGlmIChsaW5lc1tsaW5l
TnVtYmVyXS5yZWZDb3VudChsb2NrKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IExpbmVNZXRhZGF0YSYgbGluZU1ldGFkYXRhID0gbV9zbWFsbExpbmVNZXRhZGF0YVtzaXplQ2xh
c3NdW2xpbmVOdW1iZXJdOworICAgICAgICBMaW5lTWV0YWRhdGEmIGxpbmVNZXRhZGF0YSA9IHBh
Z2VNZXRhZGF0YVtsaW5lTnVtYmVyXTsKICAgICAgICAgaWYgKCFsaW5lTWV0YWRhdGEub2JqZWN0
Q291bnQpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTcwLDcgKzE4MSw3IEBAIHZvaWQg
SGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXMoc3RkOjoKICAgICAgICAgICAgIGlmIChsaW5l
c1tsaW5lTnVtYmVyXS5yZWZDb3VudChsb2NrKSkKICAgICAgICAgICAgICAgICBicmVhazsKIAot
ICAgICAgICAgICAgTGluZU1ldGFkYXRhJiBsaW5lTWV0YWRhdGEgPSBtX3NtYWxsTGluZU1ldGFk
YXRhW3NpemVDbGFzc11bbGluZU51bWJlcl07CisgICAgICAgICAgICBMaW5lTWV0YWRhdGEmIGxp
bmVNZXRhZGF0YSA9IHBhZ2VNZXRhZGF0YVtsaW5lTnVtYmVyXTsKICAgICAgICAgICAgIGlmICgh
bGluZU1ldGFkYXRhLm9iamVjdENvdW50KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBA
IC0yMDAsMTYgKzIxMSwyNCBAQCBTbWFsbFBhZ2UqIEhlYXA6OmFsbG9jYXRlU21hbGxQYWdlKHN0
ZDo6CiAgICAgICAgIHJldHVybiBwYWdlOwogICAgIH0KIAotICAgIHNpemVfdCB1bmFsaWduZWRT
aXplID0gbGFyZ2VNaW4gKyB2bVBhZ2VTaXplIC0gbGFyZ2VBbGlnbm1lbnQgKyB2bVBhZ2VTaXpl
OwotICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0gYWxsb2NhdGVMYXJnZShsb2NrLCB2bVBh
Z2VTaXplLCB2bVBhZ2VTaXplLCB1bmFsaWduZWRTaXplKTsKLQorICAgIHNpemVfdCB1bmFsaWdu
ZWRTaXplID0gbGFyZ2VNaW4gKyBtX3ZtUGFnZVNpemUgLSBsYXJnZUFsaWdubWVudCArIG1fdm1Q
YWdlU2l6ZTsKKyAgICBMYXJnZU9iamVjdCBsYXJnZU9iamVjdCA9IGFsbG9jYXRlTGFyZ2UobG9j
aywgbV92bVBhZ2VTaXplLCBtX3ZtUGFnZVNpemUsIHVuYWxpZ25lZFNpemUpOworICAgIAogICAg
IC8vIFRyYW5zZm9ybSBvdXIgbGFyZ2Ugb2JqZWN0IGludG8gYSBzbWFsbCBvYmplY3QgcGFnZS4g
V2UgZGVyZWYgaGVyZQotICAgIC8vIGJlY2F1c2Ugb3VyIHNtYWxsIG9iamVjdHMgd2lsbCBrZWVw
IHRoZWlyIG93biByZWZjb3VudHMgb24gdGhlIGxpbmUuCisgICAgLy8gYmVjYXVzZSBvdXIgc21h
bGwgb2JqZWN0cyB3aWxsIGtlZXAgdGhlaXIgb3duIGxpbmUgcmVmY291bnRzLgogICAgIE9iamVj
dCBvYmplY3QobGFyZ2VPYmplY3QuYmVnaW4oKSk7CiAgICAgb2JqZWN0LmxpbmUoKS0+ZGVyZWYo
bG9jayk7CiAgICAgb2JqZWN0LnBhZ2UoKS0+c2V0T2JqZWN0VHlwZShPYmplY3RUeXBlOjpTbWFs
bCk7CiAKLSAgICBvYmplY3QucGFnZSgpLT5zZXRTaXplQ2xhc3Moc2l6ZUNsYXNzKTsKKyAgICBT
bWFsbFBhZ2UqIHBhZ2UgPSBvYmplY3QucGFnZSgpOworICAgIHBhZ2UtPnNldFNpemVDbGFzcyhz
aXplQ2xhc3MpOworICAgIHBhZ2UtPnNldFNtYWxsUGFnZUNvdW50KG1fdm1QYWdlU2l6ZSAvIHNt
YWxsUGFnZVNpemUpOworCisgICAgLy8gU2V0IGEgc2xpZGUoKSB2YWx1ZSBvbiBpbnRlcm1lZGlh
dGUgU21hbGxQYWdlcyBzbyB0aGV5IGhhc2ggdG8gdGhlaXIKKyAgICAvLyB2bVBhZ2VTaXplLXNp
emVkIHBhZ2UuCisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBwYWdlLT5zbWFsbFBhZ2VDb3Vu
dCgpOyArK2kpCisgICAgICAgIHBhZ2VbaV0uc2V0U2xpZGUoaSk7CisKICAgICByZXR1cm4gb2Jq
ZWN0LnBhZ2UoKTsKIH0KIApAQCAtMzA3LDcgKzMyNiw3IEBAIHZvaWQqIEhlYXA6OmFsbG9jYXRl
TGFyZ2Uoc3RkOjpsb2NrX2d1YXIKICAgICBCQVNTRVJUKHNpemUgPj0gbGFyZ2VNaW4pOwogICAg
IEJBU1NFUlQoc2l6ZSA9PSByb3VuZFVwVG9NdWx0aXBsZU9mPGxhcmdlQWxpZ25tZW50PihzaXpl
KSk7CiAgICAgCi0gICAgaWYgKHNpemUgPD0gdm1QYWdlU2l6ZSkKKyAgICBpZiAoc2l6ZSA8PSBt
X3ZtUGFnZVNpemUpCiAgICAgICAgIHNjYXZlbmdlU21hbGxQYWdlcyhsb2NrKTsKIAogICAgIExh
cmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0gbV9sYXJnZU9iamVjdHMudGFrZShzaXplKTsKQEAgLTMz
OCw3ICszNTcsNyBAQCB2b2lkKiBIZWFwOjphbGxvY2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyCiAg
ICAgQkFTU0VSVChhbGlnbm1lbnQgPj0gbGFyZ2VBbGlnbm1lbnQpOwogICAgIEJBU1NFUlQoaXNQ
b3dlck9mVHdvKGFsaWdubWVudCkpOwogCi0gICAgaWYgKHNpemUgPD0gdm1QYWdlU2l6ZSkKKyAg
ICBpZiAoc2l6ZSA8PSBtX3ZtUGFnZVNpemUpCiAgICAgICAgIHNjYXZlbmdlU21hbGxQYWdlcyhs
b2NrKTsKIAogICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0gbV9sYXJnZU9iamVjdHMudGFr
ZShhbGlnbm1lbnQsIHNpemUsIHVuYWxpZ25lZFNpemUpOwpAQCAtNDEyLDcgKzQzMSw3IEBAIFhM
YXJnZVJhbmdlIEhlYXA6OnNwbGl0QW5kQWxsb2NhdGUoWExhcmcKICAgICAvLyBpbiB0aGUgYWxs
b2NhdGVkIGxpc3QuIFRoaXMgaXMgYW4gaW1wb3J0YW50IG9wdGltaXphdGlvbiBiZWNhdXNlIGl0
CiAgICAgLy8ga2VlcHMgdGhlIGZyZWUgbGlzdCBzaG9ydCwgc3BlZWRpbmcgdXAgYWxsb2NhdGlv
biBhbmQgbWVyZ2luZy4KIAotICAgIHN0ZDo6cGFpcjxYTGFyZ2VSYW5nZSwgWExhcmdlUmFuZ2U+
IGFsbG9jYXRlZCA9IHJhbmdlLnNwbGl0KHJvdW5kVXBUb011bHRpcGxlT2Y8dm1QYWdlU2l6ZT4o
c2l6ZSkpOworICAgIHN0ZDo6cGFpcjxYTGFyZ2VSYW5nZSwgWExhcmdlUmFuZ2U+IGFsbG9jYXRl
ZCA9IHJhbmdlLnNwbGl0KHJvdW5kVXBUb011bHRpcGxlT2YobV92bVBhZ2VTaXplLCBzaXplKSk7
CiAgICAgaWYgKGFsbG9jYXRlZC5maXJzdC52bVN0YXRlKCkuaGFzVmlydHVhbCgpKSB7CiAgICAg
ICAgIHZtQWxsb2NhdGVQaHlzaWNhbFBhZ2VzU2xvcHB5KGFsbG9jYXRlZC5maXJzdC5iZWdpbigp
LCBhbGxvY2F0ZWQuZmlyc3Quc2l6ZSgpKTsKICAgICAgICAgYWxsb2NhdGVkLmZpcnN0LnNldFZN
U3RhdGUoVk1TdGF0ZTo6UGh5c2ljYWwpOwpAQCAtNDI5LDcgKzQ0OCw3IEBAIHZvaWQqIEhlYXA6
OnRyeUFsbG9jYXRlWExhcmdlKHN0ZDo6bG9ja18KIAogICAgIG1faXNBbGxvY2F0aW5nUGFnZXMg
PSB0cnVlOwogCi0gICAgc2l6ZSA9IHN0ZDo6bWF4KHZtUGFnZVNpemUsIHNpemUpOworICAgIHNp
emUgPSBzdGQ6Om1heChtX3ZtUGFnZVNpemUsIHNpemUpOwogICAgIGFsaWdubWVudCA9IHJvdW5k
VXBUb011bHRpcGxlT2Y8eExhcmdlQWxpZ25tZW50PihhbGlnbm1lbnQpOwogCiAgICAgWExhcmdl
UmFuZ2UgcmFuZ2UgPSBtX3hMYXJnZU1hcC50YWtlRnJlZShhbGlnbm1lbnQsIHNpemUpOwpAQCAt
NDU2LDcgKzQ3NSw3IEBAIHZvaWQgSGVhcDo6c2hyaW5rWExhcmdlKHN0ZDo6dW5pcXVlX2xvY2sK
IHsKICAgICBCQVNTRVJUKG9iamVjdC5zaXplKCkgPiBuZXdTaXplKTsKIAotICAgIGlmIChvYmpl
Y3Quc2l6ZSgpIC0gbmV3U2l6ZSA8IHZtUGFnZVNpemUpCisgICAgaWYgKG9iamVjdC5zaXplKCkg
LSBuZXdTaXplIDwgbV92bVBhZ2VTaXplKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgWExh
cmdlUmFuZ2UgcmFuZ2UgPSBtX3hMYXJnZU1hcC50YWtlQWxsb2NhdGVkKG9iamVjdC5iZWdpbigp
KTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCShyZXZpc2lvbiAxOTg3ODYpCisrKyBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsOSBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2NhdmVuZ2VMYXJnZU9iamVjdHMoc3RkOjp1bmlxdWVfbG9jazxT
dGF0aWNNdXRleD4mLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKTsKICAgICB2b2lkIHNjYXZl
bmdlWExhcmdlT2JqZWN0cyhzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYsIHN0ZDo6Y2hy
b25vOjptaWxsaXNlY29uZHMpOwogCi0gICAgc3RkOjphcnJheTxzdGQ6OmFycmF5PExpbmVNZXRh
ZGF0YSwgc21hbGxMaW5lQ291bnQ+LCBzaXplQ2xhc3NDb3VudD4gbV9zbWFsbExpbmVNZXRhZGF0
YTsKKyAgICBzaXplX3QgbV92bVBhZ2VTaXplOworCisgICAgVmVjdG9yPExpbmVNZXRhZGF0YT4g
bV9zbWFsbExpbmVNZXRhZGF0YTsKIAogICAgIHN0ZDo6YXJyYXk8TGlzdDxTbWFsbFBhZ2U+LCBz
aXplQ2xhc3NDb3VudD4gbV9zbWFsbFBhZ2VzV2l0aEZyZWVMaW5lczsKIApJbmRleDogU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvU2l6ZXMuaAkocmV2aXNpb24gMTk4Nzg2KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9TaXplcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNCArNDYsOSBAQCBuYW1lc3BhY2UgU2l6
ZXMgewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYWxpZ25tZW50ID0gODsKICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGFsaWdubWVudE1hc2sgPSBhbGlnbm1lbnQgLSAxdWw7CiAKLSNpZiBCUExB
VEZPUk0oSU9TKQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgdm1QYWdlU2l6ZSA9IDE2ICoga0I7
Ci0jZWxzZQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgdm1QYWdlU2l6ZSA9IDQgKiBrQjsKLSNl
bmRpZgotICAgIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxMaW5lU2l6ZSA9IDI1NjsK
LSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsTGluZUNvdW50ID0gdm1QYWdlU2l6ZSAvIHNt
YWxsTGluZVNpemU7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbFBhZ2VTaXplID0gNCAq
IGtCOworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxQYWdlTGluZUNvdW50ID0gc21hbGxQ
YWdlU2l6ZSAvIHNtYWxsTGluZVNpemU7CiAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxs
TWF4ID0gMSAqIGtCOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWFza1NpemVDbGFzc01heCA9
IDUxMjsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxQYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbFBhZ2UuaAkocmV2aXNpb24gMTk4Nzg2
KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbFBhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNTgsMTAgKzU4LDE4IEBAIHB1YmxpYzoKICAgICBTbWFsbExpbmUqIGJlZ2luKCk7CiAgICAg
U21hbGxMaW5lKiBlbmQoKTsKIAorICAgIHVuc2lnbmVkIGNoYXIgc2xpZGUoKSBjb25zdCB7IHJl
dHVybiBtX3NsaWRlOyB9CisgICAgdm9pZCBzZXRTbGlkZSh1bnNpZ25lZCBjaGFyIHNsaWRlKSB7
IG1fc2xpZGUgPSBzbGlkZTsgfQorCisgICAgdW5zaWduZWQgY2hhciBzbWFsbFBhZ2VDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fc21hbGxQYWdlQ291bnQ7IH0KKyAgICB2b2lkIHNldFNtYWxsUGFn
ZUNvdW50KHVuc2lnbmVkIGNoYXIgc21hbGxQYWdlQ291bnQpIHsgbV9zbWFsbFBhZ2VDb3VudCA9
IHNtYWxsUGFnZUNvdW50OyB9CisKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgY2hhciBtX2hhc0Zy
ZWVMaW5lczogMTsKICAgICB1bnNpZ25lZCBjaGFyIG1fcmVmQ291bnQ6IDc7CiAgICAgdW5zaWdu
ZWQgY2hhciBtX3NpemVDbGFzczsKKyAgICB1bnNpZ25lZCBjaGFyIG1fc21hbGxQYWdlQ291bnQ7
CisgICAgdW5zaWduZWQgY2hhciBtX3NsaWRlOwogICAgIE9iamVjdFR5cGUgbV9vYmplY3RUeXBl
OwogCiBzdGF0aWNfYXNzZXJ0KApAQCAtNzEsMTIgKzc5LDE0IEBAIHN0YXRpY19hc3NlcnQoCiAK
IGlubGluZSB2b2lkIFNtYWxsUGFnZTo6cmVmKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4m
KQogeworICAgIEJBU1NFUlQoIW1fc2xpZGUpOwogICAgICsrbV9yZWZDb3VudDsKICAgICBCQVNT
RVJUKG1fcmVmQ291bnQpOwogfQogCiBpbmxpbmUgYm9vbCBTbWFsbFBhZ2U6OmRlcmVmKHN0ZDo6
bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKQogeworICAgIEJBU1NFUlQoIW1fc2xpZGUpOwogICAg
IEJBU1NFUlQobV9yZWZDb3VudCk7CiAgICAgLS1tX3JlZkNvdW50OwogICAgIHJldHVybiAhbV9y
ZWZDb3VudDsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1BbGxvY2F0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1BbGxvY2F0ZS5oCShyZXZpc2lvbiAx
OTg3ODYpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNQWxsb2NhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDYsMzEgKzQ2LDM1IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKICNkZWZpbmUgQk1B
TExPQ19WTV9UQUcgLTEKICNlbmRpZgogCitpbmxpbmUgc2l6ZV90IHZtUGFnZVNpemUoKQorewor
ICAgIHJldHVybiBzeXNjb25mKF9TQ19QQUdFU0laRSk7Cit9CisKK2lubGluZSBzaXplX3Qgdm1Q
YWdlU2hpZnQoKQoreworICAgIHJldHVybiBsb2cyKHZtUGFnZVNpemUoKSk7Cit9CisKIGlubGlu
ZSBzaXplX3Qgdm1TaXplKHNpemVfdCBzaXplKQogewotICAgIHJldHVybiByb3VuZFVwVG9NdWx0
aXBsZU9mPHZtUGFnZVNpemU+KHNpemUpOworICAgIHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9m
KHZtUGFnZVNpemUoKSwgc2l6ZSk7CiB9CiAKIGlubGluZSB2b2lkIHZtVmFsaWRhdGUoc2l6ZV90
IHZtU2l6ZSkKIHsKLSAgICAvLyBXZSB1c2UgZ2V0cGFnZXNpemUoKSBoZXJlIGluc3RlYWQgb2Yg
dm1QYWdlU2l6ZSBiZWNhdXNlIHZtUGFnZVNpemUgaXMKLSAgICAvLyBhbGxvd2VkIHRvIGJlIGxh
cmdlciB0aGFuIHRoZSBPUydzIHRydWUgcGFnZSBzaXplLgotCiAgICAgVU5VU0VEKHZtU2l6ZSk7
CiAgICAgQkFTU0VSVCh2bVNpemUpOwotICAgIEJBU1NFUlQodm1TaXplID09IHJvdW5kVXBUb011
bHRpcGxlT2Yoc3RhdGljX2Nhc3Q8c2l6ZV90PihnZXRwYWdlc2l6ZSgpKSwgdm1TaXplKSk7Cisg
ICAgQkFTU0VSVCh2bVNpemUgPT0gcm91bmRVcFRvTXVsdGlwbGVPZih2bVBhZ2VTaXplKCksIHZt
U2l6ZSkpOwogfQogCiBpbmxpbmUgdm9pZCB2bVZhbGlkYXRlKHZvaWQqIHAsIHNpemVfdCB2bVNp
emUpCiB7Ci0gICAgLy8gV2UgdXNlIGdldHBhZ2VzaXplKCkgaGVyZSBpbnN0ZWFkIG9mIHZtUGFn
ZVNpemUgYmVjYXVzZSB2bVBhZ2VTaXplIGlzCi0gICAgLy8gYWxsb3dlZCB0byBiZSBsYXJnZXIg
dGhhbiB0aGUgT1MncyB0cnVlIHBhZ2Ugc2l6ZS4KLQogICAgIHZtVmFsaWRhdGUodm1TaXplKTsK
ICAgICAKICAgICBVTlVTRUQocCk7CiAgICAgQkFTU0VSVChwKTsKLSAgICBCQVNTRVJUKHAgPT0g
bWFzayhwLCB+KGdldHBhZ2VzaXplKCkgLSAxKSkpOworICAgIEJBU1NFUlQocCA9PSBtYXNrKHAs
IH4odm1QYWdlU2l6ZSgpIC0gMSkpKTsKIH0KIAogaW5saW5lIHZvaWQqIHRyeVZNQWxsb2NhdGUo
c2l6ZV90IHZtU2l6ZSkKQEAgLTEwMywxMCArMTA3LDcgQEAgaW5saW5lIHZvaWQqIHRyeVZNQWxs
b2NhdGUoc2l6ZV90IHZtQWxpZwogICAgIHZtVmFsaWRhdGUodm1TaXplKTsKICAgICB2bVZhbGlk
YXRlKHZtQWxpZ25tZW50KTsKIAotICAgIC8vIFdlIHVzZSBnZXRwYWdlc2l6ZSgpIGhlcmUgaW5z
dGVhZCBvZiB2bVBhZ2VTaXplIGJlY2F1c2Ugdm1QYWdlU2l6ZSBpcwotICAgIC8vIGFsbG93ZWQg
dG8gYmUgbGFyZ2VyIHRoYW4gdGhlIE9TJ3MgdHJ1ZSBwYWdlIHNpemUuCi0KLSAgICBzaXplX3Qg
bWFwcGVkU2l6ZSA9IHZtQWxpZ25tZW50IC0gZ2V0cGFnZXNpemUoKSArIHZtU2l6ZTsKKyAgICBz
aXplX3QgbWFwcGVkU2l6ZSA9IHZtQWxpZ25tZW50IC0gdm1QYWdlU2l6ZSgpICsgdm1TaXplOwog
ICAgIGNoYXIqIG1hcHBlZCA9IHN0YXRpY19jYXN0PGNoYXIqPih0cnlWTUFsbG9jYXRlKG1hcHBl
ZFNpemUpKTsKICAgICBpZiAoIW1hcHBlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
NTYsOCArMTU3LDggQEAgaW5saW5lIHZvaWQgdm1BbGxvY2F0ZVBoeXNpY2FsUGFnZXModm9pZAog
Ly8gVHJpbXMgcmVxdWVzdHMgdGhhdCBhcmUgdW4tcGFnZS1hbGlnbmVkLgogaW5saW5lIHZvaWQg
dm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdlc1Nsb3BweSh2b2lkKiBwLCBzaXplX3Qgc2l6ZSkKIHsK
LSAgICBjaGFyKiBiZWdpbiA9IHJvdW5kVXBUb011bHRpcGxlT2Y8dm1QYWdlU2l6ZT4oc3RhdGlj
X2Nhc3Q8Y2hhcio+KHApKTsKLSAgICBjaGFyKiBlbmQgPSByb3VuZERvd25Ub011bHRpcGxlT2Y8
dm1QYWdlU2l6ZT4oc3RhdGljX2Nhc3Q8Y2hhcio+KHApICsgc2l6ZSk7CisgICAgY2hhciogYmVn
aW4gPSByb3VuZFVwVG9NdWx0aXBsZU9mKHZtUGFnZVNpemUoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+
KHApKTsKKyAgICBjaGFyKiBlbmQgPSByb3VuZERvd25Ub011bHRpcGxlT2Yodm1QYWdlU2l6ZSgp
LCBzdGF0aWNfY2FzdDxjaGFyKj4ocCkgKyBzaXplKTsKIAogICAgIGlmIChiZWdpbiA+PSBlbmQp
CiAgICAgICAgIHJldHVybjsKQEAgLTE2OCw4ICsxNjksOCBAQCBpbmxpbmUgdm9pZCB2bURlYWxs
b2NhdGVQaHlzaWNhbFBhZ2VzU2xvCiAvLyBFeHBhbmRzIHJlcXVlc3RzIHRoYXQgYXJlIHVuLXBh
Z2UtYWxpZ25lZC4KIGlubGluZSB2b2lkIHZtQWxsb2NhdGVQaHlzaWNhbFBhZ2VzU2xvcHB5KHZv
aWQqIHAsIHNpemVfdCBzaXplKQogewotICAgIGNoYXIqIGJlZ2luID0gcm91bmREb3duVG9NdWx0
aXBsZU9mPHZtUGFnZVNpemU+KHN0YXRpY19jYXN0PGNoYXIqPihwKSk7Ci0gICAgY2hhciogZW5k
ID0gcm91bmRVcFRvTXVsdGlwbGVPZjx2bVBhZ2VTaXplPihzdGF0aWNfY2FzdDxjaGFyKj4ocCkg
KyBzaXplKTsKKyAgICBjaGFyKiBiZWdpbiA9IHJvdW5kRG93blRvTXVsdGlwbGVPZih2bVBhZ2VT
aXplKCksIHN0YXRpY19jYXN0PGNoYXIqPihwKSk7CisgICAgY2hhciogZW5kID0gcm91bmRVcFRv
TXVsdGlwbGVPZih2bVBhZ2VTaXplKCksIHN0YXRpY19jYXN0PGNoYXIqPihwKSArIHNpemUpOwog
CiAgICAgaWYgKGJlZ2luID49IGVuZCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9WZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1ZlY3Rvci5oCShyZXZpc2lvbiAxOTg3ODYpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1ZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2b2lkIGluc2VydChpdGVyYXRvciwgY29uc3QgVCYpOwogCisgICAgdm9pZCBncm93KHNp
emVfdCk7CiAgICAgdm9pZCBzaHJpbmsoc2l6ZV90KTsKIAogICAgIHZvaWQgc2hyaW5rVG9GaXQo
KTsKQEAgLTczLDcgKzc0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGdyb3dGYWN0b3IgPSAyOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2hyaW5rRmFj
dG9yID0gNDsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGluaXRpYWxDYXBhY2l0eSA9IHZtUGFn
ZVNpemUgLyBzaXplb2YoVCk7CisgICAgc3RhdGljIHNpemVfdCBpbml0aWFsQ2FwYWNpdHkoKSB7
IHJldHVybiB2bVBhZ2VTaXplKCkgLyBzaXplb2YoVCk7IH0KIAogICAgIHZvaWQgZ3Jvd0NhcGFj
aXR5KCk7CiAgICAgdm9pZCBzaHJpbmtDYXBhY2l0eSgpOwpAQCAtMTQ2LDExICsxNDcsMTkgQEAg
dm9pZCBWZWN0b3I8VD46Omluc2VydChpdGVyYXRvciBpdCwgY29ucwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgVmVjdG9yPFQ+Ojpncm93KHNpemVfdCBzaXplKQorewor
ICAgIEJBU1NFUlQoc2l6ZSA+PSBtX3NpemUpOworICAgIHdoaWxlIChtX3NpemUgPCBzaXplKQor
ICAgICAgICBwdXNoKFQoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgdm9p
ZCBWZWN0b3I8VD46OnNocmluayhzaXplX3Qgc2l6ZSkKIHsKICAgICBCQVNTRVJUKHNpemUgPD0g
bV9zaXplKTsKICAgICBtX3NpemUgPSBzaXplOwotICAgIGlmIChtX2NhcGFjaXR5ID4gaW5pdGlh
bENhcGFjaXR5ICYmIG1fc2l6ZSA8IG1fY2FwYWNpdHkgLyBzaHJpbmtGYWN0b3IpCisgICAgaWYg
KG1fc2l6ZSA8IG1fY2FwYWNpdHkgLyBzaHJpbmtGYWN0b3IgJiYgbV9jYXBhY2l0eSA+IGluaXRp
YWxDYXBhY2l0eSgpKQogICAgICAgICBzaHJpbmtDYXBhY2l0eSgpOwogfQogCkBAIC0xNzEsMTQg
KzE4MCwxNCBAQCB2b2lkIFZlY3RvcjxUPjo6cmVhbGxvY2F0ZUJ1ZmZlcihzaXplX3QgCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogTk9fSU5MSU5FIHZvaWQgVmVjdG9yPFQ+OjpzaHJpbmtDYXBhY2l0
eSgpCiB7Ci0gICAgc2l6ZV90IG5ld0NhcGFjaXR5ID0gbWF4KGluaXRpYWxDYXBhY2l0eSwgbV9j
YXBhY2l0eSAvIHNocmlua0ZhY3Rvcik7CisgICAgc2l6ZV90IG5ld0NhcGFjaXR5ID0gbWF4KGlu
aXRpYWxDYXBhY2l0eSgpLCBtX2NhcGFjaXR5IC8gc2hyaW5rRmFjdG9yKTsKICAgICByZWFsbG9j
YXRlQnVmZmVyKG5ld0NhcGFjaXR5KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIE5PX0lO
TElORSB2b2lkIFZlY3RvcjxUPjo6Z3Jvd0NhcGFjaXR5KCkKIHsKLSAgICBzaXplX3QgbmV3Q2Fw
YWNpdHkgPSBtYXgoaW5pdGlhbENhcGFjaXR5LCBtX3NpemUgKiBncm93RmFjdG9yKTsKKyAgICBz
aXplX3QgbmV3Q2FwYWNpdHkgPSBtYXgoaW5pdGlhbENhcGFjaXR5KCksIG1fc2l6ZSAqIGdyb3dG
YWN0b3IpOwogICAgIHJlYWxsb2NhdGVCdWZmZXIobmV3Q2FwYWNpdHkpOwogfQogCg==
</data>
<flag name="review"
          id="299515"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>