<?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>100232</bug_id>
          
          <creation_ts>2012-10-24 04:39:25 -0700</creation_ts>
          <short_desc>[EFL][WK2] Clean up construction/destruction code in Ewk_view</short_desc>
          <delta_ts>2012-10-26 14:28:14 -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 EFL</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>
          <dependson>100228</dependson>
    
    <dependson>100552</dependson>
          <blocked>100226</blocked>
    
    <blocked>100273</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>749537</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-24 04:39:25 -0700</bug_when>
    <thetext>Currently construction/destruction code in Ewk_view is really overcomplicated, it comprises of multiple stages and multiple functions to be invoked, this should be simplified as much as possible. Most of the code should go to destructor/constructor of EwkViewImpl class see bug#100228.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751838</commentid>
    <comment_count>1</comment_count>
      <attachid>170882</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-26 04:15:16 -0700</bug_when>
    <thetext>Created attachment 170882
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751870</commentid>
    <comment_count>2</comment_count>
      <attachid>170890</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-26 04:42:15 -0700</bug_when>
    <thetext>Created attachment 170890
rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751878</commentid>
    <comment_count>3</comment_count>
      <attachid>170890</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-26 04:47:01 -0700</bug_when>
    <thetext>Comment on attachment 170890
rebased

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:537
&gt; +    smartData-&gt;priv = new EwkViewImpl(ewkView, context, pageGroup);

I would add a ASSERT(!smartData-&gt;priv); right before this line to be safe

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:553
&gt; +    return createEwkView(canvas, smart, context, 0);

Maybe you can add an inline comment to clarify what the 0 stands for</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751881</commentid>
    <comment_count>4</comment_count>
      <attachid>170890</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-26 04:49:17 -0700</bug_when>
    <thetext>Comment on attachment 170890
rebased

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:537
&gt;&gt; +    smartData-&gt;priv = new EwkViewImpl(ewkView, context, pageGroup);
&gt; 
&gt; I would add a ASSERT(!smartData-&gt;priv); right before this line to be safe

Oh, it&apos;s there already, sorry :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751882</commentid>
    <comment_count>5</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-26 04:50:25 -0700</bug_when>
    <thetext>
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:553
&gt; &gt; +    return createEwkView(canvas, smart, context, 0);
&gt; 
&gt; Maybe you can add an inline comment to clarify what the 0 stands for
would better make it default value :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751888</commentid>
    <comment_count>6</comment_count>
      <attachid>170893</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-26 04:54:27 -0700</bug_when>
    <thetext>Created attachment 170893
patch v2

added default value for pageGroupRef in createEwkView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751896</commentid>
    <comment_count>7</comment_count>
      <attachid>170893</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-26 05:00:38 -0700</bug_when>
    <thetext>Comment on attachment 170893
patch v2

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751914</commentid>
    <comment_count>8</comment_count>
      <attachid>170893</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-26 05:16:11 -0700</bug_when>
    <thetext>Comment on attachment 170893
patch v2

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:111
&gt; +    WebKit::WebPageProxy* page() { return m_pageProxy.get(); }

why remove the inline?

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:230
&gt; +    // Note, initialization order is important.

initialization order matters :-) it is not just important

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:249
&gt; +    Evas_GL* m_evasGl;
&gt; +    Evas_GL_Context* m_evasGlContext;
&gt; +    Evas_GL_Surface* m_evasGlSurface;

maybe we should add OwnPtr support for these</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751915</commentid>
    <comment_count>9</comment_count>
      <attachid>170893</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-26 05:18:00 -0700</bug_when>
    <thetext>Comment on attachment 170893
patch v2

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:111
&gt;&gt; +    WebKit::WebPageProxy* page() { return m_pageProxy.get(); }
&gt; 
&gt; why remove the inline?

They are defined in the header so they are inlined anyway.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:249
&gt;&gt; +    Evas_GL_Surface* m_evasGlSurface;
&gt; 
&gt; maybe we should add OwnPtr support for these

I thought about this but it is not easy because the free functions for Evas_GL_Context and Evas_GL_Surface require the Evas_GL object as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751918</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-26 05:20:10 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 170893 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170893&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:111
&gt; &gt;&gt; +    WebKit::WebPageProxy* page() { return m_pageProxy.get(); }
&gt; &gt; 
&gt; &gt; why remove the inline?
&gt; 
&gt; They are defined in the header so they are inlined anyway.

