<?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>155818</bug_id>
          
          <creation_ts>2016-03-23 16:45:42 -0700</creation_ts>
          <short_desc>bmalloc: Added an Object helper class</short_desc>
          <delta_ts>2016-03-23 17:12:04 -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>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1177530</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-23 16:45:42 -0700</bug_when>
    <thetext>bmalloc: Added an Object helper class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177535</commentid>
    <comment_count>1</comment_count>
      <attachid>274794</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-23 16:52:15 -0700</bug_when>
    <thetext>Created attachment 274794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177536</commentid>
    <comment_count>2</comment_count>
      <attachid>274795</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-23 16:53:42 -0700</bug_when>
    <thetext>Created attachment 274795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177537</commentid>
    <comment_count>3</comment_count>
      <attachid>274795</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-03-23 17:01:41 -0700</bug_when>
    <thetext>Comment on attachment 274795
Patch

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

&gt; Source/bmalloc/bmalloc/SmallChunk.h:47
&gt; +    SmallPage* begin() { return page(sizeof(SmallChunk)); }

I&apos;d suggest not having two ways of doing the same thing (sizeof(SmallChunk) vs m_memory).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177538</commentid>
    <comment_count>4</comment_count>
      <attachid>274796</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-23 17:07:00 -0700</bug_when>
    <thetext>Created attachment 274796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177543</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-23 17:12:04 -0700</bug_when>
    <thetext>Committed r198606: &lt;http://trac.webkit.org/changeset/198606&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274794</attachid>
            <date>2016-03-23 16:52:15 -0700</date>
            <delta_ts>2016-03-23 16:53:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155818-20160323165217.patch</filename>
            <type>text/plain</type>
            <size>15943</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODYwMykKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE2LTAzLTIzICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYzogQWRkZWQgYW4g
T2JqZWN0IGhlbHBlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU1ODE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT2JqZWN0IGlzIGFuIGFic3RyYWN0aW9uIHRoYXQgYnJlYWtzIG91dCBhIHZv
aWQqIGludG8gaXRzIGNvbXBvbmVudAorICAgICAgICBtZXRhZGF0YSBwb2ludGVycy4KKworICAg
ICAgICBUaGlzIGlzIHNsaWdodGx5IGZhc3RlciB0aGFuIHJlY29tcHV0aW5nIHRoZW0sIGFuZCBp
dCBlbmFibGVzIGEgZnV0dXJlCisgICAgICAgIHBhdGNoIGluIHdoaWNoIE9iamVjdCB3aWxsIHRl
bGwgdXMgd2hldGhlciBpdCBpcyBzbWFsbCBvciBsYXJnZS4KKworICAgICAgICAqIGJtYWxsb2Mu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgdG8gdGhlIHByb2plY3QuCisKKyAgICAg
ICAgKiBibWFsbG9jL0FsbG9jYXRvci5jcHA6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6
OnJlYWxsb2NhdGUpOiBVc2UgT2JqZWN0IHRvIGNvbXB1dGUgc2l6ZS4KKworICAgICAgICAqIGJt
YWxsb2MvRGVhbGxvY2F0b3IuY3BwOgorICAgICAgICAoYm1hbGxvYzo6RGVhbGxvY2F0b3I6OnBy
b2Nlc3NPYmplY3RMb2cpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6CisgICAgICAgIChi
bWFsbG9jOjpIZWFwOjphbGxvY2F0ZVNtYWxsUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFw
OjpkZWFsbG9jYXRlU21hbGxMaW5lKToKKyAgICAgICAgKiBibWFsbG9jL0hlYXAuaDoKKyAgICAg
ICAgKGJtYWxsb2M6OkhlYXA6OmRlcmVmU21hbGxMaW5lKTogVXNlIE9iamVjdCB0byBkZWFsbG9j
YXRlLgorCisgICAgICAgICogYm1hbGxvYy9PYmplY3QuaDogQWRkZWQuCisgICAgICAgIChibWFs
bG9jOjpPYmplY3Q6Ok9iamVjdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3Q6OmNodW5rKToK
KyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdDo6bGluZSk6CisgICAgICAgIChibWFsbG9jOjpPYmpl
Y3Q6OnBhZ2UpOiBIZWxwZXIgY2xhc3MgdG8gYnJlYWsgb3V0IGEgdm9pZCogaW50byBpdHMKKyAg
ICAgICAgY29tcG9uZW50IG1ldGFkYXRhIHBvaW50ZXJzLgorCisgICAgICAgICogYm1hbGxvYy9T
bWFsbENodW5rLmg6CisgICAgICAgIChibWFsbG9jOjpTbWFsbENodW5rOjpTbWFsbENodW5rKTog
U21hbGxQYWdlOjpnZXQgZG9lc24ndCBleGlzdCBhbnltb3JlCisgICAgICAgIHNvIHdlIHVzZSBv
dXIgbmV3IGhlbHBlciBmdW5jdGlvbnMgaW5zdGVhZC4KKworICAgICAgICAoYm1hbGxvYzo6U21h
bGxDaHVuazo6b2Zmc2V0KToKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsQ2h1bms6Om9iamVjdCk6
CisgICAgICAgIChibWFsbG9jOjpTbWFsbENodW5rOjpwYWdlKToKKyAgICAgICAgKGJtYWxsb2M6
OlNtYWxsQ2h1bms6OmxpbmUpOgorICAgICAgICAoYm1hbGxvYzo6U21hbGxMaW5lOjpiZWdpbik6
CisgICAgICAgIChibWFsbG9jOjpTbWFsbExpbmU6OmVuZCk6CisgICAgICAgIChibWFsbG9jOjpT
bWFsbFBhZ2U6OmJlZ2luKTogTmV3IGhlbHBlcnMgdGhhdCBvcGVyYXRlIG9uIHRoZSBkYXRhCisg
ICAgICAgIHN0b3JlZCBpbiBPYmplY3QuCisKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsTGluZTo6
Z2V0KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsUGFnZTo6Z2V0KTogRGVsZXRl
ZC4KKworICAgICAgICAqIGJtYWxsb2MvU21hbGxMaW5lLmg6CisgICAgICAgIChibWFsbG9jOjpT
bWFsbExpbmU6OnJlZkNvdW50KTogQWRkZWQgYSBkZWZhdWx0IHJlZiB2YWx1ZSBmb3IgY29udmVu
aWVuY2UuCisKKyAgICAgICAgKiBibWFsbG9jL1NtYWxsUGFnZS5oOgorICAgICAgICAoYm1hbGxv
Yzo6U21hbGxQYWdlOjpTbWFsbFBhZ2UpOgorCiAyMDE2LTAzLTIzICBHZW9mZnJleSBHYXJlbiAg
PGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxvYzogcHJvY2VzcyB0aGUgb2JqZWN0
IGxvZyBiZWZvcmUgYXNraW5nIGZvciBuZXcgbWVtb3J5CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTg1NDYp
CisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKIAkJMTQ0MEFGQ0QxQTk1MjdBRjAwODM3RkFB
IC8qIFpvbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQ0MEFGQ0MxQTk1MjdBRjAwODM3RkFBIC8qIFpvbmUuY3BwICovOyB9OwogCQkxNDQ4QzMw
MDE4RjM3NTQ2MDA1MDI4MzkgLyogbWJtYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0OEMyRkYxOEYzNzU0MzAwNTAyODM5IC8qIG1ibWFs
bG9jLmNwcCAqLzsgfTsKIAkJMTQ0OEMzMDExOEYzNzU0QzAwNTAyODM5IC8qIGJtYWxsb2MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDhDMkZFMThG
Mzc1NDMwMDUwMjgzOSAvKiBibWFsbG9jLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ0QkUxMUYxQ0EzNDY1MjAwOTlDOEMwIC8qIE9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0QkUxMUUx
Q0EzNDY1MjAwOTlDOEMwIC8qIE9iamVjdC5oICovOyB9OwogCQkxNDRDMDdGNDFDN0I3MDI2MDA1
MUJCNkEgLyogWExhcmdlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0NEMwN0YyMUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VNYXAuY3BwICov
OyB9OwogCQkxNDRDMDdGNTFDN0I3MDI2MDA1MUJCNkEgLyogWExhcmdlTWFwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDRDMDdGMzFDN0I3MDI2MDA1
MUJCNkEgLyogWExhcmdlTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMTQ2MDQxRTcxQzdGRjJFRjAwRTlGOTRFIC8qIFNvcnRlZFZlY3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2MDQxRTYx
QzdGRjJFRjAwRTlGOTRFIC8qIFNvcnRlZFZlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDMsNiArMTA0LDcgQEAKIAkJMTQ0NDZBMDcx
N0E2MUZBNDAwRjlFQTFEIC8qIFBlclByb2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUGVyUHJvY2Vzcy5oOyBwYXRoID0gYm1hbGxvYy9QZXJQcm9jZXNzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NDhDMkZFMThGMzc1NDMwMDUwMjgzOSAvKiBibWFs
bG9jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGJtYWxsb2MuaDsgcGF0aCA9IGJtYWxsb2MvYm1hbGxvYy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDQ4QzJGRjE4RjM3NTQzMDA1MDI4Mzkg
LyogbWJtYWxsb2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gbWJtYWxsb2MuY3BwOyBwYXRoID0g
Ym1hbGxvYy9tYm1hbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NEJF
MTFFMUNBMzQ2NTIwMDk5QzhDMCAvKiBPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gT2JqZWN0Lmg7IHBhdGggPSBibWFsbG9jL09iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxNDRDMDdGMjFDN0I3MDI2MDA1MUJCNkEgLyogWExhcmdlTWFwLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFhMYXJnZU1hcC5jcHA7IHBh
dGggPSBibWFsbG9jL1hMYXJnZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0NEMwN0YzMUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VNYXAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gWExhcmdlTWFwLmg7IHBhdGggPSBibWFsbG9jL1hMYXJnZU1hcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDREQ0VENjE3QTY0OUQ5MDA5M0IyRjIg
LyogTXV0ZXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTXV0ZXguaDsgcGF0
aCA9IGJtYWxsb2MvTXV0ZXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NCw2
ICsyNjYsNyBAQAogCQkJCTE0REEzMjBFMTg4NzVEOUYwMDcyNjlFMCAvKiBIZWFwLmNwcCAqLywK
IAkJCQkxNERBMzIwQzE4ODc1QjA5MDA3MjY5RTAgLyogSGVhcC5oICovLAogCQkJCTE0MEZBMDA0
MTlDRTRCNjgwMEZGRDNDOCAvKiBMaW5lTWV0YWRhdGEuaCAqLywKKwkJCQkxNDRCRTExRTFDQTM0
NjUyMDA5OUM4QzAgLyogT2JqZWN0LmggKi8sCiAJCQkJMTQxMDVFODMxOEUxNDM3NDAwM0ExMDZF
IC8qIE9iamVjdFR5cGUuY3BwICovLAogCQkJCTE0ODU2NTYwMThBNDNEQkEwMEVENjk0MiAvKiBP
YmplY3RUeXBlLmggKi8sCiAJCQkJMTQ1RjY4NzQxNzlERjg0MTAwRDY1NTk4IC8qIFNpemVzLmgg
Ki8sCkBAIC0zMjIsNiArMzI1LDcgQEAKIAkJCQkxNDBGQTAwNTE5Q0U0QjY4MDBGRkQzQzggLyog
TGluZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDQzE4RjQ4RDc1MDA5NTA3
MDIgLyogUGVyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDQTE4RjQ4RDc1MDA5
NTA3MDIgLyogTXV0ZXguaCBpbiBIZWFkZXJzICovLAorCQkJCTE0NEJFMTFGMUNBMzQ2NTIwMDk5
QzhDMCAvKiBPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0M0NCODFEMTkwMjJCQzkwMEIx
NkE0NSAvKiBTdGF0aWNNdXRleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0OEMzMDExOEYzNzU0
QzAwNTAyODM5IC8qIGJtYWxsb2MuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QzYyMTZGMUE5QTlB
NjIwMEU3MjI5MyAvKiBMYXJnZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9BbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxOTg1OTQpCisrKyBTb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw4ICsxMTUs
OCBAQCB2b2lkKiBBbGxvY2F0b3I6OnJlYWxsb2NhdGUodm9pZCogb2JqZWN0CiAgICAgc2l6ZV90
IG9sZFNpemUgPSAwOwogICAgIHN3aXRjaCAob2JqZWN0VHlwZShvYmplY3QpKSB7CiAgICAgY2Fz
ZSBTbWFsbDogewotICAgICAgICBTbWFsbFBhZ2UqIHBhZ2UgPSBTbWFsbFBhZ2U6OmdldChTbWFs
bExpbmU6OmdldChvYmplY3QpKTsKLSAgICAgICAgb2xkU2l6ZSA9IG9iamVjdFNpemUocGFnZS0+
c2l6ZUNsYXNzKCkpOworICAgICAgICBzaXplX3Qgc2l6ZUNsYXNzID0gT2JqZWN0KG9iamVjdCku
cGFnZSgpLT5zaXplQ2xhc3MoKTsKKyAgICAgICAgb2xkU2l6ZSA9IG9iamVjdFNpemUoc2l6ZUNs
YXNzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTGFyZ2U6IHsKSW5kZXg6IFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxOTg1OTQpCisrKyBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkRlYWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgogI2luY2x1ZGUgIklubGluZS5oIgorI2luY2x1ZGUgIk9iamVjdC5oIgogI2luY2x1ZGUgIlBl
clByb2Nlc3MuaCIKICNpbmNsdWRlICJTbWFsbENodW5rLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGht
PgpAQCAtNzUsMTEgKzc2LDkgQEAgdm9pZCBEZWFsbG9jYXRvcjo6cHJvY2Vzc09iamVjdExvZyhz
dGQ6OgogewogICAgIEhlYXAqIGhlYXAgPSBQZXJQcm9jZXNzPEhlYXA+OjpnZXRGYXN0Q2FzZSgp
OwogICAgIAotICAgIGZvciAoYXV0byogb2JqZWN0IDogbV9vYmplY3RMb2cpIHsKLSAgICAgICAg
U21hbGxMaW5lKiBsaW5lID0gU21hbGxMaW5lOjpnZXQob2JqZWN0KTsKLSAgICAgICAgaGVhcC0+
ZGVyZWZTbWFsbExpbmUobG9jaywgbGluZSk7Ci0gICAgfQotICAgIAorICAgIGZvciAoT2JqZWN0
IG9iamVjdCA6IG1fb2JqZWN0TG9nKQorICAgICAgICBoZWFwLT5kZXJlZlNtYWxsTGluZShsb2Nr
LCBvYmplY3QpOworCiAgICAgbV9vYmplY3RMb2cuY2xlYXIoKTsKIH0KIApJbmRleDogU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0hlYXAuY3BwCShyZXZpc2lvbiAxOTg1OTQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsMTAgKzE5MywxMCBAQCBTbWFsbFBh
Z2UqIEhlYXA6OmFsbG9jYXRlU21hbGxQYWdlKHN0ZDo6CiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAK
LXZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0
ZXg+JiBsb2NrLCBTbWFsbExpbmUqIGxpbmUpCit2b2lkIEhlYXA6OmRlYWxsb2NhdGVTbWFsbExp
bmUoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaywgT2JqZWN0IG9iamVjdCkKIHsK
LSAgICBCQVNTRVJUKCFsaW5lLT5yZWZDb3VudChsb2NrKSk7Ci0gICAgU21hbGxQYWdlKiBwYWdl
ID0gU21hbGxQYWdlOjpnZXQobGluZSk7CisgICAgQkFTU0VSVCghb2JqZWN0LmxpbmUoKS0+cmVm
Q291bnQobG9jaykpOworICAgIFNtYWxsUGFnZSogcGFnZSA9IG9iamVjdC5wYWdlKCk7CiAgICAg
cGFnZS0+ZGVyZWYobG9jayk7CiAKICAgICBpZiAoIXBhZ2UtPmhhc0ZyZWVMaW5lcyhsb2NrKSkg
ewpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgJKHJldmlzaW9uIDE5ODU3MSkKKysrIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiTGluZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiTGlzdC5oIgogI2luY2x1ZGUgIk11
dGV4LmgiCisjaW5jbHVkZSAiT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2VncmVnYXRlZEZyZWVMaXN0
LmgiCiAjaW5jbHVkZSAiU21hbGxDaHVuay5oIgogI2luY2x1ZGUgIlNtYWxsTGluZS5oIgpAQCAt
NTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgRW52aXJvbm1lbnQmIGVudmlyb25tZW50KCkgeyBy
ZXR1cm4gbV9lbnZpcm9ubWVudDsgfQogCiAgICAgdm9pZCBhbGxvY2F0ZVNtYWxsQnVtcFJhbmdl
cyhzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90IHNpemVDbGFzcywgQnVtcEFs
bG9jYXRvciYsIEJ1bXBSYW5nZUNhY2hlJik7Ci0gICAgdm9pZCBkZXJlZlNtYWxsTGluZShzdGQ6
OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgU21hbGxMaW5lKik7CisgICAgdm9pZCBkZXJlZlNt
YWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgT2JqZWN0KTsKIAogICAgIHZv
aWQqIGFsbG9jYXRlTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHNpemVfdCk7
CiAgICAgdm9pZCogYWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwg
c2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBzaXplX3QgdW5hbGlnbmVkU2l6ZSk7CkBAIC03Niw3
ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICBTbWFsbFBhZ2UqIGFsbG9jYXRlU21hbGxQYWdlKHN0
ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3Qgc2l6ZUNsYXNzKTsKIAotICAgIHZv
aWQgZGVhbGxvY2F0ZVNtYWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgU21h
bGxMaW5lKik7CisgICAgdm9pZCBkZWFsbG9jYXRlU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxT
dGF0aWNNdXRleD4mLCBPYmplY3QpOwogICAgIHZvaWQgZGVhbGxvY2F0ZUxhcmdlKHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNNdXRleD4mLCBjb25zdCBMYXJnZU9iamVjdCYpOwogCiAgICAgTGFyZ2VP
YmplY3QmIHNwbGl0QW5kQWxsb2NhdGUoTGFyZ2VPYmplY3QmLCBzaXplX3QpOwpAQCAtMTEwLDEx
ICsxMTEsMTEgQEAgcHJpdmF0ZToKICAgICBWTUhlYXAgbV92bUhlYXA7CiB9OwogCi1pbmxpbmUg
dm9pZCBIZWFwOjpkZXJlZlNtYWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBs
b2NrLCBTbWFsbExpbmUqIGxpbmUpCitpbmxpbmUgdm9pZCBIZWFwOjpkZXJlZlNtYWxsTGluZShz
dGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBPYmplY3Qgb2JqZWN0KQogewotICAg
IGlmICghbGluZS0+ZGVyZWYobG9jaykpCisgICAgaWYgKCFvYmplY3QubGluZSgpLT5kZXJlZihs
b2NrKSkKICAgICAgICAgcmV0dXJuOwotICAgIGRlYWxsb2NhdGVTbWFsbExpbmUobG9jaywgbGlu
ZSk7CisgICAgZGVhbGxvY2F0ZVNtYWxsTGluZShsb2NrLCBvYmplY3QpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBibWFsbG9jCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0LmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBPYmplY3RfaAorI2RlZmluZSBPYmplY3RfaAorCisjaW5jbHVkZSAiU21hbGxD
aHVuay5oIgorCituYW1lc3BhY2UgYm1hbGxvYyB7CisKK2NsYXNzIE9iamVjdCB7CitwdWJsaWM6
CisgICAgT2JqZWN0KHZvaWQqIG9iamVjdCkKKyAgICAgICAgOiBtX2NodW5rKFNtYWxsQ2h1bms6
OmdldChvYmplY3QpKQorICAgICAgICAsIG1fb2Zmc2V0KG1fY2h1bmstPm9mZnNldChvYmplY3Qp
KQorICAgIHsKKyAgICB9CisgICAgCisgICAgT2JqZWN0KFNtYWxsQ2h1bmsqIGNodW5rLCB2b2lk
KiBvYmplY3QpCisgICAgICAgIDogbV9jaHVuayhjaHVuaykKKyAgICAgICAgLCBtX29mZnNldCht
X2NodW5rLT5vZmZzZXQob2JqZWN0KSkKKyAgICB7CisgICAgICAgIEJBU1NFUlQoY2h1bmsgPT0g
U21hbGxDaHVuazo6Z2V0KG9iamVjdCkpOworICAgIH0KKyAgICAKKyAgICBTbWFsbENodW5rKiBj
aHVuaygpIHsgcmV0dXJuIG1fY2h1bms7IH0KKyAgICBTbWFsbExpbmUqIGxpbmUoKSB7IHJldHVy
biBtX2NodW5rLT5saW5lKG1fb2Zmc2V0KTsgfQorICAgIFNtYWxsUGFnZSogcGFnZSgpIHsgcmV0
dXJuIG1fY2h1bmstPnBhZ2UobV9vZmZzZXQpOyB9CisKK3ByaXZhdGU6CisgICAgU21hbGxDaHVu
ayogbV9jaHVuazsKKyAgICBzaXplX3QgbV9vZmZzZXQ7Cit9OworCit9OyAvLyBuYW1lc3BhY2Ug
Ym1hbGxvYworCisjZW5kaWYgLy8gT2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvU21hbGxDaHVuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21h
bGxDaHVuay5oCShyZXZpc2lvbiAxOTg1NDYpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1Nt
YWxsQ2h1bmsuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsMTMgQEAgcHVibGljOgogICAg
IFNtYWxsQ2h1bmsoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOwogCiAgICAgc3RhdGlj
IFNtYWxsQ2h1bmsqIGdldCh2b2lkKik7CisgICAgc2l6ZV90IG9mZnNldCh2b2lkKik7CiAKLSAg
ICBTbWFsbFBhZ2UqIGJlZ2luKCkgeyByZXR1cm4gU21hbGxQYWdlOjpnZXQoU21hbGxMaW5lOjpn
ZXQobV9tZW1vcnkpKTsgfQorICAgIHZvaWQqIG9iamVjdChzaXplX3Qgb2Zmc2V0KTsKKyAgICBT
bWFsbFBhZ2UqIHBhZ2Uoc2l6ZV90IG9mZnNldCk7CisgICAgU21hbGxMaW5lKiBsaW5lKHNpemVf
dCBvZmZzZXQpOworCisgICAgU21hbGxQYWdlKiBiZWdpbigpIHsgcmV0dXJuIHBhZ2Uoc2l6ZW9m
KFNtYWxsQ2h1bmspKTsgfQogICAgIFNtYWxsUGFnZSogZW5kKCkgeyByZXR1cm4gbV9wYWdlcy5l
bmQoKTsgfQogICAgIAogICAgIFNtYWxsTGluZSogbGluZXMoKSB7IHJldHVybiBtX2xpbmVzLmJl
Z2luKCk7IH0KQEAgLTYwLDE1ICs2NSwxMCBAQCBzdGF0aWNfYXNzZXJ0KAogaW5saW5lIFNtYWxs
Q2h1bms6OlNtYWxsQ2h1bmsoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaykKIHsK
ICAgICAvLyBUcmFjayB0aGUgbWVtb3J5IHVzZWQgZm9yIG1ldGFkYXRhIGJ5IGFsbG9jYXRpbmcg
aW1hZ2luYXJ5IG9iamVjdHMuCi0gICAgZm9yIChTbWFsbExpbmUqIGxpbmUgPSBtX2xpbmVzLmJl
Z2luKCk7IGxpbmUgPCBTbWFsbExpbmU6OmdldChtX21lbW9yeSk7ICsrbGluZSkgewotICAgICAg
ICBsaW5lLT5yZWYobG9jaywgMSk7Ci0KLSAgICAgICAgU21hbGxQYWdlKiBwYWdlID0gU21hbGxQ
YWdlOjpnZXQobGluZSk7Ci0gICAgICAgIHBhZ2UtPnJlZihsb2NrKTsKKyAgICBmb3IgKHNpemVf
dCBvZmZzZXQgPSAwOyByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldCA8IG1f
bWVtb3J5OyBvZmZzZXQgKz0gc21hbGxMaW5lU2l6ZSkgeworICAgICAgICBsaW5lKG9mZnNldCkt
PnJlZihsb2NrKTsKKyAgICAgICAgcGFnZShvZmZzZXQpLT5yZWYobG9jayk7CiAgICAgfQotCi0g
ICAgZm9yIChTbWFsbFBhZ2UqIHBhZ2UgPSBiZWdpbigpOyBwYWdlICE9IGVuZCgpOyArK3BhZ2Up
Ci0gICAgICAgIHBhZ2UtPnNldEhhc0ZyZWVMaW5lcyhsb2NrLCB0cnVlKTsKIH0KIAogaW5saW5l
IFNtYWxsQ2h1bmsqIFNtYWxsQ2h1bms6OmdldCh2b2lkKiBvYmplY3QpCkBAIC03NywxMiArNzcs
MjggQEAgaW5saW5lIFNtYWxsQ2h1bmsqIFNtYWxsQ2h1bms6OmdldCh2b2lkKgogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxTbWFsbENodW5rKj4obWFzayhvYmplY3QsIHNtYWxsQ2h1bmtNYXNrKSk7
CiB9CiAKLWlubGluZSBTbWFsbExpbmUqIFNtYWxsTGluZTo6Z2V0KHZvaWQqIG9iamVjdCkKK2lu
bGluZSBzaXplX3QgU21hbGxDaHVuazo6b2Zmc2V0KHZvaWQqIG9iamVjdCkKIHsKLSAgICBCQVNT
RVJUKGlzU21hbGwob2JqZWN0KSk7Ci0gICAgU21hbGxDaHVuayogY2h1bmsgPSBTbWFsbENodW5r
OjpnZXQob2JqZWN0KTsKLSAgICBzaXplX3QgbGluZU51bWJlciA9IChyZWludGVycHJldF9jYXN0
PGNoYXIqPihvYmplY3QpIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2h1bmspKSAvIHNtYWxs
TGluZVNpemU7Ci0gICAgcmV0dXJuICZjaHVuay0+bGluZXMoKVtsaW5lTnVtYmVyXTsKKyAgICBC
QVNTRVJUKG9iamVjdCA+IHRoaXMpOworICAgIEJBU1NFUlQob2JqZWN0IDwgcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4odGhpcykgKyBzbWFsbENodW5rU2l6ZSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNoYXIqPihvYmplY3QpIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcyk7Cit9CisK
K2lubGluZSB2b2lkKiBTbWFsbENodW5rOjpvYmplY3Qoc2l6ZV90IG9mZnNldCkKK3sKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXQ7Cit9CisKK2lubGlu
ZSBTbWFsbFBhZ2UqIFNtYWxsQ2h1bms6OnBhZ2Uoc2l6ZV90IG9mZnNldCkKK3sKKyAgICBzaXpl
X3QgcGFnZU51bWJlciA9IG9mZnNldCAvIHZtUGFnZVNpemU7CisgICAgcmV0dXJuICZtX3BhZ2Vz
W3BhZ2VOdW1iZXJdOworfQorCitpbmxpbmUgU21hbGxMaW5lKiBTbWFsbENodW5rOjpsaW5lKHNp
emVfdCBvZmZzZXQpCit7CisgICAgc2l6ZV90IGxpbmVOdW1iZXIgPSBvZmZzZXQgLyBzbWFsbExp
bmVTaXplOworICAgIHJldHVybiAmbV9saW5lc1tsaW5lTnVtYmVyXTsKIH0KIAogaW5saW5lIGNo
YXIqIFNtYWxsTGluZTo6YmVnaW4oKQpAQCAtOTgsMTQgKzExNCw2IEBAIGlubGluZSBjaGFyKiBT
bWFsbExpbmU6OmVuZCgpCiAgICAgcmV0dXJuIGJlZ2luKCkgKyBzbWFsbExpbmVTaXplOwogfQog
Ci1pbmxpbmUgU21hbGxQYWdlKiBTbWFsbFBhZ2U6OmdldChTbWFsbExpbmUqIGxpbmUpCi17Ci0g
ICAgU21hbGxDaHVuayogY2h1bmsgPSBTbWFsbENodW5rOjpnZXQobGluZSk7Ci0gICAgc2l6ZV90
IGxpbmVOdW1iZXIgPSBsaW5lIC0gY2h1bmstPmxpbmVzKCk7Ci0gICAgc2l6ZV90IHBhZ2VOdW1i
ZXIgPSBsaW5lTnVtYmVyICogc21hbGxMaW5lU2l6ZSAvIHZtUGFnZVNpemU7Ci0gICAgcmV0dXJu
ICZjaHVuay0+cGFnZXMoKVtwYWdlTnVtYmVyXTsKLX0KLQogaW5saW5lIFNtYWxsTGluZSogU21h
bGxQYWdlOjpiZWdpbigpCiB7CiAgICAgU21hbGxDaHVuayogY2h1bmsgPSBTbWFsbENodW5rOjpn
ZXQodGhpcyk7CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsTGluZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxMaW5lLmgJKHJldmlzaW9uIDE5
ODU3MSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxMaW5lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDkgKzM1LDcgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiBjbGFzcyBTbWFsbExp
bmUgewogcHVibGljOgotICAgIHN0YXRpYyBTbWFsbExpbmUqIGdldCh2b2lkKik7Ci0KLSAgICB2
b2lkIHJlZihzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgdW5zaWduZWQgY2hhcik7Cisg
ICAgdm9pZCByZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHVuc2lnbmVkIGNoYXIg
PSAxKTsKICAgICBib29sIGRlcmVmKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKTsKICAg
ICB1bnNpZ25lZCByZWZDb3VudChzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JikgeyByZXR1
cm4gbV9yZWZDb3VudDsgfQogICAgIApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFs
bFBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsUGFnZS5o
CShyZXZpc2lvbiAxOTg1NzEpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw2IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAog
Y2xhc3MgU21hbGxQYWdlIDogcHVibGljIExpc3ROb2RlPFNtYWxsUGFnZT4gewogcHVibGljOgot
ICAgIHN0YXRpYyBTbWFsbFBhZ2UqIGdldChTbWFsbExpbmUqKTsKLQogICAgIFNtYWxsUGFnZSgp
CiAgICAgICAgIDogbV9oYXNGcmVlTGluZXModHJ1ZSkKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274795</attachid>
            <date>2016-03-23 16:53:42 -0700</date>
            <delta_ts>2016-03-23 17:06:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155818-20160323165343.patch</filename>
            <type>text/plain</type>
            <size>15984</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODYwMykKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE2LTAzLTIzICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYzogQWRkZWQgYW4g
T2JqZWN0IGhlbHBlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU1ODE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT2JqZWN0IGlzIGFuIGFic3RyYWN0aW9uIHRoYXQgYnJlYWtzIG91dCBhIHZv
aWQqIGludG8gaXRzIGNvbXBvbmVudAorICAgICAgICBtZXRhZGF0YSBwb2ludGVycy4KKworICAg
ICAgICBUaGlzIGlzIHNsaWdodGx5IGZhc3RlciB0aGFuIHJlY29tcHV0aW5nIHRoZW0sIGFuZCBp
dCBlbmFibGVzIGEgZnV0dXJlCisgICAgICAgIHBhdGNoIGluIHdoaWNoIE9iamVjdCB3aWxsIHRl
bGwgdXMgd2hldGhlciBpdCBpcyBzbWFsbCBvciBsYXJnZS4KKworICAgICAgICAqIGJtYWxsb2Mu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgdG8gdGhlIHByb2plY3QuCisKKyAgICAg
ICAgKiBibWFsbG9jL0FsbG9jYXRvci5jcHA6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6
OnJlYWxsb2NhdGUpOiBVc2UgT2JqZWN0IHRvIGNvbXB1dGUgc2l6ZS4KKworICAgICAgICAqIGJt
YWxsb2MvRGVhbGxvY2F0b3IuY3BwOgorICAgICAgICAoYm1hbGxvYzo6RGVhbGxvY2F0b3I6OnBy
b2Nlc3NPYmplY3RMb2cpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6CisgICAgICAgIChi
bWFsbG9jOjpIZWFwOjphbGxvY2F0ZVNtYWxsUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFw
OjpkZWFsbG9jYXRlU21hbGxMaW5lKToKKyAgICAgICAgKiBibWFsbG9jL0hlYXAuaDoKKyAgICAg
ICAgKGJtYWxsb2M6OkhlYXA6OmRlcmVmU21hbGxMaW5lKTogVXNlIE9iamVjdCB0byBkZWFsbG9j
YXRlLgorCisgICAgICAgICogYm1hbGxvYy9PYmplY3QuaDogQWRkZWQuCisgICAgICAgIChibWFs
bG9jOjpPYmplY3Q6Ok9iamVjdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3Q6OmNodW5rKToK
KyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdDo6bGluZSk6CisgICAgICAgIChibWFsbG9jOjpPYmpl
Y3Q6OnBhZ2UpOiBIZWxwZXIgY2xhc3MgdG8gYnJlYWsgb3V0IGEgdm9pZCogaW50byBpdHMKKyAg
ICAgICAgY29tcG9uZW50IG1ldGFkYXRhIHBvaW50ZXJzLgorCisgICAgICAgICogYm1hbGxvYy9T
bWFsbENodW5rLmg6CisgICAgICAgIChibWFsbG9jOjpTbWFsbENodW5rOjpTbWFsbENodW5rKTog
U21hbGxQYWdlOjpnZXQgZG9lc24ndCBleGlzdCBhbnltb3JlCisgICAgICAgIHNvIHdlIHVzZSBv
dXIgbmV3IGhlbHBlciBmdW5jdGlvbnMgaW5zdGVhZC4KKworICAgICAgICAoYm1hbGxvYzo6U21h
bGxDaHVuazo6b2Zmc2V0KToKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsQ2h1bms6Om9iamVjdCk6
CisgICAgICAgIChibWFsbG9jOjpTbWFsbENodW5rOjpwYWdlKToKKyAgICAgICAgKGJtYWxsb2M6
OlNtYWxsQ2h1bms6OmxpbmUpOgorICAgICAgICAoYm1hbGxvYzo6U21hbGxMaW5lOjpiZWdpbik6
CisgICAgICAgIChibWFsbG9jOjpTbWFsbExpbmU6OmVuZCk6CisgICAgICAgIChibWFsbG9jOjpT
bWFsbFBhZ2U6OmJlZ2luKTogTmV3IGhlbHBlcnMgdGhhdCBvcGVyYXRlIG9uIHRoZSBkYXRhCisg
ICAgICAgIHN0b3JlZCBpbiBPYmplY3QuCisKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsTGluZTo6
Z2V0KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsUGFnZTo6Z2V0KTogRGVsZXRl
ZC4KKworICAgICAgICAqIGJtYWxsb2MvU21hbGxMaW5lLmg6CisgICAgICAgIChibWFsbG9jOjpT
bWFsbExpbmU6OnJlZkNvdW50KTogQWRkZWQgYSBkZWZhdWx0IHJlZiB2YWx1ZSBmb3IgY29udmVu
aWVuY2UuCisKKyAgICAgICAgKiBibWFsbG9jL1NtYWxsUGFnZS5oOgorICAgICAgICAoYm1hbGxv
Yzo6U21hbGxQYWdlOjpTbWFsbFBhZ2UpOgorCiAyMDE2LTAzLTIzICBHZW9mZnJleSBHYXJlbiAg
PGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxvYzogcHJvY2VzcyB0aGUgb2JqZWN0
IGxvZyBiZWZvcmUgYXNraW5nIGZvciBuZXcgbWVtb3J5CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTg1NDYp
CisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKIAkJMTQ0MEFGQ0QxQTk1MjdBRjAwODM3RkFB
IC8qIFpvbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQ0MEFGQ0MxQTk1MjdBRjAwODM3RkFBIC8qIFpvbmUuY3BwICovOyB9OwogCQkxNDQ4QzMw
MDE4RjM3NTQ2MDA1MDI4MzkgLyogbWJtYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0OEMyRkYxOEYzNzU0MzAwNTAyODM5IC8qIG1ibWFs
bG9jLmNwcCAqLzsgfTsKIAkJMTQ0OEMzMDExOEYzNzU0QzAwNTAyODM5IC8qIGJtYWxsb2MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDhDMkZFMThG
Mzc1NDMwMDUwMjgzOSAvKiBibWFsbG9jLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ0QkUxMUYxQ0EzNDY1MjAwOTlDOEMwIC8qIE9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0QkUxMUUx
Q0EzNDY1MjAwOTlDOEMwIC8qIE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTE0NEMwN0Y0MUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VN
YXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0
QzA3RjIxQzdCNzAyNjAwNTFCQjZBIC8qIFhMYXJnZU1hcC5jcHAgKi87IH07CiAJCTE0NEMwN0Y1
MUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NEMwN0YzMUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VN
YXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
NDYwNDFFNzFDN0ZGMkVGMDBFOUY5NEUgLyogU29ydGVkVmVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDYwNDFFNjFDN0ZGMkVGMDBFOUY5NEUg
LyogU29ydGVkVmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEwMyw2ICsxMDQsNyBAQAogCQkxNDQ0NkEwNzE3QTYxRkE0MDBGOUVBMUQg
LyogUGVyUHJvY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQZXJQcm9j
ZXNzLmg7IHBhdGggPSBibWFsbG9jL1BlclByb2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTQ0OEMyRkUxOEYzNzU0MzAwNTAyODM5IC8qIGJtYWxsb2MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gYm1hbGxvYy5oOyBwYXRoID0gYm1hbGxvYy9ibWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0NDhDMkZGMThGMzc1NDMwMDUwMjgzOSAvKiBtYm1hbGxvYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBtYm1hbGxvYy5jcHA7IHBhdGggPSBibWFsbG9jL21ibWFsbG9j
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ0QkUxMUUxQ0EzNDY1MjAwOTlD
OEMwIC8qIE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPYmplY3Qu
aDsgcGF0aCA9IGJtYWxsb2MvT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0NEMwN0YyMUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VNYXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWExhcmdlTWFwLmNwcDsgcGF0aCA9IGJtYWxsb2MvWExh
cmdlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0QzA3RjMxQzdCNzAy
NjAwNTFCQjZBIC8qIFhMYXJnZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBYTGFyZ2VNYXAuaDsgcGF0aCA9IGJtYWxsb2MvWExhcmdlTWFwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0NERDRUQ2MTdBNjQ5RDkwMDkzQjJGMiAvKiBNdXRleC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNdXRleC5oOyBwYXRoID0gYm1hbGxvYy9NdXRl
eC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0LDYgKzI2Niw3IEBACiAJCQkJ
MTREQTMyMEUxODg3NUQ5RjAwNzI2OUUwIC8qIEhlYXAuY3BwICovLAogCQkJCTE0REEzMjBDMTg4
NzVCMDkwMDcyNjlFMCAvKiBIZWFwLmggKi8sCiAJCQkJMTQwRkEwMDQxOUNFNEI2ODAwRkZEM0M4
IC8qIExpbmVNZXRhZGF0YS5oICovLAorCQkJCTE0NEJFMTFFMUNBMzQ2NTIwMDk5QzhDMCAvKiBP
YmplY3QuaCAqLywKIAkJCQkxNDEwNUU4MzE4RTE0Mzc0MDAzQTEwNkUgLyogT2JqZWN0VHlwZS5j
cHAgKi8sCiAJCQkJMTQ4NTY1NjAxOEE0M0RCQTAwRUQ2OTQyIC8qIE9iamVjdFR5cGUuaCAqLywK
IAkJCQkxNDVGNjg3NDE3OURGODQxMDBENjU1OTggLyogU2l6ZXMuaCAqLywKQEAgLTMyMiw2ICsz
MjUsNyBAQAogCQkJCTE0MEZBMDA1MTlDRTRCNjgwMEZGRDNDOCAvKiBMaW5lTWV0YWRhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0REQ3OENDMThGNDhENzUwMDk1MDcwMiAvKiBQZXJUaHJlYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OENBMThGNDhENzUwMDk1MDcwMiAvKiBNdXRleC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMTQ0QkUxMUYxQ0EzNDY1MjAwOTlDOEMwIC8qIE9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQzQ0I4MUQxOTAyMkJDOTAwQjE2QTQ1IC8qIFN0YXRpY011
dGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQ4QzMwMTE4RjM3NTRDMDA1MDI4MzkgLyogYm1h
bGxvYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRDNjIxNkYxQTlBOUE2MjAwRTcyMjkzIC8qIExh
cmdlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
QWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9j
YXRvci5jcHAJKHJldmlzaW9uIDE5ODU5NCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxs
b2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQqIEFsbG9j
YXRvcjo6cmVhbGxvY2F0ZSh2b2lkKiBvYmplY3QKICAgICBzaXplX3Qgb2xkU2l6ZSA9IDA7CiAg
ICAgc3dpdGNoIChvYmplY3RUeXBlKG9iamVjdCkpIHsKICAgICBjYXNlIFNtYWxsOiB7Ci0gICAg
ICAgIFNtYWxsUGFnZSogcGFnZSA9IFNtYWxsUGFnZTo6Z2V0KFNtYWxsTGluZTo6Z2V0KG9iamVj
dCkpOwotICAgICAgICBvbGRTaXplID0gb2JqZWN0U2l6ZShwYWdlLT5zaXplQ2xhc3MoKSk7Cisg
ICAgICAgIHNpemVfdCBzaXplQ2xhc3MgPSBPYmplY3Qob2JqZWN0KS5wYWdlKCktPnNpemVDbGFz
cygpOworICAgICAgICBvbGRTaXplID0gb2JqZWN0U2l6ZShzaXplQ2xhc3MpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBMYXJnZTogewpJbmRleDogU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9EZWFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9EZWFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDE5ODU5NCkKKysrIFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvRGVhbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiRGVhbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5s
aW5lLmgiCisjaW5jbHVkZSAiT2JqZWN0LmgiCiAjaW5jbHVkZSAiUGVyUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIlNtYWxsQ2h1bmsuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC03NSwxMSArNzYs
OSBAQCB2b2lkIERlYWxsb2NhdG9yOjpwcm9jZXNzT2JqZWN0TG9nKHN0ZDo6CiB7CiAgICAgSGVh
cCogaGVhcCA9IFBlclByb2Nlc3M8SGVhcD46OmdldEZhc3RDYXNlKCk7CiAgICAgCi0gICAgZm9y
IChhdXRvKiBvYmplY3QgOiBtX29iamVjdExvZykgewotICAgICAgICBTbWFsbExpbmUqIGxpbmUg
PSBTbWFsbExpbmU6OmdldChvYmplY3QpOwotICAgICAgICBoZWFwLT5kZXJlZlNtYWxsTGluZShs
b2NrLCBsaW5lKTsKLSAgICB9Ci0gICAgCisgICAgZm9yIChPYmplY3Qgb2JqZWN0IDogbV9vYmpl
Y3RMb2cpCisgICAgICAgIGhlYXAtPmRlcmVmU21hbGxMaW5lKGxvY2ssIG9iamVjdCk7CisKICAg
ICBtX29iamVjdExvZy5jbGVhcigpOwogfQogCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAJ
KHJldmlzaW9uIDE5ODU5NCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5MywxMCArMTkzLDEwIEBAIFNtYWxsUGFnZSogSGVhcDo6YWxsb2Nh
dGVTbWFsbFBhZ2Uoc3RkOjoKICAgICByZXR1cm4gcGFnZTsKIH0KIAotdm9pZCBIZWFwOjpkZWFs
bG9jYXRlU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2ssIFNtYWxs
TGluZSogbGluZSkKK3ZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGluZShzdGQ6OmxvY2tfZ3Vh
cmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBPYmplY3Qgb2JqZWN0KQogewotICAgIEJBU1NFUlQoIWxp
bmUtPnJlZkNvdW50KGxvY2spKTsKLSAgICBTbWFsbFBhZ2UqIHBhZ2UgPSBTbWFsbFBhZ2U6Omdl
dChsaW5lKTsKKyAgICBCQVNTRVJUKCFvYmplY3QubGluZSgpLT5yZWZDb3VudChsb2NrKSk7Cisg
ICAgU21hbGxQYWdlKiBwYWdlID0gb2JqZWN0LnBhZ2UoKTsKICAgICBwYWdlLT5kZXJlZihsb2Nr
KTsKIAogICAgIGlmICghcGFnZS0+aGFzRnJlZUxpbmVzKGxvY2spKSB7CkluZGV4OiBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXAuaAkocmV2aXNpb24gMTk4NTcxKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9I
ZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMaW5lTWV0
YWRhdGEuaCIKICNpbmNsdWRlICJMaXN0LmgiCiAjaW5jbHVkZSAiTXV0ZXguaCIKKyNpbmNsdWRl
ICJPYmplY3QuaCIKICNpbmNsdWRlICJTZWdyZWdhdGVkRnJlZUxpc3QuaCIKICNpbmNsdWRlICJT
bWFsbENodW5rLmgiCiAjaW5jbHVkZSAiU21hbGxMaW5lLmgiCkBAIC01NCw3ICs1NSw3IEBAIHB1
YmxpYzoKICAgICBFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQoKSB7IHJldHVybiBtX2Vudmlyb25t
ZW50OyB9CiAKICAgICB2b2lkIGFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzKHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNNdXRleD4mLCBzaXplX3Qgc2l6ZUNsYXNzLCBCdW1wQWxsb2NhdG9yJiwgQnVtcFJh
bmdlQ2FjaGUmKTsKLSAgICB2b2lkIGRlcmVmU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0
aWNNdXRleD4mLCBTbWFsbExpbmUqKTsKKyAgICB2b2lkIGRlcmVmU21hbGxMaW5lKHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNNdXRleD4mLCBPYmplY3QpOwogCiAgICAgdm9pZCogYWxsb2NhdGVMYXJn
ZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90KTsKICAgICB2b2lkKiBhbGxv
Y2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3QgYWxpZ25tZW50
LCBzaXplX3QsIHNpemVfdCB1bmFsaWduZWRTaXplKTsKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0
ZToKIAogICAgIFNtYWxsUGFnZSogYWxsb2NhdGVTbWFsbFBhZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0
YXRpY011dGV4PiYsIHNpemVfdCBzaXplQ2xhc3MpOwogCi0gICAgdm9pZCBkZWFsbG9jYXRlU21h
bGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBTbWFsbExpbmUqKTsKKyAgICB2
b2lkIGRlYWxsb2NhdGVTbWFsbExpbmUoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIE9i
amVjdCk7CiAgICAgdm9pZCBkZWFsbG9jYXRlTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011
dGV4PiYsIGNvbnN0IExhcmdlT2JqZWN0Jik7CiAKICAgICBMYXJnZU9iamVjdCYgc3BsaXRBbmRB
bGxvY2F0ZShMYXJnZU9iamVjdCYsIHNpemVfdCk7CkBAIC0xMTAsMTEgKzExMSwxMSBAQCBwcml2
YXRlOgogICAgIFZNSGVhcCBtX3ZtSGVhcDsKIH07CiAKLWlubGluZSB2b2lkIEhlYXA6OmRlcmVm
U21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2ssIFNtYWxsTGluZSog
bGluZSkKK2lubGluZSB2b2lkIEhlYXA6OmRlcmVmU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxT
dGF0aWNNdXRleD4mIGxvY2ssIE9iamVjdCBvYmplY3QpCiB7Ci0gICAgaWYgKCFsaW5lLT5kZXJl
Zihsb2NrKSkKKyAgICBpZiAoIW9iamVjdC5saW5lKCktPmRlcmVmKGxvY2spKQogICAgICAgICBy
ZXR1cm47Ci0gICAgZGVhbGxvY2F0ZVNtYWxsTGluZShsb2NrLCBsaW5lKTsKKyAgICBkZWFsbG9j
YXRlU21hbGxMaW5lKGxvY2ssIG9iamVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MK
SW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9PYmplY3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE9iamVj
dF9oCisjZGVmaW5lIE9iamVjdF9oCisKKyNpbmNsdWRlICJTbWFsbENodW5rLmgiCisKK25hbWVz
cGFjZSBibWFsbG9jIHsKKworY2xhc3MgT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBPYmplY3Qodm9p
ZCogb2JqZWN0KQorICAgICAgICA6IG1fY2h1bmsoU21hbGxDaHVuazo6Z2V0KG9iamVjdCkpCisg
ICAgICAgICwgbV9vZmZzZXQobV9jaHVuay0+b2Zmc2V0KG9iamVjdCkpCisgICAgeworICAgIH0K
KyAgICAKKyAgICBPYmplY3QoU21hbGxDaHVuayogY2h1bmssIHZvaWQqIG9iamVjdCkKKyAgICAg
ICAgOiBtX2NodW5rKGNodW5rKQorICAgICAgICAsIG1fb2Zmc2V0KG1fY2h1bmstPm9mZnNldChv
YmplY3QpKQorICAgIHsKKyAgICAgICAgQkFTU0VSVChjaHVuayA9PSBTbWFsbENodW5rOjpnZXQo
b2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIFNtYWxsQ2h1bmsqIGNodW5rKCkgeyByZXR1cm4g
bV9jaHVuazsgfQorICAgIFNtYWxsTGluZSogbGluZSgpIHsgcmV0dXJuIG1fY2h1bmstPmxpbmUo
bV9vZmZzZXQpOyB9CisgICAgU21hbGxQYWdlKiBwYWdlKCkgeyByZXR1cm4gbV9jaHVuay0+cGFn
ZShtX29mZnNldCk7IH0KKworcHJpdmF0ZToKKyAgICBTbWFsbENodW5rKiBtX2NodW5rOworICAg
IHNpemVfdCBtX29mZnNldDsKK307CisKK307IC8vIG5hbWVzcGFjZSBibWFsbG9jCisKKyNlbmRp
ZiAvLyBPYmplY3RfaApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbENodW5rLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbENodW5rLmgJKHJldmlz
aW9uIDE5ODU0NikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxDaHVuay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw4ICszOCwxMyBAQCBwdWJsaWM6CiAgICAgU21hbGxDaHVuayhzdGQ6
OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jik7CiAKICAgICBzdGF0aWMgU21hbGxDaHVuayogZ2V0
KHZvaWQqKTsKKyAgICBzaXplX3Qgb2Zmc2V0KHZvaWQqKTsKIAotICAgIFNtYWxsUGFnZSogYmVn
aW4oKSB7IHJldHVybiBTbWFsbFBhZ2U6OmdldChTbWFsbExpbmU6OmdldChtX21lbW9yeSkpOyB9
CisgICAgdm9pZCogb2JqZWN0KHNpemVfdCBvZmZzZXQpOworICAgIFNtYWxsUGFnZSogcGFnZShz
aXplX3Qgb2Zmc2V0KTsKKyAgICBTbWFsbExpbmUqIGxpbmUoc2l6ZV90IG9mZnNldCk7CisKKyAg
ICBTbWFsbFBhZ2UqIGJlZ2luKCkgeyByZXR1cm4gcGFnZShzaXplb2YoU21hbGxDaHVuaykpOyB9
CiAgICAgU21hbGxQYWdlKiBlbmQoKSB7IHJldHVybiBtX3BhZ2VzLmVuZCgpOyB9CiAgICAgCiAg
ICAgU21hbGxMaW5lKiBsaW5lcygpIHsgcmV0dXJuIG1fbGluZXMuYmVnaW4oKTsgfQpAQCAtNjAs
MTUgKzY1LDEwIEBAIHN0YXRpY19hc3NlcnQoCiBpbmxpbmUgU21hbGxDaHVuazo6U21hbGxDaHVu
ayhzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrKQogewogICAgIC8vIFRyYWNrIHRo
ZSBtZW1vcnkgdXNlZCBmb3IgbWV0YWRhdGEgYnkgYWxsb2NhdGluZyBpbWFnaW5hcnkgb2JqZWN0
cy4KLSAgICBmb3IgKFNtYWxsTGluZSogbGluZSA9IG1fbGluZXMuYmVnaW4oKTsgbGluZSA8IFNt
YWxsTGluZTo6Z2V0KG1fbWVtb3J5KTsgKytsaW5lKSB7Ci0gICAgICAgIGxpbmUtPnJlZihsb2Nr
LCAxKTsKLQotICAgICAgICBTbWFsbFBhZ2UqIHBhZ2UgPSBTbWFsbFBhZ2U6OmdldChsaW5lKTsK
LSAgICAgICAgcGFnZS0+cmVmKGxvY2spOworICAgIGZvciAoc2l6ZV90IG9mZnNldCA9IDA7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0IDwgbV9tZW1vcnk7IG9mZnNldCAr
PSBzbWFsbExpbmVTaXplKSB7CisgICAgICAgIGxpbmUob2Zmc2V0KS0+cmVmKGxvY2spOworICAg
ICAgICBwYWdlKG9mZnNldCktPnJlZihsb2NrKTsKICAgICB9Ci0KLSAgICBmb3IgKFNtYWxsUGFn
ZSogcGFnZSA9IGJlZ2luKCk7IHBhZ2UgIT0gZW5kKCk7ICsrcGFnZSkKLSAgICAgICAgcGFnZS0+
c2V0SGFzRnJlZUxpbmVzKGxvY2ssIHRydWUpOwogfQogCiBpbmxpbmUgU21hbGxDaHVuayogU21h
bGxDaHVuazo6Z2V0KHZvaWQqIG9iamVjdCkKQEAgLTc3LDEyICs3NywyOCBAQCBpbmxpbmUgU21h
bGxDaHVuayogU21hbGxDaHVuazo6Z2V0KHZvaWQqCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNt
YWxsQ2h1bmsqPihtYXNrKG9iamVjdCwgc21hbGxDaHVua01hc2spKTsKIH0KIAotaW5saW5lIFNt
YWxsTGluZSogU21hbGxMaW5lOjpnZXQodm9pZCogb2JqZWN0KQoraW5saW5lIHNpemVfdCBTbWFs
bENodW5rOjpvZmZzZXQodm9pZCogb2JqZWN0KQogewotICAgIEJBU1NFUlQoaXNTbWFsbChvYmpl
Y3QpKTsKLSAgICBTbWFsbENodW5rKiBjaHVuayA9IFNtYWxsQ2h1bms6OmdldChvYmplY3QpOwot
ICAgIHNpemVfdCBsaW5lTnVtYmVyID0gKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG9iamVjdCkg
LSByZWludGVycHJldF9jYXN0PGNoYXIqPihjaHVuaykpIC8gc21hbGxMaW5lU2l6ZTsKLSAgICBy
ZXR1cm4gJmNodW5rLT5saW5lcygpW2xpbmVOdW1iZXJdOworICAgIEJBU1NFUlQob2JqZWN0ID4g
dGhpcyk7CisgICAgQkFTU0VSVChvYmplY3QgPCByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlz
KSArIHNtYWxsQ2h1bmtTaXplKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KG9iamVj
dCkgLSByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKTsKK30KKworaW5saW5lIHZvaWQqIFNt
YWxsQ2h1bms6Om9iamVjdChzaXplX3Qgb2Zmc2V0KQoreworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldDsKK30KKworaW5saW5lIFNtYWxsUGFnZSogU21h
bGxDaHVuazo6cGFnZShzaXplX3Qgb2Zmc2V0KQoreworICAgIHNpemVfdCBwYWdlTnVtYmVyID0g
b2Zmc2V0IC8gdm1QYWdlU2l6ZTsKKyAgICByZXR1cm4gJm1fcGFnZXNbcGFnZU51bWJlcl07Cit9
CisKK2lubGluZSBTbWFsbExpbmUqIFNtYWxsQ2h1bms6OmxpbmUoc2l6ZV90IG9mZnNldCkKK3sK
KyAgICBzaXplX3QgbGluZU51bWJlciA9IG9mZnNldCAvIHNtYWxsTGluZVNpemU7CisgICAgcmV0
dXJuICZtX2xpbmVzW2xpbmVOdW1iZXJdOwogfQogCiBpbmxpbmUgY2hhciogU21hbGxMaW5lOjpi
ZWdpbigpCkBAIC05OCwxNCArMTE0LDYgQEAgaW5saW5lIGNoYXIqIFNtYWxsTGluZTo6ZW5kKCkK
ICAgICByZXR1cm4gYmVnaW4oKSArIHNtYWxsTGluZVNpemU7CiB9CiAKLWlubGluZSBTbWFsbFBh
Z2UqIFNtYWxsUGFnZTo6Z2V0KFNtYWxsTGluZSogbGluZSkKLXsKLSAgICBTbWFsbENodW5rKiBj
aHVuayA9IFNtYWxsQ2h1bms6OmdldChsaW5lKTsKLSAgICBzaXplX3QgbGluZU51bWJlciA9IGxp
bmUgLSBjaHVuay0+bGluZXMoKTsKLSAgICBzaXplX3QgcGFnZU51bWJlciA9IGxpbmVOdW1iZXIg
KiBzbWFsbExpbmVTaXplIC8gdm1QYWdlU2l6ZTsKLSAgICByZXR1cm4gJmNodW5rLT5wYWdlcygp
W3BhZ2VOdW1iZXJdOwotfQotCiBpbmxpbmUgU21hbGxMaW5lKiBTbWFsbFBhZ2U6OmJlZ2luKCkK
IHsKICAgICBTbWFsbENodW5rKiBjaHVuayA9IFNtYWxsQ2h1bms6OmdldCh0aGlzKTsKSW5kZXg6
IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxMaW5lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9TbWFsbExpbmUuaAkocmV2aXNpb24gMTk4NTcxKQorKysgU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9TbWFsbExpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUs
NyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIGNsYXNzIFNtYWxsTGluZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFNtYWxsTGluZSogZ2V0KHZvaWQqKTsKLQotICAgIHZvaWQgcmVmKHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNNdXRleD4mLCB1bnNpZ25lZCBjaGFyKTsKKyAgICB2b2lkIHJlZihzdGQ6
OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgdW5zaWduZWQgY2hhciA9IDEpOwogICAgIGJvb2wg
ZGVyZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOwogICAgIHVuc2lnbmVkIHJlZkNv
dW50KHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKSB7IHJldHVybiBtX3JlZkNvdW50OyB9
CiAgICAgCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxQYWdlLmgJKHJldmlzaW9uIDE5ODU3
MSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxQYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDggKzM2LDYgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiBjbGFzcyBTbWFsbFBhZ2Ug
OiBwdWJsaWMgTGlzdE5vZGU8U21hbGxQYWdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFNtYWxs
UGFnZSogZ2V0KFNtYWxsTGluZSopOwotCiAgICAgU21hbGxQYWdlKCkKICAgICAgICAgOiBtX2hh
c0ZyZWVMaW5lcyh0cnVlKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274796</attachid>
            <date>2016-03-23 17:07:00 -0700</date>
            <delta_ts>2016-03-23 17:08:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155818-20160323170702.patch</filename>
            <type>text/plain</type>
            <size>16656</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODYwMykKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE2LTAzLTIzICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYzogQWRkZWQgYW4g
T2JqZWN0IGhlbHBlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU1ODE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT2JqZWN0IGlzIGFuIGFic3RyYWN0aW9uIHRoYXQgYnJlYWtzIG91dCBhIHZv
aWQqIGludG8gaXRzIGNvbXBvbmVudAorICAgICAgICBtZXRhZGF0YSBwb2ludGVycy4KKworICAg
ICAgICBUaGlzIGlzIHNsaWdodGx5IGZhc3RlciB0aGFuIHJlY29tcHV0aW5nIHRoZW0sIGFuZCBp
dCBlbmFibGVzIGEgZnV0dXJlCisgICAgICAgIHBhdGNoIGluIHdoaWNoIE9iamVjdCB3aWxsIHRl
bGwgdXMgd2hldGhlciBpdCBpcyBzbWFsbCBvciBsYXJnZS4KKworICAgICAgICAqIGJtYWxsb2Mu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgdG8gdGhlIHByb2plY3QuCisKKyAgICAg
ICAgKiBibWFsbG9jL0FsbG9jYXRvci5jcHA6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6
OnJlYWxsb2NhdGUpOiBVc2UgT2JqZWN0IHRvIGNvbXB1dGUgc2l6ZS4KKworICAgICAgICAqIGJt
YWxsb2MvRGVhbGxvY2F0b3IuY3BwOgorICAgICAgICAoYm1hbGxvYzo6RGVhbGxvY2F0b3I6OnBy
b2Nlc3NPYmplY3RMb2cpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6CisgICAgICAgIChi
bWFsbG9jOjpIZWFwOjphbGxvY2F0ZVNtYWxsUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFw
OjpkZWFsbG9jYXRlU21hbGxMaW5lKToKKyAgICAgICAgKiBibWFsbG9jL0hlYXAuaDoKKyAgICAg
ICAgKGJtYWxsb2M6OkhlYXA6OmRlcmVmU21hbGxMaW5lKTogVXNlIE9iamVjdCB0byBkZWFsbG9j
YXRlLgorCisgICAgICAgICogYm1hbGxvYy9PYmplY3QuaDogQWRkZWQuCisgICAgICAgIChibWFs
bG9jOjpPYmplY3Q6Ok9iamVjdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3Q6OmNodW5rKToK
KyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdDo6bGluZSk6CisgICAgICAgIChibWFsbG9jOjpPYmpl
Y3Q6OnBhZ2UpOiBIZWxwZXIgY2xhc3MgdG8gYnJlYWsgb3V0IGEgdm9pZCogaW50byBpdHMKKyAg
ICAgICAgY29tcG9uZW50IG1ldGFkYXRhIHBvaW50ZXJzLgorCisgICAgICAgICogYm1hbGxvYy9T
bWFsbENodW5rLmg6CisgICAgICAgIChibWFsbG9jOjpTbWFsbENodW5rOjpTbWFsbENodW5rKTog
U21hbGxQYWdlOjpnZXQgZG9lc24ndCBleGlzdCBhbnltb3JlCisgICAgICAgIHNvIHdlIHVzZSBv
dXIgbmV3IGhlbHBlciBmdW5jdGlvbnMgaW5zdGVhZC4KKworICAgICAgICAoYm1hbGxvYzo6U21h
bGxDaHVuazo6b2Zmc2V0KToKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsQ2h1bms6Om9iamVjdCk6
CisgICAgICAgIChibWFsbG9jOjpTbWFsbENodW5rOjpwYWdlKToKKyAgICAgICAgKGJtYWxsb2M6
OlNtYWxsQ2h1bms6OmxpbmUpOgorICAgICAgICAoYm1hbGxvYzo6U21hbGxMaW5lOjpiZWdpbik6
CisgICAgICAgIChibWFsbG9jOjpTbWFsbExpbmU6OmVuZCk6CisgICAgICAgIChibWFsbG9jOjpT
bWFsbFBhZ2U6OmJlZ2luKTogTmV3IGhlbHBlcnMgdGhhdCBvcGVyYXRlIG9uIHRoZSBkYXRhCisg
ICAgICAgIHN0b3JlZCBpbiBPYmplY3QuCisKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsTGluZTo6
Z2V0KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsUGFnZTo6Z2V0KTogRGVsZXRl
ZC4KKworICAgICAgICAqIGJtYWxsb2MvU21hbGxMaW5lLmg6CisgICAgICAgIChibWFsbG9jOjpT
bWFsbExpbmU6OnJlZkNvdW50KTogQWRkZWQgYSBkZWZhdWx0IHJlZiB2YWx1ZSBmb3IgY29udmVu
aWVuY2UuCisKKyAgICAgICAgKiBibWFsbG9jL1NtYWxsUGFnZS5oOgorICAgICAgICAoYm1hbGxv
Yzo6U21hbGxQYWdlOjpTbWFsbFBhZ2UpOgorCiAyMDE2LTAzLTIzICBHZW9mZnJleSBHYXJlbiAg
PGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxvYzogcHJvY2VzcyB0aGUgb2JqZWN0
IGxvZyBiZWZvcmUgYXNraW5nIGZvciBuZXcgbWVtb3J5CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTg1NDYp
CisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKIAkJMTQ0MEFGQ0QxQTk1MjdBRjAwODM3RkFB
IC8qIFpvbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQ0MEFGQ0MxQTk1MjdBRjAwODM3RkFBIC8qIFpvbmUuY3BwICovOyB9OwogCQkxNDQ4QzMw
MDE4RjM3NTQ2MDA1MDI4MzkgLyogbWJtYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0OEMyRkYxOEYzNzU0MzAwNTAyODM5IC8qIG1ibWFs
bG9jLmNwcCAqLzsgfTsKIAkJMTQ0OEMzMDExOEYzNzU0QzAwNTAyODM5IC8qIGJtYWxsb2MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDhDMkZFMThG
Mzc1NDMwMDUwMjgzOSAvKiBibWFsbG9jLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ0QkUxMUYxQ0EzNDY1MjAwOTlDOEMwIC8qIE9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0QkUxMUUx
Q0EzNDY1MjAwOTlDOEMwIC8qIE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTE0NEMwN0Y0MUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VN
YXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0
QzA3RjIxQzdCNzAyNjAwNTFCQjZBIC8qIFhMYXJnZU1hcC5jcHAgKi87IH07CiAJCTE0NEMwN0Y1
MUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NEMwN0YzMUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VN
YXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
NDYwNDFFNzFDN0ZGMkVGMDBFOUY5NEUgLyogU29ydGVkVmVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDYwNDFFNjFDN0ZGMkVGMDBFOUY5NEUg
LyogU29ydGVkVmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEwMyw2ICsxMDQsNyBAQAogCQkxNDQ0NkEwNzE3QTYxRkE0MDBGOUVBMUQg
LyogUGVyUHJvY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQZXJQcm9j
ZXNzLmg7IHBhdGggPSBibWFsbG9jL1BlclByb2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTQ0OEMyRkUxOEYzNzU0MzAwNTAyODM5IC8qIGJtYWxsb2MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gYm1hbGxvYy5oOyBwYXRoID0gYm1hbGxvYy9ibWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0NDhDMkZGMThGMzc1NDMwMDUwMjgzOSAvKiBtYm1hbGxvYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBtYm1hbGxvYy5jcHA7IHBhdGggPSBibWFsbG9jL21ibWFsbG9j
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ0QkUxMUUxQ0EzNDY1MjAwOTlD
OEMwIC8qIE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPYmplY3Qu
aDsgcGF0aCA9IGJtYWxsb2MvT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0NEMwN0YyMUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VNYXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWExhcmdlTWFwLmNwcDsgcGF0aCA9IGJtYWxsb2MvWExh
cmdlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0QzA3RjMxQzdCNzAy
NjAwNTFCQjZBIC8qIFhMYXJnZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBYTGFyZ2VNYXAuaDsgcGF0aCA9IGJtYWxsb2MvWExhcmdlTWFwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0NERDRUQ2MTdBNjQ5RDkwMDkzQjJGMiAvKiBNdXRleC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNdXRleC5oOyBwYXRoID0gYm1hbGxvYy9NdXRl
eC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0LDYgKzI2Niw3IEBACiAJCQkJ
MTREQTMyMEUxODg3NUQ5RjAwNzI2OUUwIC8qIEhlYXAuY3BwICovLAogCQkJCTE0REEzMjBDMTg4
NzVCMDkwMDcyNjlFMCAvKiBIZWFwLmggKi8sCiAJCQkJMTQwRkEwMDQxOUNFNEI2ODAwRkZEM0M4
IC8qIExpbmVNZXRhZGF0YS5oICovLAorCQkJCTE0NEJFMTFFMUNBMzQ2NTIwMDk5QzhDMCAvKiBP
YmplY3QuaCAqLywKIAkJCQkxNDEwNUU4MzE4RTE0Mzc0MDAzQTEwNkUgLyogT2JqZWN0VHlwZS5j
cHAgKi8sCiAJCQkJMTQ4NTY1NjAxOEE0M0RCQTAwRUQ2OTQyIC8qIE9iamVjdFR5cGUuaCAqLywK
IAkJCQkxNDVGNjg3NDE3OURGODQxMDBENjU1OTggLyogU2l6ZXMuaCAqLywKQEAgLTMyMiw2ICsz
MjUsNyBAQAogCQkJCTE0MEZBMDA1MTlDRTRCNjgwMEZGRDNDOCAvKiBMaW5lTWV0YWRhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0REQ3OENDMThGNDhENzUwMDk1MDcwMiAvKiBQZXJUaHJlYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OENBMThGNDhENzUwMDk1MDcwMiAvKiBNdXRleC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMTQ0QkUxMUYxQ0EzNDY1MjAwOTlDOEMwIC8qIE9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQzQ0I4MUQxOTAyMkJDOTAwQjE2QTQ1IC8qIFN0YXRpY011
dGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQ4QzMwMTE4RjM3NTRDMDA1MDI4MzkgLyogYm1h
bGxvYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRDNjIxNkYxQTlBOUE2MjAwRTcyMjkzIC8qIExh
cmdlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
QWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9j
YXRvci5jcHAJKHJldmlzaW9uIDE5ODU5NCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxs
b2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQqIEFsbG9j
YXRvcjo6cmVhbGxvY2F0ZSh2b2lkKiBvYmplY3QKICAgICBzaXplX3Qgb2xkU2l6ZSA9IDA7CiAg
ICAgc3dpdGNoIChvYmplY3RUeXBlKG9iamVjdCkpIHsKICAgICBjYXNlIFNtYWxsOiB7Ci0gICAg
ICAgIFNtYWxsUGFnZSogcGFnZSA9IFNtYWxsUGFnZTo6Z2V0KFNtYWxsTGluZTo6Z2V0KG9iamVj
dCkpOwotICAgICAgICBvbGRTaXplID0gb2JqZWN0U2l6ZShwYWdlLT5zaXplQ2xhc3MoKSk7Cisg
ICAgICAgIHNpemVfdCBzaXplQ2xhc3MgPSBPYmplY3Qob2JqZWN0KS5wYWdlKCktPnNpemVDbGFz
cygpOworICAgICAgICBvbGRTaXplID0gb2JqZWN0U2l6ZShzaXplQ2xhc3MpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBMYXJnZTogewpJbmRleDogU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9EZWFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9EZWFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDE5ODU5NCkKKysrIFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvRGVhbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiRGVhbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5s
aW5lLmgiCisjaW5jbHVkZSAiT2JqZWN0LmgiCiAjaW5jbHVkZSAiUGVyUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIlNtYWxsQ2h1bmsuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC03NSwxMSArNzYs
OSBAQCB2b2lkIERlYWxsb2NhdG9yOjpwcm9jZXNzT2JqZWN0TG9nKHN0ZDo6CiB7CiAgICAgSGVh
cCogaGVhcCA9IFBlclByb2Nlc3M8SGVhcD46OmdldEZhc3RDYXNlKCk7CiAgICAgCi0gICAgZm9y
IChhdXRvKiBvYmplY3QgOiBtX29iamVjdExvZykgewotICAgICAgICBTbWFsbExpbmUqIGxpbmUg
PSBTbWFsbExpbmU6OmdldChvYmplY3QpOwotICAgICAgICBoZWFwLT5kZXJlZlNtYWxsTGluZShs
b2NrLCBsaW5lKTsKLSAgICB9Ci0gICAgCisgICAgZm9yIChPYmplY3Qgb2JqZWN0IDogbV9vYmpl
Y3RMb2cpCisgICAgICAgIGhlYXAtPmRlcmVmU21hbGxMaW5lKGxvY2ssIG9iamVjdCk7CisKICAg
ICBtX29iamVjdExvZy5jbGVhcigpOwogfQogCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAJ
KHJldmlzaW9uIDE5ODU5NCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5MywxMCArMTkzLDEwIEBAIFNtYWxsUGFnZSogSGVhcDo6YWxsb2Nh
dGVTbWFsbFBhZ2Uoc3RkOjoKICAgICByZXR1cm4gcGFnZTsKIH0KIAotdm9pZCBIZWFwOjpkZWFs
bG9jYXRlU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2ssIFNtYWxs
TGluZSogbGluZSkKK3ZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGluZShzdGQ6OmxvY2tfZ3Vh
cmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBPYmplY3Qgb2JqZWN0KQogewotICAgIEJBU1NFUlQoIWxp
bmUtPnJlZkNvdW50KGxvY2spKTsKLSAgICBTbWFsbFBhZ2UqIHBhZ2UgPSBTbWFsbFBhZ2U6Omdl
dChsaW5lKTsKKyAgICBCQVNTRVJUKCFvYmplY3QubGluZSgpLT5yZWZDb3VudChsb2NrKSk7Cisg
ICAgU21hbGxQYWdlKiBwYWdlID0gb2JqZWN0LnBhZ2UoKTsKICAgICBwYWdlLT5kZXJlZihsb2Nr
KTsKIAogICAgIGlmICghcGFnZS0+aGFzRnJlZUxpbmVzKGxvY2spKSB7CkluZGV4OiBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXAuaAkocmV2aXNpb24gMTk4NTcxKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9I
ZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMaW5lTWV0
YWRhdGEuaCIKICNpbmNsdWRlICJMaXN0LmgiCiAjaW5jbHVkZSAiTXV0ZXguaCIKKyNpbmNsdWRl
ICJPYmplY3QuaCIKICNpbmNsdWRlICJTZWdyZWdhdGVkRnJlZUxpc3QuaCIKICNpbmNsdWRlICJT
bWFsbENodW5rLmgiCiAjaW5jbHVkZSAiU21hbGxMaW5lLmgiCkBAIC01NCw3ICs1NSw3IEBAIHB1
YmxpYzoKICAgICBFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQoKSB7IHJldHVybiBtX2Vudmlyb25t
ZW50OyB9CiAKICAgICB2b2lkIGFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzKHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNNdXRleD4mLCBzaXplX3Qgc2l6ZUNsYXNzLCBCdW1wQWxsb2NhdG9yJiwgQnVtcFJh
bmdlQ2FjaGUmKTsKLSAgICB2b2lkIGRlcmVmU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0
aWNNdXRleD4mLCBTbWFsbExpbmUqKTsKKyAgICB2b2lkIGRlcmVmU21hbGxMaW5lKHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNNdXRleD4mLCBPYmplY3QpOwogCiAgICAgdm9pZCogYWxsb2NhdGVMYXJn
ZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90KTsKICAgICB2b2lkKiBhbGxv
Y2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3QgYWxpZ25tZW50
LCBzaXplX3QsIHNpemVfdCB1bmFsaWduZWRTaXplKTsKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0
ZToKIAogICAgIFNtYWxsUGFnZSogYWxsb2NhdGVTbWFsbFBhZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0
YXRpY011dGV4PiYsIHNpemVfdCBzaXplQ2xhc3MpOwogCi0gICAgdm9pZCBkZWFsbG9jYXRlU21h
bGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBTbWFsbExpbmUqKTsKKyAgICB2
b2lkIGRlYWxsb2NhdGVTbWFsbExpbmUoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIE9i
amVjdCk7CiAgICAgdm9pZCBkZWFsbG9jYXRlTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011
dGV4PiYsIGNvbnN0IExhcmdlT2JqZWN0Jik7CiAKICAgICBMYXJnZU9iamVjdCYgc3BsaXRBbmRB
bGxvY2F0ZShMYXJnZU9iamVjdCYsIHNpemVfdCk7CkBAIC0xMTAsMTEgKzExMSwxMSBAQCBwcml2
YXRlOgogICAgIFZNSGVhcCBtX3ZtSGVhcDsKIH07CiAKLWlubGluZSB2b2lkIEhlYXA6OmRlcmVm
U21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2ssIFNtYWxsTGluZSog
bGluZSkKK2lubGluZSB2b2lkIEhlYXA6OmRlcmVmU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxT
dGF0aWNNdXRleD4mIGxvY2ssIE9iamVjdCBvYmplY3QpCiB7Ci0gICAgaWYgKCFsaW5lLT5kZXJl
Zihsb2NrKSkKKyAgICBpZiAoIW9iamVjdC5saW5lKCktPmRlcmVmKGxvY2spKQogICAgICAgICBy
ZXR1cm47Ci0gICAgZGVhbGxvY2F0ZVNtYWxsTGluZShsb2NrLCBsaW5lKTsKKyAgICBkZWFsbG9j
YXRlU21hbGxMaW5lKGxvY2ssIG9iamVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MK
SW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9PYmplY3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE9iamVj
dF9oCisjZGVmaW5lIE9iamVjdF9oCisKK25hbWVzcGFjZSBibWFsbG9jIHsKKworY2xhc3MgU21h
bGxDaHVuazsKK2NsYXNzIFNtYWxsTGluZTsKK2NsYXNzIFNtYWxsUGFnZTsKKworY2xhc3MgT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICBPYmplY3Qodm9pZCopOworICAgIE9iamVjdChTbWFsbENodW5r
Kiwgdm9pZCopOworICAgIAorICAgIFNtYWxsQ2h1bmsqIGNodW5rKCkgeyByZXR1cm4gbV9jaHVu
azsgfQorCisgICAgU21hbGxMaW5lKiBsaW5lKCk7CisgICAgU21hbGxQYWdlKiBwYWdlKCk7CisK
K3ByaXZhdGU6CisgICAgU21hbGxDaHVuayogbV9jaHVuazsKKyAgICBzaXplX3QgbV9vZmZzZXQ7
Cit9OworCit9OyAvLyBuYW1lc3BhY2UgYm1hbGxvYworCisjZW5kaWYgLy8gT2JqZWN0X2gKSW5k
ZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxDaHVuay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxDaHVuay5oCShyZXZpc2lvbiAxOTg1NDYpCisrKyBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsQ2h1bmsuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI2lmbmRlZiBTbWFsbENodW5rX2gKICNkZWZpbmUgU21hbGxDaHVua19oCiAK
KyNpbmNsdWRlICJPYmplY3QuaCIKICNpbmNsdWRlICJTaXplcy5oIgogI2luY2x1ZGUgIlNtYWxs
TGluZS5oIgogI2luY2x1ZGUgIlNtYWxsUGFnZS5oIgpAQCAtMzgsMTMgKzM5LDE4IEBAIHB1Ymxp
YzoKICAgICBTbWFsbENodW5rKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKTsKIAogICAg
IHN0YXRpYyBTbWFsbENodW5rKiBnZXQodm9pZCopOworICAgIHNpemVfdCBvZmZzZXQodm9pZCop
OwogCi0gICAgU21hbGxQYWdlKiBiZWdpbigpIHsgcmV0dXJuIFNtYWxsUGFnZTo6Z2V0KFNtYWxs
TGluZTo6Z2V0KG1fbWVtb3J5KSk7IH0KKyAgICB2b2lkKiBvYmplY3Qoc2l6ZV90IG9mZnNldCk7
CisgICAgU21hbGxQYWdlKiBwYWdlKHNpemVfdCBvZmZzZXQpOworICAgIFNtYWxsTGluZSogbGlu
ZShzaXplX3Qgb2Zmc2V0KTsKKworICAgIFNtYWxsUGFnZSogYmVnaW4oKSB7IHJldHVybiBPYmpl
Y3QobV9tZW1vcnkpLnBhZ2UoKTsgfQogICAgIFNtYWxsUGFnZSogZW5kKCkgeyByZXR1cm4gbV9w
YWdlcy5lbmQoKTsgfQotICAgIAorCiAgICAgU21hbGxMaW5lKiBsaW5lcygpIHsgcmV0dXJuIG1f
bGluZXMuYmVnaW4oKTsgfQogICAgIFNtYWxsUGFnZSogcGFnZXMoKSB7IHJldHVybiBtX3BhZ2Vz
LmJlZ2luKCk7IH0KLSAgICAKKwogcHJpdmF0ZToKICAgICBzdGQ6OmFycmF5PFNtYWxsTGluZSwg
c21hbGxDaHVua1NpemUgLyBzbWFsbExpbmVTaXplPiBtX2xpbmVzOwogICAgIHN0ZDo6YXJyYXk8
U21hbGxQYWdlLCBzbWFsbENodW5rU2l6ZSAvIHZtUGFnZVNpemU+IG1fcGFnZXM7CkBAIC02MCwx
NSArNjYsMTEgQEAgc3RhdGljX2Fzc2VydCgKIGlubGluZSBTbWFsbENodW5rOjpTbWFsbENodW5r
KHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2spCiB7CiAgICAgLy8gVHJhY2sgdGhl
IG1lbW9yeSB1c2VkIGZvciBtZXRhZGF0YSBieSBhbGxvY2F0aW5nIGltYWdpbmFyeSBvYmplY3Rz
LgotICAgIGZvciAoU21hbGxMaW5lKiBsaW5lID0gbV9saW5lcy5iZWdpbigpOyBsaW5lIDwgU21h
bGxMaW5lOjpnZXQobV9tZW1vcnkpOyArK2xpbmUpIHsKLSAgICAgICAgbGluZS0+cmVmKGxvY2ss
IDEpOwotCi0gICAgICAgIFNtYWxsUGFnZSogcGFnZSA9IFNtYWxsUGFnZTo6Z2V0KGxpbmUpOwot
ICAgICAgICBwYWdlLT5yZWYobG9jayk7CisgICAgZm9yIChjaGFyKiBpdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KHRoaXMpOyBpdCA8IG1fbWVtb3J5OyBpdCArPSBzbWFsbExpbmVTaXplKSB7
CisgICAgICAgIE9iamVjdCBvYmplY3QoaXQpOworICAgICAgICBvYmplY3QubGluZSgpLT5yZWYo
bG9jayk7CisgICAgICAgIG9iamVjdC5wYWdlKCktPnJlZihsb2NrKTsKICAgICB9Ci0KLSAgICBm
b3IgKFNtYWxsUGFnZSogcGFnZSA9IGJlZ2luKCk7IHBhZ2UgIT0gZW5kKCk7ICsrcGFnZSkKLSAg
ICAgICAgcGFnZS0+c2V0SGFzRnJlZUxpbmVzKGxvY2ssIHRydWUpOwogfQogCiBpbmxpbmUgU21h
bGxDaHVuayogU21hbGxDaHVuazo6Z2V0KHZvaWQqIG9iamVjdCkKQEAgLTc3LDEyICs3OSwyOCBA
QCBpbmxpbmUgU21hbGxDaHVuayogU21hbGxDaHVuazo6Z2V0KHZvaWQqCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFNtYWxsQ2h1bmsqPihtYXNrKG9iamVjdCwgc21hbGxDaHVua01hc2spKTsKIH0K
IAotaW5saW5lIFNtYWxsTGluZSogU21hbGxMaW5lOjpnZXQodm9pZCogb2JqZWN0KQoraW5saW5l
IHNpemVfdCBTbWFsbENodW5rOjpvZmZzZXQodm9pZCogb2JqZWN0KQogewotICAgIEJBU1NFUlQo
aXNTbWFsbChvYmplY3QpKTsKLSAgICBTbWFsbENodW5rKiBjaHVuayA9IFNtYWxsQ2h1bms6Omdl
dChvYmplY3QpOwotICAgIHNpemVfdCBsaW5lTnVtYmVyID0gKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KG9iamVjdCkgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihjaHVuaykpIC8gc21hbGxMaW5l
U2l6ZTsKLSAgICByZXR1cm4gJmNodW5rLT5saW5lcygpW2xpbmVOdW1iZXJdOworICAgIEJBU1NF
UlQob2JqZWN0ID49IHRoaXMpOworICAgIEJBU1NFUlQob2JqZWN0IDwgcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4odGhpcykgKyBzbWFsbENodW5rU2l6ZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNoYXIqPihvYmplY3QpIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcyk7Cit9CisKK2lu
bGluZSB2b2lkKiBTbWFsbENodW5rOjpvYmplY3Qoc2l6ZV90IG9mZnNldCkKK3sKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXQ7Cit9CisKK2lubGluZSBT
bWFsbFBhZ2UqIFNtYWxsQ2h1bms6OnBhZ2Uoc2l6ZV90IG9mZnNldCkKK3sKKyAgICBzaXplX3Qg
cGFnZU51bWJlciA9IG9mZnNldCAvIHZtUGFnZVNpemU7CisgICAgcmV0dXJuICZtX3BhZ2VzW3Bh
Z2VOdW1iZXJdOworfQorCitpbmxpbmUgU21hbGxMaW5lKiBTbWFsbENodW5rOjpsaW5lKHNpemVf
dCBvZmZzZXQpCit7CisgICAgc2l6ZV90IGxpbmVOdW1iZXIgPSBvZmZzZXQgLyBzbWFsbExpbmVT
aXplOworICAgIHJldHVybiAmbV9saW5lc1tsaW5lTnVtYmVyXTsKIH0KIAogaW5saW5lIGNoYXIq
IFNtYWxsTGluZTo6YmVnaW4oKQpAQCAtOTgsMTQgKzExNiw2IEBAIGlubGluZSBjaGFyKiBTbWFs
bExpbmU6OmVuZCgpCiAgICAgcmV0dXJuIGJlZ2luKCkgKyBzbWFsbExpbmVTaXplOwogfQogCi1p
bmxpbmUgU21hbGxQYWdlKiBTbWFsbFBhZ2U6OmdldChTbWFsbExpbmUqIGxpbmUpCi17Ci0gICAg
U21hbGxDaHVuayogY2h1bmsgPSBTbWFsbENodW5rOjpnZXQobGluZSk7Ci0gICAgc2l6ZV90IGxp
bmVOdW1iZXIgPSBsaW5lIC0gY2h1bmstPmxpbmVzKCk7Ci0gICAgc2l6ZV90IHBhZ2VOdW1iZXIg
PSBsaW5lTnVtYmVyICogc21hbGxMaW5lU2l6ZSAvIHZtUGFnZVNpemU7Ci0gICAgcmV0dXJuICZj
aHVuay0+cGFnZXMoKVtwYWdlTnVtYmVyXTsKLX0KLQogaW5saW5lIFNtYWxsTGluZSogU21hbGxQ
YWdlOjpiZWdpbigpCiB7CiAgICAgU21hbGxDaHVuayogY2h1bmsgPSBTbWFsbENodW5rOjpnZXQo
dGhpcyk7CkBAIC0xMTksNiArMTI5LDI5IEBAIGlubGluZSBTbWFsbExpbmUqIFNtYWxsUGFnZTo6
ZW5kKCkKICAgICByZXR1cm4gYmVnaW4oKSArIHNtYWxsTGluZUNvdW50OwogfQogCitpbmxpbmUg
T2JqZWN0OjpPYmplY3Qodm9pZCogb2JqZWN0KQorICAgIDogbV9jaHVuayhTbWFsbENodW5rOjpn
ZXQob2JqZWN0KSkKKyAgICAsIG1fb2Zmc2V0KG1fY2h1bmstPm9mZnNldChvYmplY3QpKQorewor
fQorCitpbmxpbmUgT2JqZWN0OjpPYmplY3QoU21hbGxDaHVuayogY2h1bmssIHZvaWQqIG9iamVj
dCkKKyAgICA6IG1fY2h1bmsoY2h1bmspCisgICAgLCBtX29mZnNldChtX2NodW5rLT5vZmZzZXQo
b2JqZWN0KSkKK3sKKyAgICBCQVNTRVJUKGNodW5rID09IFNtYWxsQ2h1bms6OmdldChvYmplY3Qp
KTsKK30KKworaW5saW5lIFNtYWxsTGluZSogT2JqZWN0OjpsaW5lKCkKK3sKKyAgICByZXR1cm4g
bV9jaHVuay0+bGluZShtX29mZnNldCk7Cit9CisKK2lubGluZSBTbWFsbFBhZ2UqIE9iamVjdDo6
cGFnZSgpCit7CisgICAgcmV0dXJuIG1fY2h1bmstPnBhZ2UobV9vZmZzZXQpOworfQorCiB9OyAv
LyBuYW1lc3BhY2UgYm1hbGxvYwogCiAjZW5kaWYgLy8gQ2h1bmsKSW5kZXg6IFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvU21hbGxMaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9TbWFsbExpbmUuaAkocmV2aXNpb24gMTk4NTcxKQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9TbWFsbExpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsNyBAQCBuYW1lc3Bh
Y2UgYm1hbGxvYyB7CiAKIGNsYXNzIFNtYWxsTGluZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFNt
YWxsTGluZSogZ2V0KHZvaWQqKTsKLQotICAgIHZvaWQgcmVmKHN0ZDo6bG9ja19ndWFyZDxTdGF0
aWNNdXRleD4mLCB1bnNpZ25lZCBjaGFyKTsKKyAgICB2b2lkIHJlZihzdGQ6OmxvY2tfZ3VhcmQ8
U3RhdGljTXV0ZXg+JiwgdW5zaWduZWQgY2hhciA9IDEpOwogICAgIGJvb2wgZGVyZWYoc3RkOjps
b2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOwogICAgIHVuc2lnbmVkIHJlZkNvdW50KHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNNdXRleD4mKSB7IHJldHVybiBtX3JlZkNvdW50OyB9CiAgICAgCkluZGV4
OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsUGFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxQYWdlLmgJKHJldmlzaW9uIDE5ODU3MSkKKysrIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2
LDYgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiBjbGFzcyBTbWFsbFBhZ2UgOiBwdWJsaWMgTGlz
dE5vZGU8U21hbGxQYWdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFNtYWxsUGFnZSogZ2V0KFNt
YWxsTGluZSopOwotCiAgICAgU21hbGxQYWdlKCkKICAgICAgICAgOiBtX2hhc0ZyZWVMaW5lcyh0
cnVlKQogICAgIHsK
</data>
<flag name="review"
          id="299206"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>