<?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>106471</bug_id>
          
          <creation_ts>2013-01-09 10:31:01 -0800</creation_ts>
          <short_desc>Release FastMalloc thread caches on memory warning</short_desc>
          <delta_ts>2013-01-09 12:12:20 -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>WebCore Misc.</component>
          <version>528+ (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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>kling</cc>
    
    <cc>levin+threading</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>philn</cc>
    
    <cc>psolanki</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>803460</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-09 10:31:01 -0800</bug_when>
    <thetext>FastMalloc keeps some memory in per-thread caches (currently 2MB each). We currently flush these caches on memory warning for the main thread only. We should do it for other WebKit threads that use FastMalloc too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803462</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-01-09 10:32:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/12982020&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803471</commentid>
    <comment_count>2</comment_count>
      <attachid>181944</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-09 10:41:25 -0800</bug_when>
    <thetext>Created attachment 181944
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803482</commentid>
    <comment_count>3</comment_count>
      <attachid>181944</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-09 10:46:44 -0800</bug_when>
    <thetext>Comment on attachment 181944
patch

Attachment 181944 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15761561</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803483</commentid>
    <comment_count>4</comment_count>
      <attachid>181944</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-09 10:47:03 -0800</bug_when>
    <thetext>Comment on attachment 181944
patch

Attachment 181944 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15775422</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803498</commentid>
    <comment_count>5</comment_count>
      <attachid>181950</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-09 10:57:52 -0800</bug_when>
    <thetext>Created attachment 181950
patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803510</commentid>
    <comment_count>6</comment_count>
      <attachid>181950</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-09 11:07:44 -0800</bug_when>
    <thetext>Comment on attachment 181950
patch2

I think you also want Cleanup() to call signalScavenger(). Otherwise, the memory will be in free lists in the central cache, but it won&apos;t necessarily get unmapped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803529</commentid>
    <comment_count>7</comment_count>
      <attachid>181950</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 11:34:27 -0800</bug_when>
    <thetext>Comment on attachment 181950
patch2

Attachment 181950 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15760567</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803563</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-09 12:10:11 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/139218</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803564</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-09 12:12:20 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 181950 [details])
&gt; I think you also want Cleanup() to call signalScavenger(). Otherwise, the memory will be in free lists in the central cache, but it won&apos;t necessarily get unmapped.

That shouldn&apos;t be necessary. On memory warning we forcibly free the memory in central cache afterwards. Under normal circumstances just returning the spans should do sufficient amount of tickling.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181944</attachid>
            <date>2013-01-09 10:41:25 -0800</date>
            <delta_ts>2013-01-09 10:57:52 -0800</delta_ts>
            <desc>patch</desc>
            <filename>fast-malloc-thread-clean-2.patch</filename>
            <type>text/plain</type>
            <size>12204</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMzkyMDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAxLTA5ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZWxlYXNlIEZhc3RNYWxsb2MgdGhyZWFkIGNhY2hl
