<?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>73754</bug_id>
          
          <creation_ts>2011-12-03 15:46:44 -0800</creation_ts>
          <short_desc>Avoid calling calculateRects in RenderLayer::paintLayer when the rectangles are not needed</short_desc>
          <delta_ts>2011-12-06 20:53:32 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dglazkov.github.com/performance-tests/biggrid.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>73714</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>514591</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-03 15:46:44 -0800</bug_when>
    <thetext>RenderLayer::paintLayer is called a lot in one of our benchmarks (I will link to it once it is available online) - easily in the order of 1.5 million calls on a sizable table with td { overflow: hidden } after scrolling for several seconds.

Currently we compute all the rectangles (clip rectangles, bounds, background...) even if we don&apos;t use them. Skipping this computation can save a lot of time due to the mere number of calls (it would be better to investigate limiting those calls in the first place but this is a separate issue).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514594</commentid>
    <comment_count>1</comment_count>
      <attachid>117774</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-03 16:05:35 -0800</bug_when>
    <thetext>Created attachment 117774
Proposed change: limit the call to calculateRects for when we need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515112</commentid>
    <comment_count>2</comment_count>
      <attachid>117774</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-12-05 08:58:22 -0800</bug_when>
    <thetext>Comment on attachment 117774
Proposed change: limit the call to calculateRects for when we need it.

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:2807
&gt; +    if (isSelfPaintingLayer &amp;&amp; !paintingOverlayScrollbars)

Can you not test m_hasVisibleContent here too?

The different tests in the different places are a bit messy. I&apos;d prefer the logic be cleaned up.

You should also look at RenderLayerBacking::paintLayer() which shares some of the same code.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2876
&gt; +    // FIXME: Shouldn&apos;t we check against shouldPaint here too to match the other branches?

I think you should try it and see if any pixel test start to fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515365</commentid>
    <comment_count>3</comment_count>
      <attachid>117774</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-05 13:40:30 -0800</bug_when>
    <thetext>Comment on attachment 117774
Proposed change: limit the call to calculateRects for when we need it.

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

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2807
&gt;&gt; +    if (isSelfPaintingLayer &amp;&amp; !paintingOverlayScrollbars)
&gt; 
&gt; Can you not test m_hasVisibleContent here too?
&gt; 
&gt; The different tests in the different places are a bit messy. I&apos;d prefer the logic be cleaned up.
&gt; 
&gt; You should also look at RenderLayerBacking::paintLayer() which shares some of the same code.

&gt; The different tests in the different places are a bit messy. I&apos;d prefer the logic be cleaned up.

Makes sense. I will start consolidating our checks to be more coherent.

&gt; You should also look at RenderLayerBacking::paintLayer() which shares some of the same code.

I completely missed this one. Let me see what can be done.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2876
&gt;&gt; +    // FIXME: Shouldn&apos;t we check against shouldPaint here too to match the other branches?
&gt; 
&gt; I think you should try it and see if any pixel test start to fail.

Good point and it does (which makes sense as our content can be outside the damage rect when our outline is not).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515566</commentid>
    <comment_count>4</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-05 18:08:43 -0800</bug_when>
    <thetext>Spending more time looking at the existing code, it looks like there is several logics overlapping in paintLayer which is why it is confusing (overlay scrollbars vs the rest for example). I would like to split paintLayer into more specialized functions but this would add a lot of code. Thus I will postpone that to a follow-up bug and will clean the logic in place for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515572</commentid>
    <comment_count>5</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-05 18:17:16 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; RenderLayer::paintLayer is called a lot in one of our benchmarks (I will link to it once it is available online) - easily in the order of 1.5 million calls on a sizable table with td { overflow: hidden } after scrolling for several seconds.

Thanks to Dimitri the benchmark is online: http://dglazkov.github.com/performance-tests/biggrid.html (compare scrolling with and without overflow: hidden using &quot;Render At Once&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515608</commentid>
    <comment_count>6</comment_count>
      <attachid>117981</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-05 19:51:56 -0800</bug_when>
    <thetext>Created attachment 117981
Proposed change 2: hopefully the |shouldPaint| logic should be clearer, also changed RenderLayerBacking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515678</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-05 23:31:58 -0800</bug_when>
    <thetext>What&apos;s the perf impact of this patch on that testcase?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516036</commentid>
    <comment_count>8</comment_count>
      <attachid>117981</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-12-06 10:49:44 -0800</bug_when>
    <thetext>Comment on attachment 117981
Proposed change 2: hopefully the |shouldPaint| logic should be clearer, also changed RenderLayerBacking.

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:2802
&gt; +    bool paintingOverlayScrollbars = paintFlags &amp; PaintLayerPaintingOverlayScrollbars;

Maybe shouldPaintOverlayScrollbars for consistency. Or remove the &apos;should&apos; from all of these.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2805
&gt; +    bool shouldPaintRenderer = m_hasVisibleContent &amp;&amp; isSelfPaintingLayer &amp;&amp; !paintingOverlayScrollbars;

I&apos;d call this shouldPaintContent

&gt; Source/WebCore/rendering/RenderLayer.cpp:2812
&gt; +        // FIXME: We compute all the rectangles when paintingOverlayScrollbars but we use only |damageRect|.

This FIXME is only interesting if calculateRects does a lot of useless work in this case.

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1100
&gt; +    bool shouldPaintRenderer = (m_owningLayer-&gt;hasVisibleContent() || m_owningLayer-&gt;hasVisibleDescendant()) &amp;&amp; m_owningLayer-&gt;isSelfPaintingLayer();

shouldPaintContent or paintContent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516046</commentid>
    <comment_count>9</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-06 11:03:23 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; What&apos;s the perf impact of this patch on that testcase?

I measured through the WebInspector&apos;s timeline + Chromium FPS overlay on a 10,000 x 25 table with overflow: hidden:
* Baseline (ToT Chromium):
 - average paint time when scrolling: 135 ms
 - FPS: ~17 FPS
* Baseline + the latest patch:
 - average paint time when scrolling: 85 ms
 - FPS: ~19 FPS (a bit less jerky but still unacceptably jerky)

The WebInspector has an overhead (which I did not try to capture) thus the values should be considered rough. However the difference seems sufficient to think that there is an underlying improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516157</commentid>
    <comment_count>10</comment_count>
      <attachid>117981</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-06 12:34:35 -0800</bug_when>
    <thetext>Comment on attachment 117981
Proposed change 2: hopefully the |shouldPaint| logic should be clearer, also changed RenderLayerBacking.

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

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2802
&gt;&gt; +    bool paintingOverlayScrollbars = paintFlags &amp; PaintLayerPaintingOverlayScrollbars;
&gt; 
&gt; Maybe shouldPaintOverlayScrollbars for consistency. Or remove the &apos;should&apos; from all of these.

I would rather keep the &apos;should&apos; as it matches our style more closely. I don&apos;t feel shouldPaintOverlayScrollbars is right here as it&apos;s not really a command, more a statement: maybe isPaintingOverlayScrollbars which matches isSelfPaintingLayer?

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2805
&gt;&gt; +    bool shouldPaintRenderer = m_hasVisibleContent &amp;&amp; isSelfPaintingLayer &amp;&amp; !paintingOverlayScrollbars;
&gt; 
&gt; I&apos;d call this shouldPaintContent

That was one of my 2 choices too (I thought Renderer was a bit better). Let&apos;s just renaming it!

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2812
&gt;&gt; +        // FIXME: We compute all the rectangles when paintingOverlayScrollbars but we use only |damageRect|.
&gt; 
&gt; This FIXME is only interesting if calculateRects does a lot of useless work in this case.

I don&apos;t know how much unneeded work it really does but it is not the first case where we do compute rectangles that we don&apos;t need so it may be a good idea to start marking the code paths. I don&apos;t feel strongly about this FIXME though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516365</commentid>
    <comment_count>11</comment_count>
      <attachid>117981</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-06 16:46:06 -0800</bug_when>
    <thetext>Comment on attachment 117981
