<?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>20972</bug_id>
          
          <creation_ts>2008-09-21 10:40:44 -0700</creation_ts>
          <short_desc>speed up Arguments further by eliminating the IndexToNameMap</short_desc>
          <delta_ts>2008-09-21 20:46:19 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>20813</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>zwarich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>91993</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-21 10:40:44 -0700</bug_when>
    <thetext>The IndexToNameMap isn&apos;t needed at all. We can do much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91995</commentid>
    <comment_count>1</comment_count>
      <attachid>23628</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-21 10:50:53 -0700</bug_when>
    <thetext>Created attachment 23628
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92019</commentid>
    <comment_count>2</comment_count>
      <attachid>23628</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-21 14:00:33 -0700</bug_when>
    <thetext>Comment on attachment 23628
patch

The debugger.h seems unrelated.  Other than that, looks great.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92025</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-21 14:36:04 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/36743</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23628</attachid>
            <date>2008-09-21 10:50:53 -0700</date>
            <delta_ts>2008-09-21 14:00:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>ArgumentsPatch.txt</filename>
            <type>text/plain</type>
            <size>20165</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2NzM4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMDgtMDktMjEgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwOTcyCisgICAgICAgICAgc3BlZWQgdXAgQXJndW1lbnRzIGZ1cnRoZXIgYnkgZWxpbWluYXRp
