<?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>59821</bug_id>
          
          <creation_ts>2011-04-29 12:42:32 -0700</creation_ts>
          <short_desc>[GTK] Untangle GtkAdjustments from WebCore</short_desc>
          <delta_ts>2011-05-09 17:34:50 -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>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>59276</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>joone.hur</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>395445</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-29 12:42:32 -0700</bug_when>
    <thetext>Currently GTK+ adjustments are attached to three places in WebKit: the WebKitWebView, the main frame ScrollView and main frame Scrollbars. The lifetime of main frame ScrollViews and Scrollbars is different than that of the WebKitWebView. 

* Scrollbars, in particular, may be created and destroyed hundreds of times during window resizes (if opaque resizing is enabled in the window manager).
* In the past, we have had many bugs and crashes due to not updating the GTK+ adjustments properly when ScrollViews appear and disappear.

Both of these issues stem from the fact that we are attaching something with a very long lifetime (the GtkAdjustment) to something with a much shorter lifetime (Scrollbars/ScrollView). Instead of letting WebCore deal directly with the GtkAdjustments, I propose that we simply let WebKit worry about them and attach them to the ChromeClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395455</commentid>
    <comment_count>1</comment_count>
      <attachid>91722</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-29 13:14:36 -0700</bug_when>
    <thetext>Created attachment 91722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395919</commentid>
    <comment_count>2</comment_count>
      <attachid>91722</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-01 09:43:46 -0700</bug_when>
    <thetext>Comment on attachment 91722
Patch

Should this be a helper class for the ChromeClientGtk?  It seems like a relatively encapsulatable concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396565</commentid>
    <comment_count>3</comment_count>
      <attachid>91959</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-02 12:57:45 -0700</bug_when>
    <thetext>Created attachment 91959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396567</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-02 13:00:30 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 91722 [details])
&gt; Should this be a helper class for the ChromeClientGtk?  It seems like a relatively encapsulatable concept.

Thanks for the comment. I completely agree with you and have uploaded a new patch which moves the logic out of ChromeClientGtk into a helper class named GtkAdjustmentWatcher.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400238</commentid>
    <comment_count>5</comment_count>
    <who name="Joone Hur">joone.hur</who>
    <bug_when>2011-05-08 07:54:43 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=59276 is also able to be fixed through this patch.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400472</commentid>
    <comment_count>6</comment_count>
      <attachid>91959</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-05-09 06:14:45 -0700</bug_when>
    <thetext>Comment on attachment 91959
Patch

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

I love, love, love this change. ♥ Only a couple comments, but it looks correct to me otherwise.

&gt; Source/WebKit/gtk/WebCoreSupport/GtkAdjustmentWatcher.cpp:43
&gt; +        gtk_adjustment_configure(adjustment, 0, 0, 0, 0, 0, 0); // These are the settings which remove the scrollbar.

Hrm. Is this documented behaviour? I guess if it works in both gtk2 and gtk3 we can pretty much rely on it, but it makes me nervous.

&gt; Source/WebKit/gtk/WebCoreSupport/GtkAdjustmentWatcher.cpp:75
&gt; +    // The fact that this method was called means that we need to update the scrollbars, but at the
&gt; +    // time of invocation they are not updated to reflect the scroll yet. We set a short timeout
&gt; +    // here, which means that they will be updated as soon as WebKit returns to the main loop.
&gt; +    g_timeout_add(0, reinterpret_cast&lt;GSourceFunc&gt;(updateAdjustmentCallback), 
&gt; +                  const_cast&lt;void*&gt;(static_cast&lt;const void*&gt;(this)));

Although I don&apos;t foresee any issues with using the default priority here, I think it makes sense to make this timeout use GTK+&apos;s relayout priority (which would be G_PRIORITY_HIGH_IDLE + 10). Also, do we have to worry here that the watcher may have disappeared in-between this call and the callback being called? Perhaps we should store the timeout id, and check for it in the destructor. Storing the ID would also make it possible to check here if an adjustment update has already been queued so you don&apos;t queue more than one unnecessarily.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:427
&gt; +    if (Page* page = core(webView))

I think I&apos;d prefer having the attribution in a line of its own before the if, as is usual. I was confused by a split second because the attribution is inside the if there heh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400872</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-09 16:16:11 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 91959 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91959&amp;action=review
&gt; 
&gt; I love, love, love this change. ♥ Only a couple comments, but it looks correct to me otherwise.
&gt; 
&gt; &gt; Source/WebKit/gtk/WebCoreSupport/GtkAdjustmentWatcher.cpp:43
&gt; &gt; +        gtk_adjustment_configure(adjustment, 0, 0, 0, 0, 0, 0); // These are the settings which remove the scrollbar.
&gt; 
&gt; Hrm. Is this documented behaviour? I guess if it works in both gtk2 and gtk3 we can pretty much rely on it, but it makes me nervous.

You&apos;re right in that this is not documented explicitly. This was what we were doing before to force no scrollbars as well. Zeroes are the default values of GtkAdjustment as well.

&gt; 
&gt; &gt; Source/WebKit/gtk/WebCoreSupport/GtkAdjustmentWatcher.cpp:75
&gt; &gt; +    // The fact that this method was called means that we need to update the scrollbars, but at the
&gt; &gt; +    // time of invocation they are not updated to reflect the scroll yet. We set a short timeout
&gt; &gt; +    // here, which means that they will be updated as soon as WebKit returns to the main loop.
&gt; &gt; +    g_timeout_add(0, reinterpret_cast&lt;GSourceFunc&gt;(updateAdjustmentCallback), 
&gt; &gt; +                  const_cast&lt;void*&gt;(static_cast&lt;const void*&gt;(this)));
&gt; 
&gt; Although I don&apos;t foresee any issues with using the default priority here, I think it makes sense to make this timeout use GTK+&apos;s relayout priority (which would be G_PRIORITY_HIGH_IDLE + 10). Also, do we have to worry here that the watcher may have disappeared in-between this call and the callback being called? Perhaps we should store the timeout id, and check for it in the destructor. Storing the ID would also make it possible to check here if an adjustment update has already been queued so you don&apos;t queue more than one unnecessarily.

Nice catch. I&apos;ve made the changes you requested (you can see them in the diff I uploaded).

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:427
&gt; &gt; +    if (Page* page = core(webView))
&gt; 
&gt; I think I&apos;d prefer having the attribution in a line of its own before the if, as is usual. I was confused by a split second because the attribution is inside the if there heh.

Okay. I&apos;ve split out the assignements from the if statements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400873</commentid>
    <comment_count>8</comment_count>
      <attachid>92878</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-09 16:17:05 -0700</bug_when>
    <thetext>Created attachment 92878
Diff from patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400878</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-09 16:25:03 -0700</bug_when>
    <thetext>Committed r86102: &lt;http://trac.webkit.org/changeset/86102&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400933</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-09 17:34:50 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/86102 might have broken GTK Linux 32-bit Release
The following tests are not passing:
scrollbars/custom-scrollbar-with-incomplete-style.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91722</attachid>
            <date>2011-04-29 13:14:36 -0700</date>
            <delta_ts>2011-05-02 12:57:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59821-20110429131438.patch</filename>
            <type>text/plain</type>
            <size>34352</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUzMjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ODBjNWEzNTJkMGE4YmZi
