<?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>31330</bug_id>
          
          <creation_ts>2009-11-10 21:34:13 -0800</creation_ts>
          <short_desc>Expose dtoa() for ECMA-262</short_desc>
          <delta_ts>2009-11-18 19:14:41 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>27451</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>162338</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-10 21:34:13 -0800</bug_when>
    <thetext>Move the code in UString::from(double) to WTF, and expose it in order to be used by HTML5 Forms code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162339</commentid>
    <comment_count>1</comment_count>
      <attachid>42923</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-10 21:36:05 -0800</bug_when>
    <thetext>Created attachment 42923
Proposed patch (rev.2)

The difference from the patch in Bug#27451 is &quot;using WTF::ecma262dtoa;&quot; in dtoa.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162612</commentid>
    <comment_count>2</comment_count>
      <attachid>42923</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-11 12:25:15 -0800</bug_when>
    <thetext>Comment on attachment 42923
Proposed patch (rev.2)

Can you please verify that you haven&apos;t regressed SunSpider performance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162717</commentid>
    <comment_count>3</comment_count>
      <attachid>42923</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-11 16:06:58 -0800</bug_when>
    <thetext>Comment on attachment 42923
Proposed patch (rev.2)

&gt;  UString UString::from(double d)
&gt;  {
&gt; +    return UString(ecma262dtoa(d));
&gt;  }

The above change will slow down JavaScriptCore, because it makes an extra copy of the buffer. The old version translated directly from a char buffer to a UChar buffer. The new code instead goes from a char buffer to a UChar buffer and then copies the buffer again to put it into the UString. I don&apos;t see an obvious way to avoid this as long as the dtoa function returns a char buffer and the ecma262dtoa function returns a UChar buffer. But it&apos;s unacceptable to slow things down without doing performance tests to prove this is not a significant slowdown for JavaScript execution.

We should investigate other solutions that don&apos;t require allocating memory and copying the string an extra time.

If we can figure out a hard limit for the longest a double could be, then we could make the function put its result into a C-style array so there is no extra memory allocation.

&gt; +static ALWAYS_INLINE void appendAscii(const char* src, unsigned size, Vector&lt;UChar, 80&gt;&amp; dst)

Since ASCII is an acronym, we should always capitalize it as ASCII.

I’d like to see a typedef for the vector type here at the top of the file so the magic number 80 isn’t in three different places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162774</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-11 20:11:34 -0800</bug_when>
    <thetext>ecma262dtoa() uses Vector&lt;&gt; to allocate a buffer and it means using a heap allocation though the original code uses a local array.  This also can cause performance regression.

Definitely I need to change the interface of ecma262dtoa().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162811</commentid>
    <comment_count>5</comment_count>
      <attachid>43034</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-11 23:54:10 -0800</bug_when>
    <thetext>Created attachment 43034
Proposed patch (rev.3)

* Changed the function signature to &quot;unsigned ecma262dtoa(double d, char* buf)&quot;
* Avoid strlen()
* Avoid array index arithmetics</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162813</commentid>
    <comment_count>6</comment_count>
      <attachid>43035</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-11 23:55:29 -0800</bug_when>
    <thetext>Created attachment 43035
sunspider-compare-results output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162928</commentid>
    <comment_count>7</comment_count>
      <attachid>43034</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-12 09:36:48 -0800</bug_when>
    <thetext>Comment on attachment 43034
Proposed patch (rev.3)

&gt;  UString UString::from(double d)
&gt;  {
&gt;      char buf[80];
&gt; +    unsigned len = ecma262dtoa(d, buf);
&gt; +    buf[len] = 0;
&gt;      return UString(buf);
&gt;  }

We could make this even more efficient by making a new UString constructor that takes a const char* and a length to avoid the unnecessary strlen. That&apos;s not strictly necessary, but sure would be nice.

&gt;  #include &lt;wtf/Assertions.h&gt;
&gt;  #include &lt;wtf/FastMalloc.h&gt;
&gt; +//#include &lt;wtf/MathExtras.h&gt;
&gt;  #include &lt;wtf/Vector.h&gt;
&gt;  #include &lt;wtf/Threading.h&gt;

Why the added-but-commented-out include?

&gt; +static ALWAYS_INLINE char* append(char* next, const char* src, unsigned size)
&gt; +{
&gt; +    for (unsigned i = 0; i &lt; size; ++i)
&gt; +        *next++ = static_cast&lt;unsigned char&gt;(*src++);
&gt; +    return next;
&gt; +}
&gt; +
&gt; +static ALWAYS_INLINE char* append(char* next, const char* src)
&gt; +{
&gt; +    while (*src)
&gt; +        *next++ = static_cast&lt;unsigned char&gt;(*src++);
&gt; +    return next;
&gt; +}

I would have made the &quot;next&quot; argument be a char*&amp; rather than using a return value.

Why the casts to unsigned char? Those are not at all helpful.

&gt; +    // dtoa() for ECMA-262 &apos;ToString Applied to the Number Type.&apos;
&gt; +    // The buffer pointed by buf must have at least 80 elements.

I&apos;d like to see a constant with that value 80. It&apos;s not good to have a comment in one file and then the number typed in some other source file. Maybe something like this?

    typedef char dtoaECMA262Buffer[80];

&gt; +    // The return value is the length of the resultant string in buf.
&gt; +    // The resultant string isn&apos;t terminated by 0.
&gt; +    unsigned ecma262dtoa(double d, char* buf);

I don&apos;t think it&apos;s great to name the function dtoa when it returns a length. Maybe the length could be an out argument instead. Or somehow we could name the function in a way that makes it clear its return value is the length of the string.

It might be better to give this a name with a nicer format.I&apos;m not sure having ECMA262 in the name is good. The colloquial name for this is JavaScript, so maybe this super-long name would be OK, or maybe some shorter variant.

    doubleToStringInJavaScriptFormatReturningLength

The argument name &quot;d&quot; doesn&apos;t add anything here, so I&apos;d suggest leaving it out. The argument name &quot;buf&quot; could instead be a word, &quot;buffer&quot;.

It would be clearer if the buffer argument was declared as an 80-character array rather than a char*. Because of how C handles arrays, the two are probably equivalent at runtime, but declaring it that way is a clearer way to indicate it needs the 80 characters than just the comment.

review- mainly because of that stray commented out include, but please consider my other comments and suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164144</commentid>
    <comment_count>8</comment_count>
      <attachid>43340</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-16 20:29:36 -0800</bug_when>
    <thetext>Created attachment 43340
Proposed patch (rev.4)

Thank you for reviewing.  I have updated the patch.

(In reply to comment #7)
&gt; &gt; +    unsigned len = ecma262dtoa(d, buf);
&gt; &gt; +    buf[len] = 0;
&gt; &gt;      return UString(buf);
&gt; &gt;  }
&gt; 
&gt; We could make this even more efficient by making a new UString constructor that
&gt; takes a const char* and a length to avoid the unnecessary strlen. That&apos;s not
&gt; strictly necessary, but sure would be nice.

I added a UString(const char*, unsigned) and createRep(ditto).

&gt; &gt; +//#include &lt;wtf/MathExtras.h&gt;
&gt; &gt;  #include &lt;wtf/Vector.h&gt;
&gt; &gt;  #include &lt;wtf/Threading.h&gt;
&gt; 
&gt; Why the added-but-commented-out include?

Oops, removed.

&gt; &gt; +static ALWAYS_INLINE char* append(char* next, const char* src, unsigned size)
&gt; &gt; +static ALWAYS_INLINE char* append(char* next, const char* src)
&gt; 
&gt; I would have made the &quot;next&quot; argument be a char*&amp; rather than using a return
&gt; value.

done.

&gt; Why the casts to unsigned char? Those are not at all helpful.

Removed.  It was meaningful when the destination was UChar*.

&gt; &gt; +    // dtoa() for ECMA-262 &apos;ToString Applied to the Number Type.&apos;
&gt; &gt; +    // The buffer pointed by buf must have at least 80 elements.
&gt; 
&gt; I&apos;d like to see a constant with that value 80. It&apos;s not good to have a comment
&gt; in one file and then the number typed in some other source file. Maybe
&gt; something like this?
&gt; 
&gt;     typedef char dtoaECMA262Buffer[80];

Introduced DtoaBuffer, which is for both of dtoa() and this.

&gt; &gt; +    // The return value is the length of the resultant string in buf.
&gt; &gt; +    // The resultant string isn&apos;t terminated by 0.
&gt; &gt; +    unsigned ecma262dtoa(double d, char* buf);
&gt; 
&gt; I don&apos;t think it&apos;s great to name the function dtoa when it returns a length.
&gt; Maybe the length could be an out argument instead. Or somehow we could name the
&gt; function in a way that makes it clear its return value is the length of the
&gt; string.
&gt; 
&gt; It might be better to give this a name with a nicer format.I&apos;m not sure having
&gt; ECMA262 in the name is good. The colloquial name for this is JavaScript, so
&gt; maybe this super-long name would be OK, or maybe some shorter variant.
&gt; 
&gt;     doubleToStringInJavaScriptFormatReturningLength
&gt;
&gt; The argument name &quot;d&quot; doesn&apos;t add anything here, so I&apos;d suggest leaving it out.
&gt; The argument name &quot;buf&quot; could instead be a word, &quot;buffer&quot;.

I changed it to:
  void doubleToStringInJavaScriptFormat(double, DtoaBuffer buffer, unsigned* resultLength);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164631</commentid>
    <comment_count>9</comment_count>
      <attachid>43340</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 10:55:57 -0800</bug_when>
    <thetext>Comment on attachment 43340
Proposed patch (rev.4)

&gt; +    UChar* d;
&gt; +    if (!allocChars(length).getValue(d))
&gt; +        return &amp;UString::Rep::null();
&gt; +    else {
&gt; +        for (unsigned i = 0; i &lt; length; i++)
&gt; +            d[i] = static_cast&lt;unsigned char&gt;(c[i]); // use unsigned char to zero-extend instead of sign-extend
&gt; +        return UString::Rep::create(d, static_cast&lt;int&gt;(length));
&gt; +    }
&gt; +
&gt; +}

Normally we do early return, not else after return. There&apos;s also an extra blank line here.

Is the static_cast&lt;int&gt; really needed?

I suggest marking this createRep function, which is used in only one place, inline.

&gt;          UString();
&gt; +        // Constructor for null-terminated ASCII string.
&gt;          UString(const char*);
&gt; +        // Constructor for non-null-terminated ASCII string.
&gt; +        UString(const char*, unsigned length);
&gt;          UString(const UChar*, int length);
&gt;          UString(UChar*, int length, bool copy);

Given that the other constructors take int for length, why did you chose unsigned? If this was a new class, I would probably use size_t or perhaps unsigned, but typically we just keep new consistent with old, locally.

&gt; +    // dtoa() for ECMA-262 &apos;ToString Applied to the Number Type.&apos;
&gt; +    // The *resultLength will have the length of the resultant string in bufer.
&gt; +    // The resultant string isn&apos;t terminated by 0.
&gt; +    void doubleToStringInJavaScriptFormat(double, DtoaBuffer buffer, unsigned* resultLength);
&gt;  } // namespace WTF

Probably would be slightly nicer to have a blank line before the closing brace. Could omit the name &quot;buffer&quot; since the type name already says that.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164878</commentid>
    <comment_count>10</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-18 19:06:23 -0800</bug_when>
    <thetext>I&apos;ll land this manually with the following changes.

