<?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>91897</bug_id>
          
          <creation_ts>2012-07-20 13:05:57 -0700</creation_ts>
          <short_desc>[Texmap] Performance regression in texture uploads after r121223</short_desc>
          <delta_ts>2012-07-27 12:43:38 -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>New Bugs</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>1</everconfirmed>
          <reporter name="Noam Rosenthal">noam</reporter>
          <assigned_to name="Noam Rosenthal">noam</assigned_to>
          <cc>dongseong.hwang</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674882</commentid>
    <comment_count>0</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-07-20 13:05:57 -0700</bug_when>
    <thetext>[Texmap] Performance regression in texture uploads after r121223</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674884</commentid>
    <comment_count>1</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-07-20 13:06:58 -0700</bug_when>
    <thetext>Since we&apos;re using GraphicsContext3D::extractImageData, we can&apos;t take advantage of desktop GL drivers that support the BGRA extension. This leads to much more time spent in texture uploads for Qt and GTK on desktop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674893</commentid>
    <comment_count>2</comment_count>
      <attachid>153579</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-07-20 13:12:34 -0700</bug_when>
    <thetext>Created attachment 153579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675326</commentid>
    <comment_count>3</comment_count>
      <attachid>153579</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-22 10:44:19 -0700</bug_when>
    <thetext>Comment on attachment 153579
Patch

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

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp:155
&gt; +const uint8_t* GraphicsContext3D::extractRawImageData(Image* image)

why not just rawImageData?

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:490
&gt;  #endif
&gt;  
&gt; +
&gt; +
&gt; +// Extracts the contents of the given Image without copying or formatting.

why so many newlines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675386</commentid>
    <comment_count>4</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-22 18:17:11 -0700</bug_when>
    <thetext>I&apos;m sorry for this regression and thank you for fixing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680605</commentid>
    <comment_count>5</comment_count>
      <attachid>153579</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-07-27 07:16:32 -0700</bug_when>
    <thetext>Comment on attachment 153579
Patch

Need to rework this patch, it causes some color issues on GTK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680752</commentid>
    <comment_count>6</comment_count>
      <attachid>154978</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-07-27 09:56:31 -0700</bug_when>
    <thetext>Created attachment 154978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680851</commentid>
    <comment_count>7</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-07-27 11:23:17 -0700</bug_when>
    <thetext>Committed r123894: &lt;http://trac.webkit.org/changeset/123894&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680977</commentid>
    <comment_count>8</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-07-27 12:42:10 -0700</bug_when>
    <thetext>This wasn&apos;t explained here, but the reason for reverting this patch is that it introduced an additional huge performance regression since tile updates from the web process are transferred through a 2000x2000 buffer and there is no way to tell extractImageData to BGRA-&gt;RGBA only the part of the buffer that we want.

So the whole 2000x2000 buffer is converted each time we need a tiny piece of a tile to be updated.

The way to fix it would be to add a partial image extraction capability to GraphicsContext3D, but this would require an implementation for every port. WebGL doesn&apos;t need it itself and this doesn&apos;t seems like it would be worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680984</commentid>
    <comment_count>9</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-07-27 12:43:38 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; This wasn&apos;t explained here, but the reason for reverting this patch is that it introduced an additional huge performance regression since tile updates from the web process are transferred through a 2000x2000 buffer and there is no way to tell extractImageData to BGRA-&gt;RGBA only the part of the buffer that we want.
&gt; 
&gt; So the whole 2000x2000 buffer is converted each time we need a tiny piece of a tile to be updated.
&gt; 
&gt; The way to fix it would be to add a partial image extraction capability to GraphicsContext3D, but this would require an implementation for every port. WebGL doesn&apos;t need it itself and this doesn&apos;t seems like it would be worth it.

Ah, I didn&apos;t realize that was the source of the regression. Now it makes more sense!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153579</attachid>
            <date>2012-07-20 13:12:34 -0700</date>
            <delta_ts>2012-07-27 09:55:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91897-20120720131229.patch</filename>
            <type>text/plain</type>
            <size>9714</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTYxYWJkY2ViNDZjYjk4
