<?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>39230</bug_id>
          
          <creation_ts>2010-05-17 13:16:21 -0700</creation_ts>
          <short_desc>[OpenVG] Implement ImageBuffer using (EGL pbuffer) surfaces</short_desc>
          <delta_ts>2013-04-19 12:23:12 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>33987</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Jakob Petsovits">jpetsovits</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mrobinson</cc>
    
    <cc>sergio</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>226870</commentid>
    <comment_count>0</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-05-17 13:16:21 -0700</bug_when>
    <thetext>This commit adds ImageBuffer support to the OpenVG graphics backend. Not including Yong&apos;s toDataURL() implementation yet, that one is still subject to bug 37117 before I can use it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226875</commentid>
    <comment_count>1</comment_count>
      <attachid>56263</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-05-17 13:18:24 -0700</bug_when>
    <thetext>Created attachment 56263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227181</commentid>
    <comment_count>2</comment_count>
      <attachid>56263</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-18 01:31:46 -0700</bug_when>
    <thetext>Comment on attachment 56263
Patch

&gt; +#ifdef WTF_PLATFORM_BIG_ENDIAN
&gt; +#define IMAGEBUFFER_A 0
&gt; +#define IMAGEBUFFER_R 1
&gt; +#define IMAGEBUFFER_G 2
&gt; +#define IMAGEBUFFER_B 3
&gt; +#else
&gt; +#define IMAGEBUFFER_A 3
&gt; +#define IMAGEBUFFER_R 2
&gt; +#define IMAGEBUFFER_G 1
&gt; +#define IMAGEBUFFER_B 0
&gt; +#endif
Not sure about our policy on define&apos;s. Don&apos;t we use static constants here? 

WebCore/platform/graphics/openvg/ImageBufferData.h:44
 +      void transformColorSpace(const Vector&lt;int&gt;&amp; lookUpTable);
OpenVG doesn&apos;t need transformColorSpace. It is used to transform the colorSpace of an ImageBuffer from linearRGB to sRGB (DeviceRGB) and back. OpenVG can do that itself. We also don&apos;t transform an ImageBuffer after it is created (or at least it&apos;s not the intention of this method).

WebCore/platform/graphics/openvg/ImageBufferOpenVG.cpp:70
 +          m_format = VG_sARGB_8888_PRE; break;
Newlines after &apos;;&apos;.

WebCore/platform/graphics/openvg/ImageBufferOpenVG.cpp:123
 +          rect.x(), rect.y(), rect.width(), rect.height());
line up with &apos;data&apos; please. Think I saw this before. Please fix it everywhere.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56263</attachid>
            <date>2010-05-17 13:18:24 -0700</date>
            <delta_ts>2010-06-11 12:45:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39230-20100517162256.patch</filename>
            <type>text/plain</type>
            <size>12354</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2VmZTI1OS4uZDRkYTQ3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMCBAQAogMjAxMC0wNS0xNyAgSmFrb2IgUGV0c292
