<?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>112240</bug_id>
          
          <creation_ts>2013-03-13 02:42:20 -0700</creation_ts>
          <short_desc>execCommand(&quot;RemoveFormat&quot;) might remove format after the selection</short_desc>
          <delta_ts>2013-04-17 03:28:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Claudio Saavedra">csaavedra</reporter>
          <assigned_to name="Claudio Saavedra">csaavedra</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>854161</commentid>
    <comment_count>0</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-13 02:42:20 -0700</bug_when>
    <thetext>This looks to me like a bug. If we have the following HTML:

    &quot;&lt;q&gt;&lt;b&gt;&lt;div&gt;hello world&lt;/div&gt;&lt;/b&gt;WebKit&lt;/q&gt;&quot;

and we select everything from &quot;world&quot; until right before &quot;WebKit&quot;, execCommand(&quot;RemoveFormat&quot;) will yield the following HTML:

    &quot;&lt;div&gt;&lt;q&gt;&lt;b&gt;hello &lt;/b&gt;&lt;/q&gt;world&lt;/div&gt;WebKit&quot;

This is inconsistent with the behavior of &quot;RemoveFormat&quot; otherwise. Take the following too cases:

1) If we select only &quot;world&quot; before applying &quot;RemoveFormat&quot;, the &lt;q&gt; tag is placed also around &quot;WebKit&quot;:

    &quot;&lt;div&gt;&lt;q&gt;&lt;b&gt;hello &lt;/b&gt;&lt;/q&gt;world&lt;/div&gt;&lt;q&gt;WebKit&lt;/q&gt;&quot;

2) If we select &quot;world&lt;/div&gt;&lt;q&gt;W&quot;, then the &lt;q&gt; tag is placed around &quot;ebKit&quot; too:

    &quot;&lt;div&gt;&lt;q&gt;&lt;b&gt;hello &lt;/b&gt;&lt;/q&gt;world&lt;/div&gt;W&lt;q&gt;ebKit&lt;/q&gt;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854169</commentid>
    <comment_count>1</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-13 03:18:34 -0700</bug_when>
    <thetext>This seems to happen always when selection goes until right after the closing &lt;/div&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858030</commentid>
    <comment_count>2</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-19 01:21:07 -0700</bug_when>
    <thetext>The following test seems to be affected by what could be the same, though I am not entirely sure: editing/style/5046875-1.html

In that test, we have:

&lt;div id=&quot;div&quot; contenteditable=&quot;true&quot;&gt;foo&lt;div&gt;bar&lt;br&gt;baz&lt;/div&gt;

Selecting past the &lt;br&gt; but before &quot;baz&quot; and then applying execCommand(&quot;JustifyCenter&quot;) applies centering to &quot;baz&quot; as well, even when that text is unselected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858032</commentid>
    <comment_count>3</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-19 01:24:06 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; The following test seems to be affected by what could be the same, though I am not entirely sure: editing/style/5046875-1.html
&gt; 
&gt; In that test, we have:
&gt; 
&gt; &lt;div id=&quot;div&quot; contenteditable=&quot;true&quot;&gt;foo&lt;div&gt;bar&lt;br&gt;baz&lt;/div&gt;
&gt; 
&gt; Selecting past the &lt;br&gt; but before &quot;baz&quot; and then applying execCommand(&quot;JustifyCenter&quot;) applies centering to &quot;baz&quot; as well, even when that text is unselected.

Well, I tried with LibreOffice and this is the outcome there, so perhaps this is desired and unrelated to the bug as described in comment 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858041</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-19 01:34:32 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; The following test seems to be affected by what could be the same, though I am not entirely sure: editing/style/5046875-1.html
&gt; &gt; 
&gt; &gt; In that test, we have:
&gt; &gt; 
&gt; &gt; &lt;div id=&quot;div&quot; contenteditable=&quot;true&quot;&gt;foo&lt;div&gt;bar&lt;br&gt;baz&lt;/div&gt;
&gt; &gt; 
&gt; &gt; Selecting past the &lt;br&gt; but before &quot;baz&quot; and then applying execCommand(&quot;JustifyCenter&quot;) applies centering to &quot;baz&quot; as well, even when that text is unselected.
&gt; 
&gt; Well, I tried with LibreOffice and this is the outcome there, so perhaps this is desired and unrelated to the bug as described in comment 0.

That indeed is an intended behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873836</commentid>
    <comment_count>5</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-04-11 08:30:52 -0700</bug_when>
    <thetext>I&apos;ve spent some time learning my way through the editing code and I&apos;ve found a couple of things that might be leading to this bug.

In order to explain this let&apos;s use a simpler HTML fragment

  &lt;b&gt;&lt;div&gt;Foo&lt;/div&gt;Bar&lt;/b&gt;

for which, selection starts right before &quot;Foo&quot; and ends right before &quot;Bar&quot; (using square brackets, that would look like this):

  &lt;b&gt;&lt;div&gt;[Foo&lt;/div&gt;]Bar&lt;/b&gt;

All of the following happens in WebCore::ApplyStyleCommand::removeInlineStyle(). The first thing I&apos;ve noticed is that in that method, pushDownInlineStyleAroundNode() is called for both the start and the end node. The reason why this is done is to ensure that we preserve the style to be removed around the selection. However, for the start node, it is checked whether the current position is in the end of the containing node, in which case what is used to push down the style is the next visually distinct candidate:

    // If the pushDownStart is at the end of a text node, then this node is not fully selected.
    // Move it to the next deep quivalent position to avoid removing the style from this node.
    // e.g. if pushDownStart was at Position(&quot;hello&quot;, 5) in &lt;b&gt;hello&lt;div&gt;world&lt;/div&gt;&lt;/b&gt;, we want Position(&quot;world&quot;, 0) instead.

In the test case we have, there is an analogous situation but for the end node: pushDownEnd is at the beginning of a text node, therefore this node is not really selected. I think, in this case, it makes sense to use the previous visually distinct candidate to push down the style (I have tested this single change locally and all editing tests pass).

After doing that change, and after running pushDownInlineStyleAroundNode() for both the pushDownStart and pushDownNode nodes, the tree is changed to the following:

  &lt;div&gt;Foo&lt;/div&gt;&lt;b&gt;Bar&lt;/b&gt;

This is already looking good (without these changes, we would instead already have &quot;&lt;div&gt;Foo&lt;/div&gt;Bar&quot;). Now comes the next oddity in the code. The block of code that follows takes care of traversing the tree from the start until the end nodes, and removing the format for all nodes in between, as long as they are fully selected. This is ensured by a call to

  nodeFullySelected(node, start, end)

for each HTML element node in the range, including the &lt;B&gt; one that has been pushed down. In particular, for the &lt;B&gt; node, one would expect nodeFullySelected() to return false, as the position where the selection ends is _before_ the last position in the node. Contrarily to this, the function returns true and the &lt;B&gt; node is removed, yielding

  &lt;div&gt;Foo&lt;/div&gt;Bar

as the resulting HTML.

I have yet to find why nodeFullySelected() is returning true here, but I wanted to share this before continuing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874729</commentid>
    <comment_count>6</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-04-12 08:01:40 -0700</bug_when>
    <thetext>&gt; I have yet to find why nodeFullySelected() is returning true here, but I wanted to share this before continuing.

I think I&apos;ve found an answer to this question. This method makes two comparisons to find whether the given node is fully selected. For nodeFullySelected(node, start, end), we are interested in the second comparison, which in the code has the following form:

  comparePositions(lastPositionInOrAfterNode(node).upstream(), end) &lt;= 0

lastPositionInOrAfterNode(node), where node is &lt;B&gt;, as in our example, will return a position that is anchored after all children, however, calling upstream() in this position ends up losing the AnchorType. I suspect this is related to the following comment in WebCore::Position::upstream():

    // FIXME: PositionIterator should respect Before and After positions.

When a Position p has an AnchorType of PositionIsAfterChildren, the position p.upstream() will just have an anchor type of PositionIsOffsetInAnchor but with offset 0. That&apos;s why later Range::compareBoundaryPoints() will return the wrong value comparePositions() will return -1.

Just removing the call to upstream() and using the Position returned by lastPositionInOrAfterNode() works around the issue, but I haven&apos;t investigated yet whether this will break something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874816</commentid>
    <comment_count>7</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-04-12 09:57:08 -0700</bug_when>
    <thetext>So, to make this clearer, this is p = lastPositionInOrAfterNode(node):

  {m_anchorNode = {m_ptr = 0xaa6b00}, m_offset = 0, m_anchorType = 4, m_isLegacyEditingPosition = false}

and this is p.upstream():

  {m_anchorNode = {m_ptr = 0xaa6b00}, m_offset = 0, m_anchorType = 0, m_isLegacyEditingPosition = false}

node is &lt;B&gt; with a text child of length != 0. p is after the child (m_anchorType = 4 means PositionIsAfterChildren) while p.upstream() is *before* the child (m_anchorType = 0 means PositionIsOffsetInAnchor with m_offset = 0).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875868</commentid>
    <comment_count>8</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-04-15 08:53:26 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; So, to make this clearer, this is p = lastPositionInOrAfterNode(node):