(In reply to comment #9)
&gt; (From update of attachment 43340 [details])
&gt; &gt; +    UChar* d;
&gt; &gt; +    if (!allocChars(length).getValue(d))
&gt; &gt; +        return &amp;UString::Rep::null();
&gt; &gt; +    else {
&gt; &gt; +        for (unsigned i = 0; i &lt; length; i++)
&gt; &gt; +            d[i] = static_cast&lt;unsigned char&gt;(c[i]); // use unsigned char to zero-extend instead of sign-extend
&gt; &gt; +        return UString::Rep::create(d, static_cast&lt;int&gt;(length));
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +}
&gt; 
&gt; Normally we do early return, not else after return. There&apos;s also an extra blank
&gt; line here.

Fixed them.

&gt; Is the static_cast&lt;int&gt; really needed?

Changed the unsigned parameter to int.  So it is not needed.

&gt; I suggest marking this createRep function, which is used in only one place,
&gt; inline.

Done.

&gt; &gt; +        UString(const char*, unsigned length);
&gt; &gt;          UString(const UChar*, int length);
&gt; &gt;          UString(UChar*, int length, bool copy);
&gt; 
&gt; Given that the other constructors take int for length, why did you chose
&gt; unsigned? If this was a new class, I would probably use size_t or perhaps
&gt; unsigned, but typically we just keep new consistent with old, locally.

Change it to int.

&gt; &gt; +    void doubleToStringInJavaScriptFormat(double, DtoaBuffer buffer, unsigned* resultLength);
&gt; &gt;  } // namespace WTF
&gt; 
&gt; Probably would be slightly nicer to have a blank line before the closing brace.

Done.

&gt; Could omit the name &quot;buffer&quot; since the type name already says that.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164880</commentid>
    <comment_count>11</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-18 19:13:52 -0800</bug_when>
    <thetext>Committed r51168: &lt;http://trac.webkit.org/changeset/51168&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42923</attachid>
            <date>2009-11-10 21:36:05 -0800</date>
            <delta_ts>2009-11-11 23:54:10 -0800</delta_ts>
            <desc>Proposed patch (rev.2)</desc>
            <filename>0001-step-dtoa-2.patch</filename>
            <type>text/plain</type>
            <size>8636</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSA5YzNkNzU0YWRlYjg2Y2VmYmEyNDY4NzcxNTdhNjk3NWQxMWIzYzk2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBXZWQsIDI4IE9jdCAyMDA5IDE3OjQ3OjE0ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gc3RlcC1k
