<?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>57057</bug_id>
          
          <creation_ts>2011-03-24 15:07:30 -0700</creation_ts>
          <short_desc>Overlay scrollbars in overflow areas paint behind positive z-index content</short_desc>
          <delta_ts>2011-03-25 12:29:58 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>373126</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-03-24 15:07:30 -0700</bug_when>
    <thetext>Overlay scrollbars in overflow areas paint behind any content that is painted after the background phase. Other styles of scrollbars avoid this problem because they clip content. Overlay scrollbars, however, allow content to lay out underneath the scrollbar region, so there is no clipping, and the scrollbars end up behind a lot of content.

&lt;rdar://problem/9070500&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373127</commentid>
    <comment_count>1</comment_count>
      <attachid>86843</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-03-24 15:08:22 -0700</bug_when>
    <thetext>Created attachment 86843
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373128</commentid>
    <comment_count>2</comment_count>
      <attachid>86844</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-03-24 15:11:27 -0700</bug_when>
    <thetext>Created attachment 86844
Patch

This patch might not do enough clipping as Hyatt just pointed out on irc. Testing now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373143</commentid>
    <comment_count>3</comment_count>
      <attachid>86844</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-03-24 15:35:51 -0700</bug_when>
    <thetext>Comment on attachment 86844
Patch

I like the idea of dirtying the scrollable areas that need painting.  I don&apos;t think this applies to all ScrollableAreas though, does it?  For example, RenderListBox didn&apos;t really need patching did it?

The big problem is the hash set also isn&apos;t going to necessarily understand anything about the correct paint order.  I don&apos;t know what order stuff got added to the set, but I doubt it corresponds with the correct paint order if you&apos;re having to paint multiple scrollbars at once.  You also won&apos;t respect clipping, opacity, reflections, masks, etc.  I&apos;m not sure how important respecting all of these is, but it does at least seem like clip needs to be respected.

My suggestion would be to have a bit system on RenderLayer instead of doing the set.  Add two bits similar to what we do for selfNeedsLayout() and normalChildNeedsLayout().  Then dirty up the RenderLayer tree as you encounter scrollbars that need to paint.

Then I&apos;d do a second paint of the layer tree with the flag set (paintingScrollbars, etc.) and make sure you short-circuit all the RenderObject painting etc.

What about hit testing? Why is it ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373153</commentid>
    <comment_count>4</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-03-24 15:45:55 -0700</bug_when>
    <thetext>Hyatt and I have continued discussing this, and I am going to re-write the patch, so I will take the review flag down for now. 

Hit testing was easier to fix: https://bugs.webkit.org/show_bug.cgi?id=56493</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373249</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-03-24 18:36:10 -0700</bug_when>
    <thetext>Cool, I was going to suggest that exact idea for hit testing, so glad to see that&apos;s how you fixed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373308</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-03-24 22:05:23 -0700</bug_when>
    <thetext>Aw, man. I have a patch that is so close to great. But it has a major problem. I tried to keep the special scrollbar painting pass through the layer tree confined to RenderLayer. So right now, I avoid all of the calls to renderer()-&gt;paint() in RenderLayer::paintLayer() if we are just painting the scrollbars, then then I explicitly call paintOverflowControls() toward the end of the function. However, paintOverflowControls is normally not called explicitly from RenderLayer…normally it&apos;s called from RenderBlock::paint() which is called by one of the many renderer()-&gt;paint() calls in paintLayer that I avoid for the scrollbar painting pass. And when we DON&apos;T go through RenderBlock to get to paintOverflowControls(), the tx and ty are not always correct!

So, I see two possible options. The easier, less code-intrusive way would be to cache tx and ty during the first (normal) crawl through the layer tree (this is when we paint everything except the scrollbars). This seems like the best option unless there are other possible clips applied in the render tree paint code.

Or, I would have to make the render tree somehow know that it&apos;s the special scrollbar painting time. Right now, I was trying to confine this knowledge to PaintFlags or PaintBehavior. But none of that info gets passed onto the render tree. If it had to be propagated through the render tree, it might have be be a paint phase instead. I am hoping this is not necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373324</commentid>
    <comment_count>7</comment_count>
      <attachid>86885</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-03-24 22:47:53 -0700</bug_when>
    <thetext>Created attachment 86885
Patch that traverses layer tree again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373420</commentid>
    <comment_count>8</comment_count>
      <attachid>86885</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-25 02:50:56 -0700</bug_when>
    <thetext>Comment on attachment 86885
Patch that traverses layer tree again

No pixel tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373629</commentid>
    <comment_count>9</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-03-25 11:31:36 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 86885 [details])
&gt; No pixel tests?

We haven&apos;t switched to using overlay scrollbars in pixel tests yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373632</commentid>
    <comment_count>10</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-03-25 11:37:10 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 86885 [details] [details])
&gt; &gt; No pixel tests?
&gt; 
&gt; We haven&apos;t switched to using overlay scrollbars in pixel tests yet.

And this change only affects overlay scrollbars, just to be clear. See ScrollbarTheme::usesOverlayScrollbars().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373657</commentid>
    <comment_count>11</comment_count>
      <attachid>86885</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-03-25 12:09:58 -0700</bug_when>
    <thetext>Comment on attachment 86885
Patch that traverses layer tree again

It makes me really happy how minimally intrusive this ended up being. Yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373669</commentid>
    <comment_count>12</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-03-25 12:29:58 -0700</bug_when>
    <thetext>Yay! Thanks, Dave! Fixed with revision 81981.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>86843</attachid>
            <date>2011-03-24 15:08:22 -0700</date>
            <delta_ts>2011-03-24 15:08:22 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>foreground-painting-not-enough.html</filename>
            <type>text/html</type>
            <size>787</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c3R5bGU+Ci5zY3JvbGwtd3JhcHBlciB7CiAgcG9zaXRpb246cmVsYXRp
dmU7CiAgaGVpZ2h0OiAxMDBweDsKICBvdmVyZmxvdzogYXV0bzsKfQoKLml0ZW0gewogIHBvc2l0
aW9uOiByZWxhdGl2ZTsKICBiYWNrZ3JvdW5kLWNvbG9yOnB1cnBsZTsKfQo8L3N0eWxlPgo8L2hl
YWQ+Cgo8Ym9keT4KICAgIDxkaXYgY2xhc3M9J3Njcm9sbC13cmFwcGVyJz4KICAgICAgICA8ZGl2
IGNsYXNzPSdpdGVtJz5oZXk8L2Rpdj48YnI+CiAgICAgICAgPGRpdiBjbGFzcz0naXRlbSc+aGV5
PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0naXRlbSc+aGV5PC9kaXY+CiAgICAgICAgPGRpdiBj
bGFzcz0naXRlbSc+aGV5PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0naXRlbSc+aGV5PC9kaXY+
CiAgICAgICAgPGRpdiBjbGFzcz0naXRlbSc+aGV5PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0n
aXRlbSc+aGV5PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0naXRlbSc+aGV5PC9kaXY+CiAgICAg
ICAgPGRpdiBjbGFzcz0naXRlbSc+aGV5PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0naXRlbSc+
aGV5PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0naXRlbSc+aGV5PC9kaXY+CiAgICAgICAgPGRp
diBjbGFzcz0naXRlbSc+aGV5PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0naXRlbSc+aGV5PC9k
aXY+CiAgICAgICAgPGRpdiBjbGFzcz0naXRlbSc+aGV5PC9kaXY+CiAgICAgICAgPGRpdiBjbGFz
cz0naXRlbSc+aGV5PC9kaXY+CiAgICA8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86844</attachid>
            <date>2011-03-24 15:11:27 -0700</date>
            <delta_ts>2011-03-24 22:47:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>17909</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxOTAzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTEtMDMtMjQgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MDU3ICBPdmVybGF5IHNjcm9sbGJhcnMgaW4gCisgICAgICAgIG92ZXJmbG93IGFy
