<?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>76177</bug_id>
          
          <creation_ts>2012-01-12 07:35:50 -0800</creation_ts>
          <short_desc>SVG group getBBox returns 0,0,0,0 for a group of perpendicular paths</short_desc>
          <delta_ts>2012-01-18 00:35:37 -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>SVG</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Philip Rogers">pdr</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eae</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>leviw</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>534830</commentid>
    <comment_count>0</comment_count>
      <attachid>122240</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-01-12 07:35:50 -0800</bug_when>
    <thetext>Created attachment 122240
Testcase

A group of perpendicular paths returns a bounding box of 0,0,0,0 (see attached testcase).

(bug was originally reported at: http://code.google.com/p/chromium/issues/detail?id=109805)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534831</commentid>
    <comment_count>1</comment_count>
      <attachid>122241</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-01-12 07:41:28 -0800</bug_when>
    <thetext>Created attachment 122241
Fix getBBox for perpendicular paths</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534834</commentid>
    <comment_count>2</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-01-12 07:46:15 -0800</bug_when>
    <thetext>This changes platform/graphics and is not SVG specific so I&apos;ve added darin@apple.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534974</commentid>
    <comment_count>3</comment_count>
      <attachid>122241</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-12 11:03:24 -0800</bug_when>
    <thetext>Comment on attachment 122241
Fix getBBox for perpendicular paths

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

&gt; Source/WebCore/platform/graphics/FloatRect.cpp:114
&gt; +    float left = min(x(), other.x());
&gt; +    float top = min(y(), other.y());
&gt; +    float right = max(maxX(), other.maxX());
&gt; +    float bottom = max(maxY(), other.maxY());

The &quot;l, t, r, b&quot; or &quot;left, top, right, bottom&quot; naming is obsolete for IntRect and FloatRect. In new code we should name these things like x, y, maxX, and maxY.

&gt; Source/WebCore/platform/graphics/FloatRect.cpp:119
&gt;  void FloatRect::uniteIfNonZero(const FloatRect&amp; other)

Not new to this patch:

It would be clearer if the uniteIfNonZero function used the isZero function rather than having a hand-written distinct implementation of “non-zero”. I am concerned that this function’s definition of 0 is !x, while FloatSize’s definition of 0 is fabs(x) &lt; epsilon. It looks like Levi made that change to FloatSize in July and I am not sure why it’s not needed here as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534982</commentid>
    <comment_count>4</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-01-12 11:09:20 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; It would be clearer if the uniteIfNonZero function used the isZero function rather than having a hand-written distinct implementation of “non-zero”. I am concerned that this function’s definition of 0 is !x, while FloatSize’s definition of 0 is fabs(x) &lt; epsilon. It looks like Levi made that change to FloatSize in July and I am not sure why it’s not needed here as well.

It was definitely an oversight that this still uses zero instead of considering epsilon, let&apos;s correct that now. Of course, epsilon is not perfect either...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534989</commentid>
    <comment_count>5</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-01-12 11:12:53 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; It would be clearer if the uniteIfNonZero function used the isZero function rather than having a hand-written distinct implementation of “non-zero”. I am concerned that this function’s definition of 0 is !x, while FloatSize’s definition of 0 is fabs(x) &lt; epsilon. It looks like Levi made that change to FloatSize in July and I am not sure why it’s not needed here as well.
&gt; 
&gt; It was definitely an oversight that this still uses zero instead of considering epsilon, let&apos;s correct that now. Of course, epsilon is not perfect either...

I agree and can do this. Should I do that in this review, or as a followup patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534991</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-12 11:13:34 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I agree and can do this. Should I do that in this review, or as a followup patch?

Seems good to do it separately. Might even be worth spending a short time on little research to see if we can find any case where we know it affects behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535121</commentid>
    <comment_count>7</comment_count>
      <attachid>122241</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-12 13:42:42 -0800</bug_when>
    <thetext>Comment on attachment 122241
Fix getBBox for perpendicular paths

Attachment 122241 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11227184

New failing tests:
svg/batik/filters/filterRegions.svg
svg/clip-path/deep-nested-clip-in-mask-panning.svg
svg/filters/filterRes.svg
svg/dynamic-updates/SVGFEBlendElement-dom-in-attr.html
svg/W3C-SVG-1.1/filters-morph-01-f.svg
svg/filters/filter-refresh.svg
svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr.html
svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr.html
svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop.html
svg/filters/feConvolveFilter-y-bounds.svg
svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop.html
svg/W3C-SVG-1.1/filters-blend-01-b.svg
svg/animations/animate-mpath-insert.html
svg/clip-path/deep-nested-clip-in-mask.svg
svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535135</commentid>
    <comment_count>8</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-01-12 14:00:08 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 122241 [details])
&gt; Attachment 122241 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/11227184
&gt; 
&gt; New failing tests:
&gt; svg/batik/filters/filterRegions.svg
&gt; svg/clip-path/deep-nested-clip-in-mask-panning.svg
&gt; svg/filters/filterRes.svg
&gt; svg/dynamic-updates/SVGFEBlendElement-dom-in-attr.html
&gt; svg/W3C-SVG-1.1/filters-morph-01-f.svg
&gt; svg/filters/filter-refresh.svg
&gt; svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr.html
&gt; svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr.html
&gt; svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop.html
&gt; svg/filters/feConvolveFilter-y-bounds.svg
&gt; svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop.html
&gt; svg/W3C-SVG-1.1/filters-blend-01-b.svg
&gt; svg/animations/animate-mpath-insert.html
&gt; svg/clip-path/deep-nested-clip-in-mask.svg
&gt; svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop.html

I think a couple of these are real failures (failed on my machine w/o patch, pass with it). Sorry for the churn guys, I&apos;ll have a new patch up soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536185</commentid>
    <comment_count>9</comment_count>
      <attachid>122548</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-01-14 08:38:31 -0800</bug_when>
    <thetext>Created attachment 122548