dG9hLTIKCi0tLQogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDE3ICsrKysKIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCAgICAg
ICAgICAgICAgICAgIHwgICAgMSArCiAuLi4vSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmICAgICAgICAgICAgICB8ICAgIDEgKwogSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5n
LmNwcCAgICAgICAgICAgICAgICAgfCAgIDY0ICstLS0tLS0tLS0tLS0tLS0tCiBKYXZhU2NyaXB0
Q29yZS93dGYvZHRvYS5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzkgKysrKysrKysr
KysrKysrKysrKysKIEphdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmggICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNyArKwogNiBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgNjMg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGY0OGIxZGIuLjliODFmOTUgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAwOS0xMC0yOCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSBVU3RyaW5nOjpmcm9tKGRvdWJsZSkgaW1wbGVtZW50YXRpb24gdG8gbmV3IFdURjo6ZWNt
YTI2MmR0b2EoKSwgYW5kCisgICAgICAgIGV4cG9zZSBlY21hMjYyZHRvYSgpLiAgV2ViQ29yZSB3
aWxsIHVzZSBpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3NDUxCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAg
ICAgICAgKiBydW50aW1lL1VTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjpmcm9t
KToKKyAgICAgICAgKiB3dGYvZHRvYS5jcHA6CisgICAgICAgIChXVEY6OmFwcGVuZEFzY2lpKToK
KyAgICAgICAgKFdURjo6ZWNtYTI2MmR0b2EpOgorICAgICAgICAqIHd0Zi9kdG9hLmg6CisKIDIw
MDktMTEtMDkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCAz
MGYxYmJjLi4zYzgxZWY1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0zMDMsNiAr
MzAzLDcgQEAgX19aTjNKU0NsdEVSS05TXzdVU3RyaW5nRVMyXwogX19aTjNXVEYxMGZhc3RDYWxs
b2NFbW0KIF9fWk4zV1RGMTBmYXN0TWFsbG9jRW0KIF9fWk4zV1RGMTFjdXJyZW50VGltZUV2Citf
X1pOM1dURjExZWNtYTI2MmR0b2FFZAogX19aTjNXVEYxMWZhc3RSZWFsbG9jRVB2bQogX19aTjNX
VEYxMmNyZWF0ZVRocmVhZEVQRlB2UzBfRVMwXwogX19aTjNXVEYxMmNyZWF0ZVRocmVhZEVQRlB2
UzBfRVMwX1BLYwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5k
ZXggYzdkMzVmNy4uNTdhODk3YyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZGVmCkBAIC0xMTYsNiArMTE2LDcgQEAgRVhQT1JUUwogICAgID9kZXRhY2hUaHJlYWRA
V1RGQEBZQVhJQFoKICAgICA/ZGlkVGltZU91dEBUaW1lb3V0Q2hlY2tlckBKU0NAQFFBRV9OUEFW
RXhlY1N0YXRlQDJAQFoKICAgICA/ZHVtcFNhbXBsZURhdGFASlNHbG9iYWxEYXRhQEpTQ0BAUUFF
WFBBVkV4ZWNTdGF0ZUAyQEBaCisgICAgP2VjbWEyNjJkdG9hQFdURkBAWUE/QVY/JFZlY3RvckBf
VyQwQUBAMUBOQFoKICAgICA/ZW51bWVyYWJsZUBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQkVf
TlhaCiAgICAgP2VxdWFsQElkZW50aWZpZXJASlNDQEBTQV9OUEJVUmVwQFVTdHJpbmdAMkBQQkRA
WgogICAgID9lcXVhbEBKU0NAQFlBX05QQlVSZXBAVVN0cmluZ0AxQDBAWgpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVVN0cmluZy5jcHAKaW5kZXggZTY2Y2E5My4uOTQwY2I4ZSAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1VTdHJpbmcuY3BwCkBAIC0xMDI1LDY5ICsxMDI1LDcgQEAgVVN0cmluZyBVU3RyaW5nOjpmcm9t
KGxvbmcgbCkKIAogVVN0cmluZyBVU3RyaW5nOjpmcm9tKGRvdWJsZSBkKQogewotICAgIC8vIGF2
b2lkIGV2ZXIgcHJpbnRpbmcgLU5hTiwgaW4gSlMgY29uY2VwdHVhbGx5IHRoZXJlIGlzIG9ubHkg
b25lIE5hTiB2YWx1ZQotICAgIGlmIChpc25hbihkKSkKLSAgICAgICAgcmV0dXJuICJOYU4iOwot
ICAgIGlmICghZCkKLSAgICAgICAgcmV0dXJuICIwIjsgLy8gLTAgLT4gIjAiCi0KLSAgICBjaGFy
IGJ1Zls4MF07Ci0gICAgaW50IGRlY2ltYWxQb2ludDsKLSAgICBpbnQgc2lnbjsKLSAgICAKLSAg
ICBjaGFyIHJlc3VsdFs4MF07Ci0gICAgV1RGOjpkdG9hKHJlc3VsdCwgZCwgMCwgJmRlY2ltYWxQ
b2ludCwgJnNpZ24sIE5VTEwpOwotICAgIGludCBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0
cmxlbihyZXN1bHQpKTsKLSAgCi0gICAgaW50IGkgPSAwOwotICAgIGlmIChzaWduKQotICAgICAg
ICBidWZbaSsrXSA9ICctJzsKLSAgCi0gICAgaWYgKGRlY2ltYWxQb2ludCA8PSAwICYmIGRlY2lt
YWxQb2ludCA+IC02KSB7Ci0gICAgICAgIGJ1ZltpKytdID0gJzAnOwotICAgICAgICBidWZbaSsr
XSA9ICcuJzsKLSAgICAgICAgZm9yIChpbnQgaiA9IGRlY2ltYWxQb2ludDsgaiA8IDA7IGorKykK
LSAgICAgICAgICAgIGJ1ZltpKytdID0gJzAnOwotICAgICAgICBzdHJjcHkoYnVmICsgaSwgcmVz
dWx0KTsKLSAgICB9IGVsc2UgaWYgKGRlY2ltYWxQb2ludCA8PSAyMSAmJiBkZWNpbWFsUG9pbnQg
PiAwKSB7Ci0gICAgICAgIGlmIChsZW5ndGggPD0gZGVjaW1hbFBvaW50KSB7Ci0gICAgICAgICAg
ICBzdHJjcHkoYnVmICsgaSwgcmVzdWx0KTsKLSAgICAgICAgICAgIGkgKz0gbGVuZ3RoOwotICAg
ICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBkZWNpbWFsUG9pbnQgLSBsZW5ndGg7IGorKykK
LSAgICAgICAgICAgICAgICBidWZbaSsrXSA9ICcwJzsKLSAgICAgICAgICAgIGJ1ZltpXSA9ICdc
MCc7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdHJuY3B5KGJ1ZiArIGksIHJlc3Vs
dCwgZGVjaW1hbFBvaW50KTsKLSAgICAgICAgICAgIGkgKz0gZGVjaW1hbFBvaW50OwotICAgICAg
ICAgICAgYnVmW2krK10gPSAnLic7Ci0gICAgICAgICAgICBzdHJjcHkoYnVmICsgaSwgcmVzdWx0
ICsgZGVjaW1hbFBvaW50KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVzdWx0WzBdIDwg
JzAnIHx8IHJlc3VsdFswXSA+ICc5JykKLSAgICAgICAgc3RyY3B5KGJ1ZiArIGksIHJlc3VsdCk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIGJ1ZltpKytdID0gcmVzdWx0WzBdOwotICAgICAgICBpZiAo
bGVuZ3RoID4gMSkgewotICAgICAgICAgICAgYnVmW2krK10gPSAnLic7Ci0gICAgICAgICAgICBz
dHJjcHkoYnVmICsgaSwgcmVzdWx0ICsgMSk7Ci0gICAgICAgICAgICBpICs9IGxlbmd0aCAtIDE7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGJ1ZltpKytdID0gJ2UnOwotICAgICAgICBi
dWZbaSsrXSA9IChkZWNpbWFsUG9pbnQgPj0gMCkgPyAnKycgOiAnLSc7Ci0gICAgICAgIC8vIGRl
Y2ltYWxQb2ludCBjYW4ndCBiZSBtb3JlIHRoYW4gMyBkaWdpdHMgZGVjaW1hbCBnaXZlbiB0aGUK
LSAgICAgICAgLy8gbmF0dXJlIG9mIGZsb2F0IHJlcHJlc2VudGF0aW9uCi0gICAgICAgIGludCBl
eHBvbmVudGlhbCA9IGRlY2ltYWxQb2ludCAtIDE7Ci0gICAgICAgIGlmIChleHBvbmVudGlhbCA8
IDApCi0gICAgICAgICAgICBleHBvbmVudGlhbCA9IC1leHBvbmVudGlhbDsKLSAgICAgICAgaWYg
KGV4cG9uZW50aWFsID49IDEwMCkKLSAgICAgICAgICAgIGJ1ZltpKytdID0gc3RhdGljX2Nhc3Q8
Y2hhcj4oJzAnICsgZXhwb25lbnRpYWwgLyAxMDApOwotICAgICAgICBpZiAoZXhwb25lbnRpYWwg
Pj0gMTApCi0gICAgICAgICAgICBidWZbaSsrXSA9IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIChl
eHBvbmVudGlhbCAlIDEwMCkgLyAxMCk7Ci0gICAgICAgIGJ1ZltpKytdID0gc3RhdGljX2Nhc3Q8
Y2hhcj4oJzAnICsgZXhwb25lbnRpYWwgJSAxMCk7Ci0gICAgICAgIGJ1ZltpKytdID0gJ1wwJzsK
LSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFVTdHJpbmcoYnVmKTsKKyAgICByZXR1cm4gVVN0cmlu
ZyhlY21hMjYyZHRvYShkKSk7CiB9CiAKIFVTdHJpbmcgVVN0cmluZzo6c3BsaWNlU3Vic3RyaW5n
c1dpdGhTZXBhcmF0b3JzKGNvbnN0IFJhbmdlKiBzdWJzdHJpbmdSYW5nZXMsIGludCByYW5nZUNv
dW50LCBjb25zdCBVU3RyaW5nKiBzZXBhcmF0b3JzLCBpbnQgc2VwYXJhdG9yQ291bnQpIGNvbnN0
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5jcHAgYi9KYXZhU2NyaXB0Q29y
ZS93dGYvZHRvYS5jcHAKaW5kZXggZDc1YzE3YS4uMDJjN2FlOSAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvd3RmL2R0b2EuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmNwcApA
QCAtMTQ4LDYgKzE0OCw3IEBACiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAKQEAgLTIzNzYsNCArMjM3Nyw4MiBAQCByZXQ6CiAgICAgICAg
ICpydmUgPSBzOwogfQogCitzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGFwcGVuZEFzY2lpKGNv
bnN0IGNoYXIqIHNyYywgdW5zaWduZWQgc2l6ZSwgVmVjdG9yPFVDaGFyLCA4MD4mIGRzdCkKK3sK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBkc3QuYXBw
ZW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCpzcmMrKykpOworfQorCitzdGF0aWMgQUxX
QVlTX0lOTElORSB2b2lkIGFwcGVuZEFzY2lpKGNvbnN0IGNoYXIqIHNyYywgVmVjdG9yPFVDaGFy
LCA4MD4mIGRzdCkKK3sKKyAgICB3aGlsZSAoKnNyYykKKyAgICAgICAgZHN0LmFwcGVuZChzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqc3JjKyspKTsKK30KKworVmVjdG9yPFVDaGFyPiBlY21h
MjYyZHRvYShkb3VibGUgZCkKK3sKKyAgICBWZWN0b3I8VUNoYXIsIDgwPiBidWY7CisKKyAgICAv
LyBhdm9pZCBldmVyIHByaW50aW5nIC1OYU4sIGluIEpTIGNvbmNlcHR1YWxseSB0aGVyZSBpcyBv
bmx5IG9uZSBOYU4gdmFsdWUKKyAgICBpZiAoaXNuYW4oZCkpIHsKKyAgICAgICAgYXBwZW5kQXNj
aWkoIk5hTiIsIGJ1Zik7CisgICAgICAgIHJldHVybiBidWY7CisgICAgfQorICAgIC8vIC0wIC0+
ICIwIgorICAgIGlmICghZCkgeworICAgICAgICBidWYuYXBwZW5kKCcwJyk7CisgICAgICAgIHJl
dHVybiBidWY7CisgICAgfQorCisgICAgaW50IGRlY2ltYWxQb2ludDsKKyAgICBpbnQgc2lnbjsK
KworICAgIGNoYXIgcmVzdWx0WzgwXTsKKyAgICBXVEY6OmR0b2EocmVzdWx0LCBkLCAwLCAmZGVj
aW1hbFBvaW50LCAmc2lnbiwgTlVMTCk7CisgICAgaW50IGxlbmd0aCA9IHN0YXRpY19jYXN0PGlu
dD4oc3RybGVuKHJlc3VsdCkpOworCisgICAgaWYgKHNpZ24pCisgICAgICAgIGJ1Zi5hcHBlbmQo
Jy0nKTsKKworICAgIGlmIChkZWNpbWFsUG9pbnQgPD0gMCAmJiBkZWNpbWFsUG9pbnQgPiAtNikg
eworICAgICAgICBidWYuYXBwZW5kKCcwJyk7CisgICAgICAgIGJ1Zi5hcHBlbmQoJy4nKTsKKyAg
ICAgICAgZm9yIChpbnQgaiA9IGRlY2ltYWxQb2ludDsgaiA8IDA7IGorKykKKyAgICAgICAgICAg
IGJ1Zi5hcHBlbmQoJzAnKTsKKyAgICAgICAgYXBwZW5kQXNjaWkocmVzdWx0LCBidWYpOworICAg
IH0gZWxzZSBpZiAoZGVjaW1hbFBvaW50IDw9IDIxICYmIGRlY2ltYWxQb2ludCA+IDApIHsKKyAg
ICAgICAgaWYgKGxlbmd0aCA8PSBkZWNpbWFsUG9pbnQpIHsKKyAgICAgICAgICAgIGFwcGVuZEFz
Y2lpKHJlc3VsdCwgbGVuZ3RoLCBidWYpOworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGog
PCBkZWNpbWFsUG9pbnQgLSBsZW5ndGg7IGorKykKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5k
KCcwJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhcHBlbmRBc2NpaShyZXN1bHQs
IGRlY2ltYWxQb2ludCwgYnVmKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJy4nKTsKKyAgICAg
ICAgICAgIGFwcGVuZEFzY2lpKHJlc3VsdCArIGRlY2ltYWxQb2ludCwgYnVmKTsKKyAgICAgICAg
fQorICAgIH0gZWxzZSBpZiAocmVzdWx0WzBdIDwgJzAnIHx8IHJlc3VsdFswXSA+ICc5JykKKyAg
ICAgICAgYXBwZW5kQXNjaWkocmVzdWx0LCBidWYpOworICAgIGVsc2UgeworICAgICAgICBidWYu
YXBwZW5kKHJlc3VsdFswXSk7CisgICAgICAgIGlmIChsZW5ndGggPiAxKSB7CisgICAgICAgICAg
ICBidWYuYXBwZW5kKCcuJyk7CisgICAgICAgICAgICBhcHBlbmRBc2NpaShyZXN1bHQgKyAxLCBi
dWYpOworICAgICAgICB9CisKKyAgICAgICAgYnVmLmFwcGVuZCgnZScpOworICAgICAgICBidWYu
YXBwZW5kKChkZWNpbWFsUG9pbnQgPj0gMCkgPyAnKycgOiAnLScpOworICAgICAgICAvLyBkZWNp
bWFsUG9pbnQgY2FuJ3QgYmUgbW9yZSB0aGFuIDMgZGlnaXRzIGRlY2ltYWwgZ2l2ZW4gdGhlCisg
ICAgICAgIC8vIG5hdHVyZSBvZiBmbG9hdCByZXByZXNlbnRhdGlvbgorICAgICAgICBpbnQgZXhw
b25lbnRpYWwgPSBkZWNpbWFsUG9pbnQgLSAxOworICAgICAgICBpZiAoZXhwb25lbnRpYWwgPCAw
KQorICAgICAgICAgICAgZXhwb25lbnRpYWwgPSAtZXhwb25lbnRpYWw7CisgICAgICAgIGlmIChl
eHBvbmVudGlhbCA+PSAxMDApCisgICAgICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0PFVD
aGFyPignMCcgKyBleHBvbmVudGlhbCAvIDEwMCkpOworICAgICAgICBpZiAoZXhwb25lbnRpYWwg
Pj0gMTApCisgICAgICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPignMCcgKyAo
ZXhwb25lbnRpYWwgJSAxMDApIC8gMTApKTsKKyAgICAgICAgYnVmLmFwcGVuZChzdGF0aWNfY2Fz
dDxVQ2hhcj4oJzAnICsgZXhwb25lbnRpYWwgJSAxMCkpOworICAgIH0KKyAgICByZXR1cm4gYnVm
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0
Zi9kdG9hLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCmluZGV4IGNiZWM3YzcuLjJkY2Q4
MTggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgKKysrIGIvSmF2YVNjcmlw
dENvcmUvd3RmL2R0b2EuaApAQCAtMjEsNiArMjEsOSBAQAogI2lmbmRlZiBXVEZfZHRvYV9oCiAj
ZGVmaW5lIFdURl9kdG9hX2gKIAorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdW5pY29kZS9Vbmljb2RlLmg+CisKIG5hbWVzcGFjZSBXVEYgewogICAgIGNsYXNzIE11dGV4
OwogfQpAQCAtMzIsNiArMzUsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgZG91YmxlIHN0cnRv
ZChjb25zdCBjaGFyKiBzMDAsIGNoYXIqKiBzZSk7CiAgICAgdm9pZCBkdG9hKGNoYXIqIHJlc3Vs
dCwgZG91YmxlIGQsIGludCBuZGlnaXRzLCBpbnQqIGRlY3B0LCBpbnQqIHNpZ24sIGNoYXIqKiBy
dmUpOwogCisgICAgLy8gZHRvYSgpIGZvciBFQ01BLTI2MiAnVG9TdHJpbmcgQXBwbGllZCB0byB0
aGUgTnVtYmVyIFR5cGUuJworICAgIFZlY3RvcjxVQ2hhcj4gZWNtYTI2MmR0b2EoZG91YmxlIGQp
OwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKK3VzaW5nIFdURjo6ZWNtYTI2MmR0b2E7CisKICNlbmRp
ZiAvLyBXVEZfZHRvYV9oCi0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="24548"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43034</attachid>
            <date>2009-11-11 23:54:10 -0800</date>
            <delta_ts>2009-11-16 20:29:36 -0800</delta_ts>
            <desc>Proposed patch (rev.3)</desc>
            <filename>0001-step-dtoa-3.patch</filename>
            <type>text/plain</type>
            <size>8564</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSA0MTk4YTJmYzExYmU5Zjg2ODJkMDdkYTg1NjUzMjhkZGJlYjdjN2Y0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBXZWQsIDI4IE9jdCAyMDA5IDE3OjQ3OjE0ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gc3RlcC1k
