<?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>82680</bug_id>
          
          <creation_ts>2012-03-29 17:13:09 -0700</creation_ts>
          <short_desc>[Chromium] Do not force swap or readback if there is nothing to draw.</short_desc>
          <delta_ts>2012-05-07 14:43:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          <dependson>83293</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Sievers">sievers</reporter>
          <assigned_to name="Daniel Sievers">sievers</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>husky</cc>
    
    <cc>jamesr</cc>
    
    <cc>klobag</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>591733</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-03-29 17:13:09 -0700</bug_when>
    <thetext>[Chromium] Do not force draws if prepareToDraw() fails</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591746</commentid>
    <comment_count>1</comment_count>
      <attachid>134702</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-03-29 17:24:34 -0700</bug_when>
    <thetext>Created attachment 134702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591772</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-03-29 17:58:05 -0700</bug_when>
    <thetext>In short, this restricts forceDraw to override all conditions in shouldDraw(), so we will transition to attempt a draw as before.

But something might be really wrong at the actual draw time (indicated by CCLayerTreeHostImpl::prepareToDraw() failing). Here I think we should not override with force draw. Instead skip the SwapBuffers() and do everything else such as signaling completion.

The specific failure on Android (flashes of corruption with the root surface clear color) comes from this race:
- new WebView created (visible by default) and it creates an empty document
- kForceCompositing early on enters compositing aggressively and creates an empty root layer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591789</commentid>
    <comment_count>3</comment_count>
      <attachid>134702</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-29 18:33:08 -0700</bug_when>
    <thetext>Comment on attachment 134702
Patch

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

Nice work :) Nat would you know if this is going to interact strangely with thumbnailing? I&apos;m less familiar with that.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:367
&gt; +    if (!rootLayer() || rootLayer()-&gt;bounds().isEmpty())

Can this condition go in canDraw() and make this just call canDraw()? It&apos;ll let us prevent attempting non-forced frames at all when root layer is empty, and keep these conditions more in one place.

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:829
&gt; +class CCLayerTreeHostTestEmptyContentsShouldNotDraw : public CCLayerTreeHostTestThreadOnly {

Do we have a test to verify that a forced draw will not deadlock if the root layer is empty/nonvisible/notpresent?

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:861
&gt; +            endTest();

Should this be done after coming back to didCommitAndDrawFrame() again to make sure we don&apos;t skip the finishAllRendering attempt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591791</commentid>
    <comment_count>4</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-29 18:33:58 -0700</bug_when>
    <thetext>Woah, this feels like a pretty sweeping change and not at all what I think you wanted to do. Or maybe i&apos;m not following your logic here... all I see is you deleting code that causes us to draw in situations where we need to draw.

ForceDraw is meant to be a state you use when you NEED a draw when you&apos;re invisible, and need to draw. E.g. if the thumbnailer is demanding a compositeAndReadback. Usually we&apos;d decline to paint because we&apos;re invisible. You set forceDraw to make that happen.

Your description of the actual bug happening is a little confusing to me. Can you elaborate on it, and explain why removing force draw helps?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591797</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-29 18:40:22 -0700</bug_when>
    <thetext>Oh I think the problem here is only that prepareToDraw() can return false in two different cases and this patch needs more granularity.

I got caught up in thinking about the canDraw() type states and forgot about the fact that prepareToDraw() returns false for other reasons too when the root layer is valid.

I think we just need a canDraw() check on the forced draw path. And we don&apos;t do the draw/swap if canDraw() is false or prepareToDraw() is false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591798</commentid>
    <comment_count>6</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-29 18:42:04 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Your description of the actual bug happening is a little confusing to me. Can you elaborate on it, and explain why removing force draw helps?

Nat problem is forced draw with empty-bound root layer equals big empty framebuffer that pretends to have contents but does not, and this causes a flash until the real contents happen.

We need to prevent the draw/swap when there is no valid thing to draw, ie canDraw() is false, extended to check for rootLayer being non-empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591800</commentid>
    <comment_count>7</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-29 18:44:31 -0700</bug_when>
    <thetext>Ah. Hmm.... Is it the draw that we&apos;re trying to prevent, the swap, or both?

Maybe the thing I&apos;m missing is that we need forcedDraw to get the state machine to call those deferred thinsg like compositeAndReadback/FinishAllRendering, but that we dont actually need to draw for either of those actual states. The forcedDraw is really forceAScheduledActionDrawAndSwap ,not a force-a-picture-onscreen, right?

Can we take this opportunity to just ditch canDraw and put it into the prepareToDraw state? Or is that still not possible?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591802</commentid>
    <comment_count>8</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-29 18:47:22 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Ah. Hmm.... Is it the draw that we&apos;re trying to prevent, the swap, or both?
&gt; 
&gt; Maybe the thing I&apos;m missing is that we need forcedDraw to get the state machine to call those deferred thinsg like compositeAndReadback/FinishAllRendering, but that we dont actually need to draw for either of those actual states. The forcedDraw is really forceAScheduledActionDrawAndSwap ,not a force-a-picture-onscreen, right?
&gt; 
&gt; Can we take this opportunity to just ditch canDraw and put it into the prepareToDraw state? Or is that still not possible?

I think that makes it worse. prepareToDraw() == false shouldn&apos;t prevent the forced draw *if* it was because of animations. But it should if it was because of canDraw() type things. If prepareToDraw() returns an enum instead then we could do that here yes.

But it would also change the next state from the state machine in these situations, and it would be attempting to draw constantly while there is nothing to draw, I assume that&apos;s okay?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591805</commentid>
    <comment_count>9</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-29 18:48:15 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Ah. Hmm.... Is it the draw that we&apos;re trying to prevent, the swap, or both?

It&apos;s the swap. All the draw would be is a glClear(), which could be avoided while we&apos;re at it though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591820</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-03-29 19:27:17 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:367
&gt; &gt; +    if (!rootLayer() || rootLayer()-&gt;bounds().isEmpty())
&gt; 
&gt; Can this condition go in canDraw() and make this just call canDraw()? It&apos;ll let us prevent attempting non-forced frames at all when root layer is empty, and keep these conditions more in one place.
&gt; 

Will do.

&gt; &gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:829
&gt; &gt; +class CCLayerTreeHostTestEmptyContentsShouldNotDraw : public CCLayerTreeHostTestThreadOnly {
&gt; 
&gt; Do we have a test to verify that a forced draw will not deadlock if the root layer is empty/nonvisible/notpresent?
&gt; 

I think CCLayerTreeHostTestCompositeAndReadbackWhileInvisible and  CCLayerTreeHostTestSetRepeatedLostContext cover this. They both block for all rendering to complete.


&gt; &gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:861
&gt; &gt; +            endTest();
&gt; 
&gt; Should this be done after coming back to didCommitAndDrawFrame() again to make sure we don&apos;t skip the finishAllRendering attempt?


But isn&apos;t this fine since finishAllRendering() is blocking?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591823</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-03-29 19:34:23 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Ah. Hmm.... Is it the draw that we&apos;re trying to prevent, the swap, or both?
&gt; 

Mainly the swap(), but maybe also fall into the existing logic for the below?
  if (drawFrame)
        m_layerTreeHostImpl-&gt;drawLayers(frame);

Regardless, I&apos;m not trying to change the logic for when *scheduledActionDrawAndSwapInternal()* gets called at all with this patch, which I think is what &apos;force draw&apos; originally did, but maybe now it became a but too aggressive in forcing.

&gt; Maybe the thing I&apos;m missing is that we need forcedDraw to get the state machine to call those deferred thinsg like compositeAndReadback/FinishAllRendering, but that we dont actually need to draw for either of those actual states. The forcedDraw is really forceAScheduledActionDrawAndSwap ,not a force-a-picture-onscreen, right?
&gt; 

Yes, that&apos;s basically what I&apos;m trying to achieve. It should always force to try and draw and it should always signal completion. But if there is nothing to draw simply skip drawLayers() and swapBuffers().
I thought prepareToDraw() returning false would exactly cover the latter, but as Dana indicates there is a case I&apos;m breaking (with animations?)?


&gt; Can we take this opportunity to just ditch canDraw and put it into the prepareToDraw state? Or is that still not possible?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591827</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-03-29 19:39:09 -0700</bug_when>
    <thetext>I think at the heart of my patch is this:

CCThreadProxy::scheduledActionDrawAndSwapInternal()
...
 bool drawFrame = m_layerTreeHostImpl-&gt;prepareToDraw(frame) || forcedDraw; // remove &apos;|| forcedDraw&apos;

Note that (before and after my patch) the function still signals completion on such regardless of drawFrame.

Plus also treating rootLayer.ContentBounds().isEmpty similar to !rootLayer at the actual draw time.

The rest is removing the FORCED_DRAW state as it seems its obsolete. I think the important logic (which also originally did not require an extra state) is to allow forcing transitions to try to draw even when invisible etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591834</commentid>
    <comment_count>13</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-29 19:55:05 -0700</bug_when>
    <thetext>I super apologize, I had an epic brain fart in our discussion and forgot about the animation checkerboarding. When we are going to to be unable to draw an animating layer, we have prepareToDraw() return false.

(In reply to comment #10)
&gt; &gt; Should this be done after coming back to didCommitAndDrawFrame() again to make sure we don&apos;t skip the finishAllRendering attempt?
&gt; 
&gt; 
&gt; But isn&apos;t this fine since finishAllRendering() is blocking?

I was thinking that we setNeedsForcedRedraw() through there, but want to make sure the test has a chance to hit the FAIL() in case it is doing the wrong thing?

(In reply to comment #12)
&gt; I think at the heart of my patch is this:
&gt; 
&gt; CCThreadProxy::scheduledActionDrawAndSwapInternal()
&gt; ...
&gt;  bool drawFrame = m_layerTreeHostImpl-&gt;prepareToDraw(frame) || forcedDraw; // remove &apos;|| forcedDraw&apos;

&gt; The rest is removing the FORCED_DRAW state as it seems its obsolete. I think the important logic (which also originally did not require an extra state) is to allow forcing transitions to try to draw even when invisible etc.

I think we need the forcedDraw still for thumbnailing. It forces us to draw a frame even though animation is resisting our attempts (!prepareToDraw()).

Here&apos;s what I think our situation looks like.

1. REDRAW_IF_POSSIBLE
a) Should draw and swap if canDraw() &amp;&amp; prepareToDraw()
b) Should not draw or swap otherwise.

2. REDRAW_FORCED
a) If canDraw() &amp;&amp; prepareToDraw() then draw and swap.
b) If !canDraw() then we get garbage anyways so don&apos;t draw or swap (thumbnailer won&apos;t mind yes?)
c) If canDraw() &amp;&amp; !prepareToDraw() ignore it and draw anyways and swap.

Nat you suggested in chat that for 2b) just draw anyways cuz it&apos;s overoptimization. But then we have to worry about partial swaps and if we should swap the bad contents. It seems easier and just as valid to just not draw/swap in that case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592233</commentid>
    <comment_count>14</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-30 09:49:37 -0700</bug_when>
    <thetext>I&apos;d like to keep force draw. If we can remove it after the fact as a cleanup patch, thats fine --- but we may end up wanting to cherry pick this code to M19 and if we do, I&apos;d like it to be minimal in terms of risk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592236</commentid>
    <comment_count>15</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-03-30 09:57:18 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I&apos;d like to keep force draw. If we can remove it after the fact as a cleanup patch, thats fine --- but we may end up wanting to cherry pick this code to M19 and if we do, I&apos;d like it to be minimal in terms of risk.

Sounds good. I&apos;ll keep the DRAW_FORCED state then and only skip the drawLayers() + swap() then if there is nothing to draw.

&gt; Nat you suggested in chat that for 2b) just draw anyways cuz it&apos;s overoptimization. But then we have to worry about partial swaps and if we should swap the bad contents. It seems easier and just as valid to just not draw/swap in that case?

I think 2b) is the exact case I&apos;m trying to fix :)

So I guess it&apos;s simply something like:
bool drawFrame = (prepareToDraw() || forcedDraw) &amp;&amp; canDraw();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592274</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-30 10:41:27 -0700</bug_when>
    <thetext>Just for prioritization, keep in mind that there is no thumbnailer any more on Chrome on Android or ChromeOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592275</commentid>
    <comment_count>17</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-30 10:41:52 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Just for prioritization, keep in mind that there is no thumbnailer any more on Chrome on Android or ChromeOS.

