<?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>17169</bug_id>
          
          <creation_ts>2008-02-03 17:13:04 -0800</creation_ts>
          <short_desc>Support transform on Canvas</short_desc>
          <delta_ts>2008-02-03 19:44:38 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>16604</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>69288</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-03 17:13:04 -0800</bug_when>
    <thetext>Add transform() support to Canvas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69291</commentid>
    <comment_count>1</comment_count>
      <attachid>18893</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-03 18:01:06 -0800</bug_when>
    <thetext>Created attachment 18893
Patch to support transform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69294</commentid>
    <comment_count>2</comment_count>
      <attachid>18893</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-03 18:14:35 -0800</bug_when>
    <thetext>Comment on attachment 18893
Patch to support transform

+    state().m_path.transform(transform.inverse());

Is the transform guaranteed to be invertible? If not, what happens? Does a test case cover this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69296</commentid>
    <comment_count>3</comment_count>
      <attachid>18893</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-02-03 18:19:35 -0800</bug_when>
    <thetext>Comment on attachment 18893
Patch to support transform

Looks good, assuming isfinite checks for NaN as well as infinities (I am not sure if it does).

r=me but please double-check that detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69298</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-03 18:38:12 -0800</bug_when>
    <thetext>Landed r29956 -- added an additional nan testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69301</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-03 19:05:57 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Looks good, assuming isfinite checks for NaN as well as infinities (I am not
&gt; sure if it does).

Yes, isfinite(x) === !isnan(x) &amp;&amp; !isinf(x).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69302</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-03 19:06:13 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 18893 [edit])
&gt; +    state().m_path.transform(transform.inverse());
&gt; 
&gt; Is the transform guaranteed to be invertible? If not, what happens? Does a test
&gt; case cover this?

Ollie?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69304</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-03 19:44:38 -0800</bug_when>
    <thetext>Darin, whoops, didn&apos;t see your comment.

It&apos;s safe -- it&apos;s equivalent to scale(0,0) for example.

That said it should have a testcase which i&apos;ll work on after i eat</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18893</attachid>
            <date>2008-02-03 18:01:06 -0800</date>
            <delta_ts>2008-02-03 18:19:35 -0800</delta_ts>
            <desc>Patch to support transform</desc>
            <filename>transform-support.patch</filename>
            <type>text/plain</type>
            <size>13792</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NTBmOTA5Li4yY2E1NjkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMDgtMDIt
MDMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMTcxNjk6IFN1cHBvcnQgdHJhbnNmb3Jt
IG9uIENhbnZhcworCisgICAgICAgIFRlc3QgY2FzZXMgZm9yIENhbnZhcy50cmFuc2Zvcm0gLS0g
dGhlIG91dHB1dCBmb3IgdGhlc2UgdGVzdHMgaXMgCisgICAgICAgIGEgc2luZ2xlIGdyZWVuIHNx
dWFyZSwgc28gc2hvdWxkIGJlIGVudGlyZWx5IGNyb3NzLXBsYXRmb3JtLgorCisgICAgICAgICog
ZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1pZGVudGl0eS1leHBlY3RlZC5jaGVja3N1bTog
QWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1pZGVudGl0eS1l
eHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zv
cm0taWRlbnRpdHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtdHJhbnNmb3JtLWlkZW50aXR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL2NhbnZhcy10cmFuc2Zvcm0taW5maW5pdHktZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0taW5maW5pdHktZXhwZWN0ZWQu
cG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLWluZmlu
aXR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRy
YW5zZm9ybS1pbmZpbml0eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52
YXMtdHJhbnNmb3JtLW11bHRpcGx5LWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLW11bHRpcGx5LWV4cGVjdGVkLnBuZzogQWRk
ZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1tdWx0aXBseS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0t
bXVsdGlwbHkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5z
Zm9ybS1za2V3ZWQtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL2NhbnZhcy10cmFuc2Zvcm0tc2tld2VkLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1za2V3ZWQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLXNrZXdlZC5odG1sOiBB
ZGRlZC4KKwogMjAwOC0wMi0wMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgZGFyaW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtdHJhbnNmb3JtLWlkZW50aXR5LWV4cGVjdGVkLmNoZWNrc3VtIGIvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1pZGVudGl0eS1leHBlY3RlZC5jaGVj
a3N1bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmM5MzczCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1pZGVu
dGl0eS1leHBlY3RlZC5jaGVja3N1bQpAQCAtMCwwICsxIEBACitlOGU3OTA2NmRkYTNiMzEzNzM4
ZGMzODMwMWZhMDUyNgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0taWRlbnRpdHktZXhwZWN0ZWQu
cG5nIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1pZGVudGl0eS1l
eHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q2NWU3NQpC
aW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy10cmFuc2Zvcm0taWRlbnRpdHktZXhwZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1pZGVudGl0eS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLWlkZW50aXR5LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDE1ZTllCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9y
bS1pZGVudGl0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0
ICgwLDApIHNpemUgODAweDEyMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4
MDB4MTIwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MTA0CisgICAg
ICBSZW5kZXJIVE1MQ2FudmFzIHtDQU5WQVN9IGF0ICgwLDApIHNpemUgMTAweDEwMAorICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy10cmFuc2Zvcm0taWRlbnRpdHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy10cmFuc2Zvcm0taWRlbnRpdHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41N2YyNmQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1pZGVudGl0eS5odG1sCkBAIC0wLDAgKzEsMTQgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPCEtLSBUZXN0IGJhc2VkIG9uIHRoYXQgZm91bmQgYXQgCisgICAg
IGh0dHA6Ly9waGlsaXAuaHRtbDUub3JnL3Rlc3RzL2NhbnZhcy9zdWl0ZS90ZXN0cy9pbmRleC4y
ZC50cmFuc2Zvcm1hdGlvbi50cmFuc2Zvcm0uaHRtbAorICAtLT4KKzx0aXRsZT5DYW52YXMgdGVz
dDogMmQudHJhbnNmb3JtYXRpb24udHJhbnNmb3JtLmlkZW50aXR5PC90aXRsZT4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgY2xhc3M9Im91dHB1dCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPjxwIGNs
YXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+Cis8c2Ny
aXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKS5nZXRD
b250ZXh0KCIyZCIpOworY2FudmFzLmZpbGxTdHlsZSA9ICcjZjAwJzsKK2NhbnZhcy5maWxsUmVj
dCgwLCAwLCAxMDAsIDEwMCk7CitjYW52YXMudHJhbnNmb3JtKDEsMCwgMCwxLCAwLDApOworY2Fu
dmFzLmZpbGxTdHlsZSA9ICcjMGYwJzsKK2NhbnZhcy5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10
cmFuc2Zvcm0taW5maW5pdHktZXhwZWN0ZWQuY2hlY2tzdW0gYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtdHJhbnNmb3JtLWluZmluaXR5LWV4cGVjdGVkLmNoZWNrc3VtCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYzkzNzMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLWluZmluaXR5LWV4cGVjdGVk
LmNoZWNrc3VtCkBAIC0wLDAgKzEgQEAKK2U4ZTc5MDY2ZGRhM2IzMTM3MzhkYzM4MzAxZmEwNTI2
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1pbmZpbml0eS1leHBlY3RlZC5wbmcgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLWluZmluaXR5LWV4cGVjdGVkLnBuZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDY1ZTc1CkJpbmFyeSBmaWxlcyAv
ZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1p
bmZpbml0eS1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLWluZmluaXR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0taW5maW5pdHktZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMTVlOWUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLWluZmluaXR5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAor
ICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4MTIwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgxMjAKKyAgICBS
ZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgxMDQKKyAgICAgIFJlbmRlckhUTUxD
YW52YXMge0NBTlZBU30gYXQgKDAsMCkgc2l6ZSAxMDB4MTAwCisgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDB4MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRy
YW5zZm9ybS1pbmZpbml0eS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRy
YW5zZm9ybS1pbmZpbml0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmMxZDk4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtdHJhbnNmb3JtLWluZmluaXR5Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhU
TUw+Cis8IS0tIFRlc3QgYmFzZWQgb24gdGhhdCBmb3VuZCBhdCAKKyAgICAgaHR0cDovL3BoaWxp
cC5odG1sNS5vcmcvdGVzdHMvY2FudmFzL3N1aXRlL3Rlc3RzL2luZGV4LjJkLnRyYW5zZm9ybWF0
aW9uLnRyYW5zZm9ybS5odG1sCisgIC0tPgorPHRpdGxlPkNhbnZhcyB0ZXN0OiAyZC50cmFuc2Zv
cm1hdGlvbi50cmFuc2Zvcm0uaW5maW5pdHk8L3RpdGxlPgorPGNhbnZhcyBpZD0iY2FudmFzIiBj
bGFzcz0ib3V0cHV0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+PHAgY2xhc3M9ImZhbGxiYWNr
Ij5GQUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY3R4
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIik7Citj
dHguZmlsbFN0eWxlID0gJyNmMDAnOworY3R4LmZpbGxSZWN0KDAsIDAsIDEwMCwgMTAwKTsKK2N0
eC50cmFuc2Zvcm0oSW5maW5pdHksMCwgMCxJbmZpbml0eSwgMCwwKTsKK2N0eC5maWxsU3R5bGUg
PSAnIzBmMCc7CitjdHguZmlsbFJlY3QoLTEwMCwgLTEwMCwgMjAwLCAyMDApOworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLW11
bHRpcGx5LWV4cGVjdGVkLmNoZWNrc3VtIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFz
LXRyYW5zZm9ybS1tdWx0aXBseS1leHBlY3RlZC5jaGVja3N1bQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42YmM5MzczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1tdWx0aXBseS1leHBlY3RlZC5jaGVja3N1bQpA
QCAtMCwwICsxIEBACitlOGU3OTA2NmRkYTNiMzEzNzM4ZGMzODMwMWZhMDUyNgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy10cmFuc2Zvcm0tbXVsdGlwbHktZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLXRyYW5zZm9ybS1tdWx0aXBseS1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q2NWU3NQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFu
ZCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0tbXVsdGlwbHktZXhw
ZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLXRyYW5zZm9ybS1tdWx0aXBseS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtdHJhbnNmb3JtLW11bHRpcGx5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDE1ZTllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1tdWx0aXBseS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmll
dyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDEyMAorICBS
ZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4MTIwCisgICAgUmVuZGVyQm9keSB7
Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MTA0CisgICAgICBSZW5kZXJIVE1MQ2FudmFzIHtDQU5W
QVN9IGF0ICgwLDApIHNpemUgMTAweDEwMAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0tbXVs
dGlwbHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0tbXVs
dGlwbHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGQ5ZmQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9y
bS1tdWx0aXBseS5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPCEtLSBU
ZXN0IGJhc2VkIG9uIHRoYXQgZm91bmQgYXQgCisgICAgIGh0dHA6Ly9waGlsaXAuaHRtbDUub3Jn
L3Rlc3RzL2NhbnZhcy9zdWl0ZS90ZXN0cy9pbmRleC4yZC50cmFuc2Zvcm1hdGlvbi50cmFuc2Zv
cm0uaHRtbAorICAtLT4KKzx0aXRsZT5DYW52YXMgdGVzdDogMmQudHJhbnNmb3JtYXRpb24udHJh
bnNmb3JtLm11bHRpcGx5PC90aXRsZT4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgY2xhc3M9Im91dHB1
dCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFs
bGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIGN0eCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKS5nZXRDb250ZXh0KCIyZCIpOworY3R4LmZpbGxTdHls
ZSA9ICcjZjAwJzsKK2N0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisKK2N0eC50cmFuc2Zv
cm0oMSwyLCAzLDQsIDUsNik7CitjdHgudHJhbnNmb3JtKC0yLDEsIDMvMiwtMS8yLCAxLC0yKTsK
K2N0eC5maWxsU3R5bGUgPSAnIzBmMCc7CitjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJh
bnNmb3JtLXNrZXdlZC1leHBlY3RlZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy10cmFuc2Zvcm0tc2tld2VkLWV4cGVjdGVkLmNoZWNrc3VtCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYzkzNzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLXNrZXdlZC1leHBlY3RlZC5jaGVja3N1
bQpAQCAtMCwwICsxIEBACitlOGU3OTA2NmRkYTNiMzEzNzM4ZGMzODMwMWZhMDUyNgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy10cmFuc2Zvcm0tc2tld2VkLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy10cmFuc2Zvcm0tc2tld2VkLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDY1ZTc1CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5k
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1za2V3ZWQtZXhwZWN0
ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFz
LXRyYW5zZm9ybS1za2V3ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLXRyYW5zZm9ybS1za2V3ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmQwMTVlOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLXNrZXdlZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDEyMAorICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4MTIwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3ODR4MTA0CisgICAgICBSZW5kZXJIVE1MQ2FudmFzIHtDQU5WQVN9IGF0ICgw
LDApIHNpemUgMTAweDEwMAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
MHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0tc2tld2VkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLXNrZXdlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMGU1M2QKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLXNrZXdlZC5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MPgorPCEtLSBUZXN0IGJhc2VkIG9uIHRo
YXQgZm91bmQgYXQgCisgICAgIGh0dHA6Ly9waGlsaXAuaHRtbDUub3JnL3Rlc3RzL2NhbnZhcy9z
dWl0ZS90ZXN0cy9pbmRleC4yZC50cmFuc2Zvcm1hdGlvbi50cmFuc2Zvcm0uaHRtbAorICAtLT4K
Kzx0aXRsZT5DYW52YXMgdGVzdDogMmQudHJhbnNmb3JtYXRpb24udHJhbnNmb3JtLnNrZXdlZDwv
dGl0bGU+Cis8Y2FudmFzIGlkPSJjYW52YXMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAiIGhl
aWdodD0iMTAwIj48cCBjbGFzcz0iZmFsbGJhY2siPkZBSUwgKGZhbGxiYWNrIGNvbnRlbnQpPC9w
PjwvY2FudmFzPgorPHNjcmlwdD4KK3ZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2FudmFzIikuZ2V0Q29udGV4dCgiMmQiKTsKKy8vIENyZWF0ZSBncmVlbiB3aXRoIGEgcmVkIHNx
dWFyZSByaW5nIGluc2lkZSBpdAorY3R4LmZpbGxTdHlsZSA9ICcjMGYwJzsKK2N0eC5maWxsUmVj
dCgwLCAwLCAxMDAsIDEwMCk7CitjdHguZmlsbFN0eWxlID0gJyNmMDAnOworY3R4LmZpbGxSZWN0
KDIwLCAxMCwgNjAsIDMwKTsKK2N0eC5maWxsU3R5bGUgPSAnIzBmMCc7CitjdHguZmlsbFJlY3Qo
NDAsIDIwLCAyMCwgMTApOworCisvLyBEcmF3IGEgc2tld2VkIHNoYXBlIHRvIGZpbGwgdGhhdCBn
YXAsIHRvIG1ha2Ugc3VyZSBpdCBpcyBhbGlnbmVkIGNvcnJlY3RseQorY3R4LnRyYW5zZm9ybSgx
LDQsIDIsMywgNSw2KTsKKworLy8gUG9zdC10cmFuc2Zvcm0gY29vcmRpbmF0ZXM6CisvLyAgIFtb
MjAsMTBdLFs4MCwxMF0sWzgwLDQwXSxbMjAsNDBdLFsyMCwxMF0sWzQwLDIwXSxbNDAsMzBdLFs2
MCwzMF0sWzYwLDIwXSxbNDAsMjBdLFsyMCwxMF1dOworLy8gSGVuY2UgcHJlLXRyYW5zZm9ybSBj
b29yZGluYXRlczoKK3ZhciBwdHM9W1stNy40LDExLjJdLFstNDMuNCw1OS4yXSxbLTMxLjQsNTMu
Ml0sWzQuNiw1LjJdLFstNy40LDExLjJdLAorICAgICAgICAgWy0xNS40LDI1LjJdLFstMTEuNCwy
My4yXSxbLTIzLjQsMzkuMl0sWy0yNy40LDQxLjJdLFstMTUuNCwyNS4yXSwKKyAgICAgICAgIFst
Ny40LDExLjJdXTsKK2N0eC5iZWdpblBhdGgoKTsKK2N0eC5tb3ZlVG8ocHRzWzBdWzBdLCBwdHNb
MF1bMV0pOworZm9yICh2YXIgaSA9IDA7IGkgPCBwdHMubGVuZ3RoOyArK2kpCisgICAgY3R4Lmxp
bmVUbyhwdHNbaV1bMF0sIHB0c1tpXVsxXSk7CitjdHguZmlsbCgpOworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1OWFj
OTUuLmMwMGExNGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDgtMDItMDMgIE9saXZlciBIdW50ICA8b2xp
dmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCdWcgMTcxNjk6IFN1cHBvcnQgdHJhbnNmb3JtIG9uIENhbnZhcworCisgICAgICAg
IE5pY2UgYW5kIHNpbXBsZSBwYXRjaCBhcyB0aGUgY3Jvc3MtcGxhdGZvcm0gY29kZSB0byBhcHBs
eQorICAgICAgICBhIHRyYW5zZm9ybSB3YXMgYWxyZWFkeSB0aGVyZS4KKworICAgICAgICBUZXN0
czogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1pZGVudGl0eS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLWluZmluaXR5Lmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0tbXVsdGlwbHkuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1za2V3ZWQuaHRtbAorCisgICAg
ICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0cmFuc2Zvcm0pOgorICAgICAgICAqIGh0bWwv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaWRsOgorCiAyMDA4LTAyLTAzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBkYXJpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1sL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggYjY5OGJlMy4uNDNhYWVhNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvV2ViQ29yZS9o
dG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTMxOSw2ICszMTksMjEgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRyYW5zbGF0ZShmbG9hdCB0eCwgZmxvYXQgdHkp
CiAgICAgc3RhdGUoKS5tX3BhdGgudHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0
ZSgtdHgsIC10eSkpOwogfQogCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dHJhbnNm
b3JtKGZsb2F0IG0xMSwgZmxvYXQgbTEyLCBmbG9hdCBtMjEsIGZsb2F0IG0yMiwgZmxvYXQgZHgs
IGZsb2F0IGR5KQoreworICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7
CisgICAgaWYgKCFjKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgLy8gSFRNTDUgMy4xNC4x
MS4xIC0tIGlnbm9yZSBhbnkgY2FsbHMgdGhhdCBwYXNzIG5vbi1maW5pdGUgbnVtYmVycworICAg
IGlmICghaXNmaW5pdGUobTExKSB8fCAhaXNmaW5pdGUobTIxKSB8fCAhaXNmaW5pdGUoZHgpIHx8
IAorICAgICAgICAhaXNmaW5pdGUobTEyKSB8fCAhaXNmaW5pdGUobTIyKSB8fCAhaXNmaW5pdGUo
ZHkpKQorICAgICAgICByZXR1cm47CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybShtMTEs
IG0xMiwgbTIxLCBtMjIsIGR4LCBkeSk7CisgICAgYy0+Y29uY2F0Q1RNKHRyYW5zZm9ybSk7Cisg
ICAgc3RhdGUoKS5tX3BhdGgudHJhbnNmb3JtKHRyYW5zZm9ybS5pbnZlcnNlKCkpOworfQorCiB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoY29uc3QgU3RyaW5n
JiBjb2xvcikKIHsKICAgICBzZXRTdHJva2VTdHlsZShuZXcgQ2FudmFzU3R5bGUoY29sb3IpKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1dl
YkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCAxZGUzNTQ5Li4zMGY3
YTUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgK
KysrIGIvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC05Niw2ICs5
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzY2FsZShmbG9hdCBzeCwg
ZmxvYXQgc3kpOwogICAgICAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucyk7CiAg
ICAgICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHR4LCBmbG9hdCB0eSk7CisgICAgICAgIHZvaWQg
dHJhbnNmb3JtKGZsb2F0IG0xMSwgZmxvYXQgbTEyLCBmbG9hdCBtMjEsIGZsb2F0IG0yMiwgZmxv
YXQgZHgsIGZsb2F0IGR5KTsKIAogICAgICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IFN0
cmluZyYgY29sb3IpOwogICAgICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGZsb2F0IGdyYXlMZXZl
bCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlk
bCBiL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCmluZGV4IGZmOTIx
M2UuLjNkNTY2ZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRs
CkBAIC00MCw2ICs0MCw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgdm9pZCBzY2FsZShpbiBm
bG9hdCBzeCwgaW4gZmxvYXQgc3kpOwogICAgICAgICB2b2lkIHJvdGF0ZShpbiBmbG9hdCBhbmds
ZSk7CiAgICAgICAgIHZvaWQgdHJhbnNsYXRlKGluIGZsb2F0IHR4LCBpbiBmbG9hdCB0eSk7Cisg
ICAgICAgIHZvaWQgdHJhbnNmb3JtKGluIGZsb2F0IG0xMSwgaW4gZmxvYXQgbTEyLCBpbiBmbG9h
dCBtMjEsIGluIGZsb2F0IG0yMiwgaW4gZmxvYXQgZHgsIGluIGZsb2F0IGR5KTsKIAogICAgICAg
ICBhdHRyaWJ1dGUgZmxvYXQgZ2xvYmFsQWxwaGE7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBnbG9iYWxDb21wb3NpdGVPcGVyYXRpb247Cg==
</data>
<flag name="review"
          id="8249"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>