<?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>34773</bug_id>
          
          <creation_ts>2010-02-09 12:13:12 -0800</creation_ts>
          <short_desc>[GTK] Hits assertion on history back, with page cache enabled, in specific conditions</short_desc>
          <delta_ts>2010-02-10 13:28:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gustavo Noronha (kov)">gustavo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>thejoe</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>189115</commentid>
    <comment_count>0</comment_count>
      <attachid>48436</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-09 12:13:12 -0800</bug_when>
    <thetext>Created attachment 48436
test case

I am attaching a (reduced as much as I could) test case. It seems like we hit this assertion when going back to a page that has been removed from the page cache, but only after scrolling one of the pages, and only if one of the pages has frames. Some of these may actually not be necessary, but those were the conditions we could reproduce the crash more consistently with. We use 3 pages as the page cache limit; raising that limit to 5 makes this specific test case for the crash not work, which indicates it only happens when going to a non-cached page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189344</commentid>
    <comment_count>1</comment_count>
      <attachid>48496</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-10 06:04:36 -0800</bug_when>
    <thetext>Created attachment 48496
Disconnect adjustments, and reconnect them when needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189354</commentid>
    <comment_count>2</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-02-10 06:54:48 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=48496) [details]
&gt; Disconnect adjustments, and reconnect them when needed

This looks very good to me, I have just a few questions/doubts:

