<?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>96854</bug_id>
          
          <creation_ts>2012-09-14 20:20:31 -0700</creation_ts>
          <short_desc>All of the things in SparseArrayValueMap should be out-of-line</short_desc>
          <delta_ts>2012-09-14 20:28:57 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>721345</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-14 20:20:31 -0700</bug_when>
    <thetext>C++ compilers will rejoice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721346</commentid>
    <comment_count>1</comment_count>
      <attachid>164270</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-14 20:22:13 -0700</bug_when>
    <thetext>Created attachment 164270
tbhe patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721348</commentid>
    <comment_count>2</comment_count>
      <attachid>164270</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-09-14 20:25:38 -0700</bug_when>
    <thetext>Comment on attachment 164270
tbhe patch

r=me since Phil told me this wasn&apos;t a perf regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721350</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-14 20:28:57 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/128680</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164270</attachid>
            <date>2012-09-14 20:22:13 -0700</date>
            <delta_ts>2012-09-14 20:25:38 -0700</delta_ts>
            <desc>tbhe patch</desc>
            <filename>outofline_patch_1.diff</filename>
            <type>text/plain</type>
            <size>22162</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4Njc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDEyLTA5LTE0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWxsIG9mIHRoZSB0aGluZ3MgaW4gU3BhcnNlQXJyYXlWYWx1ZU1hcCBzaG91bGQgYmUgb3V0LW9m
LWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2
ODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhv
c2UgaW5saW5lIG1ldGhvZHMgd2VyZSBidXlpbmcgdXMgbm90aGluZy4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5j
cHA6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNw
cDoKKyAgICAgICAgKiBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwOgorICAgICAgICAo
SlNDOjpTcGFyc2VBcnJheVZhbHVlTWFwOjpTcGFyc2VBcnJheVZhbHVlTWFwKToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5VmFsdWVNYXA6On5TcGFyc2VBcnJheVZh
bHVlTWFwKToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheVZhbHVlTWFwOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpTcGFyc2VBcnJheVZhbHVlTWFwOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6U3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3BhcnNl
QXJyYXlWYWx1ZU1hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6
cHV0RW50cnkpOgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXREaXJlY3Qp
OgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheUVudHJ5OjpnZXQpOgorICAgICAgICAoSlNDOjpT
cGFyc2VBcnJheUVudHJ5OjpnZXROb25TcGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6U3BhcnNl
QXJyYXlWYWx1ZU1hcDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9TcGFyc2VB
cnJheVZhbHVlTWFwSW5saW5lTWV0aG9kcy5oOiBSZW1vdmVkLgorCiAyMDEyLTA5LTE0ICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSlNDIHNob3VsZCB0aHJvdyBh
IG1vcmUgZGVzY3JpcHRpdmUgZXhjZXB0aW9uIHdoZW4gYmxvY2tpbmcgJ2V2YWwnIHZpYSBDU1Au
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNp
b24gMTI4Njc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHdvcmtpbmcgY29weSkKQEAgLTY0Nyw3ICs2NDcsNiBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmggXAotCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXBJbmxpbmVNZXRob2RzLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTI4Njc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTUxOCwxMCArNTE4LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxTcGFyc2VBcnJheVZh
bHVlTWFwSW5saW5lTWV0aG9kcy5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEFycmF5U3RvcmFnZS5oIgogCQkJCT4KIAkJCTwv
RmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjg2Nzkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw2IEBACiAJCTBGQjdGMzlD
MTVFRDhFNDYwMEYxNjdCMiAvKiBQcm9wZXJ0eVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjdGMzkwMTVFRDhFMzgwMEYxNjdCMiAvKiBQ
cm9wZXJ0eVN0b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRkI3RjM5RDE1RUQ4RTQ2MDBGMTY3QjIgLyogUmVqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI3RjM5MTE1RUQ4RTM4MDBG
MTY3QjIgLyogUmVqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEZCN0YzOUUxNUVEOEU0NjAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVN
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjdG
MzkyMTVFRDhFMzgwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZCN0YzOUYxNUVEOEU0NjAw
RjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXBJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI3RjM5MzE1RUQ4RTM4MDBGMTY3
QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcElubGluZU1ldGhvZHMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkJDMEFFNzE0OTZDN0M0MDBENEZC
REQgLyogREZHRXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZCQzBBRTQxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxl
LmNwcCAqLzsgfTsKIAkJMEZCQzBBRTgxNDk2QzdDNzAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJDMEFF
NTE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkJEN0U2OTE0NDc5OTk2MDA0ODEzMTUg
LyogQ29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZCRDdFNjcxNDQ3OTk4RjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTcxLDcgKzk3MCw2IEBA
CiAJCTBGQjdGMzkwMTVFRDhFMzgwMEYxNjdCMiAvKiBQcm9wZXJ0eVN0b3JhZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlTdG9yYWdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGQjdGMzkxMTVFRDhFMzgwMEYxNjdCMiAvKiBSZWplY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGQjdGMzkyMTVFRDhFMzgwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZh
bHVlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYXJzZUFycmF5VmFs
dWVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZCN0YzOTMxNUVEOEUzODAw
RjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXBJbmxpbmVNZXRob2RzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYXJzZUFycmF5VmFsdWVNYXBJbmxpbmVNZXRob2RzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkMwQUU0MTQ5NkM3QzEwMEQ0RkJERCAv
KiBERkdFeGl0UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBERkdFeGl0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkMw
QUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBERkdFeGl0UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkJEN0U2NzE0NDc5OThGMDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMDU3LDcgKzIwNTUsNiBAQAogCQkJCTBGQjdGMzkwMTVFRDhFMzgwMEYx
NjdCMiAvKiBQcm9wZXJ0eVN0b3JhZ2UuaCAqLywKIAkJCQkwRkI3RjM5MTE1RUQ4RTM4MDBGMTY3
QjIgLyogUmVqZWN0LmggKi8sCiAJCQkJMEZCN0YzOTIxNUVEOEUzODAwRjE2N0IyIC8qIFNwYXJz
ZUFycmF5VmFsdWVNYXAuaCAqLywKLQkJCQkwRkI3RjM5MzE1RUQ4RTM4MDBGMTY3QjIgLyogU3Bh
cnNlQXJyYXlWYWx1ZU1hcElubGluZU1ldGhvZHMuaCAqLywKIAkJCQlDMkQ1OEMzMzE1OTEyRkVF
MDAyMUE4NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAz
RUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlB
NjREIC8qIEFyZ0xpc3QuaCAqLywKQEAgLTI5NTIsNyArMjk0OSw2IEBACiAJCQkJMEZCN0YzOUMx
NUVEOEU0NjAwRjE2N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCN0YzOUQxNUVEOEU0NjAwRjE2N0IyIC8qIFJlamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCN0YzOUUxNUVEOEU0NjAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTBGQjdGMzlGMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVl
TWFwSW5saW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAw
MzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTI4Njc5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGluZU1ldGhvZHMuaCIK
ICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIlJlamVjdC5oIgotI2lu
Y2x1ZGUgIlNwYXJzZUFycmF5VmFsdWVNYXBJbmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSA8d3Rm
L0FWTFRyZWUuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmNwcAkocmV2aXNpb24gMTI4Njc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQAog
I2luY2x1ZGUgIlBhcnNlckFyZW5hLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNs
dWRlICJSZWdFeHBPYmplY3QuaCIKLSNpbmNsdWRlICJTcGFyc2VBcnJheVZhbHVlTWFwSW5saW5l
TWV0aG9kcy5oIgogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAi
U3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEyODY3OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAj
aW5jbHVkZSAiUmVqZWN0LmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVNZXRob2RzLmgi
Ci0jaW5jbHVkZSAiU3BhcnNlQXJyYXlWYWx1ZU1hcElubGluZU1ldGhvZHMuaCIKICNpbmNsdWRl
IDxtYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwCShy
ZXZpc2lvbiAxMjg2NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBN
YXRjaGVzQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVk
ZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCiAKICNpbmNsdWRlICJCdXR0ZXJmbHlJbmxpbmVNZXRo
b2RzLmgiCi0jaW5jbHVkZSAiU3BhcnNlQXJyYXlWYWx1ZU1hcElubGluZU1ldGhvZHMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nw
YXJzZUFycmF5VmFsdWVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCShyZXZpc2lvbiAxMjg2NzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDE4MSBAQAogI2luY2x1ZGUgIlNwYXJzZUFycmF5VmFs
dWVNYXAuaCIKIAogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgotI2luY2x1ZGUgIlNwYXJzZUFycmF5
VmFsdWVNYXBJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5j
bHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJS
ZWplY3QuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFNwYXJzZUFycmF5VmFsdWVN
YXA6OnNfaW5mbyA9IHsgIlNwYXJzZUFycmF5VmFsdWVNYXAiLCAwLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFNwYXJzZUFycmF5VmFsdWVNYXApIH07CiAKK1NwYXJzZUFycmF5VmFsdWVNYXA6
OlNwYXJzZUFycmF5VmFsdWVNYXAoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgIDogQmFz
ZShnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmUuZ2V0
KCkpCisgICAgLCBtX2ZsYWdzKE5vcm1hbCkKKyAgICAsIG1fcmVwb3J0ZWRDYXBhY2l0eSgwKQor
eworfQorCitTcGFyc2VBcnJheVZhbHVlTWFwOjp+U3BhcnNlQXJyYXlWYWx1ZU1hcCgpCit7Cit9
CisKK3ZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwor
fQorCitTcGFyc2VBcnJheVZhbHVlTWFwKiBTcGFyc2VBcnJheVZhbHVlTWFwOjpjcmVhdGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIFNwYXJzZUFycmF5VmFsdWVNYXAqIHJlc3Vs
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNwYXJzZUFycmF5VmFsdWVNYXA+KGdsb2Jh
bERhdGEuaGVhcCkpIFNwYXJzZUFycmF5VmFsdWVNYXAoZ2xvYmFsRGF0YSk7CisgICAgcmVzdWx0
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2
b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0
YXRpY19jYXN0PFNwYXJzZUFycmF5VmFsdWVNYXAqPihjZWxsKS0+U3BhcnNlQXJyYXlWYWx1ZU1h
cDo6flNwYXJzZUFycmF5VmFsdWVNYXAoKTsKK30KKworU3RydWN0dXJlKiBTcGFyc2VBcnJheVZh
bHVlTWFwOjpjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKK30KKworU3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVzdWx0IFNwYXJzZUFycmF5VmFsdWVNYXA6OmFkZChKU09i
amVjdCogYXJyYXksIHVuc2lnbmVkIGkpCit7CisgICAgU3BhcnNlQXJyYXlFbnRyeSBlbnRyeTsK
KyAgICBlbnRyeS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzVW5kZWZpbmVkKCkpOworCisgICAg
QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChpLCBlbnRyeSk7CisgICAgc2l6ZV90IGNhcGFj
aXR5ID0gbV9tYXAuY2FwYWNpdHkoKTsKKyAgICBpZiAoY2FwYWNpdHkgIT0gbV9yZXBvcnRlZENh
cGFjaXR5KSB7CisgICAgICAgIEhlYXA6OmhlYXAoYXJyYXkpLT5yZXBvcnRFeHRyYU1lbW9yeUNv
c3QoKGNhcGFjaXR5IC0gbV9yZXBvcnRlZENhcGFjaXR5KSAqIChzaXplb2YodW5zaWduZWQpICsg
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpKTsKKyAgICAgICAgbV9yZXBvcnRlZENhcGFj
aXR5ID0gY2FwYWNpdHk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgU3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJy
YXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAg
QWRkUmVzdWx0IHJlc3VsdCA9IGFkZChhcnJheSwgaSk7CisgICAgU3BhcnNlQXJyYXlFbnRyeSYg
ZW50cnkgPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKKworICAgIC8vIFRvIHNhdmUgYSBzZXBh
cmF0ZSBmaW5kICYgYWRkLCB3ZSBmaXJzdCBhbHdheXMgYWRkIHRvIHRoZSBzcGFyc2UgbWFwLgor
ICAgIC8vIEluIHRoZSB1bmNvbW1vbiBjYXNlIHRoYXQgdGhpcyBpcyBhIG5ldyBwcm9wZXJ0eSwg
YW5kIHRoZSBhcnJheSBpcyBub3QKKyAgICAvLyBleHRlbnNpYmxlLCB0aGlzIGlzIG5vdCB0aGUg
cmlnaHQgdGhpbmcgdG8gaGF2ZSBkb25lIC0gc28gcmVtb3ZlIGFnYWluLgorICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7CisgICAgICAgIHJlbW92
ZShyZXN1bHQuaXRlcmF0b3IpOworICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCEoZW50cnkuYXR0cmlidXRl
cyAmIEFjY2Vzc29yKSkgeworICAgICAgICBpZiAoZW50cnkuYXR0cmlidXRlcyAmIFJlYWRPbmx5
KSB7CisgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCisgICAgICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJ5LnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEpTVmFsdWUgYWNjZXNzb3IgPSBlbnRyeS5TcGFyc2VBcnJheUVudHJ5OjpCYXNlOjpnZXQoKTsK
KyAgICBBU1NFUlQoYWNjZXNzb3IuaXNHZXR0ZXJTZXR0ZXIoKSk7CisgICAgSlNPYmplY3QqIHNl
dHRlciA9IGFzR2V0dGVyU2V0dGVyKGFjY2Vzc29yKS0+c2V0dGVyKCk7CisgICAgCisgICAgaWYg
KCFzZXR0ZXIpIHsKKyAgICAgICAgaWYgKHNob3VsZFRocm93KQorICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gc2V0dGVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShzZXR0ZXIs
IGNhbGxEYXRhKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGFyZ3MuYXBw
ZW5kKHZhbHVlKTsKKyAgICBjYWxsKGV4ZWMsIHNldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBh
cnJheSwgYXJncyk7Cit9CisKK2Jvb2wgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUgbW9kZSkKK3sKKyAgICBB
ZGRSZXN1bHQgcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKKyAgICBTcGFyc2VBcnJheUVudHJ5JiBl
bnRyeSA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOworCisgICAgLy8gVG8gc2F2ZSBhIHNlcGFy
YXRlIGZpbmQgJiBhZGQsIHdlIGZpcnN0IGFsd2F5cyBhZGQgdG8gdGhlIHNwYXJzZSBtYXAuCisg
ICAgLy8gSW4gdGhlIHVuY29tbW9uIGNhc2UgdGhhdCB0aGlzIGlzIGEgbmV3IHByb3BlcnR5LCBh
bmQgdGhlIGFycmF5IGlzIG5vdAorICAgIC8vIGV4dGVuc2libGUsIHRoaXMgaXMgbm90IHRoZSBy
aWdodCB0aGluZyB0byBoYXZlIGRvbmUgLSBzbyByZW1vdmUgYWdhaW4uCisgICAgaWYgKG1vZGUg
IT0gUHV0RGlyZWN0SW5kZXhMaWtlUHV0RGlyZWN0ICYmIHJlc3VsdC5pc05ld0VudHJ5ICYmICFh
cnJheS0+aXNFeHRlbnNpYmxlKCkpIHsKKyAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7
CisgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgbW9kZSA9PSBQdXREaXJlY3RJbmRleFNob3Vs
ZFRocm93LCAiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMg
bm90IGV4dGVuc2libGUuIik7CisgICAgfQorCisgICAgZW50cnkuYXR0cmlidXRlcyA9IGF0dHJp
YnV0ZXM7CisgICAgZW50cnkuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdmFsdWUpOwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNwYXJzZUFycmF5RW50cnk6OmdldChQcm9wZXJ0
eVNsb3QmIHNsb3QpIGNvbnN0Cit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEJhc2U6OmdldCgpOwor
ICAgIEFTU0VSVCh2YWx1ZSk7CisKKyAgICBpZiAoTElLRUxZKCF2YWx1ZS5pc0dldHRlclNldHRl
cigpKSkgeworICAgICAgICBzbG90LnNldFZhbHVlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEpTT2JqZWN0KiBnZXR0ZXIgPSBhc0dldHRlclNldHRlcih2YWx1ZSktPmdl
dHRlcigpOworICAgIGlmICghZ2V0dGVyKSB7CisgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzbG90LnNldEdldHRlclNsb3QoZ2V0dGVy
KTsKK30KKwordm9pZCBTcGFyc2VBcnJheUVudHJ5OjpnZXQoUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKSBjb25zdAoreworICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihCYXNlOjpn
ZXQoKSwgYXR0cmlidXRlcyk7Cit9CisKK0pTVmFsdWUgU3BhcnNlQXJyYXlFbnRyeTo6Z2V0KEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5KSBjb25zdAoreworICAgIEpTVmFsdWUgcmVz
dWx0ID0gQmFzZTo6Z2V0KCk7CisgICAgQVNTRVJUKHJlc3VsdCk7CisKKyAgICBpZiAoTElLRUxZ
KCFyZXN1bHQuaXNHZXR0ZXJTZXR0ZXIoKSkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAg
ICBKU09iamVjdCogZ2V0dGVyID0gYXNHZXR0ZXJTZXR0ZXIocmVzdWx0KS0+Z2V0dGVyKCk7Cisg
ICAgaWYgKCFnZXR0ZXIpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXR0ZXItPm1ldGhvZFRh
YmxlKCktPmdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOworICAgIHJldHVybiBjYWxsKGV4
ZWMsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBhcnJheSwgZXhlYy0+ZW1wdHlMaXN0KCkp
OworfQorCitKU1ZhbHVlIFNwYXJzZUFycmF5RW50cnk6OmdldE5vblNwYXJzZU1vZGUoKSBjb25z
dAoreworICAgIEFTU0VSVCghYXR0cmlidXRlcyk7CisgICAgcmV0dXJuIEJhc2U6OmdldCgpOwor
fQorCit2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiB0aGlz
T2JqZWN0LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIAorICAgIFNwYXJzZUFycmF5VmFsdWVNYXAqIHRo
aXNNYXAgPSBqc0Nhc3Q8U3BhcnNlQXJyYXlWYWx1ZU1hcCo+KHRoaXNPYmplY3QpOworICAgIGl0
ZXJhdG9yIGVuZCA9IHRoaXNNYXAtPm1fbWFwLmVuZCgpOworICAgIGZvciAoaXRlcmF0b3IgaXQg
PSB0aGlzTWFwLT5tX21hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZpdC0+c2Vjb25kKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXBJbmxpbmVN
ZXRob2RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Bh
cnNlQXJyYXlWYWx1ZU1hcElubGluZU1ldGhvZHMuaAkocmV2aXNpb24gMTI4Njc5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcElubGluZU1ldGhv
ZHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwyMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFNwYXJzZUFycmF5VmFs
dWVNYXBJbmxpbmVNZXRob2RzX2gKLSNkZWZpbmUgU3BhcnNlQXJyYXlWYWx1ZU1hcElubGluZU1l
dGhvZHNfaAotCi0jaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCi0jaW5jbHVkZSAiUmVqZWN0Lmgi
Ci0jaW5jbHVkZSAiU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQot
aW5saW5lIFNwYXJzZUFycmF5VmFsdWVNYXA6OlNwYXJzZUFycmF5VmFsdWVNYXAoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQotICAgIDogQmFzZShnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnNwYXJz
ZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX2ZsYWdzKE5vcm1hbCkKLSAg
ICAsIG1fcmVwb3J0ZWRDYXBhY2l0eSgwKQotewotfQotCi1pbmxpbmUgU3BhcnNlQXJyYXlWYWx1
ZU1hcDo6flNwYXJzZUFycmF5VmFsdWVNYXAoKQotewotfQotCi1pbmxpbmUgdm9pZCBTcGFyc2VB
cnJheVZhbHVlTWFwOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCi17
Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci19Ci0KLWlubGluZSBTcGFy
c2VBcnJheVZhbHVlTWFwKiBTcGFyc2VBcnJheVZhbHVlTWFwOjpjcmVhdGUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQotewotICAgIFNwYXJzZUFycmF5VmFsdWVNYXAqIHJlc3VsdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFNwYXJzZUFycmF5VmFsdWVNYXA+KGdsb2JhbERhdGEuaGVh
cCkpIFNwYXJzZUFycmF5VmFsdWVNYXAoZ2xvYmFsRGF0YSk7Ci0gICAgcmVzdWx0LT5maW5pc2hD
cmVhdGlvbihnbG9iYWxEYXRhKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1pbmxpbmUgdm9p
ZCBTcGFyc2VBcnJheVZhbHVlTWFwOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKLXsKLSAgICBzdGF0
aWNfY2FzdDxTcGFyc2VBcnJheVZhbHVlTWFwKj4oY2VsbCktPlNwYXJzZUFycmF5VmFsdWVNYXA6
On5TcGFyc2VBcnJheVZhbHVlTWFwKCk7Ci19Ci0KLWlubGluZSBTdHJ1Y3R1cmUqIFNwYXJzZUFy
cmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotewotICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwotfQot
Ci1pbmxpbmUgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVzdWx0IFNwYXJzZUFycmF5VmFsdWVN
YXA6OmFkZChKU09iamVjdCogYXJyYXksIHVuc2lnbmVkIGkpCi17Ci0gICAgU3BhcnNlQXJyYXlF
bnRyeSBlbnRyeTsKLSAgICBlbnRyeS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzVW5kZWZpbmVk
KCkpOwotCi0gICAgQWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChpLCBlbnRyeSk7Ci0gICAg
c2l6ZV90IGNhcGFjaXR5ID0gbV9tYXAuY2FwYWNpdHkoKTsKLSAgICBpZiAoY2FwYWNpdHkgIT0g
bV9yZXBvcnRlZENhcGFjaXR5KSB7Ci0gICAgICAgIEhlYXA6OmhlYXAoYXJyYXkpLT5yZXBvcnRF
eHRyYU1lbW9yeUNvc3QoKGNhcGFjaXR5IC0gbV9yZXBvcnRlZENhcGFjaXR5KSAqIChzaXplb2Yo
dW5zaWduZWQpICsgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpKTsKLSAgICAgICAgbV9y
ZXBvcnRlZENhcGFjaXR5ID0gY2FwYWNpdHk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLWlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQotewotICAgIEFkZFJlc3VsdCByZXN1bHQgPSBhZGQoYXJyYXksIGkpOwotICAg
IFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7Ci0KLSAg
ICAvLyBUbyBzYXZlIGEgc2VwYXJhdGUgZmluZCAmIGFkZCwgd2UgZmlyc3QgYWx3YXlzIGFkZCB0
byB0aGUgc3BhcnNlIG1hcC4KLSAgICAvLyBJbiB0aGUgdW5jb21tb24gY2FzZSB0aGF0IHRoaXMg
aXMgYSBuZXcgcHJvcGVydHksIGFuZCB0aGUgYXJyYXkgaXMgbm90Ci0gICAgLy8gZXh0ZW5zaWJs
ZSwgdGhpcyBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGhhdmUgZG9uZSAtIHNvIHJlbW92ZSBh
Z2Fpbi4KLSAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkgJiYgIWFycmF5LT5pc0V4dGVuc2libGUo
KSkgewotICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKLSAgICAgICAgaWYgKHNob3Vs
ZFRocm93KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICghKGVudHJ5LmF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpIHsKLSAgICAgICAgaWYgKGVudHJ5LmF0
dHJpYnV0ZXMgJiBSZWFkT25seSkgewotICAgICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBlbnRyeS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBKU1ZhbHVlIGFjY2Vzc29yID0gZW50cnkuU3BhcnNlQXJyYXlF
bnRyeTo6QmFzZTo6Z2V0KCk7Ci0gICAgQVNTRVJUKGFjY2Vzc29yLmlzR2V0dGVyU2V0dGVyKCkp
OwotICAgIEpTT2JqZWN0KiBzZXR0ZXIgPSBhc0dldHRlclNldHRlcihhY2Nlc3NvciktPnNldHRl
cigpOwotICAgIAotICAgIGlmICghc2V0dGVyKSB7Ci0gICAgICAgIGlmIChzaG91bGRUaHJvdykK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlci0+bWV0aG9kVGFibGUoKS0+
Z2V0Q2FsbERhdGEoc2V0dGVyLCBjYWxsRGF0YSk7Ci0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJnczsKLSAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7Ci0gICAgY2FsbChleGVjLCBzZXR0ZXIsIGNh
bGxUeXBlLCBjYWxsRGF0YSwgYXJyYXksIGFyZ3MpOwotfQotCi1pbmxpbmUgYm9vbCBTcGFyc2VB
cnJheVZhbHVlTWFwOjpwdXREaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJyYXks
IHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVj
dEluZGV4TW9kZSBtb2RlKQotewotICAgIEFkZFJlc3VsdCByZXN1bHQgPSBhZGQoYXJyYXksIGkp
OwotICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7
Ci0KLSAgICAvLyBUbyBzYXZlIGEgc2VwYXJhdGUgZmluZCAmIGFkZCwgd2UgZmlyc3QgYWx3YXlz
IGFkZCB0byB0aGUgc3BhcnNlIG1hcC4KLSAgICAvLyBJbiB0aGUgdW5jb21tb24gY2FzZSB0aGF0
IHRoaXMgaXMgYSBuZXcgcHJvcGVydHksIGFuZCB0aGUgYXJyYXkgaXMgbm90Ci0gICAgLy8gZXh0
ZW5zaWJsZSwgdGhpcyBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGhhdmUgZG9uZSAtIHNvIHJl
bW92ZSBhZ2Fpbi4KLSAgICBpZiAobW9kZSAhPSBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3Qg
JiYgcmVzdWx0LmlzTmV3RW50cnkgJiYgIWFycmF5LT5pc0V4dGVuc2libGUoKSkgewotICAgICAg
ICByZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKLSAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBt
b2RlID09IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3csICJBdHRlbXB0aW5nIHRvIGRlZmluZSBw
cm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKTsKLSAgICB9Ci0KLSAg
ICBlbnRyeS5hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKLSAgICBlbnRyeS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSB2
b2lkIFNwYXJzZUFycmF5RW50cnk6OmdldChQcm9wZXJ0eVNsb3QmIHNsb3QpIGNvbnN0Ci17Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEJhc2U6OmdldCgpOwotICAgIEFTU0VSVCh2YWx1ZSk7Ci0KLSAg
ICBpZiAoTElLRUxZKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKSkgewotICAgICAgICBzbG90LnNl
dFZhbHVlKHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEpTT2JqZWN0KiBn
ZXR0ZXIgPSBhc0dldHRlclNldHRlcih2YWx1ZSktPmdldHRlcigpOwotICAgIGlmICghZ2V0dGVy
KSB7Ci0gICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBzbG90LnNldEdldHRlclNsb3QoZ2V0dGVyKTsKLX0KLQotaW5saW5lIHZvaWQgU3Bh
cnNlQXJyYXlFbnRyeTo6Z2V0KFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QK
LXsKLSAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoQmFzZTo6Z2V0KCksIGF0dHJpYnV0ZXMp
OwotfQotCi1pbmxpbmUgSlNWYWx1ZSBTcGFyc2VBcnJheUVudHJ5OjpnZXQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYXJyYXkpIGNvbnN0Ci17Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBCYXNl
OjpnZXQoKTsKLSAgICBBU1NFUlQocmVzdWx0KTsKLQotICAgIGlmIChMSUtFTFkoIXJlc3VsdC5p
c0dldHRlclNldHRlcigpKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIEpTT2JqZWN0
KiBnZXR0ZXIgPSBhc0dldHRlclNldHRlcihyZXN1bHQpLT5nZXR0ZXIoKTsKLSAgICBpZiAoIWdl
dHRlcikKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+bWV0aG9kVGFibGUoKS0+Z2V0
Q2FsbERhdGEoZ2V0dGVyLCBjYWxsRGF0YSk7Ci0gICAgcmV0dXJuIGNhbGwoZXhlYywgZ2V0dGVy
LCBjYWxsVHlwZSwgY2FsbERhdGEsIGFycmF5LCBleGVjLT5lbXB0eUxpc3QoKSk7Ci19Ci0KLWlu
bGluZSBKU1ZhbHVlIFNwYXJzZUFycmF5RW50cnk6OmdldE5vblNwYXJzZU1vZGUoKSBjb25zdAot
ewotICAgIEFTU0VSVCghYXR0cmlidXRlcyk7Ci0gICAgcmV0dXJuIEJhc2U6OmdldCgpOwotfQot
Ci1pbmxpbmUgdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFwOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
dGhpc09iamVjdCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICAKLSAgICBTcGFyc2VBcnJheVZhbHVlTWFw
KiB0aGlzTWFwID0ganNDYXN0PFNwYXJzZUFycmF5VmFsdWVNYXAqPih0aGlzT2JqZWN0KTsKLSAg
ICBpdGVyYXRvciBlbmQgPSB0aGlzTWFwLT5tX21hcC5lbmQoKTsKLSAgICBmb3IgKGl0ZXJhdG9y
IGl0ID0gdGhpc01hcC0+bV9tYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmaXQtPnNlY29uZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0j
ZW5kaWYgLy8gU3BhcnNlQXJyYXlWYWx1ZU1hcElubGluZU1ldGhvZHNfaAotCg==
</data>
<flag name="review"
          id="175988"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>