<?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>224706</bug_id>
          
          <creation_ts>2021-04-16 17:30:38 -0700</creation_ts>
          <short_desc>[bmalloc] Enable Adaptive Scavenger for Mac</short_desc>
          <delta_ts>2021-04-19 11:52:29 -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>JavaScriptCore</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1751334</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2021-04-16 17:30:38 -0700</bug_when>
    <thetext>The adaptive scavenger landed in change set r243144, but was later disabled for macOS in r249670 due to a regression found during power testing.  It is likely that we can arrive at a different set of adaptive scavenger parameters that provide memory reduction without impacting performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751337</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2021-04-16 17:31:44 -0700</bug_when>
    <thetext>&lt;rdar://71987791&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751338</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-16 17:31:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/76786339&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751808</commentid>
    <comment_count>3</comment_count>
      <attachid>426430</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2021-04-19 09:12:27 -0700</bug_when>
    <thetext>Created attachment 426430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751822</commentid>
    <comment_count>4</comment_count>
      <attachid>426430</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-04-19 09:32:19 -0700</bug_when>
    <thetext>Comment on attachment 426430
Patch

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

&gt; Source/bmalloc/bmalloc/Scavenger.h:113
&gt; +#if BPLATFORM(MAC)

maybe also worth it for catalyst?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751870</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2021-04-19 11:13:12 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #4)
&gt; Comment on attachment 426430 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426430&amp;action=review
&gt; 
&gt; &gt; Source/bmalloc/bmalloc/Scavenger.h:113
&gt; &gt; +#if BPLATFORM(MAC)
&gt; 
&gt; maybe also worth it for catalyst?

One could probably argue good reasons for either the macOS semantics or the every other platform semantics.  I&apos;d like to defer this to a future patch after appropriate testing of the two sets of parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751887</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2021-04-19 11:52:29 -0700</bug_when>
    <thetext>Committed r276266 (236748@main): &lt;https://commits.webkit.org/236748@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426430</attachid>
            <date>2021-04-19 09:12:27 -0700</date>
            <delta_ts>2021-04-19 09:23:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>224706.patch</filename>
            <type>text/plain</type>
            <size>26827</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NjI1NCkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDIxLTA0LTE5ICBNaWNoYWVs
IFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBFbmFibGUg
QWRhcHRpdmUgU2NhdmVuZ2VyIGZvciBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNDcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEVuYWJsZWQgdGhlIGFkYXB0aXZlIHNjYXZlbmdlciBjb2RlIHBh
dGhzIGZvciBtYWNPUy4KKyAgICAgICAgVGhlIG9yaWdpbmFsIHJlYXNvbiB0aGF0IHRoZSBwYXJ0
aWFsIHNjYXZlbmdpbmcgcGF0aHMgd2VyZSBrZXB0IGZvciBtYWNPUyB3YXMgZHVlCisgICAgICAg
IHRvIHJlZ3Jlc3Npb24gb24gcG93ZXIgdGVzdHMuICBUbyBhbGxldmlhdGUgdGhlIHBvd2VyIHJl
Z3Jlc3Npb24sIHRoaXMgcGF0Y2ggc3BsaXRzCisgICAgICAgIG91dCB0aGUgYWRhcHRpdmUgc2Nh
dmVuZ2VyIHBhcmFtZXRlcnMgd2l0aCBtYWNPUyBzcGVjaWZpYyB2YWx1ZXMuCisKKyAgICAgICAg
VGhlIHBhcmFtZXRlcnMgYXJlOgorICAgICAgICAgIFRoZSBtdWx0aXBsaWVyIHVzZWQgdG8gY29t
cHV0ZSB0aGUgbmV4dCBzY2F2ZW5naW5nIHdhaXQgdGltZSBiYXNlZCBvbiB0aGUgCisgICAgICAg
ICAgICB0aW1lIG5lZWRlZCBmb3IgdGhlIHByaW9yIHNjYXZlbmdpbmcuCisgICAgICAgICAgTWlu
aW11bSB3YWl0IHRpbWUgYmV0d2VlbiBzY2F2ZW5naW5nLgorICAgICAgICAgIE1heGltdW0gd2Fp
dCB0aW1lIGJldHdlZW4gc2NhdmVuZ2luZy4KKworICAgICAgICBUaGUgdmFsdWVzIGluIHRoZSBj
dXJyZW50IGNvZGUgYXJlOgorICAgICAgICAgIFdhaXQgdGltZSBNdWx0aXBsaWVyOiAxNTAKKyAg
ICAgICAgICBNaW5pbXVtIHdhaXQgdGltZTogMTAwbXMKKyAgICAgICAgICBNYXhpbXVtIHdhaXQg
dGltZTogMTAsMDAwbXMgKDEwIHNlY29uZHMpCisKKyAgICAgICAgVGhlIHByb3Bvc2VkIHZhbHVl
cyBmb3IgbWFjT1MsIGRldGVybWluZWQgdXNpbmcgZW1waXJpY2FsIHRlc3RpbmcuCisgICAgICAg
ICAgV2FpdCB0aW1lIE11bHRpcGxpZXI6IDMwMAorICAgICAgICAgIE1pbmltdW0gd2FpdCB0aW1l
OiA3NTBtcworICAgICAgICAgIE1heGltdW0gd2FpdCB0aW1lOiAyMCwwMDBtcyAoMjAgc2Vjb25k
cykKKyAgICAgICAgCisgICAgICAgIFdoZW4gdGVzdGVkIG9uIHZhcmlvdXMgbWFjIHZhcmlhbnRz
LCB0aGlzIGNoYW5nZToKKyAgICAgICAgICogUHJvdmlkZXMgYSAzLTUlIHJlZHVjdGlvbiBpbiBt
ZW1vcnkgdXNlIG9uIFJBTWlmaWNhdGlvbi4KKyAgICAgICAgICogSXQgaXMgbmV1dHJhbCBvbiBK
ZXRTdHJlYW0yLgorICAgICAgICAgKiBJdCBpcyBuZXV0cmFsIHRvIGEgc2xpZ2h0IHJlZ3Jlc3Np
b24gb24gU3BlZWRvbWV0ZXIyLCBidXQgdGhlcmUgaXMgc29tZQorICAgICAgICAgICB2YXJpYWJp
bGl0eSBpbiB0aG9zZSByZXN1bHRzLgorCisgICAgICAgIFNpbmNlIG1hY09TIHdhcyB0aGUgb25s
eSBwbGF0Zm9ybSBzdGlsbCB1c2luZyB0aGUgcGFydGlhbCBzY2F2ZW5naW5nIGNvZGUgcGF0aCwK
KyAgICAgICAgdGhlIHBhcnRpYWwgc2NhdmVuZ2luZyBjb2RlIHBhdGhzIHdlcmUgZGVsZXRlZC4K
KworICAgICAgICAqIGJtYWxsb2MvQlBsYXRmb3JtLmg6CisgICAgICAgICogYm1hbGxvYy9IZWFw
LmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNjYXZlbmdlKToKKyAgICAgICAgKGJtYWxs
b2M6OkhlYXA6OmFsbG9jYXRlU21hbGxDaHVuayk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjph
bGxvY2F0ZVNtYWxsUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZUxhcmdl
KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0hlYXAuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0Rp
cmVjdG9yeS5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oOgorICAg
ICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+Ojp0YWtlRmlyc3RFbGlnaWJsZSk6CisgICAg
ICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlKToKKyAgICAgICAgKGJtYWxs
b2M6OnBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOiBEZWxldGVkLgor
ICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcEltcGwuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0hl
YXBJbXBsSW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6
c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOiBEZWxldGVkLgorICAgICAgICAqIGJtYWxsb2MvTGFy
Z2VNYXAuY3BwOgorICAgICAgICAoYm1hbGxvYzo6TGFyZ2VNYXA6OmFkZCk6CisgICAgICAgICog
Ym1hbGxvYy9MYXJnZVJhbmdlLmg6CisgICAgICAgIChibWFsbG9jOjpMYXJnZVJhbmdlOjpMYXJn
ZVJhbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkxhcmdlUmFuZ2U6OnNldFVzZWRTaW5jZUxhc3RT
Y2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9jOjptZXJnZSk6CisgICAgICAgICgpOiBEZWxldGVk
LgorICAgICAgICAqIGJtYWxsb2MvU2NhdmVuZ2VyLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlNj
YXZlbmdlcjo6U2NhdmVuZ2VyKToKKyAgICAgICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6c2NhdmVu
Z2UpOgorICAgICAgICAoYm1hbGxvYzo6U2NhdmVuZ2VyOjp0aHJlYWRSdW5Mb29wKToKKyAgICAg
ICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6dGltZVNpbmNlTGFzdFBhcnRpYWxTY2F2ZW5nZSk6IERl
bGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpTY2F2ZW5nZXI6OnBhcnRpYWxTY2F2ZW5nZSk6IERl
bGV0ZWQuCisgICAgICAgICogYm1hbGxvYy9TY2F2ZW5nZXIuaDoKKyAgICAgICAgKiBibWFsbG9j
L1NtYWxsUGFnZS5oOgorICAgICAgICAoYm1hbGxvYzo6U21hbGxQYWdlOjpzZXRVc2VkU2luY2VM
YXN0U2NhdmVuZ2UpOgorCiAyMDIxLTA0LTE5ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBh
cHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIC1XdGhyZWFkLXNhZmV0eSwgYWRkIGF0dHJpYnV0
ZXMgdG8gY3VzdG9tIGxvY2sgY2xhc3NlcywgYW5kIHByb3ZpZGUgbWFjcm9zIHRvIGRlY2xhcmUg
Z3VhcmRzCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JQbGF0Zm9ybS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3JtLmgJKHJldmlzaW9uIDI3NjI1
NCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwOSwxMiArMzA5LDYgQEAKIC8qIFRoaXMgaXMgdXNlZCBmb3IgZGVidWdnaW5nIHdoZW4g
aGFja2luZyBvbiBob3cgYm1hbGxvYyBjYWxjdWxhdGVzIGl0cyBwaHlzaWNhbCBmb290cHJpbnQu
ICovCiAjZGVmaW5lIEVOQUJMRV9QSFlTSUNBTF9QQUdFX01BUCAwCiAKLSNpZiBCUExBVEZPUk0o
TUFDKQotI2RlZmluZSBCVVNFX1BBUlRJQUxfU0NBVkVOR0UgMQotI2Vsc2UKLSNkZWZpbmUgQlVT
RV9QQVJUSUFMX1NDQVZFTkdFIDAKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQoQlVTRV9QUkVDT01Q
VVRFRF9DT05TVEFOVFNfVk1QQUdFNEspCiAjZGVmaW5lIEJVU0VfUFJFQ09NUFVURURfQ09OU1RB
TlRTX1ZNUEFHRTRLIDEKICNlbmRpZgpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCShyZXZp
c2lvbiAyNzYyNTQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTksMjQgKzExOSwxOCBAQCB2b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5n
ZShVbmlxdWVMb2NrCiAjZW5kaWYKIH0KIAotI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLXZv
aWQgSGVhcDo6c2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBk
ZWNvbW1pdHRlcikKLSNlbHNlCiB2b2lkIEhlYXA6OnNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xkZXIm
IGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1p
dHMpCi0jZW5kaWYKIHsKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBtX2ZyZWVQYWdlcykgewogICAg
ICAgICBmb3IgKGF1dG8qIGNodW5rIDogbGlzdCkgewogICAgICAgICAgICAgZm9yIChhdXRvKiBw
YWdlIDogY2h1bmstPmZyZWVQYWdlcygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwYWdlLT5o
YXNQaHlzaWNhbFBhZ2VzKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotI2lmICFC
VVNFKFBBUlRJQUxfU0NBVkVOR0UpCiAgICAgICAgICAgICAgICAgaWYgKHBhZ2UtPnVzZWRTaW5j
ZUxhc3RTY2F2ZW5nZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmNsZWFyVXNlZFNp
bmNlTGFzdFNjYXZlbmdlKCk7CiAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkRGVjb21taXRz
Kys7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KLSNl
bmRpZgogCiAgICAgICAgICAgICAgICAgc2l6ZV90IHBhZ2VTaXplID0gYm1hbGxvYzo6cGFnZVNp
emUoJmxpc3QgLSAmbV9mcmVlUGFnZXNbMF0pOwogICAgICAgICAgICAgICAgIHNpemVfdCBkZWNv
bW1pdFNpemUgPSBwaHlzaWNhbFBhZ2VTaXplU2xvcHB5KHBhZ2UtPmJlZ2luKCktPmJlZ2luKCks
IHBhZ2VTaXplKTsKQEAgLTE1NywzNyArMTUxLDE1IEBAIHZvaWQgSGVhcDo6c2NhdmVuZ2UoVW5p
cXVlTG9ja0hvbGRlciYgbG8KICAgICB9CiAKICAgICBmb3IgKExhcmdlUmFuZ2UmIHJhbmdlIDog
bV9sYXJnZUZyZWUpIHsKLSNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi0gICAgICAgIG1faGln
aFdhdGVybWFyayA9IHN0ZDo6bWluKG1faGlnaFdhdGVybWFyaywgc3RhdGljX2Nhc3Q8dm9pZCo+
KHJhbmdlLmJlZ2luKCkpKTsKLSNlbHNlCiAgICAgICAgIGlmIChyYW5nZS51c2VkU2luY2VMYXN0
U2NhdmVuZ2UoKSkgewogICAgICAgICAgICAgcmFuZ2UuY2xlYXJVc2VkU2luY2VMYXN0U2NhdmVu
Z2UoKTsKICAgICAgICAgICAgIGRlZmVycmVkRGVjb21taXRzKys7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIGRlY29tbWl0TGFyZ2VSYW5nZShsb2Nr
LCByYW5nZSwgZGVjb21taXR0ZXIpOwogICAgIH0KLQotI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5H
RSkKLSAgICBtX2ZyZWVhYmxlTWVtb3J5ID0gMDsKLSNlbmRpZgogfQogCi0jaWYgQlVTRShQQVJU
SUFMX1NDQVZFTkdFKQotdm9pZCBIZWFwOjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhVbmlxdWVM
b2NrSG9sZGVyJiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQotewotICAgIHZvaWQq
IG5ld0hpZ2hXYXRlck1hcmsgPSBudWxscHRyOwotICAgIGZvciAoTGFyZ2VSYW5nZSYgcmFuZ2Ug
OiBtX2xhcmdlRnJlZSkgewotICAgICAgICBpZiAocmFuZ2UuYmVnaW4oKSA8PSBtX2hpZ2hXYXRl
cm1hcmspCi0gICAgICAgICAgICBuZXdIaWdoV2F0ZXJNYXJrID0gc3RkOjptaW4obmV3SGlnaFdh
dGVyTWFyaywgc3RhdGljX2Nhc3Q8dm9pZCo+KHJhbmdlLmJlZ2luKCkpKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgZGVjb21taXRMYXJnZVJhbmdlKGxvY2ssIHJhbmdlLCBkZWNvbW1pdHRl
cik7Ci0gICAgfQotICAgIG1faGlnaFdhdGVybWFyayA9IG5ld0hpZ2hXYXRlck1hcms7Ci19Ci0j
ZW5kaWYKLQogdm9pZCBIZWFwOjpkZWFsbG9jYXRlTGluZUNhY2hlKFVuaXF1ZUxvY2tIb2xkZXIm
LCBMaW5lQ2FjaGUmIGxpbmVDYWNoZSkKIHsKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBsaW5lQ2Fj
aGUpIHsKQEAgLTIyMSw5ICsxOTMsNyBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxDaHVuayhV
bmlxdWVMb2NrCiAgICAgICAgIHNpemVfdCBhY2NvdW50ZWRJbkZyZWVhYmxlID0gMDsKICAgICAg
ICAgZm9yRWFjaFBhZ2UoY2h1bmssIHBhZ2VTaXplLCBbJl0oU21hbGxQYWdlKiBwYWdlKSB7CiAg
ICAgICAgICAgICBwYWdlLT5zZXRIYXNQaHlzaWNhbFBhZ2VzKHRydWUpOwotI2lmICFCVVNFKFBB
UlRJQUxfU0NBVkVOR0UpCiAgICAgICAgICAgICBwYWdlLT5zZXRVc2VkU2luY2VMYXN0U2NhdmVu
Z2UoKTsKLSNlbmRpZgogICAgICAgICAgICAgcGFnZS0+c2V0SGFzRnJlZUxpbmVzKGxvY2ssIHRy
dWUpOwogICAgICAgICAgICAgY2h1bmstPmZyZWVQYWdlcygpLnB1c2gocGFnZSk7CiAgICAgICAg
ICAgICBhY2NvdW50ZWRJbkZyZWVhYmxlICs9IHBhZ2VTaXplOwpAQCAtMzE0LDkgKzI4NCw3IEBA
IFNtYWxsUGFnZSogSGVhcDo6YWxsb2NhdGVTbWFsbFBhZ2UoVW5pcXUKICAgICAgICAgICAgIG1f
cGh5c2ljYWxQYWdlTWFwLmNvbW1pdChwYWdlLT5iZWdpbigpLT5iZWdpbigpLCBwYWdlU2l6ZSk7
CiAjZW5kaWYKICAgICAgICAgfQotI2lmICFCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiAgICAgICAg
IHBhZ2UtPnNldFVzZWRTaW5jZUxhc3RTY2F2ZW5nZSgpOwotI2VuZGlmCiAKICAgICAgICAgcmV0
dXJuIHBhZ2U7CiAgICAgfSgpOwpAQCAtNTkwLDkgKzU1OCw2IEBAIHZvaWQqIEhlYXA6OmFsbG9j
YXRlTGFyZ2UoVW5pcXVlTG9ja0hvbGQKICAgICBtX2ZyZWVhYmxlTWVtb3J5IC09IHJhbmdlLnRv
dGFsUGh5c2ljYWxTaXplKCk7CiAKICAgICB2b2lkKiByZXN1bHQgPSBzcGxpdEFuZEFsbG9jYXRl
KGxvY2ssIHJhbmdlLCBhbGlnbm1lbnQsIHNpemUpLmJlZ2luKCk7Ci0jaWYgQlVTRShQQVJUSUFM
X1NDQVZFTkdFKQotICAgIG1faGlnaFdhdGVybWFyayA9IHN0ZDo6bWF4KG1faGlnaFdhdGVybWFy
aywgcmVzdWx0KTsKLSNlbmRpZgogICAgIEFTU0VSVF9PUl9SRVRVUk5fT05fRkFJTFVSRShyZXN1
bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiAKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCShyZXZp
c2lvbiAyNzYyNTQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAkod29ya2luZyBj
b3B5KQpAQCAtNzQsMTIgKzc0LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBsYXJnZVNpemUoVW5p
cXVlTG9ja0hvbGRlciYsIHZvaWQqKTsKICAgICB2b2lkIHNocmlua0xhcmdlKFVuaXF1ZUxvY2tI
b2xkZXImLCBjb25zdCBSYW5nZSYsIHNpemVfdCk7CiAKLSNpZiBCVVNFKFBBUlRJQUxfU0NBVkVO
R0UpCi0gICAgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhVbmlxdWVMb2NrSG9sZGVyJiwg
QnVsa0RlY29tbWl0Jik7Ci0gICAgdm9pZCBzY2F2ZW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgQnVs
a0RlY29tbWl0Jik7Ci0jZWxzZQogICAgIHZvaWQgc2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYs
IEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMpOwotI2VuZGlmCiAgICAg
dm9pZCBzY2F2ZW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgQnVsa0RlY29tbWl0Jiwgc2l6ZV90JiBm
cmVlZCwgc2l6ZV90IGdvYWwpOwogCiAgICAgc2l6ZV90IGZyZWVhYmxlTWVtb3J5KFVuaXF1ZUxv
Y2tIb2xkZXImKTsKQEAgLTE0NywxMCArMTQyLDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEVfUEhZ
U0lDQUxfUEFHRV9NQVAgCiAgICAgUGh5c2ljYWxQYWdlTWFwIG1fcGh5c2ljYWxQYWdlTWFwOwog
I2VuZGlmCi0gICAgCi0jaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotICAgIHZvaWQqIG1faGln
aFdhdGVybWFyayB7IG51bGxwdHIgfTsKLSNlbmRpZgogfTsKIAogaW5saW5lIHZvaWQgSGVhcDo6
YWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXMoCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b0RpcmVjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGly
ZWN0b3J5LmgJKHJldmlzaW9uIDI3NjI1NCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
RGlyZWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDkgKzc2LDYgQEAgcHVibGljOgogICAg
IC8vIEl0ZXJhdGUgb3ZlciBhbGwgZW1wdHkgYW5kIGNvbW1pdHRlZCBwYWdlcywgYW5kIHB1dCB0
aGVtIGludG8gdGhlIHZlY3Rvci4gVGhpcyBhbHNvIHJlY29yZHMgdGhlCiAgICAgLy8gcGFnZXMg
YXMgYmVpbmcgZGVjb21taXR0ZWQuIEl0J3MgdGhlIGNhbGxlcidzIGpvYiB0byBkbyB0aGUgYWN0
dWFsIGRlY29tbWl0dGluZy4KICAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IExvY2tIb2xkZXImLCBW
ZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKLSNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi0g
ICAgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhjb25zdCBMb2NrSG9sZGVyJiwgVmVjdG9y
PERlZmVycmVkRGVjb21taXQ+Jik7Ci0jZW5kaWYKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CiAgICAgdm9pZCBmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBMb2NrSG9sZGVyJiwgY29u
c3QgRnVuYyYpOwpAQCAtOTMsOSArOTAsNiBAQCBwcml2YXRlOgogICAgIEJpdHM8bnVtUGFnZXM+
IG1fZW1wdHk7CiAgICAgQml0czxudW1QYWdlcz4gbV9jb21taXR0ZWQ7CiAgICAgdW5zaWduZWQg
bV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCB7IDAgfTsKLSNpZiBCVVNFKFBBUlRJQUxfU0NB
VkVOR0UpCi0gICAgdW5zaWduZWQgbV9oaWdoV2F0ZXJtYXJrIHsgMCB9OwotI2VuZGlmCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b0RpcmVjdG9yeUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb0RpcmVjdG9yeUlubGluZXMuaAkocmV2aXNpb24gMjc2MjU0KQorKysgU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEw
ICs1MCw2IEBAIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0b3J5PEMKICAgICBp
ZiAocGFnZUluZGV4ID49IG51bVBhZ2VzKQogICAgICAgICByZXR1cm4gRWxpZ2liaWxpdHlLaW5k
OjpGdWxsOwogCi0jaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotICAgIG1faGlnaFdhdGVybWFy
ayA9IHN0ZDo6bWF4KHBhZ2VJbmRleCwgbV9oaWdoV2F0ZXJtYXJrKTsKLSNlbmRpZgotCiAgICAg
U2NhdmVuZ2VyJiBzY2F2ZW5nZXIgPSAqU2NhdmVuZ2VyOjpnZXQoKTsKICAgICBzY2F2ZW5nZXIu
ZGlkU3RhcnRHcm93aW5nKCk7CiAgICAgCkBAIC0xNDYsMjMgKzE0Miw3IEBAIHZvaWQgSXNvRGly
ZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXMKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgp
IHsKICAgICAgICAgICAgIHNjYXZlbmdlUGFnZShsb2NrZXIsIGluZGV4LCBkZWNvbW1pdHMpOwog
ICAgICAgICB9KTsKLSNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi0gICAgbV9oaWdoV2F0ZXJt
YXJrID0gMDsKLSNlbmRpZgotfQotCi0jaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotdGVtcGxh
dGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4KLXZvaWQgSXNvRGly
ZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhj
b25zdCBMb2NrSG9sZGVyJiBsb2NrZXIsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21t
aXRzKQotewotICAgIChtX2VtcHR5ICYgbV9jb21taXR0ZWQpLmZvckVhY2hTZXRCaXQoCi0gICAg
ICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgICAgICBpZiAoaW5kZXggPiBtX2hpZ2hX
YXRlcm1hcmspCi0gICAgICAgICAgICAgICAgc2NhdmVuZ2VQYWdlKGxvY2tlciwgaW5kZXgsIGRl
Y29tbWl0cyk7Ci0gICAgICAgIH0pOwotICAgIG1faGlnaFdhdGVybWFyayA9IDA7CiB9Ci0jZW5k
aWYKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4K
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b0hlYXBJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFw
SW1wbC5oCShyZXZpc2lvbiAyNzYyNTQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hl
YXBJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfklzb0hlYXBJbXBsQmFzZSgpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzY2F2ZW5n
ZShWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKSA9IDA7Ci0jaWYgQlVTRShQQVJUSUFMX1NDQVZF
TkdFKQotICAgIHZpcnR1YWwgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhWZWN0b3I8RGVm
ZXJyZWREZWNvbW1pdD4mKSA9IDA7Ci0jZW5kaWYKICAgICAKICAgICB2b2lkIHNjYXZlbmdlTm93
KCk7CiAgICAgc3RhdGljIHZvaWQgZmluaXNoU2NhdmVuZ2luZyhWZWN0b3I8RGVmZXJyZWREZWNv
bW1pdD4mKTsKQEAgLTExMiw5ICsxMDksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRCZWNvbWVF
bGlnaWJsZU9yRGVjb21taXRlZChjb25zdCBMb2NrSG9sZGVyJiwgSXNvRGlyZWN0b3J5PENvbmZp
ZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4qKTsKICAgICAKICAgICB2b2lk
IHNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpIG92ZXJyaWRlOwotI2lmIEJVU0Uo
UEFSVElBTF9TQ0FWRU5HRSkKLSAgICB2b2lkIHNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3Rv
cjxEZWZlcnJlZERlY29tbWl0PiYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICAgICB1bnNpZ25lZCBh
bGxvY2F0b3JPZmZzZXQoKTsKICAgICB1bnNpZ25lZCBkZWFsbG9jYXRvck9mZnNldCgpOwpJbmRl
eDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsSW5saW5lcy5oCShyZXZpc2lv
biAyNzYyNTQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsSW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsMjEgKzEyMSw2IEBAIHZvaWQgSXNvSGVhcEltcGw8Q29u
ZmlnPjo6c2NhdmVuZ2UoVmVjdG8KICAgICBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgPSAwOwog
fQogCi0jaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmln
Pgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhWZWN0
b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY29tbWl0cykKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cih0aGlzLT5sb2NrKTsKLSAgICBpZiAoIW1fZGlyZWN0b3J5SGlnaFdhdGVybWFyaykKLSAgICAg
ICAgbV9pbmxpbmVEaXJlY3Rvcnkuc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsobG9ja2VyLCBkZWNv
bW1pdHMpOwotICAgIGZvciAoSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBwYWdlID0gbV9oZWFk
RGlyZWN0b3J5LmdldCgpOyBwYWdlOyBwYWdlID0gcGFnZS0+bmV4dCkgewotICAgICAgICBpZiAo
cGFnZS0+aW5kZXgoKSA+PSBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmspCi0gICAgICAgICAgICBw
YWdlLT5wYXlsb2FkLnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGxvY2tlciwgZGVjb21taXRzKTsK
LSAgICB9Ci0gICAgbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrID0gMDsKLX0KLSNlbmRpZgotCiBp
bmxpbmUgc2l6ZV90IElzb0hlYXBJbXBsQmFzZTo6ZnJlZWFibGVNZW1vcnkoKQogewogICAgIHJl
dHVybiBtX2ZyZWVhYmxlTWVtb3J5OwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJn
ZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZU1hcC5j
cHAJKHJldmlzaW9uIDI3NjI1NCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFyZ2VNYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw5ICs3Niw3IEBAIHZvaWQgTGFyZ2VNYXA6OmFkZChj
b25zdCBMYXJnZVJhbmdlJiByYW4KICAgICAgICAgbWVyZ2VkID0gbWVyZ2UobWVyZ2VkLCBtX2Zy
ZWUucG9wKGktLSkpOwogICAgIH0KIAotI2lmICFCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiAgICAg
bWVyZ2VkLnNldFVzZWRTaW5jZUxhc3RTY2F2ZW5nZSgpOwotI2VuZGlmCiAgICAgbV9mcmVlLnB1
c2gobWVyZ2VkKTsKIH0KIApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZVJhbmdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZVJhbmdlLmgJKHJl
dmlzaW9uIDI3NjI1NCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFyZ2VSYW5nZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNywxMCArMzcsOCBAQCBwdWJsaWM6CiAgICAgICAgIDogUmFuZ2Uo
KQogICAgICAgICAsIG1fc3RhcnRQaHlzaWNhbFNpemUoMCkKICAgICAgICAgLCBtX3RvdGFsUGh5
c2ljYWxTaXplKDApCi0jaWYgIUJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKICAgICAgICAgLCBtX2lz
RWxpZ2libGUodHJ1ZSkKICAgICAgICAgLCBtX3VzZWRTaW5jZUxhc3RTY2F2ZW5nZShmYWxzZSkK
LSNlbmRpZgogICAgIHsKICAgICB9CiAKQEAgLTQ4LDI1ICs0NiwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIDogUmFuZ2Uob3RoZXIpCiAgICAgICAgICwgbV9zdGFydFBoeXNpY2FsU2l6ZShzdGFydFBo
eXNpY2FsU2l6ZSkKICAgICAgICAgLCBtX3RvdGFsUGh5c2ljYWxTaXplKHRvdGFsUGh5c2ljYWxT
aXplKQotI2lmICFCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiAgICAgICAgICwgbV9pc0VsaWdpYmxl
KHRydWUpCiAgICAgICAgICwgbV91c2VkU2luY2VMYXN0U2NhdmVuZ2UoZmFsc2UpCi0jZW5kaWYK
ICAgICB7CiAgICAgICAgIEJBU1NFUlQodGhpcy0+c2l6ZSgpID49IHRoaXMtPnRvdGFsUGh5c2lj
YWxTaXplKCkpOwogICAgICAgICBCQVNTRVJUKHRoaXMtPnRvdGFsUGh5c2ljYWxTaXplKCkgPj0g
dGhpcy0+c3RhcnRQaHlzaWNhbFNpemUoKSk7CiAgICAgfQogCi0jaWYgQlVTRShQQVJUSUFMX1ND
QVZFTkdFKQotICAgIExhcmdlUmFuZ2Uodm9pZCogYmVnaW4sIHNpemVfdCBzaXplLCBzaXplX3Qg
c3RhcnRQaHlzaWNhbFNpemUsIHNpemVfdCB0b3RhbFBoeXNpY2FsU2l6ZSkKLSAgICAgICAgOiBS
YW5nZShiZWdpbiwgc2l6ZSkKLSAgICAgICAgLCBtX3N0YXJ0UGh5c2ljYWxTaXplKHN0YXJ0UGh5
c2ljYWxTaXplKQotICAgICAgICAsIG1fdG90YWxQaHlzaWNhbFNpemUodG90YWxQaHlzaWNhbFNp
emUpCi0gICAgewotICAgICAgICBCQVNTRVJUKHRoaXMtPnNpemUoKSA+PSB0aGlzLT50b3RhbFBo
eXNpY2FsU2l6ZSgpKTsKLSAgICAgICAgQkFTU0VSVCh0aGlzLT50b3RhbFBoeXNpY2FsU2l6ZSgp
ID49IHRoaXMtPnN0YXJ0UGh5c2ljYWxTaXplKCkpOwotICAgIH0KLSNlbHNlCiAgICAgTGFyZ2VS
YW5nZSh2b2lkKiBiZWdpbiwgc2l6ZV90IHNpemUsIHNpemVfdCBzdGFydFBoeXNpY2FsU2l6ZSwg
c2l6ZV90IHRvdGFsUGh5c2ljYWxTaXplLCBib29sIHVzZWRTaW5jZUxhc3RTY2F2ZW5nZSA9IGZh
bHNlKQogICAgICAgICA6IFJhbmdlKGJlZ2luLCBzaXplKQogICAgICAgICAsIG1fc3RhcnRQaHlz
aWNhbFNpemUoc3RhcnRQaHlzaWNhbFNpemUpCkBAIC03Nyw3ICs2Myw2IEBAIHB1YmxpYzoKICAg
ICAgICAgQkFTU0VSVCh0aGlzLT5zaXplKCkgPj0gdGhpcy0+dG90YWxQaHlzaWNhbFNpemUoKSk7
CiAgICAgICAgIEJBU1NFUlQodGhpcy0+dG90YWxQaHlzaWNhbFNpemUoKSA+PSB0aGlzLT5zdGFy
dFBoeXNpY2FsU2l6ZSgpKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIC8vIFJldHVybnMgYSBsb3dl
ciBib3VuZCBvbiBwaHlzaWNhbCBzaXplIGF0IHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuIFJhbmdl
cyB0aGF0CiAgICAgLy8gc3BhbiBub24tcGh5c2ljYWwgZnJhZ21lbnRzIHVzZSB0aGlzIG51bWJl
ciB0byByZW1lbWJlciB0aGUgcGh5c2ljYWwgc2l6ZSBvZgpAQCAtMTA0LDExICs4OSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEVsaWdpYmxlKGJvb2wgZWxpZ2libGUpIHsgbV9pc0VsaWdpYmxl
ID0gZWxpZ2libGU7IH0KICAgICBib29sIGlzRWxpZ2liaWxlKCkgY29uc3QgeyByZXR1cm4gbV9p
c0VsaWdpYmxlOyB9CiAKLSNpZiAhQlVTRShQQVJUSUFMX1NDQVZFTkdFKQogICAgIGJvb2wgdXNl
ZFNpbmNlTGFzdFNjYXZlbmdlKCkgY29uc3QgeyByZXR1cm4gbV91c2VkU2luY2VMYXN0U2NhdmVu
Z2U7IH0KICAgICB2b2lkIGNsZWFyVXNlZFNpbmNlTGFzdFNjYXZlbmdlKCkgeyBtX3VzZWRTaW5j
ZUxhc3RTY2F2ZW5nZSA9IGZhbHNlOyB9CiAgICAgdm9pZCBzZXRVc2VkU2luY2VMYXN0U2NhdmVu
Z2UoKSB7IG1fdXNlZFNpbmNlTGFzdFNjYXZlbmdlID0gdHJ1ZTsgfQotI2VuZGlmCiAKICAgICBi
b29sIG9wZXJhdG9yPChjb25zdCB2b2lkKiBvdGhlcikgY29uc3QgeyByZXR1cm4gYmVnaW4oKSA8
IG90aGVyOyB9CiAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgTGFyZ2VSYW5nZSYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIGJlZ2luKCkgPCBvdGhlci5iZWdpbigpOyB9CkBAIC0xMTYsMTIgKzk5LDgg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzaXplX3QgbV9zdGFydFBoeXNpY2FsU2l6ZTsKICAg
ICBzaXplX3QgbV90b3RhbFBoeXNpY2FsU2l6ZTsKLSNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0Up
Ci0gICAgYm9vbCBtX2lzRWxpZ2libGUgeyB0cnVlIH07Ci0jZWxzZQogICAgIHVuc2lnbmVkIG1f
aXNFbGlnaWJsZTogMTsKICAgICB1bnNpZ25lZCBtX3VzZWRTaW5jZUxhc3RTY2F2ZW5nZTogMTsK
LSNlbmRpZgogfTsKIAogaW5saW5lIGJvb2wgY2FuTWVyZ2UoY29uc3QgTGFyZ2VSYW5nZSYgYSwg
Y29uc3QgTGFyZ2VSYW5nZSYgYikKQEAgLTE0NCwxOCArMTIzLDE0IEBAIGlubGluZSBib29sIGNh
bk1lcmdlKGNvbnN0IExhcmdlUmFuZ2UmIGEKIGlubGluZSBMYXJnZVJhbmdlIG1lcmdlKGNvbnN0
IExhcmdlUmFuZ2UmIGEsIGNvbnN0IExhcmdlUmFuZ2UmIGIpCiB7CiAgICAgY29uc3QgTGFyZ2VS
YW5nZSYgbGVmdCA9IHN0ZDo6bWluKGEsIGIpOwotI2lmICFCVVNFKFBBUlRJQUxfU0NBVkVOR0Up
CiAgICAgYm9vbCBtZXJnZWRVc2VkU2luY2VMYXN0U2NhdmVuZ2UgPSBhLnVzZWRTaW5jZUxhc3RT
Y2F2ZW5nZSgpIHx8IGIudXNlZFNpbmNlTGFzdFNjYXZlbmdlKCk7Ci0jZW5kaWYKICAgICBpZiAo
bGVmdC5zaXplKCkgPT0gbGVmdC5zdGFydFBoeXNpY2FsU2l6ZSgpKSB7CiAgICAgICAgIHJldHVy
biBMYXJnZVJhbmdlKAogICAgICAgICAgICAgbGVmdC5iZWdpbigpLAogICAgICAgICAgICAgYS5z
aXplKCkgKyBiLnNpemUoKSwKICAgICAgICAgICAgIGEuc3RhcnRQaHlzaWNhbFNpemUoKSArIGIu
c3RhcnRQaHlzaWNhbFNpemUoKSwKICAgICAgICAgICAgIGEudG90YWxQaHlzaWNhbFNpemUoKSAr
IGIudG90YWxQaHlzaWNhbFNpemUoKQotI2lmICFCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiAgICAg
ICAgICAgICAsIG1lcmdlZFVzZWRTaW5jZUxhc3RTY2F2ZW5nZQotI2VuZGlmCiAgICAgICAgICk7
CiAgICAgICAgIAogICAgIH0KQEAgLTE2NSw5ICsxNDAsNyBAQCBpbmxpbmUgTGFyZ2VSYW5nZSBt
ZXJnZShjb25zdCBMYXJnZVJhbmdlCiAgICAgICAgIGEuc2l6ZSgpICsgYi5zaXplKCksCiAgICAg
ICAgIGxlZnQuc3RhcnRQaHlzaWNhbFNpemUoKSwKICAgICAgICAgYS50b3RhbFBoeXNpY2FsU2l6
ZSgpICsgYi50b3RhbFBoeXNpY2FsU2l6ZSgpCi0jaWYgIUJVU0UoUEFSVElBTF9TQ0FWRU5HRSkK
ICAgICAgICAgLCBtZXJnZWRVc2VkU2luY2VMYXN0U2NhdmVuZ2UKLSNlbmRpZgogICAgICk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAJKHJldmlzaW9uIDI3NjI1
NCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODUsMTEgKzg1LDcgQEAgU2NhdmVuZ2VyOjpTY2F2ZW5nZXIoY29uc3QgTG9ja0hvbGRl
ciYpCiAgICAgZGlzcGF0Y2hfcmVzdW1lKG1fcHJlc3N1cmVIYW5kbGVyRGlzcGF0Y2hTb3VyY2Up
OwogICAgIGRpc3BhdGNoX3JlbGVhc2UocXVldWUpOwogI2VuZGlmCi0jaWYgQlVTRShQQVJUSUFM
X1NDQVZFTkdFKQotICAgIG1fd2FpdFRpbWUgPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKG1f
aXNJbk1pbmlNb2RlID8gMjAwIDogMjAwMCk7Ci0jZWxzZQogICAgIG1fd2FpdFRpbWUgPSBzdGQ6
OmNocm9ubzo6bWlsbGlzZWNvbmRzKDEwKTsKLSNlbmRpZgogCiAgICAgbV90aHJlYWQgPSBzdGQ6
OnRocmVhZCgmdGhyZWFkRW50cnlQb2ludCwgdGhpcyk7CiB9CkBAIC0xODcsMTQgKzE4Myw2IEBA
IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgU2NhdmVuZ2VyOjp0aW0KICAgICByZXR1cm4gc3Rk
OjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4oc3RkOjpj
aHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkgLSBtX2xhc3RGdWxsU2NhdmVuZ2VUaW1lKTsKIH0K
IAotI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLXN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMg
U2NhdmVuZ2VyOjp0aW1lU2luY2VMYXN0UGFydGlhbFNjYXZlbmdlKCkKLXsKLSAgICBVbmlxdWVM
b2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjpkdXJhdGlv
bl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xv
Y2s6Om5vdygpIC0gbV9sYXN0UGFydGlhbFNjYXZlbmdlVGltZSk7Ci19Ci0jZW5kaWYKLQogdm9p
ZCBTY2F2ZW5nZXI6OmVuYWJsZU1pbmlNb2RlKCkKIHsKICAgICBtX2lzSW5NaW5pTW9kZSA9IHRy
dWU7IC8vIFdlIGp1c3Qgc3RvcmUgdG8gdGhpcyByYWNpbHkuIFRoZSBzY2F2ZW5nZXIgdGhyZWFk
IHdpbGwgZXZlbnR1YWxseSBwaWNrIHVwIHRoZSByaWdodCB2YWx1ZS4KQEAgLTIyMCwyNSArMjA4
LDE3IEBAIHZvaWQgU2NhdmVuZ2VyOjpzY2F2ZW5nZSgpCiAKICAgICAgICAgewogICAgICAgICAg
ICAgUHJpbnRUaW1lIHByaW50VGltZSgiXG5mdWxsIHNjYXZlbmdlIHVuZGVyIGxvY2sgdGltZSIp
OwotI2lmICFCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiAgICAgICAgICAgICBzaXplX3QgZGVmZXJy
ZWREZWNvbW1pdHMgPSAwOwotI2VuZGlmCiAgICAgICAgICAgICBVbmlxdWVMb2NrSG9sZGVyIGxv
Y2soSGVhcDo6bXV0ZXgoKSk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1IZWFw
czsgaS0tOykgewogICAgICAgICAgICAgICAgIGlmICghaXNBY3RpdmVIZWFwS2luZChzdGF0aWNf
Y2FzdDxIZWFwS2luZD4oaSkpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSNpZiBC
VVNFKFBBUlRJQUxfU0NBVkVOR0UpCi0gICAgICAgICAgICAgICAgUGVyUHJvY2VzczxQZXJIZWFw
S2luZDxIZWFwPj46OmdldCgpLT5hdChpKS5zY2F2ZW5nZShsb2NrLCBkZWNvbW1pdHRlcik7Ci0j
ZWxzZQogICAgICAgICAgICAgICAgIFBlclByb2Nlc3M8UGVySGVhcEtpbmQ8SGVhcD4+OjpnZXQo
KS0+YXQoaSkuc2NhdmVuZ2UobG9jaywgZGVjb21taXR0ZXIsIGRlZmVycmVkRGVjb21taXRzKTsK
LSNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGVjb21taXR0ZXIucHJvY2Vzc0Vh
Z2VyKCk7CiAKLSNpZiAhQlVTRShQQVJUSUFMX1NDQVZFTkdFKQogICAgICAgICAgICAgaWYgKGRl
ZmVycmVkRGVjb21taXRzKQogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVuU29v
bjsKLSNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgewpAQCAtMjc5LDc4ICsyNTksNiBAQCB2
b2lkIFNjYXZlbmdlcjo6c2NhdmVuZ2UoKQogICAgIH0KIH0KIAotI2lmIEJVU0UoUEFSVElBTF9T
Q0FWRU5HRSkKLXZvaWQgU2NhdmVuZ2VyOjpwYXJ0aWFsU2NhdmVuZ2UoKQotewotICAgIGlmICgh
bV9pc0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFVuaXF1ZUxvY2tIb2xkZXIgbG9j
ayhtX3NjYXZlbmdpbmdNdXRleCk7Ci0KLSAgICBpZiAodmVyYm9zZSkgewotICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKLSAgICAg
ICAgZnByaW50ZihzdGRlcnIsICItLWJlZm9yZSBwYXJ0aWFsIHNjYXZlbmdpbmctLVxuIik7Ci0g
ICAgICAgIGR1bXBTdGF0cygpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQnVsa0RlY29tbWl0
IGRlY29tbWl0dGVyOwotICAgICAgICB7Ci0gICAgICAgICAgICBQcmludFRpbWUgcHJpbnRUaW1l
KCJcbnBhcnRpYWxTY2F2ZW5nZSB1bmRlciBsb2NrIHRpbWUiKTsKLSAgICAgICAgICAgIFVuaXF1
ZUxvY2tIb2xkZXIgbG9jayhIZWFwOjptdXRleCgpKTsKLSAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG51bUhlYXBzOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0FjdGl2ZUhl
YXBLaW5kKHN0YXRpY19jYXN0PEhlYXBLaW5kPihpKSkpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgIEhlYXAmIGhlYXAgPSBQZXJQcm9jZXNzPFBlckhlYXBL
aW5kPEhlYXA+Pjo6Z2V0KCktPmF0KGkpOwotICAgICAgICAgICAgICAgIHNpemVfdCBmcmVlYWJs
ZU1lbW9yeSA9IGhlYXAuZnJlZWFibGVNZW1vcnkobG9jayk7Ci0gICAgICAgICAgICAgICAgaWYg
KGZyZWVhYmxlTWVtb3J5IDwgNCAqIE1CKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBoZWFwLnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGxvY2ssIGRlY29t
bWl0dGVyKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGVjb21taXR0ZXIucHJvY2Vz
c0VhZ2VyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB7Ci0gICAgICAgICAgICBQcmludFRpbWUg
cHJpbnRUaW1lKCJwYXJ0aWFsU2NhdmVuZ2UgbGF6eSBkZWNvbW1pdCB0aW1lIik7Ci0gICAgICAg
ICAgICBkZWNvbW1pdHRlci5wcm9jZXNzTGF6eSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgewot
ICAgICAgICAgICAgUHJpbnRUaW1lIHByaW50VGltZSgicGFydGlhbFNjYXZlbmdlIG1hcmsgYWxs
IGFzIGVsaWdpYmxlIHRpbWUiKTsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhIZWFwOjpt
dXRleCgpKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bUhlYXBzOyBpLS07KSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0FjdGl2ZUhlYXBLaW5kKHN0YXRpY19jYXN0PEhlYXBL
aW5kPihpKSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAg
IEhlYXAmIGhlYXAgPSBQZXJQcm9jZXNzPFBlckhlYXBLaW5kPEhlYXA+Pjo6Z2V0KCktPmF0KGkp
OwotICAgICAgICAgICAgICAgIGhlYXAubWFya0FsbExhcmdlQXNFbGlnaWJpbGUobG9jayk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIFJFTEVBU0Vf
QkFTU0VSVCghbV9kZWZlcnJlZERlY29tbWl0cy5zaXplKCkpOwotICAgICAgICBBbGxJc29IZWFw
czo6Z2V0KCktPmZvckVhY2goCi0gICAgICAgICAgICBbJl0gKElzb0hlYXBJbXBsQmFzZSYgaGVh
cCkgewotICAgICAgICAgICAgICAgIGhlYXAuc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsobV9kZWZl
cnJlZERlY29tbWl0cyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgSXNvSGVhcEltcGxCYXNl
OjpmaW5pc2hTY2F2ZW5naW5nKG1fZGVmZXJyZWREZWNvbW1pdHMpOwotICAgICAgICBtX2RlZmVy
cmVkRGVjb21taXRzLnNocmluaygwKTsKLSAgICB9Ci0KLSAgICBpZiAodmVyYm9zZSkgewotICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIi0tYWZ0ZXIgcGFydGlhbCBzY2F2ZW5naW5nLS1cbiIpOwot
ICAgICAgICBkdW1wU3RhdHMoKTsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICItLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7Ci0gICAgfQotCi0gICAgewotICAgICAgICBVbmlx
dWVMb2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7Ci0gICAgICAgIG1fbGFzdFBhcnRpYWxTY2F2ZW5n
ZVRpbWUgPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKTsKLSAgICB9Ci19Ci0jZW5k
aWYKLQogc2l6ZV90IFNjYXZlbmdlcjo6ZnJlZWFibGVNZW1vcnkoKQogewogICAgIHNpemVfdCBy
ZXN1bHQgPSAwOwpAQCAtNDMyLDY5ICszNDAsNiBAQCB2b2lkIFNjYXZlbmdlcjo6dGhyZWFkUnVu
TG9vcCgpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tXG4iKTsKICAgICAgICAgfQogCi0jaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdF
KQotICAgICAgICBlbnVtIGNsYXNzIFNjYXZlbmdlTW9kZSB7Ci0gICAgICAgICAgICBOb25lLAot
ICAgICAgICAgICAgUGFydGlhbCwKLSAgICAgICAgICAgIEZ1bGwKLSAgICAgICAgfTsKLQotICAg
ICAgICBzaXplX3QgZnJlZWFibGVNZW1vcnkgPSB0aGlzLT5mcmVlYWJsZU1lbW9yeSgpOwotCi0g
ICAgICAgIFNjYXZlbmdlTW9kZSBzY2F2ZW5nZU1vZGUgPSBbJl0gewotICAgICAgICAgICAgYXV0
byB0aW1lU2luY2VMYXN0RnVsbFNjYXZlbmdlID0gdGhpcy0+dGltZVNpbmNlTGFzdEZ1bGxTY2F2
ZW5nZSgpOwotICAgICAgICAgICAgYXV0byB0aW1lU2luY2VMYXN0UGFydGlhbFNjYXZlbmdlID0g
dGhpcy0+dGltZVNpbmNlTGFzdFBhcnRpYWxTY2F2ZW5nZSgpOwotICAgICAgICAgICAgYXV0byB0
aW1lU2luY2VMYXN0U2NhdmVuZ2UgPSBzdGQ6Om1pbih0aW1lU2luY2VMYXN0UGFydGlhbFNjYXZl
bmdlLCB0aW1lU2luY2VMYXN0RnVsbFNjYXZlbmdlKTsKLQotICAgICAgICAgICAgaWYgKGlzVW5k
ZXJNZW1vcnlQcmVzc3VyZSgpICYmIGZyZWVhYmxlTWVtb3J5ID4gMSAqIE1CICYmIHRpbWVTaW5j
ZUxhc3RTY2F2ZW5nZSA+IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMoNSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFNjYXZlbmdlTW9kZTo6RnVsbDsKLQotICAgICAgICAgICAgaWYgKCFtX2lz
UHJvYmFibHlHcm93aW5nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRpbWVTaW5jZUxhc3RGdWxs
U2NhdmVuZ2UgPCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKDEwMDApICYmICFtX2lzSW5NaW5p
TW9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNjYXZlbmdlTW9kZTo6UGFydGlhbDsK
LSAgICAgICAgICAgICAgICByZXR1cm4gU2NhdmVuZ2VNb2RlOjpGdWxsOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAobV9pc0luTWluaU1vZGUpIHsKLSAgICAgICAgICAgICAgICBp
ZiAodGltZVNpbmNlTGFzdEZ1bGxTY2F2ZW5nZSA8IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMo
MjAwKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNjYXZlbmdlTW9kZTo6UGFydGlhbDsK
LSAgICAgICAgICAgICAgICByZXR1cm4gU2NhdmVuZ2VNb2RlOjpGdWxsOwotICAgICAgICAgICAg
fQotCi0jaWYgQkNQVShYODZfNjQpCi0gICAgICAgICAgICBhdXRvIHBhcnRpYWxTY2F2ZW5nZUlu
dGVydmFsID0gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcygxMjAwMCk7Ci0jZWxzZQotICAgICAg
ICAgICAgYXV0byBwYXJ0aWFsU2NhdmVuZ2VJbnRlcnZhbCA9IHN0ZDo6Y2hyb25vOjptaWxsaXNl
Y29uZHMoODAwMCk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGlmICh0aW1lU2luY2VMYXN0U2NhdmVu
Z2UgPCBwYXJ0aWFsU2NhdmVuZ2VJbnRlcnZhbCkgewotICAgICAgICAgICAgICAgIC8vIFJhdGUg
bGltaXQgcGFydGlhbCBzY2F2ZW5nZXMuCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjYXZlbmdl
TW9kZTo6Tm9uZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChmcmVlYWJsZU1lbW9y
eSA8IDI1ICogTUIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjYXZlbmdlTW9kZTo6Tm9uZTsK
LSAgICAgICAgICAgIGlmICg1ICogZnJlZWFibGVNZW1vcnkgPCBmb290cHJpbnQoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gU2NhdmVuZ2VNb2RlOjpOb25lOwotICAgICAgICAgICAgcmV0dXJu
IFNjYXZlbmdlTW9kZTo6UGFydGlhbDsKLSAgICAgICAgfSgpOwotCi0gICAgICAgIG1faXNQcm9i
YWJseUdyb3dpbmcgPSBmYWxzZTsKLQotICAgICAgICBzd2l0Y2ggKHNjYXZlbmdlTW9kZSkgewot
ICAgICAgICBjYXNlIFNjYXZlbmdlTW9kZTo6Tm9uZTogewotICAgICAgICAgICAgcnVuU29vbigp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBTY2F2ZW5nZU1v
ZGU6OlBhcnRpYWw6IHsKLSAgICAgICAgICAgIHBhcnRpYWxTY2F2ZW5nZSgpOwotICAgICAgICAg
ICAgcnVuU29vbigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBTY2F2ZW5nZU1vZGU6OkZ1bGw6IHsKLSAgICAgICAgICAgIHNjYXZlbmdlKCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0jZWxzZQogICAgICAgICBzdGQ6OmNo
cm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50IHN0YXJ0IHsgc3RkOjpjaHJvbm86OnN0ZWFk
eV9jbG9jazo6bm93KCkgfTsKICAgICAgICAgCiAgICAgICAgIHNjYXZlbmdlKCk7CkBAIC01MDks
MTQgKzM1NCwxMyBAQCB2b2lkIFNjYXZlbmdlcjo6dGhyZWFkUnVuTG9vcCgpCiAgICAgICAgIC8v
IEZJWE1FOiBXZSBuZWVkIHRvIGludmVzdGlnYXRlIG1pbmktbW9kZSdzIGFkanVzdG1lbnQuCiAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM5ODcK
ICAgICAgICAgaWYgKCFtX2lzSW5NaW5pTW9kZSkgewotICAgICAgICAgICAgdGltZVNwZW50U2Nh
dmVuZ2luZyAqPSAxNTA7CisgICAgICAgICAgICB0aW1lU3BlbnRTY2F2ZW5naW5nICo9IHNfbmV3
V2FpdE11bHRpcGxpZXI7CiAgICAgICAgICAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIG5l
d1dhaXRUaW1lID0gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxp
c2Vjb25kcz4odGltZVNwZW50U2NhdmVuZ2luZyk7Ci0gICAgICAgICAgICBtX3dhaXRUaW1lID0g
c3RkOjptaW4oc3RkOjptYXgobmV3V2FpdFRpbWUsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMo
MTAwKSksIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMoMTAwMDApKTsKKyAgICAgICAgICAgIG1f
d2FpdFRpbWUgPSBzdGQ6Om1pbihzdGQ6Om1heChuZXdXYWl0VGltZSwgc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcyhzX21pbldhaXRUaW1lTWlsbGlzZWNvbmRzKSksIHN0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHMoc19tYXhXYWl0VGltZU1pbGxpc2Vjb25kcykpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm5ldyB3YWl0IHRp
bWUgJWxsZG1zXG4iLCBzdGF0aWNfY2FzdDxsb25nIGxvbmcgaW50PihtX3dhaXRUaW1lLmNvdW50
KCkpKTsKLSNlbmRpZgogICAgIH0KIH0KIApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9T
Y2F2ZW5nZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdl
ci5oCShyZXZpc2lvbiAyNzYyNTQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMCArOTIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0VGhyZWFkTmFtZShjb25zdCBjaGFyKik7CiAKICAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzIHRpbWVTaW5jZUxhc3RGdWxsU2NhdmVuZ2UoKTsKLSNpZiBCVVNFKFBBUlRJQUxfU0NBVkVO
R0UpCi0gICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lU2luY2VMYXN0UGFydGlhbFNj
YXZlbmdlKCk7Ci0gICAgdm9pZCBwYXJ0aWFsU2NhdmVuZ2UoKTsKLSNlbmRpZgogCiAgICAgc3Rk
OjphdG9taWM8U3RhdGU+IG1fc3RhdGUgeyBTdGF0ZTo6U2xlZXAgfTsKICAgICBzaXplX3QgbV9z
Y2F2ZW5nZXJCeXRlcyB7IDAgfTsKQEAgLTEwOCwxNSArMTA0LDIyIEBAIHByaXZhdGU6CiAKICAg
ICBzdGQ6OnRocmVhZCBtX3RocmVhZDsKICAgICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0
aW1lX3BvaW50IG1fbGFzdEZ1bGxTY2F2ZW5nZVRpbWUgeyBzdGQ6OmNocm9ubzo6c3RlYWR5X2Ns
b2NrOjpub3coKSB9OwotI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLSAgICBzdGQ6OmNocm9u
bzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50IG1fbGFzdFBhcnRpYWxTY2F2ZW5nZVRpbWUgeyBz
dGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKSB9OwotI2VuZGlmCiAKICNpZiBCT1MoREFS
V0lOKQogICAgIGRpc3BhdGNoX3NvdXJjZV90IG1fcHJlc3N1cmVIYW5kbGVyRGlzcGF0Y2hTb3Vy
Y2U7CiAgICAgcW9zX2NsYXNzX3QgbV9yZXF1ZXN0ZWRTY2F2ZW5nZXJUaHJlYWRRT1NDbGFzcyB7
IFFPU19DTEFTU19VU0VSX0lOSVRJQVRFRCB9OwogI2VuZGlmCiAgICAgCisjaWYgQlBMQVRGT1JN
KE1BQykKKyAgICBjb25zdCB1bnNpZ25lZCBzX25ld1dhaXRNdWx0aXBsaWVyID0gMzAwOworICAg
IGNvbnN0IHVuc2lnbmVkIHNfbWluV2FpdFRpbWVNaWxsaXNlY29uZHMgPSA3NTA7CisgICAgY29u
c3QgdW5zaWduZWQgc19tYXhXYWl0VGltZU1pbGxpc2Vjb25kcyA9IDIwMDAwOworI2Vsc2UKKyAg
ICBjb25zdCB1bnNpZ25lZCBzX25ld1dhaXRNdWx0aXBsaWVyID0gMTUwOworICAgIGNvbnN0IHVu
c2lnbmVkIHNfbWluV2FpdFRpbWVNaWxsaXNlY29uZHMgPSAxMDA7CisgICAgY29uc3QgdW5zaWdu
ZWQgc19tYXhXYWl0VGltZU1pbGxpc2Vjb25kcyA9IDEwMDAwOworI2VuZGlmCisKICAgICBWZWN0
b3I8RGVmZXJyZWREZWNvbW1pdD4gbV9kZWZlcnJlZERlY29tbWl0czsKICAgICBib29sIG1faXNF
bmFibGVkIHsgdHJ1ZSB9OwogfTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxQ
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbFBhZ2UuaAko
cmV2aXNpb24gMjc2MjU0KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbFBhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNTEsMTEgKzUxLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGh5
c2ljYWxQYWdlcygpIHsgcmV0dXJuIG1faGFzUGh5c2ljYWxQYWdlczsgfQogICAgIHZvaWQgc2V0
SGFzUGh5c2ljYWxQYWdlcyhib29sIGhhc1BoeXNpY2FsUGFnZXMpIHsgbV9oYXNQaHlzaWNhbFBh
Z2VzID0gaGFzUGh5c2ljYWxQYWdlczsgfQogCi0jaWYgIUJVU0UoUEFSVElBTF9TQ0FWRU5HRSkK
ICAgICBib29sIHVzZWRTaW5jZUxhc3RTY2F2ZW5nZSgpIHsgcmV0dXJuIG1fdXNlZFNpbmNlTGFz
dFNjYXZlbmdlOyB9CiAgICAgdm9pZCBjbGVhclVzZWRTaW5jZUxhc3RTY2F2ZW5nZSgpIHsgbV91
c2VkU2luY2VMYXN0U2NhdmVuZ2UgPSBmYWxzZTsgfQogICAgIHZvaWQgc2V0VXNlZFNpbmNlTGFz
dFNjYXZlbmdlKCkgeyBtX3VzZWRTaW5jZUxhc3RTY2F2ZW5nZSA9IHRydWU7IH0KLSNlbmRpZgog
CiAgICAgU21hbGxMaW5lKiBiZWdpbigpOwogCkBAIC02NSw5ICs2Myw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgY2hhciBtX2hhc0ZyZWVMaW5lczogMTsKICAgICB1bnNpZ25l
ZCBjaGFyIG1faGFzUGh5c2ljYWxQYWdlczogMTsKLSNpZiAhQlVTRShQQVJUSUFMX1NDQVZFTkdF
KQogICAgIHVuc2lnbmVkIGNoYXIgbV91c2VkU2luY2VMYXN0U2NhdmVuZ2U6IDE7Ci0jZW5kaWYK
ICAgICB1bnNpZ25lZCBjaGFyIG1fcmVmQ291bnQ6IDc7CiAgICAgdW5zaWduZWQgY2hhciBtX3Np
emVDbGFzczsKICAgICB1bnNpZ25lZCBjaGFyIG1fc2xpZGU7Cg==
</data>
<flag name="review"
          id="446708"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>