<?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>83895</bug_id>
          
          <creation_ts>2012-04-13 08:12:59 -0700</creation_ts>
          <short_desc>[Qt] Clean up how the interaction engine is making use of ViewportAttributes</short_desc>
          <delta_ts>2012-04-16 06:40:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Rohde Christiansen">kenneth</reporter>
          <assigned_to name="Kenneth Rohde Christiansen">kenneth</assigned_to>
          <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zalan</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>602070</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-13 08:12:59 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602072</commentid>
    <comment_count>1</comment_count>
      <attachid>137087</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-13 08:14:04 -0700</bug_when>
    <thetext>Created attachment 137087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602073</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-04-13 08:14:39 -0700</bug_when>
    <thetext>lgtm. discussed on irc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602075</commentid>
    <comment_count>3</comment_count>
      <attachid>137087</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-13 08:18:09 -0700</bug_when>
    <thetext>Comment on attachment 137087
Patch

Attachment 137087 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12399333</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602117</commentid>
    <comment_count>4</comment_count>
      <attachid>137087</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-04-13 08:42:15 -0700</bug_when>
    <thetext>Comment on attachment 137087
Patch

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

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:628
&gt; +    // FIXME: Revise this.
&gt; +    interactionEngine-&gt;reset();

Could you elaborate?

&gt; Source/WebKit2/UIProcess/API/qt/qwebviewportinfo.cpp:96
&gt; +void QWebViewportInfo::didUpdateViewportConstraints(const WebCore::ViewportAttributes&amp; attr)

I don&apos;t think we should expose this in the public API

&gt; Source/WebKit2/UIProcess/API/qt/qwebviewportinfo_p.h:70
&gt; +    WebCore::ViewportAttributes attributes;

This should go in a new QWebViewportInfoPrivate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602137</commentid>
    <comment_count>5</comment_count>
      <attachid>137087</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-13 09:28:45 -0700</bug_when>
    <thetext>Comment on attachment 137087
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:628
&gt;&gt; +    interactionEngine-&gt;reset();
&gt; 
&gt; Could you elaborate?

It is the same reset you wanted to remove but left there. So we need to revise it at a later time.

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebviewportinfo.cpp:96
&gt;&gt; +void QWebViewportInfo::didUpdateViewportConstraints(const WebCore::ViewportAttributes&amp; attr)
&gt; 
&gt; I don&apos;t think we should expose this in the public API

This is not public API as it is not exposed to QML nor to a public header file.

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebviewportinfo_p.h:70
&gt;&gt; +    WebCore::ViewportAttributes attributes;
&gt; 
&gt; This should go in a new QWebViewportInfoPrivate

If we are going to create a QWebViewportInfoPrivate I think that should be a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602139</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-13 09:29:50 -0700</bug_when>
    <thetext>I do not know why this doesnt build, maybe it needs a clean build. It compiles locally and I had this problem before I changed experimental.pri</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602163</commentid>
    <comment_count>7</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-04-13 09:53:58 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Could you elaborate?
&gt; 
&gt; It is the same reset you wanted to remove but left there. So we need to revise it at a later time.

Sorry I meant in the comment.

&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebviewportinfo.cpp:96
&gt; &gt;&gt; +void QWebViewportInfo::didUpdateViewportConstraints(const WebCore::ViewportAttributes&amp; attr)
&gt; &gt; 
&gt; &gt; I don&apos;t think we should expose this in the public API
&gt; 
&gt; This is not public API as it is not exposed to QML nor to a public header file.
&gt; 

Well it&apos;s private public API, so this would prevent anybody from doing &quot;QT += webkit-private&quot; in their project as they would also need all the referenced WebCore headers, which we won&apos;t distribute. All the other QML API headers already support this.

The private class is also just to make sure that no WebCore symbols are in those private public headers.