Only when called from the same class no? which is mostly the case right</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751933</commentid>
    <comment_count>11</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-26 05:27:24 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (From update of attachment 170893 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170893&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:111
&gt; &gt; &gt;&gt; +    WebKit::WebPageProxy* page() { return m_pageProxy.get(); }
&gt; &gt; &gt; 
&gt; &gt; &gt; why remove the inline?
&gt; &gt; 
&gt; &gt; They are defined in the header so they are inlined anyway.
&gt; 
&gt; Only when called from the same class no? which is mostly the case right

As far as I know member functions are implicit inline provided they are defined inside their class independently from where they called. Anyway methods should be consistent with each other: either all of them (defined in header) have &apos;inline&apos; or all not have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751939</commentid>
    <comment_count>12</comment_count>
      <attachid>170904</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-26 05:40:11 -0700</bug_when>
    <thetext>Created attachment 170904
patch v3

initialization order matters :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751978</commentid>
    <comment_count>13</comment_count>
      <attachid>170904</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 06:43:51 -0700</bug_when>
    <thetext>Comment on attachment 170904
patch v3

Clearing flags on attachment: 170904

Committed r132647: &lt;http://trac.webkit.org/changeset/132647&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751979</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 06:43:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752377</commentid>
    <comment_count>15</comment_count>
      <attachid>170904</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-26 14:11:26 -0700</bug_when>
    <thetext>Comment on attachment 170904
patch v3

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:-576
&gt; -    impl-&gt;pageProxy-&gt;pageGroup()-&gt;preferences()-&gt;setWebGLEnabled(true);

It seems like you lost some code here. This new WebGL code is removed from ewk_view.cpp but wasn&apos;t added to EwkViewImpl.cpp. Rebasing problem?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170882</attachid>
            <date>2012-10-26 04:15:16 -0700</date>
            <delta_ts>2012-10-26 04:42:15 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug100232</filename>
            <type>text/plain</type>
            <size>40016</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDUyOWY1YWQ1ZjQxMzZhYTUxYWM3YTU5OTEyOGEzZTA3Njc5YTYxMWYKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIE9jdCAyNiAxMjo0ODo0MSAyMDEyICswMzAwCgogICAgYnVnMTAwMjMyCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDYxNjY1ZDcuLjg0NmI0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NSBAQAorMjAxMi0x
MC0yNiAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIENsZWFuIHVwIGNvbnN0cnVjdGlvbi9kZXN0cnVjdGlvbiBj
b2RlIGluIEV3a192aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDAyMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTaW1wbGlmaWVkIGEgbG90IG9mIGluaXRpYWxpemF0aW9uIGFuZCBkZXN0cnVjdGlv
biBjb2RlIG9mIEV3a192aWV3IGFuZCBFd2tWaWV3SW1wbAorICAgICAgICBwdXQgYWxsIHRoZSBp
bXBsIHN0dWZmIHRvIGl0cyBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciwgYWxzbyBtYWRlIEV3
a1ZpZXdJbXBsIG1lbWJlcgorICAgICAgICB2YXJpYWJsZXMgcHJpdmF0ZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAgICAgKHBhZ2VWaWV3TWFw
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjphZGRUb1BhZ2VWaWV3TWFwKToKKyAgICAgICAgKEV3
a1ZpZXdJbXBsOjpyZW1vdmVGcm9tUGFnZVZpZXdNYXApOgorICAgICAgICAoRXdrVmlld0ltcGw6
OnZpZXdGcm9tUGFnZVZpZXdNYXApOgorICAgICAgICAoRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBs
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjp+RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmll
d0ltcGw6OndrUGFnZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6dGl0bGUpOgorICAgICAgICAo
RXdrVmlld0ltcGw6OnNldFRoZW1lUGF0aCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6Y3VzdG9t
VGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0Q3VzdG9tVGV4dEVu
Y29kaW5nTmFtZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtSWNvbkNoYW5nZSk6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtV2ViUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAo
RXdrVmlld0ltcGw6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBs
OjppbmZvcm1VUkxDaGFuZ2UpOgorICAgICAgICAoRXdrVmlld0ltcGw6Om9uRmF2aWNvbkNoYW5n
ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6
OnZpZXcpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnBhZ2UpOgorICAgICAgICAoRXdrVmlld0lt
cGw6OmV3a0NvbnRleHQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmJhY2tGb3J3YXJkTGlzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcDoKKyAgICAgICAg
KEV3a19TZXR0aW5nczo6cHJlZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1c19pbik6CisgICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFy
dF9tb3VzZV93aGVlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bik6Cisg
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X21vdXNlX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKToKKyAg
ICAgICAgKF9ld2tfdmlld19zbWFydF9rZXlfdXApOgorICAgICAgICAoX2V3a192aWV3X29uX3No
b3cpOgorICAgICAgICAoX2V3a192aWV3X29uX2hpZGUpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZGVsKToKKyAgICAgICAgKF9ld2tf
dmlld19zbWFydF9jYWxjdWxhdGUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NvbG9yX3Nl
dCk6CisgICAgICAgIChjcmVhdGVFd2tWaWV3U21hcnRDbGFzcyk6CisgICAgICAgIChjcmVhdGVF
d2tWaWV3KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAgICAgKGV3a192aWV3
X3NtYXJ0X2FkZCk6CisgICAgICAgIChld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KToKKyAgICAg
ICAgKGV3a192aWV3X3VybF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVsb2FkKToKKyAgICAg
ICAgKGV3a192aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUpOgorICAgICAgICAoZXdrX3ZpZXdfc3Rv
cCk6CisgICAgICAgIChld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldCk6CisgICAgICAgIChld2tf
dmlld19zY2FsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfZ2V0KToKKyAgICAgICAg
KGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZGV2
aWNlX3BpeGVsX3JhdGlvX2dldCk6CisgICAgICAgIChld2tfdmlld19iYWNrKToKKyAgICAgICAg
KGV3a192aWV3X2ZvcndhcmQpOgorICAgICAgICAoZXdrX3ZpZXdfaW50ZW50X2RlbGl2ZXIpOgor
ICAgICAgICAoZXdrX3ZpZXdfYmFja19wb3NzaWJsZSk6CisgICAgICAgIChld2tfdmlld19mb3J3
YXJkX3Bvc3NpYmxlKToKKyAgICAgICAgKGV3a192aWV3X2JhY2tfZm9yd2FyZF9saXN0X2dldCk6
CisgICAgICAgIChld2tfdmlld19odG1sX3N0cmluZ19sb2FkKToKKyAgICAgICAgKGV3a192aWV3
X3RleHRfZmluZCk6CisgICAgICAgIChld2tfdmlld190ZXh0X2ZpbmRfaGlnaGxpZ2h0X2NsZWFy
KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19jb3VudCk6CisgICAgICAgIChld2tf
dmlld19mZWVkX3RvdWNoX2V2ZW50KToKKyAgICAgICAgKGV3a192aWV3X2luc3BlY3Rvcl9zaG93
KToKKyAgICAgICAgKGV3a192aWV3X2luc3BlY3Rvcl9jbG9zZSk6CisgICAgICAgIChld2tfdmll
d19wYWdpbmF0aW9uX21vZGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3BhZ2luYXRpb25fbW9k
ZV9nZXQpOgorCiAyMDEyLTEwLTI2ICBSZWdpbmEgQ2h1bmcgIDxoZWVqaW4uci5jaHVuZ0BzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEVuYWJsZSBXZWJHTApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4IDA0YTA4ZTY5
Li40NmI3Yjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuY3BwCkBAIC0zNCw4ICszNCwxMSBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZENs
aWVudEVmbC5oIgogI2luY2x1ZGUgIldLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5oIgogI2lu
Y2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBv
cHVwTWVudVByb3h5RWZsLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRl
ICJld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfZmF2aWNvbl9kYXRhYmFzZV9wcml2YXRlLmgiCkBA
IC00OSw0NCArNTIsNjMgQEAKICNpbmNsdWRlIDxFZGplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
dXJzb3IuaD4KIAorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorI2luY2x1ZGUgIldlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdEN1
cnNvclNpemUgPSAxNjsKIAotRXdrVmlld0ltcGw6OlBhZ2VWaWV3TWFwIEV3a1ZpZXdJbXBsOjpw
YWdlVmlld01hcDsKK3R5cGVkZWYgSGFzaE1hcDxXS1BhZ2VSZWYsIEV2YXNfT2JqZWN0Kj4gUGFn
ZVZpZXdNYXA7CiAKLXZvaWQgRXdrVmlld0ltcGw6OmFkZFRvUGFnZVZpZXdNYXAoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCitzdGF0aWMgaW5saW5lIFBhZ2VWaWV3TWFwJiBwYWdlVmlld01h
cCgpCiB7Ci0gICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gRXdrVmlld0ltcGw6OmZyb21FdmFz
T2JqZWN0KGV3a1ZpZXcpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUGFnZVZpZXdNYXAsIG1h
cCwgKCkpOworICAgIHJldHVybiBtYXA7Cit9CiAKLSAgICBQYWdlVmlld01hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IHBhZ2VWaWV3TWFwLmFkZCh2aWV3SW1wbC0+d2tQYWdlKCksIGV3a1ZpZXcpOwor
dm9pZCBFd2tWaWV3SW1wbDo6YWRkVG9QYWdlVmlld01hcChFd2tWaWV3SW1wbCogdmlld0ltcGwp
Cit7CisgICAgUGFnZVZpZXdNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBwYWdlVmlld01hcCgpLmFk
ZCh2aWV3SW1wbC0+d2tQYWdlKCksIHZpZXdJbXBsLT52aWV3KCkpOwogICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgRXdrVmlld0ltcGw6OnJl
bW92ZUZyb21QYWdlVmlld01hcChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3ZvaWQgRXdr
Vmlld0ltcGw6OnJlbW92ZUZyb21QYWdlVmlld01hcChFd2tWaWV3SW1wbCogdmlld0ltcGwpCiB7
Ci0gICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gRXdrVmlld0ltcGw6OmZyb21FdmFzT2JqZWN0
KGV3a1ZpZXcpOwotCi0gICAgQVNTRVJUKHBhZ2VWaWV3TWFwLmNvbnRhaW5zKHZpZXdJbXBsLT53
a1BhZ2UoKSkpOwotICAgIHBhZ2VWaWV3TWFwLnJlbW92ZSh2aWV3SW1wbC0+d2tQYWdlKCkpOwor
ICAgIEFTU0VSVChwYWdlVmlld01hcCgpLmNvbnRhaW5zKHZpZXdJbXBsLT53a1BhZ2UoKSkpOwor
ICAgIHBhZ2VWaWV3TWFwKCkucmVtb3ZlKHZpZXdJbXBsLT53a1BhZ2UoKSk7CiB9CiAKIGNvbnN0
IEV2YXNfT2JqZWN0KiBFd2tWaWV3SW1wbDo6dmlld0Zyb21QYWdlVmlld01hcChjb25zdCBXS1Bh
Z2VSZWYgcGFnZSkKIHsKICAgICBBU1NFUlQocGFnZSk7CiAKLSAgICByZXR1cm4gcGFnZVZpZXdN
YXAuZ2V0KHBhZ2UpOworICAgIHJldHVybiBwYWdlVmlld01hcCgpLmdldChwYWdlKTsKIH0KIAot
RXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3KQotI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKLSAgICA6IGV2YXNHbCgwKQotICAgICwgZXZhc0dsQ29udGV4
dCgwKQotICAgICwgZXZhc0dsU3VyZmFjZSgwKQotICAgICwgbV92aWV3KHZpZXcpCi0jZWxzZQor
RXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRyPEV3
a19Db250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwKQog
ICAgIDogbV92aWV3KHZpZXcpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fcGFn
ZUNsaWVudChQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9wYWdlUHJveHko
dG9JbXBsKG1fY29udGV4dC0+d2tDb250ZXh0KCkpLT5jcmVhdGVXZWJQYWdlKG1fcGFnZUNsaWVu
dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKSkKKyAgICAsIG1fcGFnZUxvYWRDbGllbnQoUGFnZUxv
YWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQYWdl
UG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCisgICAgLCBtX3BhZ2VVSUNsaWVudChQYWdl
VUlDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KFJl
c291cmNlTG9hZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9maW5kQ2xpZW50KEZp
bmRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fZm9ybUNsaWVudChGb3JtQ2xpZW50
RWZsOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2JhY2tGb3J3YXJkTGlzdChFd2tfQmFja19Gb3J3
YXJkX0xpc3Q6OmNyZWF0ZSh0b0FQSShtX3BhZ2VQcm94eS0+YmFja0ZvcndhcmRMaXN0KCkpKSkK
KyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICAsIG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudChQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpjcmVhdGUodGhpcykp
CisgICAgLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIoYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIobV9wYWdlUHJveHkuZ2V0KCksIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudC5nZXQoKSkpKQorI2VuZGlmCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
ICAgICwgbV9ldmFzR2woMCkKKyAgICAsIG1fZXZhc0dsQ29udGV4dCgwKQorICAgICwgbV9ldmFz
R2xTdXJmYWNlKDApCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoRXdrX1NldHRpbmdzOjpjcmVh
dGUodGhpcykpCiAgICAgLCBtX21vdXNlRXZlbnRzRW5hYmxlZChmYWxzZSkKQEAgLTk2LDE0ICsx
MTgsNDggQEAgRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3KQogICAg
ICwgbV9kaXNwbGF5VGltZXIodGhpcywgJkV3a1ZpZXdJbXBsOjpkaXNwbGF5VGltZXJGaXJlZCkK
ICAgICAsIG1faW5wdXRNZXRob2RDb250ZXh0KElucHV0TWV0aG9kQ29udGV4dEVmbDo6Y3JlYXRl
KHRoaXMsIHNtYXJ0RGF0YSgpLT5iYXNlLmV2YXMpKQogewotICAgIEFTU0VSVCh2aWV3KTsKKyAg
ICBBU1NFUlQobV92aWV3KTsKKyAgICBBU1NFUlQobV9jb250ZXh0KTsKKyAgICBBU1NFUlQobV9w
YWdlUHJveHkpOworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIG1fcGFnZVBy
b3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQodHJ1ZSk7CisgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNl
cygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKKyAgICBtX3BhZ2VQcm94eS0+c2V0
VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CisjZW5kaWYKKworICAgIG1fcGFnZVByb3h5LT5pbml0aWFs
aXplV2ViUGFnZSgpOworCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgcGFnZUNs
aWVudC0+c2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihwYWdlVmlld3BvcnRDb250cm9sbGVyLmdl
dCgpKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIG1fcGFnZVBy
b3h5LT5mdWxsU2NyZWVuTWFuYWdlcigpLT5zZXRXZWJWaWV3KG1fdmlldyk7CisgICAgbV9wYWdl
UHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGdWxsU2NyZWVuRW5hYmxlZCh0
cnVlKTsKKyNlbmRpZgogCiAgICAgLy8gRW5hYmxlIG1vdXNlIGV2ZW50cyBieSBkZWZhdWx0CiAg
ICAgc2V0TW91c2VFdmVudHNFbmFibGVkKHRydWUpOworCisgICAgLy8gTGlzdGVuIGZvciBmYXZp
Y29uIGNoYW5nZXMuCisgICAgRXdrX0Zhdmljb25fRGF0YWJhc2UqIGljb25EYXRhYmFzZSA9IG1f
Y29udGV4dC0+ZmF2aWNvbkRhdGFiYXNlKCk7CisgICAgQVNTRVJUKGljb25EYXRhYmFzZSk7CisK
KyAgICBpY29uRGF0YWJhc2UtPndhdGNoQ2hhbmdlcyhJY29uQ2hhbmdlQ2FsbGJhY2tEYXRhKEV3
a1ZpZXdJbXBsOjpvbkZhdmljb25DaGFuZ2VkLCB0aGlzKSk7CisKKyAgICBFd2tWaWV3SW1wbDo6
YWRkVG9QYWdlVmlld01hcCh0aGlzKTsKIH0KIAogRXdrVmlld0ltcGw6On5Fd2tWaWV3SW1wbCgp
CiB7CisgICAgLy8gVW5yZWdpc3RlciBpY29uIGNoYW5nZSBjYWxsYmFjay4KKyAgICBFd2tfRmF2
aWNvbl9EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0gbV9jb250ZXh0LT5mYXZpY29uRGF0YWJhc2Uo
KTsKKyAgICBBU1NFUlQoaWNvbkRhdGFiYXNlKTsKKworICAgIGljb25EYXRhYmFzZS0+dW53YXRj
aENoYW5nZXMoRXdrVmlld0ltcGw6Om9uRmF2aWNvbkNoYW5nZWQpOworCisgICAgRXdrVmlld0lt
cGw6OnJlbW92ZUZyb21QYWdlVmlld01hcCh0aGlzKTsKIH0KIAogRXdrX1ZpZXdfU21hcnRfRGF0
YSogRXdrVmlld0ltcGw6OnNtYXJ0RGF0YSgpCkBAIC0xMjYsNyArMTgyLDcgQEAgRXdrVmlld0lt
cGwqIEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09iamVjdChjb25zdCBFdmFzX09iamVjdCogdmlldykK
ICAqLwogV0tQYWdlUmVmIEV3a1ZpZXdJbXBsOjp3a1BhZ2UoKQogewotICAgIHJldHVybiB0b0FQ
SShwYWdlUHJveHkuZ2V0KCkpOworICAgIHJldHVybiB0b0FQSShtX3BhZ2VQcm94eS5nZXQoKSk7
CiB9CiAKIHZvaWQgRXdrVmlld0ltcGw6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikK
QEAgLTUzNiw3ICs1OTIsNyBAQCBib29sIEV3a1ZpZXdJbXBsOjppc1Zpc2libGUoKSBjb25zdAog
CiBjb25zdCBjaGFyKiBFd2tWaWV3SW1wbDo6dGl0bGUoKSBjb25zdAogewotICAgIG1fdGl0bGUg
PSBwYWdlUHJveHktPnBhZ2VUaXRsZSgpLnV0ZjgoKS5kYXRhKCk7CisgICAgbV90aXRsZSA9IG1f
cGFnZVByb3h5LT5wYWdlVGl0bGUoKS51dGY4KCkuZGF0YSgpOwogCiAgICAgcmV0dXJuIG1fdGl0
bGU7CiB9CkBAIC01NTksMTMgKzYxNSwxMyBAQCB2b2lkIEV3a1ZpZXdJbXBsOjpzZXRUaGVtZVBh
dGgoY29uc3QgY2hhciogdGhlbWUpCiB7CiAgICAgaWYgKG1fdGhlbWUgIT0gdGhlbWUpIHsKICAg
ICAgICAgbV90aGVtZSA9IHRoZW1lOwotICAgICAgICBwYWdlUHJveHktPnNldFRoZW1lUGF0aCh0
aGVtZSk7CisgICAgICAgIG1fcGFnZVByb3h5LT5zZXRUaGVtZVBhdGgodGhlbWUpOwogICAgIH0K
IH0KIAogY29uc3QgY2hhciogRXdrVmlld0ltcGw6OmN1c3RvbVRleHRFbmNvZGluZ05hbWUoKSBj
b25zdAogewotICAgIFN0cmluZyBjdXN0b21FbmNvZGluZyA9IHBhZ2VQcm94eS0+Y3VzdG9tVGV4
dEVuY29kaW5nTmFtZSgpOworICAgIFN0cmluZyBjdXN0b21FbmNvZGluZyA9IG1fcGFnZVByb3h5
LT5jdXN0b21UZXh0RW5jb2RpbmdOYW1lKCk7CiAgICAgaWYgKGN1c3RvbUVuY29kaW5nLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU3Nyw3ICs2MzMsNyBAQCBjb25zdCBjaGFy
KiBFd2tWaWV3SW1wbDo6Y3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0CiB2b2lkIEV3a1Zp
ZXdJbXBsOjpzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IGNoYXIqIGVuY29kaW5nKQog
ewogICAgIG1fY3VzdG9tRW5jb2RpbmcgPSBlbmNvZGluZzsKLSAgICBwYWdlUHJveHktPnNldEN1
c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmcgPyBlbmNvZGluZyA6IFN0cmluZygpKTsKKyAg
ICBtX3BhZ2VQcm94eS0+c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShlbmNvZGluZyA/IGVuY29k
aW5nIDogU3RyaW5nKCkpOwogfQogCiB2b2lkIEV3a1ZpZXdJbXBsOjpzZXRNb3VzZUV2ZW50c0Vu
YWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtNjQwLDcgKzY5Niw3IEBAIHZvaWQgRXdrVmlld0ltcGw6
OnNldFRvdWNoRXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpCiAgKi8KIHZvaWQgRXdrVmlld0lt
cGw6OmluZm9ybUljb25DaGFuZ2UoKQogewotICAgIEV3a19GYXZpY29uX0RhdGFiYXNlKiBpY29u
RGF0YWJhc2UgPSBjb250ZXh0LT5mYXZpY29uRGF0YWJhc2UoKTsKKyAgICBFd2tfRmF2aWNvbl9E
YXRhYmFzZSogaWNvbkRhdGFiYXNlID0gbV9jb250ZXh0LT5mYXZpY29uRGF0YWJhc2UoKTsKICAg
ICBBU1NFUlQoaWNvbkRhdGFiYXNlKTsKIAogICAgIG1fZmF2aWNvblVSTCA9IGV3a19mYXZpY29u
X2RhdGFiYXNlX2ljb25fdXJsX2dldChpY29uRGF0YWJhc2UsIG1fdXJsKTsKQEAgLTgwNCw3ICs4
NjAsNyBAQCB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1XZWJQcm9jZXNzQ3Jhc2hlZCgpCiAgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ3ZWJwcm9jZXNzLGNyYXNo
ZWQiLCAmaGFuZGxlZCk7CiAKICAgICBpZiAoIWhhbmRsZWQpIHsKLSAgICAgICAgQ1N0cmluZyB1
cmwgPSBwYWdlUHJveHktPnVybEF0UHJvY2Vzc0V4aXQoKS51dGY4KCk7CisgICAgICAgIENTdHJp
bmcgdXJsID0gbV9wYWdlUHJveHktPnVybEF0UHJvY2Vzc0V4aXQoKS51dGY4KCk7CiAgICAgICAg
IFdBUk4oIldBUk5JTkc6IFRoZSB3ZWIgcHJvY2VzcyBleHBlcmllbmNlZCBhIGNyYXNoIG9uICcl
cycuXG4iLCB1cmwuZGF0YSgpKTsKIAogICAgICAgICAvLyBEaXNwbGF5IGFuIGVycm9yIHBhZ2UK
QEAgLTkyNyw3ICs5ODMsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRXdrVmlld0ltcGw6OmluZm9y
bURhdGFiYXNlUXVvdGFSZWFjaGVkKGNvbnN0IFN0cmluZyYgZGF0YWJhcwogICovCiB2b2lkIEV3
a1ZpZXdJbXBsOjppbmZvcm1VUkxDaGFuZ2UoKQogewotICAgIFN0cmluZyBhY3RpdmVVUkwgPSBw
YWdlUHJveHktPmFjdGl2ZVVSTCgpOworICAgIFN0cmluZyBhY3RpdmVVUkwgPSBtX3BhZ2VQcm94
eS0+YWN0aXZlVVJMKCk7CiAgICAgaWYgKGFjdGl2ZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMTAzMiwzICsxMDg4LDEzIEBAIHZvaWQgRXdrVmlld0ltcGw6Om9uVG91Y2hN
b3ZlKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMqIC8qIGNhbnZhcyAqLywgRXZhc19PYmplY3QqCiAg
ICAgdmlld0ltcGwtPmZlZWRUb3VjaEV2ZW50cyhFV0tfVE9VQ0hfTU9WRSk7CiB9CiAjZW5kaWYK
Kwordm9pZCBFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZChjb25zdCBjaGFyKiBwYWdlVVJM
LCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gc3RhdGlj
X2Nhc3Q8RXdrVmlld0ltcGwqPihldmVudEluZm8pOworCisgICAgaWYgKCF2aWV3SW1wbC0+dXJs
KCkgfHwgc3RyY2FzZWNtcCh2aWV3SW1wbC0+dXJsKCksIHBhZ2VVUkwpKQorICAgICAgICByZXR1
cm47CisKKyAgICB2aWV3SW1wbC0+aW5mb3JtSWNvbkNoYW5nZSgpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKaW5kZXggZDQwMzI4Ny4uYzM4
ZGIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
d0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oCkBAIC02OSw2ICs2OSw3IEBAIGNsYXNzIFBhZ2VVSUNsaWVudEVmbDsKIGNsYXNzIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw7CiBjbGFzcyBQYWdlVmlld3BvcnRDb250cm9sbGVy
OwogY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOworY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xh
c3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUG9wdXBJdGVtOwogY2xhc3MgV2ViUG9wdXBNZW51
UHJveHlFZmw7CkBAIC05OSwxNiArMTAwLDE3IEBAIHR5cGVkZWYgc3RydWN0IEV3a19WaWV3X1Nt
YXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsKIAogY2xhc3MgRXdrVmlld0ltcGwgewogcHVi
bGljOgotICAgIGV4cGxpY2l0IEV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3KTsKKyAgICBF
d2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29u
dGV4dCwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBhZ2VHcm91cD4gcGFnZUdyb3VwKTsKICAgICB+
RXdrVmlld0ltcGwoKTsKIAogICAgIHN0YXRpYyBFd2tWaWV3SW1wbCogZnJvbUV2YXNPYmplY3Qo
Y29uc3QgRXZhc19PYmplY3QqIHZpZXcpOwogCi0gICAgaW5saW5lIEV2YXNfT2JqZWN0KiB2aWV3
KCkgeyByZXR1cm4gbV92aWV3OyB9CisgICAgRXZhc19PYmplY3QqIHZpZXcoKSB7IHJldHVybiBt
X3ZpZXc7IH0KICAgICBXS1BhZ2VSZWYgd2tQYWdlKCk7Ci0gICAgaW5saW5lIFdlYktpdDo6V2Vi
UGFnZVByb3h5KiBwYWdlKCkgeyByZXR1cm4gcGFnZVByb3h5LmdldCgpOyB9Ci0gICAgRXdrX0Nv
bnRleHQqIGV3a0NvbnRleHQoKSB7IHJldHVybiBjb250ZXh0LmdldCgpOyB9CisgICAgV2ViS2l0
OjpXZWJQYWdlUHJveHkqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2VQcm94eS5nZXQoKTsgfQorICAg
IEV3a19Db250ZXh0KiBld2tDb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAg
ICAgRXdrX1NldHRpbmdzKiBzZXR0aW5ncygpIHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0K
KyAgICBFd2tfQmFja19Gb3J3YXJkX0xpc3QqIGJhY2tGb3J3YXJkTGlzdCgpIHsgcmV0dXJuIG1f
YmFja0ZvcndhcmRMaXN0LmdldCgpOyB9CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBj
b25zdDsKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0OwpAQCAtMTM5LDggKzE0MSw4IEBAIHB1
YmxpYzoKICAgICBib29sIHNldENvbG9yUGlja2VyQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
IGNvbG9yKTsKICNlbmRpZgogCi0gICAgc3RhdGljIHZvaWQgYWRkVG9QYWdlVmlld01hcChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldyk7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlRnJvbVBhZ2VW
aWV3TWFwKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKyAgICBzdGF0aWMgdm9pZCBhZGRU
b1BhZ2VWaWV3TWFwKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCk7CisgICAgc3RhdGljIHZvaWQgcmVt
b3ZlRnJvbVBhZ2VWaWV3TWFwKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCk7CiAgICAgc3RhdGljIGNv
bnN0IEV2YXNfT2JqZWN0KiB2aWV3RnJvbVBhZ2VWaWV3TWFwKGNvbnN0IFdLUGFnZVJlZik7CiAK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC0yMTMsMjkgKzIxNSw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGluZm9ybUludGVudFNlcnZpY2VSZWdpc3RyYXRpb24oRXdrX0ludGVudF9TZXJ2
aWNlKiBld2tJbnRlbnRTZXJ2aWNlKTsKICNlbmRpZgogCi0gICAgLy8gRklYTUU6IE1ha2UgbWVt
YmVycyBwcml2YXRlIGZvciBlbmNhcHN1bGF0aW9uLgotICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsPiBwYWdlQ2xpZW50OwotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAg
IE93blB0cjxXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw+IHBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnQ7Ci0gICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29u
dHJvbGxlcj4gcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKLSNlbmRpZgotICAgIFJlZlB0cjxXZWJL
aXQ6OldlYlBhZ2VQcm94eT4gcGFnZVByb3h5OwotICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VMb2Fk
Q2xpZW50RWZsPiBwYWdlTG9hZENsaWVudDsKLSAgICBPd25QdHI8V2ViS2l0OjpQYWdlUG9saWN5
Q2xpZW50RWZsPiBwYWdlUG9saWN5Q2xpZW50OwotICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VVSUNs
aWVudEVmbD4gcGFnZVVJQ2xpZW50OwotICAgIE93blB0cjxXZWJLaXQ6OlJlc291cmNlTG9hZENs
aWVudEVmbD4gcmVzb3VyY2VMb2FkQ2xpZW50OwotICAgIE93blB0cjxXZWJLaXQ6OkZpbmRDbGll
bnRFZmw+IGZpbmRDbGllbnQ7Ci0gICAgT3duUHRyPFdlYktpdDo6Rm9ybUNsaWVudEVmbD4gZm9y
bUNsaWVudDsKLQotICAgIE93blB0cjxFd2tfQmFja19Gb3J3YXJkX0xpc3Q+IGJhY2tGb3J3YXJk
TGlzdDsKLSAgICBSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQ7Ci0KLSNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0gICAgRXZhc19HTCogZXZhc0dsOwotICAgIEV2YXNfR0xfQ29u
dGV4dCogZXZhc0dsQ29udGV4dDsKLSAgICBFdmFzX0dMX1N1cmZhY2UqIGV2YXNHbFN1cmZhY2U7
Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICBpbmxpbmUgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21h
cnREYXRhKCk7CiAgICAgdm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxFd2tW
aWV3SW1wbD4qKTsKQEAgLTI0OSw4ICsyMjgsMjkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCBvblRvdWNoVXAodm9pZCogLyogZGF0YSAqLywgRXZhcyogLyogY2FudmFzICovLCBFdmFzX09i
amVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJbmZvICovKTsKICAgICBzdGF0aWMgdm9pZCBv
blRvdWNoTW92ZSh2b2lkKiAvKiBkYXRhICovLCBFdmFzKiAvKiBjYW52YXMgKi8sIEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCB2b2lkKiAvKiBldmVudEluZm8gKi8pOwogI2VuZGlmCisgICAgc3RhdGlj
IHZvaWQgb25GYXZpY29uQ2hhbmdlZChjb25zdCBjaGFyKiBwYWdlVVJMLCB2b2lkKiBldmVudElu
Zm8pOwogCisgICAgLy8gTm90ZSwgaW5pdGlhbGl6YXRpb24gb3JkZXIgaXMgaW1wb3J0YW50Lgog
ICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7CisgICAgUmVmUHRyPEV3a19Db250ZXh0PiBtX2NvbnRl
eHQ7CisgICAgT3duUHRyPFdlYktpdDo6UGFnZUNsaWVudEltcGw+IG1fcGFnZUNsaWVudDsKKyAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fcGFnZVByb3h5OworICAgIE93blB0cjxX
ZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsPiBtX3BhZ2VMb2FkQ2xpZW50OworICAgIE93blB0cjxX
ZWJLaXQ6OlBhZ2VQb2xpY3lDbGllbnRFZmw+IG1fcGFnZVBvbGljeUNsaWVudDsKKyAgICBPd25Q
dHI8V2ViS2l0OjpQYWdlVUlDbGllbnRFZmw+IG1fcGFnZVVJQ2xpZW50OworICAgIE93blB0cjxX
ZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbD4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7CisgICAg
T3duUHRyPFdlYktpdDo6RmluZENsaWVudEVmbD4gbV9maW5kQ2xpZW50OworICAgIE93blB0cjxX
ZWJLaXQ6OkZvcm1DbGllbnRFZmw+IG1fZm9ybUNsaWVudDsKKyAgICBPd25QdHI8RXdrX0JhY2tf
Rm9yd2FyZF9MaXN0PiBtX2JhY2tGb3J3YXJkTGlzdDsKKyNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKKyAgICBPd25QdHI8V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
PiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQ7CisgICAgT3duUHRyPFdlYktpdDo6UGFn
ZVZpZXdwb3J0Q29udHJvbGxlcj4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyOworI2VuZGlmCisj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIEV2YXNfR0wqIG1fZXZhc0dsOwor
ICAgIEV2YXNfR0xfQ29udGV4dCogbV9ldmFzR2xDb250ZXh0OworICAgIEV2YXNfR0xfU3VyZmFj
ZSogbV9ldmFzR2xTdXJmYWNlOworI2VuZGlmCiAgICAgT3duUHRyPEV3a19TZXR0aW5ncz4gbV9z
ZXR0aW5nczsKICAgICBSZWZQdHI8RXZhc19PYmplY3Q+IG1fY3Vyc29yT2JqZWN0OwogICAgIFdL
RWluYVNoYXJlZFN0cmluZyBtX2N1cnNvckdyb3VwOwpAQCAtMjY4LDkgKzI2OCw2IEBAIHByaXZh
dGU6CiAgICAgV1RGOjpWZWN0b3IgPFdlYkNvcmU6OkludFJlY3Q+IG1fZGlydHlSZWN0czsKICAg
ICBPd25QdHI8RXdrX1BvcHVwX01lbnU+IG1fcG9wdXBNZW51OwogICAgIE93blB0cjxXZWJLaXQ6
OklucHV0TWV0aG9kQ29udGV4dEVmbD4gbV9pbnB1dE1ldGhvZENvbnRleHQ7Ci0KLSAgICB0eXBl
ZGVmIEhhc2hNYXA8V0tQYWdlUmVmLCBjb25zdCBFdmFzX09iamVjdCo+IFBhZ2VWaWV3TWFwOwot
ICAgIHN0YXRpYyBQYWdlVmlld01hcCBwYWdlVmlld01hcDsKIH07CiAKICNlbmRpZiAvLyBFd2tW
aWV3SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfc2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Nl
dHRpbmdzLmNwcAppbmRleCA0YjllYzI3Li40NzhlMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZXR0aW5ncy5jcHAKQEAgLTQ1LDEyICs0NSwxMiBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
KiBFd2tfU2V0dGluZ3M6OnByZWZlcmVuY2VzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV92aWV3
SW1wbC0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKTsKKyAgICByZXR1cm4g
bV92aWV3SW1wbC0+cGFnZSgpLT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKTsKIH0KIAogV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlcyogRXdrX1NldHRpbmdzOjpwcmVmZXJlbmNlcygpCiB7Ci0gICAg
cmV0dXJuIG1fdmlld0ltcGwtPnBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCk7
CisgICAgcmV0dXJuIG1fdmlld0ltcGwtPnBhZ2UoKS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2Vz
KCk7CiB9CiAKICNpZiBFTkFCTEUoU1BFTExDSEVDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCBiMzFkM2IyLi5kMTFlMzBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC01MywxMCAr
NTMsNiBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0jaW5jbHVkZSAi
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCiAjZW5kaWYKQEAgLTEyOSwyNSAr
MTI1LDEyIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBldmFzX29iamVjdF9zbWFydF9jaGFuZ2VkKHNtYXJ0
RGF0YS0+c2VsZik7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mYXZpY29uX2NoYW5n
ZWQoY29uc3QgY2hhciogcGFnZVVSTCwgdm9pZCogZXZlbnRJbmZvKQotewotICAgIEV2YXNfT2Jq
ZWN0KiBld2tWaWV3ID0gc3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihldmVudEluZm8pOwotICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tf
VklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsKTsKLQotICAgIGNvbnN0IGNo
YXIqIHZpZXdVUkwgPSBld2tfdmlld191cmxfZ2V0KGV3a1ZpZXcpOwotICAgIGlmICghdmlld1VS
TCB8fCBzdHJjYXNlY21wKHZpZXdVUkwsIHBhZ2VVUkwpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpbXBsLT5pbmZvcm1JY29uQ2hhbmdlKCk7Ci19Ci0KIC8vIERlZmF1bHQgRXZlbnQgSGFuZGxp
bmcuCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9mb2N1c19pbihFd2tfVmlld19T
bWFydF9EYXRhKiBzbWFydERhdGEpCiB7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+cGFnZVByb3h5LT52aWV3U3Rh
dGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwgV2ViUGFnZVByb3h5OjpW
aWV3V2luZG93SXNBY3RpdmUpOworICAgIGltcGwtPnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdl
KFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNlZCB8IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lz
QWN0aXZlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTU1LDcgKzEzOCw3IEBAIHN0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEpCiB7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFu
Z2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwgV2ViUGFnZVByb3h5OjpWaWV3V2luZG93
SXNBY3RpdmUpOworICAgIGltcGwtPnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQ
cm94eTo6Vmlld0lzRm9jdXNlZCB8IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTc5LDkgKzE2Miw5IEBAIHN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0
RGF0YSwgY29uCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgRXZhc19FdmVudF9N
b3VzZV9XaGVlbCBldmVudCgqd2hlZWxFdmVudCk7CiAgICAgZXZlbnQuY2FudmFzID0gbWFwVG9X
ZWJDb250ZW50KHNtYXJ0RGF0YSwgZXZlbnQuY2FudmFzKTsKLSAgICBpbXBsLT5wYWdlUHJveHkt
PmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudCgmZXZlbnQsICZwb3NpdGlvbikp
OworICAgIGltcGwtPnBhZ2UoKS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50
KCZldmVudCwgJnBvc2l0aW9uKSk7CiAjZWxzZQotICAgIGltcGwtPnBhZ2VQcm94eS0+aGFuZGxl
V2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KHdoZWVsRXZlbnQsICZwb3NpdGlvbikpOwor
ICAgIGltcGwtPnBhZ2UoKS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KHdo
ZWVsRXZlbnQsICZwb3NpdGlvbikpOwogI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0x
OTQsOSArMTc3LDkgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93
bihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnMKICNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKICAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24gZXZlbnQoKmRvd25FdmVudCk7
CiAgICAgZXZlbnQuY2FudmFzID0gbWFwVG9XZWJDb250ZW50KHNtYXJ0RGF0YSwgZXZlbnQuY2Fu
dmFzKTsKLSAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91
c2VFdmVudCgmZXZlbnQsICZwb3NpdGlvbikpOworICAgIGltcGwtPnBhZ2UoKS0+aGFuZGxlTW91
c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KCZldmVudCwgJnBvc2l0aW9uKSk7CiAjZWxzZQot
ICAgIGltcGwtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50
KGRvd25FdmVudCwgJnBvc2l0aW9uKSk7CisgICAgaW1wbC0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2
ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZG93bkV2ZW50LCAmcG9zaXRpb24pKTsKICNlbmRpZgog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjA5LDkgKzE5Miw5IEBAIHN0YXRpYyBFaW5hX0Jvb2wg
X2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwg
Y29uc3QKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBFdmFzX0V2ZW50X01vdXNl
X1VwIGV2ZW50KCp1cEV2ZW50KTsKICAgICBldmVudC5jYW52YXMgPSBtYXBUb1dlYkNvbnRlbnQo
c21hcnREYXRhLCBldmVudC5jYW52YXMpOwotICAgIGltcGwtPnBhZ2VQcm94eS0+aGFuZGxlTW91
c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KCZldmVudCwgJnBvc2l0aW9uKSk7CisgICAgaW1w
bC0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAm
cG9zaXRpb24pKTsKICNlbHNlCi0gICAgaW1wbC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50
KE5hdGl2ZVdlYk1vdXNlRXZlbnQodXBFdmVudCwgJnBvc2l0aW9uKSk7CisgICAgaW1wbC0+cGFn
ZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQodXBFdmVudCwgJnBvc2l0
aW9uKSk7CiAjZW5kaWYKIAogICAgIElucHV0TWV0aG9kQ29udGV4dEVmbCogaW5wdXRNZXRob2RD
b250ZXh0ID0gaW1wbC0+aW5wdXRNZXRob2RDb250ZXh0KCk7CkBAIC0yMjksOSArMjEyLDkgQEAg
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZShFd2tfVmlld19TbWFy
dF9EYXRhKiBzbWFydERhdGEsIGNvbnMKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAg
ICBFdmFzX0V2ZW50X01vdXNlX01vdmUgZXZlbnQoKm1vdmVFdmVudCk7CiAgICAgZXZlbnQuY3Vy
LmNhbnZhcyA9IG1hcFRvV2ViQ29udGVudChzbWFydERhdGEsIGV2ZW50LmN1ci5jYW52YXMpOwot
ICAgIGltcGwtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50
KCZldmVudCwgJnBvc2l0aW9uKSk7CisgICAgaW1wbC0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50
KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKICNlbHNlCi0gICAgaW1w
bC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92ZUV2
ZW50LCAmcG9zaXRpb24pKTsKKyAgICBpbXBsLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0
aXZlV2ViTW91c2VFdmVudChtb3ZlRXZlbnQsICZwb3NpdGlvbikpOwogI2VuZGlmCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDUsNyArMjI4LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdAog
ICAgIGlmIChpbnB1dE1ldGhvZENvbnRleHQpCiAgICAgICAgIGlucHV0TWV0aG9kQ29udGV4dC0+
aGFuZGxlS2V5RG93bkV2ZW50KGRvd25FdmVudCwgJmlzRmlsdGVyZWQpOwogCi0gICAgaW1wbC0+
cGFnZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZG93
bkV2ZW50LCBpc0ZpbHRlcmVkKSk7CisgICAgaW1wbC0+cGFnZSgpLT5oYW5kbGVLZXlib2FyZEV2
ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZG93bkV2ZW50LCBpc0ZpbHRlcmVkKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTI1Myw3ICsyMzYsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9l
d2tfdmlld19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25z
dCBFdgogewogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGws
IGZhbHNlKTsKIAotICAgIGltcGwtPnBhZ2VQcm94eS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRp
dmVXZWJLZXlib2FyZEV2ZW50KHVwRXZlbnQpKTsKKyAgICBpbXBsLT5wYWdlKCktPmhhbmRsZUtl
eWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCh1cEV2ZW50KSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTMwNSw3ICsyODgsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25f
c2hvdyh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiAvKmV2ZW50SW5mbwog
ewogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19W
aWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBpbXBsKTsKLSAgICBpbXBsLT5wYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5n
ZShXZWJQYWdlUHJveHk6OlZpZXdJc1Zpc2libGUpOworICAgIGltcGwtPnBhZ2UoKS0+dmlld1N0
YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7CiB9CiAKIHN0YXRpYyB2
b2lkIF9ld2tfdmlld19vbl9oaWRlKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZv
aWQqIC8qZXZlbnRJbmZvKi8pCkBAIC0zMTYsMjAgKzI5OSwxMSBAQCBzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfb25faGlkZSh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiAvKmV2
ZW50SW5mbwogICAgIC8vIFRoaXMgY2FsbCBtYXkgbG9vayB3cm9uZywgYnV0IHdlIHJlYWxseSBu
ZWVkIHRvIHBhc3MgVmlld0lzVmlzaWJsZSBoZXJlLgogICAgIC8vIHZpZXdTdGF0ZURpZENoYW5n
ZSgpIGl0c2VsZiBpcyByZXNwb25zaWJsZSBmb3IgYWN0dWFsbHkgc2V0dGluZyB0aGUgdmlzaWJp
bGl0eSB0byBWaXNpYmxlIG9yIEhpZGRlbgogICAgIC8vIGRlcGVuZGluZyBvbiB3aGF0IFdlYlBh
Z2VQcm94eTo6aXNWaWV3VmlzaWJsZSgpIHJldHVybnMsIHRoaXMgc2ltcGx5IHRyaWdnZXJzIHRo
ZSBwcm9jZXNzLgotICAgIGltcGwtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBh
Z2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7CisgICAgaW1wbC0+cGFnZSgpLT52aWV3U3RhdGVEaWRD
aGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxlKTsKIH0KIAogc3RhdGljIEV2YXNfU21h
cnRfQ2xhc3MgZ19wYXJlbnRTbWFydENsYXNzID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7
CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19pbXBsX2RlbChFd2tWaWV3SW1wbCogaW1wbCkKLXsK
LSAgICAvKiBVbnJlZ2lzdGVyIGljb24gY2hhbmdlIGNhbGxiYWNrICovCi0gICAgRXdrX0Zhdmlj
b25fRGF0YWJhc2UqIGljb25EYXRhYmFzZSA9IGltcGwtPmNvbnRleHQtPmZhdmljb25EYXRhYmFz
ZSgpOwotICAgIGljb25EYXRhYmFzZS0+dW53YXRjaENoYW5nZXMoX2V3a192aWV3X29uX2Zhdmlj
b25fY2hhbmdlZCk7Ci0KLSAgICBkZWxldGUgaW1wbDsKLX0KLQogc3RhdGljIHZvaWQgX2V3a192
aWV3X3NtYXJ0X2FkZChFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBjb25zdCBFdmFzX1Nt
YXJ0KiBzbWFydCA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChld2tWaWV3KTsKQEAgLTM1
MSwxMyArMzI1LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVj
dCogZXdrVmlldykKIAogICAgIGdfcGFyZW50U21hcnRDbGFzcy5hZGQoZXdrVmlldyk7CiAKLSAg
ICBzbWFydERhdGEtPnByaXYgPSBuZXcgRXdrVmlld0ltcGwoZXdrVmlldyk7Ci0gICAgaWYgKCFz
bWFydERhdGEtPnByaXYpIHsKLSAgICAgICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IGFsbG9j
YXRlIEV3a1ZpZXdJbXBsIik7Ci0gICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfc2V0KGV3
a1ZpZXcsIDApOwotICAgICAgICBmcmVlKHNtYXJ0RGF0YSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgc21hcnREYXRhLT5wcml2ID0gMDsKIAogICAgIC8vIENyZWF0ZSBldmFzX29iamVj
dF9pbWFnZSB0byBkcmF3IHdlYiBjb250ZW50cy4KICAgICBzbWFydERhdGEtPmltYWdlID0gZXZh
c19vYmplY3RfaW1hZ2VfYWRkKHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsKQEAgLTM3OSwxMCArMzQ3
LDkgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVjdCogZXdrVmll
dykKIAogc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2RlbChFdmFzX09iamVjdCogZXdrVmll
dykKIHsKLSAgICBFd2tWaWV3SW1wbDo6cmVtb3ZlRnJvbVBhZ2VWaWV3TWFwKGV3a1ZpZXcpOwog
ICAgIEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOwotICAgIGlmIChzbWFydERh
dGEgJiYgc21hcnREYXRhLT5wcml2KQotICAgICAgICBfZXdrX3ZpZXdfaW1wbF9kZWwoc21hcnRE
YXRhLT5wcml2KTsKKyAgICBpZiAoc21hcnREYXRhKQorICAgICAgICBkZWxldGUgc21hcnREYXRh
LT5wcml2OwogCiAgICAgZ19wYXJlbnRTbWFydENsYXNzLmRlbChld2tWaWV3KTsKIH0KQEAgLTQy
OSw4ICszOTYsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogICAgICAgICBuZWVkc05ld1N1cmZhY2UgPSBpbXBsLT5ldmFzR2xT
dXJmYWNlOwogI2VuZGlmCiAKLSAgICAgICAgaWYgKGltcGwtPnBhZ2VQcm94eS0+ZHJhd2luZ0Fy
ZWEoKSkKLSAgICAgICAgICAgIGltcGwtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6
ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCBJbnRTaXplKCkpOworICAgICAgICBpZiAoaW1wbC0+
cGFnZSgpLT5kcmF3aW5nQXJlYSgpKQorICAgICAgICAgICAgaW1wbC0+cGFnZSgpLT5kcmF3aW5n
QXJlYSgpLT5zZXRTaXplKEludFNpemUod2lkdGgsIGhlaWdodCksIEludFNpemUoKSk7CiAKICAg
ICAgICAgc21hcnREYXRhLT52aWV3LncgPSB3aWR0aDsKICAgICAgICAgc21hcnREYXRhLT52aWV3
LmggPSBoZWlnaHQ7CkBAIC00OTIsOCArNDU5LDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3Nt
YXJ0X2NvbG9yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgaW50IHJlZCwgaW50IGdyZWVuLAog
I3VuZGVmIENIRUNLX0NPTE9SCiAKICAgICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc21h
cnREYXRhLT5pbWFnZSwgYWxwaGEgPCAyNTUpOwotICAgIGltcGwtPnBhZ2VQcm94eS0+c2V0RHJh
d3NCYWNrZ3JvdW5kKHJlZCB8fCBncmVlbiB8fCBibHVlKTsKLSAgICBpbXBsLT5wYWdlUHJveHkt
PnNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGFscGhhIDwgMjU1KTsKKyAgICBpbXBsLT5w
YWdlKCktPnNldERyYXdzQmFja2dyb3VuZChyZWQgfHwgZ3JlZW4gfHwgYmx1ZSk7CisgICAgaW1w
bC0+cGFnZSgpLT5zZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChhbHBoYSA8IDI1NSk7CiAK
ICAgICBnX3BhcmVudFNtYXJ0Q2xhc3MuY29sb3Jfc2V0KGV3a1ZpZXcsIHJlZCwgZ3JlZW4sIGJs
dWUsIGFscGhhKTsKIH0KQEAgLTUzNyw3ICs1MDQsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc21h
cnRfY2xhc3Nfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgRXZhc19TbWFydCogX2V3a192aWV3X3NtYXJ0X2NsYXNzX25l
dyh2b2lkKQorc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBjcmVhdGVFd2tWaWV3U21hcnRDbGFz
cyh2b2lkKQogewogICAgIHN0YXRpYyBFd2tfVmlld19TbWFydF9DbGFzcyBhcGkgPSBFV0tfVklF
V19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTigiRXdrX1ZpZXciKTsKICAgICBzdGF0aWMg
RXZhc19TbWFydCogc21hcnQgPSAwOwpAQCAtNTUwLDcwICs1MTcsMTQgQEAgc3RhdGljIGlubGlu
ZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KHZvaWQpCiAgICAgcmV0dXJu
IHNtYXJ0OwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfaW5pdGlhbGl6ZShFdmFzX09iamVj
dCogZXdrVmlldywgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwUmVmKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBpbXBsKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250ZXh0KTsKLQotICAg
IGlmIChpbXBsLT5wYWdlQ2xpZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbXBsLT5wYWdl
Q2xpZW50ID0gUGFnZUNsaWVudEltcGw6OmNyZWF0ZShpbXBsKTsKLQotICAgIGlmIChwYWdlR3Jv
dXBSZWYpCi0gICAgICAgIGltcGwtPnBhZ2VQcm94eSA9IHRvSW1wbChjb250ZXh0LT53a0NvbnRl
eHQoKSktPmNyZWF0ZVdlYlBhZ2UoaW1wbC0+cGFnZUNsaWVudC5nZXQoKSwgdG9JbXBsKHBhZ2VH
cm91cFJlZikpOwotICAgIGVsc2UKLSAgICAgICAgaW1wbC0+cGFnZVByb3h5ID0gdG9JbXBsKGNv
bnRleHQtPndrQ29udGV4dCgpKS0+Y3JlYXRlV2ViUGFnZShpbXBsLT5wYWdlQ2xpZW50LmdldCgp
LCBXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpLmdldCgpKTsKLQotICAgIEV3a1ZpZXdJbXBsOjphZGRU
b1BhZ2VWaWV3TWFwKGV3a1ZpZXcpOwotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQot
ICAgIGltcGwtPnBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHRydWUpOwotICAgIGltcGwtPnBhZ2VQcm94eS0+cGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwot
ICAgIGltcGwtPnBhZ2VQcm94eS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7Ci0jaWYgRU5BQkxF
KFdFQkdMKQotICAgIGltcGwtPnBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkt
PnNldFdlYkdMRW5hYmxlZCh0cnVlKTsKLSNlbmRpZgotI2VuZGlmCi0gICAgaW1wbC0+cGFnZVBy
b3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOwotCi0gICAgaW1wbC0+YmFja0ZvcndhcmRMaXN0ID0g
RXdrX0JhY2tfRm9yd2FyZF9MaXN0OjpjcmVhdGUodG9BUEkoaW1wbC0+cGFnZVByb3h5LT5iYWNr
Rm9yd2FyZExpc3QoKSkpOwotCi0gICAgaW1wbC0+Y29udGV4dCA9IGNvbnRleHQ7Ci0KLSNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50ID0gUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6Y3JlYXRlKGltcGwpOwot
ICAgIGltcGwtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgUGFnZVZpZXdw
b3J0Q29udHJvbGxlcihpbXBsLT5wYWdlUHJveHkuZ2V0KCksIGltcGwtPnBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnQuZ2V0KCkpKTsKLSAgICBpbXBsLT5wYWdlQ2xpZW50LT5zZXRQYWdlVmll
d3BvcnRDb250cm9sbGVyKGltcGwtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuZ2V0KCkpOwotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgaW1wbC0+cGFnZVByb3h5LT5m
dWxsU2NyZWVuTWFuYWdlcigpLT5zZXRXZWJWaWV3KGV3a1ZpZXcpOwotICAgIGltcGwtPnBhZ2VQ
cm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEZ1bGxTY3JlZW5FbmFibGVkKHRy
dWUpOwotI2VuZGlmCi0KLSAgICAvLyBJbml0aWFsaXplIHBhZ2UgY2xpZW50cy4KLSAgICBpbXBs
LT5wYWdlTG9hZENsaWVudCA9IFBhZ2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUoaW1wbCk7Ci0gICAg
aW1wbC0+cGFnZVBvbGljeUNsaWVudCA9IFBhZ2VQb2xpY3lDbGllbnRFZmw6OmNyZWF0ZShpbXBs
KTsKLSAgICBpbXBsLT5wYWdlVUlDbGllbnQgPSBQYWdlVUlDbGllbnRFZmw6OmNyZWF0ZShpbXBs
KTsKLSAgICBpbXBsLT5yZXNvdXJjZUxvYWRDbGllbnQgPSBSZXNvdXJjZUxvYWRDbGllbnRFZmw6
OmNyZWF0ZShpbXBsKTsKLSAgICBpbXBsLT5maW5kQ2xpZW50ID0gRmluZENsaWVudEVmbDo6Y3Jl
YXRlKGltcGwpOwotICAgIGltcGwtPmZvcm1DbGllbnQgPSBGb3JtQ2xpZW50RWZsOjpjcmVhdGUo
aW1wbCk7Ci0KLSAgICAvKiBMaXN0ZW4gZm9yIGZhdmljb24gY2hhbmdlcyAqLwotICAgIEV3a19G
YXZpY29uX0RhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSBpbXBsLT5jb250ZXh0LT5mYXZpY29uRGF0
YWJhc2UoKTsKLSAgICBpY29uRGF0YWJhc2UtPndhdGNoQ2hhbmdlcyhJY29uQ2hhbmdlQ2FsbGJh
Y2tEYXRhKF9ld2tfdmlld19vbl9mYXZpY29uX2NoYW5nZWQsIGV3a1ZpZXcpKTsKLX0KLQotc3Rh
dGljIEV2YXNfT2JqZWN0KiBfZXdrX3ZpZXdfYWRkX3dpdGhfc21hcnQoRXZhcyogY2FudmFzLCBF
dmFzX1NtYXJ0KiBzbWFydCkKK3N0YXRpYyBpbmxpbmUgRXZhc19PYmplY3QqIGNyZWF0ZUV3a1Zp
ZXcoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFzc1JlZlB0cjxFd2tfQ29udGV4
dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogewogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChzbWFydCwgMCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGNvbnRleHQsIDApOwogCiAgICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBldmFzX29iamVj
dF9zbWFydF9hZGQoY2FudmFzLCBzbWFydCk7Ci0gICAgaWYgKCFld2tWaWV3KQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXdrVmlldywgMCk7
CiAKICAgICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKICAgICBpZiAoIXNt
YXJ0RGF0YSkgewpAQCAtNjIxLDExICs1MzIsOSBAQCBzdGF0aWMgRXZhc19PYmplY3QqIF9ld2tf
dmlld19hZGRfd2l0aF9zbWFydChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0KQogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBFV0tfVklFV19JTVBMX0dFVChzbWFydERhdGEs
IGltcGwpOwotICAgIGlmICghaW1wbCkgewotICAgICAgICBldmFzX29iamVjdF9kZWwoZXdrVmll
dyk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoIXNtYXJ0RGF0YS0+cHJp
dik7CisgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gcGFnZUdyb3VwUmVmID8g
dG9JbXBsKHBhZ2VHcm91cFJlZikgOiBXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpOworICAgIHNtYXJ0
RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3SW1wbChld2tWaWV3LCBjb250ZXh0LCBwYWdlR3JvdXAp
OwogCiAgICAgcmV0dXJuIGV3a1ZpZXc7CiB9CkBAIC02MzYsMzYgKzU0NSwxNyBAQCBzdGF0aWMg
RXZhc19PYmplY3QqIF9ld2tfdmlld19hZGRfd2l0aF9zbWFydChFdmFzKiBjYW52YXMsIEV2YXNf
U21hcnQqIHNtYXJ0KQogICovCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyog
Y2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
UmVmKQogewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb250ZXh0UmVmLCAwKTsKLSAgICBF
dmFzX09iamVjdCogZXdrVmlldyA9IF9ld2tfdmlld19hZGRfd2l0aF9zbWFydChjYW52YXMsIF9l
d2tfdmlld19zbWFydF9jbGFzc19uZXcoKSk7Ci0gICAgaWYgKCFld2tWaWV3KQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIF9ld2tfdmlld19pbml0aWFsaXplKGV3a1ZpZXcsIEV3a19Db250ZXh0
OjpjcmVhdGUoY29udGV4dFJlZiksIHBhZ2VHcm91cFJlZik7Ci0KLSAgICByZXR1cm4gZXdrVmll
dzsKKyAgICByZXR1cm4gY3JlYXRlRXdrVmlldyhjYW52YXMsIGNyZWF0ZUV3a1ZpZXdTbWFydENs
YXNzKCksIEV3a19Db250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiksIHBhZ2VHcm91cFJlZik7CiB9
CiAKIEV2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFzLCBFdmFzX1Nt
YXJ0KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKGNhbnZhcywgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNtYXJ0LCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29u
dGV4dCwgMCk7Ci0KLSAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IF9ld2tfdmlld19hZGRfd2l0
aF9zbWFydChjYW52YXMsIHNtYXJ0KTsKLSAgICBpZiAoIWV3a1ZpZXcpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgX2V3a192aWV3X2luaXRpYWxpemUoZXdrVmlldywgY29udGV4dCwgMCk7Ci0K
LSAgICByZXR1cm4gZXdrVmlldzsKKyAgICByZXR1cm4gY3JlYXRlRXdrVmlldyhjYW52YXMsIHNt
YXJ0LCBjb250ZXh0LCAwKTsKIH0KIAogRXZhc19PYmplY3QqIGV3a192aWV3X2FkZF93aXRoX2Nv
bnRleHQoRXZhcyogY2FudmFzLCBFd2tfQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29udGV4dCwgMCk7Ci0gICAgcmV0dXJuIGV3a192aWV3
X3NtYXJ0X2FkZChjYW52YXMsIF9ld2tfdmlld19zbWFydF9jbGFzc19uZXcoKSwgY29udGV4dCk7
CisgICAgcmV0dXJuIGV3a192aWV3X3NtYXJ0X2FkZChjYW52YXMsIGNyZWF0ZUV3a1ZpZXdTbWFy
dENsYXNzKCksIGNvbnRleHQpOwogfQogCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMq
IGNhbnZhcykKQEAgLTY4Nyw3ICs1NzcsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJsX3NldChF
dmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdXJsKQogICAgIEVXS19WSUVXX0lNUExf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwodXJsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPmxv
YWRVUkwodXJsKTsKKyAgICBpbXBsLT5wYWdlKCktPmxvYWRVUkwodXJsKTsKICAgICBpbXBsLT5p
bmZvcm1VUkxDaGFuZ2UoKTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtNzE0LDcgKzYwNCw3IEBA
IEVpbmFfQm9vbCBld2tfdmlld19yZWxvYWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBF
V0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAg
ICBpbXBsLT5wYWdlUHJveHktPnJlbG9hZCgvKnJlbG9hZEZyb21PcmlnaW4qLyBmYWxzZSk7Cisg
ICAgaW1wbC0+cGFnZSgpLT5yZWxvYWQoLypyZWxvYWRGcm9tT3JpZ2luKi8gZmFsc2UpOwogICAg
IGltcGwtPmluZm9ybVVSTENoYW5nZSgpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC03MjUsNyAr
NjE1LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBpbXBsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPnJlbG9hZCgvKnJlbG9hZEZy
b21PcmlnaW4qLyB0cnVlKTsKKyAgICBpbXBsLT5wYWdlKCktPnJlbG9hZCgvKnJlbG9hZEZyb21P
cmlnaW4qLyB0cnVlKTsKICAgICBpbXBsLT5pbmZvcm1VUkxDaGFuZ2UoKTsKIAogICAgIHJldHVy
biB0cnVlOwpAQCAtNzM2LDcgKzYyNiw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zdG9wKEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+cGFnZVByb3h5LT5zdG9wTG9hZGluZygp
OworICAgIGltcGwtPnBhZ2UoKS0+c3RvcExvYWRpbmcoKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtNzczLDcgKzY2Myw3IEBAIGRvdWJsZSBld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgLTEuMCk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgaW1wbCwgLTEuMCk7CiAKLSAgICByZXR1cm4gaW1wbC0+cGFnZVByb3h5
LT5lc3RpbWF0ZWRQcm9ncmVzcygpOworICAgIHJldHVybiBpbXBsLT5wYWdlKCktPmVzdGltYXRl
ZFByb2dyZXNzKCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zY2FsZV9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGRvdWJsZSBzY2FsZUZhY3RvciwgaW50IHgsIGludCB5KQpAQCAtNzgxLDcg
KzY3MSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zY2FsZV9zZXQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGRvdWJsZSBzY2FsZUZhY3RvciwgaW50IHgsIGluCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBFV0tfVklFV19JTVBMX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJv
eHktPnNjYWxlUGFnZShzY2FsZUZhY3RvciwgSW50UG9pbnQoeCwgeSkpOworICAgIGltcGwtPnBh
Z2UoKS0+c2NhbGVQYWdlKHNjYWxlRmFjdG9yLCBJbnRQb2ludCh4LCB5KSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTc5MCw3ICs2ODAsNyBAQCBkb3VibGUgZXdrX3ZpZXdfc2NhbGVfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCAtMSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgaW1wbCwgLTEpOwogCi0gICAgcmV0dXJuIGltcGwtPnBhZ2VQcm94eS0+
cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgcmV0dXJuIGltcGwtPnBhZ2UoKS0+cGFnZVNjYWxlRmFj
dG9yKCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCByYXRpbykKQEAgLTc5OCw3ICs2ODgsNyBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgZmxvYXQgcmF0aW8pCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIGZhbHNlKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPnNldEN1c3RvbURldmlj
ZVNjYWxlRmFjdG9yKHJhdGlvKTsKKyAgICBpbXBsLT5wYWdlKCktPnNldEN1c3RvbURldmljZVNj
YWxlRmFjdG9yKHJhdGlvKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODA4LDcgKzY5OCw3
IEBAIGZsb2F0IGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIC0xLjApOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IGltcGwsIC0xLjApOwogCi0gICAgcmV0dXJuIGltcGwtPnBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKTsKKyAgICByZXR1cm4gaW1wbC0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwog
fQogCiB2b2lkIGV3a192aWV3X3RoZW1lX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
Y2hhciogcGF0aCkKQEAgLTgzMiw3ICs3MjIsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFjayhF
dmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IGltcGwt
PnBhZ2VQcm94eS5nZXQoKTsKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBpbXBsLT5wYWdlKCk7
CiAgICAgaWYgKHBhZ2UtPmNhbkdvQmFjaygpKSB7CiAgICAgICAgIHBhZ2UtPmdvQmFjaygpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg0Niw3ICs3MzYsNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfZm9yd2FyZChFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IGltcGwtPnBhZ2VQcm94eS5nZXQoKTsKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBp
bXBsLT5wYWdlKCk7CiAgICAgaWYgKHBhZ2UtPmNhbkdvRm9yd2FyZCgpKSB7CiAgICAgICAgIHBh
Z2UtPmdvRm9yd2FyZCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg2Miw3ICs3NTIsNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfaW50ZW50X2RlbGl2ZXIoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IEV3a19JbnRlbnQqIGludGVudCkKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBpbXBsLCBmYWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGludGVudCwgZmFsc2UpOwogCi0gICAgV2ViUGFnZVByb3h5KiBwYWdlID0gaW1wbC0+cGFnZVBy
b3h5LmdldCgpOworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IGltcGwtPnBhZ2UoKTsKICAgICBw
YWdlLT5kZWxpdmVySW50ZW50VG9GcmFtZShwYWdlLT5tYWluRnJhbWUoKSwgaW50ZW50LT53ZWJJ
bnRlbnREYXRhKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC04NzYsNyArNzY2LDcgQEAgRWlu
YV9Cb29sIGV3a192aWV3X2JhY2tfcG9zc2libGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAg
ICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAK
LSAgICByZXR1cm4gaW1wbC0+cGFnZVByb3h5LT5jYW5Hb0JhY2soKTsKKyAgICByZXR1cm4gaW1w
bC0+cGFnZSgpLT5jYW5Hb0JhY2soKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmRf
cG9zc2libGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC04ODQsNyArNzc0LDcgQEAgRWluYV9C
b29sIGV3a192aWV3X2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAg
ICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAK
LSAgICByZXR1cm4gaW1wbC0+cGFnZVByb3h5LT5jYW5Hb0ZvcndhcmQoKTsKKyAgICByZXR1cm4g
aW1wbC0+cGFnZSgpLT5jYW5Hb0ZvcndhcmQoKTsKIH0KIAogRXdrX0JhY2tfRm9yd2FyZF9MaXN0
KiBld2tfdmlld19iYWNrX2ZvcndhcmRfbGlzdF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCkBAIC04OTIsNyArNzgyLDcgQEAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0KiBld2tfdmlld19i
YWNrX2ZvcndhcmRfbGlzdF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CiAgICAgRVdLX1ZJ
RVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgMCk7CiAKLSAgICByZXR1cm4g
aW1wbC0+YmFja0ZvcndhcmRMaXN0LmdldCgpOworICAgIHJldHVybiBpbXBsLT5iYWNrRm9yd2Fy
ZExpc3QoKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIGh0bWwsIGNvbnN0IGNoYXIqIGJhc2VVcmwsIGNv
bnN0IGNoYXIqIHVucmVhY2hhYmxlVXJsKQpAQCAtOTAyLDkgKzc5Miw5IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19odG1sX3N0cmluZ19sb2FkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFy
KiBodG1sLCBjb25zCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGh0bWwsIGZh
bHNlKTsKIAogICAgIGlmICh1bnJlYWNoYWJsZVVybCAmJiAqdW5yZWFjaGFibGVVcmwpCi0gICAg
ICAgIGltcGwtPnBhZ2VQcm94eS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoU3RyaW5nOjpmcm9t
VVRGOChodG1sKSwgYmFzZVVybCA/IFN0cmluZzo6ZnJvbVVURjgoYmFzZVVybCkgOiAiIiwgU3Ry
aW5nOjpmcm9tVVRGOCh1bnJlYWNoYWJsZVVybCkpOworICAgICAgICBpbXBsLT5wYWdlKCktPmxv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoaHRtbCksIGJhc2VVcmwgPyBT
dHJpbmc6OmZyb21VVEY4KGJhc2VVcmwpIDogIiIsIFN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFi
bGVVcmwpKTsKICAgICBlbHNlCi0gICAgICAgIGltcGwtPnBhZ2VQcm94eS0+bG9hZEhUTUxTdHJp
bmcoU3RyaW5nOjpmcm9tVVRGOChodG1sKSwgYmFzZVVybCA/IFN0cmluZzo6ZnJvbVVURjgoYmFz
ZVVybCkgOiAiIik7CisgICAgICAgIGltcGwtPnBhZ2UoKS0+bG9hZEhUTUxTdHJpbmcoU3RyaW5n
Ojpmcm9tVVRGOChodG1sKSwgYmFzZVVybCA/IFN0cmluZzo6ZnJvbVVURjgoYmFzZVVybCkgOiAi
Iik7CiAKICAgICBpbXBsLT5pbmZvcm1VUkxDaGFuZ2UoKTsKIApAQCAtOTQ1LDcgKzgzNSw3IEBA
IEVpbmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IGNoYXIqIHRleHQsIEV3a19GaW5kX09wCiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTCh0ZXh0LCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPmZpbmRTdHJpbmcoU3Ry
aW5nOjpmcm9tVVRGOCh0ZXh0KSwgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4ob3B0
aW9ucyksIG1heE1hdGNoQ291bnQpOworICAgIGltcGwtPnBhZ2UoKS0+ZmluZFN0cmluZyhTdHJp
bmc6OmZyb21VVEY4KHRleHQpLCBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPihvcHRp
b25zKSwgbWF4TWF0Y2hDb3VudCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk1NSw3ICs4
NDUsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kX2hpZ2hsaWdodF9jbGVhcihFdmFz
X09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAgIGltcGwtPnBhZ2VQcm94eS0+aGlkZUZpbmRVSSgp
OworICAgIGltcGwtPnBhZ2UoKS0+aGlkZUZpbmRVSSgpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC05NjYsNyArODU2LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3RleHRfbWF0Y2hlc19jb3Vu
dChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGV4dCwgRXcKICAgICBFV0tfVklF
V19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRleHQsIGZhbHNlKTsKIAotICAgIGltcGwtPnBhZ2VQ
cm94eS0+Y291bnRTdHJpbmdNYXRjaGVzKFN0cmluZzo6ZnJvbVVURjgodGV4dCksIHN0YXRpY19j
YXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKKyAgICBp
bXBsLT5wYWdlKCktPmNvdW50U3RyaW5nTWF0Y2hlcyhTdHJpbmc6OmZyb21VVEY4KHRleHQpLCBz
dGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPihvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEwMTEsNyArOTAxLDcgQEAgRWluYV9Cb29sIGV3
a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Ub3VjaF9F
dmVudF9UeXBlIHQKICAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0geyBzbWFydERhdGEtPnZpZXcu
eCwgc21hcnREYXRhLT52aWV3LnkgfTsKICAgICAvLyBGSVhNRTogVG91Y2ggcG9pbnRzIGRvIG5v
dCB0YWtlIHNjcm9sbCBwb3NpdGlvbiBhbmQgc2NhbGUgaW50byBhY2NvdW50IHdoZW4gCiAgICAg
Ly8gVElMRURfQkFDS0lOR19TVE9SRSBpcyBlbmFibGVkLgotICAgIGltcGwtPnBhZ2VQcm94eS0+
aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZp
ZXJzLCAmcG9zaXRpb24sIGVjb3JlX3RpbWVfZ2V0KCkpKTsKKyAgICBpbXBsLT5wYWdlKCktPmhh
bmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVy
cywgJnBvc2l0aW9uLCBlY29yZV90aW1lX2dldCgpKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKICNl
bHNlCkBAIC0xMDUxLDcgKzk0MSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19pbnNwZWN0b3Jfc2hv
dyhFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAgIFdlYkluc3BlY3RvclByb3h5KiBpbnNw
ZWN0b3IgPSBpbXBsLT5wYWdlUHJveHktPmluc3BlY3RvcigpOworICAgIFdlYkluc3BlY3RvclBy
b3h5KiBpbnNwZWN0b3IgPSBpbXBsLT5wYWdlKCktPmluc3BlY3RvcigpOwogICAgIGlmIChpbnNw
ZWN0b3IpCiAgICAgICAgIGluc3BlY3Rvci0+c2hvdygpOwogCkBAIC0xMDY3LDcgKzk1Nyw3IEBA
IEVpbmFfQm9vbCBld2tfdmlld19pbnNwZWN0b3JfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxz
ZSk7CiAKLSAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVjdG9yID0gaW1wbC0+cGFnZVByb3h5
LT5pbnNwZWN0b3IoKTsKKyAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVjdG9yID0gaW1wbC0+
cGFnZSgpLT5pbnNwZWN0b3IoKTsKICAgICBpZiAoaW5zcGVjdG9yKQogICAgICAgICBpbnNwZWN0
b3ItPmNsb3NlKCk7CiAKQEAgLTEwODksNyArOTc5LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3Bh
Z2luYXRpb25fbW9kZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19QYWdpbmF0aW9uX01v
ZGUKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFs
c2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZh
bHNlKTsKICAgICAKLSAgICBpbXBsLT5wYWdlUHJveHktPnNldFBhZ2luYXRpb25Nb2RlKHN0YXRp
Y19jYXN0PFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGU+KG1vZGUpKTsKKyAgICBpbXBsLT5wYWdl
KCktPnNldFBhZ2luYXRpb25Nb2RlKHN0YXRpY19jYXN0PFdlYkNvcmU6OlBhZ2luYXRpb246Ok1v
ZGU+KG1vZGUpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTA5OSw1ICs5ODksNSBAQCBF
d2tfUGFnaW5hdGlvbl9Nb2RlIGV3a192aWV3X3BhZ2luYXRpb25fbW9kZV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIEVXS19QQUdJTkFUSU9OX01PREVfSU5WQUxJRCk7CiAgICAgRVdLX1ZJRVdf
SU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgRVdLX1BBR0lOQVRJT05fTU9ERV9J
TlZBTElEKTsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFd2tfUGFnaW5hdGlvbl9Nb2RlPihp
bXBsLT5wYWdlUHJveHktPnBhZ2luYXRpb25Nb2RlKCkpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFd2tfUGFnaW5hdGlvbl9Nb2RlPihpbXBsLT5wYWdlKCktPnBhZ2luYXRpb25Nb2RlKCkpOwog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170890</attachid>
            <date>2012-10-26 04:42:15 -0700</date>
            <delta_ts>2012-10-26 04:54:27 -0700</delta_ts>
            <desc>rebased</desc>
            <filename>bug100232</filename>
            <type>text/plain</type>
            <size>39983</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDk1MDg0NzI2YzVmMjUyZjczYTA3Yzg2Y2Y3MTQ3MGVmZWM4NDViNzgKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIE9jdCAyNiAxMjo0ODo0MSAyMDEyICswMzAwCgogICAgYnVnMTAwMjMyCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDQ5YzJiOTUuLjhiYWI0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NSBAQAorMjAxMi0x
MC0yNiAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIENsZWFuIHVwIGNvbnN0cnVjdGlvbi9kZXN0cnVjdGlvbiBj
b2RlIGluIEV3a192aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDAyMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTaW1wbGlmaWVkIGEgbG90IG9mIGluaXRpYWxpemF0aW9uIGFuZCBkZXN0cnVjdGlv
biBjb2RlIG9mIEV3a192aWV3IGFuZCBFd2tWaWV3SW1wbAorICAgICAgICBwdXQgYWxsIHRoZSBp
bXBsIHN0dWZmIHRvIGl0cyBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciwgYWxzbyBtYWRlIEV3
a1ZpZXdJbXBsIG1lbWJlcgorICAgICAgICB2YXJpYWJsZXMgcHJpdmF0ZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAgICAgKHBhZ2VWaWV3TWFw
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjphZGRUb1BhZ2VWaWV3TWFwKToKKyAgICAgICAgKEV3
a1ZpZXdJbXBsOjpyZW1vdmVGcm9tUGFnZVZpZXdNYXApOgorICAgICAgICAoRXdrVmlld0ltcGw6
OnZpZXdGcm9tUGFnZVZpZXdNYXApOgorICAgICAgICAoRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBs
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjp+RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmll
d0ltcGw6OndrUGFnZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6dGl0bGUpOgorICAgICAgICAo
RXdrVmlld0ltcGw6OnNldFRoZW1lUGF0aCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6Y3VzdG9t
VGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0Q3VzdG9tVGV4dEVu
Y29kaW5nTmFtZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtSWNvbkNoYW5nZSk6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtV2ViUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAo
RXdrVmlld0ltcGw6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBs
OjppbmZvcm1VUkxDaGFuZ2UpOgorICAgICAgICAoRXdrVmlld0ltcGw6Om9uRmF2aWNvbkNoYW5n
ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6
OnZpZXcpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnBhZ2UpOgorICAgICAgICAoRXdrVmlld0lt
cGw6OmV3a0NvbnRleHQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmJhY2tGb3J3YXJkTGlzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcDoKKyAgICAgICAg
KEV3a19TZXR0aW5nczo6cHJlZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1c19pbik6CisgICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFy
dF9tb3VzZV93aGVlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bik6Cisg
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X21vdXNlX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKToKKyAg
ICAgICAgKF9ld2tfdmlld19zbWFydF9rZXlfdXApOgorICAgICAgICAoX2V3a192aWV3X29uX3No
b3cpOgorICAgICAgICAoX2V3a192aWV3X29uX2hpZGUpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZGVsKToKKyAgICAgICAgKF9ld2tf
dmlld19zbWFydF9jYWxjdWxhdGUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NvbG9yX3Nl
dCk6CisgICAgICAgIChjcmVhdGVFd2tWaWV3U21hcnRDbGFzcyk6CisgICAgICAgIChjcmVhdGVF
d2tWaWV3KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAgICAgKGV3a192aWV3
X3NtYXJ0X2FkZCk6CisgICAgICAgIChld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KToKKyAgICAg
ICAgKGV3a192aWV3X3VybF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVsb2FkKToKKyAgICAg
ICAgKGV3a192aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUpOgorICAgICAgICAoZXdrX3ZpZXdfc3Rv
cCk6CisgICAgICAgIChld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldCk6CisgICAgICAgIChld2tf
dmlld19zY2FsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfZ2V0KToKKyAgICAgICAg
KGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZGV2
aWNlX3BpeGVsX3JhdGlvX2dldCk6CisgICAgICAgIChld2tfdmlld19iYWNrKToKKyAgICAgICAg
KGV3a192aWV3X2ZvcndhcmQpOgorICAgICAgICAoZXdrX3ZpZXdfaW50ZW50X2RlbGl2ZXIpOgor
ICAgICAgICAoZXdrX3ZpZXdfYmFja19wb3NzaWJsZSk6CisgICAgICAgIChld2tfdmlld19mb3J3
YXJkX3Bvc3NpYmxlKToKKyAgICAgICAgKGV3a192aWV3X2JhY2tfZm9yd2FyZF9saXN0X2dldCk6
CisgICAgICAgIChld2tfdmlld19odG1sX3N0cmluZ19sb2FkKToKKyAgICAgICAgKGV3a192aWV3
X3RleHRfZmluZCk6CisgICAgICAgIChld2tfdmlld190ZXh0X2ZpbmRfaGlnaGxpZ2h0X2NsZWFy
KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19jb3VudCk6CisgICAgICAgIChld2tf
dmlld19mZWVkX3RvdWNoX2V2ZW50KToKKyAgICAgICAgKGV3a192aWV3X2luc3BlY3Rvcl9zaG93
KToKKyAgICAgICAgKGV3a192aWV3X2luc3BlY3Rvcl9jbG9zZSk6CisgICAgICAgIChld2tfdmll
d19wYWdpbmF0aW9uX21vZGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3BhZ2luYXRpb25fbW9k
ZV9nZXQpOgorCiAyMDEyLTEwLTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1l
ekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBBZGQgRXdrX0NvbG9yX1BpY2tlciBB
UEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNw
cAppbmRleCA2NjNiNDBlLi4yNGFmNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCkBAIC0zMyw4ICszMywxMSBAQAogI2luY2x1ZGUg
IlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRDbGllbnRFZmwuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgIldlYkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorI2luY2x1ZGUgIldlYlByZWZl
cmVuY2VzLmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKICNp
bmNsdWRlICJld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29udGV4
dF9wcml2YXRlLmgiCkBAIC00OSw0NCArNTIsNjMgQEAKICNpbmNsdWRlIDxFZGplLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KIAorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQor
I2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKKyNlbmRpZgorCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyBjb25z
dCBpbnQgZGVmYXVsdEN1cnNvclNpemUgPSAxNjsKIAotRXdrVmlld0ltcGw6OlBhZ2VWaWV3TWFw
IEV3a1ZpZXdJbXBsOjpwYWdlVmlld01hcDsKK3R5cGVkZWYgSGFzaE1hcDxXS1BhZ2VSZWYsIEV2
YXNfT2JqZWN0Kj4gUGFnZVZpZXdNYXA7CiAKLXZvaWQgRXdrVmlld0ltcGw6OmFkZFRvUGFnZVZp
ZXdNYXAoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCitzdGF0aWMgaW5saW5lIFBhZ2VWaWV3
TWFwJiBwYWdlVmlld01hcCgpCiB7Ci0gICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gRXdrVmll
d0ltcGw6OmZyb21FdmFzT2JqZWN0KGV3a1ZpZXcpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
UGFnZVZpZXdNYXAsIG1hcCwgKCkpOworICAgIHJldHVybiBtYXA7Cit9CiAKLSAgICBQYWdlVmll
d01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHBhZ2VWaWV3TWFwLmFkZCh2aWV3SW1wbC0+d2tQYWdl
KCksIGV3a1ZpZXcpOwordm9pZCBFd2tWaWV3SW1wbDo6YWRkVG9QYWdlVmlld01hcChFd2tWaWV3
SW1wbCogdmlld0ltcGwpCit7CisgICAgUGFnZVZpZXdNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBw
YWdlVmlld01hcCgpLmFkZCh2aWV3SW1wbC0+d2tQYWdlKCksIHZpZXdJbXBsLT52aWV3KCkpOwog
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQg
RXdrVmlld0ltcGw6OnJlbW92ZUZyb21QYWdlVmlld01hcChjb25zdCBFdmFzX09iamVjdCogZXdr
VmlldykKK3ZvaWQgRXdrVmlld0ltcGw6OnJlbW92ZUZyb21QYWdlVmlld01hcChFd2tWaWV3SW1w
bCogdmlld0ltcGwpCiB7Ci0gICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gRXdrVmlld0ltcGw6
OmZyb21FdmFzT2JqZWN0KGV3a1ZpZXcpOwotCi0gICAgQVNTRVJUKHBhZ2VWaWV3TWFwLmNvbnRh
aW5zKHZpZXdJbXBsLT53a1BhZ2UoKSkpOwotICAgIHBhZ2VWaWV3TWFwLnJlbW92ZSh2aWV3SW1w
bC0+d2tQYWdlKCkpOworICAgIEFTU0VSVChwYWdlVmlld01hcCgpLmNvbnRhaW5zKHZpZXdJbXBs
LT53a1BhZ2UoKSkpOworICAgIHBhZ2VWaWV3TWFwKCkucmVtb3ZlKHZpZXdJbXBsLT53a1BhZ2Uo
KSk7CiB9CiAKIGNvbnN0IEV2YXNfT2JqZWN0KiBFd2tWaWV3SW1wbDo6dmlld0Zyb21QYWdlVmll
d01hcChjb25zdCBXS1BhZ2VSZWYgcGFnZSkKIHsKICAgICBBU1NFUlQocGFnZSk7CiAKLSAgICBy
ZXR1cm4gcGFnZVZpZXdNYXAuZ2V0KHBhZ2UpOworICAgIHJldHVybiBwYWdlVmlld01hcCgpLmdl
dChwYWdlKTsKIH0KIAotRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3
KQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICA6IGV2YXNHbCgwKQotICAg
ICwgZXZhc0dsQ29udGV4dCgwKQotICAgICwgZXZhc0dsU3VyZmFjZSgwKQotICAgICwgbV92aWV3
KHZpZXcpCi0jZWxzZQorRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3
LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91
cD4gcGFnZUdyb3VwKQogICAgIDogbV92aWV3KHZpZXcpCisgICAgLCBtX2NvbnRleHQoY29udGV4
dCkKKyAgICAsIG1fcGFnZUNsaWVudChQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKHRoaXMpKQorICAg
ICwgbV9wYWdlUHJveHkodG9JbXBsKG1fY29udGV4dC0+d2tDb250ZXh0KCkpLT5jcmVhdGVXZWJQ
YWdlKG1fcGFnZUNsaWVudC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKSkKKyAgICAsIG1fcGFnZUxv
YWRDbGllbnQoUGFnZUxvYWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcGFnZVBv
bGljeUNsaWVudChQYWdlUG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCisgICAgLCBtX3Bh
Z2VVSUNsaWVudChQYWdlVUlDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcmVzb3Vy
Y2VMb2FkQ2xpZW50KFJlc291cmNlTG9hZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQorICAgICwg
bV9maW5kQ2xpZW50KEZpbmRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fZm9ybUNs
aWVudChGb3JtQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2JhY2tGb3J3YXJkTGlz
dChFd2tfQmFja19Gb3J3YXJkX0xpc3Q6OmNyZWF0ZSh0b0FQSShtX3BhZ2VQcm94eS0+YmFja0Zv
cndhcmRMaXN0KCkpKSkKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICAsIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudChQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
OjpjcmVhdGUodGhpcykpCisgICAgLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIoYWRvcHRQdHIo
bmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIobV9wYWdlUHJveHkuZ2V0KCksIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudC5nZXQoKSkpKQorI2VuZGlmCisjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorICAgICwgbV9ldmFzR2woMCkKKyAgICAsIG1fZXZhc0dsQ29udGV4dCgw
KQorICAgICwgbV9ldmFzR2xTdXJmYWNlKDApCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoRXdr
X1NldHRpbmdzOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX21vdXNlRXZlbnRzRW5hYmxlZChmYWxz
ZSkKQEAgLTk2LDE0ICsxMTgsNDggQEAgRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2Jq
ZWN0KiB2aWV3KQogICAgICwgbV9kaXNwbGF5VGltZXIodGhpcywgJkV3a1ZpZXdJbXBsOjpkaXNw
bGF5VGltZXJGaXJlZCkKICAgICAsIG1faW5wdXRNZXRob2RDb250ZXh0KElucHV0TWV0aG9kQ29u
dGV4dEVmbDo6Y3JlYXRlKHRoaXMsIHNtYXJ0RGF0YSgpLT5iYXNlLmV2YXMpKQogewotICAgIEFT
U0VSVCh2aWV3KTsKKyAgICBBU1NFUlQobV92aWV3KTsKKyAgICBBU1NFUlQobV9jb250ZXh0KTsK
KyAgICBBU1NFUlQobV9wYWdlUHJveHkpOworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQorICAgIG1fcGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQodHJ1ZSk7CisgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91
cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKKyAgICBt
X3BhZ2VQcm94eS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CisjZW5kaWYKKworICAgIG1fcGFn
ZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOworCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCisgICAgcGFnZUNsaWVudC0+c2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihwYWdlVmlld3Bv
cnRDb250cm9sbGVyLmdldCgpKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQorICAgIG1fcGFnZVByb3h5LT5mdWxsU2NyZWVuTWFuYWdlcigpLT5zZXRXZWJWaWV3KG1fdmll
dyk7CisgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGdWxs
U2NyZWVuRW5hYmxlZCh0cnVlKTsKKyNlbmRpZgogCiAgICAgLy8gRW5hYmxlIG1vdXNlIGV2ZW50
cyBieSBkZWZhdWx0CiAgICAgc2V0TW91c2VFdmVudHNFbmFibGVkKHRydWUpOworCisgICAgLy8g
TGlzdGVuIGZvciBmYXZpY29uIGNoYW5nZXMuCisgICAgRXdrX0Zhdmljb25fRGF0YWJhc2UqIGlj
b25EYXRhYmFzZSA9IG1fY29udGV4dC0+ZmF2aWNvbkRhdGFiYXNlKCk7CisgICAgQVNTRVJUKGlj
b25EYXRhYmFzZSk7CisKKyAgICBpY29uRGF0YWJhc2UtPndhdGNoQ2hhbmdlcyhJY29uQ2hhbmdl
Q2FsbGJhY2tEYXRhKEV3a1ZpZXdJbXBsOjpvbkZhdmljb25DaGFuZ2VkLCB0aGlzKSk7CisKKyAg
ICBFd2tWaWV3SW1wbDo6YWRkVG9QYWdlVmlld01hcCh0aGlzKTsKIH0KIAogRXdrVmlld0ltcGw6
On5Fd2tWaWV3SW1wbCgpCiB7CisgICAgLy8gVW5yZWdpc3RlciBpY29uIGNoYW5nZSBjYWxsYmFj
ay4KKyAgICBFd2tfRmF2aWNvbl9EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0gbV9jb250ZXh0LT5m
YXZpY29uRGF0YWJhc2UoKTsKKyAgICBBU1NFUlQoaWNvbkRhdGFiYXNlKTsKKworICAgIGljb25E
YXRhYmFzZS0+dW53YXRjaENoYW5nZXMoRXdrVmlld0ltcGw6Om9uRmF2aWNvbkNoYW5nZWQpOwor
CisgICAgRXdrVmlld0ltcGw6OnJlbW92ZUZyb21QYWdlVmlld01hcCh0aGlzKTsKIH0KIAogRXdr
X1ZpZXdfU21hcnRfRGF0YSogRXdrVmlld0ltcGw6OnNtYXJ0RGF0YSgpCkBAIC0xMjYsNyArMTgy
LDcgQEAgRXdrVmlld0ltcGwqIEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09iamVjdChjb25zdCBFdmFz
X09iamVjdCogdmlldykKICAqLwogV0tQYWdlUmVmIEV3a1ZpZXdJbXBsOjp3a1BhZ2UoKQogewot
ICAgIHJldHVybiB0b0FQSShwYWdlUHJveHkuZ2V0KCkpOworICAgIHJldHVybiB0b0FQSShtX3Bh
Z2VQcm94eS5nZXQoKSk7CiB9CiAKIHZvaWQgRXdrVmlld0ltcGw6OnNldEN1cnNvcihjb25zdCBD
dXJzb3ImIGN1cnNvcikKQEAgLTUyMiw3ICs1NzgsNyBAQCBib29sIEV3a1ZpZXdJbXBsOjppc1Zp
c2libGUoKSBjb25zdAogCiBjb25zdCBjaGFyKiBFd2tWaWV3SW1wbDo6dGl0bGUoKSBjb25zdAog
ewotICAgIG1fdGl0bGUgPSBwYWdlUHJveHktPnBhZ2VUaXRsZSgpLnV0ZjgoKS5kYXRhKCk7Cisg
ICAgbV90aXRsZSA9IG1fcGFnZVByb3h5LT5wYWdlVGl0bGUoKS51dGY4KCkuZGF0YSgpOwogCiAg
ICAgcmV0dXJuIG1fdGl0bGU7CiB9CkBAIC01NDUsMTMgKzYwMSwxMyBAQCB2b2lkIEV3a1ZpZXdJ
bXBsOjpzZXRUaGVtZVBhdGgoY29uc3QgY2hhciogdGhlbWUpCiB7CiAgICAgaWYgKG1fdGhlbWUg
IT0gdGhlbWUpIHsKICAgICAgICAgbV90aGVtZSA9IHRoZW1lOwotICAgICAgICBwYWdlUHJveHkt
PnNldFRoZW1lUGF0aCh0aGVtZSk7CisgICAgICAgIG1fcGFnZVByb3h5LT5zZXRUaGVtZVBhdGgo
dGhlbWUpOwogICAgIH0KIH0KIAogY29uc3QgY2hhciogRXdrVmlld0ltcGw6OmN1c3RvbVRleHRF
bmNvZGluZ05hbWUoKSBjb25zdAogewotICAgIFN0cmluZyBjdXN0b21FbmNvZGluZyA9IHBhZ2VQ
cm94eS0+Y3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpOworICAgIFN0cmluZyBjdXN0b21FbmNvZGlu
ZyA9IG1fcGFnZVByb3h5LT5jdXN0b21UZXh0RW5jb2RpbmdOYW1lKCk7CiAgICAgaWYgKGN1c3Rv
bUVuY29kaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU2Myw3ICs2MTks
NyBAQCBjb25zdCBjaGFyKiBFd2tWaWV3SW1wbDo6Y3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpIGNv
bnN0CiB2b2lkIEV3a1ZpZXdJbXBsOjpzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IGNo
YXIqIGVuY29kaW5nKQogewogICAgIG1fY3VzdG9tRW5jb2RpbmcgPSBlbmNvZGluZzsKLSAgICBw
YWdlUHJveHktPnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmcgPyBlbmNvZGluZyA6
IFN0cmluZygpKTsKKyAgICBtX3BhZ2VQcm94eS0+c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShl
bmNvZGluZyA/IGVuY29kaW5nIDogU3RyaW5nKCkpOwogfQogCiB2b2lkIEV3a1ZpZXdJbXBsOjpz
ZXRNb3VzZUV2ZW50c0VuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtNjI2LDcgKzY4Miw3IEBAIHZv
aWQgRXdrVmlld0ltcGw6OnNldFRvdWNoRXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpCiAgKi8K
IHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUljb25DaGFuZ2UoKQogewotICAgIEV3a19GYXZpY29u
X0RhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSBjb250ZXh0LT5mYXZpY29uRGF0YWJhc2UoKTsKKyAg
ICBFd2tfRmF2aWNvbl9EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0gbV9jb250ZXh0LT5mYXZpY29u
RGF0YWJhc2UoKTsKICAgICBBU1NFUlQoaWNvbkRhdGFiYXNlKTsKIAogICAgIG1fZmF2aWNvblVS
TCA9IGV3a19mYXZpY29uX2RhdGFiYXNlX2ljb25fdXJsX2dldChpY29uRGF0YWJhc2UsIG1fdXJs
KTsKQEAgLTgwMCw3ICs4NTYsNyBAQCB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1XZWJQcm9jZXNz
Q3Jhc2hlZCgpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ3
ZWJwcm9jZXNzLGNyYXNoZWQiLCAmaGFuZGxlZCk7CiAKICAgICBpZiAoIWhhbmRsZWQpIHsKLSAg
ICAgICAgQ1N0cmluZyB1cmwgPSBwYWdlUHJveHktPnVybEF0UHJvY2Vzc0V4aXQoKS51dGY4KCk7
CisgICAgICAgIENTdHJpbmcgdXJsID0gbV9wYWdlUHJveHktPnVybEF0UHJvY2Vzc0V4aXQoKS51
dGY4KCk7CiAgICAgICAgIFdBUk4oIldBUk5JTkc6IFRoZSB3ZWIgcHJvY2VzcyBleHBlcmllbmNl
ZCBhIGNyYXNoIG9uICclcycuXG4iLCB1cmwuZGF0YSgpKTsKIAogICAgICAgICAvLyBEaXNwbGF5
IGFuIGVycm9yIHBhZ2UKQEAgLTkyMyw3ICs5NzksNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRXdr
Vmlld0ltcGw6OmluZm9ybURhdGFiYXNlUXVvdGFSZWFjaGVkKGNvbnN0IFN0cmluZyYgZGF0YWJh
cwogICovCiB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1VUkxDaGFuZ2UoKQogewotICAgIFN0cmlu
ZyBhY3RpdmVVUkwgPSBwYWdlUHJveHktPmFjdGl2ZVVSTCgpOworICAgIFN0cmluZyBhY3RpdmVV
UkwgPSBtX3BhZ2VQcm94eS0+YWN0aXZlVVJMKCk7CiAgICAgaWYgKGFjdGl2ZVVSTC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTAyOCwzICsxMDg0LDEzIEBAIHZvaWQgRXdrVmll
d0ltcGw6Om9uVG91Y2hNb3ZlKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMqIC8qIGNhbnZhcyAqLywg
RXZhc19PYmplY3QqCiAgICAgdmlld0ltcGwtPmZlZWRUb3VjaEV2ZW50cyhFV0tfVE9VQ0hfTU9W
RSk7CiB9CiAjZW5kaWYKKwordm9pZCBFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZChjb25z
dCBjaGFyKiBwYWdlVVJMLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrVmlld0ltcGwqIHZp
ZXdJbXBsID0gc3RhdGljX2Nhc3Q8RXdrVmlld0ltcGwqPihldmVudEluZm8pOworCisgICAgaWYg
KCF2aWV3SW1wbC0+dXJsKCkgfHwgc3RyY2FzZWNtcCh2aWV3SW1wbC0+dXJsKCksIHBhZ2VVUkwp
KQorICAgICAgICByZXR1cm47CisKKyAgICB2aWV3SW1wbC0+aW5mb3JtSWNvbkNoYW5nZSgpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0lt
cGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKaW5k
ZXggZWM0MzExMC4uZGZlZjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC02OSw2ICs2OSw3IEBAIGNsYXNzIFBhZ2VVSUNsaWVudEVm
bDsKIGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw7CiBjbGFzcyBQYWdlVmll
d3BvcnRDb250cm9sbGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOworY2xhc3MgV2Vi
UGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUG9wdXBJdGVtOwogY2xh
c3MgV2ViUG9wdXBNZW51UHJveHlFZmw7CkBAIC0xMDAsMTYgKzEwMSwxNyBAQCB0eXBlZGVmIHN0
cnVjdCBFd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiAKIGNsYXNzIEV3
a1ZpZXdJbXBsIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFd2tWaWV3SW1wbChFdmFzX09iamVj
dCogdmlldyk7CisgICAgRXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8
RXdrX0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IHBh
Z2VHcm91cCk7CiAgICAgfkV3a1ZpZXdJbXBsKCk7CiAKICAgICBzdGF0aWMgRXdrVmlld0ltcGwq
IGZyb21FdmFzT2JqZWN0KGNvbnN0IEV2YXNfT2JqZWN0KiB2aWV3KTsKIAotICAgIGlubGluZSBF
dmFzX09iamVjdCogdmlldygpIHsgcmV0dXJuIG1fdmlldzsgfQorICAgIEV2YXNfT2JqZWN0KiB2
aWV3KCkgeyByZXR1cm4gbV92aWV3OyB9CiAgICAgV0tQYWdlUmVmIHdrUGFnZSgpOwotICAgIGlu
bGluZSBXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSgpIHsgcmV0dXJuIHBhZ2VQcm94eS5nZXQo
KTsgfQotICAgIEV3a19Db250ZXh0KiBld2tDb250ZXh0KCkgeyByZXR1cm4gY29udGV4dC5nZXQo
KTsgfQorICAgIFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlUHJv
eHkuZ2V0KCk7IH0KKyAgICBFd2tfQ29udGV4dCogZXdrQ29udGV4dCgpIHsgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsgfQogICAgIEV3a19TZXR0aW5ncyogc2V0dGluZ3MoKSB7IHJldHVybiBtX3Nl
dHRpbmdzLmdldCgpOyB9CisgICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0KiBiYWNrRm9yd2FyZExp
c3QoKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKTsgfQogCiAgICAgV2ViQ29yZTo6
SW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdDsKQEAgLTEz
Niw4ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRyYXdSZWdpb24oY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgcmVjdCk7CiAgICAgdm9pZCBzZXRJbWFnZURhdGEodm9pZCogaW1hZ2VEYXRh
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKIAotICAgIHN0YXRpYyB2b2lkIGFkZFRv
UGFnZVZpZXdNYXAoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotICAgIHN0YXRpYyB2b2lk
IHJlbW92ZUZyb21QYWdlVmlld01hcChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7CisgICAg
c3RhdGljIHZvaWQgYWRkVG9QYWdlVmlld01hcChFd2tWaWV3SW1wbCogdmlld0ltcGwpOworICAg
IHN0YXRpYyB2b2lkIHJlbW92ZUZyb21QYWdlVmlld01hcChFd2tWaWV3SW1wbCogdmlld0ltcGwp
OwogICAgIHN0YXRpYyBjb25zdCBFdmFzX09iamVjdCogdmlld0Zyb21QYWdlVmlld01hcChjb25z
dCBXS1BhZ2VSZWYpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtMjEwLDI5ICsy
MTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmZvcm1JbnRlbnRTZXJ2aWNlUmVnaXN0cmF0aW9u
KEV3a19JbnRlbnRfU2VydmljZSogZXdrSW50ZW50U2VydmljZSk7CiAjZW5kaWYKIAotICAgIC8v
IEZJWE1FOiBNYWtlIG1lbWJlcnMgcHJpdmF0ZSBmb3IgZW5jYXBzdWxhdGlvbi4KLSAgICBPd25Q
dHI8V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKLSNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKLSAgICBPd25QdHI8V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsPiBwYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OwotICAgIE93blB0cjxXZWJLaXQ6
OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI+IHBhZ2VWaWV3cG9ydENvbnRyb2xsZXI7Ci0jZW5kaWYK
LSAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IHBhZ2VQcm94eTsKLSAgICBPd25QdHI8
V2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbD4gcGFnZUxvYWRDbGllbnQ7Ci0gICAgT3duUHRyPFdl
YktpdDo6UGFnZVBvbGljeUNsaWVudEVmbD4gcGFnZVBvbGljeUNsaWVudDsKLSAgICBPd25QdHI8
V2ViS2l0OjpQYWdlVUlDbGllbnRFZmw+IHBhZ2VVSUNsaWVudDsKLSAgICBPd25QdHI8V2ViS2l0
OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw+IHJlc291cmNlTG9hZENsaWVudDsKLSAgICBPd25QdHI8
V2ViS2l0OjpGaW5kQ2xpZW50RWZsPiBmaW5kQ2xpZW50OwotICAgIE93blB0cjxXZWJLaXQ6OkZv
cm1DbGllbnRFZmw+IGZvcm1DbGllbnQ7Ci0KLSAgICBPd25QdHI8RXdrX0JhY2tfRm9yd2FyZF9M
aXN0PiBiYWNrRm9yd2FyZExpc3Q7Ci0gICAgUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0Owot
Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIEV2YXNfR0wqIGV2YXNHbDsK
LSAgICBFdmFzX0dMX0NvbnRleHQqIGV2YXNHbENvbnRleHQ7Ci0gICAgRXZhc19HTF9TdXJmYWNl
KiBldmFzR2xTdXJmYWNlOwotI2VuZGlmCi0KIHByaXZhdGU6CiAgICAgaW5saW5lIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSgpOwogICAgIHZvaWQgZGlzcGxheVRpbWVyRmlyZWQoV2Vi
Q29yZTo6VGltZXI8RXdrVmlld0ltcGw+Kik7CkBAIC0yNDYsOCArMjI1LDI5IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIHZvaWQgb25Ub3VjaFVwKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMqIC8qIGNh
bnZhcyAqLywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIC8qIGV2ZW50SW5mbyAqLyk7CiAg
ICAgc3RhdGljIHZvaWQgb25Ub3VjaE1vdmUodm9pZCogLyogZGF0YSAqLywgRXZhcyogLyogY2Fu
dmFzICovLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJbmZvICovKTsKICNl
bmRpZgorICAgIHN0YXRpYyB2b2lkIG9uRmF2aWNvbkNoYW5nZWQoY29uc3QgY2hhciogcGFnZVVS
TCwgdm9pZCogZXZlbnRJbmZvKTsKIAorICAgIC8vIE5vdGUsIGluaXRpYWxpemF0aW9uIG9yZGVy
IGlzIGltcG9ydGFudC4KICAgICBFdmFzX09iamVjdCogbV92aWV3OworICAgIFJlZlB0cjxFd2tf
Q29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPiBt
X3BhZ2VDbGllbnQ7CisgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2VQcm94
eTsKKyAgICBPd25QdHI8V2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbD4gbV9wYWdlTG9hZENsaWVu
dDsKKyAgICBPd25QdHI8V2ViS2l0OjpQYWdlUG9saWN5Q2xpZW50RWZsPiBtX3BhZ2VQb2xpY3lD
bGllbnQ7CisgICAgT3duUHRyPFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsPiBtX3BhZ2VVSUNsaWVu
dDsKKyAgICBPd25QdHI8V2ViS2l0OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw+IG1fcmVzb3VyY2VM
b2FkQ2xpZW50OworICAgIE93blB0cjxXZWJLaXQ6OkZpbmRDbGllbnRFZmw+IG1fZmluZENsaWVu
dDsKKyAgICBPd25QdHI8V2ViS2l0OjpGb3JtQ2xpZW50RWZsPiBtX2Zvcm1DbGllbnQ7CisgICAg
T3duUHRyPEV3a19CYWNrX0ZvcndhcmRfTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7CisjaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbD4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OworICAgIE93
blB0cjxXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI+IG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlcjsKKyNlbmRpZgorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBFdmFz
X0dMKiBtX2V2YXNHbDsKKyAgICBFdmFzX0dMX0NvbnRleHQqIG1fZXZhc0dsQ29udGV4dDsKKyAg
ICBFdmFzX0dMX1N1cmZhY2UqIG1fZXZhc0dsU3VyZmFjZTsKKyNlbmRpZgogICAgIE93blB0cjxF
d2tfU2V0dGluZ3M+IG1fc2V0dGluZ3M7CiAgICAgUmVmUHRyPEV2YXNfT2JqZWN0PiBtX2N1cnNv
ck9iamVjdDsKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgbV9jdXJzb3JHcm91cDsKQEAgLTI2NSw5
ICsyNjUsNiBAQCBwcml2YXRlOgogICAgIE93blB0cjxFd2tfUG9wdXBfTWVudT4gbV9wb3B1cE1l
bnU7CiAgICAgT3duUHRyPFdlYktpdDo6SW5wdXRNZXRob2RDb250ZXh0RWZsPiBtX2lucHV0TWV0
aG9kQ29udGV4dDsKICAgICBPd25QdHI8RXdrX0NvbG9yX1BpY2tlcj4gbV9jb2xvclBpY2tlcjsK
LQotICAgIHR5cGVkZWYgSGFzaE1hcDxXS1BhZ2VSZWYsIGNvbnN0IEV2YXNfT2JqZWN0Kj4gUGFn
ZVZpZXdNYXA7Ci0gICAgc3RhdGljIFBhZ2VWaWV3TWFwIHBhZ2VWaWV3TWFwOwogfTsKIAogI2Vu
ZGlmIC8vIEV3a1ZpZXdJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19zZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfc2V0dGluZ3MuY3BwCmluZGV4IDRiOWVjMjcuLjQ3OGUzNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZXR0aW5ncy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcApAQCAtNDUs
MTIgKzQ1LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGNvbnN0IFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXMqIEV3a19TZXR0aW5nczo6cHJlZmVyZW5jZXMoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3ZpZXdJbXBsLT5wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpOwor
ICAgIHJldHVybiBtX3ZpZXdJbXBsLT5wYWdlKCktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygp
OwogfQogCiBXZWJLaXQ6OldlYlByZWZlcmVuY2VzKiBFd2tfU2V0dGluZ3M6OnByZWZlcmVuY2Vz
KCkKIHsKLSAgICByZXR1cm4gbV92aWV3SW1wbC0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJl
ZmVyZW5jZXMoKTsKKyAgICByZXR1cm4gbV92aWV3SW1wbC0+cGFnZSgpLT5wYWdlR3JvdXAoKS0+
cHJlZmVyZW5jZXMoKTsKIH0KIAogI2lmIEVOQUJMRShTUEVMTENIRUNLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDIwNDFhYjkuLmNlZTY1
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAK
QEAgLTUzLDEwICs1Myw2IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
LSNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCi0jZW5kaWYKLQogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNlbmRpZgpA
QCAtMTI5LDI1ICsxMjUsMTIgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQo
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2No
YW5nZWQoc21hcnREYXRhLT5zZWxmKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2Zh
dmljb25fY2hhbmdlZChjb25zdCBjaGFyKiBwYWdlVVJMLCB2b2lkKiBldmVudEluZm8pCi17Ci0g
ICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGV2ZW50
SW5mbyk7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEp
OwotICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwpOwotCi0g
ICAgY29uc3QgY2hhciogdmlld1VSTCA9IGV3a192aWV3X3VybF9nZXQoZXdrVmlldyk7Ci0gICAg
aWYgKCF2aWV3VVJMIHx8IHN0cmNhc2VjbXAodmlld1VSTCwgcGFnZVVSTCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGltcGwtPmluZm9ybUljb25DaGFuZ2UoKTsKLX0KLQogLy8gRGVmYXVsdCBF
dmVudCBIYW5kbGluZy4KIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2lu
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKICAgICBFV0tfVklFV19JTVBMX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJv
eHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQgfCBXZWJQ
YWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7CisgICAgaW1wbC0+cGFnZSgpLT52aWV3U3Rh
dGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwgV2ViUGFnZVByb3h5OjpW
aWV3V2luZG93SXNBY3RpdmUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNTUsNyArMTM4
LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPnZpZXdT
dGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQgfCBXZWJQYWdlUHJveHk6
OlZpZXdXaW5kb3dJc0FjdGl2ZSk7CisgICAgaW1wbC0+cGFnZSgpLT52aWV3U3RhdGVEaWRDaGFu
Z2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwgV2ViUGFnZVByb3h5OjpWaWV3V2luZG93
SXNBY3RpdmUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNzksOSArMTYyLDkgQEAgc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhLCBjb24KICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBF
dmFzX0V2ZW50X01vdXNlX1doZWVsIGV2ZW50KCp3aGVlbEV2ZW50KTsKICAgICBldmVudC5jYW52
YXMgPSBtYXBUb1dlYkNvbnRlbnQoc21hcnREYXRhLCBldmVudC5jYW52YXMpOwotICAgIGltcGwt
PnBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KCZldmVudCwg
JnBvc2l0aW9uKSk7CisgICAgaW1wbC0+cGFnZSgpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdl
YldoZWVsRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKICNlbHNlCi0gICAgaW1wbC0+cGFnZVBy
b3h5LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQod2hlZWxFdmVudCwgJnBv
c2l0aW9uKSk7CisgICAgaW1wbC0+cGFnZSgpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldo
ZWVsRXZlbnQod2hlZWxFdmVudCwgJnBvc2l0aW9uKSk7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTE5NCw5ICsxNzcsOSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFy
dF9tb3VzZV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29ucwogI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biBldmVudCgq
ZG93bkV2ZW50KTsKICAgICBldmVudC5jYW52YXMgPSBtYXBUb1dlYkNvbnRlbnQoc21hcnREYXRh
LCBldmVudC5jYW52YXMpOwotICAgIGltcGwtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChO
YXRpdmVXZWJNb3VzZUV2ZW50KCZldmVudCwgJnBvc2l0aW9uKSk7CisgICAgaW1wbC0+cGFnZSgp
LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24p
KTsKICNlbHNlCi0gICAgaW1wbC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdl
Yk1vdXNlRXZlbnQoZG93bkV2ZW50LCAmcG9zaXRpb24pKTsKKyAgICBpbXBsLT5wYWdlKCktPmhh
bmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChkb3duRXZlbnQsICZwb3NpdGlvbikp
OwogI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDksOSArMTkyLDkgQEAgc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhLCBjb25zdAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIEV2YXNf
RXZlbnRfTW91c2VfVXAgZXZlbnQoKnVwRXZlbnQpOwogICAgIGV2ZW50LmNhbnZhcyA9IG1hcFRv
V2ViQ29udGVudChzbWFydERhdGEsIGV2ZW50LmNhbnZhcyk7Ci0gICAgaW1wbC0+cGFnZVByb3h5
LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24p
KTsKKyAgICBpbXBsLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVu
dCgmZXZlbnQsICZwb3NpdGlvbikpOwogI2Vsc2UKLSAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRs
ZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCAmcG9zaXRpb24pKTsKKyAg
ICBpbXBsLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2
ZW50LCAmcG9zaXRpb24pKTsKICNlbmRpZgogCiAgICAgSW5wdXRNZXRob2RDb250ZXh0RWZsKiBp
bnB1dE1ldGhvZENvbnRleHQgPSBpbXBsLT5pbnB1dE1ldGhvZENvbnRleHQoKTsKQEAgLTIyOSw5
ICsyMTIsOSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29ucwogI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQogICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSBldmVudCgqbW92ZUV2ZW50KTsKICAg
ICBldmVudC5jdXIuY2FudmFzID0gbWFwVG9XZWJDb250ZW50KHNtYXJ0RGF0YSwgZXZlbnQuY3Vy
LmNhbnZhcyk7Ci0gICAgaW1wbC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdl
Yk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKKyAgICBpbXBsLT5wYWdlKCktPmhhbmRs
ZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCgmZXZlbnQsICZwb3NpdGlvbikpOwogI2Vs
c2UKLSAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VF
dmVudChtb3ZlRXZlbnQsICZwb3NpdGlvbikpOworICAgIGltcGwtPnBhZ2UoKS0+aGFuZGxlTW91
c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KG1vdmVFdmVudCwgJnBvc2l0aW9uKSk7CiAjZW5k
aWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI0NSw3ICsyMjgsNyBAQCBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zbWFydF9rZXlfZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERh
dGEsIGNvbnN0CiAgICAgaWYgKGlucHV0TWV0aG9kQ29udGV4dCkKICAgICAgICAgaW5wdXRNZXRo
b2RDb250ZXh0LT5oYW5kbGVLZXlEb3duRXZlbnQoZG93bkV2ZW50LCAmaXNGaWx0ZXJlZCk7CiAK
LSAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudChkb3duRXZlbnQsIGlzRmlsdGVyZWQpKTsKKyAgICBpbXBsLT5wYWdlKCktPmhhbmRs
ZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChkb3duRXZlbnQsIGlzRmlsdGVy
ZWQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjUzLDcgKzIzNiw3IEBAIHN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFy
dERhdGEsIGNvbnN0IEV2CiB7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+cGFnZVByb3h5LT5oYW5kbGVLZXlib2Fy
ZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQodXBFdmVudCkpOworICAgIGltcGwtPnBhZ2Uo
KS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KHVwRXZlbnQpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzA1LDcgKzI4OCw3IEBAIHN0YXRpYyB2b2lkIF9l
d2tfdmlld19vbl9zaG93KHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIC8q
ZXZlbnRJbmZvCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGlj
X2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEVXS19WSUVXX0lNUExfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIGltcGwpOwotICAgIGltcGwtPnBhZ2VQcm94eS0+dmlld1N0
YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7CisgICAgaW1wbC0+cGFn
ZSgpLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxlKTsKIH0K
IAogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2hpZGUodm9pZCogZGF0YSwgRXZhcyosIEV2YXNf
T2JqZWN0Kiwgdm9pZCogLypldmVudEluZm8qLykKQEAgLTMxNiwyMCArMjk5LDExIEBAIHN0YXRp
YyB2b2lkIF9ld2tfdmlld19vbl9oaWRlKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCos
IHZvaWQqIC8qZXZlbnRJbmZvCiAgICAgLy8gVGhpcyBjYWxsIG1heSBsb29rIHdyb25nLCBidXQg
d2UgcmVhbGx5IG5lZWQgdG8gcGFzcyBWaWV3SXNWaXNpYmxlIGhlcmUuCiAgICAgLy8gdmlld1N0
YXRlRGlkQ2hhbmdlKCkgaXRzZWxmIGlzIHJlc3BvbnNpYmxlIGZvciBhY3R1YWxseSBzZXR0aW5n
IHRoZSB2aXNpYmlsaXR5IHRvIFZpc2libGUgb3IgSGlkZGVuCiAgICAgLy8gZGVwZW5kaW5nIG9u
IHdoYXQgV2ViUGFnZVByb3h5Ojppc1ZpZXdWaXNpYmxlKCkgcmV0dXJucywgdGhpcyBzaW1wbHkg
dHJpZ2dlcnMgdGhlIHByb2Nlc3MuCi0gICAgaW1wbC0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRD
aGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxlKTsKKyAgICBpbXBsLT5wYWdlKCktPnZp
ZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc1Zpc2libGUpOwogfQogCiBzdGF0
aWMgRXZhc19TbWFydF9DbGFzcyBnX3BhcmVudFNtYXJ0Q2xhc3MgPSBFVkFTX1NNQVJUX0NMQVNT
X0lOSVRfTlVMTDsKIAotc3RhdGljIHZvaWQgX2V3a192aWV3X2ltcGxfZGVsKEV3a1ZpZXdJbXBs
KiBpbXBsKQotewotICAgIC8qIFVucmVnaXN0ZXIgaWNvbiBjaGFuZ2UgY2FsbGJhY2sgKi8KLSAg
ICBFd2tfRmF2aWNvbl9EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0gaW1wbC0+Y29udGV4dC0+ZmF2
aWNvbkRhdGFiYXNlKCk7Ci0gICAgaWNvbkRhdGFiYXNlLT51bndhdGNoQ2hhbmdlcyhfZXdrX3Zp
ZXdfb25fZmF2aWNvbl9jaGFuZ2VkKTsKLQotICAgIGRlbGV0ZSBpbXBsOwotfQotCiBzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIGNv
bnN0IEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KGV3a1Zp
ZXcpOwpAQCAtMzUxLDEzICszMjUsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiAgICAgZ19wYXJlbnRTbWFydENsYXNzLmFkZChld2tW
aWV3KTsKIAotICAgIHNtYXJ0RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3SW1wbChld2tWaWV3KTsK
LSAgICBpZiAoIXNtYXJ0RGF0YS0+cHJpdikgewotICAgICAgICBFSU5BX0xPR19DUklUKCJjb3Vs
ZCBub3QgYWxsb2NhdGUgRXdrVmlld0ltcGwiKTsKLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRf
ZGF0YV9zZXQoZXdrVmlldywgMCk7Ci0gICAgICAgIGZyZWUoc21hcnREYXRhKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBzbWFydERhdGEtPnByaXYgPSAwOwogCiAgICAgLy8gQ3JlYXRl
IGV2YXNfb2JqZWN0X2ltYWdlIHRvIGRyYXcgd2ViIGNvbnRlbnRzLgogICAgIHNtYXJ0RGF0YS0+
aW1hZ2UgPSBldmFzX29iamVjdF9pbWFnZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwpAQCAt
Mzc5LDEwICszNDcsOSBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfZGVsKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogewotICAgIEV3a1ZpZXdJbXBsOjpyZW1vdmVGcm9tUGFnZVZpZXdNYXAo
ZXdrVmlldyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAg
aWYgKHNtYXJ0RGF0YSAmJiBzbWFydERhdGEtPnByaXYpCi0gICAgICAgIF9ld2tfdmlld19pbXBs
X2RlbChzbWFydERhdGEtPnByaXYpOworICAgIGlmIChzbWFydERhdGEpCisgICAgICAgIGRlbGV0
ZSBzbWFydERhdGEtPnByaXY7CiAKICAgICBnX3BhcmVudFNtYXJ0Q2xhc3MuZGVsKGV3a1ZpZXcp
OwogfQpAQCAtNDI5LDggKzM5Niw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxj
dWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgICAgIG5lZWRzTmV3U3VyZmFjZSA9IGlt
cGwtPmV2YXNHbFN1cmZhY2U7CiAjZW5kaWYKIAotICAgICAgICBpZiAoaW1wbC0+cGFnZVByb3h5
LT5kcmF3aW5nQXJlYSgpKQotICAgICAgICAgICAgaW1wbC0+cGFnZVByb3h5LT5kcmF3aW5nQXJl
YSgpLT5zZXRTaXplKEludFNpemUod2lkdGgsIGhlaWdodCksIEludFNpemUoKSk7CisgICAgICAg
IGlmIChpbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVhKCkpCisgICAgICAgICAgICBpbXBsLT5wYWdl
KCktPmRyYXdpbmdBcmVhKCktPnNldFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgSW50U2l6
ZSgpKTsKIAogICAgICAgICBzbWFydERhdGEtPnZpZXcudyA9IHdpZHRoOwogICAgICAgICBzbWFy
dERhdGEtPnZpZXcuaCA9IGhlaWdodDsKQEAgLTQ5Miw4ICs0NTksOCBAQCBzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc21hcnRfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgcmVkLCBp
bnQgZ3JlZW4sCiAjdW5kZWYgQ0hFQ0tfQ09MT1IKIAogICAgIGV2YXNfb2JqZWN0X2ltYWdlX2Fs
cGhhX3NldChzbWFydERhdGEtPmltYWdlLCBhbHBoYSA8IDI1NSk7Ci0gICAgaW1wbC0+cGFnZVBy
b3h5LT5zZXREcmF3c0JhY2tncm91bmQocmVkIHx8IGdyZWVuIHx8IGJsdWUpOwotICAgIGltcGwt
PnBhZ2VQcm94eS0+c2V0RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoYWxwaGEgPCAyNTUpOwor
ICAgIGltcGwtPnBhZ2UoKS0+c2V0RHJhd3NCYWNrZ3JvdW5kKHJlZCB8fCBncmVlbiB8fCBibHVl
KTsKKyAgICBpbXBsLT5wYWdlKCktPnNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGFscGhh
IDwgMjU1KTsKIAogICAgIGdfcGFyZW50U21hcnRDbGFzcy5jb2xvcl9zZXQoZXdrVmlldywgcmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogfQpAQCAtNTM3LDcgKzUwNCw3IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19zbWFydF9jbGFzc19zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21h
cnRfY2xhc3NfbmV3KHZvaWQpCitzdGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIGNyZWF0ZUV3a1Zp
ZXdTbWFydENsYXNzKHZvaWQpCiB7CiAgICAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGFw
aSA9IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKCJFd2tfVmlldyIpOwog
ICAgIHN0YXRpYyBFdmFzX1NtYXJ0KiBzbWFydCA9IDA7CkBAIC01NTAsNjcgKzUxNywxNCBAQCBz
dGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIF9ld2tfdmlld19zbWFydF9jbGFzc19uZXcodm9pZCkK
ICAgICByZXR1cm4gc21hcnQ7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19pbml0aWFsaXpl
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBX
S1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIGltcGwpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRl
eHQpOwotCi0gICAgaWYgKGltcGwtPnBhZ2VDbGllbnQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGltcGwtPnBhZ2VDbGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKGltcGwpOwotCi0gICAg
aWYgKHBhZ2VHcm91cFJlZikKLSAgICAgICAgaW1wbC0+cGFnZVByb3h5ID0gdG9JbXBsKGNvbnRl
eHQtPndrQ29udGV4dCgpKS0+Y3JlYXRlV2ViUGFnZShpbXBsLT5wYWdlQ2xpZW50LmdldCgpLCB0
b0ltcGwocGFnZUdyb3VwUmVmKSk7Ci0gICAgZWxzZQotICAgICAgICBpbXBsLT5wYWdlUHJveHkg
PSB0b0ltcGwoY29udGV4dC0+d2tDb250ZXh0KCkpLT5jcmVhdGVXZWJQYWdlKGltcGwtPnBhZ2VD
bGllbnQuZ2V0KCksIFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkuZ2V0KCkpOwotCi0gICAgRXdrVmll
d0ltcGw6OmFkZFRvUGFnZVZpZXdNYXAoZXdrVmlldyk7Ci0KLSNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCi0gICAgaW1wbC0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMo
KS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgaW1wbC0+cGFn
ZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0Rm9yY2VDb21wb3NpdGluZ01v
ZGUodHJ1ZSk7Ci0gICAgaW1wbC0+cGFnZVByb3h5LT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsK
LSNlbmRpZgotICAgIGltcGwtPnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKLQotICAg
IGltcGwtPmJhY2tGb3J3YXJkTGlzdCA9IEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6Y3JlYXRlKHRv
QVBJKGltcGwtPnBhZ2VQcm94eS0+YmFja0ZvcndhcmRMaXN0KCkpKTsKLQotICAgIGltcGwtPmNv
bnRleHQgPSBjb250ZXh0OwotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgaW1w
bC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCA9IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw6OmNyZWF0ZShpbXBsKTsKLSAgICBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVy
ID0gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoaW1wbC0+cGFnZVByb3h5Lmdl
dCgpLCBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSk7Ci0gICAgaW1w
bC0+cGFnZUNsaWVudC0+c2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihpbXBsLT5wYWdlVmlld3Bv
cnRDb250cm9sbGVyLmdldCgpKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgIGltcGwtPnBhZ2VQcm94eS0+ZnVsbFNjcmVlbk1hbmFnZXIoKS0+c2V0V2ViVmlldyhl
d2tWaWV3KTsKLSAgICBpbXBsLT5wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygp
LT5zZXRGdWxsU2NyZWVuRW5hYmxlZCh0cnVlKTsKLSNlbmRpZgotCi0gICAgLy8gSW5pdGlhbGl6
ZSBwYWdlIGNsaWVudHMuCi0gICAgaW1wbC0+cGFnZUxvYWRDbGllbnQgPSBQYWdlTG9hZENsaWVu
dEVmbDo6Y3JlYXRlKGltcGwpOwotICAgIGltcGwtPnBhZ2VQb2xpY3lDbGllbnQgPSBQYWdlUG9s
aWN5Q2xpZW50RWZsOjpjcmVhdGUoaW1wbCk7Ci0gICAgaW1wbC0+cGFnZVVJQ2xpZW50ID0gUGFn
ZVVJQ2xpZW50RWZsOjpjcmVhdGUoaW1wbCk7Ci0gICAgaW1wbC0+cmVzb3VyY2VMb2FkQ2xpZW50
ID0gUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUoaW1wbCk7Ci0gICAgaW1wbC0+ZmluZENs
aWVudCA9IEZpbmRDbGllbnRFZmw6OmNyZWF0ZShpbXBsKTsKLSAgICBpbXBsLT5mb3JtQ2xpZW50
ID0gRm9ybUNsaWVudEVmbDo6Y3JlYXRlKGltcGwpOwotCi0gICAgLyogTGlzdGVuIGZvciBmYXZp
Y29uIGNoYW5nZXMgKi8KLSAgICBFd2tfRmF2aWNvbl9EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0g
aW1wbC0+Y29udGV4dC0+ZmF2aWNvbkRhdGFiYXNlKCk7Ci0gICAgaWNvbkRhdGFiYXNlLT53YXRj
aENoYW5nZXMoSWNvbkNoYW5nZUNhbGxiYWNrRGF0YShfZXdrX3ZpZXdfb25fZmF2aWNvbl9jaGFu
Z2VkLCBld2tWaWV3KSk7Ci19Ci0KLXN0YXRpYyBFdmFzX09iamVjdCogX2V3a192aWV3X2FkZF93
aXRoX3NtYXJ0KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQpCitzdGF0aWMgaW5saW5l
IEV2YXNfT2JqZWN0KiBjcmVhdGVFd2tWaWV3KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21h
cnQsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZikKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAw
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnQsIDApOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb250ZXh0LCAwKTsKIAogICAgIEV2YXNfT2Jq
ZWN0KiBld2tWaWV3ID0gZXZhc19vYmplY3Rfc21hcnRfYWRkKGNhbnZhcywgc21hcnQpOwotICAg
IGlmICghZXdrVmlldykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGV3a1ZpZXcsIDApOwogCiAgICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcs
IHNtYXJ0RGF0YSk7CiAgICAgaWYgKCFzbWFydERhdGEpIHsKQEAgLTYxOCwxMSArNTMyLDkgQEAg
c3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX3ZpZXdfYWRkX3dpdGhfc21hcnQoRXZhcyogY2FudmFz
LCBFdmFzX1NtYXJ0KiBzbWFydCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgRVdL
X1ZJRVdfSU1QTF9HRVQoc21hcnREYXRhLCBpbXBsKTsKLSAgICBpZiAoIWltcGwpIHsKLSAgICAg
ICAgZXZhc19vYmplY3RfZGVsKGV3a1ZpZXcpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Cisg
ICAgQVNTRVJUKCFzbWFydERhdGEtPnByaXYpOworICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBh
Z2VHcm91cCA9IHBhZ2VHcm91cFJlZiA/IHRvSW1wbChwYWdlR3JvdXBSZWYpIDogV2ViUGFnZUdy
b3VwOjpjcmVhdGUoKTsKKyAgICBzbWFydERhdGEtPnByaXYgPSBuZXcgRXdrVmlld0ltcGwoZXdr
VmlldywgY29udGV4dCwgcGFnZUdyb3VwKTsKIAogICAgIHJldHVybiBld2tWaWV3OwogfQpAQCAt
NjMzLDM2ICs1NDUsMTcgQEAgc3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX3ZpZXdfYWRkX3dpdGhf
c21hcnQoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCkKICAqLwogRXZhc19PYmplY3Qq
IGV3a192aWV3X2Jhc2VfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKIHsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoY2FudmFzLCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoY29udGV4dFJlZiwgMCk7Ci0gICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBfZXdrX3ZpZXdf
YWRkX3dpdGhfc21hcnQoY2FudmFzLCBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOwotICAg
IGlmICghZXdrVmlldykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBfZXdrX3ZpZXdfaW5pdGlh
bGl6ZShld2tWaWV3LCBFd2tfQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYpLCBwYWdlR3JvdXBS
ZWYpOwotCi0gICAgcmV0dXJuIGV3a1ZpZXc7CisgICAgcmV0dXJuIGNyZWF0ZUV3a1ZpZXcoY2Fu
dmFzLCBjcmVhdGVFd2tWaWV3U21hcnRDbGFzcygpLCBFd2tfQ29udGV4dDo6Y3JlYXRlKGNvbnRl
eHRSZWYpLCBwYWdlR3JvdXBSZWYpOwogfQogCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfc21hcnRf
YWRkKEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIEV3a19Db250ZXh0KiBjb250ZXh0
KQogewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwotICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydCwgMCk7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRleHQsIDApOwotCi0gICAgRXZhc19PYmplY3QqIGV3
a1ZpZXcgPSBfZXdrX3ZpZXdfYWRkX3dpdGhfc21hcnQoY2FudmFzLCBzbWFydCk7Ci0gICAgaWYg
KCFld2tWaWV3KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIF9ld2tfdmlld19pbml0aWFsaXpl
KGV3a1ZpZXcsIGNvbnRleHQsIDApOwotCi0gICAgcmV0dXJuIGV3a1ZpZXc7CisgICAgcmV0dXJu
IGNyZWF0ZUV3a1ZpZXcoY2FudmFzLCBzbWFydCwgY29udGV4dCwgMCk7CiB9CiAKIEV2YXNfT2Jq
ZWN0KiBld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KEV2YXMqIGNhbnZhcywgRXdrX0NvbnRleHQq
IGNvbnRleHQpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRleHQs
IDApOwotICAgIHJldHVybiBld2tfdmlld19zbWFydF9hZGQoY2FudmFzLCBfZXdrX3ZpZXdfc21h
cnRfY2xhc3NfbmV3KCksIGNvbnRleHQpOworICAgIHJldHVybiBld2tfdmlld19zbWFydF9hZGQo
Y2FudmFzLCBjcmVhdGVFd2tWaWV3U21hcnRDbGFzcygpLCBjb250ZXh0KTsKIH0KIAogRXZhc19P
YmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52YXMpCkBAIC02ODQsNyArNTc3LDcgQEAgRWlu
YV9Cb29sIGV3a192aWV3X3VybF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIq
IHVybCkKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBm
YWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVybCwgZmFsc2UpOwog
Ci0gICAgaW1wbC0+cGFnZVByb3h5LT5sb2FkVVJMKHVybCk7CisgICAgaW1wbC0+cGFnZSgpLT5s
b2FkVVJMKHVybCk7CiAgICAgaW1wbC0+aW5mb3JtVVJMQ2hhbmdlKCk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTcxMSw3ICs2MDQsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+cGFnZVByb3h5LT5yZWxvYWQoLypyZWxv
YWRGcm9tT3JpZ2luKi8gZmFsc2UpOworICAgIGltcGwtPnBhZ2UoKS0+cmVsb2FkKC8qcmVsb2Fk
RnJvbU9yaWdpbiovIGZhbHNlKTsKICAgICBpbXBsLT5pbmZvcm1VUkxDaGFuZ2UoKTsKIAogICAg
IHJldHVybiB0cnVlOwpAQCAtNzIyLDcgKzYxNSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19yZWxv
YWRfYnlwYXNzX2NhY2hlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1Q
TF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+cGFn
ZVByb3h5LT5yZWxvYWQoLypyZWxvYWRGcm9tT3JpZ2luKi8gdHJ1ZSk7CisgICAgaW1wbC0+cGFn
ZSgpLT5yZWxvYWQoLypyZWxvYWRGcm9tT3JpZ2luKi8gdHJ1ZSk7CiAgICAgaW1wbC0+aW5mb3Jt
VVJMQ2hhbmdlKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTczMyw3ICs2MjYsNyBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVX
X0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAgIGltcGwt
PnBhZ2VQcm94eS0+c3RvcExvYWRpbmcoKTsKKyAgICBpbXBsLT5wYWdlKCktPnN0b3BMb2FkaW5n
KCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc3MCw3ICs2NjMsNyBAQCBkb3VibGUgZXdr
X3ZpZXdfbG9hZF9wcm9ncmVzc19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIC0xLjApOwogICAg
IEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIC0xLjApOwogCi0g
ICAgcmV0dXJuIGltcGwtPnBhZ2VQcm94eS0+ZXN0aW1hdGVkUHJvZ3Jlc3MoKTsKKyAgICByZXR1
cm4gaW1wbC0+cGFnZSgpLT5lc3RpbWF0ZWRQcm9ncmVzcygpOwogfQogCiBFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2NhbGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBkb3VibGUgc2NhbGVGYWN0b3Is
IGludCB4LCBpbnQgeSkKQEAgLTc3OCw3ICs2NzEsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2Nh
bGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBkb3VibGUgc2NhbGVGYWN0b3IsIGludCB4LCBp
bgogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxz
ZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFs
c2UpOwogCi0gICAgaW1wbC0+cGFnZVByb3h5LT5zY2FsZVBhZ2Uoc2NhbGVGYWN0b3IsIEludFBv
aW50KHgsIHkpKTsKKyAgICBpbXBsLT5wYWdlKCktPnNjYWxlUGFnZShzY2FsZUZhY3RvciwgSW50
UG9pbnQoeCwgeSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC03ODcsNyArNjgwLDcgQEAg
ZG91YmxlIGV3a192aWV3X3NjYWxlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgLTEpOwogICAg
IEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIC0xKTsKIAotICAg
IHJldHVybiBpbXBsLT5wYWdlUHJveHktPnBhZ2VTY2FsZUZhY3RvcigpOworICAgIHJldHVybiBp
bXBsLT5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdf
ZGV2aWNlX3BpeGVsX3JhdGlvX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgcmF0aW8p
CkBAIC03OTUsNyArNjg4LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2RldmljZV9waXhlbF9yYXRp
b19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IHJhdGlvKQogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdf
SU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+
cGFnZVByb3h5LT5zZXRDdXN0b21EZXZpY2VTY2FsZUZhY3RvcihyYXRpbyk7CisgICAgaW1wbC0+
cGFnZSgpLT5zZXRDdXN0b21EZXZpY2VTY2FsZUZhY3RvcihyYXRpbyk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTgwNSw3ICs2OTgsNyBAQCBmbG9hdCBld2tfdmlld19kZXZpY2VfcGl4ZWxf
cmF0aW9fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAtMS4wKTsKICAgICBFV0tfVklFV19JTVBM
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCAtMS4wKTsKIAotICAgIHJldHVybiBpbXBs
LT5wYWdlUHJveHktPmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgcmV0dXJuIGltcGwtPnBhZ2Uo
KS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKIH0KIAogdm9pZCBld2tfdmlld190aGVtZV9zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHBhdGgpCkBAIC04MjksNyArNzIyLDcgQEAg
RWluYV9Cb29sIGV3a192aWV3X2JhY2soRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBFV0tf
VklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBX
ZWJQYWdlUHJveHkqIHBhZ2UgPSBpbXBsLT5wYWdlUHJveHkuZ2V0KCk7CisgICAgV2ViUGFnZVBy
b3h5KiBwYWdlID0gaW1wbC0+cGFnZSgpOwogICAgIGlmIChwYWdlLT5jYW5Hb0JhY2soKSkgewog
ICAgICAgICBwYWdlLT5nb0JhY2soKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04NDMsNyAr
NzM2LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmQoRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxz
ZSk7CiAKLSAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBpbXBsLT5wYWdlUHJveHkuZ2V0KCk7Cisg
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gaW1wbC0+cGFnZSgpOwogICAgIGlmIChwYWdlLT5jYW5H
b0ZvcndhcmQoKSkgewogICAgICAgICBwYWdlLT5nb0ZvcndhcmQoKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC04NTksNyArNzUyLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2ludGVudF9kZWxp
dmVyKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW50ZW50KiBpbnRlbnQpCiAgICAgRVdLX1ZJ
RVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpbnRlbnQsIGZhbHNlKTsKIAotICAgIFdlYlBhZ2VQ
cm94eSogcGFnZSA9IGltcGwtPnBhZ2VQcm94eS5nZXQoKTsKKyAgICBXZWJQYWdlUHJveHkqIHBh
Z2UgPSBpbXBsLT5wYWdlKCk7CiAgICAgcGFnZS0+ZGVsaXZlckludGVudFRvRnJhbWUocGFnZS0+
bWFpbkZyYW1lKCksIGludGVudC0+d2ViSW50ZW50RGF0YSgpKTsKIAogICAgIHJldHVybiB0cnVl
OwpAQCAtODczLDcgKzc2Niw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19iYWNrX3Bvc3NpYmxlKEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgcmV0dXJuIGltcGwtPnBhZ2VQcm94eS0+Y2Fu
R29CYWNrKCk7CisgICAgcmV0dXJuIGltcGwtPnBhZ2UoKS0+Y2FuR29CYWNrKCk7CiB9CiAKIEVp
bmFfQm9vbCBld2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQpA
QCAtODgxLDcgKzc3NCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgcmV0dXJuIGltcGwtPnBhZ2VQcm94eS0+Y2Fu
R29Gb3J3YXJkKCk7CisgICAgcmV0dXJuIGltcGwtPnBhZ2UoKS0+Y2FuR29Gb3J3YXJkKCk7CiB9
CiAKIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogZXdrX3ZpZXdfYmFja19mb3J3YXJkX2xpc3RfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQpAQCAtODg5LDcgKzc4Miw3IEBAIEV3a19CYWNr
X0ZvcndhcmRfTGlzdCogZXdrX3ZpZXdfYmFja19mb3J3YXJkX2xpc3RfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIDApOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IGltcGwsIDApOwogCi0gICAgcmV0dXJuIGltcGwtPmJhY2tGb3J3YXJkTGlzdC5nZXQoKTsKKyAg
ICByZXR1cm4gaW1wbC0+YmFja0ZvcndhcmRMaXN0KCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmll
d19odG1sX3N0cmluZ19sb2FkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBodG1s
LCBjb25zdCBjaGFyKiBiYXNlVXJsLCBjb25zdCBjaGFyKiB1bnJlYWNoYWJsZVVybCkKQEAgLTg5
OSw5ICs3OTIsOSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZChFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgY2hhciogaHRtbCwgY29ucwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChodG1sLCBmYWxzZSk7CiAKICAgICBpZiAodW5yZWFjaGFibGVVcmwg
JiYgKnVucmVhY2hhYmxlVXJsKQotICAgICAgICBpbXBsLT5wYWdlUHJveHktPmxvYWRBbHRlcm5h
dGVIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoaHRtbCksIGJhc2VVcmwgPyBTdHJpbmc6OmZy
b21VVEY4KGJhc2VVcmwpIDogIiIsIFN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVcmwpKTsK
KyAgICAgICAgaW1wbC0+cGFnZSgpLT5sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhTdHJpbmc6OmZy
b21VVEY4KGh0bWwpLCBiYXNlVXJsID8gU3RyaW5nOjpmcm9tVVRGOChiYXNlVXJsKSA6ICIiLCBT
dHJpbmc6OmZyb21VVEY4KHVucmVhY2hhYmxlVXJsKSk7CiAgICAgZWxzZQotICAgICAgICBpbXBs
LT5wYWdlUHJveHktPmxvYWRIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoaHRtbCksIGJhc2VV
cmwgPyBTdHJpbmc6OmZyb21VVEY4KGJhc2VVcmwpIDogIiIpOworICAgICAgICBpbXBsLT5wYWdl
KCktPmxvYWRIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoaHRtbCksIGJhc2VVcmwgPyBTdHJp
bmc6OmZyb21VVEY4KGJhc2VVcmwpIDogIiIpOwogCiAgICAgaW1wbC0+aW5mb3JtVVJMQ2hhbmdl
KCk7CiAKQEAgLTk0Miw3ICs4MzUsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0ZXh0LCBFd2tfRmluZF9PcAogICAgIEVX
S19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodGV4dCwgZmFsc2UpOwogCi0gICAgaW1wbC0+
cGFnZVByb3h5LT5maW5kU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgodGV4dCksIHN0YXRpY19jYXN0
PFdlYktpdDo6RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKKyAgICBpbXBs
LT5wYWdlKCktPmZpbmRTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSwgc3RhdGljX2Nhc3Q8
V2ViS2l0OjpGaW5kT3B0aW9ucz4ob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC05NTIsNyArODQ1LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3RleHRf
ZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBFV0tfVklF
V19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBpbXBs
LT5wYWdlUHJveHktPmhpZGVGaW5kVUkoKTsKKyAgICBpbXBsLT5wYWdlKCktPmhpZGVGaW5kVUko
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTYzLDcgKzg1Niw3IEBAIEVpbmFfQm9vbCBl
d2tfdmlld190ZXh0X21hdGNoZXNfY291bnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNo
YXIqIHRleHQsIEV3CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
aW1wbCwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0ZXh0LCBm
YWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPmNvdW50U3RyaW5nTWF0Y2hlcyhTdHJpbmc6
OmZyb21VVEY4KHRleHQpLCBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPihvcHRpb25z
KSwgbWF4TWF0Y2hDb3VudCk7CisgICAgaW1wbC0+cGFnZSgpLT5jb3VudFN0cmluZ01hdGNoZXMo
U3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSwgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4o
b3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05OTYs
NyArODg5LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV3a19Ub3VjaF9FdmVudF9UeXBlIHQKICAgICBFdmFzX1BvaW50IHBvc2l0
aW9uID0geyBzbWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3LnkgfTsKICAgICAvLyBG
SVhNRTogVG91Y2ggcG9pbnRzIGRvIG5vdCB0YWtlIHNjcm9sbCBwb3NpdGlvbiBhbmQgc2NhbGUg
aW50byBhY2NvdW50IHdoZW4gCiAgICAgLy8gVElMRURfQkFDS0lOR19TVE9SRSBpcyBlbmFibGVk
LgotICAgIGltcGwtPnBhZ2VQcm94eS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2
ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCAmcG9zaXRpb24sIGVjb3JlX3RpbWVfZ2V0KCkp
KTsKKyAgICBpbXBsLT5wYWdlKCktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVu
dCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgJnBvc2l0aW9uLCBlY29yZV90aW1lX2dldCgpKSk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCkBAIC0xMDM2LDcgKzkyOSw3IEBAIEVpbmFfQm9v
bCBld2tfdmlld19pbnNwZWN0b3Jfc2hvdyhFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVX
S19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAg
IFdlYkluc3BlY3RvclByb3h5KiBpbnNwZWN0b3IgPSBpbXBsLT5wYWdlUHJveHktPmluc3BlY3Rv
cigpOworICAgIFdlYkluc3BlY3RvclByb3h5KiBpbnNwZWN0b3IgPSBpbXBsLT5wYWdlKCktPmlu
c3BlY3RvcigpOwogICAgIGlmIChpbnNwZWN0b3IpCiAgICAgICAgIGluc3BlY3Rvci0+c2hvdygp
OwogCkBAIC0xMDUyLDcgKzk0NSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19pbnNwZWN0b3JfY2xv
c2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5z
cGVjdG9yID0gaW1wbC0+cGFnZVByb3h5LT5pbnNwZWN0b3IoKTsKKyAgICBXZWJJbnNwZWN0b3JQ
cm94eSogaW5zcGVjdG9yID0gaW1wbC0+cGFnZSgpLT5pbnNwZWN0b3IoKTsKICAgICBpZiAoaW5z
cGVjdG9yKQogICAgICAgICBpbnNwZWN0b3ItPmNsb3NlKCk7CiAKQEAgLTEwNzQsNyArOTY3LDcg
QEAgRWluYV9Cb29sIGV3a192aWV3X3BhZ2luYXRpb25fbW9kZV9zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIEV3a19QYWdpbmF0aW9uX01vZGUKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKICAgICAKLSAgICBpbXBsLT5wYWdlUHJveHkt
PnNldFBhZ2luYXRpb25Nb2RlKHN0YXRpY19jYXN0PFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGU+
KG1vZGUpKTsKKyAgICBpbXBsLT5wYWdlKCktPnNldFBhZ2luYXRpb25Nb2RlKHN0YXRpY19jYXN0
PFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGU+KG1vZGUpKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMTA4NCw1ICs5NzcsNSBAQCBFd2tfUGFnaW5hdGlvbl9Nb2RlIGV3a192aWV3X3BhZ2lu
YXRpb25fbW9kZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVXS19QQUdJTkFUSU9OX01PREVf
SU5WQUxJRCk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1w
bCwgRVdLX1BBR0lOQVRJT05fTU9ERV9JTlZBTElEKTsKIAotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFd2tfUGFnaW5hdGlvbl9Nb2RlPihpbXBsLT5wYWdlUHJveHktPnBhZ2luYXRpb25Nb2RlKCkp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFd2tfUGFnaW5hdGlvbl9Nb2RlPihpbXBsLT5wYWdl
KCktPnBhZ2luYXRpb25Nb2RlKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170893</attachid>
            <date>2012-10-26 04:54:27 -0700</date>
            <delta_ts>2012-10-26 05:40:11 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>bug100232_v2</filename>
            <type>text/plain</type>
            <size>39983</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDE3YmQxNzRjYjNlZmM0OWM2YjA5MjAyMWZiNjY2YjAxZDUwM2EwNTYKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIE9jdCAyNiAxMjo0ODo0MSAyMDEyICswMzAwCgogICAgYnVnMTAwMjMyCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDQ5YzJiOTUuLjhiYWI0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NSBAQAorMjAxMi0x
MC0yNiAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIENsZWFuIHVwIGNvbnN0cnVjdGlvbi9kZXN0cnVjdGlvbiBj
b2RlIGluIEV3a192aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDAyMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTaW1wbGlmaWVkIGEgbG90IG9mIGluaXRpYWxpemF0aW9uIGFuZCBkZXN0cnVjdGlv
biBjb2RlIG9mIEV3a192aWV3IGFuZCBFd2tWaWV3SW1wbAorICAgICAgICBwdXQgYWxsIHRoZSBp
bXBsIHN0dWZmIHRvIGl0cyBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciwgYWxzbyBtYWRlIEV3
a1ZpZXdJbXBsIG1lbWJlcgorICAgICAgICB2YXJpYWJsZXMgcHJpdmF0ZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAgICAgKHBhZ2VWaWV3TWFw
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjphZGRUb1BhZ2VWaWV3TWFwKToKKyAgICAgICAgKEV3
a1ZpZXdJbXBsOjpyZW1vdmVGcm9tUGFnZVZpZXdNYXApOgorICAgICAgICAoRXdrVmlld0ltcGw6
OnZpZXdGcm9tUGFnZVZpZXdNYXApOgorICAgICAgICAoRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBs
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjp+RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmll
d0ltcGw6OndrUGFnZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6dGl0bGUpOgorICAgICAgICAo
RXdrVmlld0ltcGw6OnNldFRoZW1lUGF0aCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6Y3VzdG9t
VGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0Q3VzdG9tVGV4dEVu
Y29kaW5nTmFtZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtSWNvbkNoYW5nZSk6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtV2ViUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAo
RXdrVmlld0ltcGw6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBs
OjppbmZvcm1VUkxDaGFuZ2UpOgorICAgICAgICAoRXdrVmlld0ltcGw6Om9uRmF2aWNvbkNoYW5n
ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6
OnZpZXcpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnBhZ2UpOgorICAgICAgICAoRXdrVmlld0lt
cGw6OmV3a0NvbnRleHQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmJhY2tGb3J3YXJkTGlzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcDoKKyAgICAgICAg
KEV3a19TZXR0aW5nczo6cHJlZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1c19pbik6CisgICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFy
dF9tb3VzZV93aGVlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bik6Cisg
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X21vdXNlX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKToKKyAg
ICAgICAgKF9ld2tfdmlld19zbWFydF9rZXlfdXApOgorICAgICAgICAoX2V3a192aWV3X29uX3No
b3cpOgorICAgICAgICAoX2V3a192aWV3X29uX2hpZGUpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZGVsKToKKyAgICAgICAgKF9ld2tf
dmlld19zbWFydF9jYWxjdWxhdGUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NvbG9yX3Nl
dCk6CisgICAgICAgIChjcmVhdGVFd2tWaWV3U21hcnRDbGFzcyk6CisgICAgICAgIChjcmVhdGVF
d2tWaWV3KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAgICAgKGV3a192aWV3
X3NtYXJ0X2FkZCk6CisgICAgICAgIChld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KToKKyAgICAg
ICAgKGV3a192aWV3X3VybF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVsb2FkKToKKyAgICAg
ICAgKGV3a192aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUpOgorICAgICAgICAoZXdrX3ZpZXdfc3Rv
cCk6CisgICAgICAgIChld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldCk6CisgICAgICAgIChld2tf
dmlld19zY2FsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfZ2V0KToKKyAgICAgICAg
KGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZGV2
aWNlX3BpeGVsX3JhdGlvX2dldCk6CisgICAgICAgIChld2tfdmlld19iYWNrKToKKyAgICAgICAg
KGV3a192aWV3X2ZvcndhcmQpOgorICAgICAgICAoZXdrX3ZpZXdfaW50ZW50X2RlbGl2ZXIpOgor
ICAgICAgICAoZXdrX3ZpZXdfYmFja19wb3NzaWJsZSk6CisgICAgICAgIChld2tfdmlld19mb3J3
YXJkX3Bvc3NpYmxlKToKKyAgICAgICAgKGV3a192aWV3X2JhY2tfZm9yd2FyZF9saXN0X2dldCk6
CisgICAgICAgIChld2tfdmlld19odG1sX3N0cmluZ19sb2FkKToKKyAgICAgICAgKGV3a192aWV3
X3RleHRfZmluZCk6CisgICAgICAgIChld2tfdmlld190ZXh0X2ZpbmRfaGlnaGxpZ2h0X2NsZWFy
KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19jb3VudCk6CisgICAgICAgIChld2tf
dmlld19mZWVkX3RvdWNoX2V2ZW50KToKKyAgICAgICAgKGV3a192aWV3X2luc3BlY3Rvcl9zaG93
KToKKyAgICAgICAgKGV3a192aWV3X2luc3BlY3Rvcl9jbG9zZSk6CisgICAgICAgIChld2tfdmll
d19wYWdpbmF0aW9uX21vZGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3BhZ2luYXRpb25fbW9k
ZV9nZXQpOgorCiAyMDEyLTEwLTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1l
ekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBBZGQgRXdrX0NvbG9yX1BpY2tlciBB
UEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNw
cAppbmRleCA2NjNiNDBlLi4yNGFmNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCkBAIC0zMyw4ICszMywxMSBAQAogI2luY2x1ZGUg
IlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRDbGllbnRFZmwuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgIldlYkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorI2luY2x1ZGUgIldlYlByZWZl
cmVuY2VzLmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKICNp
bmNsdWRlICJld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29udGV4
dF9wcml2YXRlLmgiCkBAIC00OSw0NCArNTIsNjMgQEAKICNpbmNsdWRlIDxFZGplLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KIAorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQor
I2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKKyNlbmRpZgorCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyBjb25z
dCBpbnQgZGVmYXVsdEN1cnNvclNpemUgPSAxNjsKIAotRXdrVmlld0ltcGw6OlBhZ2VWaWV3TWFw
IEV3a1ZpZXdJbXBsOjpwYWdlVmlld01hcDsKK3R5cGVkZWYgSGFzaE1hcDxXS1BhZ2VSZWYsIEV2
YXNfT2JqZWN0Kj4gUGFnZVZpZXdNYXA7CiAKLXZvaWQgRXdrVmlld0ltcGw6OmFkZFRvUGFnZVZp
ZXdNYXAoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCitzdGF0aWMgaW5saW5lIFBhZ2VWaWV3
TWFwJiBwYWdlVmlld01hcCgpCiB7Ci0gICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gRXdrVmll
d0ltcGw6OmZyb21FdmFzT2JqZWN0KGV3a1ZpZXcpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
UGFnZVZpZXdNYXAsIG1hcCwgKCkpOworICAgIHJldHVybiBtYXA7Cit9CiAKLSAgICBQYWdlVmll
d01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHBhZ2VWaWV3TWFwLmFkZCh2aWV3SW1wbC0+d2tQYWdl
KCksIGV3a1ZpZXcpOwordm9pZCBFd2tWaWV3SW1wbDo6YWRkVG9QYWdlVmlld01hcChFd2tWaWV3
SW1wbCogdmlld0ltcGwpCit7CisgICAgUGFnZVZpZXdNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBw
YWdlVmlld01hcCgpLmFkZCh2aWV3SW1wbC0+d2tQYWdlKCksIHZpZXdJbXBsLT52aWV3KCkpOwog
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQg
RXdrVmlld0ltcGw6OnJlbW92ZUZyb21QYWdlVmlld01hcChjb25zdCBFdmFzX09iamVjdCogZXdr
VmlldykKK3ZvaWQgRXdrVmlld0ltcGw6OnJlbW92ZUZyb21QYWdlVmlld01hcChFd2tWaWV3SW1w
bCogdmlld0ltcGwpCiB7Ci0gICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gRXdrVmlld0ltcGw6
OmZyb21FdmFzT2JqZWN0KGV3a1ZpZXcpOwotCi0gICAgQVNTRVJUKHBhZ2VWaWV3TWFwLmNvbnRh
aW5zKHZpZXdJbXBsLT53a1BhZ2UoKSkpOwotICAgIHBhZ2VWaWV3TWFwLnJlbW92ZSh2aWV3SW1w
bC0+d2tQYWdlKCkpOworICAgIEFTU0VSVChwYWdlVmlld01hcCgpLmNvbnRhaW5zKHZpZXdJbXBs
LT53a1BhZ2UoKSkpOworICAgIHBhZ2VWaWV3TWFwKCkucmVtb3ZlKHZpZXdJbXBsLT53a1BhZ2Uo
KSk7CiB9CiAKIGNvbnN0IEV2YXNfT2JqZWN0KiBFd2tWaWV3SW1wbDo6dmlld0Zyb21QYWdlVmll
d01hcChjb25zdCBXS1BhZ2VSZWYgcGFnZSkKIHsKICAgICBBU1NFUlQocGFnZSk7CiAKLSAgICBy
ZXR1cm4gcGFnZVZpZXdNYXAuZ2V0KHBhZ2UpOworICAgIHJldHVybiBwYWdlVmlld01hcCgpLmdl
dChwYWdlKTsKIH0KIAotRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3
KQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICA6IGV2YXNHbCgwKQotICAg
ICwgZXZhc0dsQ29udGV4dCgwKQotICAgICwgZXZhc0dsU3VyZmFjZSgwKQotICAgICwgbV92aWV3
KHZpZXcpCi0jZWxzZQorRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3
LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91
cD4gcGFnZUdyb3VwKQogICAgIDogbV92aWV3KHZpZXcpCisgICAgLCBtX2NvbnRleHQoY29udGV4
dCkKKyAgICAsIG1fcGFnZUNsaWVudChQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKHRoaXMpKQorICAg
ICwgbV9wYWdlUHJveHkodG9JbXBsKG1fY29udGV4dC0+d2tDb250ZXh0KCkpLT5jcmVhdGVXZWJQ
YWdlKG1fcGFnZUNsaWVudC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKSkKKyAgICAsIG1fcGFnZUxv
YWRDbGllbnQoUGFnZUxvYWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcGFnZVBv
bGljeUNsaWVudChQYWdlUG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCisgICAgLCBtX3Bh
Z2VVSUNsaWVudChQYWdlVUlDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcmVzb3Vy
Y2VMb2FkQ2xpZW50KFJlc291cmNlTG9hZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQorICAgICwg
bV9maW5kQ2xpZW50KEZpbmRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fZm9ybUNs
aWVudChGb3JtQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2JhY2tGb3J3YXJkTGlz
dChFd2tfQmFja19Gb3J3YXJkX0xpc3Q6OmNyZWF0ZSh0b0FQSShtX3BhZ2VQcm94eS0+YmFja0Zv
cndhcmRMaXN0KCkpKSkKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICAsIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudChQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
OjpjcmVhdGUodGhpcykpCisgICAgLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIoYWRvcHRQdHIo
bmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIobV9wYWdlUHJveHkuZ2V0KCksIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudC5nZXQoKSkpKQorI2VuZGlmCisjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorICAgICwgbV9ldmFzR2woMCkKKyAgICAsIG1fZXZhc0dsQ29udGV4dCgw
KQorICAgICwgbV9ldmFzR2xTdXJmYWNlKDApCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoRXdr
X1NldHRpbmdzOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX21vdXNlRXZlbnRzRW5hYmxlZChmYWxz
ZSkKQEAgLTk2LDE0ICsxMTgsNDggQEAgRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2Jq
ZWN0KiB2aWV3KQogICAgICwgbV9kaXNwbGF5VGltZXIodGhpcywgJkV3a1ZpZXdJbXBsOjpkaXNw
bGF5VGltZXJGaXJlZCkKICAgICAsIG1faW5wdXRNZXRob2RDb250ZXh0KElucHV0TWV0aG9kQ29u
dGV4dEVmbDo6Y3JlYXRlKHRoaXMsIHNtYXJ0RGF0YSgpLT5iYXNlLmV2YXMpKQogewotICAgIEFT
U0VSVCh2aWV3KTsKKyAgICBBU1NFUlQobV92aWV3KTsKKyAgICBBU1NFUlQobV9jb250ZXh0KTsK
KyAgICBBU1NFUlQobV9wYWdlUHJveHkpOworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQorICAgIG1fcGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQodHJ1ZSk7CisgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91
cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKKyAgICBt
X3BhZ2VQcm94eS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CisjZW5kaWYKKworICAgIG1fcGFn
ZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOworCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCisgICAgcGFnZUNsaWVudC0+c2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihwYWdlVmlld3Bv
cnRDb250cm9sbGVyLmdldCgpKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQorICAgIG1fcGFnZVByb3h5LT5mdWxsU2NyZWVuTWFuYWdlcigpLT5zZXRXZWJWaWV3KG1fdmll
dyk7CisgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGdWxs
U2NyZWVuRW5hYmxlZCh0cnVlKTsKKyNlbmRpZgogCiAgICAgLy8gRW5hYmxlIG1vdXNlIGV2ZW50
cyBieSBkZWZhdWx0CiAgICAgc2V0TW91c2VFdmVudHNFbmFibGVkKHRydWUpOworCisgICAgLy8g
TGlzdGVuIGZvciBmYXZpY29uIGNoYW5nZXMuCisgICAgRXdrX0Zhdmljb25fRGF0YWJhc2UqIGlj
b25EYXRhYmFzZSA9IG1fY29udGV4dC0+ZmF2aWNvbkRhdGFiYXNlKCk7CisgICAgQVNTRVJUKGlj
b25EYXRhYmFzZSk7CisKKyAgICBpY29uRGF0YWJhc2UtPndhdGNoQ2hhbmdlcyhJY29uQ2hhbmdl
Q2FsbGJhY2tEYXRhKEV3a1ZpZXdJbXBsOjpvbkZhdmljb25DaGFuZ2VkLCB0aGlzKSk7CisKKyAg
ICBFd2tWaWV3SW1wbDo6YWRkVG9QYWdlVmlld01hcCh0aGlzKTsKIH0KIAogRXdrVmlld0ltcGw6
On5Fd2tWaWV3SW1wbCgpCiB7CisgICAgLy8gVW5yZWdpc3RlciBpY29uIGNoYW5nZSBjYWxsYmFj
ay4KKyAgICBFd2tfRmF2aWNvbl9EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0gbV9jb250ZXh0LT5m
YXZpY29uRGF0YWJhc2UoKTsKKyAgICBBU1NFUlQoaWNvbkRhdGFiYXNlKTsKKworICAgIGljb25E
YXRhYmFzZS0+dW53YXRjaENoYW5nZXMoRXdrVmlld0ltcGw6Om9uRmF2aWNvbkNoYW5nZWQpOwor
CisgICAgRXdrVmlld0ltcGw6OnJlbW92ZUZyb21QYWdlVmlld01hcCh0aGlzKTsKIH0KIAogRXdr
X1ZpZXdfU21hcnRfRGF0YSogRXdrVmlld0ltcGw6OnNtYXJ0RGF0YSgpCkBAIC0xMjYsNyArMTgy
LDcgQEAgRXdrVmlld0ltcGwqIEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09iamVjdChjb25zdCBFdmFz
X09iamVjdCogdmlldykKICAqLwogV0tQYWdlUmVmIEV3a1ZpZXdJbXBsOjp3a1BhZ2UoKQogewot
ICAgIHJldHVybiB0b0FQSShwYWdlUHJveHkuZ2V0KCkpOworICAgIHJldHVybiB0b0FQSShtX3Bh
Z2VQcm94eS5nZXQoKSk7CiB9CiAKIHZvaWQgRXdrVmlld0ltcGw6OnNldEN1cnNvcihjb25zdCBD
dXJzb3ImIGN1cnNvcikKQEAgLTUyMiw3ICs1NzgsNyBAQCBib29sIEV3a1ZpZXdJbXBsOjppc1Zp
c2libGUoKSBjb25zdAogCiBjb25zdCBjaGFyKiBFd2tWaWV3SW1wbDo6dGl0bGUoKSBjb25zdAog
ewotICAgIG1fdGl0bGUgPSBwYWdlUHJveHktPnBhZ2VUaXRsZSgpLnV0ZjgoKS5kYXRhKCk7Cisg
ICAgbV90aXRsZSA9IG1fcGFnZVByb3h5LT5wYWdlVGl0bGUoKS51dGY4KCkuZGF0YSgpOwogCiAg
ICAgcmV0dXJuIG1fdGl0bGU7CiB9CkBAIC01NDUsMTMgKzYwMSwxMyBAQCB2b2lkIEV3a1ZpZXdJ
bXBsOjpzZXRUaGVtZVBhdGgoY29uc3QgY2hhciogdGhlbWUpCiB7CiAgICAgaWYgKG1fdGhlbWUg
IT0gdGhlbWUpIHsKICAgICAgICAgbV90aGVtZSA9IHRoZW1lOwotICAgICAgICBwYWdlUHJveHkt
PnNldFRoZW1lUGF0aCh0aGVtZSk7CisgICAgICAgIG1fcGFnZVByb3h5LT5zZXRUaGVtZVBhdGgo
dGhlbWUpOwogICAgIH0KIH0KIAogY29uc3QgY2hhciogRXdrVmlld0ltcGw6OmN1c3RvbVRleHRF
bmNvZGluZ05hbWUoKSBjb25zdAogewotICAgIFN0cmluZyBjdXN0b21FbmNvZGluZyA9IHBhZ2VQ
cm94eS0+Y3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpOworICAgIFN0cmluZyBjdXN0b21FbmNvZGlu
ZyA9IG1fcGFnZVByb3h5LT5jdXN0b21UZXh0RW5jb2RpbmdOYW1lKCk7CiAgICAgaWYgKGN1c3Rv
bUVuY29kaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU2Myw3ICs2MTks
NyBAQCBjb25zdCBjaGFyKiBFd2tWaWV3SW1wbDo6Y3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpIGNv
bnN0CiB2b2lkIEV3a1ZpZXdJbXBsOjpzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IGNo
YXIqIGVuY29kaW5nKQogewogICAgIG1fY3VzdG9tRW5jb2RpbmcgPSBlbmNvZGluZzsKLSAgICBw
YWdlUHJveHktPnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmcgPyBlbmNvZGluZyA6
IFN0cmluZygpKTsKKyAgICBtX3BhZ2VQcm94eS0+c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShl
bmNvZGluZyA/IGVuY29kaW5nIDogU3RyaW5nKCkpOwogfQogCiB2b2lkIEV3a1ZpZXdJbXBsOjpz
ZXRNb3VzZUV2ZW50c0VuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtNjI2LDcgKzY4Miw3IEBAIHZv
aWQgRXdrVmlld0ltcGw6OnNldFRvdWNoRXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpCiAgKi8K
IHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUljb25DaGFuZ2UoKQogewotICAgIEV3a19GYXZpY29u
X0RhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSBjb250ZXh0LT5mYXZpY29uRGF0YWJhc2UoKTsKKyAg
ICBFd2tfRmF2aWNvbl9EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0gbV9jb250ZXh0LT5mYXZpY29u
RGF0YWJhc2UoKTsKICAgICBBU1NFUlQoaWNvbkRhdGFiYXNlKTsKIAogICAgIG1fZmF2aWNvblVS
TCA9IGV3a19mYXZpY29uX2RhdGFiYXNlX2ljb25fdXJsX2dldChpY29uRGF0YWJhc2UsIG1fdXJs
KTsKQEAgLTgwMCw3ICs4NTYsNyBAQCB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1XZWJQcm9jZXNz
Q3Jhc2hlZCgpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ3
ZWJwcm9jZXNzLGNyYXNoZWQiLCAmaGFuZGxlZCk7CiAKICAgICBpZiAoIWhhbmRsZWQpIHsKLSAg
ICAgICAgQ1N0cmluZyB1cmwgPSBwYWdlUHJveHktPnVybEF0UHJvY2Vzc0V4aXQoKS51dGY4KCk7
CisgICAgICAgIENTdHJpbmcgdXJsID0gbV9wYWdlUHJveHktPnVybEF0UHJvY2Vzc0V4aXQoKS51
dGY4KCk7CiAgICAgICAgIFdBUk4oIldBUk5JTkc6IFRoZSB3ZWIgcHJvY2VzcyBleHBlcmllbmNl
ZCBhIGNyYXNoIG9uICclcycuXG4iLCB1cmwuZGF0YSgpKTsKIAogICAgICAgICAvLyBEaXNwbGF5
IGFuIGVycm9yIHBhZ2UKQEAgLTkyMyw3ICs5NzksNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRXdr
Vmlld0ltcGw6OmluZm9ybURhdGFiYXNlUXVvdGFSZWFjaGVkKGNvbnN0IFN0cmluZyYgZGF0YWJh
cwogICovCiB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1VUkxDaGFuZ2UoKQogewotICAgIFN0cmlu
ZyBhY3RpdmVVUkwgPSBwYWdlUHJveHktPmFjdGl2ZVVSTCgpOworICAgIFN0cmluZyBhY3RpdmVV
UkwgPSBtX3BhZ2VQcm94eS0+YWN0aXZlVVJMKCk7CiAgICAgaWYgKGFjdGl2ZVVSTC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTAyOCwzICsxMDg0LDEzIEBAIHZvaWQgRXdrVmll
d0ltcGw6Om9uVG91Y2hNb3ZlKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMqIC8qIGNhbnZhcyAqLywg
RXZhc19PYmplY3QqCiAgICAgdmlld0ltcGwtPmZlZWRUb3VjaEV2ZW50cyhFV0tfVE9VQ0hfTU9W
RSk7CiB9CiAjZW5kaWYKKwordm9pZCBFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZChjb25z
dCBjaGFyKiBwYWdlVVJMLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrVmlld0ltcGwqIHZp
ZXdJbXBsID0gc3RhdGljX2Nhc3Q8RXdrVmlld0ltcGwqPihldmVudEluZm8pOworCisgICAgaWYg
KCF2aWV3SW1wbC0+dXJsKCkgfHwgc3RyY2FzZWNtcCh2aWV3SW1wbC0+dXJsKCksIHBhZ2VVUkwp
KQorICAgICAgICByZXR1cm47CisKKyAgICB2aWV3SW1wbC0+aW5mb3JtSWNvbkNoYW5nZSgpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0lt
cGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKaW5k
ZXggZWM0MzExMC4uZGZlZjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC02OSw2ICs2OSw3IEBAIGNsYXNzIFBhZ2VVSUNsaWVudEVm
bDsKIGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw7CiBjbGFzcyBQYWdlVmll
d3BvcnRDb250cm9sbGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOworY2xhc3MgV2Vi
UGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUG9wdXBJdGVtOwogY2xh
c3MgV2ViUG9wdXBNZW51UHJveHlFZmw7CkBAIC0xMDAsMTYgKzEwMSwxNyBAQCB0eXBlZGVmIHN0
cnVjdCBFd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiAKIGNsYXNzIEV3
a1ZpZXdJbXBsIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFd2tWaWV3SW1wbChFdmFzX09iamVj
dCogdmlldyk7CisgICAgRXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8
RXdrX0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IHBh
Z2VHcm91cCk7CiAgICAgfkV3a1ZpZXdJbXBsKCk7CiAKICAgICBzdGF0aWMgRXdrVmlld0ltcGwq
IGZyb21FdmFzT2JqZWN0KGNvbnN0IEV2YXNfT2JqZWN0KiB2aWV3KTsKIAotICAgIGlubGluZSBF
dmFzX09iamVjdCogdmlldygpIHsgcmV0dXJuIG1fdmlldzsgfQorICAgIEV2YXNfT2JqZWN0KiB2
aWV3KCkgeyByZXR1cm4gbV92aWV3OyB9CiAgICAgV0tQYWdlUmVmIHdrUGFnZSgpOwotICAgIGlu
bGluZSBXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSgpIHsgcmV0dXJuIHBhZ2VQcm94eS5nZXQo
KTsgfQotICAgIEV3a19Db250ZXh0KiBld2tDb250ZXh0KCkgeyByZXR1cm4gY29udGV4dC5nZXQo
KTsgfQorICAgIFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlUHJv
eHkuZ2V0KCk7IH0KKyAgICBFd2tfQ29udGV4dCogZXdrQ29udGV4dCgpIHsgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsgfQogICAgIEV3a19TZXR0aW5ncyogc2V0dGluZ3MoKSB7IHJldHVybiBtX3Nl
dHRpbmdzLmdldCgpOyB9CisgICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0KiBiYWNrRm9yd2FyZExp
c3QoKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKTsgfQogCiAgICAgV2ViQ29yZTo6
SW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdDsKQEAgLTEz
Niw4ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRyYXdSZWdpb24oY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgcmVjdCk7CiAgICAgdm9pZCBzZXRJbWFnZURhdGEodm9pZCogaW1hZ2VEYXRh
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKIAotICAgIHN0YXRpYyB2b2lkIGFkZFRv
UGFnZVZpZXdNYXAoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotICAgIHN0YXRpYyB2b2lk
IHJlbW92ZUZyb21QYWdlVmlld01hcChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7CisgICAg
c3RhdGljIHZvaWQgYWRkVG9QYWdlVmlld01hcChFd2tWaWV3SW1wbCogdmlld0ltcGwpOworICAg
IHN0YXRpYyB2b2lkIHJlbW92ZUZyb21QYWdlVmlld01hcChFd2tWaWV3SW1wbCogdmlld0ltcGwp
OwogICAgIHN0YXRpYyBjb25zdCBFdmFzX09iamVjdCogdmlld0Zyb21QYWdlVmlld01hcChjb25z
dCBXS1BhZ2VSZWYpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtMjEwLDI5ICsy
MTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmZvcm1JbnRlbnRTZXJ2aWNlUmVnaXN0cmF0aW9u
KEV3a19JbnRlbnRfU2VydmljZSogZXdrSW50ZW50U2VydmljZSk7CiAjZW5kaWYKIAotICAgIC8v
IEZJWE1FOiBNYWtlIG1lbWJlcnMgcHJpdmF0ZSBmb3IgZW5jYXBzdWxhdGlvbi4KLSAgICBPd25Q
dHI8V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKLSNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKLSAgICBPd25QdHI8V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsPiBwYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OwotICAgIE93blB0cjxXZWJLaXQ6
OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI+IHBhZ2VWaWV3cG9ydENvbnRyb2xsZXI7Ci0jZW5kaWYK
LSAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IHBhZ2VQcm94eTsKLSAgICBPd25QdHI8
V2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbD4gcGFnZUxvYWRDbGllbnQ7Ci0gICAgT3duUHRyPFdl
YktpdDo6UGFnZVBvbGljeUNsaWVudEVmbD4gcGFnZVBvbGljeUNsaWVudDsKLSAgICBPd25QdHI8
V2ViS2l0OjpQYWdlVUlDbGllbnRFZmw+IHBhZ2VVSUNsaWVudDsKLSAgICBPd25QdHI8V2ViS2l0
OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw+IHJlc291cmNlTG9hZENsaWVudDsKLSAgICBPd25QdHI8
V2ViS2l0OjpGaW5kQ2xpZW50RWZsPiBmaW5kQ2xpZW50OwotICAgIE93blB0cjxXZWJLaXQ6OkZv
cm1DbGllbnRFZmw+IGZvcm1DbGllbnQ7Ci0KLSAgICBPd25QdHI8RXdrX0JhY2tfRm9yd2FyZF9M
aXN0PiBiYWNrRm9yd2FyZExpc3Q7Ci0gICAgUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0Owot
Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIEV2YXNfR0wqIGV2YXNHbDsK
LSAgICBFdmFzX0dMX0NvbnRleHQqIGV2YXNHbENvbnRleHQ7Ci0gICAgRXZhc19HTF9TdXJmYWNl
KiBldmFzR2xTdXJmYWNlOwotI2VuZGlmCi0KIHByaXZhdGU6CiAgICAgaW5saW5lIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSgpOwogICAgIHZvaWQgZGlzcGxheVRpbWVyRmlyZWQoV2Vi
Q29yZTo6VGltZXI8RXdrVmlld0ltcGw+Kik7CkBAIC0yNDYsOCArMjI1LDI5IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIHZvaWQgb25Ub3VjaFVwKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMqIC8qIGNh
bnZhcyAqLywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIC8qIGV2ZW50SW5mbyAqLyk7CiAg
ICAgc3RhdGljIHZvaWQgb25Ub3VjaE1vdmUodm9pZCogLyogZGF0YSAqLywgRXZhcyogLyogY2Fu
dmFzICovLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJbmZvICovKTsKICNl
bmRpZgorICAgIHN0YXRpYyB2b2lkIG9uRmF2aWNvbkNoYW5nZWQoY29uc3QgY2hhciogcGFnZVVS
TCwgdm9pZCogZXZlbnRJbmZvKTsKIAorICAgIC8vIE5vdGUsIGluaXRpYWxpemF0aW9uIG9yZGVy
IGlzIGltcG9ydGFudC4KICAgICBFdmFzX09iamVjdCogbV92aWV3OworICAgIFJlZlB0cjxFd2tf
Q29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPiBt
X3BhZ2VDbGllbnQ7CisgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2VQcm94
eTsKKyAgICBPd25QdHI8V2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbD4gbV9wYWdlTG9hZENsaWVu
dDsKKyAgICBPd25QdHI8V2ViS2l0OjpQYWdlUG9saWN5Q2xpZW50RWZsPiBtX3BhZ2VQb2xpY3lD
bGllbnQ7CisgICAgT3duUHRyPFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsPiBtX3BhZ2VVSUNsaWVu
dDsKKyAgICBPd25QdHI8V2ViS2l0OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw+IG1fcmVzb3VyY2VM
b2FkQ2xpZW50OworICAgIE93blB0cjxXZWJLaXQ6OkZpbmRDbGllbnRFZmw+IG1fZmluZENsaWVu
dDsKKyAgICBPd25QdHI8V2ViS2l0OjpGb3JtQ2xpZW50RWZsPiBtX2Zvcm1DbGllbnQ7CisgICAg
T3duUHRyPEV3a19CYWNrX0ZvcndhcmRfTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7CisjaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbD4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OworICAgIE93
blB0cjxXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI+IG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlcjsKKyNlbmRpZgorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBFdmFz
X0dMKiBtX2V2YXNHbDsKKyAgICBFdmFzX0dMX0NvbnRleHQqIG1fZXZhc0dsQ29udGV4dDsKKyAg
ICBFdmFzX0dMX1N1cmZhY2UqIG1fZXZhc0dsU3VyZmFjZTsKKyNlbmRpZgogICAgIE93blB0cjxF
d2tfU2V0dGluZ3M+IG1fc2V0dGluZ3M7CiAgICAgUmVmUHRyPEV2YXNfT2JqZWN0PiBtX2N1cnNv
ck9iamVjdDsKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgbV9jdXJzb3JHcm91cDsKQEAgLTI2NSw5
ICsyNjUsNiBAQCBwcml2YXRlOgogICAgIE93blB0cjxFd2tfUG9wdXBfTWVudT4gbV9wb3B1cE1l
bnU7CiAgICAgT3duUHRyPFdlYktpdDo6SW5wdXRNZXRob2RDb250ZXh0RWZsPiBtX2lucHV0TWV0
aG9kQ29udGV4dDsKICAgICBPd25QdHI8RXdrX0NvbG9yX1BpY2tlcj4gbV9jb2xvclBpY2tlcjsK
LQotICAgIHR5cGVkZWYgSGFzaE1hcDxXS1BhZ2VSZWYsIGNvbnN0IEV2YXNfT2JqZWN0Kj4gUGFn
ZVZpZXdNYXA7Ci0gICAgc3RhdGljIFBhZ2VWaWV3TWFwIHBhZ2VWaWV3TWFwOwogfTsKIAogI2Vu
ZGlmIC8vIEV3a1ZpZXdJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19zZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfc2V0dGluZ3MuY3BwCmluZGV4IDRiOWVjMjcuLjQ3OGUzNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZXR0aW5ncy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcApAQCAtNDUs
MTIgKzQ1LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGNvbnN0IFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXMqIEV3a19TZXR0aW5nczo6cHJlZmVyZW5jZXMoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3ZpZXdJbXBsLT5wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpOwor
ICAgIHJldHVybiBtX3ZpZXdJbXBsLT5wYWdlKCktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygp
OwogfQogCiBXZWJLaXQ6OldlYlByZWZlcmVuY2VzKiBFd2tfU2V0dGluZ3M6OnByZWZlcmVuY2Vz
KCkKIHsKLSAgICByZXR1cm4gbV92aWV3SW1wbC0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJl
ZmVyZW5jZXMoKTsKKyAgICByZXR1cm4gbV92aWV3SW1wbC0+cGFnZSgpLT5wYWdlR3JvdXAoKS0+
cHJlZmVyZW5jZXMoKTsKIH0KIAogI2lmIEVOQUJMRShTUEVMTENIRUNLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDIwNDFhYjkuLmNlZTY1
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAK
QEAgLTUzLDEwICs1Myw2IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
LSNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCi0jZW5kaWYKLQogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNlbmRpZgpA
QCAtMTI5LDI1ICsxMjUsMTIgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQo
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2No
YW5nZWQoc21hcnREYXRhLT5zZWxmKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2Zh
dmljb25fY2hhbmdlZChjb25zdCBjaGFyKiBwYWdlVVJMLCB2b2lkKiBldmVudEluZm8pCi17Ci0g
ICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGV2ZW50
SW5mbyk7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEp
OwotICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwpOwotCi0g
ICAgY29uc3QgY2hhciogdmlld1VSTCA9IGV3a192aWV3X3VybF9nZXQoZXdrVmlldyk7Ci0gICAg
aWYgKCF2aWV3VVJMIHx8IHN0cmNhc2VjbXAodmlld1VSTCwgcGFnZVVSTCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGltcGwtPmluZm9ybUljb25DaGFuZ2UoKTsKLX0KLQogLy8gRGVmYXVsdCBF
dmVudCBIYW5kbGluZy4KIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2lu
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKICAgICBFV0tfVklFV19JTVBMX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJv
eHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQgfCBXZWJQ
YWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7CisgICAgaW1wbC0+cGFnZSgpLT52aWV3U3Rh
dGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwgV2ViUGFnZVByb3h5OjpW
aWV3V2luZG93SXNBY3RpdmUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNTUsNyArMTM4
LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPnZpZXdT
dGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQgfCBXZWJQYWdlUHJveHk6
OlZpZXdXaW5kb3dJc0FjdGl2ZSk7CisgICAgaW1wbC0+cGFnZSgpLT52aWV3U3RhdGVEaWRDaGFu
Z2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwgV2ViUGFnZVByb3h5OjpWaWV3V2luZG93
SXNBY3RpdmUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNzksOSArMTYyLDkgQEAgc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhLCBjb24KICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBF
dmFzX0V2ZW50X01vdXNlX1doZWVsIGV2ZW50KCp3aGVlbEV2ZW50KTsKICAgICBldmVudC5jYW52
YXMgPSBtYXBUb1dlYkNvbnRlbnQoc21hcnREYXRhLCBldmVudC5jYW52YXMpOwotICAgIGltcGwt
PnBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KCZldmVudCwg
JnBvc2l0aW9uKSk7CisgICAgaW1wbC0+cGFnZSgpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdl
YldoZWVsRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKICNlbHNlCi0gICAgaW1wbC0+cGFnZVBy
b3h5LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQod2hlZWxFdmVudCwgJnBv
c2l0aW9uKSk7CisgICAgaW1wbC0+cGFnZSgpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldo
ZWVsRXZlbnQod2hlZWxFdmVudCwgJnBvc2l0aW9uKSk7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTE5NCw5ICsxNzcsOSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFy
dF9tb3VzZV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29ucwogI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biBldmVudCgq
ZG93bkV2ZW50KTsKICAgICBldmVudC5jYW52YXMgPSBtYXBUb1dlYkNvbnRlbnQoc21hcnREYXRh
LCBldmVudC5jYW52YXMpOwotICAgIGltcGwtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChO
YXRpdmVXZWJNb3VzZUV2ZW50KCZldmVudCwgJnBvc2l0aW9uKSk7CisgICAgaW1wbC0+cGFnZSgp
LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24p
KTsKICNlbHNlCi0gICAgaW1wbC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdl
Yk1vdXNlRXZlbnQoZG93bkV2ZW50LCAmcG9zaXRpb24pKTsKKyAgICBpbXBsLT5wYWdlKCktPmhh
bmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChkb3duRXZlbnQsICZwb3NpdGlvbikp
OwogI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDksOSArMTkyLDkgQEAgc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhLCBjb25zdAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIEV2YXNf
RXZlbnRfTW91c2VfVXAgZXZlbnQoKnVwRXZlbnQpOwogICAgIGV2ZW50LmNhbnZhcyA9IG1hcFRv
V2ViQ29udGVudChzbWFydERhdGEsIGV2ZW50LmNhbnZhcyk7Ci0gICAgaW1wbC0+cGFnZVByb3h5
LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24p
KTsKKyAgICBpbXBsLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVu
dCgmZXZlbnQsICZwb3NpdGlvbikpOwogI2Vsc2UKLSAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRs
ZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCAmcG9zaXRpb24pKTsKKyAg
ICBpbXBsLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2
ZW50LCAmcG9zaXRpb24pKTsKICNlbmRpZgogCiAgICAgSW5wdXRNZXRob2RDb250ZXh0RWZsKiBp
bnB1dE1ldGhvZENvbnRleHQgPSBpbXBsLT5pbnB1dE1ldGhvZENvbnRleHQoKTsKQEAgLTIyOSw5
ICsyMTIsOSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29ucwogI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQogICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSBldmVudCgqbW92ZUV2ZW50KTsKICAg
ICBldmVudC5jdXIuY2FudmFzID0gbWFwVG9XZWJDb250ZW50KHNtYXJ0RGF0YSwgZXZlbnQuY3Vy
LmNhbnZhcyk7Ci0gICAgaW1wbC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdl
Yk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKKyAgICBpbXBsLT5wYWdlKCktPmhhbmRs
ZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCgmZXZlbnQsICZwb3NpdGlvbikpOwogI2Vs
c2UKLSAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VF
dmVudChtb3ZlRXZlbnQsICZwb3NpdGlvbikpOworICAgIGltcGwtPnBhZ2UoKS0+aGFuZGxlTW91
c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KG1vdmVFdmVudCwgJnBvc2l0aW9uKSk7CiAjZW5k
aWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI0NSw3ICsyMjgsNyBAQCBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zbWFydF9rZXlfZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERh
dGEsIGNvbnN0CiAgICAgaWYgKGlucHV0TWV0aG9kQ29udGV4dCkKICAgICAgICAgaW5wdXRNZXRo
b2RDb250ZXh0LT5oYW5kbGVLZXlEb3duRXZlbnQoZG93bkV2ZW50LCAmaXNGaWx0ZXJlZCk7CiAK
LSAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudChkb3duRXZlbnQsIGlzRmlsdGVyZWQpKTsKKyAgICBpbXBsLT5wYWdlKCktPmhhbmRs
ZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChkb3duRXZlbnQsIGlzRmlsdGVy
ZWQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjUzLDcgKzIzNiw3IEBAIHN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFy
dERhdGEsIGNvbnN0IEV2CiB7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+cGFnZVByb3h5LT5oYW5kbGVLZXlib2Fy
ZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQodXBFdmVudCkpOworICAgIGltcGwtPnBhZ2Uo
KS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KHVwRXZlbnQpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzA1LDcgKzI4OCw3IEBAIHN0YXRpYyB2b2lkIF9l
d2tfdmlld19vbl9zaG93KHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIC8q
ZXZlbnRJbmZvCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGlj
X2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEVXS19WSUVXX0lNUExfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIGltcGwpOwotICAgIGltcGwtPnBhZ2VQcm94eS0+dmlld1N0
YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7CisgICAgaW1wbC0+cGFn
ZSgpLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxlKTsKIH0K
IAogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2hpZGUodm9pZCogZGF0YSwgRXZhcyosIEV2YXNf
T2JqZWN0Kiwgdm9pZCogLypldmVudEluZm8qLykKQEAgLTMxNiwyMCArMjk5LDExIEBAIHN0YXRp
YyB2b2lkIF9ld2tfdmlld19vbl9oaWRlKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCos
IHZvaWQqIC8qZXZlbnRJbmZvCiAgICAgLy8gVGhpcyBjYWxsIG1heSBsb29rIHdyb25nLCBidXQg
d2UgcmVhbGx5IG5lZWQgdG8gcGFzcyBWaWV3SXNWaXNpYmxlIGhlcmUuCiAgICAgLy8gdmlld1N0
YXRlRGlkQ2hhbmdlKCkgaXRzZWxmIGlzIHJlc3BvbnNpYmxlIGZvciBhY3R1YWxseSBzZXR0aW5n
IHRoZSB2aXNpYmlsaXR5IHRvIFZpc2libGUgb3IgSGlkZGVuCiAgICAgLy8gZGVwZW5kaW5nIG9u
IHdoYXQgV2ViUGFnZVByb3h5Ojppc1ZpZXdWaXNpYmxlKCkgcmV0dXJucywgdGhpcyBzaW1wbHkg
dHJpZ2dlcnMgdGhlIHByb2Nlc3MuCi0gICAgaW1wbC0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRD
aGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxlKTsKKyAgICBpbXBsLT5wYWdlKCktPnZp
ZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc1Zpc2libGUpOwogfQogCiBzdGF0
aWMgRXZhc19TbWFydF9DbGFzcyBnX3BhcmVudFNtYXJ0Q2xhc3MgPSBFVkFTX1NNQVJUX0NMQVNT
X0lOSVRfTlVMTDsKIAotc3RhdGljIHZvaWQgX2V3a192aWV3X2ltcGxfZGVsKEV3a1ZpZXdJbXBs
KiBpbXBsKQotewotICAgIC8qIFVucmVnaXN0ZXIgaWNvbiBjaGFuZ2UgY2FsbGJhY2sgKi8KLSAg
ICBFd2tfRmF2aWNvbl9EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0gaW1wbC0+Y29udGV4dC0+ZmF2
aWNvbkRhdGFiYXNlKCk7Ci0gICAgaWNvbkRhdGFiYXNlLT51bndhdGNoQ2hhbmdlcyhfZXdrX3Zp
ZXdfb25fZmF2aWNvbl9jaGFuZ2VkKTsKLQotICAgIGRlbGV0ZSBpbXBsOwotfQotCiBzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIGNv
bnN0IEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KGV3a1Zp
ZXcpOwpAQCAtMzUxLDEzICszMjUsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiAgICAgZ19wYXJlbnRTbWFydENsYXNzLmFkZChld2tW
aWV3KTsKIAotICAgIHNtYXJ0RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3SW1wbChld2tWaWV3KTsK
LSAgICBpZiAoIXNtYXJ0RGF0YS0+cHJpdikgewotICAgICAgICBFSU5BX0xPR19DUklUKCJjb3Vs
ZCBub3QgYWxsb2NhdGUgRXdrVmlld0ltcGwiKTsKLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRf
ZGF0YV9zZXQoZXdrVmlldywgMCk7Ci0gICAgICAgIGZyZWUoc21hcnREYXRhKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBzbWFydERhdGEtPnByaXYgPSAwOwogCiAgICAgLy8gQ3JlYXRl
IGV2YXNfb2JqZWN0X2ltYWdlIHRvIGRyYXcgd2ViIGNvbnRlbnRzLgogICAgIHNtYXJ0RGF0YS0+
aW1hZ2UgPSBldmFzX29iamVjdF9pbWFnZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwpAQCAt
Mzc5LDEwICszNDcsOSBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfZGVsKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogewotICAgIEV3a1ZpZXdJbXBsOjpyZW1vdmVGcm9tUGFnZVZpZXdNYXAo
ZXdrVmlldyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAg
aWYgKHNtYXJ0RGF0YSAmJiBzbWFydERhdGEtPnByaXYpCi0gICAgICAgIF9ld2tfdmlld19pbXBs
X2RlbChzbWFydERhdGEtPnByaXYpOworICAgIGlmIChzbWFydERhdGEpCisgICAgICAgIGRlbGV0
ZSBzbWFydERhdGEtPnByaXY7CiAKICAgICBnX3BhcmVudFNtYXJ0Q2xhc3MuZGVsKGV3a1ZpZXcp
OwogfQpAQCAtNDI5LDggKzM5Niw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxj
dWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgICAgIG5lZWRzTmV3U3VyZmFjZSA9IGlt
cGwtPmV2YXNHbFN1cmZhY2U7CiAjZW5kaWYKIAotICAgICAgICBpZiAoaW1wbC0+cGFnZVByb3h5
LT5kcmF3aW5nQXJlYSgpKQotICAgICAgICAgICAgaW1wbC0+cGFnZVByb3h5LT5kcmF3aW5nQXJl
YSgpLT5zZXRTaXplKEludFNpemUod2lkdGgsIGhlaWdodCksIEludFNpemUoKSk7CisgICAgICAg
IGlmIChpbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVhKCkpCisgICAgICAgICAgICBpbXBsLT5wYWdl
KCktPmRyYXdpbmdBcmVhKCktPnNldFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgSW50U2l6
ZSgpKTsKIAogICAgICAgICBzbWFydERhdGEtPnZpZXcudyA9IHdpZHRoOwogICAgICAgICBzbWFy
dERhdGEtPnZpZXcuaCA9IGhlaWdodDsKQEAgLTQ5Miw4ICs0NTksOCBAQCBzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc21hcnRfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgcmVkLCBp
bnQgZ3JlZW4sCiAjdW5kZWYgQ0hFQ0tfQ09MT1IKIAogICAgIGV2YXNfb2JqZWN0X2ltYWdlX2Fs
cGhhX3NldChzbWFydERhdGEtPmltYWdlLCBhbHBoYSA8IDI1NSk7Ci0gICAgaW1wbC0+cGFnZVBy
b3h5LT5zZXREcmF3c0JhY2tncm91bmQocmVkIHx8IGdyZWVuIHx8IGJsdWUpOwotICAgIGltcGwt
PnBhZ2VQcm94eS0+c2V0RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoYWxwaGEgPCAyNTUpOwor
ICAgIGltcGwtPnBhZ2UoKS0+c2V0RHJhd3NCYWNrZ3JvdW5kKHJlZCB8fCBncmVlbiB8fCBibHVl
KTsKKyAgICBpbXBsLT5wYWdlKCktPnNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGFscGhh
IDwgMjU1KTsKIAogICAgIGdfcGFyZW50U21hcnRDbGFzcy5jb2xvcl9zZXQoZXdrVmlldywgcmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogfQpAQCAtNTM3LDcgKzUwNCw3IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19zbWFydF9jbGFzc19zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21h
cnRfY2xhc3NfbmV3KHZvaWQpCitzdGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIGNyZWF0ZUV3a1Zp
ZXdTbWFydENsYXNzKHZvaWQpCiB7CiAgICAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGFw
aSA9IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKCJFd2tfVmlldyIpOwog
ICAgIHN0YXRpYyBFdmFzX1NtYXJ0KiBzbWFydCA9IDA7CkBAIC01NTAsNjcgKzUxNywxNCBAQCBz
dGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIF9ld2tfdmlld19zbWFydF9jbGFzc19uZXcodm9pZCkK
ICAgICByZXR1cm4gc21hcnQ7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19pbml0aWFsaXpl
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBX
S1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIGltcGwpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRl
eHQpOwotCi0gICAgaWYgKGltcGwtPnBhZ2VDbGllbnQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGltcGwtPnBhZ2VDbGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKGltcGwpOwotCi0gICAg
aWYgKHBhZ2VHcm91cFJlZikKLSAgICAgICAgaW1wbC0+cGFnZVByb3h5ID0gdG9JbXBsKGNvbnRl
eHQtPndrQ29udGV4dCgpKS0+Y3JlYXRlV2ViUGFnZShpbXBsLT5wYWdlQ2xpZW50LmdldCgpLCB0
b0ltcGwocGFnZUdyb3VwUmVmKSk7Ci0gICAgZWxzZQotICAgICAgICBpbXBsLT5wYWdlUHJveHkg
PSB0b0ltcGwoY29udGV4dC0+d2tDb250ZXh0KCkpLT5jcmVhdGVXZWJQYWdlKGltcGwtPnBhZ2VD
bGllbnQuZ2V0KCksIFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkuZ2V0KCkpOwotCi0gICAgRXdrVmll
d0ltcGw6OmFkZFRvUGFnZVZpZXdNYXAoZXdrVmlldyk7Ci0KLSNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCi0gICAgaW1wbC0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMo
KS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgaW1wbC0+cGFn
ZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0Rm9yY2VDb21wb3NpdGluZ01v
ZGUodHJ1ZSk7Ci0gICAgaW1wbC0+cGFnZVByb3h5LT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsK
LSNlbmRpZgotICAgIGltcGwtPnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKLQotICAg
IGltcGwtPmJhY2tGb3J3YXJkTGlzdCA9IEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6Y3JlYXRlKHRv
QVBJKGltcGwtPnBhZ2VQcm94eS0+YmFja0ZvcndhcmRMaXN0KCkpKTsKLQotICAgIGltcGwtPmNv
bnRleHQgPSBjb250ZXh0OwotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgaW1w
bC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCA9IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw6OmNyZWF0ZShpbXBsKTsKLSAgICBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVy
ID0gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoaW1wbC0+cGFnZVByb3h5Lmdl
dCgpLCBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSk7Ci0gICAgaW1w
bC0+cGFnZUNsaWVudC0+c2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihpbXBsLT5wYWdlVmlld3Bv
cnRDb250cm9sbGVyLmdldCgpKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgIGltcGwtPnBhZ2VQcm94eS0+ZnVsbFNjcmVlbk1hbmFnZXIoKS0+c2V0V2ViVmlldyhl
d2tWaWV3KTsKLSAgICBpbXBsLT5wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygp
LT5zZXRGdWxsU2NyZWVuRW5hYmxlZCh0cnVlKTsKLSNlbmRpZgotCi0gICAgLy8gSW5pdGlhbGl6
ZSBwYWdlIGNsaWVudHMuCi0gICAgaW1wbC0+cGFnZUxvYWRDbGllbnQgPSBQYWdlTG9hZENsaWVu
dEVmbDo6Y3JlYXRlKGltcGwpOwotICAgIGltcGwtPnBhZ2VQb2xpY3lDbGllbnQgPSBQYWdlUG9s
aWN5Q2xpZW50RWZsOjpjcmVhdGUoaW1wbCk7Ci0gICAgaW1wbC0+cGFnZVVJQ2xpZW50ID0gUGFn
ZVVJQ2xpZW50RWZsOjpjcmVhdGUoaW1wbCk7Ci0gICAgaW1wbC0+cmVzb3VyY2VMb2FkQ2xpZW50
ID0gUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUoaW1wbCk7Ci0gICAgaW1wbC0+ZmluZENs
aWVudCA9IEZpbmRDbGllbnRFZmw6OmNyZWF0ZShpbXBsKTsKLSAgICBpbXBsLT5mb3JtQ2xpZW50
ID0gRm9ybUNsaWVudEVmbDo6Y3JlYXRlKGltcGwpOwotCi0gICAgLyogTGlzdGVuIGZvciBmYXZp
Y29uIGNoYW5nZXMgKi8KLSAgICBFd2tfRmF2aWNvbl9EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0g
aW1wbC0+Y29udGV4dC0+ZmF2aWNvbkRhdGFiYXNlKCk7Ci0gICAgaWNvbkRhdGFiYXNlLT53YXRj
aENoYW5nZXMoSWNvbkNoYW5nZUNhbGxiYWNrRGF0YShfZXdrX3ZpZXdfb25fZmF2aWNvbl9jaGFu
Z2VkLCBld2tWaWV3KSk7Ci19Ci0KLXN0YXRpYyBFdmFzX09iamVjdCogX2V3a192aWV3X2FkZF93
aXRoX3NtYXJ0KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQpCitzdGF0aWMgaW5saW5l
IEV2YXNfT2JqZWN0KiBjcmVhdGVFd2tWaWV3KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21h
cnQsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZikKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAw
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnQsIDApOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb250ZXh0LCAwKTsKIAogICAgIEV2YXNfT2Jq
ZWN0KiBld2tWaWV3ID0gZXZhc19vYmplY3Rfc21hcnRfYWRkKGNhbnZhcywgc21hcnQpOwotICAg
IGlmICghZXdrVmlldykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGV3a1ZpZXcsIDApOwogCiAgICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcs
IHNtYXJ0RGF0YSk7CiAgICAgaWYgKCFzbWFydERhdGEpIHsKQEAgLTYxOCwxMSArNTMyLDkgQEAg
c3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX3ZpZXdfYWRkX3dpdGhfc21hcnQoRXZhcyogY2FudmFz
LCBFdmFzX1NtYXJ0KiBzbWFydCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgRVdL
X1ZJRVdfSU1QTF9HRVQoc21hcnREYXRhLCBpbXBsKTsKLSAgICBpZiAoIWltcGwpIHsKLSAgICAg
ICAgZXZhc19vYmplY3RfZGVsKGV3a1ZpZXcpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Cisg
ICAgQVNTRVJUKCFzbWFydERhdGEtPnByaXYpOworICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBh
Z2VHcm91cCA9IHBhZ2VHcm91cFJlZiA/IHRvSW1wbChwYWdlR3JvdXBSZWYpIDogV2ViUGFnZUdy
b3VwOjpjcmVhdGUoKTsKKyAgICBzbWFydERhdGEtPnByaXYgPSBuZXcgRXdrVmlld0ltcGwoZXdr
VmlldywgY29udGV4dCwgcGFnZUdyb3VwKTsKIAogICAgIHJldHVybiBld2tWaWV3OwogfQpAQCAt
NjMzLDM2ICs1NDUsMTcgQEAgc3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX3ZpZXdfYWRkX3dpdGhf
c21hcnQoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCkKICAqLwogRXZhc19PYmplY3Qq
IGV3a192aWV3X2Jhc2VfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKIHsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoY2FudmFzLCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoY29udGV4dFJlZiwgMCk7Ci0gICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBfZXdrX3ZpZXdf
YWRkX3dpdGhfc21hcnQoY2FudmFzLCBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOwotICAg
IGlmICghZXdrVmlldykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBfZXdrX3ZpZXdfaW5pdGlh
bGl6ZShld2tWaWV3LCBFd2tfQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYpLCBwYWdlR3JvdXBS
ZWYpOwotCi0gICAgcmV0dXJuIGV3a1ZpZXc7CisgICAgcmV0dXJuIGNyZWF0ZUV3a1ZpZXcoY2Fu
dmFzLCBjcmVhdGVFd2tWaWV3U21hcnRDbGFzcygpLCBFd2tfQ29udGV4dDo6Y3JlYXRlKGNvbnRl
eHRSZWYpLCBwYWdlR3JvdXBSZWYpOwogfQogCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfc21hcnRf
YWRkKEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIEV3a19Db250ZXh0KiBjb250ZXh0
KQogewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwotICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydCwgMCk7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRleHQsIDApOwotCi0gICAgRXZhc19PYmplY3QqIGV3
a1ZpZXcgPSBfZXdrX3ZpZXdfYWRkX3dpdGhfc21hcnQoY2FudmFzLCBzbWFydCk7Ci0gICAgaWYg
KCFld2tWaWV3KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIF9ld2tfdmlld19pbml0aWFsaXpl
KGV3a1ZpZXcsIGNvbnRleHQsIDApOwotCi0gICAgcmV0dXJuIGV3a1ZpZXc7CisgICAgcmV0dXJu
IGNyZWF0ZUV3a1ZpZXcoY2FudmFzLCBzbWFydCwgY29udGV4dCwgMCk7CiB9CiAKIEV2YXNfT2Jq
ZWN0KiBld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KEV2YXMqIGNhbnZhcywgRXdrX0NvbnRleHQq
IGNvbnRleHQpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRleHQs
IDApOwotICAgIHJldHVybiBld2tfdmlld19zbWFydF9hZGQoY2FudmFzLCBfZXdrX3ZpZXdfc21h
cnRfY2xhc3NfbmV3KCksIGNvbnRleHQpOworICAgIHJldHVybiBld2tfdmlld19zbWFydF9hZGQo
Y2FudmFzLCBjcmVhdGVFd2tWaWV3U21hcnRDbGFzcygpLCBjb250ZXh0KTsKIH0KIAogRXZhc19P
YmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52YXMpCkBAIC02ODQsNyArNTc3LDcgQEAgRWlu
YV9Cb29sIGV3a192aWV3X3VybF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIq
IHVybCkKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBm
YWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVybCwgZmFsc2UpOwog
Ci0gICAgaW1wbC0+cGFnZVByb3h5LT5sb2FkVVJMKHVybCk7CisgICAgaW1wbC0+cGFnZSgpLT5s
b2FkVVJMKHVybCk7CiAgICAgaW1wbC0+aW5mb3JtVVJMQ2hhbmdlKCk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTcxMSw3ICs2MDQsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+cGFnZVByb3h5LT5yZWxvYWQoLypyZWxv
YWRGcm9tT3JpZ2luKi8gZmFsc2UpOworICAgIGltcGwtPnBhZ2UoKS0+cmVsb2FkKC8qcmVsb2Fk
RnJvbU9yaWdpbiovIGZhbHNlKTsKICAgICBpbXBsLT5pbmZvcm1VUkxDaGFuZ2UoKTsKIAogICAg
IHJldHVybiB0cnVlOwpAQCAtNzIyLDcgKzYxNSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19yZWxv
YWRfYnlwYXNzX2NhY2hlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1Q
TF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+cGFn
ZVByb3h5LT5yZWxvYWQoLypyZWxvYWRGcm9tT3JpZ2luKi8gdHJ1ZSk7CisgICAgaW1wbC0+cGFn
ZSgpLT5yZWxvYWQoLypyZWxvYWRGcm9tT3JpZ2luKi8gdHJ1ZSk7CiAgICAgaW1wbC0+aW5mb3Jt
VVJMQ2hhbmdlKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTczMyw3ICs2MjYsNyBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVX
X0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAgIGltcGwt
PnBhZ2VQcm94eS0+c3RvcExvYWRpbmcoKTsKKyAgICBpbXBsLT5wYWdlKCktPnN0b3BMb2FkaW5n
KCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc3MCw3ICs2NjMsNyBAQCBkb3VibGUgZXdr
X3ZpZXdfbG9hZF9wcm9ncmVzc19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIC0xLjApOwogICAg
IEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIC0xLjApOwogCi0g
ICAgcmV0dXJuIGltcGwtPnBhZ2VQcm94eS0+ZXN0aW1hdGVkUHJvZ3Jlc3MoKTsKKyAgICByZXR1
cm4gaW1wbC0+cGFnZSgpLT5lc3RpbWF0ZWRQcm9ncmVzcygpOwogfQogCiBFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2NhbGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBkb3VibGUgc2NhbGVGYWN0b3Is
IGludCB4LCBpbnQgeSkKQEAgLTc3OCw3ICs2NzEsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2Nh
bGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBkb3VibGUgc2NhbGVGYWN0b3IsIGludCB4LCBp
bgogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxz
ZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFs
c2UpOwogCi0gICAgaW1wbC0+cGFnZVByb3h5LT5zY2FsZVBhZ2Uoc2NhbGVGYWN0b3IsIEludFBv
aW50KHgsIHkpKTsKKyAgICBpbXBsLT5wYWdlKCktPnNjYWxlUGFnZShzY2FsZUZhY3RvciwgSW50
UG9pbnQoeCwgeSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC03ODcsNyArNjgwLDcgQEAg
ZG91YmxlIGV3a192aWV3X3NjYWxlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgLTEpOwogICAg
IEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIC0xKTsKIAotICAg
IHJldHVybiBpbXBsLT5wYWdlUHJveHktPnBhZ2VTY2FsZUZhY3RvcigpOworICAgIHJldHVybiBp
bXBsLT5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdf
ZGV2aWNlX3BpeGVsX3JhdGlvX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgcmF0aW8p
CkBAIC03OTUsNyArNjg4LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2RldmljZV9waXhlbF9yYXRp
b19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IHJhdGlvKQogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdf
SU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+
cGFnZVByb3h5LT5zZXRDdXN0b21EZXZpY2VTY2FsZUZhY3RvcihyYXRpbyk7CisgICAgaW1wbC0+
cGFnZSgpLT5zZXRDdXN0b21EZXZpY2VTY2FsZUZhY3RvcihyYXRpbyk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTgwNSw3ICs2OTgsNyBAQCBmbG9hdCBld2tfdmlld19kZXZpY2VfcGl4ZWxf
cmF0aW9fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAtMS4wKTsKICAgICBFV0tfVklFV19JTVBM
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCAtMS4wKTsKIAotICAgIHJldHVybiBpbXBs
LT5wYWdlUHJveHktPmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgcmV0dXJuIGltcGwtPnBhZ2Uo
KS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKIH0KIAogdm9pZCBld2tfdmlld190aGVtZV9zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHBhdGgpCkBAIC04MjksNyArNzIyLDcgQEAg
RWluYV9Cb29sIGV3a192aWV3X2JhY2soRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBFV0tf
VklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBX
ZWJQYWdlUHJveHkqIHBhZ2UgPSBpbXBsLT5wYWdlUHJveHkuZ2V0KCk7CisgICAgV2ViUGFnZVBy
b3h5KiBwYWdlID0gaW1wbC0+cGFnZSgpOwogICAgIGlmIChwYWdlLT5jYW5Hb0JhY2soKSkgewog
ICAgICAgICBwYWdlLT5nb0JhY2soKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04NDMsNyAr
NzM2LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmQoRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxz
ZSk7CiAKLSAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBpbXBsLT5wYWdlUHJveHkuZ2V0KCk7Cisg
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gaW1wbC0+cGFnZSgpOwogICAgIGlmIChwYWdlLT5jYW5H
b0ZvcndhcmQoKSkgewogICAgICAgICBwYWdlLT5nb0ZvcndhcmQoKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC04NTksNyArNzUyLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2ludGVudF9kZWxp
dmVyKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW50ZW50KiBpbnRlbnQpCiAgICAgRVdLX1ZJ
RVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpbnRlbnQsIGZhbHNlKTsKIAotICAgIFdlYlBhZ2VQ
cm94eSogcGFnZSA9IGltcGwtPnBhZ2VQcm94eS5nZXQoKTsKKyAgICBXZWJQYWdlUHJveHkqIHBh
Z2UgPSBpbXBsLT5wYWdlKCk7CiAgICAgcGFnZS0+ZGVsaXZlckludGVudFRvRnJhbWUocGFnZS0+
bWFpbkZyYW1lKCksIGludGVudC0+d2ViSW50ZW50RGF0YSgpKTsKIAogICAgIHJldHVybiB0cnVl
OwpAQCAtODczLDcgKzc2Niw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19iYWNrX3Bvc3NpYmxlKEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgcmV0dXJuIGltcGwtPnBhZ2VQcm94eS0+Y2Fu
R29CYWNrKCk7CisgICAgcmV0dXJuIGltcGwtPnBhZ2UoKS0+Y2FuR29CYWNrKCk7CiB9CiAKIEVp
bmFfQm9vbCBld2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQpA
QCAtODgxLDcgKzc3NCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgcmV0dXJuIGltcGwtPnBhZ2VQcm94eS0+Y2Fu
R29Gb3J3YXJkKCk7CisgICAgcmV0dXJuIGltcGwtPnBhZ2UoKS0+Y2FuR29Gb3J3YXJkKCk7CiB9
CiAKIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogZXdrX3ZpZXdfYmFja19mb3J3YXJkX2xpc3RfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQpAQCAtODg5LDcgKzc4Miw3IEBAIEV3a19CYWNr
X0ZvcndhcmRfTGlzdCogZXdrX3ZpZXdfYmFja19mb3J3YXJkX2xpc3RfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIDApOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IGltcGwsIDApOwogCi0gICAgcmV0dXJuIGltcGwtPmJhY2tGb3J3YXJkTGlzdC5nZXQoKTsKKyAg
ICByZXR1cm4gaW1wbC0+YmFja0ZvcndhcmRMaXN0KCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmll
d19odG1sX3N0cmluZ19sb2FkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBodG1s
LCBjb25zdCBjaGFyKiBiYXNlVXJsLCBjb25zdCBjaGFyKiB1bnJlYWNoYWJsZVVybCkKQEAgLTg5
OSw5ICs3OTIsOSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZChFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgY2hhciogaHRtbCwgY29ucwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChodG1sLCBmYWxzZSk7CiAKICAgICBpZiAodW5yZWFjaGFibGVVcmwg
JiYgKnVucmVhY2hhYmxlVXJsKQotICAgICAgICBpbXBsLT5wYWdlUHJveHktPmxvYWRBbHRlcm5h
dGVIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoaHRtbCksIGJhc2VVcmwgPyBTdHJpbmc6OmZy
b21VVEY4KGJhc2VVcmwpIDogIiIsIFN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVcmwpKTsK
KyAgICAgICAgaW1wbC0+cGFnZSgpLT5sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhTdHJpbmc6OmZy
b21VVEY4KGh0bWwpLCBiYXNlVXJsID8gU3RyaW5nOjpmcm9tVVRGOChiYXNlVXJsKSA6ICIiLCBT
dHJpbmc6OmZyb21VVEY4KHVucmVhY2hhYmxlVXJsKSk7CiAgICAgZWxzZQotICAgICAgICBpbXBs
LT5wYWdlUHJveHktPmxvYWRIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoaHRtbCksIGJhc2VV
cmwgPyBTdHJpbmc6OmZyb21VVEY4KGJhc2VVcmwpIDogIiIpOworICAgICAgICBpbXBsLT5wYWdl
KCktPmxvYWRIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoaHRtbCksIGJhc2VVcmwgPyBTdHJp
bmc6OmZyb21VVEY4KGJhc2VVcmwpIDogIiIpOwogCiAgICAgaW1wbC0+aW5mb3JtVVJMQ2hhbmdl
KCk7CiAKQEAgLTk0Miw3ICs4MzUsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0ZXh0LCBFd2tfRmluZF9PcAogICAgIEVX
S19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodGV4dCwgZmFsc2UpOwogCi0gICAgaW1wbC0+
cGFnZVByb3h5LT5maW5kU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgodGV4dCksIHN0YXRpY19jYXN0
PFdlYktpdDo6RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKKyAgICBpbXBs
LT5wYWdlKCktPmZpbmRTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSwgc3RhdGljX2Nhc3Q8
V2ViS2l0OjpGaW5kT3B0aW9ucz4ob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC05NTIsNyArODQ1LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3RleHRf
ZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBFV0tfVklF
V19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBpbXBs
LT5wYWdlUHJveHktPmhpZGVGaW5kVUkoKTsKKyAgICBpbXBsLT5wYWdlKCktPmhpZGVGaW5kVUko
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTYzLDcgKzg1Niw3IEBAIEVpbmFfQm9vbCBl
d2tfdmlld190ZXh0X21hdGNoZXNfY291bnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNo
YXIqIHRleHQsIEV3CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
aW1wbCwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0ZXh0LCBm
YWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPmNvdW50U3RyaW5nTWF0Y2hlcyhTdHJpbmc6
OmZyb21VVEY4KHRleHQpLCBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPihvcHRpb25z
KSwgbWF4TWF0Y2hDb3VudCk7CisgICAgaW1wbC0+cGFnZSgpLT5jb3VudFN0cmluZ01hdGNoZXMo
U3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSwgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4o
b3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05OTYs
NyArODg5LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV3a19Ub3VjaF9FdmVudF9UeXBlIHQKICAgICBFdmFzX1BvaW50IHBvc2l0
aW9uID0geyBzbWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3LnkgfTsKICAgICAvLyBG
SVhNRTogVG91Y2ggcG9pbnRzIGRvIG5vdCB0YWtlIHNjcm9sbCBwb3NpdGlvbiBhbmQgc2NhbGUg
aW50byBhY2NvdW50IHdoZW4gCiAgICAgLy8gVElMRURfQkFDS0lOR19TVE9SRSBpcyBlbmFibGVk
LgotICAgIGltcGwtPnBhZ2VQcm94eS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2
ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCAmcG9zaXRpb24sIGVjb3JlX3RpbWVfZ2V0KCkp
KTsKKyAgICBpbXBsLT5wYWdlKCktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVu
dCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgJnBvc2l0aW9uLCBlY29yZV90aW1lX2dldCgpKSk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCkBAIC0xMDM2LDcgKzkyOSw3IEBAIEVpbmFfQm9v
bCBld2tfdmlld19pbnNwZWN0b3Jfc2hvdyhFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVX
S19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAg
IFdlYkluc3BlY3RvclByb3h5KiBpbnNwZWN0b3IgPSBpbXBsLT5wYWdlUHJveHktPmluc3BlY3Rv
cigpOworICAgIFdlYkluc3BlY3RvclByb3h5KiBpbnNwZWN0b3IgPSBpbXBsLT5wYWdlKCktPmlu
c3BlY3RvcigpOwogICAgIGlmIChpbnNwZWN0b3IpCiAgICAgICAgIGluc3BlY3Rvci0+c2hvdygp
OwogCkBAIC0xMDUyLDcgKzk0NSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19pbnNwZWN0b3JfY2xv
c2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5z
cGVjdG9yID0gaW1wbC0+cGFnZVByb3h5LT5pbnNwZWN0b3IoKTsKKyAgICBXZWJJbnNwZWN0b3JQ
cm94eSogaW5zcGVjdG9yID0gaW1wbC0+cGFnZSgpLT5pbnNwZWN0b3IoKTsKICAgICBpZiAoaW5z
cGVjdG9yKQogICAgICAgICBpbnNwZWN0b3ItPmNsb3NlKCk7CiAKQEAgLTEwNzQsNyArOTY3LDcg
QEAgRWluYV9Cb29sIGV3a192aWV3X3BhZ2luYXRpb25fbW9kZV9zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIEV3a19QYWdpbmF0aW9uX01vZGUKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKICAgICAKLSAgICBpbXBsLT5wYWdlUHJveHkt
PnNldFBhZ2luYXRpb25Nb2RlKHN0YXRpY19jYXN0PFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGU+
KG1vZGUpKTsKKyAgICBpbXBsLT5wYWdlKCktPnNldFBhZ2luYXRpb25Nb2RlKHN0YXRpY19jYXN0
PFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGU+KG1vZGUpKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMTA4NCw1ICs5NzcsNSBAQCBFd2tfUGFnaW5hdGlvbl9Nb2RlIGV3a192aWV3X3BhZ2lu
YXRpb25fbW9kZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVXS19QQUdJTkFUSU9OX01PREVf
SU5WQUxJRCk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1w
bCwgRVdLX1BBR0lOQVRJT05fTU9ERV9JTlZBTElEKTsKIAotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFd2tfUGFnaW5hdGlvbl9Nb2RlPihpbXBsLT5wYWdlUHJveHktPnBhZ2luYXRpb25Nb2RlKCkp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFd2tfUGFnaW5hdGlvbl9Nb2RlPihpbXBsLT5wYWdl
KCktPnBhZ2luYXRpb25Nb2RlKCkpOwogfQo=
</data>
<flag name="review"
          id="184651"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170904</attachid>
            <date>2012-10-26 05:40:11 -0700</date>
            <delta_ts>2012-10-26 14:11:26 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>bug100232_v3</filename>
            <type>text/plain</type>
            <size>40069</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDNmM2RjY2VhNWRiZDU2NTE3ZTgxMTJmMTA1NjU1MWM0NmEzZjBkOTUKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIE9jdCAyNiAxMjo0ODo0MSAyMDEyICswMzAwCgogICAgYnVnMTAwMjMyCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDgwY2Y2MzQuLjI0NWQ2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NSBAQAorMjAxMi0x
MC0yNiAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIENsZWFuIHVwIGNvbnN0cnVjdGlvbi9kZXN0cnVjdGlvbiBj
b2RlIGluIEV3a192aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDAyMzIKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KKworICAgICAgICBTaW1wbGlmaWVkIGEgbG90IG9mIGluaXRpYWxpemF0aW9uIGFu
ZCBkZXN0cnVjdGlvbiBjb2RlIG9mIEV3a192aWV3IGFuZCBFd2tWaWV3SW1wbAorICAgICAgICBw
dXQgYWxsIHRoZSBpbXBsIHN0dWZmIHRvIGl0cyBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3Rvciwg
YWxzbyBtYWRlIEV3a1ZpZXdJbXBsIG1lbWJlcgorICAgICAgICB2YXJpYWJsZXMgcHJpdmF0ZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAgICAg
KHBhZ2VWaWV3TWFwKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjphZGRUb1BhZ2VWaWV3TWFwKToK
KyAgICAgICAgKEV3a1ZpZXdJbXBsOjpyZW1vdmVGcm9tUGFnZVZpZXdNYXApOgorICAgICAgICAo
RXdrVmlld0ltcGw6OnZpZXdGcm9tUGFnZVZpZXdNYXApOgorICAgICAgICAoRXdrVmlld0ltcGw6
OkV3a1ZpZXdJbXBsKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjp+RXdrVmlld0ltcGwpOgorICAg
ICAgICAoRXdrVmlld0ltcGw6OndrUGFnZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6dGl0bGUp
OgorICAgICAgICAoRXdrVmlld0ltcGw6OnNldFRoZW1lUGF0aCk6CisgICAgICAgIChFd2tWaWV3
SW1wbDo6Y3VzdG9tVGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0
Q3VzdG9tVGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtSWNv
bkNoYW5nZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtV2ViUHJvY2Vzc0NyYXNoZWQp
OgorICAgICAgICAoRXdrVmlld0ltcGw6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToKKyAgICAgICAg
KEV3a1ZpZXdJbXBsOjppbmZvcm1VUkxDaGFuZ2UpOgorICAgICAgICAoRXdrVmlld0ltcGw6Om9u
RmF2aWNvbkNoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBs
Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAo
RXdrVmlld0ltcGw6OnZpZXcpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnBhZ2UpOgorICAgICAg
ICAoRXdrVmlld0ltcGw6OmV3a0NvbnRleHQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmJhY2tG
b3J3YXJkTGlzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNw
cDoKKyAgICAgICAgKEV3a19TZXR0aW5nczo6cHJlZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1
c19pbik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KToKKyAgICAgICAgKF9l
d2tfdmlld19zbWFydF9tb3VzZV93aGVlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91
c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXApOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X21vdXNlX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tl
eV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9rZXlfdXApOgorICAgICAgICAoX2V3
a192aWV3X29uX3Nob3cpOgorICAgICAgICAoX2V3a192aWV3X29uX2hpZGUpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZGVsKToKKyAg
ICAgICAgKF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X2NvbG9yX3NldCk6CisgICAgICAgIChjcmVhdGVFd2tWaWV3U21hcnRDbGFzcyk6CisgICAg
ICAgIChjcmVhdGVFd2tWaWV3KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAg
ICAgKGV3a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChld2tfdmlld19hZGRfd2l0aF9jb250
ZXh0KToKKyAgICAgICAgKGV3a192aWV3X3VybF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVs
b2FkKToKKyAgICAgICAgKGV3a192aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUpOgorICAgICAgICAo
ZXdrX3ZpZXdfc3RvcCk6CisgICAgICAgIChld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldCk6Cisg
ICAgICAgIChld2tfdmlld19zY2FsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfZ2V0
KToKKyAgICAgICAgKGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19zZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldCk6CisgICAgICAgIChld2tfdmlld19iYWNr
KToKKyAgICAgICAgKGV3a192aWV3X2ZvcndhcmQpOgorICAgICAgICAoZXdrX3ZpZXdfaW50ZW50
X2RlbGl2ZXIpOgorICAgICAgICAoZXdrX3ZpZXdfYmFja19wb3NzaWJsZSk6CisgICAgICAgIChl
d2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKToKKyAgICAgICAgKGV3a192aWV3X2JhY2tfZm9yd2Fy
ZF9saXN0X2dldCk6CisgICAgICAgIChld2tfdmlld19odG1sX3N0cmluZ19sb2FkKToKKyAgICAg
ICAgKGV3a192aWV3X3RleHRfZmluZCk6CisgICAgICAgIChld2tfdmlld190ZXh0X2ZpbmRfaGln
aGxpZ2h0X2NsZWFyKToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19jb3VudCk6Cisg
ICAgICAgIChld2tfdmlld19mZWVkX3RvdWNoX2V2ZW50KToKKyAgICAgICAgKGV3a192aWV3X2lu
c3BlY3Rvcl9zaG93KToKKyAgICAgICAgKGV3a192aWV3X2luc3BlY3Rvcl9jbG9zZSk6CisgICAg
ICAgIChld2tfdmlld19wYWdpbmF0aW9uX21vZGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Bh
Z2luYXRpb25fbW9kZV9nZXQpOgorCiAyMDEyLTEwLTI2ICBSZWdpbmEgQ2h1bmcgIDxoZWVqaW4u
ci5jaHVuZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEVuYWJsZSBXZWJHTApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmlu
ZGV4IDY2M2I0MGUuLjI0YWY2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTMzLDggKzMzLDExIEBACiAjaW5jbHVkZSAiUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZENs
aWVudEVmbC5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5o
IgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgog
I2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5j
ZXMuaCIKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a19jb2xvcl9waWNrZXJfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3By
aXZhdGUuaCIKQEAgLTQ5LDQ0ICs1Miw2MyBAQAogI2luY2x1ZGUgPEVkamUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0N1cnNvci5oPgogCisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisjaW5j
bHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIGNvbnN0IGlu
dCBkZWZhdWx0Q3Vyc29yU2l6ZSA9IDE2OwogCi1Fd2tWaWV3SW1wbDo6UGFnZVZpZXdNYXAgRXdr
Vmlld0ltcGw6OnBhZ2VWaWV3TWFwOwordHlwZWRlZiBIYXNoTWFwPFdLUGFnZVJlZiwgRXZhc19P
YmplY3QqPiBQYWdlVmlld01hcDsKIAotdm9pZCBFd2tWaWV3SW1wbDo6YWRkVG9QYWdlVmlld01h
cChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3N0YXRpYyBpbmxpbmUgUGFnZVZpZXdNYXAm
IHBhZ2VWaWV3TWFwKCkKIHsKLSAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSBFd2tWaWV3SW1w
bDo6ZnJvbUV2YXNPYmplY3QoZXdrVmlldyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChQYWdl
Vmlld01hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KIAotICAgIFBhZ2VWaWV3TWFw
OjpBZGRSZXN1bHQgcmVzdWx0ID0gcGFnZVZpZXdNYXAuYWRkKHZpZXdJbXBsLT53a1BhZ2UoKSwg
ZXdrVmlldyk7Cit2b2lkIEV3a1ZpZXdJbXBsOjphZGRUb1BhZ2VWaWV3TWFwKEV3a1ZpZXdJbXBs
KiB2aWV3SW1wbCkKK3sKKyAgICBQYWdlVmlld01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHBhZ2VW
aWV3TWFwKCkuYWRkKHZpZXdJbXBsLT53a1BhZ2UoKSwgdmlld0ltcGwtPnZpZXcoKSk7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBFd2tW
aWV3SW1wbDo6cmVtb3ZlRnJvbVBhZ2VWaWV3TWFwKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3
KQordm9pZCBFd2tWaWV3SW1wbDo6cmVtb3ZlRnJvbVBhZ2VWaWV3TWFwKEV3a1ZpZXdJbXBsKiB2
aWV3SW1wbCkKIHsKLSAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSBFd2tWaWV3SW1wbDo6ZnJv
bUV2YXNPYmplY3QoZXdrVmlldyk7Ci0KLSAgICBBU1NFUlQocGFnZVZpZXdNYXAuY29udGFpbnMo
dmlld0ltcGwtPndrUGFnZSgpKSk7Ci0gICAgcGFnZVZpZXdNYXAucmVtb3ZlKHZpZXdJbXBsLT53
a1BhZ2UoKSk7CisgICAgQVNTRVJUKHBhZ2VWaWV3TWFwKCkuY29udGFpbnModmlld0ltcGwtPndr
UGFnZSgpKSk7CisgICAgcGFnZVZpZXdNYXAoKS5yZW1vdmUodmlld0ltcGwtPndrUGFnZSgpKTsK
IH0KIAogY29uc3QgRXZhc19PYmplY3QqIEV3a1ZpZXdJbXBsOjp2aWV3RnJvbVBhZ2VWaWV3TWFw
KGNvbnN0IFdLUGFnZVJlZiBwYWdlKQogewogICAgIEFTU0VSVChwYWdlKTsKIAotICAgIHJldHVy
biBwYWdlVmlld01hcC5nZXQocGFnZSk7CisgICAgcmV0dXJuIHBhZ2VWaWV3TWFwKCkuZ2V0KHBh
Z2UpOwogfQogCi1Fd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcpCi0j
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIDogZXZhc0dsKDApCi0gICAgLCBl
dmFzR2xDb250ZXh0KDApCi0gICAgLCBldmFzR2xTdXJmYWNlKDApCi0gICAgLCBtX3ZpZXcodmll
dykKLSNlbHNlCitFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBh
c3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8V2ViUGFnZUdyb3VwPiBw
YWdlR3JvdXApCiAgICAgOiBtX3ZpZXcodmlldykKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQor
ICAgICwgbV9wYWdlQ2xpZW50KFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodGhpcykpCisgICAgLCBt
X3BhZ2VQcm94eSh0b0ltcGwobV9jb250ZXh0LT53a0NvbnRleHQoKSktPmNyZWF0ZVdlYlBhZ2Uo
bV9wYWdlQ2xpZW50LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpKQorICAgICwgbV9wYWdlTG9hZENs
aWVudChQYWdlTG9hZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9wYWdlUG9saWN5
Q2xpZW50KFBhZ2VQb2xpY3lDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcGFnZVVJ
Q2xpZW50KFBhZ2VVSUNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9yZXNvdXJjZUxv
YWRDbGllbnQoUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2Zp
bmRDbGllbnQoRmluZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9mb3JtQ2xpZW50
KEZvcm1DbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fYmFja0ZvcndhcmRMaXN0KEV3
a19CYWNrX0ZvcndhcmRfTGlzdDo6Y3JlYXRlKHRvQVBJKG1fcGFnZVByb3h5LT5iYWNrRm9yd2Fy
ZExpc3QoKSkpKQorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgICwgbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50KFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmNy
ZWF0ZSh0aGlzKSkKKyAgICAsIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcihhZG9wdFB0cihuZXcg
UGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VQcm94eS5nZXQoKSwgbV9wYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50LmdldCgpKSkpCisjZW5kaWYKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCisgICAgLCBtX2V2YXNHbCgwKQorICAgICwgbV9ldmFzR2xDb250ZXh0KDApCisg
ICAgLCBtX2V2YXNHbFN1cmZhY2UoMCkKICNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhFd2tfU2V0
dGluZ3M6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fbW91c2VFdmVudHNFbmFibGVkKGZhbHNlKQpA
QCAtOTYsMTQgKzExOCw0OCBAQCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3Qq
IHZpZXcpCiAgICAgLCBtX2Rpc3BsYXlUaW1lcih0aGlzLCAmRXdrVmlld0ltcGw6OmRpc3BsYXlU
aW1lckZpcmVkKQogICAgICwgbV9pbnB1dE1ldGhvZENvbnRleHQoSW5wdXRNZXRob2RDb250ZXh0
RWZsOjpjcmVhdGUodGhpcywgc21hcnREYXRhKCktPmJhc2UuZXZhcykpCiB7Ci0gICAgQVNTRVJU
KHZpZXcpOworICAgIEFTU0VSVChtX3ZpZXcpOworICAgIEFTU0VSVChtX2NvbnRleHQpOworICAg
IEFTU0VSVChtX3BhZ2VQcm94eSk7CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisg
ICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRW5hYmxlZCh0cnVlKTsKKyAgICBtX3BhZ2VQcm94eS0+cGFnZUdyb3VwKCkt
PnByZWZlcmVuY2VzKCktPnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOworICAgIG1fcGFn
ZVByb3h5LT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKKyNlbmRpZgorCisgICAgbV9wYWdlUHJv
eHktPmluaXRpYWxpemVXZWJQYWdlKCk7CisKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkK
KyAgICBwYWdlQ2xpZW50LT5zZXRQYWdlVmlld3BvcnRDb250cm9sbGVyKHBhZ2VWaWV3cG9ydENv
bnRyb2xsZXIuZ2V0KCkpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisg
ICAgbV9wYWdlUHJveHktPmZ1bGxTY3JlZW5NYW5hZ2VyKCktPnNldFdlYlZpZXcobV92aWV3KTsK
KyAgICBtX3BhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEZ1bGxTY3Jl
ZW5FbmFibGVkKHRydWUpOworI2VuZGlmCiAKICAgICAvLyBFbmFibGUgbW91c2UgZXZlbnRzIGJ5
IGRlZmF1bHQKICAgICBzZXRNb3VzZUV2ZW50c0VuYWJsZWQodHJ1ZSk7CisKKyAgICAvLyBMaXN0
ZW4gZm9yIGZhdmljb24gY2hhbmdlcy4KKyAgICBFd2tfRmF2aWNvbl9EYXRhYmFzZSogaWNvbkRh
dGFiYXNlID0gbV9jb250ZXh0LT5mYXZpY29uRGF0YWJhc2UoKTsKKyAgICBBU1NFUlQoaWNvbkRh
dGFiYXNlKTsKKworICAgIGljb25EYXRhYmFzZS0+d2F0Y2hDaGFuZ2VzKEljb25DaGFuZ2VDYWxs
YmFja0RhdGEoRXdrVmlld0ltcGw6Om9uRmF2aWNvbkNoYW5nZWQsIHRoaXMpKTsKKworICAgIEV3
a1ZpZXdJbXBsOjphZGRUb1BhZ2VWaWV3TWFwKHRoaXMpOwogfQogCiBFd2tWaWV3SW1wbDo6fkV3
a1ZpZXdJbXBsKCkKIHsKKyAgICAvLyBVbnJlZ2lzdGVyIGljb24gY2hhbmdlIGNhbGxiYWNrLgor
ICAgIEV3a19GYXZpY29uX0RhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSBtX2NvbnRleHQtPmZhdmlj
b25EYXRhYmFzZSgpOworICAgIEFTU0VSVChpY29uRGF0YWJhc2UpOworCisgICAgaWNvbkRhdGFi
YXNlLT51bndhdGNoQ2hhbmdlcyhFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZCk7CisKKyAg
ICBFd2tWaWV3SW1wbDo6cmVtb3ZlRnJvbVBhZ2VWaWV3TWFwKHRoaXMpOwogfQogCiBFd2tfVmll
d19TbWFydF9EYXRhKiBFd2tWaWV3SW1wbDo6c21hcnREYXRhKCkKQEAgLTEyNiw3ICsxODIsNyBA
QCBFd2tWaWV3SW1wbCogRXdrVmlld0ltcGw6OmZyb21FdmFzT2JqZWN0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiB2aWV3KQogICovCiBXS1BhZ2VSZWYgRXdrVmlld0ltcGw6OndrUGFnZSgpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKHBhZ2VQcm94eS5nZXQoKSk7CisgICAgcmV0dXJuIHRvQVBJKG1fcGFnZVBy
b3h5LmdldCgpKTsKIH0KIAogdm9pZCBFd2tWaWV3SW1wbDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNv
ciYgY3Vyc29yKQpAQCAtNTIyLDcgKzU3OCw3IEBAIGJvb2wgRXdrVmlld0ltcGw6OmlzVmlzaWJs
ZSgpIGNvbnN0CiAKIGNvbnN0IGNoYXIqIEV3a1ZpZXdJbXBsOjp0aXRsZSgpIGNvbnN0CiB7Ci0g
ICAgbV90aXRsZSA9IHBhZ2VQcm94eS0+cGFnZVRpdGxlKCkudXRmOCgpLmRhdGEoKTsKKyAgICBt
X3RpdGxlID0gbV9wYWdlUHJveHktPnBhZ2VUaXRsZSgpLnV0ZjgoKS5kYXRhKCk7CiAKICAgICBy
ZXR1cm4gbV90aXRsZTsKIH0KQEAgLTU0NSwxMyArNjAxLDEzIEBAIHZvaWQgRXdrVmlld0ltcGw6
OnNldFRoZW1lUGF0aChjb25zdCBjaGFyKiB0aGVtZSkKIHsKICAgICBpZiAobV90aGVtZSAhPSB0
aGVtZSkgewogICAgICAgICBtX3RoZW1lID0gdGhlbWU7Ci0gICAgICAgIHBhZ2VQcm94eS0+c2V0
VGhlbWVQYXRoKHRoZW1lKTsKKyAgICAgICAgbV9wYWdlUHJveHktPnNldFRoZW1lUGF0aCh0aGVt
ZSk7CiAgICAgfQogfQogCiBjb25zdCBjaGFyKiBFd2tWaWV3SW1wbDo6Y3VzdG9tVGV4dEVuY29k
aW5nTmFtZSgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIGN1c3RvbUVuY29kaW5nID0gcGFnZVByb3h5
LT5jdXN0b21UZXh0RW5jb2RpbmdOYW1lKCk7CisgICAgU3RyaW5nIGN1c3RvbUVuY29kaW5nID0g
bV9wYWdlUHJveHktPmN1c3RvbVRleHRFbmNvZGluZ05hbWUoKTsKICAgICBpZiAoY3VzdG9tRW5j
b2RpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtNTYzLDcgKzYxOSw3IEBA
IGNvbnN0IGNoYXIqIEV3a1ZpZXdJbXBsOjpjdXN0b21UZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QK
IHZvaWQgRXdrVmlld0ltcGw6OnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgY2hhciog
ZW5jb2RpbmcpCiB7CiAgICAgbV9jdXN0b21FbmNvZGluZyA9IGVuY29kaW5nOwotICAgIHBhZ2VQ
cm94eS0+c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShlbmNvZGluZyA/IGVuY29kaW5nIDogU3Ry
aW5nKCkpOworICAgIG1fcGFnZVByb3h5LT5zZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29k
aW5nID8gZW5jb2RpbmcgOiBTdHJpbmcoKSk7CiB9CiAKIHZvaWQgRXdrVmlld0ltcGw6OnNldE1v
dXNlRXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC02MjYsNyArNjgyLDcgQEAgdm9pZCBF
d2tWaWV3SW1wbDo6c2V0VG91Y2hFdmVudHNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAqLwogdm9p
ZCBFd2tWaWV3SW1wbDo6aW5mb3JtSWNvbkNoYW5nZSgpCiB7Ci0gICAgRXdrX0Zhdmljb25fRGF0
YWJhc2UqIGljb25EYXRhYmFzZSA9IGNvbnRleHQtPmZhdmljb25EYXRhYmFzZSgpOworICAgIEV3
a19GYXZpY29uX0RhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSBtX2NvbnRleHQtPmZhdmljb25EYXRh
YmFzZSgpOwogICAgIEFTU0VSVChpY29uRGF0YWJhc2UpOwogCiAgICAgbV9mYXZpY29uVVJMID0g
ZXdrX2Zhdmljb25fZGF0YWJhc2VfaWNvbl91cmxfZ2V0KGljb25EYXRhYmFzZSwgbV91cmwpOwpA
QCAtODAwLDcgKzg1Niw3IEBAIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVdlYlByb2Nlc3NDcmFz
aGVkKCkKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgIndlYnBy
b2Nlc3MsY3Jhc2hlZCIsICZoYW5kbGVkKTsKIAogICAgIGlmICghaGFuZGxlZCkgewotICAgICAg
ICBDU3RyaW5nIHVybCA9IHBhZ2VQcm94eS0+dXJsQXRQcm9jZXNzRXhpdCgpLnV0ZjgoKTsKKyAg
ICAgICAgQ1N0cmluZyB1cmwgPSBtX3BhZ2VQcm94eS0+dXJsQXRQcm9jZXNzRXhpdCgpLnV0Zjgo
KTsKICAgICAgICAgV0FSTigiV0FSTklORzogVGhlIHdlYiBwcm9jZXNzIGV4cGVyaWVuY2VkIGEg
Y3Jhc2ggb24gJyVzJy5cbiIsIHVybC5kYXRhKCkpOwogCiAgICAgICAgIC8vIERpc3BsYXkgYW4g
ZXJyb3IgcGFnZQpAQCAtOTIzLDcgKzk3OSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBFd2tWaWV3
SW1wbDo6aW5mb3JtRGF0YWJhc2VRdW90YVJlYWNoZWQoY29uc3QgU3RyaW5nJiBkYXRhYmFzCiAg
Ki8KIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVVSTENoYW5nZSgpCiB7Ci0gICAgU3RyaW5nIGFj
dGl2ZVVSTCA9IHBhZ2VQcm94eS0+YWN0aXZlVVJMKCk7CisgICAgU3RyaW5nIGFjdGl2ZVVSTCA9
IG1fcGFnZVByb3h5LT5hY3RpdmVVUkwoKTsKICAgICBpZiAoYWN0aXZlVVJMLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDI4LDMgKzEwODQsMTMgQEAgdm9pZCBFd2tWaWV3SW1w
bDo6b25Ub3VjaE1vdmUodm9pZCogLyogZGF0YSAqLywgRXZhcyogLyogY2FudmFzICovLCBFdmFz
X09iamVjdCoKICAgICB2aWV3SW1wbC0+ZmVlZFRvdWNoRXZlbnRzKEVXS19UT1VDSF9NT1ZFKTsK
IH0KICNlbmRpZgorCit2b2lkIEV3a1ZpZXdJbXBsOjpvbkZhdmljb25DaGFuZ2VkKGNvbnN0IGNo
YXIqIHBhZ2VVUkwsIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFd2tWaWV3SW1wbCogdmlld0lt
cGwgPSBzdGF0aWNfY2FzdDxFd2tWaWV3SW1wbCo+KGV2ZW50SW5mbyk7CisKKyAgICBpZiAoIXZp
ZXdJbXBsLT51cmwoKSB8fCBzdHJjYXNlY21wKHZpZXdJbXBsLT51cmwoKSwgcGFnZVVSTCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHZpZXdJbXBsLT5pbmZvcm1JY29uQ2hhbmdlKCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCBl
YzQzMTEwLi43MDUzMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdJbXBsLmgKQEAgLTY5LDYgKzY5LDcgQEAgY2xhc3MgUGFnZVVJQ2xpZW50RWZsOwog
Y2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDsKIGNsYXNzIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI7CiBjbGFzcyBSZXNvdXJjZUxvYWRDbGllbnRFZmw7CitjbGFzcyBXZWJQYWdl
R3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQb3B1cEl0ZW07CiBjbGFzcyBX
ZWJQb3B1cE1lbnVQcm94eUVmbDsKQEAgLTEwMCwxNiArMTAxLDE3IEBAIHR5cGVkZWYgc3RydWN0
IEV3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsKIAogY2xhc3MgRXdrVmll
d0ltcGwgewogcHVibGljOgotICAgIGV4cGxpY2l0IEV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2
aWV3KTsKKyAgICBFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tf
Q29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBhZ2VHcm91cD4gcGFnZUdy
b3VwKTsKICAgICB+RXdrVmlld0ltcGwoKTsKIAogICAgIHN0YXRpYyBFd2tWaWV3SW1wbCogZnJv
bUV2YXNPYmplY3QoY29uc3QgRXZhc19PYmplY3QqIHZpZXcpOwogCi0gICAgaW5saW5lIEV2YXNf
T2JqZWN0KiB2aWV3KCkgeyByZXR1cm4gbV92aWV3OyB9CisgICAgRXZhc19PYmplY3QqIHZpZXco
KSB7IHJldHVybiBtX3ZpZXc7IH0KICAgICBXS1BhZ2VSZWYgd2tQYWdlKCk7Ci0gICAgaW5saW5l
IFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKCkgeyByZXR1cm4gcGFnZVByb3h5LmdldCgpOyB9
Ci0gICAgRXdrX0NvbnRleHQqIGV3a0NvbnRleHQoKSB7IHJldHVybiBjb250ZXh0LmdldCgpOyB9
CisgICAgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2VQcm94eS5n
ZXQoKTsgfQorICAgIEV3a19Db250ZXh0KiBld2tDb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0
LmdldCgpOyB9CiAgICAgRXdrX1NldHRpbmdzKiBzZXR0aW5ncygpIHsgcmV0dXJuIG1fc2V0dGlu
Z3MuZ2V0KCk7IH0KKyAgICBFd2tfQmFja19Gb3J3YXJkX0xpc3QqIGJhY2tGb3J3YXJkTGlzdCgp
IHsgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0LmdldCgpOyB9CiAKICAgICBXZWJDb3JlOjpJbnRT
aXplIHNpemUoKSBjb25zdDsKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0OwpAQCAtMTM2LDgg
KzEzOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZHJhd1JlZ2lvbihjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiByZWN0KTsKICAgICB2b2lkIHNldEltYWdlRGF0YSh2b2lkKiBpbWFnZURhdGEsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOwogCi0gICAgc3RhdGljIHZvaWQgYWRkVG9QYWdl
Vmlld01hcChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7Ci0gICAgc3RhdGljIHZvaWQgcmVt
b3ZlRnJvbVBhZ2VWaWV3TWFwKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKyAgICBzdGF0
aWMgdm9pZCBhZGRUb1BhZ2VWaWV3TWFwKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCk7CisgICAgc3Rh
dGljIHZvaWQgcmVtb3ZlRnJvbVBhZ2VWaWV3TWFwKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCk7CiAg
ICAgc3RhdGljIGNvbnN0IEV2YXNfT2JqZWN0KiB2aWV3RnJvbVBhZ2VWaWV3TWFwKGNvbnN0IFdL
UGFnZVJlZik7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC0yMTAsMjkgKzIxMiw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGluZm9ybUludGVudFNlcnZpY2VSZWdpc3RyYXRpb24oRXdr
X0ludGVudF9TZXJ2aWNlKiBld2tJbnRlbnRTZXJ2aWNlKTsKICNlbmRpZgogCi0gICAgLy8gRklY
TUU6IE1ha2UgbWVtYmVycyBwcml2YXRlIGZvciBlbmNhcHN1bGF0aW9uLgotICAgIE93blB0cjxX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OwotI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQotICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
Zmw+IHBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQ7Ci0gICAgT3duUHRyPFdlYktpdDo6UGFn
ZVZpZXdwb3J0Q29udHJvbGxlcj4gcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKLSNlbmRpZgotICAg
IFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gcGFnZVByb3h5OwotICAgIE93blB0cjxXZWJL
aXQ6OlBhZ2VMb2FkQ2xpZW50RWZsPiBwYWdlTG9hZENsaWVudDsKLSAgICBPd25QdHI8V2ViS2l0
OjpQYWdlUG9saWN5Q2xpZW50RWZsPiBwYWdlUG9saWN5Q2xpZW50OwotICAgIE93blB0cjxXZWJL
aXQ6OlBhZ2VVSUNsaWVudEVmbD4gcGFnZVVJQ2xpZW50OwotICAgIE93blB0cjxXZWJLaXQ6OlJl
c291cmNlTG9hZENsaWVudEVmbD4gcmVzb3VyY2VMb2FkQ2xpZW50OwotICAgIE93blB0cjxXZWJL
aXQ6OkZpbmRDbGllbnRFZmw+IGZpbmRDbGllbnQ7Ci0gICAgT3duUHRyPFdlYktpdDo6Rm9ybUNs
aWVudEVmbD4gZm9ybUNsaWVudDsKLQotICAgIE93blB0cjxFd2tfQmFja19Gb3J3YXJkX0xpc3Q+
IGJhY2tGb3J3YXJkTGlzdDsKLSAgICBSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQ7Ci0KLSNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgRXZhc19HTCogZXZhc0dsOwotICAg
IEV2YXNfR0xfQ29udGV4dCogZXZhc0dsQ29udGV4dDsKLSAgICBFdmFzX0dMX1N1cmZhY2UqIGV2
YXNHbFN1cmZhY2U7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICBpbmxpbmUgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhKCk7CiAgICAgdm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJDb3Jl
OjpUaW1lcjxFd2tWaWV3SW1wbD4qKTsKQEAgLTI0Niw4ICsyMjUsMjkgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBvblRvdWNoVXAodm9pZCogLyogZGF0YSAqLywgRXZhcyogLyogY2FudmFz
ICovLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJbmZvICovKTsKICAgICBz
dGF0aWMgdm9pZCBvblRvdWNoTW92ZSh2b2lkKiAvKiBkYXRhICovLCBFdmFzKiAvKiBjYW52YXMg
Ki8sIEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiAvKiBldmVudEluZm8gKi8pOwogI2VuZGlm
CisgICAgc3RhdGljIHZvaWQgb25GYXZpY29uQ2hhbmdlZChjb25zdCBjaGFyKiBwYWdlVVJMLCB2
b2lkKiBldmVudEluZm8pOwogCisgICAgLy8gTm90ZSwgaW5pdGlhbGl6YXRpb24gbWF0dGVycy4K
ICAgICBFdmFzX09iamVjdCogbV92aWV3OworICAgIFJlZlB0cjxFd2tfQ29udGV4dD4gbV9jb250
ZXh0OworICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPiBtX3BhZ2VDbGllbnQ7Cisg
ICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2VQcm94eTsKKyAgICBPd25QdHI8
V2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbD4gbV9wYWdlTG9hZENsaWVudDsKKyAgICBPd25QdHI8
V2ViS2l0OjpQYWdlUG9saWN5Q2xpZW50RWZsPiBtX3BhZ2VQb2xpY3lDbGllbnQ7CisgICAgT3du
UHRyPFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsPiBtX3BhZ2VVSUNsaWVudDsKKyAgICBPd25QdHI8
V2ViS2l0OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw+IG1fcmVzb3VyY2VMb2FkQ2xpZW50OworICAg
IE93blB0cjxXZWJLaXQ6OkZpbmRDbGllbnRFZmw+IG1fZmluZENsaWVudDsKKyAgICBPd25QdHI8
V2ViS2l0OjpGb3JtQ2xpZW50RWZsPiBtX2Zvcm1DbGllbnQ7CisgICAgT3duUHRyPEV3a19CYWNr
X0ZvcndhcmRfTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCisgICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bD4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OworICAgIE93blB0cjxXZWJLaXQ6OlBh
Z2VWaWV3cG9ydENvbnRyb2xsZXI+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKKyNlbmRpZgor
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBFdmFzX0dMKiBtX2V2YXNHbDsK
KyAgICBFdmFzX0dMX0NvbnRleHQqIG1fZXZhc0dsQ29udGV4dDsKKyAgICBFdmFzX0dMX1N1cmZh
Y2UqIG1fZXZhc0dsU3VyZmFjZTsKKyNlbmRpZgogICAgIE93blB0cjxFd2tfU2V0dGluZ3M+IG1f
c2V0dGluZ3M7CiAgICAgUmVmUHRyPEV2YXNfT2JqZWN0PiBtX2N1cnNvck9iamVjdDsKICAgICBX
S0VpbmFTaGFyZWRTdHJpbmcgbV9jdXJzb3JHcm91cDsKQEAgLTI2NSw5ICsyNjUsNiBAQCBwcml2
YXRlOgogICAgIE93blB0cjxFd2tfUG9wdXBfTWVudT4gbV9wb3B1cE1lbnU7CiAgICAgT3duUHRy
PFdlYktpdDo6SW5wdXRNZXRob2RDb250ZXh0RWZsPiBtX2lucHV0TWV0aG9kQ29udGV4dDsKICAg
ICBPd25QdHI8RXdrX0NvbG9yX1BpY2tlcj4gbV9jb2xvclBpY2tlcjsKLQotICAgIHR5cGVkZWYg
SGFzaE1hcDxXS1BhZ2VSZWYsIGNvbnN0IEV2YXNfT2JqZWN0Kj4gUGFnZVZpZXdNYXA7Ci0gICAg
c3RhdGljIFBhZ2VWaWV3TWFwIHBhZ2VWaWV3TWFwOwogfTsKIAogI2VuZGlmIC8vIEV3a1ZpZXdJ
bXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19z
ZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGlu
Z3MuY3BwCmluZGV4IDRiOWVjMjcuLjQ3OGUzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXMqIEV3
a19TZXR0aW5nczo6cHJlZmVyZW5jZXMoKSBjb25zdAogewotICAgIHJldHVybiBtX3ZpZXdJbXBs
LT5wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpOworICAgIHJldHVybiBtX3Zp
ZXdJbXBsLT5wYWdlKCktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpOwogfQogCiBXZWJLaXQ6
OldlYlByZWZlcmVuY2VzKiBFd2tfU2V0dGluZ3M6OnByZWZlcmVuY2VzKCkKIHsKLSAgICByZXR1
cm4gbV92aWV3SW1wbC0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKTsKKyAg
ICByZXR1cm4gbV92aWV3SW1wbC0+cGFnZSgpLT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKTsK
IH0KIAogI2lmIEVOQUJMRShTUEVMTENIRUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDk2MzUyMGMuLmU1ZjhlZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTUzLDEwICs1Myw2
IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSNpbmNsdWRlICJXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNlbmRpZgpAQCAtMTI5LDI1ICsxMjUs
MTIgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhKQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NoYW5nZWQoc21hcnREYXRh
LT5zZWxmKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2Zhdmljb25fY2hhbmdlZChj
b25zdCBjaGFyKiBwYWdlVVJMLCB2b2lkKiBldmVudEluZm8pCi17Ci0gICAgRXZhc19PYmplY3Qq
IGV3a1ZpZXcgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGV2ZW50SW5mbyk7Ci0gICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVX
X0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwpOwotCi0gICAgY29uc3QgY2hhciog
dmlld1VSTCA9IGV3a192aWV3X3VybF9nZXQoZXdrVmlldyk7Ci0gICAgaWYgKCF2aWV3VVJMIHx8
IHN0cmNhc2VjbXAodmlld1VSTCwgcGFnZVVSTCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlt
cGwtPmluZm9ybUljb25DaGFuZ2UoKTsKLX0KLQogLy8gRGVmYXVsdCBFdmVudCBIYW5kbGluZy4K
IHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNtYXJ0RGF0YSkKIHsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPnZpZXdTdGF0ZURp
ZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQgfCBXZWJQYWdlUHJveHk6OlZpZXdX
aW5kb3dJc0FjdGl2ZSk7CisgICAgaW1wbC0+cGFnZSgpLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2Vi
UGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwgV2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3Rp
dmUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNTUsNyArMTM4LDcgQEAgc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSkKIHsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBp
bXBsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZShX
ZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQgfCBXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0Fj
dGl2ZSk7CisgICAgaW1wbC0+cGFnZSgpLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5
OjpWaWV3SXNGb2N1c2VkIHwgV2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xNzksOSArMTYyLDkgQEAgc3RhdGljIEVpbmFfQm9vbCBf
ZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
LCBjb24KICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBFdmFzX0V2ZW50X01vdXNl
X1doZWVsIGV2ZW50KCp3aGVlbEV2ZW50KTsKICAgICBldmVudC5jYW52YXMgPSBtYXBUb1dlYkNv
bnRlbnQoc21hcnREYXRhLCBldmVudC5jYW52YXMpOwotICAgIGltcGwtPnBhZ2VQcm94eS0+aGFu
ZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KCZldmVudCwgJnBvc2l0aW9uKSk7Cisg
ICAgaW1wbC0+cGFnZSgpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoJmV2
ZW50LCAmcG9zaXRpb24pKTsKICNlbHNlCi0gICAgaW1wbC0+cGFnZVByb3h5LT5oYW5kbGVXaGVl
bEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQod2hlZWxFdmVudCwgJnBvc2l0aW9uKSk7CisgICAg
aW1wbC0+cGFnZSgpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQod2hlZWxF
dmVudCwgJnBvc2l0aW9uKSk7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE5NCw5
ICsxNzcsOSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duKEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29ucwogI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQogICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biBldmVudCgqZG93bkV2ZW50KTsKICAg
ICBldmVudC5jYW52YXMgPSBtYXBUb1dlYkNvbnRlbnQoc21hcnREYXRhLCBldmVudC5jYW52YXMp
OwotICAgIGltcGwtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2
ZW50KCZldmVudCwgJnBvc2l0aW9uKSk7CisgICAgaW1wbC0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2
ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKICNlbHNlCi0gICAg
aW1wbC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZG93
bkV2ZW50LCAmcG9zaXRpb24pKTsKKyAgICBpbXBsLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQo
TmF0aXZlV2ViTW91c2VFdmVudChkb3duRXZlbnQsICZwb3NpdGlvbikpOwogI2VuZGlmCiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC0yMDksOSArMTkyLDkgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc21hcnRfbW91c2VfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25z
dAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIEV2YXNfRXZlbnRfTW91c2VfVXAg
ZXZlbnQoKnVwRXZlbnQpOwogICAgIGV2ZW50LmNhbnZhcyA9IG1hcFRvV2ViQ29udGVudChzbWFy
dERhdGEsIGV2ZW50LmNhbnZhcyk7Ci0gICAgaW1wbC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2
ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKKyAgICBpbXBsLT5w
YWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCgmZXZlbnQsICZwb3Np
dGlvbikpOwogI2Vsc2UKLSAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0
aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCAmcG9zaXRpb24pKTsKKyAgICBpbXBsLT5wYWdlKCkt
PmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCAmcG9zaXRpb24p
KTsKICNlbmRpZgogCiAgICAgSW5wdXRNZXRob2RDb250ZXh0RWZsKiBpbnB1dE1ldGhvZENvbnRl
eHQgPSBpbXBsLT5pbnB1dE1ldGhvZENvbnRleHQoKTsKQEAgLTIyOSw5ICsyMTIsOSBAQCBzdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0YSwgY29ucwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIEV2
YXNfRXZlbnRfTW91c2VfTW92ZSBldmVudCgqbW92ZUV2ZW50KTsKICAgICBldmVudC5jdXIuY2Fu
dmFzID0gbWFwVG9XZWJDb250ZW50KHNtYXJ0RGF0YSwgZXZlbnQuY3VyLmNhbnZhcyk7Ci0gICAg
aW1wbC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2
ZW50LCAmcG9zaXRpb24pKTsKKyAgICBpbXBsLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0
aXZlV2ViTW91c2VFdmVudCgmZXZlbnQsICZwb3NpdGlvbikpOwogI2Vsc2UKLSAgICBpbXBsLT5w
YWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChtb3ZlRXZlbnQs
ICZwb3NpdGlvbikpOworICAgIGltcGwtPnBhZ2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVX
ZWJNb3VzZUV2ZW50KG1vdmVFdmVudCwgJnBvc2l0aW9uKSk7CiAjZW5kaWYKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTI0NSw3ICsyMjgsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19z
bWFydF9rZXlfZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0CiAgICAg
aWYgKGlucHV0TWV0aG9kQ29udGV4dCkKICAgICAgICAgaW5wdXRNZXRob2RDb250ZXh0LT5oYW5k
bGVLZXlEb3duRXZlbnQoZG93bkV2ZW50LCAmaXNGaWx0ZXJlZCk7CiAKLSAgICBpbXBsLT5wYWdl
UHJveHktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChkb3duRXZl
bnQsIGlzRmlsdGVyZWQpKTsKKyAgICBpbXBsLT5wYWdlKCktPmhhbmRsZUtleWJvYXJkRXZlbnQo
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChkb3duRXZlbnQsIGlzRmlsdGVyZWQpKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMjUzLDcgKzIzNiw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IEV2
CiB7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFs
c2UpOwogCi0gICAgaW1wbC0+cGFnZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdl
YktleWJvYXJkRXZlbnQodXBFdmVudCkpOworICAgIGltcGwtPnBhZ2UoKS0+aGFuZGxlS2V5Ym9h
cmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KHVwRXZlbnQpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMzA1LDcgKzI4OCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9zaG93
KHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIC8qZXZlbnRJbmZvCiB7CiAg
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdf
U21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIGltcGwpOwotICAgIGltcGwtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdl
YlBhZ2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7CisgICAgaW1wbC0+cGFnZSgpLT52aWV3U3RhdGVE
aWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxlKTsKIH0KIAogc3RhdGljIHZvaWQg
X2V3a192aWV3X29uX2hpZGUodm9pZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9pZCog
LypldmVudEluZm8qLykKQEAgLTMxNiwyMCArMjk5LDExIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19vbl9oaWRlKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIC8qZXZlbnRJ
bmZvCiAgICAgLy8gVGhpcyBjYWxsIG1heSBsb29rIHdyb25nLCBidXQgd2UgcmVhbGx5IG5lZWQg
dG8gcGFzcyBWaWV3SXNWaXNpYmxlIGhlcmUuCiAgICAgLy8gdmlld1N0YXRlRGlkQ2hhbmdlKCkg
aXRzZWxmIGlzIHJlc3BvbnNpYmxlIGZvciBhY3R1YWxseSBzZXR0aW5nIHRoZSB2aXNpYmlsaXR5
IHRvIFZpc2libGUgb3IgSGlkZGVuCiAgICAgLy8gZGVwZW5kaW5nIG9uIHdoYXQgV2ViUGFnZVBy
b3h5Ojppc1ZpZXdWaXNpYmxlKCkgcmV0dXJucywgdGhpcyBzaW1wbHkgdHJpZ2dlcnMgdGhlIHBy
b2Nlc3MuCi0gICAgaW1wbC0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVBy
b3h5OjpWaWV3SXNWaXNpYmxlKTsKKyAgICBpbXBsLT5wYWdlKCktPnZpZXdTdGF0ZURpZENoYW5n
ZShXZWJQYWdlUHJveHk6OlZpZXdJc1Zpc2libGUpOwogfQogCiBzdGF0aWMgRXZhc19TbWFydF9D
bGFzcyBnX3BhcmVudFNtYXJ0Q2xhc3MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIAot
c3RhdGljIHZvaWQgX2V3a192aWV3X2ltcGxfZGVsKEV3a1ZpZXdJbXBsKiBpbXBsKQotewotICAg
IC8qIFVucmVnaXN0ZXIgaWNvbiBjaGFuZ2UgY2FsbGJhY2sgKi8KLSAgICBFd2tfRmF2aWNvbl9E
YXRhYmFzZSogaWNvbkRhdGFiYXNlID0gaW1wbC0+Y29udGV4dC0+ZmF2aWNvbkRhdGFiYXNlKCk7
Ci0gICAgaWNvbkRhdGFiYXNlLT51bndhdGNoQ2hhbmdlcyhfZXdrX3ZpZXdfb25fZmF2aWNvbl9j
aGFuZ2VkKTsKLQotICAgIGRlbGV0ZSBpbXBsOwotfQotCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
c21hcnRfYWRkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIGNvbnN0IEV2YXNfU21hcnQq
IHNtYXJ0ID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KGV3a1ZpZXcpOwpAQCAtMzUxLDEz
ICszMjUsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQogCiAgICAgZ19wYXJlbnRTbWFydENsYXNzLmFkZChld2tWaWV3KTsKIAotICAgIHNt
YXJ0RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3SW1wbChld2tWaWV3KTsKLSAgICBpZiAoIXNtYXJ0
RGF0YS0+cHJpdikgewotICAgICAgICBFSU5BX0xPR19DUklUKCJjb3VsZCBub3QgYWxsb2NhdGUg
RXdrVmlld0ltcGwiKTsKLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfZGF0YV9zZXQoZXdrVmll
dywgMCk7Ci0gICAgICAgIGZyZWUoc21hcnREYXRhKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBzbWFydERhdGEtPnByaXYgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGV2YXNfb2JqZWN0X2lt
YWdlIHRvIGRyYXcgd2ViIGNvbnRlbnRzLgogICAgIHNtYXJ0RGF0YS0+aW1hZ2UgPSBldmFzX29i
amVjdF9pbWFnZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwpAQCAtMzc5LDEwICszNDcsOSBA
QCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQog
CiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfZGVsKEV2YXNfT2JqZWN0KiBld2tWaWV3KQog
ewotICAgIEV3a1ZpZXdJbXBsOjpyZW1vdmVGcm9tUGFnZVZpZXdNYXAoZXdrVmlldyk7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgaWYgKHNtYXJ0RGF0YSAm
JiBzbWFydERhdGEtPnByaXYpCi0gICAgICAgIF9ld2tfdmlld19pbXBsX2RlbChzbWFydERhdGEt
PnByaXYpOworICAgIGlmIChzbWFydERhdGEpCisgICAgICAgIGRlbGV0ZSBzbWFydERhdGEtPnBy
aXY7CiAKICAgICBnX3BhcmVudFNtYXJ0Q2xhc3MuZGVsKGV3a1ZpZXcpOwogfQpAQCAtNDI5LDgg
KzM5Niw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCiAgICAgICAgIG5lZWRzTmV3U3VyZmFjZSA9IGltcGwtPmV2YXNHbFN1cmZh
Y2U7CiAjZW5kaWYKIAotICAgICAgICBpZiAoaW1wbC0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgp
KQotICAgICAgICAgICAgaW1wbC0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKElu
dFNpemUod2lkdGgsIGhlaWdodCksIEludFNpemUoKSk7CisgICAgICAgIGlmIChpbXBsLT5wYWdl
KCktPmRyYXdpbmdBcmVhKCkpCisgICAgICAgICAgICBpbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVh
KCktPnNldFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgSW50U2l6ZSgpKTsKIAogICAgICAg
ICBzbWFydERhdGEtPnZpZXcudyA9IHdpZHRoOwogICAgICAgICBzbWFydERhdGEtPnZpZXcuaCA9
IGhlaWdodDsKQEAgLTQ5Miw4ICs0NTksOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
Y29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgcmVkLCBpbnQgZ3JlZW4sCiAjdW5k
ZWYgQ0hFQ0tfQ09MT1IKIAogICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChzbWFydERh
dGEtPmltYWdlLCBhbHBoYSA8IDI1NSk7Ci0gICAgaW1wbC0+cGFnZVByb3h5LT5zZXREcmF3c0Jh
Y2tncm91bmQocmVkIHx8IGdyZWVuIHx8IGJsdWUpOwotICAgIGltcGwtPnBhZ2VQcm94eS0+c2V0
RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoYWxwaGEgPCAyNTUpOworICAgIGltcGwtPnBhZ2Uo
KS0+c2V0RHJhd3NCYWNrZ3JvdW5kKHJlZCB8fCBncmVlbiB8fCBibHVlKTsKKyAgICBpbXBsLT5w
YWdlKCktPnNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGFscGhhIDwgMjU1KTsKIAogICAg
IGdfcGFyZW50U21hcnRDbGFzcy5jb2xvcl9zZXQoZXdrVmlldywgcmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGEpOwogfQpAQCAtNTM3LDcgKzUwNCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zbWFydF9j
bGFzc19zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KHZv
aWQpCitzdGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIGNyZWF0ZUV3a1ZpZXdTbWFydENsYXNzKHZv
aWQpCiB7CiAgICAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGFwaSA9IEVXS19WSUVXX1NN
QVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKCJFd2tfVmlldyIpOwogICAgIHN0YXRpYyBFdmFz
X1NtYXJ0KiBzbWFydCA9IDA7CkBAIC01NTAsNzAgKzUxNywxNCBAQCBzdGF0aWMgaW5saW5lIEV2
YXNfU21hcnQqIF9ld2tfdmlld19zbWFydF9jbGFzc19uZXcodm9pZCkKICAgICByZXR1cm4gc21h
cnQ7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19pbml0aWFsaXplKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXBSZWYpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEpOwotICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGlt
cGwpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRleHQpOwotCi0gICAgaWYg
KGltcGwtPnBhZ2VDbGllbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGltcGwtPnBhZ2VDbGll
bnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKGltcGwpOwotCi0gICAgaWYgKHBhZ2VHcm91cFJl
ZikKLSAgICAgICAgaW1wbC0+cGFnZVByb3h5ID0gdG9JbXBsKGNvbnRleHQtPndrQ29udGV4dCgp
KS0+Y3JlYXRlV2ViUGFnZShpbXBsLT5wYWdlQ2xpZW50LmdldCgpLCB0b0ltcGwocGFnZUdyb3Vw
UmVmKSk7Ci0gICAgZWxzZQotICAgICAgICBpbXBsLT5wYWdlUHJveHkgPSB0b0ltcGwoY29udGV4
dC0+d2tDb250ZXh0KCkpLT5jcmVhdGVXZWJQYWdlKGltcGwtPnBhZ2VDbGllbnQuZ2V0KCksIFdl
YlBhZ2VHcm91cDo6Y3JlYXRlKCkuZ2V0KCkpOwotCi0gICAgRXdrVmlld0ltcGw6OmFkZFRvUGFn
ZVZpZXdNYXAoZXdrVmlldyk7Ci0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAg
aW1wbC0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgaW1wbC0+cGFnZVByb3h5LT5wYWdlR3Jv
dXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7Ci0gICAg
aW1wbC0+cGFnZVByb3h5LT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKLSNpZiBFTkFCTEUoV0VC
R0wpCi0gICAgaW1wbC0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0
V2ViR0xFbmFibGVkKHRydWUpOwotI2VuZGlmCi0jZW5kaWYKLSAgICBpbXBsLT5wYWdlUHJveHkt
PmluaXRpYWxpemVXZWJQYWdlKCk7Ci0KLSAgICBpbXBsLT5iYWNrRm9yd2FyZExpc3QgPSBFd2tf
QmFja19Gb3J3YXJkX0xpc3Q6OmNyZWF0ZSh0b0FQSShpbXBsLT5wYWdlUHJveHktPmJhY2tGb3J3
YXJkTGlzdCgpKSk7Ci0KLSAgICBpbXBsLT5jb250ZXh0ID0gY29udGV4dDsKLQotI2lmIFVTRShU
SUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIGltcGwtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnQgPSBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpjcmVhdGUoaW1wbCk7Ci0gICAg
aW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBQYWdlVmlld3BvcnRD
b250cm9sbGVyKGltcGwtPnBhZ2VQcm94eS5nZXQoKSwgaW1wbC0+cGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudC5nZXQoKSkpOwotICAgIGltcGwtPnBhZ2VDbGllbnQtPnNldFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIoaW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlci5nZXQoKSk7Ci0jZW5kaWYK
LQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpbXBsLT5wYWdlUHJveHktPmZ1bGxT
Y3JlZW5NYW5hZ2VyKCktPnNldFdlYlZpZXcoZXdrVmlldyk7Ci0gICAgaW1wbC0+cGFnZVByb3h5
LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0RnVsbFNjcmVlbkVuYWJsZWQodHJ1ZSk7
Ci0jZW5kaWYKLQotICAgIC8vIEluaXRpYWxpemUgcGFnZSBjbGllbnRzLgotICAgIGltcGwtPnBh
Z2VMb2FkQ2xpZW50ID0gUGFnZUxvYWRDbGllbnRFZmw6OmNyZWF0ZShpbXBsKTsKLSAgICBpbXBs
LT5wYWdlUG9saWN5Q2xpZW50ID0gUGFnZVBvbGljeUNsaWVudEVmbDo6Y3JlYXRlKGltcGwpOwot
ICAgIGltcGwtPnBhZ2VVSUNsaWVudCA9IFBhZ2VVSUNsaWVudEVmbDo6Y3JlYXRlKGltcGwpOwot
ICAgIGltcGwtPnJlc291cmNlTG9hZENsaWVudCA9IFJlc291cmNlTG9hZENsaWVudEVmbDo6Y3Jl
YXRlKGltcGwpOwotICAgIGltcGwtPmZpbmRDbGllbnQgPSBGaW5kQ2xpZW50RWZsOjpjcmVhdGUo
aW1wbCk7Ci0gICAgaW1wbC0+Zm9ybUNsaWVudCA9IEZvcm1DbGllbnRFZmw6OmNyZWF0ZShpbXBs
KTsKLQotICAgIC8qIExpc3RlbiBmb3IgZmF2aWNvbiBjaGFuZ2VzICovCi0gICAgRXdrX0Zhdmlj
b25fRGF0YWJhc2UqIGljb25EYXRhYmFzZSA9IGltcGwtPmNvbnRleHQtPmZhdmljb25EYXRhYmFz
ZSgpOwotICAgIGljb25EYXRhYmFzZS0+d2F0Y2hDaGFuZ2VzKEljb25DaGFuZ2VDYWxsYmFja0Rh
dGEoX2V3a192aWV3X29uX2Zhdmljb25fY2hhbmdlZCwgZXdrVmlldykpOwotfQotCi1zdGF0aWMg
RXZhc19PYmplY3QqIF9ld2tfdmlld19hZGRfd2l0aF9zbWFydChFdmFzKiBjYW52YXMsIEV2YXNf
U21hcnQqIHNtYXJ0KQorc3RhdGljIGlubGluZSBFdmFzX09iamVjdCogY3JlYXRlRXdrVmlldyhF
dmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBj
b250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYgPSAwKQogewogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChzbWFydCwgMCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGNvbnRleHQsIDApOwogCiAgICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBldmFzX29iamVj
dF9zbWFydF9hZGQoY2FudmFzLCBzbWFydCk7Ci0gICAgaWYgKCFld2tWaWV3KQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXdrVmlldywgMCk7
CiAKICAgICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKICAgICBpZiAoIXNt
YXJ0RGF0YSkgewpAQCAtNjIxLDExICs1MzIsOSBAQCBzdGF0aWMgRXZhc19PYmplY3QqIF9ld2tf
dmlld19hZGRfd2l0aF9zbWFydChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0KQogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBFV0tfVklFV19JTVBMX0dFVChzbWFydERhdGEs
IGltcGwpOwotICAgIGlmICghaW1wbCkgewotICAgICAgICBldmFzX29iamVjdF9kZWwoZXdrVmll
dyk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoIXNtYXJ0RGF0YS0+cHJp
dik7CisgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gcGFnZUdyb3VwUmVmID8g
dG9JbXBsKHBhZ2VHcm91cFJlZikgOiBXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpOworICAgIHNtYXJ0
RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3SW1wbChld2tWaWV3LCBjb250ZXh0LCBwYWdlR3JvdXAp
OwogCiAgICAgcmV0dXJuIGV3a1ZpZXc7CiB9CkBAIC02MzYsMzYgKzU0NSwxNyBAQCBzdGF0aWMg
RXZhc19PYmplY3QqIF9ld2tfdmlld19hZGRfd2l0aF9zbWFydChFdmFzKiBjYW52YXMsIEV2YXNf
U21hcnQqIHNtYXJ0KQogICovCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyog
Y2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
UmVmKQogewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb250ZXh0UmVmLCAwKTsKLSAgICBF
dmFzX09iamVjdCogZXdrVmlldyA9IF9ld2tfdmlld19hZGRfd2l0aF9zbWFydChjYW52YXMsIF9l
d2tfdmlld19zbWFydF9jbGFzc19uZXcoKSk7Ci0gICAgaWYgKCFld2tWaWV3KQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIF9ld2tfdmlld19pbml0aWFsaXplKGV3a1ZpZXcsIEV3a19Db250ZXh0
OjpjcmVhdGUoY29udGV4dFJlZiksIHBhZ2VHcm91cFJlZik7Ci0KLSAgICByZXR1cm4gZXdrVmll
dzsKKyAgICByZXR1cm4gY3JlYXRlRXdrVmlldyhjYW52YXMsIGNyZWF0ZUV3a1ZpZXdTbWFydENs
YXNzKCksIEV3a19Db250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiksIHBhZ2VHcm91cFJlZik7CiB9
CiAKIEV2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFzLCBFdmFzX1Nt
YXJ0KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKGNhbnZhcywgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNtYXJ0LCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29u
dGV4dCwgMCk7Ci0KLSAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IF9ld2tfdmlld19hZGRfd2l0
aF9zbWFydChjYW52YXMsIHNtYXJ0KTsKLSAgICBpZiAoIWV3a1ZpZXcpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgX2V3a192aWV3X2luaXRpYWxpemUoZXdrVmlldywgY29udGV4dCwgMCk7Ci0K
LSAgICByZXR1cm4gZXdrVmlldzsKKyAgICByZXR1cm4gY3JlYXRlRXdrVmlldyhjYW52YXMsIHNt
YXJ0LCBjb250ZXh0KTsKIH0KIAogRXZhc19PYmplY3QqIGV3a192aWV3X2FkZF93aXRoX2NvbnRl
eHQoRXZhcyogY2FudmFzLCBFd2tfQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoY29udGV4dCwgMCk7Ci0gICAgcmV0dXJuIGV3a192aWV3X3Nt
YXJ0X2FkZChjYW52YXMsIF9ld2tfdmlld19zbWFydF9jbGFzc19uZXcoKSwgY29udGV4dCk7Cisg
ICAgcmV0dXJuIGV3a192aWV3X3NtYXJ0X2FkZChjYW52YXMsIGNyZWF0ZUV3a1ZpZXdTbWFydENs
YXNzKCksIGNvbnRleHQpOwogfQogCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGNh
bnZhcykKQEAgLTY4Nyw3ICs1NzcsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJsX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdXJsKQogICAgIEVXS19WSUVXX0lNUExfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwodXJsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPmxvYWRV
UkwodXJsKTsKKyAgICBpbXBsLT5wYWdlKCktPmxvYWRVUkwodXJsKTsKICAgICBpbXBsLT5pbmZv
cm1VUkxDaGFuZ2UoKTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtNzE0LDcgKzYwNCw3IEBAIEVp
bmFfQm9vbCBld2tfdmlld19yZWxvYWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBFV0tf
VklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBp
bXBsLT5wYWdlUHJveHktPnJlbG9hZCgvKnJlbG9hZEZyb21PcmlnaW4qLyBmYWxzZSk7CisgICAg
aW1wbC0+cGFnZSgpLT5yZWxvYWQoLypyZWxvYWRGcm9tT3JpZ2luKi8gZmFsc2UpOwogICAgIGlt
cGwtPmluZm9ybVVSTENoYW5nZSgpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC03MjUsNyArNjE1
LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBp
bXBsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPnJlbG9hZCgvKnJlbG9hZEZyb21P
cmlnaW4qLyB0cnVlKTsKKyAgICBpbXBsLT5wYWdlKCktPnJlbG9hZCgvKnJlbG9hZEZyb21Pcmln
aW4qLyB0cnVlKTsKICAgICBpbXBsLT5pbmZvcm1VUkxDaGFuZ2UoKTsKIAogICAgIHJldHVybiB0
cnVlOwpAQCAtNzM2LDcgKzYyNiw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zdG9wKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+cGFnZVByb3h5LT5zdG9wTG9hZGluZygpOwor
ICAgIGltcGwtPnBhZ2UoKS0+c3RvcExvYWRpbmcoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtNzczLDcgKzY2Myw3IEBAIGRvdWJsZSBld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgLTEuMCk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgaW1wbCwgLTEuMCk7CiAKLSAgICByZXR1cm4gaW1wbC0+cGFnZVByb3h5LT5l
c3RpbWF0ZWRQcm9ncmVzcygpOworICAgIHJldHVybiBpbXBsLT5wYWdlKCktPmVzdGltYXRlZFBy
b2dyZXNzKCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zY2FsZV9zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGRvdWJsZSBzY2FsZUZhY3RvciwgaW50IHgsIGludCB5KQpAQCAtNzgxLDcgKzY3
MSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zY2FsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGRvdWJsZSBzY2FsZUZhY3RvciwgaW50IHgsIGluCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHkt
PnNjYWxlUGFnZShzY2FsZUZhY3RvciwgSW50UG9pbnQoeCwgeSkpOworICAgIGltcGwtPnBhZ2Uo
KS0+c2NhbGVQYWdlKHNjYWxlRmFjdG9yLCBJbnRQb2ludCh4LCB5KSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTc5MCw3ICs2ODAsNyBAQCBkb3VibGUgZXdrX3ZpZXdfc2NhbGVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCAtMSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgaW1wbCwgLTEpOwogCi0gICAgcmV0dXJuIGltcGwtPnBhZ2VQcm94eS0+cGFn
ZVNjYWxlRmFjdG9yKCk7CisgICAgcmV0dXJuIGltcGwtPnBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9y
KCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fc2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBmbG9hdCByYXRpbykKQEAgLTc5OCw3ICs2ODgsNyBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX3NldChFdmFzX09iamVjdCogZXdrVmlldywg
ZmxvYXQgcmF0aW8pCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBpbXBsLCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPnNldEN1c3RvbURldmljZVNj
YWxlRmFjdG9yKHJhdGlvKTsKKyAgICBpbXBsLT5wYWdlKCktPnNldEN1c3RvbURldmljZVNjYWxl
RmFjdG9yKHJhdGlvKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODA4LDcgKzY5OCw3IEBA
IGZsb2F0IGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIC0xLjApOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGlt
cGwsIC0xLjApOwogCi0gICAgcmV0dXJuIGltcGwtPnBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKTsKKyAgICByZXR1cm4gaW1wbC0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogfQog
CiB2b2lkIGV3a192aWV3X3RoZW1lX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hh
ciogcGF0aCkKQEAgLTgzMiw3ICs3MjIsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFjayhFdmFz
X09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IGltcGwtPnBh
Z2VQcm94eS5nZXQoKTsKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBpbXBsLT5wYWdlKCk7CiAg
ICAgaWYgKHBhZ2UtPmNhbkdvQmFjaygpKSB7CiAgICAgICAgIHBhZ2UtPmdvQmFjaygpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg0Niw3ICs3MzYsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
Zm9yd2FyZChFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IGltcGwtPnBhZ2VQcm94eS5nZXQoKTsKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBpbXBs
LT5wYWdlKCk7CiAgICAgaWYgKHBhZ2UtPmNhbkdvRm9yd2FyZCgpKSB7CiAgICAgICAgIHBhZ2Ut
PmdvRm9yd2FyZCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg2Miw3ICs3NTIsNyBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfaW50ZW50X2RlbGl2ZXIoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3
a19JbnRlbnQqIGludGVudCkKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBpbXBsLCBmYWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGlu
dGVudCwgZmFsc2UpOwogCi0gICAgV2ViUGFnZVByb3h5KiBwYWdlID0gaW1wbC0+cGFnZVByb3h5
LmdldCgpOworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IGltcGwtPnBhZ2UoKTsKICAgICBwYWdl
LT5kZWxpdmVySW50ZW50VG9GcmFtZShwYWdlLT5tYWluRnJhbWUoKSwgaW50ZW50LT53ZWJJbnRl
bnREYXRhKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC04NzYsNyArNzY2LDcgQEAgRWluYV9C
b29sIGV3a192aWV3X2JhY2tfcG9zc2libGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBF
V0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAg
ICByZXR1cm4gaW1wbC0+cGFnZVByb3h5LT5jYW5Hb0JhY2soKTsKKyAgICByZXR1cm4gaW1wbC0+
cGFnZSgpLT5jYW5Hb0JhY2soKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmRfcG9z
c2libGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC04ODQsNyArNzc0LDcgQEAgRWluYV9Cb29s
IGV3a192aWV3X2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBF
V0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAg
ICByZXR1cm4gaW1wbC0+cGFnZVByb3h5LT5jYW5Hb0ZvcndhcmQoKTsKKyAgICByZXR1cm4gaW1w
bC0+cGFnZSgpLT5jYW5Hb0ZvcndhcmQoKTsKIH0KIAogRXdrX0JhY2tfRm9yd2FyZF9MaXN0KiBl
d2tfdmlld19iYWNrX2ZvcndhcmRfbGlzdF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
CkBAIC04OTIsNyArNzgyLDcgQEAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0KiBld2tfdmlld19iYWNr
X2ZvcndhcmRfbGlzdF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CiAgICAgRVdLX1ZJRVdf
SU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgMCk7CiAKLSAgICByZXR1cm4gaW1w
bC0+YmFja0ZvcndhcmRMaXN0LmdldCgpOworICAgIHJldHVybiBpbXBsLT5iYWNrRm9yd2FyZExp
c3QoKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIGh0bWwsIGNvbnN0IGNoYXIqIGJhc2VVcmwsIGNvbnN0
IGNoYXIqIHVucmVhY2hhYmxlVXJsKQpAQCAtOTAyLDkgKzc5Miw5IEBAIEVpbmFfQm9vbCBld2tf
dmlld19odG1sX3N0cmluZ19sb2FkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBo
dG1sLCBjb25zCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGh0bWwsIGZhbHNl
KTsKIAogICAgIGlmICh1bnJlYWNoYWJsZVVybCAmJiAqdW5yZWFjaGFibGVVcmwpCi0gICAgICAg
IGltcGwtPnBhZ2VQcm94eS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoU3RyaW5nOjpmcm9tVVRG
OChodG1sKSwgYmFzZVVybCA/IFN0cmluZzo6ZnJvbVVURjgoYmFzZVVybCkgOiAiIiwgU3RyaW5n
Ojpmcm9tVVRGOCh1bnJlYWNoYWJsZVVybCkpOworICAgICAgICBpbXBsLT5wYWdlKCktPmxvYWRB
bHRlcm5hdGVIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoaHRtbCksIGJhc2VVcmwgPyBTdHJp
bmc6OmZyb21VVEY4KGJhc2VVcmwpIDogIiIsIFN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVV
cmwpKTsKICAgICBlbHNlCi0gICAgICAgIGltcGwtPnBhZ2VQcm94eS0+bG9hZEhUTUxTdHJpbmco
U3RyaW5nOjpmcm9tVVRGOChodG1sKSwgYmFzZVVybCA/IFN0cmluZzo6ZnJvbVVURjgoYmFzZVVy
bCkgOiAiIik7CisgICAgICAgIGltcGwtPnBhZ2UoKS0+bG9hZEhUTUxTdHJpbmcoU3RyaW5nOjpm
cm9tVVRGOChodG1sKSwgYmFzZVVybCA/IFN0cmluZzo6ZnJvbVVURjgoYmFzZVVybCkgOiAiIik7
CiAKICAgICBpbXBsLT5pbmZvcm1VUkxDaGFuZ2UoKTsKIApAQCAtOTQ1LDcgKzgzNSw3IEBAIEVp
bmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNo
YXIqIHRleHQsIEV3a19GaW5kX09wCiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TCh0ZXh0LCBmYWxzZSk7CiAKLSAgICBpbXBsLT5wYWdlUHJveHktPmZpbmRTdHJpbmcoU3RyaW5n
Ojpmcm9tVVRGOCh0ZXh0KSwgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4ob3B0aW9u
cyksIG1heE1hdGNoQ291bnQpOworICAgIGltcGwtPnBhZ2UoKS0+ZmluZFN0cmluZyhTdHJpbmc6
OmZyb21VVEY4KHRleHQpLCBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPihvcHRpb25z
KSwgbWF4TWF0Y2hDb3VudCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk1NSw3ICs4NDUs
NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kX2hpZ2hsaWdodF9jbGVhcihFdmFzX09i
amVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIGltcGwsIGZhbHNlKTsKIAotICAgIGltcGwtPnBhZ2VQcm94eS0+aGlkZUZpbmRVSSgpOwor
ICAgIGltcGwtPnBhZ2UoKS0+aGlkZUZpbmRVSSgpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC05NjYsNyArODU2LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3RleHRfbWF0Y2hlc19jb3VudChF
dmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGV4dCwgRXcKICAgICBFV0tfVklFV19J
TVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHRleHQsIGZhbHNlKTsKIAotICAgIGltcGwtPnBhZ2VQcm94
eS0+Y291bnRTdHJpbmdNYXRjaGVzKFN0cmluZzo6ZnJvbVVURjgodGV4dCksIHN0YXRpY19jYXN0
PFdlYktpdDo6RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKKyAgICBpbXBs
LT5wYWdlKCktPmNvdW50U3RyaW5nTWF0Y2hlcyhTdHJpbmc6OmZyb21VVEY4KHRleHQpLCBzdGF0
aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPihvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCk7CiAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk5OSw3ICs4ODksNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfZmVlZF90b3VjaF9ldmVudChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1RvdWNoX0V2ZW50
X1R5cGUgdAogICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7IHNtYXJ0RGF0YS0+dmlldy54LCBz
bWFydERhdGEtPnZpZXcueSB9OwogICAgIC8vIEZJWE1FOiBUb3VjaCBwb2ludHMgZG8gbm90IHRh
a2Ugc2Nyb2xsIHBvc2l0aW9uIGFuZCBzY2FsZSBpbnRvIGFjY291bnQgd2hlbiAKICAgICAvLyBU
SUxFRF9CQUNLSU5HX1NUT1JFIGlzIGVuYWJsZWQuCi0gICAgaW1wbC0+cGFnZVByb3h5LT5oYW5k
bGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmllcnMs
ICZwb3NpdGlvbiwgZWNvcmVfdGltZV9nZXQoKSkpOworICAgIGltcGwtPnBhZ2UoKS0+aGFuZGxl
VG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCAm
cG9zaXRpb24sIGVjb3JlX3RpbWVfZ2V0KCkpKTsKIAogICAgIHJldHVybiB0cnVlOwogI2Vsc2UK
QEAgLTEwMzksNyArOTI5LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2luc3BlY3Rvcl9zaG93KEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgV2ViSW5zcGVjdG9yUHJveHkqIGluc3BlY3Rv
ciA9IGltcGwtPnBhZ2VQcm94eS0+aW5zcGVjdG9yKCk7CisgICAgV2ViSW5zcGVjdG9yUHJveHkq
IGluc3BlY3RvciA9IGltcGwtPnBhZ2UoKS0+aW5zcGVjdG9yKCk7CiAgICAgaWYgKGluc3BlY3Rv
cikKICAgICAgICAgaW5zcGVjdG9yLT5zaG93KCk7CiAKQEAgLTEwNTUsNyArOTQ1LDcgQEAgRWlu
YV9Cb29sIGV3a192aWV3X2luc3BlY3Rvcl9jbG9zZShFdmFzX09iamVjdCogZXdrVmlldykKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwog
ICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsK
IAotICAgIFdlYkluc3BlY3RvclByb3h5KiBpbnNwZWN0b3IgPSBpbXBsLT5wYWdlUHJveHktPmlu
c3BlY3RvcigpOworICAgIFdlYkluc3BlY3RvclByb3h5KiBpbnNwZWN0b3IgPSBpbXBsLT5wYWdl
KCktPmluc3BlY3RvcigpOwogICAgIGlmIChpbnNwZWN0b3IpCiAgICAgICAgIGluc3BlY3Rvci0+
Y2xvc2UoKTsKIApAQCAtMTA3Nyw3ICs5NjcsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFnaW5h
dGlvbl9tb2RlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1BhZ2luYXRpb25fTW9kZQog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7
CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2Up
OwogICAgIAotICAgIGltcGwtPnBhZ2VQcm94eS0+c2V0UGFnaW5hdGlvbk1vZGUoc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZT4obW9kZSkpOworICAgIGltcGwtPnBhZ2UoKS0+
c2V0UGFnaW5hdGlvbk1vZGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZT4o
bW9kZSkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDg3LDUgKzk3Nyw1IEBAIEV3a19Q
YWdpbmF0aW9uX01vZGUgZXdrX3ZpZXdfcGFnaW5hdGlvbl9tb2RlX2dldChjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgRVdLX1BBR0lOQVRJT05fTU9ERV9JTlZBTElEKTsKICAgICBFV0tfVklFV19JTVBM
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBFV0tfUEFHSU5BVElPTl9NT0RFX0lOVkFM
SUQpOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEV3a19QYWdpbmF0aW9uX01vZGU+KGltcGwt
PnBhZ2VQcm94eS0+cGFnaW5hdGlvbk1vZGUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV3
a19QYWdpbmF0aW9uX01vZGU+KGltcGwtPnBhZ2UoKS0+cGFnaW5hdGlvbk1vZGUoKSk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>