MTVmNTg4OTcxYTEyZGRlZmE3ZWVhNDVlNC4uZTZiMjYzNDI4MWNjMGU1NmEzYjMxMzZlZjUxZjY4
ODNlYmNlN2QxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA3LTIwICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1RleG1h
cF0gUGVyZm9ybWFuY2UgcmVncmVzc2lvbiBpbiB0ZXh0dXJlIHVwbG9hZHMgYWZ0ZXIgcjEyMTIy
MworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4OTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBl
eHRyYWN0aW5nIHRoZSByYXcgKHVubW9kaWZpZWQpIGltYWdlIGRhdGEgZnJvbSBhIFdlYkNvcmU6
OkltYWdlIGFuZCB1c2luZyB0aGF0IGRhdGEKKyAgICAgICAgZm9yIHRleHR1cmUgdXBsb2FkcyBp
bnN0ZWFkIG9mIHVzaW5nIHRoZSBtb3JlICJzYWZlIiBHcmFwaGljc0NvbnRleHQzRDo6ZXh0cmFj
dEltYWdlRGF0YS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFBlcmZvcm1hbmNlIGltcHJvdmVt
ZW50IG9ubHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAgICAgYWRkIGZ1bmN0
aW9uLCBleHRyYWN0UmF3SW1hZ2VEYXRhCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpleHRyYWN0UmF3SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAgICAgSW1wbGVtZW50IGV4dHJhY3RSYXdJbWFnZURhdGEgZm9yIENhaXJvLCBiYXNl
ZCBvbiBvbGQgaW1wbGVtZW50YXRpb24gaW4gVGV4dHVyZU1hcHBlckdMLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpleHRyYWN0UmF3
SW1hZ2VEYXRhKToKKyAgICAgICAgICAgIEltcGxlbWVudCBleHRyYWN0UmF3SW1hZ2VEYXRhIGZv
ciBRdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0
dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgICAgIFVzZSBleHRyYWN0UmF3SW1hZ2VE
YXRhIHdoZW4gdXBsb2FkaW5nIGEgdGV4dHVyZSBpbiBUZXh0dXJlTWFwcGVyR0wuCisKIDIwMTIt
MDctMTkgIERvbmd3b28gSW0gIDxkdy5pbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBG
aXggYnVpbGQgYnJlYWsgd2hlbiBXRUJfQVVESU8gaXMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDc0
MzNkZjYyNmY0Y2FiMmFjYzZjYTA5OGE2MjgwZDQ4ZDQ5YTJiMTkuLmQ2MWIwODZjYjNlZGY1YzYw
MzI1MGRjNzkyZjI4NTc4NDEyYjc4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtNTczLDYgKzU3MywxMiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xv
clByb2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiYgZGF0
YSk7CiAKKworICAgIC8vIEV4dHJhY3RzIHRoZSBjb250ZW50cyBvZiB0aGUgZ2l2ZW4gSW1hZ2Ug
d2l0aG91dCBjb3B5aW5nIG9yIGZvcm1hdHRpbmcuCisgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxs
IHJldHVybiBhIG51bGwgcG9pbnRlciBpZiB0aGUgaW1hZ2UgZGF0YSBjYW5ub3QgYmUgZXh0cmFj
dGVkIHdpdGhvdXQKKyAgICAvLyBjb3B5aW5nLgorICAgIHN0YXRpYyBjb25zdCB1aW50OF90KiBl
eHRyYWN0UmF3SW1hZ2VEYXRhKEltYWdlKik7CisKICAgICAvLyBFeHRyYWN0cyB0aGUgY29udGVu
dHMgb2YgdGhlIGdpdmVuIEltYWdlRGF0YSBpbnRvIHRoZSBwYXNzZWQgVmVjdG9yLAogICAgIC8v
IHBhY2tpbmcgdGhlIHBpeGVsIGRhdGEgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBmb3JtYXQgYW5k
IHR5cGUsCiAgICAgLy8gYW5kIG9iZXlpbmcgdGhlIGZsaXBZIGFuZCBwcmVtdWx0aXBseUFscGhh
IGZsYWdzLiBSZXR1cm5zIHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5k
ZXggNjJkYTFhMTZjOTExYjQwNGFjYTAzNzUzNDE2NzNmMjc2ODE5MjVmNi4uOWMwNWM4NjU4N2Uw
ZDc0ODQ5NGQ3NWNlOTFlZDJiNTdhMDY4NjJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RD
YWlyby5jcHAKQEAgLTE1Miw2ICsxNTIsMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVs
ZWFzZVNoYWRlckNvbXBpbGVyKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitjb25zdCB1
aW50OF90KiBHcmFwaGljc0NvbnRleHQzRDo6ZXh0cmFjdFJhd0ltYWdlRGF0YShJbWFnZSogaW1h
Z2UpCit7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoaW1h
Z2UtPmRhdGEoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBpbWFnZVN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+
c3VyZmFjZSgpOworICAgIGlmICghaW1hZ2VTdXJmYWNlKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIHJldHVybiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlU3VyZmFjZS5nZXQo
KSk7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1h
Z2UsIHVuc2lnbmVkIGludCBmb3JtYXQsIHVuc2lnbmVkIGludCB0eXBlLCBib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsIFZlY3Rvcjx1aW50OF90
PiYgb3V0cHV0VmVjdG9yKQogewogICAgIGlmICghaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3Bw
CmluZGV4IDg5NWY3NjY4ODAzOWU4MWYyZjcwYmZhZDgwMDVmMDc3YmRlNTFkMTguLjk5YWYwMGUz
NzAzNTgzYzUzZjlmMjI2MjE0ODUxOGJhMmVmZTU4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3Bw
CkBAIC00ODUsNiArNDg1LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyYXBo
aWNzU3VyZmFjZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIH0KICNlbmRpZgogCisKKworLy8gRXh0
cmFjdHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBnaXZlbiBJbWFnZSB3aXRob3V0IGNvcHlpbmcgb3Ig
Zm9ybWF0dGluZy4KK2NvbnN0IHVpbnQ4X3QqIEdyYXBoaWNzQ29udGV4dDNEOjpleHRyYWN0UmF3
SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSkKK3sKKyAgICBpZiAoaW1hZ2UtPmRhdGEoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCktPmNvbnN0Qml0cygpOworfQorCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFn
ZURhdGEoSW1hZ2UqIGltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdDM0RlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEZW51bSB0eXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA2ODhlMjZmNGU4OWZmZjEz
ZGU1YjNkNTc5YzgyMGE5MzVlZjkxNzJjLi5lMWVlN2QwYTRmYzk5YjMyMWNmMGI4N2FkYTExZWY5
OWI1NzIxMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtNjIyLDE2ICs2MjIsNiBAQCBi
b29sIEJpdG1hcFRleHR1cmVHTDo6Y2FuUmV1c2VXaXRoKGNvbnN0IEludFNpemUmIGNvbnRlbnRz
U2l6ZSwgRmxhZ3MpCiAjZGVmaW5lIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBF
IEdMX1VOU0lHTkVEX0JZVEUKICNlbmRpZgogCi1zdGF0aWMgYm9vbCBkcml2ZXJTdXBwb3J0c1N1
YkltYWdlKCkKLXsKLSNpZiBkZWZpbmVkKFRFWE1BUF9PUEVOR0xfRVNfMikKLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHJlbGlhYmxlIGRldGVjdGlvbi4KLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxz
ZQotICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi19Ci0KIHZvaWQgQml0bWFwVGV4dHVyZUdMOjpk
aWRSZXNldCgpCiB7CiAgICAgaWYgKCFtX2lkKQpAQCAtNjU3LDM0ICs2NDcsMzQgQEAgdm9pZCBC
aXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIGRhdGEsIGNvbnN0IElu
dFJlY3QmIHRhcmdldFJlY3QKIAogICAgIGNvbnN0IHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSA0
OwogICAgIGlmIChieXRlc1BlckxpbmUgPT0gdGFyZ2V0UmVjdC53aWR0aCgpICogYnl0ZXNQZXJQ
aXhlbCAmJiBzb3VyY2VPZmZzZXQgPT0gSW50UG9pbnQ6Onplcm8oKSkgewotICAgICAgICBHTF9D
TUQoZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHRhcmdldFJlY3QueCgpLCB0YXJn
ZXRSZWN0LnkoKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpLCBHTF9S
R0JBLCBERUZBVUxUX1RFWFRVUkVfUElYRUxfVFJBTlNGRVJfVFlQRSwgKGNvbnN0IGNoYXIqKWRh
dGEpKTsKKyNpZiBkZWZpbmVkKFRFWE1BUF9PUEVOR0xfRVNfMikKKyAgICAgICAgR0xfQ01EKGds
VGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB0YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVj
dC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQoKSwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwgKGNvbnN0IGNoYXIqKWRhdGEpKTsKKyNlbHNlCisgICAgICAgIEdM
X0NNRChnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRh
cmdldFJlY3QueSgpLCB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIEdM
X0JHUkEsIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBFLCAoY29uc3QgY2hhciop
ZGF0YSkpOworI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGb3IgRVMg
ZHJpdmVycyB0aGF0IGRvbid0IHN1cHBvcnQgc3ViLWltYWdlcy4KLSAgICBpZiAoIWRyaXZlclN1
cHBvcnRzU3ViSW1hZ2UoKSkgewotICAgICAgICBjb25zdCBjaGFyKiBiaXRzID0gc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEpOwotICAgICAgICBjb25zdCBjaGFyKiBzcmMgPSBiaXRzICsg
c291cmNlT2Zmc2V0LnkoKSAqIGJ5dGVzUGVyTGluZSArIHNvdXJjZU9mZnNldC54KCkgKiBieXRl
c1BlclBpeGVsOwotICAgICAgICBWZWN0b3I8Y2hhcj4gdGVtcG9yYXJ5RGF0YSh0YXJnZXRSZWN0
LndpZHRoKCkgKiB0YXJnZXRSZWN0LmhlaWdodCgpICogYnl0ZXNQZXJQaXhlbCk7Ci0gICAgICAg
IGNoYXIqIGRzdCA9IHRlbXBvcmFyeURhdGEuZGF0YSgpOwotCi0gICAgICAgIGNvbnN0IGludCB0
YXJnZXRCeXRlc1BlckxpbmUgPSB0YXJnZXRSZWN0LndpZHRoKCkgKiBieXRlc1BlclBpeGVsOwot
ICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IHRhcmdldFJlY3QuaGVpZ2h0KCk7ICsreSkgewot
ICAgICAgICAgICAgbWVtY3B5KGRzdCwgc3JjLCB0YXJnZXRCeXRlc1BlckxpbmUpOwotICAgICAg
ICAgICAgc3JjICs9IGJ5dGVzUGVyTGluZTsKLSAgICAgICAgICAgIGRzdCArPSB0YXJnZXRCeXRl
c1BlckxpbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBHTF9DTUQoZ2xUZXhTdWJJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwgdGFyZ2V0UmVj
dC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpLCBHTF9SR0JBLCBERUZBVUxUX1RFWFRVUkVf
UElYRUxfVFJBTlNGRVJfVFlQRSwgdGVtcG9yYXJ5RGF0YS5kYXRhKCkpKTsKLSAgICAgICAgcmV0
dXJuOworI2lmIGRlZmluZWQoVEVYTUFQX09QRU5HTF9FU18yKQorICAgIGNvbnN0IGNoYXIqIGJp
dHMgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSk7CisgICAgY29uc3QgY2hhciogc3Jj
ID0gYml0cyArIHNvdXJjZU9mZnNldC55KCkgKiBieXRlc1BlckxpbmUgKyBzb3VyY2VPZmZzZXQu
eCgpICogYnl0ZXNQZXJQaXhlbDsKKyAgICBWZWN0b3I8Y2hhcj4gdGVtcG9yYXJ5RGF0YSh0YXJn
ZXRSZWN0LndpZHRoKCkgKiB0YXJnZXRSZWN0LmhlaWdodCgpICogYnl0ZXNQZXJQaXhlbCk7Cisg
ICAgY2hhciogZHN0ID0gdGVtcG9yYXJ5RGF0YS5kYXRhKCk7CisKKyAgICBjb25zdCBpbnQgdGFy
Z2V0Qnl0ZXNQZXJMaW5lID0gdGFyZ2V0UmVjdC53aWR0aCgpICogYnl0ZXNQZXJQaXhlbDsKKyAg
ICBmb3IgKGludCB5ID0gMDsgeSA8IHRhcmdldFJlY3QuaGVpZ2h0KCk7ICsreSkgeworICAgICAg
ICBtZW1jcHkoZHN0LCBzcmMsIHRhcmdldEJ5dGVzUGVyTGluZSk7CisgICAgICAgIHNyYyArPSBi
eXRlc1BlckxpbmU7CisgICAgICAgIGRzdCArPSB0YXJnZXRCeXRlc1BlckxpbmU7CiAgICAgfQog
Ci0jaWYgIWRlZmluZWQoVEVYTUFQX09QRU5HTF9FU18yKQorICAgIEdMX0NNRChnbFRleFN1Yklt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0
YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIEdMX1JHQkEsIERFRkFVTFRf
VEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBFLCB0ZW1wb3JhcnlEYXRhLmRhdGEoKSkpOworI2Vs
c2UKICAgICAvLyBVc2UgdGhlIE9wZW5HTCBzdWItaW1hZ2UgZXh0ZW5zaW9uLCBub3cgdGhhdCB3
ZSBrbm93IGl0J3MgYXZhaWxhYmxlLgogICAgIEdMX0NNRChnbFBpeGVsU3RvcmVpKEdMX1VOUEFD
S19ST1dfTEVOR1RILCBieXRlc1BlckxpbmUgLyBieXRlc1BlclBpeGVsKSk7CiAgICAgR0xfQ01E
KGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywgc291cmNlT2Zmc2V0LnkoKSkpOwog
ICAgIEdMX0NNRChnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMUywgc291cmNlT2Zm
c2V0LngoKSkpOwotICAgIEdMX0NNRChnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
dGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdl
dFJlY3QuaGVpZ2h0KCksIEdMX1JHQkEsIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9U
WVBFLCAoY29uc3QgY2hhciopZGF0YSkpOworICAgIEdMX0NNRChnbFRleFN1YkltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0
LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIEdMX0JHUkEsIERFRkFVTFRfVEVYVFVSRV9Q
SVhFTF9UUkFOU0ZFUl9UWVBFLCAoY29uc3QgY2hhciopZGF0YSkpOwogICAgIEdMX0NNRChnbFBp
eGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RILCAwKSk7CiAgICAgR0xfQ01EKGdsUGl4ZWxT
dG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywgMCkpOwogICAgIEdMX0NNRChnbFBpeGVsU3RvcmVp
KEdMX1VOUEFDS19TS0lQX1BJWEVMUywgMCkpOwpAQCAtNjk2LDExICs2ODYsMjAgQEAgdm9pZCBC
aXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVj
dCYgdGFyZ2V0UmVjdCwgY28KICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBjb25zdCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNDsKKyAgICBjb25zdCB1aW50OF90KiBy
YXdEYXRhID0gMDsKKworI2lmICFkZWZpbmVkKFRFWE1BUF9PUEVOR0xfRVNfMikKKyAgICByYXdE
YXRhID0gR3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJhY3RSYXdJbWFnZURhdGEoaW1hZ2UpOworI2Vu
ZGlmCisKICAgICBWZWN0b3I8dWludDhfdD4gaW1hZ2VEYXRhOwotICAgIEdyYXBoaWNzQ29udGV4
dDNEOjpleHRyYWN0SW1hZ2VEYXRhKGltYWdlLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGZhbHNlIC8qIGZsaXBZICovLCB0cnVlIC8q
IHByZW11bHRpcGx5QWxwaGEgKi8sIGZhbHNlIC8qIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxl
ICovLCBpbWFnZURhdGEpOworICAgIGlmICghcmF3RGF0YSkgeworICAgICAgICBHcmFwaGljc0Nv
bnRleHQzRDo6ZXh0cmFjdEltYWdlRGF0YShpbWFnZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEs
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBmYWxzZSAvKiBmbGlwWSAqLywgdHJ1
ZSAvKiBwcmVtdWx0aXBseUFscGhhICovLCBmYWxzZSAvKiBpZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZSAqLywgaW1hZ2VEYXRhKTsKKyAgICAgICAgcmF3RGF0YSA9IGltYWdlRGF0YS5kYXRhKCk7
CisgICAgfQogCi0gICAgY29uc3QgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IDQ7Ci0gICAgdXBk
YXRlQ29udGVudHMoaW1hZ2VEYXRhLmRhdGEoKSwgdGFyZ2V0UmVjdCwgb2Zmc2V0LCBpbWFnZS0+
d2lkdGgoKSAqIGJ5dGVzUGVyUGl4ZWwpOworICAgIHVwZGF0ZUNvbnRlbnRzKHJhd0RhdGEsIHRh
cmdldFJlY3QsIG9mZnNldCwgaW1hZ2UtPndpZHRoKCkgKiBieXRlc1BlclBpeGVsKTsKIH0KIAog
I2lmIEVOQUJMRShDU1NfRklMVEVSUykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154978</attachid>
            <date>2012-07-27 09:56:31 -0700</date>
            <delta_ts>2012-07-27 11:23:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91897-20120727095551.patch</filename>
            <type>text/plain</type>
            <size>7226</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVjODQzNmI1NTkwYWI4