(meaning there&apos;s no thumbnailer on any platform where we currently support the threaded mode)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592281</commentid>
    <comment_count>18</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-30 10:43:39 -0700</bug_when>
    <thetext>Oh, thanks James, good point. I think that&apos;s more support for your suggested approach to 2b Daniel. (You can check canDraw before prepareToDraw to avoid some work.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594075</commentid>
    <comment_count>19</comment_count>
      <attachid>135242</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-02 17:34:51 -0700</bug_when>
    <thetext>Created attachment 135242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594078</commentid>
    <comment_count>20</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-02 17:39:51 -0700</bug_when>
    <thetext>&gt; (In reply to comment #10)
&gt; &gt; &gt; Should this be done after coming back to didCommitAndDrawFrame() again to make sure we don&apos;t skip the finishAllRendering attempt?
&gt; &gt; 
&gt; &gt; 
&gt; &gt; But isn&apos;t this fine since finishAllRendering() is blocking?
&gt; 
&gt; I was thinking that we setNeedsForcedRedraw() through there, but want to make sure the test has a chance to hit the FAIL() in case it is doing the wrong thing?
&gt; 

I still couldn&apos;t get it to work that way (wait for the next call to didCommitAndDraw() frame), because that callback is conditional on m_nextFrameIsNewlyCommittedFrameOnImplThread. Which means it gets only called for newly committed frames.
It works for the forced readback which does a synchronous commit.

I think it&apos;s ok though because finishAllRendering() only gets posted after drawLayers() would have been called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594079</commentid>
    <comment_count>21</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-02 17:41:20 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; 
&gt; I think it&apos;s ok though because finishAllRendering() only gets posted after drawLayers() would have been called.

I meant &apos;completion for finishAllRendering()&apos; does not get signaled until after drawLayers() would have been called on the impl thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594081</commentid>
    <comment_count>22</comment_count>
      <attachid>135243</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-02 17:43:44 -0700</bug_when>
    <thetext>Created attachment 135243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594114</commentid>
    <comment_count>23</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-02 18:31:13 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; I think it&apos;s ok though because finishAllRendering() only gets posted after drawLayers() would have been called.
&gt; 
&gt; I meant &apos;completion for finishAllRendering()&apos; does not get signaled until after drawLayers() would have been called on the impl thread.

Oh I see the finishAllRendering() will block until the impl side is done. Then this should be great, sorry for the confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594117</commentid>
    <comment_count>24</comment_count>
      <attachid>135243</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-02 18:38:00 -0700</bug_when>
    <thetext>Comment on attachment 135243
Patch

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

Other than ordering comment below, this seems good to me, thanks.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:581
&gt; +    bool drawFrame = (m_layerTreeHostImpl-&gt;prepareToDraw(frame) || forcedDraw) &amp;&amp; m_layerTreeHostImpl-&gt;canDraw();

Do the canDraw() first please, so it can early out on the prepareToDraw().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594140</commentid>
    <comment_count>25</comment_count>
      <attachid>135258</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-02 19:18:28 -0700</bug_when>
    <thetext>Created attachment 135258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594600</commentid>
    <comment_count>26</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-03 10:18:11 -0700</bug_when>
    <thetext>Enne or James, passing this off to you. Can you PTAL at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594674</commentid>
    <comment_count>27</comment_count>
      <attachid>135258</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-03 11:25:19 -0700</bug_when>
    <thetext>Comment on attachment 135258
Patch

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

Seems OK.  Going to R+, but please make sure Nat has a chance to take a look before you land.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:591
&gt;          m_readbackRequestOnImplThread-&gt;success = !m_layerTreeHostImpl-&gt;isContextLost();

if we couldn&apos;t actually do a readback, success should be false - right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594684</commentid>
    <comment_count>28</comment_count>
      <attachid>135374</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-03 11:31:16 -0700</bug_when>
    <thetext>Created attachment 135374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594685</commentid>
    <comment_count>29</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-03 11:32:21 -0700</bug_when>
    <thetext>(In reply to comment #27)&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:591
&gt; &gt;          m_readbackRequestOnImplThread-&gt;success = !m_layerTreeHostImpl-&gt;isContextLost();
&gt; 
&gt; if we couldn&apos;t actually do a readback, success should be false - right?

True, changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595816</commentid>
    <comment_count>30</comment_count>
      <attachid>135374</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-04-04 12:48:05 -0700</bug_when>
    <thetext>Comment on attachment 135374
Patch

LGTM. Thank you.

Can you make some comments on the canDraw entry in CCLTHI.h that explains the role of canDraw versus prepareToDraw? I&apos;m uneasy about the duplicated roles that we have there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595849</commentid>
    <comment_count>31</comment_count>
      <attachid>135660</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-04 13:22:17 -0700</bug_when>
    <thetext>Created attachment 135660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595852</commentid>
    <comment_count>32</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-04 13:24:21 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 135374 [details])
&gt; LGTM. Thank you.
&gt; 
&gt; Can you make some comments on the canDraw entry in CCLTHI.h that explains the role of canDraw versus prepareToDraw? I&apos;m uneasy about the duplicated roles that we have there.

Done. I guess I&apos;m expecting that there is at least a background root layer if canDraw() succeeds but prepareToDraw() might fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595855</commentid>
    <comment_count>33</comment_count>
      <attachid>135663</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-04 13:25:01 -0700</bug_when>
    <thetext>Created attachment 135663
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595857</commentid>
    <comment_count>34</comment_count>
      <attachid>135663</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-04 13:25:53 -0700</bug_when>
    <thetext>Comment on attachment 135663
Patch for landing

Rejecting attachment 135663 from commit-queue.

sievers@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595862</commentid>
    <comment_count>35</comment_count>
      <attachid>135665</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-04 13:29:12 -0700</bug_when>
    <thetext>Created attachment 135665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595944</commentid>
    <comment_count>36</comment_count>
      <attachid>135665</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-04 14:27:53 -0700</bug_when>
    <thetext>Comment on attachment 135665
Patch

Clearing flags on attachment: 135665

Committed r113241: &lt;http://trac.webkit.org/changeset/113241&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595945</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-04 14:27:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596069</commentid>
    <comment_count>38</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-04-04 16:21:50 -0700</bug_when>
    <thetext>This broke gpu_tests: http://build.chromium.org/p/chromium.webkit/builders/GPU%20Mac%20%28dbg%29/builds/2145/steps/gpu_tests/logs/ThreadedCompositor

I can&apos;t revert due to conflicts, so I will suppress the test instead. Please fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596148</commentid>
    <comment_count>39</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-04 17:52:22 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; This broke gpu_tests: http://build.chromium.org/p/chromium.webkit/builders/GPU%20Mac%20%28dbg%29/builds/2145/steps/gpu_tests/logs/ThreadedCompositor
&gt; 
&gt; I can&apos;t revert due to conflicts, so I will suppress the test instead. Please fix.

Yes, had to revert the added rootLayer()-&gt;bounds().isEmpty() check since  m_overflowControlsHostLayer does not set its size. I&apos;ll see if there&apos;s another simple way to check for empty contents (I guess underneath that root layer then) that works for empty documents.
Or maybe RenderLayerCompositor should just set the size on that layer like it does for the clip layer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596187</commentid>
    <comment_count>40</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-04 18:19:02 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #38)
&gt; &gt; This broke gpu_tests: http://build.chromium.org/p/chromium.webkit/builders/GPU%20Mac%20%28dbg%29/builds/2145/steps/gpu_tests/logs/ThreadedCompositor
&gt; &gt; 
&gt; &gt; I can&apos;t revert due to conflicts, so I will suppress the test instead. Please fix.
&gt; 
&gt; Yes, had to revert the added rootLayer()-&gt;bounds().isEmpty() check since  m_overflowControlsHostLayer does not set its size. I&apos;ll see if there&apos;s another simple way to check for empty contents (I guess underneath that root layer then) that works for empty documents.
&gt; Or maybe RenderLayerCompositor should just set the size on that layer like it does for the clip layer?

It&apos;s not a bounding box hierarchy.  You can&apos;t just check one layer&apos;s bounds and make assumptions about the rest of the tree.

When do you have a root layer but nothing in it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596212</commentid>
    <comment_count>41</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-04 18:57:32 -0700</bug_when>
    <thetext>(In reply to comment #40)

&gt; It&apos;s not a bounding box hierarchy.  You can&apos;t just check one layer&apos;s bounds and make assumptions about the rest of the tree.
&gt; 
&gt; When do you have a root layer but nothing in it?

New WebView&apos;s create and attach an empty document and with force-compositing-mode this creates an empty root layer. There are races where we can end up drawing/swapping this empty frame.

So looks like I need to traverse then? I&apos;ll check if looking for descendants with &apos;isDrawable&apos; is good enough here (or if I need to check bounds for 0 also somehow).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597611</commentid>
    <comment_count>42</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-04-06 13:29:46 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=83351 is great too and for practical purposes means that we already don&apos;t swap frames with undefined pixels anymore if there is no content. Instead it would fill with the background color.

However, the little caveat: The default background if the document is empty and doesnt specify one (white?) is maybe not always ideal and it might still be nicer to skip the swap. (While if there is at least some pixels to draw, even if they don&apos;t fill the viewport, that probably implies that there is also a more well-defined background color from the document).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134702</attachid>
            <date>2012-03-29 17:24:34 -0700</date>
            <delta_ts>2012-04-02 17:34:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82680-20120329172433.patch</filename>
            <type>text/plain</type>
            <size>21901</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE2MDBhYjVlNTU4YTU0
NmJlMDc0MWYyYjVlMjRmZDc5ZTcwOWFlYi4uZDY2MmFiYTc3ODNiN2UzNTIxOGRkMmMxZWI1OThh
YWNiNGMwNGMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAzLTI5ICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
RG8gbm90IGZvcmNlIGRyYXdzIGlmIHByZXBhcmVUb0RyYXcoKSBmYWlscworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI2ODAKKworICAgICAgICBBbHNv
IGZhaWwgcHJlcGFyZVRvRHJhdygpIGlmIHRoZXJlIGFyZSBubyBjb250ZW50cyB0byBkcmF3Lgor
CisgICAgICAgIFdlIHNob3VsZCBuZXZlciBmb3JjZSBhIGRyYXcgYXMgcHJlcGFyZVRvRHJhdygp
IGZhaWxpbmcKKyAgICAgICAgaW5kaWNhdGVzIHRoYXQgd2UgaGF2ZSBub3RoaW5nIHRvIGRyYXcg
YW5kIHdvdWxkIHRoZXJlZm9yZQorICAgICAgICBwb3RlbnRpYWxseSBjYXVzZSBhbiB1bmRlZmlu
ZWQgZnJhbWUgdG8gYmUgZGlzcGxheWVkLgorICAgICAgICBJbnN0ZWFkIHJlc3RyaWN0IHRoZSBt
ZWFuaW5nIG9mICdmb3JjZSBkcmF3JyB0byBmb3JjZSBhCisgICAgICAgIHRyYW5zaXRpb24gc28g
dGhhdCB3ZSB3aWxsIGF0dGVtcHQgYSBkcmF3IChhbmQgd2UgYXJlCisgICAgICAgIGFsc28gZ3Vh
cmFudGVlZCB0byBzaWduYWwgY29tcGxldGlvbiBmb3IgdGhlIGRyYXcgYWN0aW9uCisgICAgICAg
IGlmIG5vdGhpbmcgd2FzIGRyYXduKS4KKworICAgICAgICBPbmUgZXhhbXBsZSB3aGVyZSB3ZSBj
YW4gaGF2ZSBhbiBlbXB0eSByb290IGxheWVyIGlzCisgICAgICAgIHdoZW4gYSBXZWJWaWV3IGlz
IGZpcnN0IGNyZWF0ZWQgKGFuZCBkZWZhdWx0aW5nIHRvIHZpc2libGUpCisgICAgICAgIGFuZCBn
ZXRzIGF0dGFjaGVkIGFuIGVtcHR5IGRvY3VtZW50IGFuZCB3ZSBhcmUgZm9yY2luZworICAgICAg
ICBjb21wb3NpdGluZyB3aGljaCBjcmVhdGVzIGFuIGVtcHR5IHJvb3QgbGF5ZXIgZm9yIGl0Lgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIEND
TGF5ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdyB0ZXN0CisgICAgICAg
IGFuZCBhZGp1c3RlZCBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oOgorICAgICAgICAoQ0NTY2hl
ZHVsZXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
OgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisKIDIwMTItMDMtMjcgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcGFyYXRlIEBpbXBvcnQgcnVsZXMgZnJv
bSBvdGhlciBydWxlcyBpbiBDU1NTdHlsZVNoZWV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDVmMGFjYmM5NGE1Yjg0MDkwYmJkODI3N2U4MGMyNjY1YThiNmUxMDguLmMyMDMzMzNkZWU1
NDk3NjdiMzY0YzZlYTBlMzNlOGY4Y2NiYjY4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDMtMjkgIERhbmllbCBTaWV2ZXJzICA8c2lldmVyc0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBEbyBub3QgZm9yY2UgZHJhd3MgaWYg
cHJlcGFyZVRvRHJhdygpIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MjY4MAorCisgICAgICAgIEFsc28gZmFpbCBwcmVwYXJlVG9EcmF3KCkg
aWYgdGhlcmUgYXJlIG5vIGNvbnRlbnRzIHRvIGRyYXcuCisKKyAgICAgICAgV2Ugc2hvdWxkIG5l
dmVyIGZvcmNlIGEgZHJhdyBhcyBwcmVwYXJlVG9EcmF3KCkgZmFpbGluZworICAgICAgICBpbmRp
Y2F0ZXMgdGhhdCB3ZSBoYXZlIG5vdGhpbmcgdG8gZHJhdyBhbmQgd291bGQgdGhlcmVmb3JlCisg
ICAgICAgIHBvdGVudGlhbGx5IGNhdXNlIGFuIHVuZGVmaW5lZCBmcmFtZSB0byBiZSBkaXNwbGF5
ZWQuCisgICAgICAgIEluc3RlYWQgcmVzdHJpY3QgdGhlIG1lYW5pbmcgb2YgJ2ZvcmNlIGRyYXcn
IHRvIGZvcmNlIGEKKyAgICAgICAgdHJhbnNpdGlvbiBzbyB0aGF0IHdlIHdpbGwgYXR0ZW1wdCBh
IGRyYXcgKGFuZCB3ZSBhcmUKKyAgICAgICAgYWxzbyBndWFyYW50ZWVkIHRvIHNpZ25hbCBjb21w
bGV0aW9uIGZvciB0aGUgZHJhdyBhY3Rpb24KKyAgICAgICAgaWYgbm90aGluZyB3YXMgZHJhd24p
LgorCisgICAgICAgIE9uZSBleGFtcGxlIHdoZXJlIHdlIGNhbiBoYXZlIGFuIGVtcHR5IHJvb3Qg
bGF5ZXIgaXMKKyAgICAgICAgd2hlbiBhIFdlYlZpZXcgaXMgZmlyc3QgY3JlYXRlZCAoYW5kIGRl
ZmF1bHRpbmcgdG8gdmlzaWJsZSkKKyAgICAgICAgYW5kIGdldHMgYXR0YWNoZWQgYW4gZW1wdHkg
ZG9jdW1lbnQgYW5kIHdlIGFyZSBmb3JjaW5nCisgICAgICAgIGNvbXBvc2l0aW5nIHdoaWNoIGNy
ZWF0ZXMgYW4gZW1wdHkgcm9vdCBsYXllciBmb3IgaXQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQ0NMYXllclRyZWVIb3N0VGVzdEVtcHR5
Q29udGVudHNTaG91bGROb3REcmF3IHRlc3QKKyAgICAgICAgYW5kIGFkanVzdGVkIGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRvQmVn
aW5UZXN0KToKKyAgICAgICAgKFdURik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RUZXN0RW1w
dHlDb250ZW50c1Nob3VsZE5vdERyYXcpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RU
ZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXc6OkNDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0eUNv
bnRlbnRzU2hvdWxkTm90RHJhdyk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RF
bXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdzo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NM
YXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3Ojpjb21taXRDb21wbGV0
ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0RW1wdHlDb250
ZW50c1Nob3VsZE5vdERyYXc6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6
Q0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjpkaWRDb21taXRB
bmREcmF3RnJhbWUpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0RW1wdHlDb250
ZW50c1Nob3VsZE5vdERyYXc6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6Cisg
ICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHA6CisK
IDIwMTItMDMtMjcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIFRyYW5zZmVyIHdoZWVsIGZsaW5nIHZpYSBXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVyQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmlu
ZGV4IDZjNTAyMjU2M2FlZWIyZDI3OWE1NzE5OGQ4Yjk2MTYwMGIzNWNkMzUuLmQxM2VmMzY5MTVm
NDRjYmYwMzBmZmIxMjBmNGE4NzY0Y2FkMTdlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgZnJhbWUucmVuZGVyUGFz
c2VzLmNsZWFyKCk7CiAgICAgZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdC5jbGVhcigpOwog
Ci0gICAgaWYgKCFyb290TGF5ZXIoKSkKKyAgICBpZiAoIXJvb3RMYXllcigpIHx8IHJvb3RMYXll
cigpLT5ib3VuZHMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghY2FsY3VsYXRlUmVuZGVyUGFzc2VzKGZyYW1lLnJlbmRlclBhc3NlcywgZnJhbWUucmVuZGVy
U3VyZmFjZUxheWVyTGlzdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKaW5kZXggMTNiNzQxZWE4
YzNmZjQ4Yzg3NmNjNzJjYjZhNGUwYWRhM2NiMmZhMC4uMDFjYTJiNTcxOWU5NjNkOTEyN2RiNWY4
YjQzZGI1NzdiZmFjMDNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcApAQCAtMTY5LDEwICsx
NjksNiBAQCB2b2lkIENDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpCiAgICAg
ICAgICAgICAgICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5kaWRCZWdpbkZyYW1lKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBV19GT1JDRUQ6Ci0gICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQoKTsKLSAgICAgICAgICAgIG1fZnJhbWVSYXRlQ29u
dHJvbGxlci0+ZGlkQmVnaW5GcmFtZSgpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJ
T046CiAgICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVj
cmVhdGlvbigpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAppbmRleCBj
ODc2ZTIwYmM4Nzc4ZGM3OWFmMzg5YzBiOWE5Y2JjM2FjYmE2OTZmLi5lMWNlOWVlNDc2NTNhYTM0
NmM1OTIxODBhZGE4Y2RjOTNhZWFjNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAgLTQyLDcg
KzQyLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2lu
RnJhbWUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
SWZQb3NzaWJsZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXBGb3JjZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0
ZU1vcmVSZXNvdXJjZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNv
bW1pdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0
UmVjcmVhdGlvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lLmNwcAppbmRleCAxYzk0MmUzNDNjNzc3MTliNjNlNmQzZjA5YjEyYjA1ZGVlMDAxYmRhLi45
ZDA4Y2M3ZTY2YmNhNWQ1NDc5NmUzZmZjMDUwOTQxMWY3YzU4NWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCkBAIC03NSw3ICs3NSw3IEBAIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRB
Y3Rpb24oKSBjb25zdAogICAgIHN3aXRjaCAobV9jb21taXRTdGF0ZSkgewogICAgIGNhc2UgQ09N
TUlUX1NUQVRFX0lETEU6CiAgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSAhPSBDT05URVhUX0FD
VElWRSAmJiBtX25lZWRzRm9yY2VkUmVkcmF3KQotICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9E
UkFXX0ZPUkNFRDsKKyAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsK
ICAgICAgICAgaWYgKG1fY29udGV4dFN0YXRlICE9IENPTlRFWFRfQUNUSVZFICYmIG1fbmVlZHNG
b3JjZWRDb21taXQpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0ZSQU1FOwogICAg
ICAgICBpZiAobV9jb250ZXh0U3RhdGUgPT0gQ09OVEVYVF9MT1NUKQpAQCAtODMsMTkgKzgzLDE5
IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6Om5leHRBY3Rpb24oKSBjb25zdAogICAgICAgICBpZiAobV9jb250ZXh0U3RhdGUgPT0gQ09O
VEVYVF9SRUNSRUFUSU5HKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogICAgICAg
ICBpZiAoc2hvdWxkRHJhdygpKQotICAgICAgICAgICAgcmV0dXJuIG1fbmVlZHNGb3JjZWRSZWRy
YXcgPyBBQ1RJT05fRFJBV19GT1JDRUQgOiBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsKKyAgICAg
ICAgICAgIHJldHVybiBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsKICAgICAgICAgaWYgKG1fbmVl
ZHNDb21taXQgJiYgKG1fdmlzaWJsZSB8fCBtX25lZWRzRm9yY2VkQ29tbWl0KSkKICAgICAgICAg
ICAgIHJldHVybiBBQ1RJT05fQkVHSU5fRlJBTUU7CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9O
RTsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTOgogICAgICAgICBp
ZiAoc2hvdWxkRHJhdygpKQotICAgICAgICAgICAgcmV0dXJuIG1fbmVlZHNGb3JjZWRSZWRyYXcg
PyBBQ1RJT05fRFJBV19GT1JDRUQgOiBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsKKyAgICAgICAg
ICAgIHJldHVybiBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsKICAgICAgICAgcmV0dXJuIEFDVElP
Tl9OT05FOwogCiAgICAgY2FzZSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOgogICAg
ICAgICBpZiAoc2hvdWxkRHJhdygpKQotICAgICAgICAgICAgcmV0dXJuIG1fbmVlZHNGb3JjZWRS
ZWRyYXcgPyBBQ1RJT05fRFJBV19GT1JDRUQgOiBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsKKyAg
ICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsKICAgICAgICAgaWYgKCFt
X3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9C
RUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM7CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsK
QEAgLTEwNSw3ICsxMDUsNyBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29uc3QKIAogICAgIGNhc2UgQ09NTUlU
X1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVc6CiAgICAgICAgIGlmIChzaG91bGREcmF3KCkg
fHwgbV9jb250ZXh0U3RhdGUgPT0gQ09OVEVYVF9MT1NUKQotICAgICAgICAgICAgcmV0dXJuIG1f
bmVlZHNGb3JjZWRSZWRyYXcgPyBBQ1RJT05fRFJBV19GT1JDRUQgOiBBQ1RJT05fRFJBV19JRl9Q
T1NTSUJMRTsKKyAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsKICAg
ICAgICAgLy8gQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcgd2FudHMgdG8gZW5m
b3JjZSBhIGRyYXcuIElmIG1fY2FuRHJhdyBpcyBmYWxzZSwKICAgICAgICAgLy8gcHJvY2VlZCB0
byB0aGUgbmV4dCBzdGVwIChzaW1pbGFyIGFzIGluIENPTU1JVF9TVEFURV9JRExFKS4KICAgICAg
ICAgaWYgKCFtX2NhbkRyYXcgJiYgbV9uZWVkc0NvbW1pdCAmJiAobV92aXNpYmxlIHx8IG1fbmVl
ZHNGb3JjZWRDb21taXQpKQpAQCAtMTQ0LDcgKzE0NCw2IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAgICAgICAgICAgICBtX2xhc3RG
cmFtZU51bWJlcldoZXJlRHJhd1dhc0NhbGxlZCA9IC0xOwogICAgICAgICByZXR1cm47CiAKLSAg
ICBjYXNlIEFDVElPTl9EUkFXX0ZPUkNFRDoKICAgICBjYXNlIEFDVElPTl9EUkFXX0lGX1BPU1NJ
QkxFOgogICAgICAgICBtX25lZWRzUmVkcmF3ID0gZmFsc2U7CiAgICAgICAgIG1fbmVlZHNGb3Jj
ZWRSZWRyYXcgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZS5oCmluZGV4IDJlY2ZkMWNkMDZkNTA4YWUxZmU2MWY2ODM5MjE2ODFhZmRjZWI4NjYuLmQ0OWNh
YjkzYjY3YzIxMDNlN2QwYjNlMmMwM2UzMzE1Yzc4YzQyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApAQCAtNzAsNyArNzAsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsCiAgICAgICAgIEFDVElPTl9D
T01NSVQsCiAgICAgICAgIEFDVElPTl9EUkFXX0lGX1BPU1NJQkxFLAotICAgICAgICBBQ1RJT05f
RFJBV19GT1JDRUQsCiAgICAgICAgIEFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT04KICAg
ICB9OwogICAgIEFjdGlvbiBuZXh0QWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCmluZGV4IDc3NWZkOTk1Njk4MjNiZjI0ODY1MGNlYzYzYTQ4NTMzZDI5NTM3OWUuLjk3
ODc0OWU5YTk2OGFhYTI2MzI0Nzg5OTgwMDU3OTQwMDA0NDBiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCkBAIC01NjEsOSArNTYxLDkgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkKICAgICBtX21haW5UaHJlYWRQcm94
eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpiZWdp
bkNvbnRleHRSZWNyZWF0aW9uKSk7CiB9CiAKLWJvb2wgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVk
QWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpCitib29sIENDVGhyZWFk
UHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpCiB7Ci0gICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwIiwgdGhp
cywgMCk7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSWZQb3NzaWJsZSIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQo
KSk7CiAgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdEltcGwpOwogICAgIGlmICghbV9sYXllclRy
ZWVIb3N0SW1wbCkKQEAgLTU3NiwxMyArNTc2LDEyIEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6c2No
ZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpCiAgICAgbV9p
bnB1dEhhbmRsZXJPbkltcGxUaHJlYWQtPmFuaW1hdGUobW9ub3RvbmljVGltZSk7CiAgICAgbV9s
YXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lKTsK
ICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7Ci0gICAgYm9vbCBkcmF3
RnJhbWUgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSB8fCBmb3Jj
ZWREcmF3OworICAgIGJvb2wgZHJhd0ZyYW1lID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSk7CiAgICAgaWYgKGRyYXdGcmFtZSkKICAgICAgICAgbV9sYXllclRyZWVI
b3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAKICAgICAvLyBDaGVjayBmb3IgYSBwZW5kaW5n
IGNvbXBvc2l0ZUFuZFJlYWRiYWNrLgogICAgIGlmIChtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRo
cmVhZCkgewotICAgICAgICBBU1NFUlQoZHJhd0ZyYW1lKTsgLy8gVGhpcyBzaG91bGQgYmUgYSBm
b3JjZWREcmF3CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNrKG1fcmVhZGJh
Y2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhy
ZWFkLT5yZWN0KTsKICAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnN1Y2Nl
c3MgPSAhbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpOwogICAgICAgICBtX3Jl
YWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+Y29tcGxldGlvbi5zaWduYWwoKTsKQEAgLTU5NCw3
ICs1OTMsNiBAQCBib29sIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
SW50ZXJuYWwoYm9vbCBmb3JjZWREcmF3KQogCiAgICAgLy8gUHJvY2VzcyBhbnkgZmluaXNoIHJl
cXVlc3QKICAgICBpZiAobV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxU
aHJlYWQpIHsKLSAgICAgICAgQVNTRVJUKGRyYXdGcmFtZSk7IC8vIFRoaXMgc2hvdWxkIGJlIGEg
Zm9yY2VkRHJhdwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJp
bmcoKTsKICAgICAgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxU
aHJlYWQtPnNpZ25hbCgpOwogICAgICAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25F
dmVudE9uSW1wbFRocmVhZCA9IDA7CkBAIC02MDYsMjAgKzYwNCw5IEBAIGJvb2wgQ0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcp
CiAgICAgICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2so
dGhpcywgJkNDVGhyZWFkUHJveHk6OmRpZENvbW1pdEFuZERyYXdGcmFtZSkpOwogICAgIH0KIAot
ICAgIEFTU0VSVChkcmF3RnJhbWUgfHwgKCFkcmF3RnJhbWUgJiYgIWZvcmNlZERyYXcpKTsKICAg
ICByZXR1cm4gZHJhd0ZyYW1lOwogfQogCi1ib29sIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpCi17Ci0gICAgcmV0dXJuIHNjaGVkdWxlZEFjdGlv
bkRyYXdBbmRTd2FwSW50ZXJuYWwoZmFsc2UpOwotfQotCi12b2lkIENDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwRm9yY2VkKCkKLXsKLSAgICBzY2hlZHVsZWRBY3Rpb25E
cmF3QW5kU3dhcEludGVybmFsKHRydWUpOwotfQotCiB2b2lkIENDVGhyZWFkUHJveHk6OmRpZENv
bW1pdEFuZERyYXdGcmFtZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaAppbmRleCBhNWM0YjMxMjMzN2E5ZDFkYmM4ZjAwYTFiMDc5NzAwYThm
ZWQ4MmVkLi5mMTJhMjMyZTQ2ZjQwN2YyMWQ2M2FlZTQxY2E1NGY2MTY3NzIyYjVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCkBAIC04Myw3ICs4Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCk7CiAgICAgdmlydHVhbCBib29sIHNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpOwotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rp
b25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlv
bkNvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRS
ZWNyZWF0aW9uKCk7CkBAIC0xMjcsNyArMTI2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxheWVy
VHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lk
IHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIHJlY3JlYXRl
Q29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIEdyYXBoaWNzQ29udGV4dDNE
KiwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsK
LSAgICBib29sIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwoYm9vbCBmb3JjZWRE
cmF3KTsKIAogICAgIC8vIEFjY2Vzc2VkIG9uIG1haW4gdGhyZWFkIG9ubHkuCiAgICAgYm9vbCBt
X2FuaW1hdGVSZXF1ZXN0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDcwMDljOGMzZTkzY2E2Y2Mw
MmQ0NTUyNTdlZjEzMDljZWRmZjY1YmUuLmVhM2VlMGMwNDU4ZWVhZGZiMTJiYzlkOGIzYzU4MjE0
YzcyNTI0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0yNDgsNiArMjQ4LDcgQEAgVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbldpdGhPZmZzZXQp
CiAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgp
KTsKIAogICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUo
MCk7CisgICAgcm9vdC0+c2V0Qm91bmRzKEludFNpemUoMSwgMSkpOwogICAgIHJvb3QtPnNldFNj
cm9sbGFibGUodHJ1ZSk7CiAgICAgcm9vdC0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoMCwg
MCkpOwogICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwCmluZGV4IGE3NGU0Y2E0NTVjNmQ0NjYzNDQ5YzdmYTM4MjA1Yjc2YjFkY2ZmZTguLmY5
MGExMmI0MWNhMGI1MmVkMjA5YjhhMjIwMTdjOWE3NjlhZjBmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtNTMx
LDYgKzUzMSwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRvQmVnaW5UZXN0KCkKICAg
ICBtX2NsaWVudCA9IE1vY2tMYXllclRyZWVIb3N0Q2xpZW50OjpjcmVhdGUodGhpcyk7CiAKICAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7CisKKyAgICAvLyBPbmx5IG5vbi1lbXB0eSByb290IGxheWVycyB3aWxsIGNhdXNlIGRyYXdp
bmcgdG8gaGFwcGVuLgorICAgIHJvb3RMYXllci0+c2V0Qm91bmRzKEludFNpemUoMSwgMSkpOwor
CiAgICAgbV9sYXllclRyZWVIb3N0ID0gTW9ja0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBt
X2NsaWVudC5nZXQoKSwgcm9vdExheWVyLCBtX3NldHRpbmdzKTsKICAgICBBU1NFUlRfVFJVRSht
X2xheWVyVHJlZUhvc3QpOwogICAgIHJvb3RMYXllci0+c2V0TGF5ZXJUcmVlSG9zdChtX2xheWVy
VHJlZUhvc3QuZ2V0KCkpOwpAQCAtODIwLDYgKzgyNCw1NyBAQCBURVNUX0YoQ0NMYXllclRyZWVI
b3N0VGVzdFNldE5lZWRzUmVkcmF3LCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0VGhyZWFk
ZWQoKTsKIH0KIAorLy8gSWYgdGhlIHJvb3QgbGF5ZXIgaGFzIG5vIGNvbnRlbnQgYm91bmRzLCB3
ZSBzaG91bGQgc2VlIGEgY29tbWl0LCBidXQgc2hvdWxkIG5vdCBiZQorLy8gcHVzaGluZyBhbnkg
ZnJhbWVzIGFzIHRoZSBjb250ZW50cyB3aWxsIGJlIHVuZGVmaW5lZC4KK2NsYXNzIENDTGF5ZXJU
cmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdyA6IHB1YmxpYyBDQ0xheWVyVHJl
ZUhvc3RUZXN0VGhyZWFkT25seSB7CitwdWJsaWM6CisgICAgQ0NMYXllclRyZWVIb3N0VGVzdEVt
cHR5Q29udGVudHNTaG91bGROb3REcmF3KCkKKyAgICAgICAgOiBtX251bUNvbW1pdHMoMCkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAg
ICAvLyBQdXQgYW4gZW1wdHkgcm9vdCBsYXllci4KKyAgICAgICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IHJvb3RMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOworICAgICAgICBwb3N0U2V0TmVlZHND
b21taXRUb01haW5UaHJlYWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29t
cGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHsKKyAgICAgICAgbV9u
dW1Db21taXRzKys7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhy
ZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgeworICAgICAgICBGQUlMKCk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpCisgICAgewor
ICAgICAgICBpZiAobV9udW1Db21taXRzID09IDIpIHsKKyAgICAgICAgICAgIC8vIFRyeSBhZ2Fp
biBhbmQgbWFrZSBzdXJlIHRoYXQgZXZlbiB3aGVuIGZvcmNpbmcgcmVkcmF3LAorICAgICAgICAg
ICAgLy8gaXQgb25seSBjYXVzZXMgdGhlIG1lcmUgYXR0ZW1wdCB0byBkcmF3LCBidXQgZG9lcyBu
b3QKKyAgICAgICAgICAgIC8vIG92ZXJyaWRlIGZhaWx1cmUgb2YgQ0NMYXllclRyZWVIb3N0SW1w
bDo6cHJlcGFyZVRvRHJhdygpLgorICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hB
bGxSZW5kZXJpbmcoKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgaW50IG1fbnVtQ29tbWl0czsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0
RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcsIHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRl
c3RUaHJlYWRlZCgpOworfQorCiAvLyBBIGNvbXBvc2l0ZUFuZFJlYWRiYWNrIHdoaWxlIGludmlz
aWJsZSBzaG91bGQgZm9yY2UgYSBub3JtYWwgY29tbWl0IHdpdGhvdXQgYXNzZXJ0aW9uLgogY2xh
c3MgQ0NMYXllclRyZWVIb3N0VGVzdENvbXBvc2l0ZUFuZFJlYWRiYWNrV2hpbGVJbnZpc2libGUg
OiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgewogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QuY3BwCmluZGV4IGU0YTVkN2M5NTk0NGI5NGQ2NTNjMTQxMTk1NmI5YzI5Y2Nl
ZDQ2YmYuLmE2N2ExY2Y1OWQ2MTBkZmIwY2ZiZDljMWM4MTkzZDBjODViYzZlZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdC5jcHAKQEAgLTIzNSwxMiArMjM1LDE0IEBAIFRFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29tbWl0QWZ0ZXJGYWlsZWRBbmRTdWNjZXNzZnVsRHJhd0Rv
ZXNOb3RBCiAgICAgLy8gQnV0IHRoZSBjb21taXQgaXMgb25nb2luZy4KICAgICBFWFBFQ1RfVFJV
RShzdGF0ZS5jb21taXRQZW5kaW5nKCkpOwogCi0gICAgLy8gRm9yY2UgYSBkcmF3LgorICAgIC8v
IFdlIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBkcmF3IGluIHRoZSBzYW1lIGZyYW1lLi4uCisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUu
bmV4dEFjdGlvbigpKTsKKyAgICAvLyAuLi51bmxlc3MgZm9yY2VkLgogICAgIHN0YXRlLnNldE5l
ZWRzRm9yY2VkUmVkcmF3KCk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fRFJBV19GT1JDRUQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUu
bmV4dEFjdGlvbigpKTsKIAogICAgIC8vIERvIHRoZSBmb3JjZWQgZHJhdy4KLSAgICBzdGF0ZS51
cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfRk9SQ0VEKTsK
KyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVdfSUZfUE9TU0lCTEUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRl
LnJlZHJhd1BlbmRpbmcoKSk7CiAgICAgLy8gQW5kIHRoZSBjb21taXQgaXMgc3RpbGwgb25nb2lu
Zy4KQEAgLTM1NSw3ICszNTcsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdE5leHRBY3Rpb25EcmF3c09uVlN5bmMpCiAKICAgICAgICAgICAgIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBY3Rpb24gZXhwZWN0ZWRBY3Rpb247CiAgICAgICAgICAgICBpZiAoYWxsQ29t
bWl0U3RhdGVzW2ldICE9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVB
RFlfVE9fQ09NTUlUKQotICAgICAgICAgICAgICAgIGV4cGVjdGVkQWN0aW9uID0gZm9yY2VkRHJh
dyA/IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19GT1JDRUQgOiBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEU7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRBY3Rpb24gPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdf
SUZfUE9TU0lCTEU7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRB
Y3Rpb24gPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVDsKIApAQCAtOTM2
LDcgKzkzOCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RmluaXNo
QWxsUmVuZGVyaW5nV2hpbGVDb250ZXh0TG9zdCkKICAgICAvLyBBc2sgYSBmb3JjZWQgcmVkcmF3
IGFuZCB2ZXJpZnkgaXQgb2N1cnJzLgogICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KHRy
dWUpOwogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0ZPUkNFRCwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BP
U1NJQkxFLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsK
IAogICAgIC8vIENsZWFyIHRoZSBmb3JjZWQgcmVkcmF3IGJpdC4KQEAgLTk0OSw3ICs5NTEsNyBA
QCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZpbmlzaEFsbFJlbmRlcmlu
Z1doaWxlQ29udGV4dExvc3QpCiAgICAgLy8gQXNrIGEgZm9yY2VkIHJlZHJhdyBhbmQgdmVyaWZ5
IGl0IG9jdXJycy4KICAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZFJlZHJhdyh0cnVlKTsKICAgICBz
dGF0ZS5kaWRFbnRlclZTeW5jKCk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fRFJBV19GT1JDRUQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRleCA4
ZGY1YTExY2FmN2EyMTNlMDc0NjAxNWNmNDkxZDdkMjJmYmY2NWYyLi5iZWViOWViYWFmN2Q3NmRj
ZDgyMTY5NDgwMjhkMGJmOWFjOTAxOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC02NiwxMiArNjYsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBtX2RyYXdTdWNjZXNzOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpCi0gICAgewotICAgICAgICBtX2FjdGlv
bnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCIpOwotICAgICAg
ICBtX251bURyYXdzKys7Ci0gICAgfQotCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlv
blVwZGF0ZU1vcmVSZXNvdXJjZXMoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFj
dGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRB
Y3Rpb25Db21taXQoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkNvbW1p
dCIpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3Jl
YXRpb24oKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4
dFJlY3JlYXRpb24iKTsgfQpAQCAtMTcxLDcgKzE2NSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIEZha2VDQ1NjaGVkdWxlckNsaWVudDo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBv
c3NpYmxlKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdB
bmRTd2FwRm9yY2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0
ZU1vcmVSZXNvdXJjZXMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29t
bWl0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJl
Y3JlYXRpb24oKSB7IH0KQEAgLTI2NCw3ICsyNTcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBGYWtlQ0NTY2hlZHVsZXJDbGllbnQ6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3Nz
aWJsZSgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcEZvcmNlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVN
b3JlUmVzb3VyY2VzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1p
dCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNy
ZWF0aW9uKCkgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135242</attachid>
            <date>2012-04-02 17:34:51 -0700</date>
            <delta_ts>2012-04-02 17:43:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82680-20120402173449.patch</filename>
            <type>text/plain</type>
            <size>9746</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJmNDdhZjRlYzdjY2Zk
YWFhMWNjMzRlZGIxMzU5ZmI3OWE0OGNjOC4uMGE1NDgyMTJiZjFjNzY0NjM0NmU4ODBkYTY3MDM2
YjliNTczM2E4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTAyICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWx3YXlzIHNraXAgZHJhdyBhbmQgcmVhZGJhY2sgaWYgdGhlcmUgaXMgbm90aGluZworICAgICAg
ICB0byBkcmF3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODI2ODAKKworICAgICAgICBUaGlzIGF2b2lkcyBjb3JydXB0aW9uIGZyb20gcHVzaGluZyBm
cmFtZXMgdGhhdCBoYXZlIG5vIHZhbGlkCisgICAgICAgIGNvbnRlbnQgZHJhd24gaW50byB0aGVt
LgorICAgICAgICBBbHNvIGluIGFkZGl0aW9uIHRvIGNoZWNraW5nIGZvciBub24tZXhpc3Rpbmcg
cm9vdCBsYXllcnMsIGNoZWNrCisgICAgICAgIGZvciByb290IGxheWVycyB3aXRoIG5vIGNvbnRl
bnQgYm91bmRzLiBJdCdzIHBvc3NpYmxlIHRvIHNlZSB0aG9zZQorICAgICAgICB3aXRoIGtGb3Jj
ZUNvbXBvc2l0aW5nIG1vZGUgZm9yIGVtcHR5IGRvY3VtZW50cy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBDQ0xheWVyVHJlZUhvc3RUZXN0
RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKToKKwogMjAxMi0w
My0zMCAgWmFsYW4gQnVqdGFzICA8emJ1anRhc0BnbWFpbC5jb20+CiAKICAgICAgICAgRml4IGRl
ZmVjdGl2ZSBzaXplX3Qgb3ZlcmZsb3cgaW4gR2VzdHVyZVRhcEhpZ2hsaWdodGVyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAzODg5NTczMTdmNjM0OGYxNjdlYTM2ZWY2OTMyYzhiZjZj
MDlkMDJlLi5iNGJmOGRiZWE2ZDI5YzcwNmI1MGVmOTk5OWM1ZWUxZWQ1MTlhYzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA0LTAyICBEYW5pZWwg
U2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWx3
YXlzIHNraXAgZHJhdyBhbmQgcmVhZGJhY2sgaWYgdGhlcmUgaXMgbm90aGluZworICAgICAgICB0
byBkcmF3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODI2ODAKKworICAgICAgICBUaGlzIGF2b2lkcyBjb3JydXB0aW9uIGZyb20gcHVzaGluZyBmcmFt
ZXMgdGhhdCBoYXZlIG5vIHZhbGlkCisgICAgICAgIGNvbnRlbnQgZHJhd24gaW50byB0aGVtLgor
ICAgICAgICBBbHNvIGluIGFkZGl0aW9uIHRvIGNoZWNraW5nIGZvciBub24tZXhpc3Rpbmcgcm9v
dCBsYXllcnMsIGNoZWNrCisgICAgICAgIGZvciByb290IGxheWVycyB3aXRoIG5vIGNvbnRlbnQg
Ym91bmRzLiBJdCdzIHBvc3NpYmxlIHRvIHNlZSB0aG9zZQorICAgICAgICB3aXRoIGtGb3JjZUNv
bXBvc2l0aW5nIG1vZGUgZm9yIGVtcHR5IGRvY3VtZW50cy4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBDQ0xheWVyVHJlZUhvc3RUZXN0RW1w
dHlDb250ZW50c1Nob3VsZE5vdERyYXcuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NMYXllclRy
ZWVIb3N0VGVzdDo6ZG9CZWdpblRlc3QpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKENDTGF5
ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdyk6CisgICAgICAgIChXVEY6
OkNDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdzo6Q0NMYXllclRy
ZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3KToKKyAgICAgICAgKFdURjo6Q0NM
YXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjpiZWdpblRlc3QpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERy
YXc6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0
VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjpkaWRDb21taXRBbmREcmF3RnJhbWUpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERy
YXc6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisKIDIwMTItMDMtMzAgIE1h
cmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEdFT0xPQ0FUSU9O
IHNob3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBQYWdlIFN1cHBsZW1lbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZjJlMjBjZjAxNDEyMjIwZWQxMTZjMDIyMTRk
MDNlMWJlNDU5NTllZC4uNDUwMDJlMWE4NzUxN2M0YzM1Nzc0ZTQxMWE5M2U0YzM0ZDcwYmM3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTE0MSw3ICsxNDEs
NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbW1pdENvbXBsZXRlKCkKIAogYm9vbCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKIHsKLSAgICBpZiAoIXJvb3RMYXllcigpKQor
ICAgIGlmICghcm9vdExheWVyKCkgfHwgcm9vdExheWVyKCktPmJvdW5kcygpLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3Niw5ICszNzYsNiBAQCBib29sIENDTGF5ZXJU
cmVlSG9zdEltcGw6OnByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJiBmcmFtZSkKICAgICBmcmFtZS5y
ZW5kZXJQYXNzZXMuY2xlYXIoKTsKICAgICBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmNs
ZWFyKCk7CiAKLSAgICBpZiAoIXJvb3RMYXllcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
ICAgICBpZiAoIWNhbGN1bGF0ZVJlbmRlclBhc3NlcyhmcmFtZS5yZW5kZXJQYXNzZXMsIGZyYW1l
LnJlbmRlclN1cmZhY2VMYXllckxpc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggYzExZjQ2NDVlZDA1YzBlZTczY2YzMjAzNGM2ZjMx
NGU3ZDVlYTVjNi4uYmZkZjk2NTczYmNlZjVjZTFkNmVkMDkxNjU1Y2RjODA0ZTVhMjYxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTU3OCw3ICs1NzgsNyBAQCBDQ1NjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZQogICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLT5hbmltYXRlKG1v
bm90b25pY1RpbWUpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3Rvbmlj
VGltZSwgd2FsbENsb2NrVGltZSk7CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRh
IGZyYW1lOwotICAgIGJvb2wgZHJhd0ZyYW1lID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkgfHwgZm9yY2VkRHJhdzsKKyAgICBib29sIGRyYXdGcmFtZSA9IChtX2xh
eWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSB8fCBmb3JjZWREcmF3KSAmJiBt
X2xheWVyVHJlZUhvc3RJbXBsLT5jYW5EcmF3KCk7CiAgICAgaWYgKGRyYXdGcmFtZSkgewogICAg
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICAgICAgcmVz
dWx0LmRpZERyYXcgPSB0cnVlOwpAQCAtNTg2LDggKzU4Niw4IEBAIENDU2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXBSZXN1bHQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3
YXBJbnRlCiAKICAgICAvLyBDaGVjayBmb3IgYSBwZW5kaW5nIGNvbXBvc2l0ZUFuZFJlYWRiYWNr
LgogICAgIGlmIChtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCkgewotICAgICAgICBBU1NF
UlQoZHJhd0ZyYW1lKTsgLy8gVGhpcyBzaG91bGQgYmUgYSBmb3JjZWREcmF3Ci0gICAgICAgIG1f
bGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNrKG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFk
LT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5yZWN0KTsKKyAgICAgICAg
aWYgKGRyYXdGcmFtZSkKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNr
KG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0
T25JbXBsVGhyZWFkLT5yZWN0KTsKICAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJl
YWQtPnN1Y2Nlc3MgPSAhbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpOwogICAg
ICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+Y29tcGxldGlvbi5zaWduYWwoKTsK
ICAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQgPSAwOwpAQCAtNTk4LDcgKzU5
OCw2IEBAIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgQ0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlCiAKICAgICAvLyBQcm9jZXNzIGFueSBmaW5p
c2ggcmVxdWVzdAogICAgIGlmIChtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9u
SW1wbFRocmVhZCkgewotICAgICAgICBBU1NFUlQoZHJhd0ZyYW1lKTsgLy8gVGhpcyBzaG91bGQg
YmUgYSBmb3JjZWREcmF3CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmZpbmlzaEFsbFJl
bmRlcmluZygpOwogICAgICAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9u
SW1wbFRocmVhZC0+c2lnbmFsKCk7CiAgICAgICAgIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxl
dGlvbkV2ZW50T25JbXBsVGhyZWFkID0gMDsKQEAgLTYxMCw3ICs2MDksNyBAQCBDQ1NjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZQogICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRl
Q0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRDb21taXRBbmREcmF3RnJhbWUp
KTsKICAgICB9CiAKLSAgICBBU1NFUlQoZHJhd0ZyYW1lIHx8ICghZHJhd0ZyYW1lICYmICFmb3Jj
ZWREcmF3KSk7CisgICAgQVNTRVJUKGRyYXdGcmFtZSB8fCAhbV9sYXllclRyZWVIb3N0SW1wbC0+
Y2FuRHJhdygpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4
IDcwMDljOGMzZTkzY2E2Y2MwMmQ0NTUyNTdlZjEzMDljZWRmZjY1YmUuLmVhM2VlMGMwNDU4ZWVh
ZGZiMTJiYzlkOGIzYzU4MjE0YzcyNTI0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0yNDgsNiAr
MjQ4LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBub25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbldpdGhPZmZzZXQpCiAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoY3JlYXRlQ29udGV4dCgpKTsKIAogICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgcm9vdC0+c2V0Qm91bmRzKEludFNpemUoMSwgMSkp
OwogICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CiAgICAgcm9vdC0+c2V0U2Nyb2xsUG9z
aXRpb24oSW50UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKElu
dFNpemUoMTAwLCAxMDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDAxOTAyMjU3NzY2MWRkODk1YmMyYjljZTYz
ZmI1MGQ1MjFhYWEyYTEuLjIyMjUwMDk2MWY3YTY0NjI5ZTA5Yjg1OTI4YTI1NGUyYmJhOThkNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcApAQCAtNTMyLDYgKzUzMiwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdFRlc3Q6
OmRvQmVnaW5UZXN0KCkKICAgICBtX2NsaWVudCA9IE1vY2tMYXllclRyZWVIb3N0Q2xpZW50Ojpj
cmVhdGUodGhpcyk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisKKyAgICAvLyBPbmx5IG5vbi1lbXB0eSByb290IGxheWVy
cyB3aWxsIGNhdXNlIGRyYXdpbmcgdG8gaGFwcGVuLgorICAgIHJvb3RMYXllci0+c2V0Qm91bmRz
KEludFNpemUoMSwgMSkpOworCiAgICAgbV9sYXllclRyZWVIb3N0ID0gTW9ja0xheWVyVHJlZUhv
c3Q6OmNyZWF0ZSh0aGlzLCBtX2NsaWVudC5nZXQoKSwgcm9vdExheWVyLCBtX3NldHRpbmdzKTsK
ICAgICBBU1NFUlRfVFJVRShtX2xheWVyVHJlZUhvc3QpOwogICAgIHJvb3RMYXllci0+c2V0TGF5
ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwpAQCAtODIxLDYgKzgyNSw1NiBAQCBU
RVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRzUmVkcmF3LCBydW5NdWx0aVRocmVhZCkK
ICAgICBydW5UZXN0VGhyZWFkZWQoKTsKIH0KIAorLy8gSWYgdGhlIHJvb3QgbGF5ZXIgaGFzIG5v
IGNvbnRlbnQgYm91bmRzLCB3ZSBzaG91bGQgc2VlIGEgY29tbWl0LCBidXQgc2hvdWxkIG5vdCBi
ZQorLy8gcHVzaGluZyBhbnkgZnJhbWVzIGFzIHRoZSBjb250ZW50cyB3aWxsIGJlIHVuZGVmaW5l
ZC4gUmVnYXJkbGVzcywgZm9yY2VkIGRyYXdzIG5lZWQKKy8vIHRvIGFsd2F5cyBzaWduYWwgY29t
cGxldGlvbi4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90
RHJhdyA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CitwdWJsaWM6Cisg
ICAgQ0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3KCkKKyAgICAg
ICAgOiBtX251bUNvbW1pdHMoMCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJl
Z2luVGVzdCgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgLy8gT25s
eSB0aGUgaW5pdGlhbCBkcmF3IHNob3VsZCBicmluZyB1cyBoZXJlLgorICAgICAgICBFWFBFQ1Rf
RkFMU0UoaW1wbC0+cm9vdExheWVyKCktPmJvdW5kcygpLmlzRW1wdHkoKSk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpCisgICAgeworICAgICAgICBt
X251bUNvbW1pdHMrKzsKKyAgICAgICAgaWYgKG1fbnVtQ29tbWl0cyA9PSAxKSB7CisgICAgICAg
ICAgICAvLyBQdXQgYW4gZW1wdHkgcm9vdCBsYXllci4KKyAgICAgICAgICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiByb290TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CisKKyAgICAgICAg
ICAgIE93bkFycmF5UHRyPGNoYXI+IHBpeGVscyhhZG9wdEFycmF5UHRyKG5ldyBjaGFyWzRdKSk7
CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHN0YXRp
Y19jYXN0PHZvaWQqPihwaXhlbHMuZ2V0KCkpLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChtX251bUNvbW1pdHMgPT0gMikgeworICAgICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5m
aW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgaW50IG1fbnVtQ29tbWl0czsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhv
c3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcsIHJ1bk11bHRpVGhyZWFkKQoreworICAg
IHJ1blRlc3RUaHJlYWRlZCgpOworfQorCiAvLyBBIGNvbXBvc2l0ZUFuZFJlYWRiYWNrIHdoaWxl
IGludmlzaWJsZSBzaG91bGQgZm9yY2UgYSBub3JtYWwgY29tbWl0IHdpdGhvdXQgYXNzZXJ0aW9u
LgogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdENvbXBvc2l0ZUFuZFJlYWRiYWNrV2hpbGVJbnZp
c2libGUgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgewogcHVibGljOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135243</attachid>
            <date>2012-04-02 17:43:44 -0700</date>
            <delta_ts>2012-04-02 19:18:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82680-20120402174343.patch</filename>
            <type>text/plain</type>
            <size>9687</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJmNDdhZjRlYzdjY2Zk
YWFhMWNjMzRlZGIxMzU5ZmI3OWE0OGNjOC4uMGE1NDgyMTJiZjFjNzY0NjM0NmU4ODBkYTY3MDM2
YjliNTczM2E4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTAyICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWx3YXlzIHNraXAgZHJhdyBhbmQgcmVhZGJhY2sgaWYgdGhlcmUgaXMgbm90aGluZworICAgICAg
ICB0byBkcmF3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODI2ODAKKworICAgICAgICBUaGlzIGF2b2lkcyBjb3JydXB0aW9uIGZyb20gcHVzaGluZyBm
cmFtZXMgdGhhdCBoYXZlIG5vIHZhbGlkCisgICAgICAgIGNvbnRlbnQgZHJhd24gaW50byB0aGVt
LgorICAgICAgICBBbHNvIGluIGFkZGl0aW9uIHRvIGNoZWNraW5nIGZvciBub24tZXhpc3Rpbmcg
cm9vdCBsYXllcnMsIGNoZWNrCisgICAgICAgIGZvciByb290IGxheWVycyB3aXRoIG5vIGNvbnRl
bnQgYm91bmRzLiBJdCdzIHBvc3NpYmxlIHRvIHNlZSB0aG9zZQorICAgICAgICB3aXRoIGtGb3Jj
ZUNvbXBvc2l0aW5nIG1vZGUgZm9yIGVtcHR5IGRvY3VtZW50cy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBDQ0xheWVyVHJlZUhvc3RUZXN0
RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKToKKwogMjAxMi0w
My0zMCAgWmFsYW4gQnVqdGFzICA8emJ1anRhc0BnbWFpbC5jb20+CiAKICAgICAgICAgRml4IGRl
ZmVjdGl2ZSBzaXplX3Qgb3ZlcmZsb3cgaW4gR2VzdHVyZVRhcEhpZ2hsaWdodGVyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAzODg5NTczMTdmNjM0OGYxNjdlYTM2ZWY2OTMyYzhiZjZj
MDlkMDJlLi5iNGJmOGRiZWE2ZDI5YzcwNmI1MGVmOTk5OWM1ZWUxZWQ1MTlhYzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA0LTAyICBEYW5pZWwg
U2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWx3
YXlzIHNraXAgZHJhdyBhbmQgcmVhZGJhY2sgaWYgdGhlcmUgaXMgbm90aGluZworICAgICAgICB0
byBkcmF3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODI2ODAKKworICAgICAgICBUaGlzIGF2b2lkcyBjb3JydXB0aW9uIGZyb20gcHVzaGluZyBmcmFt
ZXMgdGhhdCBoYXZlIG5vIHZhbGlkCisgICAgICAgIGNvbnRlbnQgZHJhd24gaW50byB0aGVtLgor
ICAgICAgICBBbHNvIGluIGFkZGl0aW9uIHRvIGNoZWNraW5nIGZvciBub24tZXhpc3Rpbmcgcm9v
dCBsYXllcnMsIGNoZWNrCisgICAgICAgIGZvciByb290IGxheWVycyB3aXRoIG5vIGNvbnRlbnQg
Ym91bmRzLiBJdCdzIHBvc3NpYmxlIHRvIHNlZSB0aG9zZQorICAgICAgICB3aXRoIGtGb3JjZUNv
bXBvc2l0aW5nIG1vZGUgZm9yIGVtcHR5IGRvY3VtZW50cy4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBDQ0xheWVyVHJlZUhvc3RUZXN0RW1w
dHlDb250ZW50c1Nob3VsZE5vdERyYXcuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NMYXllclRy
ZWVIb3N0VGVzdDo6ZG9CZWdpblRlc3QpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKENDTGF5
ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdyk6CisgICAgICAgIChXVEY6
OkNDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdzo6Q0NMYXllclRy
ZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3KToKKyAgICAgICAgKFdURjo6Q0NM
YXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjpiZWdpblRlc3QpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERy
YXc6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0
VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjpkaWRDb21taXRBbmREcmF3RnJhbWUpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERy
YXc6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisKIDIwMTItMDMtMzAgIE1h
cmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEdFT0xPQ0FUSU9O
IHNob3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBQYWdlIFN1cHBsZW1lbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZjJlMjBjZjAxNDEyMjIwZWQxMTZjMDIyMTRk
MDNlMWJlNDU5NTllZC4uNDUwMDJlMWE4NzUxN2M0YzM1Nzc0ZTQxMWE5M2U0YzM0ZDcwYmM3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTE0MSw3ICsxNDEs
NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbW1pdENvbXBsZXRlKCkKIAogYm9vbCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKIHsKLSAgICBpZiAoIXJvb3RMYXllcigpKQor
ICAgIGlmICghcm9vdExheWVyKCkgfHwgcm9vdExheWVyKCktPmJvdW5kcygpLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3Niw5ICszNzYsNiBAQCBib29sIENDTGF5ZXJU
cmVlSG9zdEltcGw6OnByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJiBmcmFtZSkKICAgICBmcmFtZS5y
ZW5kZXJQYXNzZXMuY2xlYXIoKTsKICAgICBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmNs
ZWFyKCk7CiAKLSAgICBpZiAoIXJvb3RMYXllcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
ICAgICBpZiAoIWNhbGN1bGF0ZVJlbmRlclBhc3NlcyhmcmFtZS5yZW5kZXJQYXNzZXMsIGZyYW1l
LnJlbmRlclN1cmZhY2VMYXllckxpc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggYzExZjQ2NDVlZDA1YzBlZTczY2YzMjAzNGM2ZjMx
NGU3ZDVlYTVjNi4uZjE3MmFmMmFjMmNjNTc3NzY2YzYzMGMzNjRlMjRjY2Q0NzIwYzA1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTU3OCw3ICs1NzgsNyBAQCBDQ1NjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZQogICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLT5hbmltYXRlKG1v
bm90b25pY1RpbWUpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3Rvbmlj
VGltZSwgd2FsbENsb2NrVGltZSk7CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRh
IGZyYW1lOwotICAgIGJvb2wgZHJhd0ZyYW1lID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkgfHwgZm9yY2VkRHJhdzsKKyAgICBib29sIGRyYXdGcmFtZSA9IChtX2xh
eWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSB8fCBmb3JjZWREcmF3KSAmJiBt
X2xheWVyVHJlZUhvc3RJbXBsLT5jYW5EcmF3KCk7CiAgICAgaWYgKGRyYXdGcmFtZSkgewogICAg
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICAgICAgcmVz
dWx0LmRpZERyYXcgPSB0cnVlOwpAQCAtNTg2LDggKzU4Niw4IEBAIENDU2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXBSZXN1bHQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3
YXBJbnRlCiAKICAgICAvLyBDaGVjayBmb3IgYSBwZW5kaW5nIGNvbXBvc2l0ZUFuZFJlYWRiYWNr
LgogICAgIGlmIChtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCkgewotICAgICAgICBBU1NF
UlQoZHJhd0ZyYW1lKTsgLy8gVGhpcyBzaG91bGQgYmUgYSBmb3JjZWREcmF3Ci0gICAgICAgIG1f
bGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNrKG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFk
LT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5yZWN0KTsKKyAgICAgICAg
aWYgKGRyYXdGcmFtZSkKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNr
KG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0
T25JbXBsVGhyZWFkLT5yZWN0KTsKICAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJl
YWQtPnN1Y2Nlc3MgPSAhbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpOwogICAg
ICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+Y29tcGxldGlvbi5zaWduYWwoKTsK
ICAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQgPSAwOwpAQCAtNTk4LDcgKzU5
OCw2IEBAIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgQ0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlCiAKICAgICAvLyBQcm9jZXNzIGFueSBmaW5p
c2ggcmVxdWVzdAogICAgIGlmIChtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9u
SW1wbFRocmVhZCkgewotICAgICAgICBBU1NFUlQoZHJhd0ZyYW1lKTsgLy8gVGhpcyBzaG91bGQg
YmUgYSBmb3JjZWREcmF3CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmZpbmlzaEFsbFJl
bmRlcmluZygpOwogICAgICAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9u
SW1wbFRocmVhZC0+c2lnbmFsKCk7CiAgICAgICAgIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxl
dGlvbkV2ZW50T25JbXBsVGhyZWFkID0gMDsKQEAgLTYxMCw3ICs2MDksNiBAQCBDQ1NjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZQogICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRl
Q0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRDb21taXRBbmREcmF3RnJhbWUp
KTsKICAgICB9CiAKLSAgICBBU1NFUlQoZHJhd0ZyYW1lIHx8ICghZHJhd0ZyYW1lICYmICFmb3Jj
ZWREcmF3KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCA3
MDA5YzhjM2U5M2NhNmNjMDJkNDU1MjU3ZWYxMzA5Y2VkZmY2NWJlLi5lYTNlZTBjMDQ1OGVlYWRm
YjEyYmM5ZDhiM2M1ODIxNGM3MjUyNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMjQ4LDYgKzI0
OCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9uRmFzdFNjcm9sbGFibGVS
ZWdpb25XaXRoT2Zmc2V0KQogICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVy
KGNyZWF0ZUNvbnRleHQoKSk7CiAKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDApOworICAgIHJvb3QtPnNldEJvdW5kcyhJbnRTaXplKDEsIDEpKTsK
ICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0
aW9uKEludFBvaW50KDAsIDApKTsKICAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRT
aXplKDEwMCwgMTAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCAwMTkwMjI1Nzc2NjFkZDg5NWJjMmI5Y2U2M2Zi
NTBkNTIxYWFhMmExLi4yMjI1MDA5NjFmN2E2NDYyOWUwOWI4NTkyOGEyNTRlMmJiYTk4ZDU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKQEAgLTUzMiw2ICs1MzIsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RUZXN0Ojpk
b0JlZ2luVGVzdCgpCiAgICAgbV9jbGllbnQgPSBNb2NrTGF5ZXJUcmVlSG9zdENsaWVudDo6Y3Jl
YXRlKHRoaXMpOwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllciA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOworCisgICAgLy8gT25seSBub24tZW1wdHkgcm9vdCBsYXllcnMg
d2lsbCBjYXVzZSBkcmF3aW5nIHRvIGhhcHBlbi4KKyAgICByb290TGF5ZXItPnNldEJvdW5kcyhJ
bnRTaXplKDEsIDEpKTsKKwogICAgIG1fbGF5ZXJUcmVlSG9zdCA9IE1vY2tMYXllclRyZWVIb3N0
OjpjcmVhdGUodGhpcywgbV9jbGllbnQuZ2V0KCksIHJvb3RMYXllciwgbV9zZXR0aW5ncyk7CiAg
ICAgQVNTRVJUX1RSVUUobV9sYXllclRyZWVIb3N0KTsKICAgICByb290TGF5ZXItPnNldExheWVy
VHJlZUhvc3QobV9sYXllclRyZWVIb3N0LmdldCgpKTsKQEAgLTgyMSw2ICs4MjUsNTYgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc1JlZHJhdywgcnVuTXVsdGlUaHJlYWQpCiAg
ICAgcnVuVGVzdFRocmVhZGVkKCk7CiB9CiAKKy8vIElmIHRoZSByb290IGxheWVyIGhhcyBubyBj
b250ZW50IGJvdW5kcywgd2Ugc2hvdWxkIHNlZSBhIGNvbW1pdCwgYnV0IHNob3VsZCBub3QgYmUK
Ky8vIHB1c2hpbmcgYW55IGZyYW1lcyBhcyB0aGUgY29udGVudHMgd2lsbCBiZSB1bmRlZmluZWQu
IFJlZ2FyZGxlc3MsIGZvcmNlZCBkcmF3cyBuZWVkCisvLyB0byBhbHdheXMgc2lnbmFsIGNvbXBs
ZXRpb24uCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERy
YXcgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgeworcHVibGljOgorICAg
IENDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdygpCisgICAgICAg
IDogbV9udW1Db21taXRzKDApCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdp
blRlc3QoKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NU
aHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB7CisgICAgICAgIC8vIE9ubHkg
dGhlIGluaXRpYWwgZHJhdyBzaG91bGQgYnJpbmcgdXMgaGVyZS4KKyAgICAgICAgRVhQRUNUX0ZB
TFNFKGltcGwtPnJvb3RMYXllcigpLT5ib3VuZHMoKS5pc0VtcHR5KCkpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKQorICAgIHsKKyAgICAgICAgbV9u
dW1Db21taXRzKys7CisgICAgICAgIGlmIChtX251bUNvbW1pdHMgPT0gMSkgeworICAgICAgICAg
ICAgLy8gUHV0IGFuIGVtcHR5IHJvb3QgbGF5ZXIuCisgICAgICAgICAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcm9vdExheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOworCisgICAgICAgICAg
ICBPd25BcnJheVB0cjxjaGFyPiBwaXhlbHMoYWRvcHRBcnJheVB0cihuZXcgY2hhcls0XSkpOwor
ICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21wb3NpdGVBbmRSZWFkYmFjayhzdGF0aWNf
Y2FzdDx2b2lkKj4ocGl4ZWxzLmdldCgpKSwgSW50UmVjdCgwLCAwLCAxLCAxKSk7CisgICAgICAg
IH0gZWxzZSBpZiAobV9udW1Db21taXRzID09IDIpIHsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0TmVlZHNDb21taXQoKTsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmlu
aXNoQWxsUmVuZGVyaW5nKCk7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAgfQorCitwcml2
YXRlOgorICAgIGludCBtX251bUNvbW1pdHM7Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0
VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3LCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBy
dW5UZXN0VGhyZWFkZWQoKTsKK30KKwogLy8gQSBjb21wb3NpdGVBbmRSZWFkYmFjayB3aGlsZSBp
bnZpc2libGUgc2hvdWxkIGZvcmNlIGEgbm9ybWFsIGNvbW1pdCB3aXRob3V0IGFzc2VydGlvbi4K
IGNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RDb21wb3NpdGVBbmRSZWFkYmFja1doaWxlSW52aXNp
YmxlIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRPbmx5IHsKIHB1YmxpYzoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135258</attachid>
            <date>2012-04-02 19:18:28 -0700</date>
            <delta_ts>2012-04-03 11:31:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82680-20120402191827.patch</filename>
            <type>text/plain</type>
            <size>9687</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJmNDdhZjRlYzdjY2Zk
YWFhMWNjMzRlZGIxMzU5ZmI3OWE0OGNjOC4uMGE1NDgyMTJiZjFjNzY0NjM0NmU4ODBkYTY3MDM2
YjliNTczM2E4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTAyICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWx3YXlzIHNraXAgZHJhdyBhbmQgcmVhZGJhY2sgaWYgdGhlcmUgaXMgbm90aGluZworICAgICAg
ICB0byBkcmF3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODI2ODAKKworICAgICAgICBUaGlzIGF2b2lkcyBjb3JydXB0aW9uIGZyb20gcHVzaGluZyBm
cmFtZXMgdGhhdCBoYXZlIG5vIHZhbGlkCisgICAgICAgIGNvbnRlbnQgZHJhd24gaW50byB0aGVt
LgorICAgICAgICBBbHNvIGluIGFkZGl0aW9uIHRvIGNoZWNraW5nIGZvciBub24tZXhpc3Rpbmcg
cm9vdCBsYXllcnMsIGNoZWNrCisgICAgICAgIGZvciByb290IGxheWVycyB3aXRoIG5vIGNvbnRl
bnQgYm91bmRzLiBJdCdzIHBvc3NpYmxlIHRvIHNlZSB0aG9zZQorICAgICAgICB3aXRoIGtGb3Jj
ZUNvbXBvc2l0aW5nIG1vZGUgZm9yIGVtcHR5IGRvY3VtZW50cy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBDQ0xheWVyVHJlZUhvc3RUZXN0
RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKToKKwogMjAxMi0w
My0zMCAgWmFsYW4gQnVqdGFzICA8emJ1anRhc0BnbWFpbC5jb20+CiAKICAgICAgICAgRml4IGRl
ZmVjdGl2ZSBzaXplX3Qgb3ZlcmZsb3cgaW4gR2VzdHVyZVRhcEhpZ2hsaWdodGVyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAzODg5NTczMTdmNjM0OGYxNjdlYTM2ZWY2OTMyYzhiZjZj
MDlkMDJlLi5iNGJmOGRiZWE2ZDI5YzcwNmI1MGVmOTk5OWM1ZWUxZWQ1MTlhYzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA0LTAyICBEYW5pZWwg
U2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWx3
YXlzIHNraXAgZHJhdyBhbmQgcmVhZGJhY2sgaWYgdGhlcmUgaXMgbm90aGluZworICAgICAgICB0
byBkcmF3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODI2ODAKKworICAgICAgICBUaGlzIGF2b2lkcyBjb3JydXB0aW9uIGZyb20gcHVzaGluZyBmcmFt
ZXMgdGhhdCBoYXZlIG5vIHZhbGlkCisgICAgICAgIGNvbnRlbnQgZHJhd24gaW50byB0aGVtLgor
ICAgICAgICBBbHNvIGluIGFkZGl0aW9uIHRvIGNoZWNraW5nIGZvciBub24tZXhpc3Rpbmcgcm9v
dCBsYXllcnMsIGNoZWNrCisgICAgICAgIGZvciByb290IGxheWVycyB3aXRoIG5vIGNvbnRlbnQg
Ym91bmRzLiBJdCdzIHBvc3NpYmxlIHRvIHNlZSB0aG9zZQorICAgICAgICB3aXRoIGtGb3JjZUNv
bXBvc2l0aW5nIG1vZGUgZm9yIGVtcHR5IGRvY3VtZW50cy4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBDQ0xheWVyVHJlZUhvc3RUZXN0RW1w
dHlDb250ZW50c1Nob3VsZE5vdERyYXcuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NMYXllclRy
ZWVIb3N0VGVzdDo6ZG9CZWdpblRlc3QpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKENDTGF5
ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdyk6CisgICAgICAgIChXVEY6
OkNDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdzo6Q0NMYXllclRy
ZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3KToKKyAgICAgICAgKFdURjo6Q0NM
YXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjpiZWdpblRlc3QpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERy
YXc6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0
VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjpkaWRDb21taXRBbmREcmF3RnJhbWUpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERy
YXc6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisKIDIwMTItMDMtMzAgIE1h
cmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEdFT0xPQ0FUSU9O
IHNob3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBQYWdlIFN1cHBsZW1lbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZjJlMjBjZjAxNDEyMjIwZWQxMTZjMDIyMTRk
MDNlMWJlNDU5NTllZC4uNDUwMDJlMWE4NzUxN2M0YzM1Nzc0ZTQxMWE5M2U0YzM0ZDcwYmM3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTE0MSw3ICsxNDEs
NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbW1pdENvbXBsZXRlKCkKIAogYm9vbCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKIHsKLSAgICBpZiAoIXJvb3RMYXllcigpKQor
ICAgIGlmICghcm9vdExheWVyKCkgfHwgcm9vdExheWVyKCktPmJvdW5kcygpLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3Niw5ICszNzYsNiBAQCBib29sIENDTGF5ZXJU
cmVlSG9zdEltcGw6OnByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJiBmcmFtZSkKICAgICBmcmFtZS5y
ZW5kZXJQYXNzZXMuY2xlYXIoKTsKICAgICBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmNs
ZWFyKCk7CiAKLSAgICBpZiAoIXJvb3RMYXllcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
ICAgICBpZiAoIWNhbGN1bGF0ZVJlbmRlclBhc3NlcyhmcmFtZS5yZW5kZXJQYXNzZXMsIGZyYW1l
LnJlbmRlclN1cmZhY2VMYXllckxpc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggYzExZjQ2NDVlZDA1YzBlZTczY2YzMjAzNGM2ZjMx
NGU3ZDVlYTVjNi4uYjlmNzdkZWU3YTg4ZDhjZWFiYzJkMzljNWYyY2Q2ZmFhNzc3YjFjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTU3OCw3ICs1NzgsNyBAQCBDQ1NjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZQogICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLT5hbmltYXRlKG1v
bm90b25pY1RpbWUpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3Rvbmlj
VGltZSwgd2FsbENsb2NrVGltZSk7CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRh
IGZyYW1lOwotICAgIGJvb2wgZHJhd0ZyYW1lID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkgfHwgZm9yY2VkRHJhdzsKKyAgICBib29sIGRyYXdGcmFtZSA9IG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNhbkRyYXcoKSAmJiAobV9sYXllclRyZWVIb3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkgfHwgZm9yY2VkRHJhdyk7CiAgICAgaWYgKGRyYXdGcmFtZSkgewogICAg
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICAgICAgcmVz
dWx0LmRpZERyYXcgPSB0cnVlOwpAQCAtNTg2LDggKzU4Niw4IEBAIENDU2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXBSZXN1bHQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3
YXBJbnRlCiAKICAgICAvLyBDaGVjayBmb3IgYSBwZW5kaW5nIGNvbXBvc2l0ZUFuZFJlYWRiYWNr
LgogICAgIGlmIChtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCkgewotICAgICAgICBBU1NF
UlQoZHJhd0ZyYW1lKTsgLy8gVGhpcyBzaG91bGQgYmUgYSBmb3JjZWREcmF3Ci0gICAgICAgIG1f
bGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNrKG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFk
LT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5yZWN0KTsKKyAgICAgICAg
aWYgKGRyYXdGcmFtZSkKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNr
KG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0
T25JbXBsVGhyZWFkLT5yZWN0KTsKICAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJl
YWQtPnN1Y2Nlc3MgPSAhbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpOwogICAg
ICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+Y29tcGxldGlvbi5zaWduYWwoKTsK
ICAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQgPSAwOwpAQCAtNTk4LDcgKzU5
OCw2IEBAIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgQ0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlCiAKICAgICAvLyBQcm9jZXNzIGFueSBmaW5p
c2ggcmVxdWVzdAogICAgIGlmIChtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9u
SW1wbFRocmVhZCkgewotICAgICAgICBBU1NFUlQoZHJhd0ZyYW1lKTsgLy8gVGhpcyBzaG91bGQg
YmUgYSBmb3JjZWREcmF3CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmZpbmlzaEFsbFJl
bmRlcmluZygpOwogICAgICAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9u
SW1wbFRocmVhZC0+c2lnbmFsKCk7CiAgICAgICAgIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxl
dGlvbkV2ZW50T25JbXBsVGhyZWFkID0gMDsKQEAgLTYxMCw3ICs2MDksNiBAQCBDQ1NjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZQogICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRl
Q0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRDb21taXRBbmREcmF3RnJhbWUp
KTsKICAgICB9CiAKLSAgICBBU1NFUlQoZHJhd0ZyYW1lIHx8ICghZHJhd0ZyYW1lICYmICFmb3Jj
ZWREcmF3KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCA3
MDA5YzhjM2U5M2NhNmNjMDJkNDU1MjU3ZWYxMzA5Y2VkZmY2NWJlLi5lYTNlZTBjMDQ1OGVlYWRm
YjEyYmM5ZDhiM2M1ODIxNGM3MjUyNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMjQ4LDYgKzI0
OCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9uRmFzdFNjcm9sbGFibGVS
ZWdpb25XaXRoT2Zmc2V0KQogICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVy
KGNyZWF0ZUNvbnRleHQoKSk7CiAKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDApOworICAgIHJvb3QtPnNldEJvdW5kcyhJbnRTaXplKDEsIDEpKTsK
ICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0
aW9uKEludFBvaW50KDAsIDApKTsKICAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRT
aXplKDEwMCwgMTAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCAwMTkwMjI1Nzc2NjFkZDg5NWJjMmI5Y2U2M2Zi
NTBkNTIxYWFhMmExLi4yMjI1MDA5NjFmN2E2NDYyOWUwOWI4NTkyOGEyNTRlMmJiYTk4ZDU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKQEAgLTUzMiw2ICs1MzIsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RUZXN0Ojpk
b0JlZ2luVGVzdCgpCiAgICAgbV9jbGllbnQgPSBNb2NrTGF5ZXJUcmVlSG9zdENsaWVudDo6Y3Jl
YXRlKHRoaXMpOwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllciA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOworCisgICAgLy8gT25seSBub24tZW1wdHkgcm9vdCBsYXllcnMg
d2lsbCBjYXVzZSBkcmF3aW5nIHRvIGhhcHBlbi4KKyAgICByb290TGF5ZXItPnNldEJvdW5kcyhJ
bnRTaXplKDEsIDEpKTsKKwogICAgIG1fbGF5ZXJUcmVlSG9zdCA9IE1vY2tMYXllclRyZWVIb3N0
OjpjcmVhdGUodGhpcywgbV9jbGllbnQuZ2V0KCksIHJvb3RMYXllciwgbV9zZXR0aW5ncyk7CiAg
ICAgQVNTRVJUX1RSVUUobV9sYXllclRyZWVIb3N0KTsKICAgICByb290TGF5ZXItPnNldExheWVy
VHJlZUhvc3QobV9sYXllclRyZWVIb3N0LmdldCgpKTsKQEAgLTgyMSw2ICs4MjUsNTYgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc1JlZHJhdywgcnVuTXVsdGlUaHJlYWQpCiAg
ICAgcnVuVGVzdFRocmVhZGVkKCk7CiB9CiAKKy8vIElmIHRoZSByb290IGxheWVyIGhhcyBubyBj
b250ZW50IGJvdW5kcywgd2Ugc2hvdWxkIHNlZSBhIGNvbW1pdCwgYnV0IHNob3VsZCBub3QgYmUK
Ky8vIHB1c2hpbmcgYW55IGZyYW1lcyBhcyB0aGUgY29udGVudHMgd2lsbCBiZSB1bmRlZmluZWQu
IFJlZ2FyZGxlc3MsIGZvcmNlZCBkcmF3cyBuZWVkCisvLyB0byBhbHdheXMgc2lnbmFsIGNvbXBs
ZXRpb24uCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERy
YXcgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgeworcHVibGljOgorICAg
IENDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdygpCisgICAgICAg
IDogbV9udW1Db21taXRzKDApCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdp
blRlc3QoKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NU
aHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB7CisgICAgICAgIC8vIE9ubHkg
dGhlIGluaXRpYWwgZHJhdyBzaG91bGQgYnJpbmcgdXMgaGVyZS4KKyAgICAgICAgRVhQRUNUX0ZB
TFNFKGltcGwtPnJvb3RMYXllcigpLT5ib3VuZHMoKS5pc0VtcHR5KCkpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKQorICAgIHsKKyAgICAgICAgbV9u
dW1Db21taXRzKys7CisgICAgICAgIGlmIChtX251bUNvbW1pdHMgPT0gMSkgeworICAgICAgICAg
ICAgLy8gUHV0IGFuIGVtcHR5IHJvb3QgbGF5ZXIuCisgICAgICAgICAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcm9vdExheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOworCisgICAgICAgICAg
ICBPd25BcnJheVB0cjxjaGFyPiBwaXhlbHMoYWRvcHRBcnJheVB0cihuZXcgY2hhcls0XSkpOwor
ICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21wb3NpdGVBbmRSZWFkYmFjayhzdGF0aWNf
Y2FzdDx2b2lkKj4ocGl4ZWxzLmdldCgpKSwgSW50UmVjdCgwLCAwLCAxLCAxKSk7CisgICAgICAg
IH0gZWxzZSBpZiAobV9udW1Db21taXRzID09IDIpIHsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0TmVlZHNDb21taXQoKTsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmlu
aXNoQWxsUmVuZGVyaW5nKCk7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAgfQorCitwcml2
YXRlOgorICAgIGludCBtX251bUNvbW1pdHM7Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0
VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3LCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBy
dW5UZXN0VGhyZWFkZWQoKTsKK30KKwogLy8gQSBjb21wb3NpdGVBbmRSZWFkYmFjayB3aGlsZSBp
bnZpc2libGUgc2hvdWxkIGZvcmNlIGEgbm9ybWFsIGNvbW1pdCB3aXRob3V0IGFzc2VydGlvbi4K
IGNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RDb21wb3NpdGVBbmRSZWFkYmFja1doaWxlSW52aXNp
YmxlIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRPbmx5IHsKIHB1YmxpYzoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135374</attachid>
            <date>2012-04-03 11:31:16 -0700</date>
            <delta_ts>2012-04-04 13:22:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82680-20120403113115.patch</filename>
            <type>text/plain</type>
            <size>9796</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJmNDdhZjRlYzdjY2Zk
YWFhMWNjMzRlZGIxMzU5ZmI3OWE0OGNjOC4uMGE1NDgyMTJiZjFjNzY0NjM0NmU4ODBkYTY3MDM2
YjliNTczM2E4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTAyICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWx3YXlzIHNraXAgZHJhdyBhbmQgcmVhZGJhY2sgaWYgdGhlcmUgaXMgbm90aGluZworICAgICAg
ICB0byBkcmF3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODI2ODAKKworICAgICAgICBUaGlzIGF2b2lkcyBjb3JydXB0aW9uIGZyb20gcHVzaGluZyBm
cmFtZXMgdGhhdCBoYXZlIG5vIHZhbGlkCisgICAgICAgIGNvbnRlbnQgZHJhd24gaW50byB0aGVt
LgorICAgICAgICBBbHNvIGluIGFkZGl0aW9uIHRvIGNoZWNraW5nIGZvciBub24tZXhpc3Rpbmcg
cm9vdCBsYXllcnMsIGNoZWNrCisgICAgICAgIGZvciByb290IGxheWVycyB3aXRoIG5vIGNvbnRl
bnQgYm91bmRzLiBJdCdzIHBvc3NpYmxlIHRvIHNlZSB0aG9zZQorICAgICAgICB3aXRoIGtGb3Jj
ZUNvbXBvc2l0aW5nIG1vZGUgZm9yIGVtcHR5IGRvY3VtZW50cy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBDQ0xheWVyVHJlZUhvc3RUZXN0
RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKToKKwogMjAxMi0w
My0zMCAgWmFsYW4gQnVqdGFzICA8emJ1anRhc0BnbWFpbC5jb20+CiAKICAgICAgICAgRml4IGRl
ZmVjdGl2ZSBzaXplX3Qgb3ZlcmZsb3cgaW4gR2VzdHVyZVRhcEhpZ2hsaWdodGVyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAzODg5NTczMTdmNjM0OGYxNjdlYTM2ZWY2OTMyYzhiZjZj
MDlkMDJlLi5iNGJmOGRiZWE2ZDI5YzcwNmI1MGVmOTk5OWM1ZWUxZWQ1MTlhYzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA0LTAyICBEYW5pZWwg
U2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWx3
YXlzIHNraXAgZHJhdyBhbmQgcmVhZGJhY2sgaWYgdGhlcmUgaXMgbm90aGluZworICAgICAgICB0
byBkcmF3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODI2ODAKKworICAgICAgICBUaGlzIGF2b2lkcyBjb3JydXB0aW9uIGZyb20gcHVzaGluZyBmcmFt
ZXMgdGhhdCBoYXZlIG5vIHZhbGlkCisgICAgICAgIGNvbnRlbnQgZHJhd24gaW50byB0aGVtLgor
ICAgICAgICBBbHNvIGluIGFkZGl0aW9uIHRvIGNoZWNraW5nIGZvciBub24tZXhpc3Rpbmcgcm9v
dCBsYXllcnMsIGNoZWNrCisgICAgICAgIGZvciByb290IGxheWVycyB3aXRoIG5vIGNvbnRlbnQg
Ym91bmRzLiBJdCdzIHBvc3NpYmxlIHRvIHNlZSB0aG9zZQorICAgICAgICB3aXRoIGtGb3JjZUNv
bXBvc2l0aW5nIG1vZGUgZm9yIGVtcHR5IGRvY3VtZW50cy4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBDQ0xheWVyVHJlZUhvc3RUZXN0RW1w
dHlDb250ZW50c1Nob3VsZE5vdERyYXcuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NMYXllclRy
ZWVIb3N0VGVzdDo6ZG9CZWdpblRlc3QpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKENDTGF5
ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdyk6CisgICAgICAgIChXVEY6
OkNDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdzo6Q0NMYXllclRy
ZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3KToKKyAgICAgICAgKFdURjo6Q0NM
YXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjpiZWdpblRlc3QpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERy
YXc6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0
VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjpkaWRDb21taXRBbmREcmF3RnJhbWUpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERy
YXc6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisKIDIwMTItMDMtMzAgIE1h
cmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEdFT0xPQ0FUSU9O
IHNob3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBQYWdlIFN1cHBsZW1lbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZjJlMjBjZjAxNDEyMjIwZWQxMTZjMDIyMTRk
MDNlMWJlNDU5NTllZC4uNDUwMDJlMWE4NzUxN2M0YzM1Nzc0ZTQxMWE5M2U0YzM0ZDcwYmM3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTE0MSw3ICsxNDEs
NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbW1pdENvbXBsZXRlKCkKIAogYm9vbCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKIHsKLSAgICBpZiAoIXJvb3RMYXllcigpKQor
ICAgIGlmICghcm9vdExheWVyKCkgfHwgcm9vdExheWVyKCktPmJvdW5kcygpLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3Niw5ICszNzYsNiBAQCBib29sIENDTGF5ZXJU
cmVlSG9zdEltcGw6OnByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJiBmcmFtZSkKICAgICBmcmFtZS5y
ZW5kZXJQYXNzZXMuY2xlYXIoKTsKICAgICBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmNs
ZWFyKCk7CiAKLSAgICBpZiAoIXJvb3RMYXllcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
ICAgICBpZiAoIWNhbGN1bGF0ZVJlbmRlclBhc3NlcyhmcmFtZS5yZW5kZXJQYXNzZXMsIGZyYW1l
LnJlbmRlclN1cmZhY2VMYXllckxpc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggYzExZjQ2NDVlZDA1YzBlZTczY2YzMjAzNGM2ZjMx
NGU3ZDVlYTVjNi4uMzAzNGI5ZDhkZWFhYjg1Y2E2YmJlYTUyZGIwZDQxYTJjZGIzM2UyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTU3OCw3ICs1NzgsNyBAQCBDQ1NjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZQogICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLT5hbmltYXRlKG1v
bm90b25pY1RpbWUpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3Rvbmlj
VGltZSwgd2FsbENsb2NrVGltZSk7CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRh
IGZyYW1lOwotICAgIGJvb2wgZHJhd0ZyYW1lID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkgfHwgZm9yY2VkRHJhdzsKKyAgICBib29sIGRyYXdGcmFtZSA9IG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNhbkRyYXcoKSAmJiAobV9sYXllclRyZWVIb3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkgfHwgZm9yY2VkRHJhdyk7CiAgICAgaWYgKGRyYXdGcmFtZSkgewogICAg
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICAgICAgcmVz
dWx0LmRpZERyYXcgPSB0cnVlOwpAQCAtNTg2LDkgKzU4Niw5IEBAIENDU2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXBSZXN1bHQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3
YXBJbnRlCiAKICAgICAvLyBDaGVjayBmb3IgYSBwZW5kaW5nIGNvbXBvc2l0ZUFuZFJlYWRiYWNr
LgogICAgIGlmIChtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCkgewotICAgICAgICBBU1NF
UlQoZHJhd0ZyYW1lKTsgLy8gVGhpcyBzaG91bGQgYmUgYSBmb3JjZWREcmF3Ci0gICAgICAgIG1f
bGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNrKG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFk
LT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5yZWN0KTsKLSAgICAgICAg
bV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnN1Y2Nlc3MgPSAhbV9sYXllclRyZWVIb3N0
SW1wbC0+aXNDb250ZXh0TG9zdCgpOworICAgICAgICBpZiAoZHJhd0ZyYW1lKQorICAgICAgICAg
ICAgbV9sYXllclRyZWVIb3N0SW1wbC0+cmVhZGJhY2sobV9yZWFkYmFja1JlcXVlc3RPbkltcGxU
aHJlYWQtPnBpeGVscywgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnJlY3QpOworICAg
ICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+c3VjY2VzcyA9ICFtX2xheWVyVHJl
ZUhvc3RJbXBsLT5pc0NvbnRleHRMb3N0KCkgJiYgZHJhd0ZyYW1lOwogICAgICAgICBtX3JlYWRi
YWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+Y29tcGxldGlvbi5zaWduYWwoKTsKICAgICAgICAgbV9y
ZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQgPSAwOwogICAgIH0KQEAgLTU5OCw3ICs1OTgsNiBA
QCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZQogCiAgICAgLy8gUHJvY2VzcyBhbnkgZmluaXNoIHJl
cXVlc3QKICAgICBpZiAobV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxU
aHJlYWQpIHsKLSAgICAgICAgQVNTRVJUKGRyYXdGcmFtZSk7IC8vIFRoaXMgc2hvdWxkIGJlIGEg
Zm9yY2VkRHJhdwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJp
bmcoKTsKICAgICAgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxU
aHJlYWQtPnNpZ25hbCgpOwogICAgICAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25F
dmVudE9uSW1wbFRocmVhZCA9IDA7CkBAIC02MTAsNyArNjA5LDYgQEAgQ0NTY2hlZHVsZWRBY3Rp
b25EcmF3QW5kU3dhcFJlc3VsdCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcEludGUKICAgICAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhy
ZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKSk7CiAg
ICAgfQogCi0gICAgQVNTRVJUKGRyYXdGcmFtZSB8fCAoIWRyYXdGcmFtZSAmJiAhZm9yY2VkRHJh
dykpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNzAwOWM4
YzNlOTNjYTZjYzAyZDQ1NTI1N2VmMTMwOWNlZGZmNjViZS4uZWEzZWUwYzA0NThlZWFkZmIxMmJj
OWQ4YjNjNTgyMTRjNzI1MjQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTI0OCw2ICsyNDgsNyBA
QCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9u
V2l0aE9mZnNldCkKICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVh
dGVDb250ZXh0KCkpOwogCiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSgwKTsKKyAgICByb290LT5zZXRCb3VuZHMoSW50U2l6ZSgxLCAxKSk7CiAgICAg
cm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJ
bnRQb2ludCgwLCAwKSk7CiAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgx
MDAsIDEwMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAKaW5kZXggMDE5MDIyNTc3NjYxZGQ4OTViYzJiOWNlNjNmYjUwZDUy
MWFhYTJhMS4uMjIyNTAwOTYxZjdhNjQ2MjllMDliODU5MjhhMjU0ZTJiYmE5OGQ1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCkBAIC01MzIsNiArNTMyLDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0VGVzdDo6ZG9CZWdp
blRlc3QoKQogICAgIG1fY2xpZW50ID0gTW9ja0xheWVyVHJlZUhvc3RDbGllbnQ6OmNyZWF0ZSh0
aGlzKTsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByb290TGF5ZXIgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKKworICAgIC8vIE9ubHkgbm9uLWVtcHR5IHJvb3QgbGF5ZXJzIHdpbGwg
Y2F1c2UgZHJhd2luZyB0byBoYXBwZW4uCisgICAgcm9vdExheWVyLT5zZXRCb3VuZHMoSW50U2l6
ZSgxLCAxKSk7CisKICAgICBtX2xheWVyVHJlZUhvc3QgPSBNb2NrTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlKHRoaXMsIG1fY2xpZW50LmdldCgpLCByb290TGF5ZXIsIG1fc2V0dGluZ3MpOwogICAgIEFT
U0VSVF9UUlVFKG1fbGF5ZXJUcmVlSG9zdCk7CiAgICAgcm9vdExheWVyLT5zZXRMYXllclRyZWVI
b3N0KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CkBAIC04MjEsNiArODI1LDU2IEBAIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RUZXN0U2V0TmVlZHNSZWRyYXcsIHJ1bk11bHRpVGhyZWFkKQogICAgIHJ1
blRlc3RUaHJlYWRlZCgpOwogfQogCisvLyBJZiB0aGUgcm9vdCBsYXllciBoYXMgbm8gY29udGVu
dCBib3VuZHMsIHdlIHNob3VsZCBzZWUgYSBjb21taXQsIGJ1dCBzaG91bGQgbm90IGJlCisvLyBw
dXNoaW5nIGFueSBmcmFtZXMgYXMgdGhlIGNvbnRlbnRzIHdpbGwgYmUgdW5kZWZpbmVkLiBSZWdh
cmRsZXNzLCBmb3JjZWQgZHJhd3MgbmVlZAorLy8gdG8gYWx3YXlzIHNpZ25hbCBjb21wbGV0aW9u
LgorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3IDog
cHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRPbmx5IHsKK3B1YmxpYzoKKyAgICBDQ0xh
eWVyVHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcoKQorICAgICAgICA6IG1f
bnVtQ29tbWl0cygwKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0
KCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFk
KENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgeworICAgICAgICAvLyBPbmx5IHRoZSBp
bml0aWFsIGRyYXcgc2hvdWxkIGJyaW5nIHVzIGhlcmUuCisgICAgICAgIEVYUEVDVF9GQUxTRShp
bXBsLT5yb290TGF5ZXIoKS0+Ym91bmRzKCkuaXNFbXB0eSgpKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkKKyAgICB7CisgICAgICAgIG1fbnVtQ29t
bWl0cysrOworICAgICAgICBpZiAobV9udW1Db21taXRzID09IDEpIHsKKyAgICAgICAgICAgIC8v
IFB1dCBhbiBlbXB0eSByb290IGxheWVyLgorICAgICAgICAgICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IHJvb3RMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKKworICAgICAgICAgICAgT3du
QXJyYXlQdHI8Y2hhcj4gcGl4ZWxzKGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbNF0pKTsKKyAgICAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tcG9zaXRlQW5kUmVhZGJhY2soc3RhdGljX2Nhc3Q8
dm9pZCo+KHBpeGVscy5nZXQoKSksIEludFJlY3QoMCwgMCwgMSwgMSkpOworICAgICAgICB9IGVs
c2UgaWYgKG1fbnVtQ29tbWl0cyA9PSAyKSB7CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldE5lZWRzQ29tbWl0KCk7CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaEFs
bFJlbmRlcmluZygpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCisgICAgeworICAgIH0KKworcHJpdmF0ZToK
KyAgICBpbnQgbV9udW1Db21taXRzOworfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RF
bXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdywgcnVuTXVsdGlUaHJlYWQpCit7CisgICAgcnVuVGVz
dFRocmVhZGVkKCk7Cit9CisKIC8vIEEgY29tcG9zaXRlQW5kUmVhZGJhY2sgd2hpbGUgaW52aXNp
YmxlIHNob3VsZCBmb3JjZSBhIG5vcm1hbCBjb21taXQgd2l0aG91dCBhc3NlcnRpb24uCiBjbGFz
cyBDQ0xheWVyVHJlZUhvc3RUZXN0Q29tcG9zaXRlQW5kUmVhZGJhY2tXaGlsZUludmlzaWJsZSA6
IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CiBwdWJsaWM6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135660</attachid>
            <date>2012-04-04 13:22:17 -0700</date>
            <delta_ts>2012-04-04 13:24:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82680-20120404132216.patch</filename>
            <type>text/plain</type>
            <size>11000</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZjM2VlZDk1NmI1ZGNh
MmJhNzIzNmU3NzIwMjIwNTNlNjY5NzM4My4uNGU4MzFhYzBiM2I5ODkwZThkMmMzZmMzOTYyOGNk
Y2M0OTNlZDdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTAyICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWx3YXlzIHNraXAgZHJhdyBhbmQgcmVhZGJhY2sgaWYgdGhlcmUgaXMgbm90aGluZworICAgICAg
ICB0byBkcmF3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODI2ODAKKworICAgICAgICBUaGlzIGF2b2lkcyBjb3JydXB0aW9uIGZyb20gcHVzaGluZyBm
cmFtZXMgdGhhdCBoYXZlIG5vIHZhbGlkCisgICAgICAgIGNvbnRlbnQgZHJhd24gaW50byB0aGVt
LgorICAgICAgICBBbHNvIGluIGFkZGl0aW9uIHRvIGNoZWNraW5nIGZvciBub24tZXhpc3Rpbmcg
cm9vdCBsYXllcnMsIGNoZWNrCisgICAgICAgIGZvciByb290IGxheWVycyB3aXRoIG5vIGNvbnRl
bnQgYm91bmRzLiBJdCdzIHBvc3NpYmxlIHRvIHNlZSB0aG9zZQorICAgICAgICB3aXRoIGtGb3Jj
ZUNvbXBvc2l0aW5nIG1vZGUgZm9yIGVtcHR5IGRvY3VtZW50cy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBDQ0xheWVyVHJlZUhvc3RUZXN0
RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKToKKwogMjAxMi0w
NC0wNCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBleHBvc2Ugc2F2ZWRVUkwsIHNldFRvb2xiYXJDb2xvcnMgYW5kIHRvZ2ds
ZVNlYXJjaGluZ0Zvck5vZGUgaW4gSW5zcGVjdG9yRnJvbnRlbmRBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggNWI4YjI2YWZjZWU5MjY0NGI3MmE5Nzc3MDkzOTlhMWNjOWNjYjgyMi4u
M2Q4NDg5ZDY5Njk3ZGFkMGIxMjY2MjM3ZGU3OGYwM2Q3YzM0NmNlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0wNC0wMiAgRGFuaWVsIFNpZXZlcnMg
IDxzaWV2ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEFsd2F5cyBza2lw
IGRyYXcgYW5kIHJlYWRiYWNrIGlmIHRoZXJlIGlzIG5vdGhpbmcKKyAgICAgICAgdG8gZHJhdy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNjgwCisK
KyAgICAgICAgVGhpcyBhdm9pZHMgY29ycnVwdGlvbiBmcm9tIHB1c2hpbmcgZnJhbWVzIHRoYXQg
aGF2ZSBubyB2YWxpZAorICAgICAgICBjb250ZW50IGRyYXduIGludG8gdGhlbS4KKyAgICAgICAg
QWxzbyBpbiBhZGRpdGlvbiB0byBjaGVja2luZyBmb3Igbm9uLWV4aXN0aW5nIHJvb3QgbGF5ZXJz
LCBjaGVjaworICAgICAgICBmb3Igcm9vdCBsYXllcnMgd2l0aCBubyBjb250ZW50IGJvdW5kcy4g
SXQncyBwb3NzaWJsZSB0byBzZWUgdGhvc2UKKyAgICAgICAgd2l0aCBrRm9yY2VDb21wb3NpdGlu
ZyBtb2RlIGZvciBlbXB0eSBkb2N1bWVudHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQ0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVu
dHNTaG91bGROb3REcmF3LgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRl
c3Q6OmRvQmVnaW5UZXN0KToKKyAgICAgICAgKFdURik6CisgICAgICAgIChDQ0xheWVyVHJlZUhv
c3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXc6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdyk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVl
SG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdzo6YmVnaW5UZXN0KToKKyAgICAgICAg
KFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjpkcmF3
TGF5ZXJzT25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0
eUNvbnRlbnRzU2hvdWxkTm90RHJhdzo6ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKToKKyAgICAgICAg
KFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjphZnRl
clRlc3QpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgorCiAyMDEyLTA0LTA0ICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdGVt
cG9yYXJ5IGRpcnR5IGhhY2sgdG8gbWFrZSBXaW4gRGVidWcgd29yayBhZ2Fpbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZjJlMjBjZjAxNDEyMjIwZWQxMTZj
MDIyMTRkMDNlMWJlNDU5NTllZC4uNDUwMDJlMWE4NzUxN2M0YzM1Nzc0ZTQxMWE5M2U0YzM0ZDcw
YmM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTE0MSw3
ICsxNDEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbW1pdENvbXBsZXRlKCkKIAog
Ym9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKIHsKLSAgICBpZiAoIXJvb3RMYXll
cigpKQorICAgIGlmICghcm9vdExheWVyKCkgfHwgcm9vdExheWVyKCktPmJvdW5kcygpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3Niw5ICszNzYsNiBAQCBib29sIEND
TGF5ZXJUcmVlSG9zdEltcGw6OnByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJiBmcmFtZSkKICAgICBm
cmFtZS5yZW5kZXJQYXNzZXMuY2xlYXIoKTsKICAgICBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LmNsZWFyKCk7CiAKLSAgICBpZiAoIXJvb3RMYXllcigpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KICAgICBpZiAoIWNhbGN1bGF0ZVJlbmRlclBhc3NlcyhmcmFtZS5yZW5kZXJQYXNzZXMs
IGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBhODU5ZmVjNWMyMDNkYmQy
YjQ2YjNjZWNjZjIyMWZkNjkxY2IzZDY2Li43ZjNiYTdmYjZlMTViYmQ2Njg1ZTg1MTZiMmQ1M2Jl
YzkwNjNjZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC04OCw3
ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21taXQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShk
b3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOwotICAgIC8vIFJldHVy
bnMgZmFsc2UgaWYgcHJvYmxlbXMgb2NjdXJlZCBwcmVwYXJpbmcgdGhlIGZyYW1lLCBhbmQgd2Ug
c2hvdWxkIHRyeSB0byBhdm9pZCBkaXNwbGF5aW5nIHRoZSBmcmFtZS4KKyAgICAvLyBSZXR1cm5z
IGZhbHNlIGlmIHdlIHNob3VsZCB0cnkgdG8gYXZvaWQgZGlzcGxheWluZyB0aGUgZnJhbWUsIGJl
Y2F1c2UgaXQgaGFzIHZpc2libGUgY2hlY2tlcmJvYXJkIGR1cmluZyBhbiBhbmltYXRpb24uCiAg
ICAgdmlydHVhbCBib29sIHByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJik7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJik7CiAKQEAgLTEwMiw2ICsxMDIsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2UoKTsKIAogICAg
IC8vIEltcGxlbWVudGF0aW9uCisKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5v
IHZhbGlkIHJvb3QgbGF5ZXIgYW5kIHRodXMgbm8gY29udGVudCB0aGF0IGNhbiBiZSBkcmF3bi4K
ICAgICBib29sIGNhbkRyYXcoKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDQ1ODRmMTVmYmNhMmU1YmU0ODk5NmRh
ZDVmMDlmM2NhYzhhM2E5NzYuLjYzYzc4M2I4NGZjNGFiMGNjYjFkMGQ1ZTYyYmE3OWU0YzQyMWRh
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC01NzgsNyArNTc4LDcgQEAgQ0NT
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcEludGUKICAgICBtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC0+YW5p
bWF0ZShtb25vdG9uaWNUaW1lKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKG1v
bm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUpOwogICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZy
YW1lRGF0YSBmcmFtZTsKLSAgICBib29sIGRyYXdGcmFtZSA9IG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnByZXBhcmVUb0RyYXcoZnJhbWUpIHx8IGZvcmNlZERyYXc7CisgICAgYm9vbCBkcmF3RnJhbWUg
PSBtX2xheWVyVHJlZUhvc3RJbXBsLT5jYW5EcmF3KCkgJiYgKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnByZXBhcmVUb0RyYXcoZnJhbWUpIHx8IGZvcmNlZERyYXcpOwogICAgIGlmIChkcmF3RnJhbWUp
IHsKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAg
ICAgIHJlc3VsdC5kaWREcmF3ID0gdHJ1ZTsKQEAgLTU4Niw5ICs1ODYsOSBAQCBDQ1NjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZQogCiAgICAgLy8gQ2hlY2sgZm9yIGEgcGVuZGluZyBjb21wb3NpdGVBbmRS
ZWFkYmFjay4KICAgICBpZiAobV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQpIHsKLSAgICAg
ICAgQVNTRVJUKGRyYXdGcmFtZSk7IC8vIFRoaXMgc2hvdWxkIGJlIGEgZm9yY2VkRHJhdwotICAg
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5yZWFkYmFjayhtX3JlYWRiYWNrUmVxdWVzdE9uSW1w
bFRocmVhZC0+cGl4ZWxzLCBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+cmVjdCk7Ci0g
ICAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5zdWNjZXNzID0gIW1fbGF5ZXJU
cmVlSG9zdEltcGwtPmlzQ29udGV4dExvc3QoKTsKKyAgICAgICAgaWYgKGRyYXdGcmFtZSkKKyAg
ICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNrKG1fcmVhZGJhY2tSZXF1ZXN0
T25JbXBsVGhyZWFkLT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5yZWN0
KTsKKyAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnN1Y2Nlc3MgPSAhbV9s
YXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpICYmIGRyYXdGcmFtZTsKICAgICAgICAg
bV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPmNvbXBsZXRpb24uc2lnbmFsKCk7CiAgICAg
ICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkID0gMDsKICAgICB9CkBAIC01OTgsNyAr
NTk4LDYgQEAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBDQ1RocmVhZFByb3h5
OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGUKIAogICAgIC8vIFByb2Nlc3MgYW55IGZp
bmlzaCByZXF1ZXN0CiAgICAgaWYgKG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50
T25JbXBsVGhyZWFkKSB7Ci0gICAgICAgIEFTU0VSVChkcmF3RnJhbWUpOyAvLyBUaGlzIHNob3Vs
ZCBiZSBhIGZvcmNlZERyYXcKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZmluaXNoQWxs
UmVuZGVyaW5nKCk7CiAgICAgICAgIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50
T25JbXBsVGhyZWFkLT5zaWduYWwoKTsKICAgICAgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21w
bGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSAwOwpAQCAtNjEwLDcgKzYwOSw2IEBAIENDU2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXBJbnRlCiAgICAgICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVh
dGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmRpZENvbW1pdEFuZERyYXdGcmFt
ZSkpOwogICAgIH0KIAotICAgIEFTU0VSVChkcmF3RnJhbWUgfHwgKCFkcmF3RnJhbWUgJiYgIWZv
cmNlZERyYXcpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4
IDcwMDljOGMzZTkzY2E2Y2MwMmQ0NTUyNTdlZjEzMDljZWRmZjY1YmUuLmVhM2VlMGMwNDU4ZWVh
ZGZiMTJiYzlkOGIzYzU4MjE0YzcyNTI0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0yNDgsNiAr
MjQ4LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBub25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbldpdGhPZmZzZXQpCiAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoY3JlYXRlQ29udGV4dCgpKTsKIAogICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgcm9vdC0+c2V0Qm91bmRzKEludFNpemUoMSwgMSkp
OwogICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CiAgICAgcm9vdC0+c2V0U2Nyb2xsUG9z
aXRpb24oSW50UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKElu
dFNpemUoMTAwLCAxMDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGI2YjBjNjA2MmZlYTlmYTEyOTE0ZTVhMjBl
MTVjYTZkNTdkNjIxODUuLmE3ODBhMjJlM2Q3Mzg5MTFmMDI4OGFjMzIyYjQ3NTQwMDJlMjliZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcApAQCAtNTMyLDYgKzUzMiwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdFRlc3Q6
OmRvQmVnaW5UZXN0KCkKICAgICBtX2NsaWVudCA9IE1vY2tMYXllclRyZWVIb3N0Q2xpZW50Ojpj
cmVhdGUodGhpcyk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisKKyAgICAvLyBPbmx5IG5vbi1lbXB0eSByb290IGxheWVy
cyB3aWxsIGNhdXNlIGRyYXdpbmcgdG8gaGFwcGVuLgorICAgIHJvb3RMYXllci0+c2V0Qm91bmRz
KEludFNpemUoMSwgMSkpOworCiAgICAgbV9sYXllclRyZWVIb3N0ID0gTW9ja0xheWVyVHJlZUhv
c3Q6OmNyZWF0ZSh0aGlzLCBtX2NsaWVudC5nZXQoKSwgcm9vdExheWVyLCBtX3NldHRpbmdzKTsK
ICAgICBBU1NFUlRfVFJVRShtX2xheWVyVHJlZUhvc3QpOwogICAgIHJvb3RMYXllci0+c2V0TGF5
ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwpAQCAtODIxLDYgKzgyNSw1NiBAQCBU
RVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRzUmVkcmF3LCBydW5NdWx0aVRocmVhZCkK
ICAgICBydW5UZXN0VGhyZWFkZWQoKTsKIH0KIAorLy8gSWYgdGhlIHJvb3QgbGF5ZXIgaGFzIG5v
IGNvbnRlbnQgYm91bmRzLCB3ZSBzaG91bGQgc2VlIGEgY29tbWl0LCBidXQgc2hvdWxkIG5vdCBi
ZQorLy8gcHVzaGluZyBhbnkgZnJhbWVzIGFzIHRoZSBjb250ZW50cyB3aWxsIGJlIHVuZGVmaW5l
ZC4gUmVnYXJkbGVzcywgZm9yY2VkIGRyYXdzIG5lZWQKKy8vIHRvIGFsd2F5cyBzaWduYWwgY29t
cGxldGlvbi4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90
RHJhdyA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CitwdWJsaWM6Cisg
ICAgQ0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3KCkKKyAgICAg
ICAgOiBtX251bUNvbW1pdHMoMCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJl
Z2luVGVzdCgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgLy8gT25s
eSB0aGUgaW5pdGlhbCBkcmF3IHNob3VsZCBicmluZyB1cyBoZXJlLgorICAgICAgICBFWFBFQ1Rf
RkFMU0UoaW1wbC0+cm9vdExheWVyKCktPmJvdW5kcygpLmlzRW1wdHkoKSk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpCisgICAgeworICAgICAgICBt
X251bUNvbW1pdHMrKzsKKyAgICAgICAgaWYgKG1fbnVtQ29tbWl0cyA9PSAxKSB7CisgICAgICAg
ICAgICAvLyBQdXQgYW4gZW1wdHkgcm9vdCBsYXllci4KKyAgICAgICAgICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiByb290TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CisKKyAgICAgICAg
ICAgIE93bkFycmF5UHRyPGNoYXI+IHBpeGVscyhhZG9wdEFycmF5UHRyKG5ldyBjaGFyWzRdKSk7
CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHN0YXRp
Y19jYXN0PHZvaWQqPihwaXhlbHMuZ2V0KCkpLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChtX251bUNvbW1pdHMgPT0gMikgeworICAgICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5m
aW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgaW50IG1fbnVtQ29tbWl0czsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhv
c3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcsIHJ1bk11bHRpVGhyZWFkKQoreworICAg
IHJ1blRlc3RUaHJlYWRlZCgpOworfQorCiAvLyBBIGNvbXBvc2l0ZUFuZFJlYWRiYWNrIHdoaWxl
IGludmlzaWJsZSBzaG91bGQgZm9yY2UgYSBub3JtYWwgY29tbWl0IHdpdGhvdXQgYXNzZXJ0aW9u
LgogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdENvbXBvc2l0ZUFuZFJlYWRiYWNrV2hpbGVJbnZp
c2libGUgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgewogcHVibGljOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135663</attachid>
            <date>2012-04-04 13:25:01 -0700</date>
            <delta_ts>2012-04-04 13:29:08 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-82680-20120404132500.patch</filename>
            <type>text/plain</type>
            <size>11000</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZjM2VlZDk1NmI1ZGNh
MmJhNzIzNmU3NzIwMjIwNTNlNjY5NzM4My4uNGU4MzFhYzBiM2I5ODkwZThkMmMzZmMzOTYyOGNk
Y2M0OTNlZDdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTAyICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWx3YXlzIHNraXAgZHJhdyBhbmQgcmVhZGJhY2sgaWYgdGhlcmUgaXMgbm90aGluZworICAgICAg
ICB0byBkcmF3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODI2ODAKKworICAgICAgICBUaGlzIGF2b2lkcyBjb3JydXB0aW9uIGZyb20gcHVzaGluZyBm
cmFtZXMgdGhhdCBoYXZlIG5vIHZhbGlkCisgICAgICAgIGNvbnRlbnQgZHJhd24gaW50byB0aGVt
LgorICAgICAgICBBbHNvIGluIGFkZGl0aW9uIHRvIGNoZWNraW5nIGZvciBub24tZXhpc3Rpbmcg
cm9vdCBsYXllcnMsIGNoZWNrCisgICAgICAgIGZvciByb290IGxheWVycyB3aXRoIG5vIGNvbnRl
bnQgYm91bmRzLiBJdCdzIHBvc3NpYmxlIHRvIHNlZSB0aG9zZQorICAgICAgICB3aXRoIGtGb3Jj
ZUNvbXBvc2l0aW5nIG1vZGUgZm9yIGVtcHR5IGRvY3VtZW50cy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBDQ0xheWVyVHJlZUhvc3RUZXN0
RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKToKKwogMjAxMi0w
NC0wNCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBleHBvc2Ugc2F2ZWRVUkwsIHNldFRvb2xiYXJDb2xvcnMgYW5kIHRvZ2ds
ZVNlYXJjaGluZ0Zvck5vZGUgaW4gSW5zcGVjdG9yRnJvbnRlbmRBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggNWI4YjI2YWZjZWU5MjY0NGI3MmE5Nzc3MDkzOTlhMWNjOWNjYjgyMi4u
M2Q4NDg5ZDY5Njk3ZGFkMGIxMjY2MjM3ZGU3OGYwM2Q3YzM0NmNlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0wNC0wMiAgRGFuaWVsIFNpZXZlcnMg
IDxzaWV2ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEFsd2F5cyBza2lw
IGRyYXcgYW5kIHJlYWRiYWNrIGlmIHRoZXJlIGlzIG5vdGhpbmcKKyAgICAgICAgdG8gZHJhdy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNjgwCisK
KyAgICAgICAgVGhpcyBhdm9pZHMgY29ycnVwdGlvbiBmcm9tIHB1c2hpbmcgZnJhbWVzIHRoYXQg
aGF2ZSBubyB2YWxpZAorICAgICAgICBjb250ZW50IGRyYXduIGludG8gdGhlbS4KKyAgICAgICAg
QWxzbyBpbiBhZGRpdGlvbiB0byBjaGVja2luZyBmb3Igbm9uLWV4aXN0aW5nIHJvb3QgbGF5ZXJz
LCBjaGVjaworICAgICAgICBmb3Igcm9vdCBsYXllcnMgd2l0aCBubyBjb250ZW50IGJvdW5kcy4g
SXQncyBwb3NzaWJsZSB0byBzZWUgdGhvc2UKKyAgICAgICAgd2l0aCBrRm9yY2VDb21wb3NpdGlu
ZyBtb2RlIGZvciBlbXB0eSBkb2N1bWVudHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQ0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVu
dHNTaG91bGROb3REcmF3LgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRl
c3Q6OmRvQmVnaW5UZXN0KToKKyAgICAgICAgKFdURik6CisgICAgICAgIChDQ0xheWVyVHJlZUhv
c3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXc6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdyk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVl
SG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdzo6YmVnaW5UZXN0KToKKyAgICAgICAg
KFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjpkcmF3
TGF5ZXJzT25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0
eUNvbnRlbnRzU2hvdWxkTm90RHJhdzo6ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKToKKyAgICAgICAg
KFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjphZnRl
clRlc3QpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgorCiAyMDEyLTA0LTA0ICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdGVt
cG9yYXJ5IGRpcnR5IGhhY2sgdG8gbWFrZSBXaW4gRGVidWcgd29yayBhZ2Fpbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZjJlMjBjZjAxNDEyMjIwZWQxMTZj
MDIyMTRkMDNlMWJlNDU5NTllZC4uNDUwMDJlMWE4NzUxN2M0YzM1Nzc0ZTQxMWE5M2U0YzM0ZDcw
YmM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTE0MSw3
ICsxNDEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbW1pdENvbXBsZXRlKCkKIAog
Ym9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKIHsKLSAgICBpZiAoIXJvb3RMYXll
cigpKQorICAgIGlmICghcm9vdExheWVyKCkgfHwgcm9vdExheWVyKCktPmJvdW5kcygpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3Niw5ICszNzYsNiBAQCBib29sIEND
TGF5ZXJUcmVlSG9zdEltcGw6OnByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJiBmcmFtZSkKICAgICBm
cmFtZS5yZW5kZXJQYXNzZXMuY2xlYXIoKTsKICAgICBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LmNsZWFyKCk7CiAKLSAgICBpZiAoIXJvb3RMYXllcigpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KICAgICBpZiAoIWNhbGN1bGF0ZVJlbmRlclBhc3NlcyhmcmFtZS5yZW5kZXJQYXNzZXMs
IGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBhODU5ZmVjNWMyMDNkYmQy
YjQ2YjNjZWNjZjIyMWZkNjkxY2IzZDY2Li43ZjNiYTdmYjZlMTViYmQ2Njg1ZTg1MTZiMmQ1M2Jl
YzkwNjNjZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC04OCw3
ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21taXQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShk
b3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOwotICAgIC8vIFJldHVy
bnMgZmFsc2UgaWYgcHJvYmxlbXMgb2NjdXJlZCBwcmVwYXJpbmcgdGhlIGZyYW1lLCBhbmQgd2Ug
c2hvdWxkIHRyeSB0byBhdm9pZCBkaXNwbGF5aW5nIHRoZSBmcmFtZS4KKyAgICAvLyBSZXR1cm5z
IGZhbHNlIGlmIHdlIHNob3VsZCB0cnkgdG8gYXZvaWQgZGlzcGxheWluZyB0aGUgZnJhbWUsIGJl
Y2F1c2UgaXQgaGFzIHZpc2libGUgY2hlY2tlcmJvYXJkIGR1cmluZyBhbiBhbmltYXRpb24uCiAg
ICAgdmlydHVhbCBib29sIHByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJik7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJik7CiAKQEAgLTEwMiw2ICsxMDIsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2UoKTsKIAogICAg
IC8vIEltcGxlbWVudGF0aW9uCisKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5v
IHZhbGlkIHJvb3QgbGF5ZXIgYW5kIHRodXMgbm8gY29udGVudCB0aGF0IGNhbiBiZSBkcmF3bi4K
ICAgICBib29sIGNhbkRyYXcoKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDQ1ODRmMTVmYmNhMmU1YmU0ODk5NmRh
ZDVmMDlmM2NhYzhhM2E5NzYuLjYzYzc4M2I4NGZjNGFiMGNjYjFkMGQ1ZTYyYmE3OWU0YzQyMWRh
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC01NzgsNyArNTc4LDcgQEAgQ0NT
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcEludGUKICAgICBtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC0+YW5p
bWF0ZShtb25vdG9uaWNUaW1lKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKG1v
bm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUpOwogICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZy
YW1lRGF0YSBmcmFtZTsKLSAgICBib29sIGRyYXdGcmFtZSA9IG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnByZXBhcmVUb0RyYXcoZnJhbWUpIHx8IGZvcmNlZERyYXc7CisgICAgYm9vbCBkcmF3RnJhbWUg
PSBtX2xheWVyVHJlZUhvc3RJbXBsLT5jYW5EcmF3KCkgJiYgKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnByZXBhcmVUb0RyYXcoZnJhbWUpIHx8IGZvcmNlZERyYXcpOwogICAgIGlmIChkcmF3RnJhbWUp
IHsKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAg
ICAgIHJlc3VsdC5kaWREcmF3ID0gdHJ1ZTsKQEAgLTU4Niw5ICs1ODYsOSBAQCBDQ1NjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZQogCiAgICAgLy8gQ2hlY2sgZm9yIGEgcGVuZGluZyBjb21wb3NpdGVBbmRS
ZWFkYmFjay4KICAgICBpZiAobV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQpIHsKLSAgICAg
ICAgQVNTRVJUKGRyYXdGcmFtZSk7IC8vIFRoaXMgc2hvdWxkIGJlIGEgZm9yY2VkRHJhdwotICAg
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5yZWFkYmFjayhtX3JlYWRiYWNrUmVxdWVzdE9uSW1w
bFRocmVhZC0+cGl4ZWxzLCBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+cmVjdCk7Ci0g
ICAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5zdWNjZXNzID0gIW1fbGF5ZXJU
cmVlSG9zdEltcGwtPmlzQ29udGV4dExvc3QoKTsKKyAgICAgICAgaWYgKGRyYXdGcmFtZSkKKyAg
ICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNrKG1fcmVhZGJhY2tSZXF1ZXN0
T25JbXBsVGhyZWFkLT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5yZWN0
KTsKKyAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnN1Y2Nlc3MgPSAhbV9s
YXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpICYmIGRyYXdGcmFtZTsKICAgICAgICAg
bV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPmNvbXBsZXRpb24uc2lnbmFsKCk7CiAgICAg
ICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkID0gMDsKICAgICB9CkBAIC01OTgsNyAr
NTk4LDYgQEAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBDQ1RocmVhZFByb3h5
OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGUKIAogICAgIC8vIFByb2Nlc3MgYW55IGZp
bmlzaCByZXF1ZXN0CiAgICAgaWYgKG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50
T25JbXBsVGhyZWFkKSB7Ci0gICAgICAgIEFTU0VSVChkcmF3RnJhbWUpOyAvLyBUaGlzIHNob3Vs
ZCBiZSBhIGZvcmNlZERyYXcKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZmluaXNoQWxs
UmVuZGVyaW5nKCk7CiAgICAgICAgIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50
T25JbXBsVGhyZWFkLT5zaWduYWwoKTsKICAgICAgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21w
bGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSAwOwpAQCAtNjEwLDcgKzYwOSw2IEBAIENDU2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXBJbnRlCiAgICAgICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVh
dGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmRpZENvbW1pdEFuZERyYXdGcmFt
ZSkpOwogICAgIH0KIAotICAgIEFTU0VSVChkcmF3RnJhbWUgfHwgKCFkcmF3RnJhbWUgJiYgIWZv
cmNlZERyYXcpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4
IDcwMDljOGMzZTkzY2E2Y2MwMmQ0NTUyNTdlZjEzMDljZWRmZjY1YmUuLmVhM2VlMGMwNDU4ZWVh
ZGZiMTJiYzlkOGIzYzU4MjE0YzcyNTI0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0yNDgsNiAr
MjQ4LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBub25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbldpdGhPZmZzZXQpCiAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoY3JlYXRlQ29udGV4dCgpKTsKIAogICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgcm9vdC0+c2V0Qm91bmRzKEludFNpemUoMSwgMSkp
OwogICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CiAgICAgcm9vdC0+c2V0U2Nyb2xsUG9z
aXRpb24oSW50UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKElu
dFNpemUoMTAwLCAxMDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGI2YjBjNjA2MmZlYTlmYTEyOTE0ZTVhMjBl
MTVjYTZkNTdkNjIxODUuLmE3ODBhMjJlM2Q3Mzg5MTFmMDI4OGFjMzIyYjQ3NTQwMDJlMjliZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcApAQCAtNTMyLDYgKzUzMiwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdFRlc3Q6
OmRvQmVnaW5UZXN0KCkKICAgICBtX2NsaWVudCA9IE1vY2tMYXllclRyZWVIb3N0Q2xpZW50Ojpj
cmVhdGUodGhpcyk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisKKyAgICAvLyBPbmx5IG5vbi1lbXB0eSByb290IGxheWVy
cyB3aWxsIGNhdXNlIGRyYXdpbmcgdG8gaGFwcGVuLgorICAgIHJvb3RMYXllci0+c2V0Qm91bmRz
KEludFNpemUoMSwgMSkpOworCiAgICAgbV9sYXllclRyZWVIb3N0ID0gTW9ja0xheWVyVHJlZUhv
c3Q6OmNyZWF0ZSh0aGlzLCBtX2NsaWVudC5nZXQoKSwgcm9vdExheWVyLCBtX3NldHRpbmdzKTsK
ICAgICBBU1NFUlRfVFJVRShtX2xheWVyVHJlZUhvc3QpOwogICAgIHJvb3RMYXllci0+c2V0TGF5
ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwpAQCAtODIxLDYgKzgyNSw1NiBAQCBU
RVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRzUmVkcmF3LCBydW5NdWx0aVRocmVhZCkK
ICAgICBydW5UZXN0VGhyZWFkZWQoKTsKIH0KIAorLy8gSWYgdGhlIHJvb3QgbGF5ZXIgaGFzIG5v
IGNvbnRlbnQgYm91bmRzLCB3ZSBzaG91bGQgc2VlIGEgY29tbWl0LCBidXQgc2hvdWxkIG5vdCBi
ZQorLy8gcHVzaGluZyBhbnkgZnJhbWVzIGFzIHRoZSBjb250ZW50cyB3aWxsIGJlIHVuZGVmaW5l
ZC4gUmVnYXJkbGVzcywgZm9yY2VkIGRyYXdzIG5lZWQKKy8vIHRvIGFsd2F5cyBzaWduYWwgY29t
cGxldGlvbi4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90
RHJhdyA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CitwdWJsaWM6Cisg
ICAgQ0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3KCkKKyAgICAg
ICAgOiBtX251bUNvbW1pdHMoMCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJl
Z2luVGVzdCgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgLy8gT25s
eSB0aGUgaW5pdGlhbCBkcmF3IHNob3VsZCBicmluZyB1cyBoZXJlLgorICAgICAgICBFWFBFQ1Rf
RkFMU0UoaW1wbC0+cm9vdExheWVyKCktPmJvdW5kcygpLmlzRW1wdHkoKSk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpCisgICAgeworICAgICAgICBt
X251bUNvbW1pdHMrKzsKKyAgICAgICAgaWYgKG1fbnVtQ29tbWl0cyA9PSAxKSB7CisgICAgICAg
ICAgICAvLyBQdXQgYW4gZW1wdHkgcm9vdCBsYXllci4KKyAgICAgICAgICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiByb290TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CisKKyAgICAgICAg
ICAgIE93bkFycmF5UHRyPGNoYXI+IHBpeGVscyhhZG9wdEFycmF5UHRyKG5ldyBjaGFyWzRdKSk7
CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHN0YXRp
Y19jYXN0PHZvaWQqPihwaXhlbHMuZ2V0KCkpLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChtX251bUNvbW1pdHMgPT0gMikgeworICAgICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5m
aW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgaW50IG1fbnVtQ29tbWl0czsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhv
c3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcsIHJ1bk11bHRpVGhyZWFkKQoreworICAg
IHJ1blRlc3RUaHJlYWRlZCgpOworfQorCiAvLyBBIGNvbXBvc2l0ZUFuZFJlYWRiYWNrIHdoaWxl
IGludmlzaWJsZSBzaG91bGQgZm9yY2UgYSBub3JtYWwgY29tbWl0IHdpdGhvdXQgYXNzZXJ0aW9u
LgogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdENvbXBvc2l0ZUFuZFJlYWRiYWNrV2hpbGVJbnZp
c2libGUgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgewogcHVibGljOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135665</attachid>
            <date>2012-04-04 13:29:12 -0700</date>
            <delta_ts>2012-04-04 14:27:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82680-20120404132911.patch</filename>
            <type>text/plain</type>
            <size>11000</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZjM2VlZDk1NmI1ZGNh
MmJhNzIzNmU3NzIwMjIwNTNlNjY5NzM4My4uMWFiYjFkOTc5MjVkYTFiOThhYjgzNWVkYmU5ZDk3
MzAzNmU4NDYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTAyICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QWx3YXlzIHNraXAgZHJhdyBhbmQgcmVhZGJhY2sgaWYgdGhlcmUgaXMgbm90aGluZworICAgICAg
ICB0byBkcmF3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODI2ODAKKworICAgICAgICBUaGlzIGF2b2lkcyBjb3JydXB0aW9uIGZyb20gcHVzaGluZyBm
cmFtZXMgdGhhdCBoYXZlIG5vIHZhbGlkCisgICAgICAgIGNvbnRlbnQgZHJhd24gaW50byB0aGVt
LgorICAgICAgICBBbHNvIGluIGFkZGl0aW9uIHRvIGNoZWNraW5nIGZvciBub24tZXhpc3Rpbmcg
cm9vdCBsYXllcnMsIGNoZWNrCisgICAgICAgIGZvciByb290IGxheWVycyB3aXRoIG5vIGNvbnRl
bnQgYm91bmRzLiBJdCdzIHBvc3NpYmxlIHRvIHNlZSB0aG9zZQorICAgICAgICB3aXRoIGtGb3Jj
ZUNvbXBvc2l0aW5nIG1vZGUgZm9yIGVtcHR5IGRvY3VtZW50cy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBKYW1lcyBSb2JpbnNvbi4KKworICAgICAgICBBZGRlZCBDQ0xheWVyVHJlZUhvc3RUZXN0
RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKToKKwogMjAxMi0w
NC0wNCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBleHBvc2Ugc2F2ZWRVUkwsIHNldFRvb2xiYXJDb2xvcnMgYW5kIHRvZ2ds
ZVNlYXJjaGluZ0Zvck5vZGUgaW4gSW5zcGVjdG9yRnJvbnRlbmRBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggNWI4YjI2YWZjZWU5MjY0NGI3MmE5Nzc3MDkzOTlhMWNjOWNjYjgyMi4u
MWNjYWVlZjkzMWU2ODFiMzczYjhiYTNhZTk3YjE3MDdiMzlhODYxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0wNC0wMiAgRGFuaWVsIFNpZXZlcnMg
IDxzaWV2ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEFsd2F5cyBza2lw
IGRyYXcgYW5kIHJlYWRiYWNrIGlmIHRoZXJlIGlzIG5vdGhpbmcKKyAgICAgICAgdG8gZHJhdy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNjgwCisK
KyAgICAgICAgVGhpcyBhdm9pZHMgY29ycnVwdGlvbiBmcm9tIHB1c2hpbmcgZnJhbWVzIHRoYXQg
aGF2ZSBubyB2YWxpZAorICAgICAgICBjb250ZW50IGRyYXduIGludG8gdGhlbS4KKyAgICAgICAg
QWxzbyBpbiBhZGRpdGlvbiB0byBjaGVja2luZyBmb3Igbm9uLWV4aXN0aW5nIHJvb3QgbGF5ZXJz
LCBjaGVjaworICAgICAgICBmb3Igcm9vdCBsYXllcnMgd2l0aCBubyBjb250ZW50IGJvdW5kcy4g
SXQncyBwb3NzaWJsZSB0byBzZWUgdGhvc2UKKyAgICAgICAgd2l0aCBrRm9yY2VDb21wb3NpdGlu
ZyBtb2RlIGZvciBlbXB0eSBkb2N1bWVudHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMg
Um9iaW5zb24uCisKKyAgICAgICAgQWRkZWQgQ0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVu
dHNTaG91bGROb3REcmF3LgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRl
c3Q6OmRvQmVnaW5UZXN0KToKKyAgICAgICAgKFdURik6CisgICAgICAgIChDQ0xheWVyVHJlZUhv
c3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXc6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdyk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVl
SG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90RHJhdzo6YmVnaW5UZXN0KToKKyAgICAgICAg
KFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjpkcmF3
TGF5ZXJzT25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0
eUNvbnRlbnRzU2hvdWxkTm90RHJhdzo6ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKToKKyAgICAgICAg
KFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3OjphZnRl
clRlc3QpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgorCiAyMDEyLTA0LTA0ICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdGVt
cG9yYXJ5IGRpcnR5IGhhY2sgdG8gbWFrZSBXaW4gRGVidWcgd29yayBhZ2Fpbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZjJlMjBjZjAxNDEyMjIwZWQxMTZj
MDIyMTRkMDNlMWJlNDU5NTllZC4uNDUwMDJlMWE4NzUxN2M0YzM1Nzc0ZTQxMWE5M2U0YzM0ZDcw
YmM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTE0MSw3
ICsxNDEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbW1pdENvbXBsZXRlKCkKIAog
Ym9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKIHsKLSAgICBpZiAoIXJvb3RMYXll
cigpKQorICAgIGlmICghcm9vdExheWVyKCkgfHwgcm9vdExheWVyKCktPmJvdW5kcygpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3Niw5ICszNzYsNiBAQCBib29sIEND
TGF5ZXJUcmVlSG9zdEltcGw6OnByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJiBmcmFtZSkKICAgICBm
cmFtZS5yZW5kZXJQYXNzZXMuY2xlYXIoKTsKICAgICBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LmNsZWFyKCk7CiAKLSAgICBpZiAoIXJvb3RMYXllcigpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KICAgICBpZiAoIWNhbGN1bGF0ZVJlbmRlclBhc3NlcyhmcmFtZS5yZW5kZXJQYXNzZXMs
IGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBhODU5ZmVjNWMyMDNkYmQy
YjQ2YjNjZWNjZjIyMWZkNjkxY2IzZDY2Li43ZjNiYTdmYjZlMTViYmQ2Njg1ZTg1MTZiMmQ1M2Jl
YzkwNjNjZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC04OCw3
ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21taXQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShk
b3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOwotICAgIC8vIFJldHVy
bnMgZmFsc2UgaWYgcHJvYmxlbXMgb2NjdXJlZCBwcmVwYXJpbmcgdGhlIGZyYW1lLCBhbmQgd2Ug
c2hvdWxkIHRyeSB0byBhdm9pZCBkaXNwbGF5aW5nIHRoZSBmcmFtZS4KKyAgICAvLyBSZXR1cm5z
IGZhbHNlIGlmIHdlIHNob3VsZCB0cnkgdG8gYXZvaWQgZGlzcGxheWluZyB0aGUgZnJhbWUsIGJl
Y2F1c2UgaXQgaGFzIHZpc2libGUgY2hlY2tlcmJvYXJkIGR1cmluZyBhbiBhbmltYXRpb24uCiAg
ICAgdmlydHVhbCBib29sIHByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJik7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJik7CiAKQEAgLTEwMiw2ICsxMDIsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2UoKTsKIAogICAg
IC8vIEltcGxlbWVudGF0aW9uCisKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5v
IHZhbGlkIHJvb3QgbGF5ZXIgYW5kIHRodXMgbm8gY29udGVudCB0aGF0IGNhbiBiZSBkcmF3bi4K
ICAgICBib29sIGNhbkRyYXcoKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDQ1ODRmMTVmYmNhMmU1YmU0ODk5NmRh
ZDVmMDlmM2NhYzhhM2E5NzYuLjYzYzc4M2I4NGZjNGFiMGNjYjFkMGQ1ZTYyYmE3OWU0YzQyMWRh
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC01NzgsNyArNTc4LDcgQEAgQ0NT
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcEludGUKICAgICBtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC0+YW5p
bWF0ZShtb25vdG9uaWNUaW1lKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKG1v
bm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUpOwogICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZy
YW1lRGF0YSBmcmFtZTsKLSAgICBib29sIGRyYXdGcmFtZSA9IG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnByZXBhcmVUb0RyYXcoZnJhbWUpIHx8IGZvcmNlZERyYXc7CisgICAgYm9vbCBkcmF3RnJhbWUg
PSBtX2xheWVyVHJlZUhvc3RJbXBsLT5jYW5EcmF3KCkgJiYgKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnByZXBhcmVUb0RyYXcoZnJhbWUpIHx8IGZvcmNlZERyYXcpOwogICAgIGlmIChkcmF3RnJhbWUp
IHsKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAg
ICAgIHJlc3VsdC5kaWREcmF3ID0gdHJ1ZTsKQEAgLTU4Niw5ICs1ODYsOSBAQCBDQ1NjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZQogCiAgICAgLy8gQ2hlY2sgZm9yIGEgcGVuZGluZyBjb21wb3NpdGVBbmRS
ZWFkYmFjay4KICAgICBpZiAobV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQpIHsKLSAgICAg
ICAgQVNTRVJUKGRyYXdGcmFtZSk7IC8vIFRoaXMgc2hvdWxkIGJlIGEgZm9yY2VkRHJhdwotICAg
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5yZWFkYmFjayhtX3JlYWRiYWNrUmVxdWVzdE9uSW1w
bFRocmVhZC0+cGl4ZWxzLCBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+cmVjdCk7Ci0g
ICAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5zdWNjZXNzID0gIW1fbGF5ZXJU
cmVlSG9zdEltcGwtPmlzQ29udGV4dExvc3QoKTsKKyAgICAgICAgaWYgKGRyYXdGcmFtZSkKKyAg
ICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNrKG1fcmVhZGJhY2tSZXF1ZXN0
T25JbXBsVGhyZWFkLT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5yZWN0
KTsKKyAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnN1Y2Nlc3MgPSAhbV9s
YXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpICYmIGRyYXdGcmFtZTsKICAgICAgICAg
bV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPmNvbXBsZXRpb24uc2lnbmFsKCk7CiAgICAg
ICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkID0gMDsKICAgICB9CkBAIC01OTgsNyAr
NTk4LDYgQEAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBDQ1RocmVhZFByb3h5
OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGUKIAogICAgIC8vIFByb2Nlc3MgYW55IGZp
bmlzaCByZXF1ZXN0CiAgICAgaWYgKG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50
T25JbXBsVGhyZWFkKSB7Ci0gICAgICAgIEFTU0VSVChkcmF3RnJhbWUpOyAvLyBUaGlzIHNob3Vs
ZCBiZSBhIGZvcmNlZERyYXcKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZmluaXNoQWxs
UmVuZGVyaW5nKCk7CiAgICAgICAgIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50
T25JbXBsVGhyZWFkLT5zaWduYWwoKTsKICAgICAgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21w
bGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSAwOwpAQCAtNjEwLDcgKzYwOSw2IEBAIENDU2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXBJbnRlCiAgICAgICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVh
dGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmRpZENvbW1pdEFuZERyYXdGcmFt
ZSkpOwogICAgIH0KIAotICAgIEFTU0VSVChkcmF3RnJhbWUgfHwgKCFkcmF3RnJhbWUgJiYgIWZv
cmNlZERyYXcpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4
IDcwMDljOGMzZTkzY2E2Y2MwMmQ0NTUyNTdlZjEzMDljZWRmZjY1YmUuLmVhM2VlMGMwNDU4ZWVh
ZGZiMTJiYzlkOGIzYzU4MjE0YzcyNTI0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0yNDgsNiAr
MjQ4LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBub25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbldpdGhPZmZzZXQpCiAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoY3JlYXRlQ29udGV4dCgpKTsKIAogICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgcm9vdC0+c2V0Qm91bmRzKEludFNpemUoMSwgMSkp
OwogICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CiAgICAgcm9vdC0+c2V0U2Nyb2xsUG9z
aXRpb24oSW50UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKElu
dFNpemUoMTAwLCAxMDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGI2YjBjNjA2MmZlYTlmYTEyOTE0ZTVhMjBl
MTVjYTZkNTdkNjIxODUuLmE3ODBhMjJlM2Q3Mzg5MTFmMDI4OGFjMzIyYjQ3NTQwMDJlMjliZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcApAQCAtNTMyLDYgKzUzMiwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdFRlc3Q6
OmRvQmVnaW5UZXN0KCkKICAgICBtX2NsaWVudCA9IE1vY2tMYXllclRyZWVIb3N0Q2xpZW50Ojpj
cmVhdGUodGhpcyk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisKKyAgICAvLyBPbmx5IG5vbi1lbXB0eSByb290IGxheWVy
cyB3aWxsIGNhdXNlIGRyYXdpbmcgdG8gaGFwcGVuLgorICAgIHJvb3RMYXllci0+c2V0Qm91bmRz
KEludFNpemUoMSwgMSkpOworCiAgICAgbV9sYXllclRyZWVIb3N0ID0gTW9ja0xheWVyVHJlZUhv
c3Q6OmNyZWF0ZSh0aGlzLCBtX2NsaWVudC5nZXQoKSwgcm9vdExheWVyLCBtX3NldHRpbmdzKTsK
ICAgICBBU1NFUlRfVFJVRShtX2xheWVyVHJlZUhvc3QpOwogICAgIHJvb3RMYXllci0+c2V0TGF5
ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwpAQCAtODIxLDYgKzgyNSw1NiBAQCBU
RVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRzUmVkcmF3LCBydW5NdWx0aVRocmVhZCkK
ICAgICBydW5UZXN0VGhyZWFkZWQoKTsKIH0KIAorLy8gSWYgdGhlIHJvb3QgbGF5ZXIgaGFzIG5v
IGNvbnRlbnQgYm91bmRzLCB3ZSBzaG91bGQgc2VlIGEgY29tbWl0LCBidXQgc2hvdWxkIG5vdCBi
ZQorLy8gcHVzaGluZyBhbnkgZnJhbWVzIGFzIHRoZSBjb250ZW50cyB3aWxsIGJlIHVuZGVmaW5l
ZC4gUmVnYXJkbGVzcywgZm9yY2VkIGRyYXdzIG5lZWQKKy8vIHRvIGFsd2F5cyBzaWduYWwgY29t
cGxldGlvbi4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RFbXB0eUNvbnRlbnRzU2hvdWxkTm90
RHJhdyA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CitwdWJsaWM6Cisg
ICAgQ0NMYXllclRyZWVIb3N0VGVzdEVtcHR5Q29udGVudHNTaG91bGROb3REcmF3KCkKKyAgICAg
ICAgOiBtX251bUNvbW1pdHMoMCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJl
Z2luVGVzdCgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgLy8gT25s
eSB0aGUgaW5pdGlhbCBkcmF3IHNob3VsZCBicmluZyB1cyBoZXJlLgorICAgICAgICBFWFBFQ1Rf
RkFMU0UoaW1wbC0+cm9vdExheWVyKCktPmJvdW5kcygpLmlzRW1wdHkoKSk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpCisgICAgeworICAgICAgICBt
X251bUNvbW1pdHMrKzsKKyAgICAgICAgaWYgKG1fbnVtQ29tbWl0cyA9PSAxKSB7CisgICAgICAg
ICAgICAvLyBQdXQgYW4gZW1wdHkgcm9vdCBsYXllci4KKyAgICAgICAgICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiByb290TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CisKKyAgICAgICAg
ICAgIE93bkFycmF5UHRyPGNoYXI+IHBpeGVscyhhZG9wdEFycmF5UHRyKG5ldyBjaGFyWzRdKSk7
CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHN0YXRp
Y19jYXN0PHZvaWQqPihwaXhlbHMuZ2V0KCkpLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChtX251bUNvbW1pdHMgPT0gMikgeworICAgICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5m
aW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgaW50IG1fbnVtQ29tbWl0czsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhv
c3RUZXN0RW1wdHlDb250ZW50c1Nob3VsZE5vdERyYXcsIHJ1bk11bHRpVGhyZWFkKQoreworICAg
IHJ1blRlc3RUaHJlYWRlZCgpOworfQorCiAvLyBBIGNvbXBvc2l0ZUFuZFJlYWRiYWNrIHdoaWxl
IGludmlzaWJsZSBzaG91bGQgZm9yY2UgYSBub3JtYWwgY29tbWl0IHdpdGhvdXQgYXNzZXJ0aW9u
LgogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdENvbXBvc2l0ZUFuZFJlYWRiYWNrV2hpbGVJbnZp
c2libGUgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgewogcHVibGljOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>