<?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>5909</bug_id>
          
          <creation_ts>2005-12-01 13:04:44 -0800</creation_ts>
          <short_desc>overlapping element leaves trail when scrolling iframe (affects Google Docs)</short_desc>
          <delta_ts>2010-03-04 22:54:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>GoogleBug, HasReduction, YahooBug</keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>alice.barraclough</cc>
    
    <cc>bdakin</cc>
    
    <cc>brkemper</cc>
    
    <cc>bugzilla</cc>
    
    <cc>christianjunker</cc>
    
    <cc>darin</cc>
    
    <cc>dev+webkit</cc>
    
    <cc>emacemac7</cc>
    
    <cc>gavin.sharp</cc>
    
    <cc>hyatt</cc>
    
    <cc>ian</cc>
    
    <cc>ifette</cc>
    
    <cc>jdarren</cc>
    
    <cc>miles_b</cc>
    
    <cc>ovafai</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>25344</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2005-12-01 13:04:44 -0800</bug_when>
    <thetext>Summary: A positioned element in a layer above an iframe that has non-transparent background leaves 
trails behind when the iframe is scrolled. This happens with the &quot;sender name&quot; tags at the bottom-right 
corner of Gmail message views.

To reproduce: open the testcase and scroll down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25345</commentid>
    <comment_count>1</comment_count>
      <attachid>4896</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-01 13:05:32 -0800</bug_when>
    <thetext>Created attachment 4896
testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26804</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-27 14:07:51 -0800</bug_when>
    <thetext>It most certainly still does.  Ouch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26807</commentid>
    <comment_count>3</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-12-27 14:12:59 -0800</bug_when>
    <thetext>Making this one critical since it affects gmail...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28080</commentid>
    <comment_count>4</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2006-01-09 17:21:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/3954238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28260</commentid>
    <comment_count>5</comment_count>
      <attachid>5610</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-01-11 14:34:57 -0800</bug_when>
    <thetext>Created attachment 5610
testcase2

Mitz&apos;s testcase is more true to the GMail setup, but this one reproduces the
problem more readily.

Just to be clear: the iframe&apos;s background color is essential to reproducing the
bug; the div&apos;s background color is not -- it&apos;s just there to make the bug more
apparent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29516</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-22 20:30:22 -0800</bug_when>
    <thetext>This is easy to fix. It&apos;s caused by the setting of copiesOnScroll, which is set by calling QScrollView::setStaticBackground. I believe that the sense of the setStaticBackground boolean is backwards, by the way, because when it&apos;s true we do the slow scrolling and when it&apos;s false we do the fast scrolling. But the calling code in FrameView also looks backwards so it cancels out -- the useSlowRepaints field has a logical name.

Anyway, FrameView::clear and FrameView::layout both call setStaticBackground and ask for fast scrolling in some cases. But they can&apos;t do that if this frame overlaps any other element in front of it.

Since there&apos;s no fast way to find out if a frame has anything in front of it, we&apos;re in a bit of a quandry. We can change all the callers to never set the fast scrolling mode for a view for a subframe, but that will make scrolling slower for frames on frameset pages.

I think that&apos;s probably the best fix.

It&apos;s as simple as changing this:

    setStaticBackground(d-&gt;useSlowRepaints);

to this:

    setStaticBackground(d-&gt;useSlowRepaints &amp;&amp; !m_frame-&gt;parentFrame());

Although I also think we should reverse the sense of setStaticBackground, and possible change its name to setUseSlowRepaints for clarity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29582</commentid>
    <comment_count>7</comment_count>
      <attachid>5875</attachid>
    <who name="">mitz</who>
    <bug_when>2006-01-23 07:52:07 -0800</bug_when>
    <thetext>Created attachment 5875
Prevent fast scrolling for subframes

Essentially what Darin suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29588</commentid>
    <comment_count>8</comment_count>
      <attachid>5875</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-23 08:47:49 -0800</bug_when>
    <thetext>Comment on attachment 5875
Prevent fast scrolling for subframes

Looks great. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29599</commentid>
    <comment_count>9</comment_count>
      <attachid>5875</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-23 11:37:29 -0800</bug_when>
    <thetext>Comment on attachment 5875
Prevent fast scrolling for subframes

Dave said that this will slow things down too much for too many real pages. He doesn&apos;t have another short-term suggestion for fixing the bug, but he says this change is unacceptable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29602</commentid>
    <comment_count>10</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-01-23 11:42:00 -0800</bug_when>
    <thetext>I don&apos;t think we can do this for frameset frames.  The performance regression would be way too large.  A better idea might be to do this only if you&apos;re an iframe.  Even then, this isn&apos;t really the correct long-term fix, since we really want an efficient way to know if something is obscured.

I think we should bite the bullet and fix this the right way.  We&apos;ve need this &quot;Is something in front of me?&quot; function for some time now.  Such a function would be a sibling of paint and hitTest in the layer code.  It could walk the layers to find this information out (and then a further optimization would be to potentially cache such information for individual layers).

Fully occluded layers could even be culled out of painting and hit testing entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29603</commentid>
    <comment_count>11</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-01-23 11:43:28 -0800</bug_when>
    <thetext>I would + a patch that did this only for iframes as long as we file a follow-up bug.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31066</commentid>
    <comment_count>12</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-02-02 03:36:24 -0800</bug_when>
    <thetext>*** Bug 4378 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49577</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-07-12 21:58:17 -0700</bug_when>
    <thetext>GMail is Google.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49613</commentid>
    <comment_count>14</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-07-12 22:32:28 -0700</bug_when>
    <thetext>I think at some point Google disabled those indicators in Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52886</commentid>
    <comment_count>15</comment_count>
    <who name="Miles Bainbridge">miles_b</who>
    <bug_when>2006-10-15 21:21:14 -0700</bug_when>
    <thetext>I read this bug last night and then had a thought this morning on it, in terms of an &quot;is something in front of me&quot; mechanism - a struct for each WebKit view that records a unique ID (numbered front-to-back) for each layer that is drawn in that view, and also records the dimensions and position of each layer.  This would allow for changing the position of a layer anywhere within the view, while maintaining separate information for each view.  Then, when layers are being dragged or scrolled, they would be able to check their layer ID in the struct to find out if there are any layers in front or behind, and then check the coordinates to see if there is overlap.  Of course, the re-drawing routine would have to be adjusted accordingly, but this may be better than re-doing the individual layers in OpenGL.

Hopefully that makes sense.  I know my programming skills aren&apos;t on par with you guys who will actually be fixing this. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52503</commentid>
    <comment_count>16</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-10-15 21:41:50 -0700</bug_when>
    <thetext>We already have a sorted layer stack and yes, this could be used to determine if something overlaps and handle a lot of common cases.

However, there are a lot of ways to overlap an iframe that don&apos;t involve easily identifiable elements: text-shadow, negative margins, negative text-indent, floats, etc.  These cases aren&apos;t as important though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26759</commentid>
    <comment_count>17</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2007-02-06 07:25:32 -0800</bug_when>
    <thetext>I&apos;ll take a look</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26579</commentid>
    <comment_count>18</comment_count>
      <attachid>12985</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2007-02-06 15:11:00 -0800</bug_when>
    <thetext>Created attachment 12985
check layer hierarchy for overlap

Crawl the layer hierarchy for potential frame overlaps, use slow repaints if something is found. It should handle common cases well and does not activate slow repaints unnecessarily.

Check is done from frame paint() which is not too nice. Don&apos;t know where else to put it, layer positioning is sort-of paint time thing. Caching could speed it up in expense of added compexity. Not sure if it is really worthwhile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26598</commentid>
    <comment_count>19</comment_count>
      <attachid>12985</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-02-06 16:59:02 -0800</bug_when>
    <thetext>Comment on attachment 12985
check layer hierarchy for overlap

I should start off by saying that I don&apos;t understand why this bug is a P1, since it&apos;s not a regression.

(1) The change to isStackingContext is not needed.  We already force the z-index of the root element to be 0 (and don&apos;t allow it to be auto).  This means it will always be a stacking context anyway.

(2) I&apos;d prefer isRectangleOverlapped to rectangleIsOverlapped.

(3) if (l &amp;&amp; l-&gt;rectangleIsOverlapped(IntRect(x, y, width(), height())))

You want contentWidth() and contentHeight() here.  The relevant box is the one that excludes border and padding.  Your x and y values are correct.

(4) I like the idea behind this, but I think this is too inefficient.  For pages with lots of layers and iframes, this will slow down painting.

(5) This approach will potentially put frames in the &quot;penalty box&quot; forever if a layer ever overlaps them.  A good example of this would be DHTML menus that come up on  top of an iframe.  If you open the menus and then close them, the iframe will now scroll slowly all the time just because a DHTML menu was opened on top of it at some point in the past.

My recommendation would be to defer this bug for now, since it really is a pretty high-risk feature to be implementing now.

Ultimately I think you need to know how to turn fast repaints back on (we manage to do this in the fixed positioned case as fixed positioned elements come and go, so you could look to that code as an example), and be smarter about caching knowledge of the overlap in the widget itself, only recomputing overlap when layers actually change positions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26603</commentid>
    <comment_count>20</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2007-02-06 17:50:16 -0800</bug_when>
    <thetext>True, inability to turn fast mode back is actually a big problem. I&apos;ll leave this for now and fix later.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26604</commentid>
    <comment_count>21</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-02-06 18:06:40 -0800</bug_when>
    <thetext>I think the approach of checking the layers is a good one though.  Just need to cache the result and know how to get back into fast mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25563</commentid>
    <comment_count>22</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-06 23:38:11 -0800</bug_when>
    <thetext>If this no loger affects GMail, it doesn&apos;t need to be P1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87</commentid>
    <comment_count>23</comment_count>
    <who name="Brad">brkemper</who>
    <bug_when>2007-09-23 14:16:51 -0700</bug_when>
    <thetext>I have an additional test case for this bug (I believe it is the same bug) for a project I was working on to convert a frameset with nested framesets into a page with a iframedframeset. One of the reasons I wanted to do this was to have positioned elements that overlap the content frame (now the IFRAME). I works in other browsers, and it works in Webkit when single pages are in the IFRAME, but it does not work correctly when a frameset is in the IFRAME in Safari/Webkit. Scolling the embedded frame also scrolls the positioned element, except where it overlaps the scrollbar. It&apos;s as though the positioned element was inside the embedded frame, instead of in front of all of it, except that scrolling back does not reveal it again.

Can I get rid of this by changing the background color of the iframe itself?

here is where you can see it yourself:

http://www.providentcu.org/goodiframesizing2.asp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85</commentid>
    <comment_count>24</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-09-23 14:47:51 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Can I get rid of this by changing the background color of the iframe itself?