- I don&apos;t think the test really needs to open new windows? I certainly got the crashes without doing that.
- Do you really need the fourth page just for the PASS? Can&apos;t you just print that  when you are back at the beginning or something? Or just get rid of it completely, since the tests passes if you don&apos;t crash anyway.
- Do we really need the bit about saving the values in the adjustments? Shouldn&apos;t that be set by the view when it&apos;s restored automatically through the usual path? Or was that dependent on a new view being created?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189358</commentid>
    <comment_count>3</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-02-10 07:10:55 -0800</bug_when>
    <thetext>(In reply to comment #2)

Just to update this after some chat through jabber.

&gt; - I don&apos;t think the test really needs to open new windows? I certainly got the
&gt; crashes without doing that.

Apparently this was only done to organize the test, but it&apos;s not needed for it to crash. Guess we can try to get rid of it.

&gt; - Do you really need the fourth page just for the PASS? Can&apos;t you just print
&gt; that  when you are back at the beginning or something? Or just get rid of it
&gt; completely, since the tests passes if you don&apos;t crash anyway.

Didn&apos;t discuss this :P

&gt; - Do we really need the bit about saving the values in the adjustments?
&gt; Shouldn&apos;t that be set by the view when it&apos;s restored automatically through the
&gt; usual path? Or was that dependent on a new view being created?

This one seems to be needed because although the view indeed restores the values it does it before we are able to restore our adjustments, so it&apos;s useless. If this is the case there should be some FIXME/comment in the code about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189373</commentid>
    <comment_count>4</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-10 08:17:57 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; 
&gt; Just to update this after some chat through jabber.

Too quick, because I was soo hungry =D

&gt; &gt; - I don&apos;t think the test really needs to open new windows? I certainly got the
&gt; &gt; crashes without doing that.
&gt; 
&gt; Apparently this was only done to organize the test, but it&apos;s not needed for it
&gt; to crash. Guess we can try to get rid of it.

Yes, but I don&apos;t think it&apos;s worth the effort. The test works fine like it is, and it uses the same pattern as fast/harness/use-page-cache.html, so unless you have something ready I think we can leave it as it is.

&gt; &gt; - Do you really need the fourth page just for the PASS? Can&apos;t you just print
&gt; &gt; that  when you are back at the beginning or something? Or just get rid of it
&gt; &gt; completely, since the tests passes if you don&apos;t crash anyway.
&gt; 
&gt; Didn&apos;t discuss this :P

The fourth page was only needed to cause the first one to be evicted from the page cache. I guess we could replace this with a first page that is never put in the page cache instead. Would be a better solution overall.  I&apos;ll see if I can do that.

&gt; &gt; - Do we really need the bit about saving the values in the adjustments?
&gt; &gt; Shouldn&apos;t that be set by the view when it&apos;s restored automatically through the
&gt; &gt; usual path? Or was that dependent on a new view being created?
&gt; 
&gt; This one seems to be needed because although the view indeed restores the
&gt; values it does it before we are able to restore our adjustments, so it&apos;s
&gt; useless. If this is the case there should be some FIXME/comment in the code
&gt; about it.

Yeah, exactly. There could be other ways of triggering this, but I think this is a good solution that has low risk of unwanted side effects. I&apos;ll add a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189381</commentid>
    <comment_count>5</comment_count>
      <attachid>48507</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-10 08:45:44 -0800</bug_when>
    <thetext>Created attachment 48507
Second version with suggestions by Xan addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189415</commentid>
    <comment_count>6</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-02-10 10:51:15 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; This one seems to be needed because although the view indeed restores the
&gt; &gt; values it does it before we are able to restore our adjustments, so it&apos;s
&gt; &gt; useless. If this is the case there should be some FIXME/comment in the code
&gt; &gt; about it.
&gt; 
&gt; Yeah, exactly. There could be other ways of triggering this, but I think this
&gt; is a good solution that has low risk of unwanted side effects. I&apos;ll add a
&gt; comment.

So, the thing is that this seems really weird. The CachedFrame is restored, and the old FrameView set to the Frame, *after* the transition method is called, so it seems to me there&apos;s no way WebCore could be setting the scroll values before our method is called. Can you tell me where was that happening exactly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189436</commentid>
    <comment_count>7</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-10 12:08:22 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; &gt; This one seems to be needed because although the view indeed restores the
&gt; &gt; &gt; values it does it before we are able to restore our adjustments, so it&apos;s
&gt; &gt; &gt; useless. If this is the case there should be some FIXME/comment in the code
&gt; &gt; &gt; about it.
&gt; &gt; 
&gt; &gt; Yeah, exactly. There could be other ways of triggering this, but I think this
&gt; &gt; is a good solution that has low risk of unwanted side effects. I&apos;ll add a
&gt; &gt; comment.
&gt; 
&gt; So, the thing is that this seems really weird. The CachedFrame is restored, and
&gt; the old FrameView set to the Frame, *after* the transition method is called, so
&gt; it seems to me there&apos;s no way WebCore could be setting the scroll values before
&gt; our method is called. Can you tell me where was that happening exactly?

The problem is that it doesn&apos;t set the scroll values again, at all, from all I could find. The saved frameview does not have a change in size, so our adjustment&apos;s upper is never updated.

And that is also why we get incorrect scroll offsets, or lose scrollbars when page cache is enabled, with the current situation - it does not update the upper limit of the adjustment when loading a cached page, so any setting of the value is wrong, because it will likely be bound by incorrect values. And we are the only ones that need this, since we are the only ones that use specific platform structure to track these changes (adjustments).

Also, that bug that had the scroll return to the top after a while is a symptom of cached frame views interacting with our adjustments.

I think it is likely that causing a notification like frameRectsChanged would have the same result, but I think it might cause unwanted side-effects as well. Like I said on jabber, this looks like we are doing work that should be automatically done by WebCore, but this is just because we are duplicating functionality that WebCore provides to be a better citizen with arbitrary scrolling widgets.

If you want to do some testing, and to clear up any misunderstandings in my explanation about what is missing without that change, add this patch:

diff --git a/WebCore/platform/gtk/ScrollViewGtk.cpp b/WebCore/platform/gtk/ScrollViewGtk.cpp
index 848f8c9..6b5071a 100644
--- a/WebCore/platform/gtk/ScrollViewGtk.cpp
+++ b/WebCore/platform/gtk/ScrollViewGtk.cpp
@@ -99,6 +99,8 @@ void ScrollView::setGtkAdjustments(GtkAdjustment* hadj, GtkAdjustment* vadj, 
         // code path, so we make sure they are up-to-date here. This
         // is needed for the parent scrolling widget to be able to
         // report correct values.
+        resetValues = true;
+
         m_horizontalAdjustment-&gt;lower = 0;
         m_horizontalAdjustment-&gt;upper = resetValues ? 0 : frameRect().width();
         m_horizontalAdjustment-&gt;value = resetValues ? 0 : scrollOffset().width();

That restores the original behavior of this part of the code. You will notice that the scrollbar behavior is normal when you browse through pages using Epiphany, but you may eventually lose the scrollbar or something, because the GtkScrolledWindow does not really know the info it should (you can check this running the testwebview unit test), or maybe you won&apos;t get visible problems, but having wrong information in the GtkScrolledWindow is where the problem is at.

The second question will be why the hell this worked before. Well, it didn&apos;t work very well before, with the page cache enabled - we did get weird behaviour, and part of it was because the adjustment values that were being used were not correct for that page.

Again, I understand you think it&apos;s weird, but I have come to expect our scrolling code to need special behaviour, because we&apos;re so different when compared to other ports, and the problem gets worse when we have ScrollViews being cached, and reused (which is the base of all the problems here), while our adjustments were not planned to be set in more than a ScrollView at once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189439</commentid>
    <comment_count>8</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-10 12:14:28 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; The problem is that it doesn&apos;t set the scroll values again, at all, from all I
&gt; could find. The saved frameview does not have a change in size, so our
&gt; adjustment&apos;s upper is never updated.

That is a bit wrong, so I should rephrase before you catch me lying =D - it does try setting the scroll offset (which is why we do get the actual scroll on the view), but with an incorrect upper this goes wrong for the GtkScrolledWindow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189455</commentid>
    <comment_count>9</comment_count>
      <attachid>48507</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-10 13:27:38 -0800</bug_when>
    <thetext>Comment on attachment 48507
Second version with suggestions by Xan addressed

Landed as r54620, after xan r=me&apos;d on IRC.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>48436</attachid>
            <date>2010-02-09 12:13:12 -0800</date>
            <delta_ts>2010-02-10 06:04:36 -0800</delta_ts>
            <desc>test case</desc>
            <filename>0001-Test-case-of-the-assert-we-hit-with-page-cache-enabl.patch</filename>
            <type>application/octet-stream</type>
            <size>5354</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSAyYTJiYjc5MDNkYzI3ZDk3NTk2MjNlNTVlZDViYTI2NDg0NDVmYmViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+
CkRhdGU6IFR1ZSwgOSBGZWIgMjAxMCAxODowNToyNSAtMDIwMApTdWJqZWN0OiBbUEFUQ0hdIFRl
c3QgY2FzZSBvZiB0aGUgYXNzZXJ0IHdlIGhpdCB3aXRoIHBhZ2UgY2FjaGUgZW5hYmxlZAoKLS0t
CiAuLi4vZmFzdC9mcmFtZXMvZnJhbWUtY3Jhc2gtd2l0aC1wYWdlLWNhY2hlLmh0bWwgICB8ICAg
MzMgKysrKysrKysrKysrKysrKysrKysKIC4uLi9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVk
LXBhZ2UtMS5odG1sICAgICAgIHwgICAyMyArKysrKysrKysrKysrKwogLi4uL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9jYWNoZWQtcGFnZS0yLmh0bWwgICAgICAgfCAgIDI3ICsrKysrKysrKysrKysr
KysKIC4uLi9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMy5odG1sICAgICAgIHwg
ICAyNCArKysrKysrKysrKysrKwogLi4uL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFn
ZS00Lmh0bWwgICAgICAgfCAgICAzICsrCiAuLi4vZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hl
ZC1wYWdlLWlmcmFtZS5odG1sICB8ICAgIDUgKysrCiA2IGZpbGVzIGNoYW5nZWQsIDExNSBpbnNl
cnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL2ZyYW1lLWNyYXNoLXdpdGgtcGFnZS1jYWNoZS5odG1sCiBjcmVhdGUgbW9k
ZSAxMDA3NTUgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEu
aHRtbAogY3JlYXRlIG1vZGUgMTAwNzU1IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9jYWNoZWQtcGFnZS0yLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMy5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTQuaHRtbAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQt
cGFnZS1pZnJhbWUuaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Zy
YW1lLWNyYXNoLXdpdGgtcGFnZS1jYWNoZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
ZnJhbWUtY3Jhc2gtd2l0aC1wYWdlLWNhY2hlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOGEwNmY4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL2ZyYW1lLWNyYXNoLXdpdGgtcGFnZS1jYWNoZS5odG1sCkBAIC0wLDAgKzEsMzMgQEAK
KzxodG1sPgorPHNjcmlwdD4KK3dpbmRvdy5maW5pc2ggPSBmdW5jdGlvbigpCit7CisgICAgaWYg
KGxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Cit9CisKK3dpbmRvdy5sb2cgPSBmdW5jdGlvbihtZXNzYWdlKSB7CisgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8
YnI+IjsKK30KKword2luZG93LmZhaWx1cmUgPSBmdW5jdGlvbihtZXNzYWdlKSB7CisgICAgbG9n
KCJGQUlMOiAiICsgbWVzc2FnZSk7CisgICAgZmluaXNoKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qo
KSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2Fu
T3BlbldpbmRvd3MoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEpOworICAgIH0KKyAg
ICBsb2coIm9wZW4gcGFnZS0xIik7CisgICAgd2luZG93Lm9wZW4oInJlc291cmNlcy9jYWNoZWQt
cGFnZS0xLmh0bWwiKTsKK30KKzwvc2NyaXB0PgorCis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8
ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjI3MTAyYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWwKQEAgLTAs
MCArMSwyMyBAQAorPHNjcmlwdD4KK3ZhciBpbnRlcnZhbElkOworCitmdW5jdGlvbiBmaW5pc2go
KSB7CisgICAgaWYgKCF3aW5kb3cub3BlbmVyLmNhbkV4aXQyKQorICAgICAgICByZXR1cm47CisK
KyAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpOworICAgIHdpbmRvdy5vcGVuZXIubG9nKCJC
YWNrIG9uIHBhZ2UtMSwgdGltZXIgaXMgc3RpbGwgZmlyaW5nLiIpOworICAgIHdpbmRvdy5vcGVu
ZXIubG9nKCJQQVNTLiIpOworICAgIHdpbmRvdy5vcGVuZXIuZmluaXNoKCk7Cit9CisKK2Z1bmN0
aW9uIGxvYWROZXh0KCkgeworICAgIGludGVydmFsSWQgPSBzZXRJbnRlcnZhbChmaW5pc2gsIDIw
KTsKKworICAgIHdpbmRvdy5vcGVuZXIubG9nKCJwYWdlLTEsIGFib3V0IHRvIG5hdmlnYXRlIHRv
IHBhZ2UtMi4iKQorICAgIGxvY2F0aW9uLmhyZWYgPSAiY2FjaGVkLXBhZ2UtMi5odG1sIjsKK30K
Kzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJsb2FkTmV4dCgpIj4KK1BBU1MKKzwvYm9keT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0y
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZkNGYyNzIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2Ut
Mi5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxzY3JpcHQ+Cit2YXIgaW50ZXJ2YWxJZDsKKworZnVu
Y3Rpb24gZ29CYWNrKCkgeworICAgIGlmICghd2luZG93Lm9wZW5lci5jYW5FeGl0MykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTsKKyAgICB3aW5kb3cu
b3BlbmVyLmxvZygiQmFjayBvbiBwYWdlLTIsIHRpbWVyIGlzIHN0aWxsIGZpcmluZy4iKTsKKyAg
ICBoaXN0b3J5LmJhY2soKTsKK30KKworZnVuY3Rpb24gbG9hZE5leHQoKSB7CisgICAgd2luZG93
Lm9wZW5lci5jYW5FeGl0MiA9IHRydWU7CisKKyAgICAvLyBUaGUgY3Jhc2ggb25seSBoYXBwZW5z
IHdoZW4gd2Ugc2Nyb2xsIGhlcmUhCisgICAgd2luZG93LnNjcm9sbEJ5KDAsIDEwMCk7CisKKyAg
ICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoZ29CYWNrLCAyMCk7CisKKyAgICB3aW5kb3cub3Bl
bmVyLmxvZygicGFnZS0yLCBhYm91dCB0byBuYXZpZ2F0ZSB0byBwYWdlLTMuIikKKyAgICBsb2Nh
dGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTMuaHRtbCI7Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9u
bG9hZD0ibG9hZE5leHQoKSI+Cis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEyMDBweDsgYmFja2dyb3Vu
ZC1jb2xvcjogZ3JlZW4iPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTMuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNWI4Yzc4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0zLmh0bWwKQEAgLTAsMCArMSwyNCBA
QAorPHNjcmlwdD4KK3ZhciBpbnRlcnZhbElkOworCitmdW5jdGlvbiBnb0JhY2soKSB7CisgICAg
Y2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTsKKyAgICB3aW5kb3cub3BlbmVyLmxvZygiQmFjayBv
biBwYWdlLTMsIHRpbWVyIGlzIHN0aWxsIGZpcmluZy4iKTsKKyAgICBoaXN0b3J5LmJhY2soKTsK
K30KKworZnVuY3Rpb24gbG9hZE5leHQoKSB7CisgICAgd2luZG93Lm9wZW5lci5jYW5FeGl0MyA9
IHRydWU7CisKKyAgICAvLyBUaGUgY3Jhc2ggb25seSBoYXBwZW5zIHdoZW4gd2Ugc2Nyb2xsIGhl
cmUhCisgICAgd2luZG93LnNjcm9sbEJ5KDAsIDEwMCk7CisKKyAgICBpbnRlcnZhbElkID0gc2V0
SW50ZXJ2YWwoZ29CYWNrLCAyMCk7CisKKyAgICB3aW5kb3cub3BlbmVyLmxvZygicGFnZS0zLCBh
Ym91dCB0byBuYXZpZ2F0ZSB0byBwYWdlLTQuIikKKyAgICBsb2NhdGlvbi5ocmVmID0gImNhY2hl
ZC1wYWdlLTQuaHRtbCI7Cit9Cis8L3NjcmlwdD4KKzxib2R5PgorPGlmcmFtZSBzcmM9ImNhY2hl
ZC1wYWdlLWlmcmFtZS5odG1sIiBvbmxvYWQ9ImxvYWROZXh0KCkiPjwvaWZyYW1lPgorPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1w
YWdlLTQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFn
ZS00Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdhOThiZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQt
cGFnZS00Lmh0bWwKQEAgLTAsMCArMSwzIEBACis8Ym9keSBvbmxvYWQ9Imhpc3RvcnkuYmFjaygp
Ij4KK1BBU1MKKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9jYWNoZWQtcGFnZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9jYWNoZWQtcGFnZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40ZTExOTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNSBA
QAorPGh0bWw+Cis8Ym9keT4KKzxkaXYgc3R5bGU9ImhlaWdodDogMTIwMHB4OyBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbiI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Ci0tIAoxLjYuNi4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48496</attachid>
            <date>2010-02-10 06:04:36 -0800</date>
            <delta_ts>2010-02-10 08:45:44 -0800</delta_ts>
            <desc>Disconnect adjustments, and reconnect them when needed</desc>
            <filename>0001-Disconnect-scrollbars-from-the-WebView-adjustments-w.patch</filename>
            <type>text/plain</type>
            <size>18695</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSA3ZjI5YmQ5N2Y3OTY2NjU0Y2U2YTRlNTY3YzAxMTA2OWM2NTA1MDAxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+
CkRhdGU6IFR1ZSwgOSBGZWIgMjAxMCAyMjowMTo0MiAtMDIwMApTdWJqZWN0OiBbUEFUQ0hdIERp
c2Nvbm5lY3Qgc2Nyb2xsYmFycyBmcm9tIHRoZSBXZWJWaWV3IGFkanVzdG1lbnRzIHdoZW4gbmVl
ZGVkCgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAxNCArKysrKysrKwogLi4uL2ZyYW1lLWNyYXNoLXdpdGgtcGFnZS1jYWNoZS1leHBl
Y3RlZC50eHQgICAgICAgfCAgICA5ICsrKysrCiAuLi4vZmFzdC9mcmFtZXMvZnJhbWUtY3Jhc2gt
d2l0aC1wYWdlLWNhY2hlLmh0bWwgICB8ICAgMzQgKysrKysrKysrKysrKysrKysrKysKIC4uLi9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sICAgICAgIHwgICAyMyArKysr
KysrKysrKysrCiAuLi4vZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTIuaHRtbCAg
ICAgICB8ICAgMjcgKysrKysrKysrKysrKysrCiAuLi4vZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2Nh
Y2hlZC1wYWdlLTMuaHRtbCAgICAgICB8ICAgMjQgKysrKysrKysrKysrKysKIC4uLi9mYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtNC5odG1sICAgICAgIHwgICAgMyArKwogLi4uL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS1pZnJhbWUuaHRtbCAgfCAgICA1ICsrKwog
V2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5
ICsrKysrKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3Bw
ICAgICAgICAgICAgIHwgICAyOCArKysrKysrKysrKysrLS0tCiBXZWJDb3JlL3BsYXRmb3JtL2d0
ay9TY3JvbGxiYXJHdGsuY3BwICAgICAgICAgICAgICB8ICAgMjggKysrKysrKysrKysrKysrKwog
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmggICAgICAgICAgICAgICAgfCAgICA0
ICsrLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDEzICsrKysrKysKIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwIHwgICAyMiArKysrKysrLS0tLS0KIFdlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZp
ZXcuYyAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArKystLS0KIDE2IGZpbGVzIGNoYW5nZWQs
IDI0MyBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1jcmFzaC13aXRoLXBhZ2UtY2FjaGUtZXhwZWN0
ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUt
Y3Jhc2gtd2l0aC1wYWdlLWNhY2hlLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sCiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTIuaHRt
bAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9j
YWNoZWQtcGFnZS0zLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtNC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLWlmcmFtZS5odG1sCgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGIwYWE5NGYuLjk2NTg3ZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wMi0w
OSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51
az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RL
XSBIaXRzIGFzc2VydGlvbiBvbiBoaXN0b3J5IGJhY2ssIHdpdGggcGFnZSBjYWNoZSBlbmFibGVk
LCBpbiBzcGVjaWZpYyBjb25kaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNDc3MworCisgICAgICAgICogZmFzdC9mcmFtZXMvZnJhbWUtY3Jh
c2gtd2l0aC1wYWdlLWNhY2hlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jl
c291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVz
L3Jlc291cmNlcy9jYWNoZWQtcGFnZS0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJh
bWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS00Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS1pZnJhbWUuaHRtbDogQWRkZWQuCisKIDIw
MTAtMDItMDkgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9mcmFtZS1jcmFzaC13aXRoLXBhZ2UtY2FjaGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtY3Jhc2gtd2l0aC1wYWdlLWNhY2hlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWY4ZWQ0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtY3Jhc2gtd2l0aC1wYWdlLWNh
Y2hlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK0lmIFdlYktpdCBkb2VzIG5vdCBhc3Nl
cnQgb3IgY3Jhc2gsIHlvdSBwYXNzZWQuCitvcGVuIHBhZ2UtMQorcGFnZS0xLCBhYm91dCB0byBu
YXZpZ2F0ZSB0byBwYWdlLTIuCitwYWdlLTIsIGFib3V0IHRvIG5hdmlnYXRlIHRvIHBhZ2UtMy4K
K3BhZ2UtMywgYWJvdXQgdG8gbmF2aWdhdGUgdG8gcGFnZS00LgorQmFjayBvbiBwYWdlLTMsIHRp
bWVyIGlzIHN0aWxsIGZpcmluZy4KK0JhY2sgb24gcGFnZS0yLCB0aW1lciBpcyBzdGlsbCBmaXJp
bmcuCitQQVNTLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1j
cmFzaC13aXRoLXBhZ2UtY2FjaGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1l
LWNyYXNoLXdpdGgtcGFnZS1jYWNoZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjM2MjFmMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9mcmFtZS1jcmFzaC13aXRoLXBhZ2UtY2FjaGUuaHRtbApAQCAtMCwwICsxLDM0IEBACis8aHRt
bD4KKzxzY3JpcHQ+Cit3aW5kb3cuZmluaXNoID0gZnVuY3Rpb24oKQoreworICAgIGlmIChsYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCit3aW5kb3cubG9nID0gZnVuY3Rpb24obWVzc2FnZSkgeworICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7
Cit9CisKK3dpbmRvdy5mYWlsdXJlID0gZnVuY3Rpb24obWVzc2FnZSkgeworICAgIGxvZygiRkFJ
TDogIiArIG1lc3NhZ2UpOworICAgIGZpbmlzaCgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkgewor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5X
aW5kb3dzKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICB9CisgICAgbG9n
KCJvcGVuIHBhZ2UtMSIpOworICAgIHdpbmRvdy5vcGVuKCJyZXNvdXJjZXMvY2FjaGVkLXBhZ2Ut
MS5odG1sIik7Cit9Cis8L3NjcmlwdD4KKworPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorSWYgV2Vi
S2l0IGRvZXMgbm90IGFzc2VydCBvciBjcmFzaCwgeW91IHBhc3NlZC4KKzxkaXYgaWQ9InJlc3Vs
dCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40MTEyZjA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbApAQCAtMCwwICsxLDIzIEBACis8
c2NyaXB0PgordmFyIGludGVydmFsSWQ7CisKK2Z1bmN0aW9uIGVuZFRlc3QoKSB7CisgICAgd2lu
ZG93Lm9wZW5lci5sb2coIlBBU1MuIik7CisgICAgd2luZG93Lm9wZW5lci5maW5pc2goKTsKK30K
KworZnVuY3Rpb24gbG9hZE5leHQoKSB7CisgICAgaWYgKHdpbmRvdy5vcGVuZXIuY2FuRXhpdDIp
IHsKKyAgICAgICAgZW5kVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50
ZXJ2YWxJZCA9IHNldEludGVydmFsKGVuZFRlc3QsIDEwMCk7CisKKyAgICB3aW5kb3cub3BlbmVy
LmxvZygicGFnZS0xLCBhYm91dCB0byBuYXZpZ2F0ZSB0byBwYWdlLTIuIikKKyAgICBsb2NhdGlv
bi5ocmVmID0gImNhY2hlZC1wYWdlLTIuaHRtbCI7Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9h
ZD0ibG9hZE5leHQoKSI+CitQQVNTCis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5mZDRmMjcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTIuaHRtbApAQCAtMCwwICsxLDI3IEBA
Cis8c2NyaXB0PgordmFyIGludGVydmFsSWQ7CisKK2Z1bmN0aW9uIGdvQmFjaygpIHsKKyAgICBp
ZiAoIXdpbmRvdy5vcGVuZXIuY2FuRXhpdDMpCisgICAgICAgIHJldHVybjsKKworICAgIGNsZWFy
SW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CisgICAgd2luZG93Lm9wZW5lci5sb2coIkJhY2sgb24gcGFn
ZS0yLCB0aW1lciBpcyBzdGlsbCBmaXJpbmcuIik7CisgICAgaGlzdG9yeS5iYWNrKCk7Cit9CisK
K2Z1bmN0aW9uIGxvYWROZXh0KCkgeworICAgIHdpbmRvdy5vcGVuZXIuY2FuRXhpdDIgPSB0cnVl
OworCisgICAgLy8gVGhlIGNyYXNoIG9ubHkgaGFwcGVucyB3aGVuIHdlIHNjcm9sbCBoZXJlIQor
ICAgIHdpbmRvdy5zY3JvbGxCeSgwLCAxMDApOworCisgICAgaW50ZXJ2YWxJZCA9IHNldEludGVy
dmFsKGdvQmFjaywgMjApOworCisgICAgd2luZG93Lm9wZW5lci5sb2coInBhZ2UtMiwgYWJvdXQg
dG8gbmF2aWdhdGUgdG8gcGFnZS0zLiIpCisgICAgbG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFn
ZS0zLmh0bWwiOworfQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWROZXh0KCkiPgorPGRp
diBzdHlsZT0iaGVpZ2h0OiAxMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIj48L2Rpdj4K
KzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9j
YWNoZWQtcGFnZS0zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2Fj
aGVkLXBhZ2UtMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViOGM3
OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
Y2FjaGVkLXBhZ2UtMy5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxzY3JpcHQ+Cit2YXIgaW50ZXJ2
YWxJZDsKKworZnVuY3Rpb24gZ29CYWNrKCkgeworICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJ
ZCk7CisgICAgd2luZG93Lm9wZW5lci5sb2coIkJhY2sgb24gcGFnZS0zLCB0aW1lciBpcyBzdGls
bCBmaXJpbmcuIik7CisgICAgaGlzdG9yeS5iYWNrKCk7Cit9CisKK2Z1bmN0aW9uIGxvYWROZXh0
KCkgeworICAgIHdpbmRvdy5vcGVuZXIuY2FuRXhpdDMgPSB0cnVlOworCisgICAgLy8gVGhlIGNy
YXNoIG9ubHkgaGFwcGVucyB3aGVuIHdlIHNjcm9sbCBoZXJlIQorICAgIHdpbmRvdy5zY3JvbGxC
eSgwLCAxMDApOworCisgICAgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGdvQmFjaywgMjApOwor
CisgICAgd2luZG93Lm9wZW5lci5sb2coInBhZ2UtMywgYWJvdXQgdG8gbmF2aWdhdGUgdG8gcGFn
ZS00LiIpCisgICAgbG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS00Lmh0bWwiOworfQorPC9z
Y3JpcHQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSJjYWNoZWQtcGFnZS1pZnJhbWUuaHRtbCIgb25s
b2FkPSJsb2FkTmV4dCgpIj48L2lmcmFtZT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS00Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtNC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3YTk4YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtNC5odG1sCkBAIC0wLDAgKzEs
MyBAQAorPGJvZHkgb25sb2FkPSJoaXN0b3J5LmJhY2soKSI+CitQQVNTCis8L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtaWZy
YW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2Ut
aWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUxMTk0OAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNo
ZWQtcGFnZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHk+Cis8ZGl2
IHN0eWxlPSJoZWlnaHQ6IDEyMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iPjwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA0OWNmNTc4Li4zYmVhZTRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTAy
LTA5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEhpdHMgYXNzZXJ0aW9u
IG9uIGhpc3RvcnkgYmFjaywgd2l0aCBwYWdlIGNhY2hlIGVuYWJsZWQsIGluIHNwZWNpZmljIGNv
bmRpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM0NzczCisKKyAgICAgICAgV2hlbiB1bnNldHRpbmcgdGhlIGFkanVzdG1lbnRzIGZyb20gYSBT
Y3JvbGxWaWV3LCBhbHNvIGRpc2Nvbm5lY3QKKyAgICAgICAgdGhlbSBmcm9tIHRoZSBTY3JvbGxi
YXJzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZnJhbWVzL2ZyYW1lLWNyYXNoLXdpdGgtcGFnZS1j
YWNoZS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRHdGtBZGp1c3RtZW50cyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5jcHA6CisgICAgICAgIChTY3JvbGxiYXJHdGs6
On5TY3JvbGxiYXJHdGspOgorICAgICAgICAoU2Nyb2xsYmFyR3RrOjpkZXRhY2hBZGp1c3RtZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmg6CisKIDIwMTAtMDItMDkg
IEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IGE3MTczYTcuLjExMWQ2
YjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0zMTQsNyArMzE0LDcgQEAgcHJpdmF0ZToKIAog
I2lmIFBMQVRGT1JNKEdUSykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEd0a0FkanVzdG1lbnRzKEd0
a0FkanVzdG1lbnQqIGhhZGosIEd0a0FkanVzdG1lbnQqIHZhZGopOworICAgIHZvaWQgc2V0R3Rr
QWRqdXN0bWVudHMoR3RrQWRqdXN0bWVudCogaGFkaiwgR3RrQWRqdXN0bWVudCogdmFkaiwgYm9v
bCByZXNldFZhbHVlcyA9IHRydWUpOwogICAgIEd0a0FkanVzdG1lbnQqIG1faG9yaXpvbnRhbEFk
anVzdG1lbnQ7CiAgICAgR3RrQWRqdXN0bWVudCogbV92ZXJ0aWNhbEFkanVzdG1lbnQ7CiAgICAg
dm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KSB7IG1fc2Nyb2xsT2Zm
c2V0ID0gb2Zmc2V0OyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxW
aWV3R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwCmluZGV4
IGE3ZTdlMTUuLmJjZDc3NWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9s
bFZpZXdHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3Bw
CkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxl
IENvbXB1dGVyLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDggQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCBDb2xsYWJvcmEg
THRkLgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNzYsNyArNzYsNyBAQCBQ
YXNzUmVmUHRyPFNjcm9sbGJhcj4gU2Nyb2xsVmlldzo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJh
ck9yaWVudGF0aW9uIG9yaWVudGF0aQogICogVGhlIGZvbGxvd2luZyBpcyBhc3N1bWVkOgogICog
ICAoaGFkaiAmJiB2YWRqKSB8fCAoIWhhZGogJiYgIXZhZGopCiAgKi8KLXZvaWQgU2Nyb2xsVmll
dzo6c2V0R3RrQWRqdXN0bWVudHMoR3RrQWRqdXN0bWVudCogaGFkaiwgR3RrQWRqdXN0bWVudCog
dmFkaikKK3ZvaWQgU2Nyb2xsVmlldzo6c2V0R3RrQWRqdXN0bWVudHMoR3RrQWRqdXN0bWVudCog
aGFkaiwgR3RrQWRqdXN0bWVudCogdmFkaiwgYm9vbCByZXNldFZhbHVlcykKIHsKICAgICBBU1NF
UlQoIWhhZGogPT0gIXZhZGopOwogCkBAIC04NSwxNyArODUsMzMgQEAgdm9pZCBTY3JvbGxWaWV3
OjpzZXRHdGtBZGp1c3RtZW50cyhHdGtBZGp1c3RtZW50KiBoYWRqLCBHdGtBZGp1c3RtZW50KiB2
YWRqKQogCiAgICAgLy8gUmVzZXQgdGhlIGFkanVzdG1lbnRzIHRvIGEgc2FuZSBkZWZhdWx0CiAg
ICAgaWYgKG1faG9yaXpvbnRhbEFkanVzdG1lbnQpIHsKKyAgICAgICAgU2Nyb2xsYmFyR3RrKiBo
U2Nyb2xsYmFyID0gcmVpbnRlcnByZXRfY2FzdDxTY3JvbGxiYXJHdGsqPihob3Jpem9udGFsU2Ny
b2xsYmFyKCkpOworICAgICAgICBpZiAoaFNjcm9sbGJhcikKKyAgICAgICAgICAgIGhTY3JvbGxi
YXItPmF0dGFjaEFkanVzdG1lbnQobV9ob3Jpem9udGFsQWRqdXN0bWVudCk7CisKKyAgICAgICAg
U2Nyb2xsYmFyR3RrKiB2U2Nyb2xsYmFyID0gcmVpbnRlcnByZXRfY2FzdDxTY3JvbGxiYXJHdGsq
Pih2ZXJ0aWNhbFNjcm9sbGJhcigpKTsKKyAgICAgICAgaWYgKHZTY3JvbGxiYXIpCisgICAgICAg
ICAgICB2U2Nyb2xsYmFyLT5hdHRhY2hBZGp1c3RtZW50KG1fdmVydGljYWxBZGp1c3RtZW50KTsK
KwogICAgICAgICBtX2hvcml6b250YWxBZGp1c3RtZW50LT5sb3dlciA9IDA7Ci0gICAgICAgIG1f
aG9yaXpvbnRhbEFkanVzdG1lbnQtPnVwcGVyID0gMDsKLSAgICAgICAgbV9ob3Jpem9udGFsQWRq
dXN0bWVudC0+dmFsdWUgPSAwOworICAgICAgICBtX2hvcml6b250YWxBZGp1c3RtZW50LT51cHBl
ciA9IHJlc2V0VmFsdWVzID8gMCA6IGZyYW1lUmVjdCgpLndpZHRoKCk7CisgICAgICAgIG1faG9y
aXpvbnRhbEFkanVzdG1lbnQtPnZhbHVlID0gcmVzZXRWYWx1ZXMgPyAwIDogc2Nyb2xsT2Zmc2V0
KCkud2lkdGgoKTsKICAgICAgICAgZ3RrX2FkanVzdG1lbnRfY2hhbmdlZChtX2hvcml6b250YWxB
ZGp1c3RtZW50KTsKICAgICAgICAgZ3RrX2FkanVzdG1lbnRfdmFsdWVfY2hhbmdlZChtX2hvcml6
b250YWxBZGp1c3RtZW50KTsKIAogICAgICAgICBtX3ZlcnRpY2FsQWRqdXN0bWVudC0+bG93ZXIg
PSAwOwotICAgICAgICBtX3ZlcnRpY2FsQWRqdXN0bWVudC0+dXBwZXIgPSAwOwotICAgICAgICBt
X3ZlcnRpY2FsQWRqdXN0bWVudC0+dmFsdWUgPSAwOworICAgICAgICBtX3ZlcnRpY2FsQWRqdXN0
bWVudC0+dXBwZXIgPSByZXNldFZhbHVlcyA/IDAgOiBmcmFtZVJlY3QoKS5oZWlnaHQoKTsKKyAg
ICAgICAgbV92ZXJ0aWNhbEFkanVzdG1lbnQtPnZhbHVlID0gcmVzZXRWYWx1ZXMgPyAwIDogc2Ny
b2xsT2Zmc2V0KCkuaGVpZ2h0KCk7CiAgICAgICAgIGd0a19hZGp1c3RtZW50X2NoYW5nZWQobV92
ZXJ0aWNhbEFkanVzdG1lbnQpOwogICAgICAgICBndGtfYWRqdXN0bWVudF92YWx1ZV9jaGFuZ2Vk
KG1fdmVydGljYWxBZGp1c3RtZW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICBTY3JvbGxiYXJH
dGsqIGhTY3JvbGxiYXIgPSByZWludGVycHJldF9jYXN0PFNjcm9sbGJhckd0ayo+KGhvcml6b250
YWxTY3JvbGxiYXIoKSk7CisgICAgICAgIGlmIChoU2Nyb2xsYmFyKQorICAgICAgICAgICAgaFNj
cm9sbGJhci0+ZGV0YWNoQWRqdXN0bWVudCgpOworCisgICAgICAgIFNjcm9sbGJhckd0ayogdlNj
cm9sbGJhciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2Nyb2xsYmFyR3RrKj4odmVydGljYWxTY3JvbGxi
YXIoKSk7CisgICAgICAgIGlmICh2U2Nyb2xsYmFyKQorICAgICAgICAgICAgdlNjcm9sbGJhci0+
ZGV0YWNoQWRqdXN0bWVudCgpOwogICAgIH0KIAogICAgIC8qIHJlY29uc2lkZXIgaGF2aW5nIGEg
c2Nyb2xsYmFyICovCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJH
dGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmNwcAppbmRleCAwMGM2
ZWEwLi4wYzMwMzdhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJH
dGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5jcHAKQEAgLTEs
NSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBIb2xnZXIgSGFucyBQ
ZXRlciBGcmV5dGhlciB6ZWNrZUBzZWxmaXNoLm9yZworICogIENvcHlyaWdodCAoQykgMjAxMCBH
dXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC04Nyw2ICs4OCwzMiBAQCBTY3JvbGxiYXJHdGs6OlNjcm9sbGJhckd0ayhTY3JvbGxiYXJD
bGllbnQqIGNsaWVudCwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YQogCiBTY3JvbGxiYXJH
dGs6On5TY3JvbGxiYXJHdGsoKQogeworICAgIGlmIChtX2FkanVzdG1lbnQpCisgICAgICAgIGRl
dGFjaEFkanVzdG1lbnQoKTsKK30KKwordm9pZCBTY3JvbGxiYXJHdGs6OmF0dGFjaEFkanVzdG1l
bnQoR3RrQWRqdXN0bWVudCogYWRqdXN0bWVudCkKK3sKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fYWRqdXN0bWVudCkKKyAgICAgICAgZGV0
YWNoQWRqdXN0bWVudCgpOworCisgICAgbV9hZGp1c3RtZW50ID0gYWRqdXN0bWVudDsKKworICAg
IGdfb2JqZWN0X3JlZihtX2FkanVzdG1lbnQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9hZGp1
c3RtZW50LCAidmFsdWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0soU2Nyb2xsYmFyR3RrOjpndGtWYWx1
ZUNoYW5nZWQpLCB0aGlzKTsKKworICAgIHVwZGF0ZVRodW1iUHJvcG9ydGlvbigpOworICAgIHVw
ZGF0ZVRodW1iUG9zaXRpb24oKTsKK30KKwordm9pZCBTY3JvbGxiYXJHdGs6OmRldGFjaEFkanVz
dG1lbnQoKQoreworICAgIGlmICghbV9hZGp1c3RtZW50KQorICAgICAgICByZXR1cm47CisKICAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR19PQkpFQ1QobV9hZGp1c3Rt
ZW50KSwgKGdwb2ludGVyKVNjcm9sbGJhckd0azo6Z3RrVmFsdWVDaGFuZ2VkLCB0aGlzKTsKIAog
ICAgIC8vIEZvciB0aGUgY2FzZSB3aGVyZSB3ZSBvbmx5IG9wZXJhdGUgb24gdGhlIEd0a0FkanVz
dG1lbnQgaXQgaXMgYmVzdCB0bwpAQCAtOTgsNiArMTI1LDcgQEAgU2Nyb2xsYmFyR3RrOjp+U2Ny
b2xsYmFyR3RrKCkKICAgICBndGtfYWRqdXN0bWVudF9jaGFuZ2VkKG1fYWRqdXN0bWVudCk7CiAg
ICAgZ3RrX2FkanVzdG1lbnRfdmFsdWVfY2hhbmdlZChtX2FkanVzdG1lbnQpOwogICAgIGdfb2Jq
ZWN0X3VucmVmKG1fYWRqdXN0bWVudCk7CisgICAgbV9hZGp1c3RtZW50ID0gMDsKIH0KIAogSW50
UG9pbnQgU2Nyb2xsYmFyR3RrOjpnZXRMb2NhdGlvbkluUGFyZW50V2luZG93KGNvbnN0IEludFJl
Y3QmIHJlY3QpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJHdGsu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5oCmluZGV4IGI0YjU5ODkuLmUw
MmJiNTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5oCkBAIC01OSw3ICs1OSw5IEBA
IHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaHVtYlBvc2l0aW9uKCk7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRodW1iUHJvcG9ydGlvbigpOwotICAgIAorCisgICAgdm9p
ZCBkZXRhY2hBZGp1c3RtZW50KCk7CisgICAgdm9pZCBhdHRhY2hBZGp1c3RtZW50KEd0a0FkanVz
dG1lbnQqKTsKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZ3RrVmFsdWVDaGFuZ2VkKEd0a0Fk
anVzdG1lbnQqLCBTY3JvbGxiYXJHdGsqKTsKICAgICBJbnRQb2ludCBnZXRMb2NhdGlvbkluUGFy
ZW50V2luZG93KGNvbnN0IEludFJlY3QmKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdl
TG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYjBjNzY4YS4uZWRjMDk2ZSAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxMC0wMi0wOSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdu
b21lLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbR1RLXSBIaXRzIGFzc2VydGlvbiBvbiBoaXN0b3J5IGJhY2ssIHdpdGggcGFnZSBjYWNoZSBl
bmFibGVkLCBpbiBzcGVjaWZpYyBjb25kaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDc3MworCisgICAgICAgIE1ha2Ugc3VyZSBjYWNoZWQg
ZnJhbWVzIGhhdmUgdGhlaXIgc2Nyb2xsYmFycyBkaXNjb25uZWN0ZWQgZnJvbQorICAgICAgICB0
aGUgV2ViVmlldydzIGFkanVzdG1lbnRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVu
dDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUpOgorCiAyMDEwLTAyLTA5ICBHdXN0YXZv
IE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKaW5kZXggMTQzYTYzNC4uMWNjYzhhMSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAKQEAgLTMsNyArMyw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEhv
bGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENocmlzdGlh
biBEeXdhbiA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDkgQ29sbGFib3JhIEx0ZC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDA5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTAgR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3Jn
PgogICogIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNjQ2LDkgKzY0Niw3IEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OnNldENvcGllc09uU2Nyb2xsKCkKIAogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50MigpCiB7Ci0gICAgRnJhbWVWaWV3ICp2aWV3ID0g
Y29yZShtX2ZyYW1lKS0+dmlldygpOwotICAgIGlmICh2aWV3KQotICAgICAgICB2aWV3LT5zZXRH
dGtBZGp1c3RtZW50cygwLCAwKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50OjpkZXRhY2hlZEZyb21QYXJlbnQzKCkKQEAgLTExMTYsMTUgKzExMTQs
MjEgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0
TGlua3MoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1l
KiBjYWNoZWRGcmFtZSkKIHsKKyAgICAvLyBXZSBuZWVkIHRvIGRvIHRoaXMgaGVyZSBpbiBvcmRl
ciB0byBkaXNjb25uZWN0IHRoZSBzY3JvbGxiYXJzCisgICAgLy8gdGhhdCBhcmUgYmVpbmcgdXNl
ZCBieSB0aGUgZnJhbWUgdGhhdCBpcyBiZWluZyBjYWNoZWQgZnJvbSB0aGUKKyAgICAvLyBhZGp1
c3RtZW50cywgb3RoZXJ3aXNlIHRoZXkgd2lsbCByZWFjdCB0byBjaGFuZ2VzIGluIHRoZQorICAg
IC8vIGFkanVzdG1lbnRzLCBhbmQgYmFkIHRoaW5ncyB3aWxsIGhhcHBlbi4KKyAgICBpZiAoY2Fj
aGVkRnJhbWUtPnZpZXcoKSkKKyAgICAgICAgY2FjaGVkRnJhbWUtPnZpZXcoKS0+c2V0R3RrQWRq
dXN0bWVudHMoMCwgMCk7CiB9CiAKLXN0YXRpYyB2b2lkIHBvc3RDb21taXRGcmFtZVZpZXdTZXR1
cChXZWJLaXRXZWJGcmFtZSAqZnJhbWUsIEZyYW1lVmlldyAqdmlldykKK3N0YXRpYyB2b2lkIHBv
c3RDb21taXRGcmFtZVZpZXdTZXR1cChXZWJLaXRXZWJGcmFtZSAqZnJhbWUsIEZyYW1lVmlldyAq
dmlldywgYm9vbCByZXNldFZhbHVlcykKIHsKICAgICBXZWJLaXRXZWJWaWV3KiBjb250YWluaW5n
V2luZG93ID0gZ2V0Vmlld0Zyb21GcmFtZShmcmFtZSk7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUoY29udGFpbmluZ1dpbmRvdyk7
Ci0gICAgdmlldy0+c2V0R3RrQWRqdXN0bWVudHMocHJpdi0+aG9yaXpvbnRhbEFkanVzdG1lbnQs
IHByaXYtPnZlcnRpY2FsQWRqdXN0bWVudCk7CisgICAgdmlldy0+c2V0R3RrQWRqdXN0bWVudHMo
cHJpdi0+aG9yaXpvbnRhbEFkanVzdG1lbnQsIHByaXYtPnZlcnRpY2FsQWRqdXN0bWVudCwgcmVz
ZXRWYWx1ZXMpOwogCiAgICAgaWYgKHByaXYtPmN1cnJlbnRNZW51KSB7CiAgICAgICAgIEd0a01l
bnUqIG1lbnUgPSBwcml2LT5jdXJyZW50TWVudTsKQEAgLTExNDMsNyArMTE0Nyw3IEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShD
YWNoZWRGcmFtZSogY2FjaGVkCiAgICAgaWYgKGZyYW1lICE9IGZyYW1lLT5wYWdlKCktPm1haW5G
cmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwb3N0Q29tbWl0RnJhbWVWaWV3U2V0dXAo
bV9mcmFtZSwgY2FjaGVkRnJhbWUtPnZpZXcoKSk7CisgICAgcG9zdENvbW1pdEZyYW1lVmlld1Nl
dHVwKG1fZnJhbWUsIGNhY2hlZEZyYW1lLT52aWV3KCksIGZhbHNlKTsKIH0KIAogdm9pZCBGcmFt
ZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCkBAIC0xMTYy
LDcgKzExNjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0
ZWRGb3JOZXdQYWdlKCkKICAgICBpZiAoZnJhbWUgIT0gZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1l
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBvc3RDb21taXRGcmFtZVZpZXdTZXR1cChtX2Zy
YW1lLCBmcmFtZS0+dmlldygpKTsKKyAgICBwb3N0Q29tbWl0RnJhbWVWaWV3U2V0dXAobV9mcmFt
ZSwgZnJhbWUtPnZpZXcoKSwgdHJ1ZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
dGVzdHMvdGVzdHdlYnZpZXcuYyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYwppbmRl
eCBlMzdlMmRkLi4zMTMyZGU1IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2
aWV3LmMKKysrIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCkBAIC0yMDEsMTggKzIw
MSwxOCBAQCBzdGF0aWMgdm9pZCBkb190ZXN0X3dlYmtpdF93ZWJfdmlld19hZGp1c3RtZW50cyhn
Ym9vbGVhbiB3aXRoX3BhZ2VfY2FjaGUpCiAgICAgaWYgKCF3aXRoX3BhZ2VfY2FjaGUpCiAgICAg
ICAgIGdfbWFpbl9sb29wX3J1bihsb29wKTsKIAorICAgIC8qIE1ha2Ugc3VyZSBHVEsrIGhhcyB0
aW1lIHRvIHByb2Nlc3MgdGhlIGNoYW5nZXMgaW4gc2l6ZSwgZm9yIHRoZSBhZGp1c21lbnRzICov
CisgICAgd2hpbGUgKGd0a19ldmVudHNfcGVuZGluZygpKQorICAgICAgICBndGtfbWFpbl9pdGVy
YXRpb24oKTsKKwogICAgIC8qIE1ha2Ugc3VyZSB1cHBlciBhbmQgbG93ZXIgYm91bmRzIGhhdmUg
YmVlbiByZXN0b3JlZCBjb3JyZWN0bHkgKi8KICAgICBnX2Fzc2VydF9jbXBmbG9hdChsb3dlciwg
PT0sIGd0a19hZGp1c3RtZW50X2dldF9sb3dlcihhZGp1c3RtZW50KSk7CiAgICAgZ19hc3NlcnRf
Y21wZmxvYXQodXBwZXIsID09LCBndGtfYWRqdXN0bWVudF9nZXRfdXBwZXIoYWRqdXN0bWVudCkp
OwogCi0gICAgLyogU2Nyb2xsYmFyIHNob3VsZCByZXR1cm4gdG8gdGhlIHNhbWUgcG9zaXRpb24g
aXQgd2FzIGluLgotICAgICAqIEZJWE1FOiB3aXRoIHBhZ2UgY2FjaGUgZW5hYmxlZCwgdGhlIHJl
c3VsdCBpcyBkaWZmZXJlbnQsIHdlCi0gICAgICogbmVlZCB0byBmaWd1cmUgb3V0IHdoeSEKLSAg
ICAgKi8KICAgICBpZiAoIXdpdGhfcGFnZV9jYWNoZSkKICAgICAgICAgZ19hc3NlcnRfY21wZmxv
YXQoZ3RrX2FkanVzdG1lbnRfZ2V0X3ZhbHVlKGFkanVzdG1lbnQpLCA9PSwgMTAwLjApOwogICAg
IGVsc2UKLSAgICAgICAgZ19hc3NlcnRfY21wZmxvYXQoZ3RrX2FkanVzdG1lbnRfZ2V0X3ZhbHVl
KGFkanVzdG1lbnQpLCA9PSwgMjAuMCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGd0a19h
ZGp1c3RtZW50X2dldF92YWx1ZShhZGp1c3RtZW50KSwgPT0sIDEwMC4wKTsKIAogICAgIGdfZnJl
ZShlZmZlY3RpdmVfdXJpKTsKICAgICBnX2ZyZWUoc2Vjb25kX3VyaSk7Ci0tIAoxLjYuNi4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48507</attachid>
            <date>2010-02-10 08:45:44 -0800</date>
            <delta_ts>2010-02-10 13:27:38 -0800</delta_ts>
            <desc>Second version with suggestions by Xan addressed</desc>
            <filename>0001-Disconnect-scrollbars-from-the-WebView-adjustments-w.patch</filename>
            <type>text/plain</type>
            <size>18608</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSA2NjA0MzYwZDhiNWNiODRlYTNiNjBiNzM5YTY2MjRlNTFjN2I2YzkzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+
CkRhdGU6IFR1ZSwgOSBGZWIgMjAxMCAyMjowMTo0MiAtMDIwMApTdWJqZWN0OiBbUEFUQ0hdIERp
c2Nvbm5lY3Qgc2Nyb2xsYmFycyBmcm9tIHRoZSBXZWJWaWV3IGFkanVzdG1lbnRzIHdoZW4gbmVl
ZGVkCgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAxNCArKysrKysrKwogLi4uL2ZyYW1lLWNyYXNoLXdpdGgtcGFnZS1jYWNoZS1leHBl
Y3RlZC50eHQgICAgICAgfCAgIDExICsrKysrKwogLi4uL2Zhc3QvZnJhbWVzL2ZyYW1lLWNyYXNo
LXdpdGgtcGFnZS1jYWNoZS5odG1sICAgfCAgIDM0ICsrKysrKysrKysrKysrKysrKysrCiAuLi4v
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbCAgICAgICB8ICAgMzIgKysr
KysrKysrKysrKysrKysrCiAuLi4vZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTIu
aHRtbCAgICAgICB8ICAgMjcgKysrKysrKysrKysrKysrCiAuLi4vZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL2NhY2hlZC1wYWdlLTMuaHRtbCAgICAgICB8ICAgMTAgKysrKysrCiAuLi4vZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLWlmcmFtZS5odG1sICB8ICAgIDUgKysrCiBXZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKysrKysr
KysrKysKIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oICAgICAgICAgICAgICAgICAgICAg
IHwgICAgMiArLQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAgICAgICAg
ICAgICAgfCAgIDM0ICsrKysrKysrKysrKysrKystLS0KIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Nj
cm9sbGJhckd0ay5jcHAgICAgICAgICAgICAgIHwgICAyOCArKysrKysrKysrKysrKysrCiBXZWJD
b3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJHdGsuaCAgICAgICAgICAgICAgICB8ICAgIDQgKyst
CiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTMgKysrKysrKwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5jcHAgfCAgIDIyICsrKysrKystLS0tLQogV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5j
ICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsrKy0tLS0tCiAxNSBmaWxlcyBjaGFuZ2VkLCAy
NDMgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtY3Jhc2gtd2l0aC1wYWdlLWNhY2hlLWV4cGVjdGVk
LnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLWNy
YXNoLXdpdGgtcGFnZS1jYWNoZS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0yLmh0bWwK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2Fj
aGVkLXBhZ2UtMy5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLWlmcmFtZS5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIwYWE5NGYuLjk2
NTg3ZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wMi0wOSAgR3VzdGF2byBOb3Jvbmhh
IFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBIaXRzIGFzc2VydGlvbiBv
biBoaXN0b3J5IGJhY2ssIHdpdGggcGFnZSBjYWNoZSBlbmFibGVkLCBpbiBzcGVjaWZpYyBjb25k
aXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NDc3MworCisgICAgICAgICogZmFzdC9mcmFtZXMvZnJhbWUtY3Jhc2gtd2l0aC1wYWdlLWNhY2hl
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFn
ZS0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQt
cGFnZS0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNo
ZWQtcGFnZS0zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9j
YWNoZWQtcGFnZS00Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNl
cy9jYWNoZWQtcGFnZS1pZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDItMDkgIEFsZWphbmRy
byBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1jcmFz
aC13aXRoLXBhZ2UtY2FjaGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
ZnJhbWUtY3Jhc2gtd2l0aC1wYWdlLWNhY2hlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42ZGNkZDIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvZnJhbWUtY3Jhc2gtd2l0aC1wYWdlLWNhY2hlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDExIEBACittYWluIGZyYW1lIC0gaGFzIDEgb251bmxvYWQgaGFuZGxlcihzKQor
bWFpbiBmcmFtZSAtIGhhcyAxIG9udW5sb2FkIGhhbmRsZXIocykKK0lmIFdlYktpdCBkb2VzIG5v
dCBhc3NlcnQgb3IgY3Jhc2gsIHlvdSBwYXNzZWQuCitvcGVuIHBhZ2UtMQorcGFnZS0xLCBhYm91
dCB0byBuYXZpZ2F0ZSB0byBwYWdlLTIuCitwYWdlLTEgcnVubmluZyB1bmxvYWQgaGFuZGxlcgor
cGFnZS0yLCBhYm91dCB0byBuYXZpZ2F0ZSB0byBwYWdlLTMuCitPbiBwYWdlLTMsIGdvaW5nIGJh
Y2ssIG5vdy4KK0JhY2sgb24gcGFnZS0yLCB0aW1lciBpcyBzdGlsbCBmaXJpbmcuCitQQVNTLgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1jcmFzaC13aXRoLXBh
Z2UtY2FjaGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLWNyYXNoLXdpdGgt
cGFnZS1jYWNoZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MjFm
MjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1jcmFz
aC13aXRoLXBhZ2UtY2FjaGUuaHRtbApAQCAtMCwwICsxLDM0IEBACis8aHRtbD4KKzxzY3JpcHQ+
Cit3aW5kb3cuZmluaXNoID0gZnVuY3Rpb24oKQoreworICAgIGlmIChsYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCit3
aW5kb3cubG9nID0gZnVuY3Rpb24obWVzc2FnZSkgeworICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK3dpbmRv
dy5mYWlsdXJlID0gZnVuY3Rpb24obWVzc2FnZSkgeworICAgIGxvZygiRkFJTDogIiArIG1lc3Nh
Z2UpOworICAgIGZpbmlzaCgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7Cisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VXNl
c1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICB9CisgICAgbG9nKCJvcGVuIHBhZ2Ut
MSIpOworICAgIHdpbmRvdy5vcGVuKCJyZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sIik7Cit9
Cis8L3NjcmlwdD4KKworPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorSWYgV2ViS2l0IGRvZXMgbm90
IGFzc2VydCBvciBjcmFzaCwgeW91IHBhc3NlZC4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL2NhY2hlZC1wYWdlLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42MTBjOGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbApAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK3ZhciBpbnRlcnZhbElkOworCitmdW5jdGlvbiBlbmRUZXN0KCkgeworICAg
IHdpbmRvdy5vcGVuZXIubG9nKCJQQVNTLiIpOworICAgIHdpbmRvdy5vcGVuZXIuZmluaXNoKCk7
Cit9CisKK2Z1bmN0aW9uIGxvYWROZXh0KCkgeworICAgIGlmICh3aW5kb3cub3BlbmVyLmNhbkV4
aXQyKSB7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGludGVydmFsSWQgPSBzZXRJbnRlcnZhbChlbmRUZXN0LCAxMDApOworCisgICAgd2luZG93Lm9w
ZW5lci5sb2coInBhZ2UtMSwgYWJvdXQgdG8gbmF2aWdhdGUgdG8gcGFnZS0yLiIpCisgICAgbG9j
YXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS0yLmh0bWwiOworfQorCisvLyBUaGlzIHVubG9hZCBo
YW5kbGVyIGV4aXN0cyBqdXN0IHRvIG1ha2Ugc3VyZSB0aGlzIHBhZ2UgaXMgbm90IGFkZGVkCisv
LyB0byB0aGUgcGFnZSBjYWNoZSEKK2Z1bmN0aW9uIG15VW5sb2FkKCkgeworICAgIHdpbmRvdy5v
cGVuZXIubG9nKCJwYWdlLTEgcnVubmluZyB1bmxvYWQgaGFuZGxlciIpOworfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWROZXh0KCkiIG9udW5sb2FkPSJteVVubG9hZCgp
Ij4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9jYWNoZWQtcGFnZS0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmZkNGYyNzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMi5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxzY3JpcHQ+
Cit2YXIgaW50ZXJ2YWxJZDsKKworZnVuY3Rpb24gZ29CYWNrKCkgeworICAgIGlmICghd2luZG93
Lm9wZW5lci5jYW5FeGl0MykKKyAgICAgICAgcmV0dXJuOworCisgICAgY2xlYXJJbnRlcnZhbChp
bnRlcnZhbElkKTsKKyAgICB3aW5kb3cub3BlbmVyLmxvZygiQmFjayBvbiBwYWdlLTIsIHRpbWVy
IGlzIHN0aWxsIGZpcmluZy4iKTsKKyAgICBoaXN0b3J5LmJhY2soKTsKK30KKworZnVuY3Rpb24g
bG9hZE5leHQoKSB7CisgICAgd2luZG93Lm9wZW5lci5jYW5FeGl0MiA9IHRydWU7CisKKyAgICAv
LyBUaGUgY3Jhc2ggb25seSBoYXBwZW5zIHdoZW4gd2Ugc2Nyb2xsIGhlcmUhCisgICAgd2luZG93
LnNjcm9sbEJ5KDAsIDEwMCk7CisKKyAgICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoZ29CYWNr
LCAyMCk7CisKKyAgICB3aW5kb3cub3BlbmVyLmxvZygicGFnZS0yLCBhYm91dCB0byBuYXZpZ2F0
ZSB0byBwYWdlLTMuIikKKyAgICBsb2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTMuaHRtbCI7
Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0ibG9hZE5leHQoKSI+Cis8ZGl2IHN0eWxlPSJo
ZWlnaHQ6IDEyMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iPjwvZGl2PgorPC9ib2R5Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdl
LTMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0z
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRjNjM4OAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFn
ZS0zLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPHNjcmlwdD4KK2Z1bmN0aW9uIGdvQmFjaygpIHsK
KyAgICB3aW5kb3cub3BlbmVyLmNhbkV4aXQzID0gdHJ1ZTsKKyAgICB3aW5kb3cub3BlbmVyLmxv
ZygiT24gcGFnZS0zLCBnb2luZyBiYWNrLCBub3cuIik7CisgICAgaGlzdG9yeS5iYWNrKCk7Cit9
Cis8L3NjcmlwdD4KKzxib2R5PgorPGlmcmFtZSBzcmM9ImNhY2hlZC1wYWdlLWlmcmFtZS5odG1s
IiBvbmxvYWQ9ImdvQmFjaygpIj48L2lmcmFtZT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS1pZnJhbWUuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS1pZnJhbWUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTExOTQ4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLWlmcmFt
ZS5odG1sCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4KKzxkaXYgc3R5bGU9ImhlaWdo
dDogMTIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQ5Y2Y1NzguLjNiZWFlNGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDItMDkgIEd1c3Rhdm8g
Tm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gSGl0cyBhc3NlcnRpb24gb24gaGlzdG9yeSBi
YWNrLCB3aXRoIHBhZ2UgY2FjaGUgZW5hYmxlZCwgaW4gc3BlY2lmaWMgY29uZGl0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ3NzMKKworICAg
ICAgICBXaGVuIHVuc2V0dGluZyB0aGUgYWRqdXN0bWVudHMgZnJvbSBhIFNjcm9sbFZpZXcsIGFs
c28gZGlzY29ubmVjdAorICAgICAgICB0aGVtIGZyb20gdGhlIFNjcm9sbGJhcnMuCisKKyAgICAg
ICAgVGVzdDogZmFzdC9mcmFtZXMvZnJhbWUtY3Jhc2gtd2l0aC1wYWdlLWNhY2hlLmh0bWwKKwor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6OnNldEd0a0FkanVzdG1lbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvU2Nyb2xsYmFyR3RrLmNwcDoKKyAgICAgICAgKFNjcm9sbGJhckd0azo6flNjcm9sbGJhckd0
ayk6CisgICAgICAgIChTY3JvbGxiYXJHdGs6OmRldGFjaEFkanVzdG1lbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJHdGsuaDoKKwogMjAxMC0wMi0wOSAgQWxlamFuZHJvIEcu
IENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggYTcxNzNhNy4uMTExZDZiNiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmgKQEAgLTMxNCw3ICszMTQsNyBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0o
R1RLKQogcHVibGljOgotICAgIHZvaWQgc2V0R3RrQWRqdXN0bWVudHMoR3RrQWRqdXN0bWVudCog
aGFkaiwgR3RrQWRqdXN0bWVudCogdmFkaik7CisgICAgdm9pZCBzZXRHdGtBZGp1c3RtZW50cyhH
dGtBZGp1c3RtZW50KiBoYWRqLCBHdGtBZGp1c3RtZW50KiB2YWRqLCBib29sIHJlc2V0VmFsdWVz
ID0gdHJ1ZSk7CiAgICAgR3RrQWRqdXN0bWVudCogbV9ob3Jpem9udGFsQWRqdXN0bWVudDsKICAg
ICBHdGtBZGp1c3RtZW50KiBtX3ZlcnRpY2FsQWRqdXN0bWVudDsKICAgICB2b2lkIHNldFNjcm9s
bE9mZnNldChjb25zdCBJbnRTaXplJiBvZmZzZXQpIHsgbV9zY3JvbGxPZmZzZXQgPSBvZmZzZXQ7
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAKaW5kZXggYTdlN2UxNS4uODQ4
ZjhjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAKQEAgLTIsNyArMiw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVt
bWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEg
THRkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIENvbGxhYm9yYSBMdGQuCiAgKgogICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC03Niw3ICs3Niw3IEBAIFBhc3NSZWZQdHI8U2Ny
b2xsYmFyPiBTY3JvbGxWaWV3OjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24g
b3JpZW50YXRpCiAgKiBUaGUgZm9sbG93aW5nIGlzIGFzc3VtZWQ6CiAgKiAgIChoYWRqICYmIHZh
ZGopIHx8ICghaGFkaiAmJiAhdmFkaikKICAqLwotdm9pZCBTY3JvbGxWaWV3OjpzZXRHdGtBZGp1
c3RtZW50cyhHdGtBZGp1c3RtZW50KiBoYWRqLCBHdGtBZGp1c3RtZW50KiB2YWRqKQordm9pZCBT
Y3JvbGxWaWV3OjpzZXRHdGtBZGp1c3RtZW50cyhHdGtBZGp1c3RtZW50KiBoYWRqLCBHdGtBZGp1
c3RtZW50KiB2YWRqLCBib29sIHJlc2V0VmFsdWVzKQogewogICAgIEFTU0VSVCghaGFkaiA9PSAh
dmFkaik7CiAKQEAgLTg1LDE3ICs4NSwzOSBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldEd0a0FkanVz
dG1lbnRzKEd0a0FkanVzdG1lbnQqIGhhZGosIEd0a0FkanVzdG1lbnQqIHZhZGopCiAKICAgICAv
LyBSZXNldCB0aGUgYWRqdXN0bWVudHMgdG8gYSBzYW5lIGRlZmF1bHQKICAgICBpZiAobV9ob3Jp
em9udGFsQWRqdXN0bWVudCkgeworICAgICAgICBTY3JvbGxiYXJHdGsqIGhTY3JvbGxiYXIgPSBy
ZWludGVycHJldF9jYXN0PFNjcm9sbGJhckd0ayo+KGhvcml6b250YWxTY3JvbGxiYXIoKSk7Cisg
ICAgICAgIGlmIChoU2Nyb2xsYmFyKQorICAgICAgICAgICAgaFNjcm9sbGJhci0+YXR0YWNoQWRq
dXN0bWVudChtX2hvcml6b250YWxBZGp1c3RtZW50KTsKKworICAgICAgICBTY3JvbGxiYXJHdGsq
IHZTY3JvbGxiYXIgPSByZWludGVycHJldF9jYXN0PFNjcm9sbGJhckd0ayo+KHZlcnRpY2FsU2Ny
b2xsYmFyKCkpOworICAgICAgICBpZiAodlNjcm9sbGJhcikKKyAgICAgICAgICAgIHZTY3JvbGxi
YXItPmF0dGFjaEFkanVzdG1lbnQobV92ZXJ0aWNhbEFkanVzdG1lbnQpOworCisgICAgICAgIC8v
IFdlIHVzZWQgdG8gcmVzZXQgZXZlcnl0aGluZyB0byAwIGhlcmUsIGJ1dCB3aGVuIHBhZ2UgY2Fj
aGUKKyAgICAgICAgLy8gaXMgZW5hYmxlZCB3ZSByZXN0b3JlIHRoZSBhZGp1c3RtZW50cyBhIGJp
dCB0b28gbGF0ZSBmb3IgaXQKKyAgICAgICAgLy8gdG8gcmVjb3ZlciBpdHMgdXBwZXIgbGltaXRz
LCBhbmQgdmFsdWUgdGhyb3VnaCB0aGUgbm9ybWFsCisgICAgICAgIC8vIGNvZGUgcGF0aCwgc28g
d2UgbWFrZSBzdXJlIHRoZXkgYXJlIHVwLXRvLWRhdGUgaGVyZS4gVGhpcworICAgICAgICAvLyBp
cyBuZWVkZWQgZm9yIHRoZSBwYXJlbnQgc2Nyb2xsaW5nIHdpZGdldCB0byBiZSBhYmxlIHRvCisg
ICAgICAgIC8vIHJlcG9ydCBjb3JyZWN0IHZhbHVlcy4KICAgICAgICAgbV9ob3Jpem9udGFsQWRq
dXN0bWVudC0+bG93ZXIgPSAwOwotICAgICAgICBtX2hvcml6b250YWxBZGp1c3RtZW50LT51cHBl
ciA9IDA7Ci0gICAgICAgIG1faG9yaXpvbnRhbEFkanVzdG1lbnQtPnZhbHVlID0gMDsKKyAgICAg
ICAgbV9ob3Jpem9udGFsQWRqdXN0bWVudC0+dXBwZXIgPSByZXNldFZhbHVlcyA/IDAgOiBmcmFt
ZVJlY3QoKS53aWR0aCgpOworICAgICAgICBtX2hvcml6b250YWxBZGp1c3RtZW50LT52YWx1ZSA9
IHJlc2V0VmFsdWVzID8gMCA6IHNjcm9sbE9mZnNldCgpLndpZHRoKCk7CiAgICAgICAgIGd0a19h
ZGp1c3RtZW50X2NoYW5nZWQobV9ob3Jpem9udGFsQWRqdXN0bWVudCk7CiAgICAgICAgIGd0a19h
ZGp1c3RtZW50X3ZhbHVlX2NoYW5nZWQobV9ob3Jpem9udGFsQWRqdXN0bWVudCk7CiAKICAgICAg
ICAgbV92ZXJ0aWNhbEFkanVzdG1lbnQtPmxvd2VyID0gMDsKLSAgICAgICAgbV92ZXJ0aWNhbEFk
anVzdG1lbnQtPnVwcGVyID0gMDsKLSAgICAgICAgbV92ZXJ0aWNhbEFkanVzdG1lbnQtPnZhbHVl
ID0gMDsKKyAgICAgICAgbV92ZXJ0aWNhbEFkanVzdG1lbnQtPnVwcGVyID0gcmVzZXRWYWx1ZXMg
PyAwIDogZnJhbWVSZWN0KCkuaGVpZ2h0KCk7CisgICAgICAgIG1fdmVydGljYWxBZGp1c3RtZW50
LT52YWx1ZSA9IHJlc2V0VmFsdWVzID8gMCA6IHNjcm9sbE9mZnNldCgpLmhlaWdodCgpOwogICAg
ICAgICBndGtfYWRqdXN0bWVudF9jaGFuZ2VkKG1fdmVydGljYWxBZGp1c3RtZW50KTsKICAgICAg
ICAgZ3RrX2FkanVzdG1lbnRfdmFsdWVfY2hhbmdlZChtX3ZlcnRpY2FsQWRqdXN0bWVudCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgU2Nyb2xsYmFyR3RrKiBoU2Nyb2xsYmFyID0gcmVpbnRlcnBy
ZXRfY2FzdDxTY3JvbGxiYXJHdGsqPihob3Jpem9udGFsU2Nyb2xsYmFyKCkpOworICAgICAgICBp
ZiAoaFNjcm9sbGJhcikKKyAgICAgICAgICAgIGhTY3JvbGxiYXItPmRldGFjaEFkanVzdG1lbnQo
KTsKKworICAgICAgICBTY3JvbGxiYXJHdGsqIHZTY3JvbGxiYXIgPSByZWludGVycHJldF9jYXN0
PFNjcm9sbGJhckd0ayo+KHZlcnRpY2FsU2Nyb2xsYmFyKCkpOworICAgICAgICBpZiAodlNjcm9s
bGJhcikKKyAgICAgICAgICAgIHZTY3JvbGxiYXItPmRldGFjaEFkanVzdG1lbnQoKTsKICAgICB9
CiAKICAgICAvKiByZWNvbnNpZGVyIGhhdmluZyBhIHNjcm9sbGJhciAqLwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Njcm9sbGJhckd0ay5jcHAKaW5kZXggMDBjNmVhMC4uMGMzMDM3YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TY3JvbGxiYXJHdGsuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgemVja2VAc2VsZmlz
aC5vcmcKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNA
Z25vbWUub3JnPgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtODcsNiArODgsMzIgQEAgU2Nyb2xs
YmFyR3RrOjpTY3JvbGxiYXJHdGsoU2Nyb2xsYmFyQ2xpZW50KiBjbGllbnQsIFNjcm9sbGJhck9y
aWVudGF0aW9uIG9yaWVudGEKIAogU2Nyb2xsYmFyR3RrOjp+U2Nyb2xsYmFyR3RrKCkKIHsKKyAg
ICBpZiAobV9hZGp1c3RtZW50KQorICAgICAgICBkZXRhY2hBZGp1c3RtZW50KCk7Cit9CisKK3Zv
aWQgU2Nyb2xsYmFyR3RrOjphdHRhY2hBZGp1c3RtZW50KEd0a0FkanVzdG1lbnQqIGFkanVzdG1l
bnQpCit7CisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX2FkanVzdG1lbnQpCisgICAgICAgIGRldGFjaEFkanVzdG1lbnQoKTsKKworICAgIG1f
YWRqdXN0bWVudCA9IGFkanVzdG1lbnQ7CisKKyAgICBnX29iamVjdF9yZWYobV9hZGp1c3RtZW50
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYWRqdXN0bWVudCwgInZhbHVlLWNoYW5nZWQiLCBH
X0NBTExCQUNLKFNjcm9sbGJhckd0azo6Z3RrVmFsdWVDaGFuZ2VkKSwgdGhpcyk7CisKKyAgICB1
cGRhdGVUaHVtYlByb3BvcnRpb24oKTsKKyAgICB1cGRhdGVUaHVtYlBvc2l0aW9uKCk7Cit9CisK
K3ZvaWQgU2Nyb2xsYmFyR3RrOjpkZXRhY2hBZGp1c3RtZW50KCkKK3sKKyAgICBpZiAoIW1fYWRq
dXN0bWVudCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29u
bmVjdF9ieV9mdW5jKEdfT0JKRUNUKG1fYWRqdXN0bWVudCksIChncG9pbnRlcilTY3JvbGxiYXJH
dGs6Omd0a1ZhbHVlQ2hhbmdlZCwgdGhpcyk7CiAKICAgICAvLyBGb3IgdGhlIGNhc2Ugd2hlcmUg
d2Ugb25seSBvcGVyYXRlIG9uIHRoZSBHdGtBZGp1c3RtZW50IGl0IGlzIGJlc3QgdG8KQEAgLTk4
LDYgKzEyNSw3IEBAIFNjcm9sbGJhckd0azo6flNjcm9sbGJhckd0aygpCiAgICAgZ3RrX2FkanVz
dG1lbnRfY2hhbmdlZChtX2FkanVzdG1lbnQpOwogICAgIGd0a19hZGp1c3RtZW50X3ZhbHVlX2No
YW5nZWQobV9hZGp1c3RtZW50KTsKICAgICBnX29iamVjdF91bnJlZihtX2FkanVzdG1lbnQpOwor
ICAgIG1fYWRqdXN0bWVudCA9IDA7CiB9CiAKIEludFBvaW50IFNjcm9sbGJhckd0azo6Z2V0TG9j
YXRpb25JblBhcmVudFdpbmRvdyhjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmggYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9T
Y3JvbGxiYXJHdGsuaAppbmRleCBiNGI1OTg5Li5lMDJiYjUwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJHdGsuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9T
Y3JvbGxiYXJHdGsuaApAQCAtNTksNyArNTksOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlVGh1bWJQb3NpdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaHVt
YlByb3BvcnRpb24oKTsKLSAgICAKKworICAgIHZvaWQgZGV0YWNoQWRqdXN0bWVudCgpOworICAg
IHZvaWQgYXR0YWNoQWRqdXN0bWVudChHdGtBZGp1c3RtZW50Kik7CiBwcml2YXRlOgogICAgIHN0
YXRpYyB2b2lkIGd0a1ZhbHVlQ2hhbmdlZChHdGtBZGp1c3RtZW50KiwgU2Nyb2xsYmFyR3RrKik7
CiAgICAgSW50UG9pbnQgZ2V0TG9jYXRpb25JblBhcmVudFdpbmRvdyhjb25zdCBJbnRSZWN0Jik7
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CmluZGV4IGIwYzc2OGEuLmVkYzA5NmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDItMDkg
IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gSGl0cyBhc3NlcnRpb24gb24g
aGlzdG9yeSBiYWNrLCB3aXRoIHBhZ2UgY2FjaGUgZW5hYmxlZCwgaW4gc3BlY2lmaWMgY29uZGl0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ3
NzMKKworICAgICAgICBNYWtlIHN1cmUgY2FjaGVkIGZyYW1lcyBoYXZlIHRoZWlyIHNjcm9sbGJh
cnMgZGlzY29ubmVjdGVkIGZyb20KKyAgICAgICAgdGhlIFdlYlZpZXcncyBhZGp1c3RtZW50cy4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hl
ZEZyYW1lKToKKwogMjAxMC0wMi0wOSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5u
b3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXou
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCmluZGV4IDE0M2E2MzQuLjFjY2M4YTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC0zLDcgKzMsNyBAQAogICogIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgog
ICogIENvcHlyaWdodCAoQykgMjAwNyBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkB0d290b2Fz
dHMuZGU+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IENvbGxhYm9yYSBMdGQuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAwOSBHdXN0YXZvIE5vcm9uaGEg
U2lsdmEgPGduc0Bnbm9tZS5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEd1c3Rh
dm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKQEAgLTY0Niw5ICs2NDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpzZXRDb3Bp
ZXNPblNjcm9sbCgpCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVu
dDIoKQogewotICAgIEZyYW1lVmlldyAqdmlldyA9IGNvcmUobV9mcmFtZSktPnZpZXcoKTsKLSAg
ICBpZiAodmlldykKLSAgICAgICAgdmlldy0+c2V0R3RrQWRqdXN0bWVudHMoMCwgMCk7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRG
cm9tUGFyZW50MygpCkBAIC0xMTE2LDE1ICsxMTE0LDIxIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNo
ZWRGcmFtZShDYWNoZWRGcmFtZSopCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZv
cm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbWUpCiB7CisgICAgLy8g
V2UgbmVlZCB0byBkbyB0aGlzIGhlcmUgaW4gb3JkZXIgdG8gZGlzY29ubmVjdCB0aGUgc2Nyb2xs
YmFycworICAgIC8vIHRoYXQgYXJlIGJlaW5nIHVzZWQgYnkgdGhlIGZyYW1lIHRoYXQgaXMgYmVp
bmcgY2FjaGVkIGZyb20gdGhlCisgICAgLy8gYWRqdXN0bWVudHMsIG90aGVyd2lzZSB0aGV5IHdp
bGwgcmVhY3QgdG8gY2hhbmdlcyBpbiB0aGUKKyAgICAvLyBhZGp1c3RtZW50cywgYW5kIGJhZCB0
aGluZ3Mgd2lsbCBoYXBwZW4uCisgICAgaWYgKGNhY2hlZEZyYW1lLT52aWV3KCkpCisgICAgICAg
IGNhY2hlZEZyYW1lLT52aWV3KCktPnNldEd0a0FkanVzdG1lbnRzKDAsIDApOwogfQogCi1zdGF0
aWMgdm9pZCBwb3N0Q29tbWl0RnJhbWVWaWV3U2V0dXAoV2ViS2l0V2ViRnJhbWUgKmZyYW1lLCBG
cmFtZVZpZXcgKnZpZXcpCitzdGF0aWMgdm9pZCBwb3N0Q29tbWl0RnJhbWVWaWV3U2V0dXAoV2Vi
S2l0V2ViRnJhbWUgKmZyYW1lLCBGcmFtZVZpZXcgKnZpZXcsIGJvb2wgcmVzZXRWYWx1ZXMpCiB7
CiAgICAgV2ViS2l0V2ViVmlldyogY29udGFpbmluZ1dpbmRvdyA9IGdldFZpZXdGcm9tRnJhbWUo
ZnJhbWUpOwogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVX
X0dFVF9QUklWQVRFKGNvbnRhaW5pbmdXaW5kb3cpOwotICAgIHZpZXctPnNldEd0a0FkanVzdG1l
bnRzKHByaXYtPmhvcml6b250YWxBZGp1c3RtZW50LCBwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQp
OworICAgIHZpZXctPnNldEd0a0FkanVzdG1lbnRzKHByaXYtPmhvcml6b250YWxBZGp1c3RtZW50
LCBwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQsIHJlc2V0VmFsdWVzKTsKIAogICAgIGlmIChwcml2
LT5jdXJyZW50TWVudSkgewogICAgICAgICBHdGtNZW51KiBtZW51ID0gcHJpdi0+Y3VycmVudE1l
bnU7CkBAIC0xMTQzLDcgKzExNDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0
aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hlZAogICAgIGlm
IChmcmFtZSAhPSBmcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcG9zdENvbW1pdEZyYW1lVmlld1NldHVwKG1fZnJhbWUsIGNhY2hlZEZyYW1lLT52aWV3
KCkpOworICAgIHBvc3RDb21taXRGcmFtZVZpZXdTZXR1cChtX2ZyYW1lLCBjYWNoZWRGcmFtZS0+
dmlldygpLCBmYWxzZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25U
b0NvbW1pdHRlZEZvck5ld1BhZ2UoKQpAQCAtMTE2Miw3ICsxMTY2LDcgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgaWYgKGZy
YW1lICE9IGZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBwb3N0Q29tbWl0RnJhbWVWaWV3U2V0dXAobV9mcmFtZSwgZnJhbWUtPnZpZXcoKSk7CisgICAg
cG9zdENvbW1pdEZyYW1lVmlld1NldHVwKG1fZnJhbWUsIGZyYW1lLT52aWV3KCksIHRydWUpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMgYi9XZWJL
aXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMKaW5kZXggZTM3ZTJkZC4uYzAyOGEzNiAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCisrKyBiL1dlYktpdC9ndGsvdGVz
dHMvdGVzdHdlYnZpZXcuYwpAQCAtMjAxLDE4ICsyMDEsMTUgQEAgc3RhdGljIHZvaWQgZG9fdGVz
dF93ZWJraXRfd2ViX3ZpZXdfYWRqdXN0bWVudHMoZ2Jvb2xlYW4gd2l0aF9wYWdlX2NhY2hlKQog
ICAgIGlmICghd2l0aF9wYWdlX2NhY2hlKQogICAgICAgICBnX21haW5fbG9vcF9ydW4obG9vcCk7
CiAKKyAgICAvKiBNYWtlIHN1cmUgR1RLKyBoYXMgdGltZSB0byBwcm9jZXNzIHRoZSBjaGFuZ2Vz
IGluIHNpemUsIGZvciB0aGUgYWRqdXNtZW50cyAqLworICAgIHdoaWxlIChndGtfZXZlbnRzX3Bl
bmRpbmcoKSkKKyAgICAgICAgZ3RrX21haW5faXRlcmF0aW9uKCk7CisKICAgICAvKiBNYWtlIHN1
cmUgdXBwZXIgYW5kIGxvd2VyIGJvdW5kcyBoYXZlIGJlZW4gcmVzdG9yZWQgY29ycmVjdGx5ICov
CiAgICAgZ19hc3NlcnRfY21wZmxvYXQobG93ZXIsID09LCBndGtfYWRqdXN0bWVudF9nZXRfbG93
ZXIoYWRqdXN0bWVudCkpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHVwcGVyLCA9PSwgZ3RrX2Fk
anVzdG1lbnRfZ2V0X3VwcGVyKGFkanVzdG1lbnQpKTsKIAotICAgIC8qIFNjcm9sbGJhciBzaG91
bGQgcmV0dXJuIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGl0IHdhcyBpbi4KLSAgICAgKiBGSVhNRTog
d2l0aCBwYWdlIGNhY2hlIGVuYWJsZWQsIHRoZSByZXN1bHQgaXMgZGlmZmVyZW50LCB3ZQotICAg
ICAqIG5lZWQgdG8gZmlndXJlIG91dCB3aHkhCi0gICAgICovCi0gICAgaWYgKCF3aXRoX3BhZ2Vf
Y2FjaGUpCi0gICAgICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGd0a19hZGp1c3RtZW50X2dldF92YWx1
ZShhZGp1c3RtZW50KSwgPT0sIDEwMC4wKTsKLSAgICBlbHNlCi0gICAgICAgIGdfYXNzZXJ0X2Nt
cGZsb2F0KGd0a19hZGp1c3RtZW50X2dldF92YWx1ZShhZGp1c3RtZW50KSwgPT0sIDIwLjApOwor
ICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGd0a19hZGp1c3RtZW50X2dldF92YWx1ZShhZGp1c3RtZW50
KSwgPT0sIDEwMC4wKTsKIAogICAgIGdfZnJlZShlZmZlY3RpdmVfdXJpKTsKICAgICBnX2ZyZWUo
c2Vjb25kX3VyaSk7Ci0tIAoxLjYuNi4xCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>