<?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>67586</bug_id>
          
          <creation_ts>2011-09-04 23:13:50 -0700</creation_ts>
          <short_desc>Map &apos;lang&apos; and xml:lang attributes to &apos;-webkit-locale&apos; CSS property for use with font fallback and text-transform</short_desc>
          <delta_ts>2012-01-17 17:26:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>10874</blocked>
    
    <blocked>21312</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jungshik Shin">jshin</reporter>
          <assigned_to name="Jungshik Shin">jshin</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>falken</cc>
    
    <cc>macpherson</cc>
    
    <cc>mitz</cc>
    
    <cc>nickshanks</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>462038</commentid>
    <comment_count>0</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-09-04 23:13:50 -0700</bug_when>
    <thetext>Spun off bug 16801 where I tried to solve the problem in the summary line while improving the performance of &apos;lang/xml:lang&apos; retrieval (for pseudo-lang selector) at the same time. I came across a problem there and this issue is more urgent. So, I&apos;m fileing this bug separately. 

By fixing this bug separately, we can speed up fixing bug 10874.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462052</commentid>
    <comment_count>1</comment_count>
      <attachid>106311</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-09-04 23:52:34 -0700</bug_when>
    <thetext>Created attachment 106311
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462054</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-04 23:54:30 -0700</bug_when>
    <thetext>Attachment 106311 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

LayoutTests/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
LayoutTests/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
LayoutTests/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
LayoutTests/ChangeLog:11:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:11:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/html/HTMLElement.cpp:205:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 9 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462060</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-05 00:43:54 -0700</bug_when>
    <thetext>Did you have a chance to talk to a CSS expert about why the proper patch didn&apos;t work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462617</commentid>
    <comment_count>4</comment_count>
      <attachid>106437</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-09-06 10:15:53 -0700</bug_when>
    <thetext>Created attachment 106437
patch updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462619</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 10:17:29 -0700</bug_when>
    <thetext>Attachment 106437 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;]&quot; exit_code: 2

