<?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>21076</bug_id>
          
          <creation_ts>2008-09-24 14:48:37 -0700</creation_ts>
          <short_desc>incorrect tabindex parsing</short_desc>
          <delta_ts>2010-09-14 19:44:10 -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>WebCore Misc.</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Alexander Macdonald">alexmac</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>stanaland</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>92595</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Macdonald">alexmac</who>
    <bug_when>2008-09-24 14:48:37 -0700</bug_when>
    <thetext>When an unquoted attribute appears atthe end of an element with no space between it and the closing &quot;/&gt;&quot; the attribute will have a trailing &quot;/&quot; appended to its value, this is a bug in the tokenizer, although it seems to be kept to maintain compatibility with old versions of IE

however when a tabindex attribute is given this extra trailing slash it fails the new tabindex HTML5 validation in HTMLElement::parseMappedAttribute

This behaviour does not occur on FF3.0.2 or IE7

Checking for, and removing, a single trailing slash fixes the problem. Here is the code I&apos;m using to fix the problem, its inserted after line 147 in HTMLElement.cpp:

if(indexstring[indexstring.length()-1] == &apos;/&apos;) {
  indexstring.truncate(indexstring.length()-1);
}

Does this seem reasonable, or is there a better way to fix it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92599</commentid>
    <comment_count>1</comment_count>
      <attachid>23767</attachid>
    <who name="Alexander Macdonald">alexmac</who>
    <bug_when>2008-09-24 14:51:50 -0700</bug_when>
    <thetext>Created attachment 23767
testcase

try tabbing between the fields, focus should switch from the first input to the second input</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254589</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-21 17:03:23 -0700</bug_when>
    <thetext>Won&apos;t that get the wrong answer if we write tabindex=&quot;3/&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254591</commentid>
    <comment_count>3</comment_count>
      <attachid>62249</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-21 17:05:59 -0700</bug_when>
    <thetext>Created attachment 62249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254592</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-21 17:06:42 -0700</bug_when>
    <thetext>That patch doesn&apos;t actually fix the problem.  It just documents our parsing behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254621</commentid>
    <comment_count>5</comment_count>
      <attachid>62249</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-21 18:10:41 -0700</bug_when>
    <thetext>Comment on attachment 62249
Patch

Clearing flags on attachment: 62249

Committed r63872: &lt;http://trac.webkit.org/changeset/63872&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260682</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-05 10:19:05 -0700</bug_when>
    <thetext>We discovered on another bug that the correct fix is to ignore trailing junk when parsing numbers out of the tabindex property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278620</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-13 18:18:25 -0700</bug_when>
    <thetext>*** Bug 43128 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278715</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-13 21:36:24 -0700</bug_when>
    <thetext>Here&apos;s the algorithm we&apos;re supposed to use:
http://www.whatwg.org/specs/web-apps/current-work/#rules-for-parsing-integers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278743</commentid>
    <comment_count>9</comment_count>
      <attachid>67521</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-13 23:44:50 -0700</bug_when>
    <thetext>Created attachment 67521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278749</commentid>
    <comment_count>10</comment_count>
      <attachid>67523</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-14 00:10:01 -0700</bug_when>
    <thetext>Created attachment 67523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278797</commentid>
    <comment_count>11</comment_count>
      <attachid>67523</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-14 03:48:35 -0700</bug_when>
    <thetext>Comment on attachment 67523
Patch

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

&gt; WebCore/html/parser/HTMLParserIdioms.cpp:95
&gt; +bool parseHTMLInteger(const String&amp; input, int&amp; value)
I swear this must exist elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279148</commentid>
    <comment_count>12</comment_count>
      <attachid>67523</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-14 13:59:19 -0700</bug_when>
    <thetext>Comment on attachment 67523
Patch

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

&gt; WebCore/html/parser/HTMLParserIdioms.cpp:106
&gt; +    } sign = Positive;
Why not use an int and set it to 1 or -1?

&gt; WebCore/html/parser/HTMLParserIdioms.cpp:139
&gt; +    // Step 6
&gt; +    if (*position == &apos;-&apos;) {
&gt;  
&gt; +        // Substep 1
&gt; +        sign = Negative;
&gt; +
&gt; +        // Substep 2
&gt; +        ++position;
&gt; +
&gt; +        // Substep 3
&gt; +        if (position == end)
&gt; +            return false;
&gt; +    } else if (*position == &apos;+&apos;) {
&gt; +        // Substep 1
&gt; +        ++position;
&gt; +
&gt; +        // Substep 2
&gt; +        if (position == end)
&gt; +            return false;
&gt; +    }
&gt; +    ASSERT(position &lt; end);
This is all super-redundant.  1.  you can just ignore +.  2.  You could share the position advancement and check code.

I think it&apos;s good that we&apos;re following the spec closely, but I don&apos;t think we need to write it out in such verbosity.  Just document the individual steps with comments.

&gt; WebCore/html/parser/HTMLParserIdioms.cpp:152
&gt; +    int number = WTF::charactersToIntStrict(digits.data(), digits.size());
Slightly sad this doesn&apos;t just take a vector or a WTF::String, but I guess taking pointer/len pair makes the implementation simpler?

&gt; WebCore/html/parser/HTMLParserIdioms.cpp:162
&gt; +    switch (sign) {
&gt; +    case Positive:
&gt; +        value = number;
&gt; +        break;
&gt; +    case Negative:
&gt; +        value = -number;
&gt; +        break;
&gt; +    }
Then this becomes number *= sign;  Actually just becomes int number = WTF:::parseFunction() * sign. :)

Bleh. I much prefer results to include their pass fail information.  I agree with your theory that it makes them easier to change.  But I dislike your argument that since at least one result in teh repository requires you to compare against another port&apos;s expected, we should make them all require you to compare against expected.  But it&apos;s not a deal breaker.

r- for the unnecessary code duplication above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279150</commentid>
    <comment_count>13</comment_count>
      <attachid>67523</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-14 14:02:21 -0700</bug_when>
    <thetext>Comment on attachment 67523
Patch

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

In answer to one of Eric’s comments:

&gt; WebCore/html/parser/HTMLParserIdioms.cpp:152
&gt; +    int number = WTF::charactersToIntStrict(digits.data(), digits.size());
The function toIntStrict is the version of this that is a member of WTF::String. But the code here is using a vector for better performance. I think what Adam has done is the way to go. We could also do an overload that can take a vector, but I don’t think it’s good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279170</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-14 14:24:19 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 67523 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67523&amp;action=prettypatch
&gt; 
&gt; &gt; WebCore/html/parser/HTMLParserIdioms.cpp:106
&gt; &gt; +    } sign = Positive;
&gt; Why not use an int and set it to 1 or -1?

Ok.

&gt; &gt; WebCore/html/parser/HTMLParserIdioms.cpp:139
&gt; &gt; +    // Step 6
&gt; &gt; +    if (*position == &apos;-&apos;) {
&gt; &gt;  
&gt; &gt; +        // Substep 1
&gt; &gt; +        sign = Negative;
&gt; &gt; +
&gt; &gt; +        // Substep 2
&gt; &gt; +        ++position;
&gt; &gt; +
&gt; &gt; +        // Substep 3
&gt; &gt; +        if (position == end)
&gt; &gt; +            return false;
&gt; &gt; +    } else if (*position == &apos;+&apos;) {
&gt; &gt; +        // Substep 1
&gt; &gt; +        ++position;
&gt; &gt; +
&gt; &gt; +        // Substep 2
&gt; &gt; +        if (position == end)
&gt; &gt; +            return false;
&gt; &gt; +    }
&gt; &gt; +    ASSERT(position &lt; end);
&gt; This is all super-redundant.  1.  you can just ignore +.  2.  You could share the position advancement and check code.

We can&apos;t share the advancement because we don&apos;t advance if *position is not + or -.

&gt; &gt; WebCore/html/parser/HTMLParserIdioms.cpp:152
&gt; &gt; +    int number = WTF::charactersToIntStrict(digits.data(), digits.size());
&gt; Slightly sad this doesn&apos;t just take a vector or a WTF::String, but I guess taking pointer/len pair makes the implementation simpler?

There&apos;s another method to call if you have a String, but we don&apos;t.  It&apos;s designed to let you parse parts of larger buffers.

&gt; &gt; WebCore/html/parser/HTMLParserIdioms.cpp:162
&gt; &gt; +    switch (sign) {
&gt; &gt; +    case Positive:
&gt; &gt; +        value = number;
&gt; &gt; +        break;
&gt; &gt; +    case Negative:
&gt; &gt; +        value = -number;
&gt; &gt; +        break;
&gt; &gt; +    }
&gt; Then this becomes number *= sign;  Actually just becomes int number = WTF:::parseFunction() * sign. :)

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279171</commentid>
    <comment_count>15</comment_count>
      <attachid>67605</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-14 14:25:21 -0700</bug_when>
    <thetext>Created attachment 67605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279173</commentid>
    <comment_count>16</comment_count>
      <attachid>67605</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-14 14:27:55 -0700</bug_when>
    <thetext>Comment on attachment 67605
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279176</commentid>
    <comment_count>17</comment_count>
      <attachid>67605</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-14 14:31:43 -0700</bug_when>
    <thetext>Comment on attachment 67605