MzRmMDlmN2VjZDQ0ODQxZTYwMDYwYThmLi4yMGI4ZTllZDgwMjIxYjE5ODVjMjA3YmY3NWIxMmU1
ZWE1NWIwNDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDQtMjkgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFVudGFuZ2xlIEd0a0FkanVzdG1lbnRz
IGZyb20gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTk4MjEKKworICAgICAgICBDb21wbGV0ZWx5IHJlbW92ZSB0aGUgYWJpbGl0eSBmb3Ig
V2ViS2l0IHRvIHNldCBHdGtBZGp1c3RtZW50cyBvbiBTY3JvbGxWaWV3cworICAgICAgICBhbmQs
IGNvbnNlcXVlbnRseSwgU2Nyb2xsYmFycy4gSGFuZGxpbmcgYWRqdXN0bWVudCB1cGRhdGVzIGNh
biBub3cgYmUgbWFuYWdlZAorICAgICAgICBpbiBXZWJLaXQuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBUaGlzIGlzIGNvdmVyZWQgYnkgZXhpc3RpbmcgU2Nyb2xsYmFyIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6IHBsYXRmb3JtSW5pdCBhbmQgcGxhdGZvcm1E
ZXN0cm95IGNhbiBub3cgYmUgc2hhcmVkCisgICAgICAgIGJldHdlZW4gU2Nyb2xsVmlldy5jcHAg
YW5kIFNjcm9sbFZpZXdHdGsuY3BwLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDog
UmVtb3ZlIHVudXNlZCBtZXRob2RzLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9NYWluRnJhbWVT
Y3JvbGxiYXJHdGsuY3BwOgorICAgICAgICAoTWFpbkZyYW1lU2Nyb2xsYmFyR3RrOjpjcmVhdGUp
OiBObyBsb25nZXIgbmVlZCB0byBwYXNzIGluIHRoZSBhZGp1c3RtZW50LgorICAgICAgICAoTWFp
bkZyYW1lU2Nyb2xsYmFyR3RrOjpNYWluRnJhbWVTY3JvbGxiYXJHdGspOiBVcGRhdGUgdGhlIGNv
bW1lbnRzIGhlcmUuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL01haW5GcmFtZVNjcm9sbGJhckd0
ay5oOiBMb3RzIG9mIGNvZGUgcmVtb3ZhbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xs
Vmlld0d0ay5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y3JlYXRl
U2Nyb2xsYmFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3Jv
bGxiYXJNb2Rlcyk6IERpdHRvLgorICAgICAgICAqIHBsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsu
Y3BwOiBUaGlzIGZpbGUgbmVlZHMgdGhlIEdSZWZQdHJHdGsuaCBpbmNsdWRlIG5vdworICAgICAg
ICB0aGF0IGl0IGRvZXNuJ3QgcmVjZWl2ZSBpdCB0cmFuc2l0aXZlbHkuCisKIDIwMTEtMDQtMjkg
IFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAKaW5kZXggODM4OGNlMTE0YzhmZTE0YzdiYmNhODZlMTE2YWUwMmEyZmM0MmQxOC4uMTRhZGQw
Y2E4N2Q4YTZhMDgxYzI5ZGQ3YzBkNDdlYmVlNDBkOGUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKQEAgLTEyNDUsNyArMTI0NSw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6
c2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50JiBvcmlnaW4sIGJvb2wgdXBkYXRlUG9zaXRp
b25BdEFsCiAgICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMoc2Nyb2xsT2Zmc2V0KCkpOwogfQogCi0j
aWYgIVBMQVRGT1JNKFdYKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oRUZMKQorI2lm
ICFQTEFURk9STShXWCkgJiYgIVBMQVRGT1JNKEVGTCkKIAogdm9pZCBTY3JvbGxWaWV3OjpwbGF0
Zm9ybUluaXQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IDI0MzAy
OGU5NmYyNGY0NzA5OWQwYzJkZjc0ZGI5NTljY2NlMjg1ZjQuLjZmNjkyMmZmOTM1NDA2NGFhZDFj
YWU0ZGVhOWZmNmVjZjBmNDQxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgK
QEAgLTM5LDExICszOSw2IEBACiBAcHJvdG9jb2wgV2ViQ29yZUZyYW1lU2Nyb2xsVmlldzsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKLXR5cGVk
ZWYgc3RydWN0IF9HdGtBZGp1c3RtZW50IEd0a0FkanVzdG1lbnQ7Ci0jZW5kaWYKLQogI2lmIFBM
QVRGT1JNKFdYKQogY2xhc3Mgd3hTY3JvbGxXaW5FdmVudDsKICNlbmRpZgpAQCAtNDAyLDE4ICsz
OTcsNiBAQCBwcml2YXRlOgogICAgIE5TU2Nyb2xsVmlldzxXZWJDb3JlRnJhbWVTY3JvbGxWaWV3
Piogc2Nyb2xsVmlldygpIGNvbnN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspCi1wdWJs
aWM6Ci0gICAgdm9pZCBzZXRHdGtBZGp1c3RtZW50cyhHdGtBZGp1c3RtZW50KiBoYWRqLCBHdGtB
ZGp1c3RtZW50KiB2YWRqLCBib29sIHJlc2V0VmFsdWVzID0gdHJ1ZSk7Ci0gICAgdm9pZCBzZXRI
b3Jpem9udGFsQWRqdXN0bWVudChHdGtBZGp1c3RtZW50KiBoYWRqLCBib29sIHJlc2V0VmFsdWVz
ID0gdHJ1ZSk7Ci0gICAgdm9pZCBzZXRWZXJ0aWNhbEFkanVzdG1lbnQoR3RrQWRqdXN0bWVudCog
dmFkaiwgYm9vbCByZXNldFZhbHVlcyA9IHRydWUpOwotICAgIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0
KGNvbnN0IEludFNpemUmIG9mZnNldCkgeyBtX3Njcm9sbE9mZnNldCA9IG9mZnNldDsgfQotCi1w
cml2YXRlOgotICAgIEdSZWZQdHI8R3RrQWRqdXN0bWVudD4gbV9ob3Jpem9udGFsQWRqdXN0bWVu
dDsKLSAgICBHUmVmUHRyPEd0a0FkanVzdG1lbnQ+IG1fdmVydGljYWxBZGp1c3RtZW50OwotI2Vu
ZGlmCi0KICNpZiBQTEFURk9STShXWCkKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGxh
dGZvcm1XaWRnZXQod3hXaW5kb3cqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9NYWluRnJhbWVTY3JvbGxiYXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL01haW5GcmFtZVNjcm9sbGJhckd0ay5jcHAKaW5kZXggMjZlMjU5ZjFhZDQ3YWQ2Yjdj
ODMzODI4Y2FmNzYxYzA1NTlkNWJiNC4uZjFjMWNjODNhMDIzNDk4YzFhYjJiODRkYzEwOWU5YTlj
NWY4NTBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01haW5GcmFt
ZVNjcm9sbGJhckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01haW5G
cmFtZVNjcm9sbGJhckd0ay5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyIHplY2tlQHNlbGZpc2gub3JnCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDEwIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9y
Zz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMTAgQ29sbGFib3JhIEx0ZC4KLSAqICBDb3B5cmlnaHQg
KEMpIDIwMTAgSWdhbGlhIFMuTC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgSWdhbGlh
IFMuTC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJNYWluRnJhbWVTY3JvbGxiYXJHdGsuaCIKIAotI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKQEAgLTMwLDEwNSArMjks
MjQgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVBhc3NSZWZQdHI8TWFpbkZyYW1l
U2Nyb2xsYmFyR3RrPiBNYWluRnJhbWVTY3JvbGxiYXJHdGs6OmNyZWF0ZShTY3JvbGxhYmxlQXJl
YSogc2Nyb2xsYWJsZUFyZWEsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBHdGtB
ZGp1c3RtZW50KiBhZGopCitQYXNzUmVmUHRyPE1haW5GcmFtZVNjcm9sbGJhckd0az4gTWFpbkZy
YW1lU2Nyb2xsYmFyR3RrOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBT
Y3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1haW5GcmFtZVNjcm9sbGJhckd0ayhzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24sIGFk
aikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWFpbkZyYW1lU2Nyb2xsYmFyR3RrKHNjcm9s
bGFibGVBcmVhLCBvcmllbnRhdGlvbikpOwogfQogCi0vLyBNYWluIGZyYW1lIHNjcm9sbGJhcnMg
YXJlIHNsYXZlcyB0byBhIEd0a0FkanVzdG1lbnQuIElmIGEgbWFpbiBmcmFtZQotLy8gc2Nyb2xs
YmFyIGhhcyBhbiBtX2FkanVzdG1lbnQsIGl0IGJlbG9uZ3MgdG8gdGhlIGNvbnRhaW5lciAoYSBH
dGtXaWRnZXQgc3VjaAotLy8gYXMgR3RrU2Nyb2xsZWRXaW5kb3cpLiBUaGUgYWRqdXN0bWVudCBt
YXkgYWxzbyBiZSBudWxsLCBpbiB3aGljaCBjYXNlIHRoZXJlCi0vLyBpcyBubyBjb250YWluaW5n
IHZpZXcgb3IgdGhlIHBhcmVudCBTY3JvbGxWaWV3IGlzIGluIHNvbWUgc29ydCBvZiB0cmFuc2l0
aW9uCi0vLyBzdGF0ZS4gVGhlc2Ugc2Nyb2xsYmFycyBhcmUgbmV2ZXIgcGFpbnRlZCwgYXMgdGhl
IGNvbnRhaW5lciB0YWtlcyBjYXJlIG9mCi0vLyB0aGF0LiBUaGV5IGV4aXN0IG9ubHkgdG8gc2h1
dHRsZSBkYXRhIGZyb20gdGhlIEd0a1dpZGdldCBjb250YWluZXIgaW50bwotLy8gV2ViQ29yZSBh
bmQgdmljZS12ZXJzYS4KLU1haW5GcmFtZVNjcm9sbGJhckd0azo6TWFpbkZyYW1lU2Nyb2xsYmFy
R3RrKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50YXRpb24g
b3JpZW50YXRpb24sIEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQpCisvLyBBIE1haW5GcmFtZVNj
cm9sbGJhciBpcyBqdXN0IGEgbm9uLXBhaW50aW5nIHNjcm9sbGJhci4gT3RoZXJ3aXNlIGl0IGlz
IGZ1bGx5CisvLyBmdW5jdGlvbmFsLiBBIG5vbi1wYWludGluZyBzY3JvbGxiYXIgYWxsb3dzIGEg
bWFpbi1mcmFtZSBTY3JvbGxWaWV3IHRvIHVzZQorLy8gYSBjb250YWluaW5nIEd0a1Njcm9sbGVk
V2luZG93IGFzIGl0cyB1c2VyIGludGVyZmFjZS4gVGhlIENocm9tZUNsaWVudCBpbiB0aGUKKy8v
IFdlYktpdCBsYXllciBqdXN0IGxpc3RlbnMgZm9yIHNjcm9sbGluZyBhbmQgc2l6aW5nIGNoYW5n
ZXMgYW5kIHVwZGF0ZXMgaXRzCisvLyBjb250YWluZXIgKHRoZSBHdGtTY3JvbGxlZFdpbmRvdykg
YWNjb3JkaW5nbHkuIFRoZSBTY3JvbGxWaWV3IGlzIHJlc3BvbnNpYmxlCisvLyBmb3IgZGVjaWRp
bmcgd2hldGhlciBvciBub3QgdG8gY3JlYXRlIGEgTWFpbkZyYW1lU2Nyb2xsYmFyIG9yIG5hdGl2
ZSBzY3JvbGxiYXIuCitNYWluRnJhbWVTY3JvbGxiYXJHdGs6Ok1haW5GcmFtZVNjcm9sbGJhckd0
ayhTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKQogICAgIDogU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVhLCBvcmllbnRhdGlvbiwg
UmVndWxhclNjcm9sbGJhcikKLSAgICAsIG1fYWRqdXN0bWVudCgwKQogewotICAgIGF0dGFjaEFk
anVzdG1lbnQoYWRqdXN0bWVudCk7Ci0KLSAgICAvLyBXZSBoYXZlIG5vdGhpbmcgdG8gc2hvdyBh
cyB3ZSBhcmUgc29sZWx5IG9wZXJhdGluZyBvbiB0aGUgR3RrQWRqdXN0bWVudC4KKyAgICAvLyBX
ZSBkb24ndCB3YW50IHRvIHRha2UgdXAgYW55IHNwYWNlLgogICAgIHJlc2l6ZSgwLCAwKTsKIH0K
IAotTWFpbkZyYW1lU2Nyb2xsYmFyR3RrOjp+TWFpbkZyYW1lU2Nyb2xsYmFyR3RrKCkKLXsKLSAg
ICBpZiAobV9hZGp1c3RtZW50KQotICAgICAgICBkZXRhY2hBZGp1c3RtZW50KCk7Ci19Ci0KLXZv
aWQgTWFpbkZyYW1lU2Nyb2xsYmFyR3RrOjphdHRhY2hBZGp1c3RtZW50KEd0a0FkanVzdG1lbnQq
IGFkanVzdG1lbnQpCi17Ci0gICAgaWYgKG1fYWRqdXN0bWVudC5nZXQoKSA9PSBhZGp1c3RtZW50
KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1fYWRqdXN0bWVudCkKLSAgICAgICAgZGV0YWNo
QWRqdXN0bWVudCgpOwotCi0gICAgbV9hZGp1c3RtZW50ID0gYWRqdXN0bWVudDsKLSAgICBpZiAo
IW1fYWRqdXN0bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSW4gc29tZSBjYXNlcyB0
aGlzIGFkanVzdG1lbnQgbWF5IHN0aWxsIGJlIGF0dGFjaGVkIHRvIGEgbGl2aW5nIE1haW5GcmFt
ZVNjcm9sbGJhci4KLSAgICAvLyBJZiB0aGF0J3MgdGhlIGNhc2Ugd2Ugd2FudCB0byBmb3JjZSBh
IGRpc2Nvbm5lY3Rpb24gbm93LCBiZWZvcmUgd2UgbW9kaWZ5IHRoZSB2YWx1ZXMuCi0gICAgZ19z
aWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fYWRqdXN0bWVudC5nZXQoKSwgR19T
SUdOQUxfTUFUQ0hfRlVOQywgMCwgMCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oTWFpbkZyYW1lU2Nyb2xsYmFyR3Rr
OjpndGtWYWx1ZUNoYW5nZWQpLCAwKTsKLQotICAgIHVwZGF0ZVRodW1iUHJvcG9ydGlvbigpOwot
ICAgIHVwZGF0ZVRodW1iUG9zaXRpb24oKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fYWRqdXN0
bWVudC5nZXQoKSwgInZhbHVlLWNoYW5nZWQiLCBHX0NBTExCQUNLKE1haW5GcmFtZVNjcm9sbGJh
ckd0azo6Z3RrVmFsdWVDaGFuZ2VkKSwgdGhpcyk7Ci19Ci0KLXZvaWQgTWFpbkZyYW1lU2Nyb2xs
YmFyR3RrOjpkZXRhY2hBZGp1c3RtZW50KCkKLXsKLSAgICBpZiAoIW1fYWRqdXN0bWVudCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5j
KEdfT0JKRUNUKG1fYWRqdXN0bWVudC5nZXQoKSksIChncG9pbnRlcilNYWluRnJhbWVTY3JvbGxi
YXJHdGs6Omd0a1ZhbHVlQ2hhbmdlZCwgdGhpcyk7Ci0KLSAgICAvLyBGb3IgdGhlIGNhc2Ugd2hl
cmUgd2Ugb25seSBvcGVyYXRlIG9uIHRoZSBHdGtBZGp1c3RtZW50IGl0IGlzIGJlc3QgdG8KLSAg
ICAvLyByZXNldCB0aGUgdmFsdWVzIHNvIHRoYXQgdGhlIHN1cnJvdW5kaW5nIHNjcm9sbGJhciBn
ZXRzIHVwZGF0ZWQsIG9yCi0gICAgLy8gZS5nLiBmb3IgYSBHdGtTY3JvbGxlZFdpbmRvdyB0aGUg
c2Nyb2xsYmFyIGdldHMgaGlkZGVuLgotICAgIGd0a19hZGp1c3RtZW50X2NvbmZpZ3VyZShtX2Fk
anVzdG1lbnQuZ2V0KCksIDAsIDAsIDAsIDAsIDAsIDApOwotCi0gICAgbV9hZGp1c3RtZW50ID0g
MDsKLX0KLQotdm9pZCBNYWluRnJhbWVTY3JvbGxiYXJHdGs6OnVwZGF0ZVRodW1iUG9zaXRpb24o
KQotewotICAgIGlmICghbV9hZGp1c3RtZW50IHx8IGd0a19hZGp1c3RtZW50X2dldF92YWx1ZSht
X2FkanVzdG1lbnQuZ2V0KCkpID09IG1fY3VycmVudFBvcykKLSAgICAgICAgcmV0dXJuOwotICAg
IGd0a19hZGp1c3RtZW50X3NldF92YWx1ZShtX2FkanVzdG1lbnQuZ2V0KCksIG1fY3VycmVudFBv
cyk7Ci19Ci0KLXZvaWQgTWFpbkZyYW1lU2Nyb2xsYmFyR3RrOjp1cGRhdGVUaHVtYlByb3BvcnRp
b24oKQotewotICAgIGlmICghbV9hZGp1c3RtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgZ3Rr
X2FkanVzdG1lbnRfY29uZmlndXJlKG1fYWRqdXN0bWVudC5nZXQoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3RrX2FkanVzdG1lbnRfZ2V0X3ZhbHVlKG1fYWRqdXN0bWVudC5nZXQo
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a19hZGp1c3RtZW50X2dldF9sb3dl
cihtX2FkanVzdG1lbnQuZ2V0KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Rv
dGFsU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9saW5lU3RlcCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlU3RlcCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV92aXNpYmxlU2l6ZSk7Ci19Ci0KLXZvaWQgTWFpbkZyYW1lU2Nyb2xsYmFyR3Rr
OjpndGtWYWx1ZUNoYW5nZWQoR3RrQWRqdXN0bWVudCosIE1haW5GcmFtZVNjcm9sbGJhckd0ayog
dGhhdCkKLXsKLSAgICAvLyBJZiB3ZSd2ZSBiZWVuIHJlbW92ZWQgZnJvbSBvdXIgcGFyZW50LCB3
ZSBubyBsb25nZXIgZ2V0IHRvIGNvbnRyb2wgdGhlIFdlYkNvcmUKLSAgICAvLyBzY3JvbGxiYXIu
IElmIHRoaXMgaXMgdGhlIGNhc2UsIGRlYWN0aXZhdGUgdGhpcyBzaWduYWwgaGFuZGxlci4gV2Vi
Q29yZSB3aWxsCi0gICAgLy8gY3JlYXRlIGEgZnJlc2ggTWFpbkZyYW1lU2Nyb2xsYmFyIHdoZW4g
dGhlIHNjcm9sbGJhciByZWFwcGVhcnMuCi0gICAgaWYgKCF0aGF0LT5wYXJlbnQoKSkgewotICAg
ICAgICB0aGF0LT5kZXRhY2hBZGp1c3RtZW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpbnQgbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KGd0a19hZGp1c3RtZW50X2dldF92
YWx1ZSh0aGF0LT5tX2FkanVzdG1lbnQuZ2V0KCkpKTsKLSAgICBpZiAobmV3VmFsdWUgIT0gdGhh
dC0+dmFsdWUoKSkKLSAgICAgICAgdGhhdC0+c2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsVG9PZmZz
ZXRXaXRob3V0QW5pbWF0aW9uKHRoYXQtPm9yaWVudGF0aW9uKCksIG5ld1ZhbHVlKTsKLX0KLQog
dm9pZCBNYWluRnJhbWVTY3JvbGxiYXJHdGs6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBNYWluIGZyYW1lIHNjcm9sbGJhcnMg
YXJlIG5vdCBwYWludGVkIGJ5IFdlYkNvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmgKaW5kZXggZjEwNGY4MTk2MWY1YzhhMzdi
Y2Q1M2MwZjlmNmQwODFiZmEzMjgzMy4uN2I4Y2I2MzhmZGFjYzliMGMyNWM2MDQ4MTg1ZDc1MGE3
MGY1NDBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01haW5GcmFt
ZVNjcm9sbGJhckd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWluRnJh
bWVTY3JvbGxiYXJHdGsuaApAQCAtMjAsMzIgKzIwLDE4IEBACiAjaWZuZGVmIE1haW5GcmFtZVNj
cm9sbGJhckd0a19oCiAjZGVmaW5lIE1haW5GcmFtZVNjcm9sbGJhckd0a19oCiAKLSNpbmNsdWRl
ICJHUmVmUHRyR3RrLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KIAotdHlwZWRlZiBzdHJ1Y3QgX0d0a0FkanVzdG1lbnQgR3RrQWRqdXN0bWVu
dDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNYWluRnJhbWVTY3JvbGxiYXJHdGsg
OiBwdWJsaWMgU2Nyb2xsYmFyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNYWlu
RnJhbWVTY3JvbGxiYXJHdGs+IGNyZWF0ZShTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVu
dGF0aW9uLCBHdGtBZGp1c3RtZW50Kik7Ci0KLSAgICB+TWFpbkZyYW1lU2Nyb2xsYmFyR3RrKCk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWFpbkZyYW1lU2Nyb2xsYmFyR3RrPiBjcmVhdGUoU2Ny
b2xsYWJsZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKLSAgICB2b2lkIGRldGFjaEFk
anVzdG1lbnQoKTsKLSAgICB2b2lkIGF0dGFjaEFkanVzdG1lbnQoR3RrQWRqdXN0bWVudCopOwot
Ci1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRodW1iUG9zaXRpb24oKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGh1bWJQcm9wb3J0aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAg
TWFpbkZyYW1lU2Nyb2xsYmFyR3RrKFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRp
b24sIEd0a0FkanVzdG1lbnQqKTsKLSAgICBzdGF0aWMgdm9pZCBndGtWYWx1ZUNoYW5nZWQoR3Rr
QWRqdXN0bWVudCosIE1haW5GcmFtZVNjcm9sbGJhckd0ayopOwotCi0gICAgR1JlZlB0cjxHdGtB
ZGp1c3RtZW50PiBtX2FkanVzdG1lbnQ7CisgICAgTWFpbkZyYW1lU2Nyb2xsYmFyR3RrKFNjcm9s
bGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24pOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwCmluZGV4IDI4M2RiZTcyYzQxZTYy
YjA3NDljYmIzZDU0ZjI2YTExZThmZmE2M2IuLjUwMGQyMWQyMjhlZjIzZDU0ZDQwZWJkMzVlZDFj
YTk2N2U5MWFiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxWaWV3R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmll
d0d0ay5jcHAKQEAgLTMxLDE4ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsVmlldy5oIgogCi0jaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCi0jaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgi
CiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
ICJNYWluRnJhbWVTY3JvbGxiYXJHdGsuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAi
UGxhdGZvcm1Nb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAj
aW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAKQEAgLTUw
LDE2ICs0MCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUluaXQoKQotewotfQotCi12b2lkIFNjcm9sbFZp
ZXc6OnBsYXRmb3JtRGVzdHJveSgpCi17Ci0gICAgbV9ob3Jpem9udGFsQWRqdXN0bWVudCA9IDA7
Ci0gICAgbV92ZXJ0aWNhbEFkanVzdG1lbnQgPSAwOwotfQotCiBQYXNzUmVmUHRyPFNjcm9sbGJh
cj4gU2Nyb2xsVmlldzo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKQogewogICAgIC8vIElmIHRoaXMgaXMgYW4gaW50ZXJpb3IgZnJhbWUgc2Nyb2xsYmFy
LCB3ZSB3YW50IHRvIGNyZWF0ZSBhIHRvdGFsbHkgZmFrZQpAQCAtNzEsOTQgKzUxLDEwIEBAIFBh
c3NSZWZQdHI8U2Nyb2xsYmFyPiBTY3JvbGxWaWV3OjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFy
T3JpZW50YXRpb24gb3JpZW50YXRpCiAgICAgLy8gYW5kIGRlZmVycyB0byBvdXIgR3RrQWRqdXN0
bWVudCBmb3IgYWxsIG9mIGl0cyBzdGF0ZS4gTm90ZSB0aGF0IHRoZSBHdGtBZGp1c3RtZW50CiAg
ICAgLy8gbWF5IGJlIG51bGwgaGVyZS4KICAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRh
bFNjcm9sbGJhcikKLSAgICAgICAgcmV0dXJuIE1haW5GcmFtZVNjcm9sbGJhckd0azo6Y3JlYXRl
KHRoaXMsIG9yaWVudGF0aW9uLCBtX2hvcml6b250YWxBZGp1c3RtZW50LmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuIE1haW5GcmFtZVNjcm9sbGJhckd0azo6Y3JlYXRlKHRoaXMsIG9yaWVudGF0aW9u
KTsKIAogICAgIC8vIFZlcnRpY2FsU2Nyb2xsYmFyCi0gICAgcmV0dXJuIE1haW5GcmFtZVNjcm9s
bGJhckd0azo6Y3JlYXRlKHRoaXMsIG9yaWVudGF0aW9uLCBtX3ZlcnRpY2FsQWRqdXN0bWVudC5n
ZXQoKSk7Ci19Ci0KLXZvaWQgU2Nyb2xsVmlldzo6c2V0SG9yaXpvbnRhbEFkanVzdG1lbnQoR3Rr
QWRqdXN0bWVudCogaGFkaiwgYm9vbCByZXNldFZhbHVlcykKLXsKLSAgICBBU1NFUlQoIXBhcmVu
dCgpIHx8ICFoYWRqKTsKLSAgICBpZiAocGFyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1faG9yaXpvbnRhbEFkanVzdG1lbnQgPSBoYWRqOwotCi0gICAgaWYgKCFtX2hvcml6b250YWxB
ZGp1c3RtZW50KSB7Ci0gICAgICAgIE1haW5GcmFtZVNjcm9sbGJhckd0ayogaFNjcm9sbGJhciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8TWFpbkZyYW1lU2Nyb2xsYmFyR3RrKj4oaG9yaXpvbnRhbFNjcm9s
bGJhcigpKTsKLSAgICAgICAgaWYgKGhTY3JvbGxiYXIpCi0gICAgICAgICAgICBoU2Nyb2xsYmFy
LT5kZXRhY2hBZGp1c3RtZW50KCk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8v
IFdlIG1heSBiZSBsYWNraW5nIHNjcm9sbGJhcnMgd2hlbiByZXR1cm5pbmcgdG8gYSBjYWNoZWQK
LSAgICAvLyBwYWdlLCB0aGlzIGtpY2tzIHRoZSBwYWdlIHRvIHJlY3JlYXRlIHRoZSBzY3JvbGxi
YXJzLgotICAgIHNldEhhc0hvcml6b250YWxTY3JvbGxiYXIodHJ1ZSk7Ci0KLSAgICBNYWluRnJh
bWVTY3JvbGxiYXJHdGsqIGhTY3JvbGxiYXIgPSByZWludGVycHJldF9jYXN0PE1haW5GcmFtZVNj
cm9sbGJhckd0ayo+KGhvcml6b250YWxTY3JvbGxiYXIoKSk7Ci0gICAgaFNjcm9sbGJhci0+YXR0
YWNoQWRqdXN0bWVudChtX2hvcml6b250YWxBZGp1c3RtZW50LmdldCgpKTsKLQotICAgIC8vIFdl
IHVzZWQgdG8gcmVzZXQgZXZlcnl0aGluZyB0byAwIGhlcmUsIGJ1dCB3aGVuIHBhZ2UgY2FjaGUK
LSAgICAvLyBpcyBlbmFibGVkIHdlIHJldXNlIEZyYW1lVmlld3MgdGhhdCBhcmUgY2FjaGVkLiBT
aW5jZSB0aGVpcgotICAgIC8vIHNpemUgaXMgbm90IGdvaW5nIHRvIGNoYW5nZSB3aGVuIGJlaW5n
IHJlc3RvcmVkLCAod2hpY2ggaXMKLSAgICAvLyB3aGF0IHdvdWxkIGNhdXNlIHRoZSB1cHBlciBs
aW1pdCBpbiB0aGUgYWRqdXNtZW50cyB0byBiZQotICAgIC8vIHNldCBpbiB0aGUgbm9ybWFsIGNh
c2UpLCB3ZSBtYWtlIHN1cmUgdGhleSBhcmUgdXAtdG8tZGF0ZQotICAgIC8vIGhlcmUuIFRoaXMg
aXMgbmVlZGVkIGZvciB0aGUgcGFyZW50IHNjcm9sbGluZyB3aWRnZXQgdG8gYmUKLSAgICAvLyBh
YmxlIHRvIHJlcG9ydCBjb3JyZWN0IHZhbHVlcy4KLSAgICBpbnQgaG9yaXpvbnRhbFBhZ2VTdGVw
ID0gbWF4KG1heDxpbnQ+KGZyYW1lUmVjdCgpLndpZHRoKCkgKiBTY3JvbGxiYXI6Om1pbkZyYWN0
aW9uVG9TdGVwV2hlblBhZ2luZygpLCBmcmFtZVJlY3QoKS53aWR0aCgpIC0gU2Nyb2xsYmFyOjpt
YXhPdmVybGFwQmV0d2VlblBhZ2VzKCkpLCAxKTsKLSAgICBndGtfYWRqdXN0bWVudF9jb25maWd1
cmUobV9ob3Jpem9udGFsQWRqdXN0bWVudC5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzZXRWYWx1ZXMgPyAwIDogc2Nyb2xsT2Zmc2V0KCkud2lkdGgoKSwgMCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRWYWx1ZXMgPyAwIDogY29udGVudHNTaXplKCku
d2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRWYWx1ZXMgPyAwIDog
U2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXNldFZhbHVlcyA/IDAgOiBob3Jpem9udGFsUGFnZVN0ZXAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc2V0VmFsdWVzID8gMCA6IGZyYW1lUmVjdCgpLndpZHRoKCkpOwot
fQotCi12b2lkIFNjcm9sbFZpZXc6OnNldFZlcnRpY2FsQWRqdXN0bWVudChHdGtBZGp1c3RtZW50
KiB2YWRqLCBib29sIHJlc2V0VmFsdWVzKQotewotICAgIEFTU0VSVCghcGFyZW50KCkgfHwgIXZh
ZGopOwotICAgIGlmIChwYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV92ZXJ0aWNh
bEFkanVzdG1lbnQgPSB2YWRqOwotCi0gICAgaWYgKCFtX3ZlcnRpY2FsQWRqdXN0bWVudCkgewot
ICAgICAgICBNYWluRnJhbWVTY3JvbGxiYXJHdGsqIHZTY3JvbGxiYXIgPSByZWludGVycHJldF9j
YXN0PE1haW5GcmFtZVNjcm9sbGJhckd0ayo+KHZlcnRpY2FsU2Nyb2xsYmFyKCkpOwotICAgICAg
ICBpZiAodlNjcm9sbGJhcikKLSAgICAgICAgICAgIHZTY3JvbGxiYXItPmRldGFjaEFkanVzdG1l
bnQoKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gV2UgbWF5IGJlIGxhY2tp
bmcgc2Nyb2xsYmFycyB3aGVuIHJldHVybmluZyB0byBhIGNhY2hlZAotICAgIC8vIHBhZ2UsIHRo
aXMga2lja3MgdGhlIHBhZ2UgdG8gcmVjcmVhdGUgdGhlIHNjcm9sbGJhcnMuCi0gICAgc2V0SGFz
VmVydGljYWxTY3JvbGxiYXIodHJ1ZSk7Ci0KLSAgICBNYWluRnJhbWVTY3JvbGxiYXJHdGsqIHZT
Y3JvbGxiYXIgPSByZWludGVycHJldF9jYXN0PE1haW5GcmFtZVNjcm9sbGJhckd0ayo+KHZlcnRp
Y2FsU2Nyb2xsYmFyKCkpOwotICAgIHZTY3JvbGxiYXItPmF0dGFjaEFkanVzdG1lbnQobV92ZXJ0
aWNhbEFkanVzdG1lbnQuZ2V0KCkpOwotCi0gICAgLy8gV2UgdXNlZCB0byByZXNldCBldmVyeXRo
aW5nIHRvIDAgaGVyZSwgYnV0IHdoZW4gcGFnZSBjYWNoZQotICAgIC8vIGlzIGVuYWJsZWQgd2Ug
cmV1c2UgRnJhbWVWaWV3cyB0aGF0IGFyZSBjYWNoZWQuIFNpbmNlIHRoZWlyCi0gICAgLy8gc2l6
ZSBpcyBub3QgZ29pbmcgdG8gY2hhbmdlIHdoZW4gYmVpbmcgcmVzdG9yZWQsICh3aGljaCBpcwot
ICAgIC8vIHdoYXQgd291bGQgY2F1c2UgdGhlIHVwcGVyIGxpbWl0IGluIHRoZSBhZGp1c21lbnRz
IHRvIGJlCi0gICAgLy8gc2V0IGluIHRoZSBub3JtYWwgY2FzZSksIHdlIG1ha2Ugc3VyZSB0aGV5
IGFyZSB1cC10by1kYXRlCi0gICAgLy8gaGVyZS4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBwYXJl
bnQgc2Nyb2xsaW5nIHdpZGdldCB0byBiZQotICAgIC8vIGFibGUgdG8gcmVwb3J0IGNvcnJlY3Qg
dmFsdWVzLgotICAgIGludCB2ZXJ0aWNhbFBhZ2VTdGVwID0gbWF4KG1heDxpbnQ+KGZyYW1lUmVj
dCgpLndpZHRoKCkgKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygpLCBm
cmFtZVJlY3QoKS53aWR0aCgpIC0gU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkp
LCAxKTsKLSAgICBndGtfYWRqdXN0bWVudF9jb25maWd1cmUobV92ZXJ0aWNhbEFkanVzdG1lbnQu
Z2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0VmFsdWVzID8gMCA6IHNj
cm9sbE9mZnNldCgpLmhlaWdodCgpLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNldFZhbHVlcyA/IDAgOiBjb250ZW50c1NpemUoKS5oZWlnaHQoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzZXRWYWx1ZXMgPyAwIDogU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5l
U3RlcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldFZhbHVlcyA/IDAgOiB2
ZXJ0aWNhbFBhZ2VTdGVwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldFZhbHVl
cyA/IDAgOiBmcmFtZVJlY3QoKS5oZWlnaHQoKSk7Ci19Ci0KLXZvaWQgU2Nyb2xsVmlldzo6c2V0
R3RrQWRqdXN0bWVudHMoR3RrQWRqdXN0bWVudCogaGFkaiwgR3RrQWRqdXN0bWVudCogdmFkaiwg
Ym9vbCByZXNldFZhbHVlcykKLXsKLSAgICBzZXRIb3Jpem9udGFsQWRqdXN0bWVudChoYWRqLCBy
ZXNldFZhbHVlcyk7Ci0gICAgc2V0VmVydGljYWxBZGp1c3RtZW50KHZhZGosIHJlc2V0VmFsdWVz
KTsKKyAgICByZXR1cm4gTWFpbkZyYW1lU2Nyb2xsYmFyR3RrOjpjcmVhdGUodGhpcywgb3JpZW50
YXRpb24pOwogfQogCiBJbnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50UmVjdChib29s
IGluY2x1ZGVTY3JvbGxiYXJzKSBjb25zdApAQCAtMjE2LDcgKzExMiw3IEBAIHZvaWQgU2Nyb2xs
Vmlldzo6c2V0U2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyTW9kZSBob3Jpem9udGFsTW9kZSwgU2Ny
b2xsYmFyTW9kZSB2CiAKICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHJlcG9ydCBwb2xpY3kgY2hh
bmdlcyBvbiBTY3JvbGxWaWV3J3MgdW5sZXNzIHRoaXMKICAgICAvLyBvbmUgaGFzIGFuIGFkanVz
dG1lbnQgYXR0YWNoZWQgYW5kIGl0IGlzIGEgbWFpbiBmcmFtZS4KLSAgICBpZiAoIW1faG9yaXpv
bnRhbEFkanVzdG1lbnQgfHwgcGFyZW50KCkgfHwgIWlzRnJhbWVWaWV3KCkpCisgICAgaWYgKHBh
cmVudCgpIHx8ICFpc0ZyYW1lVmlldygpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGb3Ig
ZnJhbWVzIHRoYXQgZG8gaGF2ZSBhZGp1c3RtZW50cyBhdHRhY2hlZCwgd2Ugd2FudCB0byByZXBv
cnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKaW5kZXgg
ZTUwNjllMzdiNjkyNDE0NWJjMzc3MmM1NTMzZjljZmEyYWZlNDQyZS4uZDhhZWI4MTc0NzcyZGI2
ZWJlMGQ1OGQ4NjNkNmZkMTNkZGM2YTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9n
dGsvUGx1Z2luVmlld0d0ay5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJGcmFtZVRy
ZWUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1
ZGUgIkdSZWZQdHJHdGsuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJHdGtWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggODI1NDI4YzdlZDgzYWU1NGEwZmJjNjVjYTAyZmJiOThiMjBlMWExZS4uNjRhMmQyZGRj
ZWI4OTVlYTA1NWUxNzE5NGFlNmQxNDBkZWVkOWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ2IEBACisyMDExLTA0LTI5ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
R1RLXSBVbnRhbmdsZSBHdGtBZGp1c3RtZW50cyBmcm9tIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODIxCisKKyAgICAgICAgSGF2ZSBD
aHJvbWVDbGllbnQgbWFuYWdlIHRoZSBHdGtBZGp1c3RtZW50cyBvZiB0aGUgcGFyZW50IHdpZGdl
dCBpbnN0ZWFkIG9mIHBhc3NpbmcKKyAgICAgICAgdGhlbSB0byBXZWJDb3JlIHRvIG1hbmFnZS4g
VGhpcyBzaW1wbGlmaWVzIHRoZSBjb2RlIHF1aXRlIGEgYml0IGFuZCBzaG91bGQgYmUgbGVzcwor
ICAgICAgICBjcmFzaCBwcm9uZSBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50
OjpDaHJvbWVDbGllbnQpOiBBZGRlZCBpbml0aWFsaXphdGlvbiBmb3IgbV9oYW5kbGluZ0d0a0Fk
anVzdG1lbnRDaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZUFkanVzdG1lbnRGcm9tU2Ny
b2xsYmFyKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6dXBkYXRlQWRq
dXN0bWVudHNGcm9tU2Nyb2xsYmFycyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjphZGp1c3Rt
ZW50VmFsdWVDaGFuZ2VkQ2FsbGJhY2spOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6c2V0QWRq
dXN0bWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldEhvcml6
b250YWxBZGp1c3RtZW50KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6
c2V0VmVydGljYWxBZGp1c3RtZW50KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6YWRqdXN0bWVudFZhbHVlQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp1
cGRhdGVBZGp1c3RtZW50c0NhbGxiYWNrKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkNocm9t
ZUNsaWVudDo6c2Nyb2xsKTogVXBkYXRlIHRoZSBzY3JvbGxiYXIgYWRqdXN0bWVudHMgb24gYSBx
dWljayB0aW1lb3V0LgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmNvbnRlbnRzU2l6
ZUNoYW5nZWQpOiBVcGRhdGUgdGhlIHNjcm9sbGJhciBhZGp1c3RtZW50cy4KKyAgICAgICAgKFdl
YktpdDo6Q2hyb21lQ2xpZW50OjpzY3JvbGxiYXJzTW9kZURpZENoYW5nZSk6IFRoaXMgbWF5IG5v
dyBiZSBjYWxsZWQgYXQgYSB0aW1lIHdoZW4gdGhlcmUKKyAgICAgICAgaXMgbm8gbWFpbiBmcmFt
ZSwgc28gZG8gYW4gZWFybHkgcmV0dXJuIGluIHRoYXQgY2FzZS4KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDogTm93IGNvbnRhaW5zIHRoZSBHdGtBZGp1c3RtZW50
cyBmcm9tIHRoZSBwYXJlbnQgd2lkZ2V0LgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6
Omhvcml6b250YWxBZGp1c3RtZW50KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6dmVydGljYWxBZGp1c3RtZW50KTogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOiBSZW1vdmUgY29kZSB3aGljaCB0cmllZCB0byBz
aHVmZmxlIEd0a0FkanVzdG1lbnRzCisgICAgICAgIGluIGFuZCBvdXQgb2YgU2Nyb2xsVmlld3Mu
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9D
YWNoZWRGcmFtZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0Ojpwb3N0Q29tbWl0RnJhbWVWaWV3
U2V0dXApOiBEaXR0by4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAg
ICAgIChzZXRIb3Jpem9udGFsQWRqdXN0bWVudCk6IENhbGwgQ2hyb21lQ2xpZW50IHRvIGRvIHRo
aXMgbm93LgorICAgICAgICAoc2V0VmVydGljYWxBZGp1c3RtZW50KTogRGl0dG8uCisgICAgICAg
IChnZXRIb3Jpem9udGFsQWRqdXN0bWVudCk6IERpdHRvLgorICAgICAgICAoZ2V0VmVydGljYWxB
ZGp1c3RtZW50KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2l6ZV9hbGxvY2F0
ZSk6IEJlIHN1cmUgdG8gcG9rZSBDaHJvbWVDbGllbnQgdG8gdGVsbCBpdCB0byB1cGRhdGUgaXRz
IGFkanVzdG1lbnRzLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9zY3JvbGxfYWRqdXN0
bWVudHMpOiBDYWxsIGludG8gQ2hyb21lQ2xpZW50IGZvciB0aGlzLgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X2Rpc3Bvc2UpOiBObyBuZWVkIHRvIG1hbmFnZSBHdGtBZGp1c3RtZW50cyBoZXJl
IGFueSBsb25nZXIuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6IERpdHRvLgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oOiBSZW1vdmUgR3RrQWRqdXN0bWVu
dCBtZW1iZXJzLgorCiAyMDExLTA0LTI4ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IGE5ZDgwMzI4YTZk
MDliNDg1Y2FjMzRiZjQ2MjdhZjU4NjlmZmI4ZDkuLjY2Y2M2NDdhNTRmYzAwMTNmY2VkN2IxZmNk
MzUxNzk2MzY5MDM1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtNzEsMTIgKzcxLDc2IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBDaHJvbWVDbGllbnQ6OkNocm9tZUNsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCisgICAgLCBtX2hhbmRsaW5nR3RrQWRqdXN0
bWVudENoYW5nZShmYWxzZSkKICAgICAsIG1fY2xvc2VTb29uVGltZXIoMCkKICAgICAsIG1fcGVu
ZGluZ1Njcm9sbEludmFsaWRhdGlvbnMoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fd2ViVmlldyk7
CiB9CiAKK3N0YXRpYyB2b2lkIHVwZGF0ZUFkanVzdG1lbnRGcm9tU2Nyb2xsYmFyKEd0a0FkanVz
dG1lbnQqIGFkanVzdG1lbnQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQoreworICAgIGlmICghYWRq
dXN0bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghc2Nyb2xsYmFyKSB7CisgICAgICAg
IGd0a19hZGp1c3RtZW50X2NvbmZpZ3VyZShhZGp1c3RtZW50LCAwLCAwLCAwLCAwLCAwLCAwKTsg
Ly8gVGhlc2UgYXJlIHRoZSBzZXR0aW5ncyB3aGljaCByZW1vdmUgdGhlIHNjcm9sbGJhci4KKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBndGtfYWRqdXN0bWVudF9jb25maWd1cmUoYWRqdXN0
bWVudCwgc2Nyb2xsYmFyLT52YWx1ZSgpLCAwLCBzY3JvbGxiYXItPnRvdGFsU2l6ZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxiYXItPmxpbmVTdGVwKCksIHNjcm9sbGJh
ci0+cGFnZVN0ZXAoKSwgc2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpKTsKK30KKwordm9pZCBDaHJv
bWVDbGllbnQ6OnVwZGF0ZUFkanVzdG1lbnRzRnJvbVNjcm9sbGJhcnMoKSBjb25zdAoreworICAg
IGlmIChtX2hhbmRsaW5nR3RrQWRqdXN0bWVudENoYW5nZSkKKyAgICAgICAgcmV0dXJuOworICAg
IHVwZGF0ZUFkanVzdG1lbnRGcm9tU2Nyb2xsYmFyKG1faG9yaXpvbnRhbEFkanVzdG1lbnQuZ2V0
KCksIGNvcmUobV93ZWJWaWV3KS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+aG9yaXpvbnRhbFNjcm9s
bGJhcigpKTsKKyAgICB1cGRhdGVBZGp1c3RtZW50RnJvbVNjcm9sbGJhcihtX3ZlcnRpY2FsQWRq
dXN0bWVudC5nZXQoKSwgY29yZShtX3dlYlZpZXcpLT5tYWluRnJhbWUoKS0+dmlldygpLT52ZXJ0
aWNhbFNjcm9sbGJhcigpKTsKK30KKworc3RhdGljIHZvaWQgYWRqdXN0bWVudFZhbHVlQ2hhbmdl
ZENhbGxiYWNrKEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQsIENocm9tZUNsaWVudCogY2xpZW50
KQoreworICAgIGNsaWVudC0+YWRqdXN0bWVudFZhbHVlQ2hhbmdlZChhZGp1c3RtZW50KTsKK30K
Kworc3RhdGljIHZvaWQgc2V0QWRqdXN0bWVudChDaHJvbWVDbGllbnQqIGNsaWVudCwgR1JlZlB0
cjxHdGtBZGp1c3RtZW50PiYgYWRqdXN0bWVudE1lbWJlciwgR3RrQWRqdXN0bWVudCogbmV3QWRq
dXN0bWVudCkKK3sKKyAgICBpZiAoYWRqdXN0bWVudE1lbWJlcikgeworICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoYWRqdXN0bWVudE1lbWJlci5nZXQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGFkanVzdG1lbnRWYWx1ZUNoYW5nZWRDYWxsYmFjayksIGNsaWVudCk7CisgICAg
fQorCisgICAgYWRqdXN0bWVudE1lbWJlciA9IG5ld0FkanVzdG1lbnQ7CisgICAgaWYgKG5ld0Fk
anVzdG1lbnQpCisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3QWRqdXN0bWVudCwgInZhbHVl
LWNoYW5nZWQiLCBHX0NBTExCQUNLKGFkanVzdG1lbnRWYWx1ZUNoYW5nZWRDYWxsYmFjayksIGNs
aWVudCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRIb3Jpem9udGFsQWRqdXN0bWVudChH
dGtBZGp1c3RtZW50KiBuZXdBZGp1c3RtZW50KQoreworICAgIHNldEFkanVzdG1lbnQodGhpcywg
bV9ob3Jpem9udGFsQWRqdXN0bWVudCwgbmV3QWRqdXN0bWVudCk7Cit9CisKK3ZvaWQgQ2hyb21l
Q2xpZW50OjpzZXRWZXJ0aWNhbEFkanVzdG1lbnQoR3RrQWRqdXN0bWVudCogbmV3QWRqdXN0bWVu
dCkKK3sKKyAgICBzZXRBZGp1c3RtZW50KHRoaXMsIG1fdmVydGljYWxBZGp1c3RtZW50LCBuZXdB
ZGp1c3RtZW50KTsKK30KKwordm9pZCBDaHJvbWVDbGllbnQ6OmFkanVzdG1lbnRWYWx1ZUNoYW5n
ZWQoR3RrQWRqdXN0bWVudCogYWRqdXN0bWVudCkKK3sKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IGNvcmUobV93ZWJWaWV3KS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICBTY3JvbGxiYXIq
IHNjcm9sbGJhciA9IChhZGp1c3RtZW50ID09IG1faG9yaXpvbnRhbEFkanVzdG1lbnQuZ2V0KCkp
ID8gCisgICAgICAgIGZyYW1lVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpIDogZnJhbWVWaWV3
LT52ZXJ0aWNhbFNjcm9sbGJhcigpOworICAgIGlmICghc2Nyb2xsYmFyKQorICAgICAgICByZXR1
cm47CisKKyAgICBpbnQgbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KGd0a19hZGp1c3RtZW50
X2dldF92YWx1ZShhZGp1c3RtZW50KSk7CisgICAgaWYgKG5ld1ZhbHVlICE9IHNjcm9sbGJhci0+
dmFsdWUoKSkgeworICAgICAgICBtX2hhbmRsaW5nR3RrQWRqdXN0bWVudENoYW5nZSA9IHRydWU7
CisgICAgICAgIGZyYW1lVmlldy0+c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSwgbmV3VmFsdWUpOworICAgICAgICBtX2hhbmRsaW5nR3RrQWRq
dXN0bWVudENoYW5nZSA9IGZhbHNlOworICAgIH0KK30KKwogdm9pZCBDaHJvbWVDbGllbnQ6OmNo
cm9tZURlc3Ryb3llZCgpCiB7CiAgICAgaWYgKG1fY2xvc2VTb29uVGltZXIpCkBAIC00MDMsNiAr
NDY3LDEyIEBAIHZvaWQgQ2hyb21lQ2xpZW50OjppbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Ny
b2xsKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIGJvCiAgICAgaW52YWxpZGF0ZUNvbnRlbnRz
QW5kV2luZG93KHVwZGF0ZVJlY3QsIGltbWVkaWF0ZSk7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB1
cGRhdGVBZGp1c3RtZW50c0NhbGxiYWNrKENocm9tZUNsaWVudCogY2xpZW50KQoreworICAgIGNs
aWVudC0+dXBkYXRlQWRqdXN0bWVudHNGcm9tU2Nyb2xsYmFycygpOworICAgIHJldHVybiBGQUxT
RTsKK30KKwogdm9pZCBDaHJvbWVDbGllbnQ6OnNjcm9sbChjb25zdCBJbnRTaXplJiBkZWx0YSwg
Y29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsK
ICAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VU
KG1fd2ViVmlldykpOwpAQCAtNDQ4LDYgKzUxOCwxMiBAQCB2b2lkIENocm9tZUNsaWVudDo6c2Ny
b2xsKGNvbnN0IEludFNpemUmIGRlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNv
bgogICAgIGdka193aW5kb3dfaW52YWxpZGF0ZV9yZWdpb24od2luZG93LCBpbnZhbGlkUmVnaW9u
LCBGQUxTRSk7CiAgICAgY2Fpcm9fcmVnaW9uX2Rlc3Ryb3koaW52YWxpZFJlZ2lvbik7CiAjZW5k
aWYKKworICAgIC8vIFRoZSBmYWN0IHRoYXQgdGhpcyBtZXRob2Qgd2FzIGNhbGxlZCBtZWFucyB0
aGF0IHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBzY3JvbGxiYXJzLCBidXQgYXQgdGhlCisgICAgLy8g
dGltZSBvZiBpbnZvY2F0aW9uIHRoZXkgYXJlIG5vdCB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIHNj
cm9sbCB5ZXQuIFdlIHNldCBhIHNob3J0IHRpbWVvdXQKKyAgICAvLyBoZXJlLCB3aGljaCBtZWFu
cyB0aGF0IHRoZXkgd2lsbCBiZSB1cGRhdGVkIGFzIHNvb24gYXMgV2ViS2l0IHJldHVybnMgdG8g
dGhlIG1haW4gbG9vcC4KKyAgICBnX3RpbWVvdXRfYWRkKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R1Nv
dXJjZUZ1bmM+KHVwZGF0ZUFkanVzdG1lbnRzQ2FsbGJhY2spLAorICAgICAgICAgICAgICAgICAg
Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpKSk7CiB9CiAK
IC8vIEZJWE1FOiB0aGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBXTSBkZWNvcmF0
aW9ucwpAQCAtNTA0LDExICs1ODAsMTggQEAgdm9pZCBDaHJvbWVDbGllbnQ6OmNvbnRlbnRzU2l6
ZUNoYW5nZWQoRnJhbWUqIGZyYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAogICAgICAg
ICAmJiAocmVxdWlzaXRpb24uaGVpZ2h0ICE9IHNpemUuaGVpZ2h0KCkpCiAgICAgICAgIHx8IChy
ZXF1aXNpdGlvbi53aWR0aCAhPSBzaXplLndpZHRoKCkpKQogICAgICAgICBndGtfd2lkZ2V0X3F1
ZXVlX3Jlc2l6ZV9ub19yZWRyYXcod2lkZ2V0KTsKKworICAgIC8vIElmIHRoaXMgd2FzIGEgbWFp
biBmcmFtZSBzaXplIGNoYW5nZSwgdXBkYXRlIHRoZSBzY3JvbGxiYXJzLgorICAgIGlmIChmcmFt
ZSAhPSBmcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHRo
aXMtPnVwZGF0ZUFkanVzdG1lbnRzRnJvbVNjcm9sbGJhcnMoKTsKIH0KIAogdm9pZCBDaHJvbWVD
bGllbnQ6OnNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3QKIHsKICAgICBXZWJLaXRXZWJG
cmFtZSogd2ViRnJhbWUgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUobV93ZWJWaWV3
KTsKKyAgICBpZiAoIXdlYkZyYW1lKQorICAgICAgICByZXR1cm47CiAKICAgICBnX29iamVjdF9u
b3RpZnkoR19PQkpFQ1Qod2ViRnJhbWUpLCAiaG9yaXpvbnRhbC1zY3JvbGxiYXItcG9saWN5Iik7
CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHdlYkZyYW1lKSwgInZlcnRpY2FsLXNjcm9s
bGJhci1wb2xpY3kiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmgKaW5kZXggMmJmODFlYjBlMTk1ODdkYWVjMjE3NWExZDM2ZmNkOWJk
MzQ3OTc3NC4uMzUxNmI2ODU0OWE3YzFkMTYxOGJjZmFlYWQwZWE3OWVmN2ZmMjc3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgK
QEAgLTM5LDYgKzM5LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICBDaHJvbWVDbGll
bnQoV2ViS2l0V2ViVmlldyopOwogICAgICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KCkgY29u
c3QgeyByZXR1cm4gbV93ZWJWaWV3OyB9CiAKKyAgICAgICAgdm9pZCBzZXRIb3Jpem9udGFsQWRq
dXN0bWVudChHdGtBZGp1c3RtZW50Kik7CisgICAgICAgIHZvaWQgc2V0VmVydGljYWxBZGp1c3Rt
ZW50KEd0a0FkanVzdG1lbnQqKTsKKyAgICAgICAgR3RrQWRqdXN0bWVudCogaG9yaXpvbnRhbEFk
anVzdG1lbnQoKSB7IHJldHVybiBtX2hvcml6b250YWxBZGp1c3RtZW50LmdldCgpOyB9OworICAg
ICAgICBHdGtBZGp1c3RtZW50KiB2ZXJ0aWNhbEFkanVzdG1lbnQoKSB7IHJldHVybiBtX3ZlcnRp
Y2FsQWRqdXN0bWVudC5nZXQoKTsgfTsKKyAgICAgICAgdm9pZCBhZGp1c3RtZW50VmFsdWVDaGFu
Z2VkKEd0a0FkanVzdG1lbnQqKTsKKyAgICAgICAgdm9pZCB1cGRhdGVBZGp1c3RtZW50c0Zyb21T
Y3JvbGxiYXJzKCkgY29uc3Q7CisKICAgICAgICAgdmlydHVhbCB2b2lkIGNocm9tZURlc3Ryb3ll
ZCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRXaW5kb3dSZWN0KGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYpOwpAQCAtMTUyLDYgKzE1OSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKKworICAgICAg
ICBHUmVmUHRyPEd0a0FkanVzdG1lbnQ+IG1faG9yaXpvbnRhbEFkanVzdG1lbnQ7CisgICAgICAg
IEdSZWZQdHI8R3RrQWRqdXN0bWVudD4gbV92ZXJ0aWNhbEFkanVzdG1lbnQ7CisgICAgICAgIGJv
b2wgbV9oYW5kbGluZ0d0a0FkanVzdG1lbnRDaGFuZ2U7CisKICAgICAgICAgV2ViQ29yZTo6S1VS
TCBtX2hvdmVyZWRMaW5rVVJMOwogICAgICAgICB1bnNpZ25lZCBpbnQgbV9jbG9zZVNvb25UaW1l
cjsKICAgICAgICAgYm9vbCBtX3BlbmRpbmdTY3JvbGxJbnZhbGlkYXRpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCmluZGV4IDM5YzAzYzk0Yzc3NjllNzljZmY2ZTE1MTI1MWY1NjRjNzU3ZTJhOTkuLjg2
ZDJjZTQ5NDMzMWU0MmZlYjI2YzhlYjExNzlmOGEzNjAyZGQxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAKQEAgLTEzNDYsMTIgKzEzNDYsNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVH
bG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNh
dmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKiBjYWNoZWRGcmFtZSkKIHsK
LSAgICAvLyBXZSBuZWVkIHRvIGRvIHRoaXMgaGVyZSBpbiBvcmRlciB0byBkaXNjb25uZWN0IHRo
ZSBzY3JvbGxiYXJzCi0gICAgLy8gdGhhdCBhcmUgYmVpbmcgdXNlZCBieSB0aGUgZnJhbWUgdGhh
dCBpcyBiZWluZyBjYWNoZWQgZnJvbSB0aGUKLSAgICAvLyBhZGp1c3RtZW50cywgb3RoZXJ3aXNl
IHRoZXkgd2lsbCByZWFjdCB0byBjaGFuZ2VzIGluIHRoZQotICAgIC8vIGFkanVzdG1lbnRzLCBh
bmQgYmFkIHRoaW5ncyB3aWxsIGhhcHBlbi4KLSAgICBpZiAoY2FjaGVkRnJhbWUtPnZpZXcoKSkK
LSAgICAgICAgY2FjaGVkRnJhbWUtPnZpZXcoKS0+c2V0R3RrQWRqdXN0bWVudHMoMCwgMCk7CiB9
CiAKIHN0YXRpYyB2b2lkIHBvc3RDb21taXRGcmFtZVZpZXdTZXR1cChXZWJLaXRXZWJGcmFtZSAq
ZnJhbWUsIEZyYW1lVmlldyAqdmlldywgYm9vbCByZXNldFZhbHVlcykKQEAgLTEzNTksMTQgKzEz
NTMsMTIgQEAgc3RhdGljIHZvaWQgcG9zdENvbW1pdEZyYW1lVmlld1NldHVwKFdlYktpdFdlYkZy
YW1lICpmcmFtZSwgRnJhbWVWaWV3ICp2aWV3LCBib28KICAgICBXZWJLaXRXZWJWaWV3KiBjb250
YWluaW5nV2luZG93ID0gZ2V0Vmlld0Zyb21GcmFtZShmcmFtZSk7CiAgICAgd2Via2l0X3dlYl92
aWV3X2NsZWFyX3Jlc291cmNlcyhjb250YWluaW5nV2luZG93KTsKIAotICAgIFdlYktpdFdlYlZp
ZXdQcml2YXRlKiBwcml2ID0gY29udGFpbmluZ1dpbmRvdy0+cHJpdjsKLSAgICB2aWV3LT5zZXRH
dGtBZGp1c3RtZW50cyhwcml2LT5ob3Jpem9udGFsQWRqdXN0bWVudC5nZXQoKSwgcHJpdi0+dmVy
dGljYWxBZGp1c3RtZW50LmdldCgpLCByZXNldFZhbHVlcyk7Ci0KICAgICAvLyBJbnZhbGlkYXRl
IHRoZSB2aWV3cG9ydCBhdHRyaWJ1dGVzIC0gdGhleSB3aWxsIG9ubHkgYmUgdmFsaWQKICAgICAv
LyBhZ2FpbiBpZiB0aGUgcGFnZSB3ZSdyZSBiZWdpbm5pbmcgdG8gbG9hZCBub3cgaGFzIGFuCiAg
ICAgLy8gYXBwcm9wcmlhdGUgdmlld3BvcnQgbWV0YSB0YWcuCi0gICAgY29udGFpbmluZ1dpbmRv
dy0+cHJpdi0+dmlld3BvcnRBdHRyaWJ1dGVzLT5wcml2LT5pc1ZhbGlkID0gRkFMU0U7Ci0gICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKGNvbnRhaW5pbmdXaW5kb3ctPnByaXYtPnZpZXdwb3J0
QXR0cmlidXRlcy5nZXQoKSksICJ2YWxpZCIpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBw
cml2ID0gY29udGFpbmluZ1dpbmRvdy0+cHJpdjsKKyAgICBwcml2LT52aWV3cG9ydEF0dHJpYnV0
ZXMtPnByaXYtPmlzVmFsaWQgPSBGQUxTRTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qo
cHJpdi0+dmlld3BvcnRBdHRyaWJ1dGVzLmdldCgpKSwgInZhbGlkIik7CiAKICAgICBpZiAocHJp
di0+Y3VycmVudE1lbnUpIHsKICAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQo
cHJpdi0+Y3VycmVudE1lbnUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcAppbmRleCAxMmFjNzU5YTc3YTlhNDcxMTI0OTBkNTVhYjljZjczNDFkYmE5NWVlLi5j
ZDQ5NGVjNzNiOGZlMzBlY2Y2Yzk1ZjE4ODQwN2FhNTIwMDAwNDg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC00MjQsMzYgKzQyNCwzMCBAQCBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3BvcHVwX21lbnVfaGFuZGxlcihHdGtXaWRnZXQq
IHdpZGdldCkKICNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKIHN0YXRpYyB2b2lkIHNldEhvcml6
b250YWxBZGp1c3RtZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a0FkanVzdG1lbnQqIGFk
anVzdG1lbnQpCiB7Ci0gICAgaWYgKCFjb3JlKHdlYlZpZXcpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICB3ZWJWaWV3LT5wcml2LT5ob3Jpem9udGFsQWRqdXN0bWVudCA9IGFkanVzdG1lbnQ7Ci0g
ICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUo
d2ViVmlldykpLT52aWV3KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm47Ci0gICAg
dmlldy0+c2V0SG9yaXpvbnRhbEFkanVzdG1lbnQoYWRqdXN0bWVudCk7CisgICAgLy8gVGhpcyBt
YXkgYmUgY2FsbGVkIGFmdGVyIHRoZSBwYWdlIGhhcyBiZWVuIGRlc3Ryb3llZCwgaW4gd2hpY2gg
Y2FzZSB3ZSBkbyBub3RoaW5nLgorICAgIGlmIChQYWdlKiBwYWdlID0gY29yZSh3ZWJWaWV3KSkK
KyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihwYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCkpLT5zZXRIb3Jpem9udGFsQWRqdXN0bWVudChhZGp1c3RtZW50KTsKIH0KIAog
c3RhdGljIHZvaWQgc2V0VmVydGljYWxBZGp1c3RtZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQpCiB7Ci0gICAgaWYgKCFjb3JlKHdlYlZpZXcpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICB3ZWJWaWV3LT5wcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQg
PSBhZGp1c3RtZW50OwotICAgIEZyYW1lVmlldyogdmlldyA9IGNvcmUod2Via2l0X3dlYl92aWV3
X2dldF9tYWluX2ZyYW1lKHdlYlZpZXcpKS0+dmlldygpOwotICAgIGlmICghdmlldykKLSAgICAg
ICAgcmV0dXJuOwotICAgIHZpZXctPnNldFZlcnRpY2FsQWRqdXN0bWVudChhZGp1c3RtZW50KTsK
KyAgICAvLyBUaGlzIG1heSBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHBhZ2UgaGFzIGJlZW4gZGVzdHJv
eWVkLCBpbiB3aGljaCBjYXNlIHdlIGRvIG5vdGhpbmcuCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBj
b3JlKHdlYlZpZXcpKQorICAgICAgICBzdGF0aWNfY2FzdDxXZWJLaXQ6OkNocm9tZUNsaWVudCo+
KHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKSktPnNldFZlcnRpY2FsQWRqdXN0bWVudChhZGp1c3Rt
ZW50KTsKIH0KIAogc3RhdGljIEd0a0FkanVzdG1lbnQqIGdldEhvcml6b250YWxBZGp1c3RtZW50
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmhv
cml6b250YWxBZGp1c3RtZW50LmdldCgpOworICAgIGlmIChQYWdlKiBwYWdlID0gY29yZSh3ZWJW
aWV3KSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4o
Y29yZSh3ZWJWaWV3KS0+Y2hyb21lKCktPmNsaWVudCgpKS0+aG9yaXpvbnRhbEFkanVzdG1lbnQo
KTsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIEd0a0FkanVzdG1lbnQqIGdldFZlcnRpY2Fs
QWRqdXN0bWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHJldHVybiB3ZWJWaWV3
LT5wcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQuZ2V0KCk7CisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBj
b3JlKHdlYlZpZXcpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVD
bGllbnQqPihjb3JlKHdlYlZpZXcpLT5jaHJvbWUoKS0+Y2xpZW50KCkpLT52ZXJ0aWNhbEFkanVz
dG1lbnQoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgc2V0SG9yaXpvbnRhbFNj
cm9sbFBvbGljeShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtTY3JvbGxhYmxlUG9saWN5IHBv
bGljeSkKQEAgLTg5NiwxNSArODkwLDE3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19n
ZXRfcHJlZmVycmVkX2hlaWdodChHdGtXaWRnZXQqIHdpZGdldCwgZ2ludCogbWluaW11CiAKIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19zaXplX2FsbG9jYXRlKEd0a1dpZGdldCogd2lkZ2V0
LCBHdGtBbGxvY2F0aW9uKiBhbGxvY2F0aW9uKQogewotICAgIEdUS19XSURHRVRfQ0xBU1Mod2Vi
a2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPnNpemVfYWxsb2NhdGUod2lkZ2V0LGFsbG9jYXRp
b24pOworICAgIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcykt
PnNpemVfYWxsb2NhdGUod2lkZ2V0LCBhbGxvY2F0aW9uKTsKIAogICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKIAotICAgIEZyYW1lKiBmcmFtZSA9
IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHdlYlZp
ZXcpOworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwogICAgIGlmICghZnJh
bWUtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZnJhbWUtPnZpZXcoKS0+cmVzaXpl
KGFsbG9jYXRpb24tPndpZHRoLCBhbGxvY2F0aW9uLT5oZWlnaHQpOworICAgIHN0YXRpY19jYXN0
PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpKS0+dXBkYXRl
QWRqdXN0bWVudHNGcm9tU2Nyb2xsYmFycygpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfZ3JhYl9mb2N1cyhHdGtXaWRnZXQqIHdpZGdldCkKQEAgLTEwMjQsMTggKzEwMjAsMTYg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxpemUoR3RrV2lkZ2V0KiB3aWRnZXQp
CiB9CiAKICNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X3NldF9zY3JvbGxfYWRqdXN0bWVudHMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrQWRq
dXN0bWVudCogaGFkaiwgR3RrQWRqdXN0bWVudCogdmFkaikKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19zZXRfc2Nyb2xsX2FkanVzdG1lbnRzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0
a0FkanVzdG1lbnQqIGhvcml6b250YWxBZGp1c3RtZW50LCBHdGtBZGp1c3RtZW50KiB2ZXJ0aWNh
bEFkanVzdG1lbnQpCiB7Ci0gICAgaWYgKCFjb3JlKHdlYlZpZXcpKQorICAgIC8vIFRoaXMgbWF5
IGJlIGNhbGxlZCBhZnRlciB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQsIGluIHdoaWNoIGNh
c2Ugd2UgZG8gbm90aGluZy4KKyAgICBQYWdlKiBwYWdlID0gY29yZSh3ZWJWaWV3KTsKKyAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYlZpZXctPnByaXYtPmhvcml6b250
YWxBZGp1c3RtZW50ID0gaGFkajsKLSAgICB3ZWJWaWV3LT5wcml2LT52ZXJ0aWNhbEFkanVzdG1l
bnQgPSB2YWRqOwotCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X21haW5fZnJhbWUod2ViVmlldykpLT52aWV3KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAg
ICByZXR1cm47Ci0gICAgdmlldy0+c2V0R3RrQWRqdXN0bWVudHMoaGFkaiwgdmFkaik7CisgICAg
V2ViS2l0OjpDaHJvbWVDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21l
Q2xpZW50Kj4ocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpKTsKKyAgICBjbGllbnQtPnNldEhvcml6
b250YWxBZGp1c3RtZW50KGhvcml6b250YWxBZGp1c3RtZW50KTsKKyAgICBjbGllbnQtPnNldFZl
cnRpY2FsQWRqdXN0bWVudCh2ZXJ0aWNhbEFkanVzdG1lbnQpOwogfQogI2VuZGlmCiAKQEAgLTEy
OTgsOCArMTI5Miw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kaXNwb3NlKEdPYmpl
Y3QqIG9iamVjdCkKIAogICAgIC8vIFRoZXNlIHNtYXJ0IHBvaW50ZXJzIGFyZSBjbGVhcmVkIG1h
bnVhbGx5LCBiZWNhdXNlIHNvbWUgY2xlYW51cCBvcGVyYXRpb25zIGFyZQogICAgIC8vIHZlcnkg
c2Vuc2l0aXZlIHRvIHRoZWlyIHZhbHVlLiBXZSBtYXkgY3Jhc2ggaWYgdGhlc2UgYXJlIGRvbmUg
aW4gdGhlIHdyb25nIG9yZGVyLgotICAgIHByaXYtPmhvcml6b250YWxBZGp1c3RtZW50LmNsZWFy
KCk7Ci0gICAgcHJpdi0+dmVydGljYWxBZGp1c3RtZW50LmNsZWFyKCk7CiAgICAgcHJpdi0+YmFj
a0ZvcndhcmRMaXN0LmNsZWFyKCk7CiAKICAgICBpZiAocHJpdi0+Y29yZVBhZ2UpIHsKQEAgLTM0
NzEsMTAgKzM0NjMsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogICAgIHByaXYtPnZpZXdwb3J0QXR0cmlidXRlcyA9IGFkb3B0R1Jl
ZihXRUJLSVRfVklFV1BPUlRfQVRUUklCVVRFUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVklF
V1BPUlRfQVRUUklCVVRFUywgTlVMTCkpKTsKICAgICBwcml2LT52aWV3cG9ydEF0dHJpYnV0ZXMt
PnByaXYtPndlYlZpZXcgPSB3ZWJWaWV3OwogCi0gICAgLy8gVGhlIHNtYXJ0IHBvaW50ZXIgd2ls
bCBjYWxsIGdfb2JqZWN0X3JlZl9zaW5rIG9uIHRoZXNlIGFkanVzdG1lbnRzLgotICAgIHByaXYt
Pmhvcml6b250YWxBZGp1c3RtZW50ID0gR1RLX0FESlVTVE1FTlQoZ3RrX2FkanVzdG1lbnRfbmV3
KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApKTsKLSAgICBwcml2LT52ZXJ0aWNhbEFkanVz
dG1lbnQgPSBHVEtfQURKVVNUTUVOVChndGtfYWRqdXN0bWVudF9uZXcoMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCkpOwotCiAgICAgZ3RrX3dpZGdldF9zZXRfY2FuX2ZvY3VzKEdUS19XSURH
RVQod2ViVmlldyksIFRSVUUpOwogICAgIHByaXYtPm1haW5GcmFtZSA9IFdFQktJVF9XRUJfRlJB
TUUod2Via2l0X3dlYl9mcmFtZV9uZXcod2ViVmlldykpOwogICAgIHByaXYtPmxhc3RQb3B1cFhQ
b3NpdGlvbiA9IHByaXYtPmxhc3RQb3B1cFlQb3NpdGlvbiA9IC0xOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAppbmRleCBhNGM1ODUzMjM3N2I2
MmJiMDgyN2I1NDE5MDA3ODBhZDBhZDdiN2YxLi45MDNmYWJkMWQ2YzA0ZGIwNWNhM2E4YTU1ODcx
YzRiNTFlZWVhY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlld3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlld3ByaXZhdGUuaApAQCAtNzEsOSArNzEsNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2
YXRlIHsKIAogICAgIGdib29sZWFuIHRyYW5zcGFyZW50OwogCi0gICAgR1JlZlB0cjxHdGtBZGp1
c3RtZW50PiBob3Jpem9udGFsQWRqdXN0bWVudDsKLSAgICBHUmVmUHRyPEd0a0FkanVzdG1lbnQ+
IHZlcnRpY2FsQWRqdXN0bWVudDsKLQogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgogICAgIC8v
IEd0a1Njcm9sbGFibGVQb2xpY3kgbmVlZHMgdG8gYmUgY2hlY2tlZCB3aGVuCiAgICAgLy8gZHJp
dmluZyB0aGUgc2Nyb2xsYWJsZSBhZGp1c3RtZW50IHZhbHVlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91959</attachid>
            <date>2011-05-02 12:57:45 -0700</date>
            <delta_ts>2011-05-09 06:14:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59821-20110502125744.patch</filename>
            <type>text/plain</type>
            <size>38980</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0OTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZTNjMzlhNGU5NTNmMDg4