bmcgdGhlIEluZGV4VG9OYW1lTWFwCisKKyAgICAgICAgTm8gY2hhbmdlIG9uIFN1blNwaWRlci4g
MS4yOXggYXMgZmFzdCBvbiBhbHRlcm5hdGUgcmF5dHJhY2UgdGVzdC4KKworICAgICAgICAqIGtq
cy9Bcmd1bWVudHMuY3BwOiBNb3ZlZCBBcmd1bWVudHNEYXRhIGluIGhlcmUuIEVsaW1pbmF0ZWQg
dGhlCisgICAgICAgIGluZGV4VG9OYW1lTWFwIGFuZCBoYWREZWxldGVzIGRhdGEgbWVtYmVycy4g
Q2hhbmdlZCBleHRyYUFyZ3VtZW50cyBpbnRvCisgICAgICAgIGFuIE93bkFycmF5UHRyIGFuZCBh
ZGRlZCBkZWxldGVkQXJndW1lbnRzLCBhbm90aGVyIE93bkFycmF5UHRyLgorICAgICAgICBSZXBs
YWNlZCBudW1FeHRyYUFyZ3VtZW50cyB3aXRoIG51bVBhcmFtZXRlcnMsIHNpbmNlIHRoYXQncyB3
aGF0J3MKKyAgICAgICAgdXNlZCBtb3JlIGRpcmVjdGx5IGluIGhvdCBjb2RlIHBhdGhzLgorICAg
ICAgICAoSlNDOjpBcmd1bWVudHM6OkFyZ3VtZW50cyk6IFBhc3MgaW4gYXJndW1lbnQgY291bnQg
aW5zdGVhZCBvZiBBcmdMaXN0LgorICAgICAgICBJbml0aWFsaXplIEFyZ3VtZW50c0RhdGEgdGhl
IG5ldyB3YXkuCisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6bWFyayk6IFVwZGF0ZWQuCisgICAg
ICAgIChKU0M6OkFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KTogT3ZlcmxvYWQgZm9yIHRo
ZSBpbnRlZ2VyIGZvcm0gc28KKyAgICAgICAgd2UgZG9uJ3QgaGF2ZSB0byBjb252ZXJ0IGludGVn
ZXJzIHRvIGlkZW50aWZpZXJzIGp1c3QgdG8gZ2V0IGFuIGFyZ3VtZW50LgorICAgICAgICBJbnRl
Z3JhdGVkIHRoZSBkZWxldGVkIGNhc2Ugd2l0aCB0aGUgZmFzdCBjYXNlLgorICAgICAgICAoSlND
OjpBcmd1bWVudHM6OnB1dCk6IERpdHRvLgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmRlbGV0
ZVByb3BlcnR5KTogRGl0dG8uCisKKyAgICAgICAgKiBranMvQXJndW1lbnRzLmg6IE1pbmltaXpl
ZCBpbmNsdWRlcy4gTWFkZSBldmVyeXRoaW5nIHByaXZhdGUuIEFkZGVkCisgICAgICAgIG92ZXJs
b2FkcyBmb3IgdGhlIGludGVncmFsIHByb3BlcnR5IG5hbWUgY2FzZS4gRWxpbWluYXRlZCBtYXBw
ZWRJbmRleFNldHRlci4KKyAgICAgICAgTW92ZWQgQXJndW1lbnRzRGF0YSBpbnRvIHRoZSAuY3Bw
IGZpbGUuCisKKyAgICAgICAgKiBranMvSW5kZXhUb05hbWVNYXAuY3BwOiBFbXB0aWVkIG91dCBh
bmQgcHJlcGFyZWQgZm9yIGRlbGV0aW9uLgorICAgICAgICAqIGtqcy9JbmRleFRvTmFtZU1hcC5o
OiBEaXR0by4KKworICAgICAgICAqIGtqcy9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlND
OjpKU0FjdGl2YXRpb246OmNyZWF0ZUFyZ3VtZW50c09iamVjdCk6IEVsbWluYXRlZCBBcmdMaXN0
LgorCisgICAgICAgICoga2pzL2RlYnVnZ2VyLmg6IEVsaW1pbmF0ZWQgdW5uZWVkZWQgaW5jbHVk
ZXMgYW5kIGRlY2xhcmF0aW9ucy4KKwogMjAwOC0wOS0yMSAgTWFjaWVqIFN0YWNob3dpYWsgIDxt
anNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlci4KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9Bcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9Bcmd1bWVudHMuY3BwCShyZXZpc2lvbiAzNjczOCkKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9Bcmd1bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw3IEBACiAjaW5jbHVk
ZSAiQXJndW1lbnRzLmgiCiAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJPYmpl
Y3RQcm90b3R5cGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM2LDM1ICszNCw1MSBAQCBB
U1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEFyZ3VtZW50cyk7CiAKIGNvbnN0IENsYXNzSW5mbyBB
cmd1bWVudHM6OmluZm8gPSB7ICJBcmd1bWVudHMiLCAwLCAwLCAwIH07CiAKK3N0cnVjdCBBcmd1
bWVudHNEYXRhIHsKKyAgICBBcmd1bWVudHNEYXRhKEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiwg
dW5zaWduZWQgbnVtUGFyYW1ldGVycywgdW5zaWduZWQgZmlyc3RBcmd1bWVudEluZGV4LCB1bnNp
Z25lZCBudW1Bcmd1bWVudHMpCisgICAgICAgIDogYWN0aXZhdGlvbihhY3RpdmF0aW9uKQorICAg
ICAgICAsIG51bVBhcmFtZXRlcnMobnVtUGFyYW1ldGVycykKKyAgICAgICAgLCBmaXJzdEFyZ3Vt
ZW50SW5kZXgoZmlyc3RBcmd1bWVudEluZGV4KQorICAgICAgICAsIG51bUFyZ3VtZW50cyhudW1B
cmd1bWVudHMpCisgICAgeworICAgIH0KKworICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbjsK
KyAgICB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzOworICAgIHVuc2lnbmVkIGZpcnN0QXJndW1lbnRJ
bmRleDsKKyAgICB1bnNpZ25lZCBudW1Bcmd1bWVudHM7CisgICAgT3duQXJyYXlQdHI8SlNWYWx1
ZSo+IGV4dHJhQXJndW1lbnRzOworICAgIE93bkFycmF5UHRyPGJvb2w+IGRlbGV0ZWRBcmd1bWVu
dHM7Cit9OworCiAvLyBFQ01BIDEwLjEuOAotQXJndW1lbnRzOjpBcmd1bWVudHMoRXhlY1N0YXRl
KiBleGVjLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgY29uc3QgQXJnTGlzdCYgYXJncywgSlNBY3Rp
dmF0aW9uKiBhY3RpdmF0aW9uLCBpbnQgZmlyc3RBcmd1bWVudEluZGV4LCBSZWdpc3RlciogYXJn
dikKK0FyZ3VtZW50czo6QXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiogZnVu
Y3Rpb24sIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiwgaW50IGZpcnN0QXJndW1lbnRJbmRleCwg
UmVnaXN0ZXIqIGFyZ3YsIGludCBhcmdjKQogICAgIDogSlNPYmplY3QoZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUoKSkKLSAgICAsIGQobmV3IEFyZ3VtZW50
c0RhdGEoYWN0aXZhdGlvbiwgZnVuY3Rpb24sIGFyZ3MsIGZpcnN0QXJndW1lbnRJbmRleCkpCisg
ICAgLCBkKG5ldyBBcmd1bWVudHNEYXRhKGFjdGl2YXRpb24sIGZ1bmN0aW9uLT5udW1QYXJhbWV0
ZXJzKCksIGZpcnN0QXJndW1lbnRJbmRleCwgYXJnYykpCiB7CiAgICAgQVNTRVJUKGFjdGl2YXRp
b24pOwogCiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUsIGZ1bmN0
aW9uLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgsIGpzTnVtYmVyKGV4ZWMsIGFyZ3Muc2l6ZSgpKSwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihleGVjLCBhcmdjKSwgRG9u
dEVudW0pOwogICAKLSAgICBpZiAoZC0+bnVtRXh0cmFBcmd1bWVudHMgPiAwKSB7Ci0gICAgICAg
IGQtPmV4dHJhQXJndW1lbnRzID0gc3RhdGljX2Nhc3Q8SlNWYWx1ZSoqPihmYXN0TWFsbG9jKHNp
emVvZihKU1ZhbHVlKikgKiBkLT5udW1FeHRyYUFyZ3VtZW50cykpOwotICAgICAgICBpbnQgZmly
c3RFeHRyYUFyZ3VtZW50SW5kZXggPSBhcmdzLnNpemUoKSAtIGQtPm51bUV4dHJhQXJndW1lbnRz
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZC0+bnVtRXh0cmFBcmd1bWVudHM7
ICsraSkKLSAgICAgICAgICAgIGQtPmV4dHJhQXJndW1lbnRzW2ldID0gYXJndltmaXJzdEV4dHJh
QXJndW1lbnRJbmRleCArIGldLmdldEpTVmFsdWUoKTsKKyAgICBpZiAoZC0+bnVtQXJndW1lbnRz
ID4gZC0+bnVtUGFyYW1ldGVycykgeworICAgICAgICB1bnNpZ25lZCBudW1FeHRyYUFyZ3VtZW50
cyA9IGQtPm51bUFyZ3VtZW50cyAtIGQtPm51bVBhcmFtZXRlcnM7CisgICAgICAgIGQtPmV4dHJh
QXJndW1lbnRzLnNldChuZXcgSlNWYWx1ZSpbbnVtRXh0cmFBcmd1bWVudHNdKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUV4dHJhQXJndW1lbnRzOyArK2kpCisgICAgICAg
ICAgICBkLT5leHRyYUFyZ3VtZW50c1tpXSA9IGFyZ3ZbZC0+bnVtUGFyYW1ldGVycyArIGldLmdl
dEpTVmFsdWUoKTsKICAgICB9CiB9CiAKIEFyZ3VtZW50czo6fkFyZ3VtZW50cygpCiB7Ci0gICAg
aWYgKGQtPm51bUV4dHJhQXJndW1lbnRzID4gMCkKLSAgICAgICAgZmFzdEZyZWUoZC0+ZXh0cmFB
cmd1bWVudHMpOwogfQogCiB2b2lkIEFyZ3VtZW50czo6bWFyaygpIAogewogICAgIEpTT2JqZWN0
OjptYXJrKCk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZC0+bnVtRXh0cmFBcmd1
bWVudHM7ICsraSkgeworICAgIHVuc2lnbmVkIG51bUV4dHJhQXJndW1lbnRzID0gZC0+bnVtQXJn
dW1lbnRzIC0gZC0+bnVtUGFyYW1ldGVyczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtRXh0cmFBcmd1bWVudHM7ICsraSkgewogICAgICAgICBpZiAoIWQtPmV4dHJhQXJndW1lbnRz
W2ldLT5tYXJrZWQoKSkKICAgICAgICAgICAgIGQtPmV4dHJhQXJndW1lbnRzW2ldLT5tYXJrKCk7
CiAgICAgfQpAQCAtNzMsNzIgKzg3LDkxIEBAIHZvaWQgQXJndW1lbnRzOjptYXJrKCkgCiAgICAg
ICAgIGQtPmFjdGl2YXRpb24tPm1hcmsoKTsKIH0KIAotSlNWYWx1ZSogQXJndW1lbnRzOjptYXBw
ZWRJbmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBBcmd1bWVudHM6OmdldE93blBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKLSAgICAgIEFyZ3VtZW50cyogdGhpc09iaiA9IHN0YXRpY19jYXN0PEFyZ3VtZW50cyo+
KHNsb3Quc2xvdEJhc2UoKSk7Ci0gICAgICByZXR1cm4gdGhpc09iai0+ZC0+YWN0aXZhdGlvbi0+
Z2V0KGV4ZWMsIHRoaXNPYmotPmQtPmluZGV4VG9OYW1lTWFwW3Byb3BlcnR5TmFtZV0pOworICAg
IGlmIChpIDwgZC0+bnVtQXJndW1lbnRzICYmICghZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhZC0+
ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKKyAgICAgICAgaWYgKGkgPCBkLT5udW1QYXJhbWV0ZXJz
KQorICAgICAgICAgICAgZC0+YWN0aXZhdGlvbi0+dW5jaGVja2VkU3ltYm9sVGFibGVHZXQoZC0+
Zmlyc3RBcmd1bWVudEluZGV4ICsgaSwgc2xvdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHNsb3Quc2V0VmFsdWVTbG90KCZkLT5leHRyYUFyZ3VtZW50c1tpIC0gZC0+bnVtUGFyYW1ldGVy
c10pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmc6OmZyb20o
aSkpLCBzbG90KTsKIH0KIAogYm9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIGJvb2wgaXNBcnJheUluZGV4OwogICAgIHVuc2lnbmVkIGkgPSBwcm9w
ZXJ0eU5hbWUudG9BcnJheUluZGV4KCZpc0FycmF5SW5kZXgpOwotICAgIGlmIChpc0FycmF5SW5k
ZXggJiYgIWQtPmhhZERlbGV0ZXMgJiYgaSA8IGQtPmluZGV4VG9OYW1lTWFwLnNpemUoKSkgewot
ICAgICAgICBpZiAoaSA8IGQtPmluZGV4VG9OYW1lTWFwLnNpemUoKSAtIGQtPm51bUV4dHJhQXJn
dW1lbnRzKQorICAgIGlmIChpc0FycmF5SW5kZXggJiYgaSA8IGQtPm51bUFyZ3VtZW50cyAmJiAo
IWQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIWQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAg
ICAgIGlmIChpIDwgZC0+bnVtUGFyYW1ldGVycykKICAgICAgICAgICAgIGQtPmFjdGl2YXRpb24t
PnVuY2hlY2tlZFN5bWJvbFRhYmxlR2V0KGQtPmZpcnN0QXJndW1lbnRJbmRleCArIGksIHNsb3Qp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzbG90LnNldFZhbHVlU2xvdCgmZC0+ZXh0cmFB
cmd1bWVudHNbaSAtIChkLT5pbmRleFRvTmFtZU1hcC5zaXplKCkgLSBkLT5udW1FeHRyYUFyZ3Vt
ZW50cyldKTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KCZkLT5leHRyYUFyZ3VtZW50
c1tpIC0gZC0+bnVtUGFyYW1ldGVyc10pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICBpZiAoZC0+aW5kZXhUb05hbWVNYXAuaXNNYXBwZWQocHJvcGVydHlOYW1lKSkgewotICAg
ICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBtYXBwZWRJbmRleEdldHRlcik7Ci0gICAgICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK3ZvaWQgQXJndW1lbnRzOjpwdXQoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlKiB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIGlmIChpIDwgZC0+bnVtQXJndW1lbnRzICYmICghZC0+ZGVsZXRlZEFyZ3VtZW50
cyB8fCAhZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKKyAgICAgICAgaWYgKGkgPCBkLT5udW1Q
YXJhbWV0ZXJzKQorICAgICAgICAgICAgZC0+YWN0aXZhdGlvbi0+dW5jaGVja2VkU3ltYm9sVGFi
bGVQdXQoZC0+Zmlyc3RBcmd1bWVudEluZGV4ICsgaSwgdmFsdWUpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBkLT5leHRyYUFyZ3VtZW50c1tpIC0gZC0+bnVtUGFyYW1ldGVyc10gPSB2YWx1
ZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgSlNPYmplY3Q6OnB1
dChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmc6OmZyb20oaSkpLCB2YWx1ZSwgc2xvdCk7
CiB9CiAKIHZvaWQgQXJndW1lbnRzOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgYm9vbCBpc0FycmF5SW5kZXg7CiAgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFt
ZS50b0FycmF5SW5kZXgoJmlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCAmJiAh
ZC0+aGFkRGVsZXRlcyAmJiBpIDwgZC0+aW5kZXhUb05hbWVNYXAuc2l6ZSgpKSB7Ci0gICAgICAg
IGlmIChpIDwgZC0+aW5kZXhUb05hbWVNYXAuc2l6ZSgpIC0gZC0+bnVtRXh0cmFBcmd1bWVudHMp
CisgICAgaWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgZC0+bnVtQXJndW1lbnRzICYmICghZC0+ZGVs
ZXRlZEFyZ3VtZW50cyB8fCAhZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKKyAgICAgICAgaWYg
KGkgPCBkLT5udW1QYXJhbWV0ZXJzKQogICAgICAgICAgICAgZC0+YWN0aXZhdGlvbi0+dW5jaGVj
a2VkU3ltYm9sVGFibGVQdXQoZC0+Zmlyc3RBcmd1bWVudEluZGV4ICsgaSwgdmFsdWUpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBkLT5leHRyYUFyZ3VtZW50c1tpIC0gKGQtPmluZGV4VG9O
YW1lTWFwLnNpemUoKSAtIGQtPm51bUV4dHJhQXJndW1lbnRzKV0gPSB2YWx1ZTsKKyAgICAgICAg
ICAgIGQtPmV4dHJhQXJndW1lbnRzW2kgLSBkLT5udW1QYXJhbWV0ZXJzXSA9IHZhbHVlOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGQtPmluZGV4VG9OYW1lTWFwLmlzTWFwcGVk
KHByb3BlcnR5TmFtZSkpCi0gICAgICAgIGQtPmFjdGl2YXRpb24tPnB1dChleGVjLCBkLT5pbmRl
eFRvTmFtZU1hcFtwcm9wZXJ0eU5hbWVdLCB2YWx1ZSwgc2xvdCk7Ci0gICAgZWxzZQotICAgICAg
ICBKU09iamVjdDo6cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIEpT
T2JqZWN0OjpwdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wg
QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkgCitib29sIEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBpKSAKIHsKLSAgICBpZiAoIWQtPmhhZERlbGV0ZXMpIHsKLSAg
ICAgICAgZC0+aGFkRGVsZXRlcyA9IHRydWU7Ci0KLSAgICAgICAgaW50IG51bUV4cGVjdGVkQXJn
dW1lbnRzID0gZC0+aW5kZXhUb05hbWVNYXAuc2l6ZSgpIC0gZC0+bnVtRXh0cmFBcmd1bWVudHM7
Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtRXhwZWN0ZWRBcmd1bWVudHM7ICsraSkg
ewotICAgICAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbShleGVjLCBp
KTsKLSAgICAgICAgICAgIGlmICghZC0+aW5kZXhUb05hbWVNYXAuaXNNYXBwZWQobmFtZSkpCi0g
ICAgICAgICAgICAgICAgcHV0RGlyZWN0KG5hbWUsIGQtPmFjdGl2YXRpb24tPnVuY2hlY2tlZFN5
bWJvbFRhYmxlR2V0VmFsdWUoZC0+Zmlyc3RBcmd1bWVudEluZGV4ICsgaSksIERvbnRFbnVtKTsK
KyAgICBpZiAoaSA8IGQtPm51bUFyZ3VtZW50cykgeworICAgICAgICBpZiAoIWQtPmRlbGV0ZWRB
cmd1bWVudHMpIHsKKyAgICAgICAgICAgIGQtPmRlbGV0ZWRBcmd1bWVudHMuc2V0KG5ldyBib29s
W2QtPm51bUFyZ3VtZW50c10pOworICAgICAgICAgICAgbWVtc2V0KGQtPmRlbGV0ZWRBcmd1bWVu
dHMuZ2V0KCksIDAsIHNpemVvZihib29sKSAqIGQtPm51bUFyZ3VtZW50cyk7CiAgICAgICAgIH0K
LQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZC0+bnVtRXh0cmFBcmd1bWVudHM7
ICsraSkgewotICAgICAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbShl
eGVjLCBudW1FeHBlY3RlZEFyZ3VtZW50cyArIGkpOwotICAgICAgICAgICAgaWYgKCFkLT5pbmRl
eFRvTmFtZU1hcC5pc01hcHBlZChuYW1lKSkKLSAgICAgICAgICAgICAgICBwdXREaXJlY3QobmFt
ZSwgZC0+ZXh0cmFBcmd1bWVudHNbaV0sIERvbnRFbnVtKTsKKyAgICAgICAgaWYgKCFkLT5kZWxl
dGVkQXJndW1lbnRzW2ldKSB7CisgICAgICAgICAgICBkLT5kZWxldGVkQXJndW1lbnRzW2ldID0g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKGQtPmluZGV4VG9OYW1lTWFwLmlzTWFwcGVkKHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAg
ZC0+aW5kZXhUb05hbWVNYXAudW5NYXAoZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsIFVTdHJpbmc6OmZyb20oaSkpKTsKK30KKworYm9vbCBBcmd1bWVudHM6OmRl
bGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKSAKK3sKKyAgICBib29sIGlzQXJyYXlJbmRleDsKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVy
dHlOYW1lLnRvQXJyYXlJbmRleCgmaXNBcnJheUluZGV4KTsKKyAgICBpZiAoaSA8IGQtPm51bUFy
Z3VtZW50cykgeworICAgICAgICBpZiAoIWQtPmRlbGV0ZWRBcmd1bWVudHMpIHsKKyAgICAgICAg
ICAgIGQtPmRlbGV0ZWRBcmd1bWVudHMuc2V0KG5ldyBib29sW2QtPm51bUFyZ3VtZW50c10pOwor
ICAgICAgICAgICAgbWVtc2V0KGQtPmRlbGV0ZWRBcmd1bWVudHMuZ2V0KCksIDAsIHNpemVvZihi
b29sKSAqIGQtPm51bUFyZ3VtZW50cyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFkLT5kZWxl
dGVkQXJndW1lbnRzW2ldKSB7CisgICAgICAgICAgICBkLT5kZWxldGVkQXJndW1lbnRzW2ldID0g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogCiAgICAg
cmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpOwpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL0FyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9Bcmd1bWVudHMuaAkocmV2aXNpb24gMzY3MzgpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDU1ICsyNCwzNSBAQAogI2lm
bmRlZiBBcmd1bWVudHNfaAogI2RlZmluZSBBcmd1bWVudHNfaAogCi0jaW5jbHVkZSAiSW5kZXhU
b05hbWVNYXAuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CisgICAgY2xh
c3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBSZWdpc3RlcjsKIAorICAgIHN0cnVjdCBBcmd1bWVu
dHNEYXRhOworCiAgICAgY2xhc3MgQXJndW1lbnRzIDogcHVibGljIEpTT2JqZWN0IHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBKU0Z1bmN0aW9uKiwgY29uc3Qg
QXJnTGlzdCYsIEpTQWN0aXZhdGlvbiosIGludCBmaXJzdEFyZ3VtZW50SW5kZXgsIFJlZ2lzdGVy
KiBhcmd2KTsKLSAgICAgICAgfkFyZ3VtZW50cygpOworICAgICAgICBBcmd1bWVudHMoRXhlY1N0
YXRlKiwgSlNGdW5jdGlvbiosIEpTQWN0aXZhdGlvbiosIGludCBmaXJzdEFyZ3VtZW50SW5kZXgs
IFJlZ2lzdGVyKiBhcmd2LCBpbnQgYXJnYyk7CisgICAgICAgIHZpcnR1YWwgfkFyZ3VtZW50cygp
OworCisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgbWFyaygpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgIHBy
aXZhdGU6CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSosIFB1dFBy
b3BlcnR5U2xvdCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSosIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdmlydHVhbCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRp
YyBKU1ZhbHVlKiBtYXBwZWRJbmRleEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KTsKIAotICAgICAgICBzdHJ1Y3QgQXJndW1lbnRz
RGF0YSB7Ci0gICAgICAgICAgICBBcmd1bWVudHNEYXRhKEpTQWN0aXZhdGlvbiogYWN0aXZhdGlv
bl8sIEpTRnVuY3Rpb24qIGZ1bmN0aW9uXywgY29uc3QgQXJnTGlzdCYgYXJnc18sIGludCBmaXJz
dEFyZ3VtZW50SW5kZXhfKQotICAgICAgICAgICAgICAgIDogYWN0aXZhdGlvbihhY3RpdmF0aW9u
XykKLSAgICAgICAgICAgICAgICAsIGluZGV4VG9OYW1lTWFwKGZ1bmN0aW9uXywgYXJnc18pCi0g
ICAgICAgICAgICAgICAgLCBmaXJzdEFyZ3VtZW50SW5kZXgoZmlyc3RBcmd1bWVudEluZGV4XykK
LSAgICAgICAgICAgICAgICAsIGhhZERlbGV0ZXMoZmFsc2UpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgdW5zaWduZWQgbnVtQXJndW1lbnRzID0gYXJnc18uc2l6ZSgpOwotICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIG51bVBhcmFtZXRlcnMgPSBmdW5jdGlvbl8tPm51bVBhcmFtZXRl
cnMoKTsKLSAgICAgICAgICAgICAgICBpZiAobnVtQXJndW1lbnRzIDw9IG51bVBhcmFtZXRlcnMp
Ci0gICAgICAgICAgICAgICAgICAgIG51bUV4dHJhQXJndW1lbnRzID0gMDsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG51bUV4dHJhQXJndW1lbnRzID0gbnVtQXJn
dW1lbnRzIC0gbnVtUGFyYW1ldGVyczsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgSlNB
Y3RpdmF0aW9uKiBhY3RpdmF0aW9uOwotICAgICAgICAgICAgbXV0YWJsZSBJbmRleFRvTmFtZU1h
cCBpbmRleFRvTmFtZU1hcDsKLSAgICAgICAgICAgIGludCBmaXJzdEFyZ3VtZW50SW5kZXg7Ci0g
ICAgICAgICAgICBKU1ZhbHVlKiogZXh0cmFBcmd1bWVudHM7Ci0gICAgICAgICAgICB1bnNpZ25l
ZCBudW1FeHRyYUFyZ3VtZW50czsKLSAgICAgICAgICAgIGJvb2wgaGFkRGVsZXRlczsKLSAgICAg
ICAgfTsKLSAgICAgICAgCiAgICAgICAgIE93blB0cjxBcmd1bWVudHNEYXRhPiBkOwogICAgIH07
CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9JbmRleFRvTmFtZU1hcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0luZGV4VG9OYW1lTWFwLmNwcAkocmV2aXNpb24gMzY3
MzgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSW5kZXhUb05hbWVNYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDk0ICsxIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAyIEhhcnJp
IFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtl
bGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQot
ICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5kZXhUb05hbWVNYXAuaCIKLQotI2luY2x1ZGUg
IkFyZ0xpc3QuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiaWRlbnRpZmll
ci5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotLy8gV2UgbWFwIGluZGV4ZXMgaW4gdGhlIGFyZ3Vt
ZW50cyBhcnJheSB0byB0aGVpciBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IG5hbWVzLiAKLS8vIEV4
YW1wbGU6IGZ1bmN0aW9uIGYoeCwgeSwgeik6IGFyZ3VtZW50c1swXSA9IHgsIHNvIHdlIG1hcCAw
IHRvIElkZW50aWZpZXIoIngiKS4gCi0KLS8vIE9uY2Ugd2UgaGF2ZSBhbiBhcmd1bWVudCBuYW1l
LCB3ZSBjYW4gZ2V0IGFuZCBzZXQgdGhlIGFyZ3VtZW50J3MgdmFsdWUgaW4gdGhlIAotLy8gYWN0
aXZhdGlvbiBvYmplY3QuCi0KLS8vIFdlIHVzZSBJZGVudGlmaWVyOjpudWxsIHRvIGluZGljYXRl
IHRoYXQgYSBnaXZlbiBhcmd1bWVudCdzIHZhbHVlCi0vLyBpc24ndCBzdG9yZWQgaW4gdGhlIGFj
dGl2YXRpb24gb2JqZWN0LgotCi1JbmRleFRvTmFtZU1hcDo6SW5kZXhUb05hbWVNYXAoSlNGdW5j
dGlvbiogZnVuYywgY29uc3QgQXJnTGlzdCYgYXJncykKLSAgICA6IG1fc2l6ZShhcmdzLnNpemUo
KSkKLSAgICAsIG1fbWFwKG5ldyBJZGVudGlmaWVyW2FyZ3Muc2l6ZSgpXSkKLXsKLSAgICBzaXpl
X3Qgc2l6ZSA9IGFyZ3Muc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKQotICAgICAgICBtX21hcFtpXSA9IGZ1bmMtPmdldFBhcmFtZXRlck5hbWUoaSk7IC8vIG51
bGwgaWYgdGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBwYXJhbWV0ZXIKLX0KLQotSW5kZXhUb05h
bWVNYXA6On5JbmRleFRvTmFtZU1hcCgpCi17Ci0gICAgZGVsZXRlIFtdIG1fbWFwOwotfQotCi1i
b29sIEluZGV4VG9OYW1lTWFwOjppc01hcHBlZChjb25zdCBJZGVudGlmaWVyJiBpbmRleCkgY29u
c3QKLXsKLSAgICBib29sIGluZGV4SXNOdW1iZXI7Ci0gICAgdW5zaWduZWQgaW5kZXhBc051bWJl
ciA9IGluZGV4LnRvU3RyaWN0VUludDMyKCZpbmRleElzTnVtYmVyKTsKLQotICAgIGlmICghaW5k
ZXhJc051bWJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGluZGV4QXNOdW1i
ZXIgPj0gbV9zaXplKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9tYXBbaW5k
ZXhBc051bWJlcl0uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biB0cnVlOwotfQotCi12b2lkIEluZGV4VG9OYW1lTWFwOjp1bk1hcChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIGluZGV4KQotewotICAgIGJvb2wgaW5kZXhJc051bWJlcjsKLSAg
ICB1bnNpZ25lZCBpbmRleEFzTnVtYmVyID0gaW5kZXgudG9TdHJpY3RVSW50MzIoJmluZGV4SXNO
dW1iZXIpOwotCi0gICAgQVNTRVJUKGluZGV4SXNOdW1iZXIgJiYgaW5kZXhBc051bWJlciA8IG1f
c2l6ZSk7Ci0KLSAgICBtX21hcFtpbmRleEFzTnVtYmVyXSA9IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5udWxsSWRlbnRpZmllcjsKLX0KLQotSWRlbnRpZmllciYgSW5kZXhUb05hbWVNYXA6Om9wZXJh
dG9yW10oY29uc3QgSWRlbnRpZmllciYgaW5kZXgpCi17Ci0gICAgYm9vbCBpbmRleElzTnVtYmVy
OwotICAgIHVuc2lnbmVkIGluZGV4QXNOdW1iZXIgPSBpbmRleC50b1N0cmljdFVJbnQzMigmaW5k
ZXhJc051bWJlcik7Ci0KLSAgICBBU1NFUlQoaW5kZXhJc051bWJlciAmJiBpbmRleEFzTnVtYmVy
IDwgbV9zaXplKTsKLQotICAgIHJldHVybiBtX21hcFtpbmRleEFzTnVtYmVyXTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgSlNDCisvKiBkZWxldGUgdGhpcyAqLwpJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL0luZGV4VG9OYW1lTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0lu
ZGV4VG9OYW1lTWFwLmgJKHJldmlzaW9uIDM2NzM4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0lu
ZGV4VG9OYW1lTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzEgQEAKLS8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAwNyBDYW1lcm9uIFp3YXJpY2ggKGN3endh
cmljaEB1d2F0ZXJsb28uY2EpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3MgT3Jsb3ZpY2gK
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKgotICovCi0KLSNpZm5kZWYgSW5kZXhUb05hbWVNYXBfaAotI2RlZmluZSBJbmRleFRv
TmFtZU1hcF9oCi0KLW5hbWVzcGFjZSBKU0MgewotCi0gICAgY2xhc3MgQXJnTGlzdDsKLSAgICBj
bGFzcyBFeGVjU3RhdGU7Ci0gICAgY2xhc3MgSWRlbnRpZmllcjsKLSAgICBjbGFzcyBKU0Z1bmN0
aW9uOwotCi0gICAgY2xhc3MgSW5kZXhUb05hbWVNYXAgewotICAgIHB1YmxpYzoKLSAgICAgICAg
SW5kZXhUb05hbWVNYXAoSlNGdW5jdGlvbiosIGNvbnN0IEFyZ0xpc3QmKTsKLSAgICAgICAgfklu
ZGV4VG9OYW1lTWFwKCk7Ci0KLSAgICAgICAgSWRlbnRpZmllciYgb3BlcmF0b3JbXShjb25zdCBJ
ZGVudGlmaWVyJiBpbmRleCk7Ci0gICAgICAgIGJvb2wgaXNNYXBwZWQoY29uc3QgSWRlbnRpZmll
ciYgaW5kZXgpIGNvbnN0OwotICAgICAgICB2b2lkIHVuTWFwKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgaW5kZXgpOwotCi0gICAgICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3NpemU7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHVuc2lnbmVkIG1fc2l6
ZTsKLSAgICAgICAgSWRlbnRpZmllciogbV9tYXA7IC8vIEZJTVhFOiB0aGlzIHNob3VsZCBiZSBh
biBPd25BcnJheVB0cgotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8g
SW5kZXhUb05hbWVNYXBfaAorI2Vycm9yIGRlbGV0ZSB0aGlzCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ranMvSlNBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMv
SlNBY3RpdmF0aW9uLmNwcAkocmV2aXNpb24gMzY3MzgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
SlNBY3RpdmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDkgKzE3MCw4IEBAIEFyZ3Vt
ZW50cyogSlNBY3RpdmF0aW9uOjpjcmVhdGVBcmd1bWVudHMKICAgICBpbnQgYXJnYzsKICAgICBl
eGVjLT5tYWNoaW5lKCktPmdldEFyZ3VtZW50c0RhdGEoY2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJn
diwgYXJnYyk7CiAKLSAgICBBcmdMaXN0IGFyZ3MoYXJndiwgYXJnYyk7CiAgICAgaW50IGZpcnN0
QXJndW1lbnRJbmRleCA9IC1kKCktPmZ1bmN0aW9uQm9keS0+Z2VuZXJhdGVkQnl0ZUNvZGUoKS5u
dW1Mb2NhbHMgKyAxOwotICAgIHJldHVybiBuZXcgKGV4ZWMpIEFyZ3VtZW50cyhleGVjLCBmdW5j
dGlvbiwgYXJncywgdGhpcywgZmlyc3RBcmd1bWVudEluZGV4LCBhcmd2KTsKKyAgICByZXR1cm4g
bmV3IChleGVjKSBBcmd1bWVudHMoZXhlYywgZnVuY3Rpb24sIHRoaXMsIGZpcnN0QXJndW1lbnRJ
bmRleCwgYXJndiwgYXJnYyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL2RlYnVnZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L2RlYnVnZ2VyLmgJKHJldmlzaW9uIDM2NzM4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2RlYnVn
Z2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE2ICsyMywxMiBAQAogI2RlZmluZSBEZWJ1Z2dl
cl9oCiAKICNpbmNsdWRlICJwcm90ZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBBcmdMaXN0OwogICAgIGNsYXNzIERlYnVnZ2Vy
Q2FsbEZyYW1lOwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKLSAgICBjbGFzcyBKU09iamVjdDsKLSAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIFNv
dXJjZVByb3ZpZGVyOwogICAgIGNsYXNzIFVTdHJpbmc7CiAKQEAgLTQ1LDcgKzQxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZGV0YWNoKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChFeGVjU3RhdGUqLCBpbnQgc291cmNlSWQs
IGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTb3VyY2VQcm92aWRlciYgc291cmNlLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVy
LCBpbnQgZXJyb3JMaW5lLCBjb25zdCBVU3RyaW5nJiBlcnJvck1zZykgPSAwOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvdXJjZVByb3ZpZGVyJiwgaW50IHN0YXJ0
aW5nTGluZU51bWJlciwgaW50IGVycm9yTGluZSwgY29uc3QgVVN0cmluZyYgZXJyb3JNc2cpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFt
ZSYsIGludCBzb3VyY2VJZCwgaW50IGxpbmVubykgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
YXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnQgc291cmNlSWQsIGludCBs
aW5lbm8pID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dl
ckNhbGxGcmFtZSYsIGludCBzb3VyY2VJZCwgaW50IGxpbmVubykgPSAwOwo=
</data>
<flag name="review"
          id="10592"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>