<?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>62181</bug_id>
          
          <creation_ts>2011-06-06 20:00:52 -0700</creation_ts>
          <short_desc>Incorrect compositing overlap test</short_desc>
          <delta_ts>2011-06-21 16:52:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Adrienne Walker">enne</reporter>
          <assigned_to name="Adrienne Walker">enne</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>416248</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-06 20:00:52 -0700</bug_when>
    <thetext>I think there is something incorrect with the RenderLayerCompositor&apos;s overlap test.  However, I&apos;m not quite sure that I know enough to confidently fix it, so I will explain what I&apos;ve found and hopefully hear from somebody who knows this code better than me.

I boiled down Chromium bug 84254 to the following attached test case.  There&apos;s (in z-order) a red div, a WebGL canvas, and a green div.  The green div entirely overlaps the red div, from the perspective of the final rendering result.  In software mode, only the green square is visible.  When composited, the green square does not pass the overlap test in RenderLayerCompositor, does not get composited, and ends up incorrectly drawing underneath the red div.

Here&apos;s why the overlap test fails.  In this test case, only two layers get added to the overlap map.  There&apos;s the 300x150 canvas, which gets added to the overlap map as IntRect(408, 8, 300, 150).  There&apos;s also the 1017x0 layer containing the red div and the canvas.  This ends up getting added to the overlap map as IntRect(8, 8, 1, 1).  (Empty rects are grown to 1,1 in RenderLayerCompositor::addToOverlapMap.) The green div at IntRect(10, 0, 300, 300) doesn&apos;t overlap either of these, and so does not end up being composited.

Are the layer bounds incorrect on the parent div for the canvas here? Should we maybe using composited bounds in the overlap map instead of layer bounds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416249</commentid>
    <comment_count>1</comment_count>
      <attachid>96186</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-06 20:01:14 -0700</bug_when>
    <thetext>Created attachment 96186
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416250</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-06 20:04:29 -0700</bug_when>
    <thetext>Bug 50192?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416261</commentid>
    <comment_count>3</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-06 20:45:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Bug 50192?

Unless I am misunderstanding, I think this is a different bug.

I don&apos;t quite follow what is expected from your attached test case there, but when I open it up in Chromium, container gets composited because it overlaps the video, and child box gets composited because it overlaps container.  This seems like exactly what I would expect.

This bug&apos;s test case has two layers which get rendered as overlapping but from the point of view of RenderLayerCompositor they are not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416269</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-06 20:57:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Bug 50192?
&gt; 
&gt; Unless I am misunderstanding, I think this is a different bug.
&gt; 
&gt; I don&apos;t quite follow what is expected from your attached test case there, but when I open it up in Chromium, container gets composited because it overlaps the video, and child box gets composited because it overlaps container.  This seems like exactly what I would expect.

Actually, in that testcase the child box doesn&apos;t need to be in a separate compositing layer; that&apos;s the bug.

&gt; This bug&apos;s test case has two layers which get rendered as overlapping but from the point of view of RenderLayerCompositor they are not.

Hm, it does look wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416617</commentid>
    <comment_count>5</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-07 10:34:39 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; Bug 50192?
&gt; &gt; 
&gt; &gt; Unless I am misunderstanding, I think this is a different bug.
&gt; &gt; 
&gt; &gt; I don&apos;t quite follow what is expected from your attached test case there, but when I open it up in Chromium, container gets composited because it overlaps the video, and child box gets composited because it overlaps container.  This seems like exactly what I would expect.
&gt; 
&gt; Actually, in that testcase the child box doesn&apos;t need to be in a separate compositing layer; that&apos;s the bug.

Ah, so it&apos;s an issue of what gets its own compositing layer and not about what gets composited at all.

&gt; &gt; This bug&apos;s test case has two layers which get rendered as overlapping but from the point of view of RenderLayerCompositor they are not.
&gt; 
&gt; Hm, it does look wrong.

The problem here seems to me that the overlap test wants to test whether a layer&apos;s bounds overlaps a layer that&apos;s been composited.  Given that multiple layers can go into the same composited layer, intuitively it seems that we should be using the composited bounds for the comparison rather than the layer bounds.

I would assume that every layer that gets added to the overlap test will be composited (even if it is not already), but it looks like we might also have to update the backing size more proactively in order to have this information available.

Unless this approach sounds entirely wrong, I&apos;ll look into uploading a patch that implements this suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416641</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-07 11:07:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; &gt; Bug 50192?
&gt; &gt; &gt; 
&gt; &gt; &gt; Unless I am misunderstanding, I think this is a different bug.
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t quite follow what is expected from your attached test case there, but when I open it up in Chromium, container gets composited because it overlaps the video, and child box gets composited because it overlaps container.  This seems like exactly what I would expect.
&gt; &gt; 
&gt; &gt; Actually, in that testcase the child box doesn&apos;t need to be in a separate compositing layer; that&apos;s the bug.
&gt; 
&gt; Ah, so it&apos;s an issue of what gets its own compositing layer and not about what gets composited at all.

Yeah. The problem there is that the overlap map doesn&apos;t track which layer contributed which rect to the map, so has no way to know that the layer being overlapped is an ancestor into which the current RL could just draw.

&gt; &gt; &gt; This bug&apos;s test case has two layers which get rendered as overlapping but from the point of view of RenderLayerCompositor they are not.
&gt; &gt; 
&gt; &gt; Hm, it does look wrong.
&gt; 
&gt; The problem here seems to me that the overlap test wants to test whether a layer&apos;s bounds overlaps a layer that&apos;s been composited.  Given that multiple layers can go into the same composited layer, intuitively it seems that we should be using the composited bounds for the comparison rather than the layer bounds.
&gt; 
&gt; I would assume that every layer that gets added to the overlap test will be composited (even if it is not already), but it looks like we might also have to update the backing size more proactively in order to have this information available.
&gt; 
&gt; Unless this approach sounds entirely wrong, I&apos;ll look into uploading a patch that implements this suggestion.

It sounds OK, but updating the backing store size more proactively may be tricky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417505</commentid>
    <comment_count>7</comment_count>
      <attachid>96477</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-08 14:12:50 -0700</bug_when>
    <thetext>Created attachment 96477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417509</commentid>
    <comment_count>8</comment_count>
      <attachid>96477</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-08 14:14:28 -0700</bug_when>
    <thetext>Comment on attachment 96477
Patch

Taking off review, because I want to add a test case first.  I&apos;m just putting this up to get any initial comments.  This passes the test case above, fixes the Chromium bug, and passes all the compositing layout tests (for Chromium).

smfr: You were quite right that updating the backing was tricky.  Instead of using larger bounds in the overlap map, I thought it would be more direct to just add more layers to the overlap map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417535</commentid>
    <comment_count>9</comment_count>
      <attachid>96477</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-08 14:26:50 -0700</bug_when>
    <thetext>Comment on attachment 96477
Patch

Sucks to have to walk the layer tree from inside a layer tree traverse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417544</commentid>
    <comment_count>10</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-08 14:37:32 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 96477 [details])
&gt; Sucks to have to walk the layer tree from inside a layer tree traverse.

That&apos;s for sure.  It&apos;s better than walking the layer tree on every overlap test to calculate the composited bounds, though.  That&apos;s what my initial proposal would have required.  :(

An alternate solution here would be to accumulate a list of layers in CompositingState that would need to be considered composited if some ancestor layer became composited.  Then we could just walk that list, rather than the tree.  I&apos;m not convinced this is all that much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417635</commentid>
    <comment_count>11</comment_count>
      <attachid>96500</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-08 15:52:06 -0700</bug_when>
    <thetext>Created attachment 96500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417638</commentid>
    <comment_count>12</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-08 15:53:13 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=96500) [details]
&gt; Patch

Added test case.

Also, added early out in recursion if a layer couldn&apos;t be composited or if it was already marked as needing to be composited.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417966</commentid>
    <comment_count>13</comment_count>
      <attachid>96500</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-06-09 06:04:20 -0700</bug_when>
    <thetext>Comment on attachment 96500
Patch

Attachment 96500 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/8812688</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418066</commentid>
    <comment_count>14</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-09 09:41:56 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 96500 [details])
&gt; Attachment 96500 [details] did not pass efl-ews (efl):
&gt; Output: http://queues.webkit.org/results/8812688

That looks like flake to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418227</commentid>
    <comment_count>15</comment_count>
      <attachid>96627</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-09 13:25:45 -0700</bug_when>
    <thetext>Created attachment 96627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418230</commentid>
    <comment_count>16</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-09 13:28:28 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=96627) [details]
&gt; Patch

Ah, in looking at this further, this wasn&apos;t recursing through the negative z-index children of a layer that got belated composited when it should have been.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418231</commentid>
    <comment_count>17</comment_count>
      <attachid>96627</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-09 13:28:53 -0700</bug_when>
    <thetext>Comment on attachment 96627
Patch

I wonder if it might be better to have computeCompositingRequirements() itself track whether descendent RLs need to be added to the overlap map, to avoid the potentially n^2 recursion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418287</commentid>
    <comment_count>18</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-09 14:20:34 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 96627 [details])
&gt; I wonder if it might be better to have computeCompositingRequirements() itself track whether descendent RLs need to be added to the overlap map, to avoid the potentially n^2 recursion

By n^2, you&apos;re talking about the case where (potentially) every layer requiresCompositingWhenDescendantsAreCompositing() and at each step as we walk back up the tree, we iterate through the whole tree again because some leaf caused the whole stack to become composited?

I looked into trying to keep a Vector of layers, but copying them back and forth between CompositingState objects as we descended the tree got complex pretty quickly.

I think the simplest thing to do is to just early out in addToOverlapMapRecursive when a layer has already been added to the overlap map.  That way, if some child has already added itself and all of its children to the overlap map, if the parent becomes composited it won&apos;t re-traverse that same tree.  At worst, we will traverse the layer tree twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418292</commentid>
    <comment_count>19</comment_count>
      <attachid>96644</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-09 14:21:30 -0700</bug_when>
    <thetext>Created attachment 96644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418784</commentid>
    <comment_count>20</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-10 10:53:18 -0700</bug_when>
    <thetext>I plan to review this bug need to think about it some more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418872</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-10 13:47:33 -0700</bug_when>
    <thetext>Apparently this affects Google maps is canvases force compositing layers. Steps are:
1. maps.google.com
2. Enter directions
3. Scroll around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418874</commentid>
    <comment_count>22</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-10 13:49:08 -0700</bug_when>
    <thetext>This is the related chromium bug: http://code.google.com/p/chromium/issues/detail?id=84254</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418931</commentid>
    <comment_count>23</comment_count>
      <attachid>96644</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-10 14:42:05 -0700</bug_when>
    <thetext>Comment on attachment 96644
Patch

I&apos;m hesitating here because I wonder if we can fix this, bug 62465 and bug 50192 by doing something better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423995</commentid>
    <comment_count>24</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-20 15:35:49 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 96644 [details])
&gt; I&apos;m hesitating here because I wonder if we can fix this, bug 62465 and bug 50192 by doing something better.