dG9hLTMKCi0tLQogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDE3ICsrKysKIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCAgICAg
ICAgICAgICAgICAgIHwgICAgMSArCiAuLi4vSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmICAgICAgICAgICAgICB8ICAgIDEgKwogSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5n
LmNwcCAgICAgICAgICAgICAgICAgfCAgIDYzICstLS0tLS0tLS0tLS0tLQogSmF2YVNjcmlwdENv
cmUvd3RmL2R0b2EuY3BwICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDgzICsrKysrKysrKysr
KysrKysrKysrCiBKYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDcgKysKIDYgZmlsZXMgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKyksIDYxIGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3MTk4ZjU1Li5iYzI4MGM3IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMTAtMjggIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
dmUgVVN0cmluZzo6ZnJvbShkb3VibGUpIGltcGxlbWVudGF0aW9uIHRvIG5ldyBXVEY6OmVjbWEy
NjJkdG9hKCksIGFuZAorICAgICAgICBleHBvc2UgZWNtYTI2MmR0b2EoKS4gIFdlYkNvcmUgd2ls
bCB1c2UgaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMTMzMAorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAg
ICAgICogcnVudGltZS9VU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6VVN0cmluZzo6ZnJvbSk6
CisgICAgICAgICogd3RmL2R0b2EuY3BwOgorICAgICAgICAoV1RGOjphcHBlbmQpOgorICAgICAg
ICAoV1RGOjplY21hMjYyZHRvYSk6CisgICAgICAgICogd3RmL2R0b2EuaDoKKwogMjAwOS0xMS0x
MSAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cAppbmRleCAzMGYxYmJjLi40MzQ3ZjBmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBA
IC0zMDMsNiArMzAzLDcgQEAgX19aTjNKU0NsdEVSS05TXzdVU3RyaW5nRVMyXwogX19aTjNXVEYx
MGZhc3RDYWxsb2NFbW0KIF9fWk4zV1RGMTBmYXN0TWFsbG9jRW0KIF9fWk4zV1RGMTFjdXJyZW50
VGltZUV2CitfX1pOM1dURjExZWNtYTI2MmR0b2FFZFBjCiBfX1pOM1dURjExZmFzdFJlYWxsb2NF
UHZtCiBfX1pOM1dURjEyY3JlYXRlVGhyZWFkRVBGUHZTMF9FUzBfCiBfX1pOM1dURjEyY3JlYXRl
VGhyZWFkRVBGUHZTMF9FUzBfUEtjCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZgppbmRleCBjN2QzNWY3Li4xNGJhMjgzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVm
CisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTExNiw2ICsxMTYsNyBAQCBFWFBPUlRTCiAgICAgP2Rl
dGFjaFRocmVhZEBXVEZAQFlBWElAWgogICAgID9kaWRUaW1lT3V0QFRpbWVvdXRDaGVja2VyQEpT
Q0BAUUFFX05QQVZFeGVjU3RhdGVAMkBAWgogICAgID9kdW1wU2FtcGxlRGF0YUBKU0dsb2JhbERh
dGFASlNDQEBRQUVYUEFWRXhlY1N0YXRlQDJAQFoKKyAgICA/ZWNtYTI2MmR0b2FAV1RGQEBZQUlO
UEFEQFoKICAgICA/ZW51bWVyYWJsZUBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQkVfTlhaCiAg
ICAgP2VxdWFsQElkZW50aWZpZXJASlNDQEBTQV9OUEJVUmVwQFVTdHJpbmdAMkBQQkRAWgogICAg
ID9lcXVhbEBKU0NAQFlBX05QQlVSZXBAVVN0cmluZ0AxQDBAWgpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0
cmluZy5jcHAKaW5kZXggZTY2Y2E5My4uMTljMTY5YSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9VU3RyaW5nLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmcuY3BwCkBAIC0xMDI1LDY4ICsxMDI1LDkgQEAgVVN0cmluZyBVU3RyaW5nOjpmcm9tKGxvbmcg
bCkKIAogVVN0cmluZyBVU3RyaW5nOjpmcm9tKGRvdWJsZSBkKQogewotICAgIC8vIGF2b2lkIGV2
ZXIgcHJpbnRpbmcgLU5hTiwgaW4gSlMgY29uY2VwdHVhbGx5IHRoZXJlIGlzIG9ubHkgb25lIE5h
TiB2YWx1ZQotICAgIGlmIChpc25hbihkKSkKLSAgICAgICAgcmV0dXJuICJOYU4iOwotICAgIGlm
ICghZCkKLSAgICAgICAgcmV0dXJuICIwIjsgLy8gLTAgLT4gIjAiCi0KICAgICBjaGFyIGJ1Zls4
MF07Ci0gICAgaW50IGRlY2ltYWxQb2ludDsKLSAgICBpbnQgc2lnbjsKLSAgICAKLSAgICBjaGFy
IHJlc3VsdFs4MF07Ci0gICAgV1RGOjpkdG9hKHJlc3VsdCwgZCwgMCwgJmRlY2ltYWxQb2ludCwg
JnNpZ24sIE5VTEwpOwotICAgIGludCBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmxlbihy
ZXN1bHQpKTsKLSAgCi0gICAgaW50IGkgPSAwOwotICAgIGlmIChzaWduKQotICAgICAgICBidWZb
aSsrXSA9ICctJzsKLSAgCi0gICAgaWYgKGRlY2ltYWxQb2ludCA8PSAwICYmIGRlY2ltYWxQb2lu
dCA+IC02KSB7Ci0gICAgICAgIGJ1ZltpKytdID0gJzAnOwotICAgICAgICBidWZbaSsrXSA9ICcu
JzsKLSAgICAgICAgZm9yIChpbnQgaiA9IGRlY2ltYWxQb2ludDsgaiA8IDA7IGorKykKLSAgICAg
ICAgICAgIGJ1ZltpKytdID0gJzAnOwotICAgICAgICBzdHJjcHkoYnVmICsgaSwgcmVzdWx0KTsK
LSAgICB9IGVsc2UgaWYgKGRlY2ltYWxQb2ludCA8PSAyMSAmJiBkZWNpbWFsUG9pbnQgPiAwKSB7
Ci0gICAgICAgIGlmIChsZW5ndGggPD0gZGVjaW1hbFBvaW50KSB7Ci0gICAgICAgICAgICBzdHJj
cHkoYnVmICsgaSwgcmVzdWx0KTsKLSAgICAgICAgICAgIGkgKz0gbGVuZ3RoOwotICAgICAgICAg
ICAgZm9yIChpbnQgaiA9IDA7IGogPCBkZWNpbWFsUG9pbnQgLSBsZW5ndGg7IGorKykKLSAgICAg
ICAgICAgICAgICBidWZbaSsrXSA9ICcwJzsKLSAgICAgICAgICAgIGJ1ZltpXSA9ICdcMCc7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdHJuY3B5KGJ1ZiArIGksIHJlc3VsdCwgZGVj
aW1hbFBvaW50KTsKLSAgICAgICAgICAgIGkgKz0gZGVjaW1hbFBvaW50OwotICAgICAgICAgICAg
YnVmW2krK10gPSAnLic7Ci0gICAgICAgICAgICBzdHJjcHkoYnVmICsgaSwgcmVzdWx0ICsgZGVj
aW1hbFBvaW50KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVzdWx0WzBdIDwgJzAnIHx8
IHJlc3VsdFswXSA+ICc5JykKLSAgICAgICAgc3RyY3B5KGJ1ZiArIGksIHJlc3VsdCk7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIGJ1ZltpKytdID0gcmVzdWx0WzBdOwotICAgICAgICBpZiAobGVuZ3Ro
ID4gMSkgewotICAgICAgICAgICAgYnVmW2krK10gPSAnLic7Ci0gICAgICAgICAgICBzdHJjcHko
YnVmICsgaSwgcmVzdWx0ICsgMSk7Ci0gICAgICAgICAgICBpICs9IGxlbmd0aCAtIDE7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIGJ1ZltpKytdID0gJ2UnOwotICAgICAgICBidWZbaSsr
XSA9IChkZWNpbWFsUG9pbnQgPj0gMCkgPyAnKycgOiAnLSc7Ci0gICAgICAgIC8vIGRlY2ltYWxQ
b2ludCBjYW4ndCBiZSBtb3JlIHRoYW4gMyBkaWdpdHMgZGVjaW1hbCBnaXZlbiB0aGUKLSAgICAg
ICAgLy8gbmF0dXJlIG9mIGZsb2F0IHJlcHJlc2VudGF0aW9uCi0gICAgICAgIGludCBleHBvbmVu
dGlhbCA9IGRlY2ltYWxQb2ludCAtIDE7Ci0gICAgICAgIGlmIChleHBvbmVudGlhbCA8IDApCi0g
ICAgICAgICAgICBleHBvbmVudGlhbCA9IC1leHBvbmVudGlhbDsKLSAgICAgICAgaWYgKGV4cG9u
ZW50aWFsID49IDEwMCkKLSAgICAgICAgICAgIGJ1ZltpKytdID0gc3RhdGljX2Nhc3Q8Y2hhcj4o
JzAnICsgZXhwb25lbnRpYWwgLyAxMDApOwotICAgICAgICBpZiAoZXhwb25lbnRpYWwgPj0gMTAp
Ci0gICAgICAgICAgICBidWZbaSsrXSA9IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIChleHBvbmVu
dGlhbCAlIDEwMCkgLyAxMCk7Ci0gICAgICAgIGJ1ZltpKytdID0gc3RhdGljX2Nhc3Q8Y2hhcj4o
JzAnICsgZXhwb25lbnRpYWwgJSAxMCk7Ci0gICAgICAgIGJ1ZltpKytdID0gJ1wwJzsKLSAgICB9
Ci0gICAgCisgICAgdW5zaWduZWQgbGVuID0gZWNtYTI2MmR0b2EoZCwgYnVmKTsKKyAgICBidWZb
bGVuXSA9IDA7CiAgICAgcmV0dXJuIFVTdHJpbmcoYnVmKTsKIH0KIApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvd3RmL2R0b2EuY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuY3BwCmlu
ZGV4IGQ3NWMxN2EuLjQ3NzI4ZDUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9h
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5jcHAKQEAgLTE0OCw2ICsxNDgsNyBA
QAogI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisvLyNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAKQEAgLTIzNzYsNCArMjM3Nyw4NiBAQCByZXQ6CiAgICAgICAgICpydmUgPSBzOwogfQog
CitzdGF0aWMgQUxXQVlTX0lOTElORSBjaGFyKiBhcHBlbmQoY2hhciogbmV4dCwgY29uc3QgY2hh
ciogc3JjLCB1bnNpZ25lZCBzaXplKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplOyArK2kpCisgICAgICAgICpuZXh0KysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigq
c3JjKyspOworICAgIHJldHVybiBuZXh0OworfQorCitzdGF0aWMgQUxXQVlTX0lOTElORSBjaGFy
KiBhcHBlbmQoY2hhciogbmV4dCwgY29uc3QgY2hhciogc3JjKQoreworICAgIHdoaWxlICgqc3Jj
KQorICAgICAgICAqbmV4dCsrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKnNyYysrKTsK
KyAgICByZXR1cm4gbmV4dDsKK30KKwordW5zaWduZWQgZWNtYTI2MmR0b2EoZG91YmxlIGQsIGNo
YXIqIGJ1ZikKK3sKKyAgICBBU1NFUlQoYnVmKTsKKworICAgIC8vIGF2b2lkIGV2ZXIgcHJpbnRp
bmcgLU5hTiwgaW4gSlMgY29uY2VwdHVhbGx5IHRoZXJlIGlzIG9ubHkgb25lIE5hTiB2YWx1ZQor
ICAgIGlmIChpc25hbihkKSkgeworICAgICAgICBhcHBlbmQoYnVmLCAiTmFOIik7CisgICAgICAg
IHJldHVybiAzOworICAgIH0KKyAgICAvLyAtMCAtPiAiMCIKKyAgICBpZiAoIWQpIHsKKyAgICAg
ICAgYnVmWzBdID0gJzAnOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpbnQgZGVj
aW1hbFBvaW50OworICAgIGludCBzaWduOworCisgICAgY2hhciByZXN1bHRbODBdOworICAgIGNo
YXIqIHJlc3VsdEVuZCA9IDA7CisgICAgV1RGOjpkdG9hKHJlc3VsdCwgZCwgMCwgJmRlY2ltYWxQ
b2ludCwgJnNpZ24sICZyZXN1bHRFbmQpOworICAgIGludCBsZW5ndGggPSByZXN1bHRFbmQgLSBy
ZXN1bHQ7CisKKyAgICBjaGFyKiBuZXh0ID0gYnVmOworICAgIGlmIChzaWduKQorICAgICAgICAq
bmV4dCsrID0gJy0nOworCisgICAgaWYgKGRlY2ltYWxQb2ludCA8PSAwICYmIGRlY2ltYWxQb2lu
dCA+IC02KSB7CisgICAgICAgICpuZXh0KysgPSAnMCc7CisgICAgICAgICpuZXh0KysgPSAnLic7
CisgICAgICAgIGZvciAoaW50IGogPSBkZWNpbWFsUG9pbnQ7IGogPCAwOyBqKyspCisgICAgICAg
ICAgICAqbmV4dCsrID0gJzAnOworICAgICAgICBuZXh0ID0gYXBwZW5kKG5leHQsIHJlc3VsdCk7
CisgICAgfSBlbHNlIGlmIChkZWNpbWFsUG9pbnQgPD0gMjEgJiYgZGVjaW1hbFBvaW50ID4gMCkg
eworICAgICAgICBpZiAobGVuZ3RoIDw9IGRlY2ltYWxQb2ludCkgeworICAgICAgICAgICAgbmV4
dCA9IGFwcGVuZChuZXh0LCByZXN1bHQsIGxlbmd0aCk7CisgICAgICAgICAgICBmb3IgKGludCBq
ID0gMDsgaiA8IGRlY2ltYWxQb2ludCAtIGxlbmd0aDsgaisrKQorICAgICAgICAgICAgICAgICpu
ZXh0KysgPSAnMCc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBuZXh0ID0gYXBwZW5k
KG5leHQsIHJlc3VsdCwgZGVjaW1hbFBvaW50KTsKKyAgICAgICAgICAgICpuZXh0KysgPSAnLic7
CisgICAgICAgICAgICBuZXh0ID0gYXBwZW5kKG5leHQsIHJlc3VsdCArIGRlY2ltYWxQb2ludCk7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHJlc3VsdFswXSA8ICcwJyB8fCByZXN1bHRbMF0g
PiAnOScpCisgICAgICAgIG5leHQgPSBhcHBlbmQobmV4dCwgcmVzdWx0KTsKKyAgICBlbHNlIHsK
KyAgICAgICAgKm5leHQrKyA9IHJlc3VsdFswXTsKKyAgICAgICAgaWYgKGxlbmd0aCA+IDEpIHsK
KyAgICAgICAgICAgICpuZXh0KysgPSAnLic7CisgICAgICAgICAgICBuZXh0ID0gYXBwZW5kKG5l
eHQsIHJlc3VsdCArIDEpOworICAgICAgICB9CisKKyAgICAgICAgKm5leHQrKyA9ICdlJzsKKyAg
ICAgICAgKm5leHQrKyA9IChkZWNpbWFsUG9pbnQgPj0gMCkgPyAnKycgOiAnLSc7CisgICAgICAg
IC8vIGRlY2ltYWxQb2ludCBjYW4ndCBiZSBtb3JlIHRoYW4gMyBkaWdpdHMgZGVjaW1hbCBnaXZl
biB0aGUKKyAgICAgICAgLy8gbmF0dXJlIG9mIGZsb2F0IHJlcHJlc2VudGF0aW9uCisgICAgICAg
IGludCBleHBvbmVudGlhbCA9IGRlY2ltYWxQb2ludCAtIDE7CisgICAgICAgIGlmIChleHBvbmVu
dGlhbCA8IDApCisgICAgICAgICAgICBleHBvbmVudGlhbCA9IC1leHBvbmVudGlhbDsKKyAgICAg
ICAgaWYgKGV4cG9uZW50aWFsID49IDEwMCkKKyAgICAgICAgICAgICpuZXh0KysgPSBzdGF0aWNf
Y2FzdDxjaGFyPignMCcgKyBleHBvbmVudGlhbCAvIDEwMCk7CisgICAgICAgIGlmIChleHBvbmVu
dGlhbCA+PSAxMCkKKyAgICAgICAgICAgICpuZXh0KysgPSBzdGF0aWNfY2FzdDxjaGFyPignMCcg
KyAoZXhwb25lbnRpYWwgJSAxMDApIC8gMTApOworICAgICAgICAqbmV4dCsrID0gc3RhdGljX2Nh
c3Q8Y2hhcj4oJzAnICsgZXhwb25lbnRpYWwgJSAxMCk7CisgICAgfQorICAgIHJldHVybiBuZXh0
IC0gYnVmOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3d0Zi9kdG9hLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCmluZGV4IGNiZWM3Yzcu
LjA2OTg1MTYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvd3RmL2R0b2EuaApAQCAtMzIsNiArMzIsMTMgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgZG91YmxlIHN0cnRvZChjb25zdCBjaGFyKiBzMDAsIGNoYXIqKiBzZSk7CiAgICAgdm9p
ZCBkdG9hKGNoYXIqIHJlc3VsdCwgZG91YmxlIGQsIGludCBuZGlnaXRzLCBpbnQqIGRlY3B0LCBp
bnQqIHNpZ24sIGNoYXIqKiBydmUpOwogCisgICAgLy8gZHRvYSgpIGZvciBFQ01BLTI2MiAnVG9T
dHJpbmcgQXBwbGllZCB0byB0aGUgTnVtYmVyIFR5cGUuJworICAgIC8vIFRoZSBidWZmZXIgcG9p
bnRlZCBieSBidWYgbXVzdCBoYXZlIGF0IGxlYXN0IDgwIGVsZW1lbnRzLgorICAgIC8vIFRoZSBy
ZXR1cm4gdmFsdWUgaXMgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0YW50IHN0cmluZyBpbiBidWYu
CisgICAgLy8gVGhlIHJlc3VsdGFudCBzdHJpbmcgaXNuJ3QgdGVybWluYXRlZCBieSAwLgorICAg
IHVuc2lnbmVkIGVjbWEyNjJkdG9hKGRvdWJsZSBkLCBjaGFyKiBidWYpOwogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKK3VzaW5nIFdURjo6ZWNtYTI2MmR0b2E7CisKICNlbmRpZiAvLyBXVEZfZHRvYV9o
Ci0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="24692"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>43035</attachid>
            <date>2009-11-11 23:55:29 -0800</date>
            <delta_ts>2009-11-11 23:55:29 -0800</delta_ts>
            <desc>sunspider-compare-results output</desc>
            <filename>ecma262dtoa-compare-results-100runs.txt</filename>
            <type>text/plain</type>
            <size>3832</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">CgpURVNUICAgICAgICAgICAgICAgICAgIENPTVBBUklTT04gICAgICAgICAgICBGUk9NICAgICAg