Last 3072 characters of output:
 media
    url: http://src.chromium.org/svn/trunk/src/media@99393
    parsed_url: http://src.chromium.org/svn/trunk/src/media@99393
    should_process: True
    processed: True
    requirements: set([&apos;./&apos;])
  
    name: build
    url: http://src.chromium.org/svn/trunk/src/build@99393
    parsed_url: http://src.chromium.org/svn/trunk/src/build@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: net
    url: http://src.chromium.org/svn/trunk/src/net@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: tools/data_pack
    url: http://src.chromium.org/svn/trunk/src/tools/data_pack@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: third_party/ffmpeg
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/ffmpeg&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: tools/generate_stubs
    url: http://src.chromium.org/svn/trunk/src/tools/generate_stubs@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: third_party/libjpeg_turbo
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/libjpeg_turbo&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/v8-i18n
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/v8-i18n&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: tools/grit
    url: http://src.chromium.org/svn/trunk/src/tools/grit@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: base
    url: http://src.chromium.org/svn/trunk/src/base@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: sql
    url: http://src.chromium.org/svn/trunk/src/sql@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: v8
    url: From(&apos;chromium_deps&apos;, &apos;src/v8&apos;)
    should_process: True
    requirements: set([&apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: testing/gtest
    url: From(&apos;chromium_deps&apos;, &apos;src/testing/gtest&apos;)
    should_process: True
    requirements: set([&apos;testing&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/libwebp
    url: http://src.chromium.org/svn/trunk/src/third_party/libwebp@99393
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;./&apos;])
  
    name: googleurl
    url: From(&apos;chromium_deps&apos;, &apos;src/googleurl&apos;)
    should_process: True
    requirements: set([&apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/skia/include
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/skia/include&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/ots
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/ots&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/snappy/src
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/snappy/src&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])

Died at Tools/Scripts/update-webkit-chromium line 80.
No such file or directory at Tools/Scripts/update-webkit line 104.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462621</commentid>
    <comment_count>6</comment_count>
      <attachid>106437</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 10:20:46 -0700</bug_when>
    <thetext>Comment on attachment 106437
patch updated

Attachment 106437 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9601038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462623</commentid>
    <comment_count>7</comment_count>
      <attachid>106437</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 10:24:16 -0700</bug_when>
    <thetext>Comment on attachment 106437
patch updated

Attachment 106437 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9592912</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463671</commentid>
    <comment_count>8</comment_count>
      <attachid>106645</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-09-07 14:50:21 -0700</bug_when>
    <thetext>Created attachment 106645
same as the previous 

cr-* bots were broken at the time of testing yesterday. Trying again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464124</commentid>
    <comment_count>9</comment_count>
      <attachid>106756</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-09-08 10:16:28 -0700</bug_when>
    <thetext>Created attachment 106756
same as the previous with bug # in layout test updated to this bug

cr-linux-EWS is failing with or without this patch. Other EWS bots are returning green. This patch is the same as the previous except for the bug number in the layout test is updated along with the description of the bug/test in the layout test (html and expected result). 

So, I&apos;m asking for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464170</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-08 10:58:03 -0700</bug_when>
    <thetext>My question still stands:

&gt; Did you have a chance to talk to a CSS expert about why the proper patch didn&apos;t work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464439</commentid>
    <comment_count>11</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-09-08 15:24:06 -0700</bug_when>
    <thetext>Ooops. I missed your comment #3. 

By proper patch, do you mean my patch attached to bug 16801? 

 I don&apos;t think my patch here is less proper than the patch there. The patch there does more things than this patch. I narrowed the scope of the work to mapping lang/xml:lang to webkit-locale.  This alone is useful for utilizing &apos;lang/xml:lang&apos; in font fallback because that directly references webkit-locale instead of calling &apos;computeInheritedLanguage&apos;.  

&apos;computeInheritedLanguage&apos; is called to deal with &apos;pseudo-lang&apos; selector. And, bug 16801 is about speeding up that function. Anyway, I&apos;ll ask CSS experts (mitz or dhyatt ?) about that, but I think this patch can be reviewed independently of that. 

Hmm, perhaps when dealing with pseudo-lang selector, we might be able to get the computed value of &apos;-webkit-locale&apos; directly as well. Then, we don&apos;t have to worry about speeding up computeInheritedLanguage. To do that, we have to map &apos;content-language&apos; to &apos;webkit-locale&apos; in another place. 

Anyway, that can be done in bug 16801 and I believe the patch here is useful / necessary by itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502465</commentid>
    <comment_count>12</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-11-14 16:47:54 -0800</bug_when>
    <thetext>mitz, can you review this patch?  Thank you !!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517205</commentid>
    <comment_count>13</comment_count>
      <attachid>118334</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-12-07 23:09:34 -0800</bug_when>
    <thetext>Created attachment 118334
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517207</commentid>
    <comment_count>14</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-12-07 23:14:48 -0800</bug_when>
    <thetext>I just rebased as the previous patch was a few months old, but no changes were needed.

Could someone please review?

This is needed to allow font selection based on language (see comments on bug 10874, particularly Alexey&apos;s comment #22).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517522</commentid>
    <comment_count>15</comment_count>
      <attachid>118334</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-08 10:24:41 -0800</bug_when>
    <thetext>Comment on attachment 118334
rebase

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

&gt; Source/WebCore/html/HTMLElement.cpp:197
&gt; +        // FIXME: this does not work when xml:lang is present without lang.

We use sentence style and so should capitalize the word &quot;this&quot;.

Why should we write the code knowing it does not handle xml:lang properly? It&apos;s trivial to write code that covers xml:lang too, so lets do that instead of landing it wrong with the FIXME. I believe we just need to put a case for XMLNames::langAttr into this parseMappedAttribute function.

&gt; Source/WebCore/html/HTMLElement.cpp:203
&gt; +        if (hasAttribute(XMLNames::langAttr))
&gt; +            value = getAttribute(XMLNames::langAttr);
&gt; +        else
&gt; +            value = attr-&gt;value();

This is the wrong idiom to use.

- First, we should call fastGetAttribute and not getAttribute.
- Second, we should check for presence of the attribute by checking the value for null, not by a separate call to hasAttribute.
- Third, this code is called only when HTMLNames::langAttr is changed. We should have code called when XMLNames::langAttr is changed; this entire function should do nothing at all if an XMLNames::langAttr is present. (See comment above about covering xml:lang instead of doing a FIXME).

&gt; Source/WebCore/html/HTMLElement.cpp:205
&gt; +        if (value.length()) {

Better style is to use isEmpty.

&gt; Source/WebCore/html/HTMLElement.cpp:211
&gt; +            // Have to enclose with a pair of quotation marks to get the
&gt; +            // locale id treated as a string instead of as a CSS keyword.
&gt; +            DEFINE_STATIC_LOCAL(String, doubleQuoteChar, (&quot;\&quot;&quot;));
&gt; +            value.insert(doubleQuoteChar, 0);
&gt; +            value.append(doubleQuoteChar);
&gt; +            addCSSProperty(attr, CSSPropertyWebkitLocale, value);

I am extremely surprised that quoting is the correct way to do this or only way to do so. Please double check there is no better solution. If we do need to quote there are a few things wrong:

1) This is unnecessarily inefficient, allocating two intermediate strings. It&apos;s more efficient to just write &quot;\&quot;&quot; + value + &quot;\&quot;&quot;, since it will do both insertions at once.
2) This does not handle strings with quote marks in them correctly.
3) There is a function named quoteCSSString in CSSParser.h that we could probably use for this that would do it correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521767</commentid>
    <comment_count>16</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-12-15 02:31:53 -0800</bug_when>
    <thetext>(In reply to comment #15)

Thanks for the review!!

&gt; Why should we write the code knowing it does not handle xml:lang properly? It&apos;s trivial to write code that covers xml:lang too, so lets do that instead of landing it wrong with the FIXME. I believe we just need to put a case for XMLNames::langAttr into this parseMappedAttribute function.

I think there may be a bug preventing this from working.

If I try:
    if (attr-&gt;name().matches(XMLNames::langAttr) { ... }

in this function, it fails to match &quot;xml:lang&quot; of, e.g.,  &lt;div xml:lang=&apos;en&apos;&gt;. 

The reason is that QualifiedName::matches is:
    return m_impl == other.m_impl || (localName() == other.localName() &amp;&amp; namespaceURI() == other.namespaceURI());

In this case, &quot;xml:lang&quot; has localName=&quot;xml:lang&quot; and namespaceURI=&quot;&quot;, and XMLNames::langAttr has localName=&quot;lang&quot; and namespaceURI=&quot;http://www.w3.org/XML/1998/namespace&quot;

It seems the xml:lang attribute wasn&apos;t created correctly, or we need some additional logic so it can be matched with XMLNames::langAttr.  Or am I missing something here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521930</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-15 08:50:08 -0800</bug_when>
    <thetext>Were you testing HTML by chance? I don&apos;t think that we want xml:lang work in HTML documents, just XML ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521935</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-15 08:54:11 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; Why should we write the code knowing it does not handle xml:lang properly? It&apos;s trivial to write code that covers xml:lang too, so lets do that instead of landing it wrong with the FIXME. I believe we just need to put a case for XMLNames::langAttr into this parseMappedAttribute function.
&gt; 
&gt; I think there may be a bug preventing this from working.
&gt; 
&gt; If I try:
&gt;     if (attr-&gt;name().matches(XMLNames::langAttr) { ... }
&gt; 
&gt; in this function, it fails to match &quot;xml:lang&quot; of, e.g.,  &lt;div xml:lang=&apos;en&apos;&gt;.

It looks like the problem you are seeing is that the HTML parser is *not* supposed to parse the xml:lang attribute as the one from the XML namespace when parsing an HTML token. You can see this in the HTML specification section about the construction. The step that adds the appropriate namespace is called “adjust foreign attributes” and is not triggered unless MathML or SVG is involved.

So that means that &lt;div xml:lang=&apos;en&apos;&gt; does not have an XML lang attribute. Even though it looks like it does. According to the HTML standard.

Before we start writing code, we need to make sure we know what we want to implement. Maybe the HTML standard is wrong? Maybe you need a test case involving an SVG or MathML element instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522661</commentid>
    <comment_count>19</comment_count>
      <attachid>119591</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-12-16 03:14:19 -0800</bug_when>
    <thetext>Created attachment 119591
revised patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522662</commentid>
    <comment_count>20</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-12-16 03:16:22 -0800</bug_when>
    <thetext>I&apos;ve uploaded a revised patch.

Regarding xml:lang, I was indeed testing on HTML instead of XML. I hadn&apos;t realized it was not supposed to work on HTML. When I test on Jungshik&apos;s xhtml test case, it works.

Regarding quoting the value, I don&apos;t see another way to do it. I looked at other mapped attributes but couldn&apos;t find any with this issue, and quoting seems to be what mitz@ recommended in https://bugs.webkit.org/show_bug.cgi?id=16801#c10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522821</commentid>
    <comment_count>21</comment_count>
      <attachid>119591</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-16 10:18:33 -0800</bug_when>
    <thetext>Comment on attachment 119591
revised patch

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

&gt; Source/WebCore/html/HTMLElement.cpp:173
&gt; +void HTMLElement::mapLanguageAttributeToLocale(Attribute* attr)

In new code like this, please use words rather than abbreviations. So “attribute” rather than “attr”.

&gt; Source/WebCore/html/HTMLElement.cpp:176
&gt; +    String value = attr-&gt;value();

The local variable should be const AtomicString&amp; instead of String to avoid unnecessary reference count churn.

&gt; Source/WebCore/html/HTMLElement.cpp:179
&gt; +        // Have to quote so the locale id is treated as a string instead of as a
&gt; +        // CSS keyword.

Should keep this comment all on one line.

&gt; Source/WebCore/html/HTMLElement.cpp:182
&gt; +        // Empty &apos;lang&apos; should be treated as &apos;auto&apos;.

Is it really correct to special case both the lack of an attribute (value of null) and the empty string (value is empty), but not, say, a string that is entirely whitespace, other invalid strings, or the word &quot;auto&quot;? I’d like to see tests covering these cases and also see specification wording that makes it clear that an empty string should work that way.

&gt; Source/WebCore/html/HTMLElement.cpp:213
&gt; +    } else if (attr-&gt;name().matches(XMLNames::langAttr)) {
&gt; +        mapLanguageAttributeToLocale(attr);

Is using matches instead of == here correct behavior? Should an attribute named xml:lang that is not actually in the XML namespace be respected? I don’t want to land this patch without determining this. I see no test cases covering this since the only test case is XHTML. And no information about why it’s correct to ignore the namespace, citations of say, other browsers’ behavior or a reference to relevant text in a standard or specification.

Also, this code will not correctly handle the case where xml:lang is being removed and we already have a lang attribute. We need a test case that covers that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523930</commentid>
    <comment_count>22</comment_count>
      <attachid>119591</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-19 08:55:42 -0800</bug_when>
    <thetext>Comment on attachment 119591
revised patch

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

&gt;&gt; Source/WebCore/html/HTMLElement.cpp:182
&gt;&gt; +        // Empty &apos;lang&apos; should be treated as &apos;auto&apos;.
&gt; 
&gt; Is it really correct to special case both the lack of an attribute (value of null) and the empty string (value is empty), but not, say, a string that is entirely whitespace, other invalid strings, or the word &quot;auto&quot;? I’d like to see tests covering these cases and also see specification wording that makes it clear that an empty string should work that way.

The rules for xml:lang in HTML are pretty nutty it seems:
http://www.whatwg.org/specs/web-apps/current-work/#attr-xml-lang

it&apos;s &quot;supported&quot;, but only if there is also a matching lang= attribute on the same node... which seems to me to be a backwards way of saying xml:lang is not supported in HTML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524080</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-19 11:51:12 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; The rules for xml:lang in HTML are pretty nutty it seems:
&gt; http://www.whatwg.org/specs/web-apps/current-work/#attr-xml-lang
&gt; 
&gt; it&apos;s &quot;supported&quot;, but only if there is also a matching lang= attribute on the same node... which seems to me to be a backwards way of saying xml:lang is not supported in HTML.

Eric, I think what’s confusing you is that most of those are rules for authors, not web engines.

Turns out the specification is clear. It says: ‘The attribute in no namespace with no prefix and with the literal localname &quot;xml:lang&quot; has no effect on language processing.’

That means this patch is incorrectly. Only the actual xml:lang attribute in the real XML namespace should have an effect, so specifying xml:lang in an HTML document should not have an effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524083</commentid>
    <comment_count>24</comment_count>
      <attachid>119591</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-19 11:52:03 -0800</bug_when>
    <thetext>Comment on attachment 119591
revised patch

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

&gt; Source/WebCore/html/HTMLElement.cpp:175
&gt; +    ASSERT(attr &amp;&amp; (attr-&gt;name() == langAttr || attr-&gt;name().matches(XMLNames::langAttr)));

Having re-read the specification, it’s clear now that this needs to be attr-&gt;name() == XMLNames::langAttr, not matches.

&gt;&gt; Source/WebCore/html/HTMLElement.cpp:213
&gt;&gt; +    } else if (attr-&gt;name().matches(XMLNames::langAttr)) {
&gt;&gt; +        mapLanguageAttributeToLocale(attr);
&gt; 
&gt; Is using matches instead of == here correct behavior? Should an attribute named xml:lang that is not actually in the XML namespace be respected? I don’t want to land this patch without determining this. I see no test cases covering this since the only test case is XHTML. And no information about why it’s correct to ignore the namespace, citations of say, other browsers’ behavior or a reference to relevant text in a standard or specification.
&gt; 
&gt; Also, this code will not correctly handle the case where xml:lang is being removed and we already have a lang attribute. We need a test case that covers that.

Having re-read the specification, it’s clear now that this needs to be attr-&gt;name() == XMLNames::langAttr, not matches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524499</commentid>
    <comment_count>25</comment_count>
      <attachid>119591</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-12-20 02:07:08 -0800</bug_when>
    <thetext>Comment on attachment 119591
revised patch

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

Darin, thank you for the thorough review and comments. I&apos;ll upload a revised patch.

&gt;&gt;&gt; Source/WebCore/html/HTMLElement.cpp:182
&gt;&gt;&gt; +        // Empty &apos;lang&apos; should be treated as &apos;auto&apos;.
&gt;&gt; 
&gt;&gt; Is it really correct to special case both the lack of an attribute (value of null) and the empty string (value is empty), but not, say, a string that is entirely whitespace, other invalid strings, or the word &quot;auto&quot;? I’d like to see tests covering these cases and also see specification wording that makes it clear that an empty string should work that way.
&gt; 
&gt; The rules for xml:lang in HTML are pretty nutty it seems:
&gt; http://www.whatwg.org/specs/web-apps/current-work/#attr-xml-lang
&gt; 
&gt; it&apos;s &quot;supported&quot;, but only if there is also a matching lang= attribute on the same node... which seems to me to be a backwards way of saying xml:lang is not supported in HTML.

The standard says for HTML lang, &quot;Its value must be a valid BCP 47 language tag, or the empty string. Setting the attribute to the empty string indicates that the primary language is unknown.&quot; The XML standard says the same for xml:lang. So I think the empty string the only thing we want to special case.

I&apos;ll upload a new patch with the test cases you mentioned, although I&apos;m not sure what behavior we want for some of them. I thought values should generally be mapped verbatim, but when I tested, invalid strings get mapped single-quoted, e.g., lang=&quot;  &quot; becomes &quot;&apos;  &apos;&quot; in getComputedStyle().webkitLocale, and &quot;][;][[)&quot; becomes &quot;&apos;][;][[)&apos;&quot;. I notice the same quoting happens if I set --webkit-locale to such a value directly in HTML. I suspect it is some thing to do with what are allowable CSS strings; if that&apos;s true it seems like reasonable behavior. If I look at the values in CSSStyleSelector::applyProperty, they don&apos;t have the single-quotes.

Unrecognized language tags like &quot;xyzzy&quot; get mapped to &quot;xyzzy&quot; which is what we want; the specification says such tags &quot;must be treated as an unknown language having the given language tag, distinct from all other languages.&quot;

lang=&quot;auto&quot; and lang=&quot;&quot; both get mapped to the string &quot;auto&quot; in JavaScript, although the values are distinct in CSSStyleSelector::applyProperty (one is the string &quot;auto&quot; and the other is CSSValueAuto). So in the current layout test that just looks at computed style in JavaScript, they would have the same expectation. A better test may be to do something like set per-script fonts for script &quot;auto&quot; and show those are used for lang=&quot;auto&quot; and not for lang=&quot;&quot;, but our per-script font settings don&apos;t support this since they are restricted to known script codes. I&apos;m not sure we can test this properly.

&gt;&gt;&gt; Source/WebCore/html/HTMLElement.cpp:213
&gt;&gt;&gt; +        mapLanguageAttributeToLocale(attr);
&gt;&gt; 
&gt;&gt; Is using matches instead of == here correct behavior? Should an attribute named xml:lang that is not actually in the XML namespace be respected? I don’t want to land this patch without determining this. I see no test cases covering this since the only test case is XHTML. And no information about why it’s correct to ignore the namespace, citations of say, other browsers’ behavior or a reference to relevant text in a standard or specification.
&gt;&gt; 
&gt;&gt; Also, this code will not correctly handle the case where xml:lang is being removed and we already have a lang attribute. We need a test case that covers that.
&gt; 
&gt; Having re-read the specification, it’s clear now that this needs to be attr-&gt;name() == XMLNames::langAttr, not matches.

Maybe I&apos;m misunderstanding. matches does look at the namespace:

bool matches(const QualifiedName&amp; other) const { return m_impl == other.m_impl || (localName() == other.localName() &amp;&amp; namespaceURI() == other.namespaceURI()); }

Using matches, xml:lang is ignored in HTML since the namespace differs from that of XMLNames::lang. But if I use ==, xml:lang is not recognized even in XHTML. It is because xml:lang has prefix &quot;xml&quot; and XMLNames::lang has no prefix, although they have the same localname and namespace.

I&apos;m not sure what is meant by &quot;the case where xml:lang is being removed and we already have a lang attribute&quot;. If it&apos;s something like:

&lt;div lang=&quot;ar&quot;&gt;
  &lt;div xml:lang=&quot;&quot;&gt;

I believe the correct behavior is to map to CSSValueAuto as normal. The spec says &quot;If these attributes are omitted from an element, then the language of this element is the same as the language of its parent element, if any.&quot; which seems to mean lang information should be inherited only if both lang and xml:lang are not present. If that&apos;s correct, the code is doing the correct thing. I&apos;ll also add a test case for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524502</commentid>
    <comment_count>26</comment_count>
      <attachid>120000</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-12-20 02:10:41 -0800</bug_when>
    <thetext>Created attachment 120000
incorporated review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524720</commentid>
    <comment_count>27</comment_count>
      <attachid>120000</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-20 11:45:53 -0800</bug_when>
    <thetext>Comment on attachment 120000
incorporated review comments

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

&gt; Source/WebCore/html/HTMLElement.cpp:211
&gt; +    } else if (attr-&gt;name().matches(XMLNames::langAttr)) {

Which of the test cases fails if you change this from matches to ==? I need to know that to be sure this code is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525054</commentid>
    <comment_count>28</comment_count>
      <attachid>120000</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-12-20 19:19:42 -0800</bug_when>
    <thetext>Comment on attachment 120000
incorporated review comments

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

&gt;&gt; Source/WebCore/html/HTMLElement.cpp:211
&gt;&gt; +    } else if (attr-&gt;name().matches(XMLNames::langAttr)) {
&gt; 
&gt; Which of the test cases fails if you change this from matches to ==? I need to know that to be sure this code is correct.

In lang-mapped-to-webkit-locale.xhtml, all of the test cases with an &quot;xml:lang&quot; (and without a &quot;lang&quot; with the same value) fail. For example:

&lt;div xml:lang=&quot;fr&quot; id=&quot;n1&quot;&gt;
FAIL getLangOfNode(&apos;n1&apos;) should be fr. Was auto.

Full list of failures:
FAIL getLangOfNode(&apos;x1&apos;) should be ja. Was auto.
FAIL getLangOfNode(&apos;x2&apos;) should be ja. Was auto.
FAIL getLangOfNode(&apos;x3&apos;) should be ja. Was auto.
FAIL getLangOfNode(&apos;n1&apos;) should be fr. Was auto.
FAIL getLangOfNode(&apos;n2&apos;) should be fr. Was auto.
FAIL getLangOfNode(&apos;p1&apos;) should be ja. Was auto.
FAIL getLangOfNode(&apos;q3&apos;) should be auto. Was ja.
FAIL getLangOfNode(&apos;q4&apos;) should be ar. Was ja.
FAIL getLangOfNode(&apos;q5&apos;) should be auto. Was ja.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525380</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-21 11:30:24 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; In lang-mapped-to-webkit-locale.xhtml, all of the test cases with an &quot;xml:lang&quot; (and without a &quot;lang&quot; with the same value) fail. For example:
&gt; 
&gt; &lt;div xml:lang=&quot;fr&quot; id=&quot;n1&quot;&gt;
&gt; FAIL getLangOfNode(&apos;n1&apos;) should be fr. Was auto.
&gt; 
&gt; Full list of failures:
&gt; FAIL getLangOfNode(&apos;x1&apos;) should be ja. Was auto.
&gt; FAIL getLangOfNode(&apos;x2&apos;) should be ja. Was auto.
&gt; FAIL getLangOfNode(&apos;x3&apos;) should be ja. Was auto.
&gt; FAIL getLangOfNode(&apos;n1&apos;) should be fr. Was auto.
&gt; FAIL getLangOfNode(&apos;n2&apos;) should be fr. Was auto.
&gt; FAIL getLangOfNode(&apos;p1&apos;) should be ja. Was auto.
&gt; FAIL getLangOfNode(&apos;q3&apos;) should be auto. Was ja.
&gt; FAIL getLangOfNode(&apos;q4&apos;) should be ar. Was ja.
&gt; FAIL getLangOfNode(&apos;q5&apos;) should be auto. Was ja.

The question now is whether that test is correct. Does the test properly set up the xml prefix to correspond to the XML namespace? One way to check is to find another browser that’s known to implement this correctly. Another is to read the specification and find the place where it explains why it’s supposed to already be set up that way without doing anything explicit.

I’ll try to spend some researching this myself later in case no one else has time to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525438</commentid>
    <comment_count>30</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-12-21 12:07:33 -0800</bug_when>
    <thetext>Darin, thank you for the review and getting this move forward. I missed your review comments earlier, but thanks again for the review. 
 
(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; In lang-mapped-to-webkit-locale.xhtml, all of the test cases with an &quot;xml:lang&quot; (and without a &quot;lang&quot; with the same value) fail. For example:
&gt; &gt; 
&gt; &gt; &lt;div xml:lang=&quot;fr&quot; id=&quot;n1&quot;&gt;
&gt; &gt; FAIL getLangOfNode(&apos;n1&apos;) should be fr. Was auto.
&gt; &gt; 
&gt; &gt; Full list of failures:

The following 3 failures are from this line. It&apos;s about xml:lang taking a higher priority than lang. 

&lt;div xml:lang=&quot;ja&quot; lang=&quot;en&quot; id=&quot;x1&quot;&gt;&lt;div id=&quot;x2&quot;&gt;&lt;div id=&quot;x3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;

&gt; &gt; FAIL getLangOfNode(&apos;x1&apos;) should be ja. Was auto.
&gt; &gt; FAIL getLangOfNode(&apos;x2&apos;) should be ja. Was auto.
&gt; &gt; FAIL getLangOfNode(&apos;x3&apos;) should be ja. Was auto.

The following two are about &apos;xml:lang&apos; in absence of &apos;lang&apos; : 
&lt;div xml:lang=&quot;fr&quot; id=&quot;n1&quot;&gt;&lt;div id=&quot;n2&quot;&gt;&lt;div lang=&quot;sv&quot; id=&quot;n3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;

&gt; &gt; FAIL getLangOfNode(&apos;n1&apos;) should be fr. Was auto.
&gt; &gt; FAIL getLangOfNode(&apos;n2&apos;) should be fr. Was auto.

The following is the same as before: 
&lt;div xml:lang=&quot;ja&quot; id=&quot;p1&quot;&gt;&lt;div lang=&quot;&quot; id=&quot;p2&quot;&gt;&lt;/div&gt;&lt;/div&gt;

&gt; &gt; FAIL getLangOfNode(&apos;p1&apos;) should be ja. Was auto.

The following 3 also failed when &apos;xml:lang&apos; is present with &apos;lang&apos; absent: 

&lt;div lang=&quot;ja&quot; id=&quot;q1&quot;&gt;
  &lt;div lang=&quot;&quot; id=&quot;q2&quot;&gt;&lt;/div&gt;
 &lt;div xml:lang=&quot;&quot; id=&quot;q3&quot;&gt;&lt;/div&gt;
 &lt;div xml:lang=&quot;ar&quot; id=&quot;q4&quot;&gt;&lt;div xml:lang=&quot;&quot; id=&quot;q5&quot;&gt;&lt;/div&gt;&lt;/div&gt;

&gt; &gt; FAIL getLangOfNode(&apos;q3&apos;) should be auto. Was ja.
&gt; &gt; FAIL getLangOfNode(&apos;q4&apos;) should be ar. Was ja.
&gt; &gt; FAIL getLangOfNode(&apos;q5&apos;) should be auto. Was ja.


&gt; The question now is whether that test is correct. Does the test properly set up the xml prefix to correspond to the XML namespace? One way to check is to find another browser that’s known to implement this correctly. 

I&apos;ll try that in Firefox (&apos;known to implement correctly&apos; is not 100% certain). Firefox does implement lang/xml:lang-based font selection. 

Reading http://www.w3.org/International/questions/qa-css-lang.en.php (not a spec) about xml:lang in CSS led me to think that we might need some more tweaking here. 


&gt; Another is to read the specification and find the place where it explains why it’s supposed to already be set up that way without doing anything explicit.
&gt; 
&gt; I’ll try to spend some researching this myself later in case no one else has time to.

Thank you for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526006</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-21 22:10:22 -0800</bug_when>
    <thetext>The bug causing trouble for the xml namespace and prefix in xml:lang lies in the XML parser. It does not properly implement the XML namespaces specification. I filed bug 75066, describing what needs to be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526008</commentid>
    <comment_count>32</comment_count>
      <attachid>120000</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-21 22:11:36 -0800</bug_when>
    <thetext>Comment on attachment 120000
incorporated review comments

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

&gt;&gt;&gt; Source/WebCore/html/HTMLElement.cpp:211
&gt;&gt;&gt; +    } else if (attr-&gt;name().matches(XMLNames::langAttr)) {
&gt;&gt; 
&gt;&gt; Which of the test cases fails if you change this from matches to ==? I need to know that to be sure this code is correct.
&gt; 
&gt; In lang-mapped-to-webkit-locale.xhtml, all of the test cases with an &quot;xml:lang&quot; (and without a &quot;lang&quot; with the same value) fail. For example:
&gt; 
&gt; &lt;div xml:lang=&quot;fr&quot; id=&quot;n1&quot;&gt;
&gt; FAIL getLangOfNode(&apos;n1&apos;) should be fr. Was auto.
&gt; 
&gt; Full list of failures:
&gt; FAIL getLangOfNode(&apos;x1&apos;) should be ja. Was auto.
&gt; FAIL getLangOfNode(&apos;x2&apos;) should be ja. Was auto.
&gt; FAIL getLangOfNode(&apos;x3&apos;) should be ja. Was auto.
&gt; FAIL getLangOfNode(&apos;n1&apos;) should be fr. Was auto.
&gt; FAIL getLangOfNode(&apos;n2&apos;) should be fr. Was auto.
&gt; FAIL getLangOfNode(&apos;p1&apos;) should be ja. Was auto.
&gt; FAIL getLangOfNode(&apos;q3&apos;) should be auto. Was ja.
&gt; FAIL getLangOfNode(&apos;q4&apos;) should be ar. Was ja.
&gt; FAIL getLangOfNode(&apos;q5&apos;) should be auto. Was ja.

The use of matches here instead of == is indeed wrong or at least unneeded, and since == is more efficient we should not use matches.

The use of matches is a workaround for bug 75066, which should be fixed instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526048</commentid>
    <comment_count>33</comment_count>
      <attachid>120000</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-21 23:28:01 -0800</bug_when>
    <thetext>Comment on attachment 120000
incorporated review comments

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

&gt;&gt;&gt;&gt; Source/WebCore/html/HTMLElement.cpp:211
&gt;&gt;&gt;&gt; +    } else if (attr-&gt;name().matches(XMLNames::langAttr)) {
&gt;&gt;&gt; 
&gt;&gt;&gt; Which of the test cases fails if you change this from matches to ==? I need to know that to be sure this code is correct.
&gt;&gt; 
&gt;&gt; In lang-mapped-to-webkit-locale.xhtml, all of the test cases with an &quot;xml:lang&quot; (and without a &quot;lang&quot; with the same value) fail. For example:
&gt;&gt; 
&gt;&gt; &lt;div xml:lang=&quot;fr&quot; id=&quot;n1&quot;&gt;
&gt;&gt; FAIL getLangOfNode(&apos;n1&apos;) should be fr. Was auto.
&gt;&gt; 
&gt;&gt; Full list of failures:
&gt;&gt; FAIL getLangOfNode(&apos;x1&apos;) should be ja. Was auto.
&gt;&gt; FAIL getLangOfNode(&apos;x2&apos;) should be ja. Was auto.
&gt;&gt; FAIL getLangOfNode(&apos;x3&apos;) should be ja. Was auto.
&gt;&gt; FAIL getLangOfNode(&apos;n1&apos;) should be fr. Was auto.
&gt;&gt; FAIL getLangOfNode(&apos;n2&apos;) should be fr. Was auto.
&gt;&gt; FAIL getLangOfNode(&apos;p1&apos;) should be ja. Was auto.
&gt;&gt; FAIL getLangOfNode(&apos;q3&apos;) should be auto. Was ja.
&gt;&gt; FAIL getLangOfNode(&apos;q4&apos;) should be ar. Was ja.
&gt;&gt; FAIL getLangOfNode(&apos;q5&apos;) should be auto. Was ja.
&gt; 
&gt; The use of matches here instead of == is indeed wrong or at least unneeded, and since == is more efficient we should not use matches.
&gt; 
&gt; The use of matches is a workaround for bug 75066, which should be fixed instead.

I was wrong again. The use of matches is correct. We could use &quot;==&quot; because of the special rules about the xml prefix, but we don’t need to do that optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526339</commentid>
    <comment_count>34</comment_count>
      <attachid>120000</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-22 10:14:51 -0800</bug_when>
    <thetext>Comment on attachment 120000
incorporated review comments

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

The patch doesn&apos;t have any tests for dynamic attribute changes, especially for attributes that cannot be inserted by the parser. As commented below, behavior in that case is likely wrong.

It would be also good to investigate what happens in svg-in-html parsing mode.

&gt; Source/WebCore/html/HTMLElement.cpp:213
&gt;      } else if (attr-&gt;name() == langAttr) {

This looks like it would match an attribute created with document.createAttributeNS(&quot;foobar&quot;, &quot;fb:lang&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526345</commentid>
    <comment_count>35</comment_count>
      <attachid>120000</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-22 10:26:31 -0800</bug_when>
    <thetext>Comment on attachment 120000
incorporated review comments

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

&gt;&gt; Source/WebCore/html/HTMLElement.cpp:213
&gt;&gt;      } else if (attr-&gt;name() == langAttr) {
&gt; 
&gt; This looks like it would match an attribute created with document.createAttributeNS(&quot;foobar&quot;, &quot;fb:lang&quot;).

No, it wouldn’t. attr-&gt;name() returns a QualifiedName and the == operator compares all three things: the lack of a prefix, the local name &quot;lang&quot; and the lack of a namespace URI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526346</commentid>
    <comment_count>36</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-22 10:27:08 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; The patch doesn&apos;t have any tests for dynamic attribute changes, especially for attributes that cannot be inserted by the parser.

That’s a good point. We do need more tests to cover those. That’s the hard part of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526753</commentid>
    <comment_count>37</comment_count>
      <attachid>120000</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-22 23:29:48 -0800</bug_when>
    <thetext>Comment on attachment 120000
incorporated review comments

Clearing flags on attachment: 120000

Committed r103608: &lt;http://trac.webkit.org/changeset/103608&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526754</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-22 23:29:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537482</commentid>
    <comment_count>39</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-17 17:26:48 -0800</bug_when>
    <thetext>As described in bug 76492, this made setting a lang attribute about 5X slower than it was before, even if locale is not used at all in the document’s styling.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106311</attachid>
            <date>2011-09-04 23:52:34 -0700</date>
            <delta_ts>2011-09-06 10:15:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>67586.patch.1</filename>
            <type>text/plain</type>
            <size>6760</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0Mzc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMDEgIEp1bmdzaGlr
IFNoaW4gIDxqc2hpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgaHR0cDovL3dlYmtpdC5vcmcv
Yi82NzU4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1hcCAnbGFuZycgYW5kICd4bWw6bGFuZycgdG8gLXdlYmtpdC1sb2NhbGUgZm9yICdsYW5nJyBh
bmQgJ3htbDpsYW5nJworCXRvIGJlIHVzZWQgaW4gZm9udGZhbGxiYWNrIHZpYSAnLXdlYmtpdC1s
b2NhbGUnLiAKKwkoc2VlIHRoZSBwYXRjaCBmb3IgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDg3NCAp
CisJV2hlbiAneG1sOmxhbmcnIGFsb25lIGlzIHNwZWNpZmllZCwgaXQncyBub3QgbWFwcGVkIHRv
CisJJy13ZWJraXQtbG9jYWxlJywgeWV0LiBUaGF0IGhhcyB0byBiZSBmaXhlZCBsYXRlci4gCisK
KyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUueGh0
bWwKKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgTWFwICdsYW5nJyBh
bmQgJ3htbDpsYW5nJyB0byAtd2Via2l0LWxvY2FsZS4KKwogMjAxMS0wOS0wMSAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBnb29nbGUuY29tPgogCiAgICAgICAgIEdlbmVyYXRlIGEgRmlsZVJlYWRl
ciBjb25zdHJ1Y3RvciBvZiBWOCB1c2luZyB0aGUgSURMICdDb25zdHJ1Y3RvcicgZXh0ZW5kZWQg
YXR0cmlidXRlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24g
OTM5ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
VGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlhNTE5hbWVzLmgi
CiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTE3Myw3ICsxNzQsMjYgQEAgdm9pZCBIVE1M
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQQogICAgICAgICAgICAgc2V0VGFiSW5kZXhF
eHBsaWNpdGx5KG1heChzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+
OjptaW4oKSksIG1pbih0YWJpbmRleCwgc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om51bWVyaWNfbGlt
aXRzPHNob3J0Pjo6bWF4KCkpKSkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gbGFuZ0F0dHIpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgICAg
ICAvLyBGSVhNRTogdGhpcyBkb2VzIG5vdCB3b3JrIHdoZW4geG1sOmxhbmcgaXMgcHJlc2VudCB3
aXRob3V0IGxhbmcuCisgICAgICAgIFN0cmluZyB2YWx1ZTsKKyAgICAgICAgLy8geG1sOmxhbmcg
aGFzIGEgaGlnaGVyIHByaW9yaXR5IHRoYW4gbGFuZy4KKyAgICAgICAgaWYgKGhhc0F0dHJpYnV0
ZShYTUxOYW1lczo6bGFuZ0F0dHIpKQorICAgICAgICAgICAgdmFsdWUgPSBnZXRBdHRyaWJ1dGUo
WE1MTmFtZXM6OmxhbmdBdHRyKTsKKyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHZhbHVlID0g
YXR0ci0+dmFsdWUoKTsKKworICAgICAgICBpZiAodmFsdWUubGVuZ3RoKCkpIHsKKyAgICAgICAg
ICAgIC8vIEhhdmUgdG8gZW5jbG9zZSB3aXRoIGEgcGFpciBvZiBxdW90YXRpb24gbWFya3MgdG8g
Z2V0IHRoZSAKKyAgICAgICAgICAgIC8vIGxvY2FsZSBpZCB0cmVhdGVkIGFzIGEgc3RyaW5nIGlu
c3RlYWQgb2YgYXMgYSBDU1Mga2V5d29yZC4KKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBkb3VibGVRdW90ZUNoYXIsICgiXCIiKSk7CisgICAgICAgICAgICB2YWx1ZS5p
bnNlcnQoZG91YmxlUXVvdGVDaGFyLCAwKTsKKyAgICAgICAgICAgIHZhbHVlLmFwcGVuZChkb3Vi
bGVRdW90ZUNoYXIpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVy
dHlXZWJraXRMb2NhbGUsIHZhbHVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8v
IGVtcHR5ICdsYW5nJyBzaG91bGQgYmUgdHJlYXRlZCBhcyAnYXV0bycuCisgICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZSwgQ1NTVmFsdWVBdXRv
KTsKKyAgICAgICAgfQorICAgICAgICAvL3NldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkaXJBdHRyKSB7CiAgICAgICAgIGlmICghZXF1YWxJZ25v
cmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImF1dG8iKSkKICAgICAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KGF0dHIsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDk0Mzc3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDktMDEgIEp1bmdzaGlrIFNoaW4gIDxqc2hpbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgaHR0cDovL3dlYmtpZy5vcmcvYi82NzU4NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hcCAnbGFuZycgYW5kICd4
bWw6bGFuZycgdG8gLXdlYmtpdC1sb2NhbGUgZm9yICdsYW5nJyBhbmQgJ3htbDpsYW5nJworCXRv
IGJlIHVzZWQgaW4gZm9udCBmYWxsYmFjayB2aWEgJy13ZWJraXQtbG9jYWxlJy4gCisJKHNlZSB0
aGUgcGF0Y2ggZm9yIGh0dHA6Ly93ZWJraXQub3JnL2IvMTA4NzQgKQorCVdoZW4gJ3htbDpsYW5n
JyBhbG9uZSBpcyBzcGVjaWZpZWQsIGl0J3Mgbm90IG1hcHBlZCB0bworCSctd2Via2l0LWxvY2Fs
ZScsIHlldC4gVGhhdCBoYXMgdG8gYmUgZml4ZWQgbGF0ZXIuIAorCisgICAgICAgICogZmFzdC90
ZXh0L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0LWxvY2FsZS54aHRtbDogQWRk
ZWQuCisKIDIwMTEtMDktMDEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBleHBlY3RhdGlvbiBsaW5lcyBmb3IgdGVzdHMg
dGhhdCBwYXNzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Vi
a2l0LWxvY2FsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACitUaGlzIGlzIGEgdGVz
dCBmb3IgYnVnIDE2ODAxLiBUbyBzcGVlZCB1cCB0aGUgcmVzb2x1dGlvbiBvZiAnbGFuZycgb2Yg
YSBub2RlLCAnbGFuZy94bWw6bGFuZycgaXMgbWFwcGVkIHRvIC13ZWJraXQtbG9jYWxlIHdob3Nl
IHZhbHVlIGlzIHJldHJpdmVkIHdoZW4gJ2xhbmcnIGlzIGFza2VkIGZvci4KKworUEFTUyBnZXRM
YW5nT2ZOb2RlKCd4MScpIGlzICJqYSIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgneDInKSBpcyAiamEi
CitQQVNTIGdldExhbmdPZk5vZGUoJ3gzJykgaXMgImphIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCds
MScpIGlzICJ6aCIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgnbDInKSBpcyAiemgiCitQQVNTIGdldExh
bmdPZk5vZGUoJ2wzJykgaXMgInpoIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdtMScpIGlzICJrbyIK
K1BBU1MgZ2V0TGFuZ09mTm9kZSgnbTInKSBpcyAiZnIiCitQQVNTIGdldExhbmdPZk5vZGUoJ20z
JykgaXMgImZyIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCduMScpIGlzICJmciIKK1BBU1MgZ2V0TGFu
Z09mTm9kZSgnbjInKSBpcyAiZnIiCitQQVNTIGdldExhbmdPZk5vZGUoJ24zJykgaXMgInN2Igor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvdGV4dC9sYW5nLW1hcHBlZC10by13ZWJr
aXQtbG9jYWxlLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAg
ICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0
LWxvY2FsZS54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1t
YXBwZWQtdG8td2Via2l0LWxvY2FsZS54aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9sYW5nLW1hcHBlZC10by13ZWJraXQtbG9jYWxlLnhodG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM2IEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaXMgYSB0
ZXN0IGZvciA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy9iLzE2ODAxIj5idWcgMTY4MDE8L2E+
LiBUbyBzcGVlZCB1cCB0aGUgcmVzb2x1dGlvbiBvZiAnbGFuZycgb2YgYSBub2RlLCAnbGFuZy94
bWw6bGFuZycgaXMgbWFwcGVkIHRvIC13ZWJraXQtbG9jYWxlIHdob3NlIHZhbHVlIGlzIHJldHJp
dmVkIHdoZW4gJ2xhbmcnIGlzIGFza2VkIGZvci48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxkaXYgeG1sOmxhbmc9ImphIiBsYW5nPSJlbiIgaWQ9IngxIj48ZGl2IGlkPSJ4MiI+PGRp
diBpZD0ieDMiPjwvZGl2PjwvZGl2PjwvZGl2PgorPGRpdiBsYW5nPSJ6aCIgaWQ9ImwxIj48ZGl2
IGlkPSJsMiI+PGRpdiBpZD0ibDMiPjwvZGl2PjwvZGl2PjwvZGl2PgorPGRpdiBsYW5nPSJrbyIg
aWQ9Im0xIj48ZGl2IGxhbmc9ImZyIiB4bWw6bGFuZz0iZnIiIGlkPSJtMiI+PGRpdiBpZD0ibTMi
PjwvZGl2PjwvZGl2PjwvZGl2PgorPGRpdiB4bWw6bGFuZz0iZnIiIGxhbmc9ImZyIiBpZD0ibjEi
PjxkaXYgaWQ9Im4yIj48ZGl2IGxhbmc9InN2IiBpZD0ibjMiPjwvZGl2PjwvZGl2PjwvZGl2Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGdldExhbmdPZk5vZGUobikgeworICAgIGUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChuKTsKKyAgICByZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSku
d2Via2l0TG9jYWxlOworfQorc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCd4
MScpIiwgImphIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ3gyJyki
LCAiamEiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgneDMnKSIsICJq
YSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCdsMScpIiwgInpoIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ2wyJykiLCAiemgiKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgnbDMnKSIsICJ6aCIpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCdtMScpIiwgImtvIik7CitzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ20yJykiLCAiZnIiKTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygiZ2V0TGFuZ09mTm9kZSgnbTMnKSIsICJmciIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJnZXRMYW5nT2ZOb2RlKCduMScpIiwgImZyIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImdldExhbmdPZk5vZGUoJ24yJykiLCAiZnIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0
TGFuZ09mTm9kZSgnbjMnKSIsICJzdiIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106437</attachid>
            <date>2011-09-06 10:15:53 -0700</date>
            <delta_ts>2011-09-07 14:50:21 -0700</delta_ts>
            <desc>patch updated</desc>
            <filename>67586.patch.1a</filename>
            <type>text/plain</type>
            <size>6814</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0Mzc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMDEgIEp1bmdzaGlr
IFNoaW4gIDxqc2hpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgaHR0cDovL3dlYmtpdC5vcmcv
Yi82NzU4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1hcCAnbGFuZycgYW5kICd4bWw6bGFuZycgdG8gLXdlYmtpdC1sb2NhbGUgZm9yICdsYW5nJyBh
bmQgJ3htbDpsYW5nJworICAgICAgICB0byBiZSB1c2VkIGluIGZvbnRmYWxsYmFjayB2aWEgJy13
ZWJraXQtbG9jYWxlJy4gCisgICAgICAgIChzZWUgdGhlIHBhdGNoIGZvciBodHRwOi8vd2Via2l0
Lm9yZy9iLzEwODc0ICkKKyAgICAgICAgV2hlbiAneG1sOmxhbmcnIGFsb25lIGlzIHNwZWNpZmll
ZCwgaXQncyBub3QgbWFwcGVkIHRvCisgICAgICAgICctd2Via2l0LWxvY2FsZScsIHlldC4gVGhh
dCBoYXMgdG8gYmUgZml4ZWQgbGF0ZXIuIAorCisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC9sYW5n
LW1hcHBlZC10by13ZWJraXQtbG9jYWxlLnhodG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZSk6CisgICAgICAgIE1hcCAnbGFuZycgYW5kICd4bWw6bGFuZycgdG8gLXdlYmtpdC1sb2Nh
bGUuCisKIDIwMTEtMDktMDEgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBHZW5lcmF0ZSBhIEZpbGVSZWFkZXIgY29uc3RydWN0b3Igb2YgVjggdXNpbmcgdGhl
IElETCAnQ29uc3RydWN0b3InIGV4dGVuZGVkIGF0dHJpYnV0ZQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDkzOTg1KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBA
IC0xNzMsNyArMTc0LDI2IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KEEKICAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShtYXgoc3RhdGljX2Nhc3Q8aW50
PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWluKCkpLCBtaW4odGFiaW5kZXgsIHN0YXRp
Y19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czxzaG9ydD46Om1heCgpKSkpKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGxhbmdBdHRyKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3Qgd29y
ayB3aGVuIHhtbDpsYW5nIGlzIHByZXNlbnQgd2l0aG91dCBsYW5nLgorICAgICAgICBTdHJpbmcg
dmFsdWU7CisgICAgICAgIC8vIHhtbDpsYW5nIGhhcyBhIGhpZ2hlciBwcmlvcml0eSB0aGFuIGxh
bmcuCisgICAgICAgIGlmIChoYXNBdHRyaWJ1dGUoWE1MTmFtZXM6OmxhbmdBdHRyKSkKKyAgICAg
ICAgICAgIHZhbHVlID0gZ2V0QXR0cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0cik7CisgICAgICAg
IGVsc2UgCisgICAgICAgICAgICB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CisKKyAgICAgICAgaWYg
KHZhbHVlLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAvLyBIYXZlIHRvIGVuY2xvc2Ugd2l0aCBh
IHBhaXIgb2YgcXVvdGF0aW9uIG1hcmtzIHRvIGdldCB0aGUgCisgICAgICAgICAgICAvLyBsb2Nh
bGUgaWQgdHJlYXRlZCBhcyBhIHN0cmluZyBpbnN0ZWFkIG9mIGFzIGEgQ1NTIGtleXdvcmQuCisg
ICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG91YmxlUXVvdGVDaGFyLCAo
IlwiIikpOworICAgICAgICAgICAgdmFsdWUuaW5zZXJ0KGRvdWJsZVF1b3RlQ2hhciwgMCk7Cisg
ICAgICAgICAgICB2YWx1ZS5hcHBlbmQoZG91YmxlUXVvdGVDaGFyKTsKKyAgICAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlLCB2YWx1ZSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBlbXB0eSAnbGFuZycgc2hvdWxkIGJlIHRyZWF0
ZWQgYXMgJ2F1dG8nLgorICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVy
dHlXZWJraXRMb2NhbGUsIENTU1ZhbHVlQXV0byk7CisgICAgICAgIH0KKyAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpckF0dHIp
IHsKICAgICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYXV0byIp
KQogICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlEaXJlY3Rpb24s
IGF0dHItPnZhbHVlKCkpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTQzNzcpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wOS0wMSAg
SnVuZ3NoaWsgU2hpbiAgPGpzaGluQGNocm9taXVtLm9yZz4KKworICAgICAgICBodHRwOi8vd2Vi
a2lnLm9yZy9iLzY3NTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFwICdsYW5nJyBhbmQgJ3htbDpsYW5nJyB0byAtd2Via2l0LWxvY2FsZSBmb3Ig
J2xhbmcnIGFuZCAneG1sOmxhbmcnCisgICAgICAgIHRvIGJlIHVzZWQgaW4gZm9udCBmYWxsYmFj
ayB2aWEgJy13ZWJraXQtbG9jYWxlJy4gCisgICAgICAgIChzZWUgdGhlIHBhdGNoIGZvciBodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwODc0ICkKKyAgICAgICAgV2hlbiAneG1sOmxhbmcnIGFsb25lIGlz
IHNwZWNpZmllZCwgaXQncyBub3QgbWFwcGVkIHRvCisgICAgICAgICctd2Via2l0LWxvY2FsZScs
IHlldC4gVGhhdCBoYXMgdG8gYmUgZml4ZWQgbGF0ZXIuIAorCisgICAgICAgICogZmFzdC90ZXh0
L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0LWxvY2FsZS54aHRtbDogQWRkZWQu
CisKIDIwMTEtMDktMDEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBleHBlY3RhdGlvbiBsaW5lcyBmb3IgdGVzdHMgdGhh
dCBwYXNzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0
LWxvY2FsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACitUaGlzIGlzIGEgdGVzdCBm
b3IgYnVnIDE2ODAxLiBUbyBzcGVlZCB1cCB0aGUgcmVzb2x1dGlvbiBvZiAnbGFuZycgb2YgYSBu
b2RlLCAnbGFuZy94bWw6bGFuZycgaXMgbWFwcGVkIHRvIC13ZWJraXQtbG9jYWxlIHdob3NlIHZh
bHVlIGlzIHJldHJpdmVkIHdoZW4gJ2xhbmcnIGlzIGFza2VkIGZvci4KKworUEFTUyBnZXRMYW5n
T2ZOb2RlKCd4MScpIGlzICJqYSIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgneDInKSBpcyAiamEiCitQ
QVNTIGdldExhbmdPZk5vZGUoJ3gzJykgaXMgImphIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdsMScp
IGlzICJ6aCIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgnbDInKSBpcyAiemgiCitQQVNTIGdldExhbmdP
Zk5vZGUoJ2wzJykgaXMgInpoIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdtMScpIGlzICJrbyIKK1BB
U1MgZ2V0TGFuZ09mTm9kZSgnbTInKSBpcyAiZnIiCitQQVNTIGdldExhbmdPZk5vZGUoJ20zJykg
aXMgImZyIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCduMScpIGlzICJmciIKK1BBU1MgZ2V0TGFuZ09m
Tm9kZSgnbjInKSBpcyAiZnIiCitQQVNTIGdldExhbmdPZk5vZGUoJ24zJykgaXMgInN2IgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5
IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvdGV4dC9sYW5nLW1hcHBlZC10by13ZWJraXQt
bG9jYWxlLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsg
TEYKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0LWxv
Y2FsZS54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBw
ZWQtdG8td2Via2l0LWxvY2FsZS54aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvdGV4dC9sYW5nLW1hcHBlZC10by13ZWJraXQtbG9jYWxlLnhodG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM2IEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCI+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaXMgYSB0ZXN0
IGZvciA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy9iLzE2ODAxIj5idWcgMTY4MDE8L2E+LiBU
byBzcGVlZCB1cCB0aGUgcmVzb2x1dGlvbiBvZiAnbGFuZycgb2YgYSBub2RlLCAnbGFuZy94bWw6
bGFuZycgaXMgbWFwcGVkIHRvIC13ZWJraXQtbG9jYWxlIHdob3NlIHZhbHVlIGlzIHJldHJpdmVk
IHdoZW4gJ2xhbmcnIGlzIGFza2VkIGZvci48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxkaXYgeG1sOmxhbmc9ImphIiBsYW5nPSJlbiIgaWQ9IngxIj48ZGl2IGlkPSJ4MiI+PGRpdiBp
ZD0ieDMiPjwvZGl2PjwvZGl2PjwvZGl2PgorPGRpdiBsYW5nPSJ6aCIgaWQ9ImwxIj48ZGl2IGlk
PSJsMiI+PGRpdiBpZD0ibDMiPjwvZGl2PjwvZGl2PjwvZGl2PgorPGRpdiBsYW5nPSJrbyIgaWQ9
Im0xIj48ZGl2IGxhbmc9ImZyIiB4bWw6bGFuZz0iZnIiIGlkPSJtMiI+PGRpdiBpZD0ibTMiPjwv
ZGl2PjwvZGl2PjwvZGl2PgorPGRpdiB4bWw6bGFuZz0iZnIiIGxhbmc9ImZyIiBpZD0ibjEiPjxk
aXYgaWQ9Im4yIj48ZGl2IGxhbmc9InN2IiBpZD0ibjMiPjwvZGl2PjwvZGl2PjwvZGl2PgorPHNj
cmlwdD4KK2Z1bmN0aW9uIGdldExhbmdPZk5vZGUobikgeworICAgIGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChuKTsKKyAgICByZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkud2Vi
a2l0TG9jYWxlOworfQorc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCd4MScp
IiwgImphIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ3gyJykiLCAi
amEiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgneDMnKSIsICJqYSIp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCdsMScpIiwgInpoIik7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ2wyJykiLCAiemgiKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgnbDMnKSIsICJ6aCIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCdtMScpIiwgImtvIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ20yJykiLCAiZnIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiZ2V0TGFuZ09mTm9kZSgnbTMnKSIsICJmciIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJnZXRMYW5nT2ZOb2RlKCduMScpIiwgImZyIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdl
dExhbmdPZk5vZGUoJ24yJykiLCAiZnIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFu
Z09mTm9kZSgnbjMnKSIsICJzdiIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>
<flag name="commit-queue"
          id="102870"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106645</attachid>
            <date>2011-09-07 14:50:21 -0700</date>
            <delta_ts>2011-09-08 10:16:28 -0700</delta_ts>
            <desc>same as the previous </desc>
            <filename>67586.patch.1a</filename>
            <type>text/plain</type>
            <size>6814</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0Mzc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMDEgIEp1bmdzaGlr
IFNoaW4gIDxqc2hpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgaHR0cDovL3dlYmtpdC5vcmcv
Yi82NzU4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1hcCAnbGFuZycgYW5kICd4bWw6bGFuZycgdG8gLXdlYmtpdC1sb2NhbGUgZm9yICdsYW5nJyBh
bmQgJ3htbDpsYW5nJworICAgICAgICB0byBiZSB1c2VkIGluIGZvbnRmYWxsYmFjayB2aWEgJy13
ZWJraXQtbG9jYWxlJy4gCisgICAgICAgIChzZWUgdGhlIHBhdGNoIGZvciBodHRwOi8vd2Via2l0
Lm9yZy9iLzEwODc0ICkKKyAgICAgICAgV2hlbiAneG1sOmxhbmcnIGFsb25lIGlzIHNwZWNpZmll
ZCwgaXQncyBub3QgbWFwcGVkIHRvCisgICAgICAgICctd2Via2l0LWxvY2FsZScsIHlldC4gVGhh
dCBoYXMgdG8gYmUgZml4ZWQgbGF0ZXIuIAorCisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC9sYW5n
LW1hcHBlZC10by13ZWJraXQtbG9jYWxlLnhodG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZSk6CisgICAgICAgIE1hcCAnbGFuZycgYW5kICd4bWw6bGFuZycgdG8gLXdlYmtpdC1sb2Nh
bGUuCisKIDIwMTEtMDktMDEgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBHZW5lcmF0ZSBhIEZpbGVSZWFkZXIgY29uc3RydWN0b3Igb2YgVjggdXNpbmcgdGhl
IElETCAnQ29uc3RydWN0b3InIGV4dGVuZGVkIGF0dHJpYnV0ZQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDkzOTg1KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBA
IC0xNzMsNyArMTc0LDI2IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KEEKICAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShtYXgoc3RhdGljX2Nhc3Q8aW50
PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWluKCkpLCBtaW4odGFiaW5kZXgsIHN0YXRp
Y19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czxzaG9ydD46Om1heCgpKSkpKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGxhbmdBdHRyKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3Qgd29y
ayB3aGVuIHhtbDpsYW5nIGlzIHByZXNlbnQgd2l0aG91dCBsYW5nLgorICAgICAgICBTdHJpbmcg
dmFsdWU7CisgICAgICAgIC8vIHhtbDpsYW5nIGhhcyBhIGhpZ2hlciBwcmlvcml0eSB0aGFuIGxh
bmcuCisgICAgICAgIGlmIChoYXNBdHRyaWJ1dGUoWE1MTmFtZXM6OmxhbmdBdHRyKSkKKyAgICAg
ICAgICAgIHZhbHVlID0gZ2V0QXR0cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0cik7CisgICAgICAg
IGVsc2UgCisgICAgICAgICAgICB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CisKKyAgICAgICAgaWYg
KHZhbHVlLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAvLyBIYXZlIHRvIGVuY2xvc2Ugd2l0aCBh
IHBhaXIgb2YgcXVvdGF0aW9uIG1hcmtzIHRvIGdldCB0aGUgCisgICAgICAgICAgICAvLyBsb2Nh
bGUgaWQgdHJlYXRlZCBhcyBhIHN0cmluZyBpbnN0ZWFkIG9mIGFzIGEgQ1NTIGtleXdvcmQuCisg
ICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG91YmxlUXVvdGVDaGFyLCAo
IlwiIikpOworICAgICAgICAgICAgdmFsdWUuaW5zZXJ0KGRvdWJsZVF1b3RlQ2hhciwgMCk7Cisg
ICAgICAgICAgICB2YWx1ZS5hcHBlbmQoZG91YmxlUXVvdGVDaGFyKTsKKyAgICAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlLCB2YWx1ZSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBlbXB0eSAnbGFuZycgc2hvdWxkIGJlIHRyZWF0
ZWQgYXMgJ2F1dG8nLgorICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVy
dHlXZWJraXRMb2NhbGUsIENTU1ZhbHVlQXV0byk7CisgICAgICAgIH0KKyAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpckF0dHIp
IHsKICAgICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYXV0byIp
KQogICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlEaXJlY3Rpb24s
IGF0dHItPnZhbHVlKCkpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTQzNzcpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wOS0wMSAg
SnVuZ3NoaWsgU2hpbiAgPGpzaGluQGNocm9taXVtLm9yZz4KKworICAgICAgICBodHRwOi8vd2Vi
a2lnLm9yZy9iLzY3NTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFwICdsYW5nJyBhbmQgJ3htbDpsYW5nJyB0byAtd2Via2l0LWxvY2FsZSBmb3Ig
J2xhbmcnIGFuZCAneG1sOmxhbmcnCisgICAgICAgIHRvIGJlIHVzZWQgaW4gZm9udCBmYWxsYmFj
ayB2aWEgJy13ZWJraXQtbG9jYWxlJy4gCisgICAgICAgIChzZWUgdGhlIHBhdGNoIGZvciBodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwODc0ICkKKyAgICAgICAgV2hlbiAneG1sOmxhbmcnIGFsb25lIGlz
IHNwZWNpZmllZCwgaXQncyBub3QgbWFwcGVkIHRvCisgICAgICAgICctd2Via2l0LWxvY2FsZScs
IHlldC4gVGhhdCBoYXMgdG8gYmUgZml4ZWQgbGF0ZXIuIAorCisgICAgICAgICogZmFzdC90ZXh0
L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0LWxvY2FsZS54aHRtbDogQWRkZWQu
CisKIDIwMTEtMDktMDEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBleHBlY3RhdGlvbiBsaW5lcyBmb3IgdGVzdHMgdGhh
dCBwYXNzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0
LWxvY2FsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACitUaGlzIGlzIGEgdGVzdCBm
b3IgYnVnIDE2ODAxLiBUbyBzcGVlZCB1cCB0aGUgcmVzb2x1dGlvbiBvZiAnbGFuZycgb2YgYSBu
b2RlLCAnbGFuZy94bWw6bGFuZycgaXMgbWFwcGVkIHRvIC13ZWJraXQtbG9jYWxlIHdob3NlIHZh
bHVlIGlzIHJldHJpdmVkIHdoZW4gJ2xhbmcnIGlzIGFza2VkIGZvci4KKworUEFTUyBnZXRMYW5n
T2ZOb2RlKCd4MScpIGlzICJqYSIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgneDInKSBpcyAiamEiCitQ
QVNTIGdldExhbmdPZk5vZGUoJ3gzJykgaXMgImphIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdsMScp
IGlzICJ6aCIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgnbDInKSBpcyAiemgiCitQQVNTIGdldExhbmdP
Zk5vZGUoJ2wzJykgaXMgInpoIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdtMScpIGlzICJrbyIKK1BB
U1MgZ2V0TGFuZ09mTm9kZSgnbTInKSBpcyAiZnIiCitQQVNTIGdldExhbmdPZk5vZGUoJ20zJykg
aXMgImZyIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCduMScpIGlzICJmciIKK1BBU1MgZ2V0TGFuZ09m
Tm9kZSgnbjInKSBpcyAiZnIiCitQQVNTIGdldExhbmdPZk5vZGUoJ24zJykgaXMgInN2IgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5
IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvdGV4dC9sYW5nLW1hcHBlZC10by13ZWJraXQt
bG9jYWxlLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsg
TEYKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0LWxv
Y2FsZS54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBw
ZWQtdG8td2Via2l0LWxvY2FsZS54aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvdGV4dC9sYW5nLW1hcHBlZC10by13ZWJraXQtbG9jYWxlLnhodG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM2IEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCI+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaXMgYSB0ZXN0
IGZvciA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy9iLzE2ODAxIj5idWcgMTY4MDE8L2E+LiBU
byBzcGVlZCB1cCB0aGUgcmVzb2x1dGlvbiBvZiAnbGFuZycgb2YgYSBub2RlLCAnbGFuZy94bWw6
bGFuZycgaXMgbWFwcGVkIHRvIC13ZWJraXQtbG9jYWxlIHdob3NlIHZhbHVlIGlzIHJldHJpdmVk
IHdoZW4gJ2xhbmcnIGlzIGFza2VkIGZvci48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxkaXYgeG1sOmxhbmc9ImphIiBsYW5nPSJlbiIgaWQ9IngxIj48ZGl2IGlkPSJ4MiI+PGRpdiBp
ZD0ieDMiPjwvZGl2PjwvZGl2PjwvZGl2PgorPGRpdiBsYW5nPSJ6aCIgaWQ9ImwxIj48ZGl2IGlk
PSJsMiI+PGRpdiBpZD0ibDMiPjwvZGl2PjwvZGl2PjwvZGl2PgorPGRpdiBsYW5nPSJrbyIgaWQ9
Im0xIj48ZGl2IGxhbmc9ImZyIiB4bWw6bGFuZz0iZnIiIGlkPSJtMiI+PGRpdiBpZD0ibTMiPjwv
ZGl2PjwvZGl2PjwvZGl2PgorPGRpdiB4bWw6bGFuZz0iZnIiIGxhbmc9ImZyIiBpZD0ibjEiPjxk
aXYgaWQ9Im4yIj48ZGl2IGxhbmc9InN2IiBpZD0ibjMiPjwvZGl2PjwvZGl2PjwvZGl2PgorPHNj
cmlwdD4KK2Z1bmN0aW9uIGdldExhbmdPZk5vZGUobikgeworICAgIGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChuKTsKKyAgICByZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkud2Vi
a2l0TG9jYWxlOworfQorc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCd4MScp
IiwgImphIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ3gyJykiLCAi
amEiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgneDMnKSIsICJqYSIp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCdsMScpIiwgInpoIik7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ2wyJykiLCAiemgiKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgnbDMnKSIsICJ6aCIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCdtMScpIiwgImtvIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ20yJykiLCAiZnIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiZ2V0TGFuZ09mTm9kZSgnbTMnKSIsICJmciIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJnZXRMYW5nT2ZOb2RlKCduMScpIiwgImZyIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdl
dExhbmdPZk5vZGUoJ24yJykiLCAiZnIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFu
Z09mTm9kZSgnbjMnKSIsICJzdiIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106756</attachid>
            <date>2011-09-08 10:16:28 -0700</date>
            <delta_ts>2011-12-07 23:09:28 -0800</delta_ts>
            <desc>same as the previous with bug # in layout test updated to this bug</desc>
            <filename>67586.patch.1b</filename>
            <type>text/plain</type>
            <size>6736</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0Mzc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMDEgIEp1bmdzaGlr
IFNoaW4gIDxqc2hpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgaHR0cDovL3dlYmtpdC5vcmcv
Yi82NzU4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1hcCAnbGFuZycgYW5kICd4bWw6bGFuZycgdG8gLXdlYmtpdC1sb2NhbGUgZm9yICdsYW5nJyBh
bmQgJ3htbDpsYW5nJworICAgICAgICB0byBiZSB1c2VkIGluIGZvbnRmYWxsYmFjayB2aWEgJy13
ZWJraXQtbG9jYWxlJy4gCisgICAgICAgIChzZWUgdGhlIHBhdGNoIGZvciBodHRwOi8vd2Via2l0
Lm9yZy9iLzEwODc0ICkKKyAgICAgICAgV2hlbiAneG1sOmxhbmcnIGFsb25lIGlzIHNwZWNpZmll
ZCwgaXQncyBub3QgbWFwcGVkIHRvCisgICAgICAgICctd2Via2l0LWxvY2FsZScsIHlldC4gVGhh
dCBoYXMgdG8gYmUgZml4ZWQgbGF0ZXIuIAorCisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC9sYW5n
LW1hcHBlZC10by13ZWJraXQtbG9jYWxlLnhodG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZSk6CisgICAgICAgIE1hcCAnbGFuZycgYW5kICd4bWw6bGFuZycgdG8gLXdlYmtpdC1sb2Nh
bGUuCisKIDIwMTEtMDktMDEgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBHZW5lcmF0ZSBhIEZpbGVSZWFkZXIgY29uc3RydWN0b3Igb2YgVjggdXNpbmcgdGhl
IElETCAnQ29uc3RydWN0b3InIGV4dGVuZGVkIGF0dHJpYnV0ZQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDkzOTg1KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBA
IC0xNzMsNyArMTc0LDI2IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KEEKICAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShtYXgoc3RhdGljX2Nhc3Q8aW50
PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWluKCkpLCBtaW4odGFiaW5kZXgsIHN0YXRp
Y19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czxzaG9ydD46Om1heCgpKSkpKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGxhbmdBdHRyKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3Qgd29y
ayB3aGVuIHhtbDpsYW5nIGlzIHByZXNlbnQgd2l0aG91dCBsYW5nLgorICAgICAgICBTdHJpbmcg
dmFsdWU7CisgICAgICAgIC8vIHhtbDpsYW5nIGhhcyBhIGhpZ2hlciBwcmlvcml0eSB0aGFuIGxh
bmcuCisgICAgICAgIGlmIChoYXNBdHRyaWJ1dGUoWE1MTmFtZXM6OmxhbmdBdHRyKSkKKyAgICAg
ICAgICAgIHZhbHVlID0gZ2V0QXR0cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0cik7CisgICAgICAg
IGVsc2UgCisgICAgICAgICAgICB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CisKKyAgICAgICAgaWYg
KHZhbHVlLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAvLyBIYXZlIHRvIGVuY2xvc2Ugd2l0aCBh
IHBhaXIgb2YgcXVvdGF0aW9uIG1hcmtzIHRvIGdldCB0aGUgCisgICAgICAgICAgICAvLyBsb2Nh
bGUgaWQgdHJlYXRlZCBhcyBhIHN0cmluZyBpbnN0ZWFkIG9mIGFzIGEgQ1NTIGtleXdvcmQuCisg
ICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG91YmxlUXVvdGVDaGFyLCAo
IlwiIikpOworICAgICAgICAgICAgdmFsdWUuaW5zZXJ0KGRvdWJsZVF1b3RlQ2hhciwgMCk7Cisg
ICAgICAgICAgICB2YWx1ZS5hcHBlbmQoZG91YmxlUXVvdGVDaGFyKTsKKyAgICAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlLCB2YWx1ZSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBlbXB0eSAnbGFuZycgc2hvdWxkIGJlIHRyZWF0
ZWQgYXMgJ2F1dG8nLgorICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVy
dHlXZWJraXRMb2NhbGUsIENTU1ZhbHVlQXV0byk7CisgICAgICAgIH0KKyAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpckF0dHIp
IHsKICAgICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYXV0byIp
KQogICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlEaXJlY3Rpb24s
IGF0dHItPnZhbHVlKCkpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTQzNzcpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wOS0wMSAg
SnVuZ3NoaWsgU2hpbiAgPGpzaGluQGNocm9taXVtLm9yZz4KKworICAgICAgICBodHRwOi8vd2Vi
a2lnLm9yZy9iLzY3NTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFwICdsYW5nJyBhbmQgJ3htbDpsYW5nJyB0byAtd2Via2l0LWxvY2FsZSBmb3Ig
J2xhbmcnIGFuZCAneG1sOmxhbmcnCisgICAgICAgIHRvIGJlIHVzZWQgaW4gZm9udCBmYWxsYmFj
ayB2aWEgJy13ZWJraXQtbG9jYWxlJy4gCisgICAgICAgIChzZWUgdGhlIHBhdGNoIGZvciBodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwODc0ICkKKyAgICAgICAgV2hlbiAneG1sOmxhbmcnIGFsb25lIGlz
IHNwZWNpZmllZCwgaXQncyBub3QgbWFwcGVkIHRvCisgICAgICAgICctd2Via2l0LWxvY2FsZScs
IHlldC4gVGhhdCBoYXMgdG8gYmUgZml4ZWQgbGF0ZXIuIAorCisgICAgICAgICogZmFzdC90ZXh0
L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0LWxvY2FsZS54aHRtbDogQWRkZWQu
CisKIDIwMTEtMDktMDEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBleHBlY3RhdGlvbiBsaW5lcyBmb3IgdGVzdHMgdGhh
dCBwYXNzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0
LWxvY2FsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACitUaGlzIGlzIGEgdGVzdCBm
b3IgYnVnIDY3NTg2LiBIVE1MIGF0dHJpYnV0ZXMgbGFuZyBhbmQgeG1sOmxhbmcgYXJlIG1hcHBl
ZCB0byAnLXdlYmtpdC1sb2NhbGUnIHRvIHVzZSB0aGVpciB2YWx1ZSBpbiBmb250IGZhbGxiYWNr
LgorCitQQVNTIGdldExhbmdPZk5vZGUoJ3gxJykgaXMgImphIgorUEFTUyBnZXRMYW5nT2ZOb2Rl
KCd4MicpIGlzICJqYSIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgneDMnKSBpcyAiamEiCitQQVNTIGdl
dExhbmdPZk5vZGUoJ2wxJykgaXMgInpoIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdsMicpIGlzICJ6
aCIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgnbDMnKSBpcyAiemgiCitQQVNTIGdldExhbmdPZk5vZGUo
J20xJykgaXMgImtvIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdtMicpIGlzICJmciIKK1BBU1MgZ2V0
TGFuZ09mTm9kZSgnbTMnKSBpcyAiZnIiCitQQVNTIGdldExhbmdPZk5vZGUoJ24xJykgaXMgImZy
IgorUEFTUyBnZXRMYW5nT2ZOb2RlKCduMicpIGlzICJmciIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgn
bjMnKSBpcyAic3YiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2xhbmct
bWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9sYW5nLW1h
cHBlZC10by13ZWJraXQtbG9jYWxlLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvdGV4dC9sYW5nLW1hcHBlZC10by13ZWJraXQtbG9jYWxlLnhodG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUueGh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICA8cD5UaGlzIGlzIGEgdGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvYi82NzU4
NiI+YnVnIDY3NTg2PC9hPi4gSFRNTCBhdHRyaWJ1dGVzIGxhbmcgYW5kIHhtbDpsYW5nIGFyZSBt
YXBwZWQgdG8gJy13ZWJraXQtbG9jYWxlJyB0byB1c2UgdGhlaXIgdmFsdWUgaW4gZm9udCBmYWxs
YmFjay48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgeG1sOmxhbmc9ImphIiBs
YW5nPSJlbiIgaWQ9IngxIj48ZGl2IGlkPSJ4MiI+PGRpdiBpZD0ieDMiPjwvZGl2PjwvZGl2Pjwv
ZGl2PgorPGRpdiBsYW5nPSJ6aCIgaWQ9ImwxIj48ZGl2IGlkPSJsMiI+PGRpdiBpZD0ibDMiPjwv
ZGl2PjwvZGl2PjwvZGl2PgorPGRpdiBsYW5nPSJrbyIgaWQ9Im0xIj48ZGl2IGxhbmc9ImZyIiB4
bWw6bGFuZz0iZnIiIGlkPSJtMiI+PGRpdiBpZD0ibTMiPjwvZGl2PjwvZGl2PjwvZGl2PgorPGRp
diB4bWw6bGFuZz0iZnIiIGxhbmc9ImZyIiBpZD0ibjEiPjxkaXYgaWQ9Im4yIj48ZGl2IGxhbmc9
InN2IiBpZD0ibjMiPjwvZGl2PjwvZGl2PjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGdldExh
bmdPZk5vZGUobikgeworICAgIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuKTsKKyAgICBy
ZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkud2Via2l0TG9jYWxlOworfQorc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCd4MScpIiwgImphIik7CitzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ3gyJykiLCAiamEiKTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygiZ2V0TGFuZ09mTm9kZSgneDMnKSIsICJqYSIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJnZXRMYW5nT2ZOb2RlKCdsMScpIiwgInpoIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImdldExhbmdPZk5vZGUoJ2wyJykiLCAiemgiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0
TGFuZ09mTm9kZSgnbDMnKSIsICJ6aCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5n
T2ZOb2RlKCdtMScpIiwgImtvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5v
ZGUoJ20yJykiLCAiZnIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgn
bTMnKSIsICJmciIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCduMScp
IiwgImZyIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ24yJykiLCAi
ZnIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgnbjMnKSIsICJzdiIp
OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118334</attachid>
            <date>2011-12-07 23:09:34 -0800</date>
            <delta_ts>2011-12-16 03:14:12 -0800</delta_ts>
            <desc>rebase</desc>
            <filename>bug-67586-20111208160933.patch</filename>
            <type>text/plain</type>
            <size>6684</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU4NzAzZTQ2NWQ2MDBk
YWFmZmM0N2VkMGRlMzFmNTkzNmY4OTJkYy4uZWNjZGZkNWQyM2EyMDk5MDJiZDMzMDI4NzExMjBm
NmFkNWVkZGVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTEyLTA3ICBKdW5n
c2hpayBTaGluICA8anNoaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHA6Ly93ZWJraXQu
b3JnL2IvNjc1ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYXAgJ2xhbmcnIGFuZCAneG1sOmxhbmcnIHRvIC13ZWJraXQtbG9jYWxlIGZvciAnbGFu
ZycgYW5kICd4bWw6bGFuZycKKyAgICAgICAgdG8gYmUgdXNlZCBpbiBmb250ZmFsbGJhY2sgdmlh
ICctd2Via2l0LWxvY2FsZScuCisgICAgICAgIChzZWUgdGhlIHBhdGNoIGZvciBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzEwODc0ICkKKyAgICAgICAgV2hlbiAneG1sOmxhbmcnIGFsb25lIGlzIHNwZWNp
ZmllZCwgaXQncyBub3QgbWFwcGVkIHRvCisgICAgICAgICctd2Via2l0LWxvY2FsZScsIHlldC4g
VGhhdCBoYXMgdG8gYmUgZml4ZWQgbGF0ZXIuCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2xh
bmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUueGh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKToKKyAgICAgICAgTWFwICdsYW5nJyBhbmQgJ3htbDpsYW5nJyB0byAtd2Via2l0LWxv
Y2FsZS4KKwogMjAxMS0xMi0wNyAgTWFyeSBXdSAgPG1hcnkud3VAdG9yY2htb2JpbGUuY29tLmNu
PgogCiAgICAgICAgIFVwc3RyZWFtIDQgZmlsZXMgaW50byBXZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggZjMxMDZjM2Y0MjIyZGI0
YzNiZGNiZDQ1YTU0Y2NkY2IxYmE1MWI3ZS4uMmU3OTMyZWY0MjVjOGEzYjNmYWI1ZmY5YmU3Mzg0
MjliMTUwY2NlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTQ4LDYgKzQ4
LDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgIm1hcmt1
cC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CkBAIC0xOTMsNyArMTk0LDI2IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIHNldFRhYkluZGV4RXhw
bGljaXRseShtYXgoc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6
bWluKCkpLCBtaW4odGFiaW5kZXgsIHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0
czxzaG9ydD46Om1heCgpKSkpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGxhbmdBdHRyKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICAgICAg
Ly8gRklYTUU6IHRoaXMgZG9lcyBub3Qgd29yayB3aGVuIHhtbDpsYW5nIGlzIHByZXNlbnQgd2l0
aG91dCBsYW5nLgorICAgICAgICBTdHJpbmcgdmFsdWU7CisgICAgICAgIC8vIHhtbDpsYW5nIGhh
cyBhIGhpZ2hlciBwcmlvcml0eSB0aGFuIGxhbmcuCisgICAgICAgIGlmIChoYXNBdHRyaWJ1dGUo
WE1MTmFtZXM6OmxhbmdBdHRyKSkKKyAgICAgICAgICAgIHZhbHVlID0gZ2V0QXR0cmlidXRlKFhN
TE5hbWVzOjpsYW5nQXR0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbHVlID0gYXR0
ci0+dmFsdWUoKTsKKworICAgICAgICBpZiAodmFsdWUubGVuZ3RoKCkpIHsKKyAgICAgICAgICAg
IC8vIEhhdmUgdG8gZW5jbG9zZSB3aXRoIGEgcGFpciBvZiBxdW90YXRpb24gbWFya3MgdG8gZ2V0
IHRoZQorICAgICAgICAgICAgLy8gbG9jYWxlIGlkIHRyZWF0ZWQgYXMgYSBzdHJpbmcgaW5zdGVh
ZCBvZiBhcyBhIENTUyBrZXl3b3JkLgorICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGRvdWJsZVF1b3RlQ2hhciwgKCJcIiIpKTsKKyAgICAgICAgICAgIHZhbHVlLmluc2Vy
dChkb3VibGVRdW90ZUNoYXIsIDApOworICAgICAgICAgICAgdmFsdWUuYXBwZW5kKGRvdWJsZVF1
b3RlQ2hhcik7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdl
YmtpdExvY2FsZSwgdmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gZW1w
dHkgJ2xhbmcnIHNob3VsZCBiZSB0cmVhdGVkIGFzICdhdXRvJy4KKyAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlLCBDU1NWYWx1ZUF1dG8pOwor
ICAgICAgICB9CisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBkaXJBdHRyKSB7CiAgICAgICAgIGJvb2wgZGlySXNBdXRvID0gZXF1
YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImF1dG8iKTsKICAgICAgICAgaWYgKCFkaXJJ
c0F1dG8pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNjdlYTFkNTk0OWZjN2JkMzY3MWUxOTkyZGJhNGY4NGFmM2Y2MzJjOS4u
YzBlZTc5OTExYjhiNTkyNDk0Y2Q3NmRkYTYwY2UwN2Q0ZDM4ZjA0YSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDExLTEyLTA3ICBKdW5nc2hpayBTaGluICA8anNoaW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIGh0dHA6Ly93ZWJraXQub3JnL2IvNjc1ODYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXAgJ2xhbmcnIGFuZCAneG1sOmxhbmcnIHRv
IC13ZWJraXQtbG9jYWxlIGZvciAnbGFuZycgYW5kICd4bWw6bGFuZycKKyAgICAgICAgdG8gYmUg
dXNlZCBpbiBmb250IGZhbGxiYWNrIHZpYSAnLXdlYmtpdC1sb2NhbGUnLgorICAgICAgICAoc2Vl
IHRoZSBwYXRjaCBmb3IgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDg3NCApCisgICAgICAgIFdoZW4g
J3htbDpsYW5nJyBhbG9uZSBpcyBzcGVjaWZpZWQsIGl0J3Mgbm90IG1hcHBlZCB0bworICAgICAg
ICAnLXdlYmtpdC1sb2NhbGUnLCB5ZXQuIFRoYXQgaGFzIHRvIGJlIGZpeGVkIGxhdGVyLgorCisg
ICAgICAgICogZmFzdC90ZXh0L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0LWxv
Y2FsZS54aHRtbDogQWRkZWQuCisKIDIwMTEtMTItMDcgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFz
aGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlZmFjdG9yIENTU1BhcnNlcjo6cGFyc2VGb250
RmFjZVNyYygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBwZWQt
dG8td2Via2l0LWxvY2FsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFu
Zy1tYXBwZWQtdG8td2Via2l0LWxvY2FsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE1MzBm
M2IxOTczMWUyZmNhNTJlZDllYTRmN2VjNWVmMjA4NTRjYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC9sYW5nLW1hcHBlZC10by13ZWJraXQtbG9jYWxlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIGlzIGEgdGVzdCBmb3IgYnVnIDY3NTg2LiBIVE1M
IGF0dHJpYnV0ZXMgbGFuZyBhbmQgeG1sOmxhbmcgYXJlIG1hcHBlZCB0byAnLXdlYmtpdC1sb2Nh
bGUnIHRvIHVzZSB0aGVpciB2YWx1ZSBpbiBmb250IGZhbGxiYWNrLgorCitQQVNTIGdldExhbmdP
Zk5vZGUoJ3gxJykgaXMgImphIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCd4MicpIGlzICJqYSIKK1BB
U1MgZ2V0TGFuZ09mTm9kZSgneDMnKSBpcyAiamEiCitQQVNTIGdldExhbmdPZk5vZGUoJ2wxJykg
aXMgInpoIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdsMicpIGlzICJ6aCIKK1BBU1MgZ2V0TGFuZ09m
Tm9kZSgnbDMnKSBpcyAiemgiCitQQVNTIGdldExhbmdPZk5vZGUoJ20xJykgaXMgImtvIgorUEFT
UyBnZXRMYW5nT2ZOb2RlKCdtMicpIGlzICJmciIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgnbTMnKSBp
cyAiZnIiCitQQVNTIGdldExhbmdPZk5vZGUoJ24xJykgaXMgImZyIgorUEFTUyBnZXRMYW5nT2ZO
b2RlKCduMicpIGlzICJmciIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgnbjMnKSBpcyAic3YiCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUueGh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0LWxvY2FsZS54
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YTE5MDNlMjRhNDQyZWIwMzNiMzViZjllZjM5Yzc0NTI4ZDI2ZGY1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2xhbmctbWFwcGVkLXRv
LXdlYmtpdC1sb2NhbGUueGh0bWwKQEAgLTAsMCArMSwzNiBAQAorPGh0bWwgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgLz4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisgIDxwPlRoaXMgaXMgYSB0ZXN0IGZvciA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy9i
LzY3NTg2Ij5idWcgNjc1ODY8L2E+LiBIVE1MIGF0dHJpYnV0ZXMgbGFuZyBhbmQgeG1sOmxhbmcg
YXJlIG1hcHBlZCB0byAnLXdlYmtpdC1sb2NhbGUnIHRvIHVzZSB0aGVpciB2YWx1ZSBpbiBmb250
IGZhbGxiYWNrLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiB4bWw6bGFuZz0i
amEiIGxhbmc9ImVuIiBpZD0ieDEiPjxkaXYgaWQ9IngyIj48ZGl2IGlkPSJ4MyI+PC9kaXY+PC9k
aXY+PC9kaXY+Cis8ZGl2IGxhbmc9InpoIiBpZD0ibDEiPjxkaXYgaWQ9ImwyIj48ZGl2IGlkPSJs
MyI+PC9kaXY+PC9kaXY+PC9kaXY+Cis8ZGl2IGxhbmc9ImtvIiBpZD0ibTEiPjxkaXYgbGFuZz0i
ZnIiIHhtbDpsYW5nPSJmciIgaWQ9Im0yIj48ZGl2IGlkPSJtMyI+PC9kaXY+PC9kaXY+PC9kaXY+
Cis8ZGl2IHhtbDpsYW5nPSJmciIgbGFuZz0iZnIiIGlkPSJuMSI+PGRpdiBpZD0ibjIiPjxkaXYg
bGFuZz0ic3YiIGlkPSJuMyI+PC9kaXY+PC9kaXY+PC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24g
Z2V0TGFuZ09mTm9kZShuKSB7CisgICAgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG4pOwor
ICAgIHJldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKS53ZWJraXRMb2NhbGU7Cit9Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ3gxJykiLCAiamEiKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgneDInKSIsICJqYSIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCd4MycpIiwgImphIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ2wxJykiLCAiemgiKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiZ2V0TGFuZ09mTm9kZSgnbDInKSIsICJ6aCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJnZXRMYW5nT2ZOb2RlKCdsMycpIiwgInpoIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdl
dExhbmdPZk5vZGUoJ20xJykiLCAia28iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFu
Z09mTm9kZSgnbTInKSIsICJmciIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZO
b2RlKCdtMycpIiwgImZyIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUo
J24xJykiLCAiZnIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgnbjIn
KSIsICJmciIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCduMycpIiwg
InN2Iik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119591</attachid>
            <date>2011-12-16 03:14:19 -0800</date>
            <delta_ts>2011-12-20 02:10:31 -0800</delta_ts>
            <desc>revised patch</desc>
            <filename>bug-67586-20111216201417.patch</filename>
            <type>text/plain</type>
            <size>7433</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVlMWEwMTNlZGVkNTIy
Nzk5NjAyMzcyODZkYmE5ZDNiMTk4ZTBmZS4uNDY1ZjAzMWEwZjNiNDQ3ODc3MzVlYzQyODNmOTMw
YzhhNjFiOTZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTEyLTE2ICBKdW5n
c2hpayBTaGluICA8anNoaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1hcCAnbGFuZycgYW5k
IHhtbDpsYW5nIGF0dHJpYnV0ZXMgdG8gJy13ZWJraXQtbG9jYWxlJyBDU1MgcHJvcGVydHkgZm9y
IHVzZSB3aXRoIGZvbnQgZmFsbGJhY2sgYW5kIHRleHQtdHJhbnNmb3JtCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzU4NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC9sYW5nLW1h
cHBlZC10by13ZWJraXQtbG9jYWxlLnhodG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjptYXBMYW5ndWFnZUF0dHJpYnV0
ZVRvTG9jYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZSk6IE1hcCAnbGFuZycgYW5kICd4bWw6bGFuZycgdG8gLXdlYmtpdC1sb2NhbGUuCisg
ICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorCiAyMDExLTEyLTE1ICBSYWZhZWwgw4F2aWxh
IGRlIEVzcMOtbmRvbGEgIDxyYWZhZWwuZXNwaW5kb2xhQGdtYWlsLmNvbT4KIAogICAgICAgICBE
b24ndCBjcmVhdGUgZW1wdHkgZmlsZXMgb24gZXJyb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCmluZGV4IGFkOWU0NmUwZTgwOWU5MTlkNWFiYmI5NDE0MmY2OTNlNmZlMTg5NzcuLmY2
Yjg4YjFjZjhiNmQzNjgzYjkxNzliM2Q2YjZmNWEyNjkxMjA1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgi
CiAjaW5jbHVkZSAiQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIgpAQCAtNDgsNiArNDksNyBAQAog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRJ
dGVyYXRvci5oIgorI2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KQEAgLTE2OCw2ICsxNzAsMjEgQEAgdm9pZCBIVE1MRWxlbWVudDo6YXBwbHlCb3JkZXJBdHRy
aWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKIH0KIAordm9pZCBIVE1MRWxlbWVu
dDo6bWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2FsZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAg
QVNTRVJUKGF0dHIgJiYgKGF0dHItPm5hbWUoKSA9PSBsYW5nQXR0ciB8fCBhdHRyLT5uYW1lKCku
bWF0Y2hlcyhYTUxOYW1lczo6bGFuZ0F0dHIpKSk7CisgICAgU3RyaW5nIHZhbHVlID0gYXR0ci0+
dmFsdWUoKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBIYXZlIHRv
IHF1b3RlIHNvIHRoZSBsb2NhbGUgaWQgaXMgdHJlYXRlZCBhcyBhIHN0cmluZyBpbnN0ZWFkIG9m
IGFzIGEKKyAgICAgICAgLy8gQ1NTIGtleXdvcmQuCisgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0
dHIsIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlLCBxdW90ZUNTU1N0cmluZyh2YWx1ZSkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIEVtcHR5ICdsYW5nJyBzaG91bGQgYmUgdHJlYXRlZCBhcyAn
YXV0bycuCisgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TG9j
YWxlLCBDU1NWYWx1ZUF1dG8pOworICAgIH0KKyAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Cit9
CisKIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikKIHsKICAgICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKSB8fCBhdHRyLT5u
YW1lKCkgPT0gY2xhc3NBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBzdHlsZUF0dHIpCkBAIC0xOTIs
OCArMjA5LDEyIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0cikKICAgICAgICAgICAgIC8vIENsYW1wIHRhYmluZGV4IHRvIHRoZSByYW5nZSBv
ZiAnc2hvcnQnIHRvIG1hdGNoIEZpcmVmb3gncyBiZWhhdmlvci4KICAgICAgICAgICAgIHNldFRh
YkluZGV4RXhwbGljaXRseShtYXgoc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om51bWVyaWNfbGltaXRz
PHNob3J0Pjo6bWluKCkpLCBtaW4odGFiaW5kZXgsIHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1l
cmljX2xpbWl0czxzaG9ydD46Om1heCgpKSkpKTsKICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpLm1hdGNoZXMoWE1MTmFtZXM6OmxhbmdBdHRyKSkgeworICAgICAgICBtYXBM
YW5ndWFnZUF0dHJpYnV0ZVRvTG9jYWxlKGF0dHIpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGxhbmdBdHRyKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICAgICAg
Ly8geG1sOmxhbmcgaGFzIGEgaGlnaGVyIHByaW9yaXR5IHRoYW4gbGFuZy4KKyAgICAgICAgaWYg
KCFmYXN0SGFzQXR0cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0cikpCisgICAgICAgICAgICBtYXBM
YW5ndWFnZUF0dHJpYnV0ZVRvTG9jYWxlKGF0dHIpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGRpckF0dHIpIHsKICAgICAgICAgYm9vbCBkaXJJc0F1dG8gPSBlcXVhbElnbm9yaW5n
Q2FzZShhdHRyLT52YWx1ZSgpLCAiYXV0byIpOwogICAgICAgICBpZiAoIWRpcklzQXV0bykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCBhNzE4NjU5OWU1ZTlmMGZhZTIwYjQ0NzJkYjhk
ZWRhYjhiMmE2YWY3Li5iOThiMmRkYzQ2OTIzNmQyMzdmMmQxMGYzMjIwMDZiNWEyMTUyOGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xMDcsNiArMTA3LDggQEAgcHJvdGVjdGVk
OgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogCisgICAg
dm9pZCBtYXBMYW5ndWFnZUF0dHJpYnV0ZVRvTG9jYWxlKEF0dHJpYnV0ZSopOworCiAgICAgdm9p
ZCBzZXRDb250ZW50RWRpdGFibGUoQXR0cmlidXRlKik7CiAKICAgICB2aXJ0dWFsIEhUTUxGb3Jt
RWxlbWVudCogdmlydHVhbEZvcm0oKSBjb25zdDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZDk1YjRhOTBmMTA1MGJiYWE3
Y2MxNzY3NGY5NzkwODJhMDkzYjMzLi43OWU2NjIxMTg0NTZlOGNkZjk5MzRlOWM2OWNiMmJhMThl
M2UxM2VmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTYgIEp1bmdzaGlrIFNoaW4g
IDxqc2hpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFwICdsYW5nJyBhbmQgeG1sOmxhbmcg
YXR0cmlidXRlcyB0byAnLXdlYmtpdC1sb2NhbGUnIENTUyBwcm9wZXJ0eSBmb3IgdXNlIHdpdGgg
Zm9udCBmYWxsYmFjayBhbmQgdGV4dC10cmFuc2Zvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0
LWxvY2FsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9sYW5nLW1h
cHBlZC10by13ZWJraXQtbG9jYWxlLnhodG1sOiBBZGRlZC4KKwogMjAxMS0xMi0xNSAgSGFqaW1l
IE1vcnJpdGEgIDxtb3JyaXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHRl
c3RfZXhwZWN0YXRpb25zLnR4dCB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0LWxvY2FsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0LWxvY2FsZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTE1MzBmM2IxOTczMWUyZmNhNTJlZDllYTRmN2VjNWVmMjA4NTRjYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9sYW5nLW1hcHBlZC10by13ZWJr
aXQtbG9jYWxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIGlzIGEgdGVzdCBm
b3IgYnVnIDY3NTg2LiBIVE1MIGF0dHJpYnV0ZXMgbGFuZyBhbmQgeG1sOmxhbmcgYXJlIG1hcHBl
ZCB0byAnLXdlYmtpdC1sb2NhbGUnIHRvIHVzZSB0aGVpciB2YWx1ZSBpbiBmb250IGZhbGxiYWNr
LgorCitQQVNTIGdldExhbmdPZk5vZGUoJ3gxJykgaXMgImphIgorUEFTUyBnZXRMYW5nT2ZOb2Rl
KCd4MicpIGlzICJqYSIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgneDMnKSBpcyAiamEiCitQQVNTIGdl
dExhbmdPZk5vZGUoJ2wxJykgaXMgInpoIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdsMicpIGlzICJ6
aCIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgnbDMnKSBpcyAiemgiCitQQVNTIGdldExhbmdPZk5vZGUo
J20xJykgaXMgImtvIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdtMicpIGlzICJmciIKK1BBU1MgZ2V0
TGFuZ09mTm9kZSgnbTMnKSBpcyAiZnIiCitQQVNTIGdldExhbmdPZk5vZGUoJ24xJykgaXMgImZy
IgorUEFTUyBnZXRMYW5nT2ZOb2RlKCduMicpIGlzICJmciIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgn
bjMnKSBpcyAic3YiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2xhbmctbWFwcGVkLXRv
LXdlYmtpdC1sb2NhbGUueGh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBwZWQt
dG8td2Via2l0LWxvY2FsZS54aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOWMxMDdkODM5OWQ1MTJiYWE1OGZi
OWYwMjU5NmNjOTk0ZDdmZmFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUueGh0bWwKQEAgLTAsMCArMSwzNiBAQAor
PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIgLz4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxwPlRoaXMgaXMgYSB0ZXN0IGZvciA8YSBocmVmPSJo
dHRwOi8vd2Via2l0Lm9yZy9iLzY3NTg2Ij5idWcgNjc1ODY8L2E+LiBIVE1MIGF0dHJpYnV0ZXMg
bGFuZyBhbmQgeG1sOmxhbmcgYXJlIG1hcHBlZCB0byAnLXdlYmtpdC1sb2NhbGUnIHRvIHVzZSB0
aGVpciB2YWx1ZSBpbiBmb250IGZhbGxiYWNrLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGRpdiB4bWw6bGFuZz0iamEiIGxhbmc9ImVuIiBpZD0ieDEiPjxkaXYgaWQ9IngyIj48ZGl2
IGlkPSJ4MyI+PC9kaXY+PC9kaXY+PC9kaXY+Cis8ZGl2IGxhbmc9InpoIiBpZD0ibDEiPjxkaXYg
aWQ9ImwyIj48ZGl2IGlkPSJsMyI+PC9kaXY+PC9kaXY+PC9kaXY+Cis8ZGl2IGxhbmc9ImtvIiBp
ZD0ibTEiPjxkaXYgbGFuZz0iZnIiIHhtbDpsYW5nPSJmciIgaWQ9Im0yIj48ZGl2IGlkPSJtMyI+
PC9kaXY+PC9kaXY+PC9kaXY+Cis8ZGl2IHhtbDpsYW5nPSJmciIgaWQ9Im4xIj48ZGl2IGlkPSJu
MiI+PGRpdiBsYW5nPSJzdiIgaWQ9Im4zIj48L2Rpdj48L2Rpdj48L2Rpdj4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBnZXRMYW5nT2ZOb2RlKG4pIHsKKyAgICBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQobik7CisgICAgcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpLndlYmtpdExvY2Fs
ZTsKK30KK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgneDEnKSIsICJqYSIp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCd4MicpIiwgImphIik7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ3gzJykiLCAiamEiKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgnbDEnKSIsICJ6aCIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCdsMicpIiwgInpoIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ2wzJykiLCAiemgiKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiZ2V0TGFuZ09mTm9kZSgnbTEnKSIsICJrbyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJnZXRMYW5nT2ZOb2RlKCdtMicpIiwgImZyIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdl
dExhbmdPZk5vZGUoJ20zJykiLCAiZnIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFu
Z09mTm9kZSgnbjEnKSIsICJmciIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZO
b2RlKCduMicpIiwgImZyIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUo
J24zJykiLCAic3YiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120000</attachid>
            <date>2011-12-20 02:10:41 -0800</date>
            <delta_ts>2011-12-22 23:29:48 -0800</delta_ts>
            <desc>incorporated review comments</desc>
            <filename>bug-67586-20111220191038.patch</filename>
            <type>text/plain</type>
            <size>11439</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTRlMjRkZTNjZTk1NjA0
ZjdhODkzNTZmMTY2OTI2MGIxZjZjYjZjMy4uM2Q3MjZkMDIxZWFlMDg5MmI5ZTgyNjUzNjg1ODMz
NWExZmIxNWNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTEyLTIwICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYXAgJ2xhbmcn
IGFuZCB4bWw6bGFuZyBhdHRyaWJ1dGVzIHRvICctd2Via2l0LWxvY2FsZScgQ1NTIHByb3BlcnR5
IGZvciB1c2Ugd2l0aCBmb250IGZhbGxiYWNrIGFuZCB0ZXh0LXRyYW5zZm9ybQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc1ODYKKworICAgICAgICBP
cmlnaW5hbCBwYXRjaCBieSBKdW5nc2hpayBTaGluIDxqc2hpbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
dGV4dC9sYW5nLW1hcHBlZC10by13ZWJraXQtbG9jYWxlLnhodG1sCisgICAgICAgICAgICAgICBm
YXN0L3RleHQveG1sLWxhbmctaWdub3JlZC1pbi1odG1sLmh0bWwKKworICAgICAgICAqIGh0bWwv
SFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6Om1hcExhbmd1
YWdlQXR0cmlidXRlVG9Mb2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKTogTWFwICdsYW5nJyBhbmQgJ3htbDpsYW5nJyB0byAtd2Via2l0
LWxvY2FsZS4KKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisKIDIwMTEtMTItMjAgIEFs
b2sgUHJpeWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVt
XSBjb21wb3NpdGluZy9zaGFkb3dzIHRlc3RzIGZhaWwgd2l0aCBhY2NlbGVyYXRlZCBwYWludGlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA2NTczY2E2MThmZWUyMmZmODlh
N2ViNWI1MWYyNDFmMjhhNDZkMGY0Li4yODU1MDM3YmNjZDYyZGFmZWY4MGZjYjMzYzNkYTFhMTQ0
ODFlNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNp
bmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5j
bHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNoaWxkTGlzdE11dGF0aW9uU2Nv
cGUuaCIKQEAgLTQ4LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJYTUxOYW1lcy5o
IgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xNjgsNiArMTcwLDIwIEBAIHZvaWQgSFRN
TEVsZW1lbnQ6OmFwcGx5Qm9yZGVyQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICBhZGRD
U1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTVmFsdWVTb2xp
ZCk7CiB9CiAKK3ZvaWQgSFRNTEVsZW1lbnQ6Om1hcExhbmd1YWdlQXR0cmlidXRlVG9Mb2NhbGUo
QXR0cmlidXRlKiBhdHRyaWJ1dGUpCit7CisgICAgQVNTRVJUKGF0dHJpYnV0ZSAmJiAoYXR0cmli
dXRlLT5uYW1lKCkgPT0gbGFuZ0F0dHIgfHwgYXR0cmlidXRlLT5uYW1lKCkubWF0Y2hlcyhYTUxO
YW1lczo6bGFuZ0F0dHIpKSk7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJp
YnV0ZS0+dmFsdWUoKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBI
YXZlIHRvIHF1b3RlIHNvIHRoZSBsb2NhbGUgaWQgaXMgdHJlYXRlZCBhcyBhIHN0cmluZyBpbnN0
ZWFkIG9mIGFzIGEgQ1NTIGtleXdvcmQuCisgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHJpYnV0
ZSwgQ1NTUHJvcGVydHlXZWJraXRMb2NhbGUsIHF1b3RlQ1NTU3RyaW5nKHZhbHVlKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgLy8gVGhlIGVtcHR5IHN0cmluZyBtZWFucyB0aGUgbGFuZ3VhZ2Ug
aXMgZXhwbGljaXRseSB1bmtub3duLgorICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyaWJ1dGUs
IENTU1Byb3BlcnR5V2Via2l0TG9jYWxlLCBDU1NWYWx1ZUF1dG8pOworICAgIH0KKyAgICBzZXRO
ZWVkc1N0eWxlUmVjYWxjKCk7Cit9CisKIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0
ci0+bmFtZSgpKSB8fCBhdHRyLT5uYW1lKCkgPT0gY2xhc3NBdHRyIHx8IGF0dHItPm5hbWUoKSA9
PSBzdHlsZUF0dHIpCkBAIC0xOTIsOCArMjA4LDEyIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIC8vIENsYW1wIHRh
YmluZGV4IHRvIHRoZSByYW5nZSBvZiAnc2hvcnQnIHRvIG1hdGNoIEZpcmVmb3gncyBiZWhhdmlv
ci4KICAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShtYXgoc3RhdGljX2Nhc3Q8aW50
PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWluKCkpLCBtaW4odGFiaW5kZXgsIHN0YXRp
Y19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czxzaG9ydD46Om1heCgpKSkpKTsKICAgICAg
ICAgfQorICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpLm1hdGNoZXMoWE1MTmFtZXM6OmxhbmdB
dHRyKSkgeworICAgICAgICBtYXBMYW5ndWFnZUF0dHJpYnV0ZVRvTG9jYWxlKGF0dHIpOwogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGxhbmdBdHRyKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQKKyAgICAgICAgLy8geG1sOmxhbmcgaGFzIGEgaGlnaGVyIHByaW9yaXR5IHRo
YW4gbGFuZy4KKyAgICAgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0
cikpCisgICAgICAgICAgICBtYXBMYW5ndWFnZUF0dHJpYnV0ZVRvTG9jYWxlKGF0dHIpOwogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpckF0dHIpIHsKICAgICAgICAgYm9vbCBkaXJJ
c0F1dG8gPSBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYXV0byIpOwogICAgICAg
ICBpZiAoIWRpcklzQXV0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCBhNzE4NjU5
OWU1ZTlmMGZhZTIwYjQ0NzJkYjhkZWRhYjhiMmE2YWY3Li5iOThiMmRkYzQ2OTIzNmQyMzdmMmQx
MGYzMjIwMDZiNWEyMTUyOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xMDcs
NiArMTA3LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBub2Rl
TmFtZSgpIGNvbnN0OwogCisgICAgdm9pZCBtYXBMYW5ndWFnZUF0dHJpYnV0ZVRvTG9jYWxlKEF0
dHJpYnV0ZSopOworCiAgICAgdm9pZCBzZXRDb250ZW50RWRpdGFibGUoQXR0cmlidXRlKik7CiAK
ICAgICB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVhbEZvcm0oKSBjb25zdDsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBjYTU1NDkxOWVkMzRmZDVjYjU1ZmY2YTk5OTVlNWMyZWY4YjZkMmFhLi4yNTRhNTAwN2JiMTYw
ZDQ5YjM2ODVlNDY2NzhjNjAwZWM1OTNiOTljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEt
MTItMjAgIE1hdHQgRmFsa2VuaGFnZW4gIDxmYWxrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IE1hcCAnbGFuZycgYW5kIHhtbDpsYW5nIGF0dHJpYnV0ZXMgdG8gJy13ZWJraXQtbG9jYWxlJyBD
U1MgcHJvcGVydHkgZm9yIHVzZSB3aXRoIGZvbnQgZmFsbGJhY2sgYW5kIHRleHQtdHJhbnNmb3Jt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzU4Ngor
CisgICAgICAgIE9yaWdpbmFsIHBhdGNoIGJ5IEp1bmdzaGlrIFNoaW4gPGpzaGluQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvdGV4dC9sYW5nLW1hcHBlZC10by13ZWJraXQtbG9jYWxlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC90ZXh0L2xhbmctbWFwcGVkLXRvLXdlYmtpdC1sb2NhbGUueGh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC94bWwtbGFuZy1pZ25vcmVkLWluLWh0bWwt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQveG1sLWxhbmctaWdub3Jl
ZC1pbi1odG1sLmh0bWw6IEFkZGVkLgorCiAyMDExLTEyLTE5ICBZYWVsIEFoYXJvbiAgPHlhZWwu
YWhhcm9uQG5va2lhLmNvbT4KIAogICAgICAgICBVcGRhdGUgZHJvcHpvbmUgaW1wbGVtZW50YXRp
b24gcGVyIHNwZWMgdXBkYXRlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFu
Zy1tYXBwZWQtdG8td2Via2l0LWxvY2FsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0LWxvY2FsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmE5MWIxOTY0MThkNGNhMzgxYzJiOTY2MzQ3YTVkZWU0NjM1NmZiZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9sYW5nLW1hcHBlZC10by13ZWJraXQtbG9jYWxl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI5IEBACitUaGlzIGlzIGEgdGVzdCBmb3IgYnVnIDY3
NTg2LiBIVE1MIGF0dHJpYnV0ZXMgbGFuZyBhbmQgeG1sOmxhbmcgYXJlIG1hcHBlZCB0byAnLXdl
YmtpdC1sb2NhbGUnIHRvIHVzZSB0aGVpciB2YWx1ZSBpbiBmb250IGZhbGxiYWNrLgorCitQQVNT
IGdldExhbmdPZk5vZGUoJ3gxJykgaXMgImphIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCd4MicpIGlz
ICJqYSIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgneDMnKSBpcyAiamEiCitQQVNTIGdldExhbmdPZk5v
ZGUoJ2wxJykgaXMgInpoIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdsMicpIGlzICJ6aCIKK1BBU1Mg
Z2V0TGFuZ09mTm9kZSgnbDMnKSBpcyAiemgiCitQQVNTIGdldExhbmdPZk5vZGUoJ20xJykgaXMg
ImtvIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdtMicpIGlzICJmciIKK1BBU1MgZ2V0TGFuZ09mTm9k
ZSgnbTMnKSBpcyAiZnIiCitQQVNTIGdldExhbmdPZk5vZGUoJ24xJykgaXMgImZyIgorUEFTUyBn
ZXRMYW5nT2ZOb2RlKCduMicpIGlzICJmciIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgnbjMnKSBpcyAi
c3YiCitQQVNTIGdldExhbmdPZk5vZGUoJ3AxJykgaXMgImphIgorUEFTUyBnZXRMYW5nT2ZOb2Rl
KCdwMicpIGlzICJhdXRvIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdxMScpIGlzICJqYSIKK1BBU1Mg
Z2V0TGFuZ09mTm9kZSgncTInKSBpcyAiYXV0byIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgncTMnKSBp
cyAiYXV0byIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgncTQnKSBpcyAiYXIiCitQQVNTIGdldExhbmdP
Zk5vZGUoJ3E1JykgaXMgImF1dG8iCitQQVNTIGdldExhbmdPZk5vZGUoJ3E2JykgaXMgIicgICci
CitQQVNTIGdldExhbmdPZk5vZGUoJ3E3JykgaXMgImF1dG8iCitQQVNTIGdldExhbmdPZk5vZGUo
J3E4JykgaXMgInh5enp5IgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdxOScpIGlzICInXVs7XVtbJyIK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBwZWQtdG8td2Via2l0LWxvY2Fs
ZS54aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9sYW5nLW1hcHBlZC10by13ZWJraXQtbG9j
YWxlLnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZTFmNjk5ODg5ZmEyNzk1ODY0YzgyY2U0MDc2MTIzMTZl
NWI4MWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbGFuZy1tYXBw
ZWQtdG8td2Via2l0LWxvY2FsZS54aHRtbApAQCAtMCwwICsxLDYwIEBACis8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0Mv
L0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3ho
dG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+bWFwcGluZyBsYW5nIHRvIC13
ZWJraXQtbG9jYWxlPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMg
aXMgYSB0ZXN0IGZvciA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy9iLzY3NTg2Ij5idWcgNjc1
ODY8L2E+LiBIVE1MIGF0dHJpYnV0ZXMgbGFuZyBhbmQgeG1sOmxhbmcgYXJlIG1hcHBlZCB0byAn
LXdlYmtpdC1sb2NhbGUnIHRvIHVzZSB0aGVpciB2YWx1ZSBpbiBmb250IGZhbGxiYWNrLjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiB4bWw6bGFuZz0iamEiIGxhbmc9ImVuIiBp
ZD0ieDEiPjxkaXYgaWQ9IngyIj48ZGl2IGlkPSJ4MyI+PC9kaXY+PC9kaXY+PC9kaXY+Cis8ZGl2
IGxhbmc9InpoIiBpZD0ibDEiPjxkaXYgaWQ9ImwyIj48ZGl2IGlkPSJsMyI+PC9kaXY+PC9kaXY+
PC9kaXY+Cis8ZGl2IGxhbmc9ImtvIiBpZD0ibTEiPjxkaXYgbGFuZz0iZnIiIHhtbDpsYW5nPSJm
ciIgaWQ9Im0yIj48ZGl2IGlkPSJtMyI+PC9kaXY+PC9kaXY+PC9kaXY+Cis8ZGl2IHhtbDpsYW5n
PSJmciIgaWQ9Im4xIj48ZGl2IGlkPSJuMiI+PGRpdiBsYW5nPSJzdiIgaWQ9Im4zIj48L2Rpdj48
L2Rpdj48L2Rpdj4KKzxkaXYgeG1sOmxhbmc9ImphIiBpZD0icDEiPjxkaXYgbGFuZz0iIiBpZD0i
cDIiPjwvZGl2PjwvZGl2PgorPGRpdiBsYW5nPSJqYSIgaWQ9InExIj4KKyAgICA8ZGl2IGxhbmc9
IiIgaWQ9InEyIj48L2Rpdj4KKyAgICA8ZGl2IHhtbDpsYW5nPSIiIGlkPSJxMyI+PC9kaXY+Cisg
ICAgPGRpdiB4bWw6bGFuZz0iYXIiIGlkPSJxNCI+PGRpdiB4bWw6bGFuZz0iIiBpZD0icTUiPjwv
ZGl2PjwvZGl2PgorICAgIDxkaXYgbGFuZz0iICAiIGlkPSJxNiI+PC9kaXY+CisgICAgPGRpdiBs
YW5nPSJhdXRvIiBpZD0icTciPjwvZGl2PgorICAgIDxkaXYgbGFuZz0ieHl6enkiIGlkPSJxOCI+
PC9kaXY+CisgICAgPGRpdiBsYW5nPSJdWztdW1siIGlkPSJxOSI+PC9kaXY+Cis8L2Rpdj4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBnZXRMYW5nT2ZOb2RlKG4pIHsKKyAgICBlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQobik7CisgICAgcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpLndl
YmtpdExvY2FsZTsKK30KK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgneDEn
KSIsICJqYSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCd4MicpIiwg
ImphIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ3gzJykiLCAiamEi
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgnbDEnKSIsICJ6aCIpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCdsMicpIiwgInpoIik7CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ2wzJykiLCAiemgiKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgnbTEnKSIsICJrbyIpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCdtMicpIiwgImZyIik7CitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImdldExhbmdPZk5vZGUoJ20zJykiLCAiZnIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZ2V0TGFuZ09mTm9kZSgnbjEnKSIsICJmciIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJn
ZXRMYW5nT2ZOb2RlKCduMicpIiwgImZyIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExh
bmdPZk5vZGUoJ24zJykiLCAic3YiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09m
Tm9kZSgncDEnKSIsICJqYSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2Rl
KCdwMicpIiwgImF1dG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgn
cTEnKSIsICJqYSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCdxMicp
IiwgImF1dG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgncTMnKSIs
ICJhdXRvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ3E0JykiLCAi
YXIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgncTUnKSIsICJhdXRv
Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ3E2JykiLCAiJyAgJyIp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCdxNycpIiwgImF1dG8iKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgncTgnKSIsICJ4eXp6eSIpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRMYW5nT2ZOb2RlKCdxOScpIiwgIiddWztdW1snIik7
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC94bWwtbGFuZy1pZ25v
cmVkLWluLWh0bWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3htbC1sYW5n
LWlnbm9yZWQtaW4taHRtbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmMyODczN2ZiOTQ0YmNm
ZWI5ZWRkNDZlNmNmY2JlYTEwM2ZmNWJhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvdGV4dC94bWwtbGFuZy1pZ25vcmVkLWluLWh0bWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTAgQEAKK1RoaXMgdGVzdHMgdGhhdCB0aGUgYXR0cmlidXRlIGluIG5vIG5hbWVzcGFjZSB3
aXRoIG5vIHByZWZpeCBhbmQgd2l0aCB0aGUgbGl0ZXJhbCBsb2NhbG5hbWUgInhtbDpsYW5nIiBp
cyBpZ25vcmVkIGluIEhUTUwuIFNlZSBidWcgNjc1ODYuCisKK1BBU1MgZ2V0TGFuZ09mTm9kZSgn
bTEnKSBpcyAiYXV0byIKK1BBU1MgZ2V0TGFuZ09mTm9kZSgnbjEnKSBpcyAia28iCitQQVNTIGdl
dExhbmdPZk5vZGUoJ28xJykgaXMgImFyIgorUEFTUyBnZXRMYW5nT2ZOb2RlKCdvMicpIGlzICJh
ciIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQveG1sLWxhbmctaWdub3JlZC1pbi1odG1s
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQveG1sLWxhbmctaWdub3JlZC1pbi1odG1sLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWQ4YTNjNDQ0ODcyMjAzNzNkODBkNGUxOWE3OGI1MjFjNTdlZDNkMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC94bWwtbGFuZy1pZ25vcmVk
LWluLWh0bWwuaHRtbApAQCAtMCwwICsxLDI4IEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
PlRoaXMgdGVzdHMgdGhhdCB0aGUgYXR0cmlidXRlIGluIG5vIG5hbWVzcGFjZSB3aXRoIG5vIHBy
ZWZpeCBhbmQgd2l0aCB0aGUgbGl0ZXJhbCBsb2NhbG5hbWUgInhtbDpsYW5nIiBpcyBpZ25vcmVk
IGluIEhUTUwuIFNlZQorPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvYi82NzU4NiI+YnVnIDY3
NTg2PC9hPi48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgeG1sOmxhbmc9ImFy
IiBpZD0ibTEiPjwvZGl2PjwvZGl2PgorPGRpdiBsYW5nPSJrbyI+PGRpdiB4bWw6bGFuZz0iYXIi
IGlkPSJuMSI+PC9kaXY+PC9kaXY+Cis8ZGl2IGxhbmc9ImFyIiBpZD0ibzEiPjxkaXYgeG1sOmxh
bmc9IiIgaWQ9Im8yIj48L2Rpdj48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBnZXRMYW5nT2ZO
b2RlKG4pIHsKKyAgICBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobik7CisgICAgcmV0dXJu
IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpLndlYmtpdExvY2FsZTsKK30KK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygiZ2V0TGFuZ09mTm9kZSgnbTEnKSIsICJhdXRvIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImdldExhbmdPZk5vZGUoJ24xJykiLCAia28iKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiZ2V0TGFuZ09mTm9kZSgnbzEnKSIsICJhciIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJnZXRMYW5nT2ZOb2RlKCdvMicpIiwgImFyIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>