(In reply to comment #6)
&gt; I do not know why this doesnt build, maybe it needs a clean build. It compiles locally and I had this problem before I changed experimental.pri

It doesn&apos;t build because moc doesn&apos;t include &quot;config.h&quot;, so you need to &quot;#include &quot;moc_qwebviewportinfo.cpp&quot; at the end of qwebviewportinfo.cpp. But I think you won&apos;t need it if you add the _p_p.h file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603063</commentid>
    <comment_count>8</comment_count>
      <attachid>137324</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-16 05:14:38 -0700</bug_when>
    <thetext>Created attachment 137324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603086</commentid>
    <comment_count>9</comment_count>
      <attachid>137324</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-04-16 06:07:26 -0700</bug_when>
    <thetext>Comment on attachment 137324
Patch

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        Refactor now the interaction engine is using the ViewportAttributes

Wonder if you mean &quot;how&quot; instead of &quot;now&quot; here.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:635
&gt; +    // This needs to be revised at some point.

I believe the &quot;FIXME&quot; already marks the following code as &quot;should be revised at some point&quot;, so this paragragh may be omitted.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:640
&gt; +    interactionEngine-&gt;setAllowsUserScaling(!!attr.userScalable);

Hm, what? !!attr.userScalable? Why not just &quot;attr.userScalable&quot;?

&gt; Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp:97
&gt; +    return itemScale / m_devicePixelRatio;

Is it possible that a division by zero occurs here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603087</commentid>
    <comment_count>10</comment_count>
      <attachid>137324</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-04-16 06:07:51 -0700</bug_when>
    <thetext>Comment on attachment 137324
Patch

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

&gt; Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h:54
&gt; +    bool hadUserInteraction() { return m_hadUserInteraction; }

Missing const.

&gt; Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h:130
&gt; +    bool m_allowsUserScaling;
&gt; +    qreal m_minimumScale;
&gt; +    qreal m_maximumScale;
&gt; +    qreal m_devicePixelRatio;

I see these variables being added, but it seems they&apos;re only &quot;initialized&quot; when the message about the updated viewport attributes arrives from the web process. Shouldn&apos;t they be initialized in the constructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603096</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-16 06:21:20 -0700</bug_when>
    <thetext>&gt; I see these variables being added, but it seems they&apos;re only &quot;initialized&quot; when the message about the updated viewport attributes arrives from the web process. Shouldn&apos;t they be initialized in the constructor?

Indeed, I will add them to the reset() method instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603099</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-16 06:24:27 -0700</bug_when>
    <thetext>
&gt; Wonder if you mean &quot;how&quot; instead of &quot;now&quot; here.

OOps!

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:635
&gt; &gt; +    // This needs to be revised at some point.
&gt; 
&gt; I believe the &quot;FIXME&quot; already marks the following code as &quot;should be revised at some point&quot;, so this paragragh may be omitted.

Im fine with that.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:640
&gt; &gt; +    interactionEngine-&gt;setAllowsUserScaling(!!attr.userScalable);
&gt; 
&gt; Hm, what? !!attr.userScalable? Why not just &quot;attr.userScalable&quot;?

It is a float. This is the common way to convert it.

&gt; &gt; Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp:97
&gt; &gt; +    return itemScale / m_devicePixelRatio;
&gt; 
&gt; Is it possible that a division by zero occurs here?

No, a ratio can never be zero.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603100</commentid>
    <comment_count>13</comment_count>
      <attachid>137333</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-16 06:27:58 -0700</bug_when>
    <thetext>Created attachment 137333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603107</commentid>
    <comment_count>14</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-16 06:40:09 -0700</bug_when>
    <thetext>Landed in 114247.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137087</attachid>
            <date>2012-04-13 08:14:04 -0700</date>
            <delta_ts>2012-04-16 05:14:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83895-20120413170507.patch</filename>
            <type>text/plain</type>
            <size>18439</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGMwMTQ0NzQ5YWFk
ODZmZTc0MTRkNjgyOGEyNDQ0YmMyMTlmMmE1NzYuLjcwNjg5NjI2MjZhY2UwYjk4MjhkYTlhYWIz
OTEyNTFmMTdhYThkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDQt
MTMgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFtRdF0gQ2xlYW4gdXAgaG93IHRoZSBpbnRlcmFjdGlvbiBlbmdpbmUgaXMgbWFraW5n
IHVzZSBvZiBWaWV3cG9ydEF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgzODk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHdlYmNvcmUgdG8gV0VCS0lUIGZvciB0aGUgZXhwZXJpbWVu
dGFsIG1vZHVsZS4KKworICAgICAgICAqIGRlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9leHBlcmlt
ZW50YWwucHJpOgorCiAyMDEyLTA0LTEzICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVz
dGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEJ1aWxkIGZpeCB3aXRoIFFUX05PX0JFQVJF
Uk1BTkFHRU1FTlQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlMWE1MzJhMWNjZGEzNWZiYWEwNDY4ZGUwODAwMmIz
ZTVkYWExZjU3Li45N2QzNWNjNzdmZTljZDAzMzI4NDI0YTljYzJmMzAyZmE3YWM5M2RjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTItMDQtMTMgIEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gQ2xlYW4gdXAgaG93
IHRoZSBpbnRlcmFjdGlvbiBlbmdpbmUgaXMgbWFraW5nIHVzZSBvZiBWaWV3cG9ydEF0dHJpYnV0
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzODk1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0
b3Igbm93IHRoZSBpbnRlcmFjdGlvbiBlbmdpbmUgaXMgdXNpbmcgdGhlIFZpZXdwb3J0QXR0cmli
dXRlcworICAgICAgICBhbmQgZ2V0IHJpZCBvZiB0aGUgQ29udHJhaW50cyBzdWJjbGFzcy4KKwor
ICAgICAgICBQdXNoIHRoZSBWaWV3cG9ydEF0dHJpYnV0ZXMgdGhyb3VnaCB0byB0aGUgUVdlYlZp
ZXdwb3J0SW5mbyBjbGFzcworICAgICAgICBhbmQgYWRkIHNvbWUgZGVmYXVsdCB2YWx1ZXMgaW4g
dGhlIGNhc2UgdGhlIExlZ2FjeSB2aWV3IGlzIHVzZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJs
ZVByaXZhdGU6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNwcDoKKyAgICAgICAgKFFXZWJWaWV3cG9ydElu
Zm86OlFXZWJWaWV3cG9ydEluZm8pOgorICAgICAgICAoUVdlYlZpZXdwb3J0SW5mbzo6flFXZWJW
aWV3cG9ydEluZm8pOgorICAgICAgICAoUVdlYlZpZXdwb3J0SW5mbzo6Y3VycmVudFNjYWxlKToK
KyAgICAgICAgKFFXZWJWaWV3cG9ydEluZm86OmRldmljZVBpeGVsUmF0aW8pOgorICAgICAgICAo
UVdlYlZpZXdwb3J0SW5mbzo6aW5pdGlhbFNjYWxlKToKKyAgICAgICAgKFFXZWJWaWV3cG9ydElu
Zm86Om1pbmltdW1TY2FsZSk6CisgICAgICAgIChRV2ViVmlld3BvcnRJbmZvOjptYXhpbXVtU2Nh
bGUpOgorICAgICAgICAoUVdlYlZpZXdwb3J0SW5mbzo6aXNTY2FsYWJsZSk6CisgICAgICAgIChR
V2ViVmlld3BvcnRJbmZvOjpsYXlvdXRTaXplKToKKyAgICAgICAgKFFXZWJWaWV3cG9ydEluZm86
OmRpZFVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
cXQvcXdlYnZpZXdwb3J0aW5mb19wLmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZTo6Y3NzU2NhbGVGcm9tSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlF0Vmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6aXRlbVNjYWxlRnJvbUNTUyk6CisgICAgICAgIChXZWJL
aXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6aXRlbUNvb3JkRnJvbUNTUyk6CisgICAg
ICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6aW5uZXJCb3VuZGVkQ1NT
U2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6Om91
dGVyQm91bmRlZENTU1NjYWxlKToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjp6b29tVG9BcmVhR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6UXRW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpzZXRDU1NTY2FsZUJvdW5kcyk6CisgICAgICAgIChX
ZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6c2V0Q1NTU2NhbGUpOgorICAgICAg
ICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZVN0YXJ0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNo
R2VzdHVyZVJlcXVlc3RVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmg6CisgICAgICAgIChRdFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmU6OmhhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZTo6c2V0QWxsb3dzVXNlclNjYWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpR
dFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNldENvbnRlbnRUb0RldmljZVBpeGVsUmF0aW8p
OgorCiAyMDEyLTA0LTEyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIFByZXByb2Nlc3NpbmcgdGV4dCBmaWxlcyB3aXRoIG1vZGVybiBjbGFuZyB0cmVhdHMg
ZG91YmxlIHNsYXNoZXMgaW4gY29tbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
ZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL2V4cGVyaW1lbnRhbC5wcmkgYi9Tb3VyY2UvV2ViS2l0
L3F0L2RlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9leHBlcmltZW50YWwucHJpCmluZGV4IDIwZDU0
NTIzY2EwYjQ1YTA0MTY5Yzg0ZmI2ODBjNDQxNjUxYjRmMWUuLjYxZDJmNWU1YWViZGYxMDUxNjM0
MmM5YjFhY2M5Mjc0ZTA4OTU2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFy
YXRpdmUvZXhwZXJpbWVudGFsL2V4cGVyaW1lbnRhbC5wcmkKKysrIGIvU291cmNlL1dlYktpdC9x
dC9kZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvZXhwZXJpbWVudGFsLnByaQpAQCAtMzUsNyArMzUs
NyBAQCBTT1VSQ0VTICs9IHBsdWdpbi5jcHAKIAogREVGSU5FUyArPSBIQVZFX1dFQktJVDIKIAot
V0VCS0lUICs9IHd0ZiBqYXZhc2NyaXB0Y29yZSB3ZWJraXQyCitXRUJLSVQgKz0gd3RmIGphdmFz
Y3JpcHRjb3JlIHdlYmNvcmUgd2Via2l0MgogCiB0YXJnZXQucGF0aCA9ICQkW1FUX0lOU1RBTExf
SU1QT1JUU10vJCR7VEFSR0VULm1vZHVsZV9uYW1lfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCAwMWY4ZGE0Y2MyYWE1ZTFi
OTgwOTVmZTVlZmNiYzlmOWJmN2NiYTAxLi4wZDI4MWRlYzZlNTgxNzlhNmYzNDY3ZDQxMDI4ZTNm
OTBjNjQwN2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlldy5jcHAKQEAgLTYyNCwxOCArNjI0LDIyIEBAIHZvaWQgUVF1aWNrV2ViVmlld0Zs
aWNrYWJsZVByaXZhdGU6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3Jl
OjpWCiAgICAgV2ViQ29yZTo6cmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6
ZShhdHRyLCB2aWV3cG9ydFNpemUpOwogICAgIFdlYkNvcmU6OnJlc3RyaWN0U2NhbGVGYWN0b3JU
b0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKGF0dHIpOwogCi0gICAgUXRWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cyBuZXdDb25zdHJhaW50czsKLSAgICBuZXdDb25z
dHJhaW50cy5pbml0aWFsU2NhbGUgPSBhdHRyLmluaXRpYWxTY2FsZTsKLSAgICBuZXdDb25zdHJh
aW50cy5taW5pbXVtU2NhbGUgPSBhdHRyLm1pbmltdW1TY2FsZTsKLSAgICBuZXdDb25zdHJhaW50
cy5tYXhpbXVtU2NhbGUgPSBhdHRyLm1heGltdW1TY2FsZTsKLSAgICBuZXdDb25zdHJhaW50cy5k
ZXZpY2VQaXhlbFJhdGlvID0gYXR0ci5kZXZpY2VQaXhlbFJhdGlvOwotICAgIG5ld0NvbnN0cmFp
bnRzLmlzVXNlclNjYWxhYmxlID0gISFhdHRyLnVzZXJTY2FsYWJsZTsKLSAgICBuZXdDb25zdHJh
aW50cy5sYXlvdXRTaXplID0gYXR0ci5sYXlvdXRTaXplOwotCi0gICAgcS0+ZXhwZXJpbWVudGFs
KCktPnZpZXdwb3J0SW5mbygpLT5kaWRVcGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7Ci0KLSAg
ICAvLyBGSVhNRTogSWYgc3VzcGVuZGVkIHdlIHNob3VsZCBkbyB0aGlzIG9uIHJlc3VtZS4KLSAg
ICBpbnRlcmFjdGlvbkVuZ2luZS0+YXBwbHlDb25zdHJhaW50cyhuZXdDb25zdHJhaW50cyk7Cisg
ICAgLy8gRklYTUU6IFJldmlzZSB0aGlzLgorICAgIGludGVyYWN0aW9uRW5naW5lLT5yZXNldCgp
OworCisgICAgaW50ZXJhY3Rpb25FbmdpbmUtPnNldENvbnRlbnRUb0RldmljZVBpeGVsUmF0aW8o
YXR0ci5kZXZpY2VQaXhlbFJhdGlvKTsKKworICAgIGludGVyYWN0aW9uRW5naW5lLT5zZXRBbGxv
d3NVc2VyU2NhbGluZyghIWF0dHIudXNlclNjYWxhYmxlKTsKKyAgICBpbnRlcmFjdGlvbkVuZ2lu
ZS0+c2V0Q1NTU2NhbGVCb3VuZHMoYXR0ci5taW5pbXVtU2NhbGUsIGF0dHIubWF4aW11bVNjYWxl
KTsKKworICAgIGlmICghaW50ZXJhY3Rpb25FbmdpbmUtPmhhZFVzZXJJbnRlcmFjdGlvbigpICYm
ICFwYWdlSXNTdXNwZW5kZWQpCisgICAgICAgIGludGVyYWN0aW9uRW5naW5lLT5zZXRDU1NTY2Fs
ZShhdHRyLmluaXRpYWxTY2FsZSk7CisKKyAgICBxLT5leHBlcmltZW50YWwoKS0+dmlld3BvcnRJ
bmZvKCktPmRpZFVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMoYXR0cik7CisKKyAgICAvLyBJZiB0
aGUgd2ViIGFwcCBzdWNjZXNzaXZlbHkgY2hhbmdlcyB0aGUgdmlld3BvcnQgb24gcHVycG9zZQor
ICAgIC8vIGl0IHdhbnRzIHRvIGJlIGluIGNvbnRyb2wgYW5kIHdlIHNob3VsZCBkaXNhYmxlIGFu
aW1hdGlvbnMuCisgICAgaW50ZXJhY3Rpb25FbmdpbmUtPmVuc3VyZUNvbnRlbnRXaXRoaW5WaWV3
cG9ydEJvdW5kYXJ5KC8qaW1tZWRpYXRlKi8gdHJ1ZSk7CiB9CiAKIHZvaWQgUVF1aWNrV2ViVmll
d0ZsaWNrYWJsZVByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNwcAppbmRleCAyMjg2
M2JlMjlmMTFiNWEzMmVkMGYxZmQzNTE2NDI1ODVjMjAyNWY1Li4wNzRiY2E2NDFmNmM4NDUzZDM3
YjliYWQ0MGQzMDRjMTJlNjQ2N2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mby5jcHAKQEAgLTI4LDEyICsyOCwxNiBAQCBRV2Vi
Vmlld3BvcnRJbmZvOjpRV2ViVmlld3BvcnRJbmZvKFFRdWlja1dlYlZpZXdQcml2YXRlKiB3ZWJW
aWV3UHJpdmF0ZSwgUU9iamVjdAogICAgIDogUU9iamVjdChwYXJlbnQpCiAgICAgLCBtX3dlYlZp
ZXdQcml2YXRlKHdlYlZpZXdQcml2YXRlKQogewotCisgICAgLy8gRGVmYXVsdCB2YWx1ZXMgZm9y
IHRoZSBMZWdhY3kgdmlldy4KKyAgICBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gPSAxOwor
ICAgIGF0dHJpYnV0ZXMuaW5pdGlhbFNjYWxlID0gMTsKKyAgICBhdHRyaWJ1dGVzLm1pbmltdW1T
Y2FsZSA9IDE7CisgICAgYXR0cmlidXRlcy5tYXhpbXVtU2NhbGUgPSAxOworICAgIGF0dHJpYnV0
ZXMudXNlclNjYWxhYmxlID0gMDsKIH0KIAogUVdlYlZpZXdwb3J0SW5mbzo6flFXZWJWaWV3cG9y
dEluZm8oKQogewotCiB9CiAKIFFTaXplIFFXZWJWaWV3cG9ydEluZm86OmNvbnRlbnRzU2l6ZSgp
IGNvbnN0CkBAIC00Niw1NSArNTAsMzcgQEAgUVZhcmlhbnQgUVdlYlZpZXdwb3J0SW5mbzo6Y3Vy
cmVudFNjYWxlKCkgY29uc3QKICAgICBpZiAoUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiBp
bnRlcmFjdGlvbkVuZ2luZSA9IG1fd2ViVmlld1ByaXZhdGUtPnZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUoKSkKICAgICAgICAgcmV0dXJuIGludGVyYWN0aW9uRW5naW5lLT5jdXJyZW50Q1NTU2Nh
bGUoKTsKIAotICAgIHJldHVybiBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OkNvbnN0cmFp
bnRzKCkuaW5pdGlhbFNjYWxlOworICAgIHJldHVybiBhdHRyaWJ1dGVzLmluaXRpYWxTY2FsZTsK
IH0KIAogUVZhcmlhbnQgUVdlYlZpZXdwb3J0SW5mbzo6ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0
CiB7Ci0gICAgaWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25Fbmdp
bmUgPSBtX3dlYlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCi0gICAg
ICAgIHJldHVybiBpbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5kZXZpY2VQaXhlbFJh
dGlvOwotCi0gICAgcmV0dXJuIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6Q29uc3RyYWlu
dHMoKS5kZXZpY2VQaXhlbFJhdGlvOworICAgIHJldHVybiBhdHRyaWJ1dGVzLmRldmljZVBpeGVs
UmF0aW87CiB9CiAKIFFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86OmluaXRpYWxTY2FsZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25F
bmdpbmUgPSBtX3dlYlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCi0g
ICAgICAgIHJldHVybiBpbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5pbml0aWFsU2Nh
bGU7Ci0KLSAgICByZXR1cm4gUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50
cygpLmluaXRpYWxTY2FsZTsKKyAgICByZXR1cm4gYXR0cmlidXRlcy5pbml0aWFsU2NhbGU7CiB9
CiAKIFFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86Om1pbmltdW1TY2FsZSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25FbmdpbmUgPSBt
X3dlYlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCi0gICAgICAgIHJl
dHVybiBpbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5taW5pbXVtU2NhbGU7Ci0KLSAg
ICByZXR1cm4gUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cygpLm1pbmlt
dW1TY2FsZTsKKyAgICByZXR1cm4gYXR0cmlidXRlcy5taW5pbXVtU2NhbGU7CiB9CiAKIFFWYXJp
YW50IFFXZWJWaWV3cG9ydEluZm86Om1heGltdW1TY2FsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKFF0
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25FbmdpbmUgPSBtX3dlYlZpZXdQ
cml2YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCi0gICAgICAgIHJldHVybiBpbnRl
cmFjdGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5tYXhpbXVtU2NhbGU7Ci0KLSAgICByZXR1cm4g
UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cygpLm1heGltdW1TY2FsZTsK
KyAgICByZXR1cm4gYXR0cmlidXRlcy5tYXhpbXVtU2NhbGU7CiB9CiAKIFFWYXJpYW50IFFXZWJW
aWV3cG9ydEluZm86OmlzU2NhbGFibGUoKSBjb25zdAogewotICAgIGlmIChRdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUqIGludGVyYWN0aW9uRW5naW5lID0gbV93ZWJWaWV3UHJpdmF0ZS0+dmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgpKQotICAgICAgICByZXR1cm4gaW50ZXJhY3Rpb25Fbmdp
bmUtPmNvbnN0cmFpbnRzKCkuaXNVc2VyU2NhbGFibGU7Ci0KLSAgICByZXR1cm4gUXRWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cygpLmlzVXNlclNjYWxhYmxlOworICAgIHJl
dHVybiAhIWF0dHJpYnV0ZXMudXNlclNjYWxhYmxlOwogfQogCiBRVmFyaWFudCBRV2ViVmlld3Bv
cnRJbmZvOjpsYXlvdXRTaXplKCkgY29uc3QKIHsKLSAgICBpZiAoUXRWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lKiBpbnRlcmFjdGlvbkVuZ2luZSA9IG1fd2ViVmlld1ByaXZhdGUtPnZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmUoKSkKLSAgICAgICAgcmV0dXJuIGludGVyYWN0aW9uRW5naW5lLT5j
b25zdHJhaW50cygpLmxheW91dFNpemU7Ci0KLSAgICByZXR1cm4gUVZhcmlhbnQoUVNpemUoKSk7
CisgICAgcmV0dXJuIFFTaXplKGF0dHJpYnV0ZXMubGF5b3V0U2l6ZSk7CiB9CiAKIHZvaWQgUVdl
YlZpZXdwb3J0SW5mbzo6ZGlkVXBkYXRlQ29udGVudHNTaXplKCkKQEAgLTEwNyw4ICs5MywxMiBA
QCB2b2lkIFFXZWJWaWV3cG9ydEluZm86OmRpZFVwZGF0ZUN1cnJlbnRTY2FsZSgpCiAgICAgZW1p
dCBjdXJyZW50U2NhbGVVcGRhdGVkKCk7CiB9CiAKLXZvaWQgUVdlYlZpZXdwb3J0SW5mbzo6ZGlk
VXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygpCit2b2lkIFFXZWJWaWV3cG9ydEluZm86OmRpZFVw
ZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVz
JiBhdHRyKQogeworICAgIGF0dHJpYnV0ZXMgPSBhdHRyOworCiAgICAgZW1pdCB2aWV3cG9ydENv
bnN0cmFpbnRzVXBkYXRlZCgpOwogICAgIGVtaXQgY3VycmVudFNjYWxlVXBkYXRlZCgpOwogfQor
CisjaW5jbHVkZSAibW9jX3F3ZWJ2aWV3cG9ydGluZm9fcC5jcHAiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm9fcC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvX3AuaAppbmRleCBhYjQy
MmU0ZTczNWI5YzVlZjczNWRlNjY5ODg5N2E1MmYyNTk2NTczLi40ZTI2YzBhNTM1YjMwZWQ5Njc1
MmE0ZGE1MWM3YTE2MzI2NDcwOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm9fcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mb19wLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlIDxRdENvcmUvUVNpemU+CiAjaW5jbHVkZSA8UXRDb3JlL1FWYXJpYW50PgogI2luY2x1ZGUg
PFF0RGVjbGFyYXRpdmUvUXREZWNsYXJhdGl2ZT4KKyNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0
QXJndW1lbnRzLmg+CiAKIGNsYXNzIFFRdWlja1dlYlZpZXdQcml2YXRlOwogCkBAIC02MiwxMCAr
NjMsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRVcGRhdGVDb250ZW50c1NpemUoKTsKICAg
ICB2b2lkIGRpZFVwZGF0ZUN1cnJlbnRTY2FsZSgpOwotICAgIHZvaWQgZGlkVXBkYXRlVmlld3Bv
cnRDb25zdHJhaW50cygpOworICAgIHZvaWQgZGlkVXBkYXRlVmlld3BvcnRDb25zdHJhaW50cyhj
b25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKIAogcHJpdmF0ZToKICAgICBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZSogbV93ZWJWaWV3UHJpdmF0ZTsKKyAgICBXZWJDb3JlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKIH07CiAKICNlbmRpZiAvLyBxd2Vidmlld3BvcnRpbmZv
X3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAKaW5kZXggMWIyYzkzYWM5ODQ1M2M2N2I2MzQ4ZjczMTcx
Y2M3MDY3N2M1ODk2Zi4uYzlmNTczMmJiYTI5YjYyNWI4YWYxYjA0NWYzNTIxOTAyZThhNmMwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAKQEAgLTk0LDE3ICs5NCwxNyBAQCBwcml2YXRlOgogCiBp
bmxpbmUgcXJlYWwgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpjc3NTY2FsZUZyb21JdGVt
KHFyZWFsIGl0ZW1TY2FsZSkKIHsKLSAgICByZXR1cm4gaXRlbVNjYWxlIC8gbV9jb25zdHJhaW50
cy5kZXZpY2VQaXhlbFJhdGlvOworICAgIHJldHVybiBpdGVtU2NhbGUgLyBtX2RldmljZVBpeGVs
UmF0aW87CiB9CiAKIGlubGluZSBxcmVhbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6Oml0
ZW1TY2FsZUZyb21DU1MocXJlYWwgY3NzU2NhbGUpCiB7Ci0gICAgcmV0dXJuIGNzc1NjYWxlICog
bV9jb25zdHJhaW50cy5kZXZpY2VQaXhlbFJhdGlvOworICAgIHJldHVybiBjc3NTY2FsZSAqIG1f
ZGV2aWNlUGl4ZWxSYXRpbzsKIH0KIAogaW5saW5lIHFyZWFsIFF0Vmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZTo6aXRlbUNvb3JkRnJvbUNTUyhxcmVhbCB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFs
dWUgKiBtX2NvbnN0cmFpbnRzLmRldmljZVBpeGVsUmF0aW87CisgICAgcmV0dXJuIHZhbHVlICog
bV9kZXZpY2VQaXhlbFJhdGlvOwogfQogCiBpbmxpbmUgUVJlY3RGIFF0Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZTo6aXRlbVJlY3RGcm9tQ1NTKGNvbnN0IFFSZWN0RiYgY3NzUmVjdCkKQEAgLTE0
NywxNSArMTQ3LDE1IEBAIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6flF0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZSgpCiAKIHFyZWFsIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6
aW5uZXJCb3VuZGVkQ1NTU2NhbGUocXJlYWwgY3NzU2NhbGUpCiB7Ci0gICAgcmV0dXJuIHFCb3Vu
ZChtX2NvbnN0cmFpbnRzLm1pbmltdW1TY2FsZSwgY3NzU2NhbGUsIG1fY29uc3RyYWludHMubWF4
aW11bVNjYWxlKTsKKyAgICByZXR1cm4gcUJvdW5kKG1fbWluaW11bVNjYWxlLCBjc3NTY2FsZSwg
bV9tYXhpbXVtU2NhbGUpOwogfQogCiBxcmVhbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
Om91dGVyQm91bmRlZENTU1NjYWxlKHFyZWFsIGNzc1NjYWxlKQogewotICAgIGlmIChtX2NvbnN0
cmFpbnRzLmlzVXNlclNjYWxhYmxlKSB7CisgICAgaWYgKG1fYWxsb3dzVXNlclNjYWxpbmcpIHsK
ICAgICAgICAgLy8gQm91bmRlZCBieSBbMC4xLCAxMC4wXSBsaWtlIHRoZSB2aWV3cG9ydCBtZXRh
IGNvZGUgaW4gV2ViQ29yZS4KLSAgICAgICAgcXJlYWwgaGFyZE1pbiA9IHFNYXg8cXJlYWw+KDAu
MSwgcXJlYWwoMC41KSAqIG1fY29uc3RyYWludHMubWluaW11bVNjYWxlKTsKLSAgICAgICAgcXJl
YWwgaGFyZE1heCA9IHFNaW48cXJlYWw+KDEwLCBxcmVhbCgyLjApICogbV9jb25zdHJhaW50cy5t
YXhpbXVtU2NhbGUpOworICAgICAgICBxcmVhbCBoYXJkTWluID0gcU1heDxxcmVhbD4oMC4xLCBx
cmVhbCgwLjUpICogbV9taW5pbXVtU2NhbGUpOworICAgICAgICBxcmVhbCBoYXJkTWF4ID0gcU1p
bjxxcmVhbD4oMTAsIHFyZWFsKDIuMCkgKiBtX21heGltdW1TY2FsZSk7CiAgICAgICAgIHJldHVy
biBxQm91bmQoaGFyZE1pbiwgY3NzU2NhbGUsIGhhcmRNYXgpOwogICAgIH0KICAgICByZXR1cm4g
aW5uZXJCb3VuZGVkQ1NTU2NhbGUoY3NzU2NhbGUpOwpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQg
UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp6b29tVG9BcmVhR2VzdHVyZUVuZGVkKGNvbnN0
IFFQb2ludEYmIHRvdWNoUG9pCiAgICAgLy8gV2Ugd2FudCB0byBlbmQgdXAgd2l0aCB0aGUgdGFy
Z2V0IGFyZWEgZmlsbGluZyB0aGUgd2hvbGUgd2lkdGggb2YgdGhlIHZpZXdwb3J0IChpZiBwb3Nz
aWJsZSksCiAgICAgLy8gYW5kIGNlbnRyYWxpemVkIHZlcnRpY2FsbHkgd2hlcmUgdGhlIHVzZXIg
cmVxdWVzdGVkIHpvb20uIFRodXMgb3VyIGhvdHNwb3QgaXMgdGhlIGNlbnRlciBvZgogICAgIC8v
IHRoZSB0YXJnZXRBcmVhIHgtd2lzZSBhbmQgdGhlIHJlcXVlc3RlZCB6b29tIHBvc2l0aW9uLCB5
LXdpc2UuCi0gICAgY29uc3QgUVBvaW50RiBob3RzcG90ID0gUVBvaW50RihlbmRBcmVhLmNlbnRl
cigpLngoKSwgdG91Y2hQb2ludC55KCkgKiBtX2NvbnN0cmFpbnRzLmRldmljZVBpeGVsUmF0aW8p
OworICAgIGNvbnN0IFFQb2ludEYgaG90c3BvdCA9IFFQb2ludEYoZW5kQXJlYS5jZW50ZXIoKS54
KCksIHRvdWNoUG9pbnQueSgpICogbV9kZXZpY2VQaXhlbFJhdGlvKTsKICAgICBjb25zdCBRUG9p
bnRGIHZpZXdwb3J0SG90c3BvdCA9IHZpZXdwb3J0UmVjdC5jZW50ZXIoKTsKIAogICAgIFFQb2lu
dEYgZW5kUG9zaXRpb24gPSBob3RzcG90ICogZW5kSXRlbVNjYWxlIC0gdmlld3BvcnRIb3RzcG90
OwpAQCAtNDI1LDI1ICs0MjUsMTggQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OnJlc2V0KCkKICAgICBtX3Njcm9sbFVwZGF0ZURlZmVycmVyLmNsZWFyKCk7CiB9CiAKLXZvaWQg
UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IENvbnN0
cmFpbnRzJiBjb25zdHJhaW50cykKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpz
ZXRDU1NTY2FsZUJvdW5kcyhxcmVhbCBtaW5pbXVtLCBxcmVhbCBtYXhpbXVtKQogewotICAgIC8v
IFdlIGFsd2F5cyBoYXZlIHRvIGFwcGx5IHRoZSBjb25zdHJhaW5zIGV2ZW4gaWYgdGhleSBkaWRu
J3QgY2hhbmdlLCBhcwotICAgIC8vIHRoZSBpbml0aWFsIHNjYWxlIG1pZ2h0IG5lZWQgdG8gYmUg
YXBwbGllZC4KLQotICAgIHJlc2V0KCk7CisgICAgbV9taW5pbXVtU2NhbGUgPSBtaW5pbXVtOwor
ICAgIG1fbWF4aW11bVNjYWxlID0gbWF4aW11bTsKK30KIAordm9pZCBRdFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmU6OnNldENTU1NjYWxlKHFyZWFsIHNjYWxlKQorewogICAgIFZpZXdwb3J0VXBk
YXRlRGVmZXJyZXIgZ3VhcmQodGhpcyk7CiAKLSAgICBtX2NvbnN0cmFpbnRzID0gY29uc3RyYWlu
dHM7Ci0KLSAgICBpZiAoIW1faGFkVXNlckludGVyYWN0aW9uKSB7Ci0gICAgICAgIHFyZWFsIGlu
aXRpYWxTY2FsZSA9IGlubmVyQm91bmRlZENTU1NjYWxlKG1fY29uc3RyYWludHMuaW5pdGlhbFNj
YWxlKTsKLSAgICAgICAgbV9jb250ZW50LT5zZXRDb250ZW50c1NjYWxlKGl0ZW1TY2FsZUZyb21D
U1MoaW5pdGlhbFNjYWxlKSk7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIHdlYiBhcHAgc3VjY2Vz
c2l2ZWx5IGNoYW5nZXMgdGhlIHZpZXdwb3J0IG9uIHB1cnBvc2UKLSAgICAvLyBpdCB3YW50cyB0
byBiZSBpbiBjb250cm9sIGFuZCB3ZSBzaG91bGQgZGlzYWJsZSBhbmltYXRpb25zLgotICAgIGVu
c3VyZUNvbnRlbnRXaXRoaW5WaWV3cG9ydEJvdW5kYXJ5KC8qIGltbWVkaWF0ZSAqLyB0cnVlKTsK
KyAgICBxcmVhbCBuZXdTY2FsZSA9IGlubmVyQm91bmRlZENTU1NjYWxlKHNjYWxlKTsKKyAgICBt
X2NvbnRlbnQtPnNldENvbnRlbnRzU2NhbGUoaXRlbVNjYWxlRnJvbUNTUyhuZXdTY2FsZSkpOwog
fQogCiBxcmVhbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmN1cnJlbnRDU1NTY2FsZSgp
CkBAIC01MjMsNyArNTE2LDcgQEAgYm9vbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBp
bmNoR2VzdHVyZUFjdGl2ZSgpIGNvbnN0CiAKIHZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lOjpwaW5jaEdlc3R1cmVTdGFydGVkKGNvbnN0IFFQb2ludEYmIHBpbmNoQ2VudGVySW5WaWV3
cG9ydENvb3JkaW5hdGVzKQogewotICAgIGlmICghbV9jb25zdHJhaW50cy5pc1VzZXJTY2FsYWJs
ZSkKKyAgICBpZiAoIW1fYWxsb3dzVXNlclNjYWxpbmcpCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1faGFkVXNlckludGVyYWN0aW9uID0gdHJ1ZTsKQEAgLTU0MSw3ICs1MzQsNyBAQCB2b2lkIFF0
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZShjb25z
dCBRUG9pbnRGJiBwaW5jaAogewogICAgIEFTU0VSVChtX3N1c3BlbmRDb3VudCk7CiAKLSAgICBp
ZiAoIW1fY29uc3RyYWludHMuaXNVc2VyU2NhbGFibGUpCisgICAgaWYgKCFtX2FsbG93c1VzZXJT
Y2FsaW5nKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyAgQ2hhbmdlcyBvZiB0aGUgY2VudGVy
IHBvc2l0aW9uIHNob3VsZCBtb3ZlIHRoZSBwYWdlIGV2ZW4gaWYgdGhlIHpvb20gZmFjdG9yCkBA
IC01NjMsNyArNTU2LDcgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNo
R2VzdHVyZUVuZGVkKCkKIHsKICAgICBBU1NFUlQobV9zdXNwZW5kQ291bnQpOwogCi0gICAgaWYg
KCFtX2NvbnN0cmFpbnRzLmlzVXNlclNjYWxhYmxlKQorICAgIGlmICghbV9hbGxvd3NVc2VyU2Nh
bGluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9waW5jaFN0YXJ0U2NhbGUgPSAtMTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUuaAppbmRleCAxNWMzMjE2ZGQ5ZGVlMDExZTI1NjI0Yzg4Nzg3MjNiZWQxY2Rh
ZGYyLi5mNDBiM2QzMjMwZjFmYWQ5NTQyODVhNDkxN2VmMmFlMGUzZjQxNDIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZS5oCkBAIC00OSwyNiArNDksMTkgQEAgcHVibGljOgogICAgIFF0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZShRUXVpY2tXZWJWaWV3KiwgUVF1aWNrV2ViUGFnZSopOwogICAgIH5RdFZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoKTsKIAotICAgIHN0cnVjdCBDb25zdHJhaW50cyB7Ci0g
ICAgICAgIENvbnN0cmFpbnRzKCkKLSAgICAgICAgICAgIDogaW5pdGlhbFNjYWxlKDEuMCkKLSAg
ICAgICAgICAgICwgbWluaW11bVNjYWxlKDAuMjUpCi0gICAgICAgICAgICAsIG1heGltdW1TY2Fs
ZSgxLjgpCi0gICAgICAgICAgICAsIGRldmljZVBpeGVsUmF0aW8oMS4wKQotICAgICAgICAgICAg
LCBpc1VzZXJTY2FsYWJsZSh0cnVlKQotICAgICAgICAgICAgLCBsYXlvdXRTaXplKFFTaXplKCkp
Ci0gICAgICAgIHsgfQorICAgIHZvaWQgcmVzZXQoKTsKIAotICAgICAgICBxcmVhbCBpbml0aWFs
U2NhbGU7Ci0gICAgICAgIHFyZWFsIG1pbmltdW1TY2FsZTsKLSAgICAgICAgcXJlYWwgbWF4aW11
bVNjYWxlOwotICAgICAgICBxcmVhbCBkZXZpY2VQaXhlbFJhdGlvOwotICAgICAgICBib29sIGlz
VXNlclNjYWxhYmxlOwotICAgICAgICBRU2l6ZSBsYXlvdXRTaXplOwotICAgIH07CisgICAgYm9v
bCBoYWRVc2VySW50ZXJhY3Rpb24oKSB7IHJldHVybiBtX2hhZFVzZXJJbnRlcmFjdGlvbjsgfQog
Ci0gICAgdm9pZCByZXNldCgpOwotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBDb25z
dHJhaW50cyYpOworICAgIHZvaWQgc2V0Q1NTU2NhbGVCb3VuZHMocXJlYWwgbWluaW11bSwgcXJl
YWwgbWF4aW11bSk7CisgICAgdm9pZCBzZXRDU1NTY2FsZShxcmVhbCk7CisKKyAgICBxcmVhbCBj
dXJyZW50Q1NTU2NhbGUoKTsKKworICAgIGJvb2wgZW5zdXJlQ29udGVudFdpdGhpblZpZXdwb3J0
Qm91bmRhcnkoYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CisKKyAgICB2b2lkIHNldEFsbG93c1Vz
ZXJTY2FsaW5nKGJvb2wgYWxsb3cpIHsgbV9hbGxvd3NVc2VyU2NhbGluZyA9IGFsbG93OyB9Cisg
ICAgdm9pZCBzZXRDb250ZW50VG9EZXZpY2VQaXhlbFJhdGlvKHFyZWFsIHJhdGlvKSB7bV9kZXZp
Y2VQaXhlbFJhdGlvID0gcmF0aW87IH0KIAogICAgIHZvaWQgc2V0SXRlbVJlY3RWaXNpYmxlKGNv
bnN0IFFSZWN0RiYpOwogICAgIGJvb2wgYW5pbWF0ZUl0ZW1SZWN0VmlzaWJsZShjb25zdCBRUmVj
dEYmKTsKQEAgLTk4LDkgKzkxLDYgQEAgcHVibGljOgogICAgIHZvaWQgem9vbVRvQXJlYUdlc3R1
cmVFbmRlZChjb25zdCBRUG9pbnRGJiB0b3VjaFBvaW50LCBjb25zdCBRUmVjdEYmIHRhcmdldEFy
ZWEpOwogICAgIHZvaWQgZm9jdXNFZGl0YWJsZUFyZWEoY29uc3QgUVJlY3RGJiBjYXJldEFyZWEs
IGNvbnN0IFFSZWN0RiYgdGFyZ2V0QXJlYSk7CiAKLSAgICBjb25zdCBDb25zdHJhaW50cyYgY29u
c3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnRzOyB9Ci0gICAgcXJlYWwgY3Vy
cmVudENTU1NjYWxlKCk7Ci0KIFFfU0lHTkFMUzoKICAgICB2b2lkIGNvbnRlbnRTdXNwZW5kUmVx
dWVzdGVkKCk7CiAgICAgdm9pZCBjb250ZW50UmVzdW1lUmVxdWVzdGVkKCk7CkBAIC0xMjQsNiAr
MTE0LDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBW
aWV3cG9ydFVwZGF0ZURlZmVycmVyOworICAgIGZyaWVuZCBjbGFzcyBRV2ViVmlld3BvcnRJbmZv
OwogCiAgICAgcXJlYWwgY3NzU2NhbGVGcm9tSXRlbShxcmVhbCk7CiAgICAgcXJlYWwgaXRlbVNj
YWxlRnJvbUNTUyhxcmVhbCk7CkBAIC0xMzMsMTYgKzEyNCwyMCBAQCBwcml2YXRlOgogICAgIHFy
ZWFsIGlubmVyQm91bmRlZENTU1NjYWxlKHFyZWFsKTsKICAgICBxcmVhbCBvdXRlckJvdW5kZWRD
U1NTY2FsZShxcmVhbCk7CiAKKyAgICBib29sIG1fYWxsb3dzVXNlclNjYWxpbmc7CisgICAgcXJl
YWwgbV9taW5pbXVtU2NhbGU7CisgICAgcXJlYWwgbV9tYXhpbXVtU2NhbGU7CisgICAgcXJlYWwg
bV9kZXZpY2VQaXhlbFJhdGlvOworCisgICAgUVNpemUgbV9sYXlvdXRTaXplOworCiAgICAgUVJl
Y3RGIGNvbXB1dGVQb3NSYW5nZUZvckl0ZW1BdFNjYWxlKHFyZWFsIGl0ZW1TY2FsZSkgY29uc3Q7
Ci0gICAgYm9vbCBlbnN1cmVDb250ZW50V2l0aGluVmlld3BvcnRCb3VuZGFyeShib29sIGltbWVk
aWF0ZSA9IGZhbHNlKTsKIAogICAgIHZvaWQgc2NhbGVDb250ZW50KGNvbnN0IFFQb2ludEYmIGNl
bnRlckluQ1NTQ29vcmRpbmF0ZXMsIHFyZWFsIGNzc1NjYWxlKTsKIAogICAgIFFRdWlja1dlYlZp
ZXcqIGNvbnN0IG1fdmlld3BvcnQ7CiAgICAgUVF1aWNrV2ViUGFnZSogY29uc3QgbV9jb250ZW50
OwogCi0gICAgQ29uc3RyYWludHMgbV9jb25zdHJhaW50czsKLQogICAgIGludCBtX3N1c3BlbmRD
b3VudDsKICAgICBib29sIG1faGFzU3VzcGVuZGVkQ29udGVudDsKICAgICBPd25QdHI8Vmlld3Bv
cnRVcGRhdGVEZWZlcnJlcj4gbV9zY2FsZVVwZGF0ZURlZmVycmVyOwpAQCAtMTY2LDE0ICsxNjEs
NiBAQCBwcml2YXRlOgogICAgIHFyZWFsIG1fcGluY2hTdGFydFNjYWxlOwogfTsKIAotaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OkNvbnN0
cmFpbnRzJiBhLCBjb25zdCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OkNvbnN0cmFpbnRz
JiBiKQotewotICAgIHJldHVybiBhLmluaXRpYWxTY2FsZSA9PSBiLmluaXRpYWxTY2FsZQotICAg
ICAgICAgICAgJiYgYS5taW5pbXVtU2NhbGUgPT0gYi5taW5pbXVtU2NhbGUKLSAgICAgICAgICAg
ICYmIGEubWF4aW11bVNjYWxlID09IGIubWF4aW11bVNjYWxlCi0gICAgICAgICAgICAmJiBhLmlz
VXNlclNjYWxhYmxlID09IGIuaXNVc2VyU2NhbGFibGU7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFF0
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137324</attachid>
            <date>2012-04-16 05:14:38 -0700</date>
            <delta_ts>2012-04-16 06:27:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83895-20120416140526.patch</filename>
            <type>text/plain</type>
            <size>17689</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjYyZTQ2ZjYzMGQ1N2Nh
NjllYTNhMTJiOWM0OTNjODkwMjc1YWYxMS4uZGJmYTMxYWJmYWQ5YjFlZGQ3Y2FhMGVhNDkxYTcx
Zjc4MzRjZjcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA0LTE2ICBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBb
UXRdIENsZWFuIHVwIGhvdyB0aGUgaW50ZXJhY3Rpb24gZW5naW5lIGlzIG1ha2luZyB1c2Ugb2Yg
Vmlld3BvcnRBdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04Mzg5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlZmFjdG9yIG5vdyB0aGUgaW50ZXJhY3Rpb24gZW5naW5lIGlzIHVzaW5nIHRo
ZSBWaWV3cG9ydEF0dHJpYnV0ZXMKKyAgICAgICAgYW5kIGdldCByaWQgb2YgdGhlIENvbnRyYWlu
dHMgc3ViY2xhc3MuCisKKyAgICAgICAgUHVzaCB0aGUgVmlld3BvcnRBdHRyaWJ1dGVzIHRocm91
Z2ggdG8gdGhlIFFRdWlja1dlYlZpZXdQcml2YXRlIGNsYXNzCisgICAgICAgIGFuZCBhZGQgc29t
ZSBkZWZhdWx0IHZhbHVlcyBpbiB0aGUgY2FzZSB0aGUgTGVnYWN5IHZpZXcgaXMgdXNlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6UVF1aWNrV2ViVmlld0xlZ2FjeVByaXZhdGUpOgor
ICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6OmRpZENoYW5nZVZpZXdwb3J0
UHJvcGVydGllcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3Bf
cC5oOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mby5jcHA6CisgICAgICAgIChRV2ViVmlld3BvcnRJbmZv
OjpRV2ViVmlld3BvcnRJbmZvKToKKyAgICAgICAgKFFXZWJWaWV3cG9ydEluZm86On5RV2ViVmll
d3BvcnRJbmZvKToKKyAgICAgICAgKFFXZWJWaWV3cG9ydEluZm86OmN1cnJlbnRTY2FsZSk6Cisg
ICAgICAgIChRV2ViVmlld3BvcnRJbmZvOjpkZXZpY2VQaXhlbFJhdGlvKToKKyAgICAgICAgKFFX
ZWJWaWV3cG9ydEluZm86OmluaXRpYWxTY2FsZSk6CisgICAgICAgIChRV2ViVmlld3BvcnRJbmZv
OjptaW5pbXVtU2NhbGUpOgorICAgICAgICAoUVdlYlZpZXdwb3J0SW5mbzo6bWF4aW11bVNjYWxl
KToKKyAgICAgICAgKFFXZWJWaWV3cG9ydEluZm86OmlzU2NhbGFibGUpOgorICAgICAgICAoUVdl
YlZpZXdwb3J0SW5mbzo6bGF5b3V0U2l6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0Vmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6Y3NzU2NhbGVGcm9tSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlF0
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6aXRlbVNjYWxlRnJvbUNTUyk6CisgICAgICAgIChX
ZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6aXRlbUNvb3JkRnJvbUNTUyk6Cisg
ICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6aW5uZXJCb3VuZGVk
Q1NTU2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
Om91dGVyQm91bmRlZENTU1NjYWxlKToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lOjp6b29tVG9BcmVhR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6
UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpzZXRDU1NTY2FsZUJvdW5kcyk6CisgICAgICAg
IChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6c2V0Q1NTU2NhbGUpOgorICAg
ICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZVN0
YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBp
bmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
cXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmg6CisgICAgICAgIChRdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmU6OmhhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6c2V0QWxsb3dzVXNlclNjYWxpbmcpOgorICAgICAgICAoV2ViS2l0
OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNldENvbnRlbnRUb0RldmljZVBpeGVsUmF0
aW8pOgorCiAyMDEyLTA0LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXSBVc2UgR1JlZlB0ciB0byBkZWxldGUgdGhlIGRlZmF1bHQg
d2ViIGNvbnRleHQgaW4gV2ViS2l0MiBHVEsrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCA2ZjkxOWE5ZWVjMjMxMjkyMTdjZmEy
NGI2ZDE1ZWJhOTIyZDBlMWU5Li4yYjBjNWY5NmJkY2Y0ZWY3NGRlNjk0OWI3ODEwMjU1OGFkYmJk
NWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
dmlldy5jcHAKQEAgLTQ4MSw2ICs0ODEsMTIgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJgogUVF1
aWNrV2ViVmlld0xlZ2FjeVByaXZhdGU6OlFRdWlja1dlYlZpZXdMZWdhY3lQcml2YXRlKFFRdWlj
a1dlYlZpZXcqIHZpZXdwb3J0KQogICAgIDogUVF1aWNrV2ViVmlld1ByaXZhdGUodmlld3BvcnQp
CiB7CisgICAgLy8gRGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBMZWdhY3kgdmlldy4KKyAgICBhdHRy
aWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gPSAxOworICAgIGF0dHJpYnV0ZXMuaW5pdGlhbFNjYWxl
ID0gMTsKKyAgICBhdHRyaWJ1dGVzLm1pbmltdW1TY2FsZSA9IDE7CisgICAgYXR0cmlidXRlcy5t
YXhpbXVtU2NhbGUgPSAxOworICAgIGF0dHJpYnV0ZXMudXNlclNjYWxhYmxlID0gMDsKIH0KIAog
dm9pZCBRUXVpY2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6aW5pdGlhbGl6ZShXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQpAQCAtNjE0LDI5ICs2MjAs
MzUgQEAgdm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6ZGlkRmluaXNoRmlyc3RO
b25FbXB0eUxheW91dCgpCiB7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZh
dGU6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRl
OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzJiBuZXdBdHRyaWJ1dGVzKQogewogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKIAogICAg
IFFTaXplIHZpZXdwb3J0U2l6ZSA9IHEtPmJvdW5kaW5nUmVjdCgpLnNpemUoKS50b1NpemUoKTsK
IAogICAgIC8vIEZJWE1FOiBSZXZpc2UgdGhlc2Ugd2hlbiBpbXBsZW1lbnRpbmcgZml0LXRvLXdp
ZHRoLgotICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyID0gYXR0cmlidXRlczsK
KyAgICBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgYXR0ciA9IG5ld0F0dHJpYnV0ZXM7CiAg
ICAgV2ViQ29yZTo6cmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZShhdHRy
LCB2aWV3cG9ydFNpemUpOwogICAgIFdlYkNvcmU6OnJlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRp
YWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKGF0dHIpOwogCi0gICAgUXRWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjpDb25zdHJhaW50cyBuZXdDb25zdHJhaW50czsKLSAgICBuZXdDb25zdHJhaW50
cy5pbml0aWFsU2NhbGUgPSBhdHRyLmluaXRpYWxTY2FsZTsKLSAgICBuZXdDb25zdHJhaW50cy5t
aW5pbXVtU2NhbGUgPSBhdHRyLm1pbmltdW1TY2FsZTsKLSAgICBuZXdDb25zdHJhaW50cy5tYXhp
bXVtU2NhbGUgPSBhdHRyLm1heGltdW1TY2FsZTsKLSAgICBuZXdDb25zdHJhaW50cy5kZXZpY2VQ
aXhlbFJhdGlvID0gYXR0ci5kZXZpY2VQaXhlbFJhdGlvOwotICAgIG5ld0NvbnN0cmFpbnRzLmlz
VXNlclNjYWxhYmxlID0gISFhdHRyLnVzZXJTY2FsYWJsZTsKLSAgICBuZXdDb25zdHJhaW50cy5s
YXlvdXRTaXplID0gYXR0ci5sYXlvdXRTaXplOworICAgIC8vIEZJWE1FOiBSZXNldHRpbmcgaGVy
ZSBjYW4gcmVzZXQgbW9yZSB0aGFuIG5lZWRlZC4gRm9yIGluc3RhbmNlIGl0IHdpbGwgZW5kIGRl
ZmVycmVycy4KKyAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIHJldmlzZWQgYXQgc29tZSBwb2ludC4K
KyAgICBpbnRlcmFjdGlvbkVuZ2luZS0+cmVzZXQoKTsKIAorICAgIGludGVyYWN0aW9uRW5naW5l
LT5zZXRDb250ZW50VG9EZXZpY2VQaXhlbFJhdGlvKGF0dHIuZGV2aWNlUGl4ZWxSYXRpbyk7CisK
KyAgICBpbnRlcmFjdGlvbkVuZ2luZS0+c2V0QWxsb3dzVXNlclNjYWxpbmcoISFhdHRyLnVzZXJT
Y2FsYWJsZSk7CisgICAgaW50ZXJhY3Rpb25FbmdpbmUtPnNldENTU1NjYWxlQm91bmRzKGF0dHIu
bWluaW11bVNjYWxlLCBhdHRyLm1heGltdW1TY2FsZSk7CisKKyAgICBpZiAoIWludGVyYWN0aW9u
RW5naW5lLT5oYWRVc2VySW50ZXJhY3Rpb24oKSAmJiAhcGFnZUlzU3VzcGVuZGVkKQorICAgICAg
ICBpbnRlcmFjdGlvbkVuZ2luZS0+c2V0Q1NTU2NhbGUoYXR0ci5pbml0aWFsU2NhbGUpOworCisg
ICAgdGhpcy0+YXR0cmlidXRlcyA9IGF0dHI7CiAgICAgcS0+ZXhwZXJpbWVudGFsKCktPnZpZXdw
b3J0SW5mbygpLT5kaWRVcGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7CiAKLSAgICAvLyBGSVhN
RTogSWYgc3VzcGVuZGVkIHdlIHNob3VsZCBkbyB0aGlzIG9uIHJlc3VtZS4KLSAgICBpbnRlcmFj
dGlvbkVuZ2luZS0+YXBwbHlDb25zdHJhaW50cyhuZXdDb25zdHJhaW50cyk7CisgICAgLy8gSWYg
dGhlIHdlYiBhcHAgc3VjY2Vzc2l2ZWx5IGNoYW5nZXMgdGhlIHZpZXdwb3J0IG9uIHB1cnBvc2UK
KyAgICAvLyBpdCB3YW50cyB0byBiZSBpbiBjb250cm9sIGFuZCB3ZSBzaG91bGQgZGlzYWJsZSBh
bmltYXRpb25zLgorICAgIGludGVyYWN0aW9uRW5naW5lLT5lbnN1cmVDb250ZW50V2l0aGluVmll
d3BvcnRCb3VuZGFyeSgvKmltbWVkaWF0ZSovIHRydWUpOwogfQogCiB2b2lkIFFRdWlja1dlYlZp
ZXdGbGlja2FibGVQcml2YXRlOjp1cGRhdGVWaWV3cG9ydFNpemUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IDIyYzU5
OTY5ZTQ2OTdhNDRhNjk0Y2RhNDIyYzhiOTgxYzkzOGFjZDcuLmFkN2IyZDAzOTk5NGQ1MGU0NjZm
M2MxNGI2ZmQ1ZDgzMmY4Y2IyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1
ZGUgPFF0Q29yZS9RT2JqZWN0PgogI2luY2x1ZGUgPFF0Q29yZS9RU2NvcGVkUG9pbnRlcj4KKyNp
bmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMTYwLDYgKzE2MSw4IEBAIHByb3Rl
Y3RlZDoKICAgICBRRGVjbGFyYXRpdmVDb21wb25lbnQqIGZpbGVQaWNrZXI7CiAgICAgUURlY2xh
cmF0aXZlQ29tcG9uZW50KiBkYXRhYmFzZVF1b3RhRGlhbG9nOwogCisgICAgV2ViQ29yZTo6Vmll
d3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisKICAgICBib29sIG1fdXNlRGVmYXVsdENvbnRl
bnRJdGVtU2l6ZTsKICAgICBib29sIG1fbmF2aWdhdG9yUXRPYmplY3RFbmFibGVkOwogICAgIGJv
b2wgbV9yZW5kZXJUb09mZnNjcmVlbkJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwCmluZGV4IDIyODYzYmUyOWYxMWI1
YTMyZWQwZjFmZDM1MTY0MjU4NWMyMDI1ZjUuLjYzNzBiODA1NjkyMTAwMzU0N2QxZWQyOWEwNTEw
YjI0NThkOWYyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXdlYnZpZXdwb3J0aW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2Vidmlld3BvcnRpbmZvLmNwcApAQCAtMjgsMTIgKzI4LDEwIEBAIFFXZWJWaWV3cG9ydElu
Zm86OlFXZWJWaWV3cG9ydEluZm8oUVF1aWNrV2ViVmlld1ByaXZhdGUqIHdlYlZpZXdQcml2YXRl
LCBRT2JqZWN0CiAgICAgOiBRT2JqZWN0KHBhcmVudCkKICAgICAsIG1fd2ViVmlld1ByaXZhdGUo
d2ViVmlld1ByaXZhdGUpCiB7Ci0KIH0KIAogUVdlYlZpZXdwb3J0SW5mbzo6flFXZWJWaWV3cG9y
dEluZm8oKQogewotCiB9CiAKIFFTaXplIFFXZWJWaWV3cG9ydEluZm86OmNvbnRlbnRzU2l6ZSgp
IGNvbnN0CkBAIC00Niw1NSArNDQsMzcgQEAgUVZhcmlhbnQgUVdlYlZpZXdwb3J0SW5mbzo6Y3Vy
cmVudFNjYWxlKCkgY29uc3QKICAgICBpZiAoUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiBp
bnRlcmFjdGlvbkVuZ2luZSA9IG1fd2ViVmlld1ByaXZhdGUtPnZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUoKSkKICAgICAgICAgcmV0dXJuIGludGVyYWN0aW9uRW5naW5lLT5jdXJyZW50Q1NTU2Nh
bGUoKTsKIAotICAgIHJldHVybiBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OkNvbnN0cmFp
bnRzKCkuaW5pdGlhbFNjYWxlOworICAgIHJldHVybiBtX3dlYlZpZXdQcml2YXRlLT5hdHRyaWJ1
dGVzLmluaXRpYWxTY2FsZTsKIH0KIAogUVZhcmlhbnQgUVdlYlZpZXdwb3J0SW5mbzo6ZGV2aWNl
UGl4ZWxSYXRpbygpIGNvbnN0CiB7Ci0gICAgaWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZSogaW50ZXJhY3Rpb25FbmdpbmUgPSBtX3dlYlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0
aW9uRW5naW5lKCkpCi0gICAgICAgIHJldHVybiBpbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWlu
dHMoKS5kZXZpY2VQaXhlbFJhdGlvOwotCi0gICAgcmV0dXJuIFF0Vmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZTo6Q29uc3RyYWludHMoKS5kZXZpY2VQaXhlbFJhdGlvOworICAgIHJldHVybiBtX3dl
YlZpZXdQcml2YXRlLT5hdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87CiB9CiAKIFFWYXJpYW50
IFFXZWJWaWV3cG9ydEluZm86OmluaXRpYWxTY2FsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKFF0Vmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25FbmdpbmUgPSBtX3dlYlZpZXdQcml2
YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCi0gICAgICAgIHJldHVybiBpbnRlcmFj
dGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5pbml0aWFsU2NhbGU7Ci0KLSAgICByZXR1cm4gUXRW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cygpLmluaXRpYWxTY2FsZTsKKyAg
ICByZXR1cm4gbV93ZWJWaWV3UHJpdmF0ZS0+YXR0cmlidXRlcy5pbml0aWFsU2NhbGU7CiB9CiAK
IFFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86Om1pbmltdW1TY2FsZSgpIGNvbnN0CiB7Ci0gICAg
aWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25FbmdpbmUgPSBtX3dl
YlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCi0gICAgICAgIHJldHVy
biBpbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5taW5pbXVtU2NhbGU7Ci0KLSAgICBy
ZXR1cm4gUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cygpLm1pbmltdW1T
Y2FsZTsKKyAgICByZXR1cm4gbV93ZWJWaWV3UHJpdmF0ZS0+YXR0cmlidXRlcy5taW5pbXVtU2Nh
bGU7CiB9CiAKIFFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86Om1heGltdW1TY2FsZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25Fbmdp
bmUgPSBtX3dlYlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCi0gICAg
ICAgIHJldHVybiBpbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5tYXhpbXVtU2NhbGU7
Ci0KLSAgICByZXR1cm4gUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cygp
Lm1heGltdW1TY2FsZTsKKyAgICByZXR1cm4gbV93ZWJWaWV3UHJpdmF0ZS0+YXR0cmlidXRlcy5t
YXhpbXVtU2NhbGU7CiB9CiAKIFFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86OmlzU2NhbGFibGUo
KSBjb25zdAogewotICAgIGlmIChRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIGludGVyYWN0
aW9uRW5naW5lID0gbV93ZWJWaWV3UHJpdmF0ZS0+dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgp
KQotICAgICAgICByZXR1cm4gaW50ZXJhY3Rpb25FbmdpbmUtPmNvbnN0cmFpbnRzKCkuaXNVc2Vy
U2NhbGFibGU7Ci0KLSAgICByZXR1cm4gUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25z
dHJhaW50cygpLmlzVXNlclNjYWxhYmxlOworICAgIHJldHVybiAhIW1fd2ViVmlld1ByaXZhdGUt
PmF0dHJpYnV0ZXMudXNlclNjYWxhYmxlOwogfQogCiBRVmFyaWFudCBRV2ViVmlld3BvcnRJbmZv
OjpsYXlvdXRTaXplKCkgY29uc3QKIHsKLSAgICBpZiAoUXRWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lKiBpbnRlcmFjdGlvbkVuZ2luZSA9IG1fd2ViVmlld1ByaXZhdGUtPnZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUoKSkKLSAgICAgICAgcmV0dXJuIGludGVyYWN0aW9uRW5naW5lLT5jb25zdHJh
aW50cygpLmxheW91dFNpemU7Ci0KLSAgICByZXR1cm4gUVZhcmlhbnQoUVNpemUoKSk7CisgICAg
cmV0dXJuIFFTaXplKG1fd2ViVmlld1ByaXZhdGUtPmF0dHJpYnV0ZXMubGF5b3V0U2l6ZSk7CiB9
CiAKIHZvaWQgUVdlYlZpZXdwb3J0SW5mbzo6ZGlkVXBkYXRlQ29udGVudHNTaXplKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZS5jcHAKaW5kZXggMWIyYzkzYWM5ODQ1M2M2N2I2MzQ4ZjczMTcxY2M3MDY3N2M1
ODk2Zi4uYzlmNTczMmJiYTI5YjYyNWI4YWYxYjA0NWYzNTIxOTAyZThhNmMwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZS5jcHAKQEAgLTk0LDE3ICs5NCwxNyBAQCBwcml2YXRlOgogCiBpbmxpbmUgcXJl
YWwgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpjc3NTY2FsZUZyb21JdGVtKHFyZWFsIGl0
ZW1TY2FsZSkKIHsKLSAgICByZXR1cm4gaXRlbVNjYWxlIC8gbV9jb25zdHJhaW50cy5kZXZpY2VQ
aXhlbFJhdGlvOworICAgIHJldHVybiBpdGVtU2NhbGUgLyBtX2RldmljZVBpeGVsUmF0aW87CiB9
CiAKIGlubGluZSBxcmVhbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6Oml0ZW1TY2FsZUZy
b21DU1MocXJlYWwgY3NzU2NhbGUpCiB7Ci0gICAgcmV0dXJuIGNzc1NjYWxlICogbV9jb25zdHJh
aW50cy5kZXZpY2VQaXhlbFJhdGlvOworICAgIHJldHVybiBjc3NTY2FsZSAqIG1fZGV2aWNlUGl4
ZWxSYXRpbzsKIH0KIAogaW5saW5lIHFyZWFsIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6
aXRlbUNvb3JkRnJvbUNTUyhxcmVhbCB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUgKiBtX2Nv
bnN0cmFpbnRzLmRldmljZVBpeGVsUmF0aW87CisgICAgcmV0dXJuIHZhbHVlICogbV9kZXZpY2VQ
aXhlbFJhdGlvOwogfQogCiBpbmxpbmUgUVJlY3RGIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6aXRlbVJlY3RGcm9tQ1NTKGNvbnN0IFFSZWN0RiYgY3NzUmVjdCkKQEAgLTE0NywxNSArMTQ3
LDE1IEBAIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6flF0Vmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZSgpCiAKIHFyZWFsIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6aW5uZXJCb3Vu
ZGVkQ1NTU2NhbGUocXJlYWwgY3NzU2NhbGUpCiB7Ci0gICAgcmV0dXJuIHFCb3VuZChtX2NvbnN0
cmFpbnRzLm1pbmltdW1TY2FsZSwgY3NzU2NhbGUsIG1fY29uc3RyYWludHMubWF4aW11bVNjYWxl
KTsKKyAgICByZXR1cm4gcUJvdW5kKG1fbWluaW11bVNjYWxlLCBjc3NTY2FsZSwgbV9tYXhpbXVt
U2NhbGUpOwogfQogCiBxcmVhbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6Om91dGVyQm91
bmRlZENTU1NjYWxlKHFyZWFsIGNzc1NjYWxlKQogewotICAgIGlmIChtX2NvbnN0cmFpbnRzLmlz
VXNlclNjYWxhYmxlKSB7CisgICAgaWYgKG1fYWxsb3dzVXNlclNjYWxpbmcpIHsKICAgICAgICAg
Ly8gQm91bmRlZCBieSBbMC4xLCAxMC4wXSBsaWtlIHRoZSB2aWV3cG9ydCBtZXRhIGNvZGUgaW4g
V2ViQ29yZS4KLSAgICAgICAgcXJlYWwgaGFyZE1pbiA9IHFNYXg8cXJlYWw+KDAuMSwgcXJlYWwo
MC41KSAqIG1fY29uc3RyYWludHMubWluaW11bVNjYWxlKTsKLSAgICAgICAgcXJlYWwgaGFyZE1h
eCA9IHFNaW48cXJlYWw+KDEwLCBxcmVhbCgyLjApICogbV9jb25zdHJhaW50cy5tYXhpbXVtU2Nh
bGUpOworICAgICAgICBxcmVhbCBoYXJkTWluID0gcU1heDxxcmVhbD4oMC4xLCBxcmVhbCgwLjUp
ICogbV9taW5pbXVtU2NhbGUpOworICAgICAgICBxcmVhbCBoYXJkTWF4ID0gcU1pbjxxcmVhbD4o
MTAsIHFyZWFsKDIuMCkgKiBtX21heGltdW1TY2FsZSk7CiAgICAgICAgIHJldHVybiBxQm91bmQo
aGFyZE1pbiwgY3NzU2NhbGUsIGhhcmRNYXgpOwogICAgIH0KICAgICByZXR1cm4gaW5uZXJCb3Vu
ZGVkQ1NTU2NhbGUoY3NzU2NhbGUpOwpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgUXRWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOjp6b29tVG9BcmVhR2VzdHVyZUVuZGVkKGNvbnN0IFFQb2ludEYm
IHRvdWNoUG9pCiAgICAgLy8gV2Ugd2FudCB0byBlbmQgdXAgd2l0aCB0aGUgdGFyZ2V0IGFyZWEg
ZmlsbGluZyB0aGUgd2hvbGUgd2lkdGggb2YgdGhlIHZpZXdwb3J0IChpZiBwb3NzaWJsZSksCiAg
ICAgLy8gYW5kIGNlbnRyYWxpemVkIHZlcnRpY2FsbHkgd2hlcmUgdGhlIHVzZXIgcmVxdWVzdGVk
IHpvb20uIFRodXMgb3VyIGhvdHNwb3QgaXMgdGhlIGNlbnRlciBvZgogICAgIC8vIHRoZSB0YXJn
ZXRBcmVhIHgtd2lzZSBhbmQgdGhlIHJlcXVlc3RlZCB6b29tIHBvc2l0aW9uLCB5LXdpc2UuCi0g
ICAgY29uc3QgUVBvaW50RiBob3RzcG90ID0gUVBvaW50RihlbmRBcmVhLmNlbnRlcigpLngoKSwg
dG91Y2hQb2ludC55KCkgKiBtX2NvbnN0cmFpbnRzLmRldmljZVBpeGVsUmF0aW8pOworICAgIGNv
bnN0IFFQb2ludEYgaG90c3BvdCA9IFFQb2ludEYoZW5kQXJlYS5jZW50ZXIoKS54KCksIHRvdWNo
UG9pbnQueSgpICogbV9kZXZpY2VQaXhlbFJhdGlvKTsKICAgICBjb25zdCBRUG9pbnRGIHZpZXdw
b3J0SG90c3BvdCA9IHZpZXdwb3J0UmVjdC5jZW50ZXIoKTsKIAogICAgIFFQb2ludEYgZW5kUG9z
aXRpb24gPSBob3RzcG90ICogZW5kSXRlbVNjYWxlIC0gdmlld3BvcnRIb3RzcG90OwpAQCAtNDI1
LDI1ICs0MjUsMTggQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnJlc2V0KCkK
ICAgICBtX3Njcm9sbFVwZGF0ZURlZmVycmVyLmNsZWFyKCk7CiB9CiAKLXZvaWQgUXRWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IENvbnN0cmFpbnRzJiBj
b25zdHJhaW50cykKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpzZXRDU1NTY2Fs
ZUJvdW5kcyhxcmVhbCBtaW5pbXVtLCBxcmVhbCBtYXhpbXVtKQogewotICAgIC8vIFdlIGFsd2F5
cyBoYXZlIHRvIGFwcGx5IHRoZSBjb25zdHJhaW5zIGV2ZW4gaWYgdGhleSBkaWRuJ3QgY2hhbmdl
LCBhcwotICAgIC8vIHRoZSBpbml0aWFsIHNjYWxlIG1pZ2h0IG5lZWQgdG8gYmUgYXBwbGllZC4K
LQotICAgIHJlc2V0KCk7CisgICAgbV9taW5pbXVtU2NhbGUgPSBtaW5pbXVtOworICAgIG1fbWF4
aW11bVNjYWxlID0gbWF4aW11bTsKK30KIAordm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmU6OnNldENTU1NjYWxlKHFyZWFsIHNjYWxlKQorewogICAgIFZpZXdwb3J0VXBkYXRlRGVmZXJy
ZXIgZ3VhcmQodGhpcyk7CiAKLSAgICBtX2NvbnN0cmFpbnRzID0gY29uc3RyYWludHM7Ci0KLSAg
ICBpZiAoIW1faGFkVXNlckludGVyYWN0aW9uKSB7Ci0gICAgICAgIHFyZWFsIGluaXRpYWxTY2Fs
ZSA9IGlubmVyQm91bmRlZENTU1NjYWxlKG1fY29uc3RyYWludHMuaW5pdGlhbFNjYWxlKTsKLSAg
ICAgICAgbV9jb250ZW50LT5zZXRDb250ZW50c1NjYWxlKGl0ZW1TY2FsZUZyb21DU1MoaW5pdGlh
bFNjYWxlKSk7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIHdlYiBhcHAgc3VjY2Vzc2l2ZWx5IGNo
YW5nZXMgdGhlIHZpZXdwb3J0IG9uIHB1cnBvc2UKLSAgICAvLyBpdCB3YW50cyB0byBiZSBpbiBj
b250cm9sIGFuZCB3ZSBzaG91bGQgZGlzYWJsZSBhbmltYXRpb25zLgotICAgIGVuc3VyZUNvbnRl
bnRXaXRoaW5WaWV3cG9ydEJvdW5kYXJ5KC8qIGltbWVkaWF0ZSAqLyB0cnVlKTsKKyAgICBxcmVh
bCBuZXdTY2FsZSA9IGlubmVyQm91bmRlZENTU1NjYWxlKHNjYWxlKTsKKyAgICBtX2NvbnRlbnQt
PnNldENvbnRlbnRzU2NhbGUoaXRlbVNjYWxlRnJvbUNTUyhuZXdTY2FsZSkpOwogfQogCiBxcmVh
bCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmN1cnJlbnRDU1NTY2FsZSgpCkBAIC01MjMs
NyArNTE2LDcgQEAgYm9vbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVy
ZUFjdGl2ZSgpIGNvbnN0CiAKIHZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5j
aEdlc3R1cmVTdGFydGVkKGNvbnN0IFFQb2ludEYmIHBpbmNoQ2VudGVySW5WaWV3cG9ydENvb3Jk
aW5hdGVzKQogewotICAgIGlmICghbV9jb25zdHJhaW50cy5pc1VzZXJTY2FsYWJsZSkKKyAgICBp
ZiAoIW1fYWxsb3dzVXNlclNjYWxpbmcpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faGFkVXNl
ckludGVyYWN0aW9uID0gdHJ1ZTsKQEAgLTU0MSw3ICs1MzQsNyBAQCB2b2lkIFF0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZShjb25zdCBRUG9pbnRG
JiBwaW5jaAogewogICAgIEFTU0VSVChtX3N1c3BlbmRDb3VudCk7CiAKLSAgICBpZiAoIW1fY29u
c3RyYWludHMuaXNVc2VyU2NhbGFibGUpCisgICAgaWYgKCFtX2FsbG93c1VzZXJTY2FsaW5nKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyAgQ2hhbmdlcyBvZiB0aGUgY2VudGVyIHBvc2l0aW9u
IHNob3VsZCBtb3ZlIHRoZSBwYWdlIGV2ZW4gaWYgdGhlIHpvb20gZmFjdG9yCkBAIC01NjMsNyAr
NTU2LDcgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZUVu
ZGVkKCkKIHsKICAgICBBU1NFUlQobV9zdXNwZW5kQ291bnQpOwogCi0gICAgaWYgKCFtX2NvbnN0
cmFpbnRzLmlzVXNlclNjYWxhYmxlKQorICAgIGlmICghbV9hbGxvd3NVc2VyU2NhbGluZykKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9waW5jaFN0YXJ0U2NhbGUgPSAtMTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUuaAppbmRleCAxNWMzMjE2ZGQ5ZGVlMDExZTI1NjI0Yzg4Nzg3MjNiZWQxY2RhZGYyLi5mNDBi
M2QzMjMwZjFmYWQ5NTQyODVhNDkxN2VmMmFlMGUzZjQxNDIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5o
CkBAIC00OSwyNiArNDksMTkgQEAgcHVibGljOgogICAgIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZShRUXVpY2tXZWJWaWV3KiwgUVF1aWNrV2ViUGFnZSopOwogICAgIH5RdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUoKTsKIAotICAgIHN0cnVjdCBDb25zdHJhaW50cyB7Ci0gICAgICAgIENv
bnN0cmFpbnRzKCkKLSAgICAgICAgICAgIDogaW5pdGlhbFNjYWxlKDEuMCkKLSAgICAgICAgICAg
ICwgbWluaW11bVNjYWxlKDAuMjUpCi0gICAgICAgICAgICAsIG1heGltdW1TY2FsZSgxLjgpCi0g
ICAgICAgICAgICAsIGRldmljZVBpeGVsUmF0aW8oMS4wKQotICAgICAgICAgICAgLCBpc1VzZXJT
Y2FsYWJsZSh0cnVlKQotICAgICAgICAgICAgLCBsYXlvdXRTaXplKFFTaXplKCkpCi0gICAgICAg
IHsgfQorICAgIHZvaWQgcmVzZXQoKTsKIAotICAgICAgICBxcmVhbCBpbml0aWFsU2NhbGU7Ci0g
ICAgICAgIHFyZWFsIG1pbmltdW1TY2FsZTsKLSAgICAgICAgcXJlYWwgbWF4aW11bVNjYWxlOwot
ICAgICAgICBxcmVhbCBkZXZpY2VQaXhlbFJhdGlvOwotICAgICAgICBib29sIGlzVXNlclNjYWxh
YmxlOwotICAgICAgICBRU2l6ZSBsYXlvdXRTaXplOwotICAgIH07CisgICAgYm9vbCBoYWRVc2Vy
SW50ZXJhY3Rpb24oKSB7IHJldHVybiBtX2hhZFVzZXJJbnRlcmFjdGlvbjsgfQogCi0gICAgdm9p
ZCByZXNldCgpOwotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBDb25zdHJhaW50cyYp
OworICAgIHZvaWQgc2V0Q1NTU2NhbGVCb3VuZHMocXJlYWwgbWluaW11bSwgcXJlYWwgbWF4aW11
bSk7CisgICAgdm9pZCBzZXRDU1NTY2FsZShxcmVhbCk7CisKKyAgICBxcmVhbCBjdXJyZW50Q1NT
U2NhbGUoKTsKKworICAgIGJvb2wgZW5zdXJlQ29udGVudFdpdGhpblZpZXdwb3J0Qm91bmRhcnko
Ym9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CisKKyAgICB2b2lkIHNldEFsbG93c1VzZXJTY2FsaW5n
KGJvb2wgYWxsb3cpIHsgbV9hbGxvd3NVc2VyU2NhbGluZyA9IGFsbG93OyB9CisgICAgdm9pZCBz
ZXRDb250ZW50VG9EZXZpY2VQaXhlbFJhdGlvKHFyZWFsIHJhdGlvKSB7bV9kZXZpY2VQaXhlbFJh
dGlvID0gcmF0aW87IH0KIAogICAgIHZvaWQgc2V0SXRlbVJlY3RWaXNpYmxlKGNvbnN0IFFSZWN0
RiYpOwogICAgIGJvb2wgYW5pbWF0ZUl0ZW1SZWN0VmlzaWJsZShjb25zdCBRUmVjdEYmKTsKQEAg
LTk4LDkgKzkxLDYgQEAgcHVibGljOgogICAgIHZvaWQgem9vbVRvQXJlYUdlc3R1cmVFbmRlZChj
b25zdCBRUG9pbnRGJiB0b3VjaFBvaW50LCBjb25zdCBRUmVjdEYmIHRhcmdldEFyZWEpOwogICAg
IHZvaWQgZm9jdXNFZGl0YWJsZUFyZWEoY29uc3QgUVJlY3RGJiBjYXJldEFyZWEsIGNvbnN0IFFS
ZWN0RiYgdGFyZ2V0QXJlYSk7CiAKLSAgICBjb25zdCBDb25zdHJhaW50cyYgY29uc3RyYWludHMo
KSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnRzOyB9Ci0gICAgcXJlYWwgY3VycmVudENTU1Nj
YWxlKCk7Ci0KIFFfU0lHTkFMUzoKICAgICB2b2lkIGNvbnRlbnRTdXNwZW5kUmVxdWVzdGVkKCk7
CiAgICAgdm9pZCBjb250ZW50UmVzdW1lUmVxdWVzdGVkKCk7CkBAIC0xMjQsNiArMTE0LDcgQEAg
cHJpdmF0ZSBRX1NMT1RTOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBWaWV3cG9ydFVw
ZGF0ZURlZmVycmVyOworICAgIGZyaWVuZCBjbGFzcyBRV2ViVmlld3BvcnRJbmZvOwogCiAgICAg
cXJlYWwgY3NzU2NhbGVGcm9tSXRlbShxcmVhbCk7CiAgICAgcXJlYWwgaXRlbVNjYWxlRnJvbUNT
UyhxcmVhbCk7CkBAIC0xMzMsMTYgKzEyNCwyMCBAQCBwcml2YXRlOgogICAgIHFyZWFsIGlubmVy
Qm91bmRlZENTU1NjYWxlKHFyZWFsKTsKICAgICBxcmVhbCBvdXRlckJvdW5kZWRDU1NTY2FsZShx
cmVhbCk7CiAKKyAgICBib29sIG1fYWxsb3dzVXNlclNjYWxpbmc7CisgICAgcXJlYWwgbV9taW5p
bXVtU2NhbGU7CisgICAgcXJlYWwgbV9tYXhpbXVtU2NhbGU7CisgICAgcXJlYWwgbV9kZXZpY2VQ
aXhlbFJhdGlvOworCisgICAgUVNpemUgbV9sYXlvdXRTaXplOworCiAgICAgUVJlY3RGIGNvbXB1
dGVQb3NSYW5nZUZvckl0ZW1BdFNjYWxlKHFyZWFsIGl0ZW1TY2FsZSkgY29uc3Q7Ci0gICAgYm9v
bCBlbnN1cmVDb250ZW50V2l0aGluVmlld3BvcnRCb3VuZGFyeShib29sIGltbWVkaWF0ZSA9IGZh
bHNlKTsKIAogICAgIHZvaWQgc2NhbGVDb250ZW50KGNvbnN0IFFQb2ludEYmIGNlbnRlckluQ1NT
Q29vcmRpbmF0ZXMsIHFyZWFsIGNzc1NjYWxlKTsKIAogICAgIFFRdWlja1dlYlZpZXcqIGNvbnN0
IG1fdmlld3BvcnQ7CiAgICAgUVF1aWNrV2ViUGFnZSogY29uc3QgbV9jb250ZW50OwogCi0gICAg
Q29uc3RyYWludHMgbV9jb25zdHJhaW50czsKLQogICAgIGludCBtX3N1c3BlbmRDb3VudDsKICAg
ICBib29sIG1faGFzU3VzcGVuZGVkQ29udGVudDsKICAgICBPd25QdHI8Vmlld3BvcnRVcGRhdGVE
ZWZlcnJlcj4gbV9zY2FsZVVwZGF0ZURlZmVycmVyOwpAQCAtMTY2LDE0ICsxNjEsNiBAQCBwcml2
YXRlOgogICAgIHFyZWFsIG1fcGluY2hTdGFydFNjYWxlOwogfTsKIAotaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OkNvbnN0cmFpbnRzJiBh
LCBjb25zdCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OkNvbnN0cmFpbnRzJiBiKQotewot
ICAgIHJldHVybiBhLmluaXRpYWxTY2FsZSA9PSBiLmluaXRpYWxTY2FsZQotICAgICAgICAgICAg
JiYgYS5taW5pbXVtU2NhbGUgPT0gYi5taW5pbXVtU2NhbGUKLSAgICAgICAgICAgICYmIGEubWF4
aW11bVNjYWxlID09IGIubWF4aW11bVNjYWxlCi0gICAgICAgICAgICAmJiBhLmlzVXNlclNjYWxh
YmxlID09IGIuaXNVc2VyU2NhbGFibGU7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFF0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137333</attachid>
            <date>2012-04-16 06:27:58 -0700</date>
            <delta_ts>2012-04-16 06:32:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83895-20120416151845.patch</filename>
            <type>text/plain</type>
            <size>18108</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjYyZTQ2ZjYzMGQ1N2Nh
NjllYTNhMTJiOWM0OTNjODkwMjc1YWYxMS4uOWZhOTRmZjVkNGIwMWY1NmY1NWZmNGIzOGIwNzc2
Njk3ZDA4MWZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA0LTE2ICBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBb
UXRdIENsZWFuIHVwIGhvdyB0aGUgaW50ZXJhY3Rpb24gZW5naW5lIGlzIG1ha2luZyB1c2Ugb2Yg
Vmlld3BvcnRBdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04Mzg5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlZmFjdG9yIGhvdyB0aGUgaW50ZXJhY3Rpb24gZW5naW5lIGlzIHVzaW5nIHRo
ZSBWaWV3cG9ydEF0dHJpYnV0ZXMKKyAgICAgICAgYW5kIGdldCByaWQgb2YgdGhlIENvbnRyYWlu
dHMgc3ViY2xhc3MuCisKKyAgICAgICAgUHVzaCB0aGUgVmlld3BvcnRBdHRyaWJ1dGVzIHRocm91
Z2ggdG8gdGhlIFFRdWlja1dlYlZpZXdQcml2YXRlIGNsYXNzCisgICAgICAgIGFuZCBhZGQgc29t
ZSBkZWZhdWx0IHZhbHVlcyBpbiB0aGUgY2FzZSB0aGUgTGVnYWN5IHZpZXcgaXMgdXNlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6UVF1aWNrV2ViVmlld0xlZ2FjeVByaXZhdGUpOgor
ICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6OmRpZENoYW5nZVZpZXdwb3J0
UHJvcGVydGllcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3Bf
cC5oOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mby5jcHA6CisgICAgICAgIChRV2ViVmlld3BvcnRJbmZv
OjpRV2ViVmlld3BvcnRJbmZvKToKKyAgICAgICAgKFFXZWJWaWV3cG9ydEluZm86On5RV2ViVmll
d3BvcnRJbmZvKToKKyAgICAgICAgKFFXZWJWaWV3cG9ydEluZm86OmN1cnJlbnRTY2FsZSk6Cisg
ICAgICAgIChRV2ViVmlld3BvcnRJbmZvOjpkZXZpY2VQaXhlbFJhdGlvKToKKyAgICAgICAgKFFX
ZWJWaWV3cG9ydEluZm86OmluaXRpYWxTY2FsZSk6CisgICAgICAgIChRV2ViVmlld3BvcnRJbmZv
OjptaW5pbXVtU2NhbGUpOgorICAgICAgICAoUVdlYlZpZXdwb3J0SW5mbzo6bWF4aW11bVNjYWxl
KToKKyAgICAgICAgKFFXZWJWaWV3cG9ydEluZm86OmlzU2NhbGFibGUpOgorICAgICAgICAoUVdl
YlZpZXdwb3J0SW5mbzo6bGF5b3V0U2l6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0Vmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6Y3NzU2NhbGVGcm9tSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlF0
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6aXRlbVNjYWxlRnJvbUNTUyk6CisgICAgICAgIChX
ZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6aXRlbUNvb3JkRnJvbUNTUyk6Cisg
ICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6aW5uZXJCb3VuZGVk
Q1NTU2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
Om91dGVyQm91bmRlZENTU1NjYWxlKToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lOjp6b29tVG9BcmVhR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6
UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpzZXRDU1NTY2FsZUJvdW5kcyk6CisgICAgICAg
IChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6c2V0Q1NTU2NhbGUpOgorICAg
ICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZVN0
YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBp
bmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
cXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmg6CisgICAgICAgIChRdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmU6OmhhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6c2V0QWxsb3dzVXNlclNjYWxpbmcpOgorICAgICAgICAoV2ViS2l0
OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNldENvbnRlbnRUb0RldmljZVBpeGVsUmF0
aW8pOgorCiAyMDEyLTA0LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXSBVc2UgR1JlZlB0ciB0byBkZWxldGUgdGhlIGRlZmF1bHQg
d2ViIGNvbnRleHQgaW4gV2ViS2l0MiBHVEsrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCA2ZjkxOWE5ZWVjMjMxMjkyMTdjZmEy
NGI2ZDE1ZWJhOTIyZDBlMWU5Li4yYjBjNWY5NmJkY2Y0ZWY3NGRlNjk0OWI3ODEwMjU1OGFkYmJk
NWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
dmlldy5jcHAKQEAgLTQ4MSw2ICs0ODEsMTIgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJgogUVF1
aWNrV2ViVmlld0xlZ2FjeVByaXZhdGU6OlFRdWlja1dlYlZpZXdMZWdhY3lQcml2YXRlKFFRdWlj
a1dlYlZpZXcqIHZpZXdwb3J0KQogICAgIDogUVF1aWNrV2ViVmlld1ByaXZhdGUodmlld3BvcnQp
CiB7CisgICAgLy8gRGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBMZWdhY3kgdmlldy4KKyAgICBhdHRy
aWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gPSAxOworICAgIGF0dHJpYnV0ZXMuaW5pdGlhbFNjYWxl
ID0gMTsKKyAgICBhdHRyaWJ1dGVzLm1pbmltdW1TY2FsZSA9IDE7CisgICAgYXR0cmlidXRlcy5t
YXhpbXVtU2NhbGUgPSAxOworICAgIGF0dHJpYnV0ZXMudXNlclNjYWxhYmxlID0gMDsKIH0KIAog
dm9pZCBRUXVpY2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6aW5pdGlhbGl6ZShXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQpAQCAtNjE0LDI5ICs2MjAs
MzUgQEAgdm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6ZGlkRmluaXNoRmlyc3RO
b25FbXB0eUxheW91dCgpCiB7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZh
dGU6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRl
OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzJiBuZXdBdHRyaWJ1dGVzKQogewogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKIAogICAg
IFFTaXplIHZpZXdwb3J0U2l6ZSA9IHEtPmJvdW5kaW5nUmVjdCgpLnNpemUoKS50b1NpemUoKTsK
IAogICAgIC8vIEZJWE1FOiBSZXZpc2UgdGhlc2Ugd2hlbiBpbXBsZW1lbnRpbmcgZml0LXRvLXdp
ZHRoLgotICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyID0gYXR0cmlidXRlczsK
KyAgICBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgYXR0ciA9IG5ld0F0dHJpYnV0ZXM7CiAg
ICAgV2ViQ29yZTo6cmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZShhdHRy
LCB2aWV3cG9ydFNpemUpOwogICAgIFdlYkNvcmU6OnJlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRp
YWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKGF0dHIpOwogCi0gICAgUXRWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjpDb25zdHJhaW50cyBuZXdDb25zdHJhaW50czsKLSAgICBuZXdDb25zdHJhaW50
cy5pbml0aWFsU2NhbGUgPSBhdHRyLmluaXRpYWxTY2FsZTsKLSAgICBuZXdDb25zdHJhaW50cy5t
aW5pbXVtU2NhbGUgPSBhdHRyLm1pbmltdW1TY2FsZTsKLSAgICBuZXdDb25zdHJhaW50cy5tYXhp
bXVtU2NhbGUgPSBhdHRyLm1heGltdW1TY2FsZTsKLSAgICBuZXdDb25zdHJhaW50cy5kZXZpY2VQ
aXhlbFJhdGlvID0gYXR0ci5kZXZpY2VQaXhlbFJhdGlvOwotICAgIG5ld0NvbnN0cmFpbnRzLmlz
VXNlclNjYWxhYmxlID0gISFhdHRyLnVzZXJTY2FsYWJsZTsKLSAgICBuZXdDb25zdHJhaW50cy5s
YXlvdXRTaXplID0gYXR0ci5sYXlvdXRTaXplOworICAgIC8vIEZJWE1FOiBSZXNldHRpbmcgaGVy
ZSBjYW4gcmVzZXQgbW9yZSB0aGFuIG5lZWRlZC4gRm9yIGluc3RhbmNlIGl0IHdpbGwgZW5kIGRl
ZmVycmVycy4KKyAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIHJldmlzZWQgYXQgc29tZSBwb2ludC4K
KyAgICBpbnRlcmFjdGlvbkVuZ2luZS0+cmVzZXQoKTsKIAorICAgIGludGVyYWN0aW9uRW5naW5l
LT5zZXRDb250ZW50VG9EZXZpY2VQaXhlbFJhdGlvKGF0dHIuZGV2aWNlUGl4ZWxSYXRpbyk7CisK
KyAgICBpbnRlcmFjdGlvbkVuZ2luZS0+c2V0QWxsb3dzVXNlclNjYWxpbmcoISFhdHRyLnVzZXJT
Y2FsYWJsZSk7CisgICAgaW50ZXJhY3Rpb25FbmdpbmUtPnNldENTU1NjYWxlQm91bmRzKGF0dHIu
bWluaW11bVNjYWxlLCBhdHRyLm1heGltdW1TY2FsZSk7CisKKyAgICBpZiAoIWludGVyYWN0aW9u
RW5naW5lLT5oYWRVc2VySW50ZXJhY3Rpb24oKSAmJiAhcGFnZUlzU3VzcGVuZGVkKQorICAgICAg
ICBpbnRlcmFjdGlvbkVuZ2luZS0+c2V0Q1NTU2NhbGUoYXR0ci5pbml0aWFsU2NhbGUpOworCisg
ICAgdGhpcy0+YXR0cmlidXRlcyA9IGF0dHI7CiAgICAgcS0+ZXhwZXJpbWVudGFsKCktPnZpZXdw
b3J0SW5mbygpLT5kaWRVcGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7CiAKLSAgICAvLyBGSVhN
RTogSWYgc3VzcGVuZGVkIHdlIHNob3VsZCBkbyB0aGlzIG9uIHJlc3VtZS4KLSAgICBpbnRlcmFj
dGlvbkVuZ2luZS0+YXBwbHlDb25zdHJhaW50cyhuZXdDb25zdHJhaW50cyk7CisgICAgLy8gSWYg
dGhlIHdlYiBhcHAgc3VjY2Vzc2l2ZWx5IGNoYW5nZXMgdGhlIHZpZXdwb3J0IG9uIHB1cnBvc2UK
KyAgICAvLyBpdCB3YW50cyB0byBiZSBpbiBjb250cm9sIGFuZCB3ZSBzaG91bGQgZGlzYWJsZSBh
bmltYXRpb25zLgorICAgIGludGVyYWN0aW9uRW5naW5lLT5lbnN1cmVDb250ZW50V2l0aGluVmll
d3BvcnRCb3VuZGFyeSgvKmltbWVkaWF0ZSovIHRydWUpOwogfQogCiB2b2lkIFFRdWlja1dlYlZp
ZXdGbGlja2FibGVQcml2YXRlOjp1cGRhdGVWaWV3cG9ydFNpemUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IDIyYzU5
OTY5ZTQ2OTdhNDRhNjk0Y2RhNDIyYzhiOTgxYzkzOGFjZDcuLmFkN2IyZDAzOTk5NGQ1MGU0NjZm
M2MxNGI2ZmQ1ZDgzMmY4Y2IyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1
ZGUgPFF0Q29yZS9RT2JqZWN0PgogI2luY2x1ZGUgPFF0Q29yZS9RU2NvcGVkUG9pbnRlcj4KKyNp
bmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMTYwLDYgKzE2MSw4IEBAIHByb3Rl
Y3RlZDoKICAgICBRRGVjbGFyYXRpdmVDb21wb25lbnQqIGZpbGVQaWNrZXI7CiAgICAgUURlY2xh
cmF0aXZlQ29tcG9uZW50KiBkYXRhYmFzZVF1b3RhRGlhbG9nOwogCisgICAgV2ViQ29yZTo6Vmll
d3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisKICAgICBib29sIG1fdXNlRGVmYXVsdENvbnRl
bnRJdGVtU2l6ZTsKICAgICBib29sIG1fbmF2aWdhdG9yUXRPYmplY3RFbmFibGVkOwogICAgIGJv
b2wgbV9yZW5kZXJUb09mZnNjcmVlbkJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwCmluZGV4IDIyODYzYmUyOWYxMWI1
YTMyZWQwZjFmZDM1MTY0MjU4NWMyMDI1ZjUuLjYzNzBiODA1NjkyMTAwMzU0N2QxZWQyOWEwNTEw
YjI0NThkOWYyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXdlYnZpZXdwb3J0aW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2Vidmlld3BvcnRpbmZvLmNwcApAQCAtMjgsMTIgKzI4LDEwIEBAIFFXZWJWaWV3cG9ydElu
Zm86OlFXZWJWaWV3cG9ydEluZm8oUVF1aWNrV2ViVmlld1ByaXZhdGUqIHdlYlZpZXdQcml2YXRl
LCBRT2JqZWN0CiAgICAgOiBRT2JqZWN0KHBhcmVudCkKICAgICAsIG1fd2ViVmlld1ByaXZhdGUo
d2ViVmlld1ByaXZhdGUpCiB7Ci0KIH0KIAogUVdlYlZpZXdwb3J0SW5mbzo6flFXZWJWaWV3cG9y
dEluZm8oKQogewotCiB9CiAKIFFTaXplIFFXZWJWaWV3cG9ydEluZm86OmNvbnRlbnRzU2l6ZSgp
IGNvbnN0CkBAIC00Niw1NSArNDQsMzcgQEAgUVZhcmlhbnQgUVdlYlZpZXdwb3J0SW5mbzo6Y3Vy
cmVudFNjYWxlKCkgY29uc3QKICAgICBpZiAoUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiBp
bnRlcmFjdGlvbkVuZ2luZSA9IG1fd2ViVmlld1ByaXZhdGUtPnZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUoKSkKICAgICAgICAgcmV0dXJuIGludGVyYWN0aW9uRW5naW5lLT5jdXJyZW50Q1NTU2Nh
bGUoKTsKIAotICAgIHJldHVybiBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OkNvbnN0cmFp
bnRzKCkuaW5pdGlhbFNjYWxlOworICAgIHJldHVybiBtX3dlYlZpZXdQcml2YXRlLT5hdHRyaWJ1
dGVzLmluaXRpYWxTY2FsZTsKIH0KIAogUVZhcmlhbnQgUVdlYlZpZXdwb3J0SW5mbzo6ZGV2aWNl
UGl4ZWxSYXRpbygpIGNvbnN0CiB7Ci0gICAgaWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZSogaW50ZXJhY3Rpb25FbmdpbmUgPSBtX3dlYlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0
aW9uRW5naW5lKCkpCi0gICAgICAgIHJldHVybiBpbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWlu
dHMoKS5kZXZpY2VQaXhlbFJhdGlvOwotCi0gICAgcmV0dXJuIFF0Vmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZTo6Q29uc3RyYWludHMoKS5kZXZpY2VQaXhlbFJhdGlvOworICAgIHJldHVybiBtX3dl
YlZpZXdQcml2YXRlLT5hdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87CiB9CiAKIFFWYXJpYW50
IFFXZWJWaWV3cG9ydEluZm86OmluaXRpYWxTY2FsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKFF0Vmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25FbmdpbmUgPSBtX3dlYlZpZXdQcml2
YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCi0gICAgICAgIHJldHVybiBpbnRlcmFj
dGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5pbml0aWFsU2NhbGU7Ci0KLSAgICByZXR1cm4gUXRW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cygpLmluaXRpYWxTY2FsZTsKKyAg
ICByZXR1cm4gbV93ZWJWaWV3UHJpdmF0ZS0+YXR0cmlidXRlcy5pbml0aWFsU2NhbGU7CiB9CiAK
IFFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86Om1pbmltdW1TY2FsZSgpIGNvbnN0CiB7Ci0gICAg
aWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25FbmdpbmUgPSBtX3dl
YlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCi0gICAgICAgIHJldHVy
biBpbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5taW5pbXVtU2NhbGU7Ci0KLSAgICBy
ZXR1cm4gUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cygpLm1pbmltdW1T
Y2FsZTsKKyAgICByZXR1cm4gbV93ZWJWaWV3UHJpdmF0ZS0+YXR0cmlidXRlcy5taW5pbXVtU2Nh
bGU7CiB9CiAKIFFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86Om1heGltdW1TY2FsZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25Fbmdp
bmUgPSBtX3dlYlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCi0gICAg
ICAgIHJldHVybiBpbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5tYXhpbXVtU2NhbGU7
Ci0KLSAgICByZXR1cm4gUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cygp
Lm1heGltdW1TY2FsZTsKKyAgICByZXR1cm4gbV93ZWJWaWV3UHJpdmF0ZS0+YXR0cmlidXRlcy5t
YXhpbXVtU2NhbGU7CiB9CiAKIFFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86OmlzU2NhbGFibGUo
KSBjb25zdAogewotICAgIGlmIChRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIGludGVyYWN0
aW9uRW5naW5lID0gbV93ZWJWaWV3UHJpdmF0ZS0+dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgp
KQotICAgICAgICByZXR1cm4gaW50ZXJhY3Rpb25FbmdpbmUtPmNvbnN0cmFpbnRzKCkuaXNVc2Vy
U2NhbGFibGU7Ci0KLSAgICByZXR1cm4gUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25z
dHJhaW50cygpLmlzVXNlclNjYWxhYmxlOworICAgIHJldHVybiAhIW1fd2ViVmlld1ByaXZhdGUt
PmF0dHJpYnV0ZXMudXNlclNjYWxhYmxlOwogfQogCiBRVmFyaWFudCBRV2ViVmlld3BvcnRJbmZv
OjpsYXlvdXRTaXplKCkgY29uc3QKIHsKLSAgICBpZiAoUXRWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lKiBpbnRlcmFjdGlvbkVuZ2luZSA9IG1fd2ViVmlld1ByaXZhdGUtPnZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUoKSkKLSAgICAgICAgcmV0dXJuIGludGVyYWN0aW9uRW5naW5lLT5jb25zdHJh
aW50cygpLmxheW91dFNpemU7Ci0KLSAgICByZXR1cm4gUVZhcmlhbnQoUVNpemUoKSk7CisgICAg
cmV0dXJuIFFTaXplKG1fd2ViVmlld1ByaXZhdGUtPmF0dHJpYnV0ZXMubGF5b3V0U2l6ZSk7CiB9
CiAKIHZvaWQgUVdlYlZpZXdwb3J0SW5mbzo6ZGlkVXBkYXRlQ29udGVudHNTaXplKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZS5jcHAKaW5kZXggMWIyYzkzYWM5ODQ1M2M2N2I2MzQ4ZjczMTcxY2M3MDY3N2M1
ODk2Zi4uNGIyYjJjNTE1YzVlNTVhYTUxYjBmNzBmOThjMzgzZTE5ZmEyYWQ5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZS5jcHAKQEAgLTk0LDE3ICs5NCwxNyBAQCBwcml2YXRlOgogCiBpbmxpbmUgcXJl
YWwgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpjc3NTY2FsZUZyb21JdGVtKHFyZWFsIGl0
ZW1TY2FsZSkKIHsKLSAgICByZXR1cm4gaXRlbVNjYWxlIC8gbV9jb25zdHJhaW50cy5kZXZpY2VQ
aXhlbFJhdGlvOworICAgIHJldHVybiBpdGVtU2NhbGUgLyBtX2RldmljZVBpeGVsUmF0aW87CiB9
CiAKIGlubGluZSBxcmVhbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6Oml0ZW1TY2FsZUZy
b21DU1MocXJlYWwgY3NzU2NhbGUpCiB7Ci0gICAgcmV0dXJuIGNzc1NjYWxlICogbV9jb25zdHJh
aW50cy5kZXZpY2VQaXhlbFJhdGlvOworICAgIHJldHVybiBjc3NTY2FsZSAqIG1fZGV2aWNlUGl4
ZWxSYXRpbzsKIH0KIAogaW5saW5lIHFyZWFsIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6
aXRlbUNvb3JkRnJvbUNTUyhxcmVhbCB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUgKiBtX2Nv
bnN0cmFpbnRzLmRldmljZVBpeGVsUmF0aW87CisgICAgcmV0dXJuIHZhbHVlICogbV9kZXZpY2VQ
aXhlbFJhdGlvOwogfQogCiBpbmxpbmUgUVJlY3RGIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6aXRlbVJlY3RGcm9tQ1NTKGNvbnN0IFFSZWN0RiYgY3NzUmVjdCkKQEAgLTE0NywxNSArMTQ3
LDE1IEBAIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6flF0Vmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZSgpCiAKIHFyZWFsIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6aW5uZXJCb3Vu
ZGVkQ1NTU2NhbGUocXJlYWwgY3NzU2NhbGUpCiB7Ci0gICAgcmV0dXJuIHFCb3VuZChtX2NvbnN0
cmFpbnRzLm1pbmltdW1TY2FsZSwgY3NzU2NhbGUsIG1fY29uc3RyYWludHMubWF4aW11bVNjYWxl
KTsKKyAgICByZXR1cm4gcUJvdW5kKG1fbWluaW11bVNjYWxlLCBjc3NTY2FsZSwgbV9tYXhpbXVt
U2NhbGUpOwogfQogCiBxcmVhbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6Om91dGVyQm91
bmRlZENTU1NjYWxlKHFyZWFsIGNzc1NjYWxlKQogewotICAgIGlmIChtX2NvbnN0cmFpbnRzLmlz
VXNlclNjYWxhYmxlKSB7CisgICAgaWYgKG1fYWxsb3dzVXNlclNjYWxpbmcpIHsKICAgICAgICAg
Ly8gQm91bmRlZCBieSBbMC4xLCAxMC4wXSBsaWtlIHRoZSB2aWV3cG9ydCBtZXRhIGNvZGUgaW4g
V2ViQ29yZS4KLSAgICAgICAgcXJlYWwgaGFyZE1pbiA9IHFNYXg8cXJlYWw+KDAuMSwgcXJlYWwo
MC41KSAqIG1fY29uc3RyYWludHMubWluaW11bVNjYWxlKTsKLSAgICAgICAgcXJlYWwgaGFyZE1h
eCA9IHFNaW48cXJlYWw+KDEwLCBxcmVhbCgyLjApICogbV9jb25zdHJhaW50cy5tYXhpbXVtU2Nh
bGUpOworICAgICAgICBxcmVhbCBoYXJkTWluID0gcU1heDxxcmVhbD4oMC4xLCBxcmVhbCgwLjUp
ICogbV9taW5pbXVtU2NhbGUpOworICAgICAgICBxcmVhbCBoYXJkTWF4ID0gcU1pbjxxcmVhbD4o
MTAsIHFyZWFsKDIuMCkgKiBtX21heGltdW1TY2FsZSk7CiAgICAgICAgIHJldHVybiBxQm91bmQo
aGFyZE1pbiwgY3NzU2NhbGUsIGhhcmRNYXgpOwogICAgIH0KICAgICByZXR1cm4gaW5uZXJCb3Vu
ZGVkQ1NTU2NhbGUoY3NzU2NhbGUpOwpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgUXRWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOjp6b29tVG9BcmVhR2VzdHVyZUVuZGVkKGNvbnN0IFFQb2ludEYm
IHRvdWNoUG9pCiAgICAgLy8gV2Ugd2FudCB0byBlbmQgdXAgd2l0aCB0aGUgdGFyZ2V0IGFyZWEg
ZmlsbGluZyB0aGUgd2hvbGUgd2lkdGggb2YgdGhlIHZpZXdwb3J0IChpZiBwb3NzaWJsZSksCiAg
ICAgLy8gYW5kIGNlbnRyYWxpemVkIHZlcnRpY2FsbHkgd2hlcmUgdGhlIHVzZXIgcmVxdWVzdGVk
IHpvb20uIFRodXMgb3VyIGhvdHNwb3QgaXMgdGhlIGNlbnRlciBvZgogICAgIC8vIHRoZSB0YXJn
ZXRBcmVhIHgtd2lzZSBhbmQgdGhlIHJlcXVlc3RlZCB6b29tIHBvc2l0aW9uLCB5LXdpc2UuCi0g
ICAgY29uc3QgUVBvaW50RiBob3RzcG90ID0gUVBvaW50RihlbmRBcmVhLmNlbnRlcigpLngoKSwg
dG91Y2hQb2ludC55KCkgKiBtX2NvbnN0cmFpbnRzLmRldmljZVBpeGVsUmF0aW8pOworICAgIGNv
bnN0IFFQb2ludEYgaG90c3BvdCA9IFFQb2ludEYoZW5kQXJlYS5jZW50ZXIoKS54KCksIHRvdWNo
UG9pbnQueSgpICogbV9kZXZpY2VQaXhlbFJhdGlvKTsKICAgICBjb25zdCBRUG9pbnRGIHZpZXdw
b3J0SG90c3BvdCA9IHZpZXdwb3J0UmVjdC5jZW50ZXIoKTsKIAogICAgIFFQb2ludEYgZW5kUG9z
aXRpb24gPSBob3RzcG90ICogZW5kSXRlbVNjYWxlIC0gdmlld3BvcnRIb3RzcG90OwpAQCAtNDE5
LDMxICs0MTksMjkgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnJlc2V0KCkK
IAogICAgIG1faGFkVXNlckludGVyYWN0aW9uID0gZmFsc2U7CiAKKyAgICBtX2FsbG93c1VzZXJT
Y2FsaW5nID0gZmFsc2U7CisgICAgbV9taW5pbXVtU2NhbGUgPSAxOworICAgIG1fbWF4aW11bVNj
YWxlID0gMTsKKyAgICBtX2RldmljZVBpeGVsUmF0aW8gPSAxOworCiAgICAgbV92aWV3cG9ydC0+
Y2FuY2VsRmxpY2soKTsKICAgICBtX3NjYWxlQW5pbWF0aW9uLT5zdG9wKCk7CiAgICAgbV9zY2Fs
ZVVwZGF0ZURlZmVycmVyLmNsZWFyKCk7CiAgICAgbV9zY3JvbGxVcGRhdGVEZWZlcnJlci5jbGVh
cigpOwogfQogCi12b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YXBwbHlDb25zdHJh
aW50cyhjb25zdCBDb25zdHJhaW50cyYgY29uc3RyYWludHMpCit2b2lkIFF0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZTo6c2V0Q1NTU2NhbGVCb3VuZHMocXJlYWwgbWluaW11bSwgcXJlYWwgbWF4
aW11bSkKIHsKLSAgICAvLyBXZSBhbHdheXMgaGF2ZSB0byBhcHBseSB0aGUgY29uc3RyYWlucyBl
dmVuIGlmIHRoZXkgZGlkbid0IGNoYW5nZSwgYXMKLSAgICAvLyB0aGUgaW5pdGlhbCBzY2FsZSBt
aWdodCBuZWVkIHRvIGJlIGFwcGxpZWQuCi0KLSAgICByZXNldCgpOworICAgIG1fbWluaW11bVNj
YWxlID0gbWluaW11bTsKKyAgICBtX21heGltdW1TY2FsZSA9IG1heGltdW07Cit9CiAKK3ZvaWQg
UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpzZXRDU1NTY2FsZShxcmVhbCBzY2FsZSkKK3sK
ICAgICBWaWV3cG9ydFVwZGF0ZURlZmVycmVyIGd1YXJkKHRoaXMpOwogCi0gICAgbV9jb25zdHJh
aW50cyA9IGNvbnN0cmFpbnRzOwotCi0gICAgaWYgKCFtX2hhZFVzZXJJbnRlcmFjdGlvbikgewot
ICAgICAgICBxcmVhbCBpbml0aWFsU2NhbGUgPSBpbm5lckJvdW5kZWRDU1NTY2FsZShtX2NvbnN0
cmFpbnRzLmluaXRpYWxTY2FsZSk7Ci0gICAgICAgIG1fY29udGVudC0+c2V0Q29udGVudHNTY2Fs
ZShpdGVtU2NhbGVGcm9tQ1NTKGluaXRpYWxTY2FsZSkpOwotICAgIH0KLQotICAgIC8vIElmIHRo
ZSB3ZWIgYXBwIHN1Y2Nlc3NpdmVseSBjaGFuZ2VzIHRoZSB2aWV3cG9ydCBvbiBwdXJwb3NlCi0g
ICAgLy8gaXQgd2FudHMgdG8gYmUgaW4gY29udHJvbCBhbmQgd2Ugc2hvdWxkIGRpc2FibGUgYW5p
bWF0aW9ucy4KLSAgICBlbnN1cmVDb250ZW50V2l0aGluVmlld3BvcnRCb3VuZGFyeSgvKiBpbW1l
ZGlhdGUgKi8gdHJ1ZSk7CisgICAgcXJlYWwgbmV3U2NhbGUgPSBpbm5lckJvdW5kZWRDU1NTY2Fs
ZShzY2FsZSk7CisgICAgbV9jb250ZW50LT5zZXRDb250ZW50c1NjYWxlKGl0ZW1TY2FsZUZyb21D
U1MobmV3U2NhbGUpKTsKIH0KIAogcXJlYWwgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpj
dXJyZW50Q1NTU2NhbGUoKQpAQCAtNTIzLDcgKzUyMSw3IEBAIGJvb2wgUXRWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVBY3RpdmUoKSBjb25zdAogCiB2b2lkIFF0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlU3RhcnRlZChjb25zdCBRUG9pbnRGJiBw
aW5jaENlbnRlckluVmlld3BvcnRDb29yZGluYXRlcykKIHsKLSAgICBpZiAoIW1fY29uc3RyYWlu
dHMuaXNVc2VyU2NhbGFibGUpCisgICAgaWYgKCFtX2FsbG93c1VzZXJTY2FsaW5nKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX2hhZFVzZXJJbnRlcmFjdGlvbiA9IHRydWU7CkBAIC01NDEsNyAr
NTM5LDcgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZVJl
cXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYgcGluY2gKIHsKICAgICBBU1NFUlQobV9zdXNwZW5k
Q291bnQpOwogCi0gICAgaWYgKCFtX2NvbnN0cmFpbnRzLmlzVXNlclNjYWxhYmxlKQorICAgIGlm
ICghbV9hbGxvd3NVc2VyU2NhbGluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gIENoYW5n
ZXMgb2YgdGhlIGNlbnRlciBwb3NpdGlvbiBzaG91bGQgbW92ZSB0aGUgcGFnZSBldmVuIGlmIHRo
ZSB6b29tIGZhY3RvcgpAQCAtNTYzLDcgKzU2MSw3IEBAIHZvaWQgUXRWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVFbmRlZCgpCiB7CiAgICAgQVNTRVJUKG1fc3VzcGVuZENv
dW50KTsKIAotICAgIGlmICghbV9jb25zdHJhaW50cy5pc1VzZXJTY2FsYWJsZSkKKyAgICBpZiAo
IW1fYWxsb3dzVXNlclNjYWxpbmcpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGluY2hTdGFy
dFNjYWxlID0gLTE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmgKaW5kZXggMTVjMzIxNmRkOWRlZTAxMWUyNTYy
NGM4ODc4NzIzYmVkMWNkYWRmMi4uNWViNTUxNGFjMjlmZGJmOThlNzE0M2M4Y2NkNmRjNzE0Yjc1
MzFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaApAQCAtNDksMjYgKzQ5LDE5IEBAIHB1YmxpYzoKICAg
ICBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoUVF1aWNrV2ViVmlldyosIFFRdWlja1dlYlBh
Z2UqKTsKICAgICB+UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCk7CiAKLSAgICBzdHJ1Y3Qg
Q29uc3RyYWludHMgewotICAgICAgICBDb25zdHJhaW50cygpCi0gICAgICAgICAgICA6IGluaXRp
YWxTY2FsZSgxLjApCi0gICAgICAgICAgICAsIG1pbmltdW1TY2FsZSgwLjI1KQotICAgICAgICAg
ICAgLCBtYXhpbXVtU2NhbGUoMS44KQotICAgICAgICAgICAgLCBkZXZpY2VQaXhlbFJhdGlvKDEu
MCkKLSAgICAgICAgICAgICwgaXNVc2VyU2NhbGFibGUodHJ1ZSkKLSAgICAgICAgICAgICwgbGF5
b3V0U2l6ZShRU2l6ZSgpKQotICAgICAgICB7IH0KKyAgICB2b2lkIHJlc2V0KCk7CiAKLSAgICAg
ICAgcXJlYWwgaW5pdGlhbFNjYWxlOwotICAgICAgICBxcmVhbCBtaW5pbXVtU2NhbGU7Ci0gICAg
ICAgIHFyZWFsIG1heGltdW1TY2FsZTsKLSAgICAgICAgcXJlYWwgZGV2aWNlUGl4ZWxSYXRpbzsK
LSAgICAgICAgYm9vbCBpc1VzZXJTY2FsYWJsZTsKLSAgICAgICAgUVNpemUgbGF5b3V0U2l6ZTsK
LSAgICB9OworICAgIGJvb2wgaGFkVXNlckludGVyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9o
YWRVc2VySW50ZXJhY3Rpb247IH0KIAotICAgIHZvaWQgcmVzZXQoKTsKLSAgICB2b2lkIGFwcGx5
Q29uc3RyYWludHMoY29uc3QgQ29uc3RyYWludHMmKTsKKyAgICB2b2lkIHNldENTU1NjYWxlQm91
bmRzKHFyZWFsIG1pbmltdW0sIHFyZWFsIG1heGltdW0pOworICAgIHZvaWQgc2V0Q1NTU2NhbGUo
cXJlYWwpOworCisgICAgcXJlYWwgY3VycmVudENTU1NjYWxlKCk7CisKKyAgICBib29sIGVuc3Vy
ZUNvbnRlbnRXaXRoaW5WaWV3cG9ydEJvdW5kYXJ5KGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOwor
CisgICAgdm9pZCBzZXRBbGxvd3NVc2VyU2NhbGluZyhib29sIGFsbG93KSB7IG1fYWxsb3dzVXNl
clNjYWxpbmcgPSBhbGxvdzsgfQorICAgIHZvaWQgc2V0Q29udGVudFRvRGV2aWNlUGl4ZWxSYXRp
byhxcmVhbCByYXRpbykge21fZGV2aWNlUGl4ZWxSYXRpbyA9IHJhdGlvOyB9CiAKICAgICB2b2lk
IHNldEl0ZW1SZWN0VmlzaWJsZShjb25zdCBRUmVjdEYmKTsKICAgICBib29sIGFuaW1hdGVJdGVt
UmVjdFZpc2libGUoY29uc3QgUVJlY3RGJik7CkBAIC05OCw5ICs5MSw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHpvb21Ub0FyZWFHZXN0dXJlRW5kZWQoY29uc3QgUVBvaW50RiYgdG91Y2hQb2ludCwg
Y29uc3QgUVJlY3RGJiB0YXJnZXRBcmVhKTsKICAgICB2b2lkIGZvY3VzRWRpdGFibGVBcmVhKGNv
bnN0IFFSZWN0RiYgY2FyZXRBcmVhLCBjb25zdCBRUmVjdEYmIHRhcmdldEFyZWEpOwogCi0gICAg
Y29uc3QgQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJh
aW50czsgfQotICAgIHFyZWFsIGN1cnJlbnRDU1NTY2FsZSgpOwotCiBRX1NJR05BTFM6CiAgICAg
dm9pZCBjb250ZW50U3VzcGVuZFJlcXVlc3RlZCgpOwogICAgIHZvaWQgY29udGVudFJlc3VtZVJl
cXVlc3RlZCgpOwpAQCAtMTI0LDYgKzExNCwxMCBAQCBwcml2YXRlIFFfU0xPVFM6CiAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFZpZXdwb3J0VXBkYXRlRGVmZXJyZXI7CisgICAgZnJpZW5k
IGNsYXNzIFFXZWJWaWV3cG9ydEluZm87CisKKyAgICBRUXVpY2tXZWJWaWV3KiBjb25zdCBtX3Zp
ZXdwb3J0OworICAgIFFRdWlja1dlYlBhZ2UqIGNvbnN0IG1fY29udGVudDsKIAogICAgIHFyZWFs
IGNzc1NjYWxlRnJvbUl0ZW0ocXJlYWwpOwogICAgIHFyZWFsIGl0ZW1TY2FsZUZyb21DU1MocXJl
YWwpOwpAQCAtMTMzLDE1ICsxMjcsMTYgQEAgcHJpdmF0ZToKICAgICBxcmVhbCBpbm5lckJvdW5k
ZWRDU1NTY2FsZShxcmVhbCk7CiAgICAgcXJlYWwgb3V0ZXJCb3VuZGVkQ1NTU2NhbGUocXJlYWwp
OwogCi0gICAgUVJlY3RGIGNvbXB1dGVQb3NSYW5nZUZvckl0ZW1BdFNjYWxlKHFyZWFsIGl0ZW1T
Y2FsZSkgY29uc3Q7Ci0gICAgYm9vbCBlbnN1cmVDb250ZW50V2l0aGluVmlld3BvcnRCb3VuZGFy
eShib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKKyAgICBib29sIG1fYWxsb3dzVXNlclNjYWxpbmc7
CisgICAgcXJlYWwgbV9taW5pbXVtU2NhbGU7CisgICAgcXJlYWwgbV9tYXhpbXVtU2NhbGU7Cisg
ICAgcXJlYWwgbV9kZXZpY2VQaXhlbFJhdGlvOwogCi0gICAgdm9pZCBzY2FsZUNvbnRlbnQoY29u
c3QgUVBvaW50RiYgY2VudGVySW5DU1NDb29yZGluYXRlcywgcXJlYWwgY3NzU2NhbGUpOworICAg
IFFTaXplIG1fbGF5b3V0U2l6ZTsKIAotICAgIFFRdWlja1dlYlZpZXcqIGNvbnN0IG1fdmlld3Bv
cnQ7Ci0gICAgUVF1aWNrV2ViUGFnZSogY29uc3QgbV9jb250ZW50OworICAgIFFSZWN0RiBjb21w
dXRlUG9zUmFuZ2VGb3JJdGVtQXRTY2FsZShxcmVhbCBpdGVtU2NhbGUpIGNvbnN0OwogCi0gICAg
Q29uc3RyYWludHMgbV9jb25zdHJhaW50czsKKyAgICB2b2lkIHNjYWxlQ29udGVudChjb25zdCBR
UG9pbnRGJiBjZW50ZXJJbkNTU0Nvb3JkaW5hdGVzLCBxcmVhbCBjc3NTY2FsZSk7CiAKICAgICBp
bnQgbV9zdXNwZW5kQ291bnQ7CiAgICAgYm9vbCBtX2hhc1N1c3BlbmRlZENvbnRlbnQ7CkBAIC0x
NjYsMTQgKzE2MSw2IEBAIHByaXZhdGU6CiAgICAgcXJlYWwgbV9waW5jaFN0YXJ0U2NhbGU7CiB9
OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZTo6Q29uc3RyYWludHMmIGEsIGNvbnN0IFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6
Q29uc3RyYWludHMmIGIpCi17Ci0gICAgcmV0dXJuIGEuaW5pdGlhbFNjYWxlID09IGIuaW5pdGlh
bFNjYWxlCi0gICAgICAgICAgICAmJiBhLm1pbmltdW1TY2FsZSA9PSBiLm1pbmltdW1TY2FsZQot
ICAgICAgICAgICAgJiYgYS5tYXhpbXVtU2NhbGUgPT0gYi5tYXhpbXVtU2NhbGUKLSAgICAgICAg
ICAgICYmIGEuaXNVc2VyU2NhbGFibGUgPT0gYi5pc1VzZXJTY2FsYWJsZTsKLX0KLQogfQogCiAj
ZW5kaWYgLy8gUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lX2gK
</data>
<flag name="review"
          id="142343"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>