ZWFzIHBhaW50IGJlaGluZCBwb3NpdGl2ZSB6LWluZGV4IGNvbnRlbnQKKyAgICAgICAgLWFuZCBj
b3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTA3MDUwMD4KKworICAgICAg
ICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIEhhc2hTZXQgb2YgU2Nyb2xsYWJsZUFyZWFzIG9uIFBh
Z2UgdG8gYmUgYSBIYXNoTWFwIG9mIAorICAgICAgICBTY3JvbGxhYmxlQXJlYXMgYW5kIE92ZXJs
YXlTY3JvbGxiYXJQYWludFN0YXR1c2VzLiBPdmVybGF5U2Nyb2xsYmFyUGFpbnRTdGF0dXMgaXMg
YSAKKyAgICAgICAgbmV3IGVudW0gdGhhdCBrZWVwcyB0cmFjayBvZiB3aGV0aGVyIHRoZSBTY3Jv
bGxhYmxlQXJlYSBoYXMgU2Nyb2xsYmFycyB0aGF0IG5lZWQgCisgICAgICAgIHBhaW50aW5nLiBU
aGlzIGFsbG93cyB1cyB0byBwYWludCBvdmVybGF5IHNjcm9sbGJhcnMgYWZ0ZXIgZXZlcnl0aGlu
ZyBlbHNlIHNvIHRoYXQgCisgICAgICAgIHRoZXkgYWx3YXlzIHBhaW50IG9uIHRvcC4KKworICAg
ICAgICBUaGUgSGFzaFNldCBpcyBub3cgYSBIYXNoTWFwLiBObyBmdW5jdGlvbmFsIGNoYW5nZXMg
aGVyZS4KKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2ZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpub3RpZnlQYWdlVGhhdENvbnRl
bnRBcmVhV2lsbFBhaW50KToKKworICAgICAgICBOZXcgZnVuY3Rpb24gdGhhdCBpdGVyYXRlcyB0
aGUgUGFnZSdzIFNjcm9sbGFibGVBcmVhTWFwIGFuZCBwYWludHMgYW55IGRpcnR5IAorICAgICAg
ICBTY3JvbGxiYXJzLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludERpcnR5T3Zl
cmxheVNjcm9sbGJhcnMpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisKKyAgICAgICAg
TW9zdCBvZiB0aGUgY2hhbmdlcyBpbiBQYWdlIGFyZSBjaGFuZ2luZyB0aGUgSGFzaFNldCB0byBh
IEhhc2hNYXAuIFBhZ2UgYWxzbyBoYXMgYSAKKyAgICAgICAgbmV3IGJpdCBjYWxsZWQgbV9zY3Jv
bGxhYmxlQXJlYU1hcENvbnRhaW5zRGlydHlTY3JvbGxiYXJzLiBUaGlzIGlzIGFuIG9wdGltaXph
dGlvbiAKKyAgICAgICAgc28gdGhhdCB3ZSBjYW4gYXZvaWQgaXRlcmF0aW5nIHRocm91Z2ggdGhl
IEhhc2hNYXAgaWYgdGhlcmUgYXJlIG5vIGRpcnR5IHNjcm9sbGJhcnMgCisgICAgICAgIGluIGl0
LiBUaGVyZSBhcmUgYWxzbyBzb21lIG5ldyBnZXR0ZXJzL3NldHRlcnMgZm9yIHRoZSBPdmVybGF5
U2Nyb2xsYmFyUGFpbnRTdGF0dXMgCisgICAgICAgIGFuZCBtX3Njcm9sbGFibGVBcmVhTWFwQ29u
dGFpbnNEaXJ0eVNjcm9sbGJhcnMuIAorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6On5QYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OnJlbW92ZVNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0
UGFpbnRTdGF0dXNGb3JTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjpzY3JvbGxhYmxlQXJlYU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjptdXRhYmxlU2Nyb2xsYWJsZUFyZWFNYXApOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6c2Nyb2xsYWJsZUFyZWFNYXBDb250YWluc0RpcnR5U2Nyb2xsYmFycyk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpzZXRTY3JvbGxhYmxlQXJlYU1hcEFsbENsZWFuKToKKworICAgICAg
ICBTY3JvbGxWaWV3OjogcGFpbnREaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkgaXMganVzdCBhIHZp
cnR1YWwgc2hlbGwuIEl0J3MgcmVhbGx5IAorICAgICAgICBpbXBsZW1lbnRlZCBvbiBGcmFtZVZp
ZXcgdG8gYXZvaWQgbGF5ZXJpbmcgdmlvbGF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBhaW50RGlydHlPdmVy
bGF5U2Nyb2xsYmFycyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorCisgICAg
ICAgIEFmdGVyIHBhaW50Q29udGVudHMoKSwgY2FsbCBwYWludERpcnR5T3ZlcmxheVNjcm9sbGJh
cnMoKS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBhaW50KToKKyAgICAgICAgCisg
ICAgICAgIE5ldyB2aXJ0dWFsIGZ1bmN0aW9uIHBhaW50T3ZlcmxheVNjcm9sbGJhcnMoKSBpcyBj
YWxsZWQgd2hlbiBpdGVyYXRpbmcgdGhlIEhhc2hNYXAgCisgICAgICAgIHRvIHBhaW50IHRoZSBk
aXJ0eSBTY3JvbGxiYXJzLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6cGFpbnRPdmVybGF5U2Nyb2xsYmFycyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpwYWludE92ZXJsYXlTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50U2Nyb2xsYmFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50T3ZlcmxheVNjcm9sbGJhcnMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisKIDIwMTEtMDMtMjQgIEpvaG4gQmF1
bWFuICA8amJhdW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSdXNzZWxsLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gODE3OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSwxMyArNDExLDEzIEBAIHZvaWQgRm9jdXNDb250cm9s
bGVyOjpzZXRBY3RpdmUoYm9vbCBhY3QKICAgICAgICAgICAgIHZpZXctPnVwZGF0ZUNvbnRyb2xU
aW50cygpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNvbnN0IEhhc2hTZXQ8U2Nyb2xsYWJs
ZUFyZWEqPiogc2Nyb2xsYWJsZUFyZWFzID0gbV9wYWdlLT5zY3JvbGxhYmxlQXJlYVNldCgpKSB7
Ci0gICAgICAgICAgICBIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj46OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IHNjcm9sbGFibGVBcmVhcy0+ZW5kKCk7IAotICAgICAgICAgICAgZm9yIChIYXNoU2V0PFNj
cm9sbGFibGVBcmVhKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2Nyb2xsYWJsZUFyZWFzLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKGNvbnN0IFNjcm9sbGFibGVBcmVh
TWFwKiBzY3JvbGxhYmxlQXJlYXMgPSBtX3BhZ2UtPnNjcm9sbGFibGVBcmVhTWFwKCkpIHsKKyAg
ICAgICAgICAgIFNjcm9sbGFibGVBcmVhTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBzY3JvbGxh
YmxlQXJlYXMtPmVuZCgpOyAKKyAgICAgICAgICAgIGZvciAoU2Nyb2xsYWJsZUFyZWFNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gc2Nyb2xsYWJsZUFyZWFzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSkKLSAgICAgICAgICAgICAgICAgICAg
KCppdCktPnNjcm9sbEFuaW1hdG9yKCktPmNvbnRlbnRBcmVhRGlkSGlkZSgpOworICAgICAgICAg
ICAgICAgICAgICBpdC0+Zmlyc3QtPnNjcm9sbEFuaW1hdG9yKCktPmNvbnRlbnRBcmVhRGlkSGlk
ZSgpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgKCppdCktPnNj
cm9sbEFuaW1hdG9yKCktPmNvbnRlbnRBcmVhRGlkU2hvdygpOworICAgICAgICAgICAgICAgICAg
ICBpdC0+Zmlyc3QtPnNjcm9sbEFuaW1hdG9yKCktPmNvbnRlbnRBcmVhRGlkU2hvdygpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAkocmV2aXNpb24gODE3OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNjgsMTMgKzIwNjgsMzUgQEAgYm9vbCBGcmFtZVZpZXc6
OnNob3VsZFN1c3BlbmRTY3JvbGxBbmltYQogdm9pZCBGcmFtZVZpZXc6Om5vdGlmeVBhZ2VUaGF0
Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdAogewogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7Ci0gICAgY29uc3QgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+KiBzY3JvbGxhYmxl
QXJlYXMgPSBwYWdlLT5zY3JvbGxhYmxlQXJlYVNldCgpOworICAgIGNvbnN0IFNjcm9sbGFibGVB
cmVhTWFwKiBzY3JvbGxhYmxlQXJlYXMgPSBwYWdlLT5zY3JvbGxhYmxlQXJlYU1hcCgpOwogICAg
IGlmICghc2Nyb2xsYWJsZUFyZWFzKQogICAgICAgICByZXR1cm47CiAKLSAgICBIYXNoU2V0PFNj
cm9sbGFibGVBcmVhKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHNjcm9sbGFibGVBcmVhcy0+ZW5k
KCk7IAotICAgIGZvciAoSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHNjcm9sbGFibGVBcmVhcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAo
Kml0KS0+c2Nyb2xsQW5pbWF0b3IoKS0+Y29udGVudEFyZWFXaWxsUGFpbnQoKTsKKyAgICBTY3Jv
bGxhYmxlQXJlYU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gc2Nyb2xsYWJsZUFyZWFzLT5lbmQo
KTsgCisgICAgZm9yIChTY3JvbGxhYmxlQXJlYU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzY3Jv
bGxhYmxlQXJlYXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPmZpcnN0
LT5zY3JvbGxBbmltYXRvcigpLT5jb250ZW50QXJlYVdpbGxQYWludCgpOworfQorCit2b2lkIEZy
YW1lVmlldzo6cGFpbnREaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQoreworICAgIFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCk7CisgICAgU2Nyb2xsYWJsZUFyZWFNYXAqIHNjcm9sbGFibGVBcmVhcyA9IHBh
Z2UtPm11dGFibGVTY3JvbGxhYmxlQXJlYU1hcCgpOworICAgIGlmICghc2Nyb2xsYWJsZUFyZWFz
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiBub25lIG9mIHRoZSBzY3JvbGxiYXJzIGhh
dmUgYmVlbiBtYXJrZWQgZGlydHksIHRoZXJlIGlzIG5vIG5lZWQgdG8gaXRlcmF0ZSB0aGUgSGFz
aE1hcC4KKyAgICBpZiAoIXBhZ2UtPnNjcm9sbGFibGVBcmVhTWFwQ29udGFpbnNEaXJ0eVNjcm9s
bGJhcnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2Nyb2xsYWJsZUFyZWFNYXA6Oml0ZXJh
dG9yIGVuZCA9IHNjcm9sbGFibGVBcmVhcy0+ZW5kKCk7IAorICAgIGZvciAoU2Nyb2xsYWJsZUFy
ZWFNYXA6Oml0ZXJhdG9yIGl0ID0gc2Nyb2xsYWJsZUFyZWFzLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQgPT0gT3ZlcmxheVNjcm9sbGJhckRpcnR5
KSB7CisgICAgICAgICAgICBpdC0+Zmlyc3QtPnBhaW50T3ZlcmxheVNjcm9sbGJhcnMoY29udGV4
dCwgZGlydHlSZWN0KTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQgPSBPdmVybGF5U2Nyb2xsYmFy
Q2xlYW47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwYWdlLT5zZXRTY3JvbGxhYmxlQXJlYU1h
cEFsbENsZWFuKCk7CiB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlzaW9uIDgxNzkxKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIwLDYgKzMyMCw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUnViYmVyQmFuZChjb25zdCBJbnRTaXpl
JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdp
bGxQYWludCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBwYWludERpcnR5T3ZlcmxheVNjcm9s
bGJhcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNjb25uZWN0RnJvbVBhZ2UoKSB7IG1fcGFnZSA9IDA7IH0KIAogICAgIHZvaWQgZGVmZXJy
ZWRSZXBhaW50VGltZXJGaXJlZChUaW1lcjxGcmFtZVZpZXc+Kik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAJKHJldmlzaW9uIDgxNzkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw3IEBAIFBhZ2U6OlBhZ2UoY29uc3QgUGFnZUNs
aWVudHMmIHBhZ2VDbGllbnQKICAgICAsIG1fY2FuU3RhcnRNZWRpYSh0cnVlKQogICAgICwgbV92
aWV3TW9kZShWaWV3TW9kZVdpbmRvd2VkKQogICAgICwgbV9taW5pbXVtVGltZXJJbnRlcnZhbChT
ZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKSkKKyAgICAsIG1fc2Nyb2xsYWJs
ZUFyZWFNYXBDb250YWluc0RpcnR5U2Nyb2xsYmFycyhmYWxzZSkKICAgICAsIG1faXNFZGl0YWJs
ZShmYWxzZSkKIHsKICAgICBpZiAoIWFsbFBhZ2VzKSB7CkBAIC0xOTIsMTAgKzE5MywxMCBAQCBQ
YWdlOjp+UGFnZSgpCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCiAgICAgICAgIGZyYW1lLT5w
YWdlRGVzdHJveWVkKCk7CiAKLSAgICBpZiAobV9zY3JvbGxhYmxlQXJlYVNldCkgewotICAgICAg
ICBTY3JvbGxhYmxlQXJlYVNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zY3JvbGxhYmxlQXJl
YVNldC0+ZW5kKCk7IAotICAgICAgICBmb3IgKFNjcm9sbGFibGVBcmVhU2V0Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fc2Nyb2xsYWJsZUFyZWFTZXQtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
LSAgICAgICAgICAgICgqaXQpLT5kaXNjb25uZWN0RnJvbVBhZ2UoKTsKKyAgICBpZiAobV9zY3Jv
bGxhYmxlQXJlYU1hcCkgeworICAgICAgICBTY3JvbGxhYmxlQXJlYU1hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbV9zY3JvbGxhYmxlQXJlYU1hcC0+ZW5kKCk7IAorICAgICAgICBmb3IgKFNjcm9s
bGFibGVBcmVhTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc2Nyb2xsYWJsZUFyZWFNYXAtPmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGl0LT5maXJzdC0+ZGlzY29ubmVj
dEZyb21QYWdlKCk7CiAgICAgfQogCiAgICAgbV9lZGl0b3JDbGllbnQtPnBhZ2VEZXN0cm95ZWQo
KTsKQEAgLTkwMSwyMyArOTAyLDMyIEBAIHZvaWQgUGFnZTo6ZGlkU3RvcFBsdWdpbihIYWx0YWJs
ZVBsdWdpbioKIAogdm9pZCBQYWdlOjphZGRTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSog
c2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhU2V0KQotICAgICAg
ICBtX3Njcm9sbGFibGVBcmVhU2V0ID0gYWRvcHRQdHIobmV3IFNjcm9sbGFibGVBcmVhU2V0KTsK
LSAgICBtX3Njcm9sbGFibGVBcmVhU2V0LT5hZGQoc2Nyb2xsYWJsZUFyZWEpOworICAgIGlmICgh
bV9zY3JvbGxhYmxlQXJlYU1hcCkKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYU1hcCA9IGFkb3B0
UHRyKG5ldyBTY3JvbGxhYmxlQXJlYU1hcCk7CisgICAgbV9zY3JvbGxhYmxlQXJlYU1hcC0+YWRk
KHNjcm9sbGFibGVBcmVhLCBPdmVybGF5U2Nyb2xsYmFyQ2xlYW4pOwogfQogCiB2b2lkIFBhZ2U6
OnJlbW92ZVNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKIHsK
LSAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFTZXQpCisgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVh
TWFwKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zY3JvbGxhYmxlQXJlYVNldC0+cmVtb3ZlKHNj
cm9sbGFibGVBcmVhKTsKKyAgICBtX3Njcm9sbGFibGVBcmVhTWFwLT5yZW1vdmUoc2Nyb2xsYWJs
ZUFyZWEpOwogfQogCiBib29sIFBhZ2U6OmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJs
ZUFyZWEqIHNjcm9sbGFibGVBcmVhKSBjb25zdAogewotICAgIGlmICghbV9zY3JvbGxhYmxlQXJl
YVNldCkKKyAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFNYXApCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVNldC0+Y29udGFpbnMoc2Nyb2xsYWJsZUFy
ZWEpOworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhTWFwLT5jb250YWlucyhzY3JvbGxhYmxl
QXJlYSk7Cit9CisKK3ZvaWQgUGFnZTo6c2V0UGFpbnRTdGF0dXNGb3JTY3JvbGxhYmxlQXJlYShP
dmVybGF5U2Nyb2xsYmFyUGFpbnRTdGF0dXMgcGFpbnRTdGF0dXMsIFNjcm9sbGFibGVBcmVhKiBz
Y3JvbGxhYmxlQXJlYSkKK3sKKyAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFNYXApCisgICAgICAg
IHJldHVybjsKKyAgICBpZiAocGFpbnRTdGF0dXMgPT0gT3ZlcmxheVNjcm9sbGJhckRpcnR5KQor
ICAgICAgICBtX3Njcm9sbGFibGVBcmVhTWFwQ29udGFpbnNEaXJ0eVNjcm9sbGJhcnMgPSB0cnVl
OworICAgIG1fc2Nyb2xsYWJsZUFyZWFNYXAtPnNldChzY3JvbGxhYmxlQXJlYSwgcGFpbnRTdGF0
dXMpOwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlz
aW9uIDgxNzkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
IlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAKQEAgLTkwLDYgKzkxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgZW51bSBGaW5kRGlyZWN0aW9uIHsgRmluZERpcmVjdGlvbkZvcndhcmQsIEZpbmREaXJl
Y3Rpb25CYWNrd2FyZCB9OwogCisgICAgZW51bSBPdmVybGF5U2Nyb2xsYmFyUGFpbnRTdGF0dXMg
eyBPdmVybGF5U2Nyb2xsYmFyQ2xlYW4sIE92ZXJsYXlTY3JvbGxiYXJEaXJ0eSB9OworICAgIHR5
cGVkZWYgSGFzaE1hcDxTY3JvbGxhYmxlQXJlYSosIE92ZXJsYXlTY3JvbGxiYXJQYWludFN0YXR1
cz4gU2Nyb2xsYWJsZUFyZWFNYXA7CisKICAgICBjbGFzcyBQYWdlIHsKICAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUGFnZSk7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nczsKQEAg
LTI4MCwxMSArMjg0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRK
YXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgamF2YVNjcmlwdFVS
THNBcmVBbGxvd2VkKCkgY29uc3Q7CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoU2V0PFNjcm9sbGFi
bGVBcmVhKj4gU2Nyb2xsYWJsZUFyZWFTZXQ7CiAgICAgICAgIHZvaWQgYWRkU2Nyb2xsYWJsZUFy
ZWEoU2Nyb2xsYWJsZUFyZWEqKTsKICAgICAgICAgdm9pZCByZW1vdmVTY3JvbGxhYmxlQXJlYShT
Y3JvbGxhYmxlQXJlYSopOwogICAgICAgICBib29sIGNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEoU2Ny
b2xsYWJsZUFyZWEqKSBjb25zdDsKLSAgICAgICAgY29uc3QgU2Nyb2xsYWJsZUFyZWFTZXQqIHNj
cm9sbGFibGVBcmVhU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVNldC5nZXQo
KTsgfQorICAgICAgICBjb25zdCBTY3JvbGxhYmxlQXJlYU1hcCogc2Nyb2xsYWJsZUFyZWFNYXAo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhTWFwLmdldCgpOyB9CisgICAgICAgIFNj
cm9sbGFibGVBcmVhTWFwKiBtdXRhYmxlU2Nyb2xsYWJsZUFyZWFNYXAoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbGFibGVBcmVhTWFwLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0UGFpbnRTdGF0
dXNGb3JTY3JvbGxhYmxlQXJlYShPdmVybGF5U2Nyb2xsYmFyUGFpbnRTdGF0dXMsIFNjcm9sbGFi
bGVBcmVhKik7CisgICAgICAgIGJvb2wgc2Nyb2xsYWJsZUFyZWFNYXBDb250YWluc0RpcnR5U2Ny
b2xsYmFycygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFNYXBDb250YWluc0RpcnR5
U2Nyb2xsYmFyczsgfQorICAgICAgICB2b2lkIHNldFNjcm9sbGFibGVBcmVhTWFwQWxsQ2xlYW4o
KSB7IG1fc2Nyb2xsYWJsZUFyZWFNYXBDb250YWluc0RpcnR5U2Nyb2xsYmFycyA9IGZhbHNlOyB9
CiAKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgbW9yZSB0aGFuIGEgY2VydGFpbiBudW1iZXIgb2Yg
ZnJhbWVzIGluIGEgcGFnZS4KICAgICAgICAgLy8gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJs
ZSB1cHBlciBib3VuZCwgYW5kIG90aGVyd2lzZSBtdXR1YWxseQpAQCAtMzk4LDcgKzQwNSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBkb3VibGUgbV9taW5pbXVtVGltZXJJbnRl
cnZhbDsKIAotICAgICAgICBPd25QdHI8U2Nyb2xsYWJsZUFyZWFTZXQ+IG1fc2Nyb2xsYWJsZUFy
ZWFTZXQ7CisgICAgICAgIE93blB0cjxTY3JvbGxhYmxlQXJlYU1hcD4gbV9zY3JvbGxhYmxlQXJl
YU1hcDsKKyAgICAgICAgYm9vbCBtX3Njcm9sbGFibGVBcmVhTWFwQ29udGFpbnNEaXJ0eVNjcm9s
bGJhcnM7CiAKICAgICAgICAgYm9vbCBtX2lzRWRpdGFibGU7CiAgICAgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCShyZXZpc2lvbiA4MTc5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEs
NiArMzMxLDEwIEBAIHZvaWQgU2Nyb2xsVmlldzo6bm90aWZ5UGFnZVRoYXRDb250ZW50QXIKIHsK
IH0KIAordm9pZCBTY3JvbGxWaWV3OjpwYWludERpcnR5T3ZlcmxheVNjcm9sbGJhcnMoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpCit7Cit9CisKIHZvaWQgU2Nyb2xsVmlldzo6c2V0
U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgaW50IGhvcml6b250
YWxPZmZzZXQgPSBvZmZzZXQueCgpOwpAQCAtOTQwLDYgKzk0NCw5IEBAIHZvaWQgU2Nyb2xsVmll
dzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiAKIAogICAgIHBhaW50Q29udGVudHMoY29udGV4dCwg
ZG9jdW1lbnREaXJ0eVJlY3QpOwogCisgICAgLy8gUGFpbnQgb3ZlcmxheSBzY3JvbGxiYXJzIGlu
IHRoZSBQYWdlJ3MgU2Nyb2xsYWJsZUFyZWFNYXAgdGhhdCBhcmUgZGlydHkuCisgICAgcGFpbnRE
aXJ0eU92ZXJsYXlTY3JvbGxiYXJzKGNvbnRleHQsIGRvY3VtZW50RGlydHlSZWN0KTsKKwogICAg
IGNvbnRleHQtPnJlc3RvcmUoKTsKIAogICAgIEludFJlY3QgaG9yaXpvbnRhbE92ZXJoYW5nUmVj
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHJldmlzaW9uIDgxNzkx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zm
c2V0KGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUnViYmVy
QmFuZChjb25zdCBJbnRTaXplJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VU
aGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRE
aXJ0eU92ZXJsYXlTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsK
IAogICAgIC8vIE5PVEU6IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlk
ZW4gc2V0U2Nyb2xsT2Zmc2V0IGZyb20gU2Nyb2xsYWJsZUFyZWEuCiAgICAgdmlydHVhbCB2b2lk
IHNjcm9sbFRvKGNvbnN0IEludFNpemUmIG5ld09mZnNldCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgJKHJldmlzaW9uIDgxNzkxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYg
KzExNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFBvaW50IGN1cnJlbnRNb3VzZVBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gSW50UG9pbnQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21wbGV0ZVJ1YmJlckJhbmQoY29uc3QgSW50U2l6ZSYpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmxheVNj
cm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJvbVBhZ2UoKSB7IH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lv
biA4MTc5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3OTYsNiArMTc5NiwyMiBAQCBib29sIFJlbmRlckxheWVyOjpzaG91
bGRTdXNwZW5kU2Nyb2xsQW5pCiAgICAgcmV0dXJuIHZpZXctPmZyYW1lVmlldygpLT5zaG91bGRT
dXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpOwogfQogCit2b2lkIFJlbmRlckxheWVyOjpwYWludE92
ZXJsYXlTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KQoreworICAgIGlmICghbV9oQmFyICYmICFtX3ZCYXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIEludFJlY3QgYWJzb2x1dGVCb3ggPSByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdCh0cnVlKTsKKyAgICBwb3NpdGlvbk92ZXJmbG93Q29udHJvbHMoYWJzb2x1dGVC
b3gueCgpLCBhYnNvbHV0ZUJveC55KCkpOworCisgICAgaWYgKG1faEJhcikKKyAgICAgICAgbV9o
QmFyLT5wYWludChjb250ZXh0LCBkaXJ0eVJlY3QpOworICAgIGlmIChtX3ZCYXIpCisgICAgICAg
IG1fdkJhci0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0KTsKKworICAgIHBhaW50UmVzaXplcihj
b250ZXh0LCBhYnNvbHV0ZUJveC54KCksIGFic29sdXRlQm94LnkoKSwgZGlydHlSZWN0KTsKK30K
KwogSW50UG9pbnQgUmVuZGVyTGF5ZXI6OmN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gcmVuZGVyZXIoKS0+ZnJhbWUoKSA/IHJlbmRlcmVyKCktPmZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLT5jdXJyZW50TW91c2VQb3NpdGlvbigpIDogSW50UG9pbnQoKTsKQEAgLTIx
NzEsNyArMjE4NywxMyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMo
CiAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgd2UgaGF2ZSBubyBvdmVyZmxvdy4KICAgICBp
ZiAoIXJlbmRlcmVyKCktPmhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICByZXR1cm47Ci0gICAg
CisKKyAgICAvLyBJZiB0aGUgc2Nyb2xsYmFycyBhcmUgb3ZlcmxheSwganVzdCBtYXJrIHRoZW0g
ZGlydHkuCisgICAgaWYgKGhhc092ZXJsYXlTY3JvbGxiYXJzKCkpIHsKKyAgICAgICAgbV9wYWdl
LT5zZXRQYWludFN0YXR1c0ZvclNjcm9sbGFibGVBcmVhKE92ZXJsYXlTY3JvbGxiYXJEaXJ0eSwg
dGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBNb3ZlIHRoZSBzY3JvbGxi
YXIgd2lkZ2V0cyBpZiBuZWNlc3NhcnkuICBXZSBub3JtYWxseSBtb3ZlIGFuZCByZXNpemUgd2lk
Z2V0cyBkdXJpbmcgbGF5b3V0LCBidXQgc29tZXRpbWVzCiAgICAgLy8gd2lkZ2V0cyBjYW4gbW92
ZSB3aXRob3V0IGxheW91dCBvY2N1cnJpbmcgKG1vc3Qgbm90YWJseSB3aGVuIHlvdSBzY3JvbGwg
YSBkb2N1bWVudCB0aGF0CiAgICAgLy8gY29udGFpbnMgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50
cykuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkocmV2aXNpb24g
ODE3OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI3LDYgKzUyNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBpbnQgdmlz
aWJsZVdpZHRoKCkgY29uc3Q7CiAgICAgdmlydHVhbCBJbnRQb2ludCBjdXJyZW50TW91c2VQb3Np
dGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0
aW9ucygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJsYXlTY3JvbGxiYXJzKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNj
b25uZWN0RnJvbVBhZ2UoKSB7IG1fcGFnZSA9IDA7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkocmV2aXNpb24gODE3OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
OCw3ICszMTgsMTAgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcihQYWludAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92QmFyLT53aWR0aCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVpZ2h0KCkgLSAoYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSkp
OwogICAgICAgICBtX3ZCYXItPnNldEZyYW1lUmVjdChzY3JvbGxSZWN0KTsKLSAgICAgICAgbV92
QmFyLT5wYWludChwYWludEluZm8uY29udGV4dCwgcGFpbnRJbmZvLnJlY3QpOworICAgICAgICBp
ZiAoaGFzT3ZlcmxheVNjcm9sbGJhcnMoKSkKKyAgICAgICAgICAgIG1fcGFnZS0+c2V0UGFpbnRT
dGF0dXNGb3JTY3JvbGxhYmxlQXJlYShPdmVybGF5U2Nyb2xsYmFyRGlydHksIHRoaXMpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX3ZCYXItPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBw
YWludEluZm8ucmVjdCk7CiAgICAgfQogfQogCkBAIC03NjEsNiArNzY0LDE0IEBAIGJvb2wgUmVu
ZGVyTGlzdEJveDo6c2hvdWxkU3VzcGVuZFNjcm9sbEEKICAgICByZXR1cm4gdmlldy0+ZnJhbWVW
aWV3KCktPnNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCk7CiB9CiAKK3ZvaWQgUmVuZGVy
TGlzdEJveDo6cGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3sKKyAgICBpZiAoIW1fdkJhcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV92QmFyLT5wYWludChjb250ZXh0LCBkaXJ0eVJlY3QpOworfQorCiBQ
YXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFyKCkKIHsK
ICAgICBSZWZQdHI8U2Nyb2xsYmFyPiB3aWRnZXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmgJKHJldmlzaW9uIDgxNzkxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBJbnRQb2ludCBjdXJyZW50TW91c2VQb3NpdGlvbigpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBwYWludE92ZXJsYXlTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJvbVBhZ2UoKSB7IG1fcGFn
ZSA9IDA7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86885</attachid>
            <date>2011-03-24 22:47:53 -0700</date>
            <delta_ts>2011-03-25 12:09:57 -0700</delta_ts>
            <desc>Patch that traverses layer tree again</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>12248</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxOTM5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDMtMjQgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MDU3IE92ZXJsYXkgc2Nyb2xsYmFycyBpbiBvdmVyZmxvdyAKKyAgICAgICAgYXJl
