<?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>101563</bug_id>
          
          <creation_ts>2012-11-08 01:28:20 -0800</creation_ts>
          <short_desc>Add support for fractional scroll events</short_desc>
          <delta_ts>2021-12-15 11:57:16 -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>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234360</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Tai-Hsu Lin">sheckylin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>761462</commentid>
    <comment_count>0</comment_count>
    <who name="Tai-Hsu Lin">sheckylin</who>
    <bug_when>2012-11-08 01:28:20 -0800</bug_when>
    <thetext>Add support for fractional scroll events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761467</commentid>
    <comment_count>1</comment_count>
      <attachid>172958</attachid>
    <who name="Tai-Hsu Lin">sheckylin</who>
    <bug_when>2012-11-08 01:36:48 -0800</bug_when>
    <thetext>Created attachment 172958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761476</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 01:41:17 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761487</commentid>
    <comment_count>3</comment_count>
      <attachid>172958</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-08 01:51:05 -0800</bug_when>
    <thetext>Comment on attachment 172958
Patch

Attachment 172958 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14771080</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761670</commentid>
    <comment_count>4</comment_count>
      <attachid>172958</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 05:06:03 -0800</bug_when>
    <thetext>Comment on attachment 172958
Patch

Attachment 172958 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14774104</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761918</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-08 10:22:01 -0800</bug_when>
    <thetext>Looks like this patch doesn&apos;t build.  Do we need to stage this change in order to not break the build?

Also, it would be helpful to explain why we want to make this change.  Is there some particular use case that requires floating point at this time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762468</commentid>
    <comment_count>6</comment_count>
    <who name="Tai-Hsu Lin">sheckylin</who>
    <bug_when>2012-11-08 19:49:32 -0800</bug_when>
    <thetext>Sorry, let me take a look and fix it.

Please refer to chromium-os:35171. We want this for more precise scrolling due to less rounding. The scroll increments currently get unnecessary rounding in WebKit while the compositor in Chrome can actually accept floating points. The difference might not be huge but I think it is still good to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762609</commentid>
    <comment_count>7</comment_count>
      <attachid>173212</attachid>
    <who name="Tai-Hsu Lin">sheckylin</who>
    <bug_when>2012-11-08 23:10:26 -0800</bug_when>
    <thetext>Created attachment 173212
Add support for fractional scroll events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762613</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 23:13:08 -0800</bug_when>
    <thetext>Attachment 173212 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/Platform/chromium/public/WebInputHandlerClient.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762614</commentid>
    <comment_count>9</comment_count>
      <attachid>173214</attachid>
    <who name="Tai-Hsu Lin">sheckylin</who>
    <bug_when>2012-11-08 23:14:48 -0800</bug_when>
    <thetext>Created attachment 173214
Add support for fractional scroll events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762675</commentid>
    <comment_count>10</comment_count>
      <attachid>173214</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-09 00:55:09 -0800</bug_when>
    <thetext>Comment on attachment 173214
Add support for fractional scroll events

Attachment 173214 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14770549</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762805</commentid>
    <comment_count>11</comment_count>
      <attachid>173214</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-09 03:41:08 -0800</bug_when>
    <thetext>Comment on attachment 173214
Add support for fractional scroll events

Attachment 173214 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14788104</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763182</commentid>
    <comment_count>12</comment_count>
      <attachid>173214</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-09 11:16:55 -0800</bug_when>
    <thetext>Comment on attachment 173214
Add support for fractional scroll events

Ok.  You&apos;re still having build trouble.  I suspect you&apos;ll need to stage this change with an ifdef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764100</commentid>
    <comment_count>13</comment_count>
      <attachid>173572</attachid>
    <who name="Tai-Hsu Lin">sheckylin</who>
    <bug_when>2012-11-11 23:33:11 -0800</bug_when>
    <thetext>Created attachment 173572
Add support for fractional scroll events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764137</commentid>
    <comment_count>14</comment_count>
      <attachid>173583</attachid>
    <who name="Tai-Hsu Lin">sheckylin</who>
    <bug_when>2012-11-12 00:59:54 -0800</bug_when>
    <thetext>Created attachment 173583
Add support for fractional scroll events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764139</commentid>
    <comment_count>15</comment_count>
      <attachid>173584</attachid>
    <who name="Tai-Hsu Lin">sheckylin</who>
    <bug_when>2012-11-12 01:06:36 -0800</bug_when>
    <thetext>Created attachment 173584
Add support for fractional scroll events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764141</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 01:11:31 -0800</bug_when>
    <thetext>Attachment 173584 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/Platform/chromium/public/WebInputHandlerClient.h:27:  Header file should not contain WebCore config.h. Should be: alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764145</commentid>
    <comment_count>17</comment_count>
      <attachid>173584</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 01:20:46 -0800</bug_when>
    <thetext>Comment on attachment 173584
Add support for fractional scroll events

Attachment 173584 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14689546</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764229</commentid>
    <comment_count>18</comment_count>
      <attachid>173584</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-12 03:46:05 -0800</bug_when>
    <thetext>Comment on attachment 173584
Add support for fractional scroll events

Attachment 173584 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14804590</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764469</commentid>
    <comment_count>19</comment_count>
      <attachid>173584</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-12 09:02:24 -0800</bug_when>
    <thetext>Comment on attachment 173584
Add support for fractional scroll events

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

&gt; Source/WebCore/platform/ScrollAnimatorNone.h:105
&gt; +#if PLATFORM(CHROMIUM)
&gt;      virtual void scrollBy(const IntPoint&amp;);
&gt; +#else
&gt; +    virtual void scrollBy(const FloatPoint&amp;);
&gt; +#endif

Platform #ifdefs like this in shared files are not cool. You should change everyone to FloatPoint, or no-one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764513</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-12 09:49:38 -0800</bug_when>
    <thetext>&gt; Ok.  You&apos;re still having build trouble.  I suspect you&apos;ll need to stage this change with an ifdef.

To be clear: I meant an ifdef for the API, not for WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765257</commentid>
    <comment_count>21</comment_count>
    <who name="Tai-Hsu Lin">sheckylin</who>
    <bug_when>2012-11-12 22:34:59 -0800</bug_when>
    <thetext>Simon,

The ifdefs are only temporary for the patch to build. I will remove ifdefs and change to floating point for everyone after I applied the corresponding patch on the chromium side.

Adam,

I am sorry but maybe I misunderstood your comments. Could you shed more light on me? What do you mean by ifdef for the API and not for WebCore? 

Thanks a lot!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765294</commentid>
    <comment_count>22</comment_count>
      <attachid>173584</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-12 23:20:01 -0800</bug_when>
    <thetext>Comment on attachment 173584
Add support for fractional scroll events

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

&gt;&gt; Source/Platform/chromium/public/WebInputHandlerClient.h:27
&gt;&gt; +#include &quot;config.h&quot;
&gt; 
&gt; Header file should not contain WebCore config.h. Should be: alphabetically sorted.  [build/include_order] [4]

You cannot include config.h in any API headers (any headers that contain &quot;public&quot; in their path).

&gt; Source/Platform/chromium/public/WebInputHandlerClient.h:63
&gt; +#if PLATFORM(CHROMIUM)
&gt;      virtual void scrollBy(WebPoint, WebSize) = 0;
&gt; +#else
&gt; +    virtual void scrollBy(WebPoint, WebFloatPoint) = 0;
&gt; +#endif

This file is used only by Chromium.  Having a PLATFORM(CHROMIUM) ifdef here does not make any sense.  Instead, you&apos;ll probably need to create a new ifdef to represent this change so you can land it without breaking the Chromium compile.  After this patch is rolled in the Chromium, you can update all the code in svn.chromium.org to use the new API (and to define the ifdef).  Then you can delete the ifdef and the old API from svn.webkit.org.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765295</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-12 23:21:05 -0800</bug_when>
    <thetext>Your patch looks pretty confused.  Is there someone local who can help you understand what you need to do to make this change?  It&apos;s going to be pretty inefficient for me to help you make this change via the code review process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765316</commentid>
    <comment_count>24</comment_count>
    <who name="Tai-Hsu Lin">sheckylin</who>
    <bug_when>2012-11-12 23:46:56 -0800</bug_when>
    <thetext>Adam,

Thanks for your time! I am getting some ideas now.

Unfortunately there is no one in my local office that are familiar with the WebKit infrastructure. We just happened to need some change here so we could send fractional scroll events in Chrome OS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765600</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 07:57:39 -0800</bug_when>
    <thetext>&gt; Unfortunately there is no one in my local office that are familiar with the WebKit infrastructure.

It looks like you&apos;re almost in the same time zone as tkent.  He might be a good person to talk with since at least you won&apos;t need to wait for the time zone delay for each response.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172958</attachid>
            <date>2012-11-08 01:36:48 -0800</date>
            <delta_ts>2012-11-08 23:10:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101563-20121108173457.patch</filename>
            <type>text/plain</type>
            <size>19990</size>
            <attacher name="Tai-Hsu Lin">sheckylin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzYTNmODVhZGFmZTcy
MTA4Y2NiMGFmYzQ2OWUwYjBkNGVmMjg5Y2QzLi5kMjQ4MDNjMGRlOTNlOWYyODBmY2Y3MWI0ODg5
NTlkYjBlZDgwZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0wOCAg
VGFpLUhzdSBMaW4gIDxzaGVja3lsaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBmcmFjdGlvbmFsIHNjcm9sbCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB2YXJpb3VzIHNjcm9sbCBldmVudCBkYXRh
IHR5cGVzIGZyb20gaW50ZWdlcnMgdG8gZmxvYXRpbmctcG9pbnRzLiBUaGlzIGFsbG93cyBtb3Jl
IHByZWNpc2Ugc2Nyb2xsaW5nIGFuZCBwcm92aWRlcyBtb3JlIGZyZWVkb20gdG8gdGhlIFdlYktp
dCB1c2Vycy4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJDbGll
bnQuaDoKKwogMjAxMi0xMS0wNyAgWXVzdWYgT3p1eXNhbCAgPHl1c3Vmb0Bnb29nbGUuY29tPgog
CiAgICAgICAgIEFkZCBBUEkgZm9yIHRvdWNoRXZlbnRIYW5kbGVyUmVnaW9uIHRvIFdlYkxheWVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMzYxN2NmOWM5ZDdiMWUzY2EyNTNkZTExMGZlM2JjMjBjNGUwNjczZi4u
Zjk2N2RjYzkwYmU1MzM5NzNiNDNhZDIzY2Q1MDkzOTU0OGRjMDU1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM0IEBACisyMDEyLTExLTA4ICBUYWktSHN1IExpbiAgPHNoZWNreWxpbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGZyYWN0aW9uYWwgc2Nyb2xsIGV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IHZhcmlvdXMgc2Nyb2xsIGV2ZW50IGRhdGEgdHlwZXMgZnJvbSBpbnRlZ2VycyB0byBmbG9hdGlu
Zy1wb2ludHMuIFRoaXMgYWxsb3dzIG1vcmUgcHJlY2lzZSBzY3JvbGxpbmcgYW5kIHByb3ZpZGVz
IG1vcmUgZnJlZWRvbSB0byB0aGUgV2ViS2l0IHVzZXJzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJn
ZXQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaDoKKyAgICAgICAgKFNjcm9sbEFuaW1hdG9yTm9u
ZSk6CisgICAgICAgICogcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3Jl
YXRlRm9yVG91Y2hQYWQpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlOjpjcmVhdGVGb3JUb3VjaFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6
OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmUuaDoKKyAgICAgICAgKFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmNyZWF0
ZUN1cnZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2Vz
dHVyZUN1cnZlRmFjdG9yeS5oOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
KToKKwogMjAxMi0xMS0wNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xlIGVycm9yIGFmdGVyIGluc3BlY3Rpbmcg
SW5kZXhlZERCCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQxN2JjY2MyYzljZDJkZTgz
N2IyOTg2N2RmZTJhZDkwNDMwMjRjZTguLjdiZGU1MWQ2NjhhNGVhNTdhZGUzMTk5NGYzM2Y4NGYy
YzFhMzUyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MTItMTEtMDggIFRhaS1Ic3UgTGluICA8c2hlY2t5bGluQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgZnJhY3Rpb25hbCBzY3JvbGwgZXZlbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1NjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdmFyaW91cyBzY3JvbGwg
ZXZlbnQgZGF0YSB0eXBlcyBmcm9tIGludGVnZXJzIHRvIGZsb2F0aW5nLXBvaW50cy4gVGhpcyBh
bGxvd3MgbW9yZSBwcmVjaXNlIHNjcm9sbGluZyBhbmQgcHJvdmlkZXMgbW9yZSBmcmVlZG9tIHRv
IHRoZSBXZWJLaXQgdXNlcnMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToK
KyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVu
dEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuaDoKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Ny
b2xsQnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVl
bEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAg
KFdlYlZpZXdJbXBsKToKKwogMjAxMi0wOC0yMCAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRHJvcCBkaW1tZWQgY3J1bWIgaGFuZGxp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRI
YW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklucHV0
SGFuZGxlckNsaWVudC5oCmluZGV4IDFiZWYyMDVjNGViNDUxNGNhNThmNmQzMjM5MDI0MjhmNjIz
MWMyNDMuLmZhZmNiZWE0MDYzNzA0NWRkOTAzMzU5NzVjYTAwYTUyMzg1ZjIyNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRIYW5kbGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJD
bGllbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhlcmUgaXMgbm8gcm9v
bSB0byBtb3ZlIHRoZSBsYXllciBpbiB0aGUgcmVxdWVzdGVkIGRpcmVjdGlvbiwgaXRzIGZpcnN0
CiAgICAgLy8gYW5jZXN0b3IgbGF5ZXIgdGhhdCBjYW4gYmUgc2Nyb2xsZWQgd2lsbCBiZSBtb3Zl
ZCBpbnN0ZWFkLiBTaG91bGQgb25seSBiZQogICAgIC8vIGNhbGxlZCBpZiBzY3JvbGxCZWdpbigp
IHJldHVybmVkIFNjcm9sbFN0YXJ0ZWQuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KFdlYlBv
aW50LCBXZWJTaXplKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KFdlYlBvaW50LCBX
ZWJGbG9hdFBvaW50KSA9IDA7CiAKICAgICAvLyBTdG9wIHNjcm9sbGluZyB0aGUgc2VsZWN0ZWQg
bGF5ZXIuIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBzY3JvbGxCZWdpbigpCiAgICAgLy8gcmV0
dXJuZWQgU2Nyb2xsU3RhcnRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oCmluZGV4IGIyOGIyOTJjMThkZjA0OGUzYzMwYTFk
ZjQ5NTMwNDJmYmVjMzA0NDkuLjE2NWM3MjZlZWJlOWZjYzAzYWZiZjNlMzI2NDA1NjE4NGZiOGUx
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1
cnZlVGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJl
Q3VydmVUYXJnZXQuaApAQCAtMjcsMTEgKzI3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBGbG9hdFBvaW50OwogCiBjbGFzcyBQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZVRhcmdldCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNv
bnN0IEludFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBGbG9h
dFBvaW50JikgPSAwOwogICAgIC8vIEZJWE1FOiBhZGQgaW50ZXJmYWNlcyBmb3Igc2Nyb2xsKCks
IGV0Yy4KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yTm9uZS5jcHAKaW5kZXggMDRmMjZkMjdiZTBlOTgzNTI0MzhjZjQ4YjFiY2RlNjdkODBi
NTgzNi4uNWRhOWZlODRlYjQ1NTEyMDQ3NWNkMjY4OTc1MGQ3NThlMThhMWQ2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCkBAIC02NDAsNyAr
NjQwLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnN0b3BBbmltYXRpb25UaW1lcklmTmVl
ZGVkKCkKICNlbmRpZgogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c2Nyb2xsQnkoY29u
c3QgSW50UG9pbnQmIGxvY2F0aW9uKQordm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbEJ5
KGNvbnN0IEZsb2F0UG9pbnQmIGxvY2F0aW9uKQogewogICAgIG1fY3VycmVudFBvc1ggKz0gbG9j
YXRpb24ueCgpOwogICAgIG1fY3VycmVudFBvc1kgKz0gbG9jYXRpb24ueSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAppbmRleCA4NjdkZjk3NDFmNzI4
Y2QzOTRlYjY4ZTZkZmZmZGEyMzBmYThlOGMwLi5lZGU5ZDFmNDE4NzkxODNiMjNlODBhODM3MjFi
NWUyOTc3OGI4NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvck5vbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ck5vbmUuaApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIC8vIFBsYXRm
b3JtR2VzdHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxCeShjb25zdCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25z
dCBGbG9hdFBvaW50Jik7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9u
V2lsbFN0YXJ0KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcAppbmRleCBlZDM3Y2YxZDkxMmU3OGJh
MjgyZmRmYzVmZGMzZjc3ZGM1NGEzMzVkLi41MTAwMzFjMmE1ZGMwZTY0NzdjYjFkYzRhYWMwZDFi
NDA0OGNmZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rv
dWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKQEAgLTUzLDE5ICs1MywxOSBAQCB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCiBzdGF0aWMgY29uc3QgaW50IGNNYXhTZWFyY2hJdGVyYXRpb25z
ID0gMjA7CiAKLVBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNoRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlRm9yVG91Y2hQYWQoY29uc3QgRmxvYXRQb2ludCYgdmVs
b2NpdHksIEludFBvaW50IGN1bXVsYXRpdmVTY3JvbGwpCitQYXNzT3duUHRyPFBsYXRmb3JtR2Vz
dHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZUZvclRvdWNo
UGFkKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBGbG9hdFBvaW50IGN1bXVsYXRpdmVTY3Jv
bGwpCiB7CiAgICAgLy8gVGhlIGRlZmF1bHQgcGFyYW1ldGVycyBsaXN0ZWQgYmVsb3cgYXJlIGEg
bWF0Y2hlZCBzZXQsIGFuZCBzaG91bGQgbm90IGJlIGNoYW5nZWQgaW5kZXBlbmRlbnRseSBvZiBv
bmUgYW5vdGhlci4KICAgICByZXR1cm4gY3JlYXRlKHZlbG9jaXR5LCAtNS43MDc2MmUrMDMsIDEu
NzJlKzAyLCAzLjdlKzAwLCAxLjMsIGN1bXVsYXRpdmVTY3JvbGwpOwogfQogCi1QYXNzT3duUHRy
PFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNy
ZWF0ZUZvclRvdWNoU2NyZWVuKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBJbnRQb2ludCBj
dW11bGF0aXZlU2Nyb2xsKQorUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGVGb3JUb3VjaFNjcmVlbihjb25zdCBGbG9h
dFBvaW50JiB2ZWxvY2l0eSwgRmxvYXRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQogewogICAgIC8v
IFRoZSB0b3VjaHNjcmVlbi1zcGVjaWZpYyBwYXJhbWV0ZXJzIGxpc3RlZCBiZWxvdyBhcmUgYSBt
YXRjaGVkIHNldCwgYW5kIHNob3VsZCBub3QgYmUgY2hhbmdlZCBpbmRlcGVuZGVudGx5IG9mIG9u
ZSBhbm90aGVyLgogICAgIHJldHVybiBjcmVhdGUodmVsb2NpdHksIC01LjcwNzYyZSswMywgMS43
MmUrMDIsIDMuN2UrMDAsIDEuMywgY3VtdWxhdGl2ZVNjcm9sbCk7CiB9CiAKLVBhc3NPd25QdHI8
UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3Jl
YXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBmbG9hdCBwMCwgZmxvYXQgcDEsIGZsb2F0
IHAyLCBmbG9hdCBjdXJ2ZUR1cmF0aW9uLCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQorUGFz
c093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHAwLCBmbG9hdCBw
MSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIEZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNj
cm9sbCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZSh2ZWxvY2l0eSwgcDAsIHAxLCBwMiwgY3VydmVEdXJhdGlvbiwgY3VtdWxhdGl2ZVNj
cm9sbCkpOwogfQpAQCAtODAsNyArODAsNyBAQCBpbmxpbmUgZG91YmxlIHZlbG9jaXR5KGRvdWJs
ZSB0LCBmbG9hdCogcCkKICAgICByZXR1cm4gLXBbMF0gKiBwWzJdICogZXhwKC1wWzJdICogdCkg
LSBwWzFdOwogfQogCi1Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsVmVsb2NpdHksIGZs
b2F0IHAwLCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIGNvbnN0IElu
dFBvaW50JiBjdW11bGF0aXZlU2Nyb2xsKQorVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
OjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlh
bFZlbG9jaXR5LCBmbG9hdCBwMCwgZmxvYXQgcDEsIGZsb2F0IHAyLCBmbG9hdCBjdXJ2ZUR1cmF0
aW9uLCBjb25zdCBGbG9hdFBvaW50JiBjdW11bGF0aXZlU2Nyb2xsKQogICAgIDogbV9jdW11bGF0
aXZlU2Nyb2xsKGN1bXVsYXRpdmVTY3JvbGwpCiAgICAgLCBtX2N1cnZlRHVyYXRpb24oY3VydmVE
dXJhdGlvbikKIHsKQEAgLTE0NywxMSArMTQ3LDExIEBAIGJvb2wgVG91Y2hGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlOjphcHBseShkb3VibGUgdGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJn
CiAgICAgICAgIGRpc3BsYWNlbWVudCA9IHBvc2l0aW9uKG1fY3VydmVEdXJhdGlvbiwgbV9jb2Vm
ZmljaWVudHMpIC0gbV9wb3NpdGlvbk9mZnNldDsKIAogICAgIC8vIEtlZXAgdHJhY2sgb2YgaW50
ZWdlciBwb3J0aW9uIG9mIHNjcm9sbCB0aHVzIGZhciwgYW5kIHByZXBhcmUgaW5jcmVtZW50Lgot
ICAgIEludFBvaW50IHNjcm9sbChkaXNwbGFjZW1lbnQgKiBtX2Rpc3BsYWNlbWVudFJhdGlvLngo
KSwgZGlzcGxhY2VtZW50ICogbV9kaXNwbGFjZW1lbnRSYXRpby55KCkpOwotICAgIEludFBvaW50
IHNjcm9sbEluY3JlbWVudChzY3JvbGwgLSBtX2N1bXVsYXRpdmVTY3JvbGwpOworICAgIEZsb2F0
UG9pbnQgc2Nyb2xsKGRpc3BsYWNlbWVudCAqIG1fZGlzcGxhY2VtZW50UmF0aW8ueCgpLCBkaXNw
bGFjZW1lbnQgKiBtX2Rpc3BsYWNlbWVudFJhdGlvLnkoKSk7CisgICAgRmxvYXRQb2ludCBzY3Jv
bGxJbmNyZW1lbnQoc2Nyb2xsIC0gbV9jdW11bGF0aXZlU2Nyb2xsKTsKICAgICBtX2N1bXVsYXRp
dmVTY3JvbGwgPSBzY3JvbGw7CiAKLSAgICBpZiAodGltZSArIG1fdGltZU9mZnNldCA8IG1fY3Vy
dmVEdXJhdGlvbiB8fCBzY3JvbGxJbmNyZW1lbnQgIT0gSW50UG9pbnQ6Onplcm8oKSkgeworICAg
IGlmICh0aW1lICsgbV90aW1lT2Zmc2V0IDwgbV9jdXJ2ZUR1cmF0aW9uIHx8IHNjcm9sbEluY3Jl
bWVudCAhPSBGbG9hdFBvaW50Ojp6ZXJvKCkpIHsKICAgICAgICAgdGFyZ2V0LT5zY3JvbGxCeShz
Y3JvbGxJbmNyZW1lbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5oCmluZGV4IGYyMzhhNzE3ZDIxOWM5MGUzNjFjMzAyNmY5MzdkNjllMDYyNDYxYmEuLjdjYmU0
NTI0NGZhYzc4ZTc5YjliYWFhYjNhOTFkNDY2MGQ1ZGU3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCkBA
IC00MCwxOSArNDAsMTkgQEAgY2xhc3MgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQ7CiAvLyB0
aGUgaW5pdGlhbCB2ZWxvY2l0eS4KIGNsYXNzIFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZSAgOiBwdWJsaWMgUGxhdGZvcm1HZXN0dXJlQ3VydmUgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGVGb3JUb3VjaFBhZChjb25zdCBG
bG9hdFBvaW50JiB2ZWxvY2l0eSwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCA9IEludFBvaW50
KCkpOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGVG
b3JUb3VjaFNjcmVlbihjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgSW50UG9pbnQgY3VtdWxh
dGl2ZVNjcm9sbCA9IEludFBvaW50KCkpOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3Jt
R2VzdHVyZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHAw
LCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIEludFBvaW50IGN1bXVs
YXRpdmVTY3JvbGwgPSBJbnRQb2ludCgpKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZT4gY3JlYXRlRm9yVG91Y2hQYWQoY29uc3QgRmxvYXRQb2ludCYgdmVsb2Np
dHksIEZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCA9IEZsb2F0UG9pbnQoKSk7CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUZvclRvdWNoU2NyZWVu
KGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBGbG9hdFBvaW50IGN1bXVsYXRpdmVTY3JvbGwg
PSBGbG9hdFBvaW50KCkpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1
cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHAwLCBmbG9hdCBw
MSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIEZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNj
cm9sbCA9IEZsb2F0UG9pbnQoKSk7CiAgICAgdmlydHVhbCB+VG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGRlYnVnTmFtZSgpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBhcHBseShkb3VibGUgbW9ub3RvbmljVGltZSwg
UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKSBPVkVSUklERTsKIAogcHJpdmF0ZToKLSAgICBU
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHks
IGZsb2F0IHAwLCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIGNvbnN0
IEludFBvaW50JiBjdW11bGF0aXZlU2Nyb2xsKTsKKyAgICBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHAwLCBmbG9hdCBwMSwg
ZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIGN1bXVsYXRp
dmVTY3JvbGwpOwogCiAgICAgRmxvYXRQb2ludCBtX2Rpc3BsYWNlbWVudFJhdGlvOwotICAgIElu
dFBvaW50IG1fY3VtdWxhdGl2ZVNjcm9sbDsKKyAgICBGbG9hdFBvaW50IG1fY3VtdWxhdGl2ZVNj
cm9sbDsKICAgICBmbG9hdCBtX2NvZWZmaWNpZW50c1szXTsKICAgICBmbG9hdCBtX3RpbWVPZmZz
ZXQ7CiAgICAgZmxvYXQgbV9jdXJ2ZUR1cmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdl
c3R1cmVDdXJ2ZUZhY3RvcnkuY3BwCmluZGV4IDIwM2YzOWNlOTlmNDI1OGI0YWYwNmRjNTQxYzhh
ZThhMjA0N2FjNDMuLjIxMWQwNjAwODQ0MGYzY2YxNWM2NWQ5ZjA0MjkyZGJiMzE5NzFiZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZv
cm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5KiBQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZUZhY3Rvcnk6OmdldCgpCiAgICAgcmV0dXJuICZmYWN0b3J5OwogfQogCi1QYXNzT3duUHRyPFdl
YkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlPiBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6
OmNyZWF0ZUN1cnZlKGludCBkZXZpY2VTb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
IHBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQorUGFzc093blB0cjxX
ZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
OjpjcmVhdGVDdXJ2ZShpbnQgZGV2aWNlU291cmNlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBwb2ludCwgV2ViQ29yZTo6RmxvYXRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQogewogICAgIE93
blB0cjxXZWJGbGluZ0FuaW1hdG9yPiBmbGluZ0FuaW1hdG9yID0gbV9tb2NrRmxpbmdBbmltYXRv
ci5yZWxlYXNlKCk7CiAgICAgaWYgKCFmbGluZ0FuaW1hdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZh
Y3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZv
cm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgKaW5kZXggMWFiM2JmNDQxYTkzNTkzYjc0NGJkYjJjMDUy
MjU0NTQ4NGFjYmEzZS4uZWNjODY5NWJiYzdlODEyNjM0NGVhZDAyNGQ1ZGE5OGNlMDVlOGZhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0
Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5oCkBAIC0zNiw3ICsz
Niw3IEBAIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeSogZ2V0KCk7CiAKLSAgICBQYXNzT3du
UHRyPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGVDdXJ2ZShpbnQgZGV2aWNl
U291cmNlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViQ29yZTo6SW50UG9pbnQgY3Vt
dWxhdGl2ZVNjcm9sbCA9IFdlYkNvcmU6OkludFBvaW50KCkpOworICAgIFBhc3NPd25QdHI8V2Vi
Q29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUN1cnZlKGludCBkZXZpY2VTb3VyY2Us
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpGbG9hdFBvaW50IGN1bXVsYXRp
dmVTY3JvbGwgPSBXZWJDb3JlOjpGbG9hdFBvaW50KCkpOwogICAgIHZvaWQgc2V0V2ViRmxpbmdB
bmltYXRvckZvclRlc3QoUGFzc093blB0cjxXZWJGbGluZ0FuaW1hdG9yPik7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaAppbmRleCAyMTMzZTg1MDg0MDkwY2M3MjY5Zjc2Zjg4
Mzg2YWQxYzNiYjlkZjg4Li5lYzM5YWViNGE5MDZlMzhhMzc5ZDU4MmExM2U1NmE0NjhkZWMwYjA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdl
YkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHsKICAgICBXZWJQb2ludCBnbG9iYWxQb2ludDsK
ICAgICBpbnQgbW9kaWZpZXJzOwogICAgIFdlYkdlc3R1cmVFdmVudDo6U291cmNlRGV2aWNlIHNv
dXJjZURldmljZTsKLSAgICBXZWJTaXplIGN1bXVsYXRpdmVTY3JvbGw7CisgICAgV2ViRmxvYXRQ
b2ludCBjdW11bGF0aXZlU2Nyb2xsOwogICAgIGRvdWJsZSBzdGFydFRpbWU7CiAKICAgICBXZWJB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKaW5kZXgg
ODdkN2IyNTIyZTljNjk2YjJhNWIxZGIzY2JhMWI0ODY4NGRiMmY3NS4uYTEyY2FmMDIxMmU4YWE2
ZjNjMzk3ZmI3MzkwYzczZTkxZTIzNTY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApAQCAt
MTE5LDcgKzExOSw3IEBAIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bv
c2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgICAgIHN3aXRjaCAo
c2Nyb2xsU3RhdHVzKSB7CiAgICAgICAgIGNhc2UgV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3Jv
bGxTdGF0dXNTdGFydGVkOiB7CiAgICAgICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMigiY2Mi
LCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUlucHV0IHdoZWVsIHNjcm9s
bCIsICJkZWx0YVgiLCAtd2hlZWxFdmVudC5kZWx0YVgsICJkZWx0YVkiLCAtd2hlZWxFdmVudC5k
ZWx0YVkpOwotICAgICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJ5KFdlYlBv
aW50KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSwgSW50U2l6ZSgtd2hlZWxFdmVudC5kZWx0
YVgsIC13aGVlbEV2ZW50LmRlbHRhWSkpOworICAgICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGll
bnQtPnNjcm9sbEJ5KFdlYlBvaW50KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSwgV2ViRmxv
YXRQb2ludCgtd2hlZWxFdmVudC5kZWx0YVgsIC13aGVlbEV2ZW50LmRlbHRhWSkpOwogICAgICAg
ICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEVuZCgpOwogICAgICAgICAgICAgcmV0
dXJuIERpZEhhbmRsZTsKICAgICAgICAgfQpAQCAtMTU1LDcgKzE1NSw3IEBAIFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsOjpoCiAKICAgICAgICAgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZl
bnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmV2ZW50KTsKICAgICAg
ICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJ5KFdlYlBvaW50KGdlc3R1cmVFdmVudC54
LCBnZXN0dXJlRXZlbnQueSksCi0gICAgICAgICAgICBJbnRTaXplKC1nZXN0dXJlRXZlbnQuZGF0
YS5zY3JvbGxVcGRhdGUuZGVsdGFYLCAtZ2VzdHVyZUV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRl
bHRhWSkpOworICAgICAgICAgICAgV2ViRmxvYXRQb2ludCgtZ2VzdHVyZUV2ZW50LmRhdGEuc2Ny
b2xsVXBkYXRlLmRlbHRhWCwgLWdlc3R1cmVFdmVudC5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkp
KTsKICAgICAgICAgcmV0dXJuIERpZEhhbmRsZTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUg
PT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZCkgewogICAgICAgICBBU1NFUlQobV9l
eHBlY3RTY3JvbGxVcGRhdGVFbmQpOwpAQCAtMjczLDkgKzI3Myw5IEBAIGJvb2wgV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGw6OmNhbmNlbEN1cnJlbnRGbGluZygpCiAgICAgcmV0dXJuIGhh
ZEZsaW5nQW5pbWF0aW9uOwogfQogCi12b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
OjpzY3JvbGxCeShjb25zdCBJbnRQb2ludCYgaW5jcmVtZW50KQordm9pZCBXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkoY29uc3QgRmxvYXRQb2ludCYgaW5jcmVtZW50KQog
ewotICAgIGlmIChpbmNyZW1lbnQgPT0gSW50UG9pbnQ6Onplcm8oKSkKKyAgICBpZiAoaW5jcmVt
ZW50ID09IEZsb2F0UG9pbnQ6Onplcm8oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVFJBQ0Vf
RVZFTlQyKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkiLCAi
eCIsIGluY3JlbWVudC54KCksICJ5IiwgaW5jcmVtZW50LnkoKSk7CkBAIC0yOTMsOCArMjkzLDgg
QEAgdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkoY29uc3QgSW50
UG9pbnQmIGluY3JlbWVudCkKICAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZl
bnREaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiA9IGhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbChzeW50
aGV0aWNXaGVlbCk7CiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgRGlkSGFu
ZGxlOgotICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwud2lk
dGggKz0gaW5jcmVtZW50LngoKTsKLSAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11
bGF0aXZlU2Nyb2xsLmhlaWdodCArPSBpbmNyZW1lbnQueSgpOworICAgICAgICBtX3doZWVsRmxp
bmdQYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwueCArPSBpbmNyZW1lbnQueCgpOworICAgICAg
ICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwueSArPSBpbmNyZW1lbnQu
eSgpOwogICAgIGNhc2UgRHJvcEV2ZW50OgogICAgICAgICBicmVhazsKICAgICBjYXNlIERpZE5v
dEhhbmRsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCmluZGV4IGZhODFkZTk0NTI3Y2FkOWUyY2FhY2Jk
NWE5ZDRhODczYjM5NmNlZjEuLmRiZjQyNTNhNzIzNzcwMjMwMzNjMmRkNzYxNTA1MmI2NDgzMmEw
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGwuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUpOwogCiAgICAgLy8gV2Vi
Q29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgaW1wbGVtZW50YXRpb24uCi0gICAgdmly
dHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdmlydHVh
bCB2b2lkIHNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKIAogICAgIGludCBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBmNmY5ZmM2ZmE3YzEyNDgwYWQ0
MDZjZTVhODk5NWVhNjNkNGMzYzkwLi5kMGEyMTZjMGRjZDg5MmFiMWE0MjM4ZThmMDZlMzkxMDQy
MGU0NTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBA
IC02NDEsNyArNjQxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aGFuZGxlTW91c2VVcChGcmFtZSYg
bWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKICNlbmRpZgogfQogCi12b2lk
IFdlYlZpZXdJbXBsOjpzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVsdGEpCit2
b2lkIFdlYlZpZXdJbXBsOjpzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBkZWx0
YSkKIHsKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWw7CiAgICAgY29uc3Qg
ZmxvYXQgdGlja0Rpdmlzb3IgPSBXZWJDb3JlOjpXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsK
QEAgLTc5OSw3ICs3OTksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVs
RmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcgogICAgIG1fbGFzdFdo
ZWVsUG9zaXRpb24gPSBwYXJhbWV0ZXJzLnBvaW50OwogICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9z
aXRpb24gPSBwYXJhbWV0ZXJzLmdsb2JhbFBvaW50OwogICAgIG1fZmxpbmdNb2RpZmllciA9IHBh
cmFtZXRlcnMubW9kaWZpZXJzOwotICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3Vy
dmUgPSBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmdldCgpLT5jcmVhdGVDdXJ2ZShwYXJh
bWV0ZXJzLnNvdXJjZURldmljZSwgcGFyYW1ldGVycy5kZWx0YSwgSW50UG9pbnQocGFyYW1ldGVy
cy5jdW11bGF0aXZlU2Nyb2xsKSk7CisgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBj
dXJ2ZSA9IFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeTo6Z2V0KCktPmNyZWF0ZUN1cnZlKHBh
cmFtZXRlcnMuc291cmNlRGV2aWNlLCBwYXJhbWV0ZXJzLmRlbHRhLCBwYXJhbWV0ZXJzLmN1bXVs
YXRpdmVTY3JvbGwpOwogICAgIG1fZ2VzdHVyZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2Vz
dHVyZUFuaW1hdGlvbjo6Y3JlYXRlKGN1cnZlLnJlbGVhc2UoKSwgdGhpcywgcGFyYW1ldGVycy5z
dGFydFRpbWUpOwogICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCAwMmExZTUzNzA0MGI2ODAwNzY4ZmMxYmU5MWMz
ZmFiNmYwNmZlYzUyLi44MTc1NmVhY2QxZTg2YjU0YjFhNzY2OTFhMjNiZjk5MzY5MmIyNjJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQwNSw3ICs0MDUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYXNUb3VjaEV2ZW50SGFuZGxlcnMoYm9vbCk7CiAKICAg
ICAvLyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCBpbXBsZW1lbnRhdGlvbiBmb3Igd2hlZWwg
ZmxpbmcuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
Jik7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
KTsKIAogICAgIC8vIEhhbmRsZXMgY29udGV4dCBtZW51IGV2ZW50cyBvcmlnbmF0ZWQgdmlhIHRo
ZSB0aGUga2V5Ym9hcmQuIFRoZXNlCiAgICAgLy8gaW5jbHVkZSB0aGUgVktfQVBQUyB2aXJ0dWFs
IGtleSBhbmQgdGhlIFNoaWZ0K0YxMCBjb21iaW5lLiBDb2RlIGlzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173212</attachid>
            <date>2012-11-08 23:10:26 -0800</date>
            <delta_ts>2012-11-08 23:14:45 -0800</delta_ts>
            <desc>Add support for fractional scroll events</desc>
            <filename>bug-101563-20121109150834.patch</filename>
            <type>text/plain</type>
            <size>20129</size>
            <attacher name="Tai-Hsu Lin">sheckylin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzYTNmODVhZGFmZTcy
MTA4Y2NiMGFmYzQ2OWUwYjBkNGVmMjg5Y2QzLi5kMjQ4MDNjMGRlOTNlOWYyODBmY2Y3MWI0ODg5
NTlkYjBlZDgwZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0wOCAg
VGFpLUhzdSBMaW4gIDxzaGVja3lsaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBmcmFjdGlvbmFsIHNjcm9sbCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB2YXJpb3VzIHNjcm9sbCBldmVudCBkYXRh
IHR5cGVzIGZyb20gaW50ZWdlcnMgdG8gZmxvYXRpbmctcG9pbnRzLiBUaGlzIGFsbG93cyBtb3Jl
IHByZWNpc2Ugc2Nyb2xsaW5nIGFuZCBwcm92aWRlcyBtb3JlIGZyZWVkb20gdG8gdGhlIFdlYktp
dCB1c2Vycy4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJDbGll
bnQuaDoKKwogMjAxMi0xMS0wNyAgWXVzdWYgT3p1eXNhbCAgPHl1c3Vmb0Bnb29nbGUuY29tPgog
CiAgICAgICAgIEFkZCBBUEkgZm9yIHRvdWNoRXZlbnRIYW5kbGVyUmVnaW9uIHRvIFdlYkxheWVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMzYxN2NmOWM5ZDdiMWUzY2EyNTNkZTExMGZlM2JjMjBjNGUwNjczZi4u
Zjk2N2RjYzkwYmU1MzM5NzNiNDNhZDIzY2Q1MDkzOTU0OGRjMDU1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM0IEBACisyMDEyLTExLTA4ICBUYWktSHN1IExpbiAgPHNoZWNreWxpbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGZyYWN0aW9uYWwgc2Nyb2xsIGV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IHZhcmlvdXMgc2Nyb2xsIGV2ZW50IGRhdGEgdHlwZXMgZnJvbSBpbnRlZ2VycyB0byBmbG9hdGlu
Zy1wb2ludHMuIFRoaXMgYWxsb3dzIG1vcmUgcHJlY2lzZSBzY3JvbGxpbmcgYW5kIHByb3ZpZGVz
IG1vcmUgZnJlZWRvbSB0byB0aGUgV2ViS2l0IHVzZXJzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJn
ZXQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaDoKKyAgICAgICAgKFNjcm9sbEFuaW1hdG9yTm9u
ZSk6CisgICAgICAgICogcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3Jl
YXRlRm9yVG91Y2hQYWQpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlOjpjcmVhdGVGb3JUb3VjaFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6
OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmUuaDoKKyAgICAgICAgKFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmNyZWF0
ZUN1cnZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2Vz
dHVyZUN1cnZlRmFjdG9yeS5oOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
KToKKwogMjAxMi0xMS0wNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xlIGVycm9yIGFmdGVyIGluc3BlY3Rpbmcg
SW5kZXhlZERCCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQxN2JjY2MyYzljZDJkZTgz
N2IyOTg2N2RmZTJhZDkwNDMwMjRjZTguLjdiZGU1MWQ2NjhhNGVhNTdhZGUzMTk5NGYzM2Y4NGYy
YzFhMzUyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MTItMTEtMDggIFRhaS1Ic3UgTGluICA8c2hlY2t5bGluQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgZnJhY3Rpb25hbCBzY3JvbGwgZXZlbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1NjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdmFyaW91cyBzY3JvbGwg
ZXZlbnQgZGF0YSB0eXBlcyBmcm9tIGludGVnZXJzIHRvIGZsb2F0aW5nLXBvaW50cy4gVGhpcyBh
bGxvd3MgbW9yZSBwcmVjaXNlIHNjcm9sbGluZyBhbmQgcHJvdmlkZXMgbW9yZSBmcmVlZG9tIHRv
IHRoZSBXZWJLaXQgdXNlcnMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToK
KyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVu
dEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuaDoKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Ny
b2xsQnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVl
bEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAg
KFdlYlZpZXdJbXBsKToKKwogMjAxMi0wOC0yMCAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRHJvcCBkaW1tZWQgY3J1bWIgaGFuZGxp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRI
YW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklucHV0
SGFuZGxlckNsaWVudC5oCmluZGV4IDFiZWYyMDVjNGViNDUxNGNhNThmNmQzMjM5MDI0MjhmNjIz
MWMyNDMuLjY3OWViZWJiZDY2ZTM3ODY5YWYxNGJkNjEzODlhNDE0MmM2NWI5NDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRIYW5kbGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJD
bGllbnQuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5j
bHVkZSAiV2ViUG9pbnQuaCIKKyNpbmNsdWRlICJXZWJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAi
V2ViU2l6ZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUzLDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIC8vIHRoZXJlIGlzIG5vIHJvb20gdG8gbW92ZSB0aGUgbGF5ZXIgaW4gdGhlIHJlcXVl
c3RlZCBkaXJlY3Rpb24sIGl0cyBmaXJzdAogICAgIC8vIGFuY2VzdG9yIGxheWVyIHRoYXQgY2Fu
IGJlIHNjcm9sbGVkIHdpbGwgYmUgbW92ZWQgaW5zdGVhZC4gU2hvdWxkIG9ubHkgYmUKICAgICAv
LyBjYWxsZWQgaWYgc2Nyb2xsQmVnaW4oKSByZXR1cm5lZCBTY3JvbGxTdGFydGVkLgotICAgIHZp
cnR1YWwgdm9pZCBzY3JvbGxCeShXZWJQb2ludCwgV2ViU2l6ZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxCeShXZWJQb2ludCwgV2ViRmxvYXRQb2ludCkgPSAwOwogCiAgICAgLy8gU3Rv
cCBzY3JvbGxpbmcgdGhlIHNlbGVjdGVkIGxheWVyLiBTaG91bGQgb25seSBiZSBjYWxsZWQgaWYg
c2Nyb2xsQmVnaW4oKQogICAgIC8vIHJldHVybmVkIFNjcm9sbFN0YXJ0ZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaAppbmRl
eCBiMjhiMjkyYzE4ZGYwNDhlM2MzMGExZGY0OTUzMDQyZmJlYzMwNDQ5Li4xNjVjNzI2ZWViZTlm
Y2MwM2FmYmYzZTMyNjQwNTYxODRmYjhlMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgKQEAgLTI3LDExICsyNywxMSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEludFBvaW50OworY2xhc3MgRmxvYXRQ
b2ludDsKIAogY2xhc3MgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgewogcHVibGljOgotICAg
IHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsQnkoY29uc3QgRmxvYXRQb2ludCYpID0gMDsKICAgICAvLyBGSVhNRTogYWRk
IGludGVyZmFjZXMgZm9yIHNjcm9sbCgpLCBldGMuCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCmluZGV4IDA0ZjI2ZDI3YmUw
ZTk4MzUyNDM4Y2Y0OGIxYmNkZTY3ZDgwYjU4MzYuLjVkYTlmZTg0ZWI0NTUxMjA0NzVjZDI2ODk3
NTBkNzU4ZTE4YTFkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yTm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3JOb25lLmNwcApAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25l
OjpzdG9wQW5pbWF0aW9uVGltZXJJZk5lZWRlZCgpCiAjZW5kaWYKIH0KIAotdm9pZCBTY3JvbGxB
bmltYXRvck5vbmU6OnNjcm9sbEJ5KGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKK3ZvaWQgU2Ny
b2xsQW5pbWF0b3JOb25lOjpzY3JvbGxCeShjb25zdCBGbG9hdFBvaW50JiBsb2NhdGlvbikKIHsK
ICAgICBtX2N1cnJlbnRQb3NYICs9IGxvY2F0aW9uLngoKTsKICAgICBtX2N1cnJlbnRQb3NZICs9
IGxvY2F0aW9uLnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yTm9uZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JO
b25lLmgKaW5kZXggODY3ZGY5NzQxZjcyOGNkMzk0ZWI2OGU2ZGZmZmRhMjMwZmE4ZThjMC4uZWRl
OWQxZjQxODc5MTgzYjIzZTgwYTgzNzIxYjVlMjk3NzhiODVjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGlj
OgogICAgIH07CiAKICAgICAvLyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCBpbXBsZW1lbnRh
dGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgRmxvYXRQb2ludCYpOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbldpbGxTdGFydCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5j
cHAKaW5kZXggZWQzN2NmMWQ5MTJlNzhiYTI4MmZkZmM1ZmRjM2Y3N2RjNTRhMzM1ZC4uNTEwMDMx
YzJhNWRjMGU2NDc3Y2IxZGM0YWFjMGQxYjQwNDhjZmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3Bw
CkBAIC01MywxOSArNTMsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogc3RhdGljIGNvbnN0
IGludCBjTWF4U2VhcmNoSXRlcmF0aW9ucyA9IDIwOwogCi1QYXNzT3duUHRyPFBsYXRmb3JtR2Vz
dHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZUZvclRvdWNo
UGFkKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xs
KQorUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlOjpjcmVhdGVGb3JUb3VjaFBhZChjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwg
RmxvYXRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQogewogICAgIC8vIFRoZSBkZWZhdWx0IHBhcmFt
ZXRlcnMgbGlzdGVkIGJlbG93IGFyZSBhIG1hdGNoZWQgc2V0LCBhbmQgc2hvdWxkIG5vdCBiZSBj
aGFuZ2VkIGluZGVwZW5kZW50bHkgb2Ygb25lIGFub3RoZXIuCiAgICAgcmV0dXJuIGNyZWF0ZSh2
ZWxvY2l0eSwgLTUuNzA3NjJlKzAzLCAxLjcyZSswMiwgMy43ZSswMCwgMS4zLCBjdW11bGF0aXZl
U2Nyb2xsKTsKIH0KIAotUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGlu
Z1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGVGb3JUb3VjaFNjcmVlbihjb25zdCBGbG9hdFBv
aW50JiB2ZWxvY2l0eSwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKK1Bhc3NPd25QdHI8UGxh
dGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRl
Rm9yVG91Y2hTY3JlZW4oY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIEZsb2F0UG9pbnQgY3Vt
dWxhdGl2ZVNjcm9sbCkKIHsKICAgICAvLyBUaGUgdG91Y2hzY3JlZW4tc3BlY2lmaWMgcGFyYW1l
dGVycyBsaXN0ZWQgYmVsb3cgYXJlIGEgbWF0Y2hlZCBzZXQsIGFuZCBzaG91bGQgbm90IGJlIGNo
YW5nZWQgaW5kZXBlbmRlbnRseSBvZiBvbmUgYW5vdGhlci4KICAgICByZXR1cm4gY3JlYXRlKHZl
bG9jaXR5LCAtNS43MDc2MmUrMDMsIDEuNzJlKzAyLCAzLjdlKzAwLCAxLjMsIGN1bXVsYXRpdmVT
Y3JvbGwpOwogfQogCi1QYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwg
ZmxvYXQgcDAsIGZsb2F0IHAxLCBmbG9hdCBwMiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgSW50UG9p
bnQgY3VtdWxhdGl2ZVNjcm9sbCkKK1Bhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRv
dWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZl
bG9jaXR5LCBmbG9hdCBwMCwgZmxvYXQgcDEsIGZsb2F0IHAyLCBmbG9hdCBjdXJ2ZUR1cmF0aW9u
LCBGbG9hdFBvaW50IGN1bXVsYXRpdmVTY3JvbGwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUodmVsb2NpdHksIHAwLCBwMSwgcDIsIGN1
cnZlRHVyYXRpb24sIGN1bXVsYXRpdmVTY3JvbGwpKTsKIH0KQEAgLTgwLDcgKzgwLDcgQEAgaW5s
aW5lIGRvdWJsZSB2ZWxvY2l0eShkb3VibGUgdCwgZmxvYXQqIHApCiAgICAgcmV0dXJuIC1wWzBd
ICogcFsyXSAqIGV4cCgtcFsyXSAqIHQpIC0gcFsxXTsKIH0KIAotVG91Y2hGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQ
b2ludCYgaW5pdGlhbFZlbG9jaXR5LCBmbG9hdCBwMCwgZmxvYXQgcDEsIGZsb2F0IHAyLCBmbG9h
dCBjdXJ2ZUR1cmF0aW9uLCBjb25zdCBJbnRQb2ludCYgY3VtdWxhdGl2ZVNjcm9sbCkKK1RvdWNo
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxWZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAxLCBm
bG9hdCBwMiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgY3VtdWxhdGl2
ZVNjcm9sbCkKICAgICA6IG1fY3VtdWxhdGl2ZVNjcm9sbChjdW11bGF0aXZlU2Nyb2xsKQogICAg
ICwgbV9jdXJ2ZUR1cmF0aW9uKGN1cnZlRHVyYXRpb24pCiB7CkBAIC0xNDcsMTEgKzE0NywxMSBA
QCBib29sIFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6YXBwbHkoZG91YmxlIHRpbWUs
IFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZwogICAgICAgICBkaXNwbGFjZW1lbnQgPSBwb3NpdGlv
bihtX2N1cnZlRHVyYXRpb24sIG1fY29lZmZpY2llbnRzKSAtIG1fcG9zaXRpb25PZmZzZXQ7CiAK
ICAgICAvLyBLZWVwIHRyYWNrIG9mIGludGVnZXIgcG9ydGlvbiBvZiBzY3JvbGwgdGh1cyBmYXIs
IGFuZCBwcmVwYXJlIGluY3JlbWVudC4KLSAgICBJbnRQb2ludCBzY3JvbGwoZGlzcGxhY2VtZW50
ICogbV9kaXNwbGFjZW1lbnRSYXRpby54KCksIGRpc3BsYWNlbWVudCAqIG1fZGlzcGxhY2VtZW50
UmF0aW8ueSgpKTsKLSAgICBJbnRQb2ludCBzY3JvbGxJbmNyZW1lbnQoc2Nyb2xsIC0gbV9jdW11
bGF0aXZlU2Nyb2xsKTsKKyAgICBGbG9hdFBvaW50IHNjcm9sbChkaXNwbGFjZW1lbnQgKiBtX2Rp
c3BsYWNlbWVudFJhdGlvLngoKSwgZGlzcGxhY2VtZW50ICogbV9kaXNwbGFjZW1lbnRSYXRpby55
KCkpOworICAgIEZsb2F0UG9pbnQgc2Nyb2xsSW5jcmVtZW50KHNjcm9sbCAtIG1fY3VtdWxhdGl2
ZVNjcm9sbCk7CiAgICAgbV9jdW11bGF0aXZlU2Nyb2xsID0gc2Nyb2xsOwogCi0gICAgaWYgKHRp
bWUgKyBtX3RpbWVPZmZzZXQgPCBtX2N1cnZlRHVyYXRpb24gfHwgc2Nyb2xsSW5jcmVtZW50ICE9
IEludFBvaW50Ojp6ZXJvKCkpIHsKKyAgICBpZiAodGltZSArIG1fdGltZU9mZnNldCA8IG1fY3Vy
dmVEdXJhdGlvbiB8fCBzY3JvbGxJbmNyZW1lbnQgIT0gRmxvYXRQb2ludDo6emVybygpKSB7CiAg
ICAgICAgIHRhcmdldC0+c2Nyb2xsQnkoc2Nyb2xsSW5jcmVtZW50KTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAppbmRleCBmMjM4YTcxN2QyMTljOTBlMzYxYzMw
MjZmOTM3ZDY5ZTA2MjQ2MWJhLi43Y2JlNDUyNDRmYWM3OGU3OWI5YmFhYWIzYTkxZDQ2NjBkNWRl
N2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZv
cm1HZXN0dXJlQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUuaApAQCAtNDAsMTkgKzQwLDE5IEBAIGNsYXNzIFBsYXRmb3Jt
R2VzdHVyZUN1cnZlVGFyZ2V0OwogLy8gdGhlIGluaXRpYWwgdmVsb2NpdHkuCiBjbGFzcyBUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUgIDogcHVibGljIFBsYXRmb3JtR2VzdHVyZUN1cnZl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4g
Y3JlYXRlRm9yVG91Y2hQYWQoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIEludFBvaW50IGN1
bXVsYXRpdmVTY3JvbGwgPSBJbnRQb2ludCgpKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlRm9yVG91Y2hTY3JlZW4oY29uc3QgRmxvYXRQb2ludCYg
dmVsb2NpdHksIEludFBvaW50IGN1bXVsYXRpdmVTY3JvbGwgPSBJbnRQb2ludCgpKTsKLSAgICBz
dGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0
UG9pbnQmIHZlbG9jaXR5LCBmbG9hdCBwMCwgZmxvYXQgcDEsIGZsb2F0IHAyLCBmbG9hdCBjdXJ2
ZUR1cmF0aW9uLCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsID0gSW50UG9pbnQoKSk7CisgICAg
c3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUZvclRvdWNoUGFk
KGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBGbG9hdFBvaW50IGN1bXVsYXRpdmVTY3JvbGwg
PSBGbG9hdFBvaW50KCkpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1
cnZlPiBjcmVhdGVGb3JUb3VjaFNjcmVlbihjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgRmxv
YXRQb2ludCBjdW11bGF0aXZlU2Nyb2xsID0gRmxvYXRQb2ludCgpKTsKKyAgICBzdGF0aWMgUGFz
c093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZl
bG9jaXR5LCBmbG9hdCBwMCwgZmxvYXQgcDEsIGZsb2F0IHAyLCBmbG9hdCBjdXJ2ZUR1cmF0aW9u
LCBGbG9hdFBvaW50IGN1bXVsYXRpdmVTY3JvbGwgPSBGbG9hdFBvaW50KCkpOwogICAgIHZpcnR1
YWwgflRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSgpOwogCiAgICAgdmlydHVhbCBjb25z
dCBjaGFyKiBkZWJ1Z05hbWUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgYXBw
bHkoZG91YmxlIG1vbm90b25pY1RpbWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KikgT1ZF
UlJJREU7CiAKIHByaXZhdGU6Ci0gICAgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNv
bnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBmbG9hdCBwMCwgZmxvYXQgcDEsIGZsb2F0IHAyLCBm
bG9hdCBjdXJ2ZUR1cmF0aW9uLCBjb25zdCBJbnRQb2ludCYgY3VtdWxhdGl2ZVNjcm9sbCk7Cisg
ICAgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9j
aXR5LCBmbG9hdCBwMCwgZmxvYXQgcDEsIGZsb2F0IHAyLCBmbG9hdCBjdXJ2ZUR1cmF0aW9uLCBj
b25zdCBGbG9hdFBvaW50JiBjdW11bGF0aXZlU2Nyb2xsKTsKIAogICAgIEZsb2F0UG9pbnQgbV9k
aXNwbGFjZW1lbnRSYXRpbzsKLSAgICBJbnRQb2ludCBtX2N1bXVsYXRpdmVTY3JvbGw7CisgICAg
RmxvYXRQb2ludCBtX2N1bXVsYXRpdmVTY3JvbGw7CiAgICAgZmxvYXQgbV9jb2VmZmljaWVudHNb
M107CiAgICAgZmxvYXQgbV90aW1lT2Zmc2V0OwogICAgIGZsb2F0IG1fY3VydmVEdXJhdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxh
dGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcAppbmRleCAyMDNm
MzljZTk5ZjQyNThiNGFmMDZkYzU0MWM4YWU4YTIwNDdhYzQzLi4yMTFkMDYwMDg0NDBmM2NmMTVj
NjVkOWYwNDI5MmRiYjMxOTcxYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVD
dXJ2ZUZhY3RvcnkuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFj
dG9yeSogUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5OjpnZXQoKQogICAgIHJldHVybiAmZmFj
dG9yeTsKIH0KIAotUGFzc093blB0cjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gUGxh
dGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5OjpjcmVhdGVDdXJ2ZShpbnQgZGV2aWNlU291cmNlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgY3VtdWxh
dGl2ZVNjcm9sbCkKK1Bhc3NPd25QdHI8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFBs
YXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeTo6Y3JlYXRlQ3VydmUoaW50IGRldmljZVNvdXJjZSwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9pbnQsIFdlYkNvcmU6OkZsb2F0UG9pbnQgY3Vt
dWxhdGl2ZVNjcm9sbCkKIHsKICAgICBPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gZmxpbmdBbmlt
YXRvciA9IG1fbW9ja0ZsaW5nQW5pbWF0b3IucmVsZWFzZSgpOwogICAgIGlmICghZmxpbmdBbmlt
YXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5oCmluZGV4IDFh
YjNiZjQ0MWE5MzU5M2I3NDRiZGIyYzA1MjI1NDU0ODRhY2JhM2UuLmVjYzg2OTViYmM3ZTgxMjYz
NDRlYWQwMjRkNWRhOThjZTA1ZThmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVD
dXJ2ZUZhY3RvcnkuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZUZhY3RvcnkgewogcHVibGljOgogICAgIHN0YXRpYyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rv
cnkqIGdldCgpOwogCi0gICAgUGFzc093blB0cjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZT4gY3JlYXRlQ3VydmUoaW50IGRldmljZVNvdXJjZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYsIFdlYkNvcmU6OkludFBvaW50IGN1bXVsYXRpdmVTY3JvbGwgPSBXZWJDb3JlOjpJbnRQb2lu
dCgpKTsKKyAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVh
dGVDdXJ2ZShpbnQgZGV2aWNlU291cmNlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2Vi
Q29yZTo6RmxvYXRQb2ludCBjdW11bGF0aXZlU2Nyb2xsID0gV2ViQ29yZTo6RmxvYXRQb2ludCgp
KTsKICAgICB2b2lkIHNldFdlYkZsaW5nQW5pbWF0b3JGb3JUZXN0KFBhc3NPd25QdHI8V2ViRmxp
bmdBbmltYXRvcj4pOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgKaW5kZXgg
MjEzM2U4NTA4NDA5MGNjNzI2OWY3NmY4ODM4NmFkMWMzYmI5ZGY4OC4uZWMzOWFlYjRhOTA2ZTM4
YTM3OWQ1ODJhMTNlNTZhNDY4ZGVjMGIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oCkBA
IC00MSw3ICs0MSw3IEBAIHN0cnVjdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyB7CiAg
ICAgV2ViUG9pbnQgZ2xvYmFsUG9pbnQ7CiAgICAgaW50IG1vZGlmaWVyczsKICAgICBXZWJHZXN0
dXJlRXZlbnQ6OlNvdXJjZURldmljZSBzb3VyY2VEZXZpY2U7Ci0gICAgV2ViU2l6ZSBjdW11bGF0
aXZlU2Nyb2xsOworICAgIFdlYkZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbDsKICAgICBkb3Vi
bGUgc3RhcnRUaW1lOwogCiAgICAgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGwuY3BwCmluZGV4IDg3ZDdiMjUyMmU5YzY5NmIyYTViMWRiM2NiYTFiNDg2
ODRkYjJmNzUuLmExMmNhZjAyMTJlOGFhNmYzYzM5N2ZiNzM5MGM3M2U5MWUyMzU2OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbDo6aAogICAgICAgICBzd2l0Y2ggKHNjcm9sbFN0YXR1cykgewogICAgICAgICBjYXNlIFdl
YklucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzU3RhcnRlZDogewogICAgICAgICAgICAg
VFJBQ0VfRVZFTlRfSU5TVEFOVDIoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
OjpoYW5kbGVJbnB1dCB3aGVlbCBzY3JvbGwiLCAiZGVsdGFYIiwgLXdoZWVsRXZlbnQuZGVsdGFY
LCAiZGVsdGFZIiwgLXdoZWVsRXZlbnQuZGVsdGFZKTsKLSAgICAgICAgICAgIG1faW5wdXRIYW5k
bGVyQ2xpZW50LT5zY3JvbGxCeShXZWJQb2ludCh3aGVlbEV2ZW50LngsIHdoZWVsRXZlbnQueSks
IEludFNpemUoLXdoZWVsRXZlbnQuZGVsdGFYLCAtd2hlZWxFdmVudC5kZWx0YVkpKTsKKyAgICAg
ICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShXZWJQb2ludCh3aGVlbEV2ZW50
LngsIHdoZWVsRXZlbnQueSksIFdlYkZsb2F0UG9pbnQoLXdoZWVsRXZlbnQuZGVsdGFYLCAtd2hl
ZWxFdmVudC5kZWx0YVkpKTsKICAgICAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3Jv
bGxFbmQoKTsKICAgICAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgICAgIH0KQEAgLTE1
NSw3ICsxNTUsNyBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3Np
dGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogCiAgICAgICAgIGNvbnN0IFdl
Ykdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1
cmVFdmVudCo+KCZldmVudCk7CiAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxC
eShXZWJQb2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpLAotICAgICAgICAgICAg
SW50U2l6ZSgtZ2VzdHVyZUV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWCwgLWdlc3R1cmVF
dmVudC5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkpKTsKKyAgICAgICAgICAgIFdlYkZsb2F0UG9p
bnQoLWdlc3R1cmVFdmVudC5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVgsIC1nZXN0dXJlRXZlbnQu
ZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZKSk7CiAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAg
ICAgfSBlbHNlIGlmIChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxF
bmQpIHsKICAgICAgICAgQVNTRVJUKG1fZXhwZWN0U2Nyb2xsVXBkYXRlRW5kKTsKQEAgLTI3Myw5
ICsyNzMsOSBAQCBib29sIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjYW5jZWxDdXJy
ZW50RmxpbmcoKQogICAgIHJldHVybiBoYWRGbGluZ0FuaW1hdGlvbjsKIH0KIAotdm9pZCBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmIGluY3Jl
bWVudCkKK3ZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5KGNvbnN0
IEZsb2F0UG9pbnQmIGluY3JlbWVudCkKIHsKLSAgICBpZiAoaW5jcmVtZW50ID09IEludFBvaW50
Ojp6ZXJvKCkpCisgICAgaWYgKGluY3JlbWVudCA9PSBGbG9hdFBvaW50Ojp6ZXJvKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFRSQUNFX0VWRU5UMigiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGw6OnNjcm9sbEJ5IiwgIngiLCBpbmNyZW1lbnQueCgpLCAieSIsIGluY3JlbWVu
dC55KCkpOwpAQCAtMjkzLDggKzI5Myw4IEBAIHZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGw6OnNjcm9sbEJ5KGNvbnN0IEludFBvaW50JiBpbmNyZW1lbnQpCiAgICAgV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gZGlzcG9zaXRpb24gPSBoYW5k
bGVJbnB1dEV2ZW50SW50ZXJuYWwoc3ludGhldGljV2hlZWwpOwogICAgIHN3aXRjaCAoZGlzcG9z
aXRpb24pIHsKICAgICBjYXNlIERpZEhhbmRsZToKLSAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1l
dGVycy5jdW11bGF0aXZlU2Nyb2xsLndpZHRoICs9IGluY3JlbWVudC54KCk7Ci0gICAgICAgIG1f
d2hlZWxGbGluZ1BhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbC5oZWlnaHQgKz0gaW5jcmVtZW50
LnkoKTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsLngg
Kz0gaW5jcmVtZW50LngoKTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11bGF0
aXZlU2Nyb2xsLnkgKz0gaW5jcmVtZW50LnkoKTsKICAgICBjYXNlIERyb3BFdmVudDoKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBEaWROb3RIYW5kbGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaAppbmRl
eCBmYTgxZGU5NDUyN2NhZDllMmNhYWNiZDVhOWQ0YTg3M2IzOTZjZWYxLi5kYmY0MjUzYTcyMzc3
MDIzMDMzYzJkZDc2MTUwNTJiNjQ4MzJhMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgKQEAgLTY1
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBtb25v
dG9uaWNUaW1lKTsKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0
IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50Jik7CiAKICAgICBpbnQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
aW5kZXggZjZmOWZjNmZhN2MxMjQ4MGFkNDA2Y2U1YTg5OTVlYTYzZDRjM2M5MC4uZDBhMjE2YzBk
Y2Q4OTJhYjFhNDIzOGU4ZjA2ZTM5MTA0MjBlNDUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNjQxLDcgKzY0MSw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6OmhhbmRsZU1vdXNlVXAoRnJhbWUmIG1haW5GcmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYg
ZXZlbnQpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2Nyb2xsQnkoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGRlbHRhKQordm9pZCBXZWJWaWV3SW1wbDo6c2Nyb2xsQnkoY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgZGVsdGEpCiB7CiAgICAgV2ViTW91c2VXaGVlbEV2ZW50IHN5
bnRoZXRpY1doZWVsOwogICAgIGNvbnN0IGZsb2F0IHRpY2tEaXZpc29yID0gV2ViQ29yZTo6V2hl
ZWxFdmVudDo6dGlja011bHRpcGxpZXI7CkBAIC03OTksNyArNzk5LDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdo
ZWVsRmxpbmdQYXIKICAgICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gcGFyYW1ldGVycy5wb2ludDsK
ICAgICBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gcGFyYW1ldGVycy5nbG9iYWxQb2ludDsK
ICAgICBtX2ZsaW5nTW9kaWZpZXIgPSBwYXJhbWV0ZXJzLm1vZGlmaWVyczsKLSAgICBPd25QdHI8
UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlID0gUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
OjpnZXQoKS0+Y3JlYXRlQ3VydmUocGFyYW1ldGVycy5zb3VyY2VEZXZpY2UsIHBhcmFtZXRlcnMu
ZGVsdGEsIEludFBvaW50KHBhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbCkpOworICAgIE93blB0
cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUgPSBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rv
cnk6OmdldCgpLT5jcmVhdGVDdXJ2ZShwYXJhbWV0ZXJzLnNvdXJjZURldmljZSwgcGFyYW1ldGVy
cy5kZWx0YSwgcGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsKTsKICAgICBtX2dlc3R1cmVBbmlt
YXRpb24gPSBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShjdXJ2ZS5yZWxl
YXNlKCksIHRoaXMsIHBhcmFtZXRlcnMuc3RhcnRUaW1lKTsKICAgICBzY2hlZHVsZUFuaW1hdGlv
bigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMDJh
MWU1MzcwNDBiNjgwMDc2OGZjMWJlOTFjM2ZhYjZmMDZmZWM1Mi4uODE3NTZlYWNkMWU4NmI1NGIx
YTc2NjkxYTIzYmY5OTM2OTJiMjYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCkBAIC00MDUsNyArNDA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFzVG91Y2hF
dmVudEhhbmRsZXJzKGJvb2wpOwogCiAgICAgLy8gUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQg
aW1wbGVtZW50YXRpb24gZm9yIHdoZWVsIGZsaW5nLgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxC
eShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAKICAgICAvLyBIYW5kbGVzIGNvbnRleHQgbWVu
dSBldmVudHMgb3JpZ25hdGVkIHZpYSB0aGUgdGhlIGtleWJvYXJkLiBUaGVzZQogICAgIC8vIGlu
Y2x1ZGUgdGhlIFZLX0FQUFMgdmlydHVhbCBrZXkgYW5kIHRoZSBTaGlmdCtGMTAgY29tYmluZS4g
Q29kZSBpcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173214</attachid>
            <date>2012-11-08 23:14:48 -0800</date>
            <delta_ts>2012-11-11 23:33:07 -0800</delta_ts>
            <desc>Add support for fractional scroll events</desc>
            <filename>bug-101563-20121109151256.patch</filename>
            <type>text/plain</type>
            <size>20142</size>
            <attacher name="Tai-Hsu Lin">sheckylin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzYTNmODVhZGFmZTcy
MTA4Y2NiMGFmYzQ2OWUwYjBkNGVmMjg5Y2QzLi5kMjQ4MDNjMGRlOTNlOWYyODBmY2Y3MWI0ODg5
NTlkYjBlZDgwZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0wOCAg
VGFpLUhzdSBMaW4gIDxzaGVja3lsaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBmcmFjdGlvbmFsIHNjcm9sbCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB2YXJpb3VzIHNjcm9sbCBldmVudCBkYXRh
IHR5cGVzIGZyb20gaW50ZWdlcnMgdG8gZmxvYXRpbmctcG9pbnRzLiBUaGlzIGFsbG93cyBtb3Jl
IHByZWNpc2Ugc2Nyb2xsaW5nIGFuZCBwcm92aWRlcyBtb3JlIGZyZWVkb20gdG8gdGhlIFdlYktp
dCB1c2Vycy4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJDbGll
bnQuaDoKKwogMjAxMi0xMS0wNyAgWXVzdWYgT3p1eXNhbCAgPHl1c3Vmb0Bnb29nbGUuY29tPgog
CiAgICAgICAgIEFkZCBBUEkgZm9yIHRvdWNoRXZlbnRIYW5kbGVyUmVnaW9uIHRvIFdlYkxheWVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMzYxN2NmOWM5ZDdiMWUzY2EyNTNkZTExMGZlM2JjMjBjNGUwNjczZi4u
Zjk2N2RjYzkwYmU1MzM5NzNiNDNhZDIzY2Q1MDkzOTU0OGRjMDU1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM0IEBACisyMDEyLTExLTA4ICBUYWktSHN1IExpbiAgPHNoZWNreWxpbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGZyYWN0aW9uYWwgc2Nyb2xsIGV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IHZhcmlvdXMgc2Nyb2xsIGV2ZW50IGRhdGEgdHlwZXMgZnJvbSBpbnRlZ2VycyB0byBmbG9hdGlu
Zy1wb2ludHMuIFRoaXMgYWxsb3dzIG1vcmUgcHJlY2lzZSBzY3JvbGxpbmcgYW5kIHByb3ZpZGVz
IG1vcmUgZnJlZWRvbSB0byB0aGUgV2ViS2l0IHVzZXJzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJn
ZXQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaDoKKyAgICAgICAgKFNjcm9sbEFuaW1hdG9yTm9u
ZSk6CisgICAgICAgICogcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3Jl
YXRlRm9yVG91Y2hQYWQpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlOjpjcmVhdGVGb3JUb3VjaFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6
OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmUuaDoKKyAgICAgICAgKFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmNyZWF0
ZUN1cnZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2Vz
dHVyZUN1cnZlRmFjdG9yeS5oOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
KToKKwogMjAxMi0xMS0wNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xlIGVycm9yIGFmdGVyIGluc3BlY3Rpbmcg
SW5kZXhlZERCCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQxN2JjY2MyYzljZDJkZTgz
N2IyOTg2N2RmZTJhZDkwNDMwMjRjZTguLjdiZGU1MWQ2NjhhNGVhNTdhZGUzMTk5NGYzM2Y4NGYy
YzFhMzUyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MTItMTEtMDggIFRhaS1Ic3UgTGluICA8c2hlY2t5bGluQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgZnJhY3Rpb25hbCBzY3JvbGwgZXZlbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1NjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdmFyaW91cyBzY3JvbGwg
ZXZlbnQgZGF0YSB0eXBlcyBmcm9tIGludGVnZXJzIHRvIGZsb2F0aW5nLXBvaW50cy4gVGhpcyBh
bGxvd3MgbW9yZSBwcmVjaXNlIHNjcm9sbGluZyBhbmQgcHJvdmlkZXMgbW9yZSBmcmVlZG9tIHRv
IHRoZSBXZWJLaXQgdXNlcnMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToK
KyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVu
dEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuaDoKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Ny
b2xsQnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVl
bEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAg
KFdlYlZpZXdJbXBsKToKKwogMjAxMi0wOC0yMCAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRHJvcCBkaW1tZWQgY3J1bWIgaGFuZGxp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRI
YW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklucHV0
SGFuZGxlckNsaWVudC5oCmluZGV4IDFiZWYyMDVjNGViNDUxNGNhNThmNmQzMjM5MDI0MjhmNjIz
MWMyNDMuLjE1MTBiYTMyM2VmNWFiYmU1YmRlOWNhODQ0ZmQyMDQ5OWMxMWUwODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRIYW5kbGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJD
bGllbnQuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBXZWJJbnB1dEhhbmRsZXJDbGllbnRf
aAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRmxvYXRQb2ludC5oIgog
I2luY2x1ZGUgIldlYlBvaW50LmgiCiAjaW5jbHVkZSAiV2ViU2l6ZS5oIgogCkBAIC01Myw3ICs1
NCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGVyZSBpcyBubyByb29tIHRvIG1vdmUgdGhlIGxheWVy
IGluIHRoZSByZXF1ZXN0ZWQgZGlyZWN0aW9uLCBpdHMgZmlyc3QKICAgICAvLyBhbmNlc3RvciBs
YXllciB0aGF0IGNhbiBiZSBzY3JvbGxlZCB3aWxsIGJlIG1vdmVkIGluc3RlYWQuIFNob3VsZCBv
bmx5IGJlCiAgICAgLy8gY2FsbGVkIGlmIHNjcm9sbEJlZ2luKCkgcmV0dXJuZWQgU2Nyb2xsU3Rh
cnRlZC4KLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoV2ViUG9pbnQsIFdlYlNpemUpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoV2ViUG9pbnQsIFdlYkZsb2F0UG9pbnQpID0gMDsK
IAogICAgIC8vIFN0b3Agc2Nyb2xsaW5nIHRoZSBzZWxlY3RlZCBsYXllci4gU2hvdWxkIG9ubHkg
YmUgY2FsbGVkIGlmIHNjcm9sbEJlZ2luKCkKICAgICAvLyByZXR1cm5lZCBTY3JvbGxTdGFydGVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZl
VGFyZ2V0LmgKaW5kZXggYjI4YjI5MmMxOGRmMDQ4ZTNjMzBhMWRmNDk1MzA0MmZiZWMzMDQ0OS4u
MTY1YzcyNmVlYmU5ZmNjMDNhZmJmM2UzMjY0MDU2MTg0ZmI4ZTE3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oCkBAIC0y
NywxMSArMjcsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnRQb2ludDsK
K2NsYXNzIEZsb2F0UG9pbnQ7CiAKIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IHsK
IHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEZsb2F0UG9pbnQmKSA9IDA7CiAgICAg
Ly8gRklYTUU6IGFkZCBpbnRlcmZhY2VzIGZvciBzY3JvbGwoKSwgZXRjLgogCiBwcm90ZWN0ZWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAppbmRl
eCAwNGYyNmQyN2JlMGU5ODM1MjQzOGNmNDhiMWJjZGU2N2Q4MGI1ODM2Li41ZGE5ZmU4NGViNDU1
MTIwNDc1Y2QyNjg5NzUwZDc1OGUxOGExZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKQEAgLTY0MCw3ICs2NDAsNyBAQCB2b2lkIFNjcm9s
bEFuaW1hdG9yTm9uZTo6c3RvcEFuaW1hdGlvblRpbWVySWZOZWVkZWQoKQogI2VuZGlmCiB9CiAK
LXZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxCeShjb25zdCBJbnRQb2ludCYgbG9jYXRp
b24pCit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c2Nyb2xsQnkoY29uc3QgRmxvYXRQb2ludCYg
bG9jYXRpb24pCiB7CiAgICAgbV9jdXJyZW50UG9zWCArPSBsb2NhdGlvbi54KCk7CiAgICAgbV9j
dXJyZW50UG9zWSArPSBsb2NhdGlvbi55KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yTm9uZS5oCmluZGV4IDg2N2RmOTc0MWY3MjhjZDM5NGViNjhlNmRmZmZkYTIz
MGZhOGU4YzAuLmVkZTlkMWY0MTg3OTE4M2IyM2U4MGE4MzcyMWI1ZTI5Nzc4Yjg1YzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oCkBAIC05OCw3ICs5
OCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgLy8gUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJn
ZXQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFBv
aW50Jik7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEZsb2F0UG9pbnQmKTsKIAog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25XaWxsU3RhcnQoKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmUuY3BwCmluZGV4IGVkMzdjZjFkOTEyZTc4YmEyODJmZGZjNWZkYzNmNzdkYzU0
YTMzNWQuLjUxMDAzMWMyYTVkYzBlNjQ3N2NiMWRjNGFhYzBkMWI0MDQ4Y2ZkMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlLmNwcApAQCAtNTMsMTkgKzUzLDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAK
IHN0YXRpYyBjb25zdCBpbnQgY01heFNlYXJjaEl0ZXJhdGlvbnMgPSAyMDsKIAotUGFzc093blB0
cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpj
cmVhdGVGb3JUb3VjaFBhZChjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgSW50UG9pbnQgY3Vt
dWxhdGl2ZVNjcm9sbCkKK1Bhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlRm9yVG91Y2hQYWQoY29uc3QgRmxvYXRQb2lu
dCYgdmVsb2NpdHksIEZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKIHsKICAgICAvLyBUaGUg
ZGVmYXVsdCBwYXJhbWV0ZXJzIGxpc3RlZCBiZWxvdyBhcmUgYSBtYXRjaGVkIHNldCwgYW5kIHNo
b3VsZCBub3QgYmUgY2hhbmdlZCBpbmRlcGVuZGVudGx5IG9mIG9uZSBhbm90aGVyLgogICAgIHJl
dHVybiBjcmVhdGUodmVsb2NpdHksIC01LjcwNzYyZSswMywgMS43MmUrMDIsIDMuN2UrMDAsIDEu
MywgY3VtdWxhdGl2ZVNjcm9sbCk7CiB9CiAKLVBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3Vy
dmU+IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlRm9yVG91Y2hTY3JlZW4o
Y29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIEludFBvaW50IGN1bXVsYXRpdmVTY3JvbGwpCitQ
YXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmU6OmNyZWF0ZUZvclRvdWNoU2NyZWVuKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBG
bG9hdFBvaW50IGN1bXVsYXRpdmVTY3JvbGwpCiB7CiAgICAgLy8gVGhlIHRvdWNoc2NyZWVuLXNw
ZWNpZmljIHBhcmFtZXRlcnMgbGlzdGVkIGJlbG93IGFyZSBhIG1hdGNoZWQgc2V0LCBhbmQgc2hv
dWxkIG5vdCBiZSBjaGFuZ2VkIGluZGVwZW5kZW50bHkgb2Ygb25lIGFub3RoZXIuCiAgICAgcmV0
dXJuIGNyZWF0ZSh2ZWxvY2l0eSwgLTUuNzA3NjJlKzAzLCAxLjcyZSswMiwgMy43ZSswMCwgMS4z
LCBjdW11bGF0aXZlU2Nyb2xsKTsKIH0KIAotUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZT4gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2lu
dCYgdmVsb2NpdHksIGZsb2F0IHAwLCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVy
YXRpb24sIEludFBvaW50IGN1bXVsYXRpdmVTY3JvbGwpCitQYXNzT3duUHRyPFBsYXRmb3JtR2Vz
dHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShjb25zdCBG
bG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAxLCBmbG9hdCBwMiwgZmxvYXQg
Y3VydmVEdXJhdGlvbiwgRmxvYXRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQogewogICAgIHJldHVy
biBhZG9wdFB0cihuZXcgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKHZlbG9jaXR5LCBw
MCwgcDEsIHAyLCBjdXJ2ZUR1cmF0aW9uLCBjdW11bGF0aXZlU2Nyb2xsKSk7CiB9CkBAIC04MCw3
ICs4MCw3IEBAIGlubGluZSBkb3VibGUgdmVsb2NpdHkoZG91YmxlIHQsIGZsb2F0KiBwKQogICAg
IHJldHVybiAtcFswXSAqIHBbMl0gKiBleHAoLXBbMl0gKiB0KSAtIHBbMV07CiB9CiAKLVRvdWNo
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxWZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAxLCBm
bG9hdCBwMiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgY29uc3QgSW50UG9pbnQmIGN1bXVsYXRpdmVT
Y3JvbGwpCitUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsVmVsb2NpdHksIGZsb2F0IHAw
LCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIGN1bXVsYXRpdmVTY3JvbGwpCiAgICAgOiBtX2N1bXVsYXRpdmVTY3JvbGwoY3VtdWxhdGl2
ZVNjcm9sbCkKICAgICAsIG1fY3VydmVEdXJhdGlvbihjdXJ2ZUR1cmF0aW9uKQogewpAQCAtMTQ3
LDExICsxNDcsMTEgQEAgYm9vbCBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5
KGRvdWJsZSB0aW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmcKICAgICAgICAgZGlzcGxhY2Vt
ZW50ID0gcG9zaXRpb24obV9jdXJ2ZUR1cmF0aW9uLCBtX2NvZWZmaWNpZW50cykgLSBtX3Bvc2l0
aW9uT2Zmc2V0OwogCiAgICAgLy8gS2VlcCB0cmFjayBvZiBpbnRlZ2VyIHBvcnRpb24gb2Ygc2Ny
b2xsIHRodXMgZmFyLCBhbmQgcHJlcGFyZSBpbmNyZW1lbnQuCi0gICAgSW50UG9pbnQgc2Nyb2xs
KGRpc3BsYWNlbWVudCAqIG1fZGlzcGxhY2VtZW50UmF0aW8ueCgpLCBkaXNwbGFjZW1lbnQgKiBt
X2Rpc3BsYWNlbWVudFJhdGlvLnkoKSk7Ci0gICAgSW50UG9pbnQgc2Nyb2xsSW5jcmVtZW50KHNj
cm9sbCAtIG1fY3VtdWxhdGl2ZVNjcm9sbCk7CisgICAgRmxvYXRQb2ludCBzY3JvbGwoZGlzcGxh
Y2VtZW50ICogbV9kaXNwbGFjZW1lbnRSYXRpby54KCksIGRpc3BsYWNlbWVudCAqIG1fZGlzcGxh
Y2VtZW50UmF0aW8ueSgpKTsKKyAgICBGbG9hdFBvaW50IHNjcm9sbEluY3JlbWVudChzY3JvbGwg
LSBtX2N1bXVsYXRpdmVTY3JvbGwpOwogICAgIG1fY3VtdWxhdGl2ZVNjcm9sbCA9IHNjcm9sbDsK
IAotICAgIGlmICh0aW1lICsgbV90aW1lT2Zmc2V0IDwgbV9jdXJ2ZUR1cmF0aW9uIHx8IHNjcm9s
bEluY3JlbWVudCAhPSBJbnRQb2ludDo6emVybygpKSB7CisgICAgaWYgKHRpbWUgKyBtX3RpbWVP
ZmZzZXQgPCBtX2N1cnZlRHVyYXRpb24gfHwgc2Nyb2xsSW5jcmVtZW50ICE9IEZsb2F0UG9pbnQ6
Onplcm8oKSkgewogICAgICAgICB0YXJnZXQtPnNjcm9sbEJ5KHNjcm9sbEluY3JlbWVudCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKaW5kZXggZjIzOGE3MTdk
MjE5YzkwZTM2MWMzMDI2ZjkzN2Q2OWUwNjI0NjFiYS4uN2NiZTQ1MjQ0ZmFjNzhlNzliOWJhYWFi
M2E5MWQ0NjYwZDVkZTdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91
Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKQEAgLTQwLDE5ICs0MCwxOSBAQCBj
bGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldDsKIC8vIHRoZSBpbml0aWFsIHZlbG9jaXR5
LgogY2xhc3MgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlICA6IHB1YmxpYyBQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1H
ZXN0dXJlQ3VydmU+IGNyZWF0ZUZvclRvdWNoUGFkKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5
LCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsID0gSW50UG9pbnQoKSk7Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUZvclRvdWNoU2NyZWVuKGNvbnN0
IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsID0gSW50UG9p
bnQoKSk7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0
ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAxLCBmbG9hdCBw
MiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCA9IEludFBv
aW50KCkpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVh
dGVGb3JUb3VjaFBhZChjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgRmxvYXRQb2ludCBjdW11
bGF0aXZlU2Nyb2xsID0gRmxvYXRQb2ludCgpKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlRm9yVG91Y2hTY3JlZW4oY29uc3QgRmxvYXRQb2ludCYg
dmVsb2NpdHksIEZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCA9IEZsb2F0UG9pbnQoKSk7Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZShjb25zdCBG
bG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAxLCBmbG9hdCBwMiwgZmxvYXQg
Y3VydmVEdXJhdGlvbiwgRmxvYXRQb2ludCBjdW11bGF0aXZlU2Nyb2xsID0gRmxvYXRQb2ludCgp
KTsKICAgICB2aXJ0dWFsIH5Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoKTsKIAogICAg
IHZpcnR1YWwgY29uc3QgY2hhciogZGVidWdOYW1lKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIGFwcGx5KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZVRhcmdldCopIE9WRVJSSURFOwogCiBwcml2YXRlOgotICAgIFRvdWNoRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAx
LCBmbG9hdCBwMiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgY29uc3QgSW50UG9pbnQmIGN1bXVsYXRp
dmVTY3JvbGwpOworICAgIFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9h
dFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAxLCBmbG9hdCBwMiwgZmxvYXQgY3Vy
dmVEdXJhdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgY3VtdWxhdGl2ZVNjcm9sbCk7CiAKICAgICBG
bG9hdFBvaW50IG1fZGlzcGxhY2VtZW50UmF0aW87Ci0gICAgSW50UG9pbnQgbV9jdW11bGF0aXZl
U2Nyb2xsOworICAgIEZsb2F0UG9pbnQgbV9jdW11bGF0aXZlU2Nyb2xsOwogICAgIGZsb2F0IG1f
Y29lZmZpY2llbnRzWzNdOwogICAgIGZsb2F0IG1fdGltZU9mZnNldDsKICAgICBmbG9hdCBtX2N1
cnZlRHVyYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5j
cHAKaW5kZXggMjAzZjM5Y2U5OWY0MjU4YjRhZjA2ZGM1NDFjOGFlOGEyMDQ3YWM0My4uMjExZDA2
MDA4NDQwZjNjZjE1YzY1ZDlmMDQyOTJkYmIzMTk3MWJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rv
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxh
dGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcApAQCAtNDEsNyArNDEsNyBAQCBQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZUZhY3RvcnkqIFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeTo6Z2V0KCkKICAg
ICByZXR1cm4gJmZhY3Rvcnk7CiB9CiAKLVBhc3NPd25QdHI8V2ViQ29yZTo6UGxhdGZvcm1HZXN0
dXJlQ3VydmU+IFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeTo6Y3JlYXRlQ3VydmUoaW50IGRl
dmljZVNvdXJjZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9pbnQsIFdlYkNvcmU6Oklu
dFBvaW50IGN1bXVsYXRpdmVTY3JvbGwpCitQYXNzT3duUHRyPFdlYkNvcmU6OlBsYXRmb3JtR2Vz
dHVyZUN1cnZlPiBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmNyZWF0ZUN1cnZlKGludCBk
ZXZpY2VTb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50LCBXZWJDb3JlOjpG
bG9hdFBvaW50IGN1bXVsYXRpdmVTY3JvbGwpCiB7CiAgICAgT3duUHRyPFdlYkZsaW5nQW5pbWF0
b3I+IGZsaW5nQW5pbWF0b3IgPSBtX21vY2tGbGluZ0FuaW1hdG9yLnJlbGVhc2UoKTsKICAgICBp
ZiAoIWZsaW5nQW5pbWF0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rv
cnkuaAppbmRleCAxYWIzYmY0NDFhOTM1OTNiNzQ0YmRiMmMwNTIyNTQ1NDg0YWNiYTNlLi5lY2M4
Njk1YmJjN2U4MTI2MzQ0ZWFkMDI0ZDVkYTk4Y2UwNWU4ZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFj
dG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxh
dGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgUGxhdGZv
cm1HZXN0dXJlQ3VydmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGxhdGZvcm1HZXN0
dXJlQ3VydmVGYWN0b3J5KiBnZXQoKTsKIAotICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6UGxhdGZv
cm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUN1cnZlKGludCBkZXZpY2VTb3VyY2UsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsID0gV2Vi
Q29yZTo6SW50UG9pbnQoKSk7CisgICAgUGFzc093blB0cjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZT4gY3JlYXRlQ3VydmUoaW50IGRldmljZVNvdXJjZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYsIFdlYkNvcmU6OkZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCA9IFdlYkNvcmU6
OkZsb2F0UG9pbnQoKSk7CiAgICAgdm9pZCBzZXRXZWJGbGluZ0FuaW1hdG9yRm9yVGVzdChQYXNz
T3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVycy5oCmluZGV4IDIxMzNlODUwODQwOTBjYzcyNjlmNzZmODgzODZhZDFjM2JiOWRmODguLmVj
MzlhZWI0YTkwNmUzOGEzNzlkNTgyYTEzZTU2YTQ2OGRlYzBiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnMuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgV2ViQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnMgewogICAgIFdlYlBvaW50IGdsb2JhbFBvaW50OwogICAgIGludCBtb2RpZmllcnM7
CiAgICAgV2ViR2VzdHVyZUV2ZW50OjpTb3VyY2VEZXZpY2Ugc291cmNlRGV2aWNlOwotICAgIFdl
YlNpemUgY3VtdWxhdGl2ZVNjcm9sbDsKKyAgICBXZWJGbG9hdFBvaW50IGN1bXVsYXRpdmVTY3Jv
bGw7CiAgICAgZG91YmxlIHN0YXJ0VGltZTsKIAogICAgIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJh
bWV0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAppbmRleCA4N2Q3YjI1MjJlOWM2OTZiMmE1
YjFkYjNjYmExYjQ4Njg0ZGIyZjc1Li5hMTJjYWYwMjEyZThhYTZmM2MzOTdmYjczOTBjNzNlOTFl
MjM1NjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGw6OmgKICAgICAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMpIHsKICAg
ICAgICAgY2FzZSBXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c1N0YXJ0ZWQ6IHsK
ICAgICAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQyKCJjYyIsICJXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXQgd2hlZWwgc2Nyb2xsIiwgImRlbHRhWCIsIC13aGVl
bEV2ZW50LmRlbHRhWCwgImRlbHRhWSIsIC13aGVlbEV2ZW50LmRlbHRhWSk7Ci0gICAgICAgICAg
ICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQnkoV2ViUG9pbnQod2hlZWxFdmVudC54LCB3
aGVlbEV2ZW50LnkpLCBJbnRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCwgLXdoZWVsRXZlbnQuZGVs
dGFZKSk7CisgICAgICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQnkoV2ViUG9p
bnQod2hlZWxFdmVudC54LCB3aGVlbEV2ZW50LnkpLCBXZWJGbG9hdFBvaW50KC13aGVlbEV2ZW50
LmRlbHRhWCwgLXdoZWVsRXZlbnQuZGVsdGFZKSk7CiAgICAgICAgICAgICBtX2lucHV0SGFuZGxl
ckNsaWVudC0+c2Nyb2xsRW5kKCk7CiAgICAgICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwogICAg
ICAgICB9CkBAIC0xNTUsNyArMTU1LDcgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6
OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgKIAogICAg
ICAgICBjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCA9ICpzdGF0aWNfY2FzdDxj
b25zdCBXZWJHZXN0dXJlRXZlbnQqPigmZXZlbnQpOwogICAgICAgICBtX2lucHV0SGFuZGxlckNs
aWVudC0+c2Nyb2xsQnkoV2ViUG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KSwK
LSAgICAgICAgICAgIEludFNpemUoLWdlc3R1cmVFdmVudC5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0
YVgsIC1nZXN0dXJlRXZlbnQuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZKSk7CisgICAgICAgICAg
ICBXZWJGbG9hdFBvaW50KC1nZXN0dXJlRXZlbnQuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFYLCAt
Z2VzdHVyZUV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSkpOwogICAgICAgICByZXR1cm4g
RGlkSGFuZGxlOwogICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlU2Nyb2xsRW5kKSB7CiAgICAgICAgIEFTU0VSVChtX2V4cGVjdFNjcm9sbFVwZGF0ZUVu
ZCk7CkBAIC0yNzMsOSArMjczLDkgQEAgYm9vbCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bDo6Y2FuY2VsQ3VycmVudEZsaW5nKCkKICAgICByZXR1cm4gaGFkRmxpbmdBbmltYXRpb247CiB9
CiAKLXZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5KGNvbnN0IElu
dFBvaW50JiBpbmNyZW1lbnQpCit2b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpz
Y3JvbGxCeShjb25zdCBGbG9hdFBvaW50JiBpbmNyZW1lbnQpCiB7Ci0gICAgaWYgKGluY3JlbWVu
dCA9PSBJbnRQb2ludDo6emVybygpKQorICAgIGlmIChpbmNyZW1lbnQgPT0gRmxvYXRQb2ludDo6
emVybygpKQogICAgICAgICByZXR1cm47CiAKICAgICBUUkFDRV9FVkVOVDIoImNjIiwgIldlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSIsICJ4IiwgaW5jcmVtZW50LngoKSwg
InkiLCBpbmNyZW1lbnQueSgpKTsKQEAgLTI5Myw4ICsyOTMsOCBAQCB2b2lkIFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeShjb25zdCBJbnRQb2ludCYgaW5jcmVtZW50KQog
ICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIGRpc3Bv
c2l0aW9uID0gaGFuZGxlSW5wdXRFdmVudEludGVybmFsKHN5bnRoZXRpY1doZWVsKTsKICAgICBz
d2l0Y2ggKGRpc3Bvc2l0aW9uKSB7CiAgICAgY2FzZSBEaWRIYW5kbGU6Ci0gICAgICAgIG1fd2hl
ZWxGbGluZ1BhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbC53aWR0aCArPSBpbmNyZW1lbnQueCgp
OwotICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwuaGVpZ2h0
ICs9IGluY3JlbWVudC55KCk7CisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuY3VtdWxh
dGl2ZVNjcm9sbC54ICs9IGluY3JlbWVudC54KCk7CisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFt
ZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbC55ICs9IGluY3JlbWVudC55KCk7CiAgICAgY2FzZSBEcm9w
RXZlbnQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGlkTm90SGFuZGxlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsLmgKaW5kZXggZmE4MWRlOTQ1MjdjYWQ5ZTJjYWFjYmQ1YTlkNGE4NzNiMzk2Y2VmMS4u
ZGJmNDI1M2E3MjM3NzAyMzAzM2MyZGQ3NjE1MDUyYjY0ODMyYTA0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0
ZShkb3VibGUgbW9ub3RvbmljVGltZSk7CiAKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZVRhcmdldCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnko
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogCiAgICAgaW50IGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCmluZGV4IGY2ZjlmYzZmYTdjMTI0ODBhZDQwNmNlNWE4OTk1ZWE2M2Q0YzNj
OTAuLmQwYTIxNmMwZGNkODkyYWIxYTQyMzhlOGYwNmUzOTEwNDIwZTQ1MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTY0MSw3ICs2NDEsNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZVVwKEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdl
Yk1vdXNlRXZlbnQmIGV2ZW50KQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNjcm9s
bEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZWx0YSkKK3ZvaWQgV2ViVmlld0ltcGw6OnNj
cm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGRlbHRhKQogewogICAgIFdlYk1vdXNl
V2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9
IFdlYkNvcmU6OldoZWVsRXZlbnQ6OnRpY2tNdWx0aXBsaWVyOwpAQCAtNzk5LDcgKzc5OSw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25z
dCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyCiAgICAgbV9sYXN0V2hlZWxQb3NpdGlvbiA9IHBhcmFt
ZXRlcnMucG9pbnQ7CiAgICAgbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbiA9IHBhcmFtZXRlcnMu
Z2xvYmFsUG9pbnQ7CiAgICAgbV9mbGluZ01vZGlmaWVyID0gcGFyYW1ldGVycy5tb2RpZmllcnM7
Ci0gICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjdXJ2ZSA9IFBsYXRmb3JtR2VzdHVy
ZUN1cnZlRmFjdG9yeTo6Z2V0KCktPmNyZWF0ZUN1cnZlKHBhcmFtZXRlcnMuc291cmNlRGV2aWNl
LCBwYXJhbWV0ZXJzLmRlbHRhLCBJbnRQb2ludChwYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwp
KTsKKyAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlID0gUGxhdGZvcm1HZXN0
dXJlQ3VydmVGYWN0b3J5OjpnZXQoKS0+Y3JlYXRlQ3VydmUocGFyYW1ldGVycy5zb3VyY2VEZXZp
Y2UsIHBhcmFtZXRlcnMuZGVsdGEsIHBhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbCk7CiAgICAg
bV9nZXN0dXJlQW5pbWF0aW9uID0gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVh
dGUoY3VydmUucmVsZWFzZSgpLCB0aGlzLCBwYXJhbWV0ZXJzLnN0YXJ0VGltZSk7CiAgICAgc2No
ZWR1bGVBbmltYXRpb24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCmluZGV4IDAyYTFlNTM3MDQwYjY4MDA3NjhmYzFiZTkxYzNmYWI2ZjA2ZmVjNTIuLjgxNzU2
ZWFjZDFlODZiNTRiMWE3NjY5MWEyM2JmOTkzNjkyYjI2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNDA1LDcgKzQwNSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGhhc1RvdWNoRXZlbnRIYW5kbGVycyhib29sKTsKIAogICAgIC8vIFBsYXRmb3JtR2VzdHVy
ZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uIGZvciB3aGVlbCBmbGluZy4KLSAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogCiAgICAgLy8gSGFuZGxl
cyBjb250ZXh0IG1lbnUgZXZlbnRzIG9yaWduYXRlZCB2aWEgdGhlIHRoZSBrZXlib2FyZC4gVGhl
c2UKICAgICAvLyBpbmNsdWRlIHRoZSBWS19BUFBTIHZpcnR1YWwga2V5IGFuZCB0aGUgU2hpZnQr
RjEwIGNvbWJpbmUuIENvZGUgaXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173572</attachid>
            <date>2012-11-11 23:33:11 -0800</date>
            <delta_ts>2012-11-12 00:59:50 -0800</delta_ts>
            <desc>Add support for fractional scroll events</desc>
            <filename>bug-101563-20121112153114.patch</filename>
            <type>text/plain</type>
            <size>21096</size>
            <attacher name="Tai-Hsu Lin">sheckylin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzYTNmODVhZGFmZTcy
MTA4Y2NiMGFmYzQ2OWUwYjBkNGVmMjg5Y2QzLi5kMjQ4MDNjMGRlOTNlOWYyODBmY2Y3MWI0ODg5
NTlkYjBlZDgwZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0wOCAg
VGFpLUhzdSBMaW4gIDxzaGVja3lsaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBmcmFjdGlvbmFsIHNjcm9sbCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB2YXJpb3VzIHNjcm9sbCBldmVudCBkYXRh
IHR5cGVzIGZyb20gaW50ZWdlcnMgdG8gZmxvYXRpbmctcG9pbnRzLiBUaGlzIGFsbG93cyBtb3Jl
IHByZWNpc2Ugc2Nyb2xsaW5nIGFuZCBwcm92aWRlcyBtb3JlIGZyZWVkb20gdG8gdGhlIFdlYktp
dCB1c2Vycy4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJDbGll
bnQuaDoKKwogMjAxMi0xMS0wNyAgWXVzdWYgT3p1eXNhbCAgPHl1c3Vmb0Bnb29nbGUuY29tPgog
CiAgICAgICAgIEFkZCBBUEkgZm9yIHRvdWNoRXZlbnRIYW5kbGVyUmVnaW9uIHRvIFdlYkxheWVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMzYxN2NmOWM5ZDdiMWUzY2EyNTNkZTExMGZlM2JjMjBjNGUwNjczZi4u
Zjk2N2RjYzkwYmU1MzM5NzNiNDNhZDIzY2Q1MDkzOTU0OGRjMDU1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM0IEBACisyMDEyLTExLTA4ICBUYWktSHN1IExpbiAgPHNoZWNreWxpbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGZyYWN0aW9uYWwgc2Nyb2xsIGV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IHZhcmlvdXMgc2Nyb2xsIGV2ZW50IGRhdGEgdHlwZXMgZnJvbSBpbnRlZ2VycyB0byBmbG9hdGlu
Zy1wb2ludHMuIFRoaXMgYWxsb3dzIG1vcmUgcHJlY2lzZSBzY3JvbGxpbmcgYW5kIHByb3ZpZGVz
IG1vcmUgZnJlZWRvbSB0byB0aGUgV2ViS2l0IHVzZXJzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJn
ZXQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaDoKKyAgICAgICAgKFNjcm9sbEFuaW1hdG9yTm9u
ZSk6CisgICAgICAgICogcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3Jl
YXRlRm9yVG91Y2hQYWQpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlOjpjcmVhdGVGb3JUb3VjaFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6
OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmUuaDoKKyAgICAgICAgKFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmNyZWF0
ZUN1cnZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2Vz
dHVyZUN1cnZlRmFjdG9yeS5oOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
KToKKwogMjAxMi0xMS0wNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xlIGVycm9yIGFmdGVyIGluc3BlY3Rpbmcg
SW5kZXhlZERCCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQxN2JjY2MyYzljZDJkZTgz
N2IyOTg2N2RmZTJhZDkwNDMwMjRjZTguLjdiZGU1MWQ2NjhhNGVhNTdhZGUzMTk5NGYzM2Y4NGYy
YzFhMzUyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MTItMTEtMDggIFRhaS1Ic3UgTGluICA8c2hlY2t5bGluQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgZnJhY3Rpb25hbCBzY3JvbGwgZXZlbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1NjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdmFyaW91cyBzY3JvbGwg
ZXZlbnQgZGF0YSB0eXBlcyBmcm9tIGludGVnZXJzIHRvIGZsb2F0aW5nLXBvaW50cy4gVGhpcyBh
bGxvd3MgbW9yZSBwcmVjaXNlIHNjcm9sbGluZyBhbmQgcHJvdmlkZXMgbW9yZSBmcmVlZG9tIHRv
IHRoZSBXZWJLaXQgdXNlcnMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToK
KyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVu
dEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuaDoKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Ny
b2xsQnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVl
bEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAg
KFdlYlZpZXdJbXBsKToKKwogMjAxMi0wOC0yMCAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRHJvcCBkaW1tZWQgY3J1bWIgaGFuZGxp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRI
YW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklucHV0
SGFuZGxlckNsaWVudC5oCmluZGV4IDFiZWYyMDVjNGViNDUxNGNhNThmNmQzMjM5MDI0MjhmNjIz
MWMyNDMuLjU0MzdiMDU3M2Y3Y2NjZGVhNzdkN2E5M2NiOTk2YzY4OTJkNmM3MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRIYW5kbGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJD
bGllbnQuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBXZWJJbnB1dEhhbmRsZXJDbGllbnRf
aAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRmxvYXRQb2ludC5oIgog
I2luY2x1ZGUgIldlYlBvaW50LmgiCiAjaW5jbHVkZSAiV2ViU2l6ZS5oIgogCkBAIC01Myw3ICs1
NCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gdGhlcmUgaXMgbm8gcm9vbSB0byBtb3ZlIHRoZSBsYXll
ciBpbiB0aGUgcmVxdWVzdGVkIGRpcmVjdGlvbiwgaXRzIGZpcnN0CiAgICAgLy8gYW5jZXN0b3Ig
bGF5ZXIgdGhhdCBjYW4gYmUgc2Nyb2xsZWQgd2lsbCBiZSBtb3ZlZCBpbnN0ZWFkLiBTaG91bGQg
b25seSBiZQogICAgIC8vIGNhbGxlZCBpZiBzY3JvbGxCZWdpbigpIHJldHVybmVkIFNjcm9sbFN0
YXJ0ZWQuCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5
KFdlYlBvaW50LCBXZWJTaXplKSA9IDA7CisjZWxzZQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxC
eShXZWJQb2ludCwgV2ViRmxvYXRQb2ludCkgPSAwOworI2VuZGlmCiAKICAgICAvLyBTdG9wIHNj
cm9sbGluZyB0aGUgc2VsZWN0ZWQgbGF5ZXIuIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBzY3Jv
bGxCZWdpbigpCiAgICAgLy8gcmV0dXJuZWQgU2Nyb2xsU3RhcnRlZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oCmluZGV4IGIy
OGIyOTJjMThkZjA0OGUzYzMwYTFkZjQ5NTMwNDJmYmVjMzA0NDkuLjM3ZWQxOTJmMGI3NGQxM2Y5
ODQ5ZTVjNWM2NTdmN2M2Y2MwNzkwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaApAQCAtMjcsMTEgKzI3LDE2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEludFBvaW50
OwogCiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCB7CiBwdWJsaWM6CisjaWYgUExB
VEZPUk0oQ0hST01JVU0pCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFBvaW50
JikgPSAwOworI2Vsc2UKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgRmxvYXRQb2lu
dCYpID0gMDsKKyNlbmRpZgogICAgIC8vIEZJWE1FOiBhZGQgaW50ZXJmYWNlcyBmb3Igc2Nyb2xs
KCksIGV0Yy4KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yTm9uZS5jcHAKaW5kZXggMDRmMjZkMjdiZTBlOTgzNTI0MzhjZjQ4YjFiY2RlNjdk
ODBiNTgzNi4uODk1MTE0MzBiMzQ2NWY2ZTdmYTk5OWQxNjdlNDg1ODFkZmYzN2EzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCkBAIC02NDAs
NyArNjQwLDExIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzdG9wQW5pbWF0aW9uVGltZXJJ
Zk5lZWRlZCgpCiAjZW5kaWYKIH0KIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogdm9pZCBTY3Jv
bGxBbmltYXRvck5vbmU6OnNjcm9sbEJ5KGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKKyNlbHNl
Cit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c2Nyb2xsQnkoY29uc3QgRmxvYXRQb2ludCYgbG9j
YXRpb24pCisjZW5kaWYKIHsKICAgICBtX2N1cnJlbnRQb3NYICs9IGxvY2F0aW9uLngoKTsKICAg
ICBtX2N1cnJlbnRQb3NZICs9IGxvY2F0aW9uLnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKaW5kZXggODY3ZGY5NzQxZjcyOGNkMzk0ZWI2OGU2ZGZm
ZmRhMjMwZmE4ZThjMC4uYzQ0NDRjOWQyOWVhMmE4ZGQ1YWU0ODVjNWE3OWQ2YTkzNTE5NGNjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKQEAgLTk4
LDcgKzk4LDExIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgLy8gUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVUYXJnZXQgaW1wbGVtZW50YXRpb24uCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgdmly
dHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFBvaW50Jik7CisjZWxzZQorICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxCeShjb25zdCBGbG9hdFBvaW50Jik7CisjZW5kaWYKIAogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25XaWxsU3RhcnQoKSB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUu
Y3BwCmluZGV4IGVkMzdjZjFkOTEyZTc4YmEyODJmZGZjNWZkYzNmNzdkYzU0YTMzNWQuLjA1NmJl
Mzk3MGZmMTJiMDAxZGNlZGFhY2I3NjhhZmMyMDY4NTRiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNw
cApAQCAtNTMsMTkgKzUzLDMxIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIHN0YXRpYyBjb25z
dCBpbnQgY01heFNlYXJjaEl0ZXJhdGlvbnMgPSAyMDsKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVN
KQogUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlOjpjcmVhdGVGb3JUb3VjaFBhZChjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwg
SW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKKyNlbHNlCitQYXNzT3duUHRyPFBsYXRmb3JtR2Vz
dHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZUZvclRvdWNo
UGFkKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBGbG9hdFBvaW50IGN1bXVsYXRpdmVTY3Jv
bGwpCisjZW5kaWYKIHsKICAgICAvLyBUaGUgZGVmYXVsdCBwYXJhbWV0ZXJzIGxpc3RlZCBiZWxv
dyBhcmUgYSBtYXRjaGVkIHNldCwgYW5kIHNob3VsZCBub3QgYmUgY2hhbmdlZCBpbmRlcGVuZGVu
dGx5IG9mIG9uZSBhbm90aGVyLgogICAgIHJldHVybiBjcmVhdGUodmVsb2NpdHksIC01LjcwNzYy
ZSswMywgMS43MmUrMDIsIDMuN2UrMDAsIDEuMywgY3VtdWxhdGl2ZVNjcm9sbCk7CiB9CiAKKyNp
ZiBQTEFURk9STShDSFJPTUlVTSkKIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRv
dWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlRm9yVG91Y2hTY3JlZW4oY29uc3Qg
RmxvYXRQb2ludCYgdmVsb2NpdHksIEludFBvaW50IGN1bXVsYXRpdmVTY3JvbGwpCisjZWxzZQor
UGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlOjpjcmVhdGVGb3JUb3VjaFNjcmVlbihjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwg
RmxvYXRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQorI2VuZGlmCiB7CiAgICAgLy8gVGhlIHRvdWNo
c2NyZWVuLXNwZWNpZmljIHBhcmFtZXRlcnMgbGlzdGVkIGJlbG93IGFyZSBhIG1hdGNoZWQgc2V0
LCBhbmQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIGluZGVwZW5kZW50bHkgb2Ygb25lIGFub3RoZXIu
CiAgICAgcmV0dXJuIGNyZWF0ZSh2ZWxvY2l0eSwgLTUuNzA3NjJlKzAzLCAxLjcyZSswMiwgMy43
ZSswMCwgMS4zLCBjdW11bGF0aXZlU2Nyb2xsKTsKIH0KIAorI2lmIFBMQVRGT1JNKENIUk9NSVVN
KQogUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHAwLCBm
bG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIEludFBvaW50IGN1bXVsYXRp
dmVTY3JvbGwpCisjZWxzZQorUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2Np
dHksIGZsb2F0IHAwLCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIEZs
b2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKKyNlbmRpZgogewogICAgIHJldHVybiBhZG9wdFB0
cihuZXcgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKHZlbG9jaXR5LCBwMCwgcDEsIHAy
LCBjdXJ2ZUR1cmF0aW9uLCBjdW11bGF0aXZlU2Nyb2xsKSk7CiB9CkBAIC04MCw3ICs5MiwxMSBA
QCBpbmxpbmUgZG91YmxlIHZlbG9jaXR5KGRvdWJsZSB0LCBmbG9hdCogcCkKICAgICByZXR1cm4g
LXBbMF0gKiBwWzJdICogZXhwKC1wWzJdICogdCkgLSBwWzFdOwogfQogCisjaWYgUExBVEZPUk0o
Q0hST01JVU0pCiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsVmVsb2NpdHksIGZsb2F0
IHAwLCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIGNvbnN0IEludFBv
aW50JiBjdW11bGF0aXZlU2Nyb2xsKQorI2Vsc2UKK1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0UG9pbnQmIGlu
aXRpYWxWZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAxLCBmbG9hdCBwMiwgZmxvYXQgY3VydmVE
dXJhdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgY3VtdWxhdGl2ZVNjcm9sbCkKKyNlbmRpZgogICAg
IDogbV9jdW11bGF0aXZlU2Nyb2xsKGN1bXVsYXRpdmVTY3JvbGwpCiAgICAgLCBtX2N1cnZlRHVy
YXRpb24oY3VydmVEdXJhdGlvbikKIHsKQEAgLTE0NywxMSArMTYzLDIwIEBAIGJvb2wgVG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjphcHBseShkb3VibGUgdGltZSwgUGxhdGZvcm1HZXN0
dXJlQ3VydmVUYXJnCiAgICAgICAgIGRpc3BsYWNlbWVudCA9IHBvc2l0aW9uKG1fY3VydmVEdXJh
dGlvbiwgbV9jb2VmZmljaWVudHMpIC0gbV9wb3NpdGlvbk9mZnNldDsKIAogICAgIC8vIEtlZXAg
dHJhY2sgb2YgaW50ZWdlciBwb3J0aW9uIG9mIHNjcm9sbCB0aHVzIGZhciwgYW5kIHByZXBhcmUg
aW5jcmVtZW50LgorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIEludFBvaW50IHNjcm9sbChk
aXNwbGFjZW1lbnQgKiBtX2Rpc3BsYWNlbWVudFJhdGlvLngoKSwgZGlzcGxhY2VtZW50ICogbV9k
aXNwbGFjZW1lbnRSYXRpby55KCkpOwogICAgIEludFBvaW50IHNjcm9sbEluY3JlbWVudChzY3Jv
bGwgLSBtX2N1bXVsYXRpdmVTY3JvbGwpOworI2Vsc2UKKyAgICBGbG9hdFBvaW50IHNjcm9sbChk
aXNwbGFjZW1lbnQgKiBtX2Rpc3BsYWNlbWVudFJhdGlvLngoKSwgZGlzcGxhY2VtZW50ICogbV9k
aXNwbGFjZW1lbnRSYXRpby55KCkpOworICAgIEZsb2F0UG9pbnQgc2Nyb2xsSW5jcmVtZW50KHNj
cm9sbCAtIG1fY3VtdWxhdGl2ZVNjcm9sbCk7CisjZW5kaWYKICAgICBtX2N1bXVsYXRpdmVTY3Jv
bGwgPSBzY3JvbGw7CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICBpZiAodGltZSArIG1f
dGltZU9mZnNldCA8IG1fY3VydmVEdXJhdGlvbiB8fCBzY3JvbGxJbmNyZW1lbnQgIT0gSW50UG9p
bnQ6Onplcm8oKSkgeworI2Vsc2UKKyAgICBpZiAodGltZSArIG1fdGltZU9mZnNldCA8IG1fY3Vy
dmVEdXJhdGlvbiB8fCBzY3JvbGxJbmNyZW1lbnQgIT0gRmxvYXRQb2ludDo6emVybygpKSB7Cisj
ZW5kaWYKICAgICAgICAgdGFyZ2V0LT5zY3JvbGxCeShzY3JvbGxJbmNyZW1lbnQpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCmluZGV4IGYyMzhhNzE3ZDIxOWM5
MGUzNjFjMzAyNmY5MzdkNjllMDYyNDYxYmEuLmM5NWE2ZDcxZjVmMjMwODU2OTY3ODJjOTljMDhj
MTYzY2E3NmE2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rv
dWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCkBAIC00MCwxOSArNDAsMzMgQEAgY2xhc3Mg
UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQ7CiAvLyB0aGUgaW5pdGlhbCB2ZWxvY2l0eS4KIGNs
YXNzIFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSAgOiBwdWJsaWMgUGxhdGZvcm1HZXN0
dXJlQ3VydmUgewogcHVibGljOgorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGVGb3JUb3VjaFBhZChjb25zdCBG
bG9hdFBvaW50JiB2ZWxvY2l0eSwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCA9IEludFBvaW50
KCkpOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGVG
b3JUb3VjaFNjcmVlbihjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgSW50UG9pbnQgY3VtdWxh
dGl2ZVNjcm9sbCA9IEludFBvaW50KCkpOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3Jt
R2VzdHVyZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHAw
LCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIEludFBvaW50IGN1bXVs
YXRpdmVTY3JvbGwgPSBJbnRQb2ludCgpKTsKKyNlbHNlCisgICAgc3RhdGljIFBhc3NPd25QdHI8
UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUZvclRvdWNoUGFkKGNvbnN0IEZsb2F0UG9pbnQm
IHZlbG9jaXR5LCBGbG9hdFBvaW50IGN1bXVsYXRpdmVTY3JvbGwgPSBGbG9hdFBvaW50KCkpOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGVGb3JUb3Vj
aFNjcmVlbihjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgRmxvYXRQb2ludCBjdW11bGF0aXZl
U2Nyb2xsID0gRmxvYXRQb2ludCgpKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBmbG9hdCBwMCwg
ZmxvYXQgcDEsIGZsb2F0IHAyLCBmbG9hdCBjdXJ2ZUR1cmF0aW9uLCBGbG9hdFBvaW50IGN1bXVs
YXRpdmVTY3JvbGwgPSBGbG9hdFBvaW50KCkpOworI2VuZGlmCiAgICAgdmlydHVhbCB+VG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGRl
YnVnTmFtZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBhcHBseShkb3VibGUg
bW9ub3RvbmljVGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKSBPVkVSUklERTsKIAog
cHJpdmF0ZToKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICBUb3VjaEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHAwLCBmbG9hdCBw
MSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIGNvbnN0IEludFBvaW50JiBjdW11bGF0
aXZlU2Nyb2xsKTsKKyNlbHNlCisgICAgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNv
bnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBmbG9hdCBwMCwgZmxvYXQgcDEsIGZsb2F0IHAyLCBm
bG9hdCBjdXJ2ZUR1cmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBjdW11bGF0aXZlU2Nyb2xsKTsK
KyNlbmRpZgogCiAgICAgRmxvYXRQb2ludCBtX2Rpc3BsYWNlbWVudFJhdGlvOworI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQogICAgIEludFBvaW50IG1fY3VtdWxhdGl2ZVNjcm9sbDsKKyNlbHNlCisg
ICAgRmxvYXRQb2ludCBtX2N1bXVsYXRpdmVTY3JvbGw7CisjZW5kaWYKICAgICBmbG9hdCBtX2Nv
ZWZmaWNpZW50c1szXTsKICAgICBmbG9hdCBtX3RpbWVPZmZzZXQ7CiAgICAgZmxvYXQgbV9jdXJ2
ZUR1cmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuY3Bw
CmluZGV4IDIwM2YzOWNlOTlmNDI1OGI0YWYwNmRjNTQxYzhhZThhMjA0N2FjNDMuLjdlYTIzMDcw
YzJiNWEzNjhkN2RhYWQzZGExODFhY2VmYmI5OWU3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRm
b3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHAKQEAgLTQxLDcgKzQxLDExIEBAIFBsYXRmb3JtR2Vz
dHVyZUN1cnZlRmFjdG9yeSogUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5OjpnZXQoKQogICAg
IHJldHVybiAmZmFjdG9yeTsKIH0KIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogUGFzc093blB0
cjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0
b3J5OjpjcmVhdGVDdXJ2ZShpbnQgZGV2aWNlU291cmNlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiBwb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKKyNlbHNlCitQ
YXNzT3duUHRyPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlPiBQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZUZhY3Rvcnk6OmNyZWF0ZUN1cnZlKGludCBkZXZpY2VTb3VyY2UsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmIHBvaW50LCBXZWJDb3JlOjpGbG9hdFBvaW50IGN1bXVsYXRpdmVTY3JvbGwp
CisjZW5kaWYKIHsKICAgICBPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gZmxpbmdBbmltYXRvciA9
IG1fbW9ja0ZsaW5nQW5pbWF0b3IucmVsZWFzZSgpOwogICAgIGlmICghZmxpbmdBbmltYXRvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxh
dGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5oCmluZGV4IDFhYjNiZjQ0
MWE5MzU5M2I3NDRiZGIyYzA1MjI1NDU0ODRhY2JhM2UuLmFhNDIxNWMzNWY1NGE3NWRjMDk5Y2Fi
ZGRhNDFiOTJmZDQ2OTVmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZh
Y3RvcnkuaApAQCAtMzYsNyArMzYsMTEgQEAgY2xhc3MgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0
b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5KiBn
ZXQoKTsKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6
UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUN1cnZlKGludCBkZXZpY2VTb3VyY2UsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xs
ID0gV2ViQ29yZTo6SW50UG9pbnQoKSk7CisjZWxzZQorICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6
UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUN1cnZlKGludCBkZXZpY2VTb3VyY2UsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpGbG9hdFBvaW50IGN1bXVsYXRpdmVTY3Jv
bGwgPSBXZWJDb3JlOjpGbG9hdFBvaW50KCkpOworI2VuZGlmCiAgICAgdm9pZCBzZXRXZWJGbGlu
Z0FuaW1hdG9yRm9yVGVzdChQYXNzT3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+KTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oCmluZGV4IDIxMzNlODUwODQwOTBjYzcyNjlmNzZm
ODgzODZhZDFjM2JiOWRmODguLjVjNGNmNTQxZjY2YmE5ZWVkOGQ1OThhNDk0MDAyZjUwMDE1NWMw
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApAQCAtNDEsNyArNDEsMTEgQEAgc3RydWN0
IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHsKICAgICBXZWJQb2ludCBnbG9iYWxQb2lu
dDsKICAgICBpbnQgbW9kaWZpZXJzOwogICAgIFdlYkdlc3R1cmVFdmVudDo6U291cmNlRGV2aWNl
IHNvdXJjZURldmljZTsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICBXZWJTaXplIGN1bXVs
YXRpdmVTY3JvbGw7CisjZWxzZQorICAgIFdlYkZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbDsK
KyNlbmRpZgogICAgIGRvdWJsZSBzdGFydFRpbWU7CiAKICAgICBXZWJBY3RpdmVXaGVlbEZsaW5n
UGFyYW1ldGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKaW5kZXggODdkN2IyNTIyZTljNjk2
YjJhNWIxZGIzY2JhMWI0ODY4NGRiMmY3NS4uMjhiOTliYThmYjE1MTg5ODk5NzE5ODgwMGY2MTNi
ZjZlNjlhM2Y5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApAQCAtMTE5LDcgKzExOSwxMSBA
QCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogICAgICAgICBzd2l0Y2ggKHNjcm9sbFN0YXR1cykg
ewogICAgICAgICBjYXNlIFdlYklucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzU3RhcnRl
ZDogewogICAgICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoImNjIiwgIldlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVJbnB1dCB3aGVlbCBzY3JvbGwiLCAiZGVsdGFYIiwg
LXdoZWVsRXZlbnQuZGVsdGFYLCAiZGVsdGFZIiwgLXdoZWVsRXZlbnQuZGVsdGFZKTsKKyNpZiBQ
TEFURk9STShDSFJPTUlVTSkKICAgICAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3Jv
bGxCeShXZWJQb2ludCh3aGVlbEV2ZW50LngsIHdoZWVsRXZlbnQueSksIEludFNpemUoLXdoZWVs
RXZlbnQuZGVsdGFYLCAtd2hlZWxFdmVudC5kZWx0YVkpKTsKKyNlbHNlCisgICAgICAgICAgICBt
X2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQnkoV2ViUG9pbnQod2hlZWxFdmVudC54LCB3aGVl
bEV2ZW50LnkpLCBXZWJGbG9hdFBvaW50KC13aGVlbEV2ZW50LmRlbHRhWCwgLXdoZWVsRXZlbnQu
ZGVsdGFZKSk7CisjZW5kaWYKICAgICAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3Jv
bGxFbmQoKTsKICAgICAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgICAgIH0KQEAgLTE1
NSw3ICsxNTksMTEgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9z
aXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgKIAogICAgICAgICBjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0
dXJlRXZlbnQqPigmZXZlbnQpOwogICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xs
QnkoV2ViUG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KSwKKyNpZiBQTEFURk9S
TShDSFJPTUlVTSkKICAgICAgICAgICAgIEludFNpemUoLWdlc3R1cmVFdmVudC5kYXRhLnNjcm9s
bFVwZGF0ZS5kZWx0YVgsIC1nZXN0dXJlRXZlbnQuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZKSk7
CisjZWxzZQorICAgICAgICAgICAgV2ViRmxvYXRQb2ludCgtZ2VzdHVyZUV2ZW50LmRhdGEuc2Ny
b2xsVXBkYXRlLmRlbHRhWCwgLWdlc3R1cmVFdmVudC5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkp
KTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwogICAgIH0gZWxzZSBpZiAoZXZl
bnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kKSB7CiAgICAgICAgIEFT
U0VSVChtX2V4cGVjdFNjcm9sbFVwZGF0ZUVuZCk7CkBAIC0yNzMsOSArMjgxLDE1IEBAIGJvb2wg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmNhbmNlbEN1cnJlbnRGbGluZygpCiAgICAg
cmV0dXJuIGhhZEZsaW5nQW5pbWF0aW9uOwogfQogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiB2
b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeShjb25zdCBJbnRQb2lu
dCYgaW5jcmVtZW50KQogewogICAgIGlmIChpbmNyZW1lbnQgPT0gSW50UG9pbnQ6Onplcm8oKSkK
KyNlbHNlCit2b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeShjb25z
dCBGbG9hdFBvaW50JiBpbmNyZW1lbnQpCit7CisgICAgaWYgKGluY3JlbWVudCA9PSBGbG9hdFBv
aW50Ojp6ZXJvKCkpCisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogCiAgICAgVFJBQ0VfRVZFTlQy
KCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkiLCAieCIsIGlu
Y3JlbWVudC54KCksICJ5IiwgaW5jcmVtZW50LnkoKSk7CkBAIC0yOTMsOCArMzA3LDEzIEBAIHZv
aWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5KGNvbnN0IEludFBvaW50
JiBpbmNyZW1lbnQpCiAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlz
cG9zaXRpb24gZGlzcG9zaXRpb24gPSBoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwoc3ludGhldGlj
V2hlZWwpOwogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKICAgICBjYXNlIERpZEhhbmRsZToK
KyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5j
dW11bGF0aXZlU2Nyb2xsLndpZHRoICs9IGluY3JlbWVudC54KCk7CiAgICAgICAgIG1fd2hlZWxG
bGluZ1BhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbC5oZWlnaHQgKz0gaW5jcmVtZW50LnkoKTsK
KyNlbHNlCisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbC54
ICs9IGluY3JlbWVudC54KCk7CisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuY3VtdWxh
dGl2ZVNjcm9sbC55ICs9IGluY3JlbWVudC55KCk7CisjZW5kaWYKICAgICBjYXNlIERyb3BFdmVu
dDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaWROb3RIYW5kbGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuaAppbmRleCBmYTgxZGU5NDUyN2NhZDllMmNhYWNiZDVhOWQ0YTg3M2IzOTZjZWYxLi4xNzg1
ZDFjNTc2N2YxZDgwOGYyZTQ0N2RmYWU1MzAwZGY4YTc5MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
LmgKQEAgLTY1LDcgKzY1LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShk
b3VibGUgbW9ub3RvbmljVGltZSk7CiAKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZVRhcmdldCBpbXBsZW1lbnRhdGlvbi4KKyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyNlbHNlCisg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKKyNl
bmRpZgogCiAgICAgaW50IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGY2
ZjlmYzZmYTdjMTI0ODBhZDQwNmNlNWE4OTk1ZWE2M2Q0YzNjOTAuLjU3NTg4Mjk1Zjk3YTE2ZWIx
YjU4YzQwZDVkZGY5ZWRhYTc4NzRlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKQEAgLTY0MSw3ICs2NDEsMTEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aGFu
ZGxlTW91c2VVcChGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkK
ICNlbmRpZgogfQogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiB2b2lkIFdlYlZpZXdJbXBsOjpz
Y3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVsdGEpCisjZWxzZQordm9pZCBXZWJW
aWV3SW1wbDo6c2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgZGVsdGEpCisjZW5k
aWYKIHsKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWw7CiAgICAgY29uc3Qg
ZmxvYXQgdGlja0Rpdmlzb3IgPSBXZWJDb3JlOjpXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsK
QEAgLTc5OSw3ICs4MDMsMTEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVl
bEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXIKICAgICBtX2xhc3RX
aGVlbFBvc2l0aW9uID0gcGFyYW1ldGVycy5wb2ludDsKICAgICBtX2xhc3RXaGVlbEdsb2JhbFBv
c2l0aW9uID0gcGFyYW1ldGVycy5nbG9iYWxQb2ludDsKICAgICBtX2ZsaW5nTW9kaWZpZXIgPSBw
YXJhbWV0ZXJzLm1vZGlmaWVyczsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICBPd25QdHI8
UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlID0gUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
OjpnZXQoKS0+Y3JlYXRlQ3VydmUocGFyYW1ldGVycy5zb3VyY2VEZXZpY2UsIHBhcmFtZXRlcnMu
ZGVsdGEsIEludFBvaW50KHBhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbCkpOworI2Vsc2UKKyAg
ICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlID0gUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVGYWN0b3J5OjpnZXQoKS0+Y3JlYXRlQ3VydmUocGFyYW1ldGVycy5zb3VyY2VEZXZpY2UsIHBh
cmFtZXRlcnMuZGVsdGEsIHBhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbCk7CisjZW5kaWYKICAg
ICBtX2dlc3R1cmVBbmltYXRpb24gPSBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNy
ZWF0ZShjdXJ2ZS5yZWxlYXNlKCksIHRoaXMsIHBhcmFtZXRlcnMuc3RhcnRUaW1lKTsKICAgICBz
Y2hlZHVsZUFuaW1hdGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKaW5kZXggMDJhMWU1MzcwNDBiNjgwMDc2OGZjMWJlOTFjM2ZhYjZmMDZmZWM1Mi4uYjNm
YzY1MTJiZmFlY2IwZTBiOTdkYjhlY2E0MThlMDdmNzVjZTdkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC00MDUsNyArNDA1LDExIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGhhc1RvdWNoRXZlbnRIYW5kbGVycyhib29sKTsKIAogICAgIC8vIFBsYXRmb3JtR2Vz
dHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uIGZvciB3aGVlbCBmbGluZy4KKyNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKTsKKyNlbHNlCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmKTsKKyNlbmRpZgogCiAgICAgLy8gSGFuZGxlcyBjb250ZXh0IG1lbnUg
ZXZlbnRzIG9yaWduYXRlZCB2aWEgdGhlIHRoZSBrZXlib2FyZC4gVGhlc2UKICAgICAvLyBpbmNs
dWRlIHRoZSBWS19BUFBTIHZpcnR1YWwga2V5IGFuZCB0aGUgU2hpZnQrRjEwIGNvbWJpbmUuIENv
ZGUgaXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173583</attachid>
            <date>2012-11-12 00:59:54 -0800</date>
            <delta_ts>2012-11-12 01:06:32 -0800</delta_ts>
            <desc>Add support for fractional scroll events</desc>
            <filename>bug-101563-20121112165757.patch</filename>
            <type>text/plain</type>
            <size>21146</size>
            <attacher name="Tai-Hsu Lin">sheckylin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzYTNmODVhZGFmZTcy
MTA4Y2NiMGFmYzQ2OWUwYjBkNGVmMjg5Y2QzLi5kMjQ4MDNjMGRlOTNlOWYyODBmY2Y3MWI0ODg5
NTlkYjBlZDgwZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0wOCAg
VGFpLUhzdSBMaW4gIDxzaGVja3lsaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBmcmFjdGlvbmFsIHNjcm9sbCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB2YXJpb3VzIHNjcm9sbCBldmVudCBkYXRh
IHR5cGVzIGZyb20gaW50ZWdlcnMgdG8gZmxvYXRpbmctcG9pbnRzLiBUaGlzIGFsbG93cyBtb3Jl
IHByZWNpc2Ugc2Nyb2xsaW5nIGFuZCBwcm92aWRlcyBtb3JlIGZyZWVkb20gdG8gdGhlIFdlYktp
dCB1c2Vycy4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJDbGll
bnQuaDoKKwogMjAxMi0xMS0wNyAgWXVzdWYgT3p1eXNhbCAgPHl1c3Vmb0Bnb29nbGUuY29tPgog
CiAgICAgICAgIEFkZCBBUEkgZm9yIHRvdWNoRXZlbnRIYW5kbGVyUmVnaW9uIHRvIFdlYkxheWVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMzYxN2NmOWM5ZDdiMWUzY2EyNTNkZTExMGZlM2JjMjBjNGUwNjczZi4u
Zjk2N2RjYzkwYmU1MzM5NzNiNDNhZDIzY2Q1MDkzOTU0OGRjMDU1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM0IEBACisyMDEyLTExLTA4ICBUYWktSHN1IExpbiAgPHNoZWNreWxpbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGZyYWN0aW9uYWwgc2Nyb2xsIGV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IHZhcmlvdXMgc2Nyb2xsIGV2ZW50IGRhdGEgdHlwZXMgZnJvbSBpbnRlZ2VycyB0byBmbG9hdGlu
Zy1wb2ludHMuIFRoaXMgYWxsb3dzIG1vcmUgcHJlY2lzZSBzY3JvbGxpbmcgYW5kIHByb3ZpZGVz
IG1vcmUgZnJlZWRvbSB0byB0aGUgV2ViS2l0IHVzZXJzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJn
ZXQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaDoKKyAgICAgICAgKFNjcm9sbEFuaW1hdG9yTm9u
ZSk6CisgICAgICAgICogcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3Jl
YXRlRm9yVG91Y2hQYWQpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlOjpjcmVhdGVGb3JUb3VjaFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6
OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmUuaDoKKyAgICAgICAgKFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmNyZWF0
ZUN1cnZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2Vz
dHVyZUN1cnZlRmFjdG9yeS5oOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
KToKKwogMjAxMi0xMS0wNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xlIGVycm9yIGFmdGVyIGluc3BlY3Rpbmcg
SW5kZXhlZERCCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQxN2JjY2MyYzljZDJkZTgz
N2IyOTg2N2RmZTJhZDkwNDMwMjRjZTguLjdiZGU1MWQ2NjhhNGVhNTdhZGUzMTk5NGYzM2Y4NGYy
YzFhMzUyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MTItMTEtMDggIFRhaS1Ic3UgTGluICA8c2hlY2t5bGluQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgZnJhY3Rpb25hbCBzY3JvbGwgZXZlbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1NjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdmFyaW91cyBzY3JvbGwg
ZXZlbnQgZGF0YSB0eXBlcyBmcm9tIGludGVnZXJzIHRvIGZsb2F0aW5nLXBvaW50cy4gVGhpcyBh
bGxvd3MgbW9yZSBwcmVjaXNlIHNjcm9sbGluZyBhbmQgcHJvdmlkZXMgbW9yZSBmcmVlZG9tIHRv
IHRoZSBXZWJLaXQgdXNlcnMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToK
KyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVu
dEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuaDoKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Ny
b2xsQnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVl
bEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAg
KFdlYlZpZXdJbXBsKToKKwogMjAxMi0wOC0yMCAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRHJvcCBkaW1tZWQgY3J1bWIgaGFuZGxp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRI
YW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklucHV0
SGFuZGxlckNsaWVudC5oCmluZGV4IDFiZWYyMDVjNGViNDUxNGNhNThmNmQzMjM5MDI0MjhmNjIz
MWMyNDMuLmU5ZDNjZjJmZGZhNmI0NDEwMTNmNzg5YzkxN2UxMWJjMzRjNWEwNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRIYW5kbGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJD
bGllbnQuaApAQCAtMjUsOCArMjUsMTAgQEAKICNkZWZpbmUgV2ViSW5wdXRIYW5kbGVyQ2xpZW50
X2gKIAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkZsb2F0UG9pbnQuaCIK
ICNpbmNsdWRlICJXZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlNpemUuaCIKKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTUzLDcgKzU1LDExIEBA
IHB1YmxpYzoKICAgICAvLyB0aGVyZSBpcyBubyByb29tIHRvIG1vdmUgdGhlIGxheWVyIGluIHRo
ZSByZXF1ZXN0ZWQgZGlyZWN0aW9uLCBpdHMgZmlyc3QKICAgICAvLyBhbmNlc3RvciBsYXllciB0
aGF0IGNhbiBiZSBzY3JvbGxlZCB3aWxsIGJlIG1vdmVkIGluc3RlYWQuIFNob3VsZCBvbmx5IGJl
CiAgICAgLy8gY2FsbGVkIGlmIHNjcm9sbEJlZ2luKCkgcmV0dXJuZWQgU2Nyb2xsU3RhcnRlZC4K
KyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoV2ViUG9p
bnQsIFdlYlNpemUpID0gMDsKKyNlbHNlCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KFdlYlBv
aW50LCBXZWJGbG9hdFBvaW50KSA9IDA7CisjZW5kaWYKIAogICAgIC8vIFN0b3Agc2Nyb2xsaW5n
IHRoZSBzZWxlY3RlZCBsYXllci4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHNjcm9sbEJlZ2lu
KCkKICAgICAvLyByZXR1cm5lZCBTY3JvbGxTdGFydGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgKaW5kZXggYjI4YjI5MmMx
OGRmMDQ4ZTNjMzBhMWRmNDk1MzA0MmZiZWMzMDQ0OS4uMzdlZDE5MmYwYjc0ZDEzZjk4NDllNWM1
YzY1N2Y3YzZjYzA3OTA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oCkBAIC0yNywxMSArMjcsMTYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgSW50UG9pbnQ7CiAKIGNs
YXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IHsKIHB1YmxpYzoKKyNpZiBQTEFURk9STShD
SFJPTUlVTSkKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmKSA9IDA7
CisjZWxzZQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBGbG9hdFBvaW50JikgPSAw
OworI2VuZGlmCiAgICAgLy8gRklYTUU6IGFkZCBpbnRlcmZhY2VzIGZvciBzY3JvbGwoKSwgZXRj
LgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvck5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3JOb25lLmNwcAppbmRleCAwNGYyNmQyN2JlMGU5ODM1MjQzOGNmNDhiMWJjZGU2N2Q4MGI1ODM2
Li44OTUxMTQzMGIzNDY1ZjZlN2ZhOTk5ZDE2N2U0ODU4MWRmZjM3YTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKQEAgLTY0MCw3ICs2NDAs
MTEgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVk
KCkKICNlbmRpZgogfQogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiB2b2lkIFNjcm9sbEFuaW1h
dG9yTm9uZTo6c2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQorI2Vsc2UKK3ZvaWQg
U2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxCeShjb25zdCBGbG9hdFBvaW50JiBsb2NhdGlvbikK
KyNlbmRpZgogewogICAgIG1fY3VycmVudFBvc1ggKz0gbG9jYXRpb24ueCgpOwogICAgIG1fY3Vy
cmVudFBvc1kgKz0gbG9jYXRpb24ueSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvck5vbmUuaAppbmRleCA4NjdkZjk3NDFmNzI4Y2QzOTRlYjY4ZTZkZmZmZGEyMzBm
YThlOGMwLi5jNDQ0NGM5ZDI5ZWEyYThkZDVhZTQ4NWM1YTc5ZDZhOTM1MTk0Y2NkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaApAQCAtOTgsNyArOTgs
MTEgQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdl
dCBpbXBsZW1lbnRhdGlvbi4KKyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmKTsKKyNlbHNlCisgICAgdmlydHVhbCB2b2lkIHNj
cm9sbEJ5KGNvbnN0IEZsb2F0UG9pbnQmKTsKKyNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCB2b2lkIGFuaW1hdGlvbldpbGxTdGFydCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKaW5k
ZXggZWQzN2NmMWQ5MTJlNzhiYTI4MmZkZmM1ZmRjM2Y3N2RjNTRhMzM1ZC4uMDU2YmUzOTcwZmYx
MmIwMDFkY2VkYWFjYjc2OGFmYzIwNjg1NGI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCkBAIC01
MywxOSArNTMsMzEgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogc3RhdGljIGNvbnN0IGludCBj
TWF4U2VhcmNoSXRlcmF0aW9ucyA9IDIwOwogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiBQYXNz
T3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmU6OmNyZWF0ZUZvclRvdWNoUGFkKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBJbnRQb2lu
dCBjdW11bGF0aXZlU2Nyb2xsKQorI2Vsc2UKK1Bhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3Vy
dmU+IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlRm9yVG91Y2hQYWQoY29u
c3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIEZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKKyNl
bmRpZgogewogICAgIC8vIFRoZSBkZWZhdWx0IHBhcmFtZXRlcnMgbGlzdGVkIGJlbG93IGFyZSBh
IG1hdGNoZWQgc2V0LCBhbmQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIGluZGVwZW5kZW50bHkgb2Yg
b25lIGFub3RoZXIuCiAgICAgcmV0dXJuIGNyZWF0ZSh2ZWxvY2l0eSwgLTUuNzA3NjJlKzAzLCAx
LjcyZSswMiwgMy43ZSswMCwgMS4zLCBjdW11bGF0aXZlU2Nyb2xsKTsKIH0KIAorI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQogUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGlu
Z1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGVGb3JUb3VjaFNjcmVlbihjb25zdCBGbG9hdFBv
aW50JiB2ZWxvY2l0eSwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKKyNlbHNlCitQYXNzT3du
UHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6
OmNyZWF0ZUZvclRvdWNoU2NyZWVuKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBGbG9hdFBv
aW50IGN1bXVsYXRpdmVTY3JvbGwpCisjZW5kaWYKIHsKICAgICAvLyBUaGUgdG91Y2hzY3JlZW4t
c3BlY2lmaWMgcGFyYW1ldGVycyBsaXN0ZWQgYmVsb3cgYXJlIGEgbWF0Y2hlZCBzZXQsIGFuZCBz
aG91bGQgbm90IGJlIGNoYW5nZWQgaW5kZXBlbmRlbnRseSBvZiBvbmUgYW5vdGhlci4KICAgICBy
ZXR1cm4gY3JlYXRlKHZlbG9jaXR5LCAtNS43MDc2MmUrMDMsIDEuNzJlKzAyLCAzLjdlKzAwLCAx
LjMsIGN1bXVsYXRpdmVTY3JvbGwpOwogfQogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiBQYXNz
T3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmU6OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAx
LCBmbG9hdCBwMiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9s
bCkKKyNlbHNlCitQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxv
YXQgcDAsIGZsb2F0IHAxLCBmbG9hdCBwMiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgRmxvYXRQb2lu
dCBjdW11bGF0aXZlU2Nyb2xsKQorI2VuZGlmCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBU
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUodmVsb2NpdHksIHAwLCBwMSwgcDIsIGN1cnZl
RHVyYXRpb24sIGN1bXVsYXRpdmVTY3JvbGwpKTsKIH0KQEAgLTgwLDcgKzkyLDExIEBAIGlubGlu
ZSBkb3VibGUgdmVsb2NpdHkoZG91YmxlIHQsIGZsb2F0KiBwKQogICAgIHJldHVybiAtcFswXSAq
IHBbMl0gKiBleHAoLXBbMl0gKiB0KSAtIHBbMV07CiB9CiAKKyNpZiBQTEFURk9STShDSFJPTUlV
TSkKIFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlKGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxWZWxvY2l0eSwgZmxvYXQgcDAsIGZs
b2F0IHAxLCBmbG9hdCBwMiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgY29uc3QgSW50UG9pbnQmIGN1
bXVsYXRpdmVTY3JvbGwpCisjZWxzZQorVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpU
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbFZl
bG9jaXR5LCBmbG9hdCBwMCwgZmxvYXQgcDEsIGZsb2F0IHAyLCBmbG9hdCBjdXJ2ZUR1cmF0aW9u
LCBjb25zdCBGbG9hdFBvaW50JiBjdW11bGF0aXZlU2Nyb2xsKQorI2VuZGlmCiAgICAgOiBtX2N1
bXVsYXRpdmVTY3JvbGwoY3VtdWxhdGl2ZVNjcm9sbCkKICAgICAsIG1fY3VydmVEdXJhdGlvbihj
dXJ2ZUR1cmF0aW9uKQogewpAQCAtMTQ3LDExICsxNjMsMjAgQEAgYm9vbCBUb3VjaEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5KGRvdWJsZSB0aW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZVRhcmcKICAgICAgICAgZGlzcGxhY2VtZW50ID0gcG9zaXRpb24obV9jdXJ2ZUR1cmF0aW9uLCBt
X2NvZWZmaWNpZW50cykgLSBtX3Bvc2l0aW9uT2Zmc2V0OwogCiAgICAgLy8gS2VlcCB0cmFjayBv
ZiBpbnRlZ2VyIHBvcnRpb24gb2Ygc2Nyb2xsIHRodXMgZmFyLCBhbmQgcHJlcGFyZSBpbmNyZW1l
bnQuCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgSW50UG9pbnQgc2Nyb2xsKGRpc3BsYWNl
bWVudCAqIG1fZGlzcGxhY2VtZW50UmF0aW8ueCgpLCBkaXNwbGFjZW1lbnQgKiBtX2Rpc3BsYWNl
bWVudFJhdGlvLnkoKSk7CiAgICAgSW50UG9pbnQgc2Nyb2xsSW5jcmVtZW50KHNjcm9sbCAtIG1f
Y3VtdWxhdGl2ZVNjcm9sbCk7CisjZWxzZQorICAgIEZsb2F0UG9pbnQgc2Nyb2xsKGRpc3BsYWNl
bWVudCAqIG1fZGlzcGxhY2VtZW50UmF0aW8ueCgpLCBkaXNwbGFjZW1lbnQgKiBtX2Rpc3BsYWNl
bWVudFJhdGlvLnkoKSk7CisgICAgRmxvYXRQb2ludCBzY3JvbGxJbmNyZW1lbnQoc2Nyb2xsIC0g
bV9jdW11bGF0aXZlU2Nyb2xsKTsKKyNlbmRpZgogICAgIG1fY3VtdWxhdGl2ZVNjcm9sbCA9IHNj
cm9sbDsKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIGlmICh0aW1lICsgbV90aW1lT2Zm
c2V0IDwgbV9jdXJ2ZUR1cmF0aW9uIHx8IHNjcm9sbEluY3JlbWVudCAhPSBJbnRQb2ludDo6emVy
bygpKSB7CisjZWxzZQorICAgIGlmICh0aW1lICsgbV90aW1lT2Zmc2V0IDwgbV9jdXJ2ZUR1cmF0
aW9uIHx8IHNjcm9sbEluY3JlbWVudCAhPSBGbG9hdFBvaW50Ojp6ZXJvKCkpIHsKKyNlbmRpZgog
ICAgICAgICB0YXJnZXQtPnNjcm9sbEJ5KHNjcm9sbEluY3JlbWVudCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNo
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91
Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKaW5kZXggZjIzOGE3MTdkMjE5YzkwZTM2MWMz
MDI2ZjkzN2Q2OWUwNjI0NjFiYS4uYzk1YTZkNzFmNWYyMzA4NTY5Njc4MmM5OWMwOGMxNjNjYTc2
YTYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGlu
Z1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKQEAgLTQwLDE5ICs0MCwzMyBAQCBjbGFzcyBQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZVRhcmdldDsKIC8vIHRoZSBpbml0aWFsIHZlbG9jaXR5LgogY2xhc3MgVG91
Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlICA6IHB1YmxpYyBQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZSB7CiBwdWJsaWM6CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUZvclRvdWNoUGFkKGNvbnN0IEZsb2F0UG9p
bnQmIHZlbG9jaXR5LCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsID0gSW50UG9pbnQoKSk7CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUZvclRvdWNo
U2NyZWVuKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBJbnRQb2ludCBjdW11bGF0aXZlU2Ny
b2xsID0gSW50UG9pbnQoKSk7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJl
Q3VydmU+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0
IHAxLCBmbG9hdCBwMiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgSW50UG9pbnQgY3VtdWxhdGl2ZVNj
cm9sbCA9IEludFBvaW50KCkpOworI2Vsc2UKKyAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZT4gY3JlYXRlRm9yVG91Y2hQYWQoY29uc3QgRmxvYXRQb2ludCYgdmVsb2Np
dHksIEZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCA9IEZsb2F0UG9pbnQoKSk7CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUZvclRvdWNoU2NyZWVu
KGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBGbG9hdFBvaW50IGN1bXVsYXRpdmVTY3JvbGwg
PSBGbG9hdFBvaW50KCkpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1
cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHAwLCBmbG9hdCBw
MSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIEZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNj
cm9sbCA9IEZsb2F0UG9pbnQoKSk7CisjZW5kaWYKICAgICB2aXJ0dWFsIH5Ub3VjaEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmUoKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogZGVidWdOYW1l
KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGFwcGx5KGRvdWJsZSBtb25vdG9u
aWNUaW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopIE9WRVJSSURFOwogCiBwcml2YXRl
OgorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAxLCBmbG9h
dCBwMiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgY29uc3QgSW50UG9pbnQmIGN1bXVsYXRpdmVTY3Jv
bGwpOworI2Vsc2UKKyAgICBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxv
YXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHAwLCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IGN1
cnZlRHVyYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIGN1bXVsYXRpdmVTY3JvbGwpOworI2VuZGlm
CiAKICAgICBGbG9hdFBvaW50IG1fZGlzcGxhY2VtZW50UmF0aW87CisjaWYgUExBVEZPUk0oQ0hS
T01JVU0pCiAgICAgSW50UG9pbnQgbV9jdW11bGF0aXZlU2Nyb2xsOworI2Vsc2UKKyAgICBGbG9h
dFBvaW50IG1fY3VtdWxhdGl2ZVNjcm9sbDsKKyNlbmRpZgogICAgIGZsb2F0IG1fY29lZmZpY2ll
bnRzWzNdOwogICAgIGZsb2F0IG1fdGltZU9mZnNldDsKICAgICBmbG9hdCBtX2N1cnZlRHVyYXRp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHAKaW5kZXgg
MjAzZjM5Y2U5OWY0MjU4YjRhZjA2ZGM1NDFjOGFlOGEyMDQ3YWM0My4uN2VhMjMwNzBjMmI1YTM2
OGQ3ZGFhZDNkYTE4MWFjZWZiYjk5ZTdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0
dXJlQ3VydmVGYWN0b3J5LmNwcApAQCAtNDEsNyArNDEsMTEgQEAgUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVGYWN0b3J5KiBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmdldCgpCiAgICAgcmV0dXJu
ICZmYWN0b3J5OwogfQogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiBQYXNzT3duUHRyPFdlYkNv
cmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlPiBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmNy
ZWF0ZUN1cnZlKGludCBkZXZpY2VTb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBv
aW50LCBXZWJDb3JlOjpJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQorI2Vsc2UKK1Bhc3NPd25Q
dHI8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFj
dG9yeTo6Y3JlYXRlQ3VydmUoaW50IGRldmljZVNvdXJjZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYgcG9pbnQsIFdlYkNvcmU6OkZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKKyNlbmRp
ZgogewogICAgIE93blB0cjxXZWJGbGluZ0FuaW1hdG9yPiBmbGluZ0FuaW1hdG9yID0gbV9tb2Nr
RmxpbmdBbmltYXRvci5yZWxlYXNlKCk7CiAgICAgaWYgKCFmbGluZ0FuaW1hdG9yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdl
c3R1cmVDdXJ2ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgKaW5kZXggMWFiM2JmNDQxYTkzNTkz
Yjc0NGJkYjJjMDUyMjU0NTQ4NGFjYmEzZS4uYWE0MjE1YzM1ZjU0YTc1ZGMwOTljYWJkZGE0MWI5
MmZkNDY5NWZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5o
CkBAIC0zNiw3ICszNiwxMSBAQCBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnkgewog
cHVibGljOgogICAgIHN0YXRpYyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkqIGdldCgpOwog
CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgUGFzc093blB0cjxXZWJDb3JlOjpQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZT4gY3JlYXRlQ3VydmUoaW50IGRldmljZVNvdXJjZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYsIFdlYkNvcmU6OkludFBvaW50IGN1bXVsYXRpdmVTY3JvbGwgPSBXZWJD
b3JlOjpJbnRQb2ludCgpKTsKKyNlbHNlCisgICAgUGFzc093blB0cjxXZWJDb3JlOjpQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZT4gY3JlYXRlQ3VydmUoaW50IGRldmljZVNvdXJjZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYsIFdlYkNvcmU6OkZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCA9IFdl
YkNvcmU6OkZsb2F0UG9pbnQoKSk7CisjZW5kaWYKICAgICB2b2lkIHNldFdlYkZsaW5nQW5pbWF0
b3JGb3JUZXN0KFBhc3NPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4pOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzLmgKaW5kZXggMjEzM2U4NTA4NDA5MGNjNzI2OWY3NmY4ODM4NmFk
MWMzYmI5ZGY4OC4uNWM0Y2Y1NDFmNjZiYTllZWQ4ZDU5OGE0OTQwMDJmNTAwMTU1YzA1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oCkBAIC00MSw3ICs0MSwxMSBAQCBzdHJ1Y3QgV2ViQWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMgewogICAgIFdlYlBvaW50IGdsb2JhbFBvaW50OwogICAg
IGludCBtb2RpZmllcnM7CiAgICAgV2ViR2VzdHVyZUV2ZW50OjpTb3VyY2VEZXZpY2Ugc291cmNl
RGV2aWNlOworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIFdlYlNpemUgY3VtdWxhdGl2ZVNj
cm9sbDsKKyNlbHNlCisgICAgV2ViRmxvYXRQb2ludCBjdW11bGF0aXZlU2Nyb2xsOworI2VuZGlm
CiAgICAgZG91YmxlIHN0YXJ0VGltZTsKIAogICAgIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAppbmRleCA4N2Q3YjI1MjJlOWM2OTZiMmE1YjFk
YjNjYmExYjQ4Njg0ZGIyZjc1Li4yOGI5OWJhOGZiMTUxODk4OTk3MTk4ODAwZjYxM2JmNmU2OWEz
Zjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCkBAIC0xMTksNyArMTE5LDExIEBAIFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7CiAgICAg
ICAgIGNhc2UgV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXNTdGFydGVkOiB7CiAg
ICAgICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMigiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGw6OmhhbmRsZUlucHV0IHdoZWVsIHNjcm9sbCIsICJkZWx0YVgiLCAtd2hlZWxF
dmVudC5kZWx0YVgsICJkZWx0YVkiLCAtd2hlZWxFdmVudC5kZWx0YVkpOworI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQogICAgICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJ5KFdl
YlBvaW50KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSwgSW50U2l6ZSgtd2hlZWxFdmVudC5k
ZWx0YVgsIC13aGVlbEV2ZW50LmRlbHRhWSkpOworI2Vsc2UKKyAgICAgICAgICAgIG1faW5wdXRI
YW5kbGVyQ2xpZW50LT5zY3JvbGxCeShXZWJQb2ludCh3aGVlbEV2ZW50LngsIHdoZWVsRXZlbnQu
eSksIFdlYkZsb2F0UG9pbnQoLXdoZWVsRXZlbnQuZGVsdGFYLCAtd2hlZWxFdmVudC5kZWx0YVkp
KTsKKyNlbmRpZgogICAgICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEVuZCgp
OwogICAgICAgICAgICAgcmV0dXJuIERpZEhhbmRsZTsKICAgICAgICAgfQpAQCAtMTU1LDcgKzE1
OSwxMSBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogCiAgICAgICAgIGNvbnN0IFdlYkdlc3R1
cmVFdmVudCYgZ2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVu
dCo+KCZldmVudCk7CiAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShXZWJQ
b2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpLAorI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQogICAgICAgICAgICAgSW50U2l6ZSgtZ2VzdHVyZUV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRl
LmRlbHRhWCwgLWdlc3R1cmVFdmVudC5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkpKTsKKyNlbHNl
CisgICAgICAgICAgICBXZWJGbG9hdFBvaW50KC1nZXN0dXJlRXZlbnQuZGF0YS5zY3JvbGxVcGRh
dGUuZGVsdGFYLCAtZ2VzdHVyZUV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSkpOworI2Vu
ZGlmCiAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgfSBlbHNlIGlmIChldmVudC50eXBl
ID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQpIHsKICAgICAgICAgQVNTRVJUKG1f
ZXhwZWN0U2Nyb2xsVXBkYXRlRW5kKTsKQEAgLTI3Myw5ICsyODEsMTUgQEAgYm9vbCBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y2FuY2VsQ3VycmVudEZsaW5nKCkKICAgICByZXR1cm4g
aGFkRmxpbmdBbmltYXRpb247CiB9CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKIHZvaWQgV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5KGNvbnN0IEludFBvaW50JiBpbmNy
ZW1lbnQpCiB7CiAgICAgaWYgKGluY3JlbWVudCA9PSBJbnRQb2ludDo6emVybygpKQorI2Vsc2UK
K3ZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5KGNvbnN0IEZsb2F0
UG9pbnQmIGluY3JlbWVudCkKK3sKKyAgICBpZiAoaW5jcmVtZW50ID09IEZsb2F0UG9pbnQ6Onpl
cm8oKSkKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAKICAgICBUUkFDRV9FVkVOVDIoImNjIiwg
IldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSIsICJ4IiwgaW5jcmVtZW50
LngoKSwgInkiLCBpbmNyZW1lbnQueSgpKTsKQEAgLTI5Myw4ICszMDcsMTMgQEAgdm9pZCBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmIGluY3Jl
bWVudCkKICAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlv
biBkaXNwb3NpdGlvbiA9IGhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbChzeW50aGV0aWNXaGVlbCk7
CiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgRGlkSGFuZGxlOgorI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQogICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmN1bXVsYXRp
dmVTY3JvbGwud2lkdGggKz0gaW5jcmVtZW50LngoKTsKICAgICAgICAgbV93aGVlbEZsaW5nUGFy
YW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsLmhlaWdodCArPSBpbmNyZW1lbnQueSgpOworI2Vsc2UK
KyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsLnggKz0gaW5j
cmVtZW50LngoKTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11bGF0aXZlU2Ny
b2xsLnkgKz0gaW5jcmVtZW50LnkoKTsKKyNlbmRpZgogICAgIGNhc2UgRHJvcEV2ZW50OgogICAg
ICAgICBicmVhazsKICAgICBjYXNlIERpZE5vdEhhbmRsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCmlu
ZGV4IGZhODFkZTk0NTI3Y2FkOWUyY2FhY2JkNWE5ZDRhODczYjM5NmNlZjEuLjE3ODVkMWM1NzY3
ZjFkODA4ZjJlNDQ3ZGZhZTUzMDBkZjhhNzkzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaApAQCAt
NjUsNyArNjUsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBt
b25vdG9uaWNUaW1lKTsKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFy
Z2V0IGltcGxlbWVudGF0aW9uLgorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworI2Vsc2UKKyAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworI2VuZGlmCiAK
ICAgICBpbnQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZjZmOWZjNmZh
N2MxMjQ4MGFkNDA2Y2U1YTg5OTVlYTYzZDRjM2M5MC4uNTc1ODgyOTVmOTdhMTZlYjFiNThjNDBk
NWRkZjllZGFhNzg3NGVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcApAQCAtNjQxLDcgKzY0MSwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVNb3Vz
ZVVwKEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogI2VuZGlm
CiB9CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKIHZvaWQgV2ViVmlld0ltcGw6OnNjcm9sbEJ5
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZWx0YSkKKyNlbHNlCit2b2lkIFdlYlZpZXdJbXBs
OjpzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBkZWx0YSkKKyNlbmRpZgogewog
ICAgIFdlYk1vdXNlV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKICAgICBjb25zdCBmbG9hdCB0
aWNrRGl2aXNvciA9IFdlYkNvcmU6OldoZWVsRXZlbnQ6OnRpY2tNdWx0aXBsaWVyOwpAQCAtNzk5
LDcgKzgwMywxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdB
bmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcgogICAgIG1fbGFzdFdoZWVsUG9z
aXRpb24gPSBwYXJhbWV0ZXJzLnBvaW50OwogICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24g
PSBwYXJhbWV0ZXJzLmdsb2JhbFBvaW50OwogICAgIG1fZmxpbmdNb2RpZmllciA9IHBhcmFtZXRl
cnMubW9kaWZpZXJzOworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIE93blB0cjxQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZT4gY3VydmUgPSBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmdldCgp
LT5jcmVhdGVDdXJ2ZShwYXJhbWV0ZXJzLnNvdXJjZURldmljZSwgcGFyYW1ldGVycy5kZWx0YSwg
SW50UG9pbnQocGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsKSk7CisjZWxzZQorICAgIE93blB0
cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUgPSBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rv
cnk6OmdldCgpLT5jcmVhdGVDdXJ2ZShwYXJhbWV0ZXJzLnNvdXJjZURldmljZSwgcGFyYW1ldGVy
cy5kZWx0YSwgcGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsKTsKKyNlbmRpZgogICAgIG1fZ2Vz
dHVyZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKGN1
cnZlLnJlbGVhc2UoKSwgdGhpcywgcGFyYW1ldGVycy5zdGFydFRpbWUpOwogICAgIHNjaGVkdWxl
QW5pbWF0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApp
bmRleCAwMmExZTUzNzA0MGI2ODAwNzY4ZmMxYmU5MWMzZmFiNmYwNmZlYzUyLi5iM2ZjNjUxMmJm
YWVjYjBlMGI5N2RiOGVjYTQxOGUwN2Y3NWNlN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQwNSw3ICs0MDUsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
aGFzVG91Y2hFdmVudEhhbmRsZXJzKGJvb2wpOwogCiAgICAgLy8gUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVUYXJnZXQgaW1wbGVtZW50YXRpb24gZm9yIHdoZWVsIGZsaW5nLgorI2lmIFBMQVRGT1JNKENI
Uk9NSVVNKQogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpOworI2Vsc2UKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYpOworI2VuZGlmCiAKICAgICAvLyBIYW5kbGVzIGNvbnRleHQgbWVudSBldmVudHMg
b3JpZ25hdGVkIHZpYSB0aGUgdGhlIGtleWJvYXJkLiBUaGVzZQogICAgIC8vIGluY2x1ZGUgdGhl
IFZLX0FQUFMgdmlydHVhbCBrZXkgYW5kIHRoZSBTaGlmdCtGMTAgY29tYmluZS4gQ29kZSBpcwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173584</attachid>
            <date>2012-11-12 01:06:36 -0800</date>
            <delta_ts>2012-11-12 23:20:01 -0800</delta_ts>
            <desc>Add support for fractional scroll events</desc>
            <filename>bug-101563-20121112170439.patch</filename>
            <type>text/plain</type>
            <size>21200</size>
            <attacher name="Tai-Hsu Lin">sheckylin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzYTNmODVhZGFmZTcy
MTA4Y2NiMGFmYzQ2OWUwYjBkNGVmMjg5Y2QzLi5kMjQ4MDNjMGRlOTNlOWYyODBmY2Y3MWI0ODg5
NTlkYjBlZDgwZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0wOCAg
VGFpLUhzdSBMaW4gIDxzaGVja3lsaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBmcmFjdGlvbmFsIHNjcm9sbCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB2YXJpb3VzIHNjcm9sbCBldmVudCBkYXRh
IHR5cGVzIGZyb20gaW50ZWdlcnMgdG8gZmxvYXRpbmctcG9pbnRzLiBUaGlzIGFsbG93cyBtb3Jl
IHByZWNpc2Ugc2Nyb2xsaW5nIGFuZCBwcm92aWRlcyBtb3JlIGZyZWVkb20gdG8gdGhlIFdlYktp
dCB1c2Vycy4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJDbGll
bnQuaDoKKwogMjAxMi0xMS0wNyAgWXVzdWYgT3p1eXNhbCAgPHl1c3Vmb0Bnb29nbGUuY29tPgog
CiAgICAgICAgIEFkZCBBUEkgZm9yIHRvdWNoRXZlbnRIYW5kbGVyUmVnaW9uIHRvIFdlYkxheWVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMzYxN2NmOWM5ZDdiMWUzY2EyNTNkZTExMGZlM2JjMjBjNGUwNjczZi4u
Zjk2N2RjYzkwYmU1MzM5NzNiNDNhZDIzY2Q1MDkzOTU0OGRjMDU1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM0IEBACisyMDEyLTExLTA4ICBUYWktSHN1IExpbiAgPHNoZWNreWxpbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGZyYWN0aW9uYWwgc2Nyb2xsIGV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IHZhcmlvdXMgc2Nyb2xsIGV2ZW50IGRhdGEgdHlwZXMgZnJvbSBpbnRlZ2VycyB0byBmbG9hdGlu
Zy1wb2ludHMuIFRoaXMgYWxsb3dzIG1vcmUgcHJlY2lzZSBzY3JvbGxpbmcgYW5kIHByb3ZpZGVz
IG1vcmUgZnJlZWRvbSB0byB0aGUgV2ViS2l0IHVzZXJzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJn
ZXQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaDoKKyAgICAgICAgKFNjcm9sbEFuaW1hdG9yTm9u
ZSk6CisgICAgICAgICogcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3Jl
YXRlRm9yVG91Y2hQYWQpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlOjpjcmVhdGVGb3JUb3VjaFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6
OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmUuaDoKKyAgICAgICAgKFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmNyZWF0
ZUN1cnZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2Vz
dHVyZUN1cnZlRmFjdG9yeS5oOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
KToKKwogMjAxMi0xMS0wNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xlIGVycm9yIGFmdGVyIGluc3BlY3Rpbmcg
SW5kZXhlZERCCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQxN2JjY2MyYzljZDJkZTgz
N2IyOTg2N2RmZTJhZDkwNDMwMjRjZTguLjdiZGU1MWQ2NjhhNGVhNTdhZGUzMTk5NGYzM2Y4NGYy
YzFhMzUyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MTItMTEtMDggIFRhaS1Ic3UgTGluICA8c2hlY2t5bGluQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgZnJhY3Rpb25hbCBzY3JvbGwgZXZlbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1NjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdmFyaW91cyBzY3JvbGwg
ZXZlbnQgZGF0YSB0eXBlcyBmcm9tIGludGVnZXJzIHRvIGZsb2F0aW5nLXBvaW50cy4gVGhpcyBh
bGxvd3MgbW9yZSBwcmVjaXNlIHNjcm9sbGluZyBhbmQgcHJvdmlkZXMgbW9yZSBmcmVlZG9tIHRv
IHRoZSBXZWJLaXQgdXNlcnMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToK
KyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVu
dEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuaDoKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Ny
b2xsQnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVl
bEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAg
KFdlYlZpZXdJbXBsKToKKwogMjAxMi0wOC0yMCAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRHJvcCBkaW1tZWQgY3J1bWIgaGFuZGxp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRI
YW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklucHV0
SGFuZGxlckNsaWVudC5oCmluZGV4IDFiZWYyMDVjNGViNDUxNGNhNThmNmQzMjM5MDI0MjhmNjIz
MWMyNDMuLmJlMWFkNDFiMDU5Yjg0N2FhYzliYTc3OTRjY2NlODYyOTlmODM5Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRIYW5kbGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJD
bGllbnQuaApAQCAtMjQsOSArMjQsMTIgQEAKICNpZm5kZWYgV2ViSW5wdXRIYW5kbGVyQ2xpZW50
X2gKICNkZWZpbmUgV2ViSW5wdXRIYW5kbGVyQ2xpZW50X2gKIAorI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkZsb2F0UG9pbnQuaCIKICNp
bmNsdWRlICJXZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlNpemUuaCIKKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTUzLDcgKzU2LDExIEBAIHB1
YmxpYzoKICAgICAvLyB0aGVyZSBpcyBubyByb29tIHRvIG1vdmUgdGhlIGxheWVyIGluIHRoZSBy
ZXF1ZXN0ZWQgZGlyZWN0aW9uLCBpdHMgZmlyc3QKICAgICAvLyBhbmNlc3RvciBsYXllciB0aGF0
IGNhbiBiZSBzY3JvbGxlZCB3aWxsIGJlIG1vdmVkIGluc3RlYWQuIFNob3VsZCBvbmx5IGJlCiAg
ICAgLy8gY2FsbGVkIGlmIHNjcm9sbEJlZ2luKCkgcmV0dXJuZWQgU2Nyb2xsU3RhcnRlZC4KKyNp
ZiBQTEFURk9STShDSFJPTUlVTSkKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoV2ViUG9pbnQs
IFdlYlNpemUpID0gMDsKKyNlbHNlCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KFdlYlBvaW50
LCBXZWJGbG9hdFBvaW50KSA9IDA7CisjZW5kaWYKIAogICAgIC8vIFN0b3Agc2Nyb2xsaW5nIHRo
ZSBzZWxlY3RlZCBsYXllci4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHNjcm9sbEJlZ2luKCkK
ICAgICAvLyByZXR1cm5lZCBTY3JvbGxTdGFydGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgKaW5kZXggYjI4YjI5MmMxOGRm
MDQ4ZTNjMzBhMWRmNDk1MzA0MmZiZWMzMDQ0OS4uMzdlZDE5MmYwYjc0ZDEzZjk4NDllNWM1YzY1
N2Y3YzZjYzA3OTA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1HZXN0dXJlQ3VydmVUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oCkBAIC0yNywxMSArMjcsMTYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgSW50UG9pbnQ7CiAKIGNsYXNz
IFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IHsKIHB1YmxpYzoKKyNpZiBQTEFURk9STShDSFJP
TUlVTSkKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmKSA9IDA7Cisj
ZWxzZQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBGbG9hdFBvaW50JikgPSAwOwor
I2VuZGlmCiAgICAgLy8gRklYTUU6IGFkZCBpbnRlcmZhY2VzIGZvciBzY3JvbGwoKSwgZXRjLgog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvck5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JO
b25lLmNwcAppbmRleCAwNGYyNmQyN2JlMGU5ODM1MjQzOGNmNDhiMWJjZGU2N2Q4MGI1ODM2Li44
OTUxMTQzMGIzNDY1ZjZlN2ZhOTk5ZDE2N2U0ODU4MWRmZjM3YTNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKQEAgLTY0MCw3ICs2NDAsMTEg
QEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCkK
ICNlbmRpZgogfQogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiB2b2lkIFNjcm9sbEFuaW1hdG9y
Tm9uZTo6c2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQorI2Vsc2UKK3ZvaWQgU2Ny
b2xsQW5pbWF0b3JOb25lOjpzY3JvbGxCeShjb25zdCBGbG9hdFBvaW50JiBsb2NhdGlvbikKKyNl
bmRpZgogewogICAgIG1fY3VycmVudFBvc1ggKz0gbG9jYXRpb24ueCgpOwogICAgIG1fY3VycmVu
dFBvc1kgKz0gbG9jYXRpb24ueSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3JOb25lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvck5vbmUuaAppbmRleCA4NjdkZjk3NDFmNzI4Y2QzOTRlYjY4ZTZkZmZmZGEyMzBmYThl
OGMwLi5jNDQ0NGM5ZDI5ZWEyYThkZDVhZTQ4NWM1YTc5ZDZhOTM1MTk0Y2NkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaApAQCAtOTgsNyArOTgsMTEg
QEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCBp
bXBsZW1lbnRhdGlvbi4KKyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmKTsKKyNlbHNlCisgICAgdmlydHVhbCB2b2lkIHNjcm9s
bEJ5KGNvbnN0IEZsb2F0UG9pbnQmKTsKKyNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIGFuaW1hdGlvbldpbGxTdGFydCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKaW5kZXgg
ZWQzN2NmMWQ5MTJlNzhiYTI4MmZkZmM1ZmRjM2Y3N2RjNTRhMzM1ZC4uMDU2YmUzOTcwZmYxMmIw
MDFkY2VkYWFjYjc2OGFmYzIwNjg1NGI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCkBAIC01Mywx
OSArNTMsMzEgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogc3RhdGljIGNvbnN0IGludCBjTWF4
U2VhcmNoSXRlcmF0aW9ucyA9IDIwOwogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiBQYXNzT3du
UHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6
OmNyZWF0ZUZvclRvdWNoUGFkKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBJbnRQb2ludCBj
dW11bGF0aXZlU2Nyb2xsKQorI2Vsc2UKK1Bhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+
IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlRm9yVG91Y2hQYWQoY29uc3Qg
RmxvYXRQb2ludCYgdmVsb2NpdHksIEZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKKyNlbmRp
ZgogewogICAgIC8vIFRoZSBkZWZhdWx0IHBhcmFtZXRlcnMgbGlzdGVkIGJlbG93IGFyZSBhIG1h
dGNoZWQgc2V0LCBhbmQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIGluZGVwZW5kZW50bHkgb2Ygb25l
IGFub3RoZXIuCiAgICAgcmV0dXJuIGNyZWF0ZSh2ZWxvY2l0eSwgLTUuNzA3NjJlKzAzLCAxLjcy
ZSswMiwgMy43ZSswMCwgMS4zLCBjdW11bGF0aXZlU2Nyb2xsKTsKIH0KIAorI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQogUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGVGb3JUb3VjaFNjcmVlbihjb25zdCBGbG9hdFBvaW50
JiB2ZWxvY2l0eSwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKKyNlbHNlCitQYXNzT3duUHRy
PFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNy
ZWF0ZUZvclRvdWNoU2NyZWVuKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBGbG9hdFBvaW50
IGN1bXVsYXRpdmVTY3JvbGwpCisjZW5kaWYKIHsKICAgICAvLyBUaGUgdG91Y2hzY3JlZW4tc3Bl
Y2lmaWMgcGFyYW1ldGVycyBsaXN0ZWQgYmVsb3cgYXJlIGEgbWF0Y2hlZCBzZXQsIGFuZCBzaG91
bGQgbm90IGJlIGNoYW5nZWQgaW5kZXBlbmRlbnRseSBvZiBvbmUgYW5vdGhlci4KICAgICByZXR1
cm4gY3JlYXRlKHZlbG9jaXR5LCAtNS43MDc2MmUrMDMsIDEuNzJlKzAyLCAzLjdlKzAwLCAxLjMs
IGN1bXVsYXRpdmVTY3JvbGwpOwogfQogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiBQYXNzT3du
UHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6
OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAxLCBm
bG9hdCBwMiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkK
KyNlbHNlCitQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZv
cm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQg
cDAsIGZsb2F0IHAxLCBmbG9hdCBwMiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgRmxvYXRQb2ludCBj
dW11bGF0aXZlU2Nyb2xsKQorI2VuZGlmCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUodmVsb2NpdHksIHAwLCBwMSwgcDIsIGN1cnZlRHVy
YXRpb24sIGN1bXVsYXRpdmVTY3JvbGwpKTsKIH0KQEAgLTgwLDcgKzkyLDExIEBAIGlubGluZSBk
b3VibGUgdmVsb2NpdHkoZG91YmxlIHQsIGZsb2F0KiBwKQogICAgIHJldHVybiAtcFswXSAqIHBb
Ml0gKiBleHAoLXBbMl0gKiB0KSAtIHBbMV07CiB9CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkK
IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlKGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxWZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0
IHAxLCBmbG9hdCBwMiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgY29uc3QgSW50UG9pbnQmIGN1bXVs
YXRpdmVTY3JvbGwpCisjZWxzZQorVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbFZlbG9j
aXR5LCBmbG9hdCBwMCwgZmxvYXQgcDEsIGZsb2F0IHAyLCBmbG9hdCBjdXJ2ZUR1cmF0aW9uLCBj
b25zdCBGbG9hdFBvaW50JiBjdW11bGF0aXZlU2Nyb2xsKQorI2VuZGlmCiAgICAgOiBtX2N1bXVs
YXRpdmVTY3JvbGwoY3VtdWxhdGl2ZVNjcm9sbCkKICAgICAsIG1fY3VydmVEdXJhdGlvbihjdXJ2
ZUR1cmF0aW9uKQogewpAQCAtMTQ3LDExICsxNjMsMjAgQEAgYm9vbCBUb3VjaEZsaW5nUGxhdGZv
cm1HZXN0dXJlQ3VydmU6OmFwcGx5KGRvdWJsZSB0aW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRh
cmcKICAgICAgICAgZGlzcGxhY2VtZW50ID0gcG9zaXRpb24obV9jdXJ2ZUR1cmF0aW9uLCBtX2Nv
ZWZmaWNpZW50cykgLSBtX3Bvc2l0aW9uT2Zmc2V0OwogCiAgICAgLy8gS2VlcCB0cmFjayBvZiBp
bnRlZ2VyIHBvcnRpb24gb2Ygc2Nyb2xsIHRodXMgZmFyLCBhbmQgcHJlcGFyZSBpbmNyZW1lbnQu
CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgSW50UG9pbnQgc2Nyb2xsKGRpc3BsYWNlbWVu
dCAqIG1fZGlzcGxhY2VtZW50UmF0aW8ueCgpLCBkaXNwbGFjZW1lbnQgKiBtX2Rpc3BsYWNlbWVu
dFJhdGlvLnkoKSk7CiAgICAgSW50UG9pbnQgc2Nyb2xsSW5jcmVtZW50KHNjcm9sbCAtIG1fY3Vt
dWxhdGl2ZVNjcm9sbCk7CisjZWxzZQorICAgIEZsb2F0UG9pbnQgc2Nyb2xsKGRpc3BsYWNlbWVu
dCAqIG1fZGlzcGxhY2VtZW50UmF0aW8ueCgpLCBkaXNwbGFjZW1lbnQgKiBtX2Rpc3BsYWNlbWVu
dFJhdGlvLnkoKSk7CisgICAgRmxvYXRQb2ludCBzY3JvbGxJbmNyZW1lbnQoc2Nyb2xsIC0gbV9j
dW11bGF0aXZlU2Nyb2xsKTsKKyNlbmRpZgogICAgIG1fY3VtdWxhdGl2ZVNjcm9sbCA9IHNjcm9s
bDsKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIGlmICh0aW1lICsgbV90aW1lT2Zmc2V0
IDwgbV9jdXJ2ZUR1cmF0aW9uIHx8IHNjcm9sbEluY3JlbWVudCAhPSBJbnRQb2ludDo6emVybygp
KSB7CisjZWxzZQorICAgIGlmICh0aW1lICsgbV90aW1lT2Zmc2V0IDwgbV9jdXJ2ZUR1cmF0aW9u
IHx8IHNjcm9sbEluY3JlbWVudCAhPSBGbG9hdFBvaW50Ojp6ZXJvKCkpIHsKKyNlbmRpZgogICAg
ICAgICB0YXJnZXQtPnNjcm9sbEJ5KHNjcm9sbEluY3JlbWVudCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKaW5kZXggZjIzOGE3MTdkMjE5YzkwZTM2MWMzMDI2
ZjkzN2Q2OWUwNjI0NjFiYS4uYzk1YTZkNzFmNWYyMzA4NTY5Njc4MmM5OWMwOGMxNjNjYTc2YTYz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlLmgKQEAgLTQwLDE5ICs0MCwzMyBAQCBjbGFzcyBQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZVRhcmdldDsKIC8vIHRoZSBpbml0aWFsIHZlbG9jaXR5LgogY2xhc3MgVG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlICA6IHB1YmxpYyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSB7
CiBwdWJsaWM6CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgc3RhdGljIFBhc3NPd25QdHI8
UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUZvclRvdWNoUGFkKGNvbnN0IEZsb2F0UG9pbnQm
IHZlbG9jaXR5LCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsID0gSW50UG9pbnQoKSk7CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUZvclRvdWNoU2Ny
ZWVuKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xs
ID0gSW50UG9pbnQoKSk7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3Vy
dmU+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAx
LCBmbG9hdCBwMiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9s
bCA9IEludFBvaW50KCkpOworI2Vsc2UKKyAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZT4gY3JlYXRlRm9yVG91Y2hQYWQoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHks
IEZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCA9IEZsb2F0UG9pbnQoKSk7CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUZvclRvdWNoU2NyZWVuKGNv
bnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBGbG9hdFBvaW50IGN1bXVsYXRpdmVTY3JvbGwgPSBG
bG9hdFBvaW50KCkpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZl
PiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHAwLCBmbG9hdCBwMSwg
ZmxvYXQgcDIsIGZsb2F0IGN1cnZlRHVyYXRpb24sIEZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9s
bCA9IEZsb2F0UG9pbnQoKSk7CisjZW5kaWYKICAgICB2aXJ0dWFsIH5Ub3VjaEZsaW5nUGxhdGZv
cm1HZXN0dXJlQ3VydmUoKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogZGVidWdOYW1lKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGFwcGx5KGRvdWJsZSBtb25vdG9uaWNU
aW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopIE9WRVJSSURFOwogCiBwcml2YXRlOgor
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAxLCBmbG9hdCBw
MiwgZmxvYXQgY3VydmVEdXJhdGlvbiwgY29uc3QgSW50UG9pbnQmIGN1bXVsYXRpdmVTY3JvbGwp
OworI2Vsc2UKKyAgICBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQ
b2ludCYgdmVsb2NpdHksIGZsb2F0IHAwLCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IGN1cnZl
RHVyYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIGN1bXVsYXRpdmVTY3JvbGwpOworI2VuZGlmCiAK
ICAgICBGbG9hdFBvaW50IG1fZGlzcGxhY2VtZW50UmF0aW87CisjaWYgUExBVEZPUk0oQ0hST01J
VU0pCiAgICAgSW50UG9pbnQgbV9jdW11bGF0aXZlU2Nyb2xsOworI2Vsc2UKKyAgICBGbG9hdFBv
aW50IG1fY3VtdWxhdGl2ZVNjcm9sbDsKKyNlbmRpZgogICAgIGZsb2F0IG1fY29lZmZpY2llbnRz
WzNdOwogICAgIGZsb2F0IG1fdGltZU9mZnNldDsKICAgICBmbG9hdCBtX2N1cnZlRHVyYXRpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1Bs
YXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHAKaW5kZXggMjAz
ZjM5Y2U5OWY0MjU4YjRhZjA2ZGM1NDFjOGFlOGEyMDQ3YWM0My4uN2VhMjMwNzBjMmI1YTM2OGQ3
ZGFhZDNkYTE4MWFjZWZiYjk5ZTdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJl
Q3VydmVGYWN0b3J5LmNwcApAQCAtNDEsNyArNDEsMTEgQEAgUGxhdGZvcm1HZXN0dXJlQ3VydmVG
YWN0b3J5KiBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmdldCgpCiAgICAgcmV0dXJuICZm
YWN0b3J5OwogfQogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiBQYXNzT3duUHRyPFdlYkNvcmU6
OlBsYXRmb3JtR2VzdHVyZUN1cnZlPiBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmNyZWF0
ZUN1cnZlKGludCBkZXZpY2VTb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50
LCBXZWJDb3JlOjpJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQorI2Vsc2UKK1Bhc3NPd25QdHI8
V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9y
eTo6Y3JlYXRlQ3VydmUoaW50IGRldmljZVNvdXJjZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYgcG9pbnQsIFdlYkNvcmU6OkZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKKyNlbmRpZgog
ewogICAgIE93blB0cjxXZWJGbGluZ0FuaW1hdG9yPiBmbGluZ0FuaW1hdG9yID0gbV9tb2NrRmxp
bmdBbmltYXRvci5yZWxlYXNlKCk7CiAgICAgaWYgKCFmbGluZ0FuaW1hdG9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1
cmVDdXJ2ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgKaW5kZXggMWFiM2JmNDQxYTkzNTkzYjc0
NGJkYjJjMDUyMjU0NTQ4NGFjYmEzZS4uYWE0MjE1YzM1ZjU0YTc1ZGMwOTljYWJkZGE0MWI5MmZk
NDY5NWZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5oCkBA
IC0zNiw3ICszNiwxMSBAQCBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkgewogcHVi
bGljOgogICAgIHN0YXRpYyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkqIGdldCgpOwogCisj
aWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgUGFzc093blB0cjxXZWJDb3JlOjpQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZT4gY3JlYXRlQ3VydmUoaW50IGRldmljZVNvdXJjZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYsIFdlYkNvcmU6OkludFBvaW50IGN1bXVsYXRpdmVTY3JvbGwgPSBXZWJDb3Jl
OjpJbnRQb2ludCgpKTsKKyNlbHNlCisgICAgUGFzc093blB0cjxXZWJDb3JlOjpQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZT4gY3JlYXRlQ3VydmUoaW50IGRldmljZVNvdXJjZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYsIFdlYkNvcmU6OkZsb2F0UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCA9IFdlYkNv
cmU6OkZsb2F0UG9pbnQoKSk7CisjZW5kaWYKICAgICB2b2lkIHNldFdlYkZsaW5nQW5pbWF0b3JG
b3JUZXN0KFBhc3NPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4pOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzLmgKaW5kZXggMjEzM2U4NTA4NDA5MGNjNzI2OWY3NmY4ODM4NmFkMWMz
YmI5ZGY4OC4uNWM0Y2Y1NDFmNjZiYTllZWQ4ZDU5OGE0OTQwMDJmNTAwMTU1YzA1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVycy5oCkBAIC00MSw3ICs0MSwxMSBAQCBzdHJ1Y3QgV2ViQWN0aXZl
V2hlZWxGbGluZ1BhcmFtZXRlcnMgewogICAgIFdlYlBvaW50IGdsb2JhbFBvaW50OwogICAgIGlu
dCBtb2RpZmllcnM7CiAgICAgV2ViR2VzdHVyZUV2ZW50OjpTb3VyY2VEZXZpY2Ugc291cmNlRGV2
aWNlOworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIFdlYlNpemUgY3VtdWxhdGl2ZVNjcm9s
bDsKKyNlbHNlCisgICAgV2ViRmxvYXRQb2ludCBjdW11bGF0aXZlU2Nyb2xsOworI2VuZGlmCiAg
ICAgZG91YmxlIHN0YXJ0VGltZTsKIAogICAgIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAppbmRleCA4N2Q3YjI1MjJlOWM2OTZiMmE1YjFkYjNj
YmExYjQ4Njg0ZGIyZjc1Li4yOGI5OWJhOGZiMTUxODk4OTk3MTk4ODAwZjYxM2JmNmU2OWEzZjk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCkBAIC0xMTksNyArMTE5LDExIEBAIFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsOjpoCiAgICAgICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7CiAgICAgICAg
IGNhc2UgV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXNTdGFydGVkOiB7CiAgICAg
ICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMigiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OmhhbmRsZUlucHV0IHdoZWVsIHNjcm9sbCIsICJkZWx0YVgiLCAtd2hlZWxFdmVu
dC5kZWx0YVgsICJkZWx0YVkiLCAtd2hlZWxFdmVudC5kZWx0YVkpOworI2lmIFBMQVRGT1JNKENI
Uk9NSVVNKQogICAgICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJ5KFdlYlBv
aW50KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSwgSW50U2l6ZSgtd2hlZWxFdmVudC5kZWx0
YVgsIC13aGVlbEV2ZW50LmRlbHRhWSkpOworI2Vsc2UKKyAgICAgICAgICAgIG1faW5wdXRIYW5k
bGVyQ2xpZW50LT5zY3JvbGxCeShXZWJQb2ludCh3aGVlbEV2ZW50LngsIHdoZWVsRXZlbnQueSks
IFdlYkZsb2F0UG9pbnQoLXdoZWVsRXZlbnQuZGVsdGFYLCAtd2hlZWxFdmVudC5kZWx0YVkpKTsK
KyNlbmRpZgogICAgICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEVuZCgpOwog
ICAgICAgICAgICAgcmV0dXJuIERpZEhhbmRsZTsKICAgICAgICAgfQpAQCAtMTU1LDcgKzE1OSwx
MSBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogCiAgICAgICAgIGNvbnN0IFdlYkdlc3R1cmVF
dmVudCYgZ2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+
KCZldmVudCk7CiAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShXZWJQb2lu
dChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpLAorI2lmIFBMQVRGT1JNKENIUk9NSVVN
KQogICAgICAgICAgICAgSW50U2l6ZSgtZ2VzdHVyZUV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRl
bHRhWCwgLWdlc3R1cmVFdmVudC5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkpKTsKKyNlbHNlCisg
ICAgICAgICAgICBXZWJGbG9hdFBvaW50KC1nZXN0dXJlRXZlbnQuZGF0YS5zY3JvbGxVcGRhdGUu
ZGVsdGFYLCAtZ2VzdHVyZUV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSkpOworI2VuZGlm
CiAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQpIHsKICAgICAgICAgQVNTRVJUKG1fZXhw
ZWN0U2Nyb2xsVXBkYXRlRW5kKTsKQEAgLTI3Myw5ICsyODEsMTUgQEAgYm9vbCBXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbDo6Y2FuY2VsQ3VycmVudEZsaW5nKCkKICAgICByZXR1cm4gaGFk
RmxpbmdBbmltYXRpb247CiB9CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKIHZvaWQgV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5KGNvbnN0IEludFBvaW50JiBpbmNyZW1l
bnQpCiB7CiAgICAgaWYgKGluY3JlbWVudCA9PSBJbnRQb2ludDo6emVybygpKQorI2Vsc2UKK3Zv
aWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5KGNvbnN0IEZsb2F0UG9p
bnQmIGluY3JlbWVudCkKK3sKKyAgICBpZiAoaW5jcmVtZW50ID09IEZsb2F0UG9pbnQ6Onplcm8o
KSkKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAKICAgICBUUkFDRV9FVkVOVDIoImNjIiwgIldl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSIsICJ4IiwgaW5jcmVtZW50Lngo
KSwgInkiLCBpbmNyZW1lbnQueSgpKTsKQEAgLTI5Myw4ICszMDcsMTMgQEAgdm9pZCBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmIGluY3JlbWVu
dCkKICAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBk
aXNwb3NpdGlvbiA9IGhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbChzeW50aGV0aWNXaGVlbCk7CiAg
ICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgRGlkSGFuZGxlOgorI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQogICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmN1bXVsYXRpdmVT
Y3JvbGwud2lkdGggKz0gaW5jcmVtZW50LngoKTsKICAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1l
dGVycy5jdW11bGF0aXZlU2Nyb2xsLmhlaWdodCArPSBpbmNyZW1lbnQueSgpOworI2Vsc2UKKyAg
ICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsLnggKz0gaW5jcmVt
ZW50LngoKTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xs
LnkgKz0gaW5jcmVtZW50LnkoKTsKKyNlbmRpZgogICAgIGNhc2UgRHJvcEV2ZW50OgogICAgICAg
ICBicmVhazsKICAgICBjYXNlIERpZE5vdEhhbmRsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCmluZGV4
IGZhODFkZTk0NTI3Y2FkOWUyY2FhY2JkNWE5ZDRhODczYjM5NmNlZjEuLjE3ODVkMWM1NzY3ZjFk
ODA4ZjJlNDQ3ZGZhZTUzMDBkZjhhNzkzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaApAQCAtNjUs
NyArNjUsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBtb25v
dG9uaWNUaW1lKTsKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0
IGltcGxlbWVudGF0aW9uLgorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworI2Vsc2UKKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworI2VuZGlmCiAKICAg
ICBpbnQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZjZmOWZjNmZhN2Mx
MjQ4MGFkNDA2Y2U1YTg5OTVlYTYzZDRjM2M5MC4uNTc1ODgyOTVmOTdhMTZlYjFiNThjNDBkNWRk
ZjllZGFhNzg3NGVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcApAQCAtNjQxLDcgKzY0MSwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZVVw
KEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogI2VuZGlmCiB9
CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKIHZvaWQgV2ViVmlld0ltcGw6OnNjcm9sbEJ5KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBkZWx0YSkKKyNlbHNlCit2b2lkIFdlYlZpZXdJbXBsOjpz
Y3JvbGxCeShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBkZWx0YSkKKyNlbmRpZgogewogICAg
IFdlYk1vdXNlV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKICAgICBjb25zdCBmbG9hdCB0aWNr
RGl2aXNvciA9IFdlYkNvcmU6OldoZWVsRXZlbnQ6OnRpY2tNdWx0aXBsaWVyOwpAQCAtNzk5LDcg
KzgwMywxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmlt
YXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcgogICAgIG1fbGFzdFdoZWVsUG9zaXRp
b24gPSBwYXJhbWV0ZXJzLnBvaW50OwogICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBw
YXJhbWV0ZXJzLmdsb2JhbFBvaW50OwogICAgIG1fZmxpbmdNb2RpZmllciA9IHBhcmFtZXRlcnMu
bW9kaWZpZXJzOworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIE93blB0cjxQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZT4gY3VydmUgPSBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmdldCgpLT5j
cmVhdGVDdXJ2ZShwYXJhbWV0ZXJzLnNvdXJjZURldmljZSwgcGFyYW1ldGVycy5kZWx0YSwgSW50
UG9pbnQocGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsKSk7CisjZWxzZQorICAgIE93blB0cjxQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUgPSBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6
OmdldCgpLT5jcmVhdGVDdXJ2ZShwYXJhbWV0ZXJzLnNvdXJjZURldmljZSwgcGFyYW1ldGVycy5k
ZWx0YSwgcGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsKTsKKyNlbmRpZgogICAgIG1fZ2VzdHVy
ZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKGN1cnZl
LnJlbGVhc2UoKSwgdGhpcywgcGFyYW1ldGVycy5zdGFydFRpbWUpOwogICAgIHNjaGVkdWxlQW5p
bWF0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRl
eCAwMmExZTUzNzA0MGI2ODAwNzY4ZmMxYmU5MWMzZmFiNmYwNmZlYzUyLi5iM2ZjNjUxMmJmYWVj
YjBlMGI5N2RiOGVjYTQxOGUwN2Y3NWNlN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKQEAgLTQwNSw3ICs0MDUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgaGFz
VG91Y2hFdmVudEhhbmRsZXJzKGJvb2wpOwogCiAgICAgLy8gUGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQgaW1wbGVtZW50YXRpb24gZm9yIHdoZWVsIGZsaW5nLgorI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
OworI2Vsc2UKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYpOworI2VuZGlmCiAKICAgICAvLyBIYW5kbGVzIGNvbnRleHQgbWVudSBldmVudHMgb3Jp
Z25hdGVkIHZpYSB0aGUgdGhlIGtleWJvYXJkLiBUaGVzZQogICAgIC8vIGluY2x1ZGUgdGhlIFZL
X0FQUFMgdmlydHVhbCBrZXkgYW5kIHRoZSBTaGlmdCtGMTAgY29tYmluZS4gQ29kZSBpcwo=
</data>
<flag name="review"
          id="188321"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="188324"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>