<?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>52852</bug_id>
          
          <creation_ts>2011-01-20 16:23:11 -0800</creation_ts>
          <short_desc>Flushing layer changes and rendering are intertwined in CACFLayerTreeHost, but shouldn&apos;t be</short_desc>
          <delta_ts>2011-01-21 11:36:56 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>52894</dependson>
    
    <dependson>52898</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Adam Roben (:aroben)">aroben</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>337696</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-20 16:23:11 -0800</bug_when>
    <thetext>Syncing compositing state and rendering are intertwined in WKCACFLayerRenderer, but shouldn&apos;t be</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337697</commentid>
    <comment_count>1</comment_count>
      <attachid>79664</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-20 16:25:07 -0800</bug_when>
    <thetext>Created attachment 79664
Separate compositing state syncing from rendering in WKCACFLayerRenderer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337896</commentid>
    <comment_count>2</comment_count>
      <attachid>79664</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-20 22:56:52 -0800</bug_when>
    <thetext>Comment on attachment 79664
Separate compositing state syncing from rendering in WKCACFLayerRenderer

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

&gt; Source/WebCore/platform/graphics/ca/win/CompositingStateSyncer.cpp:92
&gt; +    m_isCallingRenderers = true;
&gt; +    for (size_t i = 0; i &lt; renderers.size(); ++i)
&gt; +        renderers[i]-&gt;syncCompositingStateNowIfNeeded();
&gt; +    m_isCallingRenderers = false;

The name m_isCallingRenderers is a bit vague (and easily confused with Render objects).