Fix getBBox for perpendicular paths

This patch contains two fixes for failures exposed in my previous patch:
1) We need to special-case the first bounding box in SVGRendererSupport::computeContainerBoundingBoxes. What&apos;s happening is we start with a bounding box of 0,0,0,0 and we add the union of all our child bounding boxes. The problem is that the resulting bounding box will always start at x=0, y=0, due to the initial bounding box of 0,0,0,0, so we need to special-case the first child and set the initial bounding box to our first child&apos;s bounding box.

2) My previous patch had a mistake where I failed to transform a child&apos;s bounding box using transform.mapRect().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537217</commentid>
    <comment_count>10</comment_count>
      <attachid>122548</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-01-17 11:18:15 -0800</bug_when>
    <thetext>Comment on attachment 122548
Fix getBBox for perpendicular paths

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

LGTM, but need someone else to sign off on it :)

&gt; Source/WebCore/platform/graphics/FloatRect.cpp:114
&gt; +    float left = min(x(), other.x());
&gt; +    float top = min(y(), other.y());
&gt; +    float right = max(maxX(), other.maxX());
&gt; +    float bottom = max(maxY(), other.maxY());

As Darin pointed out, we should avoid using these directional names in favor of maxX and maxY to not confuse things in vertical text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537330</commentid>
    <comment_count>11</comment_count>
      <attachid>122806</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-01-17 13:39:23 -0800</bug_when>
    <thetext>Created attachment 122806
Fix getBBox for perpendicular paths

Small rename: l,t,r,b -&gt; minX, minY, maxX, maxY per a Darin&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537503</commentid>
    <comment_count>12</comment_count>
      <attachid>122806</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-17 17:48:33 -0800</bug_when>
    <thetext>Comment on attachment 122806
Fix getBBox for perpendicular paths

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

Does the test cover the “united with 0,0,0,0” issue?

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:194
&gt; +        if (isFirstChild)
&gt; +            isFirstChild = false;

No need for the if here. An unconditional assignment does the same thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537523</commentid>
    <comment_count>13</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-01-17 18:07:15 -0800</bug_when>
    <thetext>Thank you for the second review.