Patch

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

A clear improvement, but seems to leave some loose ends.

&gt; WebCore/html/HTMLElement.cpp:146
&gt;          if (indexstring.length()) {
I’m surprised you left this alone. This can’t be correct behavior!

&gt; WebCore/html/HTMLElement.cpp:150
&gt;                  // Clamp tabindex to the range of &apos;short&apos; to match Firefox&apos;s behavior.
&gt;                  setTabIndexExplicitly(max(static_cast&lt;int&gt;(std::numeric_limits&lt;short&gt;::min()), min(tabindex, static_cast&lt;int&gt;(std::numeric_limits&lt;short&gt;::max()))));
I’m surprised you left this alone. Is this in the HTML specification?

&gt; WebCore/html/parser/HTMLParserIdioms.cpp:140
&gt; +    value = sign * WTF::charactersToIntStrict(digits.data(), digits.size());
You should not need to qualify with WTF:: here. If you do, that’s a bug in the WTF header.

&gt; LayoutTests/fast/parser/tabindex-parsing-2.html:57
&gt; +    document.getElementById(&apos;result&apos;).innerHTML += divs[i].tabIndex + &apos;\n&apos;
I agree with Eric’s earlier comment that patches that distinguish passes from failures are better that ones where you just have to know what to expect. Further, in this test’s output you can’t easily see the test cases, so you have to line the test up side by side with its results to see what is being tested. Also there are no test cases here for space characters other than U+0020.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279199</commentid>
    <comment_count>18</comment_count>
      <attachid>67605</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-14 15:07:32 -0700</bug_when>
    <thetext>Comment on attachment 67605
Patch

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

&gt; WebCore/html/HTMLElement.cpp:146
&gt;          if (indexstring.length()) {
The code is wrong, but it&apos;s not observable because the empty string fails to parse.

&gt; WebCore/html/HTMLElement.cpp:150
&gt;                  setTabIndexExplicitly(max(static_cast&lt;int&gt;(std::numeric_limits&lt;short&gt;::min()), min(tabindex, static_cast&lt;int&gt;(std::numeric_limits&lt;short&gt;::max()))));
Not as far as I can tell.  The original bug I wanted to solve was that &lt;input tabindex=3/&gt; was broken.  It&apos;s easy for changes like this to spider to fixing the world, but I think I&apos;d like to draw the boundary of this patch at the parser.  We can do more work on tabindex in future patches.

&gt; WebCore/html/parser/HTMLParserIdioms.cpp:140
&gt; +    value = sign * WTF::charactersToIntStrict(digits.data(), digits.size());
I think compile failed without that.  I&apos;ll try to fix the header.

&gt; LayoutTests/fast/parser/tabindex-parsing-2.html:57
&gt; +    document.getElementById(&apos;result&apos;).innerHTML += divs[i].tabIndex + &apos;\n&apos;
Ok.  I&apos;ll add the test cases, but I&apos;d like to skip the &quot;PASS/FAIL&quot; notations.  I find those to be much more of a pain than a benefit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279207</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-09-14 15:28:58 -0700</bug_when>
    <thetext>I agree with Eric and Darin. Tests without PASS/FAIL are only good as long as nothing changes. When it does, or when it needs to change, or when you want to check other browsers&apos; behavior, raw dumps are difficult.

Naturally, there are some cases when there is no golden standard to adhere to, and we just want to dump as much as possible to prevent inadvertent behavior changes in the future. But this clearly isn&apos;t such a case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279209</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-14 15:39:53 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; I agree with Eric and Darin. Tests without PASS/FAIL are only good as long as nothing changes. When it does, or when it needs to change, or when you want to check other browsers&apos; behavior, raw dumps are difficult.
&gt; 
&gt; Naturally, there are some cases when there is no golden standard to adhere to, and we just want to dump as much as possible to prevent inadvertent behavior changes in the future. But this clearly isn&apos;t such a case.

Honestly, the PASS/FAIL double-expectation tests are a huge pain when trying to change behavior.  Basically, you need to make the same change redundantly to two different files.  It&apos;s not really adding any value.  It&apos;s just flies in the face of Don&apos;t Repeat Yourself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279220</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-14 15:51:21 -0700</bug_when>
    <thetext>I&apos;m going to land this without PASS/FAIL because I&apos;m petchulant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279221</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-14 15:53:16 -0700</bug_when>
    <thetext>Committed r67506: &lt;http://trac.webkit.org/changeset/67506&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279223</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-09-14 15:53:49 -0700</bug_when>
    <thetext>I think that your experience with making a lot of changes at once is not typical. On quieter days, it&apos;s a few tests that you need to thoroughly check in all browsers to collect information about which ones pass, and which ones fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279342</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-14 19:44:10 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67506 might have broken Leopard Intel Debug (Tests)
The following changes are on the blame list:
http://trac.webkit.org/changeset/67506
http://trac.webkit.org/changeset/67507</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>23767</attachid>
            <date>2008-09-24 14:51:50 -0700</date>
            <delta_ts>2008-09-24 14:51:50 -0700</delta_ts>
            <desc>testcase</desc>
            <filename>tabtest.html</filename>
            <type>text/html</type>
            <size>754</size>
            <attacher name="Alexander Macdonald">alexmac</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxmb3JtPgo8bGFiZWwgZm9yPSJhdXRoX3VzZXIiPlVzZXJuYW1lPC9sYWJlbD4KPGlu
cHV0IHR5cGU9IlRleHQiIGlkPSJhdXRoX3VzZXIiIGNsYXNzPSJpbnB1dF9sb2dpbiBoaWRlRXJy
b3JPblR5cGUiIHZhbHVlPSIiIHRhYmluZGV4PTEvPgo8bGFiZWwgZm9yPSJhdXRoX3Bhc3N3b3Jk
Ij5QYXNzd29yZDwvbGFiZWw+CjxpbnB1dCB0eXBlPSJQYXNzd29yZCIgaWQ9ImF1dGhfcGFzc3dv
cmQiIHRhYmluZGV4PTIgLz4KPGEgaHJlZj0iIyIgaWQ9ImZvcmdvdF9saW5rIj5Gb3Jnb3QgUGFz
c3dvcmQ/PC9hPgo8YSBocmVmPSIjIiBvbmNsaWNrPSJ0ZXN0KCkiPmJsYWg8L2E+CjwvZm9ybT4K
PHNjcmlwdD4KZnVuY3Rpb24gdGVzdCgpCnsKICAgIGFsZXJ0KCJ1c2VybmFtZTogIiArIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJhdXRoX3VzZXIiKS5nZXRBdHRyaWJ1dGUoInRhYmluZGV4IikK
ICAgICAgICAgICAgKyAiIHBhc3N3b3JkOiAiICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImF1
dGhfcGFzc3dvcmQiKS5nZXRBdHRyaWJ1dGUoInRhYmluZGV4IikKICAgICAgICAgICAgKyAiIGxp
bms6ICIgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9yZ290X2xpbmsiKS5nZXRBdHRyaWJ1
dGUoInRhYmluZGV4IikKICAgICAgICAgICAgKyAiIHNvbWVhdHRyOiAiICsgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImF1dGhfdXNlciIpLmdldEF0dHJpYnV0ZSgic29tZWF0dHIiKSkKfQo8L3Nj
cmlwdD4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62249</attachid>
            <date>2010-07-21 17:05:59 -0700</date>
            <delta_ts>2010-09-13 23:44:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21076-20100721170558.patch</filename>
            <type>text/plain</type>
            <size>2736</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNDg4MTc0ODM2Njg5MWZmMDUwNjBlNzYwNzY4ZTMyNGMyNTYzOGI3Li40YjQ1MTM0
OTkwODg1MDkyOWY2MmNmOTVmYjkwMGZmZWI3YmFkZTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjEgQEAK
IAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBpbmNvcnJl
Y3QgdGFiaW5kZXggcGFyc2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEwNzYKKworICAgICAgICBBZGQgYSB0ZXN0IHNob3dpbmcgdGhhdCBvdXIg
cGFyc2luZyBvZiB1bnF1b3RlZCBhdHRyaWJ1dGVzIGluCisgICAgICAgIHNlbGYtY2xvc2luZyB0
YWdzIGNvbXBsaWVzIHdpdGggdGhlIHNwZWMuCisKKyAgICAgICAgKiBodG1sNWxpYi9yZXNvdXJj
ZXMvd2Via2l0MDIuZGF0OiBBZGRlZC4KKyAgICAgICAgKiBodG1sNWxpYi9ydW5uZXItZXhwZWN0
ZWQtaHRtbDUudHh0OgorICAgICAgICAqIGh0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaHRtbDVsaWIvcnVubmVyLmh0bWw6CisKKzIwMTAtMDctMjEgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKwogICAgICAgICBMZXQncyBwYXNzIHRoZSBkb2N0eXBlMDEuZGF0IHRlc3RzIGFnYWluLCBw
bGVhc2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQy
Nzk0CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy93ZWJraXQw
Mi5kYXQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvd2Via2l0MDIuZGF0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRiYTgxOWY4ZmMwM2VjNGQxODFhN2Y2NjQ3OGJiYmE3MWI5NTc0ZDMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvd2Via2l0MDIuZGF0CkBA
IC0wLDAgKzEsOSBAQAorI2RhdGEKKzxmb28gYmFyPXF1eC8+CisjZXJyb3JzCisjZG9jdW1lbnQK
K3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICA8Zm9vPgorfCAgICAgICBi
YXI9InF1eC8iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0
ZWQtaHRtbDUudHh0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1
LnR4dAppbmRleCAzOTc1NmIxODJmMzIwMjQwNmQ0NGJlZmM3ZTEyZmY3YTg1MjNmMDkxLi42YTQw
MWRlNWQ1ZTM3NTY1YzQxYWIyMTZhYzc2MjYzYmM2NmQ3MDlkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0CisrKyBiL0xheW91dFRlc3Rz
L2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQKQEAgLTM2Niw2ICszNjYsOCBAQCBF
eHBlY3RlZDoKIHwgICAgICAgICA8dGFibGU+CiByZXNvdXJjZXMvd2Via2l0MDEuZGF0OiBQQVNT
CiAKK3Jlc291cmNlcy93ZWJraXQwMi5kYXQ6IFBBU1MKKwogcmVzb3VyY2VzL2RvY3R5cGUwMS5k
YXQ6IFBBU1MKIAogcmVzb3VyY2VzL3NjcmlwdGRhdGEwMS5kYXQ6IFBBU1MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQudHh0CmluZGV4IGY4MzQ2MTU0ZTY5ZGQ0ZTU1M2NkYmI1
ZGFlODBmMjRiNDdlZDRjODAuLjJkNjhjZDE5ZDEyNTNlNTk4MmFiZWNjNGNjMGU4ZWRmMjQ5YWJi
YzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dApAQCAtNjU1MSw2
ICs2NTUxLDggQEAgRXhwZWN0ZWQ6CiB8ICAgICAgICAgPG5vYnI+CiB8ICAgICAgICAgICAiYSIK
IHwgICAgICAgICA8bm9icj4KK3Jlc291cmNlcy93ZWJraXQwMi5kYXQ6IFBBU1MKKwogcmVzb3Vy
Y2VzL2RvY3R5cGUwMS5kYXQ6CiAzMQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odG1sNWxp
Yi9ydW5uZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci5odG1sCmluZGV4IDNj
YTUxMmQ4MTk4YzY2OTc3ODMyZmYxNTk2YTAyNGE3MGUxMmRlZGYuLjA1YTQ5M2ZmMjAxODc1MGUy
NTMxODhjODFlYWVhZWMyYTRlM2U1NGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0bWw1bGli
L3J1bm5lci5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci5odG1sCkBAIC01
OCw2ICs1OCw3IEBAIHZhciB0ZXN0X2ZpbGVzID0gWwogICAgICAgICAncmVzb3VyY2VzL3Rlc3Rz
MTkuZGF0JywKICAgICAgICAgJ3Jlc291cmNlcy90ZXN0czIwLmRhdCcsCiAgICAgICAgICdyZXNv
dXJjZXMvd2Via2l0MDEuZGF0JywKKyAgICAgICAgJ3Jlc291cmNlcy93ZWJraXQwMi5kYXQnLAog
ICAgICAgICAncmVzb3VyY2VzL2RvY3R5cGUwMS5kYXQnLAogICAgICAgICAncmVzb3VyY2VzL3Nj
cmlwdGRhdGEwMS5kYXQnLAogICAgICAgICAncmVzb3VyY2VzL2h0bWw1dGVzdC1jb20uZGF0JywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67521</attachid>
            <date>2010-09-13 23:44:50 -0700</date>
            <delta_ts>2010-09-14 00:09:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21076-20100913234449.patch</filename>
            <type>text/plain</type>
            <size>9400</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzQ0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDktMTMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBpbmNv
cnJlY3QgdGFiaW5kZXggcGFyc2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEwNzYKKworICAgICAgICBVcGRhdGVkIG91ciBpbnRlZ2VyIHBhcnNp
bmcgZm9yIHRhYmluZGV4IHRvIHVzZSB0aGUgYWxnb3JpdGhtIGZyb20gdGhlCisgICAgICAgIEhU
TUw1IHNwZWMuCisKKyAgICAgICAgVGVzdDogZmFzdC9wYXJzZXIvdGFiaW5kZXgtcGFyc2luZy0y
Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRNTElu
dGVnZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKwogMjAx
MC0wOS0xMyAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lv
biA2NzQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudEZhY3RvcnkuaCIKICNpbmNs
dWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiUmVuZGVyV29yZEJyZWFrLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0x
NDMsMTEgKzE0NCwxMSBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdGFiaW5kZXhBdHRyKSB7CiAgICAgICAg
IGluZGV4c3RyaW5nID0gZ2V0QXR0cmlidXRlKHRhYmluZGV4QXR0cik7CiAgICAgICAgIGlmIChp
bmRleHN0cmluZy5sZW5ndGgoKSkgewotICAgICAgICAgICAgYm9vbCBwYXJzZWRPSzsKLSAgICAg
ICAgICAgIGludCB0YWJpbmRleCA9IGluZGV4c3RyaW5nLnRvSW50U3RyaWN0KCZwYXJzZWRPSyk7
Ci0gICAgICAgICAgICBpZiAocGFyc2VkT0spCisgICAgICAgICAgICBpbnQgdGFiaW5kZXggPSAw
OworICAgICAgICAgICAgaWYgKHBhcnNlSFRNTEludGVnZXIoaW5kZXhzdHJpbmcsIHRhYmluZGV4
KSkgewogICAgICAgICAgICAgICAgIC8vIENsYW1wIHRhYmluZGV4IHRvIHRoZSByYW5nZSBvZiAn
c2hvcnQnIHRvIG1hdGNoIEZpcmVmb3gncyBiZWhhdmlvci4KICAgICAgICAgICAgICAgICBzZXRU
YWJJbmRleEV4cGxpY2l0bHkobWF4KHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0
czxzaG9ydD46Om1pbigpKSwgbWluKHRhYmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2hvcnQ+OjptYXgoKSkpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBsYW5nQXR0cikgewogICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50CkluZGV4OiBXZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHAJKHJldmlzaW9uIDY3NDQ0KQorKysgV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNCArOTEsNzYgQEAgYm9vbCBwYXJzZVRv
RG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdAogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBo
dHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNydWxlcy1m
b3ItcGFyc2luZy1pbnRlZ2VycworYm9vbCBwYXJzZUhUTUxJbnRlZ2VyKGNvbnN0IFN0cmluZyYg
aW5wdXQsIGludCYgdmFsdWUpCit7CisgICAgLy8gU3RlcCAxCisgICAgLy8gU3RlcCAyCisgICAg
Y29uc3QgVUNoYXIqIHBvc2l0aW9uID0gaW5wdXQuY2hhcmFjdGVycygpOworICAgIGNvbnN0IFVD
aGFyKiBlbmQgPSBwb3NpdGlvbiArIGlucHV0Lmxlbmd0aCgpOworCisgICAgLy8gU3RlcCAzCisg
ICAgZW51bSB7CisgICAgICAgIFBvc2l0aXZlLAorICAgICAgICBOZWdhdGl2ZQorICAgIH0gc2ln
biA9IFBvc2l0aXZlOworCisgICAgLy8gU3RlcCA0CisgICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5k
KSB7CisgICAgICAgIGlmICghaXNIVE1MU3BhY2UoKnBvc2l0aW9uKSkKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICArK3Bvc2l0aW9uOworICAgIH0KKworICAgIC8vIFN0ZXAgNQorICAgIGlm
IChwb3NpdGlvbiA9PSBlbmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQocG9z
aXRpb24gPCBlbmQpOworCisgICAgLy8gU3RlcCA2CisgICAgaWYgKCpwb3NpdGlvbiA9PSAnLScp
IHsKKyAgICAgICAgLy8gU3Vic3RlcCAxCisgICAgICAgIHNpZ24gPSBOZWdhdGl2ZTsKKworICAg
ICAgICAvLyBTdWJzdGVwIDIKKyAgICAgICAgKytwb3NpdGlvbjsKKworICAgICAgICAvLyBTdWJz
dGVwIDMKKyAgICAgICAgaWYgKHBvc2l0aW9uID09IGVuZCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9IGVsc2UgaWYgKCpwb3NpdGlvbiA9PSAnKycpIHsKKyAgICAgICAgLy8gU3Vi
c3RlcCAxCisgICAgICAgICsrcG9zaXRpb247CisKKyAgICAgICAgLy8gU3Vic3RlcCAyCisgICAg
ICAgIGlmIChwb3NpdGlvbiA9PSBlbmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIEFTU0VSVChwb3NpdGlvbiA8IGVuZCk7CisKKyAgICAvLyBTdGVwIDcKKyAgICBpZiAo
IWlzQVNDSUlEaWdpdCgqcG9zaXRpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBTdGVwIDgKKyAgICBWZWN0b3I8VUNoYXIsIDE2PiBkaWdpdHM7CisgICAgd2hpbGUgKHBvc2l0
aW9uIDwgZW5kKSB7CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCpwb3NpdGlvbikpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGlnaXRzLmFwcGVuZCgqcG9zaXRpb24rKyk7CisgICAg
fQorICAgIGludCBudW1iZXIgPSBXVEY6OmNoYXJhY3RlcnNUb0ludFN0cmljdChkaWdpdHMuZGF0
YSgpLCBkaWdpdHMuc2l6ZSgpKTsKKworICAgIC8vIFN0ZXAgOQorICAgIHN3aXRjaCAoc2lnbikg
eworICAgIGNhc2UgUG9zaXRpdmU6CisgICAgICAgIHZhbHVlID0gbnVtYmVyOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE5lZ2F0aXZlOgorICAgICAgICB2YWx1ZSA9IC1udW1iZXI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQpJbmRleDogV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgJKHJldmlzaW9uIDY3NDQ0KQorKysgV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDkgQEAgU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5cGUoZG91YmxlKTsKIC8vIFRoZSBk
b3VibGUqIHBhcmFtZXRlciBtYXkgYmUgMCB0byBjaGVjayBpZiB0aGUgc3RyaW5nIGNhbiBiZSBw
YXJzZWQgd2l0aG91dCBnZXR0aW5nIHRoZSByZXN1bHQuCiBib29sIHBhcnNlVG9Eb3VibGVGb3JO
dW1iZXJUeXBlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSopOwogCisvLyBodHRwOi8vd3d3LndoYXR3
Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNydWxlcy1mb3ItcGFyc2luZy1pbnRl
Z2VycworYm9vbCBwYXJzZUhUTUxJbnRlZ2VyKGNvbnN0IFN0cmluZyYsIGludCYpOworCiAvLyBJ
bmxpbmUgaW1wbGVtZW50YXRpb25zIG9mIHNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBkZWNsYXJlZCBh
Ym92ZS4KIAogaW5saW5lIGJvb2wgaXNIVE1MU3BhY2UoVUNoYXIgY2hhcmFjdGVyKQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNjc0NDcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wOS0xMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGluY29ycmVjdCB0YWJpbmRleCBwYXJzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA3NgorCisgICAgICAgICogZmFzdC9wYXJzZXIvdGFiaW5k
ZXgtcGFyc2luZy0yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9wYXJzZXIv
dGFiaW5kZXgtcGFyc2luZy0yLmh0bWw6IEFkZGVkLgorICAgICAgICAgICAgLSBUZXN0IGEgYnVu
Y2ggb2YgY29ybmVyIGNhc2VzIGluIHRhYmluZGV4IHBhcnNpbmcuCisgICAgICAgICogZmFzdC9w
YXJzZXIvdGFiaW5kZXgtcGFyc2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wYXJz
ZXIvdGFiaW5kZXgtcGFyc2luZy5odG1sOgorICAgICAgICAgICAgLSBVcGRhdGUgZXhwZWN0ZWQg
cmVzdWx0LiAgVGhpcyBjYXNlIGlzIGFjdHVhbGx5IHRoZSBvbmUgdGhhdCB0aGUKKyAgICAgICAg
ICAgICAgb3JpZ2luYWwgcmVwb3J0ZXIgd2FzIGNvbXBsYWluaW5nIGFib3V0LgorCiAyMDEwLTA5
LTEzICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci90YWJp
bmRleC1wYXJzaW5nLTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvcGFyc2VyL3RhYmluZGV4LXBhcnNpbmctMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci90YWJpbmRleC1wYXJzaW5nLTItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACis0CistNAorLTEKKy0xCis0CistNAorLTEK
Ky0xCis0CistNAorLTEKKy0xCis0CistNAorLTEKKy0xCis0CistNAorLTEKKy0xCis0CistNAor
LTEKKy0xCis0CistNAorLTEKKy0xCis0CistNAorLTEKKy0xCis0CistNAorLTEKKy0xCis0Cist
NAorLTEKKy0xCis0CistNAorLTEKKy0xCis0CistNAorLTEKKy0xCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvcGFyc2VyL3RhYmluZGV4LXBhcnNpbmctMi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvcGFyc2VyL3RhYmluZGV4LXBhcnNpbmctMi5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvdGFiaW5kZXgtcGFyc2luZy0yLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwv
c2NyaXB0PgorPGRpdiB0YWJpbmRleD0iKzQiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iLTQiPjwv
ZGl2PgorPGRpdiB0YWJpbmRleD0iKy00Ij48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9Ii0rNCI+PC9k
aXY+Cis8ZGl2IHRhYmluZGV4PSIrMDQiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iLTA0Ij48L2Rp
dj4KKzxkaXYgdGFiaW5kZXg9IisiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iLSI+PC9kaXY+Cis8
ZGl2IHRhYmluZGV4PSIgICAgKzQiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iICAgIC00Ij48L2Rp
dj4KKzxkaXYgdGFiaW5kZXg9IiAgICArLTQiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iICAgIC0r
NCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIgICAgKzA0Ij48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9
IiAgICAtMDQiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iICAgICsiPjwvZGl2PgorPGRpdiB0YWJp
bmRleD0iICAgIC0iPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iKzQgICAiPjwvZGl2PgorPGRpdiB0
YWJpbmRleD0iLTQgICAiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iKy00ICAgIj48L2Rpdj4KKzxk
aXYgdGFiaW5kZXg9Ii0rNCAgICI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIrMDQgICAiPjwvZGl2
PgorPGRpdiB0YWJpbmRleD0iLTA0ICAgIj48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9IisgICAgIj48
L2Rpdj4KKzxkaXYgdGFiaW5kZXg9Ii0gICAgIj48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9Iis0eHgi
PjwvZGl2PgorPGRpdiB0YWJpbmRleD0iLTR4eCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIrLTR4
eCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSItKzR4eCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIr
MDR4eCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSItMDR4eCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4
PSIreHgiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iLXh4Ij48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9
KzQ+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PS00PjwvZGl2PgorPGRpdiB0YWJpbmRleD0rLTQ+PC9k
aXY+Cis8ZGl2IHRhYmluZGV4PS0rND48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9KzA0PjwvZGl2Pgor
PGRpdiB0YWJpbmRleD0tMDQ+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSs+PC9kaXY+Cis8ZGl2IHRh
YmluZGV4PS0+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSs0Lz48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9
LTQvPjwvZGl2PgorPGRpdiB0YWJpbmRleD0rLTQvPjwvZGl2PgorPGRpdiB0YWJpbmRleD0tKzQv
PjwvZGl2PgorPGRpdiB0YWJpbmRleD0rMDQvPjwvZGl2PgorPGRpdiB0YWJpbmRleD0tMDQvPjwv
ZGl2PgorPGRpdiB0YWJpbmRleD0rLz48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9LS8+PC9kaXY+Cis8
cHJlIGlkPSJyZXN1bHQiPjwvcHJlPgorPHNjcmlwdD4KK3ZhciBkaXZzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpOworZm9yICh2YXIgaSA9IDA7IGkgPCBkaXZzLmxlbmd0
aDsgKytpKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRN
TCArPSBkaXZzW2ldLnRhYkluZGV4ICsgJ1xuJworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L3BhcnNlci90YWJpbmRleC1wYXJzaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci90YWJpbmRleC1wYXJzaW5nLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNjc0NDQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci90YWJpbmRleC1w
YXJzaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAgVGhpcyBl
bGVtZW50IHNob3VsZG4ndCBiZSBmb2N1c2FibGUgUEFTUwogVGhpcyBlbGVtZW50IHNob3VsZCBi
ZSBmb2N1c2FibGUgUEFTU0VECiAudGFiSW5kZXg9NyBnZXRBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk9
JzAwNycKIAotVGhpcyBlbGVtZW50IHNob3VsZG4ndCBiZSBmb2N1c2FibGUgUEFTU0VECi0udGFi
SW5kZXg9LTEgZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpPScxcHgnCitUaGlzIGVsZW1lbnQgc2hv
dWxkIGJlIGZvY3VzYWJsZSBQQVNTRUQKKy50YWJJbmRleD0xIGdldEF0dHJpYnV0ZSgndGFiaW5k
ZXgnKT0nMXB4JwogCiBUaGlzIGVsZW1lbnQgc2hvdWxkIGJlIGZvY3VzYWJsZSBQQVNTRUQKIC50
YWJJbmRleD0wIGdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKT0nLTAnCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3BhcnNlci90YWJpbmRleC1wYXJzaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9wYXJzZXIvdGFiaW5kZXgtcGFyc2luZy5odG1sCShyZXZpc2lvbiA2NzQ0NCkK
KysrIExheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3RhYmluZGV4LXBhcnNpbmcuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBGcm9tIEhUTUw1IHNwZWM6PGJsb2NrcXVvdGU+CiA8
cCB0YWJpbmRleD0iMDA3IiBvbmZvY3VzPSJwM0ZvY3VzZWQ9dHJ1ZSIgb25jbGljaz0idGVzdChw
M0ZvY3VzZWQsdHJ1ZSwzKSI+VGhpcyBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2FibGUgPGJyPgog
PHNwYW4gaWQ9InNwMyI+Q2xpY2sgdG8gdGVzdCBtYW51YWxseTwvc3Bhbj4KIDwvcD4KLTxwIHRh
YmluZGV4PSIxcHgiIG9uZm9jdXM9InA0Rm9jdXNlZD10cnVlIiBvbmNsaWNrPSJ0ZXN0KHA0Rm9j
dXNlZCxmYWxzZSw0KSI+VGhpcyBlbGVtZW50IHNob3VsZG4ndCBiZSBmb2N1c2FibGUgPGJyPgor
PHAgdGFiaW5kZXg9IjFweCIgb25mb2N1cz0icDRGb2N1c2VkPXRydWUiIG9uY2xpY2s9InRlc3Qo
cDRGb2N1c2VkLHRydWUsNCkiPlRoaXMgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNhYmxlIDxicj4K
IDxzcGFuIGlkPSJzcDQiPkNsaWNrIHRvIHRlc3QgbWFudWFsbHk8L3NwYW4+CiA8L3A+CiA8cCB0
YWJpbmRleD0iLTAiIG9uZm9jdXM9InA1Rm9jdXNlZD10cnVlIiBvbmNsaWNrPSJ0ZXN0KHA1Rm9j
dXNlZCx0cnVlLDUpIj5UaGlzIGVsZW1lbnQgc2hvdWxkIGJlIGZvY3VzYWJsZSA8YnI+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67523</attachid>
            <date>2010-09-14 00:10:01 -0700</date>
            <delta_ts>2010-09-14 14:25:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21076-20100914000959.patch</filename>
            <type>text/plain</type>
            <size>10285</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzQ0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDktMTMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBpbmNv
cnJlY3QgdGFiaW5kZXggcGFyc2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEwNzYKKworICAgICAgICBVcGRhdGVkIG91ciBpbnRlZ2VyIHBhcnNp
bmcgZm9yIHRhYmluZGV4IHRvIHVzZSB0aGUgYWxnb3JpdGhtIGZyb20gdGhlCisgICAgICAgIEhU
TUw1IHNwZWMuCisKKyAgICAgICAgVGVzdDogZmFzdC9wYXJzZXIvdGFiaW5kZXgtcGFyc2luZy0y
Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRNTElu
dGVnZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKwogMjAx
MC0wOS0xMyAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lv
biA2NzQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudEZhY3RvcnkuaCIKICNpbmNs
dWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiUmVuZGVyV29yZEJyZWFrLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0x
NDMsMTEgKzE0NCwxMSBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdGFiaW5kZXhBdHRyKSB7CiAgICAgICAg
IGluZGV4c3RyaW5nID0gZ2V0QXR0cmlidXRlKHRhYmluZGV4QXR0cik7CiAgICAgICAgIGlmIChp
bmRleHN0cmluZy5sZW5ndGgoKSkgewotICAgICAgICAgICAgYm9vbCBwYXJzZWRPSzsKLSAgICAg
ICAgICAgIGludCB0YWJpbmRleCA9IGluZGV4c3RyaW5nLnRvSW50U3RyaWN0KCZwYXJzZWRPSyk7
Ci0gICAgICAgICAgICBpZiAocGFyc2VkT0spCisgICAgICAgICAgICBpbnQgdGFiaW5kZXggPSAw
OworICAgICAgICAgICAgaWYgKHBhcnNlSFRNTEludGVnZXIoaW5kZXhzdHJpbmcsIHRhYmluZGV4
KSkgewogICAgICAgICAgICAgICAgIC8vIENsYW1wIHRhYmluZGV4IHRvIHRoZSByYW5nZSBvZiAn
c2hvcnQnIHRvIG1hdGNoIEZpcmVmb3gncyBiZWhhdmlvci4KICAgICAgICAgICAgICAgICBzZXRU
YWJJbmRleEV4cGxpY2l0bHkobWF4KHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0
czxzaG9ydD46Om1pbigpKSwgbWluKHRhYmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2hvcnQ+OjptYXgoKSkpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBsYW5nQXR0cikgewogICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50CkluZGV4OiBXZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHAJKHJldmlzaW9uIDY3NDQ0KQorKysgV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNCArOTEsNzYgQEAgYm9vbCBwYXJzZVRv
RG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdAogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBo
dHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNydWxlcy1m
b3ItcGFyc2luZy1pbnRlZ2VycworYm9vbCBwYXJzZUhUTUxJbnRlZ2VyKGNvbnN0IFN0cmluZyYg
aW5wdXQsIGludCYgdmFsdWUpCit7CisgICAgLy8gU3RlcCAxCisgICAgLy8gU3RlcCAyCisgICAg
Y29uc3QgVUNoYXIqIHBvc2l0aW9uID0gaW5wdXQuY2hhcmFjdGVycygpOworICAgIGNvbnN0IFVD
aGFyKiBlbmQgPSBwb3NpdGlvbiArIGlucHV0Lmxlbmd0aCgpOworCisgICAgLy8gU3RlcCAzCisg
ICAgZW51bSB7CisgICAgICAgIFBvc2l0aXZlLAorICAgICAgICBOZWdhdGl2ZQorICAgIH0gc2ln
biA9IFBvc2l0aXZlOworCisgICAgLy8gU3RlcCA0CisgICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5k
KSB7CisgICAgICAgIGlmICghaXNIVE1MU3BhY2UoKnBvc2l0aW9uKSkKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICArK3Bvc2l0aW9uOworICAgIH0KKworICAgIC8vIFN0ZXAgNQorICAgIGlm
IChwb3NpdGlvbiA9PSBlbmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQocG9z
aXRpb24gPCBlbmQpOworCisgICAgLy8gU3RlcCA2CisgICAgaWYgKCpwb3NpdGlvbiA9PSAnLScp
IHsKKyAgICAgICAgLy8gU3Vic3RlcCAxCisgICAgICAgIHNpZ24gPSBOZWdhdGl2ZTsKKworICAg
ICAgICAvLyBTdWJzdGVwIDIKKyAgICAgICAgKytwb3NpdGlvbjsKKworICAgICAgICAvLyBTdWJz
dGVwIDMKKyAgICAgICAgaWYgKHBvc2l0aW9uID09IGVuZCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9IGVsc2UgaWYgKCpwb3NpdGlvbiA9PSAnKycpIHsKKyAgICAgICAgLy8gU3Vi
c3RlcCAxCisgICAgICAgICsrcG9zaXRpb247CisKKyAgICAgICAgLy8gU3Vic3RlcCAyCisgICAg
ICAgIGlmIChwb3NpdGlvbiA9PSBlbmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIEFTU0VSVChwb3NpdGlvbiA8IGVuZCk7CisKKyAgICAvLyBTdGVwIDcKKyAgICBpZiAo
IWlzQVNDSUlEaWdpdCgqcG9zaXRpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBTdGVwIDgKKyAgICBWZWN0b3I8VUNoYXIsIDE2PiBkaWdpdHM7CisgICAgd2hpbGUgKHBvc2l0
aW9uIDwgZW5kKSB7CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCpwb3NpdGlvbikpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGlnaXRzLmFwcGVuZCgqcG9zaXRpb24rKyk7CisgICAg
fQorICAgIGludCBudW1iZXIgPSBXVEY6OmNoYXJhY3RlcnNUb0ludFN0cmljdChkaWdpdHMuZGF0
YSgpLCBkaWdpdHMuc2l6ZSgpKTsKKworICAgIC8vIFN0ZXAgOQorICAgIHN3aXRjaCAoc2lnbikg
eworICAgIGNhc2UgUG9zaXRpdmU6CisgICAgICAgIHZhbHVlID0gbnVtYmVyOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE5lZ2F0aXZlOgorICAgICAgICB2YWx1ZSA9IC1udW1iZXI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQpJbmRleDogV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgJKHJldmlzaW9uIDY3NDQ0KQorKysgV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDkgQEAgU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5cGUoZG91YmxlKTsKIC8vIFRoZSBk
b3VibGUqIHBhcmFtZXRlciBtYXkgYmUgMCB0byBjaGVjayBpZiB0aGUgc3RyaW5nIGNhbiBiZSBw
YXJzZWQgd2l0aG91dCBnZXR0aW5nIHRoZSByZXN1bHQuCiBib29sIHBhcnNlVG9Eb3VibGVGb3JO
dW1iZXJUeXBlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSopOwogCisvLyBodHRwOi8vd3d3LndoYXR3
Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNydWxlcy1mb3ItcGFyc2luZy1pbnRl
Z2VycworYm9vbCBwYXJzZUhUTUxJbnRlZ2VyKGNvbnN0IFN0cmluZyYsIGludCYpOworCiAvLyBJ
bmxpbmUgaW1wbGVtZW50YXRpb25zIG9mIHNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBkZWNsYXJlZCBh
Ym92ZS4KIAogaW5saW5lIGJvb2wgaXNIVE1MU3BhY2UoVUNoYXIgY2hhcmFjdGVyKQpJbmRleDog
V2ViQ29yZS93bWwvV01MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93bWwvV01M
RWxlbWVudC5jcHAJKHJldmlzaW9uIDY3NDQ0KQorKysgV2ViQ29yZS93bWwvV01MRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDExICs3MywxMSBAQCB2b2lkIFdNTEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gSFRN
TE5hbWVzOjp0YWJpbmRleEF0dHIpIHsKICAgICAgICAgU3RyaW5nIGluZGV4c3RyaW5nID0gYXR0
ci0+dmFsdWUoKTsKICAgICAgICAgaWYgKGluZGV4c3RyaW5nLmxlbmd0aCgpKSB7Ci0gICAgICAg
ICAgICBib29sIHBhcnNlZE9LOwotICAgICAgICAgICAgaW50IHRhYmluZGV4ID0gaW5kZXhzdHJp
bmcudG9JbnRTdHJpY3QoJnBhcnNlZE9LKTsKLSAgICAgICAgICAgIGlmIChwYXJzZWRPSykKKyAg
ICAgICAgICAgIGludCB0YWJpbmRleCA9IDA7CisgICAgICAgICAgICBpZiAocGFyc2VIVE1MSW50
ZWdlcih0YWJpbmRleCkpIHsKICAgICAgICAgICAgICAgICAvLyBDbGFtcCB0YWJpbmRleCB0byB0
aGUgcmFuZ2Ugb2YgJ3Nob3J0JyB0byBtYXRjaCBGaXJlZm94J3MgYmVoYXZpb3IuCiAgICAgICAg
ICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KG1heChzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6
bnVtZXJpY19saW1pdHM8c2hvcnQ+OjptaW4oKSksIG1pbih0YWJpbmRleCwgc3RhdGljX2Nhc3Q8
aW50PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWF4KCkpKSkpOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjc0NDcpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0w
OS0xMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGluY29ycmVjdCB0YWJpbmRleCBwYXJzaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA3Ngor
CisgICAgICAgICogZmFzdC9wYXJzZXIvdGFiaW5kZXgtcGFyc2luZy0yLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9wYXJzZXIvdGFiaW5kZXgtcGFyc2luZy0yLmh0bWw6IEFk
ZGVkLgorICAgICAgICAgICAgLSBUZXN0IGEgYnVuY2ggb2YgY29ybmVyIGNhc2VzIGluIHRhYmlu
ZGV4IHBhcnNpbmcuCisgICAgICAgICogZmFzdC9wYXJzZXIvdGFiaW5kZXgtcGFyc2luZy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wYXJzZXIvdGFiaW5kZXgtcGFyc2luZy5odG1sOgor
ICAgICAgICAgICAgLSBVcGRhdGUgZXhwZWN0ZWQgcmVzdWx0LiAgVGhpcyBjYXNlIGlzIGFjdHVh
bGx5IHRoZSBvbmUgdGhhdCB0aGUKKyAgICAgICAgICAgICAgb3JpZ2luYWwgcmVwb3J0ZXIgd2Fz
IGNvbXBsYWluaW5nIGFib3V0LgorCiAyMDEwLTA5LTEzICBZdXRhIEtpdGFtdXJhICA8eXV0YWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci90YWJpbmRleC1wYXJzaW5nLTItZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3RhYmluZGV4LXBhcnNpbmct
Mi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci90
YWJpbmRleC1wYXJzaW5nLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5
IEBACis0CistNAorLTEKKy0xCis0CistNAorLTEKKy0xCis0CistNAorLTEKKy0xCis0CistNAor
LTEKKy0xCis0CistNAorLTEKKy0xCis0CistNAorLTEKKy0xCis0CistNAorLTEKKy0xCis0Cist
NAorLTEKKy0xCis0CistNAorLTEKKy0xCis0CistNAorLTEKKy0xCis0CistNAorLTEKKy0xCis0
CistNAorLTEKKy0xCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3RhYmluZGV4LXBh
cnNpbmctMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3RhYmlu
ZGV4LXBhcnNpbmctMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9wYXJz
ZXIvdGFiaW5kZXgtcGFyc2luZy0yLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAK
KzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPGRpdiB0YWJpbmRleD0iKzQi
PjwvZGl2PgorPGRpdiB0YWJpbmRleD0iLTQiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iKy00Ij48
L2Rpdj4KKzxkaXYgdGFiaW5kZXg9Ii0rNCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIrMDQiPjwv
ZGl2PgorPGRpdiB0YWJpbmRleD0iLTA0Ij48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9IisiPjwvZGl2
PgorPGRpdiB0YWJpbmRleD0iLSI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIgICAgKzQiPjwvZGl2
PgorPGRpdiB0YWJpbmRleD0iICAgIC00Ij48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9IiAgICArLTQi
PjwvZGl2PgorPGRpdiB0YWJpbmRleD0iICAgIC0rNCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIg
ICAgKzA0Ij48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9IiAgICAtMDQiPjwvZGl2PgorPGRpdiB0YWJp
bmRleD0iICAgICsiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iICAgIC0iPjwvZGl2PgorPGRpdiB0
YWJpbmRleD0iKzQgICAiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iLTQgICAiPjwvZGl2PgorPGRp
diB0YWJpbmRleD0iKy00ICAgIj48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9Ii0rNCAgICI+PC9kaXY+
Cis8ZGl2IHRhYmluZGV4PSIrMDQgICAiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iLTA0ICAgIj48
L2Rpdj4KKzxkaXYgdGFiaW5kZXg9IisgICAgIj48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9Ii0gICAg
Ij48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9Iis0eHgiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iLTR4
eCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIrLTR4eCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIt
KzR4eCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIrMDR4eCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4
PSItMDR4eCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIreHgiPjwvZGl2PgorPGRpdiB0YWJpbmRl
eD0iLXh4Ij48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9KzQ+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PS00
PjwvZGl2PgorPGRpdiB0YWJpbmRleD0rLTQ+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PS0rND48L2Rp
dj4KKzxkaXYgdGFiaW5kZXg9KzA0PjwvZGl2PgorPGRpdiB0YWJpbmRleD0tMDQ+PC9kaXY+Cis8
ZGl2IHRhYmluZGV4PSs+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PS0+PC9kaXY+Cis8ZGl2IHRhYmlu
ZGV4PSs0Lz48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9LTQvPjwvZGl2PgorPGRpdiB0YWJpbmRleD0r
LTQvPjwvZGl2PgorPGRpdiB0YWJpbmRleD0tKzQvPjwvZGl2PgorPGRpdiB0YWJpbmRleD0rMDQv
PjwvZGl2PgorPGRpdiB0YWJpbmRleD0tMDQvPjwvZGl2PgorPGRpdiB0YWJpbmRleD0rLz48L2Rp
dj4KKzxkaXYgdGFiaW5kZXg9LS8+PC9kaXY+Cis8cHJlIGlkPSJyZXN1bHQiPjwvcHJlPgorPHNj
cmlwdD4KK3ZhciBkaXZzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpOwor
Zm9yICh2YXIgaSA9IDA7IGkgPCBkaXZzLmxlbmd0aDsgKytpKSB7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCArPSBkaXZzW2ldLnRhYkluZGV4ICsgJ1xu
JworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci90YWJpbmRleC1w
YXJzaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3BhcnNl
ci90YWJpbmRleC1wYXJzaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjc0NDQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3BhcnNlci90YWJpbmRleC1wYXJzaW5nLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAgVGhpcyBlbGVtZW50IHNob3VsZG4ndCBiZSBmb2N1c2Fi
bGUgUEFTUwogVGhpcyBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2FibGUgUEFTU0VECiAudGFiSW5k
ZXg9NyBnZXRBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk9JzAwNycKIAotVGhpcyBlbGVtZW50IHNob3Vs
ZG4ndCBiZSBmb2N1c2FibGUgUEFTU0VECi0udGFiSW5kZXg9LTEgZ2V0QXR0cmlidXRlKCd0YWJp
bmRleCcpPScxcHgnCitUaGlzIGVsZW1lbnQgc2hvdWxkIGJlIGZvY3VzYWJsZSBQQVNTRUQKKy50
YWJJbmRleD0xIGdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKT0nMXB4JwogCiBUaGlzIGVsZW1lbnQg
c2hvdWxkIGJlIGZvY3VzYWJsZSBQQVNTRUQKIC50YWJJbmRleD0wIGdldEF0dHJpYnV0ZSgndGFi
aW5kZXgnKT0nLTAnCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci90YWJpbmRleC1wYXJz
aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvdGFiaW5kZXgt
cGFyc2luZy5odG1sCShyZXZpc2lvbiA2NzQ0NCkKKysrIExheW91dFRlc3RzL2Zhc3QvcGFyc2Vy
L3RhYmluZGV4LXBhcnNpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBG
cm9tIEhUTUw1IHNwZWM6PGJsb2NrcXVvdGU+CiA8cCB0YWJpbmRleD0iMDA3IiBvbmZvY3VzPSJw
M0ZvY3VzZWQ9dHJ1ZSIgb25jbGljaz0idGVzdChwM0ZvY3VzZWQsdHJ1ZSwzKSI+VGhpcyBlbGVt
ZW50IHNob3VsZCBiZSBmb2N1c2FibGUgPGJyPgogPHNwYW4gaWQ9InNwMyI+Q2xpY2sgdG8gdGVz
dCBtYW51YWxseTwvc3Bhbj4KIDwvcD4KLTxwIHRhYmluZGV4PSIxcHgiIG9uZm9jdXM9InA0Rm9j
dXNlZD10cnVlIiBvbmNsaWNrPSJ0ZXN0KHA0Rm9jdXNlZCxmYWxzZSw0KSI+VGhpcyBlbGVtZW50
IHNob3VsZG4ndCBiZSBmb2N1c2FibGUgPGJyPgorPHAgdGFiaW5kZXg9IjFweCIgb25mb2N1cz0i
cDRGb2N1c2VkPXRydWUiIG9uY2xpY2s9InRlc3QocDRGb2N1c2VkLHRydWUsNCkiPlRoaXMgZWxl
bWVudCBzaG91bGQgYmUgZm9jdXNhYmxlIDxicj4KIDxzcGFuIGlkPSJzcDQiPkNsaWNrIHRvIHRl
c3QgbWFudWFsbHk8L3NwYW4+CiA8L3A+CiA8cCB0YWJpbmRleD0iLTAiIG9uZm9jdXM9InA1Rm9j
dXNlZD10cnVlIiBvbmNsaWNrPSJ0ZXN0KHA1Rm9jdXNlZCx0cnVlLDUpIj5UaGlzIGVsZW1lbnQg
c2hvdWxkIGJlIGZvY3VzYWJsZSA8YnI+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67605</attachid>
            <date>2010-09-14 14:25:21 -0700</date>
            <delta_ts>2010-09-14 15:07:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21076-20100914142520.patch</filename>
            <type>text/plain</type>
            <size>9878</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzQ5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDktMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBpbmNv
cnJlY3QgdGFiaW5kZXggcGFyc2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEwNzYKKworICAgICAgICBVcGRhdGVkIG91ciBpbnRlZ2VyIHBhcnNp
bmcgZm9yIHRhYmluZGV4IHRvIHVzZSB0aGUgYWxnb3JpdGhtIGZyb20gdGhlCisgICAgICAgIEhU
TUw1IHNwZWMuCisKKyAgICAgICAgVGVzdDogZmFzdC9wYXJzZXIvdGFiaW5kZXgtcGFyc2luZy0y
Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRNTElu
dGVnZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKwogMjAx
MC0wOS0xNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDY3
NDk2KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50RmFjdG9yeS5oIgogI2luY2x1ZGUg
IkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhU
TUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJSZW5kZXJXb3JkQnJlYWsuaCIKICNpbmNsdWRl
ICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTE0Mywx
MSArMTQ0LDExIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEEKICAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB0YWJpbmRleEF0dHIpIHsKICAgICAgICAgaW5k
ZXhzdHJpbmcgPSBnZXRBdHRyaWJ1dGUodGFiaW5kZXhBdHRyKTsKICAgICAgICAgaWYgKGluZGV4
c3RyaW5nLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBib29sIHBhcnNlZE9LOwotICAgICAgICAg
ICAgaW50IHRhYmluZGV4ID0gaW5kZXhzdHJpbmcudG9JbnRTdHJpY3QoJnBhcnNlZE9LKTsKLSAg
ICAgICAgICAgIGlmIChwYXJzZWRPSykKKyAgICAgICAgICAgIGludCB0YWJpbmRleCA9IDA7Cisg
ICAgICAgICAgICBpZiAocGFyc2VIVE1MSW50ZWdlcihpbmRleHN0cmluZywgdGFiaW5kZXgpKSB7
CiAgICAgICAgICAgICAgICAgLy8gQ2xhbXAgdGFiaW5kZXggdG8gdGhlIHJhbmdlIG9mICdzaG9y
dCcgdG8gbWF0Y2ggRmlyZWZveCdzIGJlaGF2aW9yLgogICAgICAgICAgICAgICAgIHNldFRhYklu
ZGV4RXhwbGljaXRseShtYXgoc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om51bWVyaWNfbGltaXRzPHNo
b3J0Pjo6bWluKCkpLCBtaW4odGFiaW5kZXgsIHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1lcmlj
X2xpbWl0czxzaG9ydD46Om1heCgpKSkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGxhbmdBdHRyKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQKSW5kZXg6IFdlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNw
cAkocmV2aXNpb24gNjc0OTYpCisrKyBXZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw0ICs5MSw1NCBAQCBib29sIHBhcnNlVG9Eb3Vi
bGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIGh0dHA6
Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1w
YXJzaW5nLWludGVnZXJzCitib29sIHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1
dCwgaW50JiB2YWx1ZSkKK3sKKyAgICAvLyBTdGVwIDEKKyAgICAvLyBTdGVwIDIKKyAgICBjb25z
dCBVQ2hhciogcG9zaXRpb24gPSBpbnB1dC5jaGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIq
IGVuZCA9IHBvc2l0aW9uICsgaW5wdXQubGVuZ3RoKCk7CisKKyAgICAvLyBTdGVwIDMKKyAgICBp
bnQgc2lnbiA9IDE7CisKKyAgICAvLyBTdGVwIDQKKyAgICB3aGlsZSAocG9zaXRpb24gPCBlbmQp
IHsKKyAgICAgICAgaWYgKCFpc0hUTUxTcGFjZSgqcG9zaXRpb24pKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICsrcG9zaXRpb247CisgICAgfQorCisgICAgLy8gU3RlcCA1CisgICAgaWYg
KHBvc2l0aW9uID09IGVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChwb3Np
dGlvbiA8IGVuZCk7CisKKyAgICAvLyBTdGVwIDYKKyAgICBpZiAoKnBvc2l0aW9uID09ICctJykg
eworICAgICAgICBzaWduID0gLTE7CisgICAgICAgICsrcG9zaXRpb247CisgICAgfSBlbHNlIGlm
ICgqcG9zaXRpb24gPT0gJysnKQorICAgICAgICArK3Bvc2l0aW9uOworICAgIGlmIChwb3NpdGlv
biA9PSBlbmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQocG9zaXRpb24gPCBl
bmQpOworCisgICAgLy8gU3RlcCA3CisgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKnBvc2l0aW9uKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gU3RlcCA4CisgICAgVmVjdG9yPFVDaGFy
LCAxNj4gZGlnaXRzOworICAgIHdoaWxlIChwb3NpdGlvbiA8IGVuZCkgeworICAgICAgICBpZiAo
IWlzQVNDSUlEaWdpdCgqcG9zaXRpb24pKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRp
Z2l0cy5hcHBlbmQoKnBvc2l0aW9uKyspOworICAgIH0KKworICAgIC8vIFN0ZXAgOQorICAgIHZh
bHVlID0gc2lnbiAqIFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0KGRpZ2l0cy5kYXRhKCksIGRp
Z2l0cy5zaXplKCkpOworICAgIHJldHVybiB0cnVlOworfQorCiB9CkluZGV4OiBXZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAkocmV2aXNpb24gNjc0OTYpCisrKyBXZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUs
OSBAQCBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUpOwogLy8gVGhlIGRvdWJs
ZSogcGFyYW1ldGVyIG1heSBiZSAwIHRvIGNoZWNrIGlmIHRoZSBzdHJpbmcgY2FuIGJlIHBhcnNl
ZCB3aXRob3V0IGdldHRpbmcgdGhlIHJlc3VsdC4KIGJvb2wgcGFyc2VUb0RvdWJsZUZvck51bWJl
clR5cGUoY29uc3QgU3RyaW5nJiwgZG91YmxlKik7CiAKKy8vIGh0dHA6Ly93d3cud2hhdHdnLm9y
Zy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJz
Citib29sIHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiwgaW50Jik7CisKIC8vIElubGlu
ZSBpbXBsZW1lbnRhdGlvbnMgb2Ygc29tZSBvZiB0aGUgZnVuY3Rpb25zIGRlY2xhcmVkIGFib3Zl
LgogCiBpbmxpbmUgYm9vbCBpc0hUTUxTcGFjZShVQ2hhciBjaGFyYWN0ZXIpCkluZGV4OiBXZWJD
b3JlL3dtbC9XTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dtbC9XTUxFbGVt
ZW50LmNwcAkocmV2aXNpb24gNjc0OTYpCisrKyBXZWJDb3JlL3dtbC9XTUxFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzMsMTEgKzczLDExIEBAIHZvaWQgV01MRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXQKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBIVE1MTmFt
ZXM6OnRhYmluZGV4QXR0cikgewogICAgICAgICBTdHJpbmcgaW5kZXhzdHJpbmcgPSBhdHRyLT52
YWx1ZSgpOwogICAgICAgICBpZiAoaW5kZXhzdHJpbmcubGVuZ3RoKCkpIHsKLSAgICAgICAgICAg
IGJvb2wgcGFyc2VkT0s7Ci0gICAgICAgICAgICBpbnQgdGFiaW5kZXggPSBpbmRleHN0cmluZy50
b0ludFN0cmljdCgmcGFyc2VkT0spOwotICAgICAgICAgICAgaWYgKHBhcnNlZE9LKQorICAgICAg
ICAgICAgaW50IHRhYmluZGV4ID0gMDsKKyAgICAgICAgICAgIGlmIChwYXJzZUhUTUxJbnRlZ2Vy
KHRhYmluZGV4KSkgewogICAgICAgICAgICAgICAgIC8vIENsYW1wIHRhYmluZGV4IHRvIHRoZSBy
YW5nZSBvZiAnc2hvcnQnIHRvIG1hdGNoIEZpcmVmb3gncyBiZWhhdmlvci4KICAgICAgICAgICAg
ICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkobWF4KHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1l
cmljX2xpbWl0czxzaG9ydD46Om1pbigpKSwgbWluKHRhYmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+
KHN0ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+OjptYXgoKSkpKSk7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NzQ5NikKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA5LTE0
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW5jb3JyZWN0IHRhYmluZGV4IHBhcnNpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDc2CisKKyAg
ICAgICAgKiBmYXN0L3BhcnNlci90YWJpbmRleC1wYXJzaW5nLTItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3BhcnNlci90YWJpbmRleC1wYXJzaW5nLTIuaHRtbDogQWRkZWQu
CisgICAgICAgICAgICAtIFRlc3QgYSBidW5jaCBvZiBjb3JuZXIgY2FzZXMgaW4gdGFiaW5kZXgg
cGFyc2luZy4KKyAgICAgICAgKiBmYXN0L3BhcnNlci90YWJpbmRleC1wYXJzaW5nLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L3BhcnNlci90YWJpbmRleC1wYXJzaW5nLmh0bWw6CisgICAg
ICAgICAgICAtIFVwZGF0ZSBleHBlY3RlZCByZXN1bHQuICBUaGlzIGNhc2UgaXMgYWN0dWFsbHkg
dGhlIG9uZSB0aGF0IHRoZQorICAgICAgICAgICAgICBvcmlnaW5hbCByZXBvcnRlciB3YXMgY29t
cGxhaW5pbmcgYWJvdXQuCisKIDIwMTAtMDktMTQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9wYXJzZXIvdGFiaW5kZXgtcGFyc2luZy0yLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci90YWJpbmRleC1wYXJzaW5nLTItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvdGFiaW5kZXgt
cGFyc2luZy0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorNAor
LTQKKy0xCistMQorNAorLTQKKy0xCistMQorNAorLTQKKy0xCistMQorNAorLTQKKy0xCistMQor
NAorLTQKKy0xCistMQorNAorLTQKKy0xCistMQorNAorLTQKKy0xCistMQorNAorLTQKKy0xCist
MQorNAorLTQKKy0xCistMQorNAorLTQKKy0xCistMQorNAorLTQKKy0xCistMQorNAorLTQKKy0x
CistMQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci90YWJpbmRleC1wYXJzaW5nLTIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci90YWJpbmRleC1wYXJz
aW5nLTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3RhYmlu
ZGV4LXBhcnNpbmctMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACis8c2NyaXB0
PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxkaXYgdGFiaW5kZXg9Iis0Ij48L2Rpdj4K
KzxkaXYgdGFiaW5kZXg9Ii00Ij48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9IistNCI+PC9kaXY+Cis8
ZGl2IHRhYmluZGV4PSItKzQiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iKzA0Ij48L2Rpdj4KKzxk
aXYgdGFiaW5kZXg9Ii0wNCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIrIj48L2Rpdj4KKzxkaXYg
dGFiaW5kZXg9Ii0iPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iICAgICs0Ij48L2Rpdj4KKzxkaXYg
dGFiaW5kZXg9IiAgICAtNCI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIgICAgKy00Ij48L2Rpdj4K
KzxkaXYgdGFiaW5kZXg9IiAgICAtKzQiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iICAgICswNCI+
PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIgICAgLTA0Ij48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9IiAg
ICArIj48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9IiAgICAtIj48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9
Iis0ICAgIj48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9Ii00ICAgIj48L2Rpdj4KKzxkaXYgdGFiaW5k
ZXg9IistNCAgICI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSItKzQgICAiPjwvZGl2PgorPGRpdiB0
YWJpbmRleD0iKzA0ICAgIj48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9Ii0wNCAgICI+PC9kaXY+Cis8
ZGl2IHRhYmluZGV4PSIrICAgICI+PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSItICAgICI+PC9kaXY+
Cis8ZGl2IHRhYmluZGV4PSIrNHh4Ij48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9Ii00eHgiPjwvZGl2
PgorPGRpdiB0YWJpbmRleD0iKy00eHgiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iLSs0eHgiPjwv
ZGl2PgorPGRpdiB0YWJpbmRleD0iKzA0eHgiPjwvZGl2PgorPGRpdiB0YWJpbmRleD0iLTA0eHgi
PjwvZGl2PgorPGRpdiB0YWJpbmRleD0iK3h4Ij48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9Ii14eCI+
PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSs0PjwvZGl2PgorPGRpdiB0YWJpbmRleD0tND48L2Rpdj4K
KzxkaXYgdGFiaW5kZXg9Ky00PjwvZGl2PgorPGRpdiB0YWJpbmRleD0tKzQ+PC9kaXY+Cis8ZGl2
IHRhYmluZGV4PSswND48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9LTA0PjwvZGl2PgorPGRpdiB0YWJp
bmRleD0rPjwvZGl2PgorPGRpdiB0YWJpbmRleD0tPjwvZGl2PgorPGRpdiB0YWJpbmRleD0rNC8+
PC9kaXY+Cis8ZGl2IHRhYmluZGV4PS00Lz48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9Ky00Lz48L2Rp
dj4KKzxkaXYgdGFiaW5kZXg9LSs0Lz48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9KzA0Lz48L2Rpdj4K
KzxkaXYgdGFiaW5kZXg9LTA0Lz48L2Rpdj4KKzxkaXYgdGFiaW5kZXg9Ky8+PC9kaXY+Cis8ZGl2
IHRhYmluZGV4PS0vPjwvZGl2PgorPHByZSBpZD0icmVzdWx0Ij48L3ByZT4KKzxzY3JpcHQ+Cit2
YXIgZGl2cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKTsKK2ZvciAodmFy
IGkgPSAwOyBpIDwgZGl2cy5sZW5ndGg7ICsraSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgKz0gZGl2c1tpXS50YWJJbmRleCArICdcbicKK30KKzwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvdGFiaW5kZXgtcGFyc2luZy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvdGFiaW5k
ZXgtcGFyc2luZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY3NDk2KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9wYXJzZXIvdGFiaW5kZXgtcGFyc2luZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTksOCArOSw4IEBAIFRoaXMgZWxlbWVudCBzaG91bGRuJ3QgYmUgZm9jdXNhYmxlIFBBU1MK
IFRoaXMgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNhYmxlIFBBU1NFRAogLnRhYkluZGV4PTcgZ2V0
QXR0cmlidXRlKCd0YWJpbmRleCcpPScwMDcnCiAKLVRoaXMgZWxlbWVudCBzaG91bGRuJ3QgYmUg
Zm9jdXNhYmxlIFBBU1NFRAotLnRhYkluZGV4PS0xIGdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKT0n
MXB4JworVGhpcyBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2FibGUgUEFTU0VECisudGFiSW5kZXg9
MSBnZXRBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk9JzFweCcKIAogVGhpcyBlbGVtZW50IHNob3VsZCBi
ZSBmb2N1c2FibGUgUEFTU0VECiAudGFiSW5kZXg9MCBnZXRBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk9
Jy0wJwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvdGFiaW5kZXgtcGFyc2luZy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3RhYmluZGV4LXBhcnNpbmcu
aHRtbAkocmV2aXNpb24gNjc0OTYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci90YWJpbmRl
eC1wYXJzaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgRnJvbSBIVE1M
NSBzcGVjOjxibG9ja3F1b3RlPgogPHAgdGFiaW5kZXg9IjAwNyIgb25mb2N1cz0icDNGb2N1c2Vk
PXRydWUiIG9uY2xpY2s9InRlc3QocDNGb2N1c2VkLHRydWUsMykiPlRoaXMgZWxlbWVudCBzaG91
bGQgYmUgZm9jdXNhYmxlIDxicj4KIDxzcGFuIGlkPSJzcDMiPkNsaWNrIHRvIHRlc3QgbWFudWFs
bHk8L3NwYW4+CiA8L3A+Ci08cCB0YWJpbmRleD0iMXB4IiBvbmZvY3VzPSJwNEZvY3VzZWQ9dHJ1
ZSIgb25jbGljaz0idGVzdChwNEZvY3VzZWQsZmFsc2UsNCkiPlRoaXMgZWxlbWVudCBzaG91bGRu
J3QgYmUgZm9jdXNhYmxlIDxicj4KKzxwIHRhYmluZGV4PSIxcHgiIG9uZm9jdXM9InA0Rm9jdXNl
ZD10cnVlIiBvbmNsaWNrPSJ0ZXN0KHA0Rm9jdXNlZCx0cnVlLDQpIj5UaGlzIGVsZW1lbnQgc2hv
dWxkIGJlIGZvY3VzYWJsZSA8YnI+CiA8c3BhbiBpZD0ic3A0Ij5DbGljayB0byB0ZXN0IG1hbnVh
bGx5PC9zcGFuPgogPC9wPgogPHAgdGFiaW5kZXg9Ii0wIiBvbmZvY3VzPSJwNUZvY3VzZWQ9dHJ1
ZSIgb25jbGljaz0idGVzdChwNUZvY3VzZWQsdHJ1ZSw1KSI+VGhpcyBlbGVtZW50IHNob3VsZCBi
ZSBmb2N1c2FibGUgPGJyPgo=
</data>
<flag name="review"
          id="56952"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>