<?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>127021</bug_id>
          
          <creation_ts>2014-01-14 16:51:50 -0800</creation_ts>
          <short_desc>Repeating background images should continue into margin tiles</short_desc>
          <delta_ts>2014-01-16 11:30:29 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>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>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>ossy</cc>
    
    <cc>peavo</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>968098</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-01-14 16:51:50 -0800</bug_when>
    <thetext>When the TileController is configured to have margin tiles, repeating background images should continue to repaint in those tiles.

&lt;rdar://problem/15571300&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968104</commentid>
    <comment_count>1</comment_count>
      <attachid>221215</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-01-14 17:20:57 -0800</bug_when>
    <thetext>Created attachment 221215
Patch

I did a ton of manual testing. I think it would be really good to finally add LayoutTests for this stuff, but I figured I would post this patch in the meantime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968478</commentid>
    <comment_count>2</comment_count>
      <attachid>221215</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-15 14:53:15 -0800</bug_when>
    <thetext>Comment on attachment 221215
Patch

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

&gt; Source/WebCore/page/FrameView.h:197
&gt; +    bool hasExtendedBackground();
&gt; +    IntRect extendedBackgroundRect();

Both should be const. I would like to see extendedBackgroundRect() have a comment saying what coordinate system the rect is in.

&gt; Source/WebCore/rendering/RenderBox.cpp:1603
&gt; +                if (rectToRepaint.width() == rendererRect.width()) {
&gt; +                    rectToRepaint.move(extendedBackgroundRect.x(), 0);
&gt; +                    rectToRepaint.setWidth(extendedBackgroundRect.width());
&gt; +                }
&gt; +                if (rectToRepaint.height() == rendererRect.height()) {
&gt; +                    rectToRepaint.move(0, extendedBackgroundRect.y());
&gt; +                    rectToRepaint.setHeight(extendedBackgroundRect.height());
&gt; +                }

It seems a bit arbitrary to say &quot;if we&apos;re invalidating the width, just invalidate the extended width&quot;. What about a non-repeating animating background image that is projecting into the left margin but not the right?

I think the background geometry code needs to know about extended rects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968504</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-01-15 15:43:28 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 221215 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221215&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/FrameView.h:197
&gt; &gt; +    bool hasExtendedBackground();
&gt; &gt; +    IntRect extendedBackgroundRect();
&gt; 
&gt; Both should be const. I would like to see extendedBackgroundRect() have a comment saying what coordinate system the rect is in.
&gt; 

Done.

&gt; &gt; Source/WebCore/rendering/RenderBox.cpp:1603
&gt; &gt; +                if (rectToRepaint.width() == rendererRect.width()) {
&gt; &gt; +                    rectToRepaint.move(extendedBackgroundRect.x(), 0);
&gt; &gt; +                    rectToRepaint.setWidth(extendedBackgroundRect.width());
&gt; &gt; +                }
&gt; &gt; +                if (rectToRepaint.height() == rendererRect.height()) {
&gt; &gt; +                    rectToRepaint.move(0, extendedBackgroundRect.y());
&gt; &gt; +                    rectToRepaint.setHeight(extendedBackgroundRect.height());
&gt; &gt; +                }
&gt; 
&gt; It seems a bit arbitrary to say &quot;if we&apos;re invalidating the width, just invalidate the extended width&quot;. What about a non-repeating animating background image that is projecting into the left margin but not the right?
&gt; 
&gt; I think the background geometry code needs to know about extended rects.

I will file a follow-up bug for this. The performance penalty for over-invalidation is probably pretty small in the long run since a repeating background image like you&apos;ve described is probably unlikely to be very common in the real world. But it would be nice to be fully-optimized here.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968505</commentid>
    <comment_count>4</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-01-15 15:47:36 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/162098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968751</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-01-16 07:26:12 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; http://trac.webkit.org/changeset/162098

It broke the WinCairo build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968831</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-01-16 11:30:29 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; http://trac.webkit.org/changeset/162098
&gt; 
&gt; It broke the WinCairo build.

Speculative build fix: http://trac.webkit.org/changeset/162138</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221215</attachid>
            <date>2014-01-14 17:20:57 -0800</date>
            <delta_ts>2014-01-15 14:53:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>18761</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MjAyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE0LTAxLTE0ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBlYXRpbmcgYmFja2dyb3VuZCBp