No, I am afraid that to work around the bug you must change the document that is inside the &lt;frame&gt;, not the enclosing iframe. Changing the inner document&apos;s background color to transparent or adding a &lt;div style=&quot;position:fixed&quot;&gt;&lt;/div&gt; to it should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56985</commentid>
    <comment_count>25</comment_count>
    <who name="Brad">brkemper</who>
    <bug_when>2007-09-25 07:23:33 -0700</bug_when>
    <thetext>The document inside the iframe is a frameset. It only frames other other documents, so it cannot have any positioning or color of its own.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56988</commentid>
    <comment_count>26</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-09-25 07:29:23 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; The document inside the iframe is a frameset. It only frames other other
&gt; documents, so it cannot have any positioning or color of its own.

I mean each one of those other documents (or those of them that might scroll, at least).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56990</commentid>
    <comment_count>27</comment_count>
    <who name="Brad">brkemper</who>
    <bug_when>2007-09-25 07:33:41 -0700</bug_when>
    <thetext>Its pretty sad that of all the browsers I&apos;ve tested, only Safari &amp; Webkit have this problem. Even IE 6-7 don&apos;t have this problem, and they scroll perfectly well, and quickly too. IE, the crippled idiot of CSS can do something that Webkit can&apos;t! It is a sad day, indeed. And we&apos;ve known about it since 2005?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56991</commentid>
    <comment_count>28</comment_count>
    <who name="Brad">brkemper</who>
    <bug_when>2007-09-25 07:36:24 -0700</bug_when>
    <thetext>&gt;I mean each one of those other documents (or those of them that might 
&gt;scroll, at least).

Thanks, but that is just not a practical workaround, as the scrolling frame is for every single page of the site (several hundred) to appear in, and even a few pages from other sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56992</commentid>
    <comment_count>29</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-09-25 07:43:15 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; &gt;I mean each one of those other documents (or those of them that might 
&gt; &gt;scroll, at least).
&gt; 
&gt; Thanks, but that is just not a practical workaround, as the scrolling frame is
&gt; for every single page of the site (several hundred) to appear in, and even a
&gt; few pages from other sites.

You can use JavaScript to make the changes dynamically (in fact, that is what I did to test the workaround before I suggested it), but I can see why this may not be desirable or even practical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57081</commentid>
    <comment_count>30</comment_count>
    <who name="Brad">brkemper</who>
    <bug_when>2007-09-26 08:46:01 -0700</bug_when>
    <thetext>&gt;You can use JavaScript to make the changes dynamically (in fact, that is what I
did to test the workaround before I suggested it), but I can see why this may
not be desirable or even practical.

That doesn&apos;t help when the content is coming from another site (no cross-domain JS). We have several business partners that provide pages or Web applications to us as a service, where we have very limited control over how the documents are set up.

Its surprising that developers for Apple/Safari/Webkit don&apos;t consider themselves as good as IE developers in being able to fix this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57757</commentid>
    <comment_count>31</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-10-03 13:32:51 -0700</bug_when>
    <thetext>&quot;Its surprising that developers for Apple/Safari/Webkit don&apos;t consider
themselves as good as IE developers in being able to fix this problem.&quot;

Yeah, we&apos;re just terrible.  Let&apos;s call in the IE developers to fix this.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63195</commentid>
    <comment_count>32</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-12-03 17:11:55 -0800</bug_when>
    <thetext>*** Bug 16282 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63217</commentid>
    <comment_count>33</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-12-04 01:46:22 -0800</bug_when>
    <thetext>Adding YahooBug keyword for Bug 16282.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83945</commentid>
    <comment_count>34</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-06-19 18:18:01 -0700</bug_when>
    <thetext>Original Radar has been closed.  Changing keywords appropriately.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108797</commentid>
    <comment_count>35</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-02-06 20:04:35 -0800</bug_when>
    <thetext>Reproducible in latest nightly still.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110150</commentid>
    <comment_count>36</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-18 18:02:43 -0800</bug_when>
    <thetext>This still affects http://docs.google.com/ when multiple people are viewing a doc, the &quot;also editing: foobar, foobaz&quot; blue dialog in the lower right hand corner leaves turds when scrolling.  docs add some CSS to work around the problem, but the CSS isn&apos;t working as far as I can tell.   This is tracked by the internal google bug 1157906.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110151</commentid>
    <comment_count>37</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-18 18:05:41 -0800</bug_when>
    <thetext>Assuming this is the right bug (the scrolling bug which affects docs.google.com) then this was supposedly fixed by this change to Docs:

/* Prevent repaint errors when scrolling in Safari. This &quot;Star-7&quot; css hack
  82      targets Safari 3.1, but not WebKit nightlies and presumably Safari 4.
  83      That&apos;s OK because this bug is fixed in WebKit nightlies/Safari 4 :-). */
  84   html*#wys_frame::before {
  85     content: &apos;\A0&apos;;
  86     position: fixed;
  87     overflow: hidden;
  88     width: 0;
  89     height: 0;
  90     top: 0;
  91     left: 0;
  92   }

As I said above though, I don&apos;t see this fix as working, at least not in tip of tree WebKit with a pre-release copy of Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118717</commentid>
    <comment_count>38</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-04-24 13:33:17 -0700</bug_when>
    <thetext>*** Bug 25054 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118727</commentid>
    <comment_count>39</comment_count>
      <attachid>29762</attachid>
    <who name="">mitz</who>
    <bug_when>2009-04-24 13:50:48 -0700</bug_when>
    <thetext>Created attachment 29762
Test for overlapping layers during painting and enable/disable blitting accordingly

This patch lets a widgets (or in fact, any object, so in the future perhaps also overflow areas and media elements) make overlap-testing requests a paint time. The result is delivered by the end of the paint operation. There is no separate walk of the layer tree, so the results are guaranteed to reflect what was actually painted.

Transforms and reflections are not handled, but that is not a regression of course.

In the future, the interface can change so that setOverlapTestResult() takes two rects: the rect from the request and the overlapping layer&apos;s rect. This will allow the requester to cache its overlapped region and update it. Frames could use this to enable partial blitting, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118752</commentid>
    <comment_count>40</comment_count>
      <attachid>29762</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-04-24 15:08:22 -0700</bug_when>
    <thetext>Comment on attachment 29762
Test for overlapping layers during painting and enable/disable blitting accordingly

This is great!  It looks very low risk to me as well, so I think it will be safe to take this patch now.  I have some minor comments, but you can just fix them and land with the changes:

&gt;  
&gt; +    if (overlapTestRequests) {
&gt; +         Vector&lt;OverlapTestRequester*&gt; overlappedRequesters;

Fix indentation ^^^^^^

&gt; +        RenderObject::OverlapTestRequestMap::iterator end = overlapTestRequests-&gt;end();
&gt; +        for (RenderObject::OverlapTestRequestMap::iterator it = overlapTestRequests-&gt;begin(); it != end; ++it) {
&gt; +            if (!layerBounds.intersects(it-&gt;second))
&gt; +                continue;
&gt; +
&gt; +            it-&gt;first-&gt;setOverlapTestResult(true);
&gt; +            overlappedRequesters.append(it-&gt;first);
&gt; +        }
&gt; +        for (size_t i = 0; i &lt; overlappedRequesters.size(); ++i)
&gt; +            overlapTestRequests-&gt;remove(overlappedRequesters[i]);
&gt; +    }
&gt; +

The above code should be moved into a separate helper function.