cyBvbiBtZW1vcnkgd2FybmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA2NDcxCisKKyAgICAgICAgVXNlIFRDTWFsbG9jX1RocmVhZENhY2hlOjpD
bGVhbnVwKCkgaW5zdGVhZCBvZiBjYWxsaW5nIFNjYXZlbmdlKCkgdHdpY2UuIFRoaXMgcmVsZWFz
ZXMgYWxsIHRoZSBtZW1vcnkKKyAgICAgICAgYW5kIGxvb2tzIG5pY2VyIHRvby4KKworICAgICAg
ICAqIHd0Zi9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgKFdURjo6cmVsZWFzZUZhc3RNYWxsb2NG
cmVlTWVtb3J5KToKKwogMjAxMy0wMS0wOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IG1ha2UgZGlzdGNoZWNrLgpJ
bmRleDogU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvRmFzdE1hbGxvYy5jcHAJKHJldmlzaW9uIDEzOTA2NCkKKysrIFNvdXJjZS9XVEYv
d3RmL0Zhc3RNYWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzgyLDE3ICs0MzgyLDEzIEBA
IHZvaWQgKigqX19tZW1hbGlnbl9ob29rKShzaXplX3QsIHNpemVfdCwKIHZvaWQgcmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5KCkKIHsKICAgICAvLyBGbHVzaCBmcmVlIHBhZ2VzIGluIHRoZSBj
dXJyZW50IHRocmVhZCBjYWNoZSBiYWNrIHRvIHRoZSBwYWdlIGhlYXAuCi0gICAgLy8gTG93IHdh
dGVybWFyayBtZWNoYW5pc20gaW4gU2NhdmVuZ2UoKSBwcmV2ZW50cyBmdWxsIHJldHVybiBvbiB0
aGUgZmlyc3QgcGFzcy4KLSAgICAvLyBUaGUgc2Vjb25kIHBhc3MgZmx1c2hlcyBldmVyeXRoaW5n
LgotICAgIGlmIChUQ01hbGxvY19UaHJlYWRDYWNoZSogdGhyZWFkQ2FjaGUgPSBUQ01hbGxvY19U
aHJlYWRDYWNoZTo6R2V0Q2FjaGVJZlByZXNlbnQoKSkgewotICAgICAgICB0aHJlYWRDYWNoZS0+
U2NhdmVuZ2UoKTsKLSAgICAgICAgdGhyZWFkQ2FjaGUtPlNjYXZlbmdlKCk7Ci0gICAgfQorICAg
IGlmIChUQ01hbGxvY19UaHJlYWRDYWNoZSogdGhyZWFkQ2FjaGUgPSBUQ01hbGxvY19UaHJlYWRD
YWNoZTo6R2V0Q2FjaGVJZlByZXNlbnQoKSkKKyAgICAgICAgdGhyZWFkQ2FjaGUtPkNsZWFudXAo
KTsKIAogICAgIFNwaW5Mb2NrSG9sZGVyIGgoJnBhZ2VoZWFwX2xvY2spOwogICAgIHBhZ2VoZWFw
LT5SZWxlYXNlRnJlZVBhZ2VzKCk7CiB9Ci0gICAgCisKIEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZh
c3RNYWxsb2NTdGF0aXN0aWNzKCkKIHsKICAgICBGYXN0TWFsbG9jU3RhdGlzdGljcyBzdGF0aXN0
aWNzOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM5MjA2KQorKysgU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTMtMDEtMDkgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJlbGVhc2UgRmFzdE1h
bGxvYyB0aHJlYWQgY2FjaGVzIG9uIG1lbW9yeSB3YXJuaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY0NzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEZhc3RNYWxsb2Mga2VlcHMgc29t
ZSBtZW1vcnkgaW4gcGVyLXRocmVhZCBjYWNoZXMgKGN1cnJlbnRseSAyTUIgZWFjaCkuIFdlIGN1
cnJlbnRseSBmbHVzaCB0aGVzZSBjYWNoZXMgb24gbWVtb3J5IHdhcm5pbmcgCisgICAgICAgIGZv
ciB0aGUgbWFpbiB0aHJlYWQgb25seS4gV2Ugc2hvdWxkIGRvIGl0IGZvciBvdGhlciBXZWJLaXQg
dGhyZWFkcyB0aGF0IHVzZSBGYXN0TWFsbG9jIHRvby4KKworICAgICAgICBDYWxsIFdURjo6cmVs
ZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5IGluIGEgYnVuY2ggb2YgV2ViQ29yZSBzdXBwb3J0IHRo
cmVhZHMgb24gbWVtb3J5IHdhcm5pbmcuIFVuZm9ydHVuYXRlbHkgd2UgZG9uJ3QgaGF2ZSAKKyAg
ICAgICAgYW4gdW5pZm9ybSB3YXkgb2YgZG9pbmcgdGhyZWFkcyBzbyB0aGlzIHJlcXVpcmVzIGJ1
bmNoIG9mIHRocmVhZCB0eXBlIHNwZWNpZmljIGNvZGUuCisgICAgICAgIAorICAgICAgICBMb29r
cyB0byBiZSB+MSUgcHJvZ3Jlc3Npb24gaW4gbWVtYnVzdGVyMyBmaW5hbCBhbmQgbWF4aW11bSBu
dW1iZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1l
bW9yeSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVGFzay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdG9yYWdlVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZVRhc2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUYXNrOjpjcmVhdGVSZWxlYXNlRmFz
dE1hbGxvY0ZyZWVNZW1vcnkpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzdG9yYWdlVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OlN0b3JhZ2VUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6flN0b3JhZ2VUaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZVRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJl
YWQpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVRocmVhZC5oOgorICAgICAgICAoU3RvcmFn
ZVRocmVhZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dGhyZWFkU2V0TXV0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyVGhyZWFk
cyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZENvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZDo6fldvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6Cisg
ICAgICAgIChXb3JrZXJUaHJlYWQpOgorCiAyMDEzLTAxLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNldHRpbmdzLmluIGFuZCBtYWtlX3NldHRpbmdzLnBs
IHRvIHRoZSBwcm9qZWN0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lbW9y
eVByZXNzdXJlSGFuZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tCShyZXZpc2lvbiAxMzkwNjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiwxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9NZW1v
cnlDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTGF5ZXJQb29sLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RocmVhZC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9TdG9yYWdlVGhyZWFkLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dvcmtlclRo
cmVhZC5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3dGYvRmFzdE1h
bGxvYy5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uYWwuaD4KIAogI2lmICFQTEFURk9STShJT1Mp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogI2ltcG9ydCAiV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIgpAQCAtMTYwLDYgKzE2NCwxNCBAQCB2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yCiAKICAgICBnY0NvbnRyb2xsZXIoKS5kaXNjYXJk
QWxsQ29tcGlsZWRDb2RlKCk7CiAKKyAgICAvLyBGYXN0TWFsbG9jIGhhcyBsb2NrLWZyZWUgdGhy
ZWFkIHNwZWNpZmljIGNhY2hlcyB0aGF0IGNhbiBvbmx5IGJlIGNsZWFyZWQgZnJvbSB0aGUgdGhy
ZWFkIGl0c2VsZi4KKyAgICBTdG9yYWdlVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1v
cnlJbkFsbFRocmVhZCgpOworI2lmIEVOQUJMRShXT1JLRVJTKQorICAgIFdvcmtlclRocmVhZDo6
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWQoKTsKKyNlbmRpZgorI2lmIEVO
QUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChi
aW5kKFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KSk7CisjZW5kaWYKICAgICBXVEY6
OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VUYXNrLmNwcAkocmV2aXNpb24gMTM5MDY0KQorKysgU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2
ICsxMDUsOSBAQCB2b2lkIFN0b3JhZ2VUYXNrOjpwZXJmb3JtVGFzaygpCiAgICAgICAgIGNhc2Ug
RGVsZXRlRW1wdHlEYXRhYmFzZToKICAgICAgICAgICAgIG1fYXJlYS0+ZGVsZXRlRW1wdHlEYXRh
YmFzZSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVsZWFzZUZhc3RNYWxs
b2NGcmVlTWVtb3J5OgorICAgICAgICAgICAgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1v
cnkoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRlcm1pbmF0ZVRocmVhZDoK
ICAgICAgICAgICAgIG1fdGhyZWFkLT5wZXJmb3JtVGVybWluYXRlKCk7CiAgICAgICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRhc2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUYXNrLmgJKHJldmlzaW9uIDEz
OTA2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRhc2suaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU3Rv
cmFnZVRhc2sgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdG9yYWdlVGFzayk7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBUeXBlIHsg
QXJlYUltcG9ydCwgQXJlYVN5bmMsIERlbGV0ZUVtcHR5RGF0YWJhc2UsIFNldE9yaWdpbkRldGFp
bHMsIEltcG9ydE9yaWdpbnMsIERlbGV0ZUFsbE9yaWdpbnMsIERlbGV0ZU9yaWdpbiwgVGVybWlu
YXRlVGhyZWFkIH07CisgICAgICAgIGVudW0gVHlwZSB7IEFyZWFJbXBvcnQsIEFyZWFTeW5jLCBE
ZWxldGVFbXB0eURhdGFiYXNlLCBTZXRPcmlnaW5EZXRhaWxzLCBJbXBvcnRPcmlnaW5zLCBEZWxl
dGVBbGxPcmlnaW5zLCBEZWxldGVPcmlnaW4sIFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSwg
VGVybWluYXRlVGhyZWFkIH07CiAKICAgICAgICAgflN0b3JhZ2VUYXNrKCk7CiAKQEAgLTQ5LDYg
KzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxT
dG9yYWdlVGFzaz4gY3JlYXRlU2V0T3JpZ2luRGV0YWlscyhjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VGaWxlbmFtZSkgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IFN0b3JhZ2VUYXNrKFNldE9yaWdpbkRldGFpbHMsIG9yaWdpbklkZW50aWZpZXIsIGRh
dGFiYXNlRmlsZW5hbWUpKTsgfQogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxTdG9yYWdlVGFz
az4gY3JlYXRlRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgeyBy
ZXR1cm4gYWRvcHRQdHIobmV3IFN0b3JhZ2VUYXNrKERlbGV0ZU9yaWdpbiwgb3JpZ2luSWRlbnRp
ZmllcikpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFN0b3JhZ2VUYXNrPiBjcmVhdGVE
ZWxldGVBbGxPcmlnaW5zKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFN0b3JhZ2VUYXNrKERlbGV0
ZUFsbE9yaWdpbnMpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxTdG9yYWdlVGFzaz4g
Y3JlYXRlUmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCkgeyByZXR1cm4gYWRvcHRQdHIobmV3
IFN0b3JhZ2VUYXNrKFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSkpOyB9CiAgICAgICAgIHN0
YXRpYyBQYXNzT3duUHRyPFN0b3JhZ2VUYXNrPiBjcmVhdGVUZXJtaW5hdGUoU3RvcmFnZVRocmVh
ZCogdGhyZWFkKSB7IHJldHVybiBhZG9wdFB0cihuZXcgU3RvcmFnZVRhc2soVGVybWluYXRlVGhy
ZWFkLCB0aHJlYWQpKTsgfQogCiAgICAgICAgIHZvaWQgcGVyZm9ybVRhc2soKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAkocmV2aXNpb24gMTM5MDY0KQor
KysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksMTAgKzI5LDIwIEBACiAjaW5jbHVkZSAiQXV0b2RyYWluZWRQb29sLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZVRhc2suaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYVN5bmMuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIEhhc2hTZXQ8U3RvcmFnZVRocmVhZCo+JiBzdG9yYWdl
VGhyZWFkcygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgSGFz
aFNldDxTdG9yYWdlVGhyZWFkKj4qIHRocmVhZHM7CisgICAgaWYgKCF0aHJlYWRzKQorICAgICAg
ICB0aHJlYWRzID0gbmV3IEhhc2hTZXQ8U3RvcmFnZVRocmVhZCo+OworICAgIHJldHVybiAqdGhy
ZWFkczsKK30KKwogUGFzc093blB0cjxTdG9yYWdlVGhyZWFkPiBTdG9yYWdlVGhyZWFkOjpjcmVh
dGUoKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgU3RvcmFnZVRocmVhZCk7CkBAIC00MSwx
MiArNTEsMTUgQEAgUGFzc093blB0cjxTdG9yYWdlVGhyZWFkPiBTdG9yYWdlVGhyZWFkOgogU3Rv
cmFnZVRocmVhZDo6U3RvcmFnZVRocmVhZCgpCiAgICAgOiBtX3RocmVhZElEKDApCiB7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdG9yYWdlVGhyZWFkcygpLmFkZCh0aGlzKTsK
IH0KIAogU3RvcmFnZVRocmVhZDo6flN0b3JhZ2VUaHJlYWQoKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3RocmVhZElEKTsKKyAgICBzdG9yYWdlVGhyZWFk
cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogYm9vbCBTdG9yYWdlVGhyZWFkOjpzdGFydCgpCkBAIC0x
MDAsNCArMTEzLDEyIEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6cGVyZm9ybVRlcm1pbmF0ZSgpCiAg
ICAgbV9xdWV1ZS5raWxsKCk7CiB9CiAKK3ZvaWQgU3RvcmFnZVRocmVhZDo6cmVsZWFzZUZhc3RN
YWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWQoKQoreworICAgIEhhc2hTZXQ8U3RvcmFnZVRocmVh
ZCo+JiB0aHJlYWRzID0gc3RvcmFnZVRocmVhZHMoKTsKKyAgICBIYXNoU2V0PFN0b3JhZ2VUaHJl
YWQqPjo6aXRlcmF0b3IgZW5kID0gdGhyZWFkcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8U3Rv
cmFnZVRocmVhZCo+OjppdGVyYXRvciBpdCA9IHRocmVhZHMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICAoKml0KS0+c2NoZWR1bGVUYXNrKFN0b3JhZ2VUYXNrOjpjcmVhdGVSZWxl
YXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKSk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZVRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZVRocmVhZC5oCShyZXZpc2lvbiAxMzkwNjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEJhY2tncm91bmQgdGhyZWFkIHBhcnQg
b2YgdGhlIHRlcm1pbmF0ZSBwcm9jZWR1cmUuCiAgICAgICAgIHZvaWQgcGVyZm9ybVRlcm1pbmF0
ZSgpOwogCisgICAgICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUlu
QWxsVGhyZWFkKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBTdG9yYWdlVGhyZWFkKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHJldmlzaW9uIDEz
OTA2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsMTggKzUzLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIE11dGV4JiB0aHJlYWRDb3VudE11dGV4KCkKK3N0YXRpYyBNdXRleCYgdGhyZWFkU2V0TXV0
ZXgoKQogewogICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhNdXRleCYsIG11dGV4ID0g
Km5ldyBNdXRleCk7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCi11bnNpZ25lZCBXb3JrZXJUaHJl
YWQ6Om1fdGhyZWFkQ291bnQgPSAwOworc3RhdGljIEhhc2hTZXQ8V29ya2VyVGhyZWFkKj4mIHdv
cmtlclRocmVhZHMoKQoreworICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhIYXNoU2V0
PFdvcmtlclRocmVhZCo+JiwgdGhyZWFkcyA9ICogbmV3IEhhc2hTZXQ8V29ya2VyVGhyZWFkKj4p
OworICAgIHJldHVybiB0aHJlYWRzOworfQogCiB1bnNpZ25lZCBXb3JrZXJUaHJlYWQ6Ondvcmtl
clRocmVhZENvdW50KCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKHRocmVhZENvdW50TXV0ZXgo
KSk7Ci0gICAgcmV0dXJuIG1fdGhyZWFkQ291bnQ7CisgICAgTXV0ZXhMb2NrZXIgbG9jayh0aHJl
YWRTZXRNdXRleCgpKTsKKyAgICByZXR1cm4gd29ya2VyVGhyZWFkcygpLnNpemUoKTsKIH0KIAog
c3RydWN0IFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhIHsKQEAgLTExNCwxNSArMTE4LDE1IEBAIFdv
cmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IEtVUkwmIHMKICAgICAsIG1fbm90aWZpY2F0
aW9uQ2xpZW50KDApCiAjZW5kaWYKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKHRocmVhZENvdW50
TXV0ZXgoKSk7Ci0gICAgbV90aHJlYWRDb3VudCsrOworICAgIE11dGV4TG9ja2VyIGxvY2sodGhy
ZWFkU2V0TXV0ZXgoKSk7CisgICAgd29ya2VyVGhyZWFkcygpLmFkZCh0aGlzKTsKIH0KIAogV29y
a2VyVGhyZWFkOjp+V29ya2VyVGhyZWFkKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKHRocmVh
ZENvdW50TXV0ZXgoKSk7Ci0gICAgQVNTRVJUKG1fdGhyZWFkQ291bnQgPiAwKTsKLSAgICBtX3Ro
cmVhZENvdW50LS07CisgICAgTXV0ZXhMb2NrZXIgbG9jayh0aHJlYWRTZXRNdXRleCgpKTsKKyAg
ICBBU1NFUlQod29ya2VyVGhyZWFkcygpLmNvbnRhaW5zKHRoaXMpKTsKKyAgICB3b3JrZXJUaHJl
YWRzKCkucmVtb3ZlKHRoaXMpOwogfQogCiBib29sIFdvcmtlclRocmVhZDo6c3RhcnQoKQpAQCAt
MjcyLDYgKzI3NiwxOCBAQCB2b2lkIFdvcmtlclRocmVhZDo6c3RvcCgpCiAgICAgbV9ydW5Mb29w
LnRlcm1pbmF0ZSgpOwogfQogCit2b2lkIFdvcmtlclRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NG
cmVlTWVtb3J5SW5BbGxUaHJlYWQoKQoreworICAgIHN0cnVjdCBSZWxlYXNlRmFzdE1hbGxvY0Zy
ZWVNZW1vcnlUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIE9W
RVJSSURFIHsgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKTsgfQorICAgIH07Cisg
ICAgTXV0ZXhMb2NrZXIgbG9jayh0aHJlYWRTZXRNdXRleCgpKTsKKyAgICBIYXNoU2V0PFdvcmtl
clRocmVhZCo+JiB0aHJlYWRzID0gd29ya2VyVGhyZWFkcygpOworICAgIEhhc2hTZXQ8V29ya2Vy
VGhyZWFkKj46Oml0ZXJhdG9yIGVuZCA9IHRocmVhZHMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0
PFdvcmtlclRocmVhZCo+OjppdGVyYXRvciBpdCA9IHRocmVhZHMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICAoKml0KS0+cnVuTG9vcCgpLnBvc3RUYXNrKGFkb3B0UHRyKG5ldyBS
ZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlUYXNrKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oCShyZXZpc2lvbiAxMzkwNjQpCisrKyBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBOdW1iZXIgb2YgYWN0aXZlIHdvcmtlciB0
aHJlYWRzLgogICAgICAgICBzdGF0aWMgdW5zaWduZWQgd29ya2VyVGhyZWFkQ291bnQoKTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWQo
KTsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNB
VElPTlMpCiAgICAgICAgIE5vdGlmaWNhdGlvbkNsaWVudCogZ2V0Tm90aWZpY2F0aW9uQ2xpZW50
KCkgeyByZXR1cm4gbV9ub3RpZmljYXRpb25DbGllbnQ7IH0KQEAgLTk4LDkgKzk5LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCiAgICAgICAgIE5vdGlmaWNhdGlvbkNsaWVudCogbV9ub3RpZmlj
YXRpb25DbGllbnQ7CiAjZW5kaWYKLQotICAgICAgICAvLyBUcmFjayB0aGUgbnVtYmVyIG9mIFdv
cmtlclRocmVhZCBpbnN0YW5jZXMgZm9yIHVzZSBpbiBsYXlvdXQgdGVzdHMuCi0gICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBtX3RocmVhZENvdW50OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>
<flag name="commit-queue"
          id="199763"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181950</attachid>
            <date>2013-01-09 10:57:52 -0800</date>
            <delta_ts>2013-01-09 11:34:27 -0800</delta_ts>
            <desc>patch2</desc>
            <filename>fast-malloc-thread-clean-3.patch</filename>
            <type>text/plain</type>
            <size>12113</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMzkyMDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAxLTA5ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZWxlYXNlIEZhc3RNYWxsb2MgdGhyZWFkIGNhY2hl