Proposed change 2: hopefully the |shouldPaint| logic should be clearer, also changed RenderLayerBacking.

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2802
&gt;&gt;&gt; +    bool paintingOverlayScrollbars = paintFlags &amp; PaintLayerPaintingOverlayScrollbars;
&gt;&gt; 
&gt;&gt; Maybe shouldPaintOverlayScrollbars for consistency. Or remove the &apos;should&apos; from all of these.
&gt; 
&gt; I would rather keep the &apos;should&apos; as it matches our style more closely. I don&apos;t feel shouldPaintOverlayScrollbars is right here as it&apos;s not really a command, more a statement: maybe isPaintingOverlayScrollbars which matches isSelfPaintingLayer?

I decided to go with isSelfPaintingLayer for now (I will split this logic in its own function so the variable will soon disappear).

&gt;&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2812
&gt;&gt;&gt; +        // FIXME: We compute all the rectangles when paintingOverlayScrollbars but we use only |damageRect|.
&gt;&gt; 
&gt;&gt; This FIXME is only interesting if calculateRects does a lot of useless work in this case.
&gt; 
&gt; I don&apos;t know how much unneeded work it really does but it is not the first case where we do compute rectangles that we don&apos;t need so it may be a good idea to start marking the code paths. I don&apos;t feel strongly about this FIXME though.

Removed the FIXME for now as it needs more investigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516370</commentid>
    <comment_count>12</comment_count>
      <attachid>118140</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-06 16:49:59 -0800</bug_when>
    <thetext>Created attachment 118140
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516478</commentid>
    <comment_count>13</comment_count>
      <attachid>118140</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-06 20:53:27 -0800</bug_when>
    <thetext>Comment on attachment 118140
Patch for landing

Clearing flags on attachment: 118140

Committed r102217: &lt;http://trac.webkit.org/changeset/102217&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516479</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-06 20:53:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117774</attachid>
            <date>2011-12-03 16:05:35 -0800</date>
            <delta_ts>2011-12-05 19:51:52 -0800</delta_ts>
            <desc>Proposed change: limit the call to calculateRects for when we need it.</desc>
            <filename>bug-73754-20111203160534.patch</filename>
            <type>text/plain</type>
            <size>4637</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxOTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzIyMDk2Y2Y3NmEwNDNi
ZTFjZDUxNjg4NDA2ZjAzNDE0ZmVmYTA0Ny4uMmRkYjhmNGVhZjNjOTJlMzZiOTE4Mzg0NjBmMDMy
ZjBhNDhhZjAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTEyLTAzICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEF2b2lkIGNh
bGxpbmcgY2FsY3VsYXRlUmVjdHMgaW4gUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIgd2hlbiB0aGUg
cmVjdGFuZ2xlcyBhcmUgbm90IG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzM3NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQZXJmb3JtYW5jZSBjaGFuZ2UsIG5vIGNoYW5nZSBpbiBiZWhhdmlv
ci4KKworICAgICAgICBSZW5kZXJMYXllcjo6cGFpbnRMYXllciBjYW4gZWFzaWx5IGJlIGNhbGxl
ZCBhIG1pbGxpb24gdGltZSB3aGVuIHNjcm9sbGluZyBvbiBhIGJpZyB0YWJsZSB3aXRoCisgICAg
ICAgIHRkIHsgb3ZlcmZsb3c6IGhpZGRlbjsgfS4gV2Ugd291bGQgc3BlbmQgYSBsb3Qgb2YgdGlt
ZSByZWNvbXB1dGluZyB0aGUgcmVjdGFuZ2xlcyB0aGF0IHdlIG5ldmVyCisgICAgICAgIHVudXNl
ZCBmb3IgcGFpbnRpbmcgYXMgb3VyIGxheWVyIHdhcyBub3Qgc2VsZi1wYWludGluZyBhbmQgd2Ug
ZGlkIG5vdCBwYWludCBzb21lIG92ZXJsYXkgc2Nyb2xsYmFycy4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFp
bnRMYXllcik6IEF2b2lkZWQgdGhlIGNhbGwgdG8gY2FsY3VsYXRlUmVjdCBpZiB3ZSBrbm93IHdl
CisgICAgICAgIHdvbid0IG5lZWQgdG8gcmVzdWx0cy4gQWxzbyB0d2Vha2VkIHNvbWUgY29uZGl0
aW9ucyBmb3IgcGVyZm9ybWFuY2UgYnkgY29tcGFyaW5nIGFnYWluc3QKKyAgICAgICAgYm9vbGVh
bnMgZmlyc3QgYW5kIHRoZW4gdGhlIGZ1bmN0aW9uIGNhbGwuIEFkZGVkIGEgbG9jYWwgY2FjaGUg
Zm9yIHRoZSByZXN1bHQgb2YKKyAgICAgICAgaXNTZWxmUGFpbnRpbmdMYXllcigpIChyZWxhdGl2
ZWx5IGV4cGVuc2l2ZSBjYWxsIC0gZHVlIHRvIHNldmVyYWwgdmlydHVhbCBjYWxscyBpbgorICAg
ICAgICBSZW5kZXJPYmplY3QgLSB0aGF0IEkgZGlkIG5vdCB3YW50IHRvIGNhY2hlIGluIFJlbmRl
ckxheWVyIGZvciBub3cpLgorCiAyMDExLTEyLTAzICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZW5hbWUgQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZSB0byBDU1NW
YWx1ZVBvb2wuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAz
OWM1OWY3MzM0NGUyNTAxZjVlYzI1N2VmYjQ2NDYxYTFiNGUxMTA0Li5hMDNkMDIwYmNiZGU5ZjFj
Y2NjMjc0N2Y0MWMxZjk5MWM1ZDIxZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKQEAgLTI3OTgsMTIgKzI3OTgsMTYgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAg
ICAgIG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uID0gZmFsc2U7CiAgICAgfQogCi0gICAgLy8g
Q2FsY3VsYXRlIHRoZSBjbGlwIHJlY3RzIHdlIHNob3VsZCB1c2UuCisgICAgYm9vbCBpc1NlbGZQ
YWludGluZ0xheWVyID0gdGhpcy0+aXNTZWxmUGFpbnRpbmdMYXllcigpOworICAgIGJvb2wgcGFp
bnRpbmdPdmVybGF5U2Nyb2xsYmFycyA9IHBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdP
dmVybGF5U2Nyb2xsYmFyczsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUgY2xpcCByZWN0cyB3ZSBz
aG91bGQgdXNlIG9ubHkgd2hlbiB3ZSBuZWVkIHRoZW0uCiAgICAgTGF5b3V0UmVjdCBsYXllckJv
dW5kczsKICAgICBDbGlwUmVjdCBkYW1hZ2VSZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVS
ZWN0OwotICAgIGNhbGN1bGF0ZVJlY3RzKHJvb3RMYXllciwgcmVnaW9uLCBwYWludERpcnR5UmVj
dCwgbGF5ZXJCb3VuZHMsIGRhbWFnZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0bGluZVJlY3Qs
IGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpOworICAgIGlm
IChpc1NlbGZQYWludGluZ0xheWVyICYmICFwYWludGluZ092ZXJsYXlTY3JvbGxiYXJzKQorICAg
ICAgICBjYWxjdWxhdGVSZWN0cyhyb290TGF5ZXIsIHJlZ2lvbiwgcGFpbnREaXJ0eVJlY3QsIGxh
eWVyQm91bmRzLCBkYW1hZ2VSZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVSZWN0LCBsb2Nh
bFBhaW50RmxhZ3MgJiBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKTsKICAgICBMYXlvdXRQ
b2ludCBwYWludE9mZnNldCA9IHRvUG9pbnQobGF5ZXJCb3VuZHMubG9jYXRpb24oKSAtIHJlbmRl
ckJveExvY2F0aW9uKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwogICAgIC8v
IEVuc3VyZSBvdXIgbGlzdHMgYXJlIHVwLXRvLWRhdGUuCiAgICAgdXBkYXRlTGF5ZXJMaXN0c0lm
TmVlZGVkKCk7CiAKQEAgLTI4MTgsMTMgKzI4MjIsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAg
aWYgKHBhaW50aW5nUm9vdCAmJiAhcmVuZGVyZXIoKS0+aXNEZXNjZW5kYW50T2YocGFpbnRpbmdS
b290KSkKICAgICAgICAgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIgPSBwYWludGluZ1Jvb3Q7CiAK
LSAgICBpZiAob3ZlcmxhcFRlc3RSZXF1ZXN0cyAmJiBpc1NlbGZQYWludGluZ0xheWVyKCkpCisg
ICAgaWYgKG92ZXJsYXBUZXN0UmVxdWVzdHMgJiYgaXNTZWxmUGFpbnRpbmdMYXllcikKICAgICAg
ICAgcGVyZm9ybU92ZXJsYXBUZXN0cygqb3ZlcmxhcFRlc3RSZXF1ZXN0cywgcm9vdExheWVyLCB0
aGlzKTsKIAotICAgIGJvb2wgcGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyA9IHBhaW50RmxhZ3Mg
JiBQYWludExheWVyUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFyczsKLQogICAgIC8vIFdlIHdhbnQg
dG8gcGFpbnQgb3VyIGxheWVyLCBidXQgb25seSBpZiB3ZSBpbnRlcnNlY3QgdGhlIGRhbWFnZSBy
ZWN0LgotICAgIGJvb2wgc2hvdWxkUGFpbnQgPSBpbnRlcnNlY3RzRGFtYWdlUmVjdChsYXllckJv
dW5kcywgZGFtYWdlUmVjdC5yZWN0KCksIHJvb3RMYXllcikgJiYgbV9oYXNWaXNpYmxlQ29udGVu
dCAmJiBpc1NlbGZQYWludGluZ0xheWVyKCk7CisgICAgYm9vbCBzaG91bGRQYWludCA9IG1faGFz
VmlzaWJsZUNvbnRlbnQgJiYgaXNTZWxmUGFpbnRpbmdMYXllciAmJiBpbnRlcnNlY3RzRGFtYWdl
UmVjdChsYXllckJvdW5kcywgZGFtYWdlUmVjdC5yZWN0KCksIHJvb3RMYXllcik7CiAgICAgaWYg
KHNob3VsZFBhaW50ICYmICFzZWxlY3Rpb25Pbmx5ICYmICFkYW1hZ2VSZWN0LmlzRW1wdHkoKSAm
JiAhcGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykgewogICAgICAgICAvLyBCZWdpbiB0cmFuc3Bh
cmVuY3kgbGF5ZXJzIGxhemlseSBub3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgdG8gcGFpbnQgc29t
ZXRoaW5nLgogICAgICAgICBpZiAoaGF2ZVRyYW5zcGFyZW5jeSkKQEAgLTI4NzAsOCArMjg3Miw5
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwg
R3JhcGhpY3NDb250ZXh0KiBwLAogICAgICAgICAvLyBOb3cgcmVzdG9yZSBvdXIgY2xpcC4KICAg
ICAgICAgcmVzdG9yZUNsaXAocCwgcGFpbnREaXJ0eVJlY3QsIGNsaXBSZWN0VG9BcHBseSk7CiAg
ICAgfQotICAgIAotICAgIGlmICghb3V0bGluZVJlY3QuaXNFbXB0eSgpICYmIGlzU2VsZlBhaW50
aW5nTGF5ZXIoKSAmJiAhcGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykgeworCisgICAgLy8gRklY
TUU6IFNob3VsZG4ndCB3ZSBjaGVjayBhZ2FpbnN0IHNob3VsZFBhaW50IGhlcmUgdG9vIHRvIG1h
dGNoIHRoZSBvdGhlciBicmFuY2hlcz8KKyAgICBpZiAoaXNTZWxmUGFpbnRpbmdMYXllciAmJiAh
b3V0bGluZVJlY3QuaXNFbXB0eSgpICYmICFwYWludGluZ092ZXJsYXlTY3JvbGxiYXJzKSB7CiAg
ICAgICAgIC8vIFBhaW50IG91ciBvd24gb3V0bGluZQogICAgICAgICBQYWludEluZm8gcGFpbnRJ
bmZvKHAsIG91dGxpbmVSZWN0LnJlY3QoKSwgUGFpbnRQaGFzZVNlbGZPdXRsaW5lLCBmYWxzZSwg
cGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIHJlZ2lvbiwgMCk7CiAgICAgICAgIGNsaXBUb1JlY3Qo
cm9vdExheWVyLCBwLCBwYWludERpcnR5UmVjdCwgb3V0bGluZVJlY3QsIERvTm90SW5jbHVkZVNl
bGZGb3JCb3JkZXJSYWRpdXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117981</attachid>
            <date>2011-12-05 19:51:56 -0800</date>
            <delta_ts>2011-12-06 16:49:54 -0800</delta_ts>
            <desc>Proposed change 2: hopefully the |shouldPaint| logic should be clearer, also changed RenderLayerBacking.</desc>
            <filename>bug-73754-20111205195155.patch</filename>
            <type>text/plain</type>
            <size>10059</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U2MWEwYmFiYTAwM2Rh