&gt; Index: WebCore/rendering/RenderWidget.cpp
&gt; ===================================================================
&gt; --- WebCore/rendering/RenderWidget.cpp	(revision 42834)
&gt; +++ WebCore/rendering/RenderWidget.cpp	(working copy)
&gt; @@ -211,6 +211,11 @@ void RenderWidget::paint(PaintInfo&amp; pain
&gt;          // Tell the widget to paint now.  This is the only time the widget is allowed
&gt;          // to paint itself.  That way it will composite properly with z-indexed layers.
&gt;          m_widget-&gt;paint(paintInfo.context, paintInfo.rect);
&gt; +
&gt; +        if (m_widget-&gt;isFrameView() &amp;&amp; paintInfo.overlapTestRequests) {
&gt; +            ASSERT(!paintInfo.overlapTestRequests-&gt;contains(this));
&gt; +            paintInfo.overlapTestRequests-&gt;set(this, m_widget-&gt;frameRect());
&gt; +        }
&gt;

Slow repaints are frequently already turned on for iframes (since they commonly have pages that don&apos;t specify a background in them).  You should avoid issuing an overlapTestRequest in this case if slow repaints (excluding overlap) are enabled already.

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118765</commentid>
    <comment_count>41</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-04-24 16:08:19 -0700</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/projects/webkit/changeset/42849&gt; and &lt;http://trac.webkit.org/projects/webkit/changeset/42850&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196366</commentid>
    <comment_count>42</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-04 22:54:45 -0800</bug_when>
    <thetext>*** Bug 18838 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4896</attachid>
            <date>2005-12-01 13:05:32 -0800</date>
            <delta_ts>2005-12-01 13:05:32 -0800</delta_ts>
            <desc>testcase</desc>
            <filename>gmailTrails.html</filename>
            <type>text/html</type>
            <size>308</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PGJvZHk+CjxpZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbCwlM0Nib2R5JTIwc3R5bGUlM0QlMjJo
ZWlnaHQlM0ElMjAyMDAwcHglM0IlMjBiYWNrZ3JvdW5kJTNBJTIwbGlnaHRncmF5JTNCJTIyJTNF
JTBBYmFyJTBBJTNDJTJGYm9keSUzRSIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7
IHBvc2l0aW9uOiBhYnNvbHV0ZTsiPjwvaWZyYW1lPgo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJz
b2x1dGU7IHotaW5kZXg6IDE7IGJhY2tncm91bmQ6IGdyZWVuOyBib3R0b206IDA7IHJpZ2h0OiAx
NnB4OyI+Zm9vPC9kaXY+CjwvYm9keT4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>5610</attachid>
            <date>2006-01-11 14:34:57 -0800</date>
            <delta_ts>2006-01-11 14:35:13 -0800</delta_ts>
            <desc>testcase2</desc>
            <filename>gmailTrails2.html</filename>
            <type>text/html</type>
            <size>316</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">PGJvZHk+CjxpZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbCwlM0Nib2R5JTIwc3R5bGUlM0QlMjJo
ZWlnaHQlM0ElMjAyMDAwcHglM0IlMjBiYWNrZ3JvdW5kJTNBJTIwbGlnaHRncmF5JTNCJTIyJTNF
JTBBYmFyJTBBJTNDJTJGYm9keSUzRSIgc3R5bGU9ImhlaWdodDogMTAwJTsgcmlnaHQ6IDA7IGJv
dHRvbTogMDsgcG9zaXRpb246IGFic29sdXRlOyI+PC9pZnJhbWU+CjxkaXYgc3R5bGU9InBvc2l0
aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogMTsgYmFja2dyb3VuZDogZ3JlZW47IGJvdHRvbTogMDsg
cmlnaHQ6IDE2cHg7Ij5mb288L2Rpdj4KPC9ib2R5Pg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5875</attachid>
            <date>2006-01-23 07:52:07 -0800</date>
            <delta_ts>2006-01-23 11:37:29 -0800</delta_ts>
            <desc>Prevent fast scrolling for subframes</desc>
            <filename>5909_r1.patch</filename>
            <type>text/plain</type>
            <size>4391</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMjMxMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDYtMDEtIyMgIE1pdHogUGV0dGVsICA8b3BlbmRhcndpbi5vcmdA
bWl0enBldHRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBrd3EvS1dRU2Nyb2xsVmlldy5oOgorICAgICAgICAqIGt3cS9LV1FTY3JvbGxW
aWV3Lm1tOgorICAgICAgICAoUVNjcm9sbFZpZXc6OnNldFVzZVNsb3dSZXBhaW50cyk6IFJlbmFt
ZWQgc2V0U3RhdGljQmFja2dyb3VuZCB0byB0aGlzIHRvIHJlZmxlY3QKKyAgICAgICAgaG93IGl0
IGludGVycHJldGVkIGl0cyBhcmd1bWVudC4KKyAgICAgICAgKiBtYW51YWwtdGVzdHMvYnVnemls
bGEtNTkwOS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChGcmFtZVZpZXc6OmNsZWFyKToKKyAgICAgICAgKEZyYW1lVmlldzo6bGF5b3V0KTogRm9y
Y2Ugc2xvdyByZXBhaW50cyBpZiB0aGUgdmlldyBiZWxvbmdzIHRvIGEgc3ViZnJhbWUsIHNpbmNl
CisgICAgICAgIG90aGVyIGVsZW1lbnRzIGluIGZyb250IG9mIHRoZSBmcmFtZS4KKyAgICAgICAg
KEZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzKToKKwogMjAwNi0wMS0yMyAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAbWFjLmNvbT4KIAogICAgICAgICBGb3Jnb3QgdG8gYWRkIHRoaXMgYXMg
cGFydCBvZiAKSW5kZXg6IFdlYkNvcmUva3dxL0tXUVNjcm9sbFZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rd3EvS1dRU2Nyb2xsVmlldy5tbQkocmV2aXNpb24gMTIzMTEpCisrKyBXZWJD
b3JlL2t3cS9LV1FTY3JvbGxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00ODAsMTIgKzQ4MCwx
MiBAQAogICAgIHkgPSAwOwogfQogCi12b2lkIFFTY3JvbGxWaWV3OjpzZXRTdGF0aWNCYWNrZ3Jv
dW5kKGJvb2wgYikKK3ZvaWQgUVNjcm9sbFZpZXc6OnNldFVzZVNsb3dSZXBhaW50cyhib29sIGIp
CiB7CiAgICAgTlNTY3JvbGxWaWV3ICp2aWV3ID0gKE5TU2Nyb2xsVmlldyAqKWdldFZpZXcoKTsK
ICAgICBLV1FfQkxPQ0tfRVhDRVBUSU9OUzsKICAgICBpZiAoW3ZpZXcgX0tXUV9pc1Njcm9sbFZp
ZXddKQogICAgICAgICBbW3ZpZXcgY29udGVudFZpZXddIHNldENvcGllc09uU2Nyb2xsOiAhYl07
CiAgICAgS1dRX1VOQkxPQ0tfRVhDRVBUSU9OUzsKIH0KIApJbmRleDogV2ViQ29yZS9rd3EvS1dR
U2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3dxL0tXUVNjcm9sbFZpZXcuaAko
cmV2aXNpb24gMTIzMTEpCisrKyBXZWJDb3JlL2t3cS9LV1FTY3JvbGxWaWV3LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg0LDcgKzg0LDcgQEAKICAgICB2b2lkIGNvbnRlbnRzVG9WaWV3cG9ydChpbnQg
eCwgaW50IHksIGludCYgdngsIGludCYgdnkpOwogICAgIHZvaWQgdmlld3BvcnRUb0NvbnRlbnRz
KGludCB2eCwgaW50IHZ5LCBpbnQmIHgsIGludCYgeSk7CiAKLSAgICB2b2lkIHNldFN0YXRpY0Jh
Y2tncm91bmQoYm9vbCk7CisgICAgdm9pZCBzZXRVc2VTbG93UmVwYWludHMoYm9vbCk7CiAgICAg
ICAgIAogICAgIE5TVmlldyAqZ2V0RG9jdW1lbnRWaWV3KCkgY29uc3Q7CiAKSW5kZXg6IFdlYkNv
cmUvbWFudWFsLXRlc3RzL2J1Z3ppbGxhLTU5MDkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L21hbnVhbC10ZXN0cy9idWd6aWxsYS01OTA5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L21hbnVhbC10ZXN0cy9idWd6aWxsYS01OTA5Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIK
KyAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPgorPGh0bWwg
bGFuZz0iZW4iPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPjxiPkJVRyBJRDo8L2I+IDxh
IGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkw
OSI+QnVnemlsbGEgYnVnIDU5MDk8L2E+IChHbWFpbCkgQWJzb2x1dGVseSBwb3NpdGlvbmVkIGVs
ZW1lbnQgb3ZlciBpZnJhbWUgaW5jb3JyZWN0bHkgc2Nyb2xscyBhbG9uZyB3aXRoIGlmcmFtZSwg
YW5kIGxlYXZlcyB0cmFpbCB3aGVuIHNjcm9sbGluZzwvcD4KKworPHAgaWQ9InRlc3QiIHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOnNreWJsdWU7IHBhZGRpbmc6M3B4OyI+PGI+U1RFUFMgVE8gVEVT
VDo8L2I+IAorRHJhZyB0aGUgZ3JheSByZWN0J3MgdmVydGljYWwgc2Nyb2xsIHRodW1iIGRvd24g
c2xvd2x5LgorPC9wPgorCis8cCBpZD0ic3VjY2VzcyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
cGFsZWdyZWVuOyBwYWRkaW5nOjNweDsiPjxiPlRFU1QgUEFTUzo8L2I+IAorVGhlIGdyZWVuIHJl
Y3Qgd2l0aCAmbGRxdW87Zm9vJnJkcXVvOyB3aWxsIHN0YXkgZml4ZWQgYW5kIHdpbGwgbm90IHNj
cm9sbCBvciBsZWF2ZSB0cmFpbHMuCis8L3A+CisKKzxwIGlkPSJmYWlsdXJlIiBzdHlsZT0iYmFj
a2dyb3VuZC1jb2xvcjojRkYzMzAwOyBwYWRkaW5nOjNweDsiPjxiPlRFU1QgRkFJTDo8L2I+ICAK
K1RoZSBncmVlbiByZWN0IHdpdGggJmxkcXVvO2ZvbyZyZHF1bzsgd2lsbCBzaG93IGEgdHJhaWwg
c2Nyb2xsaW5nIHVwLgorPC9wPgorCis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyBwb3NpdGlv
bjogcmVsYXRpdmU7Ij4KKzxpZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbCwlM0Nib2R5JTIwc3R5
bGUlM0QlMjJoZWlnaHQlM0ElMjAxMDAwcHglM0IlMjBiYWNrZ3JvdW5kJTNBJTIwbGlnaHRncmF5
JTNCJTIyJTNFJTBBYmFyJTBBJTNDJTJGYm9keSUzRSIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWln
aHQ6IDMwMHB4OyByaWdodDogMDsgYm90dG9tOiAwOyBwb3NpdGlvbjogYWJzb2x1dGU7Ij48L2lm
cmFtZT4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogMTsgYmFja2dy
b3VuZDogZ3JlZW47IGJvdHRvbTogMDsgcmlnaHQ6IDE2cHg7Ij5mb288L2Rpdj4KKzwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDEyMzExKQorKysg
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw3ICsyMzEs
NyBAQAogewogLy8gICAgdmlld3BvcnQoKS0+ZXJhc2UoKTsKIAotICAgIHNldFN0YXRpY0JhY2tn
cm91bmQoZmFsc2UpOworICAgIHNldFVzZVNsb3dSZXBhaW50cyhmYWxzZSk7CiAgICAgCiAgICAg
Ly8gRklYTUU6IDY0OTggU2hvdWxkIGp1c3QgYmUgYWJsZSB0byBjYWxsIG1fZnJhbWUtPnNlbGVj
dGlvbigpLmNsZWFyKCkKICAgICBtX2ZyYW1lLT5zZXRTZWxlY3Rpb24oU2VsZWN0aW9uQ29udHJv
bGxlcigpKTsKQEAgLTQ4OSw3ICs0ODksOCBAQAogICAgICAgICBzY2hlZHVsZVJlbGF5b3V0KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2V0U3RhdGljQmFja2dyb3VuZChkLT51c2VT
bG93UmVwYWludHMpOworICAgIC8vIEZJWE1FOiBGb3JjZSBzbG93IHJlcGFpbnRzIGZvciBhIHN1
YmZyYW1lIG9ubHkgaWYgdGhlcmUncyBzb21ldGhpbmcgaW4gZnJvbnQgb2YgaXQuCisgICAgc2V0
VXNlU2xvd1JlcGFpbnRzKGQtPnVzZVNsb3dSZXBhaW50cyB8fCBtX2ZyYW1lLT5wYXJlbnRGcmFt
ZSgpKTsKIAogICAgIGlmIChkaWRGaXJzdExheW91dCkgewogICAgICAgICBtX2ZyYW1lLT5kaWRG
aXJzdExheW91dCgpOwpAQCAtOTkzLDcgKzk5NCw3IEBACiB2b2lkIEZyYW1lVmlldzo6dXNlU2xv
d1JlcGFpbnRzKCkKIHsKICAgICBkLT51c2VTbG93UmVwYWludHMgPSB0cnVlOwotICAgIHNldFN0
YXRpY0JhY2tncm91bmQodHJ1ZSk7CisgICAgc2V0VXNlU2xvd1JlcGFpbnRzKHRydWUpOwogfQog
CiB2b2lkIEZyYW1lVmlldzo6c2V0U2Nyb2xsQmFyc01vZGUgKCBTY3JvbGxCYXJNb2RlIG1vZGUg
KQo=
</data>
<flag name="review"
          id="1369"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12985</attachid>
            <date>2007-02-06 15:11:00 -0800</date>
            <delta_ts>2007-02-06 16:59:02 -0800</delta_ts>
            <desc>check layer hierarchy for overlap</desc>
            <filename>frame_overlap.patch</filename>
            <type>text/plain</type>
            <size>6352</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDE5NDI2KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsOCAr
NDE0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCiBSZW5kZXJM
YXllciAqUmVuZGVyTGF5ZXI6OnN0YWNraW5nQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgUmVuZGVy
TGF5ZXIqIGN1cnIgPSBwYXJlbnQoKTsKLSAgICBmb3IgKCA7IGN1cnIgJiYgIWN1cnItPm1fb2Jq
ZWN0LT5pc1JlbmRlclZpZXcoKSAmJiAhY3Vyci0+bV9vYmplY3QtPmlzUm9vdCgpICYmCi0gICAg
ICAgICAgY3Vyci0+bV9vYmplY3QtPnN0eWxlKCktPmhhc0F1dG9aSW5kZXgoKTsKKyAgICBmb3Ig
KCA7IGN1cnIgJiYgIWN1cnItPmlzU3RhY2tpbmdDb250ZXh0KCk7CiAgICAgICAgICAgY3VyciA9
IGN1cnItPnBhcmVudCgpKTsKICAgICByZXR1cm4gY3VycjsKIH0KQEAgLTIwNDcsNiArMjA0Niw2
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpzdXNwZW5kTWFycXVlZXMoKQogICAgICAgICBjdXJyLT5z
dXNwZW5kTWFycXVlZXMoKTsKIH0KIAorYm9vbCBSZW5kZXJMYXllcjo6cmVjdGFuZ2xlSXNPdmVy
bGFwcGVkKGNvbnN0IEludFJlY3QmIGFic1JlY3QpCit7CisgICAgaWYgKGlzU3RhY2tpbmdDb250
ZXh0KCkpCisgICAgICAgIHJldHVybiBmaW5kT3ZlcmxhcHBpbmdMYXllcihyb290KCksIHRoaXMs
IGFic1JlY3QpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHN0YWNraW5nQ29udGV4dCgpLT5m
aW5kT3ZlcmxhcHBpbmdMYXllcihyb290KCksIHRoaXMsIGFic1JlY3QpOworfQorICAgIAorUmVu
ZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpmaW5kT3ZlcmxhcHBpbmdMYXllcihjb25zdCBSZW5kZXJM
YXllciogcm9vdCwgUmVuZGVyTGF5ZXIqIGFib3ZlTGF5ZXIsIGNvbnN0IEludFJlY3QmIGFic1Jl
Y3QpCit7ICAgIAorICAgIFJlbmRlckxheWVyKiBvdmVybGFwcGluZyA9IGZpbmRPdmVybGFwcGlu
Z0NoaWxkTGF5ZXIocm9vdCwgYWJvdmVMYXllciwgYWJzUmVjdCk7CisgICAgaWYgKCFvdmVybGFw
cGluZykgeworICAgICAgICBSZW5kZXJMYXllciogc3RhY2tpbmdQYXJlbnQgPSBzdGFja2luZ0Nv
bnRleHQoKTsKKyAgICAgICAgaWYgKHN0YWNraW5nUGFyZW50KQorICAgICAgICAgICAgb3Zlcmxh
cHBpbmcgPSBzdGFja2luZ1BhcmVudC0+ZmluZE92ZXJsYXBwaW5nTGF5ZXIocm9vdCwgdGhpcywg
YWJzUmVjdCk7CisgICAgfQorICAgIHJldHVybiBvdmVybGFwcGluZzsKK30KKworUmVuZGVyTGF5
ZXIqIFJlbmRlckxheWVyOjpmaW5kT3ZlcmxhcHBpbmdDaGlsZExheWVyKGNvbnN0IFJlbmRlckxh
eWVyKiByb290LCBSZW5kZXJMYXllciogYWJvdmVMYXllciwgY29uc3QgSW50UmVjdCYgYWJzUmVj
dCkKK3sgICAgCisgICAgaWYgKCghYWJvdmVMYXllciB8fCAoYWJvdmVMYXllciAhPSB0aGlzICYm
IGFib3ZlTGF5ZXItPnpJbmRleCgpIDwgMCkpICYmIGFic1JlY3QuaW50ZXJzZWN0cyhhYnNvbHV0
ZUJvdW5kaW5nQm94KCkpKQorICAgICAgICByZXR1cm4gdGhpczsgICAgICAgIAorICAgIAorICAg
IHVwZGF0ZVpPcmRlckxpc3RzKCk7CisgICAgCisgICAgaWYgKG1fcG9zWk9yZGVyTGlzdCkgewor
ICAgICAgICBWZWN0b3I8UmVuZGVyTGF5ZXIqPjo6aXRlcmF0b3IgbG93SXQ7CisgICAgICAgIGlm
IChhYm92ZUxheWVyICYmIGFib3ZlTGF5ZXItPnpJbmRleCgpID4gMCkgCisgICAgICAgICAgICBs
b3dJdCA9IHN0ZDo6bG93ZXJfYm91bmQobV9wb3NaT3JkZXJMaXN0LT5iZWdpbigpLCBtX3Bvc1pP
cmRlckxpc3QtPmVuZCgpLCBhYm92ZUxheWVyLCBjb21wYXJlWkluZGV4KTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbG93SXQgPSBtX3Bvc1pPcmRlckxpc3QtPmJlZ2luKCk7CisgICAgICAg
IGZvciAoVmVjdG9yPFJlbmRlckxheWVyKj46Oml0ZXJhdG9yIGl0ID0gbV9wb3NaT3JkZXJMaXN0
LT5lbmQoKSAtIDE7IGl0ID49IGxvd0l0OyAtLWl0KSB7CisgICAgICAgICAgICAvLyBzdHVmZiBi
ZWZvcmUgYWJvdmVMYXllciBpcyBiZWxvdyBpdCwgbm8gbmVlZCB0byBjaGVjaworICAgICAgICAg
ICAgaWYgKCppdCA9PSBhYm92ZUxheWVyKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgUmVuZGVyTGF5ZXIqIG92ZXJsYXBwaW5nID0gKCppdCktPmZpbmRPdmVybGFwcGluZ0No
aWxkTGF5ZXIocm9vdCwgMCwgYWJzUmVjdCk7CisgICAgICAgICAgICBpZiAob3ZlcmxhcHBpbmcp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG92ZXJsYXBwaW5nOworICAgICAgICB9CisgICAgfSAg
ICAKKworICAgIGlmIChtX25lZ1pPcmRlckxpc3QgJiYgKCFhYm92ZUxheWVyIHx8IGFib3ZlTGF5
ZXItPnpJbmRleCgpIDwgMCkpIHsKKyAgICAgICAgVmVjdG9yPFJlbmRlckxheWVyKj46Oml0ZXJh
dG9yIGxvd0l0OworICAgICAgICBpZiAoYWJvdmVMYXllcikKKyAgICAgICAgICAgIGxvd0l0ID0g
c3RkOjpsb3dlcl9ib3VuZChtX25lZ1pPcmRlckxpc3QtPmJlZ2luKCksIG1fbmVnWk9yZGVyTGlz
dC0+ZW5kKCksIGFib3ZlTGF5ZXIsIGNvbXBhcmVaSW5kZXgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBsb3dJdCA9IG1fbmVnWk9yZGVyTGlzdC0+YmVnaW4oKTsKKyAgICAgICAgZm9yIChW
ZWN0b3I8UmVuZGVyTGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX25lZ1pPcmRlckxpc3QtPmVuZCgp
IC0gMTsgaXQgPj0gbG93SXQ7IC0taXQpIHsKKyAgICAgICAgICAgIC8vIHN0dWZmIGJlZm9yZSBh
Ym92ZUxheWVyIGlzIGJlbG93IGl0LCBubyBuZWVkIHRvIGNoZWNrCisgICAgICAgICAgICBpZiAo
Kml0ID09IGFib3ZlTGF5ZXIpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBS
ZW5kZXJMYXllciogb3ZlcmxhcHBpbmcgPSAoKml0KS0+ZmluZE92ZXJsYXBwaW5nQ2hpbGRMYXll
cihyb290LCAwLCBhYnNSZWN0KTsKKyAgICAgICAgICAgIGlmIChvdmVybGFwcGluZykKKyAgICAg
ICAgICAgICAgICByZXR1cm4gb3ZlcmxhcHBpbmc7CisgICAgICAgIH0KKyAgICB9ICAgICAKKyAg
ICAKKyAgICByZXR1cm4gMDsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIE1hcnF1ZWUg
aW1wbGVtZW50YXRpb24KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCShyZXZpc2lvbiAx
OTQyNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzMSw3ICsyMzEsNyBAQCBwdWJsaWM6CiAgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1faGVpZ2h0OyB9CiAgICAgdm9pZCBzZXRXaWR0aChpbnQgdykgeyBtX3dpZHRoID0gdzsg
fQogICAgIHZvaWQgc2V0SGVpZ2h0KGludCBoKSB7IG1faGVpZ2h0ID0gaDsgfQotCisgICAgCiAg
ICAgaW50IHNjcm9sbFdpZHRoKCk7CiAgICAgaW50IHNjcm9sbEhlaWdodCgpOwogCkBAIC0yODks
NyArMjg5LDcgQEAgcHVibGljOgogICAgIC8vIEdldCB0aGUgZW5jbG9zaW5nIHN0YWNraW5nIGNv
bnRleHQgZm9yIHRoaXMgbGF5ZXIuICBBIHN0YWNraW5nIGNvbnRleHQgaXMgYSBsYXllcgogICAg
IC8vIHRoYXQgaGFzIGEgbm9uLWF1dG8gei1pbmRleC4KICAgICBSZW5kZXJMYXllciogc3RhY2tp
bmdDb250ZXh0KCkgY29uc3Q7Ci0gICAgYm9vbCBpc1N0YWNraW5nQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuICFoYXNBdXRvWkluZGV4KCkgfHwgcmVuZGVyZXIoKS0+aXNSZW5kZXJWaWV3KCk7IH0K
KyAgICBib29sIGlzU3RhY2tpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gIWhhc0F1dG9aSW5k
ZXgoKSB8fCByZW5kZXJlcigpLT5pc1Jvb3QoKSB8fCByZW5kZXJlcigpLT5pc1JlbmRlclZpZXco
KTsgfQogCiAgICAgdm9pZCBkaXJ0eVpPcmRlckxpc3RzKCk7CiAgICAgdm9pZCB1cGRhdGVaT3Jk
ZXJMaXN0cygpOwpAQCAtMzM4LDYgKzMzOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUhv
dmVyQWN0aXZlU3RhdGUoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jik7CiAK
ICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50UmVjdDsg
fQorICAgIAorICAgIGJvb2wgcmVjdGFuZ2xlSXNPdmVybGFwcGVkKGNvbnN0IEludFJlY3QmIHJl
Y3QpOwogCiAgICAgdm9pZCBkZXN0cm95KFJlbmRlckFyZW5hKik7CiAKQEAgLTM3Niw2ICszNzgs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hpbGRWaXNpYmlsaXR5Q2hhbmdlZChib29sIG5ld1Zp
c2liaWxpdHkpOwogICAgIHZvaWQgZGlydHlWaXNpYmxlRGVzY2VuZGFudFN0YXR1cygpOwogICAg
IHZvaWQgdXBkYXRlVmlzaWJpbGl0eVN0YXR1cygpOworICAgIAorICAgIFJlbmRlckxheWVyKiBm
aW5kT3ZlcmxhcHBpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciogcm9vdCwgUmVuZGVyTGF5ZXIq
IGFib3ZlTGF5ZXIsIGNvbnN0IEludFJlY3QmIGFic1JlY3QpOworICAgIFJlbmRlckxheWVyKiBm
aW5kT3ZlcmxhcHBpbmdDaGlsZExheWVyKGNvbnN0IFJlbmRlckxheWVyKiByb290LCBSZW5kZXJM
YXllciogYWJvdmVMYXllciwgY29uc3QgSW50UmVjdCYgYWJzUmVjdCk7CiAKIHByb3RlY3RlZDog
ICAKICAgICBSZW5kZXJPYmplY3QqIG1fb2JqZWN0OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwCShyZXZpc2lvbiAxOTQyNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw4ICsxODUsMTggQEAgdm9pZCBSZW5kZXJX
aWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbgogICAgICAgICAvLyBNb3ZlIHRoZSB3aWRnZXQg
aWYgbmVjZXNzYXJ5LiAgV2Ugbm9ybWFsbHkgbW92ZSBhbmQgcmVzaXplIHdpZGdldHMgZHVyaW5n
IGxheW91dCwgYnV0IHNvbWV0aW1lcwogICAgICAgICAvLyB3aWRnZXRzIGNhbiBtb3ZlIHdpdGhv
dXQgbGF5b3V0IG9jY3VycmluZyAobW9zdCBub3RhYmx5IHdoZW4geW91IHNjcm9sbCBhIGRvY3Vt
ZW50IHRoYXQKICAgICAgICAgLy8gY29udGFpbnMgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyku
Ci0gICAgICAgIG1fd2lkZ2V0LT5tb3ZlKHR4ICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQo
KSwgdHkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7Ci0KKyAgICAgICAgaW50IHggPSB0
eCArIGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCk7CisgICAgICAgIGludCB5ID0gdHkgKyBi
b3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKTsKKyAgICAgICAgbV93aWRnZXQtPm1vdmUoeCwgeSk7
CisgICAgICAgIAorICAgICAgICAvLyBmb3IgZnJhbWVzLCBjaGVjayBpZiB0aGVyZSBpcyBhIGxh
eWVyIHBvdGVudGlhbGx5IGluIGZyb250IG9mIHRoaXMgb2JqZWN0CisgICAgICAgIC8vIHR1cm4g
b2ZmIHBhaW50aW5nIG9wdGltaXphdGlvbiBpZiBuZWVkZWQKKyAgICAgICAgaWYgKG1fd2lkZ2V0
LT5pc0ZyYW1lVmlldygpKSB7CisgICAgICAgICAgICBSZW5kZXJMYXllciogbCA9IGVuY2xvc2lu
Z0xheWVyKCk7CisgICAgICAgICAgICBpZiAobCAmJiBsLT5yZWN0YW5nbGVJc092ZXJsYXBwZWQo
SW50UmVjdCh4LCB5LCB3aWR0aCgpLCBoZWlnaHQoKSkpKQorICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEZyYW1lVmlldyo+KG1fd2lkZ2V0KS0+c2V0VXNlU2xvd1JlcGFpbnRzKCk7CisgICAg
ICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8vIFRlbGwgdGhlIHdpZGdldCB0byBwYWludCBub3cu
ICBUaGlzIGlzIHRoZSBvbmx5IHRpbWUgdGhlIHdpZGdldCBpcyBhbGxvd2VkCiAgICAgICAgIC8v
IHRvIHBhaW50IGl0c2VsZi4gIFRoYXQgd2F5IGl0IHdpbGwgY29tcG9zaXRlIHByb3Blcmx5IHdp
dGggei1pbmRleGVkIGxheWVycy4KICAgICAgICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5j
b250ZXh0LCBwYWludEluZm8ucmVjdCk7Cg==
</data>
<flag name="review"
          id="5008"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29762</attachid>
            <date>2009-04-24 13:50:48 -0700</date>
            <delta_ts>2009-04-24 15:08:22 -0700</delta_ts>
            <desc>Test for overlapping layers during painting and enable/disable blitting accordingly</desc>
            <filename>5909_r1.diff</filename>
            <type>text/plain</type>
            <size>21839</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjgzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMDktMDQtMjQgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGZp
eCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkwOQorICAgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81ODYzMzQ5PiBvdmVybGFwcGluZyBlbGVtZW50IGxlYXZlcyB0cmFp
bCB3aGVuCisgICAgICAgICAgc2Nyb2xsaW5nIGlmcmFtZQorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBPdmVybGFwVGVzdFJlcXVlc3Rlci5oLgor
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpyZXNldCk6IEluaXRpYWxpemUgbV9pc092ZXJsYXBwZWQuCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnVzZVNsb3dSZXBhaW50cyk6IEFsc28gY2hlY2sgbV9pc092ZXJsYXBwZWQu
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KTog
VXNlIHVzZVNsb3dSZXBhaW50cygpCisgICAgICAgIHNvIG92ZXJsYXBwaW5nIGlzIHRha2VuIGlu
dG8gYWNjb3VudC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0SXNPdmVybGFwcGVk
KTogQWRkZWQuIFNldHMgbV9pc092ZXJsYXBwZWQgYW5kCisgICAgICAgIGVuYWJsZXMgb3IgZGlz
YWJsZXMgY29weS1vbi1zY3JvbGwgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1l
Vmlldy5oOgorICAgICAgICBBZGRlZCBzZXRJc092ZXJsYXBwZWQoKSBhbmQgbV9pc092ZXJsYXBw
ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvT3ZlcmxhcFRlc3RSZXF1ZXN0ZXIuaDogQWRkZWQu
IER1cmluZyBmb3JlZ3JvdW5kIHBhaW50aW5nLAorICAgICAgICBhbiBPdmVybGFwVGVzdFJlcXVl
c3RlciBjYW4gbWFrZSBhIHJlcXVlc3QgdG8gdGVzdCBpZiBhbnkgc3Vic2VxdWVudGx5LQorICAg
ICAgICBwYWludGVkIGxheWVycyBvdmVybGFwIGEgcmVjdC4gVGhlIHRlc3QgcmVzdWx0IGlzIGRl
bGl2ZXJlZCB0byB0aGUKKyAgICAgICAgcmVxdWVzdGVyIHZpYSBzZXRPdmVybGFwVGVzdFJlc3Vs
dCgpLgorICAgICAgICAoV2ViQ29yZTo6T3ZlcmxhcFRlc3RSZXF1ZXN0ZXI6On5PdmVybGFwVGVz
dFJlcXVlc3Rlcik6CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50KTogUGFzcyBhbiBPdmVybGFwVGVzdFJl
cXVlc3RNYXAgdG8KKyAgICAgICAgcGFpbnRMYXllcigpLiBXaGVuIGRvbmUgcGFpbnRpbmcsIGlu
Zm9ybSBhbnkgcmVtYWluaW5nIHJlcXVlc3RlcnMgdGhhdAorICAgICAgICB0aGV5IGFyZSBub3Qg
b3ZlcmxhcHBlZC4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIp
OiBUYWtlIGFuIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCBhbmQKKyAgICAgICAgcGFzcyBpdCBkb3du
IHRvIGNoaWxkIGFuZCByZWZsZWN0aW9uIGxheWVycy4gSW5mb3JtIHJlcXVlc3RlcnMgaWYgdGhp
cworICAgICAgICBsYXllciBvdmVybGFwcyB0aGVpciByZXF1ZXN0ZWQgcmVjdHMuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6UGFpbnRJbmZvOjpQ
YWludEluZm8pOiBBZGRlZCBhbgorICAgICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAgbWVtYmVy
LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUmVwbGljYTo6cGFpbnQpOiBGb3Igbm93LCBwYXNzIGEgMCBPdmVybGFwVGVz
dFJlcXVlc3RNYXAKKyAgICAgICAgdG8gcGFpbnRMYXllcigpLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBh
aW50KTogRm9yIEZyYW1lVmlld3MsIHJlcXVlc3QgYW4gb3ZlcmxhcCB0ZXN0CisgICAgICAgIHdp
dGggdGhlIGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpzZXRPdmVybGFw
VGVzdFJlc3VsdCk6IENhbGwKKyAgICAgICAgRnJhbWVWaWV3OjpzZXRJc092ZXJsYXBwZWQoKSB3
aXRoIHRoZSByZXN1bHQgb2YgdGhlIG92ZXJsYXAgdGVzdC4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuaDogTWFkZSBSZW5kZXJXaWRnZXQgYW4gT3ZlcmxhcFRlc3RSZXF1ZXN0
ZXIuCisKIDIwMDktMDQtMjQgIE5hdGUgQ2hhcGluICA8amFwaGV0QGdvb2dsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDQyODM0KQorKysgV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTYxMCw2
ICs2MTAsNyBAQAogCQkzNzI0Q0E1OTBFNjhBN0U0MDBEQjQzODQgLyogRm9udE1hY0FUU1VJLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcyNENBNTYw
RTY4QTdFNDAwREI0Mzg0IC8qIEZvbnRNYWNBVFNVSS5tbSAqLzsgfTsKIAkJMzcyNENBN0UwRTY4
QjIwNTAwREI0Mzg0IC8qIEZvbnRNYWNDb3JlVGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzI0Q0E3RDBFNjhCMjA1MDBEQjQzODQgLyogRm9u
dE1hY0NvcmVUZXh0LmNwcCAqLzsgfTsKIAkJMzc0NDU3MEYwREIwNUZBNTAwQUUwOTkyIC8qIFNW
R0dseXBoTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzNzQ0NTcwRTBEQjA1RkE1MDBBRTA5OTIgLyogU1ZHR2x5cGhNYXAuaCAqLzsgfTsKKwkJMzc3
NEFCQTUwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzc0QUJBMzBGQTIxRUI0MDBB
RDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzg0QzM0QjBFMTFBQTM0MDA3RDhENDggLyogRm9u
dFRyYWl0c01hc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3ODRDMzRBMEUxMUFBMzQwMDdEOEQ0OCAvKiBGb250VHJhaXRzTWFzay5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3OTE5QzIzMEI3RDE4
ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTE5QzIxMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3Np
dGlvbkl0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJMzc5MTlDMjQwQjdEMTg4NjAwQTU2OTk4IC8qIFBv
c2l0aW9uSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3OTE5QzIyMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTU1MjQsNiArNTUyNSw3IEBA
CiAJCTM3MjRDQTU2MEU2OEE3RTQwMERCNDM4NCAvKiBGb250TWFjQVRTVUkubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGb250TWFjQVRTVUkubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MjRDQTdEMEU2OEIyMDUwMERCNDM4NCAvKiBGb250TWFj
Q29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udE1h
Y0NvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc0NDU3MEUwREIw
NUZBNTAwQUUwOTkyIC8qIFNWR0dseXBoTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0dseXBoTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3NzRB
QkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3Rlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVybGFwVGVzdFJlcXVlc3Rlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzNzg0QzM0QTBFMTFBQTM0MDA3RDhENDggLyogRm9udFRyYWl0
c01hc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udFRyYWl0c01hc2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4
IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQzNTMsNiArMTQzNTUsNyBAQAogCQkJCUJDRUE0ODE2MDk3
RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5oICovLAogCQkJCUE4RjVDMEI2MEY5Mjg1QUMw
MDk4RTA2QiAvKiBSZW5kZXJTVkdNb2RlbE9iamVjdC5oICovLAogCQkJCUE4RjVDMEI3MEY5Mjg1
QUMwMDk4RTA2QiAvKiBSZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgKi8sCisJCQkJMzc3NEFCQTMw
RkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdGVyLmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IHJlbmRlcmluZzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjg0Nyw2
ICsxNjg1MCw3IEBACiAJCQkJOTNEM0MxNTkwRjk3QTlENzAwNTNDMDEzIC8qIERPTUhUTUxDYW52
YXNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0IyRDgxNjBGOTkyMEQyMDA2QUU2QjIg
LyogU3VkZGVuVGVybWluYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVEMTVFM0FDMEY5RTZB
QzEwMDlFMEUzRiAvKiBYTUxUb2tlbml6ZXJTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzc3
NEFCQTUwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiA0MjgzNCkKKysrIFdlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNiArMTY3LDcgQEAgRnJhbWVW
aWV3Ojp+RnJhbWVWaWV3KCkKIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiB7CiAgICAgbV91c2VT
bG93UmVwYWludHMgPSBmYWxzZTsKKyAgICBtX2lzT3ZlcmxhcHBlZCA9IGZhbHNlOwogICAgIG1f
Ym9yZGVyWCA9IDMwOwogICAgIG1fYm9yZGVyWSA9IDMwOwogICAgIG1fbGF5b3V0VGltZXIuc3Rv
cCgpOwpAQCAtNjcxLDcgKzY3Miw3IEBAIFN0cmluZyBGcmFtZVZpZXc6Om1lZGlhVHlwZSgpIGNv
bnN0CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VTbG93UmVwYWludHMoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwOwor
ICAgIHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQg
PiAwIHx8IG1faXNPdmVybGFwcGVkOwogfQogCiB2b2lkIEZyYW1lVmlldzo6c2V0VXNlU2xvd1Jl
cGFpbnRzKCkKQEAgLTY5Miw3ICs2OTMsMTYgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dS
ZXBhaW50T2JqZWN0KAogICAgIEFTU0VSVChtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwKTsK
ICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQtLTsKICAgICBpZiAoIW1fc2xvd1JlcGFpbnRP
YmplY3RDb3VudCkKLSAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCFtX3VzZVNsb3dSZXBhaW50
cyk7CisgICAgICAgIHNldENhbkJsaXRPblNjcm9sbCghdXNlU2xvd1JlcGFpbnRzKCkpOworfQor
Cit2b2lkIEZyYW1lVmlldzo6c2V0SXNPdmVybGFwcGVkKGJvb2wgaXNPdmVybGFwcGVkKQorewor
ICAgIGlmIChpc092ZXJsYXBwZWQgPT0gbV9pc092ZXJsYXBwZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1faXNPdmVybGFwcGVkID0gaXNPdmVybGFwcGVkOworICAgIHNldENhbkJsaXRPblNj
cm9sbCghdXNlU2xvd1JlcGFpbnRzKCkpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6cmVzdG9yZVNj
cm9sbGJhcigpCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lvbiA0MjgzNCkKKysrIFdlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0Myw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldE1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgc2V0VXNl
U2xvd1JlcGFpbnRzKCk7CisgICAgdm9pZCBzZXRJc092ZXJsYXBwZWQoYm9vbCk7CiAKICAgICB2
b2lkIGFkZFNsb3dSZXBhaW50T2JqZWN0KCk7CiAgICAgdm9pZCByZW1vdmVTbG93UmVwYWludE9i
amVjdCgpOwpAQCAtMjMwLDYgKzIzMSw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsYmFyTW9kZSBt
X3Ztb2RlOwogICAgIFNjcm9sbGJhck1vZGUgbV9obW9kZTsKICAgICBib29sIG1fdXNlU2xvd1Jl
cGFpbnRzOworICAgIGJvb2wgbV9pc092ZXJsYXBwZWQ7CiAgICAgdW5zaWduZWQgbV9zbG93UmVw
YWludE9iamVjdENvdW50OwogCiAgICAgaW50IG1fYm9yZGVyWCwgbV9ib3JkZXJZOwpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvT3ZlcmxhcFRlc3RSZXF1ZXN0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9PdmVybGFwVGVzdFJlcXVlc3Rlci5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvT3ZlcmxhcFRlc3RSZXF1ZXN0ZXIuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIE92ZXJsYXBUZXN0UmVxdWVzdGVyX2gKKyNkZWZpbmUgT3ZlcmxhcFRlc3RS
ZXF1ZXN0ZXJfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBPdmVybGFwVGVz
dFJlcXVlc3RlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+T3ZlcmxhcFRlc3RSZXF1ZXN0ZXIo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCkgPSAwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gT3ZlcmxhcFRlc3RSZXF1
ZXN0ZXJfaApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gNDI4MzQp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgogI2luY2x1ZGUgIkhp
dFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCisjaW5jbHVkZSAiT3Zl
cmxhcFRlc3RSZXF1ZXN0ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKQEAgLTE4ODYsMTAgKzE4
ODcsMTMgQEAgYm9vbCBSZW5kZXJMYXllcjo6c2Nyb2xsKFNjcm9sbERpcmVjdGlvbgogICAgIHJl
dHVybiAoZGlkSG9yaXpvbnRhbFNjcm9sbCB8fCBkaWRWZXJ0aWNhbFNjcm9sbCk7CiB9CiAKLXZv
aWQKLVJlbmRlckxheWVyOjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QsIFBhaW50UmVzdHJpY3Rpb24gcGFpbnRSZXN0cmljdGlvbiwgUmVuZGVyT2Jq
ZWN0ICpwYWludGluZ1Jvb3QpCit2b2lkIFJlbmRlckxheWVyOjpwYWludChHcmFwaGljc0NvbnRl
eHQqIHAsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFBhaW50UmVzdHJpY3Rpb24gcGFpbnRS
ZXN0cmljdGlvbiwgUmVuZGVyT2JqZWN0ICpwYWludGluZ1Jvb3QpCiB7Ci0gICAgcGFpbnRMYXll
cih0aGlzLCBwLCBkYW1hZ2VSZWN0LCBmYWxzZSwgcGFpbnRSZXN0cmljdGlvbiwgcGFpbnRpbmdS
b290KTsKKyAgICBSZW5kZXJPYmplY3Q6Ok92ZXJsYXBUZXN0UmVxdWVzdE1hcCBvdmVybGFwVGVz
dFJlcXVlc3RzOworICAgIHBhaW50TGF5ZXIodGhpcywgcCwgZGFtYWdlUmVjdCwgZmFsc2UsIHBh
aW50UmVzdHJpY3Rpb24sIHBhaW50aW5nUm9vdCwgJm92ZXJsYXBUZXN0UmVxdWVzdHMpOworICAg
IFJlbmRlck9iamVjdDo6T3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOjppdGVyYXRvciBlbmQgPSBvdmVy
bGFwVGVzdFJlcXVlc3RzLmVuZCgpOworICAgIGZvciAoUmVuZGVyT2JqZWN0OjpPdmVybGFwVGVz
dFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0ID0gb3ZlcmxhcFRlc3RSZXF1ZXN0cy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT5maXJzdC0+c2V0T3ZlcmxhcFRlc3RSZXN1bHQo
ZmFsc2UpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRDbGlwKEdyYXBoaWNzQ29udGV4dCogcCwgY29u
c3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQpAQCAt
MTkxMCw3ICsxOTE0LDggQEAgc3RhdGljIHZvaWQgcmVzdG9yZUNsaXAoR3JhcGhpY3NDb250ZXh0
Kgogdm9pZAogUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwg
R3JhcGhpY3NDb250ZXh0KiBwLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVj
dCYgcGFpbnREaXJ0eVJlY3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgUGFpbnRSZXN0cmljdGlv
biBwYWludFJlc3RyaWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0
KiBwYWludGluZ1Jvb3QsIGJvb2wgYXBwbGllZFRyYW5zZm9ybSwgYm9vbCB0ZW1wb3JhcnlDbGlw
UmVjdHMpCisgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9v
dCwgUmVuZGVyT2JqZWN0OjpPdmVybGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVz
dHMsCisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFwcGxpZWRUcmFuc2Zvcm0sIGJvb2wg
dGVtcG9yYXJ5Q2xpcFJlY3RzKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ICAgICAvLyBDb21wb3NpdGVkIFJlbmRlckxheWVycyBhcmUgcGFpbnRlZCB2aWEgdGhlIGJhY2tp
bmcncyBwYWludEludG9MYXllcigpLgpAQCAtMTk2OCw3ICsxOTczLDcgQEAgUmVuZGVyTGF5ZXI6
OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvbwogICAgICAgICBwLT5jb25jYXRDVE0odHJhbnNm
b3JtKTsKIAogICAgICAgICAvLyBOb3cgZG8gYSBwYWludCB3aXRoIHRoZSByb290IGxheWVyIHNo
aWZ0ZWQgdG8gYmUgdXMuCi0gICAgICAgIHBhaW50TGF5ZXIodGhpcywgcCwgdHJhbnNmb3JtLmlu
dmVyc2UoKS5tYXBSZWN0KHBhaW50RGlydHlSZWN0KSwgaGF2ZVRyYW5zcGFyZW5jeSwgcGFpbnRS
ZXN0cmljdGlvbiwgcGFpbnRpbmdSb290LCB0cnVlLCB0ZW1wb3JhcnlDbGlwUmVjdHMpOworICAg
ICAgICBwYWludExheWVyKHRoaXMsIHAsIHRyYW5zZm9ybS5pbnZlcnNlKCkubWFwUmVjdChwYWlu
dERpcnR5UmVjdCksIGhhdmVUcmFuc3BhcmVuY3ksIHBhaW50UmVzdHJpY3Rpb24sIHBhaW50aW5n
Um9vdCwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgdHJ1ZSwgdGVtcG9yYXJ5Q2xpcFJlY3RzKTsKIAog
ICAgICAgICBwLT5yZXN0b3JlKCk7CiAgICAgICAgIApAQCAtMTk4Miw3ICsxOTg3LDcgQEAgUmVu
ZGVyTGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvbwogICAgIGlmIChtX3JlZmxlY3Rp
b24gJiYgIW1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uICYmICghbV90cmFuc2Zvcm0gfHwgYXBw
bGllZFRyYW5zZm9ybSkpIHsKICAgICAgICAgLy8gTWFyayB0aGF0IHdlIGFyZSBub3cgaW5zaWRl
IHJlcGxpY2EgcGFpbnRpbmcuCiAgICAgICAgIG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uID0g
dHJ1ZTsKLSAgICAgICAgcmVmbGVjdGlvbkxheWVyKCktPnBhaW50TGF5ZXIocm9vdExheWVyLCBw
LCBwYWludERpcnR5UmVjdCwgaGF2ZVRyYW5zcGFyZW5jeSwgcGFpbnRSZXN0cmljdGlvbiwgcGFp
bnRpbmdSb290LCBmYWxzZSwgdGVtcG9yYXJ5Q2xpcFJlY3RzKTsKKyAgICAgICAgcmVmbGVjdGlv
bkxheWVyKCktPnBhaW50TGF5ZXIocm9vdExheWVyLCBwLCBwYWludERpcnR5UmVjdCwgaGF2ZVRy
YW5zcGFyZW5jeSwgcGFpbnRSZXN0cmljdGlvbiwgcGFpbnRpbmdSb290LCBvdmVybGFwVGVzdFJl
cXVlc3RzLCBmYWxzZSwgdGVtcG9yYXJ5Q2xpcFJlY3RzKTsKICAgICAgICAgbV9wYWludGluZ0lu
c2lkZVJlZmxlY3Rpb24gPSBmYWxzZTsKICAgICB9CiAKQEAgLTIwMDgsNiArMjAxMywyMCBAQCBS
ZW5kZXJMYXllcjo6cGFpbnRMYXllcihSZW5kZXJMYXllciogcm9vCiAgICAgaWYgKHBhaW50aW5n
Um9vdCAmJiAhcmVuZGVyZXIoKS0+aXNEZXNjZW5kYW50T2YocGFpbnRpbmdSb290KSkKICAgICAg
ICAgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIgPSBwYWludGluZ1Jvb3Q7CiAKKyAgICBpZiAob3Zl
cmxhcFRlc3RSZXF1ZXN0cykgeworICAgICAgICAgVmVjdG9yPE92ZXJsYXBUZXN0UmVxdWVzdGVy
Kj4gb3ZlcmxhcHBlZFJlcXVlc3RlcnM7CisgICAgICAgIFJlbmRlck9iamVjdDo6T3ZlcmxhcFRl
c3RSZXF1ZXN0TWFwOjppdGVyYXRvciBlbmQgPSBvdmVybGFwVGVzdFJlcXVlc3RzLT5lbmQoKTsK
KyAgICAgICAgZm9yIChSZW5kZXJPYmplY3Q6Ok92ZXJsYXBUZXN0UmVxdWVzdE1hcDo6aXRlcmF0
b3IgaXQgPSBvdmVybGFwVGVzdFJlcXVlc3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgICAgIGlmICghbGF5ZXJCb3VuZHMuaW50ZXJzZWN0cyhpdC0+c2Vjb25kKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaXQtPmZpcnN0LT5zZXRPdmVy
bGFwVGVzdFJlc3VsdCh0cnVlKTsKKyAgICAgICAgICAgIG92ZXJsYXBwZWRSZXF1ZXN0ZXJzLmFw
cGVuZChpdC0+Zmlyc3QpOworICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgb3ZlcmxhcHBlZFJlcXVlc3RlcnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBvdmVybGFw
VGVzdFJlcXVlc3RzLT5yZW1vdmUob3ZlcmxhcHBlZFJlcXVlc3RlcnNbaV0pOworICAgIH0KKwog
ICAgIC8vIFdlIHdhbnQgdG8gcGFpbnQgb3VyIGxheWVyLCBidXQgb25seSBpZiB3ZSBpbnRlcnNl
Y3QgdGhlIGRhbWFnZSByZWN0LgogICAgIGJvb2wgc2hvdWxkUGFpbnQgPSBpbnRlcnNlY3RzRGFt
YWdlUmVjdChsYXllckJvdW5kcywgZGFtYWdlUmVjdCwgcm9vdExheWVyKSAmJiBtX2hhc1Zpc2li
bGVDb250ZW50OwogICAgIGlmIChzaG91bGRQYWludCAmJiAhc2VsZWN0aW9uT25seSAmJiAhZGFt
YWdlUmVjdC5pc0VtcHR5KCkpIHsKQEAgLTIwMzAsNyArMjA0OSw3IEBAIFJlbmRlckxheWVyOjpw
YWludExheWVyKFJlbmRlckxheWVyKiByb28KICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxp
c3Qgb2YgY2hpbGRyZW4gd2l0aCBuZWdhdGl2ZSB6LWluZGljZXMuCiAgICAgaWYgKG1fbmVnWk9y
ZGVyTGlzdCkKICAgICAgICAgZm9yIChWZWN0b3I8UmVuZGVyTGF5ZXIqPjo6aXRlcmF0b3IgaXQg
PSBtX25lZ1pPcmRlckxpc3QtPmJlZ2luKCk7IGl0ICE9IG1fbmVnWk9yZGVyTGlzdC0+ZW5kKCk7
ICsraXQpCi0gICAgICAgICAgICBpdFswXS0+cGFpbnRMYXllcihyb290TGF5ZXIsIHAsIHBhaW50
RGlydHlSZWN0LCBoYXZlVHJhbnNwYXJlbmN5LCBwYWludFJlc3RyaWN0aW9uLCBwYWludGluZ1Jv
b3QsIGZhbHNlLCB0ZW1wb3JhcnlDbGlwUmVjdHMpOworICAgICAgICAgICAgaXRbMF0tPnBhaW50
TGF5ZXIocm9vdExheWVyLCBwLCBwYWludERpcnR5UmVjdCwgaGF2ZVRyYW5zcGFyZW5jeSwgcGFp
bnRSZXN0cmljdGlvbiwgcGFpbnRpbmdSb290LCBvdmVybGFwVGVzdFJlcXVlc3RzLCBmYWxzZSwg
dGVtcG9yYXJ5Q2xpcFJlY3RzKTsKICAgICAKICAgICAvLyBOb3cgZXN0YWJsaXNoIHRoZSBhcHBy
b3ByaWF0ZSBjbGlwIGFuZCBwYWludCBvdXIgY2hpbGQgUmVuZGVyT2JqZWN0cy4KICAgICBpZiAo
c2hvdWxkUGFpbnQgJiYgIWNsaXBSZWN0VG9BcHBseS5pc0VtcHR5KCkpIHsKQEAgLTIwNDgsNiAr
MjA2Nyw3IEBAIFJlbmRlckxheWVyOjpwYWludExheWVyKFJlbmRlckxheWVyKiByb28KICAgICAg
ICAgICAgIHBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VGbG9hdDsKICAgICAgICAgICAgIHJl
bmRlcmVyKCktPnBhaW50KHBhaW50SW5mbywgdHgsIHR5KTsKICAgICAgICAgICAgIHBhaW50SW5m
by5waGFzZSA9IFBhaW50UGhhc2VGb3JlZ3JvdW5kOworICAgICAgICAgICAgcGFpbnRJbmZvLm92
ZXJsYXBUZXN0UmVxdWVzdHMgPSBvdmVybGFwVGVzdFJlcXVlc3RzOwogICAgICAgICAgICAgcmVu
ZGVyZXIoKS0+cGFpbnQocGFpbnRJbmZvLCB0eCwgdHkpOwogICAgICAgICAgICAgcGFpbnRJbmZv
LnBoYXNlID0gUGFpbnRQaGFzZUNoaWxkT3V0bGluZXM7CiAgICAgICAgICAgICByZW5kZXJlcigp
LT5wYWludChwYWludEluZm8sIHR4LCB0eSk7CkBAIC0yMDY5LDEzICsyMDg5LDEzIEBAIFJlbmRl
ckxheWVyOjpwYWludExheWVyKFJlbmRlckxheWVyKiByb28KICAgICBpZiAobV9ub3JtYWxGbG93
TGlzdCkKICAgICAgICAgZm9yIChWZWN0b3I8UmVuZGVyTGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBt
X25vcm1hbEZsb3dMaXN0LT5iZWdpbigpOyBpdCAhPSBtX25vcm1hbEZsb3dMaXN0LT5lbmQoKTsg
KytpdCkgewogICAgICAgICAgICAgaWYgKGl0WzBdLT5pc1NlbGZQYWludGluZ0xheWVyKCkpCi0g
ICAgICAgICAgICAgICAgaXRbMF0tPnBhaW50TGF5ZXIocm9vdExheWVyLCBwLCBwYWludERpcnR5
UmVjdCwgaGF2ZVRyYW5zcGFyZW5jeSwgcGFpbnRSZXN0cmljdGlvbiwgcGFpbnRpbmdSb290LCBm
YWxzZSwgdGVtcG9yYXJ5Q2xpcFJlY3RzKTsKKyAgICAgICAgICAgICAgICBpdFswXS0+cGFpbnRM
YXllcihyb290TGF5ZXIsIHAsIHBhaW50RGlydHlSZWN0LCBoYXZlVHJhbnNwYXJlbmN5LCBwYWlu
dFJlc3RyaWN0aW9uLCBwYWludGluZ1Jvb3QsIG92ZXJsYXBUZXN0UmVxdWVzdHMsIGZhbHNlLCB0
ZW1wb3JhcnlDbGlwUmVjdHMpOwogICAgICAgICB9CiAKICAgICAvLyBOb3cgd2FsayB0aGUgc29y
dGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0aCBwb3NpdGl2ZSB6LWluZGljZXMuCiAgICAgaWYgKG1f
cG9zWk9yZGVyTGlzdCkKICAgICAgICAgZm9yIChWZWN0b3I8UmVuZGVyTGF5ZXIqPjo6aXRlcmF0
b3IgaXQgPSBtX3Bvc1pPcmRlckxpc3QtPmJlZ2luKCk7IGl0ICE9IG1fcG9zWk9yZGVyTGlzdC0+
ZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBpdFswXS0+cGFpbnRMYXllcihyb290TGF5ZXIsIHAs
IHBhaW50RGlydHlSZWN0LCBoYXZlVHJhbnNwYXJlbmN5LCBwYWludFJlc3RyaWN0aW9uLCBwYWlu
dGluZ1Jvb3QsIGZhbHNlLCB0ZW1wb3JhcnlDbGlwUmVjdHMpOworICAgICAgICAgICAgaXRbMF0t
PnBhaW50TGF5ZXIocm9vdExheWVyLCBwLCBwYWludERpcnR5UmVjdCwgaGF2ZVRyYW5zcGFyZW5j
eSwgcGFpbnRSZXN0cmljdGlvbiwgcGFpbnRpbmdSb290LCBvdmVybGFwVGVzdFJlcXVlc3RzLCBm
YWxzZSwgdGVtcG9yYXJ5Q2xpcFJlY3RzKTsKICAgICAKICAgICBpZiAocmVuZGVyZXIoKS0+aGFz
TWFzaygpICYmIHNob3VsZFBhaW50ICYmICFzZWxlY3Rpb25Pbmx5ICYmICFkYW1hZ2VSZWN0Lmlz
RW1wdHkoKSkgewogICAgICAgICBzZXRDbGlwKHAsIHBhaW50RGlydHlSZWN0LCBkYW1hZ2VSZWN0
KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkocmV2aXNpb24gNDI4MzQpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNiArNDQx
LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIHBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJv
b3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3Qs
CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgUGFpbnRSZXN0cmlj
dGlvbiwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3QsCisgICAgICAgICAgICAgICAgICAgIFJl
bmRlck9iamVjdDo6T3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiwKICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBhcHBsaWVkVHJhbnNmb3JtID0gZmFsc2UsIGJvb2wgdGVtcG9yYXJ5Q2xpcFJlY3RzID0g
ZmFsc2UpOwogCiAgICAgUmVuZGVyTGF5ZXIqIGhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9v
dExheWVyLCBSZW5kZXJMYXllciogY29udGFpbmVyTGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsCkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAkocmV2aXNpb24gNDI4MzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBBbmltYXRpb25Db250
cm9sbGVyOwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIElubGluZUJveDsKIGNsYXNzIElu
bGluZUZsb3dCb3g7CitjbGFzcyBPdmVybGFwVGVzdFJlcXVlc3RlcjsKIGNsYXNzIFBvc2l0aW9u
OwogY2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3Q7CiBjbGFzcyBSZW5kZXJJbmxpbmU7CkBAIC00
MzIsMTkgKzQzMywyMyBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIG9mZnNldCBvZiBiYXNlbGluZSBm
cm9tIHRoZSB0b3Agb2YgdGhlIG9iamVjdC4KICAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0
aW9uKGJvb2wgZmlyc3RMaW5lLCBib29sIGlzUm9vdExpbmVCb3ggPSBmYWxzZSkgY29uc3Q7CiAK
KyAgICB0eXBlZGVmIEhhc2hNYXA8T3ZlcmxhcFRlc3RSZXF1ZXN0ZXIqLCBJbnRSZWN0PiBPdmVy
bGFwVGVzdFJlcXVlc3RNYXA7CisKICAgICAvKgogICAgICAqIFBhaW50IHRoZSBvYmplY3QgYW5k
IGl0cyBjaGlsZHJlbiwgY2xpcHBlZCBieSAoeHx5fHd8aCkuCiAgICAgICogKHR4fHR5KSBpcyB0
aGUgY2FsY3VsYXRlZCBwb3NpdGlvbiBvZiB0aGUgcGFyZW50CiAgICAgICovCiAgICAgc3RydWN0
IFBhaW50SW5mbyB7CiAgICAgICAgIFBhaW50SW5mbyhHcmFwaGljc0NvbnRleHQqIG5ld0NvbnRl
eHQsIGNvbnN0IEludFJlY3QmIG5ld1JlY3QsIFBhaW50UGhhc2UgbmV3UGhhc2UsIGJvb2wgbmV3
Rm9yY2VCbGFja1RleHQsCi0gICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIG5ld1BhaW50
aW5nUm9vdCwgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4qIG5ld091dGxpbmVPYmplY3RzKQor
ICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXdQYWludGluZ1Jvb3QsIExpc3RIYXNo
U2V0PFJlbmRlcklubGluZSo+KiBuZXdPdXRsaW5lT2JqZWN0cywKKyAgICAgICAgICAgICAgICAg
IE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IDApCiAgICAgICAg
ICAgICA6IGNvbnRleHQobmV3Q29udGV4dCkKICAgICAgICAgICAgICwgcmVjdChuZXdSZWN0KQog
ICAgICAgICAgICAgLCBwaGFzZShuZXdQaGFzZSkKICAgICAgICAgICAgICwgZm9yY2VCbGFja1Rl
eHQobmV3Rm9yY2VCbGFja1RleHQpCiAgICAgICAgICAgICAsIHBhaW50aW5nUm9vdChuZXdQYWlu
dGluZ1Jvb3QpCiAgICAgICAgICAgICAsIG91dGxpbmVPYmplY3RzKG5ld091dGxpbmVPYmplY3Rz
KQorICAgICAgICAgICAgLCBvdmVybGFwVGVzdFJlcXVlc3RzKG92ZXJsYXBUZXN0UmVxdWVzdHMp
CiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC00NTQsNiArNDU5LDcgQEAgcHVibGljOgogICAg
ICAgICBib29sIGZvcmNlQmxhY2tUZXh0OwogICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5n
Um9vdDsgLy8gdXNlZCB0byBkcmF3IGp1c3Qgb25lIGVsZW1lbnQgYW5kIGl0cyB2aXN1YWwga2lk
cwogICAgICAgICBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPiogb3V0bGluZU9iamVjdHM7IC8v
IHVzZWQgdG8gbGlzdCBvdXRsaW5lcyB0aGF0IHNob3VsZCBiZSBwYWludGVkIGJ5IGEgYmxvY2sg
d2l0aCBpbmxpbmUgY2hpbGRyZW4KKyAgICAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVy
bGFwVGVzdFJlcXVlc3RzOwogICAgIH07CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJ
bmZvJiwgaW50IHR4LCBpbnQgdHkpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGljYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5j
cHAJKHJldmlzaW9uIDQyODM0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBSZW5kZXJSZXBsaWNhOjpw
YWludChQYWludEluZm8mIHBhaQogICAgICAgICAvLyBjb21wdXRpbmcgdXNpbmcgdGhlIHdyb25n
IHJvb3RMYXllcgogICAgICAgICBsYXllcigpLT5wYXJlbnQoKS0+cGFpbnRMYXllcihsYXllcigp
LT50cmFuc2Zvcm0oKSA/IGxheWVyKCktPnBhcmVudCgpIDogbGF5ZXIoKS0+ZW5jbG9zaW5nVHJh
bnNmb3JtZWRBbmNlc3RvcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dCwgcGFpbnRJbmZvLnJlY3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRydWUsIFBhaW50UmVzdHJpY3Rpb25Ob25lLCAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCBQYWludFJlc3RyaWN0aW9uTm9u
ZSwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgICAg
IC8vIGFwcGxpZWRUcmFuc2Zvcm0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJ1ZSk7ICAgIC8vIHRlbXBvcmFyeUNsaXBSZWN0cwogICAgIGVsc2UgaWYgKHBhaW50SW5m
by5waGFzZSA9PSBQYWludFBoYXNlTWFzaykKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcAkocmV2aXNpb24gNDI4MzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsNiArMjExLDExIEBAIHZvaWQgUmVuZGVyV2lkZ2V0
OjpwYWludChQYWludEluZm8mIHBhaW4KICAgICAgICAgLy8gVGVsbCB0aGUgd2lkZ2V0IHRvIHBh
aW50IG5vdy4gIFRoaXMgaXMgdGhlIG9ubHkgdGltZSB0aGUgd2lkZ2V0IGlzIGFsbG93ZWQKICAg
ICAgICAgLy8gdG8gcGFpbnQgaXRzZWxmLiAgVGhhdCB3YXkgaXQgd2lsbCBjb21wb3NpdGUgcHJv
cGVybHkgd2l0aCB6LWluZGV4ZWQgbGF5ZXJzLgogICAgICAgICBtX3dpZGdldC0+cGFpbnQocGFp
bnRJbmZvLmNvbnRleHQsIHBhaW50SW5mby5yZWN0KTsKKworICAgICAgICBpZiAobV93aWRnZXQt
PmlzRnJhbWVWaWV3KCkgJiYgcGFpbnRJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMpIHsKKyAgICAg
ICAgICAgIEFTU0VSVCghcGFpbnRJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMtPmNvbnRhaW5zKHRo
aXMpKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5vdmVybGFwVGVzdFJlcXVlc3RzLT5zZXQodGhp
cywgbV93aWRnZXQtPmZyYW1lUmVjdCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChj
bGlwVG9Cb3JkZXJSYWRpdXMpCkBAIC0yMjMsNiArMjI4LDEzIEBAIHZvaWQgUmVuZGVyV2lkZ2V0
OjpwYWludChQYWludEluZm8mIHBhaW4KICAgICB9CiB9CiAKK3ZvaWQgUmVuZGVyV2lkZ2V0Ojpz
ZXRPdmVybGFwVGVzdFJlc3VsdChib29sIGlzT3ZlcmxhcHBlZCkKK3sKKyAgICBBU1NFUlQobV93
aWRnZXQpOworICAgIEFTU0VSVChtX3dpZGdldC0+aXNGcmFtZVZpZXcoKSk7CisgICAgc3RhdGlj
X2Nhc3Q8RnJhbWVWaWV3Kj4obV93aWRnZXQpLT5zZXRJc092ZXJsYXBwZWQoaXNPdmVybGFwcGVk
KTsKK30KKwogdm9pZCBSZW5kZXJXaWRnZXQ6OmRlcmVmKFJlbmRlckFyZW5hICphcmVuYSkKIHsK
ICAgICBpZiAoLS1tX3JlZkNvdW50IDw9IDApCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQu
aAkocmV2aXNpb24gNDI4MzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQsMTMgKzI0LDE0IEBACiAjaWZuZGVmIFJlbmRlcldpZGdldF9o
CiAjZGVmaW5lIFJlbmRlcldpZGdldF9oCiAKKyNpbmNsdWRlICJPdmVybGFwVGVzdFJlcXVlc3Rl
ci5oIgogI2luY2x1ZGUgIlJlbmRlclJlcGxhY2VkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgV2lkZ2V0OwogCi1jbGFzcyBSZW5kZXJXaWRnZXQgOiBwdWJsaWMgUmVuZGVyUmVw
bGFjZWQgeworY2xhc3MgUmVuZGVyV2lkZ2V0IDogcHVibGljIFJlbmRlclJlcGxhY2VkLCBwcml2
YXRlIE92ZXJsYXBUZXN0UmVxdWVzdGVyIHsKIHB1YmxpYzoKICAgICBSZW5kZXJXaWRnZXQoTm9k
ZSopOwogICAgIHZpcnR1YWwgflJlbmRlcldpZGdldCgpOwpAQCAtNjQsNiArNjUsOSBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVdpZGdldCgpOwogCisgICAgLy8gT3Zlcmxh
cFRlc3RSZXF1ZXN0ZXIKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9v
bCk7CisKIHByb3RlY3RlZDoKICAgICBXaWRnZXQqIG1fd2lkZ2V0OwogICAgIEZyYW1lVmlldyog
bV92aWV3Owo=
</data>
<flag name="review"
          id="14890"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>