ZjM1NDhmM2I3MmU4NzM2NGE0YTQyYzYwMC4uNTFiY2YzNWY0YzdkMjNjNjc4N2FlZjY0MzRkNjFi
Njc1MmEzOTc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA3LTI3ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1RleG1h
cF0gUGVyZm9ybWFuY2UgcmVncmVzc2lvbiBpbiB0ZXh0dXJlIHVwbG9hZHMgYWZ0ZXIgcjEyMTIy
MworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4OTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSb2xsaW5n
IG91dCByMTIxMjIzLCB3aXRoIHNvbWUgY29uZmxpY3QgZml4ZXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnN3aXp6bGVCR1JBVG9SR0JBKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6ZHJpdmVyU3VwcG9ydHNCR1JBU3dpenpsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcFRleHR1cmVHTDo6ZGlkUmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVy
ZUdMOjp1cGRhdGVDb250ZW50cyk6CisKIDIwMTItMDctMjcgIFRoaWFnbyBNYXJjb3MgUC4gU2Fu
dG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTIz
ODU2KTogQnJlYWtzIHRoZSBidWlsZCB3aGVuIGRpc2FibGluZyBpbnNwZWN0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5jcHAKaW5kZXggNjg4ZTI2ZjRlODlmZmYxM2RlNWIzZDU3OWM4MjBhOTM1ZWY5MTcy
Yy4uODY3MDRiYzE1YzVhYzEzMjFlYTExNmI2Mjc5YWE3Y2MxYTcyMzdmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wu
aCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgiCkBAIC01Miw2ICs1MSwx
MiBAQAogI2luY2x1ZGUgPEdML2dseC5oPgogI2VuZGlmCiAKKyNpZiBVU0UoQ0FJUk8pCisjaW5j
bHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1
ZGUgPGNhaXJvLmg+CisjZW5kaWYKKwogI2RlZmluZSBHTF9DTUQoLi4uKSBkbyB7IF9fVkFfQVJH
U19fOyBBU1NFUlRfQVJHKF9fVkFfQVJHU19fLCAhZ2xHZXRFcnJvcigpKTsgfSB3aGlsZSAoMCkK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsKQEAgLTYy
Miw2ICs2MjcsMjYgQEAgYm9vbCBCaXRtYXBUZXh0dXJlR0w6OmNhblJldXNlV2l0aChjb25zdCBJ
bnRTaXplJiBjb250ZW50c1NpemUsIEZsYWdzKQogI2RlZmluZSBERUZBVUxUX1RFWFRVUkVfUElY
RUxfVFJBTlNGRVJfVFlQRSBHTF9VTlNJR05FRF9CWVRFCiAjZW5kaWYKIAorc3RhdGljIHZvaWQg
c3dpenpsZUJHUkFUb1JHQkEodWludDMyX3QqIGRhdGEsIGNvbnN0IEludFJlY3QmIHJlY3QsIGlu
dCBzdHJpZGUgPSAwKQoreworICAgIHN0cmlkZSA9IHN0cmlkZSA/IHN0cmlkZSA6IHJlY3Qud2lk
dGgoKTsKKyAgICBmb3IgKGludCB5ID0gcmVjdC55KCk7IHkgPCByZWN0Lm1heFkoKTsgKyt5KSB7
CisgICAgICAgIHVpbnQzMl90KiBwID0gZGF0YSArIHkgKiBzdHJpZGU7CisgICAgICAgIGZvciAo
aW50IHggPSByZWN0LngoKTsgeCA8IHJlY3QubWF4WCgpOyArK3gpCisgICAgICAgICAgICBwW3hd
ID0gKChwW3hdIDw8IDE2KSAmIDB4ZmYwMDAwKSB8ICgocFt4XSA+PiAxNikgJiAweGZmKSB8IChw
W3hdICYgMHhmZjAwZmYwMCk7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBkcml2ZXJTdXBwb3J0
c0JHUkFTd2l6emxpbmcoKQoreworI2lmIGRlZmluZWQoVEVYTUFQX09QRU5HTF9FU18yKQorICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVsaWFibGUgZGV0ZWN0aW9uLiBTZWUgYWxzbyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODExMDMuCisgICAgcmV0dXJuIGZhbHNl
OworI2Vsc2UKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorfQorCiBzdGF0aWMgYm9vbCBkcml2
ZXJTdXBwb3J0c1N1YkltYWdlKCkKIHsKICNpZiBkZWZpbmVkKFRFWE1BUF9PUEVOR0xfRVNfMikK
QEAgLTY0MSwyMyArNjY2LDMxIEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjpkaWRSZXNldCgpCiAg
ICAgaWYgKG1fdGV4dHVyZVNpemUgPT0gY29udGVudFNpemUoKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgR0x1aW50IGZvcm1hdCA9IGRyaXZlclN1cHBvcnRzQkdSQVN3aXp6bGluZygpID8gR0xf
QkdSQSA6IEdMX1JHQkE7CisKICAgICBtX3RleHR1cmVTaXplID0gY29udGVudFNpemUoKTsKICAg
ICBHTF9DTUQoZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2lkKSk7CiAgICAgR0xfQ01E
KGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdM
X0xJTkVBUikpOwogICAgIEdMX0NNRChnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpKTsKICAgICBHTF9DTUQoZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKSk7
CiAgICAgR0xfQ01EKGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dS
QVBfVCwgR0xfQ0xBTVBfVE9fRURHRSkpOwotICAgIEdMX0NNRChnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCQSwgbV90ZXh0dXJlU2l6ZS53aWR0aCgpLCBtX3RleHR1cmVTaXpl
LmhlaWdodCgpLCAwLCBHTF9SR0JBLCBERUZBVUxUX1RFWFRVUkVfUElYRUxfVFJBTlNGRVJfVFlQ
RSwgMCkpOworICAgIEdMX0NNRChnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdC
QSwgbV90ZXh0dXJlU2l6ZS53aWR0aCgpLCBtX3RleHR1cmVTaXplLmhlaWdodCgpLCAwLCBmb3Jt
YXQsIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBFLCAwKSk7CiB9CiAKIAogdm9p
ZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIGRhdGEsIGNvbnN0
IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBi
eXRlc1BlckxpbmUpCiB7CisgICAgR0x1aW50IGdsRm9ybWF0ID0gR0xfUkdCQTsKICAgICBHTF9D
TUQoZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2lkKSk7CiAKICAgICBjb25zdCB1bnNp
Z25lZCBieXRlc1BlclBpeGVsID0gNDsKLSAgICBpZiAoYnl0ZXNQZXJMaW5lID09IHRhcmdldFJl
Y3Qud2lkdGgoKSAqIGJ5dGVzUGVyUGl4ZWwgJiYgc291cmNlT2Zmc2V0ID09IEludFBvaW50Ojp6
ZXJvKCkpIHsKLSAgICAgICAgR0xfQ01EKGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCB0YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFy
Z2V0UmVjdC5oZWlnaHQoKSwgR0xfUkdCQSwgREVGQVVMVF9URVhUVVJFX1BJWEVMX1RSQU5TRkVS
X1RZUEUsIChjb25zdCBjaGFyKilkYXRhKSk7CisgICAgaWYgKGRyaXZlclN1cHBvcnRzQkdSQVN3
aXp6bGluZygpKQorICAgICAgICBnbEZvcm1hdCA9IEdMX0JHUkE7CisgICAgZWxzZQorICAgICAg
ICBzd2l6emxlQkdSQVRvUkdCQShyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2Fz
dDx2b2lkKj4oZGF0YSkpLCBJbnRSZWN0KHNvdXJjZU9mZnNldCwgdGFyZ2V0UmVjdC5zaXplKCkp
LCBieXRlc1BlckxpbmUgLyBieXRlc1BlclBpeGVsKTsKKworICAgIGlmIChieXRlc1BlckxpbmUg
PT0gdGFyZ2V0UmVjdC53aWR0aCgpIC8gNCAmJiBzb3VyY2VPZmZzZXQgPT0gSW50UG9pbnQ6Onpl
cm8oKSkgeworICAgICAgICBHTF9DTUQoZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJn
ZXRSZWN0LmhlaWdodCgpLCBnbEZvcm1hdCwgREVGQVVMVF9URVhUVVJFX1BJWEVMX1RSQU5TRkVS
X1RZUEUsIChjb25zdCBjaGFyKilkYXRhKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTY3NSw3ICs3MDgsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29u
c3Qgdm9pZCogZGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdAogICAgICAgICAgICAgZHN0
ICs9IHRhcmdldEJ5dGVzUGVyTGluZTsKICAgICAgICAgfQogCi0gICAgICAgIEdMX0NNRChnbFRl
eFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3Qu
eSgpLCB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIEdMX1JHQkEsIERF
RkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBFLCB0ZW1wb3JhcnlEYXRhLmRhdGEoKSkp
OworICAgICAgICBHTF9DTUQoZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHRhcmdl
dFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0
LmhlaWdodCgpLCBnbEZvcm1hdCwgREVGQVVMVF9URVhUVVJFX1BJWEVMX1RSQU5TRkVSX1RZUEUs
IHRlbXBvcmFyeURhdGEuZGF0YSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY4
NCw3ICs3MTcsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29uc3Qg
dm9pZCogZGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdAogICAgIEdMX0NNRChnbFBpeGVs
U3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RILCBieXRlc1BlckxpbmUgLyBieXRlc1BlclBpeGVs
KSk7CiAgICAgR0xfQ01EKGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywgc291cmNl
T2Zmc2V0LnkoKSkpOwogICAgIEdMX0NNRChnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJ
WEVMUywgc291cmNlT2Zmc2V0LngoKSkpOwotICAgIEdMX0NNRChnbFRleFN1YkltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0
LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIEdMX1JHQkEsIERFRkFVTFRfVEVYVFVSRV9Q
SVhFTF9UUkFOU0ZFUl9UWVBFLCAoY29uc3QgY2hhciopZGF0YSkpOworICAgIEdMX0NNRChnbFRl
eFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3Qu
eSgpLCB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0LCBE
RUZBVUxUX1RFWFRVUkVfUElYRUxfVFJBTlNGRVJfVFlQRSwgKGNvbnN0IGNoYXIqKWRhdGEpKTsK
ICAgICBHTF9DTUQoZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgMCkpOwogICAg
IEdMX0NNRChnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1JPV1MsIDApKTsKICAgICBHTF9D
TUQoZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9QSVhFTFMsIDApKTsKQEAgLTY5NSwxMiAr
NzI4LDIzIEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhJbWFnZSogaW1h
Z2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvCiB7CiAgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgcmV0dXJuOworICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lSW1hZ2UpCisgICAgICAg
IHJldHVybjsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBpbWFnZURhdGE7Ci0gICAgR3JhcGhpY3ND
b250ZXh0M0Q6OmV4dHJhY3RJbWFnZURhdGEoaW1hZ2UsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JB
LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZmFsc2UgLyogZmxpcFkgKi8sIHRy
dWUgLyogcHJlbXVsdGlwbHlBbHBoYSAqLywgZmFsc2UgLyogaWdub3JlR2FtbWFBbmRDb2xvclBy
b2ZpbGUgKi8sIGltYWdlRGF0YSk7CisgICAgaW50IGJ5dGVzUGVyTGluZTsKKyAgICBjb25zdCBj
aGFyKiBpbWFnZURhdGE7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNDsK
LSAgICB1cGRhdGVDb250ZW50cyhpbWFnZURhdGEuZGF0YSgpLCB0YXJnZXRSZWN0LCBvZmZzZXQs
IGltYWdlLT53aWR0aCgpICogYnl0ZXNQZXJQaXhlbCk7CisjaWYgUExBVEZPUk0oUVQpCisgICAg
aW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZnJhbWVJbWFnZS0+Y29u
c3RCaXRzKCkpOworICAgIGJ5dGVzUGVyTGluZSA9IGZyYW1lSW1hZ2UtPmJ5dGVzUGVyTGluZSgp
OworI2VsaWYgVVNFKENBSVJPKQorICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1l
SW1hZ2UtPnN1cmZhY2UoKTsKKyAgICBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKKyAgICBieXRl
c1BlckxpbmUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7CisjZW5k
aWYKKworICAgIHVwZGF0ZUNvbnRlbnRzKGltYWdlRGF0YSwgdGFyZ2V0UmVjdCwgb2Zmc2V0LCBi
eXRlc1BlckxpbmUpOwogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQo=
</data>
<flag name="review"
          id="164349"
          type_id="1"
          status="+"
          setter="jturcotte"
    />
          </attachment>
      

    </bug>

</bugzilla>