<?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>75519</bug_id>
          
          <creation_ts>2012-01-03 21:17:35 -0800</creation_ts>
          <short_desc>[GTK] [AC] Introduce AcceleratedCompositingContext to isolate different accelerated compositing implementations</short_desc>
          <delta_ts>2012-01-05 12:19:14 -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>WebKitGTK</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>
          
          <blocked>74087</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>529302</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-03 21:17:35 -0800</bug_when>
    <thetext>This class will isolate each of the implementations, hopefully preventing code conflicts as we post patches for acceleated compositing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529338</commentid>
    <comment_count>1</comment_count>
      <attachid>121064</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-03 22:09:28 -0800</bug_when>
    <thetext>Created attachment 121064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530222</commentid>
    <comment_count>2</comment_count>
      <attachid>121064</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2012-01-05 05:45:23 -0800</bug_when>
    <thetext>Comment on attachment 121064
Patch

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

Great patch.

&gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContext.h:34
&gt; +class TextureMapper;
&gt; +class TextureMapperNode;

Should this be avoided in case of clutter compilation?

&gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContextClutter.cpp:87
&gt; +    if (rect == IntRect())
&gt; +        m_rootGraphicsLayer-&gt;setNeedsDisplay();

Shouln&apos;t we return in this clause to avoid the next setNeedsDisplay with emtpy rect? Are we testing if rect.isEmpty()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530525</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-05 12:17:46 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 121064 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121064&amp;action=review
&gt; 
&gt; Great patch.
&gt; 
&gt; &gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContext.h:34
&gt; &gt; +class TextureMapper;
&gt; &gt; +class TextureMapperNode;
&gt; 
&gt; Should this be avoided in case of clutter compilation?

Yep! This was left over from my work with TextureMapperGL. I&apos;ve removed it.

&gt; &gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContextClutter.cpp:87
&gt; &gt; +    if (rect == IntRect())
&gt; &gt; +        m_rootGraphicsLayer-&gt;setNeedsDisplay();
&gt; 
&gt; Shouln&apos;t we return in this clause to avoid the next setNeedsDisplay with emtpy rect? Are we testing if rect.isEmpty()?

Right again on both counts. I&apos;ve changed the test to rect.isEmpty() and added an early return.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530529</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-05 12:19:14 -0800</bug_when>
    <thetext>Committed r104194: &lt;http://trac.webkit.org/changeset/104194&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121064</attachid>
            <date>2012-01-03 22:09:28 -0800</date>
            <delta_ts>2012-01-05 05:45:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75519-20120103220927.patch</filename>
            <type>text/plain</type>
            <size>16131</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzOTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZWI5Y2QyZTQ0