bWFnZXMgc2hvdWxkIGNvbnRpbnVlIGludG8gbWFyZ2luIHRpbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwMjEKKyAgICAgICAgLWFuZCBjb3Jy
ZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU1NzEzMDA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBy
ZXBlYXRpbmcgYmFja2dyb3VuZCBpbWFnZXMgY29udGludWUgaW50byBtYXJnaW4gdGlsZXMuIAor
CisgICAgICAgIFJlbmRlck9iamVjdDo6cmVwYWludFJlY3RhbmdsZSgpIG5vdyB0YWtlcyBhbiBh
ZGRpdGlvbiBib29sIHBhcmFtZXRlciB3aGljaCAKKyAgICAgICAgaW5kaWNhdGVzIHdoZXRoZXIg
b3Igbm90IHRoZSByZXBhaW50IHJlY3Qgc2hvdWxkIGJlIGNsaXBwZWQgdG8gdGhlIGxheWVyIHNp
emUuCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisKKyAgICAgICAgVGhlc2UgbmV3IGZ1bmN0
aW9ucyBvbiBGcmFtZVZpZXcgcHJvdmlkZSBhIHdheSBmb3IgY29kZSBpbiB0aGUgcmVuZGVyIHRy
ZWUgdG8ga25vdyAKKyAgICAgICAgaWYgdGhlIFRpbGVkQmFja2luZyBoYXMgYSBtYXJnaW4uCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpoYXNFeHRlbmRlZEJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpl
eHRlbmRlZEJhY2tncm91bmRSZWN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorCisg
ICAgICAgIElmIHdl4oCZcmUgcGFpbnRpbmcgdGhlIHJvb3QgYmFja2dyb3VuZCBhbmQgaXQgaXMg
YW4gZXh0ZW5kZWQgYmFja2dyb3VuZCwgd2UgbmVlZCB0byAKKyAgICAgICAgaW5mbGF0ZSB0aGUg
cmVwYWludCByZWN0IHRvIHNwYW4gdGhlIGV4dGVuZGVkIGJhY2tncm91bmQuIAorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpy
ZXBhaW50TGF5ZXJSZWN0c0ZvckltYWdlKToKKworICAgICAgICBUbyBnZXQgdGhlIHBoYXNlIHJp
Z2h0IG9uIHJlcGVhdGVkIGJhY2tncm91bmQgaW1hZ2VzIG9uIGEgcGFnZSB3aXRoIG1hcmdpbiB0
aWxlcywgCisgICAgICAgIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGZhY3RvciB0aGUgc2l6ZSBv
ZiB0aGUgbWFyZ2luIHRpbGVzIGludG8gdGhlIGxlZnQgYW5kIHRvcCAKKyAgICAgICAgdmFsdWVz
IHRoYXQgd2UgdXNlIHdoZW4gY2FsY3VsYXRpbmcgYmFja2dyb3VuZCBpbWFnZSBnZW9tZXRyeS4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdl
b21ldHJ5KToKKworICAgICAgICBzZXRCYWNraW5nTmVlZHNSZXBhaW50SW5SZWN0KCkgbm93IHRh
a2VzIEdyYXBoaWNzTGF5ZXI6OlNob3VsZENsaXBUb0xheWVyIGFzIGEgCisgICAgICAgIHBhcmFt
ZXRlciwganVzdCBsaWtlIHNldEJhY2tpbmdOZWVkc1JlcGFpbnQoKS4gCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpj
YWxjdWxhdGVDbGlwUmVjdHMpOgorCisgICAgICAgIHNldENvbnRlbnRzTmVlZERpc3BsYXlJblJl
Y3QoKSBhbHNvIHRha2VzIGEgR3JhcGhpY3NMYXllcjo6U2hvdWxkQ2xpcFRvTGF5ZXIgbm93LCAK
KyAgICAgICAgYW5kIGl0IHBhc3NlcyB0aGF0IGluZm9ybWF0aW9uIGRvd24gdG8gdGhlIEdyYXBo
aWNzTGF5ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKworICAgICAgICBUaGVzZSB0d28gUmVu
ZGVyT2JqZWN0IGZ1bmN0aW9ucyBub3cgdGFrZSBhbiBvcHRpb25hbCBib29sIHBhcmFtZXRlciB3
aGljaCAKKyAgICAgICAgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSByZWN0IHNob3VsZCBi
ZSBjbGlwcGVkIHRvIHRoZSBsYXllciBzaXplLiBUaGV5IHVzZSBhIAorICAgICAgICBib29sIGlu
c3RlYWQgb2YgdGhlIEdyYXBoaWNzTGF5ZXIgZW51bSBpbiBvcmRlciB0byBhdm9pZCBpbmNsdWRp
bmcgR3JhcGhpY3NMYXllci5oIAorICAgICAgICBmcm9tIHdpdGhpbiBSZW5kZXJPYmplY3QuaC4g
VGhpcyBzZWVtcyBsaWtlIGEgc2ltcGxlciBzb2x1dGlvbiB0aGFuIGFkZGluZyBhIG5ldyAKKyAg
ICAgICAgc3RhbmQtYWxvbmUgZmlsZSBmb3IgdGhpcyB2ZXJ5IHNpbXBsZSBlbnVtLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpyZXBhaW50VXNpbmdDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpyZXBhaW50UmVjdGFuZ2xlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0Lmg6CisKKyAgICAgICAgUmVuZGVyVmlldzo6YmFja2dyb3VuZFJlY3QgbmVlZHMgdG8gcmV0
dXJuIHRoZSBleHRlbmRlZEJhY2tncm91bmRSZWN0IHdoZW4gaXQgaGFkIAorICAgICAgICBvbmUu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVmlldzo6YmFja2dyb3VuZFJlY3QpOgorCiAyMDE0LTAxLTE0ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIFBMQVRGT1JNKCkgbWFj
cm9zIGluIGV4cG9ydGVkIGhlYWRlcnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNp
b24gMTYxOTg2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMjF2aXNp
dGVkRGVwZW4KIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlNGZvbnRFdgogX19aTks3V2ViQ29y
ZTEyUmVuZGVyT2JqZWN0MTRlbmNsb3NpbmdMYXllckV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJP
YmplY3QxNWxvY2FsVG9BYnNvbHV0ZUVSS05TXzEwRmxvYXRQb2ludEVqCi1fX1pOSzdXZWJDb3Jl
MTJSZW5kZXJPYmplY3QxNnJlcGFpbnRSZWN0YW5nbGVFUktOU18xMExheW91dFJlY3RFYgorX19a
Tks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfMTBMYXlvdXRS
ZWN0RWJiCiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyMGxvY2FsVG9Db250YWluZXJRdWFk
RVJLTlNfOUZsb2F0UXVhZEVQS05TXzIyUmVuZGVyTGF5ZXJNb2RlbE9iamVjdEVqUGIKIF9fWk5L
N1dlYkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgogX19aTks3
V2ViQ29yZTEyUmVuZGVyT2JqZWN0MzlwaXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxv
d1JlY3RFdgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTYxOTg2
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNjQ1LDYgKzI2NDUsMjcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJhY2tncm91bmRSZWN1
cnNpdgogICAgIH0KIH0KIAorYm9vbCBGcmFtZVZpZXc6Omhhc0V4dGVuZGVkQmFja2dyb3VuZCgp
Cit7CisgICAgaWYgKCFmcmFtZSgpLnNldHRpbmdzKCkuYmFja2dyb3VuZFNob3VsZEV4dGVuZEJl
eW9uZFBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVGlsZWRCYWNraW5nKiB0
aWxlZEJhY2tpbmcgPSB0aGlzLT50aWxlZEJhY2tpbmcoKTsKKyAgICBpZiAoIXRpbGVkQmFja2lu
ZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRpbGVkQmFja2luZy0+aGFz
TWFyZ2lucygpOworfQorCitJbnRSZWN0IEZyYW1lVmlldzo6ZXh0ZW5kZWRCYWNrZ3JvdW5kUmVj
dCgpCit7CisgICAgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcgPSB0aGlzLT50aWxlZEJhY2tp
bmcoKTsKKyAgICBpZiAoIXRpbGVkQmFja2luZykKKyAgICAgICAgcmV0dXJuIEludFJlY3QoKTsK
KworICAgIHJldHVybiB0aWxlZEJhY2tpbmctPmJvdW5kcygpOworfQorCiBib29sIEZyYW1lVmll
dzo6c2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW4oKSBjb25zdAogewogICAgIHJldHVybiBtX3No
b3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCShy
ZXZpc2lvbiAxNjE5ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTMsNiArMTkzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFzZUJh
Y2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgdXBkYXRlQmFja2dyb3VuZFJl
Y3Vyc2l2ZWx5KGNvbnN0IENvbG9yJiwgYm9vbCk7CiAKKyAgICBib29sIGhhc0V4dGVuZGVkQmFj
a2dyb3VuZCgpOworICAgIEludFJlY3QgZXh0ZW5kZWRCYWNrZ3JvdW5kUmVjdCgpOworCiAgICAg
Ym9vbCBzaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbigpIGNvbnN0OwogICAgIHZvaWQgc2V0U2hv
dWxkVXBkYXRlV2hpbGVPZmZzY3JlZW4oYm9vbCk7CiAgICAgYm9vbCBzaG91bGRVcGRhdGUoYm9v
bCA9IGZhbHNlKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCShyZXZpc2lvbiAxNjE5ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1Nyw4ICsxNTU3LDggQEAgYm9vbCBSZW5kZXJC
b3g6OnJlcGFpbnRMYXllclJlY3RzRm9ySW1hZwogICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBj
dXJMYXllciA9IGxheWVyczsgY3VyTGF5ZXI7IGN1ckxheWVyID0gY3VyTGF5ZXItPm5leHQoKSkg
ewogICAgICAgICBpZiAoY3VyTGF5ZXItPmltYWdlKCkgJiYgaW1hZ2UgPT0gY3VyTGF5ZXItPmlt
YWdlKCktPmRhdGEoKSAmJiBjdXJMYXllci0+aW1hZ2UoKS0+Y2FuUmVuZGVyKHRoaXMsIHN0eWxl
KCkuZWZmZWN0aXZlWm9vbSgpKSkgewogICAgICAgICAgICAgLy8gTm93IHRoYXQgd2Uga25vdyB0
aGlzIGltYWdlIGlzIGJlaW5nIHVzZWQsIGNvbXB1dGUgdGhlIHJlbmRlcmVyIGFuZCB0aGUgcmVj
dCBpZiB3ZSBoYXZlbid0IGFscmVhZHkuCisgICAgICAgICAgICBib29sIGRyYXdpbmdSb290QmFj
a2dyb3VuZCA9IGRyYXdpbmdCYWNrZ3JvdW5kICYmIChpc1Jvb3QoKSB8fCAoaXNCb2R5KCkgJiYg
IWRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCktPmhhc0JhY2tncm91bmQo
KSkpOwogICAgICAgICAgICAgaWYgKCFsYXllclJlbmRlcmVyKSB7Ci0gICAgICAgICAgICAgICAg
Ym9vbCBkcmF3aW5nUm9vdEJhY2tncm91bmQgPSBkcmF3aW5nQmFja2dyb3VuZCAmJiAoaXNSb290
KCkgfHwgKGlzQm9keSgpICYmICFkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJl
cigpLT5oYXNCYWNrZ3JvdW5kKCkpKTsKICAgICAgICAgICAgICAgICBpZiAoZHJhd2luZ1Jvb3RC
YWNrZ3JvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIGxheWVyUmVuZGVyZXIgPSAmdmlldygp
OwogCkBAIC0xNTg0LDcgKzE1ODQsMjYgQEAgYm9vbCBSZW5kZXJCb3g6OnJlcGFpbnRMYXllclJl
Y3RzRm9ySW1hZwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBsYXllclJlbmRlcmVyLT5yZXBhaW50UmVjdGFuZ2xl
KGdlb21ldHJ5LmRlc3RSZWN0KCkpOworICAgICAgICAgICAgSW50UmVjdCByZWN0VG9SZXBhaW50
ID0gZ2VvbWV0cnkuZGVzdFJlY3QoKTsKKyAgICAgICAgICAgIGJvb2wgc2hvdWxkQ2xpcFRvTGF5
ZXIgPSB0cnVlOworCisgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSByb290IGJhY2tncm91
bmQgbGF5ZXIsIHdlIG1heSBuZWVkIHRvIGV4dGVuZCB0aGUgcmVwYWludFJlY3QgaWYgdGhlIEZy
YW1lVmlldyBoYXMgYW4KKyAgICAgICAgICAgIC8vIGV4dGVuZGVkQmFja2dyb3VuZC4gV2Ugc2hv
dWxkIG9ubHkgZXh0ZW5kIHRoZSByZWN0IGlmIGl0IGlzIGFscmVhZHkgZXh0ZW5kaW5nIHRoZSBm
dWxsIHdpZHRoIG9yIGhlaWdodAorICAgICAgICAgICAgLy8gb2YgdGhlIHJlbmRlcmVyUmVjdC4K
KyAgICAgICAgICAgIGlmIChkcmF3aW5nUm9vdEJhY2tncm91bmQgJiYgdmlldygpLmZyYW1lVmll
dygpLmhhc0V4dGVuZGVkQmFja2dyb3VuZCgpKSB7CisgICAgICAgICAgICAgICAgc2hvdWxkQ2xp
cFRvTGF5ZXIgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IGV4dGVuZGVkQmFja2dy
b3VuZFJlY3QgPSB2aWV3KCkuZnJhbWVWaWV3KCkuZXh0ZW5kZWRCYWNrZ3JvdW5kUmVjdCgpOwor
ICAgICAgICAgICAgICAgIGlmIChyZWN0VG9SZXBhaW50LndpZHRoKCkgPT0gcmVuZGVyZXJSZWN0
LndpZHRoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVjdFRvUmVwYWludC5tb3ZlKGV4dGVu
ZGVkQmFja2dyb3VuZFJlY3QueCgpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgcmVjdFRvUmVw
YWludC5zZXRXaWR0aChleHRlbmRlZEJhY2tncm91bmRSZWN0LndpZHRoKCkpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocmVjdFRvUmVwYWludC5oZWlnaHQoKSA9PSBy
ZW5kZXJlclJlY3QuaGVpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVjdFRvUmVwYWlu
dC5tb3ZlKDAsIGV4dGVuZGVkQmFja2dyb3VuZFJlY3QueSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVjdFRvUmVwYWludC5zZXRIZWlnaHQoZXh0ZW5kZWRCYWNrZ3JvdW5kUmVjdC5oZWlnaHQo
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsYXll
clJlbmRlcmVyLT5yZXBhaW50UmVjdGFuZ2xlKHJlY3RUb1JlcGFpbnQsIGZhbHNlLCBzaG91bGRD
bGlwVG9MYXllcik7CiAgICAgICAgICAgICBpZiAoZ2VvbWV0cnkuZGVzdFJlY3QoKSA9PSByZW5k
ZXJlclJlY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAkocmV2aXNpb24gMTYxOTg2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwNiw4ICsxMTA2LDExIEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2sKICAgICAgICAgLy8gdGhlIGJh
Y2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4KICAgICAgICAgaWYgKGlzUm9vdCgpKSB7CiAgICAg
ICAgICAgICBwb3NpdGlvbmluZ0FyZWFTaXplID0gcGl4ZWxTbmFwcGVkSW50U2l6ZSh0b1JlbmRl
ckJveCh0aGlzKS0+c2l6ZSgpIC0gTGF5b3V0U2l6ZShsZWZ0ICsgcmlnaHQsIHRvcCArIGJvdHRv
bSksIHRvUmVuZGVyQm94KHRoaXMpLT5sb2NhdGlvbigpKTsKLSAgICAgICAgICAgIGxlZnQgKz0g
bWFyZ2luTGVmdCgpOwotICAgICAgICAgICAgdG9wICs9IG1hcmdpblRvcCgpOworICAgICAgICAg
ICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5oYXNFeHRlbmRlZEJhY2tncm91bmQoKSkgeworICAg
ICAgICAgICAgICAgIEludFJlY3QgZXh0ZW5kZWRCYWNrZ3JvdW5kUmVjdCA9IHZpZXcoKS5mcmFt
ZVZpZXcoKS5leHRlbmRlZEJhY2tncm91bmRSZWN0KCk7CisgICAgICAgICAgICAgICAgbGVmdCAr
PSAobWFyZ2luTGVmdCgpIC0gZXh0ZW5kZWRCYWNrZ3JvdW5kUmVjdC54KCkpOworICAgICAgICAg
ICAgICAgIHRvcCArPSAobWFyZ2luVG9wKCkgLSBleHRlbmRlZEJhY2tncm91bmRSZWN0LnkoKSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcG9zaXRpb25pbmdB
cmVhU2l6ZSA9IHBpeGVsU25hcHBlZEludFNpemUocGFpbnRSZWN0LnNpemUoKSAtIExheW91dFNp
emUobGVmdCArIHJpZ2h0LCB0b3AgKyBib3R0b20pLCBwYWludFJlY3QubG9jYXRpb24oKSk7CiAg
ICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAkocmV2aXNpb24gMTYxOTg2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMxMiw3ICs2MzEyLDcgQEAgdm9pZCBSZW5kZXJM
YXllcjo6c2V0QmFja2luZ05lZWRzUmVwYWludAogICAgICAgICBiYWNraW5nKCktPnNldENvbnRl
bnRzTmVlZERpc3BsYXkoc2hvdWxkQ2xpcCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnNldEJh
Y2tpbmdOZWVkc1JlcGFpbnRJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcikKK3ZvaWQgUmVuZGVy
TGF5ZXI6OnNldEJhY2tpbmdOZWVkc1JlcGFpbnRJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgciwg
R3JhcGhpY3NMYXllcjo6U2hvdWxkQ2xpcFRvTGF5ZXIgc2hvdWxkQ2xpcCkKIHsKICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjExNTkgZGVzY3JpYmVzIGFu
IHVucmVwcm9kdWNpYmxlIGNyYXNoIGhlcmUsCiAgICAgLy8gc28gYXNzZXJ0IGJ1dCBjaGVjayB0
aGF0IHRoZSBsYXllciBpcyBjb21wb3NpdGVkLgpAQCAtNjMyNyw3ICs2MzI3LDcgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6c2V0QmFja2luZ05lZWRzUmVwYWludAogCiAgICAgICAgIHJlbmRlcmVyKCku
dmlldygpLnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGFic1JlY3QpOwogICAgIH0gZWxzZQotICAgICAg
ICBiYWNraW5nKCktPnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QocGl4ZWxTbmFwcGVkSW50
UmVjdChyKSk7CisgICAgICAgIGJhY2tpbmcoKS0+c2V0Q29udGVudHNOZWVkRGlzcGxheUluUmVj
dChwaXhlbFNuYXBwZWRJbnRSZWN0KHIpLCBzaG91bGRDbGlwKTsKIH0KIAogLy8gU2luY2Ugd2Un
cmUgb25seSBwYWludGluZyBub24tY29tcG9zaXRlZCBsYXllcnMsIHdlIGtub3cgdGhhdCB0aGV5
IGFsbCBzaGFyZSB0aGUgc2FtZSByZXBhaW50Q29udGFpbmVyLgpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHJldmlzaW9uIDE2MTk4NikKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsOSArMzQ2
LDExIEBAIHB1YmxpYzoKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAv
LyBJbmRpY2F0ZSB0aGF0IHRoZSBsYXllciBjb250ZW50cyBuZWVkIHRvIGJlIHJlcGFpbnRlZC4g
T25seSBoYXMgYW4gZWZmZWN0Ci0gICAgLy8gaWYgbGF5ZXIgY29tcG9zaXRpbmcgaXMgYmVpbmcg
dXNlZCwKKyAgICAvLyBpZiBsYXllciBjb21wb3NpdGluZyBpcyBiZWluZyB1c2VkLgogICAgIHZv
aWQgc2V0QmFja2luZ05lZWRzUmVwYWludChHcmFwaGljc0xheWVyOjpTaG91bGRDbGlwVG9MYXll
ciA9IEdyYXBoaWNzTGF5ZXI6OkNsaXBUb0xheWVyKTsKLSAgICB2b2lkIHNldEJhY2tpbmdOZWVk
c1JlcGFpbnRJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYpOyAvLyByIGlzIGluIHRoZSBjb29yZGlu
YXRlIHNwYWNlIG9mIHRoZSBsYXllcidzIHJlbmRlciBvYmplY3QKKworICAgIC8vIFRoZSByZWN0
IGlzIGluIHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIHRoZSBsYXllcidzIHJlbmRlciBvYmplY3Qu
CisgICAgdm9pZCBzZXRCYWNraW5nTmVlZHNSZXBhaW50SW5SZWN0KGNvbnN0IExheW91dFJlY3Qm
LCBHcmFwaGljc0xheWVyOjpTaG91bGRDbGlwVG9MYXllciA9IEdyYXBoaWNzTGF5ZXI6OkNsaXBU
b0xheWVyKTsKICAgICB2b2lkIHJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRh
bnRzKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOwogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCShyZXZpc2lvbiAxNjE5ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExMSw3ICsyMTExLDcgQEAgdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZAogfQogCiAvLyByIGlzIGluIHRo
ZSBjb29yZGluYXRlIHNwYWNlIG9mIHRoZSBsYXllcidzIHJlbmRlciBvYmplY3QKLXZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IEludFJl
Y3QmIHIpCit2b2lkIFJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheUlu
UmVjdChjb25zdCBJbnRSZWN0JiByLCBHcmFwaGljc0xheWVyOjpTaG91bGRDbGlwVG9MYXllciBz
aG91bGRDbGlwKQogewogICAgIEFTU0VSVCghcGFpbnRzSW50b0NvbXBvc2l0ZWRBbmNlc3Rvcigp
KTsKIApAQCAtMjEyMiwyNiArMjEyMiwyNiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6c2V0
Q29udGVudHNOZWVkCiAgICAgaWYgKG1fZ3JhcGhpY3NMYXllciAmJiBtX2dyYXBoaWNzTGF5ZXIt
PmRyYXdzQ29udGVudCgpKSB7CiAgICAgICAgIEludFJlY3QgbGF5ZXJEaXJ0eVJlY3QgPSByOwog
ICAgICAgICBsYXllckRpcnR5UmVjdC5tb3ZlKC1tX2dyYXBoaWNzTGF5ZXItPm9mZnNldEZyb21S
ZW5kZXJlcigpKTsKLSAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJl
Y3QobGF5ZXJEaXJ0eVJlY3QpOworICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlz
cGxheUluUmVjdChsYXllckRpcnR5UmVjdCwgc2hvdWxkQ2xpcCk7CiAgICAgfQogCiAgICAgaWYg
KG1fZm9yZWdyb3VuZExheWVyICYmIG1fZm9yZWdyb3VuZExheWVyLT5kcmF3c0NvbnRlbnQoKSkg
ewogICAgICAgICBJbnRSZWN0IGxheWVyRGlydHlSZWN0ID0gcjsKICAgICAgICAgbGF5ZXJEaXJ0
eVJlY3QubW92ZSgtbV9mb3JlZ3JvdW5kTGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpKTsKLSAg
ICAgICAgbV9mb3JlZ3JvdW5kTGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChsYXllckRpcnR5
UmVjdCk7CisgICAgICAgIG1fZm9yZWdyb3VuZExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3Qo
bGF5ZXJEaXJ0eVJlY3QsIHNob3VsZENsaXApOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBuZWVk
IHRvIHNwbGl0IG91dCByZXBhaW50cyBmb3IgdGhlIGJhY2tncm91bmQuCiAgICAgaWYgKG1fYmFj
a2dyb3VuZExheWVyICYmIG1fYmFja2dyb3VuZExheWVyLT5kcmF3c0NvbnRlbnQoKSkgewogICAg
ICAgICBJbnRSZWN0IGxheWVyRGlydHlSZWN0ID0gcjsKICAgICAgICAgbGF5ZXJEaXJ0eVJlY3Qu
bW92ZSgtbV9iYWNrZ3JvdW5kTGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpKTsKLSAgICAgICAg
bV9iYWNrZ3JvdW5kTGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChsYXllckRpcnR5UmVjdCk7
CisgICAgICAgIG1fYmFja2dyb3VuZExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QobGF5ZXJE
aXJ0eVJlY3QsIHNob3VsZENsaXApOwogICAgIH0KIAogICAgIGlmIChtX21hc2tMYXllciAmJiBt
X21hc2tMYXllci0+ZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgSW50UmVjdCBsYXllckRpcnR5
UmVjdCA9IHI7CiAgICAgICAgIGxheWVyRGlydHlSZWN0Lm1vdmUoLW1fbWFza0xheWVyLT5vZmZz
ZXRGcm9tUmVuZGVyZXIoKSk7Ci0gICAgICAgIG1fbWFza0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJ
blJlY3QobGF5ZXJEaXJ0eVJlY3QpOworICAgICAgICBtX21hc2tMYXllci0+c2V0TmVlZHNEaXNw
bGF5SW5SZWN0KGxheWVyRGlydHlSZWN0LCBzaG91bGRDbGlwKTsKICAgICB9CiAKICAgICBpZiAo
bV9zY3JvbGxpbmdDb250ZW50c0xheWVyICYmIG1fc2Nyb2xsaW5nQ29udGVudHNMYXllci0+ZHJh
d3NDb250ZW50KCkpIHsKQEAgLTIxNTEsNyArMjE1MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpzZXRDb250ZW50c05lZWQKICAgICAgICAgLy8gQWNjb3VudCBmb3IgdGhlIGZhY3QgdGhh
dCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpIGJha2Vz
IHNjcm9sbE9mZnNldCBpbnRvIG9mZnNldEZyb21SZW5kZXJlciBvbiBpT1MuCiAgICAgICAgIGxh
eWVyRGlydHlSZWN0Lm1vdmUoLW1fb3duaW5nTGF5ZXIuc2Nyb2xsT2Zmc2V0KCkpOwogI2VuZGlm
Ci0gICAgICAgIG1fc2Nyb2xsaW5nQ29udGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0
KGxheWVyRGlydHlSZWN0KTsKKyAgICAgICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5zZXRO
ZWVkc0Rpc3BsYXlJblJlY3QobGF5ZXJEaXJ0eVJlY3QsIHNob3VsZENsaXApOwogICAgIH0KIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
aAkocmV2aXNpb24gMTYxOTg2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRDb250ZW50c05lZWREaXNwbGF5KEdyYXBoaWNzTGF5ZXI6OlNob3VsZENs
aXBUb0xheWVyID0gR3JhcGhpY3NMYXllcjo6Q2xpcFRvTGF5ZXIpOwogICAgIC8vIHIgaXMgaW4g
dGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgdGhlIGxheWVyJ3MgcmVuZGVyIG9iamVjdAotICAgIHZv
aWQgc2V0Q29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgdm9p
ZCBzZXRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IEludFJlY3QmLCBHcmFwaGljc0xh
eWVyOjpTaG91bGRDbGlwVG9MYXllciA9IEdyYXBoaWNzTGF5ZXI6OkNsaXBUb0xheWVyKTsKIAog
ICAgIC8vIE5vdGlmaWNhdGlvbiBmcm9tIHRoZSByZW5kZXJlciB0aGF0IGl0cyBjb250ZW50IGNo
YW5nZWQuCiAgICAgdm9pZCBjb250ZW50Q2hhbmdlZChDb250ZW50Q2hhbmdlVHlwZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTYx
OTg2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMzYsNyArMTIzNiw3IEBAIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIFJl
bmRlck9iamVjdDo6Y28KICAgICByZXR1cm4gcmVwYWludENvbnRhaW5lcjsKIH0KIAotdm9pZCBS
ZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBJbnRSZWN0JiByLCBib29sIGltbWVkaWF0
ZSkgY29uc3QKK3ZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50VXNpbmdDb250YWluZXIoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgSW50UmVjdCYg
ciwgYm9vbCBpbW1lZGlhdGUsIGJvb2wgc2hvdWxkQ2xpcFRvTGF5ZXIpIGNvbnN0CiB7CiAgICAg
aWYgKCFyZXBhaW50Q29udGFpbmVyKSB7CiAgICAgICAgIHZpZXcoKS5yZXBhaW50Vmlld1JlY3Rh
bmdsZShyLCBpbW1lZGlhdGUpOwpAQCAtMTI2OCw3ICsxMjY4LDcgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5lcgogICAgIAogICAgIGlmICh2LnVzZXNDb21wb3NpdGlu
ZygpKSB7CiAgICAgICAgIEFTU0VSVChyZXBhaW50Q29udGFpbmVyLT5oYXNMYXllcigpICYmIHJl
cGFpbnRDb250YWluZXItPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpKTsKLSAgICAgICAgcmVwYWlu
dENvbnRhaW5lci0+bGF5ZXIoKS0+c2V0QmFja2luZ05lZWRzUmVwYWludEluUmVjdChyKTsKKyAg
ICAgICAgcmVwYWludENvbnRhaW5lci0+bGF5ZXIoKS0+c2V0QmFja2luZ05lZWRzUmVwYWludElu
UmVjdChyLCBzaG91bGRDbGlwVG9MYXllciA/IEdyYXBoaWNzTGF5ZXI6OkNsaXBUb0xheWVyIDog
R3JhcGhpY3NMYXllcjo6RG9Ob3RDbGlwVG9MYXllcik7CiAgICAgfQogI2Vsc2UKICAgICBpZiAo
cmVwYWludENvbnRhaW5lci0+aXNSZW5kZXJWaWV3KCkpCkBAIC0xMjkwLDcgKzEyOTAsNyBAQCB2
b2lkIFJlbmRlck9iamVjdDo6cmVwYWludChib29sIGltbWVkaWF0CiAgICAgcmVwYWludFVzaW5n
Q29udGFpbmVyKHJlcGFpbnRDb250YWluZXIgPyByZXBhaW50Q29udGFpbmVyIDogdmlldywgcGl4
ZWxTbmFwcGVkSW50UmVjdChjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29u
dGFpbmVyKSksIGltbWVkaWF0ZSk7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50UmVj
dGFuZ2xlKGNvbnN0IExheW91dFJlY3QmIHIsIGJvb2wgaW1tZWRpYXRlKSBjb25zdAordm9pZCBS
ZW5kZXJPYmplY3Q6OnJlcGFpbnRSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYgciwgYm9vbCBp
bW1lZGlhdGUsIGJvb2wgc2hvdWxkQ2xpcFRvTGF5ZXIpIGNvbnN0CiB7CiAgICAgLy8gRG9uJ3Qg
cmVwYWludCBpZiB3ZSdyZSB1bnJvb3RlZCAobm90ZSB0aGF0IHZpZXcoKSBzdGlsbCByZXR1cm5z
IHRoZSB2aWV3IHdoZW4gdW5yb290ZWQpCiAgICAgUmVuZGVyVmlldyogdmlldzsKQEAgLTEzMDgs
NyArMTMwOCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50UmVjdGFuZ2xlKGNvbnMKIAog
ICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWluZXJG
b3JSZXBhaW50KCk7CiAgICAgY29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIs
IGRpcnR5UmVjdCk7Ci0gICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIg
PyByZXBhaW50Q29udGFpbmVyIDogdmlldywgcGl4ZWxTbmFwcGVkSW50UmVjdChkaXJ0eVJlY3Qp
LCBpbW1lZGlhdGUpOworICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
ID8gcmVwYWludENvbnRhaW5lciA6IHZpZXcsIHBpeGVsU25hcHBlZEludFJlY3QoZGlydHlSZWN0
KSwgaW1tZWRpYXRlLCBzaG91bGRDbGlwVG9MYXllcik7CiB9CiAKIEludFJlY3QgUmVuZGVyT2Jq
ZWN0OjpwaXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMTYxOTg2
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03NDAsMTQgKzc0MCwxNCBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogY29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0OwogICAgIC8vIEFjdHVhbGx5IGRvIHRo
ZSByZXBhaW50IG9mIHJlY3QgciBmb3IgdGhpcyBvYmplY3Qgd2hpY2ggaGFzIGJlZW4gY29tcHV0
ZWQgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2UKICAgICAvLyBvZiByZXBhaW50Q29udGFpbmVyLiBJ
ZiByZXBhaW50Q29udGFpbmVyIGlzIDAsIHJlcGFpbnQgdmlhIHRoZSB2aWV3LgotICAgIHZvaWQg
cmVwYWludFVzaW5nQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGNvbnN0IEludFJlY3QmLCBib29sIGltbWVkaWF0ZSA9IGZhbHNlKSBjb25z
dDsKKyAgICB2b2lkIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBJbnRSZWN0JiwgYm9vbCBpbW1lZGlhdGUg
PSBmYWxzZSwgYm9vbCBzaG91bGRDbGlwVG9MYXllciA9IHRydWUpIGNvbnN0OwogICAgIAogICAg
IC8vIFJlcGFpbnQgdGhlIGVudGlyZSBvYmplY3QuICBDYWxsZWQgd2hlbiwgZS5nLiwgdGhlIGNv
bG9yIG9mIGEgYm9yZGVyIGNoYW5nZXMsIG9yIHdoZW4gYSBib3JkZXIKICAgICAvLyBzdHlsZSBj
aGFuZ2VzLgogICAgIHZvaWQgcmVwYWludChib29sIGltbWVkaWF0ZSA9IGZhbHNlKSBjb25zdDsK
IAogICAgIC8vIFJlcGFpbnQgYSBzcGVjaWZpYyBzdWJyZWN0YW5nbGUgd2l0aGluIGEgZ2l2ZW4g
b2JqZWN0LiAgVGhlIHJlY3QgfHJ8IGlzIGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNl
LgotICAgIHZvaWQgcmVwYWludFJlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCBpbW1l
ZGlhdGUgPSBmYWxzZSkgY29uc3Q7CisgICAgdm9pZCByZXBhaW50UmVjdGFuZ2xlKGNvbnN0IExh
eW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSA9IGZhbHNlLCBib29sIHNob3VsZENsaXBUb0xheWVy
ID0gdHJ1ZSkgY29uc3Q7CiAKICAgICBib29sIGNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgp
IGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShy
ZXZpc2lvbiAxNjE5ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDksNyArMTAwOSw3IEBAIGJvb2wgUmVuZGVyVmlldzo6
cm9vdEJhY2tncm91bmRJc0VudGlyZWwKIExheW91dFJlY3QgUmVuZGVyVmlldzo6YmFja2dyb3Vu
ZFJlY3QoUmVuZGVyQm94KiBiYWNrZ3JvdW5kUmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFo
YXNDb2x1bW5zKCkpCi0gICAgICAgIHJldHVybiB1bnNjYWxlZERvY3VtZW50UmVjdCgpOworICAg
ICAgICByZXR1cm4gZnJhbWVWaWV3KCkuaGFzRXh0ZW5kZWRCYWNrZ3JvdW5kKCkgPyBmcmFtZVZp
ZXcoKS5leHRlbmRlZEJhY2tncm91bmRSZWN0KCkgOiB1bnNjYWxlZERvY3VtZW50UmVjdCgpOwog
CiAgICAgQ29sdW1uSW5mbyogY29sdW1uSW5mbyA9IHRoaXMtPmNvbHVtbkluZm8oKTsKICAgICBM
YXlvdXRSZWN0IGJhY2tncm91bmRSZWN0KDAsIDAsIGNvbHVtbkluZm8tPmRlc2lyZWRDb2x1bW5X
aWR0aCgpLCBjb2x1bW5JbmZvLT5jb2x1bW5IZWlnaHQoKSAqIGNvbHVtbkluZm8tPmNvbHVtbkNv
dW50KCkpOwo=
</data>
<flag name="review"
          id="245081"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>