NDFlYTJjNzEwNGJkMTgwZGFmNDhlOTcwYi4uNTIyODdjM2MzNDcxZGM0MTMyZGQ5Yjg4NTVjZDFm
NjVjODVlOGFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDExLTEyLTA1ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEF2b2lkIGNh
bGxpbmcgY2FsY3VsYXRlUmVjdHMgaW4gUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIgd2hlbiB0aGUg
cmVjdGFuZ2xlcyBhcmUgbm90IG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzM3NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQZXJmb3JtYW5jZSBjaGFuZ2UsIG5vIGNoYW5nZSBpbiBiZWhhdmlv
ci4KKworICAgICAgICBSZW5kZXJMYXllcjo6cGFpbnRMYXllciBjYW4gZWFzaWx5IGJlIGNhbGxl
ZCBhIG1pbGxpb24gdGltZSB3aGVuIHNjcm9sbGluZyBvbiBhIGJpZyB0YWJsZSB3aXRoCisgICAg
ICAgIHRkIHsgb3ZlcmZsb3c6IGhpZGRlbjsgfS4gV2Ugd291bGQgc3BlbmQgYSBsb3Qgb2YgdGlt
ZSByZWNvbXB1dGluZyB0aGUgcmVjdGFuZ2xlcyB0aGF0IHdlIG5ldmVyCisgICAgICAgIHVudXNl
ZCBmb3IgcGFpbnRpbmcgYXMgb3VyIGxheWVyIHdhcyBub3Qgc2VsZi1wYWludGluZyAoY2xpcHBp
bmcgbGF5ZXIgb25seSkgYW5kIHdlIGRpZCBub3QgcGFpbnQKKyAgICAgICAgc29tZSBvdmVybGF5
IHNjcm9sbGJhcnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICBTaW1wbGlm
aWVkIGFuZCBtb3ZlZCB0aGUgc2hvdWxkUGFpbnQgbG9naWMgZWFybGllciBpbiB0aGUgZnVuY3Rp
b24uIE5vdyB0aGUgYnJhbmNoZXMKKyAgICAgICAgYXJlIGNoZWNraW5nIHRoZSBzYW1lIGJvb2xl
YW4gd2hpY2ggbWFrZXMgdGhlIGxvZ2ljIG1vcmUgb2J2aW91cy4gQSBjb25zZXF1ZW5jZSBvZgor
ICAgICAgICBmaWxsaW5nIHNob3VsZFBhaW50IGVhcmxpZXIgaXMgdGhhdCB3ZSBjYWxsIHxjYWxj
dWxhdGVSZWN0c3wgb25seSBpZiB0aGVyZSBpcyBhIGNoYW5jZQorICAgICAgICB0aGUgcmVjdGFu
Z2xlcyB3aWxsIHVzZWQuIEFsc28gY2FjaGVkIHRoZSByZXN1bHQgb2YgaXNTZWxmUGFpbnRpbmdM
YXllcigpIGluIGEgbG9jYWwKKyAgICAgICAgdmFyaWFibGUgKGlzU2VsZlBhaW50aW5nTGF5ZXIo
KSBpcyBmYWlybHkgZXhwZW5zaXZlIGR1ZSB0byBzZXZlcmFsIHZpcnR1YWwgY2FsbHMpLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgRm9yIGNv
aGVyZW5jeSwgYXBwbGllZCB0aGUgc2FtZSBvcHRpbWl6YXRpb25zIGhlcmUgdG9vOiBhZGRlZCBh
biBlYXJseSByZXR1cm4gaW5zdGVhZAorICAgICAgICBvZiBjb25kaXRpb25hbHkgY2FsbCB8Y2Fs
Y3VsYXRlUmVjdHN8IGFzIHdlIGRvbid0IGhhdmUgdG8gcmVzdG9yZSBhbnkgY2xpcC4KKwogMjAx
MS0xMi0wNSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIG1ldGhvZHMgZGVjbGFyZWQgYnV0IG5ldmVyIGltcGxlbWVudGVkIHdpdGggR09P
R0xFVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAzOWM1
OWY3MzM0NGUyNTAxZjVlYzI1N2VmYjQ2NDYxYTFiNGUxMTA0Li5hZTk5NDc2ODU4YjAyY2RkYWEw
OTZiYTFiNmU1ZTg5YTBhMTQ0MjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKQEAgLTI3OTgsMTIgKzI3OTgsMjIgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRM
YXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAgICAg
IG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uID0gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gQ2Fs
Y3VsYXRlIHRoZSBjbGlwIHJlY3RzIHdlIHNob3VsZCB1c2UuCisgICAgYm9vbCBpc1NlbGZQYWlu
dGluZ0xheWVyID0gdGhpcy0+aXNTZWxmUGFpbnRpbmdMYXllcigpOworICAgIGJvb2wgcGFpbnRp
bmdPdmVybGF5U2Nyb2xsYmFycyA9IHBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdPdmVy
bGF5U2Nyb2xsYmFyczsKKyAgICAvLyBPdXRsaW5lIGFsd2F5cyBuZWVkcyB0byBiZSBwYWludGVk
IGV2ZW4gaWYgd2UgaGF2ZSBubyB2aXNpYmxlIGNvbnRlbnQuCisgICAgYm9vbCBzaG91bGRQYWlu
dE91dGxpbmUgPSBpc1NlbGZQYWludGluZ0xheWVyICYmICFwYWludGluZ092ZXJsYXlTY3JvbGxi
YXJzOworICAgIGJvb2wgc2hvdWxkUGFpbnRSZW5kZXJlciA9IG1faGFzVmlzaWJsZUNvbnRlbnQg
JiYgaXNTZWxmUGFpbnRpbmdMYXllciAmJiAhcGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFyczsKKwor
ICAgIC8vIENhbGN1bGF0ZSB0aGUgY2xpcCByZWN0cyB3ZSBzaG91bGQgdXNlIG9ubHkgd2hlbiB3
ZSBuZWVkIHRoZW0uCiAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kczsKICAgICBDbGlwUmVjdCBk
YW1hZ2VSZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVSZWN0OwotICAgIGNhbGN1bGF0ZVJl
Y3RzKHJvb3RMYXllciwgcmVnaW9uLCBwYWludERpcnR5UmVjdCwgbGF5ZXJCb3VuZHMsIGRhbWFn
ZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0bGluZVJlY3QsIGxvY2FsUGFpbnRGbGFncyAmIFBh
aW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpOwotICAgIExheW91dFBvaW50IHBhaW50T2Zmc2V0
ID0gdG9Qb2ludChsYXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIExheW91dFBvaW50IHBhaW50T2Zm
c2V0OworICAgIGlmIChzaG91bGRQYWludFJlbmRlcmVyIHx8IHNob3VsZFBhaW50T3V0bGluZSB8
fCBwYWludGluZ092ZXJsYXlTY3JvbGxiYXJzKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBjb21w
dXRlIGFsbCB0aGUgcmVjdGFuZ2xlcyB3aGVuIHBhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMgYnV0
IHdlIHVzZSBvbmx5IHxkYW1hZ2VSZWN0fC4KKyAgICAgICAgY2FsY3VsYXRlUmVjdHMocm9vdExh
eWVyLCByZWdpb24sIHBhaW50RGlydHlSZWN0LCBsYXllckJvdW5kcywgZGFtYWdlUmVjdCwgY2xp
cFJlY3RUb0FwcGx5LCBvdXRsaW5lUmVjdCwgbG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclRl
bXBvcmFyeUNsaXBSZWN0cyk7CisgICAgICAgIHBhaW50T2Zmc2V0ID0gdG9Qb2ludChsYXllckJv
dW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSk7CisgICAgfQorCiAgICAgLy8g
RW5zdXJlIG91ciBsaXN0cyBhcmUgdXAtdG8tZGF0ZS4KICAgICB1cGRhdGVMYXllckxpc3RzSWZO
ZWVkZWQoKTsKIApAQCAtMjgxOCwxNCArMjgyOCwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWlu
dExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogcCwKICAgICBp
ZiAocGFpbnRpbmdSb290ICYmICFyZW5kZXJlcigpLT5pc0Rlc2NlbmRhbnRPZihwYWludGluZ1Jv
b3QpKQogICAgICAgICBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciA9IHBhaW50aW5nUm9vdDsKIAot
ICAgIGlmIChvdmVybGFwVGVzdFJlcXVlc3RzICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIoKSkKKyAg
ICBpZiAob3ZlcmxhcFRlc3RSZXF1ZXN0cyAmJiBpc1NlbGZQYWludGluZ0xheWVyKQogICAgICAg
ICBwZXJmb3JtT3ZlcmxhcFRlc3RzKCpvdmVybGFwVGVzdFJlcXVlc3RzLCByb290TGF5ZXIsIHRo
aXMpOwogCi0gICAgYm9vbCBwYWludGluZ092ZXJsYXlTY3JvbGxiYXJzID0gcGFpbnRGbGFncyAm
IFBhaW50TGF5ZXJQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzOwotCiAgICAgLy8gV2Ugd2FudCB0
byBwYWludCBvdXIgbGF5ZXIsIGJ1dCBvbmx5IGlmIHdlIGludGVyc2VjdCB0aGUgZGFtYWdlIHJl
Y3QuCi0gICAgYm9vbCBzaG91bGRQYWludCA9IGludGVyc2VjdHNEYW1hZ2VSZWN0KGxheWVyQm91
bmRzLCBkYW1hZ2VSZWN0LnJlY3QoKSwgcm9vdExheWVyKSAmJiBtX2hhc1Zpc2libGVDb250ZW50
ICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIoKTsKLSAgICBpZiAoc2hvdWxkUGFpbnQgJiYgIXNlbGVj
dGlvbk9ubHkgJiYgIWRhbWFnZVJlY3QuaXNFbXB0eSgpICYmICFwYWludGluZ092ZXJsYXlTY3Jv
bGxiYXJzKSB7CisgICAgc2hvdWxkUGFpbnRSZW5kZXJlciAmPSBpbnRlcnNlY3RzRGFtYWdlUmVj
dChsYXllckJvdW5kcywgZGFtYWdlUmVjdC5yZWN0KCksIHJvb3RMYXllcik7CisgICAgaWYgKHNo
b3VsZFBhaW50UmVuZGVyZXIgJiYgIXNlbGVjdGlvbk9ubHkpIHsKICAgICAgICAgLy8gQmVnaW4g
dHJhbnNwYXJlbmN5IGxheWVycyBsYXppbHkgbm93IHRoYXQgd2Uga25vdyB3ZSBoYXZlIHRvIHBh
aW50IHNvbWV0aGluZy4KICAgICAgICAgaWYgKGhhdmVUcmFuc3BhcmVuY3kpCiAgICAgICAgICAg
ICBiZWdpblRyYW5zcGFyZW5jeUxheWVycyhwLCByb290TGF5ZXIsIHBhaW50QmVoYXZpb3IpOwpA
QCAtMjg0Niw3ICsyODU0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihSZW5kZXJM
YXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAgcGFpbnRMaXN0KG1fbmVn
Wk9yZGVyTGlzdCwgcm9vdExheWVyLCBwLCBwYWludERpcnR5UmVjdCwgcGFpbnRCZWhhdmlvciwg
cGFpbnRpbmdSb290LCByZWdpb24sIG92ZXJsYXBUZXN0UmVxdWVzdHMsIGxvY2FsUGFpbnRGbGFn
cyk7CiAKICAgICAvLyBOb3cgZXN0YWJsaXNoIHRoZSBhcHByb3ByaWF0ZSBjbGlwIGFuZCBwYWlu
dCBvdXIgY2hpbGQgUmVuZGVyT2JqZWN0cy4KLSAgICBpZiAoc2hvdWxkUGFpbnQgJiYgIWNsaXBS
ZWN0VG9BcHBseS5pc0VtcHR5KCkgJiYgIXBhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpIHsKKyAg
ICBpZiAoc2hvdWxkUGFpbnRSZW5kZXJlciAmJiAhY2xpcFJlY3RUb0FwcGx5LmlzRW1wdHkoKSkg
ewogICAgICAgICAvLyBCZWdpbiB0cmFuc3BhcmVuY3kgbGF5ZXJzIGxhemlseSBub3cgdGhhdCB3
ZSBrbm93IHdlIGhhdmUgdG8gcGFpbnQgc29tZXRoaW5nLgogICAgICAgICBpZiAoaGF2ZVRyYW5z
cGFyZW5jeSkKICAgICAgICAgICAgIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKHAsIHJvb3RMYXll
ciwgcGFpbnRCZWhhdmlvcik7CkBAIC0yODcwLDggKzI4NzgsOCBAQCB2b2lkIFJlbmRlckxheWVy
OjpwYWludExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogcCwK
ICAgICAgICAgLy8gTm93IHJlc3RvcmUgb3VyIGNsaXAuCiAgICAgICAgIHJlc3RvcmVDbGlwKHAs
IHBhaW50RGlydHlSZWN0LCBjbGlwUmVjdFRvQXBwbHkpOwogICAgIH0KLSAgICAKLSAgICBpZiAo
IW91dGxpbmVSZWN0LmlzRW1wdHkoKSAmJiBpc1NlbGZQYWludGluZ0xheWVyKCkgJiYgIXBhaW50
aW5nT3ZlcmxheVNjcm9sbGJhcnMpIHsKKworICAgIGlmIChzaG91bGRQYWludE91dGxpbmUgJiYg
IW91dGxpbmVSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAvLyBQYWludCBvdXIgb3duIG91dGxp
bmUKICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhwLCBvdXRsaW5lUmVjdC5yZWN0KCksIFBh
aW50UGhhc2VTZWxmT3V0bGluZSwgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCByZWdp
b24sIDApOwogICAgICAgICBjbGlwVG9SZWN0KHJvb3RMYXllciwgcCwgcGFpbnREaXJ0eVJlY3Qs
IG91dGxpbmVSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKQEAgLTI4ODUs
NyArMjg5Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJv
b3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBwLAogICAgIC8vIE5vdyB3YWxrIHRoZSBzb3J0ZWQg
bGlzdCBvZiBjaGlsZHJlbiB3aXRoIHBvc2l0aXZlIHotaW5kaWNlcy4KICAgICBwYWludExpc3Qo
bV9wb3NaT3JkZXJMaXN0LCByb290TGF5ZXIsIHAsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2
aW9yLCBwYWludGluZ1Jvb3QsIHJlZ2lvbiwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgbG9jYWxQYWlu
dEZsYWdzKTsKICAgICAgICAgCi0gICAgaWYgKHJlbmRlcmVyKCktPmhhc01hc2soKSAmJiBzaG91
bGRQYWludCAmJiAhc2VsZWN0aW9uT25seSAmJiAhZGFtYWdlUmVjdC5pc0VtcHR5KCkgJiYgIXBh
aW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpIHsKKyAgICBpZiAoc2hvdWxkUGFpbnRSZW5kZXJlciAm
JiByZW5kZXJlcigpLT5oYXNNYXNrKCkgJiYgIXNlbGVjdGlvbk9ubHkpIHsKICAgICAgICAgY2xp
cFRvUmVjdChyb290TGF5ZXIsIHAsIHBhaW50RGlydHlSZWN0LCBkYW1hZ2VSZWN0LCBEb05vdElu
Y2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gTWFzayBwYWludGluZyB3aWxsIGhhbmRsZSBj
bGlwcGluZyB0byBzZWxmLgogCiAgICAgICAgIC8vIFBhaW50IHRoZSBtYXNrLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBkMGU2ZTA0
MmE5NmI3N2QwZGYxMTVjNzU1MjI1ZTRlYjFmMWNmMTBjLi4xMTkyZGY3YTMwZjNlMmVlNjhjNDAw
ZDA0NTdkY2NlMjFmOTdjMWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTA5NiwxMiArMTA5NiwxNSBAQCB2b2lkIFJlbmRlckxh
eWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhp
Y3NDb250ZXh0KgogICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVyIGZvbnRDYWNoZVB1cmdlUHJl
dmVudGVyOwogICAgIAogICAgIG1fb3duaW5nTGF5ZXItPnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRl
ZCgpOwotICAgIAorCisgICAgYm9vbCBzaG91bGRQYWludFJlbmRlcmVyID0gKG1fb3duaW5nTGF5
ZXItPmhhc1Zpc2libGVDb250ZW50KCkgfHwgbV9vd25pbmdMYXllci0+aGFzVmlzaWJsZURlc2Nl
bmRhbnQoKSkgJiYgbV9vd25pbmdMYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpOworICAgIGlm
ICghc2hvdWxkUGFpbnRSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gQ2FsY3Vs
YXRlIHRoZSBjbGlwIHJlY3RzIHdlIHNob3VsZCB1c2UuCiAgICAgTGF5b3V0UmVjdCBsYXllckJv
dW5kczsKICAgICBDbGlwUmVjdCBkYW1hZ2VSZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVS
ZWN0OwogICAgIG1fb3duaW5nTGF5ZXItPmNhbGN1bGF0ZVJlY3RzKHJvb3RMYXllciwgMCwgcGFp
bnREaXJ0eVJlY3QsIGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91
dGxpbmVSZWN0KTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lvbnMuCi0KICAgICBM
YXlvdXRQb2ludCBwYWludE9mZnNldCA9IHRvUG9pbnQobGF5ZXJCb3VuZHMubG9jYXRpb24oKSAt
IG1fb3duaW5nTGF5ZXItPnJlbmRlckJveExvY2F0aW9uKCkpOwogCiAgICAgLy8gSWYgdGhpcyBs
YXllcidzIHJlbmRlcmVyIGlzIGEgY2hpbGQgb2YgdGhlIHBhaW50aW5nUm9vdCwgd2UgcmVuZGVy
IHVuY29uZGl0aW9uYWxseSwgd2hpY2gKQEAgLTExMTIsOSArMTExNSw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFw
aGljc0NvbnRleHQqCiAgICAgaWYgKHBhaW50aW5nUm9vdCAmJiAhcmVuZGVyZXIoKS0+aXNEZXNj
ZW5kYW50T2YocGFpbnRpbmdSb290KSkKICAgICAgICAgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIg
PSBwYWludGluZ1Jvb3Q7CiAKLSAgICBib29sIHNob3VsZFBhaW50ID0gKG1fb3duaW5nTGF5ZXIt
Pmhhc1Zpc2libGVDb250ZW50KCkgfHwgbV9vd25pbmdMYXllci0+aGFzVmlzaWJsZURlc2NlbmRh
bnQoKSkgJiYgbV9vd25pbmdMYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpOwotCi0gICAgaWYg
KHNob3VsZFBhaW50ICYmIChwYWludGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50QmFja2dy
b3VuZCkpIHsKKyAgICBpZiAocGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludEJhY2tn
cm91bmQpIHsKICAgICAgICAgLy8gUGFpbnQgb3VyIGJhY2tncm91bmQgZmlyc3QsIGJlZm9yZSBw
YWludGluZyBhbnkgY2hpbGQgbGF5ZXJzLgogICAgICAgICAvLyBFc3RhYmxpc2ggdGhlIGNsaXAg
dXNlZCB0byBwYWludCBvdXIgYmFja2dyb3VuZC4KICAgICAgICAgbV9vd25pbmdMYXllci0+Y2xp
cFRvUmVjdChyb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBkYW1hZ2VSZWN0LCBE
b05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKQEAgLTExMzIsNyArMTEzMyw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihSZW5kZXJMYXllciogcm9vdExh
eWVyLCBHcmFwaGljc0NvbnRleHQqCiAgICAgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IHBhaW50QmVo
YXZpb3IgJiBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQ7CiAgICAgYm9vbCBzZWxlY3Rpb25P
bmx5ICA9IHBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seTsKIAotICAg
IGlmIChzaG91bGRQYWludCAmJiAocGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludEZv
cmVncm91bmQpKSB7CisgICAgaWYgKHBhaW50aW5nUGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRG
b3JlZ3JvdW5kKSB7CiAgICAgICAgIC8vIFNldCB1cCB0aGUgY2xpcCB1c2VkIHdoZW4gcGFpbnRp
bmcgb3VyIGNoaWxkcmVuLgogICAgICAgICBtX293bmluZ0xheWVyLT5jbGlwVG9SZWN0KHJvb3RM
YXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGNsaXBSZWN0VG9BcHBseSk7CiAgICAgICAg
IFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgY2xpcFJlY3RUb0FwcGx5LnJlY3QoKSwgCkBA
IC0xMTY4LDggKzExNjksOCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5
ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KgogICAgICAgICAvLyBO
b3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0aCBwb3NpdGl2ZSB6LWluZGlj
ZXMuCiAgICAgICAgIG1fb3duaW5nTGF5ZXItPnBhaW50TGlzdChtX293bmluZ0xheWVyLT5wb3Na
T3JkZXJMaXN0KCksIHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVo
YXZpb3IsIHBhaW50aW5nUm9vdCwgMCwgMCwgMCk7CiAgICAgfQotICAgIAotICAgIGlmIChzaG91
bGRQYWludCAmJiAocGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludE1hc2spKSB7CisK
KyAgICBpZiAocGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludE1hc2spIHsKICAgICAg
ICAgaWYgKHJlbmRlcmVyKCktPmhhc01hc2soKSAmJiAhc2VsZWN0aW9uT25seSAmJiAhZGFtYWdl
UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1fb3duaW5nTGF5ZXItPmNsaXBUb1JlY3Qo
cm9vdExheWVyLCBjb250ZXh0LCBwYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCwgRG9Ob3RJbmNs
dWRlU2VsZkZvckJvcmRlclJhZGl1cyk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118140</attachid>
            <date>2011-12-06 16:49:59 -0800</date>
            <delta_ts>2011-12-06 20:53:27 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-73754-20111206164957.patch</filename>
            <type>text/plain</type>
            <size>10371</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODA5Y2Q4ZjNmNjNhYWNj