YXMgcGFpbnQgYmVoaW5kIHBvc2l0aXZlIHotaW5kZXggY29udGVudAorICAgICAgICAtYW5kIGNv
cnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDcwNTAwPgorCisgICAgICAg
IFNpbmNlIG92ZXJsYXkgc2Nyb2xsYmFycyBkb24ndCBjbGlwIHRoZSBzY3JvbGxhYmxlIGNvbnRl
bnQgbGlrZSBvdGhlciBzY3JvbGxiYXJzIGRvLCAKKyAgICAgICAgdGhlIG9ubHkgd2F5IHRvIGdl
dCB0aGVtIHRvIHBhaW50IG9uIHRvcCBvZiBhbGwgcG9zc2libGUgc2Nyb2xsYWJsZSBjb250ZW50
IGlzIHRvIAorICAgICAgICBtYWtlIHRoZW0gcGFpbnQgb24gdG9wIG9mIGV2ZXJ5dGhpbmcuIFRv
IGRvIHRoaXMsIHRoaXMgcGF0Y2ggYWRkcyBhIHNlY29uZCB0cmlwIAorICAgICAgICB0aHJvdWdo
IHRoZSBsYXllciB0cmVlIGlmIGl0IGNvbnRhaW5zIG92ZXJsYXkgc2Nyb2xsYmFycyB0aGF0IG5l
ZWQgcGFpbnRpbmcuCisKKyAgICAgICAgQWZ0ZXIgY2FsbGluZyBwYWludCgpIG9uIHRoZSByb290
TGF5ZXIsIGNhbGwgcGFpbnRPdmVybGF5U2Nyb2xsZXJzKCkgaWYgCisgICAgICAgIGNvbnRhaW5z
RGlydHlPdmVybGF5U2Nyb2xsYmFycygpIGlzIHRydWUuIAorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6CisK
KyAgICAgICAgUmVuZGVyTGF5ZXIgaGFzIHR3byBuZXcgbWVtYmVyIHZhcmlhYmxlLiBtX2NvbnRh
aW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycyBpcyBhIGJvb2wgCisgICAgICAgIHRoYXQgaXMgc2V0
IG9uIHRoZSByb290IGxheWVyIHdoZW4gaXQgaGFzIGNoaWxkIGxheWVycyB0aGF0IG5lZWQgb3Zl
cmxheSBzY3JvbGxiYXJzIAorICAgICAgICB0byBiZSBwYWludGVkLiBtX2NhY2hlZE92ZXJsYXlT
Y3JvbGxiYXJPZmZzZXQgaXMgYW4gSW50UG9pbnQgdG8gY2FjaGUgdGhlIHR4IGFuZCB0eSAKKyAg
ICAgICAgb2YgdGhlIG92ZXJsYXkgc2Nyb2xsYmFycyBvbiB0aGUgZmlyc3QgKG5vcm1hbCkgcGFz
cyB0aHJvdWdoIHRoZSBsYXllciB0cmVlLiBUaGlzIAorICAgICAgICBwcmV2ZW50cyB1cyBmcm9t
IGhhdmluZyB0byByZS1lbnRlciB0aGUgcmVuZGVyIHRyZWUgZHVyaW5nIHRoZSBzZWNvbmQgKG92
ZXJsYXktb25seSkgCisgICAgICAgIHBhc3MuIEZpbmFsbHksIHRoZXJlIGlzIGFsc28gYSBuZXcg
cGFpbnQgZmxhZzogUGFpbnRMYXllclBhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpzZXRDb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3Zl
cmZsb3dDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRPdmVy
bGF5U2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXll
cik6CisKIDIwMTEtMDMtMjQgIFN0ZXBoYW5pZSBMZXdpcyAgPHNsZXdpc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCShyZXZpc2lvbiA4MTc5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI5MSw4ICsyMjkxLDEyIEBAIHZvaWQgRnJhbWVW
aWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ28KIAogICAgIC8vIG1fbm9kZVRvRHJhdyBpcyB1
c2VkIHRvIGRyYXcgb25seSBvbmUgZWxlbWVudCAoYW5kIGl0cyBkZXNjZW5kYW50cykKICAgICBS
ZW5kZXJPYmplY3QqIGVsdFJlbmRlcmVyID0gbV9ub2RlVG9EcmF3ID8gbV9ub2RlVG9EcmF3LT5y
ZW5kZXJlcigpIDogMDsKKyAgICBSZW5kZXJMYXllciogcm9vdExheWVyID0gY29udGVudFJlbmRl
cmVyLT5sYXllcigpOwogCi0gICAgY29udGVudFJlbmRlcmVyLT5sYXllcigpLT5wYWludChwLCBy
ZWN0LCBtX3BhaW50QmVoYXZpb3IsIGVsdFJlbmRlcmVyKTsKKyAgICByb290TGF5ZXItPnBhaW50
KHAsIHJlY3QsIG1fcGFpbnRCZWhhdmlvciwgZWx0UmVuZGVyZXIpOworCisgICAgaWYgKHJvb3RM
YXllci0+Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkpCisgICAgICAgIHJvb3RMYXll
ci0+cGFpbnRPdmVybGF5U2Nyb2xsYmFycyhwLCByZWN0LCBtX3BhaW50QmVoYXZpb3IsIGVsdFJl
bmRlcmVyKTsKIAogICAgIG1faXNQYWludGluZyA9IGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDgxNzkxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1
LDYgKzE3NSw3IEBAIFJlbmRlckxheWVyOjpSZW5kZXJMYXllcihSZW5kZXJCb3hNb2RlbE8KICAg
ICAsIG1faGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KGZhbHNlKQogICAgICwgbV9tdXN0T3Zlcmxh
cENvbXBvc2l0ZWRMYXllcnMoZmFsc2UpCiAjZW5kaWYKKyAgICAsIG1fY29udGFpbnNEaXJ0eU92
ZXJsYXlTY3JvbGxiYXJzKGZhbHNlKQogICAgICwgbV9tYXJxdWVlKDApCiAgICAgLCBtX3N0YXRp
Y0lubGluZVBvc2l0aW9uKDApCiAgICAgLCBtX3N0YXRpY0Jsb2NrUG9zaXRpb24oMCkKQEAgLTIx
NjYsMTYgKzIxNjcsMzYgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TAogICAgICAgICB1cGRhdGVPdmVyZmxvd1N0YXR1cyhob3Jpem9udGFsT3ZlcmZsb3csIHZlcnRp
Y2FsT3ZlcmZsb3cpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJv
bHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgsIGludCB0eSwgY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZsb3dDb250cm9scyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50IHR5LCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0LCBib29sIHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzKQogewogICAgIC8vIERvbid0
IGRvIGFueXRoaW5nIGlmIHdlIGhhdmUgbm8gb3ZlcmZsb3cuCiAgICAgaWYgKCFyZW5kZXJlcigp
LT5oYXNPdmVyZmxvd0NsaXAoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgLy8gT3Zl
cmxheSBzY3JvbGxiYXJzIHBhaW50IGluIGEgc2Vjb25kIHBhc3MgdGhyb3VnaCB0aGUgbGF5ZXIg
dHJlZSBzbyB0aGF0IHRoZXkgd2lsbCBwYWludAorICAgIC8vIG9uIHRvcCBvZiBldmVyeXRoaW5n
IGVsc2UuIElmIHRoaXMgaXMgdGhlIG5vcm1hbCBwYWludGluZyBwYXNzLCBwYWludGluZ092ZXJs
YXlDb250cm9scworICAgIC8vIHdpbGwgYmUgZmFsc2UsIGFuZCB3ZSBzaG91bGQganVzdCB0ZWxs
IHRoZSByb290IGxheWVyIHRoYXQgdGhlcmUgYXJlIG92ZXJsYXkgc2Nyb2xsYmFycworICAgIC8v
IHRoYXQgbmVlZCB0byBiZSBwYWludGVkLiBUaGF0IHdpbGwgY2F1c2UgdGhlIHNlY29uZCBwYXNz
IHRocm91Z2ggdGhlIGxheWVyIHRyZWUgdG8gcnVuLAorICAgIC8vIGFuZCB3ZSdsbCBwYWludCB0
aGUgc2Nyb2xsYmFycyB0aGVuLiBJbiB0aGUgbWVhbnRpbWUsIGNhY2hlIHR4IGFuZCB0eSBzbyB0
aGF0IHRoZSAKKyAgICAvLyBzZWNvbmQgcGFzcyBkb2Vzbid0IG5lZWQgdG8gcmUtZW50ZXIgdGhl
IFJlbmRlclRyZWUgdG8gZ2V0IGl0IHJpZ2h0LgorICAgIGlmIChoYXNPdmVybGF5U2Nyb2xsYmFy
cygpICYmICFwYWludGluZ092ZXJsYXlDb250cm9scykgeworICAgICAgICBSZW5kZXJMYXllciog
cm9vdExheWVyID0gcmVuZGVyZXIoKS0+dmlldygpLT5sYXllcigpOworICAgICAgICByb290TGF5
ZXItPnNldENvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycyh0cnVlKTsKKyAgICAgICAgbV9j
YWNoZWRPdmVybGF5U2Nyb2xsYmFyT2Zmc2V0ID0gSW50UG9pbnQodHgsIHR5KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGludCBvZmZzZXRYID0gdHg7CisgICAgaW50IG9mZnNldFkg
PSB0eTsKKyAgICBpZiAocGFpbnRpbmdPdmVybGF5Q29udHJvbHMpIHsKKyAgICAgICAgb2Zmc2V0
WCA9IG1fY2FjaGVkT3ZlcmxheVNjcm9sbGJhck9mZnNldC54KCk7CisgICAgICAgIG9mZnNldFkg
PSBtX2NhY2hlZE92ZXJsYXlTY3JvbGxiYXJPZmZzZXQueSgpOworICAgIH0KKwogICAgIC8vIE1v
dmUgdGhlIHNjcm9sbGJhciB3aWRnZXRzIGlmIG5lY2Vzc2FyeS4gIFdlIG5vcm1hbGx5IG1vdmUg
YW5kIHJlc2l6ZSB3aWRnZXRzIGR1cmluZyBsYXlvdXQsIGJ1dCBzb21ldGltZXMKICAgICAvLyB3
aWRnZXRzIGNhbiBtb3ZlIHdpdGhvdXQgbGF5b3V0IG9jY3VycmluZyAobW9zdCBub3RhYmx5IHdo
ZW4geW91IHNjcm9sbCBhIGRvY3VtZW50IHRoYXQKICAgICAvLyBjb250YWlucyBmaXhlZCBwb3Np
dGlvbmVkIGVsZW1lbnRzKS4KLSAgICBwb3NpdGlvbk92ZXJmbG93Q29udHJvbHModHgsIHR5KTsK
KyAgICBwb3NpdGlvbk92ZXJmbG93Q29udHJvbHMob2Zmc2V0WCwgb2Zmc2V0WSk7CiAKICAgICAv
LyBOb3cgdGhhdCB3ZSdyZSBzdXJlIHRoZSBzY3JvbGxiYXJzIGFyZSBpbiB0aGUgcmlnaHQgcGxh
Y2UsIHBhaW50IHRoZW0uCiAgICAgaWYgKG1faEJhcikKQEAgLTIxODUsMTAgKzIyMDYsMTAgQEAg
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzKAogCiAgICAgLy8gV2UgZmls
bCBvdXIgc2Nyb2xsIGNvcm5lciB3aXRoIHdoaXRlIGlmIHdlIGhhdmUgYSBzY3JvbGxiYXIgdGhh
dCBkb2Vzbid0IHJ1biBhbGwgdGhlIHdheSB1cCB0byB0aGUKICAgICAvLyBlZGdlIG9mIHRoZSBi
b3guCi0gICAgcGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgdHgsIHR5LCBkYW1hZ2VSZWN0KTsK
KyAgICBwYWludFNjcm9sbENvcm5lcihjb250ZXh0LCBvZmZzZXRYLCBvZmZzZXRZLCBkYW1hZ2VS
ZWN0KTsKICAgICAKICAgICAvLyBQYWludCBvdXIgcmVzaXplciBsYXN0LCBzaW5jZSBpdCBzaXRz
IG9uIHRvcCBvZiB0aGUgc2Nyb2xsIGNvcm5lci4KLSAgICBwYWludFJlc2l6ZXIoY29udGV4dCwg
dHgsIHR5LCBkYW1hZ2VSZWN0KTsKKyAgICBwYWludFJlc2l6ZXIoY29udGV4dCwgb2Zmc2V0WCwg
b2Zmc2V0WSwgZGFtYWdlUmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xs
Q29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQgdHksIGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QpCkBAIC0yMzMxLDYgKzIzNTIsMTUgQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KgogICAgICAgICBpdC0+Zmlyc3QtPnNldE92ZXJsYXBU
ZXN0UmVzdWx0KGZhbHNlKTsKIH0KIAordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVybGF5U2Ny
b2xsYmFycyhHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFBh
aW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0ICpwYWludGluZ1Jvb3QpCit7
CisgICAgaWYgKCFtX2NvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycykKKyAgICAgICAgcmV0
dXJuOworICAgIHBhaW50TGF5ZXIodGhpcywgcCwgZGFtYWdlUmVjdCwgcGFpbnRCZWhhdmlvciwg
cGFpbnRpbmdSb290LCAwLCBQYWludExheWVySGF2ZVRyYW5zcGFyZW5jeSB8IFBhaW50TGF5ZXJU
ZW1wb3JhcnlDbGlwUmVjdHMgCisgICAgICAgICAgICAgICB8IFBhaW50TGF5ZXJQYWludGluZ092
ZXJsYXlTY3JvbGxiYXJzKTsKKyAgICBtX2NvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycyA9
IGZhbHNlOworfQorCiBzdGF0aWMgdm9pZCBzZXRDbGlwKEdyYXBoaWNzQ29udGV4dCogcCwgY29u
c3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogewog
ICAgIGlmIChwYWludERpcnR5UmVjdCA9PSBjbGlwUmVjdCkKQEAgLTI0ODEsOSArMjUxMSwxMSBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKFJlbmRlckxheWVyCiAgICAgaWYgKG92ZXJs
YXBUZXN0UmVxdWVzdHMgJiYgaXNTZWxmUGFpbnRpbmdMYXllcigpKQogICAgICAgICBwZXJmb3Jt
T3ZlcmxhcFRlc3RzKCpvdmVybGFwVGVzdFJlcXVlc3RzLCByb290TGF5ZXIsIHRoaXMpOwogCisg
ICAgYm9vbCBwYWludGluZ092ZXJsYXlTY3JvbGxiYXJzID0gcGFpbnRGbGFncyAmIFBhaW50TGF5
ZXJQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzOworCiAgICAgLy8gV2Ugd2FudCB0byBwYWludCBv
dXIgbGF5ZXIsIGJ1dCBvbmx5IGlmIHdlIGludGVyc2VjdCB0aGUgZGFtYWdlIHJlY3QuCiAgICAg
Ym9vbCBzaG91bGRQYWludCA9IGludGVyc2VjdHNEYW1hZ2VSZWN0KGxheWVyQm91bmRzLCBkYW1h
Z2VSZWN0LCByb290TGF5ZXIpICYmIG1faGFzVmlzaWJsZUNvbnRlbnQgJiYgaXNTZWxmUGFpbnRp
bmdMYXllcigpOwotICAgIGlmIChzaG91bGRQYWludCAmJiAhc2VsZWN0aW9uT25seSAmJiAhZGFt
YWdlUmVjdC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoc2hvdWxkUGFpbnQgJiYgIXNlbGVjdGlvbk9u
bHkgJiYgIWRhbWFnZVJlY3QuaXNFbXB0eSgpICYmICFwYWludGluZ092ZXJsYXlTY3JvbGxiYXJz
KSB7CiAgICAgICAgIC8vIEJlZ2luIHRyYW5zcGFyZW5jeSBsYXllcnMgbGF6aWx5IG5vdyB0aGF0
IHdlIGtub3cgd2UgaGF2ZSB0byBwYWludCBzb21ldGhpbmcuCiAgICAgICAgIGlmIChoYXZlVHJh
bnNwYXJlbmN5KQogICAgICAgICAgICAgYmVnaW5UcmFuc3BhcmVuY3lMYXllcnMocCwgcm9vdExh
eWVyLCBwYWludEJlaGF2aW9yKTsKQEAgLTI1MDQsNyArMjUzNiw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIKICAgICBwYWludExpc3QobV9uZWdaT3JkZXJMaXN0
LCByb290TGF5ZXIsIHAsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jv
b3QsIG92ZXJsYXBUZXN0UmVxdWVzdHMsIGxvY2FsUGFpbnRGbGFncyk7CiAKICAgICAvLyBOb3cg
ZXN0YWJsaXNoIHRoZSBhcHByb3ByaWF0ZSBjbGlwIGFuZCBwYWludCBvdXIgY2hpbGQgUmVuZGVy
T2JqZWN0cy4KLSAgICBpZiAoc2hvdWxkUGFpbnQgJiYgIWNsaXBSZWN0VG9BcHBseS5pc0VtcHR5
KCkpIHsKKyAgICBpZiAoc2hvdWxkUGFpbnQgJiYgIWNsaXBSZWN0VG9BcHBseS5pc0VtcHR5KCkg
JiYgIXBhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpIHsKICAgICAgICAgLy8gQmVnaW4gdHJhbnNw
YXJlbmN5IGxheWVycyBsYXppbHkgbm93IHRoYXQgd2Uga25vdyB3ZSBoYXZlIHRvIHBhaW50IHNv
bWV0aGluZy4KICAgICAgICAgaWYgKGhhdmVUcmFuc3BhcmVuY3kpCiAgICAgICAgICAgICBiZWdp
blRyYW5zcGFyZW5jeUxheWVycyhwLCByb290TGF5ZXIsIHBhaW50QmVoYXZpb3IpOwpAQCAtMjUy
OSw3ICsyNTYxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihSZW5kZXJMYXllcgog
ICAgICAgICByZXN0b3JlQ2xpcChwLCBwYWludERpcnR5UmVjdCwgY2xpcFJlY3RUb0FwcGx5KTsK
ICAgICB9CiAgICAgCi0gICAgaWYgKCFvdXRsaW5lUmVjdC5pc0VtcHR5KCkgJiYgaXNTZWxmUGFp
bnRpbmdMYXllcigpKSB7CisgICAgaWYgKCFvdXRsaW5lUmVjdC5pc0VtcHR5KCkgJiYgaXNTZWxm
UGFpbnRpbmdMYXllcigpICYmICFwYWludGluZ092ZXJsYXlTY3JvbGxiYXJzKSB7CiAgICAgICAg
IC8vIFBhaW50IG91ciBvd24gb3V0bGluZQogICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKHAs
IG91dGxpbmVSZWN0LCBQYWludFBoYXNlU2VsZk91dGxpbmUsIGZhbHNlLCBwYWludGluZ1Jvb3RG
b3JSZW5kZXJlciwgMCk7CiAgICAgICAgIHNldENsaXAocCwgcGFpbnREaXJ0eVJlY3QsIG91dGxp
bmVSZWN0KTsKQEAgLTI1NDMsNyArMjU3NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXIoUmVuZGVyTGF5ZXIKICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRy
ZW4gd2l0aCBwb3NpdGl2ZSB6LWluZGljZXMuCiAgICAgcGFpbnRMaXN0KG1fcG9zWk9yZGVyTGlz
dCwgcm9vdExheWVyLCBwLCBwYWludERpcnR5UmVjdCwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdS
b290LCBvdmVybGFwVGVzdFJlcXVlc3RzLCBsb2NhbFBhaW50RmxhZ3MpOwogICAgICAgICAKLSAg
ICBpZiAocmVuZGVyZXIoKS0+aGFzTWFzaygpICYmIHNob3VsZFBhaW50ICYmICFzZWxlY3Rpb25P
bmx5ICYmICFkYW1hZ2VSZWN0LmlzRW1wdHkoKSkgeworICAgIGlmIChyZW5kZXJlcigpLT5oYXNN
YXNrKCkgJiYgc2hvdWxkUGFpbnQgJiYgIXNlbGVjdGlvbk9ubHkgJiYgIWRhbWFnZVJlY3QuaXNF
bXB0eSgpICYmICFwYWludGluZ092ZXJsYXlTY3JvbGxiYXJzKSB7CiAgICAgICAgIHNldENsaXAo
cCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QpOwogCiAgICAgICAgIC8vIFBhaW50IHRoZSBt
YXNrLgpAQCAtMjU1NCw2ICsyNTg2LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIo
UmVuZGVyTGF5ZXIKICAgICAgICAgcmVzdG9yZUNsaXAocCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFn
ZVJlY3QpOwogICAgIH0KIAorICAgIGlmIChwYWludGluZ092ZXJsYXlTY3JvbGxiYXJzKSB7Cisg
ICAgICAgIHNldENsaXAocCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QpOworICAgICAgICBw
YWludE92ZXJmbG93Q29udHJvbHMocCwgdHgsIHR5LCBkYW1hZ2VSZWN0LCB0cnVlKTsKKyAgICAg
ICAgcmVzdG9yZUNsaXAocCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QpOworICAgIH0KKwog
ICAgIC8vIEVuZCBvdXIgdHJhbnNwYXJlbmN5IGxheWVyCiAgICAgaWYgKGhhdmVUcmFuc3BhcmVu
Y3kgJiYgbV91c2VkVHJhbnNwYXJlbmN5ICYmICFtX3BhaW50aW5nSW5zaWRlUmVmbGVjdGlvbikg
ewogICAgICAgICBwLT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHJldmlzaW9uIDgxNzkxKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoaXRUZXN0T3ZlcmZsb3dDb250cm9scyhIaXRUZXN0UmVz
dWx0JiwgY29uc3QgSW50UG9pbnQmIGxvY2FsUG9pbnQpOwogICAgIEludFNpemUgb2Zmc2V0RnJv
bVJlc2l6ZUNvcm5lcihjb25zdCBJbnRQb2ludCYgYWJzb2x1dGVQb2ludCkgY29uc3Q7CiAKLSAg
ICB2b2lkIHBhaW50T3ZlcmZsb3dDb250cm9scyhHcmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGlu
dCB0eSwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdm9pZCBwYWludE92ZXJmbG93
Q29udHJvbHMoR3JhcGhpY3NDb250ZXh0KiwgaW50IHR4LCBpbnQgdHksIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QsIGJvb2wgcGFpbnRpbmdPdmVybGF5Q29udHJvbHMgPSBmYWxzZSk7CiAgICAg
dm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSwg
Y29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CiAgICAgdm9pZCBwYWludFJlc2l6ZXIoR3JhcGhp
Y3NDb250ZXh0KiwgaW50IHR4LCBpbnQgdHksIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwog
CkBAIC0zNjEsNiArMzYxLDcgQEAgcHVibGljOgogICAgIC8vIGxheWVycyB0aGF0IGludGVyc2Vj
dCB0aGUgcG9pbnQgZnJvbSBmcm9udCB0byBiYWNrLgogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgUGFpbnRCZWhhdmlvciA9IFBhaW50
QmVoYXZpb3JOb3JtYWwsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290ID0gMCk7CiAgICAgYm9v
bCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYpOworICAgIHZv
aWQgcGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCk7
CiAKICAgICAvLyBUaGlzIG1ldGhvZCBmaWd1cmVzIG91dCBvdXIgbGF5ZXJCb3VuZHMgaW4gY29v
cmRpbmF0ZXMgcmVsYXRpdmUgdG8KICAgICAvLyB8cm9vdExheWVyfS4gIEl0IGFsc28gY29tcHV0
ZXMgb3VyIGJhY2tncm91bmQgYW5kIGZvcmVncm91bmQgY2xpcCByZWN0cwpAQCAtNDQzLDYgKzQ0
NCw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcGFpbnRzV2l0aFRyYW5zZm9ybShQYWludEJlaGF2
aW9yKSBjb25zdDsKIAorICAgIGJvb2wgY29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnM7IH0KKyAgICB2
b2lkIHNldENvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycyhib29sIGRpcnR5U2Nyb2xsYmFy
cykgeyBtX2NvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycyA9IGRpcnR5U2Nyb2xsYmFyczsg
fQorCiBwcml2YXRlOgogICAgIC8vIFRoZSBub3JtYWwgb3BlcmF0b3IgbmV3IGlzIGRpc2FsbG93
ZWQgb24gYWxsIHJlbmRlciBvYmplY3RzLgogICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qp
IHRocm93KCk7CkBAIC00NjUsNyArNDY5LDggQEAgcHJpdmF0ZToKICAgICAgICAgUGFpbnRMYXll
ckhhdmVUcmFuc3BhcmVuY3kgPSAxLAogICAgICAgICBQYWludExheWVyQXBwbGllZFRyYW5zZm9y
bSA9IDEgPDwgMSwKICAgICAgICAgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cyA9IDEgPDwg
MiwKLSAgICAgICAgUGFpbnRMYXllclBhaW50aW5nUmVmbGVjdGlvbiA9IDEgPDwgMworICAgICAg
ICBQYWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uID0gMSA8PCAzLAorICAgICAgICBQYWludExh
eWVyUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyA9IDEgPDwgNAogICAgIH07CiAgICAgCiAgICAg
dHlwZWRlZiB1bnNpZ25lZCBQYWludExheWVyRmxhZ3M7CkBAIC02ODIsNiArNjg3LDEwIEBAIHBy
b3RlY3RlZDoKICAgICBib29sIG1fbXVzdE92ZXJsYXBDb21wb3NpdGVkTGF5ZXJzIDogMTsKICNl
bmRpZgogCisgICAgYm9vbCBtX2NvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycyA6IDE7CisK
KyAgICBJbnRQb2ludCBtX2NhY2hlZE92ZXJsYXlTY3JvbGxiYXJPZmZzZXQ7CisKICAgICBSZW5k
ZXJNYXJxdWVlKiBtX21hcnF1ZWU7IC8vIFVzZWQgYnkgbGF5ZXJzIHdpdGggb3ZlcmZsb3c6bWFy
cXVlZQogICAgIAogICAgIC8vIENhY2hlZCBub3JtYWwgZmxvdyB2YWx1ZXMgZm9yIGFic29sdXRl
IHBvc2l0aW9uZWQgZWxlbWVudHMgd2l0aCBzdGF0aWMgbGVmdC90b3AgdmFsdWVzLgo=
</data>
<flag name="review"
          id="79246"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>