YmYyNTQxOWI0MjBmYTU2NThhNjJhNWM0Li4xNDJkYjY1NjIxZTM2MjMyNjkxZTRmNzJiM2Y2NGE3
NTAxZDRmNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDQtMjkgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFVudGFuZ2xlIEd0a0FkanVzdG1lbnRz
IGZyb20gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTk4MjEKKworICAgICAgICBDb21wbGV0ZWx5IHJlbW92ZSB0aGUgYWJpbGl0eSBmb3Ig
V2ViS2l0IHRvIHNldCBHdGtBZGp1c3RtZW50cyBvbiBTY3JvbGxWaWV3cworICAgICAgICBhbmQs
IGNvbnNlcXVlbnRseSwgU2Nyb2xsYmFycy4gSGFuZGxpbmcgYWRqdXN0bWVudCB1cGRhdGVzIGNh
biBub3cgYmUgbWFuYWdlZAorICAgICAgICBpbiBXZWJLaXQuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBUaGlzIGlzIGNvdmVyZWQgYnkgZXhpc3RpbmcgU2Nyb2xsYmFyIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6IHBsYXRmb3JtSW5pdCBhbmQgcGxhdGZvcm1E
ZXN0cm95IGNhbiBub3cgYmUgc2hhcmVkCisgICAgICAgIGJldHdlZW4gU2Nyb2xsVmlldy5jcHAg
YW5kIFNjcm9sbFZpZXdHdGsuY3BwLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDog
UmVtb3ZlIHVudXNlZCBtZXRob2RzLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9NYWluRnJhbWVT
Y3JvbGxiYXJHdGsuY3BwOgorICAgICAgICAoTWFpbkZyYW1lU2Nyb2xsYmFyR3RrOjpjcmVhdGUp
OiBObyBsb25nZXIgbmVlZCB0byBwYXNzIGluIHRoZSBhZGp1c3RtZW50LgorICAgICAgICAoTWFp
bkZyYW1lU2Nyb2xsYmFyR3RrOjpNYWluRnJhbWVTY3JvbGxiYXJHdGspOiBVcGRhdGUgdGhlIGNv
bW1lbnRzIGhlcmUuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL01haW5GcmFtZVNjcm9sbGJhckd0
ay5oOiBMb3RzIG9mIGNvZGUgcmVtb3ZhbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xs
Vmlld0d0ay5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y3JlYXRl
U2Nyb2xsYmFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3Jv
bGxiYXJNb2Rlcyk6IERpdHRvLgorICAgICAgICAqIHBsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsu
Y3BwOiBUaGlzIGZpbGUgbmVlZHMgdGhlIEdSZWZQdHJHdGsuaCBpbmNsdWRlIG5vdworICAgICAg
ICB0aGF0IGl0IGRvZXNuJ3QgcmVjZWl2ZSBpdCB0cmFuc2l0aXZlbHkuCisKIDIwMTEtMDUtMDIg
IEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwCmluZGV4IDgzODhjZTExNGM4ZmUxNGM3YmJjYTg2ZTExNmFlMDJhMmZjNDJkMTguLjE0
YWRkMGNhODdkOGE2YTA4MWMyOWRkN2MwZDQ3ZWJlZTQwZDhlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMjQ1LDcgKzEyNDUsNyBAQCB2b2lkIFNjcm9sbFZp
ZXc6OnNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYgb3JpZ2luLCBib29sIHVwZGF0ZVBv
c2l0aW9uQXRBbAogICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKHNjcm9sbE9mZnNldCgpKTsKIH0K
IAotI2lmICFQTEFURk9STShXWCkgJiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKEVGTCkK
KyNpZiAhUExBVEZPUk0oV1gpICYmICFQTEFURk9STShFRkwpCiAKIHZvaWQgU2Nyb2xsVmlldzo6
cGxhdGZvcm1Jbml0KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCAy
NDMwMjhlOTZmMjRmNDcwOTlkMGMyZGY3NGRiOTU5Y2NjZTI4NWY0Li42ZjY5MjJmZjkzNTQwNjRh
YWQxY2FlNGRlYTlmZjZlY2YwZjQ0MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5oCkBAIC0zOSwxMSArMzksNiBAQAogQHByb3RvY29sIFdlYkNvcmVGcmFtZVNjcm9sbFZpZXc7
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlICJHUmVmUHRyR3RrLmgiCi10
eXBlZGVmIHN0cnVjdCBfR3RrQWRqdXN0bWVudCBHdGtBZGp1c3RtZW50OwotI2VuZGlmCi0KICNp
ZiBQTEFURk9STShXWCkKIGNsYXNzIHd4U2Nyb2xsV2luRXZlbnQ7CiAjZW5kaWYKQEAgLTQwMiwx
OCArMzk3LDYgQEAgcHJpdmF0ZToKICAgICBOU1Njcm9sbFZpZXc8V2ViQ29yZUZyYW1lU2Nyb2xs
Vmlldz4qIHNjcm9sbFZpZXcoKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKQot
cHVibGljOgotICAgIHZvaWQgc2V0R3RrQWRqdXN0bWVudHMoR3RrQWRqdXN0bWVudCogaGFkaiwg
R3RrQWRqdXN0bWVudCogdmFkaiwgYm9vbCByZXNldFZhbHVlcyA9IHRydWUpOwotICAgIHZvaWQg
c2V0SG9yaXpvbnRhbEFkanVzdG1lbnQoR3RrQWRqdXN0bWVudCogaGFkaiwgYm9vbCByZXNldFZh
bHVlcyA9IHRydWUpOwotICAgIHZvaWQgc2V0VmVydGljYWxBZGp1c3RtZW50KEd0a0FkanVzdG1l
bnQqIHZhZGosIGJvb2wgcmVzZXRWYWx1ZXMgPSB0cnVlKTsKLSAgICB2b2lkIHNldFNjcm9sbE9m
ZnNldChjb25zdCBJbnRTaXplJiBvZmZzZXQpIHsgbV9zY3JvbGxPZmZzZXQgPSBvZmZzZXQ7IH0K
LQotcHJpdmF0ZToKLSAgICBHUmVmUHRyPEd0a0FkanVzdG1lbnQ+IG1faG9yaXpvbnRhbEFkanVz
dG1lbnQ7Ci0gICAgR1JlZlB0cjxHdGtBZGp1c3RtZW50PiBtX3ZlcnRpY2FsQWRqdXN0bWVudDsK
LSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV1gpCiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dFBsYXRmb3JtV2lkZ2V0KHd4V2luZG93Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9NYWluRnJhbWVTY3JvbGxiYXJHdGsuY3BwCmluZGV4IDI2ZTI1OWYxYWQ0N2Fk
NmI3YzgzMzgyOGNhZjc2MWMwNTU5ZDViYjQuLmYxYzFjYzgzYTAyMzQ5OGMxYWIyYjg0ZGMxMDll
OWE5YzVmODUwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWlu
RnJhbWVTY3JvbGxiYXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9N
YWluRnJhbWVTY3JvbGxiYXJHdGsuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogIENvcHlyaWdodCAo
QykgMjAwNywgMjAwOSBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciB6ZWNrZUBzZWxmaXNoLm9y
ZwogICogIENvcHlyaWdodCAoQykgMjAxMCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9t
ZS5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIENvbGxhYm9yYSBMdGQuCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEln
YWxpYSBTLkwuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmgiCiAKLSNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCkBAIC0zMCwxMDUg
KzI5LDI0IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1QYXNzUmVmUHRyPE1haW5G
cmFtZVNjcm9sbGJhckd0az4gTWFpbkZyYW1lU2Nyb2xsYmFyR3RrOjpjcmVhdGUoU2Nyb2xsYWJs
ZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwg
R3RrQWRqdXN0bWVudCogYWRqKQorUGFzc1JlZlB0cjxNYWluRnJhbWVTY3JvbGxiYXJHdGs+IE1h
aW5GcmFtZVNjcm9sbGJhckd0azo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJl
YSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNYWluRnJhbWVTY3JvbGxiYXJHdGsoc2Nyb2xsYWJsZUFyZWEsIG9yaWVudGF0aW9u
LCBhZGopKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1haW5GcmFtZVNjcm9sbGJhckd0ayhz
Y3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24pKTsKIH0KIAotLy8gTWFpbiBmcmFtZSBzY3JvbGxi
YXJzIGFyZSBzbGF2ZXMgdG8gYSBHdGtBZGp1c3RtZW50LiBJZiBhIG1haW4gZnJhbWUKLS8vIHNj
cm9sbGJhciBoYXMgYW4gbV9hZGp1c3RtZW50LCBpdCBiZWxvbmdzIHRvIHRoZSBjb250YWluZXIg
KGEgR3RrV2lkZ2V0IHN1Y2gKLS8vIGFzIEd0a1Njcm9sbGVkV2luZG93KS4gVGhlIGFkanVzdG1l
bnQgbWF5IGFsc28gYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSB0aGVyZQotLy8gaXMgbm8gY29udGFp
bmluZyB2aWV3IG9yIHRoZSBwYXJlbnQgU2Nyb2xsVmlldyBpcyBpbiBzb21lIHNvcnQgb2YgdHJh
bnNpdGlvbgotLy8gc3RhdGUuIFRoZXNlIHNjcm9sbGJhcnMgYXJlIG5ldmVyIHBhaW50ZWQsIGFz
IHRoZSBjb250YWluZXIgdGFrZXMgY2FyZSBvZgotLy8gdGhhdC4gVGhleSBleGlzdCBvbmx5IHRv
IHNodXR0bGUgZGF0YSBmcm9tIHRoZSBHdGtXaWRnZXQgY29udGFpbmVyIGludG8KLS8vIFdlYkNv
cmUgYW5kIHZpY2UtdmVyc2EuCi1NYWluRnJhbWVTY3JvbGxiYXJHdGs6Ok1haW5GcmFtZVNjcm9s
bGJhckd0ayhTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEsIFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW9uLCBHdGtBZGp1c3RtZW50KiBhZGp1c3RtZW50KQorLy8gQSBNYWluRnJh
bWVTY3JvbGxiYXIgaXMganVzdCBhIG5vbi1wYWludGluZyBzY3JvbGxiYXIuIE90aGVyd2lzZSBp
dCBpcyBmdWxseQorLy8gZnVuY3Rpb25hbC4gQSBub24tcGFpbnRpbmcgc2Nyb2xsYmFyIGFsbG93
cyBhIG1haW4tZnJhbWUgU2Nyb2xsVmlldyB0byB1c2UKKy8vIGEgY29udGFpbmluZyBHdGtTY3Jv
bGxlZFdpbmRvdyBhcyBpdHMgdXNlciBpbnRlcmZhY2UuIFRoZSBDaHJvbWVDbGllbnQgaW4gdGhl
CisvLyBXZWJLaXQgbGF5ZXIganVzdCBsaXN0ZW5zIGZvciBzY3JvbGxpbmcgYW5kIHNpemluZyBj
aGFuZ2VzIGFuZCB1cGRhdGVzIGl0cworLy8gY29udGFpbmVyICh0aGUgR3RrU2Nyb2xsZWRXaW5k
b3cpIGFjY29yZGluZ2x5LiBUaGUgU2Nyb2xsVmlldyBpcyByZXNwb25zaWJsZQorLy8gZm9yIGRl
Y2lkaW5nIHdoZXRoZXIgb3Igbm90IHRvIGNyZWF0ZSBhIE1haW5GcmFtZVNjcm9sbGJhciBvciBu
YXRpdmUgc2Nyb2xsYmFyLgorTWFpbkZyYW1lU2Nyb2xsYmFyR3RrOjpNYWluRnJhbWVTY3JvbGxi
YXJHdGsoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKICAgICA6IFNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRp
b24sIFJlZ3VsYXJTY3JvbGxiYXIpCi0gICAgLCBtX2FkanVzdG1lbnQoMCkKIHsKLSAgICBhdHRh
Y2hBZGp1c3RtZW50KGFkanVzdG1lbnQpOwotCi0gICAgLy8gV2UgaGF2ZSBub3RoaW5nIHRvIHNo
b3cgYXMgd2UgYXJlIHNvbGVseSBvcGVyYXRpbmcgb24gdGhlIEd0a0FkanVzdG1lbnQuCisgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0byB0YWtlIHVwIGFueSBzcGFjZS4KICAgICByZXNpemUoMCwgMCk7
CiB9CiAKLU1haW5GcmFtZVNjcm9sbGJhckd0azo6fk1haW5GcmFtZVNjcm9sbGJhckd0aygpCi17
Ci0gICAgaWYgKG1fYWRqdXN0bWVudCkKLSAgICAgICAgZGV0YWNoQWRqdXN0bWVudCgpOwotfQot
Ci12b2lkIE1haW5GcmFtZVNjcm9sbGJhckd0azo6YXR0YWNoQWRqdXN0bWVudChHdGtBZGp1c3Rt
ZW50KiBhZGp1c3RtZW50KQotewotICAgIGlmIChtX2FkanVzdG1lbnQuZ2V0KCkgPT0gYWRqdXN0
bWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2FkanVzdG1lbnQpCi0gICAgICAgIGRl
dGFjaEFkanVzdG1lbnQoKTsKLQotICAgIG1fYWRqdXN0bWVudCA9IGFkanVzdG1lbnQ7Ci0gICAg
aWYgKCFtX2FkanVzdG1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEluIHNvbWUgY2Fz
ZXMgdGhpcyBhZGp1c3RtZW50IG1heSBzdGlsbCBiZSBhdHRhY2hlZCB0byBhIGxpdmluZyBNYWlu
RnJhbWVTY3JvbGxiYXIuCi0gICAgLy8gSWYgdGhhdCdzIHRoZSBjYXNlIHdlIHdhbnQgdG8gZm9y
Y2UgYSBkaXNjb25uZWN0aW9uIG5vdywgYmVmb3JlIHdlIG1vZGlmeSB0aGUgdmFsdWVzLgotICAg
IGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX2FkanVzdG1lbnQuZ2V0KCks
IEdfU0lHTkFMX01BVENIX0ZVTkMsIDAsIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KE1haW5GcmFtZVNjcm9sbGJh
ckd0azo6Z3RrVmFsdWVDaGFuZ2VkKSwgMCk7Ci0KLSAgICB1cGRhdGVUaHVtYlByb3BvcnRpb24o
KTsKLSAgICB1cGRhdGVUaHVtYlBvc2l0aW9uKCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2Fk
anVzdG1lbnQuZ2V0KCksICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyhNYWluRnJhbWVTY3Jv
bGxiYXJHdGs6Omd0a1ZhbHVlQ2hhbmdlZCksIHRoaXMpOwotfQotCi12b2lkIE1haW5GcmFtZVNj
cm9sbGJhckd0azo6ZGV0YWNoQWRqdXN0bWVudCgpCi17Ci0gICAgaWYgKCFtX2FkanVzdG1lbnQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlf
ZnVuYyhHX09CSkVDVChtX2FkanVzdG1lbnQuZ2V0KCkpLCAoZ3BvaW50ZXIpTWFpbkZyYW1lU2Ny
b2xsYmFyR3RrOjpndGtWYWx1ZUNoYW5nZWQsIHRoaXMpOwotCi0gICAgLy8gRm9yIHRoZSBjYXNl
IHdoZXJlIHdlIG9ubHkgb3BlcmF0ZSBvbiB0aGUgR3RrQWRqdXN0bWVudCBpdCBpcyBiZXN0IHRv
Ci0gICAgLy8gcmVzZXQgdGhlIHZhbHVlcyBzbyB0aGF0IHRoZSBzdXJyb3VuZGluZyBzY3JvbGxi
YXIgZ2V0cyB1cGRhdGVkLCBvcgotICAgIC8vIGUuZy4gZm9yIGEgR3RrU2Nyb2xsZWRXaW5kb3cg
dGhlIHNjcm9sbGJhciBnZXRzIGhpZGRlbi4KLSAgICBndGtfYWRqdXN0bWVudF9jb25maWd1cmUo
bV9hZGp1c3RtZW50LmdldCgpLCAwLCAwLCAwLCAwLCAwLCAwKTsKLQotICAgIG1fYWRqdXN0bWVu
dCA9IDA7Ci19Ci0KLXZvaWQgTWFpbkZyYW1lU2Nyb2xsYmFyR3RrOjp1cGRhdGVUaHVtYlBvc2l0
aW9uKCkKLXsKLSAgICBpZiAoIW1fYWRqdXN0bWVudCB8fCBndGtfYWRqdXN0bWVudF9nZXRfdmFs
dWUobV9hZGp1c3RtZW50LmdldCgpKSA9PSBtX2N1cnJlbnRQb3MpCi0gICAgICAgIHJldHVybjsK
LSAgICBndGtfYWRqdXN0bWVudF9zZXRfdmFsdWUobV9hZGp1c3RtZW50LmdldCgpLCBtX2N1cnJl
bnRQb3MpOwotfQotCi12b2lkIE1haW5GcmFtZVNjcm9sbGJhckd0azo6dXBkYXRlVGh1bWJQcm9w
b3J0aW9uKCkKLXsKLSAgICBpZiAoIW1fYWRqdXN0bWVudCkKLSAgICAgICAgcmV0dXJuOwotICAg
IGd0a19hZGp1c3RtZW50X2NvbmZpZ3VyZShtX2FkanVzdG1lbnQuZ2V0KCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGd0a19hZGp1c3RtZW50X2dldF92YWx1ZShtX2FkanVzdG1lbnQu
Z2V0KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfYWRqdXN0bWVudF9nZXRf
bG93ZXIobV9hZGp1c3RtZW50LmdldCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV90b3RhbFNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGluZVN0ZXAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZVN0ZXAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdmlzaWJsZVNpemUpOwotfQotCi12b2lkIE1haW5GcmFtZVNjcm9sbGJh
ckd0azo6Z3RrVmFsdWVDaGFuZ2VkKEd0a0FkanVzdG1lbnQqLCBNYWluRnJhbWVTY3JvbGxiYXJH
dGsqIHRoYXQpCi17Ci0gICAgLy8gSWYgd2UndmUgYmVlbiByZW1vdmVkIGZyb20gb3VyIHBhcmVu
dCwgd2Ugbm8gbG9uZ2VyIGdldCB0byBjb250cm9sIHRoZSBXZWJDb3JlCi0gICAgLy8gc2Nyb2xs
YmFyLiBJZiB0aGlzIGlzIHRoZSBjYXNlLCBkZWFjdGl2YXRlIHRoaXMgc2lnbmFsIGhhbmRsZXIu
IFdlYkNvcmUgd2lsbAotICAgIC8vIGNyZWF0ZSBhIGZyZXNoIE1haW5GcmFtZVNjcm9sbGJhciB3
aGVuIHRoZSBzY3JvbGxiYXIgcmVhcHBlYXJzLgotICAgIGlmICghdGhhdC0+cGFyZW50KCkpIHsK
LSAgICAgICAgdGhhdC0+ZGV0YWNoQWRqdXN0bWVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaW50IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50PihndGtfYWRqdXN0bWVudF9n
ZXRfdmFsdWUodGhhdC0+bV9hZGp1c3RtZW50LmdldCgpKSk7Ci0gICAgaWYgKG5ld1ZhbHVlICE9
IHRoYXQtPnZhbHVlKCkpCi0gICAgICAgIHRoYXQtPnNjcm9sbGFibGVBcmVhKCktPnNjcm9sbFRv
T2Zmc2V0V2l0aG91dEFuaW1hdGlvbih0aGF0LT5vcmllbnRhdGlvbigpLCBuZXdWYWx1ZSk7Ci19
Ci0KIHZvaWQgTWFpbkZyYW1lU2Nyb2xsYmFyR3RrOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gTWFpbiBmcmFtZSBzY3JvbGxi
YXJzIGFyZSBub3QgcGFpbnRlZCBieSBXZWJDb3JlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL01haW5GcmFtZVNjcm9sbGJhckd0ay5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL01haW5GcmFtZVNjcm9sbGJhckd0ay5oCmluZGV4IGYxMDRmODE5NjFmNWM4
YTM3YmNkNTNjMGY5ZjZkMDgxYmZhMzI4MzMuLjdiOGNiNjM4ZmRhY2M5YjBjMjVjNjA0ODE4NWQ3
NTBhNzBmNTQwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWlu
RnJhbWVTY3JvbGxiYXJHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTWFp
bkZyYW1lU2Nyb2xsYmFyR3RrLmgKQEAgLTIwLDMyICsyMCwxOCBAQAogI2lmbmRlZiBNYWluRnJh
bWVTY3JvbGxiYXJHdGtfaAogI2RlZmluZSBNYWluRnJhbWVTY3JvbGxiYXJHdGtfaAogCi0jaW5j
bHVkZSAiR1JlZlB0ckd0ay5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAKLXR5cGVkZWYgc3RydWN0IF9HdGtBZGp1c3RtZW50IEd0a0FkanVz
dG1lbnQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWFpbkZyYW1lU2Nyb2xsYmFy
R3RrIDogcHVibGljIFNjcm9sbGJhciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
TWFpbkZyYW1lU2Nyb2xsYmFyR3RrPiBjcmVhdGUoU2Nyb2xsYWJsZUFyZWEqLCBTY3JvbGxiYXJP
cmllbnRhdGlvbiwgR3RrQWRqdXN0bWVudCopOwotCi0gICAgfk1haW5GcmFtZVNjcm9sbGJhckd0
aygpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1haW5GcmFtZVNjcm9sbGJhckd0az4gY3JlYXRl
KFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24pOwogICAgIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBkZXRh
Y2hBZGp1c3RtZW50KCk7Ci0gICAgdm9pZCBhdHRhY2hBZGp1c3RtZW50KEd0a0FkanVzdG1lbnQq
KTsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaHVtYlBvc2l0aW9uKCk7
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRodW1iUHJvcG9ydGlvbigpOwogCiBwcml2YXRlOgot
ICAgIE1haW5GcmFtZVNjcm9sbGJhckd0ayhTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVu
dGF0aW9uLCBHdGtBZGp1c3RtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgZ3RrVmFsdWVDaGFuZ2Vk
KEd0a0FkanVzdG1lbnQqLCBNYWluRnJhbWVTY3JvbGxiYXJHdGsqKTsKLQotICAgIEdSZWZQdHI8
R3RrQWRqdXN0bWVudD4gbV9hZGp1c3RtZW50OworICAgIE1haW5GcmFtZVNjcm9sbGJhckd0ayhT
Y3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVudGF0aW9uKTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcAppbmRleCAyODNkYmU3MmM0
MWU2MmIwNzQ5Y2JiM2Q1NGYyNmExMWU4ZmZhNjNiLi41MDBkMjFkMjI4ZWYyM2Q1NGQ0MGViZDM1
ZWQxY2E5NjdlOTFhYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2Nyb2xsVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9s
bFZpZXdHdGsuY3BwCkBAIC0zMSwxOCArMzEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlNjcm9sbFZpZXcuaCIKIAotI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgotI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiR3RrVmVyc2lvbmlu
Zy5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSAiTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1
ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5o
IgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCkBA
IC01MCwxNiArNDAsNiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1Jbml0KCkKLXsKLX0KLQotdm9pZCBTY3Jv
bGxWaWV3OjpwbGF0Zm9ybURlc3Ryb3koKQotewotICAgIG1faG9yaXpvbnRhbEFkanVzdG1lbnQg
PSAwOwotICAgIG1fdmVydGljYWxBZGp1c3RtZW50ID0gMDsKLX0KLQogUGFzc1JlZlB0cjxTY3Jv
bGxiYXI+IFNjcm9sbFZpZXc6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKIHsKICAgICAvLyBJZiB0aGlzIGlzIGFuIGludGVyaW9yIGZyYW1lIHNjcm9s
bGJhciwgd2Ugd2FudCB0byBjcmVhdGUgYSB0b3RhbGx5IGZha2UKQEAgLTcxLDk0ICs1MSwxMCBA
QCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gU2Nyb2xsVmlldzo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9s
bGJhck9yaWVudGF0aW9uIG9yaWVudGF0aQogICAgIC8vIGFuZCBkZWZlcnMgdG8gb3VyIEd0a0Fk
anVzdG1lbnQgZm9yIGFsbCBvZiBpdHMgc3RhdGUuIE5vdGUgdGhhdCB0aGUgR3RrQWRqdXN0bWVu
dAogICAgIC8vIG1heSBiZSBudWxsIGhlcmUuCiAgICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6
b250YWxTY3JvbGxiYXIpCi0gICAgICAgIHJldHVybiBNYWluRnJhbWVTY3JvbGxiYXJHdGs6OmNy
ZWF0ZSh0aGlzLCBvcmllbnRhdGlvbiwgbV9ob3Jpem9udGFsQWRqdXN0bWVudC5nZXQoKSk7Cisg
ICAgICAgIHJldHVybiBNYWluRnJhbWVTY3JvbGxiYXJHdGs6OmNyZWF0ZSh0aGlzLCBvcmllbnRh
dGlvbik7CiAKICAgICAvLyBWZXJ0aWNhbFNjcm9sbGJhcgotICAgIHJldHVybiBNYWluRnJhbWVT
Y3JvbGxiYXJHdGs6OmNyZWF0ZSh0aGlzLCBvcmllbnRhdGlvbiwgbV92ZXJ0aWNhbEFkanVzdG1l
bnQuZ2V0KCkpOwotfQotCi12b2lkIFNjcm9sbFZpZXc6OnNldEhvcml6b250YWxBZGp1c3RtZW50
KEd0a0FkanVzdG1lbnQqIGhhZGosIGJvb2wgcmVzZXRWYWx1ZXMpCi17Ci0gICAgQVNTRVJUKCFw
YXJlbnQoKSB8fCAhaGFkaik7Ci0gICAgaWYgKHBhcmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2hvcml6b250YWxBZGp1c3RtZW50ID0gaGFkajsKLQotICAgIGlmICghbV9ob3Jpem9u
dGFsQWRqdXN0bWVudCkgewotICAgICAgICBNYWluRnJhbWVTY3JvbGxiYXJHdGsqIGhTY3JvbGxi
YXIgPSByZWludGVycHJldF9jYXN0PE1haW5GcmFtZVNjcm9sbGJhckd0ayo+KGhvcml6b250YWxT
Y3JvbGxiYXIoKSk7Ci0gICAgICAgIGlmIChoU2Nyb2xsYmFyKQotICAgICAgICAgICAgaFNjcm9s
bGJhci0+ZGV0YWNoQWRqdXN0bWVudCgpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAvLyBXZSBtYXkgYmUgbGFja2luZyBzY3JvbGxiYXJzIHdoZW4gcmV0dXJuaW5nIHRvIGEgY2Fj
aGVkCi0gICAgLy8gcGFnZSwgdGhpcyBraWNrcyB0aGUgcGFnZSB0byByZWNyZWF0ZSB0aGUgc2Ny
b2xsYmFycy4KLSAgICBzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKHRydWUpOwotCi0gICAgTWFp
bkZyYW1lU2Nyb2xsYmFyR3RrKiBoU2Nyb2xsYmFyID0gcmVpbnRlcnByZXRfY2FzdDxNYWluRnJh
bWVTY3JvbGxiYXJHdGsqPihob3Jpem9udGFsU2Nyb2xsYmFyKCkpOwotICAgIGhTY3JvbGxiYXIt
PmF0dGFjaEFkanVzdG1lbnQobV9ob3Jpem9udGFsQWRqdXN0bWVudC5nZXQoKSk7Ci0KLSAgICAv
LyBXZSB1c2VkIHRvIHJlc2V0IGV2ZXJ5dGhpbmcgdG8gMCBoZXJlLCBidXQgd2hlbiBwYWdlIGNh
Y2hlCi0gICAgLy8gaXMgZW5hYmxlZCB3ZSByZXVzZSBGcmFtZVZpZXdzIHRoYXQgYXJlIGNhY2hl
ZC4gU2luY2UgdGhlaXIKLSAgICAvLyBzaXplIGlzIG5vdCBnb2luZyB0byBjaGFuZ2Ugd2hlbiBi
ZWluZyByZXN0b3JlZCwgKHdoaWNoIGlzCi0gICAgLy8gd2hhdCB3b3VsZCBjYXVzZSB0aGUgdXBw
ZXIgbGltaXQgaW4gdGhlIGFkanVzbWVudHMgdG8gYmUKLSAgICAvLyBzZXQgaW4gdGhlIG5vcm1h
bCBjYXNlKSwgd2UgbWFrZSBzdXJlIHRoZXkgYXJlIHVwLXRvLWRhdGUKLSAgICAvLyBoZXJlLiBU
aGlzIGlzIG5lZWRlZCBmb3IgdGhlIHBhcmVudCBzY3JvbGxpbmcgd2lkZ2V0IHRvIGJlCi0gICAg
Ly8gYWJsZSB0byByZXBvcnQgY29ycmVjdCB2YWx1ZXMuCi0gICAgaW50IGhvcml6b250YWxQYWdl
U3RlcCA9IG1heChtYXg8aW50PihmcmFtZVJlY3QoKS53aWR0aCgpICogU2Nyb2xsYmFyOjptaW5G
cmFjdGlvblRvU3RlcFdoZW5QYWdpbmcoKSwgZnJhbWVSZWN0KCkud2lkdGgoKSAtIFNjcm9sbGJh
cjo6bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpKSwgMSk7Ci0gICAgZ3RrX2FkanVzdG1lbnRfY29u
ZmlndXJlKG1faG9yaXpvbnRhbEFkanVzdG1lbnQuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc2V0VmFsdWVzID8gMCA6IHNjcm9sbE9mZnNldCgpLndpZHRoKCksIDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0VmFsdWVzID8gMCA6IGNvbnRlbnRzU2l6
ZSgpLndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0VmFsdWVzID8g
MCA6IFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzZXRWYWx1ZXMgPyAwIDogaG9yaXpvbnRhbFBhZ2VTdGVwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNldFZhbHVlcyA/IDAgOiBmcmFtZVJlY3QoKS53aWR0aCgp
KTsKLX0KLQotdm9pZCBTY3JvbGxWaWV3OjpzZXRWZXJ0aWNhbEFkanVzdG1lbnQoR3RrQWRqdXN0
bWVudCogdmFkaiwgYm9vbCByZXNldFZhbHVlcykKLXsKLSAgICBBU1NFUlQoIXBhcmVudCgpIHx8
ICF2YWRqKTsKLSAgICBpZiAocGFyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdmVy
dGljYWxBZGp1c3RtZW50ID0gdmFkajsKLQotICAgIGlmICghbV92ZXJ0aWNhbEFkanVzdG1lbnQp
IHsKLSAgICAgICAgTWFpbkZyYW1lU2Nyb2xsYmFyR3RrKiB2U2Nyb2xsYmFyID0gcmVpbnRlcnBy
ZXRfY2FzdDxNYWluRnJhbWVTY3JvbGxiYXJHdGsqPih2ZXJ0aWNhbFNjcm9sbGJhcigpKTsKLSAg
ICAgICAgaWYgKHZTY3JvbGxiYXIpCi0gICAgICAgICAgICB2U2Nyb2xsYmFyLT5kZXRhY2hBZGp1
c3RtZW50KCk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFdlIG1heSBiZSBs
YWNraW5nIHNjcm9sbGJhcnMgd2hlbiByZXR1cm5pbmcgdG8gYSBjYWNoZWQKLSAgICAvLyBwYWdl
LCB0aGlzIGtpY2tzIHRoZSBwYWdlIHRvIHJlY3JlYXRlIHRoZSBzY3JvbGxiYXJzLgotICAgIHNl
dEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKHRydWUpOwotCi0gICAgTWFpbkZyYW1lU2Nyb2xsYmFyR3Rr
KiB2U2Nyb2xsYmFyID0gcmVpbnRlcnByZXRfY2FzdDxNYWluRnJhbWVTY3JvbGxiYXJHdGsqPih2
ZXJ0aWNhbFNjcm9sbGJhcigpKTsKLSAgICB2U2Nyb2xsYmFyLT5hdHRhY2hBZGp1c3RtZW50KG1f
dmVydGljYWxBZGp1c3RtZW50LmdldCgpKTsKLQotICAgIC8vIFdlIHVzZWQgdG8gcmVzZXQgZXZl
cnl0aGluZyB0byAwIGhlcmUsIGJ1dCB3aGVuIHBhZ2UgY2FjaGUKLSAgICAvLyBpcyBlbmFibGVk
IHdlIHJldXNlIEZyYW1lVmlld3MgdGhhdCBhcmUgY2FjaGVkLiBTaW5jZSB0aGVpcgotICAgIC8v
IHNpemUgaXMgbm90IGdvaW5nIHRvIGNoYW5nZSB3aGVuIGJlaW5nIHJlc3RvcmVkLCAod2hpY2gg
aXMKLSAgICAvLyB3aGF0IHdvdWxkIGNhdXNlIHRoZSB1cHBlciBsaW1pdCBpbiB0aGUgYWRqdXNt
ZW50cyB0byBiZQotICAgIC8vIHNldCBpbiB0aGUgbm9ybWFsIGNhc2UpLCB3ZSBtYWtlIHN1cmUg
dGhleSBhcmUgdXAtdG8tZGF0ZQotICAgIC8vIGhlcmUuIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUg
cGFyZW50IHNjcm9sbGluZyB3aWRnZXQgdG8gYmUKLSAgICAvLyBhYmxlIHRvIHJlcG9ydCBjb3Jy
ZWN0IHZhbHVlcy4KLSAgICBpbnQgdmVydGljYWxQYWdlU3RlcCA9IG1heChtYXg8aW50PihmcmFt
ZVJlY3QoKS53aWR0aCgpICogU2Nyb2xsYmFyOjptaW5GcmFjdGlvblRvU3RlcFdoZW5QYWdpbmco
KSwgZnJhbWVSZWN0KCkud2lkdGgoKSAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdlZW5QYWdl
cygpKSwgMSk7Ci0gICAgZ3RrX2FkanVzdG1lbnRfY29uZmlndXJlKG1fdmVydGljYWxBZGp1c3Rt
ZW50LmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldFZhbHVlcyA/IDAg
OiBzY3JvbGxPZmZzZXQoKS5oZWlnaHQoKSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzZXRWYWx1ZXMgPyAwIDogY29udGVudHNTaXplKCkuaGVpZ2h0KCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc2V0VmFsdWVzID8gMCA6IFNjcm9sbGJhcjo6cGl4ZWxzUGVy
TGluZVN0ZXAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRWYWx1ZXMgPyAw
IDogdmVydGljYWxQYWdlU3RlcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRW
YWx1ZXMgPyAwIDogZnJhbWVSZWN0KCkuaGVpZ2h0KCkpOwotfQotCi12b2lkIFNjcm9sbFZpZXc6
OnNldEd0a0FkanVzdG1lbnRzKEd0a0FkanVzdG1lbnQqIGhhZGosIEd0a0FkanVzdG1lbnQqIHZh
ZGosIGJvb2wgcmVzZXRWYWx1ZXMpCi17Ci0gICAgc2V0SG9yaXpvbnRhbEFkanVzdG1lbnQoaGFk
aiwgcmVzZXRWYWx1ZXMpOwotICAgIHNldFZlcnRpY2FsQWRqdXN0bWVudCh2YWRqLCByZXNldFZh
bHVlcyk7CisgICAgcmV0dXJuIE1haW5GcmFtZVNjcm9sbGJhckd0azo6Y3JlYXRlKHRoaXMsIG9y
aWVudGF0aW9uKTsKIH0KIAogSW50UmVjdCBTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3Qo
Ym9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3QKQEAgLTIxNiw3ICsxMTIsNyBAQCB2b2lkIFNj
cm9sbFZpZXc6OnNldFNjcm9sbGJhck1vZGVzKFNjcm9sbGJhck1vZGUgaG9yaXpvbnRhbE1vZGUs
IFNjcm9sbGJhck1vZGUgdgogCiAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byByZXBvcnQgcG9saWN5
IGNoYW5nZXMgb24gU2Nyb2xsVmlldydzIHVubGVzcyB0aGlzCiAgICAgLy8gb25lIGhhcyBhbiBh
ZGp1c3RtZW50IGF0dGFjaGVkIGFuZCBpdCBpcyBhIG1haW4gZnJhbWUuCi0gICAgaWYgKCFtX2hv
cml6b250YWxBZGp1c3RtZW50IHx8IHBhcmVudCgpIHx8ICFpc0ZyYW1lVmlldygpKQorICAgIGlm
IChwYXJlbnQoKSB8fCAhaXNGcmFtZVZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
Rm9yIGZyYW1lcyB0aGF0IGRvIGhhdmUgYWRqdXN0bWVudHMgYXR0YWNoZWQsIHdlIHdhbnQgdG8g
cmVwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCmlu
ZGV4IGU1MDY5ZTM3YjY5MjQxNDViYzM3NzJjNTUzM2Y5Y2ZhMmFmZTQ0MmUuLmQ4YWViODE3NDc3
MmRiNmViZTBkNThkODYzZDZmZDEzZGRjNmEwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiRnJh
bWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNp
bmNsdWRlICJHUmVmUHRyR3RrLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCmluZGV4IDJkMjU3Njg4ODUyNzMwNGE4YTI0YmYyMzgwODljMDRlNDk4MTAzOGMuLjQ0Mjdj
OWQ5YWNhZjFmZmZmYjQzNzFmYmE1YTA5Nzk0OTMwNDM4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MiBAQAorMjAxMS0wNC0yOSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGln
YWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW0dUS10gVW50YW5nbGUgR3RrQWRqdXN0bWVudHMgZnJvbSBXZWJDb3JlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTgyMQorCisgICAgICAgIEhh
dmUgQ2hyb21lQ2xpZW50IG1hbmFnZSB0aGUgR3RrQWRqdXN0bWVudHMgb2YgdGhlIHBhcmVudCB3
aWRnZXQgaW5zdGVhZCBvZiBwYXNzaW5nCisgICAgICAgIHRoZW0gdG8gV2ViQ29yZSB0byBtYW5h
Z2UuIFRoaXMgc2ltcGxpZmllcyB0aGUgY29kZSBxdWl0ZSBhIGJpdCBhbmQgc2hvdWxkIGJlIGxl
c3MKKyAgICAgICAgY3Jhc2ggcHJvbmUgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOiBBZGRlZCBuZXcgR3RrQWRqdXN0bWVudFdhdGNoZXIgY2xhc3MgdG8gdGhlIHNv
dXJjZXMgbGlzdC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
OiBBZGRlZCBuZXcgR3RrQWRqdXN0bWVudFdhdGNoZXIgbWVtYmVyLgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnQ6OkNocm9tZUNsaWVudCkgSW5pdGlhbGl6ZSB0aGUgbmV3IG1lbWJlci4K
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzY3JvbGwpOiBQb2tlIHRoZSBhZGp1c3Rt
ZW50IHdhdGNoZXIgdG8gdXBkYXRlIHRoZSBhZGp1c3RtZW50cy4KKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50Ojpjb250ZW50c1NpemVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OkNocm9tZUNsaWVudDo6c2Nyb2xsYmFyc01vZGVEaWRDaGFuZ2UpOiBUaGlzIG1heSBub3cg
YmUgY2FsbGVkIGF0IGEgdGltZSB3aGVuIHRoZXJlCisgICAgICAgIGlzIG5vIG1haW4gZnJhbWUs
IHNvIGRvIGFuIGVhcmx5IHJldHVybiBpbiB0aGF0IGNhc2UuCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmg6IEFkZCB0aGUgbmV3IG1lbWJlci4KKyAgICAgICAgKFdl
YktpdDo6Q2hyb21lQ2xpZW50OjphZGp1c3RtZW50V2F0Y2hlcik6IEFkZCB0aGlzIGdldHRlciBm
b3IgV2ViS2l0V2ViVmlldy4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHA6IFJlbW92ZSBjYWxscyB3aGljaCBwdXNoZWQgdGhlIGFkanVzdG1lbnRzIGlu
dG8KKyAgICAgICAgV2ViQ29yZS4KKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6
OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6cG9zdENv
bW1pdEZyYW1lVmlld1NldHVwKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9HdGtBZGp1c3Rt
ZW50V2F0Y2hlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpHdGtBZGp1c3RtZW50V2F0
Y2hlcjo6R3RrQWRqdXN0bWVudFdhdGNoZXIpOgorICAgICAgICAoV2ViS2l0Ojp1cGRhdGVBZGp1
c3RtZW50RnJvbVNjcm9sbGJhcik6CisgICAgICAgIChXZWJLaXQ6Okd0a0FkanVzdG1lbnRXYXRj
aGVyOjp1cGRhdGVBZGp1c3RtZW50c0Zyb21TY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYktpdDo6
dXBkYXRlQWRqdXN0bWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6R3RrQWRqdXN0bWVu
dFdhdGNoZXI6OnVwZGF0ZUFkanVzdG1lbnRzRnJvbVNjcm9sbGJhcnNMYXRlcik6CisgICAgICAg
IChXZWJLaXQ6OmFkanVzdG1lbnRWYWx1ZUNoYW5nZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJL
aXQ6OnNldEFkanVzdG1lbnQpOgorICAgICAgICAoV2ViS2l0OjpHdGtBZGp1c3RtZW50V2F0Y2hl
cjo6c2V0SG9yaXpvbnRhbEFkanVzdG1lbnQpOgorICAgICAgICAoV2ViS2l0OjpHdGtBZGp1c3Rt
ZW50V2F0Y2hlcjo6c2V0VmVydGljYWxBZGp1c3RtZW50KToKKyAgICAgICAgKFdlYktpdDo6R3Rr
QWRqdXN0bWVudFdhdGNoZXI6OmFkanVzdG1lbnRWYWx1ZUNoYW5nZWQpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0d0a0FkanVzdG1lbnRXYXRjaGVyLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpHdGtBZGp1c3RtZW50V2F0Y2hlcjo6aG9yaXpvbnRhbEFkanVzdG1lbnQpOgorICAgICAg
ICAoV2ViS2l0OjpHdGtBZGp1c3RtZW50V2F0Y2hlcjo6dmVydGljYWxBZGp1c3RtZW50KToKKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgIChzZXRIb3Jpem9udGFs
QWRqdXN0bWVudCk6CisgICAgICAgIChzZXRWZXJ0aWNhbEFkanVzdG1lbnQpOiBSZW1vdmUgdGhl
IGFkanVzdG1lbnQgbWVtYmVyLiBDYWxsIGludG8gdGhlIGFkanVzdG1lbnQgd2F0Y2hlci4KKyAg
ICAgICAgKGdldEhvcml6b250YWxBZGp1c3RtZW50KTogRGl0dG8uCisgICAgICAgIChnZXRWZXJ0
aWNhbEFkanVzdG1lbnQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zaXplX2Fs
bG9jYXRlKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X3Njcm9sbF9hZGp1
c3RtZW50cyk6IERpdHRvLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Rpc3Bvc2UpOiBEaXR0
by4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19pbml0KTogRGl0dG8uCisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmg6IERpdHRvLgorCiAyMDExLTA0LTI5ICBYYW4gTG9w
ZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9i
aW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDM1ZjgxZTgyZmNhOTE3MWJjYmRk
MjhmODcwZWUzYTY2ZGY3NWQ2ZTMuLjg2MWY1ZWQ2NmI0YWI3YTNjNzgzYjViNjc2YzhlMGVhZWNk
YjRiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0xOTAsNiArMTkwLDggQEAgd2Vi
a2l0Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTmV0d29ya2luZ0NvbnRleHRHdGsuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCBcCisJU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvR3RrQWRqdXN0bWVudFdhdGNoZXIuY3BwIFwKKwlTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9HdGtBZGp1c3RtZW50V2F0Y2hlci5oIFwKIAlT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaCBc
CiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5jcHAKaW5kZXggYTlkODAzMjhhNmQwOWI0ODVjYWMzNGJmNDYyN2FmNTg2OWZmYjhk
OS4uYTRjODc5YWEyN2VmODc1YjkzYWNmMjNlOTM5YzI3ODcwNTIwMTM3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBA
IC03MSw2ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBDaHJvbWVDbGllbnQ6OkNocm9t
ZUNsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcp
CisgICAgLCBtX2FkanVzdG1lbnRXYXRjaGVyKHdlYlZpZXcpCiAgICAgLCBtX2Nsb3NlU29vblRp
bWVyKDApCiAgICAgLCBtX3BlbmRpbmdTY3JvbGxJbnZhbGlkYXRpb25zKGZhbHNlKQogewpAQCAt
NDQ4LDYgKzQ0OSw4IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpzY3JvbGwoY29uc3QgSW50U2l6ZSYg
ZGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uCiAgICAgZ2RrX3dpbmRvd19p
bnZhbGlkYXRlX3JlZ2lvbih3aW5kb3csIGludmFsaWRSZWdpb24sIEZBTFNFKTsKICAgICBjYWly
b19yZWdpb25fZGVzdHJveShpbnZhbGlkUmVnaW9uKTsKICNlbmRpZgorCisgICAgbV9hZGp1c3Rt
ZW50V2F0Y2hlci51cGRhdGVBZGp1c3RtZW50c0Zyb21TY3JvbGxiYXJzTGF0ZXIoKTsKIH0KIAog
Ly8gRklYTUU6IHRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIFdNIGRlY29yYXRp
b25zCkBAIC01MDQsMTEgKzUwNywxOCBAQCB2b2lkIENocm9tZUNsaWVudDo6Y29udGVudHNTaXpl
Q2hhbmdlZChGcmFtZSogZnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0CiAgICAgICAg
ICYmIChyZXF1aXNpdGlvbi5oZWlnaHQgIT0gc2l6ZS5oZWlnaHQoKSkKICAgICAgICAgfHwgKHJl
cXVpc2l0aW9uLndpZHRoICE9IHNpemUud2lkdGgoKSkpCiAgICAgICAgIGd0a193aWRnZXRfcXVl
dWVfcmVzaXplX25vX3JlZHJhdyh3aWRnZXQpOworCisgICAgLy8gSWYgdGhpcyB3YXMgYSBtYWlu
IGZyYW1lIHNpemUgY2hhbmdlLCB1cGRhdGUgdGhlIHNjcm9sbGJhcnMuCisgICAgaWYgKGZyYW1l
ICE9IGZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9h
ZGp1c3RtZW50V2F0Y2hlci51cGRhdGVBZGp1c3RtZW50c0Zyb21TY3JvbGxiYXJzTGF0ZXIoKTsK
IH0KIAogdm9pZCBDaHJvbWVDbGllbnQ6OnNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3QK
IHsKICAgICBXZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21h
aW5fZnJhbWUobV93ZWJWaWV3KTsKKyAgICBpZiAoIXdlYkZyYW1lKQorICAgICAgICByZXR1cm47
CiAKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qod2ViRnJhbWUpLCAiaG9yaXpvbnRhbC1z
Y3JvbGxiYXItcG9saWN5Iik7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHdlYkZyYW1l
KSwgInZlcnRpY2FsLXNjcm9sbGJhci1wb2xpY3kiKTsKQEAgLTc0NCw1ICs3NTQsNCBAQCB2b2lk
IENocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQq
IGVsZW1lbnQpCiB9CiAjZW5kaWYKIAotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IDJiZjgxZWIwZTE5NTg3ZGFlYzIx
NzVhMWQzNmZjZDliZDM0Nzk3NzQuLjJmNmE5NGU2MTMzMTQzNzczNDQ0M2I3YjNjZDNmODgwM2U0
MjU4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIENocm9tZUNsaWVudEd0a19o
CiAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJHdGtBZGp1c3RtZW50V2F0
Y2hlci5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQb3B1cE1lbnUuaCIKICNpbmNs
dWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKQEAgLTM4LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAgICAgcHVibGljOgogICAgICAgICBDaHJvbWVDbGllbnQoV2ViS2l0V2ViVmlldyopOwog
ICAgICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV93ZWJWaWV3
OyB9CisgICAgICAgIEd0a0FkanVzdG1lbnRXYXRjaGVyKiBhZGp1c3RtZW50V2F0Y2hlcigpIHsg
cmV0dXJuICZtX2FkanVzdG1lbnRXYXRjaGVyOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNo
cm9tZURlc3Ryb3llZCgpOwogCkBAIC0xNTIsNiArMTU0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CisgICAg
ICAgIEd0a0FkanVzdG1lbnRXYXRjaGVyIG1fYWRqdXN0bWVudFdhdGNoZXI7CiAgICAgICAgIFdl
YkNvcmU6OktVUkwgbV9ob3ZlcmVkTGlua1VSTDsKICAgICAgICAgdW5zaWduZWQgaW50IG1fY2xv
c2VTb29uVGltZXI7CiAgICAgICAgIGJvb2wgbV9wZW5kaW5nU2Nyb2xsSW52YWxpZGF0aW9uczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcAppbmRleCAzOWMwM2M5NGM3NzY5ZTc5Y2ZmNmUxNTEyNTFmNTY0Yzc1
N2UyYTk5Li44NmQyY2U0OTQzMzFlNDJmZWIyNmM4ZWIxMTc5ZjhhMzYwMmRkMTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCkBAIC0xMzQ2LDEyICsxMzQ2LDYgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVu
dDo6dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKQogCiB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVk
RnJhbWUpCiB7Ci0gICAgLy8gV2UgbmVlZCB0byBkbyB0aGlzIGhlcmUgaW4gb3JkZXIgdG8gZGlz
Y29ubmVjdCB0aGUgc2Nyb2xsYmFycwotICAgIC8vIHRoYXQgYXJlIGJlaW5nIHVzZWQgYnkgdGhl
IGZyYW1lIHRoYXQgaXMgYmVpbmcgY2FjaGVkIGZyb20gdGhlCi0gICAgLy8gYWRqdXN0bWVudHMs
IG90aGVyd2lzZSB0aGV5IHdpbGwgcmVhY3QgdG8gY2hhbmdlcyBpbiB0aGUKLSAgICAvLyBhZGp1
c3RtZW50cywgYW5kIGJhZCB0aGluZ3Mgd2lsbCBoYXBwZW4uCi0gICAgaWYgKGNhY2hlZEZyYW1l
LT52aWV3KCkpCi0gICAgICAgIGNhY2hlZEZyYW1lLT52aWV3KCktPnNldEd0a0FkanVzdG1lbnRz
KDAsIDApOwogfQogCiBzdGF0aWMgdm9pZCBwb3N0Q29tbWl0RnJhbWVWaWV3U2V0dXAoV2ViS2l0
V2ViRnJhbWUgKmZyYW1lLCBGcmFtZVZpZXcgKnZpZXcsIGJvb2wgcmVzZXRWYWx1ZXMpCkBAIC0x
MzU5LDE0ICsxMzUzLDEyIEBAIHN0YXRpYyB2b2lkIHBvc3RDb21taXRGcmFtZVZpZXdTZXR1cChX
ZWJLaXRXZWJGcmFtZSAqZnJhbWUsIEZyYW1lVmlldyAqdmlldywgYm9vCiAgICAgV2ViS2l0V2Vi
VmlldyogY29udGFpbmluZ1dpbmRvdyA9IGdldFZpZXdGcm9tRnJhbWUoZnJhbWUpOwogICAgIHdl
YmtpdF93ZWJfdmlld19jbGVhcl9yZXNvdXJjZXMoY29udGFpbmluZ1dpbmRvdyk7CiAKLSAgICBX
ZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IGNvbnRhaW5pbmdXaW5kb3ctPnByaXY7Ci0gICAg
dmlldy0+c2V0R3RrQWRqdXN0bWVudHMocHJpdi0+aG9yaXpvbnRhbEFkanVzdG1lbnQuZ2V0KCks
IHByaXYtPnZlcnRpY2FsQWRqdXN0bWVudC5nZXQoKSwgcmVzZXRWYWx1ZXMpOwotCiAgICAgLy8g
SW52YWxpZGF0ZSB0aGUgdmlld3BvcnQgYXR0cmlidXRlcyAtIHRoZXkgd2lsbCBvbmx5IGJlIHZh
bGlkCiAgICAgLy8gYWdhaW4gaWYgdGhlIHBhZ2Ugd2UncmUgYmVnaW5uaW5nIHRvIGxvYWQgbm93
IGhhcyBhbgogICAgIC8vIGFwcHJvcHJpYXRlIHZpZXdwb3J0IG1ldGEgdGFnLgotICAgIGNvbnRh
aW5pbmdXaW5kb3ctPnByaXYtPnZpZXdwb3J0QXR0cmlidXRlcy0+cHJpdi0+aXNWYWxpZCA9IEZB
TFNFOwotICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChjb250YWluaW5nV2luZG93LT5wcml2
LT52aWV3cG9ydEF0dHJpYnV0ZXMuZ2V0KCkpLCAidmFsaWQiKTsKKyAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdiA9IGNvbnRhaW5pbmdXaW5kb3ctPnByaXY7CisgICAgcHJpdi0+dmlld3Bv
cnRBdHRyaWJ1dGVzLT5wcml2LT5pc1ZhbGlkID0gRkFMU0U7CisgICAgZ19vYmplY3Rfbm90aWZ5
KEdfT0JKRUNUKHByaXYtPnZpZXdwb3J0QXR0cmlidXRlcy5nZXQoKSksICJ2YWxpZCIpOwogCiAg
ICAgaWYgKHByaXYtPmN1cnJlbnRNZW51KSB7CiAgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShH
VEtfV0lER0VUKHByaXYtPmN1cnJlbnRNZW51KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9HdGtBZGp1c3RtZW50V2F0Y2hlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9HdGtBZGp1c3RtZW50V2F0Y2hlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzZhODUzNmMxZjY5ZjQ0MGRhNzQxMDdkZTdmY2IwYzU5NWM5OTcyZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0d0a0FkanVzdG1lbnRXYXRj
aGVyLmNwcApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdh
bGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJHdGtBZGp1c3RtZW50V2F0Y2hlci5oIgorCisjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNjcm9sbGJhci5oIgorI2lu
Y2x1ZGUgIndlYmtpdHdlYnZpZXdwcml2YXRlLmgiCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0d0a0FkanVz
dG1lbnRXYXRjaGVyOjpHdGtBZGp1c3RtZW50V2F0Y2hlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCisgICAgLCBtX2hhbmRsaW5nR3RrQWRqdXN0bWVu
dENoYW5nZShmYWxzZSkKK3sKK30KKworc3RhdGljIHZvaWQgdXBkYXRlQWRqdXN0bWVudEZyb21T
Y3JvbGxiYXIoR3RrQWRqdXN0bWVudCogYWRqdXN0bWVudCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
Cit7CisgICAgaWYgKCFhZGp1c3RtZW50KQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFzY3Jv
bGxiYXIpIHsKKyAgICAgICAgZ3RrX2FkanVzdG1lbnRfY29uZmlndXJlKGFkanVzdG1lbnQsIDAs
IDAsIDAsIDAsIDAsIDApOyAvLyBUaGVzZSBhcmUgdGhlIHNldHRpbmdzIHdoaWNoIHJlbW92ZSB0
aGUgc2Nyb2xsYmFyLgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGd0a19hZGp1c3RtZW50
X2NvbmZpZ3VyZShhZGp1c3RtZW50LCBzY3JvbGxiYXItPnZhbHVlKCksIDAsIHNjcm9sbGJhci0+
dG90YWxTaXplKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGJhci0+bGlu
ZVN0ZXAoKSwgc2Nyb2xsYmFyLT5wYWdlU3RlcCgpLCBzY3JvbGxiYXItPnZpc2libGVTaXplKCkp
OworfQorCit2b2lkIEd0a0FkanVzdG1lbnRXYXRjaGVyOjp1cGRhdGVBZGp1c3RtZW50c0Zyb21T
Y3JvbGxiYXJzKCkKK3sKKyAgICBpZiAobV9oYW5kbGluZ0d0a0FkanVzdG1lbnRDaGFuZ2UpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoIWNvcmUobV93ZWJWaWV3KSB8fCAhY29yZShtX3dlYlZp
ZXcpLT5tYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSBjb3JlKG1fd2ViVmlldyktPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgdXBkYXRl
QWRqdXN0bWVudEZyb21TY3JvbGxiYXIobV9ob3Jpem9udGFsQWRqdXN0bWVudC5nZXQoKSwgZnJh
bWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkpOworICAgIHVwZGF0ZUFkanVzdG1lbnRGcm9t
U2Nyb2xsYmFyKG1fdmVydGljYWxBZGp1c3RtZW50LmdldCgpLCBmcmFtZVZpZXctPnZlcnRpY2Fs
U2Nyb2xsYmFyKCkpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gdXBkYXRlQWRqdXN0bWVudENhbGxi
YWNrKEd0a0FkanVzdG1lbnRXYXRjaGVyKiB3YXRjaGVyKQoreworICAgIHdhdGNoZXItPnVwZGF0
ZUFkanVzdG1lbnRzRnJvbVNjcm9sbGJhcnMoKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKKwor
dm9pZCBHdGtBZGp1c3RtZW50V2F0Y2hlcjo6dXBkYXRlQWRqdXN0bWVudHNGcm9tU2Nyb2xsYmFy
c0xhdGVyKCkgY29uc3QKK3sKKyAgICAvLyBUaGUgZmFjdCB0aGF0IHRoaXMgbWV0aG9kIHdhcyBj
YWxsZWQgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgc2Nyb2xsYmFycywgYnV0IGF0
IHRoZQorICAgIC8vIHRpbWUgb2YgaW52b2NhdGlvbiB0aGV5IGFyZSBub3QgdXBkYXRlZCB0byBy
ZWZsZWN0IHRoZSBzY3JvbGwgeWV0LiBXZSBzZXQgYSBzaG9ydCB0aW1lb3V0CisgICAgLy8gaGVy
ZSwgd2hpY2ggbWVhbnMgdGhhdCB0aGV5IHdpbGwgYmUgdXBkYXRlZCBhcyBzb29uIGFzIFdlYktp
dCByZXR1cm5zIHRvIHRoZSBtYWluIGxvb3AuCisgICAgZ190aW1lb3V0X2FkZCgwLCByZWludGVy
cHJldF9jYXN0PEdTb3VyY2VGdW5jPih1cGRhdGVBZGp1c3RtZW50Q2FsbGJhY2spLCAKKyAgICAg
ICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPih0
aGlzKSkpOworfQorCitzdGF0aWMgdm9pZCBhZGp1c3RtZW50VmFsdWVDaGFuZ2VkQ2FsbGJhY2so
R3RrQWRqdXN0bWVudCogYWRqdXN0bWVudCwgR3RrQWRqdXN0bWVudFdhdGNoZXIqIHdhdGNoZXIp
Cit7CisgICAgd2F0Y2hlci0+YWRqdXN0bWVudFZhbHVlQ2hhbmdlZChhZGp1c3RtZW50KTsKK30K
Kworc3RhdGljIHZvaWQgc2V0QWRqdXN0bWVudChHdGtBZGp1c3RtZW50V2F0Y2hlciogd2F0Y2hl
ciwgR1JlZlB0cjxHdGtBZGp1c3RtZW50PiYgYWRqdXN0bWVudE1lbWJlciwgR3RrQWRqdXN0bWVu
dCogbmV3QWRqdXN0bWVudCkKK3sKKyAgICBpZiAoYWRqdXN0bWVudE1lbWJlcikgeworICAgICAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoYWRqdXN0bWVudE1lbWJlci5n
ZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFkanVzdG1lbnRWYWx1ZUNoYW5nZWRDYWxsYmFjayksIHdhdGNo
ZXIpOworICAgIH0KKworICAgIGFkanVzdG1lbnRNZW1iZXIgPSBuZXdBZGp1c3RtZW50OworICAg
IGlmIChuZXdBZGp1c3RtZW50KQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld0FkanVzdG1l
bnQsICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyhhZGp1c3RtZW50VmFsdWVDaGFuZ2VkQ2Fs
bGJhY2spLCB3YXRjaGVyKTsKK30KKwordm9pZCBHdGtBZGp1c3RtZW50V2F0Y2hlcjo6c2V0SG9y
aXpvbnRhbEFkanVzdG1lbnQoR3RrQWRqdXN0bWVudCogbmV3QWRqdXN0bWVudCkKK3sKKyAgICBz
ZXRBZGp1c3RtZW50KHRoaXMsIG1faG9yaXpvbnRhbEFkanVzdG1lbnQsIG5ld0FkanVzdG1lbnQp
OworfQorCit2b2lkIEd0a0FkanVzdG1lbnRXYXRjaGVyOjpzZXRWZXJ0aWNhbEFkanVzdG1lbnQo
R3RrQWRqdXN0bWVudCogbmV3QWRqdXN0bWVudCkKK3sKKyAgICBzZXRBZGp1c3RtZW50KHRoaXMs
IG1fdmVydGljYWxBZGp1c3RtZW50LCBuZXdBZGp1c3RtZW50KTsKK30KKwordm9pZCBHdGtBZGp1
c3RtZW50V2F0Y2hlcjo6YWRqdXN0bWVudFZhbHVlQ2hhbmdlZChHdGtBZGp1c3RtZW50KiBhZGp1
c3RtZW50KQoreworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gY29yZShtX3dlYlZpZXcpLT5t
YWluRnJhbWUoKS0+dmlldygpOworICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyID0gKGFkanVzdG1l
bnQgPT0gbV9ob3Jpem9udGFsQWRqdXN0bWVudC5nZXQoKSkgPyAKKyAgICAgICAgZnJhbWVWaWV3
LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkgOiBmcmFtZVZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCk7
CisgICAgaWYgKCFzY3JvbGxiYXIpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBuZXdWYWx1
ZSA9IHN0YXRpY19jYXN0PGludD4oZ3RrX2FkanVzdG1lbnRfZ2V0X3ZhbHVlKGFkanVzdG1lbnQp
KTsKKyAgICBpZiAobmV3VmFsdWUgIT0gc2Nyb2xsYmFyLT52YWx1ZSgpKSB7CisgICAgICAgIG1f
aGFuZGxpbmdHdGtBZGp1c3RtZW50Q2hhbmdlID0gdHJ1ZTsKKyAgICAgICAgZnJhbWVWaWV3LT5z
Y3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpLCBu
ZXdWYWx1ZSk7CisgICAgICAgIG1faGFuZGxpbmdHdGtBZGp1c3RtZW50Q2hhbmdlID0gZmFsc2U7
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvR3RrQWRqdXN0bWVudFdhdGNoZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0d0a0FkanVzdG1lbnRXYXRjaGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODNiYzJhY2NkNjEyY2Y1ZmRkYjQyNDcxNDM0Mzk4ZTI2Y2NjOGY0ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0d0a0FkanVzdG1lbnRX
YXRjaGVyLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2Fs
aWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaWZuZGVmIEd0a0FkanVzdG1lbnRXYXRjaGVyX2gKKyNkZWZpbmUgR3RrQWRqdXN0
bWVudFdhdGNoZXJfaAorCisjaW5jbHVkZSAiR1JlZlB0ckd0ay5oIgorCit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgR3RrQWRqdXN0bWVudFdhdGNoZXIgeworcHVibGljOgorICAgIEd0a0FkanVzdG1lbnRX
YXRjaGVyKFdlYktpdFdlYlZpZXcqKTsKKworICAgIHZvaWQgc2V0SG9yaXpvbnRhbEFkanVzdG1l
bnQoR3RrQWRqdXN0bWVudCopOworICAgIHZvaWQgc2V0VmVydGljYWxBZGp1c3RtZW50KEd0a0Fk
anVzdG1lbnQqKTsKKyAgICBHdGtBZGp1c3RtZW50KiBob3Jpem9udGFsQWRqdXN0bWVudCgpIHsg
cmV0dXJuIG1faG9yaXpvbnRhbEFkanVzdG1lbnQuZ2V0KCk7IH07CisgICAgR3RrQWRqdXN0bWVu
dCogdmVydGljYWxBZGp1c3RtZW50KCkgeyByZXR1cm4gbV92ZXJ0aWNhbEFkanVzdG1lbnQuZ2V0
KCk7IH07CisgICAgdm9pZCBhZGp1c3RtZW50VmFsdWVDaGFuZ2VkKEd0a0FkanVzdG1lbnQqKTsK
KyAgICB2b2lkIHVwZGF0ZUFkanVzdG1lbnRzRnJvbVNjcm9sbGJhcnMoKTsKKyAgICB2b2lkIHVw
ZGF0ZUFkanVzdG1lbnRzRnJvbVNjcm9sbGJhcnNMYXRlcigpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKKyAgICBHUmVmUHRyPEd0a0FkanVzdG1lbnQ+
IG1faG9yaXpvbnRhbEFkanVzdG1lbnQ7CisgICAgR1JlZlB0cjxHdGtBZGp1c3RtZW50PiBtX3Zl
cnRpY2FsQWRqdXN0bWVudDsKKyAgICBib29sIG1faGFuZGxpbmdHdGtBZGp1c3RtZW50Q2hhbmdl
OworfTsKKworfQorCisjZW5kaWYgLy8gR3RrQWRqdXN0bWVudFdhdGNoZXJfaAorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggMTJhYzc1OWE3N2E5YTQ3
MTEyNDkwZDU1YWI5Y2Y3MzQxZGJhOTVlZS4uOGM3NzY3ZjRhYTAxMmNiY2QzMmY2Mjc2YjlkYWJm
MjM0MzE1YmQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cApAQCAtNzYsNyArNzYsNiBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiU2Ny
b2xsYmFyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0
RE9NRG9jdW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0ZG93bmxvYWQuaCIKQEAgLTQy
NCwzNiArNDIzLDMwIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVu
dV9oYW5kbGVyKEd0a1dpZGdldCogd2lkZ2V0KQogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgog
c3RhdGljIHZvaWQgc2V0SG9yaXpvbnRhbEFkanVzdG1lbnQoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgR3RrQWRqdXN0bWVudCogYWRqdXN0bWVudCkKIHsKLSAgICBpZiAoIWNvcmUod2ViVmlldykp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHdlYlZpZXctPnByaXYtPmhvcml6b250YWxBZGp1c3Rt
ZW50ID0gYWRqdXN0bWVudDsKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb3JlKHdlYmtpdF93ZWJf
dmlld19nZXRfbWFpbl9mcmFtZSh3ZWJWaWV3KSktPnZpZXcoKTsKLSAgICBpZiAoIXZpZXcpCi0g
ICAgICAgIHJldHVybjsKLSAgICB2aWV3LT5zZXRIb3Jpem9udGFsQWRqdXN0bWVudChhZGp1c3Rt
ZW50KTsKKyAgICAvLyBUaGlzIG1heSBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHBhZ2UgaGFzIGJlZW4g
ZGVzdHJveWVkLCBpbiB3aGljaCBjYXNlIHdlIGRvIG5vdGhpbmcuCisgICAgaWYgKFBhZ2UqIHBh
Z2UgPSBjb3JlKHdlYlZpZXcpKQorICAgICAgICBzdGF0aWNfY2FzdDxXZWJLaXQ6OkNocm9tZUNs
aWVudCo+KHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKSktPmFkanVzdG1lbnRXYXRjaGVyKCktPnNl
dEhvcml6b250YWxBZGp1c3RtZW50KGFkanVzdG1lbnQpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRW
ZXJ0aWNhbEFkanVzdG1lbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrQWRqdXN0bWVudCog
YWRqdXN0bWVudCkKIHsKLSAgICBpZiAoIWNvcmUod2ViVmlldykpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHdlYlZpZXctPnByaXYtPnZlcnRpY2FsQWRqdXN0bWVudCA9IGFkanVzdG1lbnQ7Ci0g
ICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUo
d2ViVmlldykpLT52aWV3KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm47Ci0gICAg
dmlldy0+c2V0VmVydGljYWxBZGp1c3RtZW50KGFkanVzdG1lbnQpOworICAgIC8vIFRoaXMgbWF5
IGJlIGNhbGxlZCBhZnRlciB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQsIGluIHdoaWNoIGNh
c2Ugd2UgZG8gbm90aGluZy4KKyAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldykpCisg
ICAgICAgIHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCkt
PmNsaWVudCgpKS0+YWRqdXN0bWVudFdhdGNoZXIoKS0+c2V0VmVydGljYWxBZGp1c3RtZW50KGFk
anVzdG1lbnQpOwogfQogCiBzdGF0aWMgR3RrQWRqdXN0bWVudCogZ2V0SG9yaXpvbnRhbEFkanVz
dG1lbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICByZXR1cm4gd2ViVmlldy0+cHJp
di0+aG9yaXpvbnRhbEFkanVzdG1lbnQuZ2V0KCk7CisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3Jl
KHdlYlZpZXcpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGll
bnQqPihjb3JlKHdlYlZpZXcpLT5jaHJvbWUoKS0+Y2xpZW50KCkpLT5ob3Jpem9udGFsQWRqdXN0
bWVudCgpOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgR3RrQWRqdXN0bWVudCogZ2V0VmVy
dGljYWxBZGp1c3RtZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgcmV0dXJuIHdl
YlZpZXctPnByaXYtPnZlcnRpY2FsQWRqdXN0bWVudC5nZXQoKTsKKyAgICBpZiAoUGFnZSogcGFn
ZSA9IGNvcmUod2ViVmlldykpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXQ6OkNo
cm9tZUNsaWVudCo+KGNvcmUod2ViVmlldyktPmNocm9tZSgpLT5jbGllbnQoKSktPnZlcnRpY2Fs
QWRqdXN0bWVudCgpOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBzZXRIb3Jpem9u
dGFsU2Nyb2xsUG9saWN5KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a1Njcm9sbGFibGVQb2xp
Y3kgcG9saWN5KQpAQCAtODk2LDE1ICs4ODksMTcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X2dldF9wcmVmZXJyZWRfaGVpZ2h0KEd0a1dpZGdldCogd2lkZ2V0LCBnaW50KiBtaW5pbXUK
IAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NpemVfYWxsb2NhdGUoR3RrV2lkZ2V0KiB3
aWRnZXQsIEd0a0FsbG9jYXRpb24qIGFsbG9jYXRpb24pCiB7Ci0gICAgR1RLX1dJREdFVF9DTEFT
Uyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+c2l6ZV9hbGxvY2F0ZSh3aWRnZXQsYWxs
b2NhdGlvbik7CisgICAgR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2Ns
YXNzKS0+c2l6ZV9hbGxvY2F0ZSh3aWRnZXQsIGFsbG9jYXRpb24pOwogCiAgICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQpOwogCi0gICAgRnJhbWUqIGZy
YW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CisgICAgUGFnZSogcGFnZSA9IGNvcmUo
d2ViVmlldyk7CisgICAgRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgaWYg
KCFmcmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm47CiAKICAgICBmcmFtZS0+dmlldygpLT5y
ZXNpemUoYWxsb2NhdGlvbi0+d2lkdGgsIGFsbG9jYXRpb24tPmhlaWdodCk7CisgICAgc3RhdGlj
X2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkpLT5h
ZGp1c3RtZW50V2F0Y2hlcigpLT51cGRhdGVBZGp1c3RtZW50c0Zyb21TY3JvbGxiYXJzKCk7CiB9
CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19ncmFiX2ZvY3VzKEd0a1dpZGdldCogd2lk
Z2V0KQpAQCAtMTAyNCwxOCArMTAxOSwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
cmVhbGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKIH0KIAogI2lmZGVmIEdUS19BUElfVkVSU0lPTl8y
Ci1zdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3Njcm9sbF9hZGp1c3RtZW50cyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtBZGp1c3RtZW50KiBoYWRqLCBHdGtBZGp1c3RtZW50KiB2
YWRqKQorc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9zY3JvbGxfYWRqdXN0bWVudHMo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrQWRqdXN0bWVudCogaG9yaXpvbnRhbEFkanVzdG1l
bnQsIEd0a0FkanVzdG1lbnQqIHZlcnRpY2FsQWRqdXN0bWVudCkKIHsKLSAgICBpZiAoIWNvcmUo
d2ViVmlldykpCisgICAgLy8gVGhpcyBtYXkgYmUgY2FsbGVkIGFmdGVyIHRoZSBwYWdlIGhhcyBi
ZWVuIGRlc3Ryb3llZCwgaW4gd2hpY2ggY2FzZSB3ZSBkbyBub3RoaW5nLgorICAgIFBhZ2UqIHBh
Z2UgPSBjb3JlKHdlYlZpZXcpOworICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgd2ViVmlldy0+cHJpdi0+aG9yaXpvbnRhbEFkanVzdG1lbnQgPSBoYWRqOwotICAgIHdlYlZp
ZXctPnByaXYtPnZlcnRpY2FsQWRqdXN0bWVudCA9IHZhZGo7Ci0KLSAgICBGcmFtZVZpZXcqIHZp
ZXcgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZSh3ZWJWaWV3KSktPnZpZXco
KTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICB2aWV3LT5zZXRHdGtBZGp1
c3RtZW50cyhoYWRqLCB2YWRqKTsKKyAgICBXZWJLaXQ6OkNocm9tZUNsaWVudCogY2xpZW50ID0g
c3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihwYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCkpOworICAgIGNsaWVudC0+YWRqdXN0bWVudFdhdGNoZXIoKS0+c2V0SG9yaXpvbnRhbEFkanVz
dG1lbnQoaG9yaXpvbnRhbEFkanVzdG1lbnQpOworICAgIGNsaWVudC0+YWRqdXN0bWVudFdhdGNo
ZXIoKS0+c2V0VmVydGljYWxBZGp1c3RtZW50KHZlcnRpY2FsQWRqdXN0bWVudCk7CiB9CiAjZW5k
aWYKIApAQCAtMTI5OCw4ICsxMjkxLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Rp
c3Bvc2UoR09iamVjdCogb2JqZWN0KQogCiAgICAgLy8gVGhlc2Ugc21hcnQgcG9pbnRlcnMgYXJl
IGNsZWFyZWQgbWFudWFsbHksIGJlY2F1c2Ugc29tZSBjbGVhbnVwIG9wZXJhdGlvbnMgYXJlCiAg
ICAgLy8gdmVyeSBzZW5zaXRpdmUgdG8gdGhlaXIgdmFsdWUuIFdlIG1heSBjcmFzaCBpZiB0aGVz
ZSBhcmUgZG9uZSBpbiB0aGUgd3Jvbmcgb3JkZXIuCi0gICAgcHJpdi0+aG9yaXpvbnRhbEFkanVz
dG1lbnQuY2xlYXIoKTsKLSAgICBwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQuY2xlYXIoKTsKICAg
ICBwcml2LT5iYWNrRm9yd2FyZExpc3QuY2xlYXIoKTsKIAogICAgIGlmIChwcml2LT5jb3JlUGFn
ZSkgewpAQCAtMzQ3MSwxMCArMzQ2Miw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19p
bml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgcHJpdi0+dmlld3BvcnRBdHRyaWJ1dGVz
ID0gYWRvcHRHUmVmKFdFQktJVF9WSUVXUE9SVF9BVFRSSUJVVEVTKGdfb2JqZWN0X25ldyhXRUJL
SVRfVFlQRV9WSUVXUE9SVF9BVFRSSUJVVEVTLCBOVUxMKSkpOwogICAgIHByaXYtPnZpZXdwb3J0
QXR0cmlidXRlcy0+cHJpdi0+d2ViVmlldyA9IHdlYlZpZXc7CiAKLSAgICAvLyBUaGUgc21hcnQg
cG9pbnRlciB3aWxsIGNhbGwgZ19vYmplY3RfcmVmX3Npbmsgb24gdGhlc2UgYWRqdXN0bWVudHMu
Ci0gICAgcHJpdi0+aG9yaXpvbnRhbEFkanVzdG1lbnQgPSBHVEtfQURKVVNUTUVOVChndGtfYWRq
dXN0bWVudF9uZXcoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkpOwotICAgIHByaXYtPnZl
cnRpY2FsQWRqdXN0bWVudCA9IEdUS19BREpVU1RNRU5UKGd0a19hZGp1c3RtZW50X25ldygwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSk7Ci0KICAgICBndGtfd2lkZ2V0X3NldF9jYW5fZm9j
dXMoR1RLX1dJREdFVCh3ZWJWaWV3KSwgVFJVRSk7CiAgICAgcHJpdi0+bWFpbkZyYW1lID0gV0VC
S0lUX1dFQl9GUkFNRSh3ZWJraXRfd2ViX2ZyYW1lX25ldyh3ZWJWaWV3KSk7CiAgICAgcHJpdi0+
bGFzdFBvcHVwWFBvc2l0aW9uID0gcHJpdi0+bGFzdFBvcHVwWVBvc2l0aW9uID0gLTE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oCmluZGV4IGE0
YzU4NTMyMzc3YjYyYmIwODI3YjU0MTkwMDc4MGFkMGFkN2I3ZjEuLjkwM2ZhYmQxZDZjMDRkYjA1
Y2EzYThhNTU4NzFjNGI1MWVlZWFjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oCkBAIC03MSw5ICs3MSw2IEBAIHN0cnVjdCBfV2ViS2l0
V2ViVmlld1ByaXZhdGUgewogCiAgICAgZ2Jvb2xlYW4gdHJhbnNwYXJlbnQ7CiAKLSAgICBHUmVm
UHRyPEd0a0FkanVzdG1lbnQ+IGhvcml6b250YWxBZGp1c3RtZW50OwotICAgIEdSZWZQdHI8R3Rr
QWRqdXN0bWVudD4gdmVydGljYWxBZGp1c3RtZW50OwotCiAjaWZuZGVmIEdUS19BUElfVkVSU0lP
Tl8yCiAgICAgLy8gR3RrU2Nyb2xsYWJsZVBvbGljeSBuZWVkcyB0byBiZSBjaGVja2VkIHdoZW4K
ICAgICAvLyBkcml2aW5nIHRoZSBzY3JvbGxhYmxlIGFkanVzdG1lbnQgdmFsdWVzCg==
</data>
<flag name="review"
          id="84871"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92878</attachid>
            <date>2011-05-09 16:17:05 -0700</date>
            <delta_ts>2011-05-09 16:17:05 -0700</delta_ts>
            <desc>Diff from patch for landing</desc>
            <filename>bug-59821-20110509161704.patch</filename>
            <type>text/plain</type>
            <size>6149</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYwODAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggMjE1MmY2YzQwN2U3NzEyOTc3YTU2