Simon, do you have any more thoughts on this patch? I have addressed the O(n^2) issue that you brought up ealier and in the worst case we now only walk the tree twice.

If you think there might a better solution but need more time, I would prefer to commit this so that we can be correct now and then address any performance or efficiency concerns in a future patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424115</commentid>
    <comment_count>25</comment_count>
      <attachid>96644</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-20 17:33:19 -0700</bug_when>
    <thetext>Comment on attachment 96644
Patch

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

&gt; LayoutTests/compositing/layer-creation/overlap-transformed-layer.html:36
&gt; +        // Trigger accelerated compositing *not* using a transform
&gt; +        document.getElementsByTagName(&apos;canvas&apos;)[0].getContext(&apos;2d&apos;);

Can&apos;t we use a translateZ(0) now? This would allow the test to work on platforms without accelerated canvases.

I also think that you should dump the layer tree in the text so that you don&apos;t have to rely on pixel testing.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:581
&gt; +    layer-&gt;setMustOverlapCompositedLayers(true);

I don&apos;t think you want to do this on every descendent layer, since it will put them each into their own layer, even when they don&apos;t need to be (see bug 50192).

Shouldn&apos;t this stop at a layer which is already compositing?

If I understand correctly, this method is really addLayerAndNonCompositedDescendentsToOverlapMap().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424603</commentid>
    <comment_count>26</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-21 11:32:57 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 96644 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96644&amp;action=review
&gt; 
&gt; &gt; LayoutTests/compositing/layer-creation/overlap-transformed-layer.html:36
&gt; &gt; +        // Trigger accelerated compositing *not* using a transform
&gt; &gt; +        document.getElementsByTagName(&apos;canvas&apos;)[0].getContext(&apos;2d&apos;);
&gt; 
&gt; Can&apos;t we use a translateZ(0) now? This would allow the test to work on platforms without accelerated canvases.

Oh, whoops.  I thought I had uploaded the patch I had locally with that change, but I was wrong.  Let me make the additional change you suggested below and I&apos;ll upload a new patch.

&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:581
&gt; &gt; +    layer-&gt;setMustOverlapCompositedLayers(true);
&gt; 
&gt; I don&apos;t think you want to do this on every descendent layer, since it will put them each into their own layer, even when they don&apos;t need to be (see bug 50192).

Ah, ok.  I think I misunderstood what that flag did.
 
&gt; Shouldn&apos;t this stop at a layer which is already compositing?

It does implicitly, because it terminates the recursion at any layer that has been added to the overlap map.

&gt; If I understand correctly, this method is really addLayerAndNonCompositedDescendentsToOverlapMap().

That&apos;s exactly it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424798</commentid>
    <comment_count>27</comment_count>
      <attachid>98065</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-21 15:33:57 -0700</bug_when>
    <thetext>Created attachment 98065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424813</commentid>
    <comment_count>28</comment_count>
      <attachid>98065</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-21 15:47:45 -0700</bug_when>
    <thetext>Comment on attachment 98065
Patch

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

r=me but please consider renaming the method and tweaking the test.

&gt; LayoutTests/compositing/layer-creation/overlap-transformed-layer.html:46
&gt; +        layoutTestController.dumpAsText(false);

I think pixel results would be useful here too (they can be cross-platform since they don&apos;t contain text).