(In reply to comment #12)
&gt; (From update of attachment 122806 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122806&amp;action=review
&gt; 
&gt; Does the test cover the “united with 0,0,0,0” issue?

It does. The test draws two perpendicular lines starting at (5,5) and extending to (5,105) and (105,5). Including (0,0) would have resulted in a bounding box of size 105*105, but starting at the first child results in the expected 100*100 bounding box.

&gt; 
&gt; &gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:194
&gt; &gt; +        if (isFirstChild)
&gt; &gt; +            isFirstChild = false;
&gt; 
&gt; No need for the if here. An unconditional assignment does the same thing.

I have a followup patch for the !width() issue and I&apos;ll tack on a fix for this unnecessary check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537565</commentid>
    <comment_count>14</comment_count>
      <attachid>122806</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-17 19:18:40 -0800</bug_when>
    <thetext>Comment on attachment 122806
Fix getBBox for perpendicular paths

Clearing flags on attachment: 122806

Committed r105231: &lt;http://trac.webkit.org/changeset/105231&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537566</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-17 19:18:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537677</commentid>
    <comment_count>16</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-01-18 00:35:37 -0800</bug_when>
    <thetext>Just wanted to leave a note: great findings Philip! Thanks for fixing quickly!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>122240</attachid>
            <date>2012-01-12 07:35:50 -0800</date>
            <delta_ts>2012-01-12 07:35:50 -0800</delta_ts>
            <desc>Testcase</desc>
            <filename>bbox.html</filename>
            <type>text/html</type>
            <size>795</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8Ym9keT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0i
MjAwcHgiIGhlaWdodD0iMjAwcHgiIHZlcnNpb249IjEuMSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgogIDxnIGlkPSJmb28iPgogIDxwYXRoIHN0cm9rZT0iIzY2
NjY2NiIgc3Ryb2tlLXdpZHRoPSIyLjAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1s
aW5lY2FwPSJidXR0IiBkPSJNNSAxMEw1IDEwMCIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+
CiAgPHBhdGggc3Ryb2tlPSIjNjY2NjY2IiBzdHJva2Utd2lkdGg9IjIuMCIgc3Ryb2tlLWxpbmVq
b2luPSJyb3VuZCIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIGQ9Ik01IDEwTDEwMCAxMCIgZmlsbC1y
dWxlPSJub256ZXJvIj48L3BhdGg+CiAgPC9nPgo8L3N2Zz4KPGRpdj5lbGVtZW50LmdldEJCb3go
KTwvZGl2Pgo8ZGl2IGlkPSJsb2ciPjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CiAgdmFyIGJCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9vJykuZ2V0QkJveCgp
OwogIHZhciBzdHIgPSAnaD0nICsgYkJveC5oZWlnaHQgKyAnOyB3PScgKyBiQm94LndpZHRoICsg
JzsgeD0nICsgYkJveC54ICsgJzsgeT0nICsgYkJveC55OwogIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdsb2cnKS5pbm5lckhUTUwgPSBzdHI7Cjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122241</attachid>
            <date>2012-01-12 07:41:28 -0800</date>
            <delta_ts>2012-01-14 08:38:31 -0800</delta_ts>
            <desc>Fix getBBox for perpendicular paths</desc>
            <filename>76177.1.patch</filename>
            <type>text/plain</type>
            <size>6351</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDgyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTEyICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgRml4IGdldEJCb3ggZm9yIHBlcnBl
bmRpY3VsYXIgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc2MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdDogc3ZnL2N1c3RvbS9nZXRCQm94LXBlcnBlbmRpY3VsYXItcGF0aC5zdmcKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFJlY3Q6OnVuaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6dW5p
dGVFdmVuSWZFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFJlY3Q6OnVuaXRlSWZOb25a
ZXJvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUNvbnRhaW5lckJvdW5kaW5nQm94ZXMpOgorCiAyMDEy
LTAxLTEyICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
Rml4IHR1cmJ1bGVuY2UgYnVnIHdoZW4gc3RpdGNoIHRpbGVzIGVuYWJsZWQgYW5kIHJlbmRlcmVk
IGluIHBhcmFsbGVsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFJlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0UmVjdC5jcHAJKHJldmlzaW9uIDEwNDQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMywxMiArMTAz
LDE3IEBAIHZvaWQgRmxvYXRSZWN0Ojp1bml0ZShjb25zdCBGbG9hdFJlY3QmIG8KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGZsb2F0IGwgPSBtaW4oeCgpLCBvdGhlci54KCkpOwotICAg
IGZsb2F0IHQgPSBtaW4oeSgpLCBvdGhlci55KCkpOwotICAgIGZsb2F0IHIgPSBtYXgobWF4WCgp
LCBvdGhlci5tYXhYKCkpOwotICAgIGZsb2F0IGIgPSBtYXgobWF4WSgpLCBvdGhlci5tYXhZKCkp
OworICAgIHVuaXRlRXZlbklmRW1wdHkob3RoZXIpOworfQorCit2b2lkIEZsb2F0UmVjdDo6dW5p
dGVFdmVuSWZFbXB0eShjb25zdCBGbG9hdFJlY3QmIG90aGVyKQoreworICAgIGZsb2F0IGxlZnQg
PSBtaW4oeCgpLCBvdGhlci54KCkpOworICAgIGZsb2F0IHRvcCA9IG1pbih5KCksIG90aGVyLnko
KSk7CisgICAgZmxvYXQgcmlnaHQgPSBtYXgobWF4WCgpLCBvdGhlci5tYXhYKCkpOworICAgIGZs
b2F0IGJvdHRvbSA9IG1heChtYXhZKCksIG90aGVyLm1heFkoKSk7CiAKLSAgICBzZXRMb2NhdGlv
bkFuZFNpemVGcm9tRWRnZXMobCwgdCwgciwgYik7CisgICAgc2V0TG9jYXRpb25BbmRTaXplRnJv
bUVkZ2VzKGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiB9CiAKIHZvaWQgRmxvYXRSZWN0Ojp1
bml0ZUlmTm9uWmVybyhjb25zdCBGbG9hdFJlY3QmIG90aGVyKQpAQCAtMTIxLDEyICsxMjYsNyBA
QCB2b2lkIEZsb2F0UmVjdDo6dW5pdGVJZk5vblplcm8oY29uc3QgRmxvCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBmbG9hdCBsZWZ0ID0gbWluKHgoKSwgb3RoZXIueCgpKTsKLSAgICBm
bG9hdCB0b3AgPSBtaW4oeSgpLCBvdGhlci55KCkpOwotICAgIGZsb2F0IHJpZ2h0ID0gbWF4KG1h
eFgoKSwgb3RoZXIubWF4WCgpKTsKLSAgICBmbG9hdCBib3R0b20gPSBtYXgobWF4WSgpLCBvdGhl
ci5tYXhZKCkpOwotCi0gICAgc2V0TG9jYXRpb25BbmRTaXplRnJvbUVkZ2VzKGxlZnQsIHRvcCwg
cmlnaHQsIGJvdHRvbSk7CisgICAgdW5pdGVFdmVuSWZFbXB0eShvdGhlcik7CiB9CiAKIHZvaWQg
RmxvYXRSZWN0OjpzY2FsZShmbG9hdCBzeCwgZmxvYXQgc3kpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAkocmV2aXNpb24gMTA0NDYyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1Miw2ICsxNTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludGVyc2VjdChjb25z
dCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIHVuaXRlKGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZv
aWQgdW5pdGVFdmVuSWZFbXB0eShjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIHVuaXRlSWZO
b25aZXJvKGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAgLy8gTm90ZSwgdGhpcyBkb2Vzbid0IG1h
dGNoIHdoYXQgSW50UmVjdDo6Y29udGFpbnMoSW50UG9pbnQmKSBkb2VzOyB0aGUgaW50IHZlcnNp
b24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJT
dXBwb3J0LmNwcAkocmV2aXNpb24gMTA0NDYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTczLDExICsxNzMs
MTEgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlQ29udGFpbmVyQgogCiAgICAgICAg
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gY3VycmVudC0+bG9jYWxUb1BhcmVu
dFRyYW5zZm9ybSgpOwogICAgICAgICBpZiAodHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgewotICAg
ICAgICAgICAgb2JqZWN0Qm91bmRpbmdCb3gudW5pdGUoY3VycmVudC0+b2JqZWN0Qm91bmRpbmdC
b3goKSk7CisgICAgICAgICAgICBvYmplY3RCb3VuZGluZ0JveC51bml0ZUV2ZW5JZkVtcHR5KGN1
cnJlbnQtPm9iamVjdEJvdW5kaW5nQm94KCkpOwogICAgICAgICAgICAgc3Ryb2tlQm91bmRpbmdC
b3gudW5pdGUoY3VycmVudC0+c3Ryb2tlQm91bmRpbmdCb3goKSk7CiAgICAgICAgICAgICByZXBh
aW50Qm91bmRpbmdCb3gudW5pdGUoY3VycmVudC0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0
ZXMoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBvYmplY3RCb3VuZGluZ0JveC51
bml0ZSh0cmFuc2Zvcm0ubWFwUmVjdChjdXJyZW50LT5vYmplY3RCb3VuZGluZ0JveCgpKSk7Cisg
ICAgICAgICAgICBvYmplY3RCb3VuZGluZ0JveC51bml0ZUV2ZW5JZkVtcHR5KGN1cnJlbnQtPm9i
amVjdEJvdW5kaW5nQm94KCkpOwogICAgICAgICAgICAgc3Ryb2tlQm91bmRpbmdCb3gudW5pdGUo
dHJhbnNmb3JtLm1hcFJlY3QoY3VycmVudC0+c3Ryb2tlQm91bmRpbmdCb3goKSkpOwogICAgICAg
ICAgICAgcmVwYWludEJvdW5kaW5nQm94LnVuaXRlKHRyYW5zZm9ybS5tYXBSZWN0KGN1cnJlbnQt
PnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpKTsKICAgICAgICAgfQpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTA0ODI2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDEtMTIgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xl
LmNvbT4KKworICAgICAgICBGaXggZ2V0QkJveCBmb3IgcGVycGVuZGljdWxhciBwYXRocworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxNzcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9jdXN0b20v
Z2V0QkJveC1wZXJwZW5kaWN1bGFyLXBhdGgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvY3VzdG9tL2dldEJCb3gtcGVycGVuZGljdWxhci1wYXRoLnN2ZzogQWRkZWQuCisKIDIw
MTItMDEtMTIgIFpvbHRhbiBIZXJjemVnICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBGaXggdHVyYnVsZW5jZSBidWcgd2hlbiBzdGl0Y2ggdGlsZXMgZW5hYmxlZCBhbmQgcmVuZGVy
ZWQgaW4gcGFyYWxsZWwKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vZ2V0QkJveC1wZXJw
ZW5kaWN1bGFyLXBhdGgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2
Zy9jdXN0b20vZ2V0QkJveC1wZXJwZW5kaWN1bGFyLXBhdGgtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9nZXRCQm94LXBlcnBlbmRpY3VsYXItcGF0
aC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKzEwMCAxMDAgUEFTUwpJ
bmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9nZXRCQm94LXBlcnBlbmRpY3VsYXItcGF0aC5z
dmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9nZXRCQm94LXBlcnBlbmRp
Y3VsYXItcGF0aC5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2dl
dEJCb3gtcGVycGVuZGljdWxhci1wYXRoLnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBA
QAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gVGVzdCB0aGUg
Ym91bmRpbmcgYm94IGNhbGN1bGF0ZWQgZm9yIHR3byBwZXJwZW5kaWN1bGFyIGxpbmVzIG9mIGxl
bmd0aCAxMDBweCAtLT4KKzwhLS0gSWYgdGhlIGJvdW5kaW5nIGJveCBpcyAxMDB4MTAwLCB3ZSBj
b25zaWRlciB0aGlzIHRlc3QgcGFzc2luZy4gLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgb25sb2FkPSJpbml0KCkiPgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CisgIDwhW0NEQVRBWworICAgIGZ1bmN0aW9uIGluaXQoKQorICAgIHsKKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdmFyIHR4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisgICAgICAgIHNpemUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic2hhcGUiKS5nZXRCQm94KCk7CisgICAgICAgIHZhciBwYXNzU3RhdGUgPSAiRkFJTCI7
CisgICAgICAgIGlmKHNpemUud2lkdGggPT0gMTAwICYmIHNpemUuaGVpZ2h0ID09IDEwMCkKKyAg
ICAgICAgICAgIHBhc3NTdGF0ZSA9ICJQQVNTIjsKKyAgICAgICAgdmFyIHRleHROb2RlID0gZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoc2l6ZS53aWR0aCArICIgIiArIHNpemUuaGVpZ2h0ICsgIiAi
ICsgcGFzc1N0YXRlKTsKKyAgICAgICAgdHh0LmFwcGVuZENoaWxkKHRleHROb2RlKTsKKyAgICB9
CisgIF1dPgorICA8L3NjcmlwdD4KKyAgPGcgaWQ9InNoYXBlIj4KKyAgICA8cGF0aCBzdHJva2U9
IiM2NjY2NjYiIHN0cm9rZS13aWR0aD0iMi4wIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJv
a2UtbGluZWNhcD0iYnV0dCIgZD0iTTUgMTBMNSAxMDAiIGZpbGwtcnVsZT0ibm9uemVybyI+PC9w
YXRoPgorICAgIDxwYXRoIHN0cm9rZT0iIzY2NjY2NiIgc3Ryb2tlLXdpZHRoPSIyLjAiIHN0cm9r
ZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1saW5lY2FwPSJidXR0IiBkPSJNNSAxMEwxMDAgMTAi
IGZpbGwtcnVsZT0ibm9uemVybyI+PC9wYXRoPgorICA8L2c+CisgIDx0ZXh0IGlkPSJ0ZXh0IiB4
PSI1MCIgeT0iNTAiIC8+Cis8L3N2Zz4K
</data>
<flag name="review"
          id="122982"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="122983"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122548</attachid>
            <date>2012-01-14 08:38:31 -0800</date>
            <delta_ts>2012-01-17 13:39:23 -0800</delta_ts>
            <desc>Fix getBBox for perpendicular paths</desc>
            <filename>76177.2.patch</filename>
            <type>text/plain</type>
            <size>7076</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTE0ICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgRml4IGdldEJCb3ggZm9yIHBlcnBl
bmRpY3VsYXIgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc2MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdDogc3ZnL2N1c3RvbS9nZXRCQm94LXBlcnBlbmRpY3VsYXItcGF0aC5zdmcKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFJlY3Q6OnVuaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6dW5p
dGVFdmVuSWZFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFJlY3Q6OnVuaXRlSWZOb25a
ZXJvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUNvbnRhaW5lckJvdW5kaW5nQm94ZXMpOgorCiAyMDEy
LTAxLTE0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFVubWF0Y2hlZCB0cmFuc3BhcmVuY3kgbGF5ZXIgYmVnaW4vZW5kIG9uIGEgZmlsdGVyZWQgZWxl
bWVudCB3aXRoIGFuIG9wYWNpdHkgYW5jZXN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcAkocmV2aXNpb24gMTA0ODQzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAzLDEyICsxMDMsMTcgQEAgdm9pZCBGbG9hdFJlY3Q6OnVuaXRlKGNvbnN0IEZsb2F0
UmVjdCYgbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZmxvYXQgbCA9IG1pbih4KCks
IG90aGVyLngoKSk7Ci0gICAgZmxvYXQgdCA9IG1pbih5KCksIG90aGVyLnkoKSk7Ci0gICAgZmxv
YXQgciA9IG1heChtYXhYKCksIG90aGVyLm1heFgoKSk7Ci0gICAgZmxvYXQgYiA9IG1heChtYXhZ
KCksIG90aGVyLm1heFkoKSk7CisgICAgdW5pdGVFdmVuSWZFbXB0eShvdGhlcik7Cit9CisKK3Zv
aWQgRmxvYXRSZWN0Ojp1bml0ZUV2ZW5JZkVtcHR5KGNvbnN0IEZsb2F0UmVjdCYgb3RoZXIpCit7
CisgICAgZmxvYXQgbGVmdCA9IG1pbih4KCksIG90aGVyLngoKSk7CisgICAgZmxvYXQgdG9wID0g
bWluKHkoKSwgb3RoZXIueSgpKTsKKyAgICBmbG9hdCByaWdodCA9IG1heChtYXhYKCksIG90aGVy
Lm1heFgoKSk7CisgICAgZmxvYXQgYm90dG9tID0gbWF4KG1heFkoKSwgb3RoZXIubWF4WSgpKTsK
IAotICAgIHNldExvY2F0aW9uQW5kU2l6ZUZyb21FZGdlcyhsLCB0LCByLCBiKTsKKyAgICBzZXRM
b2NhdGlvbkFuZFNpemVGcm9tRWRnZXMobGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKIH0KIAog
dm9pZCBGbG9hdFJlY3Q6OnVuaXRlSWZOb25aZXJvKGNvbnN0IEZsb2F0UmVjdCYgb3RoZXIpCkBA
IC0xMjEsMTIgKzEyNiw3IEBAIHZvaWQgRmxvYXRSZWN0Ojp1bml0ZUlmTm9uWmVybyhjb25zdCBG
bG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZsb2F0IGxlZnQgPSBtaW4oeCgpLCBv
dGhlci54KCkpOwotICAgIGZsb2F0IHRvcCA9IG1pbih5KCksIG90aGVyLnkoKSk7Ci0gICAgZmxv
YXQgcmlnaHQgPSBtYXgobWF4WCgpLCBvdGhlci5tYXhYKCkpOwotICAgIGZsb2F0IGJvdHRvbSA9
IG1heChtYXhZKCksIG90aGVyLm1heFkoKSk7Ci0KLSAgICBzZXRMb2NhdGlvbkFuZFNpemVGcm9t
RWRnZXMobGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKKyAgICB1bml0ZUV2ZW5JZkVtcHR5KG90
aGVyKTsKIH0KIAogdm9pZCBGbG9hdFJlY3Q6OnNjYWxlKGZsb2F0IHN4LCBmbG9hdCBzeSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCShyZXZp
c2lvbiAxMDQ4NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1Miw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgaW50ZXJzZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZvaWQgdW5pdGUoY29uc3QgRmxv
YXRSZWN0Jik7CisgICAgdm9pZCB1bml0ZUV2ZW5JZkVtcHR5KGNvbnN0IEZsb2F0UmVjdCYpOwog
ICAgIHZvaWQgdW5pdGVJZk5vblplcm8oY29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICAvLyBOb3Rl
LCB0aGlzIGRvZXNuJ3QgbWF0Y2ggd2hhdCBJbnRSZWN0Ojpjb250YWlucyhJbnRQb2ludCYpIGRv
ZXM7IHRoZSBpbnQgdmVyc2lvbgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCShyZXZpc2lvbiAxMDQ4NDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjcsMjAgKzE2NywzMSBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmZpbmlzaFJlbmRl
clNWR0NvCiAKIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUNvbnRhaW5lckJvdW5kaW5n
Qm94ZXMoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXIsIEZsb2F0UmVjdCYgb2JqZWN0Qm91
bmRpbmdCb3gsIEZsb2F0UmVjdCYgc3Ryb2tlQm91bmRpbmdCb3gsIEZsb2F0UmVjdCYgcmVwYWlu
dEJvdW5kaW5nQm94KQogeworICAgIGJvb2wgaXNGaXJzdENoaWxkID0gdHJ1ZTsKKwogICAgIGZv
ciAoUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7IGN1cnJl
bnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChjdXJy
ZW50LT5pc1NWR0hpZGRlbkNvbnRhaW5lcigpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0gPSBjdXJyZW50LT5sb2NhbFRv
UGFyZW50VHJhbnNmb3JtKCk7CiAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7
Ci0gICAgICAgICAgICBvYmplY3RCb3VuZGluZ0JveC51bml0ZShjdXJyZW50LT5vYmplY3RCb3Vu
ZGluZ0JveCgpKTsKKyAgICAgICAgICAgIGlmIChpc0ZpcnN0Q2hpbGQpCisgICAgICAgICAgICAg
ICAgb2JqZWN0Qm91bmRpbmdCb3ggPSBjdXJyZW50LT5vYmplY3RCb3VuZGluZ0JveCgpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9iamVjdEJvdW5kaW5nQm94LnVuaXRlRXZl
bklmRW1wdHkoY3VycmVudC0+b2JqZWN0Qm91bmRpbmdCb3goKSk7CiAgICAgICAgICAgICBzdHJv
a2VCb3VuZGluZ0JveC51bml0ZShjdXJyZW50LT5zdHJva2VCb3VuZGluZ0JveCgpKTsKICAgICAg
ICAgICAgIHJlcGFpbnRCb3VuZGluZ0JveC51bml0ZShjdXJyZW50LT5yZXBhaW50UmVjdEluTG9j
YWxDb29yZGluYXRlcygpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG9iamVjdEJv
dW5kaW5nQm94LnVuaXRlKHRyYW5zZm9ybS5tYXBSZWN0KGN1cnJlbnQtPm9iamVjdEJvdW5kaW5n
Qm94KCkpKTsKKyAgICAgICAgICAgIGlmIChpc0ZpcnN0Q2hpbGQpCisgICAgICAgICAgICAgICAg
b2JqZWN0Qm91bmRpbmdCb3ggPSB0cmFuc2Zvcm0ubWFwUmVjdChjdXJyZW50LT5vYmplY3RCb3Vu
ZGluZ0JveCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvYmplY3RCb3Vu
ZGluZ0JveC51bml0ZUV2ZW5JZkVtcHR5KHRyYW5zZm9ybS5tYXBSZWN0KGN1cnJlbnQtPm9iamVj
dEJvdW5kaW5nQm94KCkpKTsKICAgICAgICAgICAgIHN0cm9rZUJvdW5kaW5nQm94LnVuaXRlKHRy
YW5zZm9ybS5tYXBSZWN0KGN1cnJlbnQtPnN0cm9rZUJvdW5kaW5nQm94KCkpKTsKICAgICAgICAg
ICAgIHJlcGFpbnRCb3VuZGluZ0JveC51bml0ZSh0cmFuc2Zvcm0ubWFwUmVjdChjdXJyZW50LT5y
ZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKSk7CiAgICAgICAgIH0KKworICAgICAgICBp
ZiAoaXNGaXJzdENoaWxkKQorICAgICAgICAgICAgaXNGaXJzdENoaWxkID0gZmFsc2U7CiAgICAg
fQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDUwMTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMS0xNCAgUGhpbGlwIFJv
Z2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIEZpeCBnZXRCQm94IGZvciBwZXJwZW5k
aWN1bGFyIHBhdGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NjE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3ZnL2N1c3RvbS9nZXRCQm94LXBlcnBlbmRpY3VsYXItcGF0aC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vZ2V0QkJveC1wZXJwZW5kaWN1bGFyLXBhdGgu
c3ZnOiBBZGRlZC4KKwogMjAxMi0wMS0xMyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFNraXAgdGVzdCB0aGF0IHN0YXJ0ZWQgZmFpbGluZyBhZnRlciByMTA1MDE1
LgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9nZXRCQm94LXBlcnBlbmRpY3VsYXItcGF0
aC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9nZXRC
Qm94LXBlcnBlbmRpY3VsYXItcGF0aC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9zdmcvY3VzdG9tL2dldEJCb3gtcGVycGVuZGljdWxhci1wYXRoLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorMTAwIDEwMCBQQVNTCkluZGV4OiBMYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL2dldEJCb3gtcGVycGVuZGljdWxhci1wYXRoLnN2Zwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2dldEJCb3gtcGVycGVuZGljdWxhci1wYXRoLnN2
ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vZ2V0QkJveC1wZXJwZW5k
aWN1bGFyLXBhdGguc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACis8P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSBUZXN0IHRoZSBib3VuZGluZyBib3gg
Y2FsY3VsYXRlZCBmb3IgdHdvIHBlcnBlbmRpY3VsYXIgbGluZXMgb2YgbGVuZ3RoIDEwMHB4IC0t
PgorPCEtLSBJZiB0aGUgYm91bmRpbmcgYm94IGlzIDEwMHgxMDAsIHdlIGNvbnNpZGVyIHRoaXMg
dGVzdCBwYXNzaW5nLiAtLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiBvbmxvYWQ9ImluaXQoKSI+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAg
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gaW5pdCgpCisgICAgeworICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICB2YXIgdHh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRleHQiKTsKKyAgICAgICAgc2l6ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaGFwZSIp
LmdldEJCb3goKTsKKyAgICAgICAgdmFyIHBhc3NTdGF0ZSA9ICJGQUlMIjsKKyAgICAgICAgaWYo
c2l6ZS53aWR0aCA9PSAxMDAgJiYgc2l6ZS5oZWlnaHQgPT0gMTAwKQorICAgICAgICAgICAgcGFz
c1N0YXRlID0gIlBBU1MiOworICAgICAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShzaXplLndpZHRoICsgIiAiICsgc2l6ZS5oZWlnaHQgKyAiICIgKyBwYXNzU3RhdGUp
OworICAgICAgICB0eHQuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOworICAgIH0KKyAgXV0+CisgIDwv
c2NyaXB0PgorICA8ZyBpZD0ic2hhcGUiPgorICAgIDxwYXRoIHN0cm9rZT0iIzY2NjY2NiIgc3Ry
b2tlLXdpZHRoPSIyLjAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1saW5lY2FwPSJi
dXR0IiBkPSJNNSA1TDUgMTA1IiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KKyAgICA8cGF0
aCBzdHJva2U9IiM2NjY2NjYiIHN0cm9rZS13aWR0aD0iMi4wIiBzdHJva2UtbGluZWpvaW49InJv
dW5kIiBzdHJva2UtbGluZWNhcD0iYnV0dCIgZD0iTTUgNUwxMDUgNSIgZmlsbC1ydWxlPSJub256
ZXJvIj48L3BhdGg+CisgIDwvZz4KKyAgPHRleHQgaWQ9InRleHQiIHg9IjUwIiB5PSI1MCIgLz4K
Kzwvc3ZnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122806</attachid>
            <date>2012-01-17 13:39:23 -0800</date>
            <delta_ts>2012-01-17 19:18:40 -0800</delta_ts>
            <desc>Fix getBBox for perpendicular paths</desc>
            <filename>76177.3.patch</filename>
            <type>text/plain</type>
            <size>7035</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTE4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTE3ICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgRml4IGdldEJCb3ggZm9yIHBlcnBl
bmRpY3VsYXIgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc2MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdDogc3ZnL2N1c3RvbS9nZXRCQm94LXBlcnBlbmRpY3VsYXItcGF0aC5zdmcKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFJlY3Q6OnVuaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6dW5p
dGVFdmVuSWZFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFJlY3Q6OnVuaXRlSWZOb25a
ZXJvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUNvbnRhaW5lckJvdW5kaW5nQm94ZXMpOgorCiAyMDEy
LTAxLTEyICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxOTcKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcAkocmV2aXNpb24gMTA1MTg1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAzLDEyICsxMDMsMTcgQEAgdm9pZCBGbG9hdFJlY3Q6OnVuaXRlKGNv
bnN0IEZsb2F0UmVjdCYgbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZmxvYXQgbCA9
IG1pbih4KCksIG90aGVyLngoKSk7Ci0gICAgZmxvYXQgdCA9IG1pbih5KCksIG90aGVyLnkoKSk7
Ci0gICAgZmxvYXQgciA9IG1heChtYXhYKCksIG90aGVyLm1heFgoKSk7Ci0gICAgZmxvYXQgYiA9
IG1heChtYXhZKCksIG90aGVyLm1heFkoKSk7CisgICAgdW5pdGVFdmVuSWZFbXB0eShvdGhlcik7
Cit9CisKK3ZvaWQgRmxvYXRSZWN0Ojp1bml0ZUV2ZW5JZkVtcHR5KGNvbnN0IEZsb2F0UmVjdCYg
b3RoZXIpCit7CisgICAgZmxvYXQgbWluWCA9IG1pbih4KCksIG90aGVyLngoKSk7CisgICAgZmxv
YXQgbWluWSA9IG1pbih5KCksIG90aGVyLnkoKSk7CisgICAgZmxvYXQgbWF4WCA9IG1heCh0aGlz
LT5tYXhYKCksIG90aGVyLm1heFgoKSk7CisgICAgZmxvYXQgbWF4WSA9IG1heCh0aGlzLT5tYXhZ
KCksIG90aGVyLm1heFkoKSk7CiAKLSAgICBzZXRMb2NhdGlvbkFuZFNpemVGcm9tRWRnZXMobCwg
dCwgciwgYik7CisgICAgc2V0TG9jYXRpb25BbmRTaXplRnJvbUVkZ2VzKG1pblgsIG1pblksIG1h
eFgsIG1heFkpOwogfQogCiB2b2lkIEZsb2F0UmVjdDo6dW5pdGVJZk5vblplcm8oY29uc3QgRmxv
YXRSZWN0JiBvdGhlcikKQEAgLTEyMSwxMiArMTI2LDcgQEAgdm9pZCBGbG9hdFJlY3Q6OnVuaXRl
SWZOb25aZXJvKGNvbnN0IEZsbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZmxvYXQg
bGVmdCA9IG1pbih4KCksIG90aGVyLngoKSk7Ci0gICAgZmxvYXQgdG9wID0gbWluKHkoKSwgb3Ro
ZXIueSgpKTsKLSAgICBmbG9hdCByaWdodCA9IG1heChtYXhYKCksIG90aGVyLm1heFgoKSk7Ci0g
ICAgZmxvYXQgYm90dG9tID0gbWF4KG1heFkoKSwgb3RoZXIubWF4WSgpKTsKLQotICAgIHNldExv
Y2F0aW9uQW5kU2l6ZUZyb21FZGdlcyhsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOworICAgIHVu
aXRlRXZlbklmRW1wdHkob3RoZXIpOwogfQogCiB2b2lkIEZsb2F0UmVjdDo6c2NhbGUoZmxvYXQg
c3gsIGZsb2F0IHN5KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRSZWN0LmgJKHJldmlzaW9uIDEwNTE4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0UmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNiArMTUyLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBpbnRlcnNlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9p
ZCB1bml0ZShjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHVuaXRlRXZlbklmRW1wdHkoY29u
c3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCB1bml0ZUlmTm9uWmVybyhjb25zdCBGbG9hdFJlY3Qm
KTsKIAogICAgIC8vIE5vdGUsIHRoaXMgZG9lc24ndCBtYXRjaCB3aGF0IEludFJlY3Q6OmNvbnRh
aW5zKEludFBvaW50JikgZG9lczsgdGhlIGludCB2ZXJzaW9uCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHJldmlzaW9uIDEw
NTE4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NywyMCArMTY3LDMxIEBAIHZvaWQgU1ZHUmVuZGVyU3Vw
cG9ydDo6ZmluaXNoUmVuZGVyU1ZHQ28KIAogdm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRl
Q29udGFpbmVyQm91bmRpbmdCb3hlcyhjb25zdCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lciwgRmxv
YXRSZWN0JiBvYmplY3RCb3VuZGluZ0JveCwgRmxvYXRSZWN0JiBzdHJva2VCb3VuZGluZ0JveCwg
RmxvYXRSZWN0JiByZXBhaW50Qm91bmRpbmdCb3gpCiB7CisgICAgYm9vbCBpc0ZpcnN0Q2hpbGQg
PSB0cnVlOworCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBjb250YWluZXItPmZp
cnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpIHsK
ICAgICAgICAgaWYgKGN1cnJlbnQtPmlzU1ZHSGlkZGVuQ29udGFpbmVyKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9
IGN1cnJlbnQtPmxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKTsKICAgICAgICAgaWYgKHRyYW5zZm9y
bS5pc0lkZW50aXR5KCkpIHsKLSAgICAgICAgICAgIG9iamVjdEJvdW5kaW5nQm94LnVuaXRlKGN1
cnJlbnQtPm9iamVjdEJvdW5kaW5nQm94KCkpOworICAgICAgICAgICAgaWYgKGlzRmlyc3RDaGls
ZCkKKyAgICAgICAgICAgICAgICBvYmplY3RCb3VuZGluZ0JveCA9IGN1cnJlbnQtPm9iamVjdEJv
dW5kaW5nQm94KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb2JqZWN0Qm91
bmRpbmdCb3gudW5pdGVFdmVuSWZFbXB0eShjdXJyZW50LT5vYmplY3RCb3VuZGluZ0JveCgpKTsK
ICAgICAgICAgICAgIHN0cm9rZUJvdW5kaW5nQm94LnVuaXRlKGN1cnJlbnQtPnN0cm9rZUJvdW5k
aW5nQm94KCkpOwogICAgICAgICAgICAgcmVwYWludEJvdW5kaW5nQm94LnVuaXRlKGN1cnJlbnQt
PnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgb2JqZWN0Qm91bmRpbmdCb3gudW5pdGUodHJhbnNmb3JtLm1hcFJlY3QoY3VycmVu
dC0+b2JqZWN0Qm91bmRpbmdCb3goKSkpOworICAgICAgICAgICAgaWYgKGlzRmlyc3RDaGlsZCkK
KyAgICAgICAgICAgICAgICBvYmplY3RCb3VuZGluZ0JveCA9IHRyYW5zZm9ybS5tYXBSZWN0KGN1
cnJlbnQtPm9iamVjdEJvdW5kaW5nQm94KCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG9iamVjdEJvdW5kaW5nQm94LnVuaXRlRXZlbklmRW1wdHkodHJhbnNmb3JtLm1hcFJl
Y3QoY3VycmVudC0+b2JqZWN0Qm91bmRpbmdCb3goKSkpOwogICAgICAgICAgICAgc3Ryb2tlQm91
bmRpbmdCb3gudW5pdGUodHJhbnNmb3JtLm1hcFJlY3QoY3VycmVudC0+c3Ryb2tlQm91bmRpbmdC
b3goKSkpOwogICAgICAgICAgICAgcmVwYWludEJvdW5kaW5nQm94LnVuaXRlKHRyYW5zZm9ybS5t
YXBSZWN0KGN1cnJlbnQtPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpKTsKICAgICAg
ICAgfQorCisgICAgICAgIGlmIChpc0ZpcnN0Q2hpbGQpCisgICAgICAgICAgICBpc0ZpcnN0Q2hp
bGQgPSBmYWxzZTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTE4NSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEy
LTAxLTE3ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgRml4IGdl
dEJCb3ggZm9yIHBlcnBlbmRpY3VsYXIgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzdmcvY3VzdG9tL2dldEJCb3gtcGVycGVuZGljdWxhci1w
YXRoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS9nZXRCQm94LXBl
cnBlbmRpY3VsYXItcGF0aC5zdmc6IEFkZGVkLgorCiAyMDEyLTAxLTEyICBEYXZpZCBIeWF0dCAg
PGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzYxOTcKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vZ2V0QkJveC1w
ZXJwZW5kaWN1bGFyLXBhdGgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9jdXN0b20vZ2V0QkJveC1wZXJwZW5kaWN1bGFyLXBhdGgtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9nZXRCQm94LXBlcnBlbmRpY3VsYXIt
cGF0aC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKzEwMCAxMDAgUEFT
UwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9nZXRCQm94LXBlcnBlbmRpY3VsYXItcGF0
aC5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9nZXRCQm94LXBlcnBl
bmRpY3VsYXItcGF0aC5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9t
L2dldEJCb3gtcGVycGVuZGljdWxhci1wYXRoLnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gVGVzdCB0
aGUgYm91bmRpbmcgYm94IGNhbGN1bGF0ZWQgZm9yIHR3byBwZXJwZW5kaWN1bGFyIGxpbmVzIG9m
IGxlbmd0aCAxMDBweCAtLT4KKzwhLS0gSWYgdGhlIGJvdW5kaW5nIGJveCBpcyAxMDB4MTAwLCB3
ZSBjb25zaWRlciB0aGlzIHRlc3QgcGFzc2luZy4gLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgb25sb2FkPSJpbml0KCkiPgorICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisgIDwhW0NEQVRBWworICAgIGZ1bmN0aW9uIGluaXQoKQorICAgIHsKKyAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdmFyIHR4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisgICAgICAgIHNpemUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic2hhcGUiKS5nZXRCQm94KCk7CisgICAgICAgIHZhciBwYXNzU3RhdGUgPSAiRkFJ
TCI7CisgICAgICAgIGlmKHNpemUud2lkdGggPT0gMTAwICYmIHNpemUuaGVpZ2h0ID09IDEwMCkK
KyAgICAgICAgICAgIHBhc3NTdGF0ZSA9ICJQQVNTIjsKKyAgICAgICAgdmFyIHRleHROb2RlID0g
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc2l6ZS53aWR0aCArICIgIiArIHNpemUuaGVpZ2h0ICsg
IiAiICsgcGFzc1N0YXRlKTsKKyAgICAgICAgdHh0LmFwcGVuZENoaWxkKHRleHROb2RlKTsKKyAg
ICB9CisgIF1dPgorICA8L3NjcmlwdD4KKyAgPGcgaWQ9InNoYXBlIj4KKyAgICA8cGF0aCBzdHJv
a2U9IiM2NjY2NjYiIHN0cm9rZS13aWR0aD0iMi4wIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBz
dHJva2UtbGluZWNhcD0iYnV0dCIgZD0iTTUgNUw1IDEwNSIgZmlsbC1ydWxlPSJub256ZXJvIj48
L3BhdGg+CisgICAgPHBhdGggc3Ryb2tlPSIjNjY2NjY2IiBzdHJva2Utd2lkdGg9IjIuMCIgc3Ry
b2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIGQ9Ik01IDVMMTA1IDUi
IGZpbGwtcnVsZT0ibm9uemVybyI+PC9wYXRoPgorICA8L2c+CisgIDx0ZXh0IGlkPSJ0ZXh0IiB4
PSI1MCIgeT0iNTAiIC8+Cis8L3N2Zz4K
</data>

          </attachment>
      

    </bug>

</bugzilla>