&gt; 
&gt;   {m_anchorNode = {m_ptr = 0xaa6b00}, m_offset = 0, m_anchorType = 4, m_isLegacyEditingPosition = false}
&gt; 
&gt; and this is p.upstream():
&gt; 
&gt;   {m_anchorNode = {m_ptr = 0xaa6b00}, m_offset = 0, m_anchorType = 0, m_isLegacyEditingPosition = false}
&gt; 
&gt; node is &lt;B&gt; with a text child of length != 0. p is after the child (m_anchorType = 4 means PositionIsAfterChildren) while p.upstream() is *before* the child (m_anchorType = 0 means PositionIsOffsetInAnchor with m_offset = 0).

Apparently this happens because upstream() is iterating through all of the text node instead of returning the last position in the text node, as it should.

First iteration:

{m_anchorNode = 0x787ae0,	m_nodeAfterPositionInAnchor = 0x0, m_offsetInAnchor = 1}

with anchor node the node with the B tag and the offset in anchor indicating that we are after the child text node.

Second iteration, after the iterator is decremented:

 {m_anchorNode = 0xaad7e0,	m_nodeAfterPositionInAnchor = 0x0, m_offsetInAnchor = 3}

with node now pointing to the text node which is a child of the B tag, and given offset points to the position after the &quot;Foo&quot; text. Unless I am understanding the semantics of WebCore::Position::upstream() totally wrong, *this* should be the position returned by this method. However, this is not the case, and the iteration continues until the iterator moves to a position that is visually distinct and the last visible position is returned instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876539</commentid>
    <comment_count>9</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-04-16 07:01:12 -0700</bug_when>
    <thetext>So the only thing that seems to make sense to me is that in Position::upstream(),

          if (renderer-&gt;isText() &amp;&amp; toRenderText(renderer)-&gt;firstTextBox()) {

firstTextBox() should be returning something else than 0 but for whatever reason there are no text boxes in the renderer (yet?). Should the render tree be updated somehow after the DOM is changed and this is why now this is not working?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876556</commentid>
    <comment_count>10</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-04-16 08:31:26 -0700</bug_when>
    <thetext>Running  node-&gt;document()-&gt;updateLayoutIgnorePendingStylesheets(); updates the TextRender. I&apos;ll attach a patch in brief.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876637</commentid>
    <comment_count>11</comment_count>
      <attachid>198353</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-04-16 11:26:36 -0700</bug_when>
    <thetext>Created attachment 198353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876640</commentid>
    <comment_count>12</comment_count>
      <attachid>198353</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-16 11:32:05 -0700</bug_when>
    <thetext>Comment on attachment 198353
Patch

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

Thanks for the fix.

&gt; Source/WebCore/ChangeLog:7
&gt; +

Please explain why the bug was caused and how you fixed it akin to what you&apos;ve posted on the bug.

&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:1093
&gt; +    if (pushDownEndContainer &amp;&amp; pushDownEndContainer-&gt;isTextNode()
&gt; +        &amp;&amp; !pushDownEnd.computeOffsetInContainerNode())

We can probably fit all of this in one line.

&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:1108
&gt; +    // The tree is changed and the code below, in particular calls to Position::upstream/downstream(),

Nit: The tree may have changed.
Where are we using upstream/downstream?

&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:1109
&gt; +    // rely in an up-to-date layout.

Nit: rely on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876643</commentid>
    <comment_count>13</comment_count>
      <attachid>198354</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-04-16 11:51:41 -0700</bug_when>
    <thetext>Created attachment 198354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876680</commentid>
    <comment_count>14</comment_count>
      <attachid>198354</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-16 11:55:20 -0700</bug_when>
    <thetext>Comment on attachment 198354
Patch

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

&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:1094
&gt;  

We should probably assert that start &amp; end are not in a middle of text node either.
If they were, then we failed to split the text nodes properly.

&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:1109
&gt; +    // The tree may have changed and Position::upstream(), which is used in nodeFullySelected(), relies
&gt; +    // on an up-to-date layout.
&gt; +    node-&gt;document()-&gt;updateLayoutIgnorePendingStylesheets();

On my second thought, we probably need to call this inside nodeFullySelected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877093</commentid>
    <comment_count>15</comment_count>
      <attachid>198354</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-04-17 02:39:36 -0700</bug_when>
    <thetext>Comment on attachment 198354
Patch

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

&gt;&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:1094
&gt;&gt;  
&gt; 
&gt; We should probably assert that start &amp; end are not in a middle of text node either.
&gt; If they were, then we failed to split the text nodes properly.

I&apos;m adding a FIXME for the time being since I am not entirely sure on how to safely check this. I am inclined to do something like this:

    ASSERT(!start.containerNode()-&gt;isTextNode() || start.offsetInContainerNode() == start.containerNode()-&gt;maxCharacterOffset());
    ASSERT(!end.containerNode()-&gt;isTextNode() || end.offsetInContainerNode() == end.containerNode()-&gt;maxCharacterOffset());

If you can confirm this is right I&apos;ll add it later. Perhaps a helper method would make this cleaner?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877098</commentid>
    <comment_count>16</comment_count>
      <attachid>198491</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-04-17 03:00:34 -0700</bug_when>
    <thetext>Created attachment 198491
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877103</commentid>
    <comment_count>17</comment_count>
      <attachid>198491</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-17 03:28:06 -0700</bug_when>
    <thetext>Comment on attachment 198491
Patch for landing

Clearing flags on attachment: 198491

Committed r148597: &lt;http://trac.webkit.org/changeset/148597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877104</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-17 03:28:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198353</attachid>
            <date>2013-04-16 11:26:36 -0700</date>
            <delta_ts>2013-04-16 11:51:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112240-20130416212635.patch</filename>
            <type>text/plain</type>
            <size>7103</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk2NjM2NTQyMTFmZWRl
ZTE4ZjE2MGEyOTdhNmUyMDg4ZDVjZGNmZC4uYTk2ZmRkOGRkYWI2YTlhNjJmNmM3ODFjOWQyODJi
ZTdhNWU2MDdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA0LTE2ICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgZXhlY0NvbW1h
bmQoIlJlbW92ZUZvcm1hdCIpIG1pZ2h0IHJlbW92ZSBmb3JtYXQgYWZ0ZXIgdGhlIHNlbGVjdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMjQw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6
IGVkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdC1tdWx0aXBsZS1lbGVtZW50cy1tYWMu
aHRtbAorCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGUpOiBNYWtlIHN1
cmUgdGhhdAorICAgICAgICBubyBmb3JtYXQgaXMgcmVtb3ZlZCBmcm9tIG5vZGVzIHRoYXQgYXJl
IGZ1bGx5IHNlbGVjdGVkLgorCiAyMDEzLTA0LTEzICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNDgxMjgpOiB3aW5kb3cucmVzaXplVG8g
ZG9lc24ndCB3b3JrIGZyb20gU2FmYXJpIGFkZHJlc3MgYmFyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCA3MzNlMTRkMWUyMzUyZGRhNDQ4NTdh
MTE3ZmUzMWQ2ZjY3NDQ1YzY0Li4yNzk1ZTMyYjhjMjdhZjg3ZWI5M2M5NTljZDE5YWVkOWZjNjBj
MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApA
QCAtMTA4NSw3ICsxMDg1LDEzIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGlu
ZVN0eWxlKEVkaXRpbmdTdHlsZSogc3R5bGUsIGNvbnN0IFBvc2l0aW9uICZzCiAgICAgaWYgKHB1
c2hEb3duU3RhcnRDb250YWluZXIgJiYgcHVzaERvd25TdGFydENvbnRhaW5lci0+aXNUZXh0Tm9k
ZSgpCiAgICAgICAgICYmIHB1c2hEb3duU3RhcnQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9k
ZSgpID09IHB1c2hEb3duU3RhcnRDb250YWluZXItPm1heENoYXJhY3Rlck9mZnNldCgpKQogICAg
ICAgICBwdXNoRG93blN0YXJ0ID0gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUocHVzaERv
d25TdGFydCk7CisgICAgLy8gSWYgcHVzaERvd25FbmQgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgdGV4
dCBub2RlLCB0aGVuIHRoaXMgbm9kZSBpcyBub3QgZnVsbHkgc2VsZWN0ZWQuCisgICAgLy8gTW92
ZSBpdCB0byB0aGUgcHJldmlvdXMgZGVlcCBlcXVpdmFsZW50IHBvc2l0aW9uIHRvIGF2b2lkIHJl
bW92aW5nIHRoZSBzdHlsZSBmcm9tIHRoaXMgbm9kZS4KICAgICBQb3NpdGlvbiBwdXNoRG93bkVu
ZCA9IGVuZC51cHN0cmVhbSgpOworICAgIE5vZGUqIHB1c2hEb3duRW5kQ29udGFpbmVyID0gcHVz
aERvd25FbmQuY29udGFpbmVyTm9kZSgpOworICAgIGlmIChwdXNoRG93bkVuZENvbnRhaW5lciAm
JiBwdXNoRG93bkVuZENvbnRhaW5lci0+aXNUZXh0Tm9kZSgpCisgICAgICAgICYmICFwdXNoRG93
bkVuZC5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpCisgICAgICAgIHB1c2hEb3duRW5k
ID0gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKHB1c2hEb3duRW5kKTsKIAogICAg
IHB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKHN0eWxlLCBwdXNoRG93blN0YXJ0LmRlcHJl
Y2F0ZWROb2RlKCkpOwogICAgIHB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKHN0eWxlLCBw
dXNoRG93bkVuZC5kZXByZWNhdGVkTm9kZSgpKTsKQEAgLTEwOTksNiArMTEwNSw5IEBAIHZvaWQg
QXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWxlKEVkaXRpbmdTdHlsZSogc3R5bGUs
IGNvbnN0IFBvc2l0aW9uICZzCiAgICAgUG9zaXRpb24gZSA9IGVuZC5pc051bGwoKSB8fCBlbmQu
aXNPcnBoYW4oKSA/IHB1c2hEb3duRW5kIDogZW5kOwogCiAgICAgTm9kZSogbm9kZSA9IHN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCk7CisgICAgLy8gVGhlIHRyZWUgaXMgY2hhbmdlZCBhbmQgdGhlIGNv
ZGUgYmVsb3csIGluIHBhcnRpY3VsYXIgY2FsbHMgdG8gUG9zaXRpb246OnVwc3RyZWFtL2Rvd25z
dHJlYW0oKSwKKyAgICAvLyByZWx5IGluIGFuIHVwLXRvLWRhdGUgbGF5b3V0LgorICAgIG5vZGUt
PmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAg
IHdoaWxlIChub2RlKSB7CiAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXh0OwogICAgICAgICBpZiAo
ZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUpKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODc4Y2RlNGY3ODIxMDk2ZjQ3
NTQzZjM2YjI2NTY5ZDU0OWY3ZjFlYS4uZjMzYjAzOTQ0ODVhNjRiZTA2NGZhYzhmMDM2NjdkNjFj
MjUwM2RkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA0LTE2ICBDbGF1ZGlvIFNhYXZl
ZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgZXhlY0NvbW1hbmQoIlJlbW92
ZUZvcm1hdCIpIG1pZ2h0IHJlbW92ZSBmb3JtYXQgYWZ0ZXIgdGhlIHNlbGVjdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMjQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWND
b21tYW5kL3JlbW92ZS1mb3JtYXQtbXVsdGlwbGUtZWxlbWVudHMtbWFjLWV4cGVjdGVkLnR4dDog
VXBkYXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy9yZW1v
dmUtZm9ybWF0LW11bHRpcGxlLWVsZW1lbnRzLW1hYy5qczoKKyAgICAgICAgKHNlbGVjdEZpcnN0
TGluZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBjaGVjayB0aGF0IFJlbW92ZUZvcm1hdCB3b3JrcyB3
aGVuCisgICAgICAgIGEgd2hvbGUgbGluZSBpcyBzZWxlY3RlZC4KKwogMjAxMy0wNC0xNiAgUGFu
IERlbmcgIDxwYW4uZGVuZ0BpbnRlbC5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW05l
dHdvcmtdIENvdmVyIHRoZSB0eXBlIG9mIHByZWZsaWdodCB4aHIuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXQtbXVsdGlwbGUtZWxlbWVu
dHMtbWFjLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVt
b3ZlLWZvcm1hdC1tdWx0aXBsZS1lbGVtZW50cy1tYWMtZXhwZWN0ZWQudHh0CmluZGV4IGJjYjY1
YjdiNjUwNDUyYzAwZWUzMDRlMWIwZWZiZjJmN2Y0OTcwYzYuLmNhZjk5ZTc3YzkyMmQ5MjI1Njg4
ZjYzNGQ2Y2YwNzBmYjQwN2E5NDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvcmVtb3ZlLWZvcm1hdC1tdWx0aXBsZS1lbGVtZW50cy1tYWMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdC1tdWx0
aXBsZS1lbGVtZW50cy1tYWMtZXhwZWN0ZWQudHh0CkBAIC0xNiw2ICsxNiw3IEBAIFBBU1MgUmVt
b3ZlRm9ybWF0IG9uIGZpcnN0IHR3byB3b3JkcyBvZiAiPGFjcm9ueW0+PHR0PjxtYXJrPjxzYW1w
PmhlbGxvPC9zYW1wPjwvCiBQQVNTIFJlbW92ZUZvcm1hdCBvbiBsYXN0IHR3byB3b3JkcyBvZiAi
PGI+PGRpdj5oZWxsbyB3b3JsZDwvZGl2PjwvYj48ZGl2PldlYktpdDwvZGl2PiIgeWllbGRzICI8
ZGl2PjxiPmhlbGxvIDwvYj53b3JsZDwvZGl2PjxkaXY+V2ViS2l0PC9kaXY+IgogUEFTUyBSZW1v
dmVGb3JtYXQgb24gbGFzdCB0d28gd29yZHMgb2YgIjxxPjxiPjxkaXY+aGVsbG8gd29ybGQ8L2Rp
dj48L2I+V2ViS2l0PC9xPiIgeWllbGRzICI8ZGl2PjxxPjxiPmhlbGxvIDwvYj48L3E+d29ybGQ8
L2Rpdj5XZWJLaXQiCiBQQVNTIFJlbW92ZUZvcm1hdCBvbiBzZWNvbmQgd29yZCBvZiAiPHE+PGI+
PGRpdj5oZWxsbyB3b3JsZDwvZGl2PjwvYj5XZWJLaXQ8L3E+IiB5aWVsZHMgIjxkaXY+PHE+PGI+
aGVsbG8gPC9iPjwvcT53b3JsZDwvZGl2PjxxPldlYktpdDwvcT4iCitQQVNTIFJlbW92ZUZvcm1h
dCBvbiBmaXJzdCBsaW5lIG9mICI8Yj48ZGl2PmhlbGxvPC9kaXY+d2Via2l0PC9iPiIgeWllbGRz
ICI8ZGl2PmhlbGxvPC9kaXY+PGI+d2Via2l0PC9iPiIKIFBBU1MgUmVtb3ZlRm9ybWF0IG9uIGFs
bCBvZiAiPGkgc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQ7Ij5oZWxsbzwvaT4gPHU+d29ybGQ8L3U+
IiB5aWVsZHMgImhlbGxvIHdvcmxkIgogUEFTUyBSZW1vdmVGb3JtYXQgb24gc2Vjb25kIHdvcmQg
b2YgIjxmb250IGNvbG9yPSJyZWQiPjxiIHN0eWxlPSJmb250LXNpemU6IGxhcmdlOyI+PHU+aGVs
bG88L3U+IHdvcmxkPC9iPiBXZWJLaXQ8L2ZvbnQ+IiB5aWVsZHMgIjxmb250IGNvbG9yPSJyZWQi
PjxiIHN0eWxlPSJmb250LXNpemU6IGxhcmdlOyI+PHU+aGVsbG88L3U+IDwvYj48L2ZvbnQ+d29y
bGQ8Zm9udCBjb2xvcj0icmVkIj4gV2ViS2l0PC9mb250PiIKIFBBU1MgUmVtb3ZlRm9ybWF0IG9u
IHNlY29uZCB3b3JkIG9mICI8Zm9udCBzaXplPSI1Ij48aT48dSBzdHlsZT0iZm9udC1zaXplOiBz
bWFsbDsiPmhlbGxvPC91PiB3b3JsZDwvaT48Zm9udCBzaXplPSIzIj4gV2ViS2l0PC9mb250Pjwv
Zm9udD4iIHlpZWxkcyAiPGZvbnQgc2l6ZT0iNSI+PGk+PHUgc3R5bGU9ImZvbnQtc2l6ZTogc21h
bGw7Ij5oZWxsbzwvdT4gPC9pPjwvZm9udD53b3JsZDxmb250IHNpemU9IjUiPjxmb250IHNpemU9
IjMiPiBXZWJLaXQ8L2ZvbnQ+PC9mb250PiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvZXhlY0NvbW1hbmQvc2NyaXB0LXRlc3RzL3JlbW92ZS1mb3JtYXQtbXVsdGlwbGUtZWxlbWVu
dHMtbWFjLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9zY3JpcHQtdGVzdHMv
cmVtb3ZlLWZvcm1hdC1tdWx0aXBsZS1lbGVtZW50cy1tYWMuanMKaW5kZXggMTUxMjJiZjIyMjVi
YWY2YTVjMWYyMmE4ODZhOTg3YTBlZjRlOTM2ZC4uN2E4YjYxYzYzYWM4NDA5MGIwNDc1MDA5MmQ5
ZmI3YWRmNDFiYmVjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC9zY3JpcHQtdGVzdHMvcmVtb3ZlLWZvcm1hdC1tdWx0aXBsZS1lbGVtZW50cy1tYWMuanMKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9zY3JpcHQtdGVzdHMvcmVtb3ZlLWZv
cm1hdC1tdWx0aXBsZS1lbGVtZW50cy1tYWMuanMKQEAgLTUxLDYgKzUxLDEyIEBAIGZ1bmN0aW9u
IHNlbGVjdExhc3RXb3JkKGNvbnRhaW5lcikgewogICAgIHJldHVybiAnbGFzdCB3b3JkJzsKIH0K
IAorZnVuY3Rpb24gc2VsZWN0Rmlyc3RMaW5lKGNvbnRhaW5lcikgeworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihjb250YWluZXIsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5tb2RpZnkoJ2V4dGVuZCcsICdmb3J3YXJkJywgJ2xpbmUnKTsKKyAgICByZXR1cm4g
J2ZpcnN0IGxpbmUnOworfQorCiB0ZXN0UmVtb3ZlRm9ybWF0KCdoZWxsbycsIHNlbGVjdEFsbCwg
J2hlbGxvJyk7CiB0ZXN0UmVtb3ZlRm9ybWF0KCc8aT5oZWxsbzwvaT4gPHU+d29ybGQ8L3U+Jywg
c2VsZWN0QWxsLCAnaGVsbG8gd29ybGQnKTsKIHRlc3RSZW1vdmVGb3JtYXQoJzxiPjx1PmhlbGxv
PC91PiB3b3JsZDwvYj4gPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj48ZW0+V2ViS2l0PC9l
bT48L2E+Jywgc2VsZWN0QWxsLCAnaGVsbG8gd29ybGQgPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5v
cmcvIj5XZWJLaXQ8L2E+Jyk7CkBAIC02Niw2ICs3Miw3IEBAIHRlc3RSZW1vdmVGb3JtYXQoJzxh
Y3JvbnltPjx0dD48bWFyaz48c2FtcD5oZWxsbzwvc2FtcD48L21hcms+IHdvcmxkIDxzdWI+V2Vi
S2l0CiB0ZXN0UmVtb3ZlRm9ybWF0KCc8Yj48ZGl2PmhlbGxvIHdvcmxkPC9kaXY+PC9iPjxkaXY+
V2ViS2l0PC9kaXY+Jywgc2VsZWN0TGFzdFR3b1dvcmRzLCAnPGRpdj48Yj5oZWxsbyA8L2I+d29y
bGQ8L2Rpdj48ZGl2PldlYktpdDwvZGl2PicpOwogdGVzdFJlbW92ZUZvcm1hdCgnPHE+PGI+PGRp
dj5oZWxsbyB3b3JsZDwvZGl2PjwvYj5XZWJLaXQ8L3E+Jywgc2VsZWN0TGFzdFR3b1dvcmRzLCAn
PGRpdj48cT48Yj5oZWxsbyA8L2I+PC9xPndvcmxkPC9kaXY+V2ViS2l0Jyk7CiB0ZXN0UmVtb3Zl
Rm9ybWF0KCc8cT48Yj48ZGl2PmhlbGxvIHdvcmxkPC9kaXY+PC9iPldlYktpdDwvcT4nLCBzZWxl
Y3RTZWNvbmRXb3JkLCAnPGRpdj48cT48Yj5oZWxsbyA8L2I+PC9xPndvcmxkPC9kaXY+PHE+V2Vi
S2l0PC9xPicpOwordGVzdFJlbW92ZUZvcm1hdCgnPGI+PGRpdj5oZWxsbzwvZGl2PndlYmtpdDwv
Yj4nLCBzZWxlY3RGaXJzdExpbmUsICc8ZGl2PmhlbGxvPC9kaXY+PGI+d2Via2l0PC9iPicpOwog
CiB0ZXN0UmVtb3ZlRm9ybWF0KCc8aSBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDsiPmhlbGxvPC9p
PiA8dT53b3JsZDwvdT4nLCBzZWxlY3RBbGwsICdoZWxsbyB3b3JsZCcpOwogdGVzdFJlbW92ZUZv
cm1hdCgnPGZvbnQgY29sb3I9InJlZCI+PGIgc3R5bGU9ImZvbnQtc2l6ZTogbGFyZ2U7Ij48dT5o
ZWxsbzwvdT4gd29ybGQ8L2I+IFdlYktpdDwvZm9udD4nLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198354</attachid>
            <date>2013-04-16 11:51:41 -0700</date>
            <delta_ts>2013-04-17 03:00:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112240-20130416215140.patch</filename>
            <type>text/plain</type>
            <size>7954</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk2NjM2NTQyMTFmZWRl
ZTE4ZjE2MGEyOTdhNmUyMDg4ZDVjZGNmZC4uZjhhY2JmYjE3ZjgzYmRlYTEyMGY2ZTIxM2I3ZTRi
YjdhZjc0NjEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTA0LTE2ICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgZXhlY0NvbW1h
bmQoIlJlbW92ZUZvcm1hdCIpIG1pZ2h0IHJlbW92ZSBmb3JtYXQgYWZ0ZXIgdGhlIHNlbGVjdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMjQw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6
IGVkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdC1tdWx0aXBsZS1lbGVtZW50cy1tYWMu
aHRtbAorCisgICAgICAgIFRoaXMgYnVnIGlzIGhpdCB3aGVuIEFwcGx5U3R5bGVDb21tYW5kIGlz
IHVzZWQgdG8gY2hhbmdlIHRoZQorICAgICAgICBzdHlsZSBhbmQgdGhlIGN1cnJlbnQgc2VsZWN0
aW9uIGVuZHMgaW4gdGhlIGJlZ2lubmluZyBvZiBhIG5ldyBub2RlLgorICAgICAgICBUaGUgYnVn
IGlzIGFjdHVhbGx5IGEgdHdvLWZvbGQgdGhpbmc6CisKKyAgICAgICAgMS4gVGhlcmUgd2FzIG5v
IGNoZWNrIGFzIHRvIHdoZXRoZXIgdGhlIGVuZCBub2RlIGlzIHJlYWxseQorICAgICAgICBzZWxl
Y3RlZCBvciBub3QsIGFuZCBmb3JtYXQgd2FzIGFsd2F5cyByZW1vdmVkIGZyb20gaXQgd2l0aAor
ICAgICAgICBwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZSgpLiBBbiBlcXVpdmFsZW50IGNo
ZWNrIGZvciB0aGUgc3RhcnQKKyAgICAgICAgbm9kZSB3YXMgYWxyZWFkeSBpbiBwbGFjZSwgc28g
Zml4IGl0IGFuYWxvZ291c2x5LgorCisgICAgICAgIDIuIFByZXZpb3VzIHN0YWdlIG1pZ2h0IGNo
YW5nZSB0aGUgZG9tIHRyZWUsIHJlc3VsdGluZyBpbiBhIHJlbmRlcgorICAgICAgICB0cmVlIHRo
YXQgaXMgbm90IHVwLXRvLWRhdGUuIFBvc2l0aW9uOjp1cHN0cmVhbSgpIGlzIGxhdGVyIHVzZWQK
KyAgICAgICAgYW5kLCBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGZpbmQgYSB2aXN1YWxseSBlcXVp
dmFsZW50IHBvc2l0aW9uIGluCisgICAgICAgIGEgdGV4dCBub2RlLCB0aGlzIG1ldGhvZCBuZWVk
cyB0aGUgcmVuZGVyIHRyZWUgdG8gYmUgdXAtdG8tZGF0ZSwKKyAgICAgICAgdGhlcmVmb3JlLCBh
IGNhbGwgdG8gdXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCkgaXMKKyAgICAg
ICAgbmVjZXNzYXJ5LgorCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGUp
OiBNYWtlIHN1cmUgdGhhdCBubworICAgICAgICBmb3JtYXQgaXMgcmVtb3ZlZCBmcm9tIG5vZGVz
IHRoYXQgYXJlIGZ1bGx5IHNlbGVjdGVkLgorCiAyMDEzLTA0LTEzICBBbmRyZWFzIEtsaW5nICA8
YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNDgxMjgpOiB3aW5kb3cu
cmVzaXplVG8gZG9lc24ndCB3b3JrIGZyb20gU2FmYXJpIGFkZHJlc3MgYmFyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCA3MzNlMTRkMWUyMzUy
ZGRhNDQ4NTdhMTE3ZmUzMWQ2ZjY3NDQ1YzY0Li45ODdjMDA1NGM5YTZkMDAwNDIxYzlkN2ZkMzUx
MzkxOTA1OTEzOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21t
YW5kLmNwcApAQCAtMTA4NSw3ICsxMDg1LDEyIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnJl
bW92ZUlubGluZVN0eWxlKEVkaXRpbmdTdHlsZSogc3R5bGUsIGNvbnN0IFBvc2l0aW9uICZzCiAg
ICAgaWYgKHB1c2hEb3duU3RhcnRDb250YWluZXIgJiYgcHVzaERvd25TdGFydENvbnRhaW5lci0+
aXNUZXh0Tm9kZSgpCiAgICAgICAgICYmIHB1c2hEb3duU3RhcnQuY29tcHV0ZU9mZnNldEluQ29u
dGFpbmVyTm9kZSgpID09IHB1c2hEb3duU3RhcnRDb250YWluZXItPm1heENoYXJhY3Rlck9mZnNl
dCgpKQogICAgICAgICBwdXNoRG93blN0YXJ0ID0gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRh
dGUocHVzaERvd25TdGFydCk7CisgICAgLy8gSWYgcHVzaERvd25FbmQgaXMgYXQgdGhlIHN0YXJ0
IG9mIGEgdGV4dCBub2RlLCB0aGVuIHRoaXMgbm9kZSBpcyBub3QgZnVsbHkgc2VsZWN0ZWQuCisg
ICAgLy8gTW92ZSBpdCB0byB0aGUgcHJldmlvdXMgZGVlcCBlcXVpdmFsZW50IHBvc2l0aW9uIHRv
IGF2b2lkIHJlbW92aW5nIHRoZSBzdHlsZSBmcm9tIHRoaXMgbm9kZS4KICAgICBQb3NpdGlvbiBw
dXNoRG93bkVuZCA9IGVuZC51cHN0cmVhbSgpOworICAgIE5vZGUqIHB1c2hEb3duRW5kQ29udGFp
bmVyID0gcHVzaERvd25FbmQuY29udGFpbmVyTm9kZSgpOworICAgIGlmIChwdXNoRG93bkVuZENv
bnRhaW5lciAmJiBwdXNoRG93bkVuZENvbnRhaW5lci0+aXNUZXh0Tm9kZSgpICYmICFwdXNoRG93
bkVuZC5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpCisgICAgICAgIHB1c2hEb3duRW5k
ID0gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKHB1c2hEb3duRW5kKTsKIAogICAg
IHB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKHN0eWxlLCBwdXNoRG93blN0YXJ0LmRlcHJl
Y2F0ZWROb2RlKCkpOwogICAgIHB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKHN0eWxlLCBw
dXNoRG93bkVuZC5kZXByZWNhdGVkTm9kZSgpKTsKQEAgLTEwOTksNiArMTEwNCw5IEBAIHZvaWQg
QXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWxlKEVkaXRpbmdTdHlsZSogc3R5bGUs
IGNvbnN0IFBvc2l0aW9uICZzCiAgICAgUG9zaXRpb24gZSA9IGVuZC5pc051bGwoKSB8fCBlbmQu
aXNPcnBoYW4oKSA/IHB1c2hEb3duRW5kIDogZW5kOwogCiAgICAgTm9kZSogbm9kZSA9IHN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCk7CisgICAgLy8gVGhlIHRyZWUgbWF5IGhhdmUgY2hhbmdlZCBhbmQg
UG9zaXRpb246OnVwc3RyZWFtKCksIHdoaWNoIGlzIHVzZWQgaW4gbm9kZUZ1bGx5U2VsZWN0ZWQo
KSwgcmVsaWVzCisgICAgLy8gb24gYW4gdXAtdG8tZGF0ZSBsYXlvdXQuCisgICAgbm9kZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgd2hp
bGUgKG5vZGUpIHsKICAgICAgICAgUmVmUHRyPE5vZGU+IG5leHQ7CiAgICAgICAgIGlmIChlZGl0
aW5nSWdub3Jlc0NvbnRlbnQobm9kZSkpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NzhjZGU0Zjc4MjEwOTZmNDc1NDNm
MzZiMjY1NjlkNTQ5ZjdmMWVhLi5mMzNiMDM5NDQ4NWE2NGJlMDY0ZmFjOGYwMzY2N2Q2MWMyNTAz
ZGRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDQtMTYgIENsYXVkaW8gU2FhdmVkcmEg
IDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBleGVjQ29tbWFuZCgiUmVtb3ZlRm9y
bWF0IikgbWlnaHQgcmVtb3ZlIGZvcm1hdCBhZnRlciB0aGUgc2VsZWN0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIyNDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1h
bmQvcmVtb3ZlLWZvcm1hdC1tdWx0aXBsZS1lbGVtZW50cy1tYWMtZXhwZWN0ZWQudHh0OiBVcGRh
dGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvc2NyaXB0LXRlc3RzL3JlbW92ZS1m
b3JtYXQtbXVsdGlwbGUtZWxlbWVudHMtbWFjLmpzOgorICAgICAgICAoc2VsZWN0Rmlyc3RMaW5l
KTogQWRkIHRoaXMgbWV0aG9kIHRvIGNoZWNrIHRoYXQgUmVtb3ZlRm9ybWF0IHdvcmtzIHdoZW4K
KyAgICAgICAgYSB3aG9sZSBsaW5lIGlzIHNlbGVjdGVkLgorCiAyMDEzLTA0LTE2ICBQYW4gRGVu
ZyAgPHBhbi5kZW5nQGludGVsLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbTmV0d29y
a10gQ292ZXIgdGhlIHR5cGUgb2YgcHJlZmxpZ2h0IHhoci4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdC1tdWx0aXBsZS1lbGVtZW50cy1t
YWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUt
Zm9ybWF0LW11bHRpcGxlLWVsZW1lbnRzLW1hYy1leHBlY3RlZC50eHQKaW5kZXggYmNiNjViN2I2
NTA0NTJjMDBlZTMwNGUxYjBlZmJmMmY3ZjQ5NzBjNi4uY2FmOTllNzdjOTIyZDkyMjU2ODhmNjM0
ZDZjZjA3MGZiNDA3YTk0NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC9yZW1vdmUtZm9ybWF0LW11bHRpcGxlLWVsZW1lbnRzLW1hYy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LW11bHRpcGxl
LWVsZW1lbnRzLW1hYy1leHBlY3RlZC50eHQKQEAgLTE2LDYgKzE2LDcgQEAgUEFTUyBSZW1vdmVG
b3JtYXQgb24gZmlyc3QgdHdvIHdvcmRzIG9mICI8YWNyb255bT48dHQ+PG1hcms+PHNhbXA+aGVs
bG88L3NhbXA+PC8KIFBBU1MgUmVtb3ZlRm9ybWF0IG9uIGxhc3QgdHdvIHdvcmRzIG9mICI8Yj48
ZGl2PmhlbGxvIHdvcmxkPC9kaXY+PC9iPjxkaXY+V2ViS2l0PC9kaXY+IiB5aWVsZHMgIjxkaXY+
PGI+aGVsbG8gPC9iPndvcmxkPC9kaXY+PGRpdj5XZWJLaXQ8L2Rpdj4iCiBQQVNTIFJlbW92ZUZv
cm1hdCBvbiBsYXN0IHR3byB3b3JkcyBvZiAiPHE+PGI+PGRpdj5oZWxsbyB3b3JsZDwvZGl2Pjwv
Yj5XZWJLaXQ8L3E+IiB5aWVsZHMgIjxkaXY+PHE+PGI+aGVsbG8gPC9iPjwvcT53b3JsZDwvZGl2
PldlYktpdCIKIFBBU1MgUmVtb3ZlRm9ybWF0IG9uIHNlY29uZCB3b3JkIG9mICI8cT48Yj48ZGl2
PmhlbGxvIHdvcmxkPC9kaXY+PC9iPldlYktpdDwvcT4iIHlpZWxkcyAiPGRpdj48cT48Yj5oZWxs
byA8L2I+PC9xPndvcmxkPC9kaXY+PHE+V2ViS2l0PC9xPiIKK1BBU1MgUmVtb3ZlRm9ybWF0IG9u
IGZpcnN0IGxpbmUgb2YgIjxiPjxkaXY+aGVsbG88L2Rpdj53ZWJraXQ8L2I+IiB5aWVsZHMgIjxk
aXY+aGVsbG88L2Rpdj48Yj53ZWJraXQ8L2I+IgogUEFTUyBSZW1vdmVGb3JtYXQgb24gYWxsIG9m
ICI8aSBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDsiPmhlbGxvPC9pPiA8dT53b3JsZDwvdT4iIHlp
ZWxkcyAiaGVsbG8gd29ybGQiCiBQQVNTIFJlbW92ZUZvcm1hdCBvbiBzZWNvbmQgd29yZCBvZiAi
PGZvbnQgY29sb3I9InJlZCI+PGIgc3R5bGU9ImZvbnQtc2l6ZTogbGFyZ2U7Ij48dT5oZWxsbzwv
dT4gd29ybGQ8L2I+IFdlYktpdDwvZm9udD4iIHlpZWxkcyAiPGZvbnQgY29sb3I9InJlZCI+PGIg
c3R5bGU9ImZvbnQtc2l6ZTogbGFyZ2U7Ij48dT5oZWxsbzwvdT4gPC9iPjwvZm9udD53b3JsZDxm
b250IGNvbG9yPSJyZWQiPiBXZWJLaXQ8L2ZvbnQ+IgogUEFTUyBSZW1vdmVGb3JtYXQgb24gc2Vj
b25kIHdvcmQgb2YgIjxmb250IHNpemU9IjUiPjxpPjx1IHN0eWxlPSJmb250LXNpemU6IHNtYWxs
OyI+aGVsbG88L3U+IHdvcmxkPC9pPjxmb250IHNpemU9IjMiPiBXZWJLaXQ8L2ZvbnQ+PC9mb250
PiIgeWllbGRzICI8Zm9udCBzaXplPSI1Ij48aT48dSBzdHlsZT0iZm9udC1zaXplOiBzbWFsbDsi
PmhlbGxvPC91PiA8L2k+PC9mb250PndvcmxkPGZvbnQgc2l6ZT0iNSI+PGZvbnQgc2l6ZT0iMyI+
IFdlYktpdDwvZm9udD48L2ZvbnQ+IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9zY3JpcHQtdGVzdHMvcmVtb3ZlLWZvcm1hdC1tdWx0aXBsZS1lbGVtZW50cy1t
YWMuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy9yZW1v
dmUtZm9ybWF0LW11bHRpcGxlLWVsZW1lbnRzLW1hYy5qcwppbmRleCAxNTEyMmJmMjIyNWJhZjZh
NWMxZjIyYTg4NmE5ODdhMGVmNGU5MzZkLi43YThiNjFjNjNhYzg0MDkwYjA0NzUwMDkyZDlmYjdh
ZGY0MWJiZWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3Nj
cmlwdC10ZXN0cy9yZW1vdmUtZm9ybWF0LW11bHRpcGxlLWVsZW1lbnRzLW1hYy5qcworKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy9yZW1vdmUtZm9ybWF0
LW11bHRpcGxlLWVsZW1lbnRzLW1hYy5qcwpAQCAtNTEsNiArNTEsMTIgQEAgZnVuY3Rpb24gc2Vs
ZWN0TGFzdFdvcmQoY29udGFpbmVyKSB7CiAgICAgcmV0dXJuICdsYXN0IHdvcmQnOwogfQogCitm
dW5jdGlvbiBzZWxlY3RGaXJzdExpbmUoY29udGFpbmVyKSB7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLnNldFBvc2l0aW9uKGNvbnRhaW5lciwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLm1vZGlmeSgnZXh0ZW5kJywgJ2ZvcndhcmQnLCAnbGluZScpOworICAgIHJldHVybiAnZmly
c3QgbGluZSc7Cit9CisKIHRlc3RSZW1vdmVGb3JtYXQoJ2hlbGxvJywgc2VsZWN0QWxsLCAnaGVs
bG8nKTsKIHRlc3RSZW1vdmVGb3JtYXQoJzxpPmhlbGxvPC9pPiA8dT53b3JsZDwvdT4nLCBzZWxl
Y3RBbGwsICdoZWxsbyB3b3JsZCcpOwogdGVzdFJlbW92ZUZvcm1hdCgnPGI+PHU+aGVsbG88L3U+
IHdvcmxkPC9iPiA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPjxlbT5XZWJLaXQ8L2VtPjwv
YT4nLCBzZWxlY3RBbGwsICdoZWxsbyB3b3JsZCA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8i
PldlYktpdDwvYT4nKTsKQEAgLTY2LDYgKzcyLDcgQEAgdGVzdFJlbW92ZUZvcm1hdCgnPGFjcm9u
eW0+PHR0PjxtYXJrPjxzYW1wPmhlbGxvPC9zYW1wPjwvbWFyaz4gd29ybGQgPHN1Yj5XZWJLaXQK
IHRlc3RSZW1vdmVGb3JtYXQoJzxiPjxkaXY+aGVsbG8gd29ybGQ8L2Rpdj48L2I+PGRpdj5XZWJL
aXQ8L2Rpdj4nLCBzZWxlY3RMYXN0VHdvV29yZHMsICc8ZGl2PjxiPmhlbGxvIDwvYj53b3JsZDwv
ZGl2PjxkaXY+V2ViS2l0PC9kaXY+Jyk7CiB0ZXN0UmVtb3ZlRm9ybWF0KCc8cT48Yj48ZGl2Pmhl
bGxvIHdvcmxkPC9kaXY+PC9iPldlYktpdDwvcT4nLCBzZWxlY3RMYXN0VHdvV29yZHMsICc8ZGl2
PjxxPjxiPmhlbGxvIDwvYj48L3E+d29ybGQ8L2Rpdj5XZWJLaXQnKTsKIHRlc3RSZW1vdmVGb3Jt
YXQoJzxxPjxiPjxkaXY+aGVsbG8gd29ybGQ8L2Rpdj48L2I+V2ViS2l0PC9xPicsIHNlbGVjdFNl
Y29uZFdvcmQsICc8ZGl2PjxxPjxiPmhlbGxvIDwvYj48L3E+d29ybGQ8L2Rpdj48cT5XZWJLaXQ8
L3E+Jyk7Cit0ZXN0UmVtb3ZlRm9ybWF0KCc8Yj48ZGl2PmhlbGxvPC9kaXY+d2Via2l0PC9iPics
IHNlbGVjdEZpcnN0TGluZSwgJzxkaXY+aGVsbG88L2Rpdj48Yj53ZWJraXQ8L2I+Jyk7CiAKIHRl
c3RSZW1vdmVGb3JtYXQoJzxpIHN0eWxlPSJmb250LXdlaWdodDpib2xkOyI+aGVsbG88L2k+IDx1
PndvcmxkPC91PicsIHNlbGVjdEFsbCwgJ2hlbGxvIHdvcmxkJyk7CiB0ZXN0UmVtb3ZlRm9ybWF0
KCc8Zm9udCBjb2xvcj0icmVkIj48YiBzdHlsZT0iZm9udC1zaXplOiBsYXJnZTsiPjx1PmhlbGxv
PC91PiB3b3JsZDwvYj4gV2ViS2l0PC9mb250PicsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198491</attachid>
            <date>2013-04-17 03:00:34 -0700</date>
            <delta_ts>2013-04-17 03:28:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112240-20130417130031.patch</filename>
            <type>text/plain</type>
            <size>8545</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWIyZjljNWVkMjU0MDYz
Yzk1OWNkMTQ4ODE2Zjg5ZDYzNmI5ZWZlYi4uNGU2M2FhNGRjMGJhZjdiYTFkZTM3ZWY5NmUyOGQx
NzJiMDA1MjBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTA0LTE2ICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgZXhlY0NvbW1h
bmQoIlJlbW92ZUZvcm1hdCIpIG1pZ2h0IHJlbW92ZSBmb3JtYXQgYWZ0ZXIgdGhlIHNlbGVjdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMjQw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFRlc3RzOiBl
ZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXQtbXVsdGlwbGUtZWxlbWVudHMtbWFjLmh0
bWwKKworICAgICAgICBUaGlzIGJ1ZyBpcyBoaXQgd2hlbiBBcHBseVN0eWxlQ29tbWFuZCBpcyB1
c2VkIHRvIGNoYW5nZSB0aGUKKyAgICAgICAgc3R5bGUgYW5kIHRoZSBjdXJyZW50IHNlbGVjdGlv
biBlbmRzIGluIHRoZSBiZWdpbm5pbmcgb2YgYSBuZXcgbm9kZS4KKyAgICAgICAgVGhlIGJ1ZyBp
cyBhY3R1YWxseSBhIHR3by1mb2xkIHRoaW5nOgorCisgICAgICAgIDEuIFRoZXJlIHdhcyBubyBj
aGVjayBhcyB0byB3aGV0aGVyIHRoZSBlbmQgbm9kZSBpcyByZWFsbHkKKyAgICAgICAgc2VsZWN0
ZWQgb3Igbm90LCBhbmQgZm9ybWF0IHdhcyBhbHdheXMgcmVtb3ZlZCBmcm9tIGl0IHdpdGgKKyAg
ICAgICAgcHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoKS4gQW4gZXF1aXZhbGVudCBjaGVj
ayBmb3IgdGhlIHN0YXJ0CisgICAgICAgIG5vZGUgd2FzIGFscmVhZHkgaW4gcGxhY2UsIHNvIGZp
eCBpdCBhbmFsb2dvdXNseS4KKworICAgICAgICAyLiBQcmV2aW91cyBzdGFnZSBtaWdodCBjaGFu
Z2UgdGhlIGRvbSB0cmVlLCByZXN1bHRpbmcgaW4gYSByZW5kZXIKKyAgICAgICAgdHJlZSB0aGF0
IGlzIG5vdCB1cC10by1kYXRlLiBQb3NpdGlvbjo6dXBzdHJlYW0oKSBpcyBsYXRlciB1c2VkCisg
ICAgICAgIGFuZCwgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBmaW5kIGEgdmlzdWFsbHkgZXF1aXZh
bGVudCBwb3NpdGlvbiBpbgorICAgICAgICBhIHRleHQgbm9kZSwgdGhpcyBtZXRob2QgbmVlZHMg
dGhlIHJlbmRlciB0cmVlIHRvIGJlIHVwLXRvLWRhdGUsCisgICAgICAgIHRoZXJlZm9yZSwgYSBj
YWxsIHRvIHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpIGlzCisgICAgICAg
IG5lY2Vzc2FyeS4KKworICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWxlKTog
TWFrZSBzdXJlIHRoYXQgbm8KKyAgICAgICAgZm9ybWF0IGlzIHJlbW92ZWQgZnJvbSB0aGUgZW5k
IG5vZGUgaWYgaXQncyBub3QgZnVsbHkgc2VsZWN0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVN0eWxlQ29tbWFuZDo6bm9kZUZ1bGx5U2VsZWN0ZWQpOiBDYWxsIHVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cygpCisKIDIwMTMtMDQtMTYgIE1hY2llaiBTdGFjaG93aWFrICA8
bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIEpTQy1zcGVjaWZpYyBJREwgZXh0ZW5k
ZWQgYXR0cmlidXRlcyB3aXRoIGdlbmVyaWMgKEpTQytWOCkgb25lcywgbm93IHRoYXQgdGhlIGRp
c3RpbmN0aW9uIG5vIGxvbmdlciBtYXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDczM2UxNGQxZTIzNTJkZGE0NDg1N2ExMTdmZTMxZDZm
Njc0NDVjNjQuLjkwNjQ5ZDQ1ZDEyNjU5OTAzODRiZTZiNWRiN2ViYmU5MGMyYzM2ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC0xMDc2LDYg
KzEwNzYsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsZShFZGl0
aW5nU3R5bGUqIHN0eWxlLCBjb25zdCBQb3NpdGlvbiAmcwogICAgIEFTU0VSVChzdGFydC5hbmNo
b3JOb2RlKCktPmluRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKGVuZC5hbmNob3JOb2RlKCktPmlu
RG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKGNvbXBhcmVQb3NpdGlvbnMoc3RhcnQsIGVuZCkgPD0g
MCk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBzdGFydC9lbmQgYXJlIG5v
dCBpbiB0aGUgbWlkZGxlIG9mIGEgdGV4dCBub2RlLgogCiAgICAgUG9zaXRpb24gcHVzaERvd25T
dGFydCA9IHN0YXJ0LmRvd25zdHJlYW0oKTsKICAgICAvLyBJZiB0aGUgcHVzaERvd25TdGFydCBp
cyBhdCB0aGUgZW5kIG9mIGEgdGV4dCBub2RlLCB0aGVuIHRoaXMgbm9kZSBpcyBub3QgZnVsbHkg
c2VsZWN0ZWQuCkBAIC0xMDg1LDcgKzEwODYsMTIgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6
cmVtb3ZlSW5saW5lU3R5bGUoRWRpdGluZ1N0eWxlKiBzdHlsZSwgY29uc3QgUG9zaXRpb24gJnMK
ICAgICBpZiAocHVzaERvd25TdGFydENvbnRhaW5lciAmJiBwdXNoRG93blN0YXJ0Q29udGFpbmVy
LT5pc1RleHROb2RlKCkKICAgICAgICAgJiYgcHVzaERvd25TdGFydC5jb21wdXRlT2Zmc2V0SW5D
b250YWluZXJOb2RlKCkgPT0gcHVzaERvd25TdGFydENvbnRhaW5lci0+bWF4Q2hhcmFjdGVyT2Zm
c2V0KCkpCiAgICAgICAgIHB1c2hEb3duU3RhcnQgPSBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRp
ZGF0ZShwdXNoRG93blN0YXJ0KTsKKyAgICAvLyBJZiBwdXNoRG93bkVuZCBpcyBhdCB0aGUgc3Rh
cnQgb2YgYSB0ZXh0IG5vZGUsIHRoZW4gdGhpcyBub2RlIGlzIG5vdCBmdWxseSBzZWxlY3RlZC4K
KyAgICAvLyBNb3ZlIGl0IHRvIHRoZSBwcmV2aW91cyBkZWVwIGVxdWl2YWxlbnQgcG9zaXRpb24g
dG8gYXZvaWQgcmVtb3ZpbmcgdGhlIHN0eWxlIGZyb20gdGhpcyBub2RlLgogICAgIFBvc2l0aW9u
IHB1c2hEb3duRW5kID0gZW5kLnVwc3RyZWFtKCk7CisgICAgTm9kZSogcHVzaERvd25FbmRDb250
YWluZXIgPSBwdXNoRG93bkVuZC5jb250YWluZXJOb2RlKCk7CisgICAgaWYgKHB1c2hEb3duRW5k
Q29udGFpbmVyICYmIHB1c2hEb3duRW5kQ29udGFpbmVyLT5pc1RleHROb2RlKCkgJiYgIXB1c2hE
b3duRW5kLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkKKyAgICAgICAgcHVzaERvd25F
bmQgPSBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUocHVzaERvd25FbmQpOwogCiAg
ICAgcHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoc3R5bGUsIHB1c2hEb3duU3RhcnQuZGVw
cmVjYXRlZE5vZGUoKSk7CiAgICAgcHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoc3R5bGUs
IHB1c2hEb3duRW5kLmRlcHJlY2F0ZWROb2RlKCkpOwpAQCAtMTE1Miw2ICsxMTU4LDkgQEAgYm9v
bCBBcHBseVN0eWxlQ29tbWFuZDo6bm9kZUZ1bGx5U2VsZWN0ZWQoTm9kZSAqbm9kZSwgY29uc3Qg
UG9zaXRpb24gJnN0YXJ0LCBjb24KICAgICBBU1NFUlQobm9kZSk7CiAgICAgQVNTRVJUKG5vZGUt
PmlzRWxlbWVudE5vZGUoKSk7CiAKKyAgICAvLyBUaGUgdHJlZSBtYXkgaGF2ZSBjaGFuZ2VkIGFu
ZCBQb3NpdGlvbjo6dXBzdHJlYW0oKSByZWxpZXMgb24gYW4gdXAtdG8tZGF0ZSBsYXlvdXQuCisg
ICAgbm9kZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CisKICAgICByZXR1cm4gY29tcGFyZVBvc2l0aW9ucyhmaXJzdFBvc2l0aW9uSW5PckJlZm9y
ZU5vZGUobm9kZSksIHN0YXJ0KSA+PSAwCiAgICAgICAgICYmIGNvbXBhcmVQb3NpdGlvbnMobGFz
dFBvc2l0aW9uSW5PckFmdGVyTm9kZShub2RlKS51cHN0cmVhbSgpLCBlbmQpIDw9IDA7CiB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZTM4NTFiNGE4YTAzYTA1YWY1NDhhYTY2NjliMTg0MjZlMDRkOTdhYi4uNGE2ODRhNzM1
M2QxYzQ1YzFhM2FkNWVmZDQ5NmIxMjEyZTczNzE1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEzLTA0LTE2ICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgZXhlY0NvbW1hbmQoIlJlbW92ZUZvcm1hdCIpIG1pZ2h0IHJlbW92ZSBmb3JtYXQgYWZ0
ZXIgdGhlIHNlbGVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTEyMjQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisg
ICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LW11bHRpcGxlLWVsZW1l
bnRzLW1hYy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29t
bWFuZC9zY3JpcHQtdGVzdHMvcmVtb3ZlLWZvcm1hdC1tdWx0aXBsZS1lbGVtZW50cy1tYWMuanM6
CisgICAgICAgIChzZWxlY3RGaXJzdExpbmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gY2hlY2sgdGhh
dCBSZW1vdmVGb3JtYXQgd29ya3Mgd2hlbgorICAgICAgICBhIHdob2xlIGxpbmUgaXMgc2VsZWN0
ZWQuCisKIDIwMTMtMDQtMTYgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CiAKICAg
ICAgICAgW0NTUyBFeGNsdXNpb25zXSBwb2x5Z29uIHNoYXBlLWluc2lkZSBsYXlvdXQgZmFpbHMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1h
dC1tdWx0aXBsZS1lbGVtZW50cy1tYWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LW11bHRpcGxlLWVsZW1lbnRzLW1hYy1leHBlY3Rl
ZC50eHQKaW5kZXggYmNiNjViN2I2NTA0NTJjMDBlZTMwNGUxYjBlZmJmMmY3ZjQ5NzBjNi4uY2Fm
OTllNzdjOTIyZDkyMjU2ODhmNjM0ZDZjZjA3MGZiNDA3YTk0NSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LW11bHRpcGxlLWVsZW1lbnRz
LW1hYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9y
ZW1vdmUtZm9ybWF0LW11bHRpcGxlLWVsZW1lbnRzLW1hYy1leHBlY3RlZC50eHQKQEAgLTE2LDYg
KzE2LDcgQEAgUEFTUyBSZW1vdmVGb3JtYXQgb24gZmlyc3QgdHdvIHdvcmRzIG9mICI8YWNyb255
bT48dHQ+PG1hcms+PHNhbXA+aGVsbG88L3NhbXA+PC8KIFBBU1MgUmVtb3ZlRm9ybWF0IG9uIGxh
c3QgdHdvIHdvcmRzIG9mICI8Yj48ZGl2PmhlbGxvIHdvcmxkPC9kaXY+PC9iPjxkaXY+V2ViS2l0
PC9kaXY+IiB5aWVsZHMgIjxkaXY+PGI+aGVsbG8gPC9iPndvcmxkPC9kaXY+PGRpdj5XZWJLaXQ8
L2Rpdj4iCiBQQVNTIFJlbW92ZUZvcm1hdCBvbiBsYXN0IHR3byB3b3JkcyBvZiAiPHE+PGI+PGRp
dj5oZWxsbyB3b3JsZDwvZGl2PjwvYj5XZWJLaXQ8L3E+IiB5aWVsZHMgIjxkaXY+PHE+PGI+aGVs
bG8gPC9iPjwvcT53b3JsZDwvZGl2PldlYktpdCIKIFBBU1MgUmVtb3ZlRm9ybWF0IG9uIHNlY29u
ZCB3b3JkIG9mICI8cT48Yj48ZGl2PmhlbGxvIHdvcmxkPC9kaXY+PC9iPldlYktpdDwvcT4iIHlp
ZWxkcyAiPGRpdj48cT48Yj5oZWxsbyA8L2I+PC9xPndvcmxkPC9kaXY+PHE+V2ViS2l0PC9xPiIK
K1BBU1MgUmVtb3ZlRm9ybWF0IG9uIGZpcnN0IGxpbmUgb2YgIjxiPjxkaXY+aGVsbG88L2Rpdj53
ZWJraXQ8L2I+IiB5aWVsZHMgIjxkaXY+aGVsbG88L2Rpdj48Yj53ZWJraXQ8L2I+IgogUEFTUyBS
ZW1vdmVGb3JtYXQgb24gYWxsIG9mICI8aSBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDsiPmhlbGxv
PC9pPiA8dT53b3JsZDwvdT4iIHlpZWxkcyAiaGVsbG8gd29ybGQiCiBQQVNTIFJlbW92ZUZvcm1h
dCBvbiBzZWNvbmQgd29yZCBvZiAiPGZvbnQgY29sb3I9InJlZCI+PGIgc3R5bGU9ImZvbnQtc2l6
ZTogbGFyZ2U7Ij48dT5oZWxsbzwvdT4gd29ybGQ8L2I+IFdlYktpdDwvZm9udD4iIHlpZWxkcyAi
PGZvbnQgY29sb3I9InJlZCI+PGIgc3R5bGU9ImZvbnQtc2l6ZTogbGFyZ2U7Ij48dT5oZWxsbzwv
dT4gPC9iPjwvZm9udD53b3JsZDxmb250IGNvbG9yPSJyZWQiPiBXZWJLaXQ8L2ZvbnQ+IgogUEFT
UyBSZW1vdmVGb3JtYXQgb24gc2Vjb25kIHdvcmQgb2YgIjxmb250IHNpemU9IjUiPjxpPjx1IHN0
eWxlPSJmb250LXNpemU6IHNtYWxsOyI+aGVsbG88L3U+IHdvcmxkPC9pPjxmb250IHNpemU9IjMi
PiBXZWJLaXQ8L2ZvbnQ+PC9mb250PiIgeWllbGRzICI8Zm9udCBzaXplPSI1Ij48aT48dSBzdHls
ZT0iZm9udC1zaXplOiBzbWFsbDsiPmhlbGxvPC91PiA8L2k+PC9mb250PndvcmxkPGZvbnQgc2l6
ZT0iNSI+PGZvbnQgc2l6ZT0iMyI+IFdlYktpdDwvZm9udD48L2ZvbnQ+IgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9zY3JpcHQtdGVzdHMvcmVtb3ZlLWZvcm1h
dC1tdWx0aXBsZS1lbGVtZW50cy1tYWMuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21t
YW5kL3NjcmlwdC10ZXN0cy9yZW1vdmUtZm9ybWF0LW11bHRpcGxlLWVsZW1lbnRzLW1hYy5qcwpp
bmRleCAxNTEyMmJmMjIyNWJhZjZhNWMxZjIyYTg4NmE5ODdhMGVmNGU5MzZkLi43YThiNjFjNjNh
Yzg0MDkwYjA0NzUwMDkyZDlmYjdhZGY0MWJiZWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy9yZW1vdmUtZm9ybWF0LW11bHRpcGxlLWVs
ZW1lbnRzLW1hYy5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3Njcmlw
dC10ZXN0cy9yZW1vdmUtZm9ybWF0LW11bHRpcGxlLWVsZW1lbnRzLW1hYy5qcwpAQCAtNTEsNiAr
NTEsMTIgQEAgZnVuY3Rpb24gc2VsZWN0TGFzdFdvcmQoY29udGFpbmVyKSB7CiAgICAgcmV0dXJu
ICdsYXN0IHdvcmQnOwogfQogCitmdW5jdGlvbiBzZWxlY3RGaXJzdExpbmUoY29udGFpbmVyKSB7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGNvbnRhaW5lciwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLm1vZGlmeSgnZXh0ZW5kJywgJ2ZvcndhcmQnLCAnbGlu
ZScpOworICAgIHJldHVybiAnZmlyc3QgbGluZSc7Cit9CisKIHRlc3RSZW1vdmVGb3JtYXQoJ2hl
bGxvJywgc2VsZWN0QWxsLCAnaGVsbG8nKTsKIHRlc3RSZW1vdmVGb3JtYXQoJzxpPmhlbGxvPC9p
PiA8dT53b3JsZDwvdT4nLCBzZWxlY3RBbGwsICdoZWxsbyB3b3JsZCcpOwogdGVzdFJlbW92ZUZv
cm1hdCgnPGI+PHU+aGVsbG88L3U+IHdvcmxkPC9iPiA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9y
Zy8iPjxlbT5XZWJLaXQ8L2VtPjwvYT4nLCBzZWxlY3RBbGwsICdoZWxsbyB3b3JsZCA8YSBocmVm
PSJodHRwOi8vd2Via2l0Lm9yZy8iPldlYktpdDwvYT4nKTsKQEAgLTY2LDYgKzcyLDcgQEAgdGVz
dFJlbW92ZUZvcm1hdCgnPGFjcm9ueW0+PHR0PjxtYXJrPjxzYW1wPmhlbGxvPC9zYW1wPjwvbWFy
az4gd29ybGQgPHN1Yj5XZWJLaXQKIHRlc3RSZW1vdmVGb3JtYXQoJzxiPjxkaXY+aGVsbG8gd29y
bGQ8L2Rpdj48L2I+PGRpdj5XZWJLaXQ8L2Rpdj4nLCBzZWxlY3RMYXN0VHdvV29yZHMsICc8ZGl2
PjxiPmhlbGxvIDwvYj53b3JsZDwvZGl2PjxkaXY+V2ViS2l0PC9kaXY+Jyk7CiB0ZXN0UmVtb3Zl
Rm9ybWF0KCc8cT48Yj48ZGl2PmhlbGxvIHdvcmxkPC9kaXY+PC9iPldlYktpdDwvcT4nLCBzZWxl
Y3RMYXN0VHdvV29yZHMsICc8ZGl2PjxxPjxiPmhlbGxvIDwvYj48L3E+d29ybGQ8L2Rpdj5XZWJL
aXQnKTsKIHRlc3RSZW1vdmVGb3JtYXQoJzxxPjxiPjxkaXY+aGVsbG8gd29ybGQ8L2Rpdj48L2I+
V2ViS2l0PC9xPicsIHNlbGVjdFNlY29uZFdvcmQsICc8ZGl2PjxxPjxiPmhlbGxvIDwvYj48L3E+
d29ybGQ8L2Rpdj48cT5XZWJLaXQ8L3E+Jyk7Cit0ZXN0UmVtb3ZlRm9ybWF0KCc8Yj48ZGl2Pmhl
bGxvPC9kaXY+d2Via2l0PC9iPicsIHNlbGVjdEZpcnN0TGluZSwgJzxkaXY+aGVsbG88L2Rpdj48
Yj53ZWJraXQ8L2I+Jyk7CiAKIHRlc3RSZW1vdmVGb3JtYXQoJzxpIHN0eWxlPSJmb250LXdlaWdo
dDpib2xkOyI+aGVsbG88L2k+IDx1PndvcmxkPC91PicsIHNlbGVjdEFsbCwgJ2hlbGxvIHdvcmxk
Jyk7CiB0ZXN0UmVtb3ZlRm9ybWF0KCc8Zm9udCBjb2xvcj0icmVkIj48YiBzdHlsZT0iZm9udC1z
aXplOiBsYXJnZTsiPjx1PmhlbGxvPC91PiB3b3JsZDwvYj4gV2ViS2l0PC9mb250PicsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>