<?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>30822</bug_id>
          
          <creation_ts>2009-10-27 08:11:43 -0700</creation_ts>
          <short_desc>Change NativeImagePtr definition for wx port</short_desc>
          <delta_ts>2009-11-05 16:16:45 -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>WebKit wx</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>P4</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Vadim Zeitlin">vz-webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kevino</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>158195</commentid>
    <comment_count>0</comment_count>
      <attachid>41954</attachid>
    <who name="Vadim Zeitlin">vz-webkit</who>
    <bug_when>2009-10-27 08:11:43 -0700</bug_when>
    <thetext>Created attachment 41954
Patch changing NativeImagePtr definition for wx port

This patch changes NativeImagePtr definition from a pointer to wx[Graphics]Bitmap to just the object itself for wx port. The reason for doing this is that these classes are already smart pointer-like in wx and it just doesn&apos;t make sense to have another layer of indirection and extra heap allocations when using them -- they&apos;re supposed to be passed around by value.

I didn&apos;t try to build any other ports after this change but I hope to not having broken them as the definitions of the types didn&apos;t change for them so the existing code should continue to work and the changes to common, port-independent, parts were tested as part of wxWebKit rebuild.

Finally, this is, of course, hardly a critical issue and it does have some drawbacks: for one, I don&apos;t know if making a type with &quot;Ptr&quot; name not a pointer is acceptable. Second, the common code should take care to use &quot;NativeImagePtr()&quot; instead of &quot;NULL&quot; when initializing invalid native image objects and use the new &quot;IsValidNativeImagePtr()&quot; function for testing them instead of just comparing with &quot;NULL&quot; (although the latter can still be done in port-specific code for ports other than wx, of course). But I still hope this patch can be applied because allocating these objects on the heap is just unnecessary and the code doing it is painful to read.

TIA!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160897</commentid>
    <comment_count>1</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2009-11-05 11:34:43 -0800</bug_when>
    <thetext>While this change brings the code more in line with how wx expects the objects to be used, as a consequence it (as you mentioned)  makes the Ptr a misnomer at times and worse makes it an object which can be a pointer on some ports and sometimes not (confusing for people who are kind enough to try and update wx port when they make changes that affect it), and ideally requires code changes to some or all of the other ports to adapt to using NativeImagePtr() and realistically should be tested by other ports.

Given all that, I think it&apos;s best to just stick with the current system of allocating on the heap to keep things simple and straightforward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160970</commentid>
    <comment_count>2</comment_count>
    <who name="Vadim Zeitlin">vz-webkit</who>
    <bug_when>2009-11-05 15:09:08 -0800</bug_when>
    <thetext>I didn&apos;t measure this (it&apos;s difficult to see how to do it even remotely accurately) but I&apos;d expect the extra heap allocations to have noticeable effect on performance so this change has more merits than just making the code more sensible.

I&apos;d also like to mention that CE port already uses a class (smart pointer class but still) for this type so wx code wouldn&apos;t be the only exception. Of course, there is the difference that CE NativeImagePtr can still be implicitly constructed from NULL and converted to bool but realistically failing to use NativeImagePtr() instead of NULL in common code can&apos;t remain unnoticed for long as it would immediately break wxWebKit build.

Anyhow, I wonder if it&apos;s worth measuring performance gain from this change or if it&apos;s not going to change your decision in any case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161009</commentid>
    <comment_count>3</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2009-11-05 16:16:45 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I didn&apos;t measure this (it&apos;s difficult to see how to do it even remotely
&gt; accurately) but I&apos;d expect the extra heap allocations to have noticeable effect
&gt; on performance so this change has more merits than just making the code more
&gt; sensible.
&gt; 
&gt; I&apos;d also like to mention that CE port already uses a class (smart pointer class
&gt; but still) for this type so wx code wouldn&apos;t be the only exception. Of course,
&gt; there is the difference that CE NativeImagePtr can still be implicitly
&gt; constructed from NULL and converted to bool but realistically failing to use
&gt; NativeImagePtr() instead of NULL in common code can&apos;t remain unnoticed for long
&gt; as it would immediately break wxWebKit build.
&gt; 
&gt; Anyhow, I wonder if it&apos;s worth measuring performance gain from this change or
&gt; if it&apos;s not going to change your decision in any case?

