<?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>224359</bug_id>
          
          <creation_ts>2021-04-09 00:39:07 -0700</creation_ts>
          <short_desc>[GTK][WPE] Add a property to the WebKitWebView indicating whether the web process is responsive</short_desc>
          <delta_ts>2021-04-14 09:26:03 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=224533</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Miguel Gomez">magomez</reporter>
          <assigned_to name="Miguel Gomez">magomez</assigned_to>
          <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1748626</commentid>
    <comment_count>0</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-04-09 00:39:07 -0700</bug_when>
    <thetext>WebProcessProxy has a couple of timers that check whether web processes are responsive, but this is not communicated in any way to the WebKitWebView user. Add a property to WebKitWebView indicating so, and whose changes can be tracked by a notify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748628</commentid>
    <comment_count>1</comment_count>
      <attachid>425592</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-04-09 00:41:56 -0700</bug_when>
    <thetext>Created attachment 425592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748629</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-04-09 00:43:05 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748689</commentid>
    <comment_count>3</comment_count>
      <attachid>425592</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-04-09 04:36:29 -0700</bug_when>
    <thetext>Comment on attachment 425592
Patch

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

Looks good to me, but we need a test case.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1352
&gt; +     * Since: 2.32

2.34

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4770
&gt; + * Since: 2.32

2.34</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748706</commentid>
    <comment_count>4</comment_count>
      <attachid>425592</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-04-09 05:57:49 -0700</bug_when>
    <thetext>Comment on attachment 425592
Patch

The API addition looks good to me. Please take a look at the comments
below before landing, tho.

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:814
&gt; +    priv-&gt;isWebProcessResponsive = true;

This line is not needed, the default value is set to “TRUE” in the call to
“g_param_spec_boolean()” inside the “webkit_web_view_class_init()” below,
which will trigger setting the initial value of the property when during
instantiation.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1360
&gt; +            _(&quot;Whether the current web process is responsive&quot;),

Nit: which process is the “current web process”? I think it would more precise to
write this as “Whether the web process associated with the web view is responsive”
(or similar).

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4759
&gt; +    g_object_notify(G_OBJECT(webView), &quot;is-web-process-responsive&quot;);

It always annoys me a tiny little bit that every time we notify of object property
changes in the WebKit{GTK,WPE} code we don&apos;t use “g_object_notify_by_pspec()” to
avoid the property lookup… so I filed bug #224366 to maybe do that change at some
point later on 😉️

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebViewPrivate.h:123
&gt; +

Why the extra empty space? Please remove it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749148</commentid>
    <comment_count>5</comment_count>
      <attachid>425592</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-04-12 01:03:20 -0700</bug_when>
    <thetext>Comment on attachment 425592
Patch

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

Please, don&apos;t forget the unit tests.

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:814
&gt;&gt; +    priv-&gt;isWebProcessResponsive = true;
&gt; 
&gt; This line is not needed, the default value is set to “TRUE” in the call to
&gt; “g_param_spec_boolean()” inside the “webkit_web_view_class_init()” below,
&gt; which will trigger setting the initial value of the property when during
&gt; instantiation.

Don&apos;t we need to pass G_PARAM_CONSTRUCT flags for that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749155</commentid>
    <comment_count>6</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-04-12 01:15:40 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #5)
&gt; Comment on attachment 425592 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425592&amp;action=review
&gt; 
&gt; Please, don&apos;t forget the unit tests.

Sure.

&gt; &gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:814
&gt; &gt;&gt; +    priv-&gt;isWebProcessResponsive = true;
&gt; &gt; 
&gt; &gt; This line is not needed, the default value is set to “TRUE” in the call to
&gt; &gt; “g_param_spec_boolean()” inside the “webkit_web_view_class_init()” below,
&gt; &gt; which will trigger setting the initial value of the property when during
&gt; &gt; instantiation.
&gt; 
&gt; Don&apos;t we need to pass G_PARAM_CONSTRUCT flags for that?

It&apos;s been a while since I looked into gobject internals but, are you taking into account that the property doesn&apos;t have a setter? So there&apos;s no way for gobject to set the initial value to priv-&gt;isWebProcessResponsive. Unless I&apos;m missing some magic here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749156</commentid>
    <comment_count>7</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-04-12 01:29:41 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #5)
&gt; Comment on attachment 425592 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425592&amp;action=review
&gt; 
&gt; Please, don&apos;t forget the unit tests.
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:814
&gt; &gt;&gt; +    priv-&gt;isWebProcessResponsive = true;
&gt; &gt; 
&gt; &gt; This line is not needed, the default value is set to “TRUE” in the call to
&gt; &gt; “g_param_spec_boolean()” inside the “webkit_web_view_class_init()” below,
&gt; &gt; which will trigger setting the initial value of the property when during
&gt; &gt; instantiation.
&gt; 
&gt; Don&apos;t we need to pass G_PARAM_CONSTRUCT flags for that?

Yes, you are right, I just checked how GObject works internally.
Without G_PARAM_CONSTRUCT the default value of the GParamSpec that
describes the property is never used. The GLib documentation could
be more explicit about this 🤷️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749699</commentid>
    <comment_count>8</comment_count>
      <attachid>425876</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-04-13 09:14:03 -0700</bug_when>
    <thetext>Created attachment 425876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749703</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-13 09:41:18 -0700</bug_when>
    <thetext>Hm, at first I thought this was a good idea, but now I wonder: what is the application supposed to do if the web process becomes unresponsive? Epiphany would want to kill the web process and load an error page, but our API provides no way to do that. Ideally webkit_web_view_load_uri() (or webkit_web_view_load_alternate_html()) would suffice, but in practice it doesn&apos;t work: when the web process is unresponsive, this API will hang too. Test here: https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_video. Replace the HTML content with &lt;script&gt;while (1);&lt;/script&gt; and then try navigating to a new page using Epiphany&apos;s address bar or however you trigger a webkit_web_view_load_uri() in your application. It will hang. To avoid this currently, we have to destroy and recreate the WebKitWebView in order to get a new process in which to display the error page, which is disruptive.

So I wonder, what is your application planning to do with this?

Maybe our API layer could handle killing the web process itself if it detects it is unresponsive, without exposing new public API? Somehow, we should try to make recovering the current WebKitWebView possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749705</commentid>
    <comment_count>10</comment_count>
      <attachid>425876</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-04-13 09:49:13 -0700</bug_when>
    <thetext>Comment on attachment 425876
Patch

Patch LGTM, with a couple of nits to take into account before landing :-)

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1341
&gt; +

This added empty line is not really needed.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4737
&gt; +    g_object_notify(G_OBJECT(webView), &quot;is-web-process-responsive&quot;);

I see that you have rebased on top of the changes from bug #224366 (nice!),
but I think you might have missed changing this property notification to
use _notify_by_pspec():

  g_object_notify_by_pspec(G_OBJECT(webView), sObjProperties[PROP_IS_WEB_PROCESS_RESPONSIVE]);

Please change this before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749728</commentid>
    <comment_count>11</comment_count>
      <attachid>425881</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-04-13 10:24:37 -0700</bug_when>
    <thetext>Created attachment 425881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749732</commentid>
    <comment_count>12</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-04-13 10:35:58 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #9)
&gt; Hm, at first I thought this was a good idea, but now I wonder: what is the
&gt; application supposed to do if the web process becomes unresponsive? Epiphany
&gt; would want to kill the web process and load an error page, but our API
&gt; provides no way to do that. Ideally webkit_web_view_load_uri() (or
&gt; webkit_web_view_load_alternate_html()) would suffice, but in practice it
&gt; doesn&apos;t work: when the web process is unresponsive, this API will hang too.
&gt; Test here: https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_video.
&gt; Replace the HTML content with &lt;script&gt;while (1);&lt;/script&gt; and then try
&gt; navigating to a new page using Epiphany&apos;s address bar or however you trigger
&gt; a webkit_web_view_load_uri() in your application. It will hang. To avoid
&gt; this currently, we have to destroy and recreate the WebKitWebView in order
&gt; to get a new process in which to display the error page, which is disruptive.
&gt; 
&gt; So I wonder, what is your application planning to do with this?