&gt; Source/WebCore/platform/graphics/ca/win/CompositingStateSyncer.h:39
&gt; +class CompositingStateSyncer {

I&apos;m not a big fan of this name. I started to use &quot;flush pending layer changes&quot; nomenclature in RenderLayerCompositor (we&apos;re not really synchronizing anything here).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338015</commentid>
    <comment_count>3</comment_count>
      <attachid>79664</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 05:24:33 -0800</bug_when>
    <thetext>Comment on attachment 79664
Separate compositing state syncing from rendering in WKCACFLayerRenderer

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

&gt;&gt; Source/WebCore/platform/graphics/ca/win/CompositingStateSyncer.h:39
&gt;&gt; +class CompositingStateSyncer {
&gt; 
&gt; I&apos;m not a big fan of this name. I started to use &quot;flush pending layer changes&quot; nomenclature in RenderLayerCompositor (we&apos;re not really synchronizing anything here).

The current name certainly seems more consistent with the current terminology (e.g., ChromeClient::scheduleCompositingStateSync). But I guess it&apos;s better to be forward-looking, if you&apos;re planning to change the existing names. Maybe LayerChangeFlusher is the way to go (along with flushLayerChangesSoon(WKCACFLayerRenderer*) and m_isFlushingLayerChanges).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338022</commentid>
    <comment_count>4</comment_count>
      <attachid>79664</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 05:52:29 -0800</bug_when>
    <thetext>Comment on attachment 79664
Separate compositing state syncing from rendering in WKCACFLayerRenderer

This patch breaks &lt;video&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338073</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 08:40:41 -0800</bug_when>
    <thetext>I went ahead and got rid of uses of &quot;sync compositing state&quot; in Windows-specific code in bug 52894 and bug 52898. I&apos;ll upload a new patch that takes the new names into account and also fixes &lt;video&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338088</commentid>
    <comment_count>6</comment_count>
      <attachid>79744</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 09:07:40 -0800</bug_when>
    <thetext>Created attachment 79744
Separate flushing layer changes from rendering in CACFLayerView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338165</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 11:03:10 -0800</bug_when>
    <thetext>Yet another rename in bug 52898 means that this patch will have to be updated before landing, but it will just be a mechanical rename change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338198</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 11:36:56 -0800</bug_when>
    <thetext>Committed r76372: &lt;http://trac.webkit.org/changeset/76372&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79664</attachid>
            <date>2011-01-20 16:25:07 -0800</date>
            <delta_ts>2011-01-21 09:07:34 -0800</delta_ts>
            <desc>Separate compositing state syncing from rendering in WKCACFLayerRenderer</desc>
            <filename>bug-52852-20110120192534.patch</filename>
            <type>text/plain</type>
            <size>20072</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzNWZiMzYzZTcxNjVjMTIwNzNlYzliYzA4NTU3NzEyODFkNDQ4YjJhLi5m
MTU4MmEyOTc2MTA2OWQ5OWRkMTIxMzE0MTliNmY1MWNjYzljYTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzkgQEAKKzIwMTEtMDEtMjAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgor
CisgICAgICAgIFNlcGFyYXRlIGNvbXBvc2l0aW5nIHN0YXRlIHN5bmNpbmcgZnJvbSByZW5kZXJp
bmcgaW4gV0tDQUNGTGF5ZXJSZW5kZXJlcgorCisgICAgICAgIE9sZCBtb2RlbDoKKyAgICAgICAg
ICAxKSBBIGNoYW5nZSBpcyBtYWRlIHRvIGEgR3JhcGhpY3NMYXllci4KKyAgICAgICAgICAyKSBX
S0NBQ0ZMYXllclJlbmRlcmVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZVNvb24gaXMgY2FsbGVkLCB3
aGljaCBzY2hlZHVsZXMgdGhlIHJlbmRlcgorICAgICAgICAgICAgIHRpbWVyLgorICAgICAgICAg
IDMpIFRoZSB0aW1lciBmaXJlcywgd2hpY2ggY2FsbHMgdGhyb3VnaCB0byBXS0NBQ0ZMYXllclJl
bmRlcmVyOjpyZW5kZXIsIHdoaWNoIHBlcmZvcm1zIHRoZQorICAgICAgICAgICAgIHN5bmMgYW5k
IHRoZW4gcmVuZGVycy4KKworICAgICAgICBOZXcgbW9kZWw6CisgICAgICAgICAgMSkgQSBjaGFu
Z2UgaXMgbWFkZSB0byBhIEdyYXBoaWNzTGF5ZXIuCisgICAgICAgICAgMikgV0tDQUNGTGF5ZXJS
ZW5kZXJlcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVTb29uIGlzIGNhbGxlZCwgd2hpY2ggdGVsbHMg
dGhlIG5ldworICAgICAgICAgICAgIENvbXBvc2l0aW5nU3RhdGVTeW5jZXIgc2luZ2xldG9uIHRo
YXQgdGhpcyByZW5kZXJlciBuZWVkcyB0byBiZSBzeW5jZWQuCisgICAgICAgICAgICAgQ29tcG9z
aXRpbmdTdGF0ZVN5bmNlciBzZXRzIHVwIGEgV2luZG93cyBob29rIHRoYXQgd2lsbCBnZXQgY2Fs
bGVkIG9uIHRoZSBuZXh0CisgICAgICAgICAgICAgaXRlcmF0aW9uIG9mIHRoZSBtZXNzYWdlIGxv
b3AuCisgICAgICAgICAgMykgQ29tcG9zaXRpbmdTdGF0ZVN5bmNlcidzIGhvb2sgaXMgY2FsbGVk
LCB3aGljaCBjYWxscyB0aHJvdWdoIHRvCisgICAgICAgICAgICAgV0tDQUNGTGF5ZXJSZW5kZXJl
cjo6c3luY0NvbXBvc2l0aW5nU3RhdGVOb3dJZk5lZWRlZC4KKworICAgICAgICBUaGlzIGNoYW5n
ZSBoYXMgdGhyZWUgYWR2YW50YWdlczoKKyAgICAgICAgICAxKSBTeW5jaW5nIGNvbXBvc2l0aW5n
IHN0YXRlIGNhbiBjYXVzZSB0aGUgcGFnZSB0byBsZWF2ZSBjb21wb3NpdGluZyBtb2RlLCB3aGlj
aCBpbiB0dXJuCisgICAgICAgICAgICAgY2FuIGNhdXNlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBX
S0NBQ0ZMYXllclJlbmRlcmVyIHRvIGJlIGRyb3BwZWQuIEJ5IHNlcGFyYXRpbmcKKyAgICAgICAg
ICAgICBzeW5jaW5nIGZyb20gcmVuZGVyaW5nLCB3ZSBubyBsb25nZXIgaGF2ZSB0byB3b3JyeSBh
Ym91dCB0aGlzIGhhcHBlbiBkdXJpbmcgcmVuZGVyaW5nLgorICAgICAgICAgIDIpIFRoZSBuZXcg
bW9kZWwgaXMgbXVjaCBtb3JlIHNpbWlsYXIgdG8gaG93IHRoaW5ncyB3b3JrIG9uIHRoZSBNYWMs
IHNvIHdpbGwgaG9wZWZ1bGx5CisgICAgICAgICAgICAgcmVkdWNlIHRoZSBudW1iZXIgb2YgcGxh
dGZvcm0tc3BlY2lmaWMgYnVncy4KKyAgICAgICAgICAzKSBXS0NBQ0ZMYXllclJlbmRlcmVyQ2xp
ZW50OjpzaG91bGRSZW5kZXIsIHdoaWNoIHdhcyB1c2VkIHRvIG1ha2Ugc3VyZSB3ZSBkaWRuJ3Qg
cmVuZGVyCisgICAgICAgICAgICAgd2hpbGUgYSBsYXlvdXQgd2FzIHBlbmRpbmcsIGlzIG5vIGxv
bmdlciBuZWVkZWQuIEl0IGFjdHVhbGx5IGhhc24ndCBiZWVuIG5lZWRlZCBzaW5jZQorICAgICAg
ICAgICAgIGF0IGxlYXN0IHI3NTk4NywgYnV0IHJlbW92aW5nIGl0IGJlZm9yZSBub3cgd291bGQg
aGF2ZSByZXN1bHRlZCBpbiBhIGNyYXNoIHdoZW5ldmVyIGEKKyAgICAgICAgICAgICBwYWdlIGNh
bWUgb3V0IG9mIGNvbXBvc2l0aW5nIG1vZGUgZHVlIHRvICgxKS4KKworICAgICAgICBGaXhlcyA8
aHR0cDovL3dlYmtpdC5vcmcvYi81Mjg1Mj4gU3luY2luZyBjb21wb3NpdGluZyBzdGF0ZSBhbmQg
cmVuZGVyaW5nIGFyZSBpbnRlcnR3aW5lZCBpbgorICAgICAgICBXS0NBQ0ZMYXllclJlbmRlcmVy
LCBidXQgc2hvdWxkbid0IGJlCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogQWRkZWQgQ29tcG9z
aXRpbmdTdGF0ZVN5bmNlci4KKworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmVRdWFy
dHpDb3JlLnZzcHJvcHM6IEFkZGVkIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbiB0byB0aGUgaW5j
bHVkZQorICAgICAgICBwYXRoLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0NvbXBvc2l0aW5nU3RhdGVTeW5jZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2l0aW5nU3RhdGVTeW5jZXI6OnNoYXJlZCk6IFJldHVybnMgdGhlIHNpbmdsZXRvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW5nU3RhdGVTeW5jZXI6OkNvbXBvc2l0aW5nU3RhdGVT
eW5jZXIpOiBJbml0aWFsaXplIG91ciBtZW1iZXJzLgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
aXRpbmdTdGF0ZVN5bmNlcjo6c3luY1JlbmRlcmVyU29vbik6IEFkZCB0aGUgcmVuZGVyZXIgdG8g
dGhlIHNldCBvZgorICAgICAgICByZW5kZXJlcnMgdGhhdCBuZWVkIHRvIGJlIHN5bmMsIGFuZCBz
ZXQgdXAgb3VyIGhvb2sgaWYgd2UgaGF2ZW4ndCBhbHJlYWR5LgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRpbmdTdGF0ZVN5bmNlcjo6Y2FuY2VsUGVuZGluZ1N5bmMpOiBSZW1vdmUgdGhlIHJl
bmRlcmVyIGZyb20gdGhlIHNldCBvZgorICAgICAgICByZW5kZXJlcnMgdGhhdCBuZWVkIHRvIGJl
IHN5bmNlZC4gSWYgd2UgaGF2ZSBubyBtb3JlIHJlbmRlcmVycywgcmVtb3ZlIG91ciBob29rLCB1
bmxlc3MKKyAgICAgICAgd2UncmUgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzIG9mIGNhbGxpbmcg
b3V0IHRvIG91ciByZW5kZXJlcnMsIGluIHdoaWNoIGNhc2Ugd2UnbGwgdGFrZQorICAgICAgICBj
YXJlIG9mIHRoZSBob29rIG9uY2Ugd2UncmUgZG9uZSBjYWxsaW5nIG91dC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbXBvc2l0aW5nU3RhdGVTeW5jZXI6Omhvb2tDYWxsYmFjayk6IFRoaXMgaXMgdGhl
IGZ1bmN0aW9uIHRoYXQgV2luZG93cyBjYWxscworICAgICAgICB3aGVuIG91ciBob29rIGZpcmVz
LiBKdXN0IGNhbGxzIHRocm91Z2ggdG8gaG9va0ZpcmVkIG9uIHRoZSBzaW5nbGV0b24uCisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGluZ1N0YXRlU3luY2VyOjpob29rRmlyZWQpOiBUZWxsIGFs
bCB0aGUgcmVuZGVyZXJzIHRoYXQgbmVlZGVkIHRvIGJlCisgICAgICAgIHN5bmNlZCB0aGF0IGl0
J3MgdGltZSB0byBzeW5jLiBJZiBubyByZW5kZXJlcnMgcmUtYWRkZWQgdGhlbXNlbHZlcyB0byBv
dXIgc2V0IGR1cmluZyB0aGlzCisgICAgICAgIHByb2Nlc3MsIHJlbW92ZSBvdXIgaG9vay4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW5nU3RhdGVTeW5jZXI6OnNldEhvb2spOiBDYWxscyB0
aHJvdWdoIHRvIDo6U2V0V2luZG93c0hvb2tFeFcuCisgICAgICAgIChXZWJDb3JlOjpDb21wb3Np
dGluZ1N0YXRlU3luY2VyOjpyZW1vdmVIb29rKTogQ2FsbHMgdGhyb3VnaCB0byA6OlVuaG9va1dp
bmRvd3NIb29rRXguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ29tcG9z
aXRpbmdTdGF0ZVN5bmNlci5oOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmNwcDogQWRkZWQgbmV3ICNpbmNsdWRlLCBzb3J0ZWQg
ZXhpc3RpbmcKKyAgICAgICAgI2luY2x1ZGVzLgorICAgICAgICAoV2ViQ29yZTo6V0tDQUNGTGF5
ZXJSZW5kZXJlcjo6ZGVzdHJveVJlbmRlcmVyKTogVGVsbCB0aGUgQ29tcG9zaXRpbmdTdGF0ZVN5
bmNlciB3ZSBubworICAgICAgICBsb25nZXIgbmVlZCB0byBiZSBzeW5jZWQuIEFsc28gZml4ZWQg
YSBidWcgd2hlcmUgd2Ugd2VyZW4ndCBjbGVhcmluZyBvdXQgdGhlIFdLQ0FDRkNvbnRleHQncwor
ICAgICAgICBsYXllci4KKyAgICAgICAgKFdlYkNvcmU6OldLQ0FDRkxheWVyUmVuZGVyZXI6OnN5
bmNDb21wb3NpdGluZ1N0YXRlTm93SWZOZWVkZWQpOiBBZGRlZC4gQ29kZSBjYW1lIGZyb20KKyAg
ICAgICAgcmVuZGVyKCkuIFN5bmNzIGNvbXBvc2l0aW5nIHN0YXRlIGFuZCBmbHVzaGVzIGl0IHRv
IHRoZSBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6V0tDQUNGTGF5ZXJSZW5kZXJlcjo6cmVu
ZGVyKTogUmVtb3ZlZCB0aGUgY2FsbCB0byBzaG91bGRSZW5kZXIoKSwgd2hpY2ggaXMgbm8KKyAg
ICAgICAgbG9uZ2VyIG5lZWRlZC4gUmVtb3ZlZCB0aGUgY29kZSB0byBzeW5jIGNvbXBvc2l0aW5n
IHN0YXRlIGFuZCBmbHVzaCB0aGUgY29udGV4dCwgd2hpY2ggaXMKKyAgICAgICAgbm93IGhhbmRs
ZWQgYnkgdGhlIENvbXBvc2l0aW5nU3RhdGVTeW5jZXIgbWVjaGFuaXNtLgorICAgICAgICAoV2Vi
Q29yZTo6V0tDQUNGTGF5ZXJSZW5kZXJlcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVTb29uKTogSW5z
dGVhZCBvZiBzZXR0aW5nIHRoZSByZW5kZXIKKyAgICAgICAgdGltZXIsIHRlbGwgdGhlIENvbXBv
c2l0aW5nU3RhdGVTeW5jZXIgdGhhdCB3ZSBuZWVkIHRvIGJlIHN5bmNlZC4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmg6IFJlbW92ZWQKKyAg
ICAgICAgV0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudDo6c2hvdWxkUmVuZGVyLgorCiAyMDExLTAx
LTE5ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgV0tD
QUNGQ29udGV4dEZsdXNoZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggNWMzMDY5OWY5Zjg5MzllYjBlYjI5NGMzNjRmMWFmYzA0ZmJjYTY1MC4u
ZTU2NmRmYTYyNGQ4ZGU4Y2UwYTJmNzQ3MjdhNzBhYzdlNWNhNTEyMiAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI4ODk1LDYgKzI4ODk1LDE0
IEBACiAJCQkJCQlOYW1lPSJ3aW4iCiAJCQkJCQk+CiAJCQkJCQk8RmlsZQorCQkJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2Fcd2luXENvbXBvc2l0aW5nU3RhdGVTeW5j
ZXIuY3BwIgorCQkJCQkJCT4KKwkJCQkJCTwvRmlsZT4KKwkJCQkJCTxGaWxlCisJCQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xjYVx3aW5cQ29tcG9zaXRpbmdTdGF0ZVN5
bmNlci5oIgorCQkJCQkJCT4KKwkJCQkJCTwvRmlsZT4KKwkJCQkJCTxGaWxlCiAJCQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xjYVx3aW5cUGxhdGZvcm1DQUFuaW1hdGlv
bldpbi5jcHAiCiAJCQkJCQkJPgogCQkJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZVF1YXJ0ekNvcmUudnNwcm9wcyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVRdWFydHpDb3JlLnZzcHJvcHMKaW5kZXggYTk4
NjZkOTAxM2VlMzcwY2JjNzk1ZjkxYWQyYjA3YmQ5YzA0NDY5MC4uNmM4OTA5MzAyN2QxMThiMGVl
NmU0NzEwNDk5MDhiNTBlNTA2YjkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZVF1YXJ0ekNvcmUudnNwcm9wcworKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlUXVhcnR6Q29yZS52c3Byb3BzCkBAIC02LDcgKzYsNyBAQAog
CT4KIAk8VG9vbAogCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQlBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPSImcXVvdDskKERYU0RLX0RJUilcSW5jbHVkZSZxdW90OyIKKwkJQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChEWFNES19ESVIpXEluY2x1ZGUmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxwbGF0Zm9ybVxncmFwaGljc1xjYVx3aW4mcXVvdDsiCiAJ
CVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJRVUFSVFpDT1JFX0RMTCIKIAkvPgogPC9WaXN1YWxT
dHVkaW9Qcm9wZXJ0eVNoZWV0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL0NvbXBvc2l0aW5nU3RhdGVTeW5jZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NvbXBvc2l0aW5nU3RhdGVTeW5jZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI4YmU3YmU5NWYyOGFjNDQ4OWY1MjRhNzZmYmVmNTQzNTVmZWU3YjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ29t
cG9zaXRpbmdTdGF0ZVN5bmNlci5jcHAKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkNvbXBvc2l0aW5nU3RhdGVTeW5jZXIuaCIKKworI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIldLQ0FDRkxheWVyUmVuZGVyZXIuaCIK
KyNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0NvbXBvc2l0aW5nU3RhdGVTeW5jZXImIENvbXBvc2l0aW5nU3RhdGVTeW5jZXI6OnNoYXJl
ZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb21wb3NpdGluZ1N0YXRlU3luY2VyLCBz
eW5jZXIsICgpKTsKKyAgICByZXR1cm4gc3luY2VyOworfQorCitDb21wb3NpdGluZ1N0YXRlU3lu
Y2VyOjpDb21wb3NpdGluZ1N0YXRlU3luY2VyKCkKKyAgICA6IG1faG9vaygwKQorICAgICwgbV9p
c0NhbGxpbmdSZW5kZXJlcnMoZmFsc2UpCit7Cit9CisKK3ZvaWQgQ29tcG9zaXRpbmdTdGF0ZVN5
bmNlcjo6c3luY1JlbmRlcmVyU29vbihXS0NBQ0ZMYXllclJlbmRlcmVyKiByZW5kZXJlcikKK3sK
KyAgICBpZiAoIW1fcmVuZGVyZXJzTmVlZGluZ1N5bmMuYWRkKHJlbmRlcmVyKS5zZWNvbmQgfHwg
bV9ob29rKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRIb29rKCk7Cit9CisKK3ZvaWQgQ29t
cG9zaXRpbmdTdGF0ZVN5bmNlcjo6Y2FuY2VsUGVuZGluZ1N5bmMoV0tDQUNGTGF5ZXJSZW5kZXJl
ciogcmVuZGVyZXIpCit7CisgICAgbV9yZW5kZXJlcnNOZWVkaW5nU3luYy5yZW1vdmUocmVuZGVy
ZXIpOworCisgICAgaWYgKCFtX3JlbmRlcmVyc05lZWRpbmdTeW5jLmlzRW1wdHkoKSB8fCAhbV9o
b29rKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXZSBoYW5kbGUgcmVtb3ZpbmcgdGhlIGhv
b2sgd2hlbiB3ZSBmaW5pc2ggY2FsbGluZyBvdXQgdG8gdGhlIHJlbmRlcmVycywgc28gd2Ugc2hv
dWxkbid0CisgICAgLy8gbWVzcyB3aXRoIGl0IHdoaWxlIHdlJ3JlIGluIHRoZSBwcm9jZXNzIG9m
IGNhbGxpbmcgdGhlbS4KKyAgICBpZiAobV9pc0NhbGxpbmdSZW5kZXJlcnMpCisgICAgICAgIHJl
dHVybjsKKworICAgIHJlbW92ZUhvb2soKTsKK30KKworTFJFU1VMVCBDb21wb3NpdGluZ1N0YXRl
U3luY2VyOjpob29rQ2FsbGJhY2soaW50IGNvZGUsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFy
YW0pCit7CisgICAgcmV0dXJuIHNoYXJlZCgpLmhvb2tGaXJlZChjb2RlLCB3UGFyYW0sIGxQYXJh
bSk7Cit9CisKK0xSRVNVTFQgQ29tcG9zaXRpbmdTdGF0ZVN5bmNlcjo6aG9va0ZpcmVkKGludCBj
b2RlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQoreworICAgIEFTU0VSVChtX2hvb2sp
OworCisgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIHJlbmRlcmVycyBjYW4gY2F1c2UgbV9yZW5k
ZXJlcnNOZWVkaW5nU3luYyB0byBiZSBtb2RpZmllZCwgc28gd2UgY29weSBpdAorICAgIC8vIGlu
dG8gYSBWZWN0b3IgZmlyc3QuIFdlIGhhdmUgdG8gaG9sZCBhIHJlZmVyZW5jZSB0byB0aGVtIGJl
Y2F1c2Ugb3RoZXJ3aXNlIHRoZXkgY291bGQgYmUKKyAgICAvLyBkZXN0cm95ZWQgd2hpbGUgd2Un
cmUgY2FsbGluZyBvdXQgdG8gdGhlbS4KKyAgICBWZWN0b3I8UmVmUHRyPFdLQ0FDRkxheWVyUmVu
ZGVyZXI+ID4gcmVuZGVyZXJzOworICAgIGNvcHlUb1ZlY3RvcihtX3JlbmRlcmVyc05lZWRpbmdT
eW5jLCByZW5kZXJlcnMpOworICAgIG1fcmVuZGVyZXJzTmVlZGluZ1N5bmMuY2xlYXIoKTsKKwor
ICAgIG1faXNDYWxsaW5nUmVuZGVyZXJzID0gdHJ1ZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJlbmRlcmVycy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVuZGVyZXJzW2ldLT5zeW5jQ29t
cG9zaXRpbmdTdGF0ZU5vd0lmTmVlZGVkKCk7CisgICAgbV9pc0NhbGxpbmdSZW5kZXJlcnMgPSBm
YWxzZTsKKworICAgIExSRVNVTFQgcmVzdWx0ID0gOjpDYWxsTmV4dEhvb2tFeChtX2hvb2ssIGNv
ZGUsIHdQYXJhbSwgbFBhcmFtKTsKKworICAgIGlmIChtX3JlbmRlcmVyc05lZWRpbmdTeW5jLmlz
RW1wdHkoKSkgeworICAgICAgICAvLyBXZSB3b24ndCBoYXZlIGFueSB3b3JrIHRvIGRvIG5leHQg
dGltZSBhcm91bmQsIHNvIGp1c3QgcmVtb3ZlIG91ciBob29rLgorICAgICAgICByZW1vdmVIb29r
KCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBDb21wb3NpdGluZ1N0
YXRlU3luY2VyOjpzZXRIb29rKCkKK3sKKyAgICBBU1NFUlQoIW1faG9vayk7CisgICAgQVNTRVJU
KCFtX2lzQ2FsbGluZ1JlbmRlcmVycyk7CisKKyAgICBEV09SRCB0aHJlYWRJRCA9IDo6R2V0Q3Vy
cmVudFRocmVhZElkKCk7CisKKyAgICBtX2hvb2sgPSA6OlNldFdpbmRvd3NIb29rRXhXKFdIX0dF
VE1FU1NBR0UsIGhvb2tDYWxsYmFjaywgaW5zdGFuY2VIYW5kbGUoKSwgdGhyZWFkSUQpOworICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobV9ob29rLCAiOjpTZXRXaW5kb3dzSG9va0V4VyBmYWlsZWQg
d2l0aCBlcnJvciAlbHUiLCA6OkdldExhc3RFcnJvcigpKTsKKworICAgIC8vIFBvc3QgYSBtZXNz
YWdlIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIHRvIHByZXZlbnQgOjpHZXRNZXNzYWdlIGZyb20gYmxv
Y2tpbmcsIHdoaWNoIHdpbGwgZW5zdXJlCisgICAgLy8gb3VyIGhvb2sgaXMgY2FsbGVkIHNvb24u
CisgICAgOjpQb3N0VGhyZWFkTWVzc2FnZVcodGhyZWFkSUQsIFdNX05VTEwsIDAsIDApOworfQor
Cit2b2lkIENvbXBvc2l0aW5nU3RhdGVTeW5jZXI6OnJlbW92ZUhvb2soKQoreworICAgIEFTU0VS
VChtX2hvb2spOworICAgIEFTU0VSVCghbV9pc0NhbGxpbmdSZW5kZXJlcnMpOworCisgICAgaWYg
KCE6OlVuaG9va1dpbmRvd3NIb29rRXgobV9ob29rKSkKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShmYWxzZSwgIjo6VW5ob29rV2luZG93c0hvb2tFeCBmYWlsZWQgd2l0aCBlcnJvciAlbHUi
LCA6OkdldExhc3RFcnJvcigpKTsKKworICAgIG1faG9vayA9IDA7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Db21wb3Np
dGluZ1N0YXRlU3luY2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vQ29tcG9zaXRpbmdTdGF0ZVN5bmNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkOGM4ZDQzOGM0ZjliZDZk
Njc0NjU5M2UyZDNhY2EwYTFiYzU4MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ29tcG9zaXRpbmdTdGF0ZVN5bmNlci5oCkBAIC0w
LDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBDb21wb3NpdGluZ1N0YXRlU3luY2VyX2gKKyNkZWZpbmUgQ29t
cG9zaXRpbmdTdGF0ZVN5bmNlcl9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBX
S0NBQ0ZMYXllclJlbmRlcmVyOworCitjbGFzcyBDb21wb3NpdGluZ1N0YXRlU3luY2VyIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb21wb3NpdGluZ1N0YXRlU3luY2VyKTsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgQ29tcG9zaXRpbmdTdGF0ZVN5bmNlciYgc2hhcmVkKCk7CisKKyAgICB2b2lk
IHN5bmNSZW5kZXJlclNvb24oV0tDQUNGTGF5ZXJSZW5kZXJlciopOworICAgIHZvaWQgY2FuY2Vs
UGVuZGluZ1N5bmMoV0tDQUNGTGF5ZXJSZW5kZXJlciopOworCitwcml2YXRlOgorICAgIENvbXBv
c2l0aW5nU3RhdGVTeW5jZXIoKTsKKyAgICB+Q29tcG9zaXRpbmdTdGF0ZVN5bmNlcigpOworCisg
ICAgc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgaG9va0NhbGxiYWNrKGludCBjb2RlLCBXUEFSQU0s
IExQQVJBTSk7CisgICAgTFJFU1VMVCBob29rRmlyZWQoaW50IGNvZGUsIFdQQVJBTSwgTFBBUkFN
KTsKKyAgICB2b2lkIHNldEhvb2soKTsKKyAgICB2b2lkIHJlbW92ZUhvb2soKTsKKworICAgIEhh
c2hTZXQ8V0tDQUNGTGF5ZXJSZW5kZXJlcio+IG1fcmVuZGVyZXJzTmVlZGluZ1N5bmM7CisgICAg
SEhPT0sgbV9ob29rOworICAgIGJvb2wgbV9pc0NhbGxpbmdSZW5kZXJlcnM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisKKyNlbmRpZiAvLyBDb21wb3NpdGluZ1N0YXRlU3luY2VyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJlbmRl
cmVyLmNwcAppbmRleCA3NDE3MmQ2Zjc4YTI4OWMyNjQ1YzBkNjljMTNkNWFhZmI5ZmM4MTY5Li43
ZjMwYTU3NjE3MWVhODAzYjM3N2M5ZjkzOTVhMjgyOTY1YjAyODU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVu
ZGVyZXIuY3BwCkBAIC0yNCwxNSArMjQsMTEgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV0tDQUNGTGF5ZXJSZW5kZXJlci5oIgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogCi0jaWZuZGVmIE5ERUJVRwotI2RlZmluZSBEM0RfREVCVUdfSU5GTwot
I2VuZGlmCi0KLSNpbmNsdWRlICJXS0NBQ0ZMYXllclJlbmRlcmVyLmgiCi0KKyNpbmNsdWRlICJD
b21wb3NpdGluZ1N0YXRlU3luY2VyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgpAQCAtNDMsNiArMzksMTEgQEAKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZm5kZWYgTkRFQlVHCisjZGVmaW5lIEQzRF9E
RUJVR19JTkZPCisjZW5kaWYKKwogI2luY2x1ZGUgPGQzZDkuaD4KICNpbmNsdWRlIDxkM2R4OS5o
PgogCkBAIC0zMzcsNyArMzM4LDkgQEAgYm9vbCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpjcmVhdGVS
ZW5kZXJlcigpCiAKIHZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6ZGVzdHJveVJlbmRlcmVyKCkK
IHsKLSAgICB3a0NBQ0ZDb250ZXh0U2V0TGF5ZXIobV9jb250ZXh0LCBtX3Jvb3RMYXllci0+cGxh
dGZvcm1MYXllcigpKTsKKyAgICBDb21wb3NpdGluZ1N0YXRlU3luY2VyOjpzaGFyZWQoKS5jYW5j
ZWxQZW5kaW5nU3luYyh0aGlzKTsKKworICAgIHdrQ0FDRkNvbnRleHRTZXRMYXllcihtX2NvbnRl
eHQsIDApOwogCiAgICAgd2tDQUNGQ29udGV4dFNldEQzRERldmljZShtX2NvbnRleHQsIDApOwog
ICAgIG1fZDNkRGV2aWNlID0gMDsKQEAgLTQxNSw2ICs0MTgsMjUgQEAgdm9pZCBXS0NBQ0ZMYXll
clJlbmRlcmVyOjpwYWludCgpCiAgICAgcmVuZGVyKGRpcnR5UmVjdHMpOwogfQogCit2b2lkIFdL
Q0FDRkxheWVyUmVuZGVyZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlTm93SWZOZWVkZWQoKQorewor
ICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9zeW5jTGF5
ZXJDaGFuZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N5bmNMYXllckNoYW5nZXMgPSBm
YWxzZTsKKworICAgIC8vIENhbGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgY291bGQgY2F1c2Ugb3Vy
IGxhc3QgcmVmZXJlbmNlIHRvIGdvIGF3YXkuCisgICAgUmVmUHRyPFdLQ0FDRkxheWVyUmVuZGVy
ZXI+IHByb3RlY3Rvcih0aGlzKTsKKworICAgIG1fY2xpZW50LT5zeW5jQ29tcG9zaXRpbmdTdGF0
ZSgpOworCisgICAgLy8gRmx1c2ggdGhlIHJvb3QgbGF5ZXIgdG8gdGhlIHJlbmRlciB0cmVlLgor
ICAgIHdrQ0FDRkNvbnRleHRGbHVzaChtX2NvbnRleHQpOworfQorCiB2b2lkIFdLQ0FDRkxheWVy
UmVuZGVyZXI6OnJlbmRlcihjb25zdCBWZWN0b3I8Q0dSZWN0PiYgd2luZG93RGlydHlSZWN0cykK
IHsKICAgICBBU1NFUlQobV9kM2REZXZpY2UpOwpAQCAtNDI1LDIwICs0NDcsNiBAQCB2b2lkIFdL
Q0FDRkxheWVyUmVuZGVyZXI6OnJlbmRlcihjb25zdCBWZWN0b3I8Q0dSZWN0PiYgd2luZG93RGly
dHlSZWN0cykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX2NsaWVudCAmJiAh
bV9jbGllbnQtPnNob3VsZFJlbmRlcigpKSB7Ci0gICAgICAgIHJlbmRlclNvb24oKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN5bmMgdGhlIGxheWVyIGlmIG5lZWRlZAotICAg
IGlmIChtX3N5bmNMYXllckNoYW5nZXMpIHsKLSAgICAgICAgbV9jbGllbnQtPnN5bmNDb21wb3Np
dGluZ1N0YXRlKCk7Ci0gICAgICAgIG1fc3luY0xheWVyQ2hhbmdlcyA9IGZhbHNlOwotICAgIH0K
LQotICAgIC8vIEZsdXNoIHRoZSByb290IGxheWVyIHRvIHRoZSByZW5kZXIgdHJlZS4KLSAgICB3
a0NBQ0ZDb250ZXh0Rmx1c2gobV9jb250ZXh0KTsKLQogICAgIC8vIEFsbCBwZW5kaW5nIGFuaW1h
dGlvbnMgd2lsbCBoYXZlIGJlZW4gc3RhcnRlZCB3aXRoIHRoZSBmbHVzaC4gRmlyZSB0aGUgYW5p
bWF0aW9uU3RhcnRlZCBjYWxscwogICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdURjo6Y3VycmVu
dFRpbWUoKTsKICAgICBkb3VibGUgY3VycmVudE1lZGlhVGltZSA9IENBQ3VycmVudE1lZGlhVGlt
ZSgpOwpAQCAtNTI2LDggKzUzNCwxMSBAQCB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnJlbmRl
clNvb24oKQogCiB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRl
U29vbigpCiB7CisgICAgaWYgKG1fc3luY0xheWVyQ2hhbmdlcykKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgbV9zeW5jTGF5ZXJDaGFuZ2VzID0gdHJ1ZTsKLSAgICByZW5kZXJTb29uKCk7CisgICAg
Q29tcG9zaXRpbmdTdGF0ZVN5bmNlcjo6c2hhcmVkKCkuc3luY1JlbmRlcmVyU29vbih0aGlzKTsK
IH0KIAogQ0dSZWN0IFdLQ0FDRkxheWVyUmVuZGVyZXI6OmJvdW5kcygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5k
ZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVy
UmVuZGVyZXIuaAppbmRleCA1MzA4NjI1ZGZhY2Y5NjAwMmZlZDRlNmE5MWYzZmJhODI0NTZhYWU0
Li5kMzVmM2Y1NGEwMjFhNGQzY2YyODhmYTQ0OWI1ZDBkNmJlOTBhNGFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJl
bmRlcmVyLmgKQEAgLTUyLDcgKzUyLDYgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogY2xhc3Mg
V0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V0tDQUNG
TGF5ZXJSZW5kZXJlckNsaWVudCgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZW5kZXIo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKCkgeyB9
CiB9OwogCkBAIC03Niw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50KCk7CiAgICAg
dm9pZCByZXNpemUoKTsKICAgICB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlU29vbigpOworICAg
IHZvaWQgc3luY0NvbXBvc2l0aW5nU3RhdGVOb3dJZk5lZWRlZCgpOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgUGxhdGZvcm1DQUxheWVyKiByb290TGF5ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRl
eCA4ZjMyZTc3NDczNThmNWIwNWE4ZjAxMTAyYTE4NDdlYjIzOWVkMjg2Li4yYWZhZjk3ZmEwYWVm
MThiYmNkYjdhYjU4MmQyMDYzY2YxMjIyMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTEtMDEtMjAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFVwZGF0ZSBmb3IgV0tDQUNGTGF5ZXJSZW5kZXJlciBjaGFuZ2VzCisKKyAgICAgICAgRml4
ZXMgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTI4NTI+IFN5bmNpbmcgY29tcG9zaXRpbmcgc3RhdGUg
YW5kIHJlbmRlcmluZyBhcmUgaW50ZXJ0d2luZWQgaW4KKyAgICAgICAgV0tDQUNGTGF5ZXJSZW5k
ZXJlciwgYnV0IHNob3VsZG4ndCBiZQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpwYWludCk6
IENoYW5nZWQgdG8gc3luYyBjb21wb3NpdGluZyBzdGF0ZSB2aWEgV0tDQUNGTGF5ZXJSZW5kZXJl
ciwgd2hpY2ggd2lsbCBjYWxsCisgICAgICAgIGJhY2sgdG8gb3VyIG93biBzeW5jaW5nIGZ1bmN0
aW9uIGlmIG5lZWRlZC4KKworICAgICAgICAqIFdlYlZpZXcuaDogUmVtb3ZlZCBzaG91bGRSZW5k
ZXIsIHdoaWNoIGlzIG5vIGxvbmdlciB1c2VkIG9yIG5lZWRlZC4KKwogMjAxMS0wMS0xOSAgQWRh
bSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIGZvciBXS0NBQ0ZM
YXllclJlbmRlcmVyIGNoYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggOWRmZmY4M2IzOWI4
ZmRjOTExOTVjNDRjMjE4MmYwODU2YjRlYWE0Mi4uMDI3NzQ2ZjdlODRhODY0MjEwODg1NDMwNmM3
ZWVkNzYxNzA5M2NmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTk5MCw3ICs5OTAsNyBAQCB2
b2lkIFdlYlZpZXc6OnBhaW50KEhEQyBkYywgTFBBUkFNIG9wdGlvbnMpCiAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygp
KSB7Ci0gICAgICAgIHN5bmNDb21wb3NpdGluZ1N0YXRlKCk7CisgICAgICAgIG1fbGF5ZXJSZW5k
ZXJlci0+c3luY0NvbXBvc2l0aW5nU3RhdGVOb3dJZk5lZWRlZCgpOwogICAgICAgICAvLyBTeW5j
aW5nIG1pZ2h0IGhhdmUgdGFrZW4gdXMgb3V0IG9mIGNvbXBvc2l0aW5nIG1vZGUuCiAgICAgICAg
IGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6
IFdlIG5lZWQgdG8gcGFpbnQgaW50byBkYyAoaWYgcHJvdmlkZWQpLiA8aHR0cDovL3dlYmtpdC5v
cmcvYi81MjU3OD4KQEAgLTY1MDUsMTggKzY1MDUsNiBAQCBib29sIFdlYlZpZXc6OnNob3dSZXBh
aW50Q291bnRlcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2hvd1Jl
cGFpbnRDb3VudGVyKCk7CiB9CiAKLWJvb2wgV2ViVmlldzo6c2hvdWxkUmVuZGVyKCkgY29uc3QK
LXsKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX21haW5GcmFtZSk7Ci0gICAgaWYgKCFj
b3JlRnJhbWUpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gY29yZUZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgcmV0dXJuICFmcmFtZVZpZXctPmxheW91dFBlbmRpbmcoKTsKLX0KLQog
dm9pZCBXZWJWaWV3OjpzeW5jQ29tcG9zaXRpbmdTdGF0ZSgpCiB7CiAgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUobV9tYWluRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCmluZGV4IDE5NDMzYzI1ZGMw
YjFjZWFiNjU2YjdmNWRjNGNiOTQ0YTJmZWJjODguLjUyNjhmZWEzYzhmYjQyMjUyMTRiYjk2NTdl
NTlhNzY4NmRmNjc2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKQEAgLTk0OCw3ICs5NDgsNiBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIoKSBjb25zdDsKIAogICAg
IC8vIFdLQ0FDRkxheWVyUmVuZGVyZXJDbGllbnQKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVu
ZGVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKCk7CiAj
ZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79744</attachid>
            <date>2011-01-21 09:07:40 -0800</date>
            <delta_ts>2011-01-21 10:30:35 -0800</delta_ts>
            <desc>Separate flushing layer changes from rendering in CACFLayerView</desc>
            <filename>bug-52852-20110121120835.patch</filename>
            <type>text/plain</type>
            <size>23007</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNWFjYjljODExM2ZjZDdmYTEyODVkZDJmOTI1MTUzZmMzMmFiYTc5Li5j
NmExNTA0M2FlNzRhNjA3NGRmYTFkNjhiMjFmNGZhOTc1ZGU4OTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMTAwIEBACiAyMDExLTAxLTIxICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4K
IAorICAgICAgICBTZXBhcmF0ZSBmbHVzaGluZyBsYXllciBjaGFuZ2VzIGZyb20gcmVuZGVyaW5n
IGluIENBQ0ZMYXllclZpZXcKKworICAgICAgICBPbGQgbW9kZWw6CisgICAgICAgICAgMSkgQSBj
aGFuZ2UgaXMgbWFkZSB0byBhIEdyYXBoaWNzTGF5ZXIuCisgICAgICAgICAgMikgQ0FDRkxheWVy
Vmlldzo6Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uIGlzIGNhbGxlZCwgd2hp
Y2ggc2NoZWR1bGVzIHRoZQorICAgICAgICAgICAgIHJlbmRlciB0aW1lci4KKyAgICAgICAgICAz
KSBUaGUgdGltZXIgZmlyZXMsIHdoaWNoIGNhbGxzIHRocm91Z2ggdG8gQ0FDRkxheWVyVmlldzo6
cmVuZGVyLCB3aGljaCBwZXJmb3JtcyB0aGUKKyAgICAgICAgICAgICBmbHVzaCBhbmQgdGhlbiBy
ZW5kZXJzLgorCisgICAgICAgIE5ldyBtb2RlbDoKKyAgICAgICAgICAxKSBBIGNoYW5nZSBpcyBt
YWRlIHRvIGEgR3JhcGhpY3NMYXllci4KKyAgICAgICAgICAyKSBDQUNGTGF5ZXJWaWV3OjpmbHVz
aFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlc1Nvb24gaXMgY2FsbGVkLCB3aGljaCB0ZWxscyB0
aGUgbmV3CisgICAgICAgICAgICAgTGF5ZXJDaGFuZ2VzRmx1c2hlciBzaW5nbGV0b24gdGhhdCB0
aGlzIHZpZXcgaGFzIGNoYW5nZXMgdGhhdCBuZWVkIHRvIGJlIGZsdXNoZWQuCisgICAgICAgICAg
MykgTGF5ZXJDaGFuZ2VzRmx1c2hlciBzZXRzIHVwIGEgV2luZG93cyBob29rIHRoYXQgd2lsbCBn
ZXQgY2FsbGVkIG9uIHRoZSBuZXh0IGl0ZXJhdGlvbgorICAgICAgICAgICAgIG9mIHRoZSBtZXNz
YWdlIGxvb3AuCisgICAgICAgICAgNCkgTGF5ZXJDaGFuZ2VzRmx1c2hlcidzIGhvb2sgaXMgY2Fs
bGVkLCB3aGljaCBjYWxscyB0aHJvdWdoIHRvCisgICAgICAgICAgICAgQ0FDRkxheWVyVmlldzo6
Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93LgorICAgICAgICAgIDUpIENBQ0ZMYXllclZpZXc6
OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc05vdyBzY2hlZHVsZXMgdGhlIHJlbmRlciB0aW1lciBz
byB0aGUgY2hhbmdlcworICAgICAgICAgICAgIHRoYXQgd2VyZSBqdXN0IGZsdXNoZWQgdG8gdGhl
IGNvbnRleHQgd2lsbCBiZSByZW5kZXJlZC4KKworICAgICAgICBXaGVuIGEgY2hhbmdlIGlzIG1h
ZGUgdG8gYSBQbGF0Zm9ybUNBTGF5ZXIgdGhhdCBkb2Vzbid0IGhhdmUgYSBjb3JyZXNwb25kaW5n
IEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgKGUuZy4sIGZvciByZW5kZXJpbmcgPHZpZGVvPiksIENB
Q0ZMYXllclZpZXc6OmxheWVyVHJlZURpZENoYW5nZSB0YWtlcyBjYXJlIG9mIHNjaGVkdWxpbmcK
KyAgICAgICAgdGhlIGZsdXNoLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGhhcyB0aHJlZSBhZHZh
bnRhZ2VzOgorICAgICAgICAgIDEpIFdoZW5ldmVyIHdlIGZsdXNoIGxheWVyIGNoYW5nZXMsIHdl
IGZpcnN0IHVwZGF0ZSBsYXlvdXQuIFRoaXMgY2FuIGNhdXNlIHRoZSBwYWdlIHRvCisgICAgICAg
ICAgICAgbGVhdmUgY29tcG9zaXRpbmcgbW9kZSwgd2hpY2ggaW4gdHVybiBjYW4gY2F1c2UgYWxs
IHJlZmVyZW5jZXMgdG8gdGhlIENBQ0ZMYXllclZpZXcgdG8KKyAgICAgICAgICAgICBiZSBkcm9w
cGVkLiBCeSBzZXBhcmF0aW5nIGZsdXNoaW5nIChhbmQgdGh1cyB1cGRhdGluZyBsYXlvdXQpIGZy
b20gcmVuZGVyaW5nLCB3ZSBubworICAgICAgICAgICAgIGxvbmdlciBoYXZlIHRvIHdvcnJ5IGFi
b3V0IHRoaXMgaGFwcGVuIGR1cmluZyByZW5kZXJpbmcuCisgICAgICAgICAgMikgVGhlIG5ldyBt
b2RlbCBpcyBtdWNoIG1vcmUgc2ltaWxhciB0byBob3cgdGhpbmdzIHdvcmsgb24gdGhlIE1hYywg
c28gd2lsbCBob3BlZnVsbHkKKyAgICAgICAgICAgICByZWR1Y2UgdGhlIG51bWJlciBvZiBwbGF0
Zm9ybS1zcGVjaWZpYyBidWdzLgorICAgICAgICAgIDMpIENBQ0ZMYXllclZpZXdDbGllbnQ6OnNo
b3VsZFJlbmRlciwgd2hpY2ggd2FzIHVzZWQgdG8gbWFrZSBzdXJlIHdlIGRpZG4ndCByZW5kZXIg
d2hpbGUgYQorICAgICAgICAgICAgIGxheW91dCB3YXMgcGVuZGluZywgaXMgbm8gbG9uZ2VyIG5l
ZWRlZC4gSXQgYWN0dWFsbHkgaGFzbid0IGJlZW4gbmVlZGVkIHNpbmNlIGF0IGxlYXN0CisgICAg
ICAgICAgICAgcjc1OTg3LCBidXQgcmVtb3ZpbmcgaXQgYmVmb3JlIG5vdyB3b3VsZCBoYXZlIHJl
c3VsdGVkIGluIGEgY3Jhc2ggd2hlbmV2ZXIgYSBwYWdlIGNhbWUKKyAgICAgICAgICAgICBvdXQg
b2YgY29tcG9zaXRpbmcgbW9kZSBkdWUgdG8gKDEpLgorCisgICAgICAgIEZpeGVzIDxodHRwOi8v
d2Via2l0Lm9yZy9iLzUyODUyPiBGbHVzaGluZyBsYXllciBjaGFuZ2VzIGFuZCByZW5kZXJpbmcg
YXJlIGludGVydHdpbmVkIGluCisgICAgICAgIENBQ0ZMYXllclZpZXcsIGJ1dCBzaG91bGRuJ3Qg
YmUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBBZGRlZCBMYXllckNoYW5nZXNGbHVzaGVyLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclZpZXcuY3BwOiBB
ZGRlZCBuZXcgI2luY2x1ZGUsIHNvcnRlZCBleGlzdGluZworICAgICAgICAjaW5jbHVkZXMuCisg
ICAgICAgIChXZWJDb3JlOjpDQUNGTGF5ZXJWaWV3OjpDQUNGTGF5ZXJWaWV3KTogSW5pdGlhbGl6
ZSBuZXcgbWVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVmlldzo6bGF5ZXJUcmVl
RGlkQ2hhbmdlKTogSWYgd2UgYXJlbid0IGFscmVhZHkgZmx1c2hpbmcgY2hhbmdlcywKKyAgICAg
ICAgc2NoZWR1bGUgYSBmbHVzaC4gUmVtb3ZlZCB0aGUgY2FsbCB0byByZW5kZXJTb29uKCksIHdo
aWNoIG5vdyBoYXBwZW5zIHdoZW4gdGhlIGZsdXNoIGlzCisgICAgICAgIGZpbmlzaGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVmlldzo6ZGVzdHJveVJlbmRlcmVyKTogQ2FuY2VsIGFu
eSBwZW5kaW5nIGZsdXNoIHdlIGhhZCBzY2hlZHVsZWQuIEFsc28KKyAgICAgICAgZml4ZWQgYSBi
dWcgd2hlcmUgd2UnZCBmYWlsIHRvIGNsZWFyIHRoZSBjb250ZXh0J3MgbGF5ZXIuCisgICAgICAg
IChXZWJDb3JlOjpDQUNGTGF5ZXJWaWV3OjpyZW5kZXIpOiBSZW1vdmVkIGNvZGUgdG8gYXNrIHRo
ZSBjbGllbnQgaWYgd2Ugc2hvdWxkIHJlbmRlciwgd2hpY2gKKyAgICAgICAgaXMgbm8gbG9uZ2Vy
IG5lZWRlZC4gTW92ZWQgY29kZSB0byBmbHVzaCBsYXllciBjaGFuZ2VzIGZyb20gaGVyZSB0bwor
ICAgICAgICBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNOb3csIHdoaWNoIGlzIGNhbGxlZCB2aWEg
dGhlIGFib3ZlLWRlc2NyaWJlZCBtZWNoYW5pc20uCisgICAgICAgIChXZWJDb3JlOjpDQUNGTGF5
ZXJWaWV3OjpmbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlc1Nvb24pOiBTY2hlZHVsZSBh
IGZsdXNoLiBSZW1vdmVkCisgICAgICAgIGNvZGUgdG8gc2NoZWR1bGUgYSByZW5kZXIsIHdoaWNo
IG5vdyBoYXBwZW5zIGFmdGVyIHdlJ3ZlIGZsdXNoZWQuCisgICAgICAgIChXZWJDb3JlOjpDQUNG
TGF5ZXJWaWV3OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNOb3cpOiBBZGRlZC4gU29tZSBvZiB0
aGlzIGNvZGUgY2FtZSBmcm9tCisgICAgICAgIHJlbmRlcigpLiBGaXJzdCB3ZSBmbHVzaCBHcmFw
aGljc0xheWVyIGNoYW5nZXMgZnJvbSBHcmFwaGljc0xheWVycyB0byB0aGVpciB1bmRlcmx5aW5n
CisgICAgICAgIFBsYXRmb3JtQ0FMYXllcnMsIHRoZW4gd2UgZmx1c2ggY2hhbmdlcyBmcm9tIFBs
YXRmb3JtQ0FMYXllcnMgdG8gdGhlIGNvbnRleHQsIHRoZW4gd2UKKyAgICAgICAgc2NoZWR1bGUg
YSByZW5kZXIgc28gdGhhdCB0aGUgY2hhbmdlcyB3aWxsIGJlIHJlbmRlcmVkIHRvIHRoZSBzY3Jl
ZW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVmlldy5o
OiBSZW1vdmVkIENBQ0ZMYXllclZpZXdDbGllbnQ6OnNob3VsZFJlbmRlci4gQWRkZWQKKyAgICAg
ICAgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93IGFuZCBtX2lzRmx1c2hpbmdMYXllckNoYW5n
ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1
c2hlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaGFuZ2VzRmx1c2hlcjo6
c2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hhbmdlc0ZsdXNoZXI6OkxheWVyQ2hh
bmdlc0ZsdXNoZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaGFuZ2VzRmx1c2hlcjo6Zmx1
c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzU29vbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNoYW5n
ZXNGbHVzaGVyOjpjYW5jZWxQZW5kaW5nRmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
aGFuZ2VzRmx1c2hlcjo6aG9va0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hh
bmdlc0ZsdXNoZXI6Omhvb2tGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNoYW5nZXNG
bHVzaGVyOjpzZXRIb29rKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hhbmdlc0ZsdXNoZXI6
OnJlbW92ZUhvb2spOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVy
Q2hhbmdlc0ZsdXNoZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hhbmdl
c0ZsdXNoZXI6OnNoYXJlZCk6IFJldHVybnMgdGhlIHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyQ2hhbmdlc0ZsdXNoZXI6OkxheWVyQ2hhbmdlc0ZsdXNoZXIpOiBJbml0aWFsaXpl
IG91ciBtZW1iZXJzLgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaGFuZ2VzRmx1c2hlcjo6Zmx1
c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzU29vbik6IEFkZCB0aGUgdmlldyB0byB0aGUgc2V0IG9mCisg
ICAgICAgIHZpZXdzIHdpdGggY2hhbmdlcyB0aGF0IG5lZWQgdG8gYmUgZmx1c2hlZCwgYW5kIHNl
dCB1cCBvdXIgaG9vayBpZiB3ZSBoYXZlbid0IGFscmVhZHkuCisgICAgICAgIChXZWJDb3JlOjpM
YXllckNoYW5nZXNGbHVzaGVyOjpjYW5jZWxQZW5kaW5nRmx1c2gpOiBSZW1vdmUgdGhlIHZpZXcg
ZnJvbSB0aGUgc2V0IG9mIHZpZXdzCisgICAgICAgIHdpdGggY2hhbmdlcyB0aGF0IG5lZWQgdG8g
YmUgZmx1c2hlZC4gSWYgd2UgaGF2ZSBubyBtb3JlIHN1Y2ggdmlld3MsIHJlbW92ZSBvdXIgaG9v
aywgdW5sZXNzCisgICAgICAgIHdlJ3JlIGN1cnJlbnRseSBpbiB0aGUgcHJvY2VzcyBvZiBjYWxs
aW5nIG91dCB0byBvdXIgdmlld3MsIGluIHdoaWNoIGNhc2Ugd2UnbGwgdGFrZSBjYXJlIG9mCisg
ICAgICAgIHRoZSBob29rIG9uY2Ugd2UncmUgZG9uZSBjYWxsaW5nIG91dC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ2hhbmdlc0ZsdXNoZXI6Omhvb2tDYWxsYmFjayk6IFRoaXMgaXMgdGhlIGZ1
bmN0aW9uIHRoYXQgV2luZG93cyBjYWxscyB3aGVuCisgICAgICAgIG91ciBob29rIGZpcmVzLiBK
dXN0IGNhbGxzIHRocm91Z2ggdG8gaG9va0ZpcmVkIG9uIHRoZSBzaW5nbGV0b24uCisgICAgICAg
IChXZWJDb3JlOjpMYXllckNoYW5nZXNGbHVzaGVyOjpob29rRmlyZWQpOiBUZWxsIGFsbCB0aGUg
dmlld3Mgd2l0aCBjaGFuZ2VzIHRoYXQgbmVlZGVkIHRvIGJlCisgICAgICAgIGZsdXNoZWQgdGhh
dCBpdCdzIHRpbWUgdG8gZmx1c2guIElmIG5vIHZpZXdzIHJlLWFkZGVkIHRoZW1zZWx2ZXMgdG8g
b3VyIHNldCBkdXJpbmcgdGhpcworICAgICAgICBwcm9jZXNzLCByZW1vdmUgb3VyIGhvb2suCisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNoYW5nZXNGbHVzaGVyOjpzZXRIb29rKTogQ2FsbHMgdGhy
b3VnaCB0byA6OlNldFdpbmRvd3NIb29rRXhXLgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaGFu
Z2VzRmx1c2hlcjo6cmVtb3ZlSG9vayk6IENhbGxzIHRocm91Z2ggdG8gOjpVbmhvb2tXaW5kb3dz
SG9va0V4LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdl
c0ZsdXNoZXIuaDogQWRkZWQuCisKKzIwMTEtMDEtMjEgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBw
bGUuY29tPgorCiAgICAgICAgIFJlbmFtZSBXS0NBQ0ZMYXllclJlbmRlcmVyW0NsaWVudF0gdG8g
Q0FDRkxheWVyVmlld1tDbGllbnRdCiAKICAgICAgICAgQWxzbyByZW5hbWVkIGEgZmV3IGZ1bmN0
aW9ucyBhbmQgZGF0YSBtZW1iZXJzIHRvIG1hdGNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjZGNkZmZhODFlNjJkODE5YmE0NjM2MTllNGZh
YjNjNDZkZTUwZWU0Li4zNzMwMDUwYTU1YWE2YTZhYTMyZGIyZGUwODUwZWEzY2ZkYjY2OTI3IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjg4
OTUsNiArMjg4OTUsNDYgQEAKIAkJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCQkJPC9G
aWxlPgogCQkJCQkJPEZpbGUKKwkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGNhXHdpblxMYXllckNoYW5nZXNGbHVzaGVyLmNwcCIKKwkJCQkJCQk+CisJCQkJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
KwkJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJCT4KKwkJCQkJCQkJPFRv
b2wKKwkJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJCS8+CisJCQkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQkJ
TmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQkJCQk+CisJCQkJCQkJCTxUb29sCisJCQkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkJCQkvPgorCQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJCQk8L0ZpbGU+CisJCQkJCQk8RmlsZQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcY2Fcd2luXExheWVyQ2hhbmdlc0ZsdXNoZXIuaCIKKwkJCQkJCQk+CisJCQkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxX
aW4zMiIKKwkJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJCT4KKwkJCQkJ
CQkJPFRvb2wKKwkJCQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCQkJCQkvPgor
CQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCQkJPgorCQkJCQkJCQk8VG9vbAorCQkJCQkJCQkJTmFt
ZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkJCQkJCS8+CisJCQkJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQkJCTwvRmlsZT4KKwkJCQkJCTxGaWxlCiAJCQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xjYVx3aW5cUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAiCiAJ
CQkJCQkJPgogCQkJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclZpZXcuY3BwCmluZGV4IDQ2OGI5N2U1NzNk
MTdiMTAzOGE4YmM4ZWI0NDg4ZDM3NWY0MTZiNzQuLjYyZDkyOTQyN2ZmMzcxYThkOTA1YjFmN2Yx
YjQxYjVkODBkMjY4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9DQUNGTGF5ZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVmlldy5jcHAKQEAgLTI0LDE1ICsyNCwxMSBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDQUNGTGF5ZXJWaWV3LmgiCiAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLSNpZm5kZWYgTkRFQlVHCi0jZGVm
aW5lIEQzRF9ERUJVR19JTkZPCi0jZW5kaWYKLQotI2luY2x1ZGUgIkNBQ0ZMYXllclZpZXcuaCIK
LQorI2luY2x1ZGUgIkxheWVyQ2hhbmdlc0ZsdXNoZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNB
TGF5ZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKICNpbmNsdWRlIDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC00Myw2ICsz
OSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmbmRlZiBOREVCVUcKKyNk
ZWZpbmUgRDNEX0RFQlVHX0lORk8KKyNlbmRpZgorCiAjaW5jbHVkZSA8ZDNkOS5oPgogI2luY2x1
ZGUgPGQzZHg5Lmg+CiAKQEAgLTE4OCw2ICsxODksNyBAQCBDQUNGTGF5ZXJWaWV3OjpDQUNGTGF5
ZXJWaWV3KCkKICAgICAsIG1fcmVuZGVyVGltZXIodGhpcywgJkNBQ0ZMYXllclZpZXc6OnJlbmRl
clRpbWVyRmlyZWQpCiAgICAgLCBtX211c3RSZXNldExvc3REZXZpY2VCZWZvcmVSZW5kZXJpbmco
ZmFsc2UpCiAgICAgLCBtX3Nob3VsZEZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzKGZh
bHNlKQorICAgICwgbV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKGZhbHNlKQogewogICAgIC8vIFBv
aW50IHRoZSBDQUNGQ29udGV4dCB0byB0aGlzCiAgICAgd2tDQUNGQ29udGV4dFNldFVzZXJEYXRh
KG1fY29udGV4dCwgdGhpcyk7CkBAIC0yNjAsNyArMjYyLDE3IEBAIHZvaWQgQ0FDRkxheWVyVmll
dzo6c2V0Um9vdENoaWxkTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKICAgIAogdm9pZCBD
QUNGTGF5ZXJWaWV3OjpsYXllclRyZWVEaWRDaGFuZ2UoKQogewotICAgIHJlbmRlclNvb24oKTsK
KyAgICBpZiAobV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKSB7CisgICAgICAgIC8vIFRoZSBsYXll
ciB0cmVlIGlzIGNoYW5naW5nIGFzIGEgcmVzdWx0IG9mIGZsdXNoaW5nIEdyYXBoaWNzTGF5ZXIg
Y2hhbmdlcyB0byB0aGVpcgorICAgICAgICAvLyB1bmRlcmx5aW5nIFBsYXRmb3JtQ0FMYXllcnMu
IFdlJ2xsIGZsdXNoIHRob3NlIGNoYW5nZXMgdG8gdGhlIGNvbnRleHQgYXMgcGFydCBvZiB0aGF0
CisgICAgICAgIC8vIHByb2Nlc3MsIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBzY2hlZHVsZSBhbm90
aGVyIGZsdXNoIGhlcmUuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUaGUgbGF5
ZXIgdHJlZSBpcyBjaGFuZ2luZyBhcyBhIHJlc3VsdCBvZiBzb21lb25lIG1vZGlmeWluZyBhIFBs
YXRmb3JtQ0FMYXllciB0aGF0IGRvZXNuJ3QKKyAgICAvLyBoYXZlIGEgY29ycmVzcG9uZGluZyBH
cmFwaGljc0xheWVyLiBTY2hlZHVsZSBhIGZsdXNoIHNpbmNlIHdlIHdvbid0IHNjaGVkdWxlIG9u
ZSB0aHJvdWdoIHRoZQorICAgIC8vIG5vcm1hbCBHcmFwaGljc0xheWVyIG1lY2hhbmlzbXMuCisg
ICAgTGF5ZXJDaGFuZ2VzRmx1c2hlcjo6c2hhcmVkKCkuZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2Vz
U29vbih0aGlzKTsKIH0KIAogYm9vbCBDQUNGTGF5ZXJWaWV3OjpjcmVhdGVSZW5kZXJlcigpCkBA
IC0zMzcsNyArMzQ5LDkgQEAgYm9vbCBDQUNGTGF5ZXJWaWV3OjpjcmVhdGVSZW5kZXJlcigpCiAK
IHZvaWQgQ0FDRkxheWVyVmlldzo6ZGVzdHJveVJlbmRlcmVyKCkKIHsKLSAgICB3a0NBQ0ZDb250
ZXh0U2V0TGF5ZXIobV9jb250ZXh0LCBtX3Jvb3RMYXllci0+cGxhdGZvcm1MYXllcigpKTsKKyAg
ICBMYXllckNoYW5nZXNGbHVzaGVyOjpzaGFyZWQoKS5jYW5jZWxQZW5kaW5nRmx1c2godGhpcyk7
CisKKyAgICB3a0NBQ0ZDb250ZXh0U2V0TGF5ZXIobV9jb250ZXh0LCAwKTsKIAogICAgIHdrQ0FD
RkNvbnRleHRTZXREM0REZXZpY2UobV9jb250ZXh0LCAwKTsKICAgICBtX2QzZERldmljZSA9IDA7
CkBAIC00MjUsMTkgKzQzOSw2IEBAIHZvaWQgQ0FDRkxheWVyVmlldzo6cmVuZGVyKGNvbnN0IFZl
Y3RvcjxDR1JlY3Q+JiB3aW5kb3dEaXJ0eVJlY3RzKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKG1fY2xpZW50ICYmICFtX2NsaWVudC0+c2hvdWxkUmVuZGVyKCkpIHsKLSAgICAg
ICAgcmVuZGVyU29vbigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fc2hv
dWxkRmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXMpIHsKLSAgICAgICAgbV9jbGllbnQt
PmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzKCk7Ci0gICAgICAgIG1fc2hvdWxkRmx1
c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXMgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBG
bHVzaCB0aGUgcm9vdCBsYXllciB0byB0aGUgcmVuZGVyIHRyZWUuCi0gICAgd2tDQUNGQ29udGV4
dEZsdXNoKG1fY29udGV4dCk7Ci0KICAgICAvLyBBbGwgcGVuZGluZyBhbmltYXRpb25zIHdpbGwg
aGF2ZSBiZWVuIHN0YXJ0ZWQgd2l0aCB0aGUgZmx1c2guIEZpcmUgdGhlIGFuaW1hdGlvblN0YXJ0
ZWQgY2FsbHMKICAgICBkb3VibGUgY3VycmVudFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CiAg
ICAgZG91YmxlIGN1cnJlbnRNZWRpYVRpbWUgPSBDQUN1cnJlbnRNZWRpYVRpbWUoKTsKQEAgLTUy
Niw3ICs1MjcsMjkgQEAgdm9pZCBDQUNGTGF5ZXJWaWV3OjpyZW5kZXJTb29uKCkKIHZvaWQgQ0FD
RkxheWVyVmlldzo6Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCkKIHsKICAg
ICBtX3Nob3VsZEZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzID0gdHJ1ZTsKKyAgICBM
YXllckNoYW5nZXNGbHVzaGVyOjpzaGFyZWQoKS5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNTb29u
KHRoaXMpOworfQorCit2b2lkIENBQ0ZMYXllclZpZXc6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdl
c05vdygpCit7CisgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIGNsaWVudCBjb3VsZCBjYXVzZSBv
dXIgbGFzdCByZWZlcmVuY2UgdG8gZ28gYXdheS4KKyAgICBSZWZQdHI8Q0FDRkxheWVyVmlldz4g
cHJvdGVjdG9yKHRoaXMpOworCisgICAgbV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzID0gdHJ1ZTsK
KworICAgIC8vIEZsdXNoIGNoYW5nZXMgc3RvcmVkIHVwIGluIEdyYXBoaWNzTGF5ZXJzIHRvIHRo
ZWlyIHVuZGVybHlpbmcgUGxhdGZvcm1DQUxheWVycywgaWYKKyAgICAvLyByZXF1ZXN0ZWQuCisg
ICAgaWYgKG1fY2xpZW50ICYmIG1fc2hvdWxkRmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5n
ZXMpIHsKKyAgICAgICAgbV9zaG91bGRGbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlcyA9
IGZhbHNlOworICAgICAgICBtX2NsaWVudC0+Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5n
ZXMoKTsKKyAgICB9CisKKyAgICAvLyBGbHVzaCBjaGFuZ2VzIHN0b3JlZCB1cCBpbiBQbGF0Zm9y
bUNBTGF5ZXJzIHRvIHRoZSBjb250ZXh0IHNvIHRoZXkgd2lsbCBiZSByZW5kZXJlZC4KKyAgICB3
a0NBQ0ZDb250ZXh0Rmx1c2gobV9jb250ZXh0KTsKKwogICAgIHJlbmRlclNvb24oKTsKKworICAg
IG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcyA9IGZhbHNlOwogfQogCiBDR1JlY3QgQ0FDRkxheWVy
Vmlldzo6Ym91bmRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVmlldy5oCmluZGV4IGQxZGZlZmEwY2ZlNThhYzk5
YTY5Nzg1ZjUxYTIwNmUwNzlhMzI4NGEuLmUxZGIyMjI3MzMyZGQxMDQ5NjE5NjYwZDc0OTUwNjQ1
ODIxMWE5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9DQUNGTGF5ZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL0NBQ0ZMYXllclZpZXcuaApAQCAtNTIsNyArNTIsNiBAQCBjbGFzcyBQbGF0Zm9y
bUNBTGF5ZXI7CiBjbGFzcyBDQUNGTGF5ZXJWaWV3Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5DQUNGTGF5ZXJWaWV3Q2xpZW50KCkgeyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFJl
bmRlcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hQZW5kaW5nR3JhcGhpY3NM
YXllckNoYW5nZXMoKSB7IH0KIH07CiAKQEAgLTc2LDYgKzc1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcGFpbnQoKTsKICAgICB2b2lkIHJlc2l6ZSgpOwogICAgIHZvaWQgZmx1c2hQZW5kaW5nR3Jh
cGhpY3NMYXllckNoYW5nZXNTb29uKCk7CisgICAgdm9pZCBmbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXNOb3coKTsKIAogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtQ0FMYXllciogcm9vdExheWVyKCkg
Y29uc3Q7CkBAIC0xMTEsNiArMTExLDcgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxDQUNGTGF5ZXJW
aWV3PiBtX3JlbmRlclRpbWVyOwogICAgIGJvb2wgbV9tdXN0UmVzZXRMb3N0RGV2aWNlQmVmb3Jl
UmVuZGVyaW5nOwogICAgIGJvb2wgbV9zaG91bGRGbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hh
bmdlczsKKyAgICBib29sIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlczsKICAgICBIYXNoU2V0PFJl
ZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+ID4gbV9wZW5kaW5nQW5pbWF0ZWRMYXllcnM7CiAKICNpZm5k
ZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYxNTJh
MjFjNDk3MTNhNGUxNDBmNTdlMWI2ZDkyMzBjMDVmMzNlMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVy
LmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGF5
ZXJDaGFuZ2VzRmx1c2hlci5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
CisjaW5jbHVkZSAiQ0FDRkxheWVyVmlldy5oIgorI2luY2x1ZGUgIldlYkNvcmVJbnN0YW5jZUhh
bmRsZS5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTGF5ZXJDaGFuZ2VzRmx1c2hlciYgTGF5
ZXJDaGFuZ2VzRmx1c2hlcjo6c2hhcmVkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKExh
eWVyQ2hhbmdlc0ZsdXNoZXIsIGZsdXNoZXIsICgpKTsKKyAgICByZXR1cm4gZmx1c2hlcjsKK30K
KworTGF5ZXJDaGFuZ2VzRmx1c2hlcjo6TGF5ZXJDaGFuZ2VzRmx1c2hlcigpCisgICAgOiBtX2hv
b2soMCkKKyAgICAsIG1faXNDYWxsaW5nVmlld3MoZmFsc2UpCit7Cit9CisKK3ZvaWQgTGF5ZXJD
aGFuZ2VzRmx1c2hlcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzU29vbihDQUNGTGF5ZXJWaWV3
KiB2aWV3KQoreworICAgIGlmICghbV92aWV3c1dpdGhDaGFuZ2VzVG9GbHVzaC5hZGQodmlldyku
c2Vjb25kIHx8IG1faG9vaykKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0SG9vaygpOworfQor
Cit2b2lkIExheWVyQ2hhbmdlc0ZsdXNoZXI6OmNhbmNlbFBlbmRpbmdGbHVzaChDQUNGTGF5ZXJW
aWV3KiB2aWV3KQoreworICAgIG1fdmlld3NXaXRoQ2hhbmdlc1RvRmx1c2gucmVtb3ZlKHZpZXcp
OworCisgICAgaWYgKCFtX3ZpZXdzV2l0aENoYW5nZXNUb0ZsdXNoLmlzRW1wdHkoKSB8fCAhbV9o
b29rKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXZSBoYW5kbGUgcmVtb3ZpbmcgdGhlIGhv
b2sgd2hlbiB3ZSBmaW5pc2ggY2FsbGluZyBvdXQgdG8gdGhlIHZpZXdzLCBzbyB3ZSBzaG91bGRu
J3QKKyAgICAvLyBtZXNzIHdpdGggaXQgd2hpbGUgd2UncmUgaW4gdGhlIHByb2Nlc3Mgb2YgY2Fs
bGluZyB0aGVtLgorICAgIGlmIChtX2lzQ2FsbGluZ1ZpZXdzKQorICAgICAgICByZXR1cm47CisK
KyAgICByZW1vdmVIb29rKCk7Cit9CisKK0xSRVNVTFQgTGF5ZXJDaGFuZ2VzRmx1c2hlcjo6aG9v
a0NhbGxiYWNrKGludCBjb2RlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQoreworICAg
IHJldHVybiBzaGFyZWQoKS5ob29rRmlyZWQoY29kZSwgd1BhcmFtLCBsUGFyYW0pOworfQorCitM
UkVTVUxUIExheWVyQ2hhbmdlc0ZsdXNoZXI6Omhvb2tGaXJlZChpbnQgY29kZSwgV1BBUkFNIHdQ
YXJhbSwgTFBBUkFNIGxQYXJhbSkKK3sKKyAgICBBU1NFUlQobV9ob29rKTsKKworICAgIC8vIENh
bGxpbmcgb3V0IHRvIHRoZSB2aWV3cyBjYW4gY2F1c2UgbV92aWV3c05lZWRpbmdGbHVzaCB0byBi
ZSBtb2RpZmllZCwgc28gd2UgY29weSBpdAorICAgIC8vIGludG8gYSBWZWN0b3IgZmlyc3QuIFdl
IGhhdmUgdG8gaG9sZCBhIHJlZmVyZW5jZSB0byB0aGVtIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZXkg
Y291bGQgYmUKKyAgICAvLyBkZXN0cm95ZWQgd2hpbGUgd2UncmUgY2FsbGluZyBvdXQgdG8gdGhl
bS4KKyAgICBWZWN0b3I8UmVmUHRyPENBQ0ZMYXllclZpZXc+ID4gdmlld3M7CisgICAgY29weVRv
VmVjdG9yKG1fdmlld3NXaXRoQ2hhbmdlc1RvRmx1c2gsIHZpZXdzKTsKKyAgICBtX3ZpZXdzV2l0
aENoYW5nZXNUb0ZsdXNoLmNsZWFyKCk7CisKKyAgICBtX2lzQ2FsbGluZ1ZpZXdzID0gdHJ1ZTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZpZXdzLnNpemUoKTsgKytpKQorICAgICAgICB2
aWV3c1tpXS0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93KCk7CisgICAgbV9pc0NhbGxpbmdW
aWV3cyA9IGZhbHNlOworCisgICAgTFJFU1VMVCByZXN1bHQgPSA6OkNhbGxOZXh0SG9va0V4KG1f
aG9vaywgY29kZSwgd1BhcmFtLCBsUGFyYW0pOworCisgICAgaWYgKG1fdmlld3NXaXRoQ2hhbmdl
c1RvRmx1c2guaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIFdlIHdvbid0IGhhdmUgYW55IHdvcmsg
dG8gZG8gbmV4dCB0aW1lIGFyb3VuZCwgc28ganVzdCByZW1vdmUgb3VyIGhvb2suCisgICAgICAg
IHJlbW92ZUhvb2soKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIExh
eWVyQ2hhbmdlc0ZsdXNoZXI6OnNldEhvb2soKQoreworICAgIEFTU0VSVCghbV9ob29rKTsKKyAg
ICBBU1NFUlQoIW1faXNDYWxsaW5nVmlld3MpOworCisgICAgRFdPUkQgdGhyZWFkSUQgPSA6Okdl
dEN1cnJlbnRUaHJlYWRJZCgpOworCisgICAgbV9ob29rID0gOjpTZXRXaW5kb3dzSG9va0V4VyhX
SF9HRVRNRVNTQUdFLCBob29rQ2FsbGJhY2ssIGluc3RhbmNlSGFuZGxlKCksIHRocmVhZElEKTsK
KyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1faG9vaywgIjo6U2V0V2luZG93c0hvb2tFeFcgZmFp
bGVkIHdpdGggZXJyb3IgJWx1IiwgOjpHZXRMYXN0RXJyb3IoKSk7CisKKyAgICAvLyBQb3N0IGEg
bWVzc2FnZSB0byB0aGUgbWVzc2FnZSBxdWV1ZSB0byBwcmV2ZW50IDo6R2V0TWVzc2FnZSBmcm9t
IGJsb2NraW5nLCB3aGljaCB3aWxsIGVuc3VyZQorICAgIC8vIG91ciBob29rIGlzIGNhbGxlZCBz
b29uLgorICAgIDo6UG9zdFRocmVhZE1lc3NhZ2VXKHRocmVhZElELCBXTV9OVUxMLCAwLCAwKTsK
K30KKwordm9pZCBMYXllckNoYW5nZXNGbHVzaGVyOjpyZW1vdmVIb29rKCkKK3sKKyAgICBBU1NF
UlQobV9ob29rKTsKKyAgICBBU1NFUlQoIW1faXNDYWxsaW5nVmlld3MpOworCisgICAgaWYgKCE6
OlVuaG9va1dpbmRvd3NIb29rRXgobV9ob29rKSkKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShmYWxzZSwgIjo6VW5ob29rV2luZG93c0hvb2tFeCBmYWlsZWQgd2l0aCBlcnJvciAlbHUiLCA6
OkdldExhc3RFcnJvcigpKTsKKworICAgIG1faG9vayA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5n
ZXNGbHVzaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5
ZXJDaGFuZ2VzRmx1c2hlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlOWI5NjU0MjYwZDViNTNjMTUzMjVkMjQ0
NzU4ZmNiNzI3Mjk0MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5oCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBMYXllckNoYW5nZXNGbHVzaGVyX2gKKyNkZWZpbmUgTGF5ZXJDaGFuZ2VzRmx1c2hl
cl9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlIDx3aW5k
b3dzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDQUNGTGF5ZXJWaWV3OworCitj
bGFzcyBMYXllckNoYW5nZXNGbHVzaGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXll
ckNoYW5nZXNGbHVzaGVyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTGF5ZXJDaGFuZ2VzRmx1c2hl
ciYgc2hhcmVkKCk7CisKKyAgICB2b2lkIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24oQ0FD
RkxheWVyVmlldyopOworICAgIHZvaWQgY2FuY2VsUGVuZGluZ0ZsdXNoKENBQ0ZMYXllclZpZXcq
KTsKKworcHJpdmF0ZToKKyAgICBMYXllckNoYW5nZXNGbHVzaGVyKCk7CisgICAgfkxheWVyQ2hh
bmdlc0ZsdXNoZXIoKTsKKworICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIGhvb2tDYWxsYmFj
ayhpbnQgY29kZSwgV1BBUkFNLCBMUEFSQU0pOworICAgIExSRVNVTFQgaG9va0ZpcmVkKGludCBj
b2RlLCBXUEFSQU0sIExQQVJBTSk7CisgICAgdm9pZCBzZXRIb29rKCk7CisgICAgdm9pZCByZW1v
dmVIb29rKCk7CisKKyAgICBIYXNoU2V0PENBQ0ZMYXllclZpZXcqPiBtX3ZpZXdzV2l0aENoYW5n
ZXNUb0ZsdXNoOworICAgIEhIT09LIG1faG9vazsKKyAgICBib29sIG1faXNDYWxsaW5nVmlld3M7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisKKyNlbmRpZiAvLyBMYXllckNoYW5nZXNGbHVzaGVyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCBmYmYyOTcwODYxNjkzNzUyYzg4NmYyMThkYmZlOWVhNDdiYTA3NzQzLi4w
MGZlNzliNDEyZTIxNzQ4MjVlMGE0MGVlYWY5MzA1YzgwNWZmNGVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDEtMjAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFVwZGF0ZSBmb3IgQ0FDRkxheWVyVmlldyBjaGFuZ2VzCisKKyAgICAg
ICAgRml4ZXMgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTI4NTI+IEZsdXNoaW5nIGxheWVyIGNoYW5n
ZXMgYW5kIHJlbmRlcmluZyBhcmUgaW50ZXJ0d2luZWQgaW4KKyAgICAgICAgQ0FDRkxheWVyVmll
dywgYnV0IHNob3VsZG4ndCBiZQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpwYWludCk6IENo
YW5nZWQgdG8gZmx1c2ggbGF5ZXIgY2hhbmdlcyB2aWEgQ0FDRkxheWVyVmlldywgd2hpY2ggd2ls
bCBjYWxsIGJhY2sgdG8KKyAgICAgICAgb3VyIG93biBmbHVzaGluZyBmdW5jdGlvbiBpZiBuZWVk
ZWQuCisKKyAgICAgICAgKiBXZWJWaWV3Lmg6IFJlbW92ZWQgc2hvdWxkUmVuZGVyLCB3aGljaCBp
cyBubyBsb25nZXIgdXNlZCBvciBuZWVkZWQuCisKIDIwMTEtMDEtMjEgIEFkYW0gUm9iZW4gIDxh
cm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBmb3IgV0tDQUNGTGF5ZXJSZW5kZXJl
ciAtPiBDQUNGTGF5ZXJWaWV3IHJlbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYTMxMjEw
OTEzODU5ZWViYWIyNWEwZTlhMDM1ZWVjODAxN2YxODRkLi5hZjE4OTI1NTllYTQ5MzExYjMyY2Nk
NTlhOTYwNDdmYjY3YjI4ZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtOTkwLDcgKzk5MCw3
IEBAIHZvaWQgV2ViVmlldzo6cGFpbnQoSERDIGRjLCBMUEFSQU0gb3B0aW9ucykKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nKCkpIHsKLSAgICAgICAgZmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXMoKTsKKyAg
ICAgICAgbV9sYXllclZpZXctPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc05vdygpOwogICAgICAg
ICAvLyBGbHVzaGluZyBtaWdodCBoYXZlIHRha2VuIHVzIG91dCBvZiBjb21wb3NpdGluZyBtb2Rl
LgogICAgICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBuZWVkIHRvIHBhaW50IGludG8gZGMgKGlmIHByb3ZpZGVkKS4gPGh0dHA6
Ly93ZWJraXQub3JnL2IvNTI1Nzg+CkBAIC02NTA1LDE4ICs2NTA1LDYgQEAgYm9vbCBXZWJWaWV3
OjpzaG93UmVwYWludENvdW50ZXIoKSBjb25zdAogICAgIHJldHVybiBtX3BhZ2UtPnNldHRpbmdz
KCktPnNob3dSZXBhaW50Q291bnRlcigpOwogfQogCi1ib29sIFdlYlZpZXc6OnNob3VsZFJlbmRl
cigpIGNvbnN0Ci17Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobV9tYWluRnJhbWUpOwot
ICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IGNvcmVGcmFtZS0+dmlldygpOwotICAgIGlmICghZnJhbWVWaWV3KQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiAhZnJhbWVWaWV3LT5sYXlvdXRQZW5kaW5n
KCk7Ci19Ci0KIHZvaWQgV2ViVmlldzo6Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXMo
KQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fbWFpbkZyYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuaAppbmRleCA5MTY3MjRkZWUwZDA2NjQ1OGI2NDM5MTY2MGNhZTEwZjA5NWJlOTE4Li5iN2Yz
MGRjYjU2NDRhYTE1M2Q1YTY1MGEwOTdkMzBlMDQxN2RhMThmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCkBA
IC05NDgsNyArOTQ4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRD
b3VudGVyKCkgY29uc3Q7CiAKICAgICAvLyBDQUNGTGF5ZXJWaWV3Q2xpZW50Ci0gICAgdmlydHVh
bCBib29sIHNob3VsZFJlbmRlcigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaFBlbmRp
bmdHcmFwaGljc0xheWVyQ2hhbmdlcygpOwogI2VuZGlmCiAK
</data>
<flag name="review"
          id="71170"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>