I&apos;m always interested in comparing performance of different approaches, if you feel there&apos;s a real, significant performance gain to be had here. Note though that the average web page probably will not have more than a couple dozen images attached to it, though, so even though heap allocation is more expensive, I&apos;m not sure that we&apos;re doing it so often that the hits will add up to anything really noticeable. Also, the tests of this should probably happen once we get the fastMalloc issue resolved, as obviously that affects performance as well.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41954</attachid>
            <date>2009-10-27 08:11:43 -0700</date>
            <delta_ts>2009-11-05 11:07:53 -0800</delta_ts>
            <desc>Patch changing NativeImagePtr definition for wx port</desc>
            <filename>native-image-ptr.diff</filename>
            <type>text/plain</type>
            <size>14913</size>
            <attacher name="Vadim Zeitlin">vz-webkit</attacher>
            
              <data encoding="base64">Y29tbWl0IDJjNzExOWE5NGY4MmJjMDQxYjBmZmRiZjcyZjFjNWU1ZmYzNzhlMmIKQXV0aG9yOiBW
YWRpbSBaZWl0bGluIDx2YWRpbUB6ZWl0bGlucy5vcmc+CkRhdGU6ICAgVHVlIE9jdCAyNyAxNTo1
NjowMCAyMDA5ICswMTAwCgogICAgRGVmaW5lIE5hdGl2ZUltYWdlUHRyIGFzIG9iamVjdCwgbm90
IHBvaW50ZXIsIGluIHd4IHBvcnQuCiAgICAKICAgIHd4W0dyYXBoaWNzXUJpdG1hcCBvYmplY3Rz
IGFyZSBhbHJlYWR5IHBvaW50ZXItbGlrZSBhbmQgYXJlIHN1cHBvc2VkIHRvIGJlCiAgICB1c2Vk
IGFzIHN1Y2gsIGluIHBhcnRpY3VsYXIgdGhleSBjYW4gYmUgZWZmaWNpZW50bHkgcGFzc2VkIGJ5
IHZhbHVlIGFuZCBpdAogICAgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGFsbG9jYXRlIHRoZW0gb24g
dGhlIGhlYXAuCiAgICAKICAgIEFkZCBoZWxwZXIgSXNWYWxpZE5hdGl2ZUltYWdlUHRyKCkgZnVu
Y3Rpb24gd2hpY2ggc2hvdWxkIGJlIHRlc3RlZCBmb3IgbmF0aXZlCiAgICBpbWFnZSB2YWxpZGl0
eSB0ZXN0aW5nIGluc3RlYWQgb2YganVzdCBjb21wYXJpbmcgdGhlbSB0byBOVUxMIGluIGNvbW1v
biBjb2RlLgoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMDI3ZTlhYS4uNjMxYzQwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAwOS0xMC0yNyAgVmFk
aW0gWmVpdGxpbiAgPHZhZGltQHd4d2lkZ2V0cy5vcmc+CisKKyAgICAgICAgRGVmaW5lIE5hdGl2
ZUltYWdlUHRyIGFzIHd4W0dyYXBoaWNzXUJpdG1hcCBpbiB3eCBwb3J0IGluc3RlYWQgb2YKKyAg
ICAgICAgZGVmaW5pbmcgaXQgYXMgYSBwb2ludGVyIHRvIHRoZW0gdG8gYXZvaWQgdW5uZWNlc3Nh
cnkgaGVhcCBhbGxvY2F0aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZURhdGE6OkZyYW1lRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OklzVmFsaWROYXRp
dmVJbWFnZVB0cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udFBsYXRmb3Jt
RGF0YVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3d4L0ltYWdlRGVjb2Rl
cld4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6YXNOZXdOYXRpdmVJbWFn
ZSk6CisKIDIwMDktMTAtMTggIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5j
b20+CiAKICAgICAgICAgQ1VSTCBidWlsZCBmaXgsIHVzZSBwcm9wZXIgaGVhZGVyIG5hbWUuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDMyYWVmYzkuLmFj
ZDQwMjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0x
MTksNyArMTE5LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgp
CiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAogICAgIG1fZnJhbWVzW2luZGV4
XS5tX2ZyYW1lID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsKLSAgICBpZiAo
bnVtRnJhbWVzID09IDEgJiYgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgaWYgKG51bUZy
YW1lcyA9PSAxICYmIElzVmFsaWROYXRpdmVJbWFnZVB0cihtX2ZyYW1lc1tpbmRleF0ubV9mcmFt
ZSkpCiAgICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwogCiAgICAgbV9mcmFtZXNbaW5kZXhd
Lm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCkKICAgICBjb25zdCBJbnRTaXplIGZyYW1lU2l6
ZShpbmRleCA/IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgpIDogbV9zaXplKTsKICAg
ICBpZiAoZnJhbWVTaXplICE9IG1fc2l6ZSkKICAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXpl
ID0gZmFsc2U7Ci0gICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKSB7CisgICAgaWYgKElz
VmFsaWROYXRpdmVJbWFnZVB0cihtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkpIHsKICAgICAgICAg
Y29uc3QgaW50IGRlbHRhQnl0ZXMgPSBmcmFtZUJ5dGVzKGZyYW1lU2l6ZSk7CiAgICAgICAgIG1f
ZGVjb2RlZFNpemUgKz0gZGVsdGFCeXRlczsKICAgICAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkK
QEAgLTIwMiw5ICsyMDIsOSBAQCBib29sIEJpdG1hcEltYWdlOjppc1NpemVBdmFpbGFibGUoKQog
TmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiB7
CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBOYXRpdmVJbWFnZVB0cigpOwogCi0gICAgaWYgKGluZGV4ID49IG1fZnJhbWVz
LnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgaWYgKGluZGV4ID49IG1f
ZnJhbWVzLnNpemUoKSB8fCAhSXNWYWxpZE5hdGl2ZUltYWdlUHRyKG1fZnJhbWVzW2luZGV4XS5t
X2ZyYW1lKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCk7CiAKICAgICByZXR1cm4gbV9mcmFt
ZXNbaW5kZXhdLm1fZnJhbWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
aW5kZXggZDcxMmVmYi4uM2RkNGVjZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtNzAsNyArNzAsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVGlt
ZXI7CiAKIHN0cnVjdCBGcmFtZURhdGEgOiBOb25jb3B5YWJsZSB7CiAgICAgRnJhbWVEYXRhKCkK
LSAgICAgICAgOiBtX2ZyYW1lKDApCisgICAgICAgIDogbV9mcmFtZSgpCiAgICAgICAgICwgbV9o
YXZlTWV0YWRhdGEoZmFsc2UpCiAgICAgICAgICwgbV9pc0NvbXBsZXRlKGZhbHNlKQogICAgICAg
ICAsIG1fZHVyYXRpb24oMCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCBjMGQwN2M5
Li44YTM0YzBkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xMzAsNyArMTMwLDcg
QEAgcHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUs
IFJlcGVhdFRpbGUgfTsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIE5hdGl2ZUltYWdlUHRyKCk7
IH0KICAgICAKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gQWNjZXNzb3JzIGZvciBuYXRpdmUg
aW1hZ2UgZm9ybWF0cy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
aW5kZXggYmY3YWUyMS4uYjA4OTUxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKQEAgLTEyMywxNiArMTIzLDE2IEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJh
bWVDb3VudCgpIGNvbnN0CiBOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVB
dEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZVB0cigpOwogCiAgICAgUkdCQTMyQnVm
ZmVyKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7CiAgICAg
aWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBSR0JBMzJCdWZmZXI6OkZyYW1lRW1w
dHkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2VQdHIoKTsK
IAogICAgIC8vIFplcm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUg
cG9ydHMuICBJZiB3ZSBoYXZlIGFuCiAgICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0
IGJhaWwuCiAgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gTmF0aXZlSW1hZ2VQdHIoKTsKIAogICAgIC8vIFJldHVybiB0aGUgYnVmZmVy
IGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCiAg
ICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5j
cmVtZW50cyBpdHMgcmVmY291bnQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmgKaW5kZXggMzU1OWFiZS4uYTRlYzExYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuaApAQCAtMzEsOCArMzEsMTMgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNpZiBQTEFURk9STShXWCkKLWNsYXNzIHd4Qml0bWFwOworI2lmIFVTRShXWEdDKQorI2luY2x1
ZGUgPHd4L2dyYXBoaWNzLmg+CiBjbGFzcyB3eEdyYXBoaWNzQml0bWFwOworI2Vsc2UKKyNpbmNs
dWRlIDx3eC9iaXRtYXAuaD4KK2NsYXNzIHd4Qml0bWFwOworI2VuZGlmCiAjZWxpZiBQTEFURk9S
TShDRykKIHR5cGVkZWYgc3RydWN0IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7CiB0
eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwpAQCAtNzEsOSArNzYsOSBAQCBjbGFz
cyBJbWFnZURlY29kZXI7CiB0eXBlZGVmIEltYWdlRGVjb2RlciogTmF0aXZlSW1hZ2VTb3VyY2VQ
dHI7CiAjaWYgUExBVEZPUk0oV1gpCiAjaWYgVVNFKFdYR0MpCi10eXBlZGVmIHd4R3JhcGhpY3NC
aXRtYXAqIE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiB3eEdyYXBoaWNzQml0bWFwIE5hdGl2ZUlt
YWdlUHRyOwogI2Vsc2UKLXR5cGVkZWYgd3hCaXRtYXAqIE5hdGl2ZUltYWdlUHRyOwordHlwZWRl
ZiB3eEJpdG1hcCBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oQ0FJUk8p
CiB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogTmF0aXZlSW1hZ2VQdHI7CkBAIC04Niw2ICs5MSwx
OSBAQCB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwogI2VuZGlm
CiAjZW5kaWYKIAorLy8gRGVmaW5lIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgSXNWYWxpZE5hdGl2
ZUltYWdlUHRyKCkgZnVuY3Rpb24gd2l0aCB0aGUKKy8vIG9idmlvdXMgbWVhbmluZzogaXQgc2hv
dWxkIGJlIHVzZWQgaW5zdGVhZCBvZiBqdXN0IGNvbXBhcmluZyBpdCB3aXRoIDAgYXMgaXQKKy8v
IGlzIG5vdCBhIHBvaW50ZXIgYXQgYWxsIGluIHd4IHBvcnQuCisjaWYgUExBVEZPUk0oV1gpCisj
aWYgVVNFKFdYR0MpCitpbmxpbmUgYm9vbCBJc1ZhbGlkTmF0aXZlSW1hZ2VQdHIoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIHB0cikgeyByZXR1cm4gIXB0ci5Jc051bGwoKTsgfQorI2Vsc2UKK2lubGlu
ZSBib29sIElzVmFsaWROYXRpdmVJbWFnZVB0cihjb25zdCBOYXRpdmVJbWFnZVB0ciYgcHRyKSB7
IHJldHVybiBwdHIuSXNPaygpOyB9CisjZW5kaWYKKyNlbHNlCitpbmxpbmUgYm9vbCBJc1ZhbGlk
TmF0aXZlSW1hZ2VQdHIoTmF0aXZlSW1hZ2VQdHIgcHRyKSB7IHJldHVybiBwdHIgIT0gMDsgfQor
I2VuZGlmCisKIGNvbnN0IGludCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAtMTsKIGNvbnN0IGludCBj
QW5pbWF0aW9uTm9uZSA9IC0yOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3d4L0ZvbnRQbGF0Zm9ybURhdGFXeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3d4L0ZvbnRQbGF0Zm9ybURhdGFXeC5jcHAKaW5kZXggNWVjZTk4ZS4uNTY2YTI3ZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9Gb250UGxhdGZvcm1EYXRhV3guY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udFBsYXRmb3JtRGF0YVd4LmNw
cApAQCAtODAsNyArODAsNyBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzYywgY29uc3QgQXRvbWljU3RyaQogLy8gYSBwaXhlbCBz
aXplIHVzaW5nIGFuIGFsZ29yaXRobSB3aGljaCBjYXVzZXMgdGhlIHNpemUgdG8gYmUgd2F5IG9m
Zi4gSG93ZXZlciwKIC8vIHRoaXMgaXMgYSBtb290IGlzc3VlIG9uIExpbnV4IGFuZCBNYWMgYXMg
dGhleSBvbmx5IGFjY2VwdCB0aGUgcG9pbnQgYXJndW1lbnQuIFNvLAogLy8gd2UgdXNlIHRoZSBw
aXhlbCBzaXplIGNvbnN0cnVjdG9yIG9uIFdpbmRvd3MsIGJ1dCB3ZSB1c2UgcG9pbnQgc2l6ZSBv
biBMaW51eCBhbmQgTWFjLgotI2lmIGRlZmluZWQoX19XWE1TV19fKSAmJiAhd3hDSEVDS19WRVJT
SU9OKDIsOSwwKQorI2lmIGRlZmluZWQoX19XWE1TV19fKQogICAgIG1fZm9udCA9IG5ldyBGb250
SG9sZGVyKG5ldyB3eEZvbnQoICAgd3hTaXplKDAsIC1kZXNjLmNvbXB1dGVkUGl4ZWxTaXplKCkp
LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseVRvV3hGb250RmFt
aWx5KGRlc2MuZ2VuZXJpY0ZhbWlseSgpKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGl0YWxpY1RvV3hGb250U3R5bGUoZGVzYy5pdGFsaWMoKSksCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93eC9JbWFnZVd4LmNwcAppbmRleCBiZDEyOWNmLi5lYWVhMDg3IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHAKQEAgLTU2LDkgKzU2LDggQEAgYm9vbCBG
cmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKICAgICBpZiAoY2xlYXJNZXRhZGF0
YSkKICAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKIAotICAgIGlmIChtX2ZyYW1lKSB7
Ci0gICAgICAgIGRlbGV0ZSBtX2ZyYW1lOwotICAgICAgICBtX2ZyYW1lID0gMDsKKyAgICBpZiAo
SXNWYWxpZE5hdGl2ZUltYWdlUHRyKG1fZnJhbWUpKSB7CisgICAgICAgIG1fZnJhbWUgPSBOYXRp
dmVJbWFnZVB0cigpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtOTksMTQgKzk4LDE0IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSCiAjaWYgVVNF
KFdYR0MpCiAgICAgd3hHQ0RDKiBjb250ZXh0ID0gKHd4R0NEQyopY3R4dC0+cGxhdGZvcm1Db250
ZXh0KCk7CiAgICAgd3hHcmFwaGljc0NvbnRleHQqIGdjID0gY29udGV4dC0+R2V0R3JhcGhpY3ND
b250ZXh0KCk7Ci0gICAgd3hHcmFwaGljc0JpdG1hcCogYml0bWFwID0gZnJhbWVBdEluZGV4KG1f
Y3VycmVudEZyYW1lKTsKKyAgICB3eEdyYXBoaWNzQml0bWFwIGJpdG1hcCA9IGZyYW1lQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7CiAjZWxzZQogICAgIHd4V2luZG93REMqIGNvbnRleHQgPSBjdHh0
LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICB3eEJpdG1hcCogYml0bWFwID0gZnJhbWVBdEluZGV4
KG1fY3VycmVudEZyYW1lKTsKKyAgICB3eEJpdG1hcCBiaXRtYXAgPSBmcmFtZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogI2VuZGlmCiAKICAgICBzdGFydEFuaW1hdGlvbigpOwotICAgIGlmICgh
Yml0bWFwKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4K
KyAgICBpZiAoIUlzVmFsaWROYXRpdmVJbWFnZVB0cihiaXRtYXApKSAvLyBJZiBpdCdzIHRvbyBl
YXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgYSBzdWIgcG9ydGlvbiBvZiB0aGUgaW1hZ2Ugb3Igc2Nh
bGluZyB0aGVuIGNyZWF0ZQpAQCAtMTMzLDkgKzEzMiw5IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxv
YXRSCiAKICAgICBnYy0+Q2xpcChkc3QueCgpLCBkc3QueSgpLCBkc3Qud2lkdGgoKSwgZHN0Lmhl
aWdodCgpKTsKICNpZiB3eENIRUNLX1ZFUlNJT04oMiw5LDApCi0gICAgZ2MtPkRyYXdCaXRtYXAo
KmJpdG1hcCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgpLCBhZGp1
c3RlZERlc3RSZWN0LndpZHRoKCksIGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCkpOworICAgIGdj
LT5EcmF3Qml0bWFwKGJpdG1hcCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJl
Y3QueSgpLCBhZGp1c3RlZERlc3RSZWN0LndpZHRoKCksIGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0
KCkpOwogI2Vsc2UKLSAgICBnYy0+RHJhd0dyYXBoaWNzQml0bWFwKCpiaXRtYXAsIGFkanVzdGVk
RGVzdFJlY3QueCgpLCBhZGp1c3RlZERlc3RSZWN0LnkoKSwgYWRqdXN0ZWREZXN0UmVjdC53aWR0
aCgpLCBhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgpKTsKKyAgICBnYy0+RHJhd0dyYXBoaWNzQml0
bWFwKGJpdG1hcCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgpLCBh
ZGp1c3RlZERlc3RSZWN0LndpZHRoKCksIGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCkpOwogI2Vu
ZGlmCiAKICNlbHNlIC8vIFVTRShXWEdDKQpAQCAtMTQ1LDI5ICsxNDQsMTggQEAgdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
LCBjb25zdCBGbG9hdFIKICAgICBpZiAoKGRzdEludFJlY3Qud2lkdGgoKSAhPSBzcmNJbnRSZWN0
LndpZHRoKCkpIHx8IChkc3RJbnRSZWN0LmhlaWdodCgpICE9IHNyY0ludFJlY3QuaGVpZ2h0KCkp
KQogICAgIHsKICAgICAgICAgcmVzY2FsaW5nID0gdHJ1ZTsKLSAgICAgICAgd3hJbWFnZSBpbWcg
PSBiaXRtYXAtPkNvbnZlcnRUb0ltYWdlKCk7CisgICAgICAgIHd4SW1hZ2UgaW1nID0gYml0bWFw
LkNvbnZlcnRUb0ltYWdlKCk7CiAgICAgICAgIGltZy5SZXNjYWxlKGRzdEludFJlY3Qud2lkdGgo
KSwgZHN0SW50UmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgIGJpdG1hcCA9IG5ldyB3eEJpdG1hcChp
bWcpOworICAgICAgICBiaXRtYXAgPSB3eEJpdG1hcChpbWcpOwogICAgIH0gCiAgICAgCiAgICAg
d3hNZW1vcnlEQyBteWRjOyAKLSAgICBBU1NFUlQoYml0bWFwLT5HZXRSZWZEYXRhKCkpOwotICAg
IG15ZGMuU2VsZWN0T2JqZWN0KCpiaXRtYXApOyAKKyAgICBBU1NFUlQoYml0bWFwLkdldFJlZkRh
dGEoKSk7CisgICAgbXlkYy5TZWxlY3RPYmplY3QoYml0bWFwKTsgCiAgICAgCiAgICAgY29udGV4
dC0+QmxpdCgod3hDb29yZClkc3RJbnRSZWN0LngoKSwod3hDb29yZClkc3RJbnRSZWN0LnkoKSwg
KHd4Q29vcmQpZHN0SW50UmVjdC53aWR0aCgpLCAod3hDb29yZClkc3RJbnRSZWN0LmhlaWdodCgp
LCAmbXlkYywgCiAgICAgICAgICAgICAgICAgICAgICh3eENvb3JkKXNyY0ludFJlY3QueCgpLCAo
d3hDb29yZClzcmNJbnRSZWN0LnkoKSwgd3hDT1BZLCB0cnVlKTsgCiAgICAgbXlkYy5TZWxlY3RP
YmplY3Qod3hOdWxsQml0bWFwKTsKLSAgICAKLSAgICAvLyBOQjogZGVsZXRlIGlzIGNhdXNpbmcg
Y3Jhc2hlcyBkdXJpbmcgcGFnZSBsb2FkLCBidXQgbm90IGR1cmluZyB0aGUgZGVsZXRpb24KLSAg
ICAvLyBpdHNlbGYuIEl0IG9jY3VycyBsYXRlciBvbiB3aGVuIGEgdmFsaWQgYml0bWFwIGNyZWF0
ZWQgaW4gZnJhbWVBdEluZGV4Ci0gICAgLy8gc3VkZGVubHkgYmVjb21lcyBpbnZhbGlkIGFmdGVy
IHJldHVybmluZy4gSXQncyBwb3NzaWJsZSB0aGVzZSBlcnJvcnMgZGVhbAotICAgIC8vIHdpdGgg
cmVlbnRyYW5jeSBhbmQgdGhyZWRpbmcgcHJvYmxlbXMuCi0gICAgLy9kZWxldGUgYml0bWFwOwot
ICAgIGlmIChyZXNjYWxpbmcpCi0gICAgewotICAgICAgICBkZWxldGUgYml0bWFwOwotICAgICAg
ICBiaXRtYXAgPSBOVUxMOwotICAgIH0KICNlbmRpZgogCiAgICAgY3R4dC0+cmVzdG9yZSgpOwpA
QCAtMTgzLDEzICsxNzEsMTMgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGMKIAogI2lmIFVTRShX
WEdDKQogICAgIHd4R0NEQyogY29udGV4dCA9ICh3eEdDREMqKWN0eHQtPnBsYXRmb3JtQ29udGV4
dCgpOwotICAgIHd4R3JhcGhpY3NCaXRtYXAqIGJpdG1hcCA9IGZyYW1lQXRJbmRleChtX2N1cnJl
bnRGcmFtZSk7CisgICAgd3hHcmFwaGljc0JpdG1hcCBiaXRtYXAgPSBmcmFtZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogI2Vsc2UKICAgICB3eFdpbmRvd0RDKiBjb250ZXh0ID0gY3R4dC0+cGxh
dGZvcm1Db250ZXh0KCk7Ci0gICAgd3hCaXRtYXAqIGJpdG1hcCA9IGZyYW1lQXRJbmRleChtX2N1
cnJlbnRGcmFtZSk7CisgICAgd3hCaXRtYXAgYml0bWFwID0gZnJhbWVBdEluZGV4KG1fY3VycmVu
dEZyYW1lKTsKICNlbmRpZgogCi0gICAgaWYgKCFiaXRtYXApIC8vIElmIGl0J3MgdG9vIGVhcmx5
IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgorICAgIGlmICghSXNWYWxpZE5hdGl2ZUltYWdl
UHRyKGJpdG1hcCkpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2Ug
eWV0LgogICAgICAgICByZXR1cm47CiAKICAgICBjdHh0LT5zYXZlKCk7CkBAIC0yMDksNyArMTk3
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjdHh0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGMKICAgICBnYy0+Q29uY2F0VHJhbnNmb3JtKHBh
dHRlcm5UcmFuc2Zvcm0pOwogI2Vsc2UKICAgICB3eE1lbW9yeURDIG15ZGM7Ci0gICAgbXlkYy5T
ZWxlY3RPYmplY3QoKmJpdG1hcCk7CisgICAgbXlkYy5TZWxlY3RPYmplY3QoYml0bWFwKTsKICNl
bmRpZgogCiAgICAgd3hQb2ludCBvcmlnaW4oY29udGV4dC0+R2V0RGV2aWNlT3JpZ2luKCkpOwpA
QCAtMjE5LDkgKzIwNyw5IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjCiAgICAgICAgIHdoaWxl
ICggY3VycmVudEggPCBkc3RSZWN0LmhlaWdodCgpICYmIGN1cnJlbnRIIDwgY2xpZW50U2l6ZS55
IC0gb3JpZ2luLnkpIHsKICNpZiBVU0UoV1hHQykKICNpZiB3eENIRUNLX1ZFUlNJT04oMiw5LDAp
Ci0gICAgICAgICAgICBnYy0+RHJhd0JpdG1hcCgqYml0bWFwLCBhZGp1c3RlZFggKyBjdXJyZW50
VywgYWRqdXN0ZWRZICsgY3VycmVudEgsICh3eERvdWJsZSlzcmNSZWN0LndpZHRoKCksICh3eERv
dWJsZSlzcmNSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGdjLT5EcmF3Qml0bWFwKGJpdG1h
cCwgYWRqdXN0ZWRYICsgY3VycmVudFcsIGFkanVzdGVkWSArIGN1cnJlbnRILCAod3hEb3VibGUp
c3JjUmVjdC53aWR0aCgpLCAod3hEb3VibGUpc3JjUmVjdC5oZWlnaHQoKSk7CiAjZWxzZQotICAg
ICAgICAgICAgZ2MtPkRyYXdHcmFwaGljc0JpdG1hcCgqYml0bWFwLCBhZGp1c3RlZFggKyBjdXJy
ZW50VywgYWRqdXN0ZWRZICsgY3VycmVudEgsICh3eERvdWJsZSlzcmNSZWN0LndpZHRoKCksICh3
eERvdWJsZSlzcmNSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGdjLT5EcmF3R3JhcGhpY3NC
aXRtYXAoYml0bWFwLCBhZGp1c3RlZFggKyBjdXJyZW50VywgYWRqdXN0ZWRZICsgY3VycmVudEgs
ICh3eERvdWJsZSlzcmNSZWN0LndpZHRoKCksICh3eERvdWJsZSlzcmNSZWN0LmhlaWdodCgpKTsK
ICNlbmRpZgogI2Vsc2UKICAgICAgICAgICAgIGNvbnRleHQtPkJsaXQoKHd4Q29vcmQpZHN0UmVj
dC54KCkgKyBjdXJyZW50VywgKHd4Q29vcmQpZHN0UmVjdC55KCkgKyBjdXJyZW50SCwgIApAQCAt
MjM5LDEyICsyMjcsNiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgYwogICAgIG15ZGMuU2VsZWN0
T2JqZWN0KHd4TnVsbEJpdG1hcCk7CiAjZW5kaWYgICAgCiAgICAgCi0gICAgLy8gTkI6IGRlbGV0
ZSBpcyBjYXVzaW5nIGNyYXNoZXMgZHVyaW5nIHBhZ2UgbG9hZCwgYnV0IG5vdCBkdXJpbmcgdGhl
IGRlbGV0aW9uCi0gICAgLy8gaXRzZWxmLiBJdCBvY2N1cnMgbGF0ZXIgb24gd2hlbiBhIHZhbGlk
IGJpdG1hcCBjcmVhdGVkIGluIGZyYW1lQXRJbmRleAotICAgIC8vIHN1ZGRlbmx5IGJlY29tZXMg
aW52YWxpZCBhZnRlciByZXR1cm5pbmcuIEl0J3MgcG9zc2libGUgdGhlc2UgZXJyb3JzIGRlYWwK
LSAgICAvLyB3aXRoIHJlZW50cmFuY3kgYW5kIHRocmVkaW5nIHByb2JsZW1zLgotICAgIC8vZGVs
ZXRlIGJpdG1hcDsKLQogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKICAgICBpZiAoSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIgPSBpbWFnZU9ic2VydmVyKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3d4L0ltYWdlRGVjb2Rlcld4LmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd3gvSW1hZ2VEZWNvZGVyV3guY3BwCmluZGV4IDNjYWRmMWMu
LjNkZGM2MzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd3gv
SW1hZ2VEZWNvZGVyV3guY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d3gvSW1hZ2VEZWNvZGVyV3guY3BwCkBAIC0zOSw5ICszOSw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogTmF0aXZlSW1hZ2VQdHIgUkdCQTMyQnVmZmVyOjphc05ld05hdGl2ZUltYWdlKCkgY29u
c3QKIHsKLSAgICB3eEJpdG1hcCogYm1wID0gbmV3IHd4Qml0bWFwKHdpZHRoKCksIGhlaWdodCgp
LCAzMik7CisgICAgd3hCaXRtYXAgYm1wKHdpZHRoKCksIGhlaWdodCgpLCAzMik7CiAgICAgdHlw
ZWRlZiB3eFBpeGVsRGF0YTx3eEJpdG1hcCwgd3hBbHBoYVBpeGVsRm9ybWF0PiBXeFBpeGVsRGF0
YTsKLSAgICBXeFBpeGVsRGF0YSBkYXRhKCpibXApOworICAgIFd4UGl4ZWxEYXRhIGRhdGEoYm1w
KTsKICAgICAKICAgICAvLyBOQjogSXQgYXBwZWFycyB0aGF0IHRoZSBkYXRhIGlzIGluIEJHUkEg
Zm9ybWF0IGluc3RlYWQgb2YgUkdCQSBmb3JtYXQuCiAgICAgLy8gVGhpcyBjb2RlIHdvcmtzIHBy
b3Blcmx5IG9uIGJvdGggcHBjIGFuZCBpbnRlbCwgbWVhbmluZyB0aGUgaXNzdWUgaXMKQEAgLTY3
LDE0ICs2NywxMiBAQCBOYXRpdmVJbWFnZVB0ciBSR0JBMzJCdWZmZXI6OmFzTmV3TmF0aXZlSW1h
Z2UoKSBjb25zdAogICAgICAgICB9CiAgICAgfQogI2lmICF3eENIRUNLX1ZFUlNJT04oMiw5LDAp
Ci0gICAgYm1wLT5Vc2VBbHBoYSgpOworICAgIGJtcC5Vc2VBbHBoYSgpOwogI2VuZGlmCi0gICAg
QVNTRVJUKGJtcC0+SXNPaygpKTsKKyAgICBBU1NFUlQoYm1wLklzT2soKSk7CiAKICNpZiBVU0Uo
V1hHQykKLSAgICB3eEdyYXBoaWNzQml0bWFwKiBiaXRtYXAgPSBuZXcgd3hHcmFwaGljc0JpdG1h
cCh3eEdyYXBoaWNzUmVuZGVyZXI6OkdldERlZmF1bHRSZW5kZXJlcigpLT5DcmVhdGVCaXRtYXAo
KmJtcCkpOwotICAgIGRlbGV0ZSBibXA7Ci0gICAgcmV0dXJuIGJpdG1hcDsKKyAgICByZXR1cm4g
d3hHcmFwaGljc1JlbmRlcmVyOjpHZXREZWZhdWx0UmVuZGVyZXIoKS0+Q3JlYXRlQml0bWFwKGJt
cCk7CiAjZWxzZQogICAgIHJldHVybiBibXA7CiAjZW5kaWYK
</data>
<flag name="review"
          id="23431"
          type_id="1"
          status="-"
          setter="kevino"
    />
          </attachment>
      

    </bug>

</bugzilla>