<?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>47683</bug_id>
          
          <creation_ts>2010-10-14 13:22:32 -0700</creation_ts>
          <short_desc>Update ImageDecoder::create to match sniffing spec</short_desc>
          <delta_ts>2011-05-23 12:48:13 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>pascal.massimino</cc>
    
    <cc>pkasting</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>294310</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-14 13:22:32 -0700</bug_when>
    <thetext>Update ImageDecoder::create to match sniffing spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294312</commentid>
    <comment_count>1</comment_count>
      <attachid>70769</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-14 13:25:28 -0700</bug_when>
    <thetext>Created attachment 70769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294321</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-14 13:35:56 -0700</bug_when>
    <thetext>Attachment 70769 did not build on chromium:
Build output: http://queues.webkit.org/results/4436039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294322</commentid>
    <comment_count>3</comment_count>
      <attachid>70769</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-10-14 13:36:43 -0700</bug_when>
    <thetext>Comment on attachment 70769
Patch

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

Is walking a vector char-by-char really better than memcmp()?

LGTM otherwise

&gt; WebCore/platform/image-decoders/ImageDecoder.cpp:58
&gt; +    for (unsigned i = 0; i &lt; pattern.length(); ++i) {

This is going to have trouble with the WEBP signature since that has a hole in the middle.  Do you have a plan for how you&apos;ll extend it?

&gt; WebCore/platform/image-decoders/ImageDecoder.cpp:73
&gt; +    DEFINE_STATIC_LOCAL(Vector&lt;char&gt;, GIFSignature1, (&quot;GIF87a&quot;, 6));

Nit: I think it&apos;d be a little clearer to move these to the top of the function and define maxSignatureLength next to them.

&gt; WebCore/platform/image-decoders/ImageDecoder.cpp:79
&gt; +    DEFINE_STATIC_LOCAL(Vector&lt;char&gt;, ICOSignature2, (&quot;\x00\x00\x02\x00&quot;, 4));

Nit: I suggest &quot;CURSignature&quot; instead for clarity.

&gt; WebCore/platform/image-decoders/ImageDecoder.cpp:81
&gt; +    if (matcheSignature(GIFSignature1, contents) || matcheSignature(GIFSignature2, contents))

Won&apos;t compile: matcheSignature -&gt; matchesSignature

&gt; WebCore/platform/image-decoders/ImageDecoder.cpp:93
&gt;      // ICOs always begin with a 2-byte 0 followed by a 2-byte 1.

Nit: These comments aren&apos;t really needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294325</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-14 13:40:10 -0700</bug_when>
    <thetext>Is this observable from JS?  could we create some bogus binary files which match these signatures and find out how the engine is sniffing them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294328</commentid>
    <comment_count>5</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-10-14 13:41:59 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Is this observable from JS?

Not as far as I know.  There&apos;s unlikely to even be theoretical impact given that things like the GIF signatures were already being checked in GIFImageDecoder.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294354</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-14 14:01:12 -0700</bug_when>
    <thetext>Attachment 70769 did not build on gtk:
Build output: http://queues.webkit.org/results/4466044</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294356</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-14 14:05:30 -0700</bug_when>
    <thetext>&gt; Is walking a vector char-by-char really better than memcmp()?

It&apos;s more obviously memory safe.

&gt; &gt; WebCore/platform/image-decoders/ImageDecoder.cpp:58
&gt; &gt; +    for (unsigned i = 0; i &lt; pattern.length(); ++i) {
&gt; 
&gt; This is going to have trouble with the WEBP signature since that has a hole in the middle.  Do you have a plan for how you&apos;ll extend it?

I actually wrote the patch originally with a mask parameter too, but then I removed it because it&apos;s not needed yet.

&gt; &gt; WebCore/platform/image-decoders/ImageDecoder.cpp:73
&gt; &gt; +    DEFINE_STATIC_LOCAL(Vector&lt;char&gt;, GIFSignature1, (&quot;GIF87a&quot;, 6));
&gt; 
&gt; Nit: I think it&apos;d be a little clearer to move these to the top of the function and define maxSignatureLength next to them.

Ok.

&gt; &gt; WebCore/platform/image-decoders/ImageDecoder.cpp:79
&gt; &gt; +    DEFINE_STATIC_LOCAL(Vector&lt;char&gt;, ICOSignature2, (&quot;\x00\x00\x02\x00&quot;, 4));
&gt; 
&gt; Nit: I suggest &quot;CURSignature&quot; instead for clarity.

Ah, good idea.

&gt; &gt; WebCore/platform/image-decoders/ImageDecoder.cpp:81
&gt; &gt; +    if (matcheSignature(GIFSignature1, contents) || matcheSignature(GIFSignature2, contents))
&gt; 
&gt; Won&apos;t compile: matcheSignature -&gt; matchesSignature

I guess this file isn&apos;t used in the Mac build.

&gt; &gt; WebCore/platform/image-decoders/ImageDecoder.cpp:93
&gt; &gt;      // ICOs always begin with a 2-byte 0 followed by a 2-byte 1.
&gt; 
&gt; Nit: These comments aren&apos;t really needed.

Yeah, especially once I rename the signatures as you suggest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294375</commentid>
    <comment_count>8</comment_count>
      <attachid>70779</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-14 14:35:30 -0700</bug_when>
    <thetext>Created attachment 70779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294394</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-14 15:08:29 -0700</bug_when>
    <thetext>Attachment 70779 did not build on gtk:
Build output: http://queues.webkit.org/results/4467019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294395</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-14 15:08:36 -0700</bug_when>
    <thetext>Attachment 70779 did not build on chromium:
Build output: http://queues.webkit.org/results/4419034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294446</commentid>
    <comment_count>11</comment_count>
      <attachid>70779</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-14 16:24:46 -0700</bug_when>
    <thetext>Comment on attachment 70779
Patch

I&apos;ll make it compile before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294466</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-14 16:51:00 -0700</bug_when>
    <thetext>I looked into creating a test for this.  It turns out that Drag and drop knows the extension of the image.  So if we dragged the image off screen we could get its extension.

JavaScript however has no way to get the extension (or mimetype) of a displayed image as far as I can tell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294468</commentid>
    <comment_count>13</comment_count>
      <attachid>70799</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-14 16:52:10 -0700</bug_when>
    <thetext>Created attachment 70799
the test case I was playing around with (for posterity)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303283</commentid>
    <comment_count>14</comment_count>
      <attachid>70779</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-02 02:59:32 -0700</bug_when>
    <thetext>Comment on attachment 70779
Patch

I really wish we had better testing for our image decoders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303788</commentid>
    <comment_count>15</comment_count>
      <attachid>72767</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-02 16:42:10 -0700</bug_when>
    <thetext>Created attachment 72767
merge to TOT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303854</commentid>
    <comment_count>16</comment_count>
      <attachid>72784</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-02 19:09:32 -0700</bug_when>
    <thetext>Created attachment 72784
merge to TOT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304387</commentid>
    <comment_count>17</comment_count>
    <who name="Pascal Massimino">pascal.massimino</who>
    <bug_when>2010-11-03 18:01:54 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Created an attachment (id=72784) [details]
&gt; merge to TOT

shouldn&apos;t the WEBSignature be: &quot;RIFF????WEBPVP&quot; (14 symbols, with four &apos;?&apos;s) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304389</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-03 18:05:46 -0700</bug_when>
    <thetext>&gt; shouldn&apos;t the WEBSignature be: &quot;RIFF????WEBPVP&quot; (14 symbols, with four &apos;?&apos;s) ?

That probably explains why the WebP test is failing.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408043</commentid>
    <comment_count>19</comment_count>
      <attachid>94439</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-23 10:28:46 -0700</bug_when>
    <thetext>Created attachment 94439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408047</commentid>
    <comment_count>20</comment_count>
      <attachid>94439</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-23 10:32:32 -0700</bug_when>
    <thetext>Comment on attachment 94439
Patch

OK.  Seems we could test this by having a green square PNG and modifying its signature, or similarly a GIF.  And make sure that it loads or doesn&apos;t load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408053</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-23 10:37:29 -0700</bug_when>
    <thetext>Possibly, unless something else in the network stack obscures that difference.  I can try writing such a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408067</commentid>
    <comment_count>22</comment_count>
      <attachid>94443</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-23 10:52:02 -0700</bug_when>
    <thetext>Created attachment 94443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408069</commentid>
    <comment_count>23</comment_count>
      <attachid>94443</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-23 10:52:58 -0700</bug_when>
    <thetext>Comment on attachment 94443
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408169</commentid>
    <comment_count>24</comment_count>
      <attachid>94443</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-23 12:48:06 -0700</bug_when>
    <thetext>Comment on attachment 94443
Patch

Clearing flags on attachment: 94443

Committed r87090: &lt;http://trac.webkit.org/changeset/87090&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408170</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-23 12:48:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70769</attachid>
            <date>2010-10-14 13:25:28 -0700</date>
            <delta_ts>2010-10-14 14:35:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47683-20101014132527.patch</filename>
            <type>text/plain</type>
            <size>4780</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTgwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMTAtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgSW1hZ2VEZWNvZGVyOjpjcmVhdGUgdG8gbWF0Y2ggc25pZmZpbmcgc3BlYworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc2ODMKKworICAgICAgICBU
aGlzIHBhdGNoIHVwZGF0ZXMgdGhlIHNuaWZmaW5nIHNpZ25hdHVyZXMgdXNlZCBieSBJbWFnZURl
Y29kZXI6OmNyZWF0ZQorICAgICAgICB0byBtYXRjaCB0aGUgc25pZmZpbmcgc3BlYyBiZWluZyB3
b3JrZWQgb24gaW4gdGhlIElFVEYuICBJdCdzIGRpZmZpY3VsdAorICAgICAgICB0byBvYnNlcnZl
IHRoaXMgY2hhbmdlIHVubGVzcyB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgaW1hZ2UgZGVjb2RlcnMu
CisgICAgICAgIEhvd2V2ZXIsIHdlIHNob3VsZCBzdGlsbCBtYXRjaCB0aGUgc3BlYyBzbyB0aGF0
IGV2ZXJ5b25lIGlzIHVzaW5nIHRoZQorICAgICAgICBzYW1lIHNpZ25hdHVyZXMuCisKKyAgICAg
ICAgQWxzbywgd2hpbGUgSSB3YXMgaGVyZSwgSSB1cGRhdGVkIHRoaXMgY29kZSB0byB1c2UgbW9y
ZSBtb2Rlcm4KKyAgICAgICAgY29uY2VwdHMsIGxpa2UgVmVjdG9yLgorCisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlGcm9tU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNTaWduYXR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorCiAyMDEwLTEw
LTE0ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiA2OTc3NikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzcsMTMgKzM3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1
ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBTaGFyZWRCdWZmZXImIHNoYXJlZEJ1
ZmZlciwgdW5zaWduZWQgb2Zmc2V0KQorc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVm
ZmVyKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAgdW5zaWdu
ZWQgYnl0ZXNFeHRyYWN0ZWQgPSAwOwogICAgIGNvbnN0IGNoYXIqIG1vcmVEYXRhOwogICAgIHdo
aWxlICh1bnNpZ25lZCBtb3JlRGF0YUxlbmd0aCA9IHNoYXJlZEJ1ZmZlci5nZXRTb21lRGF0YSht
b3JlRGF0YSwgb2Zmc2V0KSkgewogICAgICAgICB1bnNpZ25lZCBieXRlc1RvQ29weSA9IG1pbihi
dWZmZXJMZW5ndGggLSBieXRlc0V4dHJhY3RlZCwgbW9yZURhdGFMZW5ndGgpOwotICAgICAgICBt
ZW1jcHkoYnVmZmVyICsgYnl0ZXNFeHRyYWN0ZWQsIG1vcmVEYXRhLCBieXRlc1RvQ29weSk7Cisg
ICAgICAgIGJ1ZmZlci5hcHBlbmQobW9yZURhdGEsIGJ5dGVzVG9Db3B5KTsKICAgICAgICAgYnl0
ZXNFeHRyYWN0ZWQgKz0gYnl0ZXNUb0NvcHk7CiAgICAgICAgIGlmIChieXRlc0V4dHJhY3RlZCA9
PSBidWZmZXJMZW5ndGgpCiAgICAgICAgICAgICBicmVhazsKQEAgLTUyLDM1ICs1Miw0NyBAQCBz
dGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhCiAgICAgcmV0dXJuIGJ5dGVz
RXh0cmFjdGVkOwogfQogCitzdGF0aWMgYm9vbCBtYXRjaGVzU2lnbmF0dXJlKGNvbnN0IFZlY3Rv
cjxjaGFyPiYgcGF0dGVybiwgY29uc3QgVmVjdG9yPGNoYXI+JiBjb250ZW50KQoreworICAgIEFT
U0VSVChwYXR0ZXJuLmxlbmd0aCgpIDw9IGNvbnRlbnQubGVuZ3RoKCkpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBwYXR0ZXJuLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKHBh
dHRlcm5baV0gIT0gY29udGVudFtpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEltYWdlRGVjb2RlciogSW1hZ2VEZWNvZGVyOjpjcmVh
dGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIHByZW11bHRpcGx5QWxwaGEpCiB7Ci0g
ICAgLy8gV2UgbmVlZCBhdCBsZWFzdCA0IGJ5dGVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBraW5kIG9m
IGltYWdlIHdlJ3JlIGRlYWxpbmcKLSAgICAvLyB3aXRoLgotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtYXhNYXJrZXJMZW5ndGggPSA0OwotICAgIGNoYXIgY29udGVudHNbbWF4TWFya2VyTGVu
Z3RoXTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4U2lnbmF0dXJlTGVuZ3RoID0gODsK
KyAgICBWZWN0b3I8Y2hhciwgbWF4U2lnbmF0dXJlTGVuZ3RoPiBjb250ZW50czsKICAgICB1bnNp
Z25lZCBsZW5ndGggPSBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjb250ZW50cywgbWF4TWFya2VyTGVu
Z3RoLCBkYXRhLCAwKTsKLSAgICBpZiAobGVuZ3RoIDwgbWF4TWFya2VyTGVuZ3RoKQorICAgIGlm
IChsZW5ndGggPCBtYXhTaWduYXR1cmVMZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
Ly8gR0lGcyBiZWdpbiB3aXRoIEdJRjgoNyBvciA5KS4KLSAgICBpZiAoc3RybmNtcChjb250ZW50
cywgIkdJRjgiLCA0KSA9PSAwKQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPGNoYXI+
LCBHSUZTaWduYXR1cmUxLCAoIkdJRjg3YSIsIDYpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFZlY3RvcjxjaGFyPiwgR0lGU2lnbmF0dXJlMiwgKCJHSUY4OWEiLCA2KSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChWZWN0b3I8Y2hhcj4sIFBOR1NpZ25hdHVyZSwgKCJceDg5XHg1MFx4QUVc
eDQ3XHgwRFx4MEFceDFBXHgwQSIsIDgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3Rv
cjxjaGFyPiwgSlBFR1NpZ25hdHVyZSwgKCJceEZGXHhEOFx4RkYiLCAzKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChWZWN0b3I8Y2hhcj4sIEJNUFNpZ25hdHVyZSwgKCJCTSIsIDIpKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxjaGFyPiwgSUNPU2lnbmF0dXJlMSwgKCJceDAw
XHgwMFx4MDFceDAwIiwgNCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPGNoYXI+
LCBJQ09TaWduYXR1cmUyLCAoIlx4MDBceDAwXHgwMlx4MDAiLCA0KSk7CisKKyAgICBpZiAobWF0
Y2hlU2lnbmF0dXJlKEdJRlNpZ25hdHVyZTEsIGNvbnRlbnRzKSB8fCBtYXRjaGVTaWduYXR1cmUo
R0lGU2lnbmF0dXJlMiwgY29udGVudHMpKQogICAgICAgICByZXR1cm4gbmV3IEdJRkltYWdlRGVj
b2RlcihwcmVtdWx0aXBseUFscGhhKTsKIAotICAgIC8vIFRlc3QgZm9yIFBORy4KLSAgICBpZiAo
IW1lbWNtcChjb250ZW50cywgIlx4ODlceDUwXHg0RVx4NDciLCA0KSkKKyAgICBpZiAobWF0Y2hl
c1NpZ25hdHVyZShQTkdTaWduYXR1cmUsIGNvbnRlbnRzKSkKICAgICAgICAgcmV0dXJuIG5ldyBQ
TkdJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSk7CiAKLSAgICAvLyBKUEVHCi0gICAgaWYg
KCFtZW1jbXAoY29udGVudHMsICJceEZGXHhEOFx4RkYiLCAzKSkKKyAgICBpZiAobWF0Y2hlc1Np
Z25hdHVyZShKUEVHU2lnbmF0dXJlLCBjb250ZW50cykpCiAgICAgICAgIHJldHVybiBuZXcgSlBF
R0ltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhKTsKIAotICAgIC8vIEJNUAotICAgIGlmIChz
dHJuY21wKGNvbnRlbnRzLCAiQk0iLCAyKSA9PSAwKQorICAgIGlmIChtYXRjaGVzU2lnbmF0dXJl
KEJNUFNpZ25hdHVyZSwgY29udGVudHMpKQogICAgICAgICByZXR1cm4gbmV3IEJNUEltYWdlRGVj
b2RlcihwcmVtdWx0aXBseUFscGhhKTsKIAogICAgIC8vIElDT3MgYWx3YXlzIGJlZ2luIHdpdGgg
YSAyLWJ5dGUgMCBmb2xsb3dlZCBieSBhIDItYnl0ZSAxLgogICAgIC8vIENVUnMgYmVnaW4gd2l0
aCAyLWJ5dGUgMCBmb2xsb3dlZCBieSAyLWJ5dGUgMi4KLSAgICBpZiAoIW1lbWNtcChjb250ZW50
cywgIlx4MDBceDAwXHgwMVx4MDAiLCA0KSB8fCAhbWVtY21wKGNvbnRlbnRzLCAiXHgwMFx4MDBc
eDAyXHgwMCIsIDQpKQorICAgIGlmIChtYXRjaGVTaWduYXR1cmUoSUNPU2lnbmF0dXJlMSwgY29u
dGVudHMpIHx8IG1hdGNoZVNpZ25hdHVyZShJQ09TaWduYXR1cmUyLCBjb250ZW50cykpCiAgICAg
ICAgIHJldHVybiBuZXcgSUNPSW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpOwogCiAgICAg
Ly8gR2l2ZSB1cC4gV2UgZG9uJ3Qga25vdyB3aGF0IHRoZSBoZWNrIHRoaXMgaXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70779</attachid>
            <date>2010-10-14 14:35:30 -0700</date>
            <delta_ts>2010-11-02 16:42:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47683-20101014143529.patch</filename>
            <type>text/plain</type>
            <size>4800</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTgwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMTAtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgSW1hZ2VEZWNvZGVyOjpjcmVhdGUgdG8gbWF0Y2ggc25pZmZpbmcgc3BlYworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc2ODMKKworICAgICAgICBU
aGlzIHBhdGNoIHVwZGF0ZXMgdGhlIHNuaWZmaW5nIHNpZ25hdHVyZXMgdXNlZCBieSBJbWFnZURl
Y29kZXI6OmNyZWF0ZQorICAgICAgICB0byBtYXRjaCB0aGUgc25pZmZpbmcgc3BlYyBiZWluZyB3
b3JrZWQgb24gaW4gdGhlIElFVEYuICBJdCdzIGRpZmZpY3VsdAorICAgICAgICB0byBvYnNlcnZl
IHRoaXMgY2hhbmdlIHVubGVzcyB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgaW1hZ2UgZGVjb2RlcnMu
CisgICAgICAgIEhvd2V2ZXIsIHdlIHNob3VsZCBzdGlsbCBtYXRjaCB0aGUgc3BlYyBzbyB0aGF0
IGV2ZXJ5b25lIGlzIHVzaW5nIHRoZQorICAgICAgICBzYW1lIHNpZ25hdHVyZXMuCisKKyAgICAg
ICAgQWxzbywgd2hpbGUgSSB3YXMgaGVyZSwgSSB1cGRhdGVkIHRoaXMgY29kZSB0byB1c2UgbW9y
ZSBtb2Rlcm4KKyAgICAgICAgY29uY2VwdHMsIGxpa2UgVmVjdG9yLgorCisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlGcm9tU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNTaWduYXR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorCiAyMDEwLTEw
LTE0ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiA2OTc3NikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzcsMTMgKzM3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1
ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBTaGFyZWRCdWZmZXImIHNoYXJlZEJ1
ZmZlciwgdW5zaWduZWQgb2Zmc2V0KQorc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVm
ZmVyKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAgdW5zaWdu
ZWQgYnl0ZXNFeHRyYWN0ZWQgPSAwOwogICAgIGNvbnN0IGNoYXIqIG1vcmVEYXRhOwogICAgIHdo
aWxlICh1bnNpZ25lZCBtb3JlRGF0YUxlbmd0aCA9IHNoYXJlZEJ1ZmZlci5nZXRTb21lRGF0YSht
b3JlRGF0YSwgb2Zmc2V0KSkgewogICAgICAgICB1bnNpZ25lZCBieXRlc1RvQ29weSA9IG1pbihi
dWZmZXJMZW5ndGggLSBieXRlc0V4dHJhY3RlZCwgbW9yZURhdGFMZW5ndGgpOwotICAgICAgICBt
ZW1jcHkoYnVmZmVyICsgYnl0ZXNFeHRyYWN0ZWQsIG1vcmVEYXRhLCBieXRlc1RvQ29weSk7Cisg
ICAgICAgIGJ1ZmZlci5hcHBlbmQobW9yZURhdGEsIGJ5dGVzVG9Db3B5KTsKICAgICAgICAgYnl0
ZXNFeHRyYWN0ZWQgKz0gYnl0ZXNUb0NvcHk7CiAgICAgICAgIGlmIChieXRlc0V4dHJhY3RlZCA9
PSBidWZmZXJMZW5ndGgpCiAgICAgICAgICAgICBicmVhazsKQEAgLTUyLDM4ICs1Miw0NyBAQCBz
dGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhCiAgICAgcmV0dXJuIGJ5dGVz
RXh0cmFjdGVkOwogfQogCitzdGF0aWMgYm9vbCBtYXRjaGVzU2lnbmF0dXJlKGNvbnN0IFZlY3Rv
cjxjaGFyPiYgcGF0dGVybiwgY29uc3QgVmVjdG9yPGNoYXI+JiBjb250ZW50KQoreworICAgIEFT
U0VSVChwYXR0ZXJuLmxlbmd0aCgpIDw9IGNvbnRlbnQubGVuZ3RoKCkpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBwYXR0ZXJuLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKHBh
dHRlcm5baV0gIT0gY29udGVudFtpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEltYWdlRGVjb2RlciogSW1hZ2VEZWNvZGVyOjpjcmVh
dGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIHByZW11bHRpcGx5QWxwaGEpCiB7Ci0g
ICAgLy8gV2UgbmVlZCBhdCBsZWFzdCA0IGJ5dGVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBraW5kIG9m
IGltYWdlIHdlJ3JlIGRlYWxpbmcKLSAgICAvLyB3aXRoLgotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtYXhNYXJrZXJMZW5ndGggPSA0OwotICAgIGNoYXIgY29udGVudHNbbWF4TWFya2VyTGVu
Z3RoXTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4U2lnbmF0dXJlTGVuZ3RoID0gODsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxjaGFyPiwgR0lGU2lnbmF0dXJlMSwgKDYs
ICJHSUY4N2EiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8Y2hhcj4sIEdJRlNp
Z25hdHVyZTIsICg2LCAiR0lGODlhIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9y
PGNoYXI+LCBQTkdTaWduYXR1cmUsICg4LCAiXHg4OVx4NTBceEFFXHg0N1x4MERceDBBXHgxQVx4
MEEiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8Y2hhcj4sIEpQRUdTaWduYXR1
cmUsICgzLCAiXHhGRlx4RDhceEZGIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9y
PGNoYXI+LCBCTVBTaWduYXR1cmUsICgyLCAiQk0iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChWZWN0b3I8Y2hhcj4sIElDT1NpZ25hdHVyZSwgKDQsICJceDAwXHgwMFx4MDFceDAwIikpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPGNoYXI+LCBDVVJTaWduYXR1cmUsICg0LCAi
XHgwMFx4MDBceDAyXHgwMCIpKTsKKworICAgIFZlY3RvcjxjaGFyLCBtYXhTaWduYXR1cmVMZW5n
dGg+IGNvbnRlbnRzOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvcHlGcm9tU2hhcmVkQnVmZmVy
KGNvbnRlbnRzLCBtYXhNYXJrZXJMZW5ndGgsIGRhdGEsIDApOwotICAgIGlmIChsZW5ndGggPCBt
YXhNYXJrZXJMZW5ndGgpCisgICAgaWYgKGxlbmd0aCA8IG1heFNpZ25hdHVyZUxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICAvLyBHSUZzIGJlZ2luIHdpdGggR0lGOCg3IG9yIDkpLgot
ICAgIGlmIChzdHJuY21wKGNvbnRlbnRzLCAiR0lGOCIsIDQpID09IDApCisgICAgaWYgKG1hdGNo
ZXNTaWduYXR1cmUoR0lGU2lnbmF0dXJlMSwgY29udGVudHMpIHx8IG1hdGNoZXNTaWduYXR1cmUo
R0lGU2lnbmF0dXJlMiwgY29udGVudHMpKQogICAgICAgICByZXR1cm4gbmV3IEdJRkltYWdlRGVj
b2RlcihwcmVtdWx0aXBseUFscGhhKTsKIAotICAgIC8vIFRlc3QgZm9yIFBORy4KLSAgICBpZiAo
IW1lbWNtcChjb250ZW50cywgIlx4ODlceDUwXHg0RVx4NDciLCA0KSkKKyAgICBpZiAobWF0Y2hl
c1NpZ25hdHVyZShQTkdTaWduYXR1cmUsIGNvbnRlbnRzKSkKICAgICAgICAgcmV0dXJuIG5ldyBQ
TkdJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSk7CiAKLSAgICAvLyBKUEVHCi0gICAgaWYg
KCFtZW1jbXAoY29udGVudHMsICJceEZGXHhEOFx4RkYiLCAzKSkKKyAgICBpZiAobWF0Y2hlc1Np
Z25hdHVyZShKUEVHU2lnbmF0dXJlLCBjb250ZW50cykpCiAgICAgICAgIHJldHVybiBuZXcgSlBF
R0ltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhKTsKIAotICAgIC8vIEJNUAotICAgIGlmIChz
dHJuY21wKGNvbnRlbnRzLCAiQk0iLCAyKSA9PSAwKQorICAgIGlmIChtYXRjaGVzU2lnbmF0dXJl
KEJNUFNpZ25hdHVyZSwgY29udGVudHMpKQogICAgICAgICByZXR1cm4gbmV3IEJNUEltYWdlRGVj
b2RlcihwcmVtdWx0aXBseUFscGhhKTsKIAotICAgIC8vIElDT3MgYWx3YXlzIGJlZ2luIHdpdGgg
YSAyLWJ5dGUgMCBmb2xsb3dlZCBieSBhIDItYnl0ZSAxLgotICAgIC8vIENVUnMgYmVnaW4gd2l0
aCAyLWJ5dGUgMCBmb2xsb3dlZCBieSAyLWJ5dGUgMi4KLSAgICBpZiAoIW1lbWNtcChjb250ZW50
cywgIlx4MDBceDAwXHgwMVx4MDAiLCA0KSB8fCAhbWVtY21wKGNvbnRlbnRzLCAiXHgwMFx4MDBc
eDAyXHgwMCIsIDQpKQorICAgIGlmIChtYXRjaGVzU2lnbmF0dXJlKElDT1NpZ25hdHVyZSwgY29u
dGVudHMpIHx8IG1hdGNoZXNTaWduYXR1cmUoQ1VSU2lnbmF0dXJlLCBjb250ZW50cykpCiAgICAg
ICAgIHJldHVybiBuZXcgSUNPSW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpOwogCi0gICAg
Ly8gR2l2ZSB1cC4gV2UgZG9uJ3Qga25vdyB3aGF0IHRoZSBoZWNrIHRoaXMgaXMuCiAgICAgcmV0
dXJuIDA7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>70799</attachid>
            <date>2010-10-14 16:52:10 -0700</date>
            <delta_ts>2010-10-14 16:52:10 -0700</delta_ts>
            <desc>the test case I was playing around with (for posterity)</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>1544</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PHN0eWxlPgojZHJvcHpvbmUgewogICAgd2lkdGg6IDEwMHB4OwogICAgaGVpZ2h0OjEwMHB4Owog
ICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKfQo8L3N0eWxlPgo8aW5wdXQgdHlwZT0iZmlsZSI+
PGJyPgo8ZGl2IGlkPSJkcm9wem9uZSI+PC9kaXY+CjxpbWcgc3JjPSJodHRwOi8vd3d3Lmdvb2ds
ZS5jb20vaW1hZ2VzL2xvZ29zL3BzX2xvZ28yLnBuZyI+CjxkaXYgaWQ9ImxvZyI+PC9kaXY+Cjxz
Y3JpcHQ+CmZ1bmN0aW9uIGNsZWFyTG9nKCkKewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZyIpLmlubmVySFRNTCA9ICIiOwp9CgpmdW5jdGlvbiBsb2coc3RyaW5nKQp7CiAgICB2YXIg
bG9nRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpOwogICAgbG9nRGl2LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cmluZykpOwogICAgbG9nRGl2LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOwp9CgpmdW5jdGlvbiBldmFsQW5k
TG9nKHRvRXZhbCkKewogICAgbG9nKHRvRXZhbCArICIgOiAiICsgZXZhbCh0b0V2YWwpKTsKfQoK
ZnVuY3Rpb24gZG9tU3RyaW5nTGlzdFRvU3RyaW5nKGRvbVN0cmluZ0xpc3QpCnsKICAgIHZhciBz
dHJpbmcgPSAiWyI7CiAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGRvbVN0cmluZ0xpc3QubGVuZ3Ro
OyB4KyspIHsKICAgICAgICBpZiAoeCAhPSAwKQogICAgICAgICAgICBzdHJpbmcgKz0gIiwgIjsK
ICAgICAgICBzdHJpbmcgKz0gZG9tU3RyaW5nTGlzdC5pdGVtKHgpOwogICAgfQogICAgcmV0dXJu
IHN0cmluZyArICJdIjsKfQoKdmFyIGRyb3B6b25lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImRyb3B6b25lIik7CmRyb3B6b25lLm9uZHJhZ292ZXIgPSBmdW5jdGlvbihldmVudCkgewogICAg
d2luZG93LmV2ZW50ID0gZXZlbnQ7IC8vIEZpcmVmb3ggZG9lc24ndCBzZWVtIHRvIGhhdmUgd2lu
ZG93LmV2ZW50Pz8KICAgIGNsZWFyTG9nKCk7CiAgICBldmFsQW5kTG9nKCJldmVudCIpOwogICAg
ZXZhbEFuZExvZygiZXZlbnQuZGF0YVRyYW5zZmVyIik7CiAgICBldmFsQW5kTG9nKCJldmVudC5k
YXRhVHJhbnNmZXIudHlwZXMiKTsKICAgIGV2YWxBbmRMb2coImV2ZW50LmRhdGFUcmFuc2Zlci50
eXBlcy5sZW5ndGgiKTsgICAgCiAgICAvLyBGaXJlZm94IGV4cG9zZXMgYSBET01TdHJpbmdMaXN0
IGluc3RlYWQgb2YgYW4gYXJyYXkgZm9yICJ0eXBlcyIKICAgIGV2YWxBbmRMb2coImRvbVN0cmlu
Z0xpc3RUb1N0cmluZyhldmVudC5kYXRhVHJhbnNmZXIudHlwZXMpIik7CiAgICBldmFsQW5kTG9n
KCJldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMiKTsKICAgIGV2YWxBbmRMb2coImV2ZW50LmRhdGFU
cmFuc2Zlci5maWxlcy5sZW5ndGgiKTsKICAgIGV2YWxBbmRMb2coImV2ZW50LmRhdGFUcmFuc2Zl
ci5nZXREYXRhKCdGaWxlcycpLmxlbmd0aCIpCn0KZHJvcHpvbmUub25kcm9wID0gZnVuY3Rpb24o
KSB7CiAgICBhbGVydCgiZm9vIik7CiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwp9Cjwvc2Ny
aXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72767</attachid>
            <date>2010-11-02 16:42:10 -0700</date>
            <delta_ts>2010-11-02 19:09:26 -0700</delta_ts>
            <desc>merge to TOT</desc>
            <filename>bug-47683-20101102164208.patch</filename>
            <type>text/plain</type>
            <size>6328</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmQzZWUzZDZhMWQ0OGFjZmJjMDE2MjgzMmQyNmUzYTYyMGJiNjZiNC4uMmE2ZTVkYTZlZTNkMjE5
ZDA0YWE0NDUwNjkyMDQyNmZjM2EwOWUyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0xMS0wMiAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgorCisgICAgICAgIFVwZGF0ZSBJbWFnZURlY29kZXI6OmNyZWF0ZSB0byBtYXRjaCBz
bmlmZmluZyBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NzY4MworCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgc25pZmZpbmcgc2ln
bmF0dXJlcyB1c2VkIGJ5IEltYWdlRGVjb2Rlcjo6Y3JlYXRlCisgICAgICAgIHRvIG1hdGNoIHRo
ZSBzbmlmZmluZyBzcGVjIGJlaW5nIHdvcmtlZCBvbiBpbiB0aGUgSUVURi4gIEl0J3MgZGlmZmlj
dWx0CisgICAgICAgIHRvIG9ic2VydmUgdGhpcyBjaGFuZ2UgdW5sZXNzIHRoZXJlIGlzIGEgYnVn
IGluIHRoZSBpbWFnZSBkZWNvZGVycy4KKyAgICAgICAgSG93ZXZlciwgd2Ugc2hvdWxkIHN0aWxs
IG1hdGNoIHRoZSBzcGVjIHNvIHRoYXQgZXZlcnlvbmUgaXMgdXNpbmcgdGhlCisgICAgICAgIHNh
bWUgc2lnbmF0dXJlcy4KKworICAgICAgICBBbHNvLCB3aGlsZSBJIHdhcyBoZXJlLCBJIHVwZGF0
ZWQgdGhpcyBjb2RlIHRvIHVzZSBtb3JlIG1vZGVybgorICAgICAgICBjb25jZXB0cywgbGlrZSBW
ZWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29weUZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVNpZ25hdHVyZTo6TUlNRVNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNSU1FU2lnbmF0dXJlOjptYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6Y3JlYXRlKToKKwogMjAxMC0xMS0wMiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBhNGFhNjMwYjgzYjY4
YmEyMTY2ZTMxM2E0MGUwNzQzNDJhYTI2YjJlLi5hYzgyZDI3ZWFmOTdiNWQ2YjY5YTgwZWFiYWJl
NzQxZmQzZmRkOWRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwCkBAIC0zOCwxMyArMzgsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRC
dWZmZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgc2hhcmVkQnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQpCit0ZW1wbGF0ZTxzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+CitzdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoVmVjdG9y
PGNoYXIsIGlubGluZUNhcGFjaXR5PiYgYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAg
dW5zaWduZWQgYnl0ZXNFeHRyYWN0ZWQgPSAwOwogICAgIGNvbnN0IGNoYXIqIG1vcmVEYXRhOwog
ICAgIHdoaWxlICh1bnNpZ25lZCBtb3JlRGF0YUxlbmd0aCA9IHNoYXJlZEJ1ZmZlci5nZXRTb21l
RGF0YShtb3JlRGF0YSwgb2Zmc2V0KSkgewogICAgICAgICB1bnNpZ25lZCBieXRlc1RvQ29weSA9
IG1pbihidWZmZXJMZW5ndGggLSBieXRlc0V4dHJhY3RlZCwgbW9yZURhdGFMZW5ndGgpOwotICAg
ICAgICBtZW1jcHkoYnVmZmVyICsgYnl0ZXNFeHRyYWN0ZWQsIG1vcmVEYXRhLCBieXRlc1RvQ29w
eSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQobW9yZURhdGEsIGJ5dGVzVG9Db3B5KTsKICAgICAg
ICAgYnl0ZXNFeHRyYWN0ZWQgKz0gYnl0ZXNUb0NvcHk7CiAgICAgICAgIGlmIChieXRlc0V4dHJh
Y3RlZCA9PSBidWZmZXJMZW5ndGgpCiAgICAgICAgICAgICBicmVhazsKQEAgLTUzLDUxICs1NCw2
OSBAQCBzdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVyLCB1
bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0CiAgICAgcmV0dXJuIGJ5dGVzRXh0cmFjdGVkOwog
fQogCitjbGFzcyBNSU1FU2lnbmF0dXJlIHsKK3B1YmxpYzoKKyAgICBNSU1FU2lnbmF0dXJlKHNp
emVfdCBsZW5ndGgsIGNvbnN0IGNoYXIqIHBhdHRlcm4sIGNvbnN0IGNoYXIqIG1hc2spCisgICAg
eworICAgICAgICBtX3BhdHRlcm4uYXBwZW5kKHBhdHRlcm4sIGxlbmd0aCk7CisgICAgICAgIG1f
bWFzay5hcHBlbmQobWFzaywgbGVuZ3RoKTsKKyAgICAgICAgLy8gQ2hlY2sgZm9yIG51bGwgdGVy
bWluYXRpb24gdG8gY2F0Y2ggdHlwb3MuCisgICAgICAgIEFTU0VSVCghcGF0dGVybltsZW5ndGhd
KTsKKyAgICAgICAgQVNTRVJUKCFtYXNrW2xlbmd0aF0pOworICAgIH0KKworICAgIGJvb2wgbWF0
Y2hlcyhjb25zdCBWZWN0b3I8Y2hhcj4mIGNvbnRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9wYXR0ZXJuLnNpemUoKSA8PSBjb250ZW50LnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3BhdHRlcm4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmICht
X3BhdHRlcm5baV0gIT0gY29udGVudFtpXSAmIG1fbWFza1tpXSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitw
cml2YXRlOgorICAgIFZlY3RvcjxjaGFyPiBtX3BhdHRlcm47CisgICAgVmVjdG9yPGNoYXI+IG1f
bWFzazsKK307CisKIEltYWdlRGVjb2RlciogSW1hZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhLCBib29sIHByZW11bHRpcGx5QWxwaGEpCiB7Ci0gICAgLy8gV2UgbmVl
ZCBhdCBsZWFzdCA0IGJ5dGVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBraW5kIG9mIGltYWdlIHdlJ3Jl
IGRlYWxpbmcKLSAgICAvLyB3aXRoLgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhNYXJr
ZXJMZW5ndGggPSA0OwotICAgIGNoYXIgY29udGVudHNbbWF4TWFya2VyTGVuZ3RoXTsKLSAgICB1
bnNpZ25lZCBsZW5ndGggPSBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjb250ZW50cywgbWF4TWFya2Vy
TGVuZ3RoLCBkYXRhLCAwKTsKLSAgICBpZiAobGVuZ3RoIDwgbWF4TWFya2VyTGVuZ3RoKQorICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhTaWduYXR1cmVMZW5ndGggPSAxMjsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKE1JTUVTaWduYXR1cmUsIEdJRlNpZ25hdHVyZTEsICg2LCAiR0lGODdh
IiwgIlx4RkZceEZGXHhGRlx4RkZceEZGXHhGRiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KE1JTUVTaWduYXR1cmUsIEdJRlNpZ25hdHVyZTIsICg2LCAiR0lGODlhIiwgIlx4RkZceEZGXHhG
Rlx4RkZceEZGXHhGRiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1JTUVTaWduYXR1cmUs
IFBOR1NpZ25hdHVyZSwgKDgsICJceDg5XHg1MFx4QUVceDQ3XHgwRFx4MEFceDFBXHgwQSIsICJc
eEZGXHhGRlx4RkZceEZGXHhGRlx4RkZceEZGXHhGRiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKE1JTUVTaWduYXR1cmUsIEpQRUdTaWduYXR1cmUsICgzLCAiXHhGRlx4RDhceEZGIiwgIlx4
RkZceEZGXHhGRiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1JTUVTaWduYXR1cmUsIFdF
QlBTaWduYXR1cmUsICgxMiwgIlJJRkY/P1dFQlBWUCIsICJceEZGXHhGRlx4RkZceEZGXHgwMFx4
MDBceEZGXHhGRlx4RkZceEZGXHhGRlx4RkYiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChN
SU1FU2lnbmF0dXJlLCBCTVBTaWduYXR1cmUsICgyLCAiQk0iLCAiXHhGRlx4RkYiKSk7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChNSU1FU2lnbmF0dXJlLCBJQ09TaWduYXR1cmUsICg0LCAiXHgw
MFx4MDBceDAxXHgwMCIsICJceEZGXHhGRlx4RkZceEZGIikpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoTUlNRVNpZ25hdHVyZSwgQ1VSU2lnbmF0dXJlLCAoNCwgIlx4MDBceDAwXHgwMlx4MDAi
LCAiXHhGRlx4RkZceEZGXHhGRiIpKTsKKworICAgIFZlY3RvcjxjaGFyLCBtYXhTaWduYXR1cmVM
ZW5ndGg+IGNvbnRlbnRzOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvcHlGcm9tU2hhcmVkQnVm
ZmVyKGNvbnRlbnRzLCBtYXhTaWduYXR1cmVMZW5ndGgsIGRhdGEsIDApOworICAgIGlmIChsZW5n
dGggPCBtYXhTaWduYXR1cmVMZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgLy8gR0lG
cyBiZWdpbiB3aXRoIEdJRjgoNyBvciA5KS4KLSAgICBpZiAoc3RybmNtcChjb250ZW50cywgIkdJ
RjgiLCA0KSA9PSAwKQorICAgIGlmIChHSUZTaWduYXR1cmUxLm1hdGNoZXMoY29udGVudHMpIHx8
IEdJRlNpZ25hdHVyZTIubWF0Y2hlcyhjb250ZW50cykpCiAgICAgICAgIHJldHVybiBuZXcgR0lG
SW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpOwogCi0gICAgLy8gVGVzdCBmb3IgUE5HLgot
ICAgIGlmICghbWVtY21wKGNvbnRlbnRzLCAiXHg4OVx4NTBceDRFXHg0NyIsIDQpKQorICAgIGlm
IChQTkdTaWduYXR1cmUubWF0Y2hlcyhjb250ZW50cykpCiAgICAgICAgIHJldHVybiBuZXcgUE5H
SW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpOwogCi0gICAgLy8gSlBFRwotICAgIGlmICgh
bWVtY21wKGNvbnRlbnRzLCAiXHhGRlx4RDhceEZGIiwgMykpCisgICAgaWYgKEpQRUdTaWduYXR1
cmUubWF0Y2hlcyhjb250ZW50cykpCiAgICAgICAgIHJldHVybiBuZXcgSlBFR0ltYWdlRGVjb2Rl
cihwcmVtdWx0aXBseUFscGhhKTsKIAogI2lmIFVTRShXRUJQKQotICAgIGlmICghbWVtY21wKGNv
bnRlbnRzLCAiUklGRiIsIDQpKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB3ZWJw
RXh0cmFNYXJrZXIgPSA2OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgd2VicEV4dHJh
TWFya2Vyb2Zmc2V0ID0gODsKLSAgICAgICAgY2hhciBoZWFkZXJbd2VicEV4dHJhTWFya2VyXTsK
LSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gY29weUZyb21TaGFyZWRCdWZmZXIoaGVhZGVyLCB3
ZWJwRXh0cmFNYXJrZXIsIGRhdGEsIHdlYnBFeHRyYU1hcmtlcm9mZnNldCk7Ci0gICAgICAgIGlm
IChsZW5ndGggPj0gd2VicEV4dHJhTWFya2VyKSB7Ci0gICAgICAgICAgICBpZiAoIW1lbWNtcCho
ZWFkZXIsICJXRUJQVlAiLCB3ZWJwRXh0cmFNYXJrZXIpKQotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgV0VCUEltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhKTsKLSAgICAgICAgfQotICAg
IH0KKyAgICBpZiAoV0VCUFNpZ25hdHVyZS5tYXRjaGVzKGNvbnRlbnRzKSkKKyAgICAgICAgcmV0
dXJuIG5ldyBXRUJQSW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpOwogI2VuZGlmCiAKLSAg
ICAvLyBCTVAKLSAgICBpZiAoc3RybmNtcChjb250ZW50cywgIkJNIiwgMikgPT0gMCkKKyAgICBp
ZiAoQk1QU2lnbmF0dXJlLm1hdGNoZXMoY29udGVudHMpKQogICAgICAgICByZXR1cm4gbmV3IEJN
UEltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhKTsKIAotICAgIC8vIElDT3MgYWx3YXlzIGJl
Z2luIHdpdGggYSAyLWJ5dGUgMCBmb2xsb3dlZCBieSBhIDItYnl0ZSAxLgotICAgIC8vIENVUnMg
YmVnaW4gd2l0aCAyLWJ5dGUgMCBmb2xsb3dlZCBieSAyLWJ5dGUgMi4KLSAgICBpZiAoIW1lbWNt
cChjb250ZW50cywgIlx4MDBceDAwXHgwMVx4MDAiLCA0KSB8fCAhbWVtY21wKGNvbnRlbnRzLCAi
XHgwMFx4MDBceDAyXHgwMCIsIDQpKQorICAgIGlmIChJQ09TaWduYXR1cmUubWF0Y2hlcyhjb250
ZW50cykgfHwgQ1VSU2lnbmF0dXJlLm1hdGNoZXMoY29udGVudHMpKQogICAgICAgICByZXR1cm4g
bmV3IElDT0ltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhKTsKIAotICAgIC8vIEdpdmUgdXAu
IFdlIGRvbid0IGtub3cgd2hhdCB0aGUgaGVjayB0aGlzIGlzLgogICAgIHJldHVybiAwOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72784</attachid>
            <date>2010-11-02 19:09:32 -0700</date>
            <delta_ts>2011-05-23 10:28:41 -0700</delta_ts>
            <desc>merge to TOT</desc>
            <filename>bug-47683-20101102190931.patch</filename>
            <type>text/plain</type>
            <size>6393</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmQzZWUzZDZhMWQ0OGFjZmJjMDE2MjgzMmQyNmUzYTYyMGJiNjZiNC4uMmE2ZTVkYTZlZTNkMjE5
ZDA0YWE0NDUwNjkyMDQyNmZjM2EwOWUyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0xMS0wMiAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgorCisgICAgICAgIFVwZGF0ZSBJbWFnZURlY29kZXI6OmNyZWF0ZSB0byBtYXRjaCBz
bmlmZmluZyBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NzY4MworCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgc25pZmZpbmcgc2ln
bmF0dXJlcyB1c2VkIGJ5IEltYWdlRGVjb2Rlcjo6Y3JlYXRlCisgICAgICAgIHRvIG1hdGNoIHRo
ZSBzbmlmZmluZyBzcGVjIGJlaW5nIHdvcmtlZCBvbiBpbiB0aGUgSUVURi4gIEl0J3MgZGlmZmlj
dWx0CisgICAgICAgIHRvIG9ic2VydmUgdGhpcyBjaGFuZ2UgdW5sZXNzIHRoZXJlIGlzIGEgYnVn
IGluIHRoZSBpbWFnZSBkZWNvZGVycy4KKyAgICAgICAgSG93ZXZlciwgd2Ugc2hvdWxkIHN0aWxs
IG1hdGNoIHRoZSBzcGVjIHNvIHRoYXQgZXZlcnlvbmUgaXMgdXNpbmcgdGhlCisgICAgICAgIHNh
bWUgc2lnbmF0dXJlcy4KKworICAgICAgICBBbHNvLCB3aGlsZSBJIHdhcyBoZXJlLCBJIHVwZGF0
ZWQgdGhpcyBjb2RlIHRvIHVzZSBtb3JlIG1vZGVybgorICAgICAgICBjb25jZXB0cywgbGlrZSBW
ZWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29weUZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVNpZ25hdHVyZTo6TUlNRVNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNSU1FU2lnbmF0dXJlOjptYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6Y3JlYXRlKToKKwogMjAxMC0xMS0wMiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBhNGFhNjMwYjgzYjY4
YmEyMTY2ZTMxM2E0MGUwNzQzNDJhYTI2YjJlLi5mNzdiMWJhZjk2MGMxMjhlNjU5MDc0NDMwMTc4
ODJhYTdkNDM3MDJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwCkBAIC0zOCwxMyArMzgsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRC
dWZmZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgc2hhcmVkQnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQpCit0ZW1wbGF0ZTxzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+CitzdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoVmVjdG9y
PGNoYXIsIGlubGluZUNhcGFjaXR5PiYgYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAg
dW5zaWduZWQgYnl0ZXNFeHRyYWN0ZWQgPSAwOwogICAgIGNvbnN0IGNoYXIqIG1vcmVEYXRhOwog
ICAgIHdoaWxlICh1bnNpZ25lZCBtb3JlRGF0YUxlbmd0aCA9IHNoYXJlZEJ1ZmZlci5nZXRTb21l
RGF0YShtb3JlRGF0YSwgb2Zmc2V0KSkgewogICAgICAgICB1bnNpZ25lZCBieXRlc1RvQ29weSA9
IG1pbihidWZmZXJMZW5ndGggLSBieXRlc0V4dHJhY3RlZCwgbW9yZURhdGFMZW5ndGgpOwotICAg
ICAgICBtZW1jcHkoYnVmZmVyICsgYnl0ZXNFeHRyYWN0ZWQsIG1vcmVEYXRhLCBieXRlc1RvQ29w
eSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQobW9yZURhdGEsIGJ5dGVzVG9Db3B5KTsKICAgICAg
ICAgYnl0ZXNFeHRyYWN0ZWQgKz0gYnl0ZXNUb0NvcHk7CiAgICAgICAgIGlmIChieXRlc0V4dHJh
Y3RlZCA9PSBidWZmZXJMZW5ndGgpCiAgICAgICAgICAgICBicmVhazsKQEAgLTUzLDUxICs1NCw3
MCBAQCBzdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVyLCB1
bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0CiAgICAgcmV0dXJuIGJ5dGVzRXh0cmFjdGVkOwog
fQogCitjbGFzcyBNSU1FU2lnbmF0dXJlIHsKK3B1YmxpYzoKKyAgICBNSU1FU2lnbmF0dXJlKHNp
emVfdCBsZW5ndGgsIGNvbnN0IGNoYXIqIHBhdHRlcm4sIGNvbnN0IGNoYXIqIG1hc2spCisgICAg
eworICAgICAgICBtX3BhdHRlcm4uYXBwZW5kKHBhdHRlcm4sIGxlbmd0aCk7CisgICAgICAgIG1f
bWFzay5hcHBlbmQobWFzaywgbGVuZ3RoKTsKKyAgICAgICAgLy8gQ2hlY2sgZm9yIG51bGwgdGVy
bWluYXRpb24gdG8gY2F0Y2ggdHlwb3MuCisgICAgICAgIEFTU0VSVCghcGF0dGVybltsZW5ndGhd
KTsKKyAgICAgICAgQVNTRVJUKCFtYXNrW2xlbmd0aF0pOworICAgIH0KKworICAgIHRlbXBsYXRl
PHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBib29sIG1hdGNoZXMoY29uc3QgVmVjdG9yPGNo
YXIsIGlubGluZUNhcGFjaXR5PiYgY29udGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Bh
dHRlcm4uc2l6ZSgpIDw9IGNvbnRlbnQuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fcGF0dGVybi5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fcGF0
dGVybltpXSAmIG1fbWFza1tpXSAhPSBjb250ZW50W2ldICYgbV9tYXNrW2ldKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPGNoYXI+IG1fcGF0dGVybjsKKyAgICBWZWN0b3I8
Y2hhcj4gbV9tYXNrOworfTsKKwogSW1hZ2VEZWNvZGVyKiBJbWFnZURlY29kZXI6OmNyZWF0ZShj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKIHsKLSAgICAv
LyBXZSBuZWVkIGF0IGxlYXN0IDQgYnl0ZXMgdG8gZmlndXJlIG91dCB3aGF0IGtpbmQgb2YgaW1h
Z2Ugd2UncmUgZGVhbGluZwotICAgIC8vIHdpdGguCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1heE1hcmtlckxlbmd0aCA9IDQ7Ci0gICAgY2hhciBjb250ZW50c1ttYXhNYXJrZXJMZW5ndGhd
OwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNvbnRlbnRzLCBt
YXhNYXJrZXJMZW5ndGgsIGRhdGEsIDApOwotICAgIGlmIChsZW5ndGggPCBtYXhNYXJrZXJMZW5n
dGgpCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFNpZ25hdHVyZUxlbmd0aCA9IDEyOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoTUlNRVNpZ25hdHVyZSwgR0lGU2lnbmF0dXJlMSwgKDYs
ICJHSUY4N2EiLCAiXHhGRlx4RkZceEZGXHhGRlx4RkZceEZGIikpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoTUlNRVNpZ25hdHVyZSwgR0lGU2lnbmF0dXJlMiwgKDYsICJHSUY4OWEiLCAiXHhG
Rlx4RkZceEZGXHhGRlx4RkZceEZGIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTUlNRVNp
Z25hdHVyZSwgUE5HU2lnbmF0dXJlLCAoOCwgIlx4ODlceDUwXHhBRVx4NDdceDBEXHgwQVx4MUFc
eDBBIiwgIlx4RkZceEZGXHhGRlx4RkZceEZGXHhGRlx4RkZceEZGIikpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoTUlNRVNpZ25hdHVyZSwgSlBFR1NpZ25hdHVyZSwgKDMsICJceEZGXHhEOFx4
RkYiLCAiXHhGRlx4RkZceEZGIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTUlNRVNpZ25h
dHVyZSwgV0VCUFNpZ25hdHVyZSwgKDEyLCAiUklGRj8/V0VCUFZQIiwgIlx4RkZceEZGXHhGRlx4
RkZceDAwXHgwMFx4RkZceEZGXHhGRlx4RkZceEZGXHhGRiIpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKE1JTUVTaWduYXR1cmUsIEJNUFNpZ25hdHVyZSwgKDIsICJCTSIsICJceEZGXHhGRiIp
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1JTUVTaWduYXR1cmUsIElDT1NpZ25hdHVyZSwg
KDQsICJceDAwXHgwMFx4MDFceDAwIiwgIlx4RkZceEZGXHhGRlx4RkYiKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChNSU1FU2lnbmF0dXJlLCBDVVJTaWduYXR1cmUsICg0LCAiXHgwMFx4MDBc
eDAyXHgwMCIsICJceEZGXHhGRlx4RkZceEZGIikpOworCisgICAgVmVjdG9yPGNoYXIsIG1heFNp
Z25hdHVyZUxlbmd0aD4gY29udGVudHM7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gY29weUZyb21T
aGFyZWRCdWZmZXIoY29udGVudHMsIG1heFNpZ25hdHVyZUxlbmd0aCwgZGF0YSwgMCk7CisgICAg
aWYgKGxlbmd0aCA8IG1heFNpZ25hdHVyZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICAvLyBHSUZzIGJlZ2luIHdpdGggR0lGOCg3IG9yIDkpLgotICAgIGlmIChzdHJuY21wKGNvbnRl
bnRzLCAiR0lGOCIsIDQpID09IDApCisgICAgaWYgKEdJRlNpZ25hdHVyZTEubWF0Y2hlcyhjb250
ZW50cykgfHwgR0lGU2lnbmF0dXJlMi5tYXRjaGVzKGNvbnRlbnRzKSkKICAgICAgICAgcmV0dXJu
IG5ldyBHSUZJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSk7CiAKLSAgICAvLyBUZXN0IGZv
ciBQTkcuCi0gICAgaWYgKCFtZW1jbXAoY29udGVudHMsICJceDg5XHg1MFx4NEVceDQ3IiwgNCkp
CisgICAgaWYgKFBOR1NpZ25hdHVyZS5tYXRjaGVzKGNvbnRlbnRzKSkKICAgICAgICAgcmV0dXJu
IG5ldyBQTkdJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSk7CiAKLSAgICAvLyBKUEVHCi0g
ICAgaWYgKCFtZW1jbXAoY29udGVudHMsICJceEZGXHhEOFx4RkYiLCAzKSkKKyAgICBpZiAoSlBF
R1NpZ25hdHVyZS5tYXRjaGVzKGNvbnRlbnRzKSkKICAgICAgICAgcmV0dXJuIG5ldyBKUEVHSW1h
Z2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpOwogCiAjaWYgVVNFKFdFQlApCi0gICAgaWYgKCFt
ZW1jbXAoY29udGVudHMsICJSSUZGIiwgNCkpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHdlYnBFeHRyYU1hcmtlciA9IDY7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB3
ZWJwRXh0cmFNYXJrZXJvZmZzZXQgPSA4OwotICAgICAgICBjaGFyIGhlYWRlclt3ZWJwRXh0cmFN
YXJrZXJdOwotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBjb3B5RnJvbVNoYXJlZEJ1ZmZlciho
ZWFkZXIsIHdlYnBFeHRyYU1hcmtlciwgZGF0YSwgd2VicEV4dHJhTWFya2Vyb2Zmc2V0KTsKLSAg
ICAgICAgaWYgKGxlbmd0aCA+PSB3ZWJwRXh0cmFNYXJrZXIpIHsKLSAgICAgICAgICAgIGlmICgh
bWVtY21wKGhlYWRlciwgIldFQlBWUCIsIHdlYnBFeHRyYU1hcmtlcikpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBXRUJQSW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpOwotICAgICAg
ICB9Ci0gICAgfQorICAgIGlmIChXRUJQU2lnbmF0dXJlLm1hdGNoZXMoY29udGVudHMpKQorICAg
ICAgICByZXR1cm4gbmV3IFdFQlBJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSk7CiAjZW5k
aWYKIAotICAgIC8vIEJNUAotICAgIGlmIChzdHJuY21wKGNvbnRlbnRzLCAiQk0iLCAyKSA9PSAw
KQorICAgIGlmIChCTVBTaWduYXR1cmUubWF0Y2hlcyhjb250ZW50cykpCiAgICAgICAgIHJldHVy
biBuZXcgQk1QSW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpOwogCi0gICAgLy8gSUNPcyBh
bHdheXMgYmVnaW4gd2l0aCBhIDItYnl0ZSAwIGZvbGxvd2VkIGJ5IGEgMi1ieXRlIDEuCi0gICAg
Ly8gQ1VScyBiZWdpbiB3aXRoIDItYnl0ZSAwIGZvbGxvd2VkIGJ5IDItYnl0ZSAyLgotICAgIGlm
ICghbWVtY21wKGNvbnRlbnRzLCAiXHgwMFx4MDBceDAxXHgwMCIsIDQpIHx8ICFtZW1jbXAoY29u
dGVudHMsICJceDAwXHgwMFx4MDJceDAwIiwgNCkpCisgICAgaWYgKElDT1NpZ25hdHVyZS5tYXRj
aGVzKGNvbnRlbnRzKSB8fCBDVVJTaWduYXR1cmUubWF0Y2hlcyhjb250ZW50cykpCiAgICAgICAg
IHJldHVybiBuZXcgSUNPSW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpOwogCi0gICAgLy8g
R2l2ZSB1cC4gV2UgZG9uJ3Qga25vdyB3aGF0IHRoZSBoZWNrIHRoaXMgaXMuCiAgICAgcmV0dXJu
IDA7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94439</attachid>
            <date>2011-05-23 10:28:46 -0700</date>
            <delta_ts>2011-05-23 10:51:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47683-20110523102845.patch</filename>
            <type>text/plain</type>
            <size>1493</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3MDc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDUtMjMgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgSW1hZ2VEZWNvZGVyOjpjcmVhdGUgdG8gbWF0Y2ggc25p
ZmZpbmcgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDc2ODMKKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBkaWZmaWN1bHQgdG8gdGVzdC4gIFdl
J3JlIG1ha2luZyB0aGlzIGNoYW5nZSB0byBjb21wbHkKKyAgICAgICAgd2l0aCBzdGFuZGFyZHMg
ZXZlbiBpZiB0aGUgY2hhbmdlIGlzIGRpZmZpY3VsdCB0byBvYnNlcnZlLiAgKFRoaXMgcGF0Y2gK
KyAgICAgICAgYWxzbyBjYXVzZXMgdXMgdG8gbWF0Y2ggRmlyZWZveC4pCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorCiAyMDExLTA1LTIzICBZ
dXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDg3MDc2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTIgKzU3LDEyIEBAIHVuc2lnbmVkIGNvcHlGcm9tU2hh
cmVkQnVmZmVyKGNoYXIqIGJ1ZmYKIAogYm9vbCBtYXRjaGVzR0lGU2lnbmF0dXJlKGNoYXIqIGNv
bnRlbnRzKQogewotICAgIHJldHVybiAhbWVtY21wKGNvbnRlbnRzLCAiR0lGOCIsIDQpOworICAg
IHJldHVybiAhbWVtY21wKGNvbnRlbnRzLCAiR0lGODdhIiwgNikgfHwgIW1lbWNtcChjb250ZW50
cywgIkdJRjg5YSIsIDYpOwogfQogCiBib29sIG1hdGNoZXNQTkdTaWduYXR1cmUoY2hhciogY29u
dGVudHMpCiB7Ci0gICAgcmV0dXJuICFtZW1jbXAoY29udGVudHMsICJceDg5XHg1MFx4NEVceDQ3
IiwgNCk7CisgICAgcmV0dXJuICFtZW1jbXAoY29udGVudHMsICJceDg5XHg1MFx4NEVceDQ3XHgw
RFx4MEFceDFBXHgwQSIsIDgpOwogfQogCiBib29sIG1hdGNoZXNKUEVHU2lnbmF0dXJlKGNoYXIq
IGNvbnRlbnRzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94443</attachid>
            <date>2011-05-23 10:52:02 -0700</date>
            <delta_ts>2011-05-23 12:48:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47683-20110523105201.patch</filename>
            <type>text/plain</type>
            <size>4189</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3MDc5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDUtMjMgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgSW1hZ2VEZWNvZGVyOjpjcmVhdGUgdG8gbWF0Y2ggc25p
ZmZpbmcgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDc2ODMKKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBkaWZmaWN1bHQgdG8gdGVzdC4gIFdl
J3JlIG1ha2luZyB0aGlzIGNoYW5nZSB0byBjb21wbHkKKyAgICAgICAgd2l0aCBzdGFuZGFyZHMg
ZXZlbiBpZiB0aGUgY2hhbmdlIGlzIGRpZmZpY3VsdCB0byBvYnNlcnZlLiAgKFRoaXMgcGF0Y2gK
KyAgICAgICAgYWxzbyBjYXVzZXMgdXMgdG8gbWF0Y2ggRmlyZWZveC4pCisKKyAgICAgICAgVGVz
dDogZmFzdC9pbWFnZXMvYnVzdGVkLW92YWwtZG9lcy1ub3QtcmVuZGVyLmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisKIDIwMTEtMDUt
MjMgIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCShyZXZp
c2lvbiA4NzA3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEyICs1NywxMiBAQCB1bnNpZ25l
ZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBidWZmCiAKIGJvb2wgbWF0Y2hlc0dJRlNpZ25h
dHVyZShjaGFyKiBjb250ZW50cykKIHsKLSAgICByZXR1cm4gIW1lbWNtcChjb250ZW50cywgIkdJ
RjgiLCA0KTsKKyAgICByZXR1cm4gIW1lbWNtcChjb250ZW50cywgIkdJRjg3YSIsIDYpIHx8ICFt
ZW1jbXAoY29udGVudHMsICJHSUY4OWEiLCA2KTsKIH0KIAogYm9vbCBtYXRjaGVzUE5HU2lnbmF0
dXJlKGNoYXIqIGNvbnRlbnRzKQogewotICAgIHJldHVybiAhbWVtY21wKGNvbnRlbnRzLCAiXHg4
OVx4NTBceDRFXHg0NyIsIDQpOworICAgIHJldHVybiAhbWVtY21wKGNvbnRlbnRzLCAiXHg4OVx4
NTBceDRFXHg0N1x4MERceDBBXHgxQVx4MEEiLCA4KTsKIH0KIAogYm9vbCBtYXRjaGVzSlBFR1Np
Z25hdHVyZShjaGFyKiBjb250ZW50cykKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3MDc5KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEt
MDUtMjMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgSW1hZ2VEZWNvZGVyOjpjcmVh
dGUgdG8gbWF0Y2ggc25pZmZpbmcgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDc2ODMKKworICAgICAgICBUaGlzIHRlc3QgYWN0dWFsbHkgcGFz
c2VzIGJlZm9yZSB0aGlzIHBhdGNoIGFueXdheS4gIEkgZG9uJ3QgdGhpbmsgdGhpcworICAgICAg
ICBwYXRjaCBpcyBhY3R1YWxseSBvYnNlcnZhYmxlIGluIGFueSBtZWFuaW5nZnVsIHdheS4KKwor
ICAgICAgICAqIGZhc3QvaW1hZ2VzL2J1c3RlZC1vdmFsLWRvZXMtbm90LXJlbmRlci1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2J1c3RlZC1vdmFsLWRvZXMtbm90
LXJlbmRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMvYnVz
dGVkLW92YWwucG5nOiBBZGRlZC4KKwogMjAxMS0wNS0yMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjg3MDcwLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYnVzdGVkLW92YWwtZG9lcy1u
b3QtcmVuZGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9idXN0ZWQtb3ZhbC1kb2VzLW5vdC1yZW5kZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYnVzdGVkLW92YWwtZG9lcy1ub3QtcmVuZGVy
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitBTEVSVDogUEFTUwor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9idXN0ZWQtb3ZhbC1kb2VzLW5vdC1yZW5k
ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9idXN0ZWQtb3Zh
bC1kb2VzLW5vdC1yZW5kZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2J1c3RlZC1vdmFsLWRvZXMtbm90LXJlbmRlci5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPGltZyBz
cmM9InJlc291cmNlcy9idXN0ZWQtb3ZhbC5wbmciIG9uZXJyb3I9ImFsZXJ0KCdQQVNTJykiPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2J1c3RlZC1vdmFsLnBuZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpz
dm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYnVzdGVkLW92YWwucG5nCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJl
YW0KCgppVkJPUnc0S0dnb0FBQUFOU1VoRVVnQUFBQ1VBQUFBaENBSUFBQURSYmZWQ0FBQUFBWE5T
UjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4Cmp3djhZUVVBQUFBZ1kwaFNUUUFBZWlZQUFJQ0VBQUQ2
QUFBQWdPZ0FBSFV3QUFEcVlBQUFPcGdBQUJkd25McFJQQUFBQVRSSlJFRlUKU0V2Rmx6RUt3a0FR
UmZXU1Nrb0xENUVUZUltRTFGWld0bW1pYUJOc0JCc0ZJUWlDR0xDd3NJb2ZkakhKdXVqTXFHTVFD
ZkgvL3pMcwptSjEwcTZycWFCN2dhUjRkSXF5OGxmUFRQTnBHNFNvY0xBYjlySTl2bk9NS3J1TlhZ
czU3M3FTWTlMSWU1UVBsVytvclhySkxLQmhICkE5Y0xxcCtYbjNNQnFXbEJncGZxNFkzMzR3OWh4
bzZjWjZUTGk3ZnhWMkFtQkdrT3NzV2p0d2I5bnB3bXFubWJ5NGFld2xJaStWRmwKeldORmNNVXVM
ejJtM0FpV0h2a0dhZXRqbVdYaW1sZGNDMWtFeXdXS3JXOTZtTEtjTWpFb2xqZGFqMlFSTEJjb2xq
ZGNEbGxPbVJnVQp5d3RtZ1N5QzVRTGxUL1ZwcjU5MmYyci8vN0NNckpXWGlWdlBNKzNuNTY5TDlP
eEgydnNmYmtGMWZ6Y2xxODR2QnFrNm54bWs2dno1CjZDVzkrYm81Tk5LYjZOUDNoeWIxVys5SGQv
Zk13M3ZGOVpmckFBQUFBRWxGVGtTdVFtQ0MKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>