<?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>75588</bug_id>
          
          <creation_ts>2012-01-04 16:58:42 -0800</creation_ts>
          <short_desc>unshift/pop fifo may consume excessive memory</short_desc>
          <delta_ts>2012-01-05 11:35:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>75140</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>529882</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-04 16:58:42 -0800</bug_when>
    <thetext>Array object commonly store data in a vector, consisting of a portion that is in use, a pre-capacity (m_indexBias) and a post-capacity (the delta between m_length and m_vectorLength).  Calls to pop with grow the post-capacity, and the current algorithm for increasePrefixVectorLength (used by unshift) will never stink the post-capacity, so a unshift/pop fifo may consume an inordinate amount of memory, whilst having a relatively small active length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529888</commentid>
    <comment_count>1</comment_count>
      <attachid>121188</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-04 17:15:27 -0800</bug_when>
    <thetext>Created attachment 121188
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529889</commentid>
    <comment_count>2</comment_count>
      <attachid>121189</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-04 17:17:03 -0800</bug_when>
    <thetext>Created attachment 121189
simple micro-benchmark

Since unshift is not covered by our standard benchmarks, I&apos;ve written a trivial micro-benchmark.
Should no significant impact, 19.3s total runtime -&gt; 19.2s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529899</commentid>
    <comment_count>3</comment_count>
      <attachid>121188</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-04 17:29:48 -0800</bug_when>
    <thetext>Comment on attachment 121188
Fix

Attachment 121188 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11115011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530049</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-05 00:02:20 -0800</bug_when>
    <thetext>Fixed in r104120.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530137</commentid>
    <comment_count>5</comment_count>
      <attachid>121188</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-01-05 02:51:43 -0800</bug_when>
    <thetext>Comment on attachment 121188
Fix

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

&gt; Source/JavaScriptCore/runtime/JSArray.cpp:827
&gt; -void JSArray::unshiftCount(ExecState* exec, int count)
&gt; +void JSArray::unshiftCount(ExecState* exec, unsigned count)

After this change the following assert is always true:
ASSERT(count &gt;= 0);

It caused build breakage in debug mode:
cc1plus: warnings being treated as errors
../../../../Source/JavaScriptCore/runtime/JSArray.cpp: In member function ‘void JSC::JSArray::unshiftCount(JSC::ExecState*, unsigned int)’:
../../../../Source/JavaScriptCore/runtime/JSArray.cpp:831: error: comparison of unsigned expression &gt;= 0 is always true
../../../../Source/JavaScriptCore/runtime/JSArray.cpp:832: error: comparison of unsigned expression &gt;= 0 is always true

&gt; Source/JavaScriptCore/runtime/JSArray.h:261
&gt; +        unsigned m_indexBias; // The number of JSValue sized blocks before ArrayStorage.

After this change the following assert is always true:
ASSERT(m_indexBias &gt;= 0);

It caused build breakage in debug mode:
cc1plus: warnings being treated as errors
../../../../Source/JavaScriptCore/runtime/JSArray.cpp: In member function ‘void JSC::JSArray::unshiftCount(JSC::ExecState*, unsigned int)’:
../../../../Source/JavaScriptCore/runtime/JSArray.cpp:831: error: comparison of unsigned expression &gt;= 0 is always true
../../../../Source/JavaScriptCore/runtime/JSArray.cpp:832: error: comparison of unsigned expression &gt;= 0 is always true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530157</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-01-05 03:33:32 -0800</bug_when>
    <thetext>Buildfix landed in http://trac.webkit.org/changeset/104136</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121188</attachid>
            <date>2012-01-04 17:15:27 -0800</date>
            <delta_ts>2012-01-05 02:51:43 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>75588.patch</filename>
            <type>text/plain</type>
            <size>15769</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0MTAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDEyLTAxLTA0ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICB1bnNoaWZ0L3BvcCBmaWZvIG1heSBjb25zdW1lIGV4Y2Vzc2l2ZSBtZW1vcnkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTg4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEFycmF5