aXRzICA8anBldHNvdml0c0ByaW0uY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtPcGVuVkddIEltcGxlbWVudCBJbWFnZUJ1ZmZlciB1c2luZyAo
RUdMIHBidWZmZXIpIHN1cmZhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTIzMAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZn
L0ltYWdlQnVmZmVyRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudmcvSW1hZ2VCdWZmZXJPcGVuVkcuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyRGF0YTo6fkltYWdlQnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckRhdGE6OmdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRh
dGE6OnB1dEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnRy
YW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp+SW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpw
bGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorCisyMDEwLTA1LTE3ICBKYWtvYiBQZXRzb3ZpdHMg
IDxqcGV0c292aXRzQHJpbS5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlr
b3MuCiAKICAgICAgICAgW09wZW5WR10gQWRkIHN1cHBvcnQgZm9yIGRlY29kaW5nIGFuZCBkcmF3
aW5nIGltYWdlcwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcv
SW1hZ2VCdWZmZXJEYXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9JbWFn
ZUJ1ZmZlckRhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGM0YzRh
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1h
Z2VCdWZmZXJEYXRhLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aWZuZGVmIEltYWdlQnVmZmVyRGF0YV9oCisjZGVmaW5lIEltYWdlQnVmZmVyRGF0YV9oCisKKyNp
bmNsdWRlIDxvcGVudmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRTaXplOworY2xhc3MgSW50UmVj
dDsKK2NsYXNzIEltYWdlRGF0YTsKK2NsYXNzIFN1cmZhY2VPcGVuVkc7CisKK2NsYXNzIEltYWdl
QnVmZmVyRGF0YSB7CitwdWJsaWM6CisgICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUm
LCBpbnQgY29sb3JTcGFjZSwgYm9vbCYgc3VjY2Vzcyk7CisgICAgfkltYWdlQnVmZmVyRGF0YSgp
OworCisgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0
JiByZWN0LAorICAgICAgICBjb25zdCBJbnRTaXplJiBzaXplLCBWR0ltYWdlRm9ybWF0IGZvcm1h
dCkgY29uc3Q7CisgICAgdm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhKiYgc291cmNlLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LAorICAgICAgICBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
LCBjb25zdCBJbnRTaXplJiBzaXplLCBWR0ltYWdlRm9ybWF0IGZvcm1hdCk7CisKKyAgICB2b2lk
IHRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKTsKKwor
ICAgIFZHSW1hZ2VGb3JtYXQgbV9mb3JtYXQ7CisgICAgU3VyZmFjZU9wZW5WRyogbV9zdXJmYWNl
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnZnL0ltYWdlQnVmZmVyT3BlblZHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnZnL0ltYWdlQnVmZmVyT3BlblZHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5hOGFmYTNiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudmcvSW1hZ2VCdWZmZXJPcGVuVkcuY3BwCkBAIC0wLDAgKzEsMjY0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgorCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJJbWFnZURlY29k
ZXIuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhaW50ZXJPcGVu
VkcuaCIKKyNpbmNsdWRlICJTdXJmYWNlT3BlblZHLmgiCisjaW5jbHVkZSAiVGlsZWRJbWFnZU9w
ZW5WRy5oIgorCisjaWYgUExBVEZPUk0oRUdMKQorI2luY2x1ZGUgIkVHTERpc3BsYXlPcGVuVkcu
aCIKKyNlbmRpZgorCisjaW5jbHVkZSA8b3BlbnZnLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KKworLy8gSW1hZ2VEYXRhIGlzIFJHQkEgb24gYmlnIGVuZGlhbiBhbmQgQUJHUiBvbiBs
aXR0bGUgZW5kaWFuLgorLy8gVkdJbWFnZUZvcm1hdCBhbHdheXMgd29ya3Mgb24gdGhlIHNhbWUg
Yml0IG9yZGVyIG5vIG1hdHRlciB0aGUgZW5kaWFubmVzcy4KKy8vIFRoZXJlZm9yZSwgd2UgaGF2
ZSB0byB0YWtlIGVuZGlhbm5lc3MgaW50byBhY2NvdW50IHdoZW4gY29udmVydGluZyBmcm9tCisv
LyBhbmQgdG8gVkdJbWFnZSBwaXhlbCBkYXRhLgorI2RlZmluZSBJTUFHRURBVEFfVkdfVU5NVUxU
SVBMSUVEX0ZPUk1BVCBWR1V0aWxzOjplbmRpYW5Bd2FyZUltYWdlRm9ybWF0KFZHX3NSR0JBXzg4
ODgpCisjZGVmaW5lIElNQUdFREFUQV9WR19QUkVNVUxUSVBMSUVEX0ZPUk1BVCBWR1V0aWxzOjpl
bmRpYW5Bd2FyZUltYWdlRm9ybWF0KFZHX3NSR0JBXzg4ODhfUFJFKQorI2RlZmluZSBJTUFHRUJV
RkZFUl9WR19FWENIQU5HRV9GT1JNQVQgVkdfc0FSR0JfODg4OAorCisjaWZkZWYgV1RGX1BMQVRG
T1JNX0JJR19FTkRJQU4KKyNkZWZpbmUgSU1BR0VCVUZGRVJfQSAwCisjZGVmaW5lIElNQUdFQlVG
RkVSX1IgMQorI2RlZmluZSBJTUFHRUJVRkZFUl9HIDIKKyNkZWZpbmUgSU1BR0VCVUZGRVJfQiAz
CisjZWxzZQorI2RlZmluZSBJTUFHRUJVRkZFUl9BIDMKKyNkZWZpbmUgSU1BR0VCVUZGRVJfUiAy
CisjZGVmaW5lIElNQUdFQlVGRkVSX0cgMQorI2RlZmluZSBJTUFHRUJVRkZFUl9CIDAKKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJE
YXRhKGNvbnN0IEludFNpemUmIHNpemUsIGludCBjb2xvclNwYWNlLCBib29sJiBzdWNjZXNzKQor
ICAgIDogbV9zdXJmYWNlKDApCit7CisgICAgQVNTRVJUKHNpemUud2lkdGgoKSA+IDApOworICAg
IEFTU0VSVChzaXplLmhlaWdodCgpID4gMCk7CisgICAgc3VjY2VzcyA9IGZhbHNlOworCisgICAg
c3dpdGNoICgoSW1hZ2VDb2xvclNwYWNlKSBjb2xvclNwYWNlKSB7CisgICAgY2FzZSBEZXZpY2VS
R0I6CisgICAgICAgIG1fZm9ybWF0ID0gVkdfc0FSR0JfODg4OF9QUkU7IGJyZWFrOworICAgIGNh
c2UgR3JheVNjYWxlOgorICAgICAgICBtX2Zvcm1hdCA9IFZHX3NMXzg7IGJyZWFrOworICAgIGNh
c2UgTGluZWFyUkdCOgorICAgICAgICBtX2Zvcm1hdCA9IFZHX2xBUkdCXzg4ODhfUFJFOyBicmVh
azsKKyAgICB9CisKKyNpZiBQTEFURk9STShFR0wpCisgICAgRUdMaW50IGVycm9yQ29kZTsKKyAg
ICBtX3N1cmZhY2UgPSBuZXcgU3VyZmFjZU9wZW5WRyhzaXplLCBFR0xEaXNwbGF5T3BlblZHOjpj
dXJyZW50KCktPmRpc3BsYXkoKSwgMCwgJmVycm9yQ29kZSk7CisjZWxzZQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgaWYgKCFtX3N1cmZhY2Ut
PmlzVmFsaWQoKSkgeworICAgICAgICBkZWxldGUgbV9zdXJmYWNlOworICAgICAgICBtX3N1cmZh
Y2UgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fc3VyZmFjZS0+bWFrZUN1cnJl
bnQoKTsKKworICAgIC8vIENsZWFyIHRoZSBJbWFnZUJ1ZmZlciBmcm9tIHdoYXRldmVyIGNvbG9y
IHdhcyBzZXQgYmVmb3JlIHRvIHRyYW5zcGFyZW50LgorICAgIGNvbnN0IFZHZmxvYXQgdHJhbnNw
YXJlbnRbNF0gPSB7IDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYgfTsKKyAgICB2Z1NldGkoVkdfU0NJ
U1NPUklORywgVkdfRkFMU0UpOworICAgIHZnU2V0ZnYoVkdfQ0xFQVJfQ09MT1IsIDQsIHRyYW5z
cGFyZW50KTsKKyAgICB2Z0NsZWFyKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7
CisKKyAgICBzdWNjZXNzID0gdHJ1ZTsKK30KKworSW1hZ2VCdWZmZXJEYXRhOjp+SW1hZ2VCdWZm
ZXJEYXRhKCkKK3sKKyAgICBkZWxldGUgbV9zdXJmYWNlOworfQorCitQYXNzUmVmUHRyPEltYWdl
RGF0YT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgVkdJbWFnZUZvcm1hdCBmb3JtYXQpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG1fc3VyZmFjZSk7CisKKyAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gcmVzdWx0ID0g
SW1hZ2VEYXRhOjpjcmVhdGUocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICB1bnNp
Z25lZCBjaGFyKiBkYXRhID0gcmVzdWx0LT5kYXRhKCktPmRhdGEoKS0+ZGF0YSgpOworCisgICAg
Ly8gSWYgdGhpcyBjb3B5IG9wZXJhdGlvbiB3b24ndCBmaWxsIGFsbCBvZiB0aGUgcGl4ZWxzIGlu
IHRoZSB0YXJnZXQgaW1hZ2UsCisgICAgLy8gcGFpbnQgaXQgYmxhY2sgaW4gb3JkZXIgdG8gYXZv
aWQgcmFuZG9tIHVuaW5pdGlhbGl6ZWQgcGl4ZWwgZ2FyYmFnZS4KKyAgICBpZiAocmVjdC54KCkg
PCAwIHx8IHJlY3QueSgpIDwgMCB8fCAocmVjdC5yaWdodCgpKSA+IHNpemUud2lkdGgoKSB8fCAo
cmVjdC5ib3R0b20oKSkgPiBzaXplLmhlaWdodCgpKQorICAgICAgICBtZW1zZXQoZGF0YSwgMCwg
cmVzdWx0LT5kYXRhKCktPmxlbmd0aCgpKTsKKworICAgIG1fc3VyZmFjZS0+bWFrZUN1cnJlbnQo
KTsKKworICAgIC8vIE9wZW5WRyBpZ25vcmVzIHBpeGVscyB0aGF0IGFyZSBvdXQgb2YgYm91bmRz
LCBzbyB3ZSBjYW4ganVzdAorICAgIC8vIGNhbGwgdmdSZWFkUGl4ZWxzKCkgd2l0aG91dCBhbnkg
ZnVydGhlciBzYWZldHkgYXNzdXJhbmNlcy4KKyAgICB2Z1JlYWRQaXhlbHMoZGF0YSwgcmVjdC53
aWR0aCgpICogNCwgZm9ybWF0LAorICAgICAgICByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgQVNTRVJUX1ZHX05PX0VSUk9SKCk7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0SW1hZ2VEYXRhKElt
YWdlRGF0YSomIHNvdXJjZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9p
bnQmIGRlc3RQb2ludCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVkdJbWFnZUZvcm1hdCBmb3JtYXQp
Cit7CisgICAgQVNTRVJUKG1fc3VyZmFjZSk7CisKKyAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0
aCgpID4gMCk7CisgICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKKworICAgIC8v
IFdlIGV4cGVjdCB0aGUgc291cmNlUmVjdCB0byBiZSBhIHN1YnNldCBvZiB0aGUgZ2l2ZW4gc291
cmNlIGltYWdlLgorICAgIEFTU0VSVChzb3VyY2VSZWN0LngoKSA+PSAwKTsKKyAgICBBU1NFUlQo
c291cmNlUmVjdC55KCkgPj0gMCk7CisgICAgQVNTRVJUKHNvdXJjZVJlY3QucmlnaHQoKSA8IHNv
dXJjZS0+d2lkdGgoKSk7CisgICAgQVNTRVJUKHNvdXJjZVJlY3QuYm90dG9tKCkgPCBzb3VyY2Ut
PmhlaWdodCgpKTsKKworICAgIC8vIFRoZSB0YXJnZXQgb3JpZ2luIHBvaW50IGlzIHRoZSBjb21i
aW5lZCBvZmZzZXQgb2Ygc291cmNlUmVjdC5sb2NhdGlvbigpCisgICAgLy8gYW5kIGRlc3RQb2lu
dC4KKyAgICBpbnQgZGVzdHggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCk7CisgICAg
aW50IGRlc3R5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QueSgpOworICAgIEFTU0VSVChk
ZXN0eCA+PSAwKTsKKyAgICBBU1NFUlQoZGVzdHkgPj0gMCk7CisgICAgQVNTRVJUKGRlc3R4ICsg
c291cmNlUmVjdC53aWR0aCgpIDwgc2l6ZS53aWR0aCgpKTsKKyAgICBBU1NFUlQoZGVzdHkgKyBz
b3VyY2VSZWN0LmhlaWdodCgpIDwgc2l6ZS5oZWlnaHQoKSk7CisKKyAgICB1bnNpZ25lZCBjb25z
dCBjaGFyKiBkYXRhID0gc291cmNlLT5kYXRhKCktPmRhdGEoKS0+ZGF0YSgpOworICAgIGludCBk
YXRhT2Zmc2V0ID0gKHNvdXJjZVJlY3QueSgpICogc291cmNlLT53aWR0aCgpICogNCkgKyAoc291
cmNlUmVjdC54KCkgKiA0KTsKKworICAgIG1fc3VyZmFjZS0+bWFrZUN1cnJlbnQoKTsKKworICAg
IHZnV3JpdGVQaXhlbHMoZGF0YSArIGRhdGFPZmZzZXQsIHNvdXJjZS0+d2lkdGgoKSAqIDQsIGZv
cm1hdCwKKyAgICAgICAgZGVzdHgsIGRlc3R5LCBzb3VyY2VSZWN0LndpZHRoKCksIHNvdXJjZVJl
Y3QuaGVpZ2h0KCkpOworICAgIEFTU0VSVF9WR19OT19FUlJPUigpOworfQorCit2b2lkIEltYWdl
QnVmZmVyRGF0YTo6dHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1Vw
VGFibGUpCit7CisgICAgQVNTRVJUKG1fc3VyZmFjZSk7CisKKyAgICBWR2ludCB3aWR0aCA9IG1f
c3VyZmFjZS0+d2lkdGgoKTsKKyAgICBWR2ludCBoZWlnaHQgPSBtX3N1cmZhY2UtPmhlaWdodCgp
OworCisgICAgVkd1Ynl0ZSogZGF0YSA9IG5ldyBWR3VieXRlW3dpZHRoICogaGVpZ2h0ICogNF07
CisgICAgVkd1Ynl0ZSogY3VycmVudFBpeGVsID0gZGF0YTsKKworICAgIG1fc3VyZmFjZS0+bWFr
ZUN1cnJlbnQoKTsKKworICAgIHZnUmVhZFBpeGVscyhkYXRhLCB3aWR0aCAqIDQsIElNQUdFQlVG
RkVSX1ZHX0VYQ0hBTkdFX0ZPUk1BVCwgMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAgQVNTRVJU
X1ZHX05PX0VSUk9SKCk7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7
CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IGN1cnJlbnRQaXhlbCArPSA0LCB4
KyspIHsKKyAgICAgICAgICAgIGN1cnJlbnRQaXhlbFtJTUFHRUJVRkZFUl9BXSA9IGxvb2tVcFRh
YmxlW2N1cnJlbnRQaXhlbFtJTUFHRUJVRkZFUl9BXV07CisgICAgICAgICAgICBjdXJyZW50UGl4
ZWxbSU1BR0VCVUZGRVJfUl0gPSBsb29rVXBUYWJsZVtjdXJyZW50UGl4ZWxbSU1BR0VCVUZGRVJf
Ul1dOworICAgICAgICAgICAgY3VycmVudFBpeGVsW0lNQUdFQlVGRkVSX0ddID0gbG9va1VwVGFi
bGVbY3VycmVudFBpeGVsW0lNQUdFQlVGRkVSX0ddXTsKKyAgICAgICAgICAgIGN1cnJlbnRQaXhl
bFtJTUFHRUJVRkZFUl9CXSA9IGxvb2tVcFRhYmxlW2N1cnJlbnRQaXhlbFtJTUFHRUJVRkZFUl9C
XV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2Z1dyaXRlUGl4ZWxzKGRhdGEsIHdpZHRoICog
NCwgSU1BR0VCVUZGRVJfVkdfRVhDSEFOR0VfRk9STUFULCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICBBU1NFUlRfVkdfTk9fRVJST1IoKTsKKworICAgIGRlbGV0ZVtdIGRhdGE7Cit9CisKK0lt
YWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBJbWFnZUNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgYm9vbCYgc3VjY2VzcykKKyAgICA6IG1fZGF0YShzaXplLCBjb2xvclNw
YWNlLCBzdWNjZXNzKQorICAgICwgbV9zaXplKHNpemUpCit7CisgICAgaWYgKCFzdWNjZXNzKSAv
LyBzdWNjZXNzIGhhcyBhbHJlYWR5IGJlZW4gc2V0IGJ5IG1fZGF0YSdzIGNvbnN0cnVjdG9yLgor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQuc2V0KG5ldyBHcmFwaGljc0NvbnRleHQo
bV9kYXRhLm1fc3VyZmFjZSkpOworfQorCitJbWFnZUJ1ZmZlcjo6fkltYWdlQnVmZmVyKCkKK3sK
K30KKworR3JhcGhpY3NDb250ZXh0KiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKK30KKworSW1hZ2UqIEltYWdlQnVmZmVyOjppbWFn
ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltYWdlKSB7CisgICAgICAgIC8vIEl0J3MgYXNzdW1l
ZCB0aGF0IGlmIGltYWdlKCkgaXMgY2FsbGVkLCB0aGUgYWN0dWFsIHJlbmRlcmluZyB0byB0aGUK
KyAgICAgICAgLy8gR3JhcGhpY3NDb250ZXh0IG11c3QgYmUgZG9uZS4KKyAgICAgICAgQVNTRVJU
KGNvbnRleHQoKSk7CisKKyAgICAgICAgLy8gQXMgdGhlIG9yaWdpbmFsIFZHSW1hZ2UgbWlnaHQg
YmUgbW9kaWZpZWQgaW4gdGhlIGZ1dHVyZSwgd2UgY29weSBpdHMKKyAgICAgICAgLy8gY29udGVu
dHMgaW50byBhIG5ldyBpbWFnZSBhbmQgcmV0dXJuIHRoYXQgb25lLgorICAgICAgICBUaWxlZElt
YWdlT3BlblZHKiB0aWxlZEltYWdlID0gY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+YWN0
aXZlUGFpbnRlcigpLT5hc05ld05hdGl2ZUltYWdlKAorICAgICAgICAgICAgSW50UmVjdChJbnRQ
b2ludCgwLCAwKSwgbV9zaXplKSwgbV9kYXRhLm1fZm9ybWF0KTsKKworICAgICAgICBtX2ltYWdl
ID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSh0aWxlZEltYWdlKTsKKyAgICB9CisgICAgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ29s
b3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1VwVGFibGUpCit7CisgICAgQVNTRVJUKGNv
bnRleHQoKSk7CisgICAgY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+YWN0aXZlUGFpbnRl
cigpLT5ibGl0VG9TdXJmYWNlKCk7CisgICAgbV9kYXRhLnRyYW5zZm9ybUNvbG9yU3BhY2UobG9v
a1VwVGFibGUpOworfQorCitQYXNzUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VCdWZmZXI6OmdldFVu
bXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAoreworICAgIEFT
U0VSVChjb250ZXh0KCkpOworICAgIGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmFjdGl2
ZVBhaW50ZXIoKS0+YmxpdFRvU3VyZmFjZSgpOworICAgIHJldHVybiBtX2RhdGEuZ2V0SW1hZ2VE
YXRhKHJlY3QsIG1fc2l6ZSwgSU1BR0VEQVRBX1ZHX1VOTVVMVElQTElFRF9GT1JNQVQpOworfQor
CitQYXNzUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFn
ZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBBU1NFUlQoY29udGV4dCgp
KTsKKyAgICBjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLT5hY3RpdmVQYWludGVyKCktPmJs
aXRUb1N1cmZhY2UoKTsKKyAgICByZXR1cm4gbV9kYXRhLmdldEltYWdlRGF0YShyZWN0LCBtX3Np
emUsIElNQUdFREFUQV9WR19QUkVNVUxUSVBMSUVEX0ZPUk1BVCk7Cit9CisKK3ZvaWQgSW1hZ2VC
dWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShJbWFnZURhdGEqIHNvdXJjZSwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKK3sKKyAgICBt
X2RhdGEucHV0SW1hZ2VEYXRhKHNvdXJjZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX3NpemUs
IElNQUdFREFUQV9WR19VTk1VTFRJUExJRURfRk9STUFUKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZl
cjo6cHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShJbWFnZURhdGEqIHNvdXJjZSwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKK3sKKyAgICBtX2Rh
dGEucHV0SW1hZ2VEYXRhKHNvdXJjZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX3NpemUsIElN
QUdFREFUQV9WR19QUkVNVUxUSVBMSUVEX0ZPUk1BVCk7Cit9CisKK1N0cmluZyBJbWFnZUJ1ZmZl
cjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK30K
</data>
<flag name="review"
          id="40661"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>