OTY4MGE3ZTQ1ZjA3ZTZhZjU2NTY3MzY1OC4uYzVmNzIwZDllMTNlOTdjMTUzNTdmYTkwZTVlYmE5
YWQxOTViZjdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDExLTEyLTA2ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEF2b2lkIGNh
bGxpbmcgY2FsY3VsYXRlUmVjdHMgaW4gUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIgd2hlbiB0aGUg
cmVjdGFuZ2xlcyBhcmUgbm90IG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzM3NTQKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFz
ZXIuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgY2hhbmdlLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3Iu
CisKKyAgICAgICAgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIgY2FuIGVhc2lseSBiZSBjYWxsZWQg
YSBtaWxsaW9uIHRpbWUgd2hlbiBzY3JvbGxpbmcgb24gYSBiaWcgdGFibGUgd2l0aAorICAgICAg
ICB0ZCB7IG92ZXJmbG93OiBoaWRkZW47IH0uIFdlIHdvdWxkIHNwZW5kIGEgbG90IG9mIHRpbWUg
cmVjb21wdXRpbmcgdGhlIHJlY3RhbmdsZXMgdGhhdCB3ZSBuZXZlcgorICAgICAgICB1bnVzZWQg
Zm9yIHBhaW50aW5nIGFzIG91ciBsYXllciB3YXMgbm90IHNlbGYtcGFpbnRpbmcgKGNsaXBwaW5n
IGxheWVyIG9ubHkpIGFuZCB3ZSBkaWQgbm90IHBhaW50CisgICAgICAgIHNvbWUgb3ZlcmxheSBz
Y3JvbGxiYXJzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToKKyAgICAgICAgU2ltcGxpZmll
ZCBhbmQgbW92ZWQgdGhlIHNob3VsZFBhaW50IGxvZ2ljIGVhcmxpZXIgaW4gdGhlIGZ1bmN0aW9u
LiBOb3cgdGhlIGJyYW5jaGVzCisgICAgICAgIGFyZSBjaGVja2luZyB0aGUgc2FtZSBib29sZWFu
IHdoaWNoIG1ha2VzIHRoZSBsb2dpYyBtb3JlIG9idmlvdXMuIEEgY29uc2VxdWVuY2Ugb2YKKyAg
ICAgICAgZmlsbGluZyBzaG91bGRQYWludCBlYXJsaWVyIGlzIHRoYXQgd2UgY2FsbCB8Y2FsY3Vs
YXRlUmVjdHN8IG9ubHkgaWYgdGhlcmUgaXMgYSBjaGFuY2UKKyAgICAgICAgdGhlIHJlY3Rhbmds
ZXMgd2lsbCB1c2VkLiBBbHNvIGNhY2hlZCB0aGUgcmVzdWx0IG9mIGlzU2VsZlBhaW50aW5nTGF5
ZXIoKSBpbiBhIGxvY2FsCisgICAgICAgIHZhcmlhYmxlIChpc1NlbGZQYWludGluZ0xheWVyKCkg
aXMgZmFpcmx5IGV4cGVuc2l2ZSBkdWUgdG8gc2V2ZXJhbCB2aXJ0dWFsIGNhbGxzKS4KKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcik6CisgICAgICAgIEZvciBjb2hl
cmVuY3ksIGFwcGxpZWQgdGhlIHNhbWUgb3B0aW1pemF0aW9ucyBoZXJlIHRvbzogYWRkZWQgYW4g
ZWFybHkgcmV0dXJuIGluc3RlYWQKKyAgICAgICAgb2YgY29uZGl0aW9uYWx5IGNhbGwgfGNhbGN1
bGF0ZVJlY3RzfCBhcyB3ZSBkb24ndCBoYXZlIHRvIHJlc3RvcmUgYW55IGNsaXAuCisKIDIwMTEt
MTItMDYgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgogCiAgICAgICAgIFdl
YlBJbWFnZURlY29kZXIgY29tcHV0ZXMgaW1hZ2Ugd2lkdGggYW5kIGhlaWdodCBtdWx0aXBsZSB0
aW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMzljNTlm
NzMzNDRlMjUwMWY1ZWMyNTdlZmI0NjQ2MWExYjRlMTEwNC4uOTYyZTk0M2UyYTMxZDY0YjcyNDc1
NTkwYWQzNGM5NzJkMGU2ZWVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCkBAIC0yNzk4LDEyICsyNzk4LDIxIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBwLAogICAgICAgICBt
X3BhaW50aW5nSW5zaWRlUmVmbGVjdGlvbiA9IGZhbHNlOwogICAgIH0KIAotICAgIC8vIENhbGN1
bGF0ZSB0aGUgY2xpcCByZWN0cyB3ZSBzaG91bGQgdXNlLgorICAgIGJvb2wgaXNTZWxmUGFpbnRp
bmdMYXllciA9IHRoaXMtPmlzU2VsZlBhaW50aW5nTGF5ZXIoKTsKKyAgICBib29sIGlzUGFpbnRp
bmdPdmVybGF5U2Nyb2xsYmFycyA9IHBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdPdmVy
bGF5U2Nyb2xsYmFyczsKKyAgICAvLyBPdXRsaW5lIGFsd2F5cyBuZWVkcyB0byBiZSBwYWludGVk
IGV2ZW4gaWYgd2UgaGF2ZSBubyB2aXNpYmxlIGNvbnRlbnQuCisgICAgYm9vbCBzaG91bGRQYWlu
dE91dGxpbmUgPSBpc1NlbGZQYWludGluZ0xheWVyICYmICFpc1BhaW50aW5nT3ZlcmxheVNjcm9s
bGJhcnM7CisgICAgYm9vbCBzaG91bGRQYWludENvbnRlbnQgPSBtX2hhc1Zpc2libGVDb250ZW50
ICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIgJiYgIWlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFyczsK
KworICAgIC8vIENhbGN1bGF0ZSB0aGUgY2xpcCByZWN0cyB3ZSBzaG91bGQgdXNlIG9ubHkgd2hl
biB3ZSBuZWVkIHRoZW0uCiAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kczsKICAgICBDbGlwUmVj
dCBkYW1hZ2VSZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVSZWN0OwotICAgIGNhbGN1bGF0
ZVJlY3RzKHJvb3RMYXllciwgcmVnaW9uLCBwYWludERpcnR5UmVjdCwgbGF5ZXJCb3VuZHMsIGRh
bWFnZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0bGluZVJlY3QsIGxvY2FsUGFpbnRGbGFncyAm
IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpOwotICAgIExheW91dFBvaW50IHBhaW50T2Zm
c2V0ID0gdG9Qb2ludChsYXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24o
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIExheW91dFBvaW50IHBhaW50
T2Zmc2V0OworICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgfHwgc2hvdWxkUGFpbnRPdXRsaW5l
IHx8IGlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykgeworICAgICAgICBjYWxjdWxhdGVSZWN0
cyhyb290TGF5ZXIsIHJlZ2lvbiwgcGFpbnREaXJ0eVJlY3QsIGxheWVyQm91bmRzLCBkYW1hZ2VS
ZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVSZWN0LCBsb2NhbFBhaW50RmxhZ3MgJiBQYWlu
dExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKTsKKyAgICAgICAgcGFpbnRPZmZzZXQgPSB0b1BvaW50
KGxheWVyQm91bmRzLmxvY2F0aW9uKCkgLSByZW5kZXJCb3hMb2NhdGlvbigpKTsKKyAgICB9CisK
ICAgICAvLyBFbnN1cmUgb3VyIGxpc3RzIGFyZSB1cC10by1kYXRlLgogICAgIHVwZGF0ZUxheWVy
TGlzdHNJZk5lZWRlZCgpOwogCkBAIC0yODE4LDE0ICsyODI3LDEyIEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBw
LAogICAgIGlmIChwYWludGluZ1Jvb3QgJiYgIXJlbmRlcmVyKCktPmlzRGVzY2VuZGFudE9mKHBh
aW50aW5nUm9vdCkpCiAgICAgICAgIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyID0gcGFpbnRpbmdS
b290OwogCi0gICAgaWYgKG92ZXJsYXBUZXN0UmVxdWVzdHMgJiYgaXNTZWxmUGFpbnRpbmdMYXll
cigpKQorICAgIGlmIChvdmVybGFwVGVzdFJlcXVlc3RzICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIp
CiAgICAgICAgIHBlcmZvcm1PdmVybGFwVGVzdHMoKm92ZXJsYXBUZXN0UmVxdWVzdHMsIHJvb3RM
YXllciwgdGhpcyk7CiAKLSAgICBib29sIHBhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMgPSBwYWlu
dEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnM7Ci0KICAgICAvLyBX
ZSB3YW50IHRvIHBhaW50IG91ciBsYXllciwgYnV0IG9ubHkgaWYgd2UgaW50ZXJzZWN0IHRoZSBk
YW1hZ2UgcmVjdC4KLSAgICBib29sIHNob3VsZFBhaW50ID0gaW50ZXJzZWN0c0RhbWFnZVJlY3Qo
bGF5ZXJCb3VuZHMsIGRhbWFnZVJlY3QucmVjdCgpLCByb290TGF5ZXIpICYmIG1faGFzVmlzaWJs
ZUNvbnRlbnQgJiYgaXNTZWxmUGFpbnRpbmdMYXllcigpOwotICAgIGlmIChzaG91bGRQYWludCAm
JiAhc2VsZWN0aW9uT25seSAmJiAhZGFtYWdlUmVjdC5pc0VtcHR5KCkgJiYgIXBhaW50aW5nT3Zl
cmxheVNjcm9sbGJhcnMpIHsKKyAgICBzaG91bGRQYWludENvbnRlbnQgJj0gaW50ZXJzZWN0c0Rh
bWFnZVJlY3QobGF5ZXJCb3VuZHMsIGRhbWFnZVJlY3QucmVjdCgpLCByb290TGF5ZXIpOworICAg
IGlmIChzaG91bGRQYWludENvbnRlbnQgJiYgIXNlbGVjdGlvbk9ubHkpIHsKICAgICAgICAgLy8g
QmVnaW4gdHJhbnNwYXJlbmN5IGxheWVycyBsYXppbHkgbm93IHRoYXQgd2Uga25vdyB3ZSBoYXZl
IHRvIHBhaW50IHNvbWV0aGluZy4KICAgICAgICAgaWYgKGhhdmVUcmFuc3BhcmVuY3kpCiAgICAg
ICAgICAgICBiZWdpblRyYW5zcGFyZW5jeUxheWVycyhwLCByb290TGF5ZXIsIHBhaW50QmVoYXZp
b3IpOwpAQCAtMjg0Niw3ICsyODUzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihS
ZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAgcGFpbnRMaXN0
KG1fbmVnWk9yZGVyTGlzdCwgcm9vdExheWVyLCBwLCBwYWludERpcnR5UmVjdCwgcGFpbnRCZWhh
dmlvciwgcGFpbnRpbmdSb290LCByZWdpb24sIG92ZXJsYXBUZXN0UmVxdWVzdHMsIGxvY2FsUGFp
bnRGbGFncyk7CiAKICAgICAvLyBOb3cgZXN0YWJsaXNoIHRoZSBhcHByb3ByaWF0ZSBjbGlwIGFu
ZCBwYWludCBvdXIgY2hpbGQgUmVuZGVyT2JqZWN0cy4KLSAgICBpZiAoc2hvdWxkUGFpbnQgJiYg
IWNsaXBSZWN0VG9BcHBseS5pc0VtcHR5KCkgJiYgIXBhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMp
IHsKKyAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50ICYmICFjbGlwUmVjdFRvQXBwbHkuaXNFbXB0
eSgpKSB7CiAgICAgICAgIC8vIEJlZ2luIHRyYW5zcGFyZW5jeSBsYXllcnMgbGF6aWx5IG5vdyB0
aGF0IHdlIGtub3cgd2UgaGF2ZSB0byBwYWludCBzb21ldGhpbmcuCiAgICAgICAgIGlmIChoYXZl
VHJhbnNwYXJlbmN5KQogICAgICAgICAgICAgYmVnaW5UcmFuc3BhcmVuY3lMYXllcnMocCwgcm9v
dExheWVyLCBwYWludEJlaGF2aW9yKTsKQEAgLTI4NzAsOCArMjg3Nyw4IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0
KiBwLAogICAgICAgICAvLyBOb3cgcmVzdG9yZSBvdXIgY2xpcC4KICAgICAgICAgcmVzdG9yZUNs
aXAocCwgcGFpbnREaXJ0eVJlY3QsIGNsaXBSZWN0VG9BcHBseSk7CiAgICAgfQotICAgIAotICAg
IGlmICghb3V0bGluZVJlY3QuaXNFbXB0eSgpICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIoKSAmJiAh
cGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykgeworCisgICAgaWYgKHNob3VsZFBhaW50T3V0bGlu
ZSAmJiAhb3V0bGluZVJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFBhaW50IG91ciBvd24g
b3V0bGluZQogICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKHAsIG91dGxpbmVSZWN0LnJlY3Qo
KSwgUGFpbnRQaGFzZVNlbGZPdXRsaW5lLCBmYWxzZSwgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIs
IHJlZ2lvbiwgMCk7CiAgICAgICAgIGNsaXBUb1JlY3Qocm9vdExheWVyLCBwLCBwYWludERpcnR5
UmVjdCwgb3V0bGluZVJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOwpAQCAt
Mjg4NSw3ICsyODkyLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihSZW5kZXJMYXll
ciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAgLy8gTm93IHdhbGsgdGhlIHNv
cnRlZCBsaXN0IG9mIGNoaWxkcmVuIHdpdGggcG9zaXRpdmUgei1pbmRpY2VzLgogICAgIHBhaW50
TGlzdChtX3Bvc1pPcmRlckxpc3QsIHJvb3RMYXllciwgcCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50
QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgcmVnaW9uLCBvdmVybGFwVGVzdFJlcXVlc3RzLCBsb2Nh
bFBhaW50RmxhZ3MpOwogICAgICAgICAKLSAgICBpZiAocmVuZGVyZXIoKS0+aGFzTWFzaygpICYm
IHNob3VsZFBhaW50ICYmICFzZWxlY3Rpb25Pbmx5ICYmICFkYW1hZ2VSZWN0LmlzRW1wdHkoKSAm
JiAhcGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykgeworICAgIGlmIChzaG91bGRQYWludENvbnRl
bnQgJiYgcmVuZGVyZXIoKS0+aGFzTWFzaygpICYmICFzZWxlY3Rpb25Pbmx5KSB7CiAgICAgICAg
IGNsaXBUb1JlY3Qocm9vdExheWVyLCBwLCBwYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCwgRG9O
b3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7IC8vIE1hc2sgcGFpbnRpbmcgd2lsbCBoYW5k
bGUgY2xpcHBpbmcgdG8gc2VsZi4KIAogICAgICAgICAvLyBQYWludCB0aGUgbWFzay4KQEAgLTI4
OTYsNyArMjkwMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIq
IHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBwLAogICAgICAgICByZXN0b3JlQ2xpcChwLCBw
YWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCk7CiAgICAgfQogCi0gICAgaWYgKHBhaW50aW5nT3Zl
cmxheVNjcm9sbGJhcnMpIHsKKyAgICBpZiAoaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzKSB7
CiAgICAgICAgIGNsaXBUb1JlY3Qocm9vdExheWVyLCBwLCBwYWludERpcnR5UmVjdCwgZGFtYWdl
UmVjdCk7CiAgICAgICAgIHBhaW50T3ZlcmZsb3dDb250cm9scyhwLCBwYWludE9mZnNldCwgZGFt
YWdlUmVjdC5yZWN0KCksIHRydWUpOwogICAgICAgICByZXN0b3JlQ2xpcChwLCBwYWludERpcnR5
UmVjdCwgZGFtYWdlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCmluZGV4IGQwZTZlMDQyYTk2Yjc3ZDBkZjExNWM3NTUyMjVlNGViMWYx
Y2YxMGMuLjQwYmY3ODU2MWZhNThjMTdiM2RkZjllNWNjMWZkODRmOTA2YzBlNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDk2
LDEyICsxMDk2LDE1IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihS
ZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqCiAgICAgRm9udENhY2hlUHVy
Z2VQcmV2ZW50ZXIgZm9udENhY2hlUHVyZ2VQcmV2ZW50ZXI7CiAgICAgCiAgICAgbV9vd25pbmdM
YXllci0+dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7Ci0gICAgCisKKyAgICBib29sIHNob3Vs
ZFBhaW50Q29udGVudCA9IChtX293bmluZ0xheWVyLT5oYXNWaXNpYmxlQ29udGVudCgpIHx8IG1f
b3duaW5nTGF5ZXItPmhhc1Zpc2libGVEZXNjZW5kYW50KCkpICYmIG1fb3duaW5nTGF5ZXItPmlz
U2VsZlBhaW50aW5nTGF5ZXIoKTsKKyAgICBpZiAoIXNob3VsZFBhaW50Q29udGVudCkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBjbGlwIHJlY3RzIHdlIHNob3VsZCB1
c2UuCiAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kczsKICAgICBDbGlwUmVjdCBkYW1hZ2VSZWN0
LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVSZWN0OwogICAgIG1fb3duaW5nTGF5ZXItPmNhbGN1
bGF0ZVJlY3RzKHJvb3RMYXllciwgMCwgcGFpbnREaXJ0eVJlY3QsIGxheWVyQm91bmRzLCBkYW1h
Z2VSZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVSZWN0KTsgLy8gRklYTUU6IEluY29ycmVj
dCBmb3IgQ1NTIHJlZ2lvbnMuCi0KICAgICBMYXlvdXRQb2ludCBwYWludE9mZnNldCA9IHRvUG9p
bnQobGF5ZXJCb3VuZHMubG9jYXRpb24oKSAtIG1fb3duaW5nTGF5ZXItPnJlbmRlckJveExvY2F0
aW9uKCkpOwogCiAgICAgLy8gSWYgdGhpcyBsYXllcidzIHJlbmRlcmVyIGlzIGEgY2hpbGQgb2Yg
dGhlIHBhaW50aW5nUm9vdCwgd2UgcmVuZGVyIHVuY29uZGl0aW9uYWxseSwgd2hpY2gKQEAgLTEx
MTIsOSArMTExNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihS
ZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqCiAgICAgaWYgKHBhaW50aW5n
Um9vdCAmJiAhcmVuZGVyZXIoKS0+aXNEZXNjZW5kYW50T2YocGFpbnRpbmdSb290KSkKICAgICAg
ICAgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIgPSBwYWludGluZ1Jvb3Q7CiAKLSAgICBib29sIHNo
b3VsZFBhaW50ID0gKG1fb3duaW5nTGF5ZXItPmhhc1Zpc2libGVDb250ZW50KCkgfHwgbV9vd25p
bmdMYXllci0+aGFzVmlzaWJsZURlc2NlbmRhbnQoKSkgJiYgbV9vd25pbmdMYXllci0+aXNTZWxm
UGFpbnRpbmdMYXllcigpOwotCi0gICAgaWYgKHNob3VsZFBhaW50ICYmIChwYWludGluZ1BoYXNl
ICYgR3JhcGhpY3NMYXllclBhaW50QmFja2dyb3VuZCkpIHsKKyAgICBpZiAocGFpbnRpbmdQaGFz
ZSAmIEdyYXBoaWNzTGF5ZXJQYWludEJhY2tncm91bmQpIHsKICAgICAgICAgLy8gUGFpbnQgb3Vy
IGJhY2tncm91bmQgZmlyc3QsIGJlZm9yZSBwYWludGluZyBhbnkgY2hpbGQgbGF5ZXJzLgogICAg
ICAgICAvLyBFc3RhYmxpc2ggdGhlIGNsaXAgdXNlZCB0byBwYWludCBvdXIgYmFja2dyb3VuZC4K
ICAgICAgICAgbV9vd25pbmdMYXllci0+Y2xpcFRvUmVjdChyb290TGF5ZXIsIGNvbnRleHQsIHBh
aW50RGlydHlSZWN0LCBkYW1hZ2VSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVz
KTsKQEAgLTExMzIsNyArMTEzMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludElu
dG9MYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqCiAgICAgYm9v
bCBmb3JjZUJsYWNrVGV4dCA9IHBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRm9yY2VCbGFj
a1RleHQ7CiAgICAgYm9vbCBzZWxlY3Rpb25Pbmx5ICA9IHBhaW50QmVoYXZpb3IgJiBQYWludEJl
aGF2aW9yU2VsZWN0aW9uT25seTsKIAotICAgIGlmIChzaG91bGRQYWludCAmJiAocGFpbnRpbmdQ
aGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludEZvcmVncm91bmQpKSB7CisgICAgaWYgKHBhaW50aW5n
UGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRGb3JlZ3JvdW5kKSB7CiAgICAgICAgIC8vIFNldCB1
cCB0aGUgY2xpcCB1c2VkIHdoZW4gcGFpbnRpbmcgb3VyIGNoaWxkcmVuLgogICAgICAgICBtX293
bmluZ0xheWVyLT5jbGlwVG9SZWN0KHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3Qs
IGNsaXBSZWN0VG9BcHBseSk7CiAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwg
Y2xpcFJlY3RUb0FwcGx5LnJlY3QoKSwgCkBAIC0xMTY4LDggKzExNjksOCBAQCB2b2lkIFJlbmRl
ckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3Jh
cGhpY3NDb250ZXh0KgogICAgICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hp
bGRyZW4gd2l0aCBwb3NpdGl2ZSB6LWluZGljZXMuCiAgICAgICAgIG1fb3duaW5nTGF5ZXItPnBh
aW50TGlzdChtX293bmluZ0xheWVyLT5wb3NaT3JkZXJMaXN0KCksIHJvb3RMYXllciwgY29udGV4
dCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgMCwgMCwgMCk7
CiAgICAgfQotICAgIAotICAgIGlmIChzaG91bGRQYWludCAmJiAocGFpbnRpbmdQaGFzZSAmIEdy
YXBoaWNzTGF5ZXJQYWludE1hc2spKSB7CisKKyAgICBpZiAocGFpbnRpbmdQaGFzZSAmIEdyYXBo
aWNzTGF5ZXJQYWludE1hc2spIHsKICAgICAgICAgaWYgKHJlbmRlcmVyKCktPmhhc01hc2soKSAm
JiAhc2VsZWN0aW9uT25seSAmJiAhZGFtYWdlUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IG1fb3duaW5nTGF5ZXItPmNsaXBUb1JlY3Qocm9vdExheWVyLCBjb250ZXh0LCBwYWludERpcnR5
UmVjdCwgZGFtYWdlUmVjdCwgRG9Ob3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>