IG9iamVjdCBjb21tb25seSBzdG9yZSBkYXRhIGluIGEgdmVjdG9yLCBjb25zaXN0aW5nIG9mIGEg
cG9ydGlvbiB0aGF0CisgICAgICAgIGlzIGluIHVzZSwgYSBwcmUtY2FwYWNpdHkgKG1faW5kZXhC
aWFzKSBhbmQgYSBwb3N0LWNhcGFjaXR5ICh0aGUgZGVsdGEgYmV0d2VlbgorICAgICAgICBtX2xl
bmd0aCBhbmQgbV92ZWN0b3JMZW5ndGgpLiBDYWxscyB0byBwb3Agd2l0aCBncm93IHRoZSBwb3N0
LWNhcGFjaXR5LCBhbmQgdGhlCisgICAgICAgIGN1cnJlbnQgYWxnb3JpdGhtIGZvciBpbmNyZWFz
ZVByZWZpeFZlY3Rvckxlbmd0aCAodXNlZCBieSB1bnNoaWZ0KSB3aWxsIG5ldmVyCisgICAgICAg
IHN0aW5rIHRoZSBwb3N0LWNhcGFjaXR5LCBzbyBhIHVuc2hpZnQvcG9wIGZpZm8gbWF5IGNvbnN1
bWUgYW4gaW5vcmRpbmF0ZSBhbW91bnQKKyAgICAgICAgb2YgbWVtb3J5LCB3aGlsc3QgaGF2aW5n
IGEgcmVsYXRpdmVseSBzbWFsbCBhY3RpdmUgbGVuZ3RoLgorCisgICAgICAgICogcnVudGltZS9K
U0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6c3RvcmFnZVNpemUpOgorICAgICAgICAgICAgLSBz
aXplb2YoSlNWYWx1ZSkgc2hvdWxkIGJlIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pCisg
ICAgICAgIChKU0M6OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dCk6CisgICAgICAgICAgICAtIHNp
emVvZihKU1ZhbHVlKSBzaG91bGQgYmUgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikKKyAg
ICAgICAgKEpTQzo6SlNBcnJheTo6aW5jcmVhc2VWZWN0b3JMZW5ndGgpOgorICAgICAgICAgICAg
LSBzaXplb2YoSlNWYWx1ZSkgc2hvdWxkIGJlIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dDYXNlKToKKyAgICAgICAg
ICAgIC0gcmVuYW1lZCBmcm9tIGluY3JlYXNlVmVjdG9yUHJlZml4TGVuZ3RoICh0aGlzIHdhcyBh
IGJhZCBuYW1lLCBzaW5jZSBpdAorICAgICAgICAgICAgICBhbHNvIG1vdmVkIHRoZSBBcnJheVN0
b3JhZ2UgaGVhZGVyKSwgcmV3cml0dGVuLgorICAgICAgICAoSlNDOjpKU0FycmF5OjpzaGlmdENv
dW50KToKKyAgICAgICAgICAgIC0gc2l6ZW9mKEpTVmFsdWUpIHNob3VsZCBiZSBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSwgY291bnQgc2hvdWxkIGJlIHVuc2lnbmVkCisgICAgICAgIChK
U0M6OkpTQXJyYXk6OnVuc2hpZnRDb3VudCk6CisgICAgICAgICAgICAtIHNpemVvZihKU1ZhbHVl
KSBzaG91bGQgYmUgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiksIGNvdW50IHNob3VsZCBi
ZSB1bnNpZ25lZCwKKyAgICAgICAgICAgICAgaW5jcmVhc2VWZWN0b3JQcmVmaXhMZW5ndGggcmVu
YW1lZCB0byB1bnNoaWZ0Q291bnRTbG93Q2FzZQorICAgICAgICAoSlNDOjpKU0FycmF5Ojpzb3J0
TnVtZXJpYyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICAgICAtIFVw
ZGF0ZWQgZnVuY3Rpb24gZGVjbGFyYXRpb25zLCBtX2luZGV4QmlhcyBzaG91bGQgYmUgdW5zaWdu
ZWQuCisKIDIwMTItMDEtMDQgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAK
ICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8gbm90IHJlc2V0IHdoZW4gY29ycmVzcG9uZGluZyBN
ZXRob2RDYWxsTGlua0luZm8gaXMgcmVzZXQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAxMDM5NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsOSArNjgsOSBA
QCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQXJyYXkpOwogCiAvLyBUaGUgZGVmaW5pdGlv
biBvZiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIIGlzIGRlcGVuZGFudCBvbiB0aGUgZGVmaW5p
dGlvbiBzdG9yYWdlU2l6ZQogLy8gZnVuY3Rpb24gYmVsb3cgLSB0aGUgTUFYX1NUT1JBR0VfVkVD
VE9SX0xFTkdUSCBsaW1pdCBpcyBkZWZpbmVkIHN1Y2ggdGhhdCB0aGUgc3RvcmFnZQotLy8gc2l6
ZSBjYWxjdWxhdGlvbiBjYW5ub3Qgb3ZlcmZsb3cuICAoc2l6ZW9mKEFycmF5U3RvcmFnZSkgLSBz
aXplb2YoSlNWYWx1ZSkpICsKLS8vICh2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkpIG11
c3QgYmUgPD0gMHhGRkZGRkZGRlUgKHdoaWNoIGlzIG1heGltdW0gdmFsdWUgb2Ygc2l6ZV90KS4K
LSNkZWZpbmUgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
KDB4RkZGRkZGRkZVIC0gKHNpemVvZihBcnJheVN0b3JhZ2UpIC0gc2l6ZW9mKEpTVmFsdWUpKSkg
LyBzaXplb2YoSlNWYWx1ZSkpCisvLyBzaXplIGNhbGN1bGF0aW9uIGNhbm5vdCBvdmVyZmxvdy4g
IChzaXplb2YoQXJyYXlTdG9yYWdlKSAtIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSAr
CisvLyAodmVjdG9yTGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpIG11c3Qg
YmUgPD0gMHhGRkZGRkZGRlUgKHdoaWNoIGlzIG1heGltdW0gdmFsdWUgb2Ygc2l6ZV90KS4KKyNk
ZWZpbmUgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKDB4
RkZGRkZGRkZVIC0gKHNpemVvZihBcnJheVN0b3JhZ2UpIC0gc2l6ZW9mKFdyaXRlQmFycmllcjxV
bmtub3duPikpKSAvIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKQogCiAvLyBUaGVzZSB2
YWx1ZXMgaGF2ZSB0byBiZSBtYWNyb3MgdG8gYmUgdXNlZCBpbiBtYXgoKSBhbmQgbWluKCkgd2l0
aG91dCBpbnRyb2R1Y2luZwogLy8gYSBQSUMgYnJhbmNoIGluIE1hY2gtTyBiaW5hcmllcywgc2Vl
IDxyZGFyOi8vcHJvYmxlbS81OTcxMzkxPi4KQEAgLTEwNiwxMCArMTA2LDEwIEBAIHN0YXRpYyBp
bmxpbmUgc2l6ZV90IHN0b3JhZ2VTaXplKHVuc2lnbmUKIAogICAgIC8vIE1BWF9TVE9SQUdFX1ZF
Q1RPUl9MRU5HVEggaXMgZGVmaW5lZCBzdWNoIHRoYXQgcHJvdmlkZWQgKHZlY3Rvckxlbmd0aCA8
PSBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKQogICAgIC8vIC0gYXMgYXNzZXJ0ZWQgYWJvdmUg
LSB0aGUgZm9sbG93aW5nIGNhbGN1bGF0aW9uIGNhbm5vdCBvdmVyZmxvdy4KLSAgICBzaXplX3Qg
c2l6ZSA9IChzaXplb2YoQXJyYXlTdG9yYWdlKSAtIHNpemVvZihKU1ZhbHVlKSkgKyAodmVjdG9y
TGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpKTsKKyAgICBzaXplX3Qgc2l6ZSA9IChzaXplb2YoQXJy
YXlTdG9yYWdlKSAtIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSArICh2ZWN0b3JMZW5n
dGggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSk7CiAgICAgLy8gQXNzZXJ0aW9uIHRv
IGRldGVjdCBpbnRlZ2VyIG92ZXJmbG93IGluIHByZXZpb3VzIGNhbGN1bGF0aW9uIChzaG91bGQg
bm90IGJlIHBvc3NpYmxlLCBwcm92aWRlZCB0aGF0CiAgICAgLy8gTUFYX1NUT1JBR0VfVkVDVE9S
X0xFTkdUSCBpcyBjb3JyZWN0bHkgZGVmaW5lZCkuCi0gICAgQVNTRVJUKCgoc2l6ZSAtIChzaXpl
b2YoQXJyYXlTdG9yYWdlKSAtIHNpemVvZihKU1ZhbHVlKSkpIC8gc2l6ZW9mKEpTVmFsdWUpID09
IHZlY3Rvckxlbmd0aCkgJiYgKHNpemUgPj0gKHNpemVvZihBcnJheVN0b3JhZ2UpIC0gc2l6ZW9m
KEpTVmFsdWUpKSkpOworICAgIEFTU0VSVCgoKHNpemUgLSAoc2l6ZW9mKEFycmF5U3RvcmFnZSkg
LSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkpIC8gc2l6ZW9mKFdyaXRlQmFycmllcjxV
bmtub3duPikgPT0gdmVjdG9yTGVuZ3RoKSAmJiAoc2l6ZSA+PSAoc2l6ZW9mKEFycmF5U3RvcmFn
ZSkgLSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkpKTsKIAogICAgIHJldHVybiBzaXpl
OwogfQpAQCAtMjI3LDcgKzIyNyw3IEBAIGlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6
OnB1dChKU0cKIAogICAgIHNpemVfdCBjYXBhY2l0eSA9IG1fbWFwLmNhcGFjaXR5KCk7CiAgICAg
aWYgKGNhcGFjaXR5ICE9IG1fcmVwb3J0ZWRDYXBhY2l0eSkgewotICAgICAgICBIZWFwOjpoZWFw
KGFycmF5KS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KChjYXBhY2l0eSAtIG1fcmVwb3J0ZWRDYXBh
Y2l0eSkgKiAoc2l6ZW9mKHVuc2lnbmVkKSArIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICBI
ZWFwOjpoZWFwKGFycmF5KS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KChjYXBhY2l0eSAtIG1fcmVw
b3J0ZWRDYXBhY2l0eSkgKiAoc2l6ZW9mKHVuc2lnbmVkKSArIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pKSk7CiAgICAgICAgIG1fcmVwb3J0ZWRDYXBhY2l0eSA9IGNhcGFjaXR5OwogICAg
IH0KIH0KQEAgLTU1Nyw3ICs1NTcsNyBAQCBib29sIEpTQXJyYXk6OmluY3JlYXNlVmVjdG9yTGVu
Z3RoKHVuc2lnCiAgICAgaWYgKCF0cnlGYXN0UmVhbGxvYyhiYXNlU3RvcmFnZSwgc3RvcmFnZVNp
emUobmV3VmVjdG9yTGVuZ3RoICsgbV9pbmRleEJpYXMpKS5nZXRWYWx1ZShiYXNlU3RvcmFnZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0b3JhZ2UgPSBtX3N0b3JhZ2UgPSByZWlu
dGVycHJldF9jYXN0X3B0cjxBcnJheVN0b3JhZ2UqPihzdGF0aWNfY2FzdDxjaGFyKj4oYmFzZVN0
b3JhZ2UpICsgbV9pbmRleEJpYXMgKiBzaXplb2YoSlNWYWx1ZSkpOworICAgIHN0b3JhZ2UgPSBt
X3N0b3JhZ2UgPSByZWludGVycHJldF9jYXN0X3B0cjxBcnJheVN0b3JhZ2UqPihzdGF0aWNfY2Fz
dDxjaGFyKj4oYmFzZVN0b3JhZ2UpICsgbV9pbmRleEJpYXMgKiBzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KSk7CiAgICAgbV9zdG9yYWdlLT5tX2FsbG9jQmFzZSA9IGJhc2VTdG9yYWdlOwog
CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiB2ZWN0b3IgPSBzdG9yYWdlLT5tX3ZlY3RvcjsK
QEAgLTU3MSw0MSArNTcxLDk0IEBAIGJvb2wgSlNBcnJheTo6aW5jcmVhc2VWZWN0b3JMZW5ndGgo
dW5zaWcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0FycmF5OjppbmNyZWFzZVZlY3Rv
clByZWZpeExlbmd0aCh1bnNpZ25lZCBuZXdMZW5ndGgpCisvLyBUaGlzIG1ldGhvZCBtYWtlcyBy
b29tIGluIHRoZSB2ZWN0b3IsIGJ1dCBsZWF2ZXMgdGhlIG5ldyBzcGFjZSB1bmNsZWFyZWQuCiti
b29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dDYXNlKHVuc2lnbmVkIGNvdW50KQogewotICAg
IC8vIFRoaXMgZnVuY3Rpb24gbGVhdmVzIHRoZSBhcnJheSBpbiBhbiBpbnRlcm5hbGx5IGluY29u
c2lzdGVudCBzdGF0ZSwgYmVjYXVzZSBpdCBkb2VzIG5vdCBtb3ZlIGFueSB2YWx1ZXMgZnJvbSBz
cGFyc2UgdmFsdWUgbWFwCi0gICAgLy8gdG8gdGhlIHZlY3Rvci4gQ2FsbGVycyBoYXZlIHRvIGFj
Y291bnQgZm9yIHRoYXQsIGJlY2F1c2UgdGhleSBjYW4gZG8gaXQgbW9yZSBlZmZpY2llbnRseS4K
LSAgICBpZiAobmV3TGVuZ3RoID4gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIC8vIElmIG5vdCwgd2Ugc2hvdWxkIGhhdmUgaGFuZGxlZCB0aGlz
IG9uIHRoZSBmYXN0IHBhdGguCisgICAgQVNTRVJUKGNvdW50ID4gbV9pbmRleEJpYXMpOwogCiAg
ICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gbV9zdG9yYWdlOwotICAgIAotICAgIHVuc2lnbmVk
IHZlY3Rvckxlbmd0aCA9IG1fdmVjdG9yTGVuZ3RoOwotICAgIEFTU0VSVChuZXdMZW5ndGggPiB2
ZWN0b3JMZW5ndGgpOwotICAgIEFTU0VSVChuZXdMZW5ndGggPD0gTUFYX1NUT1JBR0VfVkVDVE9S
X0lOREVYKTsKLSAgICB1bnNpZ25lZCBuZXdWZWN0b3JMZW5ndGggPSBnZXROZXdWZWN0b3JMZW5n
dGgobmV3TGVuZ3RoKTsKIAotICAgIHZvaWQqIG5ld0Jhc2VTdG9yYWdlID0gZmFzdE1hbGxvYyhz
dG9yYWdlU2l6ZShuZXdWZWN0b3JMZW5ndGggKyBtX2luZGV4QmlhcykpOwotICAgIGlmICghbmV3
QmFzZVN0b3JhZ2UpCisgICAgLy8gU3RlcCAxOgorICAgIC8vIEdhdGhlciA0IGtleSBtZXRyaWNz
OgorICAgIC8vICAqIHVzZWRWZWN0b3JMZW5ndGggLSBob3cgbWFueSBlbnRyaWVzIGFyZSBjdXJy
ZW50bHkgaW4gdGhlIHZlY3RvciAoY29uc2VydmF0aXZlIGVzdGltYXRlIC0gZmV3ZXIgbWF5IGJl
IGluIHVzZSBpbiBzcGFyc2UgdmVjdG9ycykuCisgICAgLy8gICogcmVxdWlyZWRWZWN0b3JMZW5n
dGggLSBob3cgbWFueSBlbnRyaWVzIGFyZSB3aWxsIHRoZXJlIGJlIGluIHRoZSB2ZWN0b3IsIGFm
dGVyIGFsbG9jYXRpbmcgc3BhY2UgZm9yICdjb3VudCcgbW9yZS4KKyAgICAvLyAgKiBjdXJyZW50
Q2FwYWNpdHkgLSB3aGF0IGlzIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIHZlY3RvciwgaW5jbHVk
aW5nIGFueSBwcmUtY2FwYWNpdHkuCisgICAgLy8gICogZGVzaXJlZENhcGFjaXR5IC0gaG93IGxh
cmdlIHNob3VsZCB3ZSBsaWtlIHRvIGdyb3cgdGhlIHZlY3RvciB0byAtIGJhc2VkIG9uIDJ4IHJl
cXVpcmVkVmVjdG9yTGVuZ3RoLgorCisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RvcmFnZS0+bV9s
ZW5ndGg7CisgICAgdW5zaWduZWQgdXNlZFZlY3Rvckxlbmd0aCA9IG1pbihtX3ZlY3Rvckxlbmd0
aCwgbGVuZ3RoKTsKKyAgICBBU1NFUlQodXNlZFZlY3Rvckxlbmd0aCA8PSBNQVhfU1RPUkFHRV9W
RUNUT1JfTEVOR1RIKTsKKyAgICAvLyBDaGVjayB0aGF0IHJlcXVpcmVkIHZlY3RvciBsZW5ndGgg
aXMgcG9zc2libGUsIGluIGFuIG92ZXJmbG93LXNhZmUgZmFzaGlvbi4KKyAgICBpZiAoY291bnQg
PiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIIC0gdXNlZFZlY3Rvckxlbmd0aCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIAotICAgIG1faW5kZXhCaWFzICs9IG5ld1ZlY3Rvckxlbmd0aCAt
IG5ld0xlbmd0aDsKLSAgICAKLSAgICBtX3N0b3JhZ2UgPSByZWludGVycHJldF9jYXN0X3B0cjxB
cnJheVN0b3JhZ2UqPihzdGF0aWNfY2FzdDxjaGFyKj4obmV3QmFzZVN0b3JhZ2UpICsgbV9pbmRl
eEJpYXMgKiBzaXplb2YoSlNWYWx1ZSkpOworICAgIHVuc2lnbmVkIHJlcXVpcmVkVmVjdG9yTGVu
Z3RoID0gdXNlZFZlY3Rvckxlbmd0aCArIGNvdW50OworICAgIEFTU0VSVChyZXF1aXJlZFZlY3Rv
ckxlbmd0aCA8PSBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKTsKKyAgICAvLyBUaGUgc3VtIG9m
IG1fdmVjdG9yTGVuZ3RoIGFuZCBtX2luZGV4QmlhcyB3aWxsIG5ldmVyIGV4Y2VlZCBNQVhfU1RP
UkFHRV9WRUNUT1JfTEVOR1RILgorICAgIEFTU0VSVChtX3ZlY3Rvckxlbmd0aCA8PSBNQVhfU1RP
UkFHRV9WRUNUT1JfTEVOR1RIICYmIChNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIIC0gbV92ZWN0
b3JMZW5ndGgpID49IG1faW5kZXhCaWFzKTsKKyAgICB1bnNpZ25lZCBjdXJyZW50Q2FwYWNpdHkg
PSBtX3ZlY3Rvckxlbmd0aCArIG1faW5kZXhCaWFzOworICAgIC8vIFRoZSBjYWxjdWxhdGlvbiBv
ZiBkZXNpcmVkQ2FwYWNpdHkgd29uJ3Qgb3ZlcmZsb3csIGR1ZSB0byB0aGUgcmFuZ2Ugb2YgTUFY
X1NUT1JBR0VfVkVDVE9SX0xFTkdUSC4KKyAgICB1bnNpZ25lZCBkZXNpcmVkQ2FwYWNpdHkgPSBt
aW4oTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCwgbWF4KEJBU0VfVkVDVE9SX0xFTiwgcmVxdWly
ZWRWZWN0b3JMZW5ndGgpIDw8IDEpOworCisgICAgLy8gU3RlcCAyOgorICAgIC8vIFdlJ3JlIGVp
dGhlciBnb2luZyB0byBjaG9vc2UgdG8gYWxsb2NhdGUgYSBuZXcgQXJyYXlTdG9yYWdlLCBvciB3
ZSdyZSBnb2luZyB0byByZXVzZSB0aGUgZXhpc3Rpbmcgb24uCisKKyAgICB2b2lkKiBuZXdBbGxv
Y0Jhc2U7CisgICAgdW5zaWduZWQgbmV3U3RvcmFnZUNhcGFjaXR5OworICAgIC8vIElmIHRoZSBj
dXJyZW50IHN0b3JhZ2UgYXJyYXkgaXMgc3VmZmljaWVudGx5IGxhcmdlIChidXQgbm90IHRvbyBs
YXJnZSEpIHRoZW4ganVzdCBrZWVwIHVzaW5nIGl0LgorICAgIGlmIChjdXJyZW50Q2FwYWNpdHkg
PiBkZXNpcmVkQ2FwYWNpdHkgJiYgaXNEZW5zZUVub3VnaEZvclZlY3RvcihjdXJyZW50Q2FwYWNp
dHksIHJlcXVpcmVkVmVjdG9yTGVuZ3RoKSkgeworICAgICAgICBuZXdBbGxvY0Jhc2UgPSBzdG9y
YWdlLT5tX2FsbG9jQmFzZTsKKyAgICAgICAgbmV3U3RvcmFnZUNhcGFjaXR5ID0gY3VycmVudENh
cGFjaXR5OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghdHJ5RmFzdE1hbGxvYyhzdG9yYWdl
U2l6ZShkZXNpcmVkQ2FwYWNpdHkpKS5nZXRWYWx1ZShuZXdBbGxvY0Jhc2UpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBuZXdTdG9yYWdlQ2FwYWNpdHkgPSBkZXNpcmVkQ2Fw
YWNpdHk7CisgICAgICAgIC8vIEN1cnJlbnRseSB0aGVyZSBpcyBubyB3YXkgdG8gcmVwb3J0IHRv
IHRoZSBoZWFwIHRoYXQgdGhlIGV4dHJhIGNhcGFjaXR5IGlzIHNocmlua2luZyEKKyAgICAgICAg
aWYgKGRlc2lyZWRDYXBhY2l0eSA+IGN1cnJlbnRDYXBhY2l0eSkKKyAgICAgICAgICAgIEhlYXA6
OmhlYXAodGhpcyktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdCgoZGVzaXJlZENhcGFjaXR5IC0gY3Vy
cmVudENhcGFjaXR5KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKTsKKyAgICB9CisK
KyAgICAvLyBTdGVwIDM6CisgICAgLy8gV29yayBvdXQgd2hlcmUgd2UncmUgZ29pbmcgdG8gbW92
ZSB0aGluZ3MgdG8uCisKKyAgICAvLyBEZXRlcm1pbmUgaG93IG11Y2ggb2YgdGhlIHZlY3RvciB0
byB1c2UgYXMgcHJlLWNhcGFjaXR5LCBhbmQgaG93IG11Y2ggYXMgcG9zdC1jYXBhY2l0eS4KKyAg
ICAvLyBJZiB0aGUgdmVjdG9yIGhhZCBubyBmcmVlIHBvc3QtY2FwYWNpdHkgKGxlbmd0aCA+PSBt
X3ZlY3Rvckxlbmd0aCksIGRvbid0IGdpdmUgaXQgYW55LgorICAgIC8vIElmIGl0IGRpZCwgd2Ug
Y2FsY3VsYXRlIHRoZSBhbW91bnQgdGhhdCB3aWxsIHJlbWFpbiBiYXNlZCBvbiBhbiBhdG9taWMg
ZGVjYXkgLSBsZWF2ZSB0aGUKKyAgICAvLyB2ZWN0b3Igd2l0aCBoYWxmIHRoZSBwb3N0LWNhcGFj
aXR5IGl0IGhhZCBwcmV2aW91c2x5LgorICAgIHVuc2lnbmVkIHBvc3RDYXBhY2l0eSA9IDA7Cisg
ICAgaWYgKGxlbmd0aCA8IG1fdmVjdG9yTGVuZ3RoKSB7CisgICAgICAgIC8vIEF0b21pYyBkZWNh
eSwgKyB0aGUgcG9zdC1jYXBhY2l0eSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIHdoYXQgaXMgYXZh
aWxhYmxlLgorICAgICAgICBwb3N0Q2FwYWNpdHkgPSBtaW4obV92ZWN0b3JMZW5ndGggLSBsZW5n
dGggPj4gMSwgbmV3U3RvcmFnZUNhcGFjaXR5IC0gcmVxdWlyZWRWZWN0b3JMZW5ndGgpOworICAg
ICAgICAvLyBJZiB3ZSdyZSBtb3ZpbmcgY29udGVudHMgd2l0aGluIHRoZSBzYW1lIGFsbG9jYXRp
b24sIHRoZSBwb3N0LWNhcGFjaXR5IGlzIGJlaW5nIHJlZHVjZWQuCisgICAgICAgIEFTU0VSVChu
ZXdBbGxvY0Jhc2UgIT0gc3RvcmFnZS0+bV9hbGxvY0Jhc2UgfHwgcG9zdENhcGFjaXR5IDwgbV92
ZWN0b3JMZW5ndGggLSBsZW5ndGgpOworICAgIH0KKworICAgIG1fdmVjdG9yTGVuZ3RoID0gcmVx
dWlyZWRWZWN0b3JMZW5ndGggKyBwb3N0Q2FwYWNpdHk7CisgICAgbV9pbmRleEJpYXMgPSBuZXdT
dG9yYWdlQ2FwYWNpdHkgLSBtX3ZlY3Rvckxlbmd0aDsKKyAgICBtX3N0b3JhZ2UgPSByZWludGVy
cHJldF9jYXN0X3B0cjxBcnJheVN0b3JhZ2UqPihyZWludGVycHJldF9jYXN0PFdyaXRlQmFycmll
cjxVbmtub3duPio+KG5ld0FsbG9jQmFzZSkgKyBtX2luZGV4Qmlhcyk7CisKKyAgICAvLyBTdGVw
IDQ6CisgICAgLy8gQ29weSBhcnJheSBkYXRhIC8gaGVhZGVyIGludG8gdGhlaXIgbmV3IGxvY2F0
aW9ucywgY2xlYXIgcG9zdC1jYXBhY2l0eSAmIGZyZWUgYW55IG9sZCBhbGxvY2F0aW9uLgorCisg
ICAgLy8gSWYgdGhpcyBpcyBiZWluZyBtb3ZlZCB3aXRoaW4gdGhlIGV4aXN0aW5nIGJ1ZmZlciBv
ZiBtZW1vcnksIHdlIGFyZSBhbHdheXMgc2hpZnRpbmcgZGF0YQorICAgIC8vIHRvIHRoZSByaWdo
dCAoc2luY2UgY291bnQgPiBtX2luZGV4QmlhcykuIEFzIHN1Y2ggdGhpcyBtZW1tb3ZlIGNhbm5v
dCB0cmFtcGxlIHRoZSBoZWFkZXIuCisgICAgbWVtbW92ZShtX3N0b3JhZ2UtPm1fdmVjdG9yICsg
Y291bnQsIHN0b3JhZ2UtPm1fdmVjdG9yLCBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSAq
IHVzZWRWZWN0b3JMZW5ndGgpOworICAgIG1lbW1vdmUobV9zdG9yYWdlLCBzdG9yYWdlLCBzdG9y
YWdlU2l6ZSgwKSk7CisKKyAgICAvLyBBcmUgd2UgY29weWluZyBpbnRvIGEgbmV3IGFsbG9jYXRp
b24/CisgICAgaWYgKG5ld0FsbG9jQmFzZSAhPSBtX3N0b3JhZ2UtPm1fYWxsb2NCYXNlKSB7Cisg
ICAgICAgIC8vIEZyZWUgdGhlIG9sZCBhbGxvY2F0aW9uLCB1cGRhdGUgbV9hbGxvY0Jhc2UuCisg
ICAgICAgIGZhc3RGcmVlKG1fc3RvcmFnZS0+bV9hbGxvY0Jhc2UpOworICAgICAgICBtX3N0b3Jh
Z2UtPm1fYWxsb2NCYXNlID0gbmV3QWxsb2NCYXNlOworCisgICAgICAgIC8vIFdlIG5lZWQgdG8g
Y2xlYXIgYW55IGVudHJpZXMgaW4gdGhlIHZlY3RvciBiZXlvbmQgbGVuZ3RoLiBXZSBvbmx5IG5l
ZWQgdG8KKyAgICAgICAgLy8gZG8gdGhpcyBpZiB0aGlzIHdhcyBhIG5ldyBhbGxvY2F0aW9uLCBi
ZWNhdXNlIGlmIHdlJ3JlIHVzaW5nIGFuIGV4aXN0aW5nCisgICAgICAgIC8vIGFsbG9jYXRpb24g
dGhlIHBvc3QtY2FwYWNpdHkgd2lsbCBhbHJlYWR5IGJlIGNsZWFyZWQsIGFuZCBpbiBhbiBleGlz
dGluZworICAgICAgICAvLyBhbGxvY2F0aW9uIHdlIGNhbiBvbmx5IGJlc2hyaW5raW5nIHRoZSBh
bW91bnQgb2YgcG9zdCBjYXBhY2l0eS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVxdWly
ZWRWZWN0b3JMZW5ndGg7IGkgPCBtX3ZlY3Rvckxlbmd0aDsgKytpKQorICAgICAgICAgICAgbV9z
dG9yYWdlLT5tX3ZlY3RvcltpXS5jbGVhcigpOworICAgIH0KIAotICAgIG1lbWNweShtX3N0b3Jh
Z2UsIHN0b3JhZ2UsIHN0b3JhZ2VTaXplKDApKTsKLSAgICBtZW1jcHkoJm1fc3RvcmFnZS0+bV92
ZWN0b3JbbmV3TGVuZ3RoIC0gbV92ZWN0b3JMZW5ndGhdLCAmc3RvcmFnZS0+bV92ZWN0b3JbMF0s
IHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSk7Ci0gICAgCi0gICAgbV9zdG9yYWdlLT5t
X2FsbG9jQmFzZSA9IG5ld0Jhc2VTdG9yYWdlOwotICAgIG1fdmVjdG9yTGVuZ3RoID0gbmV3TGVu
Z3RoOwotICAgIAotICAgIGZhc3RGcmVlKHN0b3JhZ2UtPm1fYWxsb2NCYXNlKTsKLSAgICBBU1NF
UlQobmV3TGVuZ3RoID4gdmVjdG9yTGVuZ3RoKTsKLSAgICB1bnNpZ25lZCBkZWx0YSA9IG5ld0xl
bmd0aCAtIHZlY3Rvckxlbmd0aDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVsdGE7
IGkrKykKLSAgICAgICAgbV9zdG9yYWdlLT5tX3ZlY3RvcltpXS5jbGVhcigpOwotICAgIEhlYXA6
OmhlYXAodGhpcyktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChzdG9yYWdlU2l6ZShuZXdWZWN0b3JM
ZW5ndGgpIC0gc3RvcmFnZVNpemUodmVjdG9yTGVuZ3RoKSk7Ci0gICAgCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTcyMCw3ICs3NzMsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRl
KiBleGVjLCBKU1ZhCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogfQogCi12b2lkIEpTQXJyYXk6
OnNoaWZ0Q291bnQoRXhlY1N0YXRlKiBleGVjLCBpbnQgY291bnQpCit2b2lkIEpTQXJyYXk6OnNo
aWZ0Q291bnQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBjb3VudCkKIHsKICAgICBBU1NFUlQo
Y291bnQgPiAwKTsKICAgICAKQEAgLTc2Miw3ICs4MTUsNyBAQCB2b2lkIEpTQXJyYXk6OnNoaWZ0
Q291bnQoRXhlY1N0YXRlKiBleGVjCiAgICAgICAgIG1fdmVjdG9yTGVuZ3RoIC09IGNvdW50Owog
ICAgICAgICAKICAgICAgICAgaWYgKG1fdmVjdG9yTGVuZ3RoKSB7Ci0gICAgICAgICAgICBjaGFy
KiBuZXdCYXNlU3RvcmFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHN0b3JhZ2UpICsgY291
bnQgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICBjaGFyKiBuZXdCYXNlU3RvcmFnZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHN0b3JhZ2UpICsgY291bnQgKiBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KTsKICAgICAgICAgICAgIG1lbW1vdmUobmV3QmFzZVN0b3JhZ2UsIHN0
b3JhZ2UsIHN0b3JhZ2VTaXplKDApKTsKICAgICAgICAgICAgIG1fc3RvcmFnZSA9IHJlaW50ZXJw
cmV0X2Nhc3RfcHRyPEFycmF5U3RvcmFnZSo+KG5ld0Jhc2VTdG9yYWdlKTsKIApAQCAtNzcxLDcg
KzgyNCw3IEBAIHZvaWQgSlNBcnJheTo6c2hpZnRDb3VudChFeGVjU3RhdGUqIGV4ZWMKICAgICB9
CiB9CiAgICAgCi12b2lkIEpTQXJyYXk6OnVuc2hpZnRDb3VudChFeGVjU3RhdGUqIGV4ZWMsIGlu
dCBjb3VudCkKK3ZvaWQgSlNBcnJheTo6dW5zaGlmdENvdW50KEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgY291bnQpCiB7CiAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gbV9zdG9yYWdlOwog
CkBAIC03OTksMTcgKzg1MiwxNyBAQCB2b2lkIEpTQXJyYXk6OnVuc2hpZnRDb3VudChFeGVjU3Rh
dGUqIGV4CiAgICAgCiAgICAgaWYgKG1faW5kZXhCaWFzID49IGNvdW50KSB7CiAgICAgICAgIG1f
aW5kZXhCaWFzIC09IGNvdW50OwotICAgICAgICBjaGFyKiBuZXdCYXNlU3RvcmFnZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KHN0b3JhZ2UpIC0gY291bnQgKiBzaXplb2YoSlNWYWx1ZSk7Cisg
ICAgICAgIGNoYXIqIG5ld0Jhc2VTdG9yYWdlID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc3Rv
cmFnZSkgLSBjb3VudCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwogICAgICAgICBt
ZW1tb3ZlKG5ld0Jhc2VTdG9yYWdlLCBzdG9yYWdlLCBzdG9yYWdlU2l6ZSgwKSk7CiAgICAgICAg
IG1fc3RvcmFnZSA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEFycmF5U3RvcmFnZSo+KG5ld0Jhc2VT
dG9yYWdlKTsKICAgICAgICAgbV92ZWN0b3JMZW5ndGggKz0gY291bnQ7Ci0gICAgfSBlbHNlIGlm
ICghaW5jcmVhc2VWZWN0b3JQcmVmaXhMZW5ndGgobV92ZWN0b3JMZW5ndGggKyBjb3VudCkpIHsK
KyAgICB9IGVsc2UgaWYgKCF1bnNoaWZ0Q291bnRTbG93Q2FzZShjb3VudCkpIHsKICAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVjdG9yOwot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgdmVjdG9yW2ldLmNsZWFyKCk7CiB9CiAKQEAg
LTg3NSw3ICs5MjgsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnROdW1lcmljKEV4ZWNTdGF0ZSogZXhl
CiAgICAgLy8gRm9yIG51bWVyaWMgY29tcGFyaXNvbiwgd2hpY2ggaXMgZmFzdCwgcXNvcnQgaXMg
ZmFzdGVyIHRoYW4gbWVyZ2Vzb3J0LiBXZQogICAgIC8vIGFsc28gZG9uJ3QgcmVxdWlyZSBtZXJn
ZXNvcnQncyBzdGFiaWxpdHksIHNpbmNlIHRoZXJlJ3Mgbm8gdXNlciB2aXNpYmxlCiAgICAgLy8g
c2lkZS1lZmZlY3QgZnJvbSBzd2FwcGluZyB0aGUgb3JkZXIgb2YgZXF1YWwgcHJpbWl0aXZlIHZh
bHVlcy4KLSAgICBxc29ydChzdG9yYWdlLT5tX3ZlY3Rvciwgc2l6ZSwgc2l6ZW9mKEpTVmFsdWUp
LCBjb21wYXJlTnVtYmVyc0ZvclFTb3J0KTsKKyAgICBxc29ydChzdG9yYWdlLT5tX3ZlY3Rvciwg
c2l6ZSwgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiksIGNvbXBhcmVOdW1iZXJzRm9yUVNv
cnQpOwogCiAgICAgY2hlY2tDb25zaXN0ZW5jeShTb3J0Q29uc2lzdGVuY3lDaGVjayk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMDM5
NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Myw4ICsxNTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBw
dXNoKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwogICAgICAgICBKU1ZhbHVlIHBvcCgpOwogCi0gICAg
ICAgIHZvaWQgc2hpZnRDb3VudChFeGVjU3RhdGUqLCBpbnQgY291bnQpOwotICAgICAgICB2b2lk
IHVuc2hpZnRDb3VudChFeGVjU3RhdGUqLCBpbnQgY291bnQpOworICAgICAgICB2b2lkIHNoaWZ0
Q291bnQoRXhlY1N0YXRlKiwgdW5zaWduZWQgY291bnQpOworICAgICAgICB2b2lkIHVuc2hpZnRD
b3VudChFeGVjU3RhdGUqLCB1bnNpZ25lZCBjb3VudCk7CiAKICAgICAgICAgYm9vbCBjYW5HZXRJ
bmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV92ZWN0b3JMZW5ndGggJiYgbV9zdG9yYWdl
LT5tX3ZlY3RvcltpXTsgfQogICAgICAgICBKU1ZhbHVlIGdldEluZGV4KHVuc2lnbmVkIGkpCkBA
IC0yNTAsNyArMjUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdW5zaWduZWQgZ2V0
TmV3VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGRlc2lyZWRMZW5ndGgpOwogICAgICAgICBib29sIGlu
Y3JlYXNlVmVjdG9yTGVuZ3RoKHVuc2lnbmVkIG5ld0xlbmd0aCk7Ci0gICAgICAgIGJvb2wgaW5j
cmVhc2VWZWN0b3JQcmVmaXhMZW5ndGgodW5zaWduZWQgbmV3TGVuZ3RoKTsKKyAgICAgICAgYm9v
bCB1bnNoaWZ0Q291bnRTbG93Q2FzZSh1bnNpZ25lZCBjb3VudCk7CiAgICAgICAgIAogICAgICAg
ICB1bnNpZ25lZCBjb21wYWN0Rm9yU29ydGluZygpOwogCkBAIC0yNTgsNyArMjU4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShDb25zaXN0ZW5jeUNo
ZWNrVHlwZSA9IE5vcm1hbENvbnNpc3RlbmN5Q2hlY2spOwogCiAgICAgICAgIHVuc2lnbmVkIG1f
dmVjdG9yTGVuZ3RoOyAvLyBUaGUgdmFsaWQgbGVuZ3RoIG9mIG1fdmVjdG9yCi0gICAgICAgIGlu
dCBtX2luZGV4QmlhczsgLy8gVGhlIG51bWJlciBvZiBKU1ZhbHVlIHNpemVkIGJsb2NrcyBiZWZv
cmUgQXJyYXlTdG9yYWdlLgorICAgICAgICB1bnNpZ25lZCBtX2luZGV4QmlhczsgLy8gVGhlIG51
bWJlciBvZiBKU1ZhbHVlIHNpemVkIGJsb2NrcyBiZWZvcmUgQXJyYXlTdG9yYWdlLgogICAgICAg
ICBBcnJheVN0b3JhZ2UgKm1fc3RvcmFnZTsKICAgICB9OwogCg==
</data>
<flag name="review"
          id="121603"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="121605"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>121189</attachid>
            <date>2012-01-04 17:17:03 -0800</date>
            <delta_ts>2012-01-04 17:17:03 -0800</delta_ts>
            <desc>simple micro-benchmark</desc>
            <filename>unshiftTest.js</filename>
            <type>application/x-javascript</type>
            <size>5990</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">dmFyIHRvdGFsVGltZSA9IDA7CgpmdW5jdGlvbiB0ZXN0VGlueUZpZm8oKQp7CiAgICB2YXIgZmlm
byA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyArK2kpCiAgICAgICAgZmlmby5wdXNo
KHRydWUpOwoKICAgIHZhciBiZWdpbiA9IG5ldyBEYXRlKCk7CiAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDUwMDAwMDsgKytpKSB7CiAgICAgICAgZmlmby5wdXNoKHRydWUpOwogICAgICAgIGZpZm8u
c2hpZnQoKTsKICAgIH0KICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpOwogICAgcHJpbnQoInRlc3RU
aW55RmlmbzoiLCAoZW5kIC0gYmVnaW4pLzEwMDAgKyAicyIpOwogICAgdG90YWxUaW1lICs9IChl
bmQgLSBiZWdpbik7Cn0KCmZ1bmN0aW9uIHRlc3RTbWFsbEZpZm8oKQp7CiAgICB2YXIgZmlmbyA9
IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKICAgICAgICBmaWZvLnB1c2go
dHJ1ZSk7CgogICAgdmFyIGJlZ2luID0gbmV3IERhdGUoKTsKICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgNTAwMDAwOyArK2kpIHsKICAgICAgICBmaWZvLnB1c2godHJ1ZSk7CiAgICAgICAgZmlmby5z
aGlmdCgpOwogICAgfQogICAgdmFyIGVuZCA9IG5ldyBEYXRlKCk7CiAgICBwcmludCgidGVzdFNt
YWxsRmlmbzoiLCAoZW5kIC0gYmVnaW4pLzEwMDAgKyAicyIpOwogICAgdG90YWxUaW1lICs9IChl
bmQgLSBiZWdpbik7Cn0KCmZ1bmN0aW9uIHRlc3RCaWdGaWZvKCkKewogICAgdmFyIGZpZm8gPSBb
XTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTAwMDAwMDsgKytpKQogICAgICAgIGZpZm8ucHVz
aCh0cnVlKTsKCiAgICB2YXIgYmVnaW4gPSBuZXcgRGF0ZSgpOwogICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDAwOyArK2kpIHsKICAgICAgICBmaWZvLnB1c2godHJ1ZSk7CiAgICAgICAgZmlm
by5zaGlmdCgpOwogICAgfQogICAgdmFyIGVuZCA9IG5ldyBEYXRlKCk7CiAgICBwcmludCgidGVz
dEJpZ0ZpZm86IiwgKGVuZCAtIGJlZ2luKS8xMDAwICsgInMiKTsKICAgIHRvdGFsVGltZSArPSAo
ZW5kIC0gYmVnaW4pOwp9CgpmdW5jdGlvbiB0ZXN0VGlueVJldmVyc2VGaWZvKCkKewogICAgdmFy
IGZpZm8gPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgKytpKQogICAgICAgIGZpZm8u
dW5zaGlmdCh0cnVlKTsKCiAgICB2YXIgYmVnaW4gPSBuZXcgRGF0ZSgpOwogICAgZm9yICh2YXIg
aSA9IDA7IGkgPCA1MDAwMDAwOyArK2kpIHsKICAgICAgICBmaWZvLnVuc2hpZnQodHJ1ZSk7CiAg
ICAgICAgZmlmby5wb3AoKTsKICAgIH0KICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpOwogICAgcHJp
bnQoInRlc3RUaW55UmV2ZXJzZUZpZm86IiwgKGVuZCAtIGJlZ2luKS8xMDAwICsgInMiKTsKICAg
IHRvdGFsVGltZSArPSAoZW5kIC0gYmVnaW4pOwp9CgpmdW5jdGlvbiB0ZXN0U21hbGxSZXZlcnNl
RmlmbygpCnsKICAgIHZhciBmaWZvID0gW107CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsg
KytpKQogICAgICAgIGZpZm8udW5zaGlmdCh0cnVlKTsKCiAgICB2YXIgYmVnaW4gPSBuZXcgRGF0
ZSgpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1MDAwMDAwOyArK2kpIHsKICAgICAgICBmaWZv
LnVuc2hpZnQodHJ1ZSk7CiAgICAgICAgZmlmby5wb3AoKTsKICAgIH0KICAgIHZhciBlbmQgPSBu
ZXcgRGF0ZSgpOwogICAgcHJpbnQoInRlc3RTbWFsbFJldmVyc2VGaWZvOiIsIChlbmQgLSBiZWdp
bikvMTAwMCArICJzIik7CiAgICB0b3RhbFRpbWUgKz0gKGVuZCAtIGJlZ2luKTsKfQoKZnVuY3Rp
b24gdGVzdEJpZ1JldmVyc2VGaWZvKCkKewogICAgdmFyIGZpZm8gPSBbXTsKICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgNTAwMDAwMDsgKytpKQogICAgICAgIGZpZm8udW5zaGlmdCh0cnVlKTsKCiAg
ICB2YXIgYmVnaW4gPSBuZXcgRGF0ZSgpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1MDAwMDAw
OyArK2kpIHsKICAgICAgICBmaWZvLnVuc2hpZnQodHJ1ZSk7CiAgICAgICAgZmlmby5wb3AoKTsK
ICAgIH0KICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpOwogICAgcHJpbnQoInRlc3RCaWdSZXZlcnNl
RmlmbzoiLCAoZW5kIC0gYmVnaW4pLzEwMDAgKyAicyIpOwogICAgdG90YWxUaW1lICs9IChlbmQg
LSBiZWdpbik7Cn0KCmZ1bmN0aW9uIHRlc3RUaW55U3RhY2soKQp7CiAgICB2YXIgYmVnaW4gPSBu
ZXcgRGF0ZSgpOwogICAgZm9yICh2YXIgdGltZXMgPSAwOyB0aW1lcyA8IDEwMDAwMDAwOyArK3Rp
bWVzKSB7CiAgICAgICAgdmFyIHN0YWNrID0gW107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCA1OyArK2kpCiAgICAgICAgICAgIHN0YWNrLnB1c2godHJ1ZSk7CiAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCA1OyArK2kpCiAgICAgICAgICAgIHN0YWNrLnBvcCgpOwogICAgfQogICAgdmFy
IGVuZCA9IG5ldyBEYXRlKCk7CiAgICBwcmludCgidGVzdFRpbnlTdGFjazoiLCAoZW5kIC0gYmVn
aW4pLzEwMDAgKyAicyIpOwogICAgdG90YWxUaW1lICs9IChlbmQgLSBiZWdpbik7Cn0KCmZ1bmN0
aW9uIHRlc3RTbWFsbFN0YWNrKCkKewogICAgdmFyIGJlZ2luID0gbmV3IERhdGUoKTsKICAgIGZv
ciAodmFyIHRpbWVzID0gMDsgdGltZXMgPCAxMDAwMDAwOyArK3RpbWVzKSB7CiAgICAgICAgdmFy
IHN0YWNrID0gW107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKICAgICAg
ICAgICAgc3RhY2sucHVzaCh0cnVlKTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsg
KytpKQogICAgICAgICAgICBzdGFjay5wb3AoKTsKICAgIH0KICAgIHZhciBlbmQgPSBuZXcgRGF0
ZSgpOwogICAgcHJpbnQoInRlc3RTbWFsbFN0YWNrOiIsIChlbmQgLSBiZWdpbikvMTAwMCArICJz
Iik7CiAgICB0b3RhbFRpbWUgKz0gKGVuZCAtIGJlZ2luKTsKfQoKZnVuY3Rpb24gdGVzdEJpZ1N0
YWNrKCkKewogICAgdmFyIGJlZ2luID0gbmV3IERhdGUoKTsKICAgIGZvciAodmFyIHRpbWVzID0g
MDsgdGltZXMgPCAxMDsgKyt0aW1lcykgewogICAgICAgIHZhciBzdGFjayA9IFtdOwogICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDA7ICsraSkKICAgICAgICAgICAgc3RhY2sucHVz
aCh0cnVlKTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpCiAgICAg
ICAgICAgIHN0YWNrLnBvcCgpOwogICAgfQogICAgdmFyIGVuZCA9IG5ldyBEYXRlKCk7CiAgICBw
cmludCgidGVzdEJpZ1N0YWNrOiIsIChlbmQgLSBiZWdpbikvMTAwMCArICJzIik7CiAgICB0b3Rh
bFRpbWUgKz0gKGVuZCAtIGJlZ2luKTsKfQoKZnVuY3Rpb24gdGVzdFRpbnlVbnN0YWNrKCkKewog
ICAgdmFyIGJlZ2luID0gbmV3IERhdGUoKTsKICAgIGZvciAodmFyIHRpbWVzID0gMDsgdGltZXMg
PCAxMDAwMDAwOyArK3RpbWVzKSB7CiAgICAgICAgdmFyIHN0YWNrID0gW107CiAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCA1OyArK2kpCiAgICAgICAgICAgIHN0YWNrLnVuc2hpZnQodHJ1ZSk7
CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyArK2kpCiAgICAgICAgICAgIHN0YWNrLnNo
aWZ0KCk7CiAgICB9CiAgICB2YXIgZW5kID0gbmV3IERhdGUoKTsKICAgIHByaW50KCJ0ZXN0VGlu
eVVuc3RhY2s6IiwgKGVuZCAtIGJlZ2luKS8xMDAwICsgInMiKTsKICAgIHRvdGFsVGltZSArPSAo
ZW5kIC0gYmVnaW4pOwp9CgpmdW5jdGlvbiB0ZXN0U21hbGxVbnN0YWNrKCkKewogICAgdmFyIGJl
Z2luID0gbmV3IERhdGUoKTsKICAgIGZvciAodmFyIHRpbWVzID0gMDsgdGltZXMgPCA1MDAwMDsg
Kyt0aW1lcykgewogICAgICAgIHZhciBzdGFjayA9IFtdOwogICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwOyArK2kpCiAgICAgICAgICAgIHN0YWNrLnVuc2hpZnQodHJ1ZSk7CiAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKICAgICAgICAgICAgc3RhY2suc2hpZnQoKTsK
ICAgIH0KICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpOwogICAgcHJpbnQoInRlc3RTbWFsbFVuc3Rh
Y2s6IiwgKGVuZCAtIGJlZ2luKS8xMDAwICsgInMiKTsKICAgIHRvdGFsVGltZSArPSAoZW5kIC0g
YmVnaW4pOwp9CgpmdW5jdGlvbiB0ZXN0QmlnVW5zdGFjaygpCnsKICAgIHZhciBzdGFjayA9IFtd
OwoKICAgIHZhciBiZWdpbiA9IG5ldyBEYXRlKCk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwMDAwOyArK2kpCiAgICAgICAgc3RhY2sudW5zaGlmdCh0cnVlKTsKICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwMDA7ICsraSkKICAgICAgICBzdGFjay5zaGlmdCgpOwogICAgdmFyIGVu
ZCA9IG5ldyBEYXRlKCk7CiAgICBwcmludCgidGVzdEJpZ1Vuc3RhY2s6IiwgKGVuZCAtIGJlZ2lu
KS8xMDAwICsgInMiKTsKICAgIHRvdGFsVGltZSArPSAoZW5kIC0gYmVnaW4pOwp9CgpmdW5jdGlv
biBwdXNoSHVnZUFycmF5KCkKewogICAgdmFyIHN0YWNrID0gW107CgogICAgdmFyIGJlZ2luID0g
bmV3IERhdGUoKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTAwMDAwMDA7ICsraSkKICAgICAg
ICBzdGFjay5wdXNoKHRydWUpOwogICAgdmFyIGVuZCA9IG5ldyBEYXRlKCk7CiAgICBwcmludCgi
cHVzaEh1Z2VBcnJheToiLCAoZW5kIC0gYmVnaW4pLzEwMDAgKyAicyIpOwogICAgdG90YWxUaW1l
ICs9IChlbmQgLSBiZWdpbik7Cn0KCmZ1bmN0aW9uIHVuc2hpZnRIdWdlQXJyYXkoKQp7CiAgICB2
YXIgc3RhY2sgPSBbXTsKCiAgICB2YXIgYmVnaW4gPSBuZXcgRGF0ZSgpOwogICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKQogICAgICAgIHN0YWNrLnVuc2hpZnQodHJ1ZSk7CiAg
ICB2YXIgZW5kID0gbmV3IERhdGUoKTsKICAgIHByaW50KCJ1bnNoaWZ0SHVnZUFycmF5OiIsIChl
bmQgLSBiZWdpbikvMTAwMCArICJzIik7CiAgICB0b3RhbFRpbWUgKz0gKGVuZCAtIGJlZ2luKTsK
fQoKZnVuY3Rpb24gdGVzdERlY2soKQp7CiAgICB2YXIgZGVjayA9IFtdOwoKICAgIHZhciBiZWdp
biA9IG5ldyBEYXRlKCk7CiAgICBmb3IgKHZhciB0aW1lcyA9IDA7IHRpbWVzIDwgMTAwMDsgKyt0
aW1lcykgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewogICAgICAg
ICAgICBkZWNrLnB1c2godHJ1ZSk7CiAgICAgICAgICAgIGRlY2sudW5zaGlmdCh0cnVlKTsKICAg
ICAgICB9CiAgICB9CiAgICB2YXIgZW5kID0gbmV3IERhdGUoKTsKICAgIHByaW50KCJ0ZXN0RGVj
azoiLCAoZW5kIC0gYmVnaW4pLzEwMDAgKyAicyIpOwogICAgdG90YWxUaW1lICs9IChlbmQgLSBi
ZWdpbik7Cn0KCmZ1bmN0aW9uIHRlc3RIdWdlRGVjaygpCnsKICAgIHZhciBkZWNrID0gW107Cgog
ICAgdmFyIGJlZ2luID0gbmV3IERhdGUoKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTAwMDAw
MDsgKytpKSB7CiAgICAgICAgZGVjay5wdXNoKHRydWUpOwogICAgICAgIGRlY2sudW5zaGlmdCh0
cnVlKTsKICAgIH0KICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpOwogICAgcHJpbnQoInRlc3RIdWdl
RGVjazoiLCAoZW5kIC0gYmVnaW4pLzEwMDAgKyAicyIpOwogICAgdG90YWxUaW1lICs9IChlbmQg
LSBiZWdpbik7Cn0KCnRyeSB7CiAgICB0ZXN0VGlueUZpZm8oKTsKICAgIHRlc3RTbWFsbEZpZm8o
KTsKICAgIHRlc3RCaWdGaWZvKCk7CgogICAgdGVzdFRpbnlSZXZlcnNlRmlmbygpOwogICAgdGVz
dFNtYWxsUmV2ZXJzZUZpZm8oKTsKICAgIHRlc3RCaWdSZXZlcnNlRmlmbygpOwoKICAgIHRlc3RU
aW55U3RhY2soKTsKICAgIHRlc3RTbWFsbFN0YWNrKCk7CiAgICB0ZXN0QmlnU3RhY2soKTsKCiAg
ICB0ZXN0VGlueVVuc3RhY2soKTsKICAgIHRlc3RTbWFsbFVuc3RhY2soKTsKICAgIHRlc3RCaWdV
bnN0YWNrKCk7CgogICAgcHVzaEh1Z2VBcnJheSgpOwogICAgdW5zaGlmdEh1Z2VBcnJheSgpOwog
ICAgCiAgICB0ZXN0RGVjaygpOwogICAgdGVzdEh1Z2VEZWNrKCk7CgogICAgcHJpbnQoInRvdGFs
VGltZToiLCB0b3RhbFRpbWUvMTAwMCArICJzIik7Cn0gY2F0Y2ggKGUpIHsKICAgIHByaW50KGUp
Owp9Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>