cyBvbiBtZW1vcnkgd2FybmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA2NDcxCisKKyAgICAgICAgVXNlIFRDTWFsbG9jX1RocmVhZENhY2hlOjpD
bGVhbnVwKCkgaW5zdGVhZCBvZiBjYWxsaW5nIFNjYXZlbmdlKCkgdHdpY2UuIFRoaXMgcmVsZWFz
ZXMgYWxsIHRoZSBtZW1vcnkKKyAgICAgICAgYW5kIGxvb2tzIG5pY2VyIHRvby4KKworICAgICAg
ICAqIHd0Zi9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgKFdURjo6cmVsZWFzZUZhc3RNYWxsb2NG
cmVlTWVtb3J5KToKKwogMjAxMy0wMS0wOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IG1ha2UgZGlzdGNoZWNrLgpJ
bmRleDogU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvRmFzdE1hbGxvYy5jcHAJKHJldmlzaW9uIDEzOTA2NCkKKysrIFNvdXJjZS9XVEYv
d3RmL0Zhc3RNYWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzgyLDE3ICs0MzgyLDEzIEBA
IHZvaWQgKigqX19tZW1hbGlnbl9ob29rKShzaXplX3QsIHNpemVfdCwKIHZvaWQgcmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5KCkKIHsKICAgICAvLyBGbHVzaCBmcmVlIHBhZ2VzIGluIHRoZSBj
dXJyZW50IHRocmVhZCBjYWNoZSBiYWNrIHRvIHRoZSBwYWdlIGhlYXAuCi0gICAgLy8gTG93IHdh
dGVybWFyayBtZWNoYW5pc20gaW4gU2NhdmVuZ2UoKSBwcmV2ZW50cyBmdWxsIHJldHVybiBvbiB0
aGUgZmlyc3QgcGFzcy4KLSAgICAvLyBUaGUgc2Vjb25kIHBhc3MgZmx1c2hlcyBldmVyeXRoaW5n
LgotICAgIGlmIChUQ01hbGxvY19UaHJlYWRDYWNoZSogdGhyZWFkQ2FjaGUgPSBUQ01hbGxvY19U
aHJlYWRDYWNoZTo6R2V0Q2FjaGVJZlByZXNlbnQoKSkgewotICAgICAgICB0aHJlYWRDYWNoZS0+
U2NhdmVuZ2UoKTsKLSAgICAgICAgdGhyZWFkQ2FjaGUtPlNjYXZlbmdlKCk7Ci0gICAgfQorICAg
IGlmIChUQ01hbGxvY19UaHJlYWRDYWNoZSogdGhyZWFkQ2FjaGUgPSBUQ01hbGxvY19UaHJlYWRD
YWNoZTo6R2V0Q2FjaGVJZlByZXNlbnQoKSkKKyAgICAgICAgdGhyZWFkQ2FjaGUtPkNsZWFudXAo
KTsKIAogICAgIFNwaW5Mb2NrSG9sZGVyIGgoJnBhZ2VoZWFwX2xvY2spOwogICAgIHBhZ2VoZWFw
LT5SZWxlYXNlRnJlZVBhZ2VzKCk7CiB9Ci0gICAgCisKIEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZh
c3RNYWxsb2NTdGF0aXN0aWNzKCkKIHsKICAgICBGYXN0TWFsbG9jU3RhdGlzdGljcyBzdGF0aXN0
aWNzOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM5MjA2KQorKysgU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTMtMDEtMDkgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJlbGVhc2UgRmFzdE1h
bGxvYyB0aHJlYWQgY2FjaGVzIG9uIG1lbW9yeSB3YXJuaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY0NzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEZhc3RNYWxsb2Mga2VlcHMgc29t
ZSBtZW1vcnkgaW4gcGVyLXRocmVhZCBjYWNoZXMgKGN1cnJlbnRseSAyTUIgZWFjaCkuIFdlIGN1
cnJlbnRseSBmbHVzaCB0aGVzZSBjYWNoZXMgb24gbWVtb3J5IHdhcm5pbmcgCisgICAgICAgIGZv
ciB0aGUgbWFpbiB0aHJlYWQgb25seS4gV2Ugc2hvdWxkIGRvIGl0IGZvciBvdGhlciBXZWJLaXQg
dGhyZWFkcyB0aGF0IHVzZSBGYXN0TWFsbG9jIHRvby4KKworICAgICAgICBDYWxsIFdURjo6cmVs
ZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5IGluIGEgYnVuY2ggb2YgV2ViQ29yZSBzdXBwb3J0IHRo
cmVhZHMgb24gbWVtb3J5IHdhcm5pbmcuIFVuZm9ydHVuYXRlbHkgd2UgZG9uJ3QgaGF2ZSAKKyAg
ICAgICAgYW4gdW5pZm9ybSB3YXkgb2YgZG9pbmcgdGhyZWFkcyBzbyB0aGlzIHJlcXVpcmVzIGJ1
bmNoIG9mIHRocmVhZCB0eXBlIHNwZWNpZmljIGNvZGUuCisgICAgICAgIAorICAgICAgICBMb29r
cyB0byBiZSB+MSUgcHJvZ3Jlc3Npb24gaW4gbWVtYnVzdGVyMyBmaW5hbCBhbmQgbWF4aW11bSBu
dW1iZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1l
bW9yeSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVGFzay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdG9yYWdlVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZVRhc2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUYXNrOjpjcmVhdGVSZWxlYXNlRmFz
dE1hbGxvY0ZyZWVNZW1vcnkpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzdG9yYWdlVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OlN0b3JhZ2VUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6flN0b3JhZ2VUaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZVRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJl
YWQpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVRocmVhZC5oOgorICAgICAgICAoU3RvcmFn
ZVRocmVhZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dGhyZWFkU2V0TXV0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyVGhyZWFk
cyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZENvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZDo6fldvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6Cisg
ICAgICAgIChXb3JrZXJUaHJlYWQpOgorCiAyMDEzLTAxLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNldHRpbmdzLmluIGFuZCBtYWtlX3NldHRpbmdzLnBs
IHRvIHRoZSBwcm9qZWN0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lbW9y
eVByZXNzdXJlSGFuZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tCShyZXZpc2lvbiAxMzkwNjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiwxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9NZW1v
cnlDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTGF5ZXJQb29sLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RocmVhZC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9TdG9yYWdlVGhyZWFkLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dvcmtlclRo
cmVhZC5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3dGYvRmFzdE1h
bGxvYy5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uYWwuaD4KIAogI2lmICFQTEFURk9STShJT1Mp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogI2ltcG9ydCAiV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIgpAQCAtMTYwLDYgKzE2NCwxNCBAQCB2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yCiAKICAgICBnY0NvbnRyb2xsZXIoKS5kaXNjYXJk
QWxsQ29tcGlsZWRDb2RlKCk7CiAKKyAgICAvLyBGYXN0TWFsbG9jIGhhcyBsb2NrLWZyZWUgdGhy
ZWFkIHNwZWNpZmljIGNhY2hlcyB0aGF0IGNhbiBvbmx5IGJlIGNsZWFyZWQgZnJvbSB0aGUgdGhy
ZWFkIGl0c2VsZi4KKyAgICBTdG9yYWdlVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1v
cnlJbkFsbFRocmVhZHMoKTsKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICBXb3JrZXJUaHJlYWQ6
OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOworI2VuZGlmCisjaWYg
RU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKKyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNo
KGJpbmQoV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkpKTsKKyNlbmRpZgogICAgIFdU
Rjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRhc2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRhc2suY3BwCShyZXZpc2lvbiAxMzkwNjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUYXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1
LDYgKzEwNSw5IEBAIHZvaWQgU3RvcmFnZVRhc2s6OnBlcmZvcm1UYXNrKCkKICAgICAgICAgY2Fz
ZSBEZWxldGVFbXB0eURhdGFiYXNlOgogICAgICAgICAgICAgbV9hcmVhLT5kZWxldGVFbXB0eURh
dGFiYXNlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWxlYXNlRmFzdE1h
bGxvY0ZyZWVNZW1vcnk6CisgICAgICAgICAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1l
bW9yeSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGVybWluYXRlVGhyZWFk
OgogICAgICAgICAgICAgbV90aHJlYWQtPnBlcmZvcm1UZXJtaW5hdGUoKTsKICAgICAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGFzay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRhc2suaAkocmV2aXNpb24g
MTM5MDY0KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGFzay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBT
dG9yYWdlVGFzayB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0b3JhZ2VUYXNrKTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUg
eyBBcmVhSW1wb3J0LCBBcmVhU3luYywgRGVsZXRlRW1wdHlEYXRhYmFzZSwgU2V0T3JpZ2luRGV0
YWlscywgSW1wb3J0T3JpZ2lucywgRGVsZXRlQWxsT3JpZ2lucywgRGVsZXRlT3JpZ2luLCBUZXJt
aW5hdGVUaHJlYWQgfTsKKyAgICAgICAgZW51bSBUeXBlIHsgQXJlYUltcG9ydCwgQXJlYVN5bmMs
IERlbGV0ZUVtcHR5RGF0YWJhc2UsIFNldE9yaWdpbkRldGFpbHMsIEltcG9ydE9yaWdpbnMsIERl
bGV0ZUFsbE9yaWdpbnMsIERlbGV0ZU9yaWdpbiwgUmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5
LCBUZXJtaW5hdGVUaHJlYWQgfTsKIAogICAgICAgICB+U3RvcmFnZVRhc2soKTsKIApAQCAtNDks
NiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRy
PFN0b3JhZ2VUYXNrPiBjcmVhdGVTZXRPcmlnaW5EZXRhaWxzKGNvbnN0IFN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUZpbGVuYW1lKSB7IHJldHVybiBhZG9w
dFB0cihuZXcgU3RvcmFnZVRhc2soU2V0T3JpZ2luRGV0YWlscywgb3JpZ2luSWRlbnRpZmllciwg
ZGF0YWJhc2VGaWxlbmFtZSkpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFN0b3JhZ2VU
YXNrPiBjcmVhdGVEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSB7
IHJldHVybiBhZG9wdFB0cihuZXcgU3RvcmFnZVRhc2soRGVsZXRlT3JpZ2luLCBvcmlnaW5JZGVu
dGlmaWVyKSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8U3RvcmFnZVRhc2s+IGNyZWF0
ZURlbGV0ZUFsbE9yaWdpbnMoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgU3RvcmFnZVRhc2soRGVs
ZXRlQWxsT3JpZ2lucykpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFN0b3JhZ2VUYXNr
PiBjcmVhdGVSZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKSB7IHJldHVybiBhZG9wdFB0cihu
ZXcgU3RvcmFnZVRhc2soUmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KSk7IH0KICAgICAgICAg
c3RhdGljIFBhc3NPd25QdHI8U3RvcmFnZVRhc2s+IGNyZWF0ZVRlcm1pbmF0ZShTdG9yYWdlVGhy
ZWFkKiB0aHJlYWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBTdG9yYWdlVGFzayhUZXJtaW5hdGVU
aHJlYWQsIHRocmVhZCkpOyB9CiAKICAgICAgICAgdm9pZCBwZXJmb3JtVGFzaygpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCShyZXZpc2lvbiAxMzkwNjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSwxMCArMjksMTggQEAKICNpbmNsdWRlICJBdXRvZHJhaW5lZFBvb2wuaCIKICNp
bmNsdWRlICJTdG9yYWdlVGFzay5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhU3luYy5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgSGFzaFNldDxTdG9yYWdlVGhyZWFkKj4mIHN0b3Jh
Z2VUaHJlYWRzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoSGFzaFNldDxTdG9yYWdlVGhyZWFkKj4sIHRocmVhZHMsICgpKTsKKyAgICBy
ZXR1cm4gdGhyZWFkczsKK30KKwogUGFzc093blB0cjxTdG9yYWdlVGhyZWFkPiBTdG9yYWdlVGhy
ZWFkOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgU3RvcmFnZVRocmVhZCk7
CkBAIC00MSwxMiArNDksMTUgQEAgUGFzc093blB0cjxTdG9yYWdlVGhyZWFkPiBTdG9yYWdlVGhy
ZWFkOgogU3RvcmFnZVRocmVhZDo6U3RvcmFnZVRocmVhZCgpCiAgICAgOiBtX3RocmVhZElEKDAp
CiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdG9yYWdlVGhyZWFkcygpLmFk
ZCh0aGlzKTsKIH0KIAogU3RvcmFnZVRocmVhZDo6flN0b3JhZ2VUaHJlYWQoKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3RocmVhZElEKTsKKyAgICBzdG9y
YWdlVGhyZWFkcygpLnJlbW92ZSh0aGlzKTsKIH0KIAogYm9vbCBTdG9yYWdlVGhyZWFkOjpzdGFy
dCgpCkBAIC0xMDAsNCArMTExLDEyIEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6cGVyZm9ybVRlcm1p
bmF0ZSgpCiAgICAgbV9xdWV1ZS5raWxsKCk7CiB9CiAKK3ZvaWQgU3RvcmFnZVRocmVhZDo6cmVs
ZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCkKK3sKKyAgICBIYXNoU2V0PFN0
b3JhZ2VUaHJlYWQqPiYgdGhyZWFkcyA9IHN0b3JhZ2VUaHJlYWRzKCk7CisgICAgSGFzaFNldDxT
dG9yYWdlVGhyZWFkKj46Oml0ZXJhdG9yIGVuZCA9IHRocmVhZHMuZW5kKCk7CisgICAgZm9yIChI
YXNoU2V0PFN0b3JhZ2VUaHJlYWQqPjo6aXRlcmF0b3IgaXQgPSB0aHJlYWRzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPnNjaGVkdWxlVGFzayhTdG9yYWdlVGFzazo6
Y3JlYXRlUmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCkpOworfQorCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAkocmV2aXNpb24gMTM5MDY0KQorKysgU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDYgKzUwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBCYWNrZ3JvdW5kIHRo
cmVhZCBwYXJ0IG9mIHRoZSB0ZXJtaW5hdGUgcHJvY2VkdXJlLgogICAgICAgICB2b2lkIHBlcmZv
cm1UZXJtaW5hdGUoKTsKIAorICAgICAgICBzdGF0aWMgdm9pZCByZWxlYXNlRmFzdE1hbGxvY0Zy
ZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFN0b3JhZ2VU
aHJlYWQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAko
cmV2aXNpb24gMTM5MDY0KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MywxOCArNTMsMjIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgTXV0ZXgmIHRocmVhZENvdW50TXV0ZXgoKQorc3RhdGljIE11dGV4JiB0
aHJlYWRTZXRNdXRleCgpCiB7CiAgICAgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljKE11dGV4
JiwgbXV0ZXggPSAqbmV3IE11dGV4KTsKICAgICByZXR1cm4gbXV0ZXg7CiB9CiAKLXVuc2lnbmVk
IFdvcmtlclRocmVhZDo6bV90aHJlYWRDb3VudCA9IDA7CitzdGF0aWMgSGFzaFNldDxXb3JrZXJU
aHJlYWQqPiYgd29ya2VyVGhyZWFkcygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNo
U2V0PFdvcmtlclRocmVhZCo+LCB0aHJlYWRzLCAoKSk7CisgICAgcmV0dXJuIHRocmVhZHM7Cit9
CiAKIHVuc2lnbmVkIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkQ291bnQoKQogewotICAgIE11
dGV4TG9ja2VyIGxvY2sodGhyZWFkQ291bnRNdXRleCgpKTsKLSAgICByZXR1cm4gbV90aHJlYWRD
b3VudDsKKyAgICBNdXRleExvY2tlciBsb2NrKHRocmVhZFNldE11dGV4KCkpOworICAgIHJldHVy
biB3b3JrZXJUaHJlYWRzKCkuc2l6ZSgpOwogfQogCiBzdHJ1Y3QgV29ya2VyVGhyZWFkU3RhcnR1
cERhdGEgewpAQCAtMTE0LDE1ICsxMTgsMTUgQEAgV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQo
Y29uc3QgS1VSTCYgcwogICAgICwgbV9ub3RpZmljYXRpb25DbGllbnQoMCkKICNlbmRpZgogewot
ICAgIE11dGV4TG9ja2VyIGxvY2sodGhyZWFkQ291bnRNdXRleCgpKTsKLSAgICBtX3RocmVhZENv
dW50Kys7CisgICAgTXV0ZXhMb2NrZXIgbG9jayh0aHJlYWRTZXRNdXRleCgpKTsKKyAgICB3b3Jr
ZXJUaHJlYWRzKCkuYWRkKHRoaXMpOwogfQogCiBXb3JrZXJUaHJlYWQ6On5Xb3JrZXJUaHJlYWQo
KQogewotICAgIE11dGV4TG9ja2VyIGxvY2sodGhyZWFkQ291bnRNdXRleCgpKTsKLSAgICBBU1NF
UlQobV90aHJlYWRDb3VudCA+IDApOwotICAgIG1fdGhyZWFkQ291bnQtLTsKKyAgICBNdXRleExv
Y2tlciBsb2NrKHRocmVhZFNldE11dGV4KCkpOworICAgIEFTU0VSVCh3b3JrZXJUaHJlYWRzKCku
Y29udGFpbnModGhpcykpOworICAgIHdvcmtlclRocmVhZHMoKS5yZW1vdmUodGhpcyk7CiB9CiAK
IGJvb2wgV29ya2VyVGhyZWFkOjpzdGFydCgpCkBAIC0yNzIsNiArMjc2LDE5IEBAIHZvaWQgV29y
a2VyVGhyZWFkOjpzdG9wKCkKICAgICBtX3J1bkxvb3AudGVybWluYXRlKCk7CiB9CiAKK2NsYXNz
IFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayB7CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKSBPVkVSUklERSB7IFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5
KCk7IH0KK307CisKK3ZvaWQgV29ya2VyVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1v
cnlJbkFsbFRocmVhZHMoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2sodGhyZWFkU2V0TXV0ZXgo
KSk7CisgICAgSGFzaFNldDxXb3JrZXJUaHJlYWQqPiYgdGhyZWFkcyA9IHdvcmtlclRocmVhZHMo
KTsKKyAgICBIYXNoU2V0PFdvcmtlclRocmVhZCo+OjppdGVyYXRvciBlbmQgPSB0aHJlYWRzLmVu
ZCgpOworICAgIGZvciAoSGFzaFNldDxXb3JrZXJUaHJlYWQqPjo6aXRlcmF0b3IgaXQgPSB0aHJl
YWRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPnJ1bkxvb3AoKS5w
b3N0VGFzayhhZG9wdFB0cihuZXcgUmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5VGFzaykpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAkocmV2aXNpb24gMTM5MDY0
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAkod29ya2luZyBjb3B5
KQpAQCAtNjMsNiArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gTnVt
YmVyIG9mIGFjdGl2ZSB3b3JrZXIgdGhyZWFkcy4KICAgICAgICAgc3RhdGljIHVuc2lnbmVkIHdv
cmtlclRocmVhZENvdW50KCk7CisgICAgICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VGYXN0TWFsbG9j
RnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOwogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8
IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICAgICAgTm90aWZpY2F0aW9uQ2xpZW50
KiBnZXROb3RpZmljYXRpb25DbGllbnQoKSB7IHJldHVybiBtX25vdGlmaWNhdGlvbkNsaWVudDsg
fQpAQCAtOTgsOSArOTksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICAgICAgTm90aWZp
Y2F0aW9uQ2xpZW50KiBtX25vdGlmaWNhdGlvbkNsaWVudDsKICNlbmRpZgotCi0gICAgICAgIC8v
IFRyYWNrIHRoZSBudW1iZXIgb2YgV29ya2VyVGhyZWFkIGluc3RhbmNlcyBmb3IgdXNlIGluIGxh
eW91dCB0ZXN0cy4KLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIG1fdGhyZWFkQ291bnQ7CiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="199768"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="199780"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>