ICAgICAgICAgICBUTyAgICAgICAgICAgICBERVRBSUxTCgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoK
KiogVE9UQUwgKio6ICAgICAgICAgICAxLjAwMnggYXMgZmFzdCAgICA0MDguMG1zICsvLSAwLjEl
ICAgNDA3LjBtcyArLy0gMC4yJSAgICAgc2lnbmlmaWNhbnQKCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CgogIDNkOiAgICAgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICA1OC4xbXMgKy8tIDAu
NCUgICAgNTcuOW1zICsvLSAwLjIlIAogICAgY3ViZTogICAgICAgICAgICAgID8/ICAgICAgICAg
ICAgICAgICAxNy4ybXMgKy8tIDAuOCUgICAgMTcuMm1zICsvLSAwLjYlICAgICBub3QgY29uY2x1
c2l2ZTogbWlnaHQgYmUgKjEuMDAzeCBhcyBzbG93KgogICAgbW9ycGg6ICAgICAgICAgICAgIC0g
ICAgICAgICAgICAgICAgICAyMi41bXMgKy8tIDAuNSUgICAgMjIuNG1zICsvLSAwLjUlIAogICAg
cmF5dHJhY2U6ICAgICAgICAgIDEuMDEyeCBhcyBmYXN0ICAgICAxOC41bXMgKy8tIDAuNSUgICAg
MTguM21zICsvLSAwLjUlICAgICBzaWduaWZpY2FudAoKICBhY2Nlc3M6ICAgICAgICAgICAgICA/
PyAgICAgICAgICAgICAgICAgNDYuM21zICsvLSAwLjYlICAgIDQ2LjVtcyArLy0gMS4xJSAgICAg
bm90IGNvbmNsdXNpdmU6IG1pZ2h0IGJlICoxLjAwNHggYXMgc2xvdyoKICAgIGJpbmFyeS10cmVl
czogICAgICAtICAgICAgICAgICAgICAgICAgIDQuN21zICsvLSAyLjAlICAgICA0LjZtcyArLy0g
Mi4yJSAKICAgIGZhbm5rdWNoOiAgICAgICAgICAqMS4wMDl4IGFzIHNsb3cqICAgMTkuMm1zICsv
LSAwLjQlICAgIDE5LjRtcyArLy0gMS4yJSAgICAgc2lnbmlmaWNhbnQKICAgIG5ib2R5OiAgICAg
ICAgICAgICA/PyAgICAgICAgICAgICAgICAgMTQuNG1zICsvLSAwLjklICAgIDE0LjVtcyArLy0g
MS4xJSAgICAgbm90IGNvbmNsdXNpdmU6IG1pZ2h0IGJlICoxLjAwMnggYXMgc2xvdyoKICAgIG5z
aWV2ZTogICAgICAgICAgICA/PyAgICAgICAgICAgICAgICAgIDguMG1zICsvLSAxLjUlICAgICA4
LjBtcyArLy0gMi4xJSAgICAgbm90IGNvbmNsdXNpdmU6IG1pZ2h0IGJlICoxLjAxMXggYXMgc2xv
dyoKCiAgYml0b3BzOiAgICAgICAgICAgICAgKjEuMDA5eCBhcyBzbG93KiAgIDI4LjRtcyArLy0g
MC41JSAgICAyOC43bXMgKy8tIDAuNyUgICAgIHNpZ25pZmljYW50CiAgICAzYml0LWJpdHMtaW4t
Ynl0ZTogPz8gICAgICAgICAgICAgICAgICA0LjFtcyArLy0gMi4wJSAgICAgNC4ybXMgKy8tIDEu
OSUgICAgIG5vdCBjb25jbHVzaXZlOiBtaWdodCBiZSAqMS4wMTl4IGFzIHNsb3cqCiAgICBiaXRz
LWluLWJ5dGU6ICAgICAgLSAgICAgICAgICAgICAgICAgICA4LjltcyArLy0gMC44JSAgICAgOC45
bXMgKy8tIDEuNSUgCiAgICBiaXR3aXNlLWFuZDogICAgICAgPz8gICAgICAgICAgICAgICAgICA0
LjZtcyArLy0gMi4xJSAgICAgNC43bXMgKy8tIDIuMSUgICAgIG5vdCBjb25jbHVzaXZlOiBtaWdo
dCBiZSAqMS4wMTl4IGFzIHNsb3cqCiAgICBuc2lldmUtYml0czogICAgICAgPz8gICAgICAgICAg
ICAgICAgIDEwLjhtcyArLy0gMC44JSAgICAxMC45bXMgKy8tIDAuNyUgICAgIG5vdCBjb25jbHVz
aXZlOiBtaWdodCBiZSAqMS4wMDh4IGFzIHNsb3cqCgogIGNvbnRyb2xmbG93OiAgICAgICAgID8/
ICAgICAgICAgICAgICAgICAgMy41bXMgKy8tIDIuOCUgICAgIDMuNW1zICsvLSAyLjglICAgICBu
b3QgY29uY2x1c2l2ZTogbWlnaHQgYmUgKjEuMDAzeCBhcyBzbG93KgogICAgcmVjdXJzaXZlOiAg
ICAgICAgID8/ICAgICAgICAgICAgICAgICAgMy41bXMgKy8tIDIuOCUgICAgIDMuNW1zICsvLSAy
LjglICAgICBub3QgY29uY2x1c2l2ZTogbWlnaHQgYmUgKjEuMDAzeCBhcyBzbG93KgoKICBjcnlw
dG86ICAgICAgICAgICAgICA/PyAgICAgICAgICAgICAgICAgMjUuNW1zICsvLSAwLjQlICAgIDI1
LjZtcyArLy0gMS4wJSAgICAgbm90IGNvbmNsdXNpdmU6IG1pZ2h0IGJlICoxLjAwNHggYXMgc2xv
dyoKICAgIGFlczogICAgICAgICAgICAgICA/PyAgICAgICAgICAgICAgICAgMTMuM21zICsvLSAw
LjclICAgIDEzLjRtcyArLy0gMS4yJSAgICAgbm90IGNvbmNsdXNpdmU6IG1pZ2h0IGJlICoxLjAw
OXggYXMgc2xvdyoKICAgIG1kNTogICAgICAgICAgICAgICA/PyAgICAgICAgICAgICAgICAgIDYu
Nm1zICsvLSAxLjUlICAgICA2LjZtcyArLy0gMi4wJSAgICAgbm90IGNvbmNsdXNpdmU6IG1pZ2h0
IGJlICoxLjAwNnggYXMgc2xvdyoKICAgIHNoYTE6ICAgICAgICAgICAgICAtICAgICAgICAgICAg
ICAgICAgIDUuN21zICsvLSAxLjclICAgICA1LjZtcyArLy0gMS44JSAKCiAgZGF0ZTogICAgICAg
ICAgICAgICAgLSAgICAgICAgICAgICAgICAgIDQ2LjhtcyArLy0gMC43JSAgICA0Ni40bXMgKy8t
IDAuMyUgCiAgICBmb3JtYXQtdG9mdGU6ICAgICAgLSAgICAgICAgICAgICAgICAgIDIyLjVtcyAr
Ly0gMC40JSAgICAyMi41bXMgKy8tIDAuNSUgCiAgICBmb3JtYXQteHBhcmI6ICAgICAgMS4wMTZ4
IGFzIGZhc3QgICAgIDI0LjNtcyArLy0gMS4yJSAgICAyMy45bXMgKy8tIDAuMyUgICAgIHNpZ25p
ZmljYW50CgogIG1hdGg6ICAgICAgICAgICAgICAgIDEuMDA1eCBhcyBmYXN0ICAgICA0MS44bXMg
Ky8tIDAuMiUgICAgNDEuNm1zICsvLSAwLjIlICAgICBzaWduaWZpY2FudAogICAgY29yZGljOiAg
ICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAxNi4ybXMgKy8tIDAuNSUgICAgMTYuMW1zICsv
LSAwLjQlIAogICAgcGFydGlhbC1zdW1zOiAgICAgIC0gICAgICAgICAgICAgICAgICAxOS40bXMg
Ky8tIDAuNSUgICAgMTkuM21zICsvLSAwLjUlIAogICAgc3BlY3RyYWwtbm9ybTogICAgIC0gICAg
ICAgICAgICAgICAgICAgNi4ybXMgKy8tIDEuMiUgICAgIDYuMm1zICsvLSAxLjIlIAoKICByZWdl
eHA6ICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgMTkuMm1zICsvLSAwLjYlICAgIDE5
LjJtcyArLy0gMC40JSAKICAgIGRuYTogICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAg
MTkuMm1zICsvLSAwLjYlICAgIDE5LjJtcyArLy0gMC40JSAKCiAgc3RyaW5nOiAgICAgICAgICAg
ICAgMS4wMDV4IGFzIGZhc3QgICAgMTM4LjVtcyArLy0gMC4yJSAgIDEzNy44bXMgKy8tIDAuMyUg
ICAgIHNpZ25pZmljYW50CiAgICBiYXNlNjQ6ICAgICAgICAgICAgMS4wMTN4IGFzIGZhc3QgICAg
IDE3LjJtcyArLy0gMC42JSAgICAxNy4wbXMgKy8tIDAuNSUgICAgIHNpZ25pZmljYW50CiAgICBm
YXN0YTogICAgICAgICAgICAgPz8gICAgICAgICAgICAgICAgIDE2LjFtcyArLy0gMC40JSAgICAx
Ni4xbXMgKy8tIDAuNCUgICAgIG5vdCBjb25jbHVzaXZlOiBtaWdodCBiZSAqMS4wMDF4IGFzIHNs
b3cqCiAgICB0YWdjbG91ZDogICAgICAgICAgMS4wMTh4IGFzIGZhc3QgICAgIDM1LjVtcyArLy0g
MC4zJSAgICAzNC45bXMgKy8tIDAuNyUgICAgIHNpZ25pZmljYW50CiAgICB1bnBhY2stY29kZTog
ICAgICAgLSAgICAgICAgICAgICAgICAgIDQ1LjltcyArLy0gMC4yJSAgICA0NS45bXMgKy8tIDAu
MyUgCiAgICB2YWxpZGF0ZS1pbnB1dDogICAgPz8gICAgICAgICAgICAgICAgIDIzLjhtcyArLy0g
MC41JSAgICAyMy45bXMgKy8tIDAuNSUgICAgIG5vdCBjb25jbHVzaXZlOiBtaWdodCBiZSAqMS4w
MDZ4IGFzIHNsb3cqCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43340</attachid>
            <date>2009-11-16 20:29:36 -0800</date>
            <delta_ts>2009-11-18 19:14:41 -0800</delta_ts>
            <desc>Proposed patch (rev.4)</desc>
            <filename>0001-step-dtoa-4.patch</filename>
            <type>text/plain</type>
            <size>11667</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA0NjYxMDY0Li4yYTdjZjcyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMDktMTAtMjggIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgVVN0cmluZzo6