&gt; LayoutTests/compositing/layer-creation/overlap-transformed-layer.html:50
&gt; +        layoutTestController.waitUntilDone();
&gt; +        window.addEventListener(&apos;load&apos;, function() {
&gt; +            document.getElementById(&quot;layertree&quot;).innerText = layoutTestController.layerTreeAsText();
&gt; +            layoutTestController.notifyDone();

You don&apos;t need waitUntilDone/notifyDone when the test does work during the load event.

&gt; LayoutTests/compositing/layer-creation/overlap-transformed-layer.html:58
&gt; +        &lt;!-- This red square should not be visible --&gt;
&gt; +        &lt;div id=&quot;red&quot;&gt;&lt;/div&gt;

I usually use #indicator for such elements.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:572
&gt; +void RenderLayerCompositor::addToOverlapMapRecursive(OverlapMap&amp; overlapMap, RenderLayer* layer)

I prefer the method name i suggested previously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424840</commentid>
    <comment_count>29</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-21 16:12:49 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 98065 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98065&amp;action=review
&gt; 
&gt; r=me but please consider renaming the method and tweaking the test.
&gt; 
&gt; &gt; LayoutTests/compositing/layer-creation/overlap-transformed-layer.html:46
&gt; &gt; +        layoutTestController.dumpAsText(false);
&gt; 
&gt; I think pixel results would be useful here too (they can be cross-platform since they don&apos;t contain text).

Will do.

&gt; &gt; LayoutTests/compositing/layer-creation/overlap-transformed-layer.html:50
&gt; &gt; +        layoutTestController.waitUntilDone();
&gt; &gt; +        window.addEventListener(&apos;load&apos;, function() {
&gt; &gt; +            document.getElementById(&quot;layertree&quot;).innerText = layoutTestController.layerTreeAsText();
&gt; &gt; +            layoutTestController.notifyDone();
&gt; 
&gt; You don&apos;t need waitUntilDone/notifyDone when the test does work during the load event.

Oh! Good to know.  Will do.

&gt; &gt; LayoutTests/compositing/layer-creation/overlap-transformed-layer.html:58
&gt; &gt; +        &lt;!-- This red square should not be visible --&gt;
&gt; &gt; +        &lt;div id=&quot;red&quot;&gt;&lt;/div&gt;
&gt; 
&gt; I usually use #indicator for such elements.

Will do.
 
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:572
&gt; &gt; +void RenderLayerCompositor::addToOverlapMapRecursive(OverlapMap&amp; overlapMap, RenderLayer* layer)
&gt; 
&gt; I prefer the method name i suggested previously.

I thought about it, and I think that name is slightly incorrect.  The function recursively adds that layer and all of its descendants, compositing or not, to the overlap map.  It does skip re-adding layers that have already been added to the overlap map, but that&apos;s not a check for compositing.

It&apos;s a property of the caller and not of the function itself that the only layers that are not already in the overlap map are non-compositing.  It&apos;s more addLayerAndDescendantsToOverlapMapIfLayerCanBeCompositedAndUnlessLayerAlreadyInOverlapMap, but that&apos;s a little wordy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424842</commentid>
    <comment_count>30</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-21 16:14:43 -0700</bug_when>
    <thetext>OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424877</commentid>
    <comment_count>31</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-21 16:52:18 -0700</bug_when>
    <thetext>Committed r89394: &lt;http://trac.webkit.org/changeset/89394&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>96186</attachid>
            <date>2011-06-06 20:01:14 -0700</date>
            <delta_ts>2011-06-06 20:01:14 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>overlapbug.html</filename>
            <type>text/html</type>
            <size>748</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0PgogICAgZnVuY3Rpb24gaW5pdENhbnZhc0NvbnRleHQoKSB7
CiAgICAgICAgLy8gdHJpZ2dlciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyAqbm90KiB1c2luZyBh
IHRyYW5zZm9ybQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMn
KVswXS5nZXRDb250ZXh0KCdleHBlcmltZW50YWwtd2ViZ2wnKTsKICAgIH0KPC9zY3JpcHQ+Cjxi
b2R5IG9ubG9hZD0iaW5pdENhbnZhc0NvbnRleHQoKSI+CjxkaXYgc3R5bGU9Ii13ZWJraXQtdHJh
bnNmb3JtOiB0cmFuc2xhdGUoMHB4LCAwcHgpOyI+CiAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
YWJzb2x1dGU7IGxlZnQ6IDI1cHg7IHRvcDogMHB4OyBoZWlnaHQ6IDI1NnB4OyB3aWR0aDogMjU2
cHg7IGJhY2tncm91bmQtY29sb3I6IHJlZDsiPjwvZGl2PgogICAgPGNhbnZhcyBzdHlsZT0icG9z
aXRpb246YWJzb2x1dGU7IGxlZnQ6NDAwcHg7Ij48L2NhbnZhcz4KPC9kaXY+Cgo8IS0tIFRoaXMg
Z3JlZW4gc3F1YXJlIGNvbWVzIGxhdGVyIGluIHRoZSB6LW9yZGVyIGFuZCBzaG91bGQgYWx3YXlz
IHJlbmRlciBvdmVyIHRvcCBvZiB0aGUgcmVkIHNxdWFyZSBhYm92ZSAtLT4KPGRpdiBzdHlsZT0i
cG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAxMHB4OyB0b3A6IDBweDsgd2lkdGg6IDMwMHB4OyBo
ZWlnaHQ6IDMwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgoKPC9ib2R5Pgo8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96477</attachid>
            <date>2011-06-08 14:12:50 -0700</date>
            <delta_ts>2011-06-08 15:52:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62181-20110608141244.patch</filename>
            <type>text/plain</type>
            <size>6574</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyNjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNzlmZTUxMjFmYzRkNjhj
ZjBiMDQ2MmUxYWNjMjBlMjgyZGVlY2Q5Li4wNzdkODNmNjBlYTJmMTU3MjMwMTBiZDZhODcyMzcx
YTJiMTZkNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDYtMDggIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2hpbGQgbGF5ZXJzIHRvIHRoZSBvdmVybGFwIG1h
cCBpZiB0aGVpciBwYXJlbnQgYmVsYXRlZGx5IGJlY29tZXMgY29tcG9zaXRlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxODEKKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1
aXJlbWVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoK
KwogMjAxMS0wNi0wNyAgUm9iIEJ1aXMgIDxyYnVpc0ByaW0uY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERpcmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMWMxZDY0Njk5MzQ3Nzc3YjY5MWY4MWM3NDYx
ZjU0NjczMDg1ZTE0Zi4uMTU0ZGRjM2EwYzcxODQ2ZDU4MzMxOWJmYjNiNTQ3ZmJhN2I3ZTZjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAKQEAgLTU2OSw2ICs1NjksNDQgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFk
ZFRvT3ZlcmxhcE1hcChPdmVybGFwTWFwJiBvdmVybGFwTWFwLCBSZW5kZXJMYXllcioKICAgICBv
dmVybGFwTWFwLmFkZChsYXllciwgbGF5ZXJCb3VuZHMpOwogfQogCit2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6YWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKE92ZXJsYXBNYXAmIG92ZXJsYXBN
YXAsIFJlbmRlckxheWVyKiBsYXllcikKK3sKKyAgICBJbnRSZWN0IGJvdW5kczsKKyAgICBib29s
IGhhdmVDb21wdXRlZEJvdW5kcyA9IGZhbHNlOworICAgIGFkZFRvT3ZlcmxhcE1hcChvdmVybGFw
TWFwLCBsYXllciwgYm91bmRzLCBoYXZlQ29tcHV0ZWRCb3VuZHMpOworCisgICAgbGF5ZXItPnNl
dE11c3RPdmVybGFwQ29tcG9zaXRlZExheWVycyh0cnVlKTsKKworICAgIGlmIChsYXllci0+aXNT
dGFja2luZ0NvbnRleHQoKSkgeworICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5l
Z1pPcmRlckxpc3QgPSBsYXllci0+bmVnWk9yZGVyTGlzdCgpKSB7CisgICAgICAgICAgICBzaXpl
X3QgbGlzdFNpemUgPSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJM
YXllciogY3VyTGF5ZXIgPSBuZWdaT3JkZXJMaXN0LT5hdChpKTsKKyAgICAgICAgICAgICAgICBh
ZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUob3ZlcmxhcE1hcCwgY3VyTGF5ZXIpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQVNTRVJUKCFsYXllci0+bV9ub3JtYWxGbG93
TGlzdERpcnR5KTsKKyAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0
ID0gbGF5ZXItPm5vcm1hbEZsb3dMaXN0KCkpIHsKKyAgICAgICAgc2l6ZV90IGxpc3RTaXplID0g
bm9ybWFsRmxvd0xpc3QtPnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
aXN0U2l6ZTsgKytpKSB7CisgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBub3Jt
YWxGbG93TGlzdC0+YXQoaSk7CisgICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUo
b3ZlcmxhcE1hcCwgY3VyTGF5ZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGxheWVy
LT5pc1N0YWNraW5nQ29udGV4dCgpKSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIq
PiogcG9zWk9yZGVyTGlzdCA9IGxheWVyLT5wb3NaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgICAg
IHNpemVfdCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsKKyAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgeworICAgICAgICAgICAgICAgIFJl
bmRlckxheWVyKiBjdXJMYXllciA9IHBvc1pPcmRlckxpc3QtPmF0KGkpOworICAgICAgICAgICAg
ICAgIGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShvdmVybGFwTWFwLCBjdXJMYXllcik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpvdmVybGFwc0NvbXBvc2l0ZWRMYXllcnMoT3ZlcmxhcE1hcCYgb3ZlcmxhcE1hcCwgY29u
c3QgSW50UmVjdCYgbGF5ZXJCb3VuZHMpCiB7CiAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpP
dmVybGFwTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBvdmVybGFwTWFwLmVuZCgpOwpAQCAtNjkw
LDYgKzcyOCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRp
bmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGxheWVyLCBPCiAgICAgCiAgICAgQVNTRVJUKHdp
bGxCZUNvbXBvc2l0ZWQgPT0gbmVlZHNUb0JlQ29tcG9zaXRlZChsYXllcikpOwogCisgICAgYm9v
bCBhZGRDaGlsZHJlblRvT3ZlcmxhcE1hcCA9IGZhbHNlOworCiAgICAgLy8gSWYgd2UgaGF2ZSBh
IHNvZnR3YXJlIHRyYW5zZm9ybSwgYW5kIHdlIGhhdmUgbGF5ZXJzIHVuZGVyIHVzLCB3ZSBuZWVk
IHRvIGFsc28KICAgICAvLyBiZSBjb21wb3NpdGVkLiBBbHNvLCBpZiB3ZSBoYXZlIG9wYWNpdHkg
PCAxLCB0aGVuIHdlIG5lZWQgdG8gYmUgYSBsYXllciBzbyB0aGF0CiAgICAgLy8gdGhlIGNoaWxk
IGxheWVycyBhcmUgb3BhcXVlLCB0aGVuIHJlbmRlcmVkIHdpdGggb3BhY2l0eSBvbiB0aGlzIGxh
eWVyLgpAQCAtNjk4LDYgKzczOCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21w
dXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGxheWVyLCBPCiAgICAgICAg
IGlmIChvdmVybGFwTWFwKQogICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFwKCpvdmVybGFwTWFw
LCBsYXllciwgYWJzQm91bmRzLCBoYXZlQ29tcHV0ZWRCb3VuZHMpOwogICAgICAgICB3aWxsQmVD
b21wb3NpdGVkID0gdHJ1ZTsKKyAgICAgICAgYWRkQ2hpbGRyZW5Ub092ZXJsYXBNYXAgPSB0cnVl
OwogICAgIH0KIAogICAgIEFTU0VSVCh3aWxsQmVDb21wb3NpdGVkID09IG5lZWRzVG9CZUNvbXBv
c2l0ZWQobGF5ZXIpKTsKQEAgLTcxNyw2ICs3NTgsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBsYXllciwg
TwogICAgICAgICBpZiAob3ZlcmxhcE1hcCkKICAgICAgICAgICAgIGFkZFRvT3ZlcmxhcE1hcCgq
b3ZlcmxhcE1hcCwgbGF5ZXIsIGFic0JvdW5kcywgaGF2ZUNvbXB1dGVkQm91bmRzKTsKICAgICAg
ICAgd2lsbEJlQ29tcG9zaXRlZCA9IHRydWU7CisgICAgICAgIGFkZENoaWxkcmVuVG9PdmVybGFw
TWFwID0gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSdyZSBiYWNrIGF0IHRoZSByb290LCBh
bmQgbm8gb3RoZXIgbGF5ZXJzIG5lZWQgdG8gYmUgY29tcG9zaXRlZCwgYW5kIHRoZSByb290IGxh
eWVyIGl0c2VsZiBkb2Vzbid0IG5lZWQKQEAgLTcyNCw4ICs3NjYsMzAgQEAgdm9pZCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXll
ciogbGF5ZXIsIE8KICAgICBpZiAobGF5ZXItPmlzUm9vdExheWVyKCkgJiYgIWNoaWxkU3RhdGUu
bV9zdWJ0cmVlSXNDb21wb3NpdGluZyAmJiAhcmVxdWlyZXNDb21wb3NpdGluZ0xheWVyKGxheWVy
KSAmJiAhbV9mb3JjZUNvbXBvc2l0aW5nTW9kZSkgewogICAgICAgICBlbmFibGVDb21wb3NpdGlu
Z01vZGUoZmFsc2UpOwogICAgICAgICB3aWxsQmVDb21wb3NpdGVkID0gZmFsc2U7CisgICAgICAg
IGFkZENoaWxkcmVuVG9PdmVybGFwTWFwID0gZmFsc2U7CiAgICAgfQogICAgIAorICAgIC8vIElm
IHRoaXMgbGF5ZXIgaGFzIGJlY29tZSBjb21wb3NpdGVkIGR1ZSB0byBhIGxheWVyIHRoYXQgaXMg
aGlnaGVyCisgICAgLy8gaW4gdGhlIHotb3JkZXIsIGFsbCBvZiBpdHMgY2hpbGRyZW4gd2lsbCBn
byBpbnRvIGEgY29tcG9zaXRlZCBsYXllci4KKyAgICBpZiAoYWRkQ2hpbGRyZW5Ub092ZXJsYXBN
YXAgJiYgb3ZlcmxhcE1hcCkgeworICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5v
cm1hbEZsb3dMaXN0ID0gbGF5ZXItPm5vcm1hbEZsb3dMaXN0KCkpIHsKKyAgICAgICAgICAgIHNp
emVfdCBsaXN0U2l6ZSA9IG5vcm1hbEZsb3dMaXN0LT5zaXplKCk7CisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICBSZW5k
ZXJMYXllciogY3VyTGF5ZXIgPSBub3JtYWxGbG93TGlzdC0+YXQoaSk7CisgICAgICAgICAgICAg
ICAgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKCpvdmVybGFwTWFwLCBjdXJMYXllcik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobGF5ZXItPmlzU3RhY2tpbmdDb250
ZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVy
TGlzdCA9IGxheWVyLT5wb3NaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgICAgICAgICBzaXplX3Qg
bGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7CisgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIFJl
bmRlckxheWVyKiBjdXJMYXllciA9IHBvc1pPcmRlckxpc3QtPmF0KGkpOworICAgICAgICAgICAg
ICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUoKm92ZXJsYXBNYXAsIGN1ckxheWVyKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAgICAg
Ly8gSWYgdGhlIGxheWVyIGlzIGdvaW5nIGludG8gY29tcG9zaXRpbmcgbW9kZSwgcmVwYWludCBp
dHMgb2xkIGxvY2F0aW9uLgogICAgIEFTU0VSVCh3aWxsQmVDb21wb3NpdGVkID09IG5lZWRzVG9C
ZUNvbXBvc2l0ZWQobGF5ZXIpKTsKICAgICBpZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiB3
aWxsQmVDb21wb3NpdGVkKQpAQCAtMTgxNyw0ICsxODgxLDMgQEAgdm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnVwZGF0ZUNvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUsIFJlbmRlckxheWVyKiBs
YXllcikKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oCmluZGV4IDNiZGFmZGQxMmFmNTRkYzA1YTFjNDMyY2QwMmQ4MjRlZTk2
MWIzYjQuLjJhN2RlZjA2MGIxNTVhN2U2MzE2MDFkMWU3ZmZhN2U4MmU3Zjk5YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTIx
NCw2ICsyMTQsNyBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlckxheWVy
KiwgSW50UmVjdD4gT3ZlcmxhcE1hcDsKICAgICBzdGF0aWMgdm9pZCBhZGRUb092ZXJsYXBNYXAo
T3ZlcmxhcE1hcCYsIFJlbmRlckxheWVyKiwgSW50UmVjdCYgbGF5ZXJCb3VuZHMsIGJvb2wmIGJv
dW5kc0NvbXB1dGVkKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUo
T3ZlcmxhcE1hcCYsIFJlbmRlckxheWVyKik7CiAgICAgc3RhdGljIGJvb2wgb3ZlcmxhcHNDb21w
b3NpdGVkTGF5ZXJzKE92ZXJsYXBNYXAmLCBjb25zdCBJbnRSZWN0JiBsYXllckJvdW5kcyk7CiAK
ICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzVGltZXJGaXJlZChUaW1lcjxSZW5kZXJM
YXllckNvbXBvc2l0b3I+Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96500</attachid>
            <date>2011-06-08 15:52:06 -0700</date>
            <delta_ts>2011-06-09 13:25:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62181-20110608155205.patch</filename>
            <type>text/plain</type>
            <size>9995</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgzOTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4N2I4OTFiYmYzMTgyZmNhOWNiMTNh
NWMxMTE0ZDk1ZGQ3ZDI1ZGIxLi5iNzVjZDY0ZjlkNGNlYzYxMmRiY2NkNDdkZGQ3NTY0Yzg0Nzhm
Y2I0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDYtMDggIEFkcmllbm5lIFdhbGtlciAg
PGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgY2hpbGQgbGF5ZXJzIHRvIHRoZSBvdmVybGFwIG1hcCBpZiB0aGVpciBw
YXJlbnQgYmVsYXRlZGx5IGJlY29tZXMgY29tcG9zaXRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxODEKKworICAgICAgICAqIGNvbXBvc2l0aW5n
L2xheWVyLWNyZWF0aW9uL292ZXJsYXAtdHJhbnNmb3JtZWQtbGF5ZXItZXhwZWN0ZWQucG5nOiBB
ZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9vdmVybGFwLXRyYW5z
Zm9ybWVkLWxheWVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXllci5odG1sOiBBZGRlZC4KKwog
MjAxMS0wNi0wOCAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2xheWVyLWNyZWF0aW9uL292ZXJsYXAtdHJhbnNmb3JtZWQtbGF5ZXItZXhwZWN0ZWQu
cG5nIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFu
c2Zvcm1lZC1sYXllci1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA0NWY5ZDUxZGI5MTUwNDE2
YTFiZDhkNzMzN2JjMzllM2RjOGI0OQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg1MQp6Y21l
QVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9v
VCFzYD0KeihgMGl+M3U5d2JsaG5sSVJIR0NOTGtseEFiN087SzFNe0BScS01YEtGRG5LSHVDMU9m
anYqQ3UtcmhMS2RCOHdgCnorMG5YSmVReH0kMiFrMGp4eFUwfnh4VCVqYFB0bWQhVkRkQCVoPyRp
P3prbHxHOHx6TVZ7cV5wV3NDO0dYaTZCKAp6MSo1cnU9djxJPHs+KTJXMjhRc0RxcDQ7eilleE8o
TXIrIzk9RWk4NzNwRSRpbkxPWkhYKUlxQDAmTWolYylJJHoKSnRhRDBlMHN5cWdObF5kKgoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXllci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9vdmVybGFwLXRyYW5zZm9ybWVk
LWxheWVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0
YjBhYWQ3YmRlZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXllci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXll
ci1jcmVhdGlvbi9vdmVybGFwLXRyYW5zZm9ybWVkLWxheWVyLmh0bWwgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9vdmVybGFwLXRyYW5zZm9ybWVkLWxheWVyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWFlY2YyMWNjYTMxODhiYWNjMGQwNTFkNGMwYTdjMjM2MWNjZTgxOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL292
ZXJsYXAtdHJhbnNmb3JtZWQtbGF5ZXIuaHRtbApAQCAtMCwwICsxLDUzIEBACis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlPgorICAgIC5jb250YWluZXIgeworICAgICAgICAtd2Via2l0LXRyYW5zZm9y
bTogdHJhbnNsYXRlKC0xMHB4LCAwcHgpOworICAgIH0KKworICAgIC5yZWQgeworICAgICAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDE1cHg7CisgICAgICAgIHRvcDogMHB4
OworICAgICAgICBoZWlnaHQ6IDI1NnB4OworICAgICAgICB3aWR0aDogMjU2cHg7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB9CisKKyAgICAuZ3JlZW4geworICAgICAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgICAgdG9wOiAwcHg7
CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorCisgICAgY2FudmFzIHsKKyAgICAgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0OiA0MDBweDsKKyAgICB9CisKKzwvc3R5
bGU+CisKKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gaW5pdENhbnZhc0NvbnRleHQoKSB7CisgICAg
ICAgIC8vIFRyaWdnZXIgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgKm5vdCogdXNpbmcgYSB0cmFu
c2Zvcm0KKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBd
LmdldENvbnRleHQoJzJkJyk7CisgICAgfQorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsK
KyAgICB9Cis8L3NjcmlwdD4KKworPGJvZHkgb25sb2FkPSJpbml0Q2FudmFzQ29udGV4dCgpIj4K
KyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8IS0tIFRoaXMgcmVkIHNxdWFy
ZSBzaG91bGQgbm90IGJlIHZpc2libGUgLS0+CisgICAgICAgIDxkaXYgY2xhc3M9InJlZCI+PC9k
aXY+CisgICAgICAgIDxjYW52YXM+PC9jYW52YXM+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIFRo
aXMgZ3JlZW4gc3F1YXJlIHNob3VsZCByZW5kZXIgY29tcGxldGVseSBvbiB0b3Agb2YgdGhlIHJl
ZCBvbmUgLS0+CisgICAgPGRpdiBjbGFzcz0iZ3JlZW4iPjwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDFlOGY4NTE1OWM1ZmU2ZGE5NmNmN2FlMTZjZTNjZjA1MGJmYWVjZjAu
LjgwOWMyMTExYWM3NWRkMjkyNzM5OWMzZjE1NmNhZDk4NjYzNGMxZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMS0wNi0wOCAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBjaGlsZCBsYXllcnMgdG8gdGhlIG92ZXJsYXAgbWFwIGlmIHRoZWlyIHBhcmVudCBiZWxhdGVk
bHkgYmVjb21lcyBjb21wb3NpdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MjE4MQorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFk
ZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorCiAyMDExLTA2LTA2ICBOYXRlIENoYXBp
biAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAKaW5kZXggMWMxZDY0Njk5MzQ3Nzc3YjY5MWY4MWM3NDYxZjU0NjczMDg1ZTE0Zi4uNTk2
YjhhZTViNjhiZjRjNzg3NzgxODg3YzYzZWNjNmZlMjhiMTA5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTU2OSw2ICs1
NjksNDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1hcChPdmVy
bGFwTWFwJiBvdmVybGFwTWFwLCBSZW5kZXJMYXllcioKICAgICBvdmVybGFwTWFwLmFkZChsYXll
ciwgbGF5ZXJCb3VuZHMpOwogfQogCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVG9P
dmVybGFwTWFwUmVjdXJzaXZlKE92ZXJsYXBNYXAmIG92ZXJsYXBNYXAsIFJlbmRlckxheWVyKiBs
YXllcikKK3sKKyAgICBpZiAoIWNhbkJlQ29tcG9zaXRlZChsYXllcikgfHwgbmVlZHNUb0JlQ29t
cG9zaXRlZChsYXllcikpCisgICAgICAgIHJldHVybjsKKworICAgIEludFJlY3QgYm91bmRzOwor
ICAgIGJvb2wgaGF2ZUNvbXB1dGVkQm91bmRzID0gZmFsc2U7CisgICAgYWRkVG9PdmVybGFwTWFw
KG92ZXJsYXBNYXAsIGxheWVyLCBib3VuZHMsIGhhdmVDb21wdXRlZEJvdW5kcyk7CisKKyAgICBs
YXllci0+c2V0TXVzdE92ZXJsYXBDb21wb3NpdGVkTGF5ZXJzKHRydWUpOworCisgICAgaWYgKGxh
eWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5
ZXIqPiogbmVnWk9yZGVyTGlzdCA9IGxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAg
ICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgeworICAgICAgICAgICAgICAg
IFJlbmRlckxheWVyKiBjdXJMYXllciA9IG5lZ1pPcmRlckxpc3QtPmF0KGkpOworICAgICAgICAg
ICAgICAgIGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShvdmVybGFwTWFwLCBjdXJMYXllcik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlQoIWxheWVyLT5tX25v
cm1hbEZsb3dMaXN0RGlydHkpOworICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFs
Rmxvd0xpc3QgPSBsYXllci0+bm9ybWFsRmxvd0xpc3QoKSkgeworICAgICAgICBzaXplX3QgbGlz
dFNpemUgPSBub3JtYWxGbG93TGlzdC0+c2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxpc3RTaXplOyArK2kpIHsKKyAgICAgICAgICAgIFJlbmRlckxheWVyKiBjdXJMYXll
ciA9IG5vcm1hbEZsb3dMaXN0LT5hdChpKTsKKyAgICAgICAgICAgIGFkZFRvT3ZlcmxhcE1hcFJl
Y3Vyc2l2ZShvdmVybGFwTWFwLCBjdXJMYXllcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAobGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgaWYgKFZlY3RvcjxSZW5k
ZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0gbGF5ZXItPnBvc1pPcmRlckxpc3QoKSkgeworICAg
ICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gcG9zWk9yZGVyTGlzdC0+c2l6ZSgpOworICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CisgICAgICAgICAg
ICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gcG9zWk9yZGVyTGlzdC0+YXQoaSk7CisgICAg
ICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsIGN1ckxheWVy
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6Om92ZXJsYXBzQ29tcG9zaXRlZExheWVycyhPdmVybGFwTWFwJiBvdmVybGFw
TWFwLCBjb25zdCBJbnRSZWN0JiBsYXllckJvdW5kcykKIHsKICAgICBSZW5kZXJMYXllckNvbXBv
c2l0b3I6Ok92ZXJsYXBNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG92ZXJsYXBNYXAuZW5kKCk7
CkBAIC02OTAsNiArNzMxLDggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVD
b21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogbGF5ZXIsIE8KICAgICAKICAgICBB
U1NFUlQod2lsbEJlQ29tcG9zaXRlZCA9PSBuZWVkc1RvQmVDb21wb3NpdGVkKGxheWVyKSk7CiAK
KyAgICBib29sIGFkZENoaWxkcmVuVG9PdmVybGFwTWFwID0gZmFsc2U7CisKICAgICAvLyBJZiB3
ZSBoYXZlIGEgc29mdHdhcmUgdHJhbnNmb3JtLCBhbmQgd2UgaGF2ZSBsYXllcnMgdW5kZXIgdXMs
IHdlIG5lZWQgdG8gYWxzbwogICAgIC8vIGJlIGNvbXBvc2l0ZWQuIEFsc28sIGlmIHdlIGhhdmUg
b3BhY2l0eSA8IDEsIHRoZW4gd2UgbmVlZCB0byBiZSBhIGxheWVyIHNvIHRoYXQKICAgICAvLyB0
aGUgY2hpbGQgbGF5ZXJzIGFyZSBvcGFxdWUsIHRoZW4gcmVuZGVyZWQgd2l0aCBvcGFjaXR5IG9u
IHRoaXMgbGF5ZXIuCkBAIC02OTgsNiArNzQxLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogbGF5ZXIsIE8K
ICAgICAgICAgaWYgKG92ZXJsYXBNYXApCiAgICAgICAgICAgICBhZGRUb092ZXJsYXBNYXAoKm92
ZXJsYXBNYXAsIGxheWVyLCBhYnNCb3VuZHMsIGhhdmVDb21wdXRlZEJvdW5kcyk7CiAgICAgICAg
IHdpbGxCZUNvbXBvc2l0ZWQgPSB0cnVlOworICAgICAgICBhZGRDaGlsZHJlblRvT3ZlcmxhcE1h
cCA9IHRydWU7CiAgICAgfQogCiAgICAgQVNTRVJUKHdpbGxCZUNvbXBvc2l0ZWQgPT0gbmVlZHNU
b0JlQ29tcG9zaXRlZChsYXllcikpOwpAQCAtNzE3LDYgKzc2MSw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIq
IGxheWVyLCBPCiAgICAgICAgIGlmIChvdmVybGFwTWFwKQogICAgICAgICAgICAgYWRkVG9PdmVy
bGFwTWFwKCpvdmVybGFwTWFwLCBsYXllciwgYWJzQm91bmRzLCBoYXZlQ29tcHV0ZWRCb3VuZHMp
OwogICAgICAgICB3aWxsQmVDb21wb3NpdGVkID0gdHJ1ZTsKKyAgICAgICAgYWRkQ2hpbGRyZW5U
b092ZXJsYXBNYXAgPSB0cnVlOwogICAgIH0KIAogICAgIC8vIElmIHdlJ3JlIGJhY2sgYXQgdGhl
IHJvb3QsIGFuZCBubyBvdGhlciBsYXllcnMgbmVlZCB0byBiZSBjb21wb3NpdGVkLCBhbmQgdGhl
IHJvb3QgbGF5ZXIgaXRzZWxmIGRvZXNuJ3QgbmVlZApAQCAtNzI0LDggKzc2OSwzMCBAQCB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJl
bmRlckxheWVyKiBsYXllciwgTwogICAgIGlmIChsYXllci0+aXNSb290TGF5ZXIoKSAmJiAhY2hp
bGRTdGF0ZS5tX3N1YnRyZWVJc0NvbXBvc2l0aW5nICYmICFyZXF1aXJlc0NvbXBvc2l0aW5nTGF5
ZXIobGF5ZXIpICYmICFtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlKSB7CiAgICAgICAgIGVuYWJsZUNv
bXBvc2l0aW5nTW9kZShmYWxzZSk7CiAgICAgICAgIHdpbGxCZUNvbXBvc2l0ZWQgPSBmYWxzZTsK
KyAgICAgICAgYWRkQ2hpbGRyZW5Ub092ZXJsYXBNYXAgPSBmYWxzZTsKICAgICB9CiAgICAgCisg
ICAgLy8gSWYgdGhpcyBsYXllciBoYXMgYmVjb21lIGNvbXBvc2l0ZWQgZHVlIHRvIGEgbGF5ZXIg
dGhhdCBpcyBoaWdoZXIKKyAgICAvLyBpbiB0aGUgei1vcmRlciwgYWxsIG9mIGl0cyBjaGlsZHJl
biB3aWxsIGdvIGludG8gYSBjb21wb3NpdGVkIGxheWVyLgorICAgIGlmIChhZGRDaGlsZHJlblRv
T3ZlcmxhcE1hcCAmJiBvdmVybGFwTWFwKSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5
ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBsYXllci0+bm9ybWFsRmxvd0xpc3QoKSkgeworICAgICAg
ICAgICAgc2l6ZV90IGxpc3RTaXplID0gbm9ybWFsRmxvd0xpc3QtPnNpemUoKTsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgeworICAgICAgICAgICAg
ICAgIFJlbmRlckxheWVyKiBjdXJMYXllciA9IG5vcm1hbEZsb3dMaXN0LT5hdChpKTsKKyAgICAg
ICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUoKm92ZXJsYXBNYXAsIGN1ckxheWVy
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChsYXllci0+aXNTdGFj
a2luZ0NvbnRleHQoKSkgeworICAgICAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBw
b3NaT3JkZXJMaXN0ID0gbGF5ZXItPnBvc1pPcmRlckxpc3QoKSkgeworICAgICAgICAgICAgICAg
IHNpemVfdCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gcG9zWk9yZGVyTGlzdC0+YXQoaSk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZSgqb3ZlcmxhcE1hcCwgY3Vy
TGF5ZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KICAgICAvLyBJZiB0aGUgbGF5ZXIgaXMgZ29pbmcgaW50byBjb21wb3NpdGluZyBtb2RlLCBy
ZXBhaW50IGl0cyBvbGQgbG9jYXRpb24uCiAgICAgQVNTRVJUKHdpbGxCZUNvbXBvc2l0ZWQgPT0g
bmVlZHNUb0JlQ29tcG9zaXRlZChsYXllcikpOwogICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRl
ZCgpICYmIHdpbGxCZUNvbXBvc2l0ZWQpCkBAIC0xODE3LDQgKzE4ODQsMyBAQCB2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29udGVudHNTY2FsZShmbG9hdCBzY2FsZSwgUmVuZGVy
TGF5ZXIqIGxheWVyKQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggM2JkYWZkZDEyYWY1NGRjMDVhMWM0MzJjZDAy
ZDgyNGVlOTYxYjNiNC4uZGZmOTk3MzQyY2Q5ZDIzZGExMWUxNGExYTg4MGQ1ZTMwOWZiYTNmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
aApAQCAtMjE0LDYgKzIxNCw3IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVu
ZGVyTGF5ZXIqLCBJbnRSZWN0PiBPdmVybGFwTWFwOwogICAgIHN0YXRpYyB2b2lkIGFkZFRvT3Zl
cmxhcE1hcChPdmVybGFwTWFwJiwgUmVuZGVyTGF5ZXIqLCBJbnRSZWN0JiBsYXllckJvdW5kcywg
Ym9vbCYgYm91bmRzQ29tcHV0ZWQpOworICAgIHZvaWQgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZl
KE92ZXJsYXBNYXAmLCBSZW5kZXJMYXllciopOwogICAgIHN0YXRpYyBib29sIG92ZXJsYXBzQ29t
cG9zaXRlZExheWVycyhPdmVybGFwTWFwJiwgY29uc3QgSW50UmVjdCYgbGF5ZXJCb3VuZHMpOwog
CiAgICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc1RpbWVyRmlyZWQoVGltZXI8UmVuZGVy
TGF5ZXJDb21wb3NpdG9yPiopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96627</attachid>
            <date>2011-06-09 13:25:45 -0700</date>
            <delta_ts>2011-06-09 14:21:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62181-20110609132544.patch</filename>
            <type>text/plain</type>
            <size>8171</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg0NTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZGM1YmU0ZjQ5M2FjYmMxZTc0ZTEw
OTAwMjQyZWFmYjg3OWQyMjg4Li41NmE5ZWVkMjEyMTQ5OTcxNjQwNjQ1OThiNTEzODkwYWNmNWU5
NzgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDYtMDggIEFkcmllbm5lIFdhbGtlciAg
PGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgY2hpbGQgbGF5ZXJzIHRvIHRoZSBvdmVybGFwIG1hcCBpZiB0aGVpciBw
YXJlbnQgYmVsYXRlZGx5IGJlY29tZXMgY29tcG9zaXRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxODEKKworICAgICAgICAqIGNvbXBvc2l0aW5n
L2xheWVyLWNyZWF0aW9uL292ZXJsYXAtdHJhbnNmb3JtZWQtbGF5ZXItZXhwZWN0ZWQucG5nOiBB
ZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9vdmVybGFwLXRyYW5z
Zm9ybWVkLWxheWVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXllci5odG1sOiBBZGRlZC4KKwog
MjAxMS0wNi0wOCAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL292ZXJsYXAtdHJhbnNmb3JtZWQtbGF5ZXItZXhwZWN0
ZWQucG5nIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10
cmFuc2Zvcm1lZC1sYXllci1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA0NWY5ZDUxZGI5MTUw
NDE2YTFiZDhkNzMzN2JjMzllM2RjOGI0OQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg1MQp6
Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxt
fT9vVCFzYD0KeihgMGl+M3U5d2JsaG5sSVJIR0NOTGtseEFiN087SzFNe0BScS01YEtGRG5LSHVD
MU9manYqQ3UtcmhMS2RCOHdgCnorMG5YSmVReH0kMiFrMGp4eFUwfnh4VCVqYFB0bWQhVkRkQCVo
PyRpP3prbHxHOHx6TVZ7cV5wV3NDO0dYaTZCKAp6MSo1cnU9djxJPHs+KTJXMjhRc0RxcDQ7eill
eE8oTXIrIzk9RWk4NzNwRSRpbkxPWkhYKUlxQDAmTWolYylJJHoKSnRhRDBlMHN5cWdObF5kKgoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXllci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9vdmVybGFwLXRyYW5zZm9y
bWVkLWxheWVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5MjdhZDc4
ZTY0YjBhYWQ3YmRlZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXllci1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9s
YXllci1jcmVhdGlvbi9vdmVybGFwLXRyYW5zZm9ybWVkLWxheWVyLmh0bWwgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9vdmVybGFwLXRyYW5zZm9ybWVkLWxheWVyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWFlY2YyMWNjYTMxODhiYWNjMGQwNTFkNGMwYTdjMjM2MWNjZTgxOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L292ZXJsYXAtdHJhbnNmb3JtZWQtbGF5ZXIuaHRtbApAQCAtMCwwICsxLDUzIEBACis8aHRtbD4K
KzxoZWFkPgorPHN0eWxlPgorICAgIC5jb250YWluZXIgeworICAgICAgICAtd2Via2l0LXRyYW5z
Zm9ybTogdHJhbnNsYXRlKC0xMHB4LCAwcHgpOworICAgIH0KKworICAgIC5yZWQgeworICAgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDE1cHg7CisgICAgICAgIHRvcDog
MHB4OworICAgICAgICBoZWlnaHQ6IDI1NnB4OworICAgICAgICB3aWR0aDogMjU2cHg7CisgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB9CisKKyAgICAuZ3JlZW4geworICAgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgICAgdG9wOiAw
cHg7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorCisgICAgY2FudmFzIHsKKyAgICAg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0OiA0MDBweDsKKyAgICB9CisKKzwv
c3R5bGU+CisKKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gaW5pdENhbnZhc0NvbnRleHQoKSB7Cisg
ICAgICAgIC8vIFRyaWdnZXIgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgKm5vdCogdXNpbmcgYSB0
cmFuc2Zvcm0KKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycp
WzBdLmdldENvbnRleHQoJzJkJyk7CisgICAgfQorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVl
KTsKKyAgICB9Cis8L3NjcmlwdD4KKworPGJvZHkgb25sb2FkPSJpbml0Q2FudmFzQ29udGV4dCgp
Ij4KKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8IS0tIFRoaXMgcmVkIHNx
dWFyZSBzaG91bGQgbm90IGJlIHZpc2libGUgLS0+CisgICAgICAgIDxkaXYgY2xhc3M9InJlZCI+
PC9kaXY+CisgICAgICAgIDxjYW52YXM+PC9jYW52YXM+CisgICAgPC9kaXY+CisKKyAgICA8IS0t
IFRoaXMgZ3JlZW4gc3F1YXJlIHNob3VsZCByZW5kZXIgY29tcGxldGVseSBvbiB0b3Agb2YgdGhl
IHJlZCBvbmUgLS0+CisgICAgPGRpdiBjbGFzcz0iZ3JlZW4iPjwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDllY2Q1MDA4N2ZlN2U4NWY4ZGFhMGQ4MzAxZGZkODU1OTE1Y2Qx
NTMuLmE5ZDM2OTE1MTY3ZGMwZjg0OTA3MjUxNWNmNWZjYTM5ZTg0NjY2NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMS0wNi0wOCAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBjaGlsZCBsYXllcnMgdG8gdGhlIG92ZXJsYXAgbWFwIGlmIHRoZWlyIHBhcmVudCBiZWxh
dGVkbHkgYmVjb21lcyBjb21wb3NpdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MjE4MQorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorCiAyMDExLTA2LTA4ICBBYmhpc2hl
ayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlv
c3VrZSBOaXdhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAppbmRleCAxYzFkNjQ2OTkzNDc3NzdiNjkxZjgxYzc0NjFmNTQ2NzMwODVl
MTRmLi45NzkxNjZlOGE0YjE3OTNiOTIyNzAwNTQzNTIwNTg4MmRmNjlhOGQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAt
NTY5LDYgKzU2OSw0NyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVG9PdmVybGFw
TWFwKE92ZXJsYXBNYXAmIG92ZXJsYXBNYXAsIFJlbmRlckxheWVyKgogICAgIG92ZXJsYXBNYXAu
YWRkKGxheWVyLCBsYXllckJvdW5kcyk7CiB9CiAKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjphZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUoT3ZlcmxhcE1hcCYgb3ZlcmxhcE1hcCwgUmVuZGVy
TGF5ZXIqIGxheWVyKQoreworICAgIGlmICghY2FuQmVDb21wb3NpdGVkKGxheWVyKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgSW50UmVjdCBib3VuZHM7CisgICAgYm9vbCBoYXZlQ29tcHV0ZWRC
b3VuZHMgPSBmYWxzZTsKKyAgICBhZGRUb092ZXJsYXBNYXAob3ZlcmxhcE1hcCwgbGF5ZXIsIGJv
dW5kcywgaGF2ZUNvbXB1dGVkQm91bmRzKTsKKworICAgIGxheWVyLT5zZXRNdXN0T3ZlcmxhcENv
bXBvc2l0ZWRMYXllcnModHJ1ZSk7CisKKyAgICBpZiAobGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0
KCkpIHsKKyAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0g
bGF5ZXItPm5lZ1pPcmRlckxpc3QoKSkgeworICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0g
bmVnWk9yZGVyTGlzdC0+c2l6ZSgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsaXN0U2l6ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVy
ID0gbmVnWk9yZGVyTGlzdC0+YXQoaSk7CisgICAgICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFw
UmVjdXJzaXZlKG92ZXJsYXBNYXAsIGN1ckxheWVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIEFTU0VSVCghbGF5ZXItPm1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7Cisg
ICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxGbG93TGlzdCA9IGxheWVyLT5ub3Jt
YWxGbG93TGlzdCgpKSB7CisgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5vcm1hbEZsb3dMaXN0
LT5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkg
eworICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gbm9ybWFsRmxvd0xpc3QtPmF0
KGkpOworICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsIGN1
ckxheWVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChsYXllci0+aXNTdGFja2luZ0Nv
bnRleHQoKSkgeworICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxp
c3QgPSBsYXllci0+cG9zWk9yZGVyTGlzdCgpKSB7CisgICAgICAgICAgICBzaXplX3QgbGlzdFNp
emUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxpc3RTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogY3Vy
TGF5ZXIgPSBwb3NaT3JkZXJMaXN0LT5hdChpKTsKKyAgICAgICAgICAgICAgICBhZGRUb092ZXJs
YXBNYXBSZWN1cnNpdmUob3ZlcmxhcE1hcCwgY3VyTGF5ZXIpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCiBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6b3ZlcmxhcHND
b21wb3NpdGVkTGF5ZXJzKE92ZXJsYXBNYXAmIG92ZXJsYXBNYXAsIGNvbnN0IEludFJlY3QmIGxh
eWVyQm91bmRzKQogewogICAgIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6T3ZlcmxhcE1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gb3ZlcmxhcE1hcC5lbmQoKTsKQEAgLTY5Niw3ICs3MzcsNyBAQCB2
b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRz
KFJlbmRlckxheWVyKiBsYXllciwgTwogICAgIGlmICghd2lsbEJlQ29tcG9zaXRlZCAmJiBjYW5C
ZUNvbXBvc2l0ZWQobGF5ZXIpICYmIGNoaWxkU3RhdGUubV9zdWJ0cmVlSXNDb21wb3NpdGluZyAm
JiByZXF1aXJlc0NvbXBvc2l0aW5nV2hlbkRlc2NlbmRhbnRzQXJlQ29tcG9zaXRpbmcobGF5ZXIt
PnJlbmRlcmVyKCkpKSB7CiAgICAgICAgIGxheWVyLT5zZXRNdXN0T3ZlcmxhcENvbXBvc2l0ZWRM
YXllcnModHJ1ZSk7CiAgICAgICAgIGlmIChvdmVybGFwTWFwKQotICAgICAgICAgICAgYWRkVG9P
dmVybGFwTWFwKCpvdmVybGFwTWFwLCBsYXllciwgYWJzQm91bmRzLCBoYXZlQ29tcHV0ZWRCb3Vu
ZHMpOworICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKCpvdmVybGFwTWFwLCBs
YXllcik7CiAgICAgICAgIHdpbGxCZUNvbXBvc2l0ZWQgPSB0cnVlOwogICAgIH0KIApAQCAtNzE1
LDcgKzc1Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRp
bmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGxheWVyLCBPCiAgICAgLy8gc28gdGVzdCB0aGF0
IGFnYWluLgogICAgIGlmICghd2lsbEJlQ29tcG9zaXRlZCAmJiBjYW5CZUNvbXBvc2l0ZWQobGF5
ZXIpICYmIGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhsYXllcikpIHsKICAgICAgICAgaWYg
KG92ZXJsYXBNYXApCi0gICAgICAgICAgICBhZGRUb092ZXJsYXBNYXAoKm92ZXJsYXBNYXAsIGxh
eWVyLCBhYnNCb3VuZHMsIGhhdmVDb21wdXRlZEJvdW5kcyk7CisgICAgICAgICAgICBhZGRUb092
ZXJsYXBNYXBSZWN1cnNpdmUoKm92ZXJsYXBNYXAsIGxheWVyKTsKICAgICAgICAgd2lsbEJlQ29t
cG9zaXRlZCA9IHRydWU7CiAgICAgfQogCkBAIC0xODE3LDQgKzE4NTgsMyBAQCB2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29udGVudHNTY2FsZShmbG9hdCBzY2FsZSwgUmVuZGVy
TGF5ZXIqIGxheWVyKQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggM2JkYWZkZDEyYWY1NGRjMDVhMWM0MzJjZDAy
ZDgyNGVlOTYxYjNiNC4uZGZmOTk3MzQyY2Q5ZDIzZGExMWUxNGExYTg4MGQ1ZTMwOWZiYTNmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
aApAQCAtMjE0LDYgKzIxNCw3IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVu
ZGVyTGF5ZXIqLCBJbnRSZWN0PiBPdmVybGFwTWFwOwogICAgIHN0YXRpYyB2b2lkIGFkZFRvT3Zl
cmxhcE1hcChPdmVybGFwTWFwJiwgUmVuZGVyTGF5ZXIqLCBJbnRSZWN0JiBsYXllckJvdW5kcywg
Ym9vbCYgYm91bmRzQ29tcHV0ZWQpOworICAgIHZvaWQgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZl
KE92ZXJsYXBNYXAmLCBSZW5kZXJMYXllciopOwogICAgIHN0YXRpYyBib29sIG92ZXJsYXBzQ29t
cG9zaXRlZExheWVycyhPdmVybGFwTWFwJiwgY29uc3QgSW50UmVjdCYgbGF5ZXJCb3VuZHMpOwog
CiAgICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc1RpbWVyRmlyZWQoVGltZXI8UmVuZGVy
TGF5ZXJDb21wb3NpdG9yPiopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96644</attachid>
            <date>2011-06-09 14:21:30 -0700</date>
            <delta_ts>2011-06-21 15:33:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62181-20110609142129.patch</filename>
            <type>text/plain</type>
            <size>8201</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg0NTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZGM1YmU0ZjQ5M2FjYmMxZTc0ZTEw
OTAwMjQyZWFmYjg3OWQyMjg4Li41NmE5ZWVkMjEyMTQ5OTcxNjQwNjQ1OThiNTEzODkwYWNmNWU5
NzgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDYtMDggIEFkcmllbm5lIFdhbGtlciAg
PGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgY2hpbGQgbGF5ZXJzIHRvIHRoZSBvdmVybGFwIG1hcCBpZiB0aGVpciBw
YXJlbnQgYmVsYXRlZGx5IGJlY29tZXMgY29tcG9zaXRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxODEKKworICAgICAgICAqIGNvbXBvc2l0aW5n
L2xheWVyLWNyZWF0aW9uL292ZXJsYXAtdHJhbnNmb3JtZWQtbGF5ZXItZXhwZWN0ZWQucG5nOiBB
ZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9vdmVybGFwLXRyYW5z
Zm9ybWVkLWxheWVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXllci5odG1sOiBBZGRlZC4KKwog
MjAxMS0wNi0wOCAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL292ZXJsYXAtdHJhbnNmb3JtZWQtbGF5ZXItZXhwZWN0
ZWQucG5nIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10
cmFuc2Zvcm1lZC1sYXllci1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA0NWY5ZDUxZGI5MTUw
NDE2YTFiZDhkNzMzN2JjMzllM2RjOGI0OQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg1MQp6
Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxt
fT9vVCFzYD0KeihgMGl+M3U5d2JsaG5sSVJIR0NOTGtseEFiN087SzFNe0BScS01YEtGRG5LSHVD
MU9manYqQ3UtcmhMS2RCOHdgCnorMG5YSmVReH0kMiFrMGp4eFUwfnh4VCVqYFB0bWQhVkRkQCVo
PyRpP3prbHxHOHx6TVZ7cV5wV3NDO0dYaTZCKAp6MSo1cnU9djxJPHs+KTJXMjhRc0RxcDQ7eill
eE8oTXIrIzk9RWk4NzNwRSRpbkxPWkhYKUlxQDAmTWolYylJJHoKSnRhRDBlMHN5cWdObF5kKgoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXllci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9vdmVybGFwLXRyYW5zZm9y
bWVkLWxheWVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5MjdhZDc4
ZTY0YjBhYWQ3YmRlZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXllci1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9s
YXllci1jcmVhdGlvbi9vdmVybGFwLXRyYW5zZm9ybWVkLWxheWVyLmh0bWwgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9vdmVybGFwLXRyYW5zZm9ybWVkLWxheWVyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWFlY2YyMWNjYTMxODhiYWNjMGQwNTFkNGMwYTdjMjM2MWNjZTgxOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L292ZXJsYXAtdHJhbnNmb3JtZWQtbGF5ZXIuaHRtbApAQCAtMCwwICsxLDUzIEBACis8aHRtbD4K
KzxoZWFkPgorPHN0eWxlPgorICAgIC5jb250YWluZXIgeworICAgICAgICAtd2Via2l0LXRyYW5z
Zm9ybTogdHJhbnNsYXRlKC0xMHB4LCAwcHgpOworICAgIH0KKworICAgIC5yZWQgeworICAgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDE1cHg7CisgICAgICAgIHRvcDog
MHB4OworICAgICAgICBoZWlnaHQ6IDI1NnB4OworICAgICAgICB3aWR0aDogMjU2cHg7CisgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB9CisKKyAgICAuZ3JlZW4geworICAgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgICAgdG9wOiAw
cHg7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorCisgICAgY2FudmFzIHsKKyAgICAg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0OiA0MDBweDsKKyAgICB9CisKKzwv
c3R5bGU+CisKKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gaW5pdENhbnZhc0NvbnRleHQoKSB7Cisg
ICAgICAgIC8vIFRyaWdnZXIgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgKm5vdCogdXNpbmcgYSB0
cmFuc2Zvcm0KKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycp
WzBdLmdldENvbnRleHQoJzJkJyk7CisgICAgfQorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVl
KTsKKyAgICB9Cis8L3NjcmlwdD4KKworPGJvZHkgb25sb2FkPSJpbml0Q2FudmFzQ29udGV4dCgp
Ij4KKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8IS0tIFRoaXMgcmVkIHNx
dWFyZSBzaG91bGQgbm90IGJlIHZpc2libGUgLS0+CisgICAgICAgIDxkaXYgY2xhc3M9InJlZCI+
PC9kaXY+CisgICAgICAgIDxjYW52YXM+PC9jYW52YXM+CisgICAgPC9kaXY+CisKKyAgICA8IS0t
IFRoaXMgZ3JlZW4gc3F1YXJlIHNob3VsZCByZW5kZXIgY29tcGxldGVseSBvbiB0b3Agb2YgdGhl
IHJlZCBvbmUgLS0+CisgICAgPGRpdiBjbGFzcz0iZ3JlZW4iPjwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDllY2Q1MDA4N2ZlN2U4NWY4ZGFhMGQ4MzAxZGZkODU1OTE1Y2Qx
NTMuLmE5ZDM2OTE1MTY3ZGMwZjg0OTA3MjUxNWNmNWZjYTM5ZTg0NjY2NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMS0wNi0wOCAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBjaGlsZCBsYXllcnMgdG8gdGhlIG92ZXJsYXAgbWFwIGlmIHRoZWlyIHBhcmVudCBiZWxh
dGVkbHkgYmVjb21lcyBjb21wb3NpdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MjE4MQorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorCiAyMDExLTA2LTA4ICBBYmhpc2hl
ayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlv
c3VrZSBOaXdhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAppbmRleCAxYzFkNjQ2OTkzNDc3NzdiNjkxZjgxYzc0NjFmNTQ2NzMwODVl
MTRmLi5hMTk2MDZhOTI4ODFhOWZkMWUxZDAzZDU3YjU0YzJmZTM2YjVjOWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAt
NTY5LDYgKzU2OSw0NyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVG9PdmVybGFw
TWFwKE92ZXJsYXBNYXAmIG92ZXJsYXBNYXAsIFJlbmRlckxheWVyKgogICAgIG92ZXJsYXBNYXAu
YWRkKGxheWVyLCBsYXllckJvdW5kcyk7CiB9CiAKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjphZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUoT3ZlcmxhcE1hcCYgb3ZlcmxhcE1hcCwgUmVuZGVy
TGF5ZXIqIGxheWVyKQoreworICAgIGlmICghY2FuQmVDb21wb3NpdGVkKGxheWVyKSB8fCBvdmVy
bGFwTWFwLmNvbnRhaW5zKGxheWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50UmVjdCBi
b3VuZHM7CisgICAgYm9vbCBoYXZlQ29tcHV0ZWRCb3VuZHMgPSBmYWxzZTsKKyAgICBhZGRUb092
ZXJsYXBNYXAob3ZlcmxhcE1hcCwgbGF5ZXIsIGJvdW5kcywgaGF2ZUNvbXB1dGVkQm91bmRzKTsK
KworICAgIGxheWVyLT5zZXRNdXN0T3ZlcmxhcENvbXBvc2l0ZWRMYXllcnModHJ1ZSk7CisKKyAg
ICBpZiAobGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgaWYgKFZlY3RvcjxS
ZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXItPm5lZ1pPcmRlckxpc3QoKSkgewor
ICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOworICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CisgICAgICAg
ICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gbmVnWk9yZGVyTGlzdC0+YXQoaSk7Cisg
ICAgICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsIGN1ckxh
eWVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVCghbGF5
ZXItPm1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7CisgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+
KiBub3JtYWxGbG93TGlzdCA9IGxheWVyLT5ub3JtYWxGbG93TGlzdCgpKSB7CisgICAgICAgIHNp
emVfdCBsaXN0U2l6ZSA9IG5vcm1hbEZsb3dMaXN0LT5zaXplKCk7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgeworICAgICAgICAgICAgUmVuZGVyTGF5ZXIq
IGN1ckxheWVyID0gbm9ybWFsRmxvd0xpc3QtPmF0KGkpOworICAgICAgICAgICAgYWRkVG9PdmVy
bGFwTWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsIGN1ckxheWVyKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgICAgICBpZiAoVmVj
dG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci0+cG9zWk9yZGVyTGlzdCgp
KSB7CisgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBwb3NaT3JkZXJMaXN0LT5hdChp
KTsKKyAgICAgICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUob3ZlcmxhcE1hcCwg
Y3VyTGF5ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCiBib29sIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6b3ZlcmxhcHNDb21wb3NpdGVkTGF5ZXJzKE92ZXJsYXBNYXAm
IG92ZXJsYXBNYXAsIGNvbnN0IEludFJlY3QmIGxheWVyQm91bmRzKQogewogICAgIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6T3ZlcmxhcE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gb3ZlcmxhcE1h
cC5lbmQoKTsKQEAgLTY5Niw3ICs3MzcsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBsYXllciwgTwogICAg
IGlmICghd2lsbEJlQ29tcG9zaXRlZCAmJiBjYW5CZUNvbXBvc2l0ZWQobGF5ZXIpICYmIGNoaWxk
U3RhdGUubV9zdWJ0cmVlSXNDb21wb3NpdGluZyAmJiByZXF1aXJlc0NvbXBvc2l0aW5nV2hlbkRl
c2NlbmRhbnRzQXJlQ29tcG9zaXRpbmcobGF5ZXItPnJlbmRlcmVyKCkpKSB7CiAgICAgICAgIGxh
eWVyLT5zZXRNdXN0T3ZlcmxhcENvbXBvc2l0ZWRMYXllcnModHJ1ZSk7CiAgICAgICAgIGlmIChv
dmVybGFwTWFwKQotICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFwKCpvdmVybGFwTWFwLCBsYXll
ciwgYWJzQm91bmRzLCBoYXZlQ29tcHV0ZWRCb3VuZHMpOworICAgICAgICAgICAgYWRkVG9PdmVy
bGFwTWFwUmVjdXJzaXZlKCpvdmVybGFwTWFwLCBsYXllcik7CiAgICAgICAgIHdpbGxCZUNvbXBv
c2l0ZWQgPSB0cnVlOwogICAgIH0KIApAQCAtNzE1LDcgKzc1Niw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIq
IGxheWVyLCBPCiAgICAgLy8gc28gdGVzdCB0aGF0IGFnYWluLgogICAgIGlmICghd2lsbEJlQ29t
cG9zaXRlZCAmJiBjYW5CZUNvbXBvc2l0ZWQobGF5ZXIpICYmIGNsaXBzQ29tcG9zaXRpbmdEZXNj
ZW5kYW50cyhsYXllcikpIHsKICAgICAgICAgaWYgKG92ZXJsYXBNYXApCi0gICAgICAgICAgICBh
ZGRUb092ZXJsYXBNYXAoKm92ZXJsYXBNYXAsIGxheWVyLCBhYnNCb3VuZHMsIGhhdmVDb21wdXRl
ZEJvdW5kcyk7CisgICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUoKm92ZXJsYXBN
YXAsIGxheWVyKTsKICAgICAgICAgd2lsbEJlQ29tcG9zaXRlZCA9IHRydWU7CiAgICAgfQogCkBA
IC0xODE3LDQgKzE4NTgsMyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29u
dGVudHNTY2FsZShmbG9hdCBzY2FsZSwgUmVuZGVyTGF5ZXIqIGxheWVyKQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5k
ZXggM2JkYWZkZDEyYWY1NGRjMDVhMWM0MzJjZDAyZDgyNGVlOTYxYjNiNC4uZGZmOTk3MzQyY2Q5
ZDIzZGExMWUxNGExYTg4MGQ1ZTMwOWZiYTNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMjE0LDYgKzIxNCw3IEBAIHByaXZh
dGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVuZGVyTGF5ZXIqLCBJbnRSZWN0PiBPdmVybGFw
TWFwOwogICAgIHN0YXRpYyB2b2lkIGFkZFRvT3ZlcmxhcE1hcChPdmVybGFwTWFwJiwgUmVuZGVy
TGF5ZXIqLCBJbnRSZWN0JiBsYXllckJvdW5kcywgYm9vbCYgYm91bmRzQ29tcHV0ZWQpOworICAg
IHZvaWQgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKE92ZXJsYXBNYXAmLCBSZW5kZXJMYXllciop
OwogICAgIHN0YXRpYyBib29sIG92ZXJsYXBzQ29tcG9zaXRlZExheWVycyhPdmVybGFwTWFwJiwg
Y29uc3QgSW50UmVjdCYgbGF5ZXJCb3VuZHMpOwogCiAgICAgdm9pZCB1cGRhdGVDb21wb3NpdGlu
Z0xheWVyc1RpbWVyRmlyZWQoVGltZXI8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPiopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98065</attachid>
            <date>2011-06-21 15:33:57 -0700</date>
            <delta_ts>2011-06-21 15:47:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62181-20110621153356.patch</filename>
            <type>text/plain</type>
            <size>8375</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkzNjMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMGQwM2ExNzU1ODc2MjY4MjdmYjVj
OGFhMDcxM2M0ODQyYzhjODEyLi45MTVhY2Y0NmY2NTYxMmVjMWY1ZDVmZmQwYjZmNzZkODhlMDYy
YjhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMjEgIEFkcmllbm5lIFdhbGtlciAg
PGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgY2hpbGQgbGF5ZXJzIHRvIHRoZSBvdmVybGFwIG1hcCBpZiB0aGVpciBw
YXJlbnQgYmVsYXRlZGx5IGJlY29tZXMgY29tcG9zaXRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxODEKKworICAgICAgICAqIGNvbXBvc2l0aW5n
L2xheWVyLWNyZWF0aW9uL292ZXJsYXAtdHJhbnNmb3JtZWQtbGF5ZXItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9vdmVybGFwLXRyYW5z
Zm9ybWVkLWxheWVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTA2LTIxICBNYXR0aGV3IERlbGFuZXkg
IDxtZGVsYW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vb3Zl
cmxhcC10cmFuc2Zvcm1lZC1sYXllci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9sYXllci1jcmVhdGlvbi9vdmVybGFwLXRyYW5zZm9ybWVkLWxheWVyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iMGUxYjM1MjA1NDEyNTI3OWM0NDBiNWM4YjM2NjljMjhjZDNkYWU3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
b3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXllci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNyBAQAor
KEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4gMQor
ICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAo
Y2hpbGRyZW4gMgorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiAy
My4wMCA4LjAwKQorICAgICAgICAgIChhbmNob3IgMS40NyAwLjAwKQorICAgICAgICAgIChib3Vu
ZHMgMjU2LjAwIDI1Ni4wMCkKKyAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAg
KHRyYW5zZm9ybSBbMS4wMCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMS4wMCAwLjAwIDAuMDBdIFsw
LjAwIDAuMDAgMS4wMCAwLjAwXSBbLTEwLjAwIDAuMDAgMC4wMCAxLjAwXSkKKyAgICAgICAgICAo
Y2hpbGRyZW4gMQorICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAgKHBv
c2l0aW9uIDM4NS4wMCAwLjAwKQorICAgICAgICAgICAgKQorICAgICAgICAgICkKKyAgICAgICAg
KQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChib3VuZHMgMzAwLjAwIDMwMC4w
MCkKKyAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICkKKyAgICAgICkKKyAgICAp
CisgICkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3Jl
YXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXllci5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXllci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYwYWYwNzU1Y2U2MzY1YzFmOTlkYTdmZDhjNzRkZDFkMWJhNDAxZWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9vdmVybGFw
LXRyYW5zZm9ybWVkLWxheWVyLmh0bWwKQEAgLTAsMCArMSw2NyBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzdHlsZT4KKyAgICAjY29udGFpbmVyIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRy
YW5zbGF0ZSgtMTBweCwgMHB4KTsKKyAgICB9CisKKyAgICAjcmVkIHsKKyAgICAgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgICAgICBsZWZ0OiAxNXB4OworICAgICAgICB0b3A6IDBweDsKKyAg
ICAgICAgaGVpZ2h0OiAyNTZweDsKKyAgICAgICAgd2lkdGg6IDI1NnB4OworICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZWQ7CisgICAgfQorCisgICAgI2dyZWVuIHsKKyAgICAgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgICAgICBsZWZ0OiAwcHg7CisgICAgICAgIHRvcDogMHB4OworICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKworICAgICNjb21wb3NpdGVkIHsKKyAgICAgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0OiA0MDBweDsKKyAgICAgICAgLXdlYmtp
dC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTsKKyAgICB9CisKKyAgICAjbGF5ZXJ0cmVlIHsKKyAg
ICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0OiAxMDAwMHB4OworICAgICAg
ICB0b3A6IDBweDsKKyAgICB9CisKKyAgICBib2R5IHsKKyAgICAgICAgb3ZlcmZsb3c6IGhpZGRl
bjsKKyAgICB9CisKKzwvc3R5bGU+CisKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KGZhbHNlKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVydHJlZSIpLmlubmVyVGV4dCA9
IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9LCBmYWxzZSk7CisgICAg
fQorPC9zY3JpcHQ+CisKKzxib2R5PgorICAgIDxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgICAg
IDwhLS0gVGhpcyByZWQgc3F1YXJlIHNob3VsZCBub3QgYmUgdmlzaWJsZSAtLT4KKyAgICAgICAg
PGRpdiBpZD0icmVkIj48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0iY29tcG9zaXRlZCI+PC9kaXY+
CisgICAgPC9kaXY+CisKKyAgICA8IS0tIFRoaXMgZ3JlZW4gc3F1YXJlIHNob3VsZCByZW5kZXIg
Y29tcGxldGVseSBvbiB0b3Agb2YgdGhlIHJlZCBvbmUgLS0+CisgICAgPGRpdiBpZD0iZ3JlZW4i
PjwvZGl2PgorCisgICAgPHByZSBpZD0ibGF5ZXJ0cmVlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwNmFkYmQ1YzYzZDkzOGU0ZmU4NmJkNThmNzk1NTBlNWNmMWU2NDQ4
Li5hYzc1MDNkYjBiNTIxZmUyMDQwM2M4YjA4Nzk5ZjdmOGRhOWUyYTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTEtMDYtMjEgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgY2hpbGQgbGF5ZXJzIHRvIHRoZSBvdmVybGFwIG1hcCBpZiB0aGVpciBwYXJlbnQgYmVsYXRl
ZGx5IGJlY29tZXMgY29tcG9zaXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjIxODEKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjph
ZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKwogMjAxMS0wNi0yMSAgQWxleGFuZHJ1
IENoaWN1bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9u
eSBDaGFuZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKaW5kZXggMjg0MzJkNzJmN2ZjMmY0Y2MyZGI2YzhlMTMwZDZhYzBhYzJhYWVi
Yy4uNDM5YTc0ZGUwZjMxZGM1ZTk4N2VlMjY4MWMyMDBkM2I0OTdmY2Y1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTU2
OSw2ICs1NjksNDUgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1h
cChPdmVybGFwTWFwJiBvdmVybGFwTWFwLCBSZW5kZXJMYXllcioKICAgICBvdmVybGFwTWFwLmFk
ZChsYXllciwgbGF5ZXJCb3VuZHMpOwogfQogCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
YWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKE92ZXJsYXBNYXAmIG92ZXJsYXBNYXAsIFJlbmRlckxh
eWVyKiBsYXllcikKK3sKKyAgICBpZiAoIWNhbkJlQ29tcG9zaXRlZChsYXllcikgfHwgb3Zlcmxh
cE1hcC5jb250YWlucyhsYXllcikpCisgICAgICAgIHJldHVybjsKKworICAgIEludFJlY3QgYm91
bmRzOworICAgIGJvb2wgaGF2ZUNvbXB1dGVkQm91bmRzID0gZmFsc2U7CisgICAgYWRkVG9PdmVy
bGFwTWFwKG92ZXJsYXBNYXAsIGxheWVyLCBib3VuZHMsIGhhdmVDb21wdXRlZEJvdW5kcyk7CisK
KyAgICBpZiAobGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgaWYgKFZlY3Rv
cjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXItPm5lZ1pPcmRlckxpc3QoKSkg
eworICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOwor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gbmVnWk9yZGVyTGlzdC0+YXQoaSk7
CisgICAgICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsIGN1
ckxheWVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVCgh
bGF5ZXItPm1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7CisgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXll
cio+KiBub3JtYWxGbG93TGlzdCA9IGxheWVyLT5ub3JtYWxGbG93TGlzdCgpKSB7CisgICAgICAg
IHNpemVfdCBsaXN0U2l6ZSA9IG5vcm1hbEZsb3dMaXN0LT5zaXplKCk7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgeworICAgICAgICAgICAgUmVuZGVyTGF5
ZXIqIGN1ckxheWVyID0gbm9ybWFsRmxvd0xpc3QtPmF0KGkpOworICAgICAgICAgICAgYWRkVG9P
dmVybGFwTWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsIGN1ckxheWVyKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgICAgICBpZiAo
VmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci0+cG9zWk9yZGVyTGlz
dCgpKSB7CisgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXpl
KCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsK
KyAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBwb3NaT3JkZXJMaXN0LT5h
dChpKTsKKyAgICAgICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUob3ZlcmxhcE1h
cCwgY3VyTGF5ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCiBib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6b3ZlcmxhcHNDb21wb3NpdGVkTGF5ZXJzKE92ZXJsYXBN
YXAmIG92ZXJsYXBNYXAsIGNvbnN0IEludFJlY3QmIGxheWVyQm91bmRzKQogewogICAgIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6T3ZlcmxhcE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gb3Zlcmxh
cE1hcC5lbmQoKTsKQEAgLTY5OCw3ICs3MzcsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBsYXllciwgTwog
ICAgIGlmICghd2lsbEJlQ29tcG9zaXRlZCAmJiBjYW5CZUNvbXBvc2l0ZWQobGF5ZXIpICYmIGNo
aWxkU3RhdGUubV9zdWJ0cmVlSXNDb21wb3NpdGluZyAmJiByZXF1aXJlc0NvbXBvc2l0aW5nV2hl
bkRlc2NlbmRhbnRzQXJlQ29tcG9zaXRpbmcobGF5ZXItPnJlbmRlcmVyKCkpKSB7CiAgICAgICAg
IGxheWVyLT5zZXRNdXN0T3ZlcmxhcENvbXBvc2l0ZWRMYXllcnModHJ1ZSk7CiAgICAgICAgIGlm
IChvdmVybGFwTWFwKQotICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFwKCpvdmVybGFwTWFwLCBs
YXllciwgYWJzQm91bmRzLCBoYXZlQ29tcHV0ZWRCb3VuZHMpOworICAgICAgICAgICAgYWRkVG9P
dmVybGFwTWFwUmVjdXJzaXZlKCpvdmVybGFwTWFwLCBsYXllcik7CiAgICAgICAgIHdpbGxCZUNv
bXBvc2l0ZWQgPSB0cnVlOwogICAgIH0KIApAQCAtNzE3LDcgKzc1Niw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5
ZXIqIGxheWVyLCBPCiAgICAgLy8gc28gdGVzdCB0aGF0IGFnYWluLgogICAgIGlmICghd2lsbEJl
Q29tcG9zaXRlZCAmJiBjYW5CZUNvbXBvc2l0ZWQobGF5ZXIpICYmIGNsaXBzQ29tcG9zaXRpbmdE
ZXNjZW5kYW50cyhsYXllcikpIHsKICAgICAgICAgaWYgKG92ZXJsYXBNYXApCi0gICAgICAgICAg
ICBhZGRUb092ZXJsYXBNYXAoKm92ZXJsYXBNYXAsIGxheWVyLCBhYnNCb3VuZHMsIGhhdmVDb21w
dXRlZEJvdW5kcyk7CisgICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUoKm92ZXJs
YXBNYXAsIGxheWVyKTsKICAgICAgICAgd2lsbEJlQ29tcG9zaXRlZCA9IHRydWU7CiAgICAgfQog
CkBAIC0xODIwLDQgKzE4NTksMyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRl
Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSwgUmVuZGVyTGF5ZXIqIGxheWVyKQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgK
aW5kZXggMTUwZmYxZmFhNTI3ZDBlNTY1YTQ4MjVkYTQ1YzQxNjRkZGQwZmE3OC4uYWRlOGViN2Nm
MWEzYWMzNWVlOTIyZTRjYmFlNWU3N2JkMmM0ZjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMjE0LDYgKzIxNCw3IEBAIHBy
aXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVuZGVyTGF5ZXIqLCBJbnRSZWN0PiBPdmVy
bGFwTWFwOwogICAgIHN0YXRpYyB2b2lkIGFkZFRvT3ZlcmxhcE1hcChPdmVybGFwTWFwJiwgUmVu
ZGVyTGF5ZXIqLCBJbnRSZWN0JiBsYXllckJvdW5kcywgYm9vbCYgYm91bmRzQ29tcHV0ZWQpOwor
ICAgIHZvaWQgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKE92ZXJsYXBNYXAmLCBSZW5kZXJMYXll
ciopOwogICAgIHN0YXRpYyBib29sIG92ZXJsYXBzQ29tcG9zaXRlZExheWVycyhPdmVybGFwTWFw
JiwgY29uc3QgSW50UmVjdCYgbGF5ZXJCb3VuZHMpOwogCiAgICAgdm9pZCB1cGRhdGVDb21wb3Np
dGluZ0xheWVyc1RpbWVyRmlyZWQoVGltZXI8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPiopOwo=
</data>
<flag name="review"
          id="92191"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>