Exactly as you mentioned, destroying the WebKitWebView and create it again. But I&apos;m targeting a very specific case.
 
&gt; Maybe our API layer could handle killing the web process itself if it
&gt; detects it is unresponsive, without exposing new public API? Somehow, we
&gt; should try to make recovering the current WebKitWebView possible.

I think unresponsive doesn&apos;t mean irrecoverable. A heavy or badly programmed js script may lock the main thread and make the web process unresponsive. In that case we should probably ask the users whether they want to wait or kill the script. And if the user decides to kill it, then kill the web process. But I guess we need some new API for the apps to be able to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749743</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-13 10:55:32 -0700</bug_when>
    <thetext>We probably don&apos;t need new API... fixing the existing API to not hang would suffice.

Anyway if your plan is to destroy and recreate the web view, then I suppose this is good, even if that&apos;s too heavy-handed for GTK apps to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749745</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-13 10:57:16 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #13)
&gt; We probably don&apos;t need new API... fixing the existing API to not hang would
&gt; suffice.

I mean: we probably don&apos;t need new API beyond the API you&apos;ve already added in this patch. (In theory, webkit_web_view_load_uri() should trigger a process swap if the current web process is unresponsive. I wonder where it currently gets stuck.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749798</commentid>
    <comment_count>15</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-04-13 12:35:04 -0700</bug_when>
    <thetext>Thanks Michael for bringing in the discussion about what an application
can do if a web view is unresponsive. I think for now we can land this
one patch, but it would be actually a very good thing to write a few
lines in the documentation of the property indicating what can be be
*currently* done to recover from an unresponsive view, and also some
words explaining that a web view that has become unresponsive may be
responsive again after a while. How does this sound?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750021</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-04-14 00:13:24 -0700</bug_when>
    <thetext>I think it&apos;s good point, we should investigate why load a new uri or reload doesn&apos;t work, that&apos;s how we currently recover from crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750029</commentid>
    <comment_count>17</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-04-14 00:36:57 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #16)
&gt; I think it&apos;s good point, we should investigate why load a new uri or reload
&gt; doesn&apos;t work, that&apos;s how we currently recover from crashes.

Ok, I&apos;ll land this and open a new bug to check those cases. My bet is that we&apos;re not checking whether the web process is responsive or not when trying to load a new page (through reload, load new uri or load alernate)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750034</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-14 00:44:23 -0700</bug_when>
    <thetext>Committed r275936 (236498@main): &lt;https://commits.webkit.org/236498@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425881.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750158</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-14 09:26:03 -0700</bug_when>
    <thetext>(In reply to Miguel Gomez from comment #17)
&gt; Ok, I&apos;ll land this and open a new bug to check those cases. My bet is that
&gt; we&apos;re not checking whether the web process is responsive or not when trying
&gt; to load a new page (through reload, load new uri or load alernate)

Bug #224533</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425592</attachid>
            <date>2021-04-09 00:41:56 -0700</date>
            <delta_ts>2021-04-13 09:13:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224359-20210409094155.patch</filename>
            <type>text/plain</type>
            <size>9366</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFhYjhmZWFhMTE0Y2FjMjdi
NmI3YjBlNTMyMmZmOGM1NmM3MTRjMGMuLjJhODg0NjcwYmRiNTMxYzdjZWUxZWJkOTcwZmFjZDQ4
YzA1OGNmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDQtMDkgIE1pZ3VlbCBH
b21leiAgPG1hZ29tZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBhIHBy
b3BlcnR5IHRvIHRoZSBXZWJLaXRXZWJWaWV3IGluZGljYXRpbmcgd2hldGhlciB0aGUgd2ViIHBy
b2Nlc3MgaXMgcmVzcG9uc2l2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI0MzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgcHJvcGVydHkgdG8gV2ViS2l0V2ViVmlldyBpbmRpY2F0aW5nIHdo
ZXRoZXIgdGhlIHdlYiBwcm9jZXNzZXMgdXNlZCBhcmUgcmVzcG9uc2l2ZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uQ2xpZW50LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0V2ViVmlld0dldFByb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdTZXRJc1dlYlByb2Nlc3NSZXNwb25zaXZlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAt
c2VjdGlvbnMudHh0OgorCiAyMDIxLTA0LTA4ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1
amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dIFdyb25nIEtleWJvYXJkRXZlbnQua2V5IGZv
ciBudW1lcmljIGtleSBwYWQgd2l0aCBOdW1Mb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQuY3BwCmluZGV4
IDhiMzhjNGY4Y2Q3ZWE4MDA1NmIzYmJhMTMyOTI3OWViMGZhNzY2YWUuLjQzMTFkMDg0OGU4MTA3
NTQ1ZDM0MzdmMzg0OTE4MjRmZmM0YTVkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQuY3BwCkBAIC0x
MjUsNiArMTI1LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
KyAgICB2b2lkIHByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKFdlYktpdDo6V2ViUGFnZVByb3h5
Jikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHdlYmtpdFdlYlZpZXdTZXRJc1dlYlByb2Nlc3NS
ZXNwb25zaXZlKG1fd2ViVmlldywgdHJ1ZSk7CisgICAgfQorCisgICAgdm9pZCBwcm9jZXNzRGlk
QmVjb21lVW5yZXNwb25zaXZlKFdlYktpdDo6V2ViUGFnZVByb3h5Jikgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIHdlYmtpdFdlYlZpZXdTZXRJc1dlYlByb2Nlc3NSZXNwb25zaXZlKG1fd2ViVmll
dywgZmFsc2UpOworICAgIH0KKwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRp
b25BY3Rpb24sIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQ
STo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFdlYktp
dFBvbGljeURlY2lzaW9uVHlwZSBkZWNpc2lvblR5cGUgPSBuYXZpZ2F0aW9uQWN0aW9uLT50YXJn
ZXRGcmFtZSgpID8gV0VCS0lUX1BPTElDWV9ERUNJU0lPTl9UWVBFX05BVklHQVRJT05fQUNUSU9O
IDogV0VCS0lUX1BPTElDWV9ERUNJU0lPTl9UWVBFX05FV19XSU5ET1dfQUNUSU9OOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRl
eCBjODQ0NDA0MzhlMzhmZjZiYTM5NmQzYjE1Y2NhNjQ2MzY0ZGY4YWVhLi4zMTVkOTQ0ZDViODlm
Y2IyNWZkNWJjNDUxMjhhOTVhYWUxMzAwYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjAzLDcgKzIwMyw4IEBAIGVu
dW0gewogICAgIFBST1BfRURJVEFCTEUsCiAgICAgUFJPUF9QQUdFX0lELAogICAgIFBST1BfSVNf
TVVURUQsCi0gICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTCisgICAgUFJPUF9XRUJTSVRFX1BPTElD
SUVTLAorICAgIFBST1BfSVNfV0VCX1BST0NFU1NfUkVTUE9OU0lWRQogfTsKIAogdHlwZWRlZiBI
YXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiA+IExvYWRpbmdSZXNv
dXJjZXNNYXA7CkBAIC0zMDgsNiArMzA5LDggQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0
ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlUG9saWNpZXM+IHdlYnNpdGVQb2xpY2llczsK
IAogICAgIGRvdWJsZSB0ZXh0U2NhbGVGYWN0b3I7CisKKyAgICBib29sIGlzV2ViUHJvY2Vzc1Jl
c3BvbnNpdmU7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAs
IH07CkBAIC04MDcsNiArODEwLDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVj
dGVkKEdPYmplY3QqIG9iamVjdCkKICAgICAgICAgd2ViVmlldy0+cHJpdi0+dGV4dFNjYWxlRmFj
dG9yID0gV2ViQ29yZTo6c2NyZWVuRFBJKCkgLyA5Ni47CiAgICAgICAgIHBhZ2Uuc2V0VGV4dFpv
b21GYWN0b3Ioem9vbUZhY3RvciAqIHdlYlZpZXctPnByaXYtPnRleHRTY2FsZUZhY3Rvcik7CiAg
ICAgfSwgd2ViVmlldyk7CisKKyAgICBwcml2LT5pc1dlYlByb2Nlc3NSZXNwb25zaXZlID0gdHJ1
ZTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJh
bVNwZWMpCkBAIC05MzAsNiArOTM1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0dldFBy
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHUKICAgICBj
YXNlIFBST1BfV0VCU0lURV9QT0xJQ0lFUzoKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZh
bHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldykpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSVNfV0VCX1BST0NFU1NfUkVTUE9OU0lWRToKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF9pc193
ZWJfcHJvY2Vzc19yZXNwb25zaXZlKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcElkLCBwYXJhbVNwZWMpOwogICAgIH0KQEAgLTEzMzYsNiArMTM0NCwyMyBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZp
ZXdDbGFzcykKICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsCiAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8
IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJW
aWV3OmlzLXdlYi1wcm9jZXNzLXJlc3BvbnNpdmU6CisgICAgICoKKyAgICAgKiBXaGV0aGVyIHRo
ZSAjV2ViS2l0V2ViVmlldyBjdXJyZW50IHdlYiBwcm9jZXNzIGlzIHJlc3BvbnNpdmUuCisgICAg
ICoKKyAgICAgKiBTaW5jZTogMi4zMgorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9JU19XRUJf
UFJPQ0VTU19SRVNQT05TSVZFLAorICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAg
ICAgICAgICJpcy13ZWItcHJvY2Vzcy1yZXNwb25zaXZlIiwKKyAgICAgICAgICAgICJJcyBXZWIg
UHJvY2VzcyBSZXNwb25zaXZlIiwKKyAgICAgICAgICAgIF8oIldoZXRoZXIgdGhlIGN1cnJlbnQg
d2ViIHByb2Nlc3MgaXMgcmVzcG9uc2l2ZSIpLAorICAgICAgICAgICAgVFJVRSwKKyAgICAgICAg
ICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2Vi
Vmlldzo6bG9hZC1jaGFuZ2VkOgogICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3
IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZApAQCAtNDcyNCwzICs0NzQ5LDI5IEBAIFdl
YktpdFdlYnNpdGVQb2xpY2llcyogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVz
KFdlYktpdFdlYlZpZXcqIHdlYlZpCiAKICAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+d2Vic2l0
ZVBvbGljaWVzLmdldCgpOwogfQorCit2b2lkIHdlYmtpdFdlYlZpZXdTZXRJc1dlYlByb2Nlc3NS
ZXNwb25zaXZlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGJvb2wgaXNSZXNwb25zaXZlKQorewor
ICAgIGlmICh3ZWJWaWV3LT5wcml2LT5pc1dlYlByb2Nlc3NSZXNwb25zaXZlID09IGlzUmVzcG9u
c2l2ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2ViVmlldy0+cHJpdi0+aXNXZWJQcm9jZXNz
UmVzcG9uc2l2ZSA9IGlzUmVzcG9uc2l2ZTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qo
d2ViVmlldyksICJpcy13ZWItcHJvY2Vzcy1yZXNwb25zaXZlIik7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl92aWV3X2lzX3dlYl9wcm9jZXNzX3Jlc3BvbnNpdmU6CisgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXQgd2hldGhlciB0aGUgY3VycmVudCB3ZWIgcHJvY2Vz
cyBvZiBhICNXZWJLaXRXZWJWaWV3IGlzIHJlc3BvbnNpdmUuCisgKgorICogUmV0dXJuczogJVRS
VUUgaWYgdGhlIHdlYiBwcm9jZXNzIGF0dGFjaGVkIHRvIEB3ZWJfdmlldyBpcyByZXNwb25zaXZl
LCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIFNpbmNlOiAyLjMyCisgKi8KK2dib29sZWFu
IHdlYmtpdF93ZWJfdmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZShXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSwgRkFMU0UpOworCisgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmlzV2Vi
UHJvY2Vzc1Jlc3BvbnNpdmU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCBiOWU1NmZjNTVmZDdkZmE4
MjFmNzg5MjY0YjBjMTVmOWI0YzdiNDEyLi4zNTllMWJjZDNmMzJiM2FjYmJhMTc5MGNkMzhjY2E5
YmE4NzFiZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTEyMCwzICsxMjAsNSBAQCB2b2lkIHdlYmtp
dFdlYlZpZXdTZXRDb21wb3NpdGlvbihXZWJLaXRXZWJWaWV3KiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgVmVjdG9yPFdlYgogdm9pZCB3ZWJraXRXZWJWaWV3Q29uZmlybUNvbXBvc2l0aW9uKFdlYktp
dFdlYlZpZXcqLCBjb25zdCBTdHJpbmcmKTsKIHZvaWQgd2Via2l0V2ViVmlld0NhbmNlbENvbXBv
c2l0aW9uKFdlYktpdFdlYlZpZXcqLCBjb25zdCBTdHJpbmcmKTsKIHZvaWQgd2Via2l0V2ViVmll
d0RlbGV0ZVN1cnJvdW5kaW5nKFdlYktpdFdlYlZpZXcqLCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBj
aGFyYWN0ZXJDb3VudCk7CisKK3ZvaWQgd2Via2l0V2ViVmlld1NldElzV2ViUHJvY2Vzc1Jlc3Bv
bnNpdmUoV2ViS2l0V2ViVmlldyosIGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCBhYzUxNjgzYjY3NWQ1YTk4YjY2NTUzMjNm
OWE1MWM0OWU3NjIzYTFlLi5mMWFmNDlhYmVhMWYwN2I4ZTg2ZTY1MDRjNjJkYjlhZmRiYWVlM2Yx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aApAQCAtNTg5LDYgKzU4OSw4IEBAIHdlYmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2Nv
bnRleHQgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcKIFdFQktJVF9BUEkgV2ViS2l0V2Vic2l0
ZVBvbGljaWVzICoKIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyAgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25z
aXZlICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCiBHX0VO
RF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCBmMWNmYTQ0Yzcy
NzgzNGJkMTBiYTc3ZTc5MzNlOTBmODk5ZjgwYTdhLi5kNmM1ZGQ0MTgwNmJhMTliMzE5M2Q2YmM2
M2VhNzI0NDZiODFkMTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTI5
MCw2ICsyOTAsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNo
CiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lucHV0X21ldGhvZF9jb250ZXh0CiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVf
cG9saWNpZXMKK3dlYmtpdF93ZWJfdmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZQog
CiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRX
ZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcu
aAppbmRleCAyMzE0OWIwYmY3NGFkMGI2NjgzOTFmZjlkNmNmMWQ5OGZiYzE1OGE4Li5iNTBhNzM3
ZmQyODUyYWJiMDdiZGEwYzg5MjBlYjg2ODI2NTAwOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAtNTY1LDYgKzU2NSw5IEBAIHdl
YmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcKIFdFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKIHdlYmtpdF93ZWJf
dmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dl
Yl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZlICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rp
b25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNl
Y3Rpb25zLnR4dAppbmRleCA4MjVkNTEwMGI2YTY5YWNmNWE3YTIwOTUzODM3NmQyYzg1MmRiYWM4
Li45M2JlOTdlYWRkNjc2YzM1NWI1OWQ5MGE5NGQ5YmNlNzEzMjE4MDQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlv
bnMudHh0CkBAIC0yNjIsNiArMjYyLDcgQEAgd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90
b19wYWdlX2ZpbmlzaAogd2Via2l0X3dlYl92aWV3X3NldF9pbnB1dF9tZXRob2RfY29udGV4dAog
d2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9tZXRob2RfY29udGV4dAogd2Via2l0X3dlYl92aWV3
X2dldF93ZWJzaXRlX3BvbGljaWVzCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lzX3dlYl9wcm9jZXNz
X3Jlc3BvbnNpdmUKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktp
dEphdmFzY3JpcHRSZXN1bHQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425876</attachid>
            <date>2021-04-13 09:14:03 -0700</date>
            <delta_ts>2021-04-13 10:24:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224359-20210413181401.patch</filename>
            <type>text/plain</type>
            <size>13256</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyOTk5ZTc2MDYxZTMzOTRm
MTA0Y2JlYzBjYmI3OTViMTAwMGVlZTQuLmIwNzc4NzBjMjk1MmFkZmQ0Y2I5Y2RkMjA5MjFhZDg3
MjU2MDJkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDQtMTMgIE1pZ3VlbCBH
b21leiAgPG1hZ29tZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBhIHBy
b3BlcnR5IHRvIHRoZSBXZWJLaXRXZWJWaWV3IGluZGljYXRpbmcgd2hldGhlciB0aGUgd2ViIHBy
b2Nlc3MgaXMgcmVzcG9uc2l2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI0MzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgcHJvcGVydHkgdG8gV2ViS2l0V2ViVmlldyBpbmRpY2F0aW5nIHdo
ZXRoZXIgdGhlIHdlYiBwcm9jZXNzZXMgdXNlZCBhcmUgcmVzcG9uc2l2ZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uQ2xpZW50LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0V2ViVmlld0dldFByb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdTZXRJc1dlYlByb2Nlc3NSZXNwb25zaXZlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAt
c2VjdGlvbnMudHh0OgorCiAyMDIxLTA0LTEzICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5j
b20+CiAKICAgICAgICAgW21hY09TXSBOZXRmbGl4IHZpZGVvcyBvcGVuZWQgaW4gYmFja2dyb3Vu
ZCB0YWIgbmV2ZXIgYmVjb21lIHBsYXlhYmxlIGFmdGVyIGZvcmVncm91bmRpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlv
bkNsaWVudC5jcHAKaW5kZXggOGIzOGM0ZjhjZDdlYTgwMDU2YjNiYmExMzI5Mjc5ZWIwZmE3NjZh
ZS4uNDMxMWQwODQ4ZTgxMDc1NDVkMzQzN2YzODQ5MTgyNGZmYzRhNWQ3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvbkNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlv
bkNsaWVudC5jcHAKQEAgLTEyNSw2ICsxMjUsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Via2l0V2ViVmll
d1NldElzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUobV93ZWJWaWV3LCB0cnVlKTsKKyAgICB9CisKKyAg
ICB2b2lkIHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoV2ViS2l0OjpXZWJQYWdlUHJveHkm
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Via2l0V2ViVmlld1NldElzV2ViUHJvY2Vzc1Jl
c3BvbnNpdmUobV93ZWJWaWV3LCBmYWxzZSk7CisgICAgfQorCiAgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSYsIFJlZjxBUEk6Ok5hdmlnYXRpb25B
Y3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSBvdmVycmlkZQogICAg
IHsKICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlIGRlY2lzaW9uVHlwZSA9IG5hdmln
YXRpb25BY3Rpb24tPnRhcmdldEZyYW1lKCkgPyBXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OX1RZUEVf
TkFWSUdBVElPTl9BQ1RJT04gOiBXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OX1RZUEVfTkVXX1dJTkRP
V19BQ1RJT047CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYlZpZXcuY3BwCmluZGV4IDA1ZTFjNWYzM2M1MzZmOTFkZTkyYTgwODE2YmNmOTQ3ZjY2MzVh
MjcuLjM3NGMwNTI2ODk4MzVkNDkwZWFkYTcwZTcyNGU0ODIyNDY3MDAwMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0y
MDQsNiArMjA0LDcgQEAgZW51bSB7CiAgICAgUFJPUF9QQUdFX0lELAogICAgIFBST1BfSVNfTVVU
RUQsCiAgICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTLAorICAgIFBST1BfSVNfV0VCX1BST0NFU1Nf
UkVTUE9OU0lWRSwKIAogICAgIE5fUFJPUEVSVElFUywKIH07CkBAIC0zMTIsNiArMzEzLDggQEAg
c3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRl
UG9saWNpZXM+IHdlYnNpdGVQb2xpY2llczsKIAogICAgIGRvdWJsZSB0ZXh0U2NhbGVGYWN0b3I7
CisKKyAgICBib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmU7CiB9OwogCiBzdGF0aWMgZ3VpbnQg
c2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC04MTEsNiArODE0LDggQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICAgICAg
d2ViVmlldy0+cHJpdi0+dGV4dFNjYWxlRmFjdG9yID0gV2ViQ29yZTo6c2NyZWVuRFBJKCkgLyA5
Ni47CiAgICAgICAgIHBhZ2Uuc2V0VGV4dFpvb21GYWN0b3Ioem9vbUZhY3RvciAqIHdlYlZpZXct
PnByaXYtPnRleHRTY2FsZUZhY3Rvcik7CiAgICAgfSwgd2ViVmlldyk7CisKKyAgICBwcml2LT5p
c1dlYlByb2Nlc3NSZXNwb25zaXZlID0gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2Vi
Vmlld1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCkBAIC05MzQsNiArOTM5LDkgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcElkLCBHVmFsdWUqIHZhbHUKICAgICBjYXNlIFBST1BfV0VCU0lURV9QT0xJQ0lFUzoKICAg
ICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNp
dGVfcG9saWNpZXMod2ViVmlldykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSVNf
V0VCX1BST0NFU1NfUkVTUE9OU0lWRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgd2Via2l0X3dlYl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZlKHdlYlZpZXcp
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9J
TlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOwogICAgIH0KQEAg
LTEzMTMsOCArMTMyMSwyNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIFdFQktJVF9U
WVBFX1dFQlNJVEVfUE9MSUNJRVMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFn
cz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKIAor
ICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6aXMtd2ViLXByb2Nlc3MtcmVzcG9uc2l2ZToK
KyAgICAgKgorICAgICAqIFdoZXRoZXIgdGhlIHdlYiBwcm9jZXNzIGN1cnJlbnRseSBhc3NvY2lh
dGVkIHRvIHRoZSAjV2ViS2l0V2ViVmlldyBpcyByZXNwb25zaXZlLgorICAgICAqCisgICAgICog
U2luY2U6IDIuMzQKKyAgICAgKi8KKyAgICBzT2JqUHJvcGVydGllc1tQUk9QX0lTX1dFQl9QUk9D
RVNTX1JFU1BPTlNJVkVdID0KKyAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAg
ICAgICAiaXMtd2ViLXByb2Nlc3MtcmVzcG9uc2l2ZSIsCisgICAgICAgICAgICAiSXMgV2ViIFBy
b2Nlc3MgUmVzcG9uc2l2ZSIsCisgICAgICAgICAgICBfKCJXaGV0aGVyIHRoZSB3ZWIgcHJvY2Vz
cyBjdXJyZW50bHkgYXNzb2NpYXRlZCB0byB0aGUgd2ViIHZpZXcgaXMgcmVzcG9uc2l2ZSIpLAor
ICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSk7CisK
ICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnRpZXMoZ09iamVjdENsYXNzLCBOX1BS
T1BFUlRJRVMsIHNPYmpQcm9wZXJ0aWVzKTsKIAorCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2Vi
Vmlldzo6bG9hZC1jaGFuZ2VkOgogICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3
IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZApAQCAtNDcwMywzICs0NzI3LDI5IEBAIFdl
YktpdFdlYnNpdGVQb2xpY2llcyogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVz
KFdlYktpdFdlYlZpZXcqIHdlYlZpCiAKICAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+d2Vic2l0
ZVBvbGljaWVzLmdldCgpOwogfQorCit2b2lkIHdlYmtpdFdlYlZpZXdTZXRJc1dlYlByb2Nlc3NS
ZXNwb25zaXZlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGJvb2wgaXNSZXNwb25zaXZlKQorewor
ICAgIGlmICh3ZWJWaWV3LT5wcml2LT5pc1dlYlByb2Nlc3NSZXNwb25zaXZlID09IGlzUmVzcG9u
c2l2ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2ViVmlldy0+cHJpdi0+aXNXZWJQcm9jZXNz
UmVzcG9uc2l2ZSA9IGlzUmVzcG9uc2l2ZTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qo
d2ViVmlldyksICJpcy13ZWItcHJvY2Vzcy1yZXNwb25zaXZlIik7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl92aWV3X2lzX3dlYl9wcm9jZXNzX3Jlc3BvbnNpdmU6CisgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXQgd2hldGhlciB0aGUgY3VycmVudCB3ZWIgcHJvY2Vz
cyBvZiBhICNXZWJLaXRXZWJWaWV3IGlzIHJlc3BvbnNpdmUuCisgKgorICogUmV0dXJuczogJVRS
VUUgaWYgdGhlIHdlYiBwcm9jZXNzIGF0dGFjaGVkIHRvIEB3ZWJfdmlldyBpcyByZXNwb25zaXZl
LCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK2dib29sZWFu
IHdlYmtpdF93ZWJfdmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZShXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSwgRkFMU0UpOworCisgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmlzV2Vi
UHJvY2Vzc1Jlc3BvbnNpdmU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCBiOWU1NmZjNTVmZDdkZmE4
MjFmNzg5MjY0YjBjMTVmOWI0YzdiNDEyLi4zZjEzNzUzOGJhYTFhMzQzMzc3OTJhNWFjMDhiYTBl
YzhlNWUwYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTEyMCwzICsxMjAsNCBAQCB2b2lkIHdlYmtp
dFdlYlZpZXdTZXRDb21wb3NpdGlvbihXZWJLaXRXZWJWaWV3KiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgVmVjdG9yPFdlYgogdm9pZCB3ZWJraXRXZWJWaWV3Q29uZmlybUNvbXBvc2l0aW9uKFdlYktp
dFdlYlZpZXcqLCBjb25zdCBTdHJpbmcmKTsKIHZvaWQgd2Via2l0V2ViVmlld0NhbmNlbENvbXBv
c2l0aW9uKFdlYktpdFdlYlZpZXcqLCBjb25zdCBTdHJpbmcmKTsKIHZvaWQgd2Via2l0V2ViVmll
d0RlbGV0ZVN1cnJvdW5kaW5nKFdlYktpdFdlYlZpZXcqLCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBj
aGFyYWN0ZXJDb3VudCk7Cit2b2lkIHdlYmtpdFdlYlZpZXdTZXRJc1dlYlByb2Nlc3NSZXNwb25z
aXZlKFdlYktpdFdlYlZpZXcqLCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYWM1MTY4M2I2NzVkNWE5OGI2NjU1MzIzZjlh
NTFjNDllNzYyM2ExZS4uZjFhZjQ5YWJlYTFmMDdiOGU4NmU2NTA0YzYyZGI5YWZkYmFlZTNmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgK
QEAgLTU4OSw2ICs1ODksOCBAQCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250
ZXh0ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3CiBXRUJLSVRfQVBJIFdlYktpdFdlYnNpdGVQ
b2xpY2llcyAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9B
UEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfdmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2
ZSAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAogR19FTkRf
REVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggZjFjZmE0NGM3Mjc4
MzRiZDEwYmE3N2U3OTMzZTkwZjg5OWY4MGE3YS4uZDZjNWRkNDE4MDZiYTE5YjMxOTNkNmJjNjNl
YTcyNDQ2YjgxZDExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0yOTAs
NiArMjkwLDcgQEAgd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaAog
d2Via2l0X3dlYl92aWV3X3NldF9pbnB1dF9tZXRob2RfY29udGV4dAogd2Via2l0X3dlYl92aWV3
X2dldF9pbnB1dF9tZXRob2RfY29udGV4dAogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3Bv
bGljaWVzCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lzX3dlYl9wcm9jZXNzX3Jlc3BvbnNpdmUKIAog
PFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1
bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
Vmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgK
aW5kZXggMjMxNDliMGJmNzRhZDBiNjY4MzkxZmY5ZDZjZjFkOThmYmMxNThhOC4uYjUwYTczN2Zk
Mjg1MmFiYjA3YmRhMGM4OTIwZWI4NjgyNjUwMDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKQEAgLTU2NSw2ICs1NjUsOSBAQCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0ICAgICAgICAgICAgIChXZWJLaXRX
ZWJWaWV3CiBXRUJLSVRfQVBJIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqCiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJf
dmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZSAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgKndlYl92aWV3KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9u
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0
aW9ucy50eHQKaW5kZXggODI1ZDUxMDBiNmE2OWFjZjVhN2EyMDk1MzgzNzZkMmM4NTJkYmFjOC4u
OTNiZTk3ZWFkZDY3NmMzNTViNTlkOTBhOTRkOWJjZTcxMzIxODA0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25z
LnR4dApAQCAtMjYyLDYgKzI2Miw3IEBAIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9f
cGFnZV9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19zZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKIHdl
YmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19n
ZXRfd2Vic2l0ZV9wb2xpY2llcword2Via2l0X3dlYl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19y
ZXNwb25zaXZlCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggNGFjNmIwOWRhNWI1MDFlMzAxMWFmMDBlODMxYmJmOTY1NWIzOTYxNC4uY2Uw
MDhiOTdkODljODMwMjZmNThmYmY4OTZmN2IwNzA5MTc2NGI0NSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA0
LTEzICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSBBZGQgYSBwcm9wZXJ0eSB0byB0aGUgV2ViS2l0V2ViVmlldyBpbmRpY2F0aW5nIHdoZXRo
ZXIgdGhlIHdlYiBwcm9jZXNzIGlzIHJlc3BvbnNpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDM1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHVuaXQgdGVzdCBmb3Igd2ViIHByb2Nlc3Mg
cmVzcG9uc2l2ZW5lc3MgQVBJLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3SXNXZWJQ
cm9jZXNzUmVzcG9uc2l2ZSk6CisgICAgICAgIChiZWZvcmVBbGwpOgorCiAyMDIxLTA0LTEzICBB
YWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWxldGUgdmFy
aW91cyBvbGQgRVdTIHNwZWNpZmljIHNjcmlwdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDU5
YmUxZmRlODQ5YWVmMjU2MGE5ZTFjNDg1ZmEwYjBjNDM0YTU2ZWEuLmIyMzc1MTM2MDRjYzhkNDIy
OGVkYmY4OTEwNmI5NTZiNDQ2MGVjODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTE3Nyw2
ICsxMTc3LDU2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0b3BsYXlQb2xpY3koV2ViVmll
d1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF93
ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRvcGxheV9wb2xpY3kocG9saWNpZXMpLCA9PSwgV0VCS0lU
X0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQpOwogfQogCitjbGFzcyBXZWJWaWV3SXNXZWJQ
cm9jZXNzUmVzcG9uc2l2ZVRlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisgICAg
TUFLRV9HTElCX1RFU1RfRklYVFVSRShXZWJWaWV3SXNXZWJQcm9jZXNzUmVzcG9uc2l2ZVRlc3Qp
OworCisgICAgc3RhdGljIHZvaWQgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZUNoYW5nZWQoV2ViS2l0
V2ViVmlldyogdmlldywgR1BhcmFtU3BlYyosIFdlYlZpZXdJc1dlYlByb2Nlc3NSZXNwb25zaXZl
VGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
YnlfZnVuYyh0ZXN0LT5tX3dlYlZpZXcsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlzV2ViUHJv
Y2Vzc1Jlc3BvbnNpdmVDaGFuZ2VkKSwgdGVzdCk7CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQo
dGVzdC0+bV9tYWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCB3YWl0VW50aWxJc1dlYlByb2Nl
c3NSZXNwb25zaXZlQ2hhbmdlZCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1f
d2ViVmlldywgIm5vdGlmeTo6aXMtd2ViLXByb2Nlc3MtcmVzcG9uc2l2ZSIsIEdfQ0FMTEJBQ0so
aXNXZWJQcm9jZXNzUmVzcG9uc2l2ZUNoYW5nZWQpLCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xv
b3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KK307CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
SXNXZWJQcm9jZXNzUmVzcG9uc2l2ZShXZWJWaWV3SXNXZWJQcm9jZXNzUmVzcG9uc2l2ZVRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGhhbmdIVE1M
ID0KKyAgICAgICAgIjxodG1sPiIKKyAgICAgICAgIiA8Ym9keT4iCisgICAgICAgICIgIDxzY3Jp
cHQ+IgorICAgICAgICAiICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsiCisgICAgICAgICIgICAg
dmFyIHN0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7IgorICAgICAgICAiICAgIHZhciBlbmQg
PSBzdGFydDsiCisgICAgICAgICIgICAgIHdoaWxlKGVuZCA8IHN0YXJ0ICsgNDAwMCkgeyIKKyAg
ICAgICAgIiAgICAgIGVuZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOyIKKyAgICAgICAgIiAgICAg
fSIKKyAgICAgICAgIiAgICB9LCA1MDApOyIKKyAgICAgICAgIiAgPC9zY3JpcHQ+IgorICAgICAg
ICAiIDwvYm9keT4iCisgICAgICAgICI8L2h0bWw+IjsKKworICAgIGdfYXNzZXJ0X3RydWUod2Vi
a2l0X3dlYl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZlKHRlc3QtPm1fd2ViVmll
dykpOworICAgIHRlc3QtPmxvYWRIdG1sKGhhbmdIVE1MLCBudWxscHRyKTsKKyAgICB0ZXN0LT53
YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICAvLyBXYWl0IDEgc2Vjb25kLCBzbyB0aGUganMg
d2hpbGUgbG9vcCBraWNrcyBpbiBhbmQgYmxvY2tzIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlbiB0cnkg
dG8gbG9hZCBhIG5ldworICAgIC8vIHBhZ2UuIEFzIHRoZSB3ZWIgcHJvY2VzcyBpcyBidXN5IHRo
aXMgd29uJ3Qgd29yaywgYW5kIGFmdGVyIDMgc2Vjb25kcyB0aGUgd2ViIHByb2Nlc3Mgd2lsbCBi
ZSBtYXJrZWQKKyAgICAvLyBhcyB1bnJlc3BvbnNpdmUuCisgICAgdGVzdC0+d2FpdCgxKTsKKyAg
ICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PC9odG1sPiIsIG51bGxwdHIpOworICAgIHRlc3QtPndh
aXRVbnRpbElzV2ViUHJvY2Vzc1Jlc3BvbnNpdmVDaGFuZ2VkKCk7CisgICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X3dlYl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZlKHRlc3QtPm1f
d2ViVmlldykpOworICAgIC8vIDUwMG1zIGFmdGVyIHRoZSB3ZWIgcHJvY2VzcyBpcyBtYXJrZWQg
YXMgdW5yZXNwb25zaXZlLCB0aGUganMgd2hpbGUgbG9vcCB3aWxsIGZpbmlzaCBhbmQgdGhlIHBy
b2Nlc3MKKyAgICAvLyB3aWxsIGJlIHJlc3BvbnNpdmUgYWdhaW4sIGZpbmlzaGluZyB0aGUgcGVu
ZGluZyBsb2FkLgorICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZlKHRl
c3QtPm1fd2ViVmlldykpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0JhY2tncm91bmRD
b2xvcihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICNpZiBQTEFURk9STShH
VEspCkBAIC0xNTc4LDYgKzE2MjgsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAjaWYgUExBVEZPUk0o
V1BFKSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQogICAgIEF1ZGlvUmVu
ZGVyaW5nV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJleHRlcm5hbC1hdWRpby1y
ZW5kZXJpbmciLCB0ZXN0V2ViVmlld0V4dGVybmFsQXVkaW9SZW5kZXJpbmcpOwogI2VuZGlmCisg
ICAgV2ViVmlld0lzV2ViUHJvY2Vzc1Jlc3BvbnNpdmVUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAiaXMtd2ViLXByb2Nlc3MtcmVzcG9uc2l2ZSIsIHRlc3RXZWJWaWV3SXNXZWJQcm9jZXNzUmVz
cG9uc2l2ZSk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425881</attachid>
            <date>2021-04-13 10:24:37 -0700</date>
            <delta_ts>2021-04-14 00:44:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224359-20210413192436.patch</filename>
            <type>text/plain</type>
            <size>13201</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY2ZWE5NDE3MDhjMzhjZTRj
YWMwYTFiMGJjZjcwZDY3MDcwMDQ2NzQuLjYxNDY5MTM3Yzk0ZmZjYTFjMjY2N2Q1MzE2MDI5ZGQy
MGY2NTBjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDQtMTMgIE1pZ3VlbCBH
b21leiAgPG1hZ29tZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBhIHBy
b3BlcnR5IHRvIHRoZSBXZWJLaXRXZWJWaWV3IGluZGljYXRpbmcgd2hldGhlciB0aGUgd2ViIHBy
b2Nlc3MgaXMgcmVzcG9uc2l2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI0MzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRyaWFuIFBlcmV6IGRl
IENhc3Ryby4KKworICAgICAgICBBZGQgYSBwcm9wZXJ0eSB0byBXZWJLaXRXZWJWaWV3IGluZGlj
YXRpbmcgd2hldGhlciB0aGUgd2ViIHByb2Nlc3NlcyB1c2VkIGFyZSByZXNwb25zaXZlLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJv
cGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAo
d2Via2l0V2ViVmlld1NldElzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mv
d3BlLTEuMC1zZWN0aW9ucy50eHQ6CisKIDIwMjEtMDQtMTMgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc1
ODg5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
TmF2aWdhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXROYXZpZ2F0aW9uQ2xpZW50LmNwcAppbmRleCA4YjM4YzRmOGNkN2VhODAwNTZiM2JiYTEz
MjkyNzllYjBmYTc2NmFlLi40MzExZDA4NDhlODEwNzU0NWQzNDM3ZjM4NDkxODI0ZmZjNGE1ZDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZp
Z2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXROYXZpZ2F0aW9uQ2xpZW50LmNwcApAQCAtMTI1LDYgKzEyNSwxNiBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgdm9pZCBwcm9jZXNzRGlkQmVjb21l
UmVzcG9uc2l2ZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICB3ZWJraXRXZWJWaWV3U2V0SXNXZWJQcm9jZXNzUmVzcG9uc2l2ZShtX3dlYlZpZXcsIHRydWUp
OworICAgIH0KKworICAgIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYpIG92ZXJyaWRlCisgICAgeworICAgICAgICB3ZWJraXRXZWJWaWV3U2V0
SXNXZWJQcm9jZXNzUmVzcG9uc2l2ZShtX3dlYlZpZXcsIGZhbHNlKTsKKyAgICB9CisKICAgICB2
b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5JiwgUmVmPEFQ
STo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBSZWY8V2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8p
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUgZGVjaXNp
b25UeXBlID0gbmF2aWdhdGlvbkFjdGlvbi0+dGFyZ2V0RnJhbWUoKSA/IFdFQktJVF9QT0xJQ1lf
REVDSVNJT05fVFlQRV9OQVZJR0FUSU9OX0FDVElPTiA6IFdFQktJVF9QT0xJQ1lfREVDSVNJT05f
VFlQRV9ORVdfV0lORE9XX0FDVElPTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMDVlMWM1ZjMzYzUzNmY5MWRlOTJhODA4
MTZiY2Y5NDdmNjYzNWEyNy4uZDQxOWJkNGU4YzEyOTI4NTVmZDc5NmU1MmViYTc0Njk1YmE5YzJi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlldy5jcHAKQEAgLTIwNCw2ICsyMDQsNyBAQCBlbnVtIHsKICAgICBQUk9QX1BBR0VfSUQsCiAg
ICAgUFJPUF9JU19NVVRFRCwKICAgICBQUk9QX1dFQlNJVEVfUE9MSUNJRVMsCisgICAgUFJPUF9J
U19XRUJfUFJPQ0VTU19SRVNQT05TSVZFLAogCiAgICAgTl9QUk9QRVJUSUVTLAogfTsKQEAgLTMx
Miw2ICszMTMsOCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICBHUmVmUHRy
PFdlYktpdFdlYnNpdGVQb2xpY2llcz4gd2Vic2l0ZVBvbGljaWVzOwogCiAgICAgZG91YmxlIHRl
eHRTY2FsZUZhY3RvcjsKKworICAgIGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZTsKIH07CiAK
IHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTgxMSw2ICs4
MTQsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2Jq
ZWN0KQogICAgICAgICB3ZWJWaWV3LT5wcml2LT50ZXh0U2NhbGVGYWN0b3IgPSBXZWJDb3JlOjpz
Y3JlZW5EUEkoKSAvIDk2LjsKICAgICAgICAgcGFnZS5zZXRUZXh0Wm9vbUZhY3Rvcih6b29tRmFj
dG9yICogd2ViVmlldy0+cHJpdi0+dGV4dFNjYWxlRmFjdG9yKTsKICAgICB9LCB3ZWJWaWV3KTsK
KworICAgIHByaXYtPmlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUgPSB0cnVlOwogfQogCiBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKQEAgLTkzNCw2
ICs5MzksOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAgIGNhc2UgUFJPUF9XRUJTSVRF
X1BPTElDSUVTOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJf
dmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9JU19XRUJfUFJPQ0VTU19SRVNQT05TSVZFOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lzX3dlYl9wcm9jZXNzX3Jlc3Bv
bnNpdmUod2ViVmlldykpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBH
X09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3Bl
Yyk7CiAgICAgfQpAQCAtMTMxMyw2ICsxMzIxLDIxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAg
ICAgICAgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUywKICAgICAgICAgICAgIHN0YXRpY19j
YXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJV
Q1RfT05MWSkpOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzppcy13ZWItcHJvY2Vz
cy1yZXNwb25zaXZlOgorICAgICAqCisgICAgICogV2hldGhlciB0aGUgd2ViIHByb2Nlc3MgY3Vy
cmVudGx5IGFzc29jaWF0ZWQgdG8gdGhlICNXZWJLaXRXZWJWaWV3IGlzIHJlc3BvbnNpdmUuCisg
ICAgICoKKyAgICAgKiBTaW5jZTogMi4zNAorICAgICAqLworICAgIHNPYmpQcm9wZXJ0aWVzW1BS
T1BfSVNfV0VCX1BST0NFU1NfUkVTUE9OU0lWRV0gPQorICAgICAgICBnX3BhcmFtX3NwZWNfYm9v
bGVhbigKKyAgICAgICAgICAgICJpcy13ZWItcHJvY2Vzcy1yZXNwb25zaXZlIiwKKyAgICAgICAg
ICAgICJJcyBXZWIgUHJvY2VzcyBSZXNwb25zaXZlIiwKKyAgICAgICAgICAgIF8oIldoZXRoZXIg
dGhlIHdlYiBwcm9jZXNzIGN1cnJlbnRseSBhc3NvY2lhdGVkIHRvIHRoZSB3ZWIgdmlldyBpcyBy
ZXNwb25zaXZlIiksCisgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydGllcyhnT2Jq
ZWN0Q2xhc3MsIE5fUFJPUEVSVElFUywgc09ialByb3BlcnRpZXMpOwogCiAgICAgLyoqCkBAIC00
NzAzLDMgKzQ3MjYsMjkgQEAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3dlYnNpdGVfcG9saWNpZXMoV2ViS2l0V2ViVmlldyogd2ViVmkKIAogICAgIHJldHVybiB3
ZWJWaWV3LT5wcml2LT53ZWJzaXRlUG9saWNpZXMuZ2V0KCk7CiB9CisKK3ZvaWQgd2Via2l0V2Vi
Vmlld1NldElzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgYm9v
bCBpc1Jlc3BvbnNpdmUpCit7CisgICAgaWYgKHdlYlZpZXctPnByaXYtPmlzV2ViUHJvY2Vzc1Jl
c3BvbnNpdmUgPT0gaXNSZXNwb25zaXZlKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJWaWV3
LT5wcml2LT5pc1dlYlByb2Nlc3NSZXNwb25zaXZlID0gaXNSZXNwb25zaXZlOworICAgIGdfb2Jq
ZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNbUFJP
UF9JU19XRUJfUFJPQ0VTU19SRVNQT05TSVZFXSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92
aWV3X2lzX3dlYl9wcm9jZXNzX3Jlc3BvbnNpdmU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdl
YlZpZXcKKyAqCisgKiBHZXQgd2hldGhlciB0aGUgY3VycmVudCB3ZWIgcHJvY2VzcyBvZiBhICNX
ZWJLaXRXZWJWaWV3IGlzIHJlc3BvbnNpdmUuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgdGhl
IHdlYiBwcm9jZXNzIGF0dGFjaGVkIHRvIEB3ZWJfdmlldyBpcyByZXNwb25zaXZlLCBvciAlRkFM
U0Ugb3RoZXJ3aXNlLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK2dib29sZWFuIHdlYmtpdF93
ZWJfdmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSwgRkFMU0UpOworCisgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmlzV2ViUHJvY2Vzc1Jl
c3BvbnNpdmU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCBiOWU1NmZjNTVmZDdkZmE4MjFmNzg5MjY0
YjBjMTVmOWI0YzdiNDEyLi4zZjEzNzUzOGJhYTFhMzQzMzc3OTJhNWFjMDhiYTBlYzhlNWUwYjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYlZpZXdQcml2YXRlLmgKQEAgLTEyMCwzICsxMjAsNCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdT
ZXRDb21wb3NpdGlvbihXZWJLaXRXZWJWaWV3KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9y
PFdlYgogdm9pZCB3ZWJraXRXZWJWaWV3Q29uZmlybUNvbXBvc2l0aW9uKFdlYktpdFdlYlZpZXcq
LCBjb25zdCBTdHJpbmcmKTsKIHZvaWQgd2Via2l0V2ViVmlld0NhbmNlbENvbXBvc2l0aW9uKFdl
YktpdFdlYlZpZXcqLCBjb25zdCBTdHJpbmcmKTsKIHZvaWQgd2Via2l0V2ViVmlld0RlbGV0ZVN1
cnJvdW5kaW5nKFdlYktpdFdlYlZpZXcqLCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBjaGFyYWN0ZXJD
b3VudCk7Cit2b2lkIHdlYmtpdFdlYlZpZXdTZXRJc1dlYlByb2Nlc3NSZXNwb25zaXZlKFdlYktp
dFdlYlZpZXcqLCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmgKaW5kZXggYWM1MTY4M2I2NzVkNWE5OGI2NjU1MzIzZjlhNTFjNDllNzYy
M2ExZS4uZjFhZjQ5YWJlYTFmMDdiOGU4NmU2NTA0YzYyZGI5YWZkYmFlZTNmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTU4OSw2
ICs1ODksOCBAQCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0ICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3CiBXRUJLSVRfQVBJIFdlYktpdFdlYnNpdGVQb2xpY2llcyAq
CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF93ZWJfdmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZSAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAogR19FTkRfREVDTFMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggZjFjZmE0NGM3Mjc4MzRiZDEwYmE3
N2U3OTMzZTkwZjg5OWY4MGE3YS4uZDZjNWRkNDE4MDZiYTE5YjMxOTNkNmJjNjNlYTcyNDQ2Yjgx
ZDExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0yOTAsNiArMjkwLDcg
QEAgd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaAogd2Via2l0X3dl
Yl92aWV3X3NldF9pbnB1dF9tZXRob2RfY29udGV4dAogd2Via2l0X3dlYl92aWV3X2dldF9pbnB1
dF9tZXRob2RfY29udGV4dAogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzCit3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2lzX3dlYl9wcm9jZXNzX3Jlc3BvbnNpdmUKIAogPFNVQlNFQ1RJ
T04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKaW5kZXggMjMx
NDliMGJmNzRhZDBiNjY4MzkxZmY5ZDZjZjFkOThmYmMxNThhOC4uYjUwYTczN2ZkMjg1MmFiYjA3
YmRhMGM4OTIwZWI4NjgyNjUwMDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKQEAgLTU2NSw2ICs1NjUsOSBAQCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3CiBX
RUJLSVRfQVBJIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dl
YnNpdGVfcG9saWNpZXMgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfdmlld19nZXRf
aXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZSAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQK
aW5kZXggODI1ZDUxMDBiNmE2OWFjZjVhN2EyMDk1MzgzNzZkMmM4NTJkYmFjOC4uOTNiZTk3ZWFk
ZDY3NmMzNTViNTlkOTBhOTRkOWJjZTcxMzIxODA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dApAQCAt
MjYyLDYgKzI2Miw3IEBAIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5p
c2gKIHdlYmtpdF93ZWJfdmlld19zZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKIHdlYmtpdF93ZWJf
dmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0
ZV9wb2xpY2llcword2Via2l0X3dlYl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZl
CiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0
UmVzdWx0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNWQ2M2Y4M2QzZmRhNjYyNTgxNTViZmE2NTk3YmI5YjBjNzk3MjM3OS4uOWM3YmI2ZGJmZjY2
NWE0ODcxMGFiZWJhMTE1Mzg3MTZlY2E3YTcxNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA0LTEzICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQg
YSBwcm9wZXJ0eSB0byB0aGUgV2ViS2l0V2ViVmlldyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHdl
YiBwcm9jZXNzIGlzIHJlc3BvbnNpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDM1OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFkcmlhbiBQZXJl
eiBkZSBDYXN0cm8uCisKKyAgICAgICAgQWRkZWQgdW5pdCB0ZXN0IGZvciB3ZWIgcHJvY2VzcyBy
ZXNwb25zaXZlbmVzcyBBUEkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdJc1dlYlBy
b2Nlc3NSZXNwb25zaXZlKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisKIDIwMjEtMDQtMTIgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TiAocjI3NTc5Mik6IFsgaU9TIHdrMiBdIFRlc3RXZWJLaXRBUEkuSW5kZXhlZERCLkRhdGFiYXNl
UHJvY2Vzc0tpbGwgaXMgYSBmbGFrZXkgdGltZW91dApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXgg
NTliZTFmZGU4NDlhZWYyNTYwYTllMWM0ODVmYTBiMGM0MzRhNTZlYS4uYjIzNzUxMzYwNGNjOGQ0
MjI4ZWRiZjg5MTA2Yjk1NmI0NDYwZWM4MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0xMTc3
LDYgKzExNzcsNTYgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRvcGxheVBvbGljeShXZWJW
aWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0
X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeShwb2xpY2llcyksID09LCBXRUJL
SVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCk7CiB9CiAKK2NsYXNzIFdlYlZpZXdJc1dl
YlByb2Nlc3NSZXNwb25zaXZlVGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAg
ICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFdlYlZpZXdJc1dlYlByb2Nlc3NSZXNwb25zaXZlVGVz
dCk7CisKKyAgICBzdGF0aWMgdm9pZCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlQ2hhbmdlZChXZWJL
aXRXZWJWaWV3KiB2aWV3LCBHUGFyYW1TcGVjKiwgV2ViVmlld0lzV2ViUHJvY2Vzc1Jlc3BvbnNp
dmVUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9ieV9mdW5jKHRlc3QtPm1fd2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oaXNXZWJQ
cm9jZXNzUmVzcG9uc2l2ZUNoYW5nZWQpLCB0ZXN0KTsKKyAgICAgICAgZ19tYWluX2xvb3BfcXVp
dCh0ZXN0LT5tX21haW5Mb29wKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRVbnRpbElzV2ViUHJv
Y2Vzc1Jlc3BvbnNpdmVDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV93ZWJWaWV3LCAibm90aWZ5Ojppcy13ZWItcHJvY2Vzcy1yZXNwb25zaXZlIiwgR19DQUxMQkFD
Syhpc1dlYlByb2Nlc3NSZXNwb25zaXZlQ2hhbmdlZCksIHRoaXMpOworICAgICAgICBnX21haW5f
bG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgfQorfTsKKworc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdJc1dlYlByb2Nlc3NSZXNwb25zaXZlKFdlYlZpZXdJc1dlYlByb2Nlc3NSZXNwb25zaXZlVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciogaGFuZ0hU
TUwgPQorICAgICAgICAiPGh0bWw+IgorICAgICAgICAiIDxib2R5PiIKKyAgICAgICAgIiAgPHNj
cmlwdD4iCisgICAgICAgICIgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyIKKyAgICAgICAgIiAg
ICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsiCisgICAgICAgICIgICAgdmFyIGVu
ZCA9IHN0YXJ0OyIKKyAgICAgICAgIiAgICAgd2hpbGUoZW5kIDwgc3RhcnQgKyA0MDAwKSB7Igor
ICAgICAgICAiICAgICAgZW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7IgorICAgICAgICAiICAg
ICB9IgorICAgICAgICAiICAgIH0sIDUwMCk7IgorICAgICAgICAiICA8L3NjcmlwdD4iCisgICAg
ICAgICIgPC9ib2R5PiIKKyAgICAgICAgIjwvaHRtbD4iOworCisgICAgZ19hc3NlcnRfdHJ1ZSh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2lzX3dlYl9wcm9jZXNzX3Jlc3BvbnNpdmUodGVzdC0+bV93ZWJW
aWV3KSk7CisgICAgdGVzdC0+bG9hZEh0bWwoaGFuZ0hUTUwsIG51bGxwdHIpOworICAgIHRlc3Qt
PndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIC8vIFdhaXQgMSBzZWNvbmQsIHNvIHRoZSBq
cyB3aGlsZSBsb29wIGtpY2tzIGluIGFuZCBibG9ja3MgdGhlIHdlYiBwcm9jZXNzLiBUaGVuIHRy
eSB0byBsb2FkIGEgbmV3CisgICAgLy8gcGFnZS4gQXMgdGhlIHdlYiBwcm9jZXNzIGlzIGJ1c3kg
dGhpcyB3b24ndCB3b3JrLCBhbmQgYWZ0ZXIgMyBzZWNvbmRzIHRoZSB3ZWIgcHJvY2VzcyB3aWxs
IGJlIG1hcmtlZAorICAgIC8vIGFzIHVucmVzcG9uc2l2ZS4KKyAgICB0ZXN0LT53YWl0KDEpOwor
ICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48L2h0bWw+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+
d2FpdFVudGlsSXNXZWJQcm9jZXNzUmVzcG9uc2l2ZUNoYW5nZWQoKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lzX3dlYl9wcm9jZXNzX3Jlc3BvbnNpdmUodGVzdC0+
bV93ZWJWaWV3KSk7CisgICAgLy8gNTAwbXMgYWZ0ZXIgdGhlIHdlYiBwcm9jZXNzIGlzIG1hcmtl
ZCBhcyB1bnJlc3BvbnNpdmUsIHRoZSBqcyB3aGlsZSBsb29wIHdpbGwgZmluaXNoIGFuZCB0aGUg
cHJvY2VzcworICAgIC8vIHdpbGwgYmUgcmVzcG9uc2l2ZSBhZ2FpbiwgZmluaXNoaW5nIHRoZSBw
ZW5kaW5nIGxvYWQuCisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lzX3dlYl9wcm9jZXNzX3Jlc3BvbnNpdmUo
dGVzdC0+bV93ZWJWaWV3KSk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QmFja2dyb3Vu
ZENvbG9yKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogI2lmIFBMQVRGT1JN
KEdUSykKQEAgLTE1NzgsNiArMTYyOCw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICNpZiBQTEFURk9S
TShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCiAgICAgQXVkaW9S
ZW5kZXJpbmdXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImV4dGVybmFsLWF1ZGlv
LXJlbmRlcmluZyIsIHRlc3RXZWJWaWV3RXh0ZXJuYWxBdWRpb1JlbmRlcmluZyk7CiAjZW5kaWYK
KyAgICBXZWJWaWV3SXNXZWJQcm9jZXNzUmVzcG9uc2l2ZVRlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
dyIsICJpcy13ZWItcHJvY2Vzcy1yZXNwb25zaXZlIiwgdGVzdFdlYlZpZXdJc1dlYlByb2Nlc3NS
ZXNwb25zaXZlKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>