ZnJvbShkb3VibGUpIGltcGxlbWVudGF0aW9uIHRvIG5ldworICAgICAgICBXVEY6OmRvdWJsZVRv
U3RyaW5nSW5KYXZhU2NyaXB0Rm9ybWF0KCksIGFuZCBleHBvc2UgaXQgYmVjYXVzZSBXZWJDb3Jl
CisgICAgICAgIGNvZGUgd2lsbCB1c2UgaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMTMzMAorICAgICAgICAKKyAgICAgICAgLSBJbnRyb2R1Y2Ug
bmV3IGZ1bmN0aW9uIGNyZWF0ZVJlcChjb25zdCBjaGFyKiwgdW5zaWduZWQpIGFuZAorICAgICAg
ICAgIFVTdHJpbmc6OlVTdHJpbmcoY29uc3QgY2hhciosIHVuc2lnbmVkKSB0byByZWR1Y2UgMiBj
YWxscyB0byBzdHJsZW4oKS4KKyAgICAgICAgLSBGaXggYSBidWcgdGhhdCBkdG9hKCkgZG9lc24n
dCB1cGRhdGUgKnJ2ZSBpZiB0aGUgaW5wdXQgdmFsdWUgaXMgTmFOCisgICAgICAgICAgb3IgSW5m
aW5pdHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBkb2Vzbid0IGNoYW5n
ZSB0aGUgYmVoYXZpb3IuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
ZjoKKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVS
ZXApOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjpVU3RyaW5nKToKKyAgICAgICAgKEpTQzo6VVN0
cmluZzo6ZnJvbSk6IE1vdmUgdGhlIGNvZGUgdG8gZG91YmxlVG9TdHJpbmdJbkphdmFTY3JpcHRG
b3JtYXQoKS4KKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvZHRv
YS5jcHA6CisgICAgICAgIChXVEY6OmR0b2EpOiBGaXggYSBidWcgYWJvdXQgcnZlLgorICAgICAg
ICAoV1RGOjphcHBlbmQpOiBBIGhlbHBlciBmb3IgZG91YmxlVG9TdHJpbmdJbkphdmFTY3JpcHRG
b3JtYXQoKS4KKyAgICAgICAgKFdURjo6ZG91YmxlVG9TdHJpbmdJbkphdmFTY3JpcHRGb3JtYXQp
OiBNb3ZlIHRoZSBjb2RlIGZyb20gVVN0cmluZzo6ZnJvbShkb3VibGUpLgorICAgICAgICAqIHd0
Zi9kdG9hLmg6CisKIDIwMDktMTEtMTYgIEpvZXJnIEJvcm5lbWFubiAgPGpvZXJnLmJvcm5lbWFu
bkB0cm9sbHRlY2guY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IDMwZjFiYmMuLjIzMWZkZGQgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTMzMSw2ICszMzEsNyBAQCBfX1pOM1dURjIxUmVmQ291
bnRlZExlYWtDb3VudGVyRDFFdgogX19aTjNXVEYyM3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uRWpQ
UHYKIF9fWk4zV1RGMjdyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlFdgogX19aTjNXVEYyOHNl
dE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWRFYgorX19aTjNXVEYzMmRvdWJsZVRvU3RyaW5nSW5K
YXZhU2NyaXB0Rm9ybWF0RWRQY1BqCiBfX1pOM1dURjM2bG9ja0F0b21pY2FsbHlJbml0aWFsaXpl
ZFN0YXRpY011dGV4RXYKIF9fWk4zV1RGMzdwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFy
YWN0ZXJzRVBLYwogX19aTjNXVEYzOHVubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011
dGV4RXYKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IGEy
NzgxY2EuLjZiMTgyMzYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmRlZgpAQCAtMTE0LDYgKzExNCw3IEBAIEVYUE9SVFMKICAgICA/ZGV0YWNoVGhyZWFkQFdURkBA
WUFYSUBaCiAgICAgP2RpZFRpbWVPdXRAVGltZW91dENoZWNrZXJASlNDQEBRQUVfTlBBVkV4ZWNT
dGF0ZUAyQEBaCiAgICAgP2R1bXBTYW1wbGVEYXRhQEpTR2xvYmFsRGF0YUBKU0NAQFFBRVhQQVZF
eGVjU3RhdGVAMkBAWgorICAgID9kb3VibGVUb1N0cmluZ0luSmF2YVNjcmlwdEZvcm1hdEBXVEZA
QFlBWE5RQURQQUlAWgogICAgID9lbnVtZXJhYmxlQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFC
RV9OWFoKICAgICA/ZXF1YWxASWRlbnRpZmllckBKU0NAQFNBX05QQlVSZXBAVVN0cmluZ0AyQFBC
REBaCiAgICAgP2VxdWFsQEpTQ0BAWUFfTlBCVVJlcEBVU3RyaW5nQDFAMEBaCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9VU3RyaW5nLmNwcAppbmRleCBlNjZjYTkzLi5kYzA4ODk5IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVVN0cmluZy5jcHAKQEAgLTU3OCwxMSArNTc4LDM1IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFVT
dHJpbmc6OlJlcD4gY3JlYXRlUmVwKGNvbnN0IGNoYXIqIGMpCiAKIH0KIAorc3RhdGljIFBhc3NS
ZWZQdHI8VVN0cmluZzo6UmVwPiBjcmVhdGVSZXAoY29uc3QgY2hhciogYywgdW5zaWduZWQgbGVu
Z3RoKQoreworICAgIGlmICghYykKKyAgICAgICAgcmV0dXJuICZVU3RyaW5nOjpSZXA6Om51bGwo
KTsKKworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gJlVTdHJpbmc6OlJlcDo6ZW1w
dHkoKTsKKworICAgIFVDaGFyKiBkOworICAgIGlmICghYWxsb2NDaGFycyhsZW5ndGgpLmdldFZh
bHVlKGQpKQorICAgICAgICByZXR1cm4gJlVTdHJpbmc6OlJlcDo6bnVsbCgpOworICAgIGVsc2Ug
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCisgICAgICAg
ICAgICBkW2ldID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY1tpXSk7IC8vIHVzZSB1bnNp
Z25lZCBjaGFyIHRvIHplcm8tZXh0ZW5kIGluc3RlYWQgb2Ygc2lnbi1leHRlbmQKKyAgICAgICAg
cmV0dXJuIFVTdHJpbmc6OlJlcDo6Y3JlYXRlKGQsIHN0YXRpY19jYXN0PGludD4obGVuZ3RoKSk7
CisgICAgfQorCit9CisKIFVTdHJpbmc6OlVTdHJpbmcoY29uc3QgY2hhciogYykKICAgICA6IG1f
cmVwKGNyZWF0ZVJlcChjKSkKIHsKIH0KIAorVVN0cmluZzo6VVN0cmluZyhjb25zdCBjaGFyKiBj
LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBtX3JlcChjcmVhdGVSZXAoYywgbGVuZ3RoKSkKK3sK
K30KKwogVVN0cmluZzo6VVN0cmluZyhjb25zdCBVQ2hhciogYywgaW50IGxlbmd0aCkKIHsKICAg
ICBpZiAobGVuZ3RoID09IDApIApAQCAtMTAyNSw2OSArMTA0OSwxMCBAQCBVU3RyaW5nIFVTdHJp
bmc6OmZyb20obG9uZyBsKQogCiBVU3RyaW5nIFVTdHJpbmc6OmZyb20oZG91YmxlIGQpCiB7Ci0g
ICAgLy8gYXZvaWQgZXZlciBwcmludGluZyAtTmFOLCBpbiBKUyBjb25jZXB0dWFsbHkgdGhlcmUg
aXMgb25seSBvbmUgTmFOIHZhbHVlCi0gICAgaWYgKGlzbmFuKGQpKQotICAgICAgICByZXR1cm4g
Ik5hTiI7Ci0gICAgaWYgKCFkKQotICAgICAgICByZXR1cm4gIjAiOyAvLyAtMCAtPiAiMCIKLQot
ICAgIGNoYXIgYnVmWzgwXTsKLSAgICBpbnQgZGVjaW1hbFBvaW50OwotICAgIGludCBzaWduOwot
ICAgIAotICAgIGNoYXIgcmVzdWx0WzgwXTsKLSAgICBXVEY6OmR0b2EocmVzdWx0LCBkLCAwLCAm
ZGVjaW1hbFBvaW50LCAmc2lnbiwgTlVMTCk7Ci0gICAgaW50IGxlbmd0aCA9IHN0YXRpY19jYXN0
PGludD4oc3RybGVuKHJlc3VsdCkpOwotICAKLSAgICBpbnQgaSA9IDA7Ci0gICAgaWYgKHNpZ24p
Ci0gICAgICAgIGJ1ZltpKytdID0gJy0nOwotICAKLSAgICBpZiAoZGVjaW1hbFBvaW50IDw9IDAg
JiYgZGVjaW1hbFBvaW50ID4gLTYpIHsKLSAgICAgICAgYnVmW2krK10gPSAnMCc7Ci0gICAgICAg
IGJ1ZltpKytdID0gJy4nOwotICAgICAgICBmb3IgKGludCBqID0gZGVjaW1hbFBvaW50OyBqIDwg
MDsgaisrKQotICAgICAgICAgICAgYnVmW2krK10gPSAnMCc7Ci0gICAgICAgIHN0cmNweShidWYg
KyBpLCByZXN1bHQpOwotICAgIH0gZWxzZSBpZiAoZGVjaW1hbFBvaW50IDw9IDIxICYmIGRlY2lt
YWxQb2ludCA+IDApIHsKLSAgICAgICAgaWYgKGxlbmd0aCA8PSBkZWNpbWFsUG9pbnQpIHsKLSAg
ICAgICAgICAgIHN0cmNweShidWYgKyBpLCByZXN1bHQpOwotICAgICAgICAgICAgaSArPSBsZW5n
dGg7Ci0gICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGRlY2ltYWxQb2ludCAtIGxlbmd0
aDsgaisrKQotICAgICAgICAgICAgICAgIGJ1ZltpKytdID0gJzAnOwotICAgICAgICAgICAgYnVm
W2ldID0gJ1wwJzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0cm5jcHkoYnVmICsg
aSwgcmVzdWx0LCBkZWNpbWFsUG9pbnQpOwotICAgICAgICAgICAgaSArPSBkZWNpbWFsUG9pbnQ7
Ci0gICAgICAgICAgICBidWZbaSsrXSA9ICcuJzsKLSAgICAgICAgICAgIHN0cmNweShidWYgKyBp
LCByZXN1bHQgKyBkZWNpbWFsUG9pbnQpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChyZXN1
bHRbMF0gPCAnMCcgfHwgcmVzdWx0WzBdID4gJzknKQotICAgICAgICBzdHJjcHkoYnVmICsgaSwg
cmVzdWx0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgYnVmW2krK10gPSByZXN1bHRbMF07Ci0gICAg
ICAgIGlmIChsZW5ndGggPiAxKSB7Ci0gICAgICAgICAgICBidWZbaSsrXSA9ICcuJzsKLSAgICAg
ICAgICAgIHN0cmNweShidWYgKyBpLCByZXN1bHQgKyAxKTsKLSAgICAgICAgICAgIGkgKz0gbGVu
Z3RoIC0gMTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgYnVmW2krK10gPSAnZSc7Ci0g
ICAgICAgIGJ1ZltpKytdID0gKGRlY2ltYWxQb2ludCA+PSAwKSA/ICcrJyA6ICctJzsKLSAgICAg
ICAgLy8gZGVjaW1hbFBvaW50IGNhbid0IGJlIG1vcmUgdGhhbiAzIGRpZ2l0cyBkZWNpbWFsIGdp
dmVuIHRoZQotICAgICAgICAvLyBuYXR1cmUgb2YgZmxvYXQgcmVwcmVzZW50YXRpb24KLSAgICAg
ICAgaW50IGV4cG9uZW50aWFsID0gZGVjaW1hbFBvaW50IC0gMTsKLSAgICAgICAgaWYgKGV4cG9u
ZW50aWFsIDwgMCkKLSAgICAgICAgICAgIGV4cG9uZW50aWFsID0gLWV4cG9uZW50aWFsOwotICAg
ICAgICBpZiAoZXhwb25lbnRpYWwgPj0gMTAwKQotICAgICAgICAgICAgYnVmW2krK10gPSBzdGF0
aWNfY2FzdDxjaGFyPignMCcgKyBleHBvbmVudGlhbCAvIDEwMCk7Ci0gICAgICAgIGlmIChleHBv
bmVudGlhbCA+PSAxMCkKLSAgICAgICAgICAgIGJ1ZltpKytdID0gc3RhdGljX2Nhc3Q8Y2hhcj4o
JzAnICsgKGV4cG9uZW50aWFsICUgMTAwKSAvIDEwKTsKLSAgICAgICAgYnVmW2krK10gPSBzdGF0
aWNfY2FzdDxjaGFyPignMCcgKyBleHBvbmVudGlhbCAlIDEwKTsKLSAgICAgICAgYnVmW2krK10g
PSAnXDAnOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gVVN0cmluZyhidWYpOworICAgIER0b2FC
dWZmZXIgYnVmZmVyOworICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICBkb3VibGVUb1N0cmluZ0lu
SmF2YVNjcmlwdEZvcm1hdChkLCBidWZmZXIsICZsZW5ndGgpOworICAgIHJldHVybiBVU3RyaW5n
KGJ1ZmZlciwgbGVuZ3RoKTsKIH0KIAogVVN0cmluZyBVU3RyaW5nOjpzcGxpY2VTdWJzdHJpbmdz
V2l0aFNlcGFyYXRvcnMoY29uc3QgUmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291
bnQsIGNvbnN0IFVTdHJpbmcqIHNlcGFyYXRvcnMsIGludCBzZXBhcmF0b3JDb3VudCkgY29uc3QK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9VU3RyaW5nLmgKaW5kZXggYzRkYWQyYS4uNjQzMTRkYyAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9VU3RyaW5nLmgKQEAgLTIzNSw3ICsyMzUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBwdWJsaWM6CiAgICAgICAgIFVTdHJpbmcoKTsKKyAgICAgICAgLy8gQ29uc3RydWN0b3Ig
Zm9yIG51bGwtdGVybWluYXRlZCBBU0NJSSBzdHJpbmcuCiAgICAgICAgIFVTdHJpbmcoY29uc3Qg
Y2hhciopOworICAgICAgICAvLyBDb25zdHJ1Y3RvciBmb3Igbm9uLW51bGwtdGVybWluYXRlZCBB
U0NJSSBzdHJpbmcuCisgICAgICAgIFVTdHJpbmcoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7CiAgICAgICAgIFVTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKTsKICAgICAgICAg
VVN0cmluZyhVQ2hhciosIGludCBsZW5ndGgsIGJvb2wgY29weSk7CiAKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmNwcApp
bmRleCBkNzVjMTdhLi42ZjU4Y2I3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvZHRv
YS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuY3BwCkBAIC0xNDgsNiArMTQ4LDcg
QEAKICNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KIApAQCAtMTg2OSw3ICsxODcwLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgaW50IHF1b3Jl
bShCaWdJbnQmIGIsIEJpZ0ludCYgUykKICAqICAgICAgIGNhbGN1bGF0aW9uLgogICovCiAKLXZv
aWQgZHRvYShjaGFyKiByZXN1bHQsIGRvdWJsZSBkZCwgaW50IG5kaWdpdHMsIGludCogZGVjcHQs
IGludCogc2lnbiwgY2hhcioqIHJ2ZSkKK3ZvaWQgZHRvYShEdG9hQnVmZmVyIHJlc3VsdCwgZG91
YmxlIGRkLCBpbnQgbmRpZ2l0cywgaW50KiBkZWNwdCwgaW50KiBzaWduLCBjaGFyKiogcnZlKQog
ewogICAgIC8qCiAgICAgICAgIEFyZ3VtZW50cyBuZGlnaXRzLCBkZWNwdCwgc2lnbiBhcmUgc2lt
aWxhciB0byB0aG9zZQpAQCAtMTkwOCwxNiArMTkwOSwyMyBAQCB2b2lkIGR0b2EoY2hhciogcmVz
dWx0LCBkb3VibGUgZGQsIGludCBuZGlnaXRzLCBpbnQqIGRlY3B0LCBpbnQqIHNpZ24sIGNoYXIq
KiBydgogICAgIHsKICAgICAgICAgLyogSW5maW5pdHkgb3IgTmFOICovCiAgICAgICAgICpkZWNw
dCA9IDk5OTk7Ci0gICAgICAgIGlmICghd29yZDEoJnUpICYmICEod29yZDAoJnUpICYgMHhmZmZm
ZikpCisgICAgICAgIGlmICghd29yZDEoJnUpICYmICEod29yZDAoJnUpICYgMHhmZmZmZikpIHsK
ICAgICAgICAgICAgIHN0cmNweShyZXN1bHQsICJJbmZpbml0eSIpOwotICAgICAgICBlbHNlIAor
ICAgICAgICAgICAgaWYgKHJ2ZSkKKyAgICAgICAgICAgICAgICAqcnZlID0gcmVzdWx0ICsgODsK
KyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0cmNweShyZXN1bHQsICJOYU4iKTsKKyAg
ICAgICAgICAgIGlmIChydmUpCisgICAgICAgICAgICAgICAgKnJ2ZSA9IHJlc3VsdCArIDM7Cisg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIWR2YWwoJnUpKSB7CiAg
ICAgICAgICpkZWNwdCA9IDE7CiAgICAgICAgIHJlc3VsdFswXSA9ICcwJzsKICAgICAgICAgcmVz
dWx0WzFdID0gJ1wwJzsKKyAgICAgICAgaWYgKHJ2ZSkKKyAgICAgICAgICAgICpydmUgPSByZXN1
bHQgKyAxOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzc2LDQgKzIzODQsODMgQEAg
cmV0OgogICAgICAgICAqcnZlID0gczsKIH0KIAorc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBh
cHBlbmQoY2hhciomIG5leHQsIGNvbnN0IGNoYXIqIHNyYywgdW5zaWduZWQgc2l6ZSkKK3sKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAqbmV4dCsrID0g
KnNyYysrOworfQorCit2b2lkIGRvdWJsZVRvU3RyaW5nSW5KYXZhU2NyaXB0Rm9ybWF0KGRvdWJs
ZSBkLCBEdG9hQnVmZmVyIGJ1ZmZlciwgdW5zaWduZWQqIHJlc3VsdExlbmd0aCkKK3sKKyAgICBB
U1NFUlQoYnVmZmVyKTsKKworICAgIC8vIGF2b2lkIGV2ZXIgcHJpbnRpbmcgLU5hTiwgaW4gSlMg
Y29uY2VwdHVhbGx5IHRoZXJlIGlzIG9ubHkgb25lIE5hTiB2YWx1ZQorICAgIGlmIChpc25hbihk
KSkgeworICAgICAgICBhcHBlbmQoYnVmZmVyLCAiTmFOIiwgMyk7CisgICAgICAgIGlmIChyZXN1
bHRMZW5ndGgpCisgICAgICAgICAgICAqcmVzdWx0TGVuZ3RoID0gMzsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAvLyAtMCAtPiAiMCIKKyAgICBpZiAoIWQpIHsKKyAgICAgICAgYnVmZmVy
WzBdID0gJzAnOworICAgICAgICBpZiAocmVzdWx0TGVuZ3RoKQorICAgICAgICAgICAgKnJlc3Vs
dExlbmd0aCA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgZGVjaW1hbFBv
aW50OworICAgIGludCBzaWduOworCisgICAgRHRvYUJ1ZmZlciByZXN1bHQ7CisgICAgY2hhciog
cmVzdWx0RW5kID0gMDsKKyAgICBXVEY6OmR0b2EocmVzdWx0LCBkLCAwLCAmZGVjaW1hbFBvaW50
LCAmc2lnbiwgJnJlc3VsdEVuZCk7CisgICAgaW50IGxlbmd0aCA9IHJlc3VsdEVuZCAtIHJlc3Vs
dDsKKworICAgIGNoYXIqIG5leHQgPSBidWZmZXI7CisgICAgaWYgKHNpZ24pCisgICAgICAgICpu
ZXh0KysgPSAnLSc7CisKKyAgICBpZiAoZGVjaW1hbFBvaW50IDw9IDAgJiYgZGVjaW1hbFBvaW50
ID4gLTYpIHsKKyAgICAgICAgKm5leHQrKyA9ICcwJzsKKyAgICAgICAgKm5leHQrKyA9ICcuJzsK
KyAgICAgICAgZm9yIChpbnQgaiA9IGRlY2ltYWxQb2ludDsgaiA8IDA7IGorKykKKyAgICAgICAg
ICAgICpuZXh0KysgPSAnMCc7CisgICAgICAgIGFwcGVuZChuZXh0LCByZXN1bHQsIGxlbmd0aCk7
CisgICAgfSBlbHNlIGlmIChkZWNpbWFsUG9pbnQgPD0gMjEgJiYgZGVjaW1hbFBvaW50ID4gMCkg
eworICAgICAgICBpZiAobGVuZ3RoIDw9IGRlY2ltYWxQb2ludCkgeworICAgICAgICAgICAgYXBw
ZW5kKG5leHQsIHJlc3VsdCwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBq
IDwgZGVjaW1hbFBvaW50IC0gbGVuZ3RoOyBqKyspCisgICAgICAgICAgICAgICAgKm5leHQrKyA9
ICcwJzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFwcGVuZChuZXh0LCByZXN1bHQs
IGRlY2ltYWxQb2ludCk7CisgICAgICAgICAgICAqbmV4dCsrID0gJy4nOworICAgICAgICAgICAg
YXBwZW5kKG5leHQsIHJlc3VsdCArIGRlY2ltYWxQb2ludCwgbGVuZ3RoIC0gZGVjaW1hbFBvaW50
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAocmVzdWx0WzBdIDwgJzAnIHx8IHJlc3VsdFsw
XSA+ICc5JykKKyAgICAgICAgYXBwZW5kKG5leHQsIHJlc3VsdCwgbGVuZ3RoKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgKm5leHQrKyA9IHJlc3VsdFswXTsKKyAgICAgICAgaWYgKGxlbmd0aCA+IDEp
IHsKKyAgICAgICAgICAgICpuZXh0KysgPSAnLic7CisgICAgICAgICAgICBhcHBlbmQobmV4dCwg
cmVzdWx0ICsgMSwgbGVuZ3RoIC0gMSk7CisgICAgICAgIH0KKworICAgICAgICAqbmV4dCsrID0g
J2UnOworICAgICAgICAqbmV4dCsrID0gKGRlY2ltYWxQb2ludCA+PSAwKSA/ICcrJyA6ICctJzsK
KyAgICAgICAgLy8gZGVjaW1hbFBvaW50IGNhbid0IGJlIG1vcmUgdGhhbiAzIGRpZ2l0cyBkZWNp
bWFsIGdpdmVuIHRoZQorICAgICAgICAvLyBuYXR1cmUgb2YgZmxvYXQgcmVwcmVzZW50YXRpb24K
KyAgICAgICAgaW50IGV4cG9uZW50aWFsID0gZGVjaW1hbFBvaW50IC0gMTsKKyAgICAgICAgaWYg
KGV4cG9uZW50aWFsIDwgMCkKKyAgICAgICAgICAgIGV4cG9uZW50aWFsID0gLWV4cG9uZW50aWFs
OworICAgICAgICBpZiAoZXhwb25lbnRpYWwgPj0gMTAwKQorICAgICAgICAgICAgKm5leHQrKyA9
IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIGV4cG9uZW50aWFsIC8gMTAwKTsKKyAgICAgICAgaWYg
KGV4cG9uZW50aWFsID49IDEwKQorICAgICAgICAgICAgKm5leHQrKyA9IHN0YXRpY19jYXN0PGNo
YXI+KCcwJyArIChleHBvbmVudGlhbCAlIDEwMCkgLyAxMCk7CisgICAgICAgICpuZXh0KysgPSBz
dGF0aWNfY2FzdDxjaGFyPignMCcgKyBleHBvbmVudGlhbCAlIDEwKTsKKyAgICB9CisgICAgaWYg
KHJlc3VsdExlbmd0aCkKKyAgICAgICAgKnJlc3VsdExlbmd0aCA9IG5leHQgLSBidWZmZXI7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL2R0
b2EuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgKaW5kZXggY2JlYzdjNy4uYjMzZWEzZSAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaAorKysgYi9KYXZhU2NyaXB0Q29y
ZS93dGYvZHRvYS5oCkBAIC0zMCw4ICszMCwxNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBleHRl
cm4gV1RGOjpNdXRleCogc19kdG9hUDVNdXRleDsKIAogICAgIGRvdWJsZSBzdHJ0b2QoY29uc3Qg
Y2hhciogczAwLCBjaGFyKiogc2UpOwotICAgIHZvaWQgZHRvYShjaGFyKiByZXN1bHQsIGRvdWJs
ZSBkLCBpbnQgbmRpZ2l0cywgaW50KiBkZWNwdCwgaW50KiBzaWduLCBjaGFyKiogcnZlKTsKIAor
ICAgIHR5cGVkZWYgY2hhciBEdG9hQnVmZmVyWzgwXTsKKyAgICB2b2lkIGR0b2EoRHRvYUJ1ZmZl
ciByZXN1bHQsIGRvdWJsZSBkLCBpbnQgbmRpZ2l0cywgaW50KiBkZWNwdCwgaW50KiBzaWduLCBj
aGFyKiogcnZlKTsKKworICAgIC8vIGR0b2EoKSBmb3IgRUNNQS0yNjIgJ1RvU3RyaW5nIEFwcGxp
ZWQgdG8gdGhlIE51bWJlciBUeXBlLicKKyAgICAvLyBUaGUgKnJlc3VsdExlbmd0aCB3aWxsIGhh
dmUgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0YW50IHN0cmluZyBpbiBidWZlci4KKyAgICAvLyBU
aGUgcmVzdWx0YW50IHN0cmluZyBpc24ndCB0ZXJtaW5hdGVkIGJ5IDAuCisgICAgdm9pZCBkb3Vi
bGVUb1N0cmluZ0luSmF2YVNjcmlwdEZvcm1hdChkb3VibGUsIER0b2FCdWZmZXIgYnVmZmVyLCB1
bnNpZ25lZCogcmVzdWx0TGVuZ3RoKTsKIH0gLy8gbmFtZXNwYWNlIFdURgogCit1c2luZyBXVEY6
OkR0b2FCdWZmZXI7Cit1c2luZyBXVEY6OmRvdWJsZVRvU3RyaW5nSW5KYXZhU2NyaXB0Rm9ybWF0
OworCiAjZW5kaWYgLy8gV1RGX2R0b2FfaAotLSAKMS42LjMuMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>