NjI4N2FlYzRkNjZkMzc5ZjE5ODY2NTBiMzIyYTZiNi4uNGRiZWRlMzc0NGUwOGFmMTY0OTE0NWZi
NzE1M2Q3YzMwYmE1NDliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEy
LTAxLTAzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXSBbQUNdIEludHJvZHVjZSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCB0byBp
c29sYXRlIGRpZmZlcmVudCBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBpbXBsZW1lbnRhdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTE5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0IHdoaWNoIHdpbGwgaXNvbGF0ZSBhbGwgdGhlIGRp
ZmZlcmVudCBhY2NlbGVyYXRlZCBjb21wb3NpdGluZworICAgICAgICBpbXBsZW1lbnRhdGlvbnMg
ZnJvbSBvbmUgYW5vdGhlci4gRm9yIHJpZ2h0IG5vdyB0aGlzIGp1c3QgaW5jbHVkZXMgdGhlIENs
dXR0ZXIgdmVyc2lvbi4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgdGhlIG5ldyBm
aWxlcyB0byB0aGUgc291cmNlIGxpc3QuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRDbHV0dGVyLmNwcDogQWRkZWQuIEV4aXN0
aW5nCisgICAgICAgIGNsdXR0ZXIgQUMgY29kZSBoYXMgbW92ZWQgaGVyZS4KKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKTogVXNlIHRoZSBuZXcgQWNjbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dCBub3cKKyAgICAgICAgaW5zdGVhZCBvZiBjYWxsaW5nIGludG8g
dGhlIFdlYlZpZXcuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0TmVlZHNPbmVT
aG90RHJhd2luZ1N5bmNocm9uaXphdGlvbik6RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkNocm9t
ZUNsaWVudDo6c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYyk6IERpdHRvLgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zaXpl
X2FsbG9jYXRlKTogQ2FsbCBpbiB0aGUgQUNDb250ZXh0LgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2luaXQpOiBJbml0aWFsaXplIHRoZSBBQ0NvbnRleHQuCisgICAgICAgICogd2Via2l0L3dl
YmtpdHdlYnZpZXdwcml2YXRlLmg6IEFkZCB0aGUgQUNDb250ZXh0IGFzIGEgcHJpdmF0ZSBtZW1i
ZXIuCisKIDIwMTEtMTItMjAgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW0dUS10gQ2hhbmdlIGRlZmF1bHQgV2ViU29ja2V0IHByb3RvY29sIHRvIHRoZSBs
YXRlc3Qgb25lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDM4ZGQyNzlkOWJlOGFlYWVk
NmUzNmM2MmFmNGU3ZWEyZTZmZDBhNWIuLjA2ZWEwNmFmMGY3OWM0YzliYzg1OTZmNTc4NGRkNzlk
NGMwZGY4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0xODQsNiArMTg0LDggQEAg
d2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
V2ViS2l0RE9NT2JqZWN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIFwKKwlTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5o
IFwKKwlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dENsdXR0ZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDAxZjc4MzIzYWRiZDc1MDc5Zjg1YWM1MzdkOTg5NDdjMzAzYjlkMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBJZ2FsaWEsIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisK
KyNpZm5kZWYgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAorI2RlZmluZSBBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dF9oCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50
LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRl
ICJUaW1lci5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBHcmFwaGljc0xheWVyOworY2xhc3MgVGV4dHVyZU1hcHBlcjsK
K2NsYXNzIFRleHR1cmVNYXBwZXJOb2RlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4gY3JlYXRlKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KHdlYlZpZXcpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCgpOworICAgIHZvaWQgYXR0YWNoUm9vdEdy
YXBoaWNzTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOworICAgIHZvaWQgc2NoZWR1bGVS
b290TGF5ZXJSZXBhaW50KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICB2b2lkIG1hcmtG
b3JTeW5jKCk7CisgICAgdm9pZCBzeW5jTGF5ZXJzVGltZW91dChXZWJDb3JlOjpUaW1lcjxBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4qKTsKKyAgICB2b2lkIHJlc2l6ZVJvb3RMYXllcihj
b25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0V2ViVmlldyog
bV93ZWJWaWV3OworICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3Jvb3RHcmFw
aGljc0xheWVyOworICAgIFdlYkNvcmU6OlRpbWVyPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0PiBtX3N5bmNUaW1lcjsKKworI2lmIFVTRShDTFVUVEVSKQorICAgIEd0a1dpZGdldCogbV9y
b290TGF5ZXJFbWJlZGRlcjsKKyNlbmRpZgorCisgICAgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQoV2ViS2l0V2ViVmlldyopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjZW5kaWYgLy8gQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRDbHV0dGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0Q2x1dHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNjNjk5YmI4Yjk4Njc4ZjczMDAxYjEwYjVhMDNl
ZGM0OGM3YzcxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Q2x1dHRlci5jcHAKQEAgLTAsMCAr
MSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQ29sbGFib3JhIEx0ZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0Uo
Q0xVVFRFUikKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnZpZXdwcml2YXRl
LmgiCisjaW5jbHVkZSA8Y2x1dHRlci1ndGsvY2x1dHRlci1ndGsuaD4KKyNpbmNsdWRlIDxjbHV0
dGVyL2NsdXR0ZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3
ZWJWaWV3KQorICAgICwgbV9yb290R3JhcGhpY3NMYXllcigwKQorICAgICwgbV9zeW5jVGltZXIo
dGhpcywgJkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzeW5jTGF5ZXJzVGltZW91dCkK
KyAgICAsIG1fcm9vdExheWVyRW1iZWRkZXIoMCkKK3sKK30KKworQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ6On5BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCgpCit7Cit9CisKK2Jv
b2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlbmRlckxheWVyc1RvV2luZG93KGNh
aXJvX3QqIHdpZGdldENyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogZ3Jh
cGhpY3NMYXllcikKK3sKKyAgICBpZiAoIWdyYXBoaWNzTGF5ZXIpIHsKKyAgICAgICAgZ3RrX2Nv
bnRhaW5lcl9yZW1vdmUoR1RLX0NPTlRBSU5FUihtX3dlYlZpZXcpLCBtX3Jvb3RMYXllckVtYmVk
ZGVyKTsKKyAgICAgICAgbV9yb290TGF5ZXJFbWJlZGRlciA9IDA7CisgICAgICAgIG1fcm9vdEdy
YXBoaWNzTGF5ZXIgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQ3JlYXRl
IGFuIGluc3RhbmNlIG9mIEd0a0NsdXR0ZXJFbWJlZCB0byBob3N0IGFjdG9ycyBhcyB3ZWIgbGF5
ZXJzLgorICAgIGlmICghbV9yb290TGF5ZXJFbWJlZGRlcikgeworICAgICAgICBtX3Jvb3RMYXll
ckVtYmVkZGVyID0gZ3RrX2NsdXR0ZXJfZW1iZWRfbmV3KCk7CisgICAgICAgIGd0a19jb250YWlu
ZXJfYWRkKEdUS19DT05UQUlORVIobV93ZWJWaWV3KSwgbV9yb290TGF5ZXJFbWJlZGRlcik7Cisg
ICAgICAgIGd0a193aWRnZXRfc2hvdyhtX3Jvb3RMYXllckVtYmVkZGVyKTsKKyAgICB9CisKKyAg
ICAvLyBBZGQgYSByb290IGxheWVyIHRvIHRoZSBzdGFnZS4KKyAgICBpZiAoZ3JhcGhpY3NMYXll
cikgeworICAgICAgICBtX3Jvb3RHcmFwaGljc0xheWVyID0gZ3JhcGhpY3NMYXllcjsKKyAgICAg
ICAgQ2x1dHRlckNvbG9yIHN0YWdlQ29sb3IgPSB7IDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYgfTsK
KyAgICAgICAgQ2x1dHRlckFjdG9yKiBzdGFnZSA9IGd0a19jbHV0dGVyX2VtYmVkX2dldF9zdGFn
ZShHVEtfQ0xVVFRFUl9FTUJFRChtX3Jvb3RMYXllckVtYmVkZGVyKSk7CisgICAgICAgIGNsdXR0
ZXJfc3RhZ2Vfc2V0X2NvbG9yKENMVVRURVJfU1RBR0Uoc3RhZ2UpLCAmc3RhZ2VDb2xvcik7Cisg
ICAgICAgIGNsdXR0ZXJfY29udGFpbmVyX2FkZF9hY3RvcihDTFVUVEVSX0NPTlRBSU5FUihzdGFn
ZSksIG1fcm9vdEdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgICAgIGNsdXR0
ZXJfYWN0b3Jfc2hvd19hbGwoc3RhZ2UpOworICAgIH0KK30KKwordm9pZCBBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dDo6c2NoZWR1bGVSb290TGF5ZXJSZXBhaW50KGNvbnN0IEludFJlY3Qm
IHJlY3QpCit7CisgICAgaWYgKCFtX3Jvb3RHcmFwaGljc0xheWVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAocmVjdCA9PSBJbnRSZWN0KCkpCisgICAgICAgIG1fcm9vdEdyYXBoaWNzTGF5
ZXItPnNldE5lZWRzRGlzcGxheSgpOworCisgICAgbV9yb290R3JhcGhpY3NMYXllci0+c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0OjpyZXNpemVSb290TGF5ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAo
IW1fcm9vdExheWVyRW1iZWRkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEd0a0FsbG9jYXRp
b24gYWxsb2NhdGlvbjsKKyAgICBhbGxvY2F0aW9uLnggPSAwOworICAgIGFsbG9jYXRpb24ueSA9
IDA7CisgICAgYWxsb2NhdGlvbi53aWR0aCA9IHNpemUud2lkdGgoKTsKKyAgICBhbGxvY2F0aW9u
LmhlaWdodCA9IHNpemUuaGVpZ2h0KCk7CisgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdU
S19XSURHRVQobV93ZWJWaWV3LT5wcml2LT5yb290TGF5ZXJFbWJlZGRlciksICZhbGxvY2F0aW9u
KTsKK30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bWFya0ZvclN5bmMo
KQoreworICAgIGlmIChtX3N5bmNUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9zeW5jVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0OjpzeW5jTGF5ZXJzVGltZW91dChUaW1lcjxBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dD4qKQoreworICAgIGNvcmUobV93ZWJWaWV3KS0+bWFpbkZyYW1lKCktPnZp
ZXcoKS0+c3luY0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpICYmIFVTRShDTFVUVEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggNmIyMGFhN2U4NDUwZWYwNzg3NzgwYTJl
M2UwZTQ5N2I2ODI0MmE3OS4uMjlhODRhNmZlMmRiZjI0ODBmOTE2ZjIxY2FkMTE4ZDM0YjkxODky
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwCkBAIC05MjcsMjAgKzkyNywxNyBAQCB2b2lkIENocm9tZUNsaWVudDo6ZXhp
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogdm9pZCBDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RH
cmFwaGljc0xheWVyKEZyYW1lKiBmcmFtZSwgR3JhcGhpY3NMYXllciogcm9vdExheWVyKQogewot
ICAgIGlmIChyb290TGF5ZXIpCi0gICAgICAgIHdlYlZpZXdTZXRSb290R3JhcGhpY3NMYXllciht
X3dlYlZpZXcsIHJvb3RMYXllcik7Ci0gICAgZWxzZQotICAgICAgICB3ZWJWaWV3RGV0YWNoUm9v
dEdyYXBoaWNzTGF5ZXIobV93ZWJWaWV3KTsKKyAgICBtX3dlYlZpZXctPnByaXYtPmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LT5hdHRhY2hSb290R3JhcGhpY3NMYXllcihyb290TGF5ZXIp
OwogfQogCiB2b2lkIENocm9tZUNsaWVudDo6c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9u
aXphdGlvbigpCiB7Ci0gICAgd2ViVmlld01hcmtGb3JTeW5jKG1fd2ViVmlldywgRkFMU0UpOwor
ICAgIG1fd2ViVmlldy0+cHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPm1hcmtG
b3JTeW5jKCk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50OjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5
ZXJTeW5jKCkKIHsKLSAgICB3ZWJWaWV3TWFya0ZvclN5bmMobV93ZWJWaWV3LCBUUlVFKTsKKyAg
ICBtX3dlYlZpZXctPnByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5tYXJrRm9y
U3luYygpOwogfQogCiBDaHJvbWVDbGllbnQ6OkNvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIENocm9t
ZUNsaWVudDo6YWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDZmZThjZGZhMjM5MzVmZDJiMTFi
ZTc4MDc3MjAyZTVhNzNiNWFmNGQuLjA4NjhhNGEyMjcxYWY5YTg2ODI3YWJkNzdhOTBhMzE1MDkw
MGY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAg
LTcsNyArNyw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2
YSA8Z25zQGdub21lLm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgQ29sbGFib3JhIEx0ZC4KLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTAgSWdhbGlhIFMuTC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTAsIDIwMTIgSWdhbGlhIFMuTC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgTW92aWFsIENy
ZWF0aXZlIFRlY2hub2xvZ2llcyBJbmMuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEJvYmJ5IFBv
d2VycwogICogIENvcHlyaWdodCAoQykgMjAxMCBKb29uZSBIdXIgPGpvb25lQGtsZHAub3JnPgpA
QCAtODcyLDEyICs4NzIsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2l6ZV9hbGxv
Y2F0ZShHdGtXaWRnZXQqIHdpZGdldCwgR3RrQWxsb2NhdGlvbiogYWxsbwogICAgIGNocm9tZUNs
aWVudC0+d2lkZ2V0U2l6ZUNoYW5nZWQob2xkU2l6ZSwgSW50U2l6ZShhbGxvY2F0aW9uLT53aWR0
aCwgYWxsb2NhdGlvbi0+aGVpZ2h0KSk7CiAgICAgY2hyb21lQ2xpZW50LT5hZGp1c3RtZW50V2F0
Y2hlcigpLT51cGRhdGVBZGp1c3RtZW50c0Zyb21TY3JvbGxiYXJzKCk7CiAKLSNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShDTFVUVEVSKQotICAgIGlmICh3ZWJWaWV3LT5w
cml2LT5yb290TGF5ZXJFbWJlZGRlcikgewotICAgICAgICBhbGxvY2F0aW9uLT54ID0gMDsKLSAg
ICAgICAgYWxsb2NhdGlvbi0+eSA9IDA7Ci0gICAgICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0
ZShHVEtfV0lER0VUKHdlYlZpZXctPnByaXYtPnJvb3RMYXllckVtYmVkZGVyKSwgYWxsb2NhdGlv
bik7Ci0gICAgfQorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBXRUJLSVRf
V0VCX1ZJRVcod2lkZ2V0KS0+cHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnJl
c2l6ZVJvb3RMYXllcihJbnRTaXplKGFsbG9jYXRpb24tPndpZHRoLCBhbGxvY2F0aW9uLT5oZWln
aHQpKTsKICNlbmRpZgogfQogCkBAIC0zMzM3LDYgKzMzMzMsMTAgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBndGtfZHJhZ19k
ZXN0X3NldF90YXJnZXRfbGlzdChHVEtfV0lER0VUKHdlYlZpZXcpLCBQYXN0ZWJvYXJkSGVscGVy
OjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT50YXJnZXRMaXN0KCkpOwogCiAgICAgcHJpdi0+
c2VsZlNjcm9sbGluZyA9IGZhbHNlOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorICAgIHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0ID0gQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ6OmNyZWF0ZSh3ZWJWaWV3KTsKKyNlbmRpZgogfQogCiBHdGtXaWRn
ZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKQEAgLTQ5MDksNjggKzQ5MDksNiBAQCB2b2lk
IHdlYlZpZXdFeGl0RnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogI2VuZGlmCiB9
CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIHdlYlZpZXdTZXRSb290
R3JhcGhpY3NMYXllcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHcmFwaGljc0xheWVyKiBncmFw
aGljc0xheWVyKQotewotI2lmIFVTRShDTFVUVEVSKQotICAgIFdlYktpdFdlYlZpZXdQcml2YXRl
KiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLQotICAgIC8vIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBH
dGtDbHV0dGVyRW1iZWQgdG8gaG9zdCBhY3RvcnMgYXMgd2ViIGxheWVycy4KLSAgICBpZiAoIXBy
aXYtPnJvb3RMYXllckVtYmVkZGVyKSB7Ci0gICAgICAgIHByaXYtPnJvb3RMYXllckVtYmVkZGVy
ID0gZ3RrX2NsdXR0ZXJfZW1iZWRfbmV3KCk7Ci0gICAgICAgIGd0a19jb250YWluZXJfYWRkKEdU
S19DT05UQUlORVIod2ViVmlldyksIHByaXYtPnJvb3RMYXllckVtYmVkZGVyKTsKLSAgICAgICAg
Z3RrX3dpZGdldF9zaG93KHByaXYtPnJvb3RMYXllckVtYmVkZGVyKTsKLSAgICB9Ci0KLSAgICAv
LyBBZGQgYSByb290IGxheWVyIHRvIHRoZSBzdGFnZS4KLSAgICBpZiAoZ3JhcGhpY3NMYXllcikg
ewotICAgICAgICBwcml2LT5yb290R3JhcGhpY3NMYXllciA9IGdyYXBoaWNzTGF5ZXI7Ci0gICAg
ICAgIC8vIHNldCB3aGl0ZSBiYWNrZ3JvdW5kCi0gICAgICAgIENsdXR0ZXJDb2xvciBzdGFnZUNv
bG9yID0geyAweEZGLCAweEZGLCAweEZGLCAweEZGIH07Ci0gICAgICAgIENsdXR0ZXJBY3Rvciog
c3RhZ2UgPSBndGtfY2x1dHRlcl9lbWJlZF9nZXRfc3RhZ2UoR1RLX0NMVVRURVJfRU1CRUQocHJp
di0+cm9vdExheWVyRW1iZWRkZXIpKTsKLSAgICAgICAgY2x1dHRlcl9zdGFnZV9zZXRfY29sb3Io
Q0xVVFRFUl9TVEFHRSAoc3RhZ2UpLCAmc3RhZ2VDb2xvcik7Ci0gICAgICAgIGNsdXR0ZXJfY29u
dGFpbmVyX2FkZF9hY3RvcihDTFVUVEVSX0NPTlRBSU5FUihzdGFnZSksIHByaXYtPnJvb3RHcmFw
aGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwotICAgICAgICBjbHV0dGVyX2FjdG9yX3Nob3df
YWxsKHN0YWdlKTsKLSAgICB9Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYK
LX0KLQotdm9pZCB3ZWJWaWV3RGV0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKLXsKLSNpZiBVU0UoQ0xVVFRFUikKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSog
cHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgLy8gRGV0YWNoIHRoZSByb290IGxheWVyIGZyb20g
dGhlIGhvc3Rpbmcgdmlldy4KLSAgICBndGtfY29udGFpbmVyX3JlbW92ZShHVEtfQ09OVEFJTkVS
KHdlYlZpZXcpLCBwcml2LT5yb290TGF5ZXJFbWJlZGRlcik7Ci0gICAgcHJpdi0+cm9vdExheWVy
RW1iZWRkZXIgPSAwOwotICAgIHByaXYtPnJvb3RHcmFwaGljc0xheWVyID0gMDsKLSNlbHNlCi0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgotfQotCi0jaWYgVVNFKENMVVRURVIpCi1zdGF0
aWMgZ2Jvb2xlYW4gd2ViVmlld1N5bmNMYXllcnMoZ3BvaW50ZXIgZGF0YSkKLXsKLSAgICBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGRhdGEpOwotICAgIGNvcmUod2Vi
VmlldyktPm1haW5GcmFtZSgpLT52aWV3KCktPnN5bmNDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5n
U3ViZnJhbWVzKCk7Ci0KLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0jZW5kaWYKLQotdm9pZCB3ZWJW
aWV3TWFya0ZvclN5bmMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgZ2Jvb2xlYW4gc2NoZWR1bGVT
eW5jKQotewotI2lmIFVTRShDTFVUVEVSKQotICAgIGdfdGltZW91dF9hZGQoMCwgd2ViVmlld1N5
bmNMYXllcnMsIHdlYlZpZXcpOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlm
Ci19Ci0KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViQ29yZTo6UGFnZSogY29y
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlld3ByaXZhdGUuaAppbmRleCBmNzY3MWZjZTY2NmRjNjg2ZGExODVjMTU2MTlj
N2Y5NzljYWVjZjljLi44ZDJiN2IwNGJhOTJlYzRkZWY2ZWY2YTNjNDMzZDBkMGQ3YThkNjQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaApA
QCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiB3ZWJraXR3ZWJ2aWV3cHJpdmF0ZV9oCiAjZGVmaW5l
IHdlYmtpdHdlYnZpZXdwcml2YXRlX2gKIAorI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIkd0a0NsaWNrQ291bnRlci5oIgogI2luY2x1ZGUgIkd0a0RyYWdBbmREcm9wSGVscGVy
LmgiCkBAIC0zMiwxMSArMzMsNiBAQAogI2luY2x1ZGUgIldpZGdldEJhY2tpbmdTdG9yZS5oIgog
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAKLSNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpICYmIFVTRShDTFVUVEVSKQotI2luY2x1ZGUgPGNsdXR0ZXItZ3RrL2NsdXR0
ZXItZ3RrLmg+Ci0jaW5jbHVkZSA8Y2x1dHRlci9jbHV0dGVyLmg+Ci0jZW5kaWYKLQogbmFtZXNw
YWNlIFdlYktpdCB7CiBXZWJDb3JlOjpQYWdlKiBjb3JlKFdlYktpdFdlYlZpZXcqKTsKIFdlYktp
dFdlYlZpZXcqIGtpdChXZWJDb3JlOjpQYWdlKik7CkBAIC05Nyw5ICs5Myw5IEBAIHN0cnVjdCBf
V2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIFdlYkNvcmU6Okd0a0NsaWNrQ291bnRlciBjbGlj
a0NvdW50ZXI7CiAgICAgV2ViQ29yZTo6R3RrRHJhZ0FuZERyb3BIZWxwZXIgZHJhZ0FuZERyb3BI
ZWxwZXI7CiAgICAgYm9vbCBzZWxmU2Nyb2xsaW5nOwotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykgJiYgVVNFKENMVVRURVIpCi0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogcm9v
dEdyYXBoaWNzTGF5ZXI7Ci0gICAgR3RrV2lkZ2V0KiByb290TGF5ZXJFbWJlZGRlcjsKKworI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBPd25QdHI8V2ViS2l0OjpBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dD4gYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAj
ZW5kaWYKIH07CiAKQEAgLTEyMCwxMiArMTE2LDYgQEAgR3RrTWVudSogd2Via2l0X3dlYl92aWV3
X2dldF9jb250ZXh0X21lbnUoV2ViS2l0V2ViVmlldyopOwogCiB2b2lkIHdlYlZpZXdFbnRlckZ1
bGxzY3JlZW4oV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViQ29yZTo6Tm9kZSopOwogdm9pZCB3
ZWJWaWV3RXhpdEZ1bGxzY3JlZW4oV2ViS2l0V2ViVmlldyogd2ViVmlldyk7Ci0KLSNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIHdlYlZpZXdTZXRSb290R3JhcGhpY3NMYXll
cihXZWJLaXRXZWJWaWV3KiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwotdm9pZCB3ZWJWaWV3
RGV0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoV2ViS2l0V2ViVmlldyopOwotdm9pZCB3ZWJWaWV3TWFy
a0ZvclN5bmMoV2ViS2l0V2ViVmlldyosIGdib29sZWFuKTsKLSNlbmRpZgogfQogCiAjZW5kaWYK
</data>
<flag name="review"
          id="121452"
          type_id="1"
          status="+"
          setter="alex"
    />
          </attachment>
      

    </bug>

</bugzilla>