ZDJhY2Y1OGRjYjg4MTIxMWZjZi4uZDQyMGEyZTM1Yzc2MWZjNjVjYzgzZDIyYmNmZjQ3Njk3ZWE1
NzZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmgKQEAgLTM4LDExICszOCwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBj
bGFzcyBDaHJvbWVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIENocm9tZUNsaWVudChXZWJLaXRXZWJWaWV3Kik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCogd2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViVmlldzsgfQogICAgICAg
ICBHdGtBZGp1c3RtZW50V2F0Y2hlciogYWRqdXN0bWVudFdhdGNoZXIoKSB7IHJldHVybiAmbV9h
ZGp1c3RtZW50V2F0Y2hlcjsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95
ZWQoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQqIHdlYlZpZXcoKSBjb25zdCB7IHJldHVybiBt
X3dlYlZpZXc7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0Jik7CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHdp
bmRvd1JlY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvR3RrQWRqdXN0bWVudFdhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvR3RrQWRqdXN0bWVudFdhdGNoZXIuY3BwCmluZGV4IDM2YTg1MzZjMWY2OWY0NDBkYTc0
MTA3ZGU3ZmNiMGM1OTVjOTk3MmQuLjAwOTlhNzYzNGU3N2EwYTY1ZTJlM2U3MjkzMWU0MWMwZGNi
ZjA0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0d0a0Fk
anVzdG1lbnRXYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9HdGtBZGp1c3RtZW50V2F0Y2hlci5jcHAKQEAgLTMyLDkgKzMyLDE2IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogR3RrQWRqdXN0bWVudFdhdGNoZXI6Okd0a0FkanVzdG1lbnRXYXRjaGVyKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1faGFu
ZGxpbmdHdGtBZGp1c3RtZW50Q2hhbmdlKGZhbHNlKQorICAgICwgbV91cGRhdGVBZGp1c3RtZW50
Q2FsbGJhY2tJZCgwKQogewogfQogCitHdGtBZGp1c3RtZW50V2F0Y2hlcjo6fkd0a0FkanVzdG1l
bnRXYXRjaGVyKCkKK3sKKyAgICBpZiAobV91cGRhdGVBZGp1c3RtZW50Q2FsbGJhY2tJZCkKKyAg
ICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fdXBkYXRlQWRqdXN0bWVudENhbGxiYWNrSWQpOworfQor
CiBzdGF0aWMgdm9pZCB1cGRhdGVBZGp1c3RtZW50RnJvbVNjcm9sbGJhcihHdGtBZGp1c3RtZW50
KiBhZGp1c3RtZW50LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoIWFkanVzdG1l
bnQpCkBAIC01Nyw2ICs2NCw3IEBAIHZvaWQgR3RrQWRqdXN0bWVudFdhdGNoZXI6OnVwZGF0ZUFk
anVzdG1lbnRzRnJvbVNjcm9sbGJhcnMoKQogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gY29y
ZShtX3dlYlZpZXcpLT5tYWluRnJhbWUoKS0+dmlldygpOwogICAgIHVwZGF0ZUFkanVzdG1lbnRG
cm9tU2Nyb2xsYmFyKG1faG9yaXpvbnRhbEFkanVzdG1lbnQuZ2V0KCksIGZyYW1lVmlldy0+aG9y
aXpvbnRhbFNjcm9sbGJhcigpKTsKICAgICB1cGRhdGVBZGp1c3RtZW50RnJvbVNjcm9sbGJhciht
X3ZlcnRpY2FsQWRqdXN0bWVudC5nZXQoKSwgZnJhbWVWaWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigp
KTsKKyAgICBtX3VwZGF0ZUFkanVzdG1lbnRDYWxsYmFja0lkID0gMDsKIH0KIAogc3RhdGljIGdi
b29sZWFuIHVwZGF0ZUFkanVzdG1lbnRDYWxsYmFjayhHdGtBZGp1c3RtZW50V2F0Y2hlciogd2F0
Y2hlcikKQEAgLTY1LDE0ICs3MywxOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gdXBkYXRlQWRqdXN0bWVu
dENhbGxiYWNrKEd0a0FkanVzdG1lbnRXYXRjaGVyKiB3YXRjaGVyKQogICAgIHJldHVybiBGQUxT
RTsKIH0KIAotCiB2b2lkIEd0a0FkanVzdG1lbnRXYXRjaGVyOjp1cGRhdGVBZGp1c3RtZW50c0Zy
b21TY3JvbGxiYXJzTGF0ZXIoKSBjb25zdAogeworICAgIC8vIFdlJ3ZlIGFscmVhZHkgc2NoZWR1
bGVkIGFuIHVwZGF0ZS4gTm8gbmVlZCB0byBzY2hlZHVsZSBhbm90aGVyLgorICAgIGlmIChtX3Vw
ZGF0ZUFkanVzdG1lbnRDYWxsYmFja0lkKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBUaGUg
ZmFjdCB0aGF0IHRoaXMgbWV0aG9kIHdhcyBjYWxsZWQgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHVw
ZGF0ZSB0aGUgc2Nyb2xsYmFycywgYnV0IGF0IHRoZQogICAgIC8vIHRpbWUgb2YgaW52b2NhdGlv
biB0aGV5IGFyZSBub3QgdXBkYXRlZCB0byByZWZsZWN0IHRoZSBzY3JvbGwgeWV0LiBXZSBzZXQg
YSBzaG9ydCB0aW1lb3V0CiAgICAgLy8gaGVyZSwgd2hpY2ggbWVhbnMgdGhhdCB0aGV5IHdpbGwg
YmUgdXBkYXRlZCBhcyBzb29uIGFzIFdlYktpdCByZXR1cm5zIHRvIHRoZSBtYWluIGxvb3AuCi0g
ICAgZ190aW1lb3V0X2FkZCgwLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPih1cGRhdGVB
ZGp1c3RtZW50Q2FsbGJhY2spLCAKLSAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8dm9pZCo+
KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSkpOworICAgIG1fdXBkYXRlQWRqdXN0bWVu
dENhbGxiYWNrSWQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklPUklUWV9ISUdIX0lETEUgKyAx
MCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHVwZGF0ZUFkanVzdG1lbnRDYWxsYmFj
ayksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpKSwgMCk7
CiB9CiAKIHN0YXRpYyB2b2lkIGFkanVzdG1lbnRWYWx1ZUNoYW5nZWRDYWxsYmFjayhHdGtBZGp1
c3RtZW50KiBhZGp1c3RtZW50LCBHdGtBZGp1c3RtZW50V2F0Y2hlciogd2F0Y2hlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0d0a0FkanVzdG1lbnRXYXRj
aGVyLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9HdGtBZGp1c3RtZW50V2F0
Y2hlci5oCmluZGV4IDgzYmMyYWNjZDYxMmNmNWZkZGI0MjQ3MTQzNDM5OGUyNmNjYzhmNGYuLmE4
YjU0ZDZhNjY4OWZlMTM0Yjg3YjA0YzlmZjhjM2ZlMWU2ODI4MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0d0a0FkanVzdG1lbnRXYXRjaGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvR3RrQWRqdXN0bWVudFdhdGNoZXIuaApA
QCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEd0a0FkanVzdG1lbnRX
YXRjaGVyIHsKIHB1YmxpYzoKICAgICBHdGtBZGp1c3RtZW50V2F0Y2hlcihXZWJLaXRXZWJWaWV3
Kik7CisgICAgfkd0a0FkanVzdG1lbnRXYXRjaGVyKCk7CiAKICAgICB2b2lkIHNldEhvcml6b250
YWxBZGp1c3RtZW50KEd0a0FkanVzdG1lbnQqKTsKICAgICB2b2lkIHNldFZlcnRpY2FsQWRqdXN0
bWVudChHdGtBZGp1c3RtZW50Kik7CkBAIC00Myw2ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgR1Jl
ZlB0cjxHdGtBZGp1c3RtZW50PiBtX2hvcml6b250YWxBZGp1c3RtZW50OwogICAgIEdSZWZQdHI8
R3RrQWRqdXN0bWVudD4gbV92ZXJ0aWNhbEFkanVzdG1lbnQ7CiAgICAgYm9vbCBtX2hhbmRsaW5n
R3RrQWRqdXN0bWVudENoYW5nZTsKKyAgICBtdXRhYmxlIHVuc2lnbmVkIG1fdXBkYXRlQWRqdXN0
bWVudENhbGxiYWNrSWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKaW5kZXggYzFlZGZkYWMyYjMyYWZmZWFkYmVkOTQ2MDcwY2RlNjY0NzQ0ZWFk
Ny4uNTczNjBlMjZjYmNhODg4ZDc2NTY5YzczNDJjNmU2N2Y1MjcyZWU3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNDI0LDI4ICs0MjQsMzIgQEAg
c3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19wb3B1cF9tZW51X2hhbmRsZXIoR3RrV2lk
Z2V0KiB3aWRnZXQpCiBzdGF0aWMgdm9pZCBzZXRIb3Jpem9udGFsQWRqdXN0bWVudChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBHdGtBZGp1c3RtZW50KiBhZGp1c3RtZW50KQogewogICAgIC8vIFRo
aXMgbWF5IGJlIGNhbGxlZCBhZnRlciB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQsIGluIHdo
aWNoIGNhc2Ugd2UgZG8gbm90aGluZy4KLSAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUod2ViVmll
dykpCisgICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7CisgICAgaWYgKHBhZ2UpCiAgICAg
ICAgIHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCktPmNs
aWVudCgpKS0+YWRqdXN0bWVudFdhdGNoZXIoKS0+c2V0SG9yaXpvbnRhbEFkanVzdG1lbnQoYWRq
dXN0bWVudCk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldFZlcnRpY2FsQWRqdXN0bWVudChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBHdGtBZGp1c3RtZW50KiBhZGp1c3RtZW50KQogewogICAgIC8vIFRo
aXMgbWF5IGJlIGNhbGxlZCBhZnRlciB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQsIGluIHdo
aWNoIGNhc2Ugd2UgZG8gbm90aGluZy4KLSAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUod2ViVmll
dykpCisgICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7CisgICAgaWYgKHBhZ2UpCiAgICAg
ICAgIHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCktPmNs
aWVudCgpKS0+YWRqdXN0bWVudFdhdGNoZXIoKS0+c2V0VmVydGljYWxBZGp1c3RtZW50KGFkanVz
dG1lbnQpOwogfQogCiBzdGF0aWMgR3RrQWRqdXN0bWVudCogZ2V0SG9yaXpvbnRhbEFkanVzdG1l
bnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUo
d2ViVmlldykpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXQ6OkNocm9tZUNsaWVu
dCo+KGNvcmUod2ViVmlldyktPmNocm9tZSgpLT5jbGllbnQoKSktPmhvcml6b250YWxBZGp1c3Rt
ZW50KCk7CisgICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7CisgICAgaWYgKHBhZ2UpCisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXQ6OkNocm9tZUNsaWVudCo+KHBhZ2UtPmNo
cm9tZSgpLT5jbGllbnQoKSktPmhvcml6b250YWxBZGp1c3RtZW50KCk7CiAgICAgcmV0dXJuIDA7
CiB9CiAKIHN0YXRpYyBHdGtBZGp1c3RtZW50KiBnZXRWZXJ0aWNhbEFkanVzdG1lbnQoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKIHsKLSAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldykp
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXQ6OkNocm9tZUNsaWVudCo+KGNvcmUo
d2ViVmlldyktPmNocm9tZSgpLT5jbGllbnQoKSktPnZlcnRpY2FsQWRqdXN0bWVudCgpOworICAg
IFBhZ2UqIHBhZ2UgPSBjb3JlKHdlYlZpZXcpOworICAgIGlmIChwYWdlKQorICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihwYWdlLT5jaHJvbWUoKS0+Y2xp
ZW50KCkpLT52ZXJ0aWNhbEFkanVzdG1lbnQoKTsKICAgICByZXR1cm4gMDsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>