<?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>61562</bug_id>
          
          <creation_ts>2011-05-26 14:29:03 -0700</creation_ts>
          <short_desc>Switch paintCustomHighlight to use IntPoint</short_desc>
          <delta_ts>2011-06-01 17:46:51 -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>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60318</blocked>
    
    <blocked>61891</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>darin</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>mjs</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>410832</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-26 14:29:03 -0700</bug_when>
    <thetext>Removing tx/ty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410854</commentid>
    <comment_count>1</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-26 14:43:35 -0700</bug_when>
    <thetext>The paint code *mostly* treats tx/ty like a size, but Darin&apos;s comment https://bugs.webkit.org/show_bug.cgi?id=60783#c6 is still echoing in my mind before I convert all the paint code to one or the other...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410876</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-26 14:57:57 -0700</bug_when>
    <thetext>It’s hard to tell points and sizes apart when we have nested coordinate systems. The distance from the top left to a rect is a “size”, yet it’s expressed as an origin point. I think that whenever we can’t decide, we should use IntPoint, and we should use IntSize only when it’s clearly the size of something, not just a distance (a point described relative to another point).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410910</commentid>
    <comment_count>3</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-26 15:15:04 -0700</bug_when>
    <thetext>Thanks Darin. I like that idea a lot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410917</commentid>
    <comment_count>4</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-26 15:23:52 -0700</bug_when>
    <thetext>One of the drawbacks of using IntPoint for this is lack of an easy way to adjust one point by another. Adding IntPoint, IntPoint versions of the + and += operators would alleviate this concern even though strictly speaking adding two points doesn&apos;t make a whole lot of sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410948</commentid>
    <comment_count>5</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-26 15:50:07 -0700</bug_when>
    <thetext>Plus currently adding two points yields a size, which conceptually makes sense, but can be quite unfortunate in practice...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410953</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-26 15:56:46 -0700</bug_when>
    <thetext>I can&apos;t tell if our problem is that the Size/Point division is broken, or if that the Rendering tree is just not designed in a way to use Size/Point elegantly.  Probably a combination of both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410956</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-26 15:58:41 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I can&apos;t tell if our problem is that the Size/Point division is broken, or if that the Rendering tree is just not designed in a way to use Size/Point elegantly.  Probably a combination of both.

&quot;broken&quot; is a stronger word than I mean.  I suspect that one could re-design the rendering tree to work nicely with Points and Sizes.  But as written, the division is very cumbersome to work with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410962</commentid>
    <comment_count>8</comment_count>
      <attachid>95065</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-26 16:09:52 -0700</bug_when>
    <thetext>Created attachment 95065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410997</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-26 16:44:26 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; One of the drawbacks of using IntPoint for this is lack of an easy way to adjust one point by another. Adding IntPoint, IntPoint versions of the + and += operators would alleviate this concern even though strictly speaking adding two points doesn&apos;t make a whole lot of sense.

Yes, we should add those. There is almost no downside.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410998</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-26 16:44:36 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Plus currently adding two points yields a size, which conceptually makes sense, but can be quite unfortunate in practice...

You mean subtracting, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411000</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-26 16:45:38 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; I can&apos;t tell if our problem is that the Size/Point division is broken, or if that the Rendering tree is just not designed in a way to use Size/Point elegantly.  Probably a combination of both.
&gt; 
&gt; &quot;broken&quot; is a stronger word than I mean.  I suspect that one could re-design the rendering tree to work nicely with Points and Sizes.  But as written, the division is very cumbersome to work with.

I don’t agree that you could do that. The fundamental question is whether an origin point is a point or a size. Making it a size sounds logical but it’s no good, because there is a thing called a coordinate system, where a point is an origin and another point is relative to that point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411045</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-26 17:38:14 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; I can&apos;t tell if our problem is that the Size/Point division is broken, or if that the Rendering tree is just not designed in a way to use Size/Point elegantly.  Probably a combination of both.
&gt; &gt; 
&gt; &gt; &quot;broken&quot; is a stronger word than I mean.  I suspect that one could re-design the rendering tree to work nicely with Points and Sizes.  But as written, the division is very cumbersome to work with.
&gt; 
&gt; I don’t agree that you could do that. The fundamental question is whether an origin point is a point or a size. Making it a size sounds logical but it’s no good, because there is a thing called a coordinate system, where a point is an origin and another point is relative to that point.

We could use a system more like SVG where instead of passing in the origin relative to the containing block, we instead transform the points/CTM as we go up the call stack (also seen as transforming the resulting rects/points as we come back down the call stack).

This would mean changing hit testing to translate the passed in hit point into the child&apos;s coordinate system before passing it in, instead of building up a tx, ty (which we can&apos;t decide if it&apos;s a point vs. size).
http://trac.webkit.org/browser/trunk/Source/WebCore/rendering/svg/RenderSVGContainer.cpp#L165

Similarly, we could have all methods on objects return things in local coordinates with the responsibility of the calling parent to translate as necessary.
http://trac.webkit.org/browser/trunk/Source/WebCore/rendering/svg/SVGRenderSupport.cpp#L61
http://trac.webkit.org/browser/trunk/Source/WebCore/rendering/svg/SVGRenderSupport.cpp#L168

But my thinking may be too tied to the SVG world and not fitting what is actually needed for CSS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413754</commentid>
    <comment_count>13</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-01 16:37:30 -0700</bug_when>
    <thetext>*Ping* for review. This is starting to get in the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413759</commentid>
    <comment_count>14</comment_count>
      <attachid>95065</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-01 16:41:15 -0700</bug_when>
    <thetext>Comment on attachment 95065
Patch

Sorry, I just didn&apos;t see it go by.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413761</commentid>
    <comment_count>15</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-01 16:43:28 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 95065 [details])
&gt; Sorry, I just didn&apos;t see it go by.

Thanks! I tried to ping ya on IRC but you weren&apos;t there :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413763</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-01 16:44:10 -0700</bug_when>
    <thetext>Sorry, been doing an OS re-installs and forget to log back on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413788</commentid>
    <comment_count>17</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-01 17:46:51 -0700</bug_when>
    <thetext>Committed r87866: &lt;http://trac.webkit.org/changeset/87866&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95065</attachid>
            <date>2011-05-26 16:09:52 -0700</date>
            <delta_ts>2011-06-01 16:41:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61562-20110526160950.patch</filename>
            <type>text/plain</type>
            <size>10800</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3NDQ1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDUtMjYgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCBwYWludEN1c3RvbUhpZ2hsaWdodCB0byB1c2Ug
SW50UG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxNTYyCisKKyAgICAgICAgU3dpdGNoaW5nIHBhaW50Q3VzdG9tSGlnaGxpZ2h0IHRvIHVzZSBh
biBJbnRQb2ludCBmb3IKKyAgICAgICAgaXRzIHBhaW50IG9mZnNldCBpbnN0ZWFkIG9mIGEgcGFp
ciBvZiBpbnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGlzIGlzIHJlZmFjdG9y
aW5nLgorCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
VGV4dEJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMaXN0TWFya2VyOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5s
aW5lQm94OjpwYWludEN1c3RvbUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5s
aW5lQm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoKKwog
MjAxMS0wNS0yNiAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNpb24gODcxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Miw3ICs1NDIs
NyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgICAgICAvLyBDdXN0b20gaGlnaGxpZ2h0ZXJzIGdvIGJlaGluZCBldmVyeXRo
aW5nIGVsc2UuCiAgICAgICAgIGlmIChzdHlsZVRvVXNlLT5oaWdobGlnaHQoKSAhPSBudWxsQXRv
bSAmJiAhY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAgICAgICAgcGFpbnRDdXN0
b21IaWdobGlnaHQodHgsIHR5LCBzdHlsZVRvVXNlLT5oaWdobGlnaHQoKSk7CisgICAgICAgICAg
ICBwYWludEN1c3RvbUhpZ2hsaWdodChJbnRQb2ludCh0eCwgdHkpLCBzdHlsZVRvVXNlLT5oaWdo
bGlnaHQoKSk7CiAjZW5kaWYKIAogICAgICAgICBpZiAoY29udGFpbnNDb21wb3NpdGlvbiAmJiAh
dXNlQ3VzdG9tVW5kZXJsaW5lcykKQEAgLTg0OCw3ICs4NDgsNyBAQCB2b2lkIElubGluZVRleHRC
b3g6OnBhaW50Q29tcG9zaXRpb25CYWNrCiAKICNpZiBQTEFURk9STShNQUMpCiAKLXZvaWQgSW5s
aW5lVGV4dEJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQoaW50IHR4LCBpbnQgdHksIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSkKK3ZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDdXN0b21IaWdobGln
aHQoY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUp
CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lKQpAQCAtODU4LDggKzg1OCw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDdXN0b21I
aWdobGlnaHQKICAgICAgICAgcmV0dXJuOwogCiAgICAgUm9vdElubGluZUJveCogciA9IHJvb3Qo
KTsKLSAgICBGbG9hdFJlY3Qgcm9vdFJlY3QodHggKyByLT54KCksIHR5ICsgc2VsZWN0aW9uVG9w
KCksIHItPmxvZ2ljYWxXaWR0aCgpLCBzZWxlY3Rpb25IZWlnaHQoKSk7Ci0gICAgRmxvYXRSZWN0
IHRleHRSZWN0KHR4ICsgeCgpLCByb290UmVjdC55KCksIGxvZ2ljYWxXaWR0aCgpLCByb290UmVj
dC5oZWlnaHQoKSk7CisgICAgRmxvYXRSZWN0IHJvb3RSZWN0KHBhaW50T2Zmc2V0LngoKSArIHIt
PngoKSwgcGFpbnRPZmZzZXQueSgpICsgc2VsZWN0aW9uVG9wKCksIHItPmxvZ2ljYWxXaWR0aCgp
LCBzZWxlY3Rpb25IZWlnaHQoKSk7CisgICAgRmxvYXRSZWN0IHRleHRSZWN0KHBhaW50T2Zmc2V0
LngoKSArIHgoKSwgcm9vdFJlY3QueSgpLCBsb2dpY2FsV2lkdGgoKSwgcm9vdFJlY3QuaGVpZ2h0
KCkpOwogCiAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wYWludEN1c3RvbUhpZ2hsaWdo
dChyZW5kZXJlcigpLT5ub2RlKCksIHR5cGUsIHRleHRSZWN0LCByb290UmVjdCwgdHJ1ZSwgZmFs
c2UpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCShy
ZXZpc2lvbiA4NzE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBwYWludERvY3VtZW50TWFya2VycyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFBvaW50
JiBib3hPcmlnaW4sIFJlbmRlclN0eWxlKiwgY29uc3QgRm9udCYsIGJvb2wgYmFja2dyb3VuZCk7
CiAgICAgdm9pZCBwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmKTsK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBwYWludEN1c3RvbUhpZ2hsaWdodChpbnQgdHgs
IGludCB0eSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKTsKKyAgICB2b2lkIHBhaW50Q3VzdG9t
SGlnaGxpZ2h0KGNvbnN0IEludFBvaW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKTsKICNl
bmRpZgogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAJKHJldmlzaW9uIDg3MTY1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzUsNyArMTA3NSw3IEBAIGJvb2wgUmVuZGVyQm94
OjpyZXBhaW50TGF5ZXJSZWN0c0ZvckltYWcKIAogI2lmIFBMQVRGT1JNKE1BQykKIAotdm9pZCBS
ZW5kZXJCb3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0KGludCB0eCwgaW50IHR5LCBjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgYmVoaW5kVGV4dCkKK3ZvaWQgUmVuZGVyQm94OjpwYWludEN1
c3RvbUhpZ2hsaWdodChjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBiZWhpbmRUZXh0KQogewogICAgIEZyYW1lKiBmcmFtZSA9IHRoaXMt
PmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTEwODcsMTEgKzEwODcsMTEgQEAgdm9pZCBS
ZW5kZXJCb3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0KGludAogICAgIElubGluZUJveCogYm94V3Jh
cCA9IGlubGluZUJveFdyYXBwZXIoKTsKICAgICBSb290SW5saW5lQm94KiByID0gYm94V3JhcCA/
IGJveFdyYXAtPnJvb3QoKSA6IDA7CiAgICAgaWYgKHIpIHsKLSAgICAgICAgRmxvYXRSZWN0IHJv
b3RSZWN0KHR4ICsgci0+eCgpLCB0eSArIHItPnNlbGVjdGlvblRvcCgpLCByLT5sb2dpY2FsV2lk
dGgoKSwgci0+c2VsZWN0aW9uSGVpZ2h0KCkpOwotICAgICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
KHR4ICsgeCgpLCByb290UmVjdC55KCksIHdpZHRoKCksIHJvb3RSZWN0LmhlaWdodCgpKTsKKyAg
ICAgICAgRmxvYXRSZWN0IHJvb3RSZWN0KHBhaW50T2Zmc2V0LngoKSArIHItPngoKSwgcGFpbnRP
ZmZzZXQueSgpICsgci0+c2VsZWN0aW9uVG9wKCksIHItPmxvZ2ljYWxXaWR0aCgpLCByLT5zZWxl
Y3Rpb25IZWlnaHQoKSk7CisgICAgICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QocGFpbnRPZmZzZXQu
eCgpICsgeCgpLCByb290UmVjdC55KCksIHdpZHRoKCksIHJvb3RSZWN0LmhlaWdodCgpKTsKICAg
ICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wYWludEN1c3RvbUhpZ2hsaWdodChub2Rl
KCksIHR5cGUsIGltYWdlUmVjdCwgcm9vdFJlY3QsIGJlaGluZFRleHQsIGZhbHNlKTsKICAgICB9
IGVsc2UgewotICAgICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KHR4ICsgeCgpLCB0eSArIHkoKSwg
d2lkdGgoKSwgaGVpZ2h0KCkpOworICAgICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KHBhaW50T2Zm
c2V0LngoKSArIHgoKSwgcGFpbnRPZmZzZXQueSgpICsgeSgpLCB3aWR0aCgpLCBoZWlnaHQoKSk7
CiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFpbnRDdXN0b21IaWdobGlnaHQo
bm9kZSgpLCB0eXBlLCBpbWFnZVJlY3QsIGltYWdlUmVjdCwgYmVoaW5kVGV4dCwgZmFsc2UpOwog
ICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlzaW9u
IDg3MTY1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcGFpbnRNYXNr
SW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICB2b2lkIHBhaW50Q3VzdG9tSGlnaGxpZ2h0KGludCB0eCwgaW50IHR5LCBjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgYmVoaW5kVGV4dCk7CisgICAgdm9pZCBwYWludEN1
c3RvbUhpZ2hsaWdodChjb25zdCBJbnRQb2ludCYsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBiZWhpbmRUZXh0KTsKICNlbmRpZgogCiAgICAgdm9pZCBjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxXaWR0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCShyZXZpc2lvbiA4NzE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMSw3ICszMDEsNyBAQCB2b2lkIFJlbmRlcklt
YWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAg
IGlmIChzdHlsZSgpLT5oaWdobGlnaHQoKSAhPSBudWxsQXRvbSAmJiAhcGFpbnRJbmZvLmNvbnRl
eHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgICAgIHBhaW50Q3VzdG9tSGlnaGxpZ2h0
KHR4IC0geCgpLCB0eSAtIHkoKSwgc3R5bGUoKS0+aGlnaGxpZ2h0KCksIHRydWUpOworICAgICAg
ICAgICAgcGFpbnRDdXN0b21IaWdobGlnaHQoSW50UG9pbnQodHggLSB4KCksIHR5IC0geSgpKSwg
c3R5bGUoKS0+aGlnaGxpZ2h0KCksIHRydWUpOwogI2VuZGlmCiAKICAgICAgICAgSW50U2l6ZSBj
b250ZW50U2l6ZShjV2lkdGgsIGNIZWlnaHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAkocmV2aXNpb24gODcxNjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExMjcsNyArMTEyNyw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZv
JiAKICAgICBpZiAoaXNJbWFnZSgpKSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBpZiAo
c3R5bGUoKS0+aGlnaGxpZ2h0KCkgIT0gbnVsbEF0b20gJiYgIXBhaW50SW5mby5jb250ZXh0LT5w
YWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgICAgICBwYWludEN1c3RvbUhpZ2hsaWdodCh0eCwg
dHksIHN0eWxlKCktPmhpZ2hsaWdodCgpLCB0cnVlKTsKKyAgICAgICAgICAgIHBhaW50Q3VzdG9t
SGlnaGxpZ2h0KEludFBvaW50KHR4LCB0eSksIHN0eWxlKCktPmhpZ2hsaWdodCgpLCB0cnVlKTsK
ICNlbmRpZgogICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZS0+aW1hZ2UodGhpcywg
bWFya2VyLnNpemUoKSkuZ2V0KCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKICAg
ICAgICAgaWYgKHNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewpAQCAtMTE0MSw3
ICsxMTQxLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogcGFpbnQgZ2FwIGJldHdlZW4gbWFya2VyIGFu
ZCBsaXN0IGl0ZW0gcHJvcGVyCiAgICAgaWYgKHN0eWxlKCktPmhpZ2hsaWdodCgpICE9IG51bGxB
dG9tICYmICFwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAgICBw
YWludEN1c3RvbUhpZ2hsaWdodCh0eCwgdHksIHN0eWxlKCktPmhpZ2hsaWdodCgpLCB0cnVlKTsK
KyAgICAgICAgcGFpbnRDdXN0b21IaWdobGlnaHQoSW50UG9pbnQodHgsIHR5KSwgc3R5bGUoKS0+
aGlnaGxpZ2h0KCksIHRydWUpOwogI2VuZGlmCiAKICAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSAh
PSBTZWxlY3Rpb25Ob25lKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0LmNwcAkocmV2aXNpb24gODcxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQg
UmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW4KIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBpZiAoc3R5bGUoKS0+aGlnaGxpZ2h0KCkgIT0gbnVsbEF0b20gJiYgIXBhaW50SW5mby5j
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHBhaW50Q3VzdG9tSGlnaGxpZ2h0
KHR4IC0geCgpLCB0eSAtIHkoKSwgc3R5bGUoKS0+aGlnaGxpZ2h0KCksIHRydWUpOworICAgICAg
ICBwYWludEN1c3RvbUhpZ2hsaWdodChJbnRQb2ludCh0eCAtIHgoKSwgdHkgLSB5KCkpLCBzdHls
ZSgpLT5oaWdobGlnaHQoKSwgdHJ1ZSk7CiAjZW5kaWYKIAogICAgIGlmIChzdHlsZSgpLT5oYXNC
b3JkZXJSYWRpdXMoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5s
aW5lQm94LmNwcAkocmV2aXNpb24gODcxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Um9vdElubGluZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lk
IFJvb3RJbmxpbmVCb3g6OmFkZEhpZ2hsaWdodE92ZXJmbG93CiAgICAgc2V0T3ZlcmZsb3dGcm9t
TG9naWNhbFJlY3RzKGluZmxhdGVkUmVjdCwgaW5mbGF0ZWRSZWN0LCBsaW5lVG9wKCksIGxpbmVC
b3R0b20oKSk7CiB9CiAKLXZvaWQgUm9vdElubGluZUJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5LCBjb25zdCBBdG9taWNTdHJpbmcm
IGhpZ2hsaWdodFR5cGUpCit2b2lkIFJvb3RJbmxpbmVCb3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0
IEF0b21pY1N0cmluZyYgaGlnaGxpZ2h0VHlwZSkKIHsKICAgICBpZiAoIXBhaW50SW5mby5zaG91
bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kKQogICAgICAgICByZXR1cm47CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBSb290SW5s
aW5lQm94OjpwYWludEN1c3RvbUhpZ2hsaWdodAogICAgICAgICByZXR1cm47CiAKICAgICAvLyBH
ZXQgdGhlIGluZmxhdGVkIHJlY3Qgc28gdGhhdCB3ZSBjYW4gcHJvcGVybHkgaGl0IHRlc3QuCi0g
ICAgRmxvYXRSZWN0IHJvb3RSZWN0KHR4ICsgeCgpLCB0eSArIHNlbGVjdGlvblRvcCgpLCBsb2dp
Y2FsV2lkdGgoKSwgc2VsZWN0aW9uSGVpZ2h0KCkpOworICAgIEZsb2F0UmVjdCByb290UmVjdChw
YWludE9mZnNldC54KCkgKyB4KCksIHBhaW50T2Zmc2V0LnkoKSArIHNlbGVjdGlvblRvcCgpLCBs
b2dpY2FsV2lkdGgoKSwgc2VsZWN0aW9uSGVpZ2h0KCkpOwogICAgIEZsb2F0UmVjdCBpbmZsYXRl
ZFJlY3QgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmN1c3RvbUhpZ2hsaWdodFJlY3QocmVu
ZGVyZXIoKS0+bm9kZSgpLCBoaWdobGlnaHRUeXBlLCByb290UmVjdCk7CiAgICAgaWYgKGluZmxh
dGVkUmVjdC5pbnRlcnNlY3RzKHBhaW50SW5mby5yZWN0KSkKICAgICAgICAgcGFnZS0+Y2hyb21l
KCktPmNsaWVudCgpLT5wYWludEN1c3RvbUhpZ2hsaWdodChyZW5kZXJlcigpLT5ub2RlKCksIGhp
Z2hsaWdodFR5cGUsIHJvb3RSZWN0LCByb290UmVjdCwgZmFsc2UsIHRydWUpOwpAQCAtMTg1LDcg
KzE4NSw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWkKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSByZW5kZXJlcigpLT5z
dHlsZShtX2ZpcnN0TGluZSk7CiAgICAgaWYgKHN0eWxlVG9Vc2UtPmhpZ2hsaWdodCgpICE9IG51
bGxBdG9tICYmICFwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAg
ICBwYWludEN1c3RvbUhpZ2hsaWdodChwYWludEluZm8sIHR4LCB0eSwgc3R5bGVUb1VzZS0+aGln
aGxpZ2h0KCkpOworICAgICAgICBwYWludEN1c3RvbUhpZ2hsaWdodChwYWludEluZm8sIEludFBv
aW50KHR4LCB0eSksIHN0eWxlVG9Vc2UtPmhpZ2hsaWdodCgpKTsKICNlbmRpZgogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgJKHJldmlzaW9uIDg3MTY1
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAkod29ya2luZyBj
b3B5KQpAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAg
dm9pZCBhZGRIaWdobGlnaHRPdmVyZmxvdygpOwotICAgIHZvaWQgcGFpbnRDdXN0b21IaWdobGln
aHQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHksIGNvbnN0IEF0b21pY1N0cmluZyYgaGlnaGxp
Z2h0VHlwZSk7CisgICAgdm9pZCBwYWludEN1c3RvbUhpZ2hsaWdodChQYWludEluZm8mLCBjb25z
dCBJbnRQb2ludCYsIGNvbnN0IEF0b21pY1N0cmluZyYgaGlnaGxpZ2h0VHlwZSk7CiAjZW5kaWYK
IAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSwgaW50
IGxpbmVUb3AsIGludCBsaW5lQm90dG9tKTsK
</data>
<flag name="review"
          id="88485"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>