<?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>26591</bug_id>
          
          <creation_ts>2009-06-21 16:10:03 -0700</creation_ts>
          <short_desc>Support revivers in JSON.parse</short_desc>
          <delta_ts>2009-06-22 18:28:21 -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>26587</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>127258</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-21 16:10:03 -0700</bug_when>
    <thetext>As in title</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127538</commentid>
    <comment_count>1</comment_count>
      <attachid>31698</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-22 18:11:25 -0700</bug_when>
    <thetext>Created attachment 31698
JSON.parse with reviver support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127539</commentid>
    <comment_count>2</comment_count>
      <attachid>31698</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-22 18:18:09 -0700</bug_when>
    <thetext>Comment on attachment 31698
JSON.parse with reviver support

&gt; +        (JSC::):

Please remove this garbage line inserted by the script.

&gt; +    JSValue callReviver(JSValue unfiltered, JSValue property) {

Please move this brace onto a separate line.

&gt; +        JSValue args[] = {property, unfiltered};

Could you add spaces inside the braces please?

I&apos;m worried that the arguments here are in the opposite order from the actual JavaScript function.

&gt; +                array-&gt;setIndex(indexStack.last(), callReviver(outValue, jsString(m_exec, UString::from(indexStack.last()))));

Gosh that UString::from is going to be slow!

&gt; +    Walker texasRanger(exec, asObject(function), callType, callData);
&gt; +    return texasRanger.walk(unfiltered);

You can just put this on one line and so you won&apos;t have to apologize to our friends from Texas.

You forgot to include the expected results.

r=me if you fix these things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127541</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-22 18:28:21 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	JavaScriptCore/ChangeLog
	M	JavaScriptCore/runtime/JSONObject.cpp
	M	LayoutTests/ChangeLog
	M	LayoutTests/fast/js/JSON-parse-expected.txt
	M	LayoutTests/fast/js/resources/JSON-parse.js
Committed r44968
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31698</attachid>
            <date>2009-06-22 18:11:25 -0700</date>
            <delta_ts>2009-06-22 18:18:09 -0700</delta_ts>
            <desc>JSON.parse with reviver support</desc>
            <filename>JSON.parse.reviver.patch</filename>
            <type>text/plain</type>
            <size>14798</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAxZjdhYjcxLi41ZmQwMjllIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMDktMDYtMjIgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjY1OTE6IFN1cHBv
cnQgcmV2aXZlcnMgaW4gSlNPTi5wYXJzZQorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2NTkxPgorCisgICAgICAgIEFkZCByZXZpdmVyIHN1cHBvcnQg
dG8gSlNPTi5wYXJzZS4gIFRoaXMgY29tcGxldGVzIHRoZSBKU09OIG9iamVjdC4KKworICAgICAg
ICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OldhbGtlcjo6V2Fsa2Vy
KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjpjYWxsUmV2aXZlcik6CisgICAgICAgIChKU0M6Oik6
CisgICAgICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1
bmNQYXJzZSk6CisKIDIwMDktMDYtMjEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCmluZGV4IGMxYjI4NGMuLjEzNTNkZTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09OT2JqZWN0LmNwcApAQCAtNTg3LDcgKzU4NywxNDQgQEAgdm9pZCBKU09OT2JqZWN0Ojpt
YXJrU3RyaW5naWZpZXJzKFN0cmluZ2lmaWVyKiBzdHJpbmdpZmllcikKICAgICBzdHJpbmdpZmll
ci0+bWFyaygpOwogfQogCi0vLyBFQ01BLTI2MiB2NSAxNS4xMi4zCitjbGFzcyBXYWxrZXIgewor
cHVibGljOgorICAgIFdhbGtlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBmdW5jdGlvbiwg
Q2FsbFR5cGUgY2FsbFR5cGUsIENhbGxEYXRhIGNhbGxEYXRhKQorICAgICAgICA6IG1fZXhlYyhl
eGVjKQorICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICwgbV9jYWxsVHlw
ZShjYWxsVHlwZSkKKyAgICAgICAgLCBtX2NhbGxEYXRhKGNhbGxEYXRhKQorICAgIHsKKyAgICB9
CisgICAgSlNWYWx1ZSB3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCk7Citwcml2YXRlOgorICAgIEpT
VmFsdWUgY2FsbFJldml2ZXIoSlNWYWx1ZSB1bmZpbHRlcmVkLCBKU1ZhbHVlIHByb3BlcnR5KSB7
CisgICAgICAgIEpTVmFsdWUgYXJnc1tdID0ge3Byb3BlcnR5LCB1bmZpbHRlcmVkfTsKKyAgICAg
ICAgQXJnTGlzdCBhcmdMaXN0KGFyZ3MsIDIpOworICAgICAgICByZXR1cm4gY2FsbChtX2V4ZWMs
IG1fZnVuY3Rpb24sIG1fY2FsbFR5cGUsIG1fY2FsbERhdGEsIGpzTnVsbCgpLCBhcmdMaXN0KTsK
KyAgICB9CisKKyAgICBmcmllbmQgY2xhc3MgSG9sZGVyOworCisgICAgRXhlY1N0YXRlKiBtX2V4
ZWM7CisgICAgSlNPYmplY3QqIG1fZnVuY3Rpb247CisgICAgQ2FsbFR5cGUgbV9jYWxsVHlwZTsK
KyAgICBDYWxsRGF0YSBtX2NhbGxEYXRhOworfTsKKyAgICAKK2VudW0gV2Fsa2VyU3RhdGUgeyBT
dGF0ZVVua25vd24sIEFycmF5U3RhcnRTdGF0ZSwgQXJyYXlTdGFydFZpc2l0TWVtYmVyLCBBcnJh
eUVuZFZpc2l0TWVtYmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVj
dFN0YXJ0U3RhdGUsIE9iamVjdFN0YXJ0VmlzaXRNZW1iZXIsIE9iamVjdEVuZFZpc2l0TWVtYmVy
IH07CitORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVk
KQoreworICAgIFZlY3RvcjxQcm9wZXJ0eU5hbWVBcnJheSwgMTY+IHByb3BlcnR5U3RhY2s7Cisg
ICAgVmVjdG9yPHVpbnQzMl90LCAxNj4gaW5kZXhTdGFjazsKKyAgICBWZWN0b3I8SlNPYmplY3Qq
LCAxNj4gb2JqZWN0U3RhY2s7CisgICAgVmVjdG9yPEpTQXJyYXkqLCAxNj4gYXJyYXlTdGFjazsK
KyAgICAKKyAgICBWZWN0b3I8V2Fsa2VyU3RhdGUsIDE2PiBzdGF0ZVN0YWNrOworICAgIFdhbGtl
clN0YXRlIHN0YXRlID0gU3RhdGVVbmtub3duOworICAgIEpTVmFsdWUgaW5WYWx1ZSA9IHVuZmls
dGVyZWQ7CisgICAgSlNWYWx1ZSBvdXRWYWx1ZSA9IGpzTnVsbCgpOworICAgIHdoaWxlICgxKSB7
CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgICAgIGFycmF5U3RhcnRTdGF0ZToK
KyAgICAgICAgICAgIGNhc2UgQXJyYXlTdGFydFN0YXRlOiB7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGluVmFsdWUuaXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzSlNBcnJh
eSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KGluVmFsdWUpKSk7CisgICAgICAgICAg
ICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KGluVmFsdWUpOworICAgICAgICAgICAgICAg
IGFycmF5U3RhY2suYXBwZW5kKGFycmF5KTsKKyAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFw
cGVuZCgwKTsKKyAgICAgICAgICAgICAgICAvLyBmYWxsdGhyb3VnaAorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYXJyYXlTdGFydFZpc2l0TWVtYmVyOgorICAgICAgICAgICAgY2FzZSBBcnJh
eVN0YXJ0VmlzaXRNZW1iZXI6IHsKKyAgICAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFy
cmF5U3RhY2subGFzdCgpOworICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4ID0gaW5kZXhT
dGFjay5sYXN0KCk7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IGFycmF5LT5sZW5ndGgo
KSkgeworICAgICAgICAgICAgICAgICAgICBvdXRWYWx1ZSA9IGFycmF5OworICAgICAgICAgICAg
ICAgICAgICBhcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgaW5k
ZXhTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpblZhbHVlID0gYXJyYXktPmdldEluZGV4KGlu
ZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAoaW5WYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKEFycmF5RW5kVmlzaXRNZW1iZXIpOworICAg
ICAgICAgICAgICAgICAgICBnb3RvIHN0YXRlVW5rbm93bjsKKyAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgb3V0VmFsdWUgPSBpblZhbHVlOworICAgICAgICAgICAg
ICAgIC8vIGZhbGx0aHJvdWdoCisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEFycmF5
RW5kVmlzaXRNZW1iZXI6IHsKKyAgICAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFycmF5
U3RhY2subGFzdCgpOworICAgICAgICAgICAgICAgIGFycmF5LT5zZXRJbmRleChpbmRleFN0YWNr
Lmxhc3QoKSwgY2FsbFJldml2ZXIob3V0VmFsdWUsIGpzU3RyaW5nKG1fZXhlYywgVVN0cmluZzo6
ZnJvbShpbmRleFN0YWNrLmxhc3QoKSkpKSk7CisgICAgICAgICAgICAgICAgaWYgKG1fZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAg
ICAgICAgICAgICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOworICAgICAgICAgICAgICAgIGdvdG8g
YXJyYXlTdGFydFZpc2l0TWVtYmVyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb2JqZWN0
U3RhcnRTdGF0ZToKKyAgICAgICAgICAgIGNhc2UgT2JqZWN0U3RhcnRTdGF0ZTogeworICAgICAg
ICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgIEFT
U0VSVCghaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmplY3QoaW5WYWx1ZSkp
KTsKKyAgICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoaW5WYWx1ZSk7
CisgICAgICAgICAgICAgICAgb2JqZWN0U3RhY2suYXBwZW5kKG9iamVjdCk7CisgICAgICAgICAg
ICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CisgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFj
ay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7CisgICAgICAgICAgICAgICAgb2Jq
ZWN0LT5nZXRQcm9wZXJ0eU5hbWVzKG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCkpOworICAg
ICAgICAgICAgICAgIC8vIGZhbGx0aHJvdWdoCisgICAgICAgICAgICB9CisgICAgICAgICAgICBv
YmplY3RTdGFydFZpc2l0TWVtYmVyOgorICAgICAgICAgICAgY2FzZSBPYmplY3RTdGFydFZpc2l0
TWVtYmVyOiB7CisgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IG9iamVjdFN0YWNr
Lmxhc3QoKTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBpbmRleCA9IGluZGV4U3RhY2subGFz
dCgpOworICAgICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0aWVzID0gcHJv
cGVydHlTdGFjay5sYXN0KCk7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IHByb3BlcnRp
ZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG91dFZhbHVlID0gb2JqZWN0OworICAg
ICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAg
ICAgICAgIGluZGV4U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAgICAgICBwcm9w
ZXJ0eVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OworICAgICAg
ICAgICAgICAgIG9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KG1fZXhlYywgcHJvcGVydGllc1tp
bmRleF0sIHNsb3QpOworICAgICAgICAgICAgICAgIGluVmFsdWUgPSBzbG90LmdldFZhbHVlKG1f
ZXhlYywgcHJvcGVydGllc1tpbmRleF0pOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9leGVj
LT5oYWRFeGNlcHRpb24oKSk7CisgICAgICAgICAgICAgICAgaWYgKGluVmFsdWUuaXNPYmplY3Qo
KSkgeworICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChPYmplY3RFbmRWaXNp
dE1lbWJlcik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhdGVVbmtub3duOworICAgICAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBvdXRWYWx1ZSA9IGluVmFsdWU7
CisgICAgICAgICAgICAgICAgLy8gZmFsbHRocm91Z2gKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGNhc2UgT2JqZWN0RW5kVmlzaXRNZW1iZXI6IHsKKyAgICAgICAgICAgICAgICBKU09iamVj
dCogb2JqZWN0ID0gb2JqZWN0U3RhY2subGFzdCgpOworICAgICAgICAgICAgICAgIElkZW50aWZp
ZXIgcHJvcCA9IHByb3BlcnR5U3RhY2subGFzdCgpW2luZGV4U3RhY2subGFzdCgpXTsKKyAgICAg
ICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgICAgICAgICBvYmplY3Qt
PnB1dChtX2V4ZWMsIHByb3AsIGNhbGxSZXZpdmVyKG91dFZhbHVlLCBqc1N0cmluZyhtX2V4ZWMs
IHByb3AudXN0cmluZygpKSksIHNsb3QpOworICAgICAgICAgICAgICAgIGlmIChtX2V4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAg
ICAgICAgICAgICAgaW5kZXhTdGFjay5sYXN0KCkrKzsKKyAgICAgICAgICAgICAgICBnb3RvIG9i
amVjdFN0YXJ0VmlzaXRNZW1iZXI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZVVu
a25vd246CisgICAgICAgICAgICBjYXNlIFN0YXRlVW5rbm93bjoKKyAgICAgICAgICAgICAgICBp
ZiAoIWluVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgICAgICAgICBvdXRWYWx1ZSA9
IGluVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgYXNP
YmplY3QoaW5WYWx1ZSkpKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGFycmF5U3RhcnRTdGF0
ZTsKKyAgICAgICAgICAgICAgICBnb3RvIG9iamVjdFN0YXJ0U3RhdGU7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHN0YXRlU3RhY2suaXNFbXB0eSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIHN0YXRlID0gc3RhdGVTdGFjay5sYXN0KCk7CisgICAgICAgIHN0YXRlU3RhY2sucmVtb3Zl
TGFzdCgpOworICAgIH0KKyAgICByZXR1cm4gY2FsbFJldml2ZXIob3V0VmFsdWUsIGpzRW1wdHlT
dHJpbmcobV9leGVjKSk7Cit9CisKKy8vIEVDTUEtMjYyIHY1IDE1LjEyLjIKIEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jUGFyc2UoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCos
IEpTVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgp
KQpAQCAtNTk4LDExICs3MzUsMjAgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1
bmNQYXJzZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSwgY28KICAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOwogICAgIAogICAgIExpdGVyYWxQYXJzZXIganNvblBhcnNlcihleGVj
LCBzb3VyY2UsIExpdGVyYWxQYXJzZXI6OlN0cmljdEpTT04pOwotICAgIEpTVmFsdWUgcGFyc2Vk
T2JqZWN0ID0ganNvblBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKLSAgICBpZiAoIXBhcnNlZE9i
amVjdCkKKyAgICBKU1ZhbHVlIHVuZmlsdGVyZWQgPSBqc29uUGFyc2VyLnRyeUxpdGVyYWxQYXJz
ZSgpOworICAgIGlmICghdW5maWx0ZXJlZCkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhl
YywgU3ludGF4RXJyb3IsICJVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmciKTsKICAgICAKLSAg
ICByZXR1cm4gcGFyc2VkT2JqZWN0OworICAgIGlmIChhcmdzLnNpemUoKSA8IDIpCisgICAgICAg
IHJldHVybiB1bmZpbHRlcmVkOworICAgIAorICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBhcmdzLmF0
KDEpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZnVu
Y3Rpb24uZ2V0Q2FsbERhdGEoY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlw
ZU5vbmUpCisgICAgICAgIHJldHVybiB1bmZpbHRlcmVkOworICAgIFdhbGtlciB0ZXhhc1Jhbmdl
cihleGVjLCBhc09iamVjdChmdW5jdGlvbiksIGNhbGxUeXBlLCBjYWxsRGF0YSk7CisgICAgcmV0
dXJuIHRleGFzUmFuZ2VyLndhbGsodW5maWx0ZXJlZCk7CiB9CiAKIC8vIEVDTUEtMjYyIHY1IDE1
LjEyLjMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA0NjQxNjBhLi4xNTljZTM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MDktMDYtMjIgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjY1OTE6IFN1cHBvcnQgcmV2
aXZlcnMgaW4gSlNPTi5wYXJzZQorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI2NTkxPgorCisgICAgICAgIFRlc3QgY2FzZXMgZm9yIEpTT04ucGFyc2Ug
d2l0aCBhIHJldml2ZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9K
U09OLXBhcnNlLmpzOgorICAgICAgICAoY3JlYXRlVGVzdHMubG9nKToKKyAgICAgICAgKGNyZWF0
ZVRlc3RzLnJlc3VsdCk6CisgICAgICAgIChjcmVhdGVUZXN0cy5sb2dPcmRlcik6CisgICAgICAg
IChjcmVhdGVUZXN0cy52YXIpOgorICAgICAgICAoY3JlYXRlVGVzdHMudGhyb3dBZnRlckZpZnRo
Q2FsbCk6CisgICAgICAgIChjcmVhdGVUZXN0cyk6CisKIDIwMDktMDYtMjIgIFNhbSBXZWluaWcg
IDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9KU09OLXBhcnNlLmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvSlNPTi1wYXJzZS5qcwppbmRleCBlOTA4MGU5Li4z
NmNiMjczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9KU09OLXBh
cnNlLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL0pTT04tcGFyc2UuanMK
QEAgLTM1MCwxMSArMzUwLDE4MSBAQCBmdW5jdGlvbiBjcmVhdGVUZXN0cygpIHsKICAgICByZXN1
bHQucHVzaChmdW5jdGlvbihqc29uT2JqZWN0KXsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGxleE9iamVjdCxudWxsLCJcbiIpKTsKICAgICB9KTsK
KyAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdLmV4cGVjdGVkID0gSlNPTi5zdHJpbmdpZnko
Y29tcGxleE9iamVjdCk7CisgICAgZnVuY3Rpb24gbG9nKGtleSwgdmFsdWUpIHsKKyAgICAgICAg
dmFyIG8gPSB7fTsKKyAgICAgICAgb1trZXldID0gdmFsdWU7CisgICAgICAgIG8ua2V5VHlwZSA9
IHR5cGVvZiBrZXk7CisgICAgICAgIHJldHVybiBvOworICAgIH0KICAgICByZXN1bHQucHVzaChm
dW5jdGlvbihqc29uT2JqZWN0KXsKLSAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNP
Ti5zdHJpbmdpZnkoY29tcGxleE9iamVjdCxudWxsLCJcbiIpKTsKKyAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoInRydWUiLCBsb2cpOwogICAgIH0pOwotICAgIHJlc3VsdFtyZXN1bHQu
bGVuZ3RoIC0gMV0uZXhwZWN0ZWQgPSBKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0KTsKLSAg
ICAKKyAgICByZXN1bHQucHVzaChmdW5jdGlvbihqc29uT2JqZWN0KXsKKyAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoImZhbHNlIiwgbG9nKTsKKyAgICB9KTsKKyAgICByZXN1bHQucHVz
aChmdW5jdGlvbihqc29uT2JqZWN0KXsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
Im51bGwiLCBsb2cpOworICAgIH0pOworICAgIHJlc3VsdC5wdXNoKGZ1bmN0aW9uKGpzb25PYmpl
Y3QpeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgiMSIsIGxvZyk7CisgICAgfSk7
CisgICAgcmVzdWx0LnB1c2goZnVuY3Rpb24oanNvbk9iamVjdCl7CisgICAgICAgIHJldHVybiBq
c29uT2JqZWN0LnBhcnNlKCIxLjUiLCBsb2cpOworICAgIH0pOworICAgIHJlc3VsdC5wdXNoKGZ1
bmN0aW9uKGpzb25PYmplY3QpeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImEg
c3RyaW5nIicsIGxvZyk7CisgICAgfSk7CisgICAgcmVzdWx0LnB1c2goZnVuY3Rpb24oanNvbk9i
amVjdCl7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KHNp
bXBsZUFycmF5KSwgbG9nKTsKKyAgICB9KTsKKyAgICByZXN1bHQucHVzaChmdW5jdGlvbihqc29u
T2JqZWN0KXsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnko
Y29tcGxleEFycmF5KSwgbG9nKTsKKyAgICB9KTsKKyAgICByZXN1bHQucHVzaChmdW5jdGlvbihq
c29uT2JqZWN0KXsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdp
Znkoc2ltcGxlT2JqZWN0KSwgbG9nKTsKKyAgICB9KTsKKyAgICByZXN1bHQucHVzaChmdW5jdGlv
bihqc29uT2JqZWN0KXsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJp
bmdpZnkoY29tcGxleE9iamVjdCksIGxvZyk7CisgICAgfSk7CisgICAgdmFyIGxvZ09yZGVyU3Ry
aW5nOworICAgIGZ1bmN0aW9uIGxvZ09yZGVyKGtleSwgdmFsdWUpIHsKKyAgICAgICAgbG9nT3Jk
ZXJTdHJpbmcgKz0ga2V5ICsiOiIrSlNPTi5zdHJpbmdpZnkodmFsdWUpOworICAgICAgICByZXR1
cm4gbnVsbDsKKyAgICB9CisgICAgcmVzdWx0LnB1c2goZnVuY3Rpb24oanNvbk9iamVjdCl7Cisg
ICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCJ0cnVlIiwgbG9nT3JkZXIpOworICAgIH0pOworICAgIHJlc3VsdC5wdXNoKGZ1bmN0aW9u
KGpzb25PYmplY3QpeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICByZXR1
cm4ganNvbk9iamVjdC5wYXJzZSgiZmFsc2UiLCBsb2dPcmRlcik7CisgICAgfSk7CisgICAgcmVz
dWx0LnB1c2goZnVuY3Rpb24oanNvbk9iamVjdCl7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0g
IiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCJudWxsIiwgbG9nT3JkZXIpOwor
ICAgIH0pOworICAgIHJlc3VsdC5wdXNoKGZ1bmN0aW9uKGpzb25PYmplY3QpeworICAgICAgICBs
b2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgiMSIs
IGxvZ09yZGVyKTsKKyAgICB9KTsKKyAgICByZXN1bHQucHVzaChmdW5jdGlvbihqc29uT2JqZWN0
KXsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoIjEuNSIsIGxvZ09yZGVyKTsKKyAgICB9KTsKKyAgICByZXN1bHQucHVzaChmdW5j
dGlvbihqc29uT2JqZWN0KXsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAg
cmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhIHN0cmluZyInLCBsb2dPcmRlcik7CisgICAgfSk7
CisgICAgcmVzdWx0LnB1c2goZnVuY3Rpb24oanNvbk9iamVjdCl7CisgICAgICAgIGxvZ09yZGVy
U3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5n
aWZ5KHNpbXBsZUFycmF5KSwgbG9nT3JkZXIpOworICAgIH0pOworICAgIHJlc3VsdC5wdXNoKGZ1
bmN0aW9uKGpzb25PYmplY3QpeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4QXJyYXkpLCBs
b2dPcmRlcik7CisgICAgfSk7CisgICAgcmVzdWx0LnB1c2goZnVuY3Rpb24oanNvbk9iamVjdCl7
CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKEpTT04uc3RyaW5naWZ5KHNpbXBsZU9iamVjdCksIGxvZ09yZGVyKTsKKyAgICB9KTsK
KyAgICByZXN1bHQucHVzaChmdW5jdGlvbihqc29uT2JqZWN0KXsKKyAgICAgICAgbG9nT3JkZXJT
dHJpbmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdp
ZnkoY29tcGxleE9iamVjdCksIGxvZ09yZGVyKTsKKyAgICB9KTsKKyAgICByZXN1bHQucHVzaChm
dW5jdGlvbihqc29uT2JqZWN0KXsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAg
ICAganNvbk9iamVjdC5wYXJzZSgidHJ1ZSIsIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxv
Z09yZGVyU3RyaW5nOworICAgIH0pOworICAgIHJlc3VsdC5wdXNoKGZ1bmN0aW9uKGpzb25PYmpl
Y3QpeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBh
cnNlKCJmYWxzZSIsIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3RyaW5nOwor
ICAgIH0pOworICAgIHJlc3VsdC5wdXNoKGZ1bmN0aW9uKGpzb25PYmplY3QpeworICAgICAgICBs
b2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBhcnNlKCJudWxsIiwgbG9n
T3JkZXIpOworICAgICAgICByZXR1cm4gbG9nT3JkZXJTdHJpbmc7CisgICAgfSk7CisgICAgcmVz
dWx0LnB1c2goZnVuY3Rpb24oanNvbk9iamVjdCl7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0g
IiI7CisgICAgICAgIGpzb25PYmplY3QucGFyc2UoIjEiLCBsb2dPcmRlcik7CisgICAgICAgIHJl
dHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9KTsKKyAgICByZXN1bHQucHVzaChmdW5jdGlvbihq
c29uT2JqZWN0KXsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAganNvbk9i
amVjdC5wYXJzZSgiMS41IiwgbG9nT3JkZXIpOworICAgICAgICByZXR1cm4gbG9nT3JkZXJTdHJp
bmc7CisgICAgfSk7CisgICAgcmVzdWx0LnB1c2goZnVuY3Rpb24oanNvbk9iamVjdCl7CisgICAg
ICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIGpzb25PYmplY3QucGFyc2UoJyJhIHN0
cmluZyInLCBsb2dPcmRlcik7CisgICAgICAgIHJldHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9
KTsKKyAgICByZXN1bHQucHVzaChmdW5jdGlvbihqc29uT2JqZWN0KXsKKyAgICAgICAgbG9nT3Jk
ZXJTdHJpbmcgPSAiIjsKKyAgICAgICAganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShz
aW1wbGVBcnJheSksIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3RyaW5nOwor
ICAgIH0pOworICAgIHJlc3VsdC5wdXNoKGZ1bmN0aW9uKGpzb25PYmplY3QpeworICAgICAgICBs
b2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5n
aWZ5KGNvbXBsZXhBcnJheSksIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3Ry
aW5nOworICAgIH0pOworICAgIHJlc3VsdC5wdXNoKGZ1bmN0aW9uKGpzb25PYmplY3QpeworICAg
ICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBhcnNlKEpTT04u
c3RyaW5naWZ5KHNpbXBsZU9iamVjdCksIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09y
ZGVyU3RyaW5nOworICAgIH0pOworICAgIHJlc3VsdC5wdXNoKGZ1bmN0aW9uKGpzb25PYmplY3Qp
eworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBhcnNl
KEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3QpLCBsb2dPcmRlcik7CisgICAgICAgIHJldHVy
biBsb2dPcmRlclN0cmluZzsKKyAgICB9KTsKKyAgICB2YXIgY2FsbENvdW50ID0gMDsKKyAgICBm
dW5jdGlvbiB0aHJvd0FmdGVyRmlmdGhDYWxsKGtleSwgdmFsdWUpIHsKKyAgICAgICAgbG9nT3Jk
ZXIoa2V5LCB2YWx1ZSk7CisgICAgICAgIGlmICgrK2NhbGxDb3VudCA+IDUpCisgICAgICAgICAg
ICB0aHJvdyAiZnJvbSByZXZpdmVyIjsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAg
IHJlc3VsdC5wdXNoKGZ1bmN0aW9uKGpzb25PYmplY3QpeworICAgICAgICBjYWxsQ291bnQgPSAw
OworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4QXJyYXkpLCB0aHJvd0FmdGVyRmlmdGhDYWxs
KTsKKyAgICB9KTsKKyAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdLnRocm93cyA9IHRydWU7
CisgICAgcmVzdWx0LnB1c2goZnVuY3Rpb24oanNvbk9iamVjdCl7CisgICAgICAgIGNhbGxDb3Vu
dCA9IDA7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29u
T2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KHNpbXBsZU9iamVjdCksIHRocm93QWZ0ZXJGaWZ0
aENhbGwpOworICAgIH0pOworICAgIHJlc3VsdC5wdXNoKGZ1bmN0aW9uKGpzb25PYmplY3Qpewor
ICAgICAgICBjYWxsQ291bnQgPSAwOworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAg
ICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0
KSwgdGhyb3dBZnRlckZpZnRoQ2FsbCk7CisgICAgfSk7CisgICAgcmVzdWx0W3Jlc3VsdC5sZW5n
dGggLSAxXS50aHJvd3MgPSB0cnVlOworICAgIHJlc3VsdC5wdXNoKGZ1bmN0aW9uKGpzb25PYmpl
Y3QpeworICAgICAgICBjYWxsQ291bnQgPSAwOworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIi
OworICAgICAgICB0cnkgeyBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhB
cnJheSksIHRocm93QWZ0ZXJGaWZ0aENhbGwpOyB9IGNhdGNoIChlKSB7fQorICAgICAgICByZXR1
cm4gbG9nT3JkZXJTdHJpbmc7CisgICAgfSk7CisgICAgcmVzdWx0LnB1c2goZnVuY3Rpb24oanNv
bk9iamVjdCl7CisgICAgICAgIGNhbGxDb3VudCA9IDA7CisgICAgICAgIGxvZ09yZGVyU3RyaW5n
ID0gIiI7CisgICAgICAgIHRyeSB7IGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2lt
cGxlT2JqZWN0KSwgdGhyb3dBZnRlckZpZnRoQ2FsbCk7IH0gY2F0Y2ggKGUpIHt9CisgICAgICAg
IHJldHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9KTsKKyAgICByZXN1bHQucHVzaChmdW5jdGlv
bihqc29uT2JqZWN0KXsKKyAgICAgICAgY2FsbENvdW50ID0gMDsKKyAgICAgICAgbG9nT3JkZXJT
dHJpbmcgPSAiIjsKKyAgICAgICAgdHJ5IHsganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lm
eShjb21wbGV4T2JqZWN0KSwgdGhyb3dBZnRlckZpZnRoQ2FsbCk7IH0gY2F0Y2ggKGUpIHt9Cisg
ICAgICAgIHJldHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9KTsKKwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiB2YXIgdGVzdHMgPSBjcmVhdGVUZXN0cygpOwo=
</data>
<flag name="review"
          id="16298"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>