<?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>38853</bug_id>
          
          <creation_ts>2010-05-10 09:40:01 -0700</creation_ts>
          <short_desc>[GTK] Double clicks cause three button press events</short_desc>
          <delta_ts>2010-06-01 10:54:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39040</blocked>
    
    <blocked>39844</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>abarth</cc>
    
    <cc>alex</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>223358</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-10 09:40:01 -0700</bug_when>
    <thetext>I believe that triple clicks also cause 5. This, and the lack of leapForward support in the DRT, cause us to fail fast/events/click-count.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223414</commentid>
    <comment_count>1</comment_count>
      <attachid>55577</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-10 11:17:14 -0700</bug_when>
    <thetext>Created attachment 55577
Add leapForward support to the GTK+ DRT

Attached a patch to add leapForward support to the DRT. The behavior of leapForward is described here: http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223417</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-10 11:22:20 -0700</bug_when>
    <thetext>Attachment 55577 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/DumpRenderTree/gtk/EventSender.cpp:130:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 1 in 4 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>223423</commentid>
    <comment_count>3</comment_count>
      <attachid>55579</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-10 11:31:43 -0700</bug_when>
    <thetext>Created attachment 55579
Patch with style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223458</commentid>
    <comment_count>4</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-05-10 12:46:20 -0700</bug_when>
    <thetext>Could the patch be divided like:
  - Refactoring, these changes look nice: prepareMouseButtonEvent, sendOrQueueEvent, 
  - Fix click problems
  - leapForward support, why is this required? Could you just leave the main loop iterate as usual? 

+            while (!doneLeapingForward)
+                gtk_main_iteration();

Does this change in the condition inside makeEventSender solves the clicks problem or a problem with the replaying queue?

-    if (!replayingSavedEvents) {
-        // This function can be called in the middle of a test, even
-        // while replaying saved events. Resetting these while doing that
-        // can break things.
+    if (isTopFrame) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223531</commentid>
    <comment_count>5</comment_count>
      <attachid>55607</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-10 15:10:35 -0700</bug_when>
    <thetext>Created attachment 55607
Only initialize the EventSender when loading the top frame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223676</commentid>
    <comment_count>6</comment_count>
      <attachid>55642</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-10 19:09:42 -0700</bug_when>
    <thetext>Created attachment 55642
Add leapForward support to the DRT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223691</commentid>
    <comment_count>7</comment_count>
      <attachid>55648</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-10 19:32:11 -0700</bug_when>
    <thetext>Created attachment 55648
Small EventSender cleanups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223711</commentid>
    <comment_count>8</comment_count>
      <attachid>55653</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-10 20:50:52 -0700</bug_when>
    <thetext>Created attachment 55653
Add leapForward support to the GTK+ DRT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223712</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-10 20:52:37 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Could the patch be divided like:
&gt;   - Refactoring, these changes look nice: prepareMouseButtonEvent, sendOrQueueEvent, 
&gt;   - Fix click problems

Thanks for the review!

I&apos;ve split the patch into two:
1. One to add rudimentary leapForward support which includes the initialization fix.
2. Another which includes the style fixes and add prepareMouseButtonEvent.

&gt;   - leapForward support, why is this required? Could you just leave the main loop iterate as usual? 
&gt; 
&gt; +            while (!doneLeapingForward)
&gt; +                gtk_main_iteration();
&gt; 

I think you&apos;re right here. I&apos;ve reworked the logic a bit. It&apos;s simpler now, because we don&apos;t need a lot of the drag-and-drop stuff yet (perhaps until we add dropping support to the DRT and perhaps never).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225011</commentid>
    <comment_count>10</comment_count>
      <attachid>55917</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-12 17:53:55 -0700</bug_when>
    <thetext>Created attachment 55917
Take into account the timeOffset when synthesizing events in the DRT

Added an additional change which adjust event time relative to the timeOffset controlled via leapForward. This will ensure that clicks going into WebKit will not be mistaken for double, quadruple, quintuple, sextuple, etc clicks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225015</commentid>
    <comment_count>11</comment_count>
      <attachid>55918</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-12 17:59:27 -0700</bug_when>
    <thetext>Created attachment 55918
Take into account the timeOffset when synthesizing events in the DRT

Added a patch with a small addition to the previous one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225017</commentid>
    <comment_count>12</comment_count>
      <attachid>55919</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-12 18:07:31 -0700</bug_when>
    <thetext>Created attachment 55919
Take into account the timeOffset when synthesizing events in the DRT

My sincere apologies for the patch spam. This should be correct version. It&apos;s been a long day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225028</commentid>
    <comment_count>13</comment_count>
      <attachid>55922</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-12 18:22:19 -0700</bug_when>
    <thetext>Created attachment 55922
Send the proper mouse events during clicking

I&apos;ve added a patch that fixes the test. Click counting is now very similar to that of Win32, which also does not support native click counts above 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225079</commentid>
    <comment_count>14</comment_count>
      <attachid>55933</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-12 20:35:17 -0700</bug_when>
    <thetext>Created attachment 55933
Send the proper mouse events during clicking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225866</commentid>
    <comment_count>15</comment_count>
      <attachid>56076</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-14 09:07:51 -0700</bug_when>
    <thetext>Created attachment 56076
Send the proper mouse events during clicking (update)

I&apos;ve attached an updated version of the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225889</commentid>
    <comment_count>16</comment_count>
      <attachid>55648</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-14 09:47:49 -0700</bug_when>
    <thetext>Comment on attachment 55648
Small EventSender cleanups

Great stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225934</commentid>
    <comment_count>17</comment_count>
      <attachid>56092</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-14 11:57:38 -0700</bug_when>
    <thetext>Created attachment 56092
Combine two related patches

I&apos;ve combined the leapForward support patch and the timeOffset update. These changes
are very closely related and should probably be in the same patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226157</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-14 23:31:16 -0700</bug_when>
    <thetext>Attachment 55648 was posted by a committer and has review+, assigning to Martin Robinson for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231271</commentid>
    <comment_count>19</comment_count>
      <attachid>57235</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-27 06:32:51 -0700</bug_when>
    <thetext>Created attachment 57235
Rudimentary leapForward support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231273</commentid>
    <comment_count>20</comment_count>
      <attachid>56092</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-27 06:37:03 -0700</bug_when>
    <thetext>Comment on attachment 56092
Combine two related patches

Xan and Alex expressed some concern that sending events with the time component as GDK_CURRENT_TIME + timeOffset may have unintended consequences. I&apos;ve attached a new patch which confines it to only mouseUp and mouseDown event simulation. These events are sent directly to the widget and should not affect GDK or GTK+ internal state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231366</commentid>
    <comment_count>21</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-05-27 10:57:32 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=57235) [details]
&gt; Rudimentary leapForward support

Patch looks good to me, it has the leapForward feature and a lot of really nice refactoring that makes sense to me (refactor events sending in functions, remove variables, fix makeSenderEvent function). Nitpicking, there is a blank line added in the first line of the method mouseDownCallback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231642</commentid>
    <comment_count>22</comment_count>
      <attachid>57317</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-28 04:50:03 -0700</bug_when>
    <thetext>Created attachment 57317
Rudimentary leapForward support (small fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231643</commentid>
    <comment_count>23</comment_count>
      <attachid>57235</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-28 04:51:25 -0700</bug_when>
    <thetext>Comment on attachment 57235
Rudimentary leapForward support

I&apos;ve attached a new patch which doesn&apos;t remove the missing line and alos fixes the issue where the timeOffset was used during mouse motion events, but not mouse down events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232670</commentid>
    <comment_count>24</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-06-01 04:02:51 -0700</bug_when>
    <thetext>I&apos;ve checked the second one, after checking with marting a couple of things they look good and both tests work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232678</commentid>
    <comment_count>25</comment_count>
      <attachid>56076</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-06-01 04:43:32 -0700</bug_when>
    <thetext>Comment on attachment 56076
Send the proper mouse events during clicking (update)

&gt;+    static gint doubleClickDistance = 0;
&gt;+    static gint doubleClickTime = 0;
&gt;+    if (!doubleClickDistance) {
&gt;+        GtkSettings* settings = gtk_settings_get_for_screen(gdk_drawable_get_screen(widget-&gt;window));
&gt;+        g_object_get(settings, &quot;gtk-double-click-distance&quot;, &amp;doubleClickDistance, NULL);
&gt;+        g_object_get(settings, &quot;gtk-double-click-time&quot;, &amp;doubleClickTime, NULL);
&gt;+    }

You should connect to the notify signal in case the values are updated. You can do this in a follow-up.

&gt;+
&gt;+    PlatformMouseEvent platformEvent(event);
&gt;+
&gt;+    if ((event-&gt;type == GDK_2BUTTON_PRESS || event-&gt;type == GDK_3BUTTON_PRESS)
&gt;+        || ((abs(event-&gt;x - previousPoint.x()) &lt; doubleClickDistance)
&gt;+            &amp;&amp; (abs(event-&gt;y - previousPoint.y()) &lt; doubleClickDistance)
&gt;+            &amp;&amp; (event-&gt;time - previousTime &lt; static_cast&lt;guint&gt;(doubleClickTime))
&gt;+            &amp;&amp; (event-&gt;button == previousButton)))
&gt;+        currentClickCount++;
&gt;+    else
&gt;+        currentClickCount = 1;

We should have a comment explaining why do we have to do the manual check for increased click count (since GTK+ only checks up to triple click).


LGTM otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232681</commentid>
    <comment_count>26</comment_count>
      <attachid>57317</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-06-01 04:54:57 -0700</bug_when>
    <thetext>Comment on attachment 57317
Rudimentary leapForward support (small fix)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232751</commentid>
    <comment_count>27</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-06-01 07:59:02 -0700</bug_when>
    <thetext>Committed r60478: &lt;http://trac.webkit.org/changeset/60478&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232771</commentid>
    <comment_count>28</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-06-01 08:47:41 -0700</bug_when>
    <thetext>Committed r60479: &lt;http://trac.webkit.org/changeset/60479&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232804</commentid>
    <comment_count>29</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-06-01 10:18:13 -0700</bug_when>
    <thetext>(In reply to comment #25)

Thanks for the review!

&gt; You should connect to the notify signal in case the values are updated. You can do this in a follow-up.

Xan and I decided that it&apos;s better in this case to simply not cache these values. If we run into performance disadvantages later, we can fix them then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232820</commentid>
    <comment_count>30</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-06-01 10:30:52 -0700</bug_when>
    <thetext>All patches landed as of r60482</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232841</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-01 10:54:19 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/60485 might have broken Chromium Linux Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/60483
http://trac.webkit.org/changeset/60484
http://trac.webkit.org/changeset/60485
http://trac.webkit.org/changeset/60486</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55577</attachid>
            <date>2010-05-10 11:17:14 -0700</date>
            <delta_ts>2010-05-10 11:31:43 -0700</delta_ts>
            <desc>Add leapForward support to the GTK+ DRT</desc>
            <filename>0001-Double-clicks-cause-three-button-press-events.patch</filename>
            <type>text/plain</type>
            <size>21118</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSAwNWUzZjhiOTgwYzY1NGIwZDBmNWI4MTk2MzY4MzMzMzFkMDY2OTU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDEwIE1heSAyMDEwIDA5OjU2OjQ2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
RG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRzCiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKClBhdGNoIGJ5IE1hcnRpbiBSb2Jp
bnNvbiA8bXJvYmluc29uQGlnYWxpYS5jb20+IG9uIDIwMTAtMDUtMTAKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgpBZGQgbGVhcEZvcndhcmQgc3VwcG9ydCB0byB0aGUgR3RrKyBEUlQuCgoq
IER1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6Cih3ZWJWaWV3V2luZG93T2Jq
ZWN0Q2xlYXJlZCk6IE9ubHkgaW5pdGlhbGl6ZSB0aGUgRXZlbnRTZW5kZXIgd2hlbiBsb2FkaW5n
IHRoZSB0b3AgZnJhbWUuCiogRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcDoKKGxl
YXBGb3J3YXJkQ2FsbGJhY2spOiBBZGQgc3VwcG9ydCBmb3IgYWRqdXN0aW5nIHRoZSB0aW1lIG9m
ZnNldCBvbiBsZWFwRm9yd2FyZCgpCihwcmVwYXJlTW91c2VCdXR0b25FdmVudCk6IEFkZGVkLgoo
Y29udGV4dENsaWNrQ2FsbGJhY2spOiBVc2UgcHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQgJiBzZW5k
T3JRdWV1ZUV2ZW50LgoodXBkYXRlQ2xpY2tDb3VudCk6IFRha2UgdGltZSBvZmZzZXQgaW50byBh
Y2NvdW50IHdoZW4gY291bnRpbmcgY2xpY2tzLgoobW91c2VEb3duQ2FsbGJhY2spOiBVc2UgcHJl
cGFyZU1vdXNlQnV0dG9uRXZlbnQgJiBzZW5kT3JRdWV1ZUV2ZW50LgooZ2V0U3RhdGVGbGFncyk6
IENoYW5nZSBkb3duL2N1cnJlbnRFdmVudEJ1dHRvbiBpbnRvIGJ1dHRvbkN1cnJlbnRseS9sYXN0
Q2xpY2tCdXR0b24uCihtb3VzZVVwQ2FsbGJhY2spOiBVc2UgcHJlcGFyZU1vdXNlQnV0dG9uRXZl
bnQuCihtb3VzZU1vdmVUb0NhbGxiYWNrKTogVXNlIHNlbmRPclF1ZXVlRXZlbnQuCihtb3VzZVdo
ZWVsVG9DYWxsYmFjayk6IFVzZSBzZW5kT3JRdWV1ZUV2ZW50Lgooc2VuZE9yUXVldWVFdmVudCk6
IEFkZGVkLgooZGlzcGF0Y2hFdmVudCk6IEFkZGVkLgoobGVhcEZvcndhcmREZWxheUNhbGxiYWNr
KTogQWRkZWQuCihyZXBsYXlTYXZlZEV2ZW50cyk6IFByb3Blcmx5IGhhbmRsZSBsZWFwRm9yd2Fy
ZCBoZXJlIGFuZCBkZWZlciB0byBkaXNwYXRjaEV2ZW50LgoobWFrZUV2ZW50U2VuZGVyKTogT25s
eSBpbml0aWFsaXplIHRoZSBFdmVudFNlbmRlciB3aGVuIGxvYWRpbmcgdGhlIHRvcCBmcmFtZS4K
KiBEdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuaDogT25seSBpbml0aWFsaXplIHRoZSBF
dmVudFNlbmRlciB3aGVuIGxvYWRpbmcgdGhlIHRvcCBmcmFtZS4KLS0tCiBXZWJLaXRUb29scy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOCArKwogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCB8ICAgIDIgKy0KIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAgICAgfCAgMzQxICsrKysr
KysrKy0tLS0tLS0tLS0tLQogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2Vu
ZGVyLmggICAgICB8ICAgIDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMTgxIGluc2VydGlvbnMoKyks
IDE5MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMTk5YWYyZC4uMWVjNjY4NyAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDEwLTA1LTEwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
b3VibGUgY2xpY2tzIGNhdXNlIHRocmVlIGJ1dHRvbiBwcmVzcyBldmVudHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODUzCisKKyAgICAgICAgQWRk
IGxlYXBGb3J3YXJkIHN1cHBvcnQgdG8gdGhlIEd0aysgRFJULgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHdlYlZpZXdXaW5kb3dP
YmplY3RDbGVhcmVkKTogT25seSBpbml0aWFsaXplIHRoZSBFdmVudFNlbmRlciB3aGVuIGxvYWRp
bmcgdGhlIHRvcCBmcmFtZS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5k
ZXIuY3BwOgorICAgICAgICAobGVhcEZvcndhcmRDYWxsYmFjayk6IEFkZCBzdXBwb3J0IGZvciBh
ZGp1c3RpbmcgdGhlIHRpbWUgb2Zmc2V0IG9uIGxlYXBGb3J3YXJkKCkKKyAgICAgICAgKHByZXBh
cmVNb3VzZUJ1dHRvbkV2ZW50KTogQWRkZWQuCisgICAgICAgIChjb250ZXh0Q2xpY2tDYWxsYmFj
ayk6IFVzZSBwcmVwYXJlTW91c2VCdXR0b25FdmVudCAmIHNlbmRPclF1ZXVlRXZlbnQuCisgICAg
ICAgICh1cGRhdGVDbGlja0NvdW50KTogVGFrZSB0aW1lIG9mZnNldCBpbnRvIGFjY291bnQgd2hl
biBjb3VudGluZyBjbGlja3MuCisgICAgICAgIChtb3VzZURvd25DYWxsYmFjayk6IFVzZSBwcmVw
YXJlTW91c2VCdXR0b25FdmVudCAmIHNlbmRPclF1ZXVlRXZlbnQuCisgICAgICAgIChnZXRTdGF0
ZUZsYWdzKTogQ2hhbmdlIGRvd24vY3VycmVudEV2ZW50QnV0dG9uIGludG8gYnV0dG9uQ3VycmVu
dGx5L2xhc3RDbGlja0J1dHRvbi4KKyAgICAgICAgKG1vdXNlVXBDYWxsYmFjayk6IFVzZSBwcmVw
YXJlTW91c2VCdXR0b25FdmVudC4KKyAgICAgICAgKG1vdXNlTW92ZVRvQ2FsbGJhY2spOiBVc2Ug
c2VuZE9yUXVldWVFdmVudC4KKyAgICAgICAgKG1vdXNlV2hlZWxUb0NhbGxiYWNrKTogVXNlIHNl
bmRPclF1ZXVlRXZlbnQuCisgICAgICAgIChzZW5kT3JRdWV1ZUV2ZW50KTogQWRkZWQuCisgICAg
ICAgIChkaXNwYXRjaEV2ZW50KTogQWRkZWQuCisgICAgICAgIChsZWFwRm9yd2FyZERlbGF5Q2Fs
bGJhY2spOiBBZGRlZC4KKyAgICAgICAgKHJlcGxheVNhdmVkRXZlbnRzKTogUHJvcGVybHkgaGFu
ZGxlIGxlYXBGb3J3YXJkIGhlcmUgYW5kIGRlZmVyIHRvIGRpc3BhdGNoRXZlbnQuCisgICAgICAg
IChtYWtlRXZlbnRTZW5kZXIpOiBPbmx5IGluaXRpYWxpemUgdGhlIEV2ZW50U2VuZGVyIHdoZW4g
bG9hZGluZyB0aGUgdG9wIGZyYW1lLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9FdmVu
dFNlbmRlci5oOiBPbmx5IGluaXRpYWxpemUgdGhlIEV2ZW50U2VuZGVyIHdoZW4gbG9hZGluZyB0
aGUgdG9wIGZyYW1lLgorCiAyMDEwLTA1LTEwICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggMGYzY2Ez
OC4uZTkxMmE0OCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1
bXBSZW5kZXJUcmVlLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVt
cFJlbmRlclRyZWUuY3BwCkBAIC02NjIsNyArNjYyLDcgQEAgc3RhdGljIHZvaWQgd2ViVmlld1dp
bmRvd09iamVjdENsZWFyZWQoV2ViS2l0V2ViVmlldyogdmlldywgV2ViS2l0V2ViRnJhbWUqIGZy
YW0KICAgICBBU1NFUlQoIWV4Y2VwdGlvbik7CiAKICAgICBKU1N0cmluZ1JlZiBldmVudFNlbmRl
clN0ciA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJldmVudFNlbmRlciIpOwotICAg
IEpTVmFsdWVSZWYgZXZlbnRTZW5kZXIgPSBtYWtlRXZlbnRTZW5kZXIoY29udGV4dCk7CisgICAg
SlNWYWx1ZVJlZiBldmVudFNlbmRlciA9IG1ha2VFdmVudFNlbmRlcihjb250ZXh0LCAhd2Via2l0
X3dlYl9mcmFtZV9nZXRfcGFyZW50KGZyYW1lKSk7CiAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShj
b250ZXh0LCB3aW5kb3dPYmplY3QsIGV2ZW50U2VuZGVyU3RyLCBldmVudFNlbmRlciwga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSwg
MCk7CiAgICAgSlNTdHJpbmdSZWxlYXNlKGV2ZW50U2VuZGVyU3RyKTsKIH0KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDljMjdkOGMuLjVk
MGU1NWUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNl
bmRlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVy
LmNwcApAQCAtNDUsMjggKzQ1LDI5IEBACiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNp
bmNsdWRlIDxzdHJpbmcuaD4KIAotLy8gVE9ETzogQ3VycmVudGx5IGRyYWcgYW5kIGRyb3AgcmVs
YXRlZCBjb2RlIGlzIGxlZnQgb3V0IGFuZAotLy8gc2hvdWxkIGJlIG1lcmdlZCBvbmNlIHdlIGhh
dmUgZHJhZyBhbmQgZHJvcCBzdXBwb3J0IGluIFdlYkNvcmUuCisvLyBGSVhNRTogSW1wbGVtZW50
IHN1cHBvcnQgZm9yIHN5bnRoZXNpemluZyBkcm9wIGV2ZW50cy4KIAogZXh0ZXJuICJDIiB7CiAg
ICAgZXh0ZXJuIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQoV2ViS2l0V2ViRnJhbWUqIGZy
YW1lKTsKIH0KIAotc3RhdGljIGJvb2wgZG93biA9IGZhbHNlOwotc3RhdGljIGJvb2wgY3VycmVu
dEV2ZW50QnV0dG9uID0gMTsKLXN0YXRpYyBib29sIGRyYWdNb2RlID0gdHJ1ZTsKLXN0YXRpYyBi
b29sIHJlcGxheWluZ1NhdmVkRXZlbnRzID0gZmFsc2U7CitzdGF0aWMgYm9vbCBkcmFnTW9kZTsK
K3N0YXRpYyBib29sIHJlcGxheWluZ1NhdmVkRXZlbnRzOworc3RhdGljIGJvb2wgZG9uZUxlYXBp
bmdGb3J3YXJkOworc3RhdGljIGludCB0aW1lT2Zmc2V0OworCiBzdGF0aWMgaW50IGxhc3RNb3Vz
ZVBvc2l0aW9uWDsKIHN0YXRpYyBpbnQgbGFzdE1vdXNlUG9zaXRpb25ZOwotCiBzdGF0aWMgaW50
IGxhc3RDbGlja1Bvc2l0aW9uWDsKIHN0YXRpYyBpbnQgbGFzdENsaWNrUG9zaXRpb25ZOwotc3Rh
dGljIGludCBjbGlja0NvdW50ID0gMDsKK3N0YXRpYyBpbnQgbGFzdENsaWNrVGltZU9mZnNldDsK
K3N0YXRpYyBpbnQgbGFzdENsaWNrQnV0dG9uOworc3RhdGljIGludCBidXR0b25DdXJyZW50bHlE
b3duOworc3RhdGljIGludCBjbGlja0NvdW50OwogCiBzdHJ1Y3QgRGVsYXllZE1lc3NhZ2Ugewog
ICAgIEdka0V2ZW50IGV2ZW50OwogICAgIGd1bG9uZyBkZWxheTsKLSAgICBnYm9vbGVhbiBpc0Ry
YWdFdmVudDsKIH07CiAKIHN0YXRpYyBEZWxheWVkTWVzc2FnZSBtc2dRdWV1ZVsxMDI0XTsKQEAg
LTg0LDYgKzg1LDEwIEBAIGVudW0gS2V5TG9jYXRpb25Db2RlIHsKICAgICBET01fS0VZX0xPQ0FU
SU9OX05VTVBBRCAgICAgICAgPSAweDAzCiB9OwogCitzdGF0aWMgdm9pZCBzZW5kT3JRdWV1ZUV2
ZW50KEdka0V2ZW50IGV2ZW50KTsKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnQoR2RrRXZlbnQg
ZXZlbnQpOworc3RhdGljIGd1aW50IGdldFN0YXRlRmxhZ3MoKTsKKwogc3RhdGljIEpTVmFsdWVS
ZWYgZ2V0RHJhZ01vZGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
IHsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIGRyYWdNb2RlKTsKQEAg
LTk3LDQxICsxMDIsNjIgQEAgc3RhdGljIGJvb2wgc2V0RHJhZ01vZGVDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmkKIAogc3RhdGljIEpTVmFs
dWVSZWYgbGVhcEZvcndhcmRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7
Ci0gICAgLy8gRklYTUU6IEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgZm9yd2FyZCBsZWFwcworICAg
IGlmIChhcmd1bWVudENvdW50ID4gMCkgeworICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlXS5k
ZWxheSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7
CisgICAgICAgIHRpbWVPZmZzZXQgKz0gbXNnUXVldWVbZW5kT2ZRdWV1ZV0uZGVsYXk7CisgICAg
ICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKTsKKyAgICB9CisKICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVm
IGNvbnRleHRDbGlja0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK2Jvb2wg
cHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBpbnQgYnV0dG9uKQogewot
ICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7Ci0KICAgICBXZWJLaXRXZWJW
aWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKICAg
ICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWVtc2V0KGV2ZW50LCAwLCBzaXplb2Yo
ZXZlbnQpKTsKKyAgICBldmVudC0+YnV0dG9uLmJ1dHRvbiA9IGJ1dHRvbjsKKyAgICBldmVudC0+
YnV0dG9uLnggPSBsYXN0TW91c2VQb3NpdGlvblg7CisgICAgZXZlbnQtPmJ1dHRvbi55ID0gbGFz
dE1vdXNlUG9zaXRpb25ZOworICAgIGV2ZW50LT5idXR0b24ud2luZG93ID0gR1RLX1dJREdFVCh2
aWV3KS0+d2luZG93OworICAgIGV2ZW50LT5idXR0b24udGltZSA9IEdES19DVVJSRU5UX1RJTUU7
CisgICAgZXZlbnQtPmJ1dHRvbi5kZXZpY2UgPSBnZGtfZGV2aWNlX2dldF9jb3JlX3BvaW50ZXIo
KTsKKyAgICBldmVudC0+YnV0dG9uLnN0YXRlID0gZ2V0U3RhdGVGbGFncygpOworCisgICAgaW50
IHhSb290LCB5Um9vdDsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLDE3LDMpCisgICAgZ2RrX3dp
bmRvd19nZXRfcm9vdF9jb29yZHMoR1RLX1dJREdFVCh2aWV3KS0+d2luZG93LCBsYXN0TW91c2VQ
b3NpdGlvblgsIGxhc3RNb3VzZVBvc2l0aW9uWSwgJnhSb290LCAmeVJvb3QpOworI2Vsc2UKKyAg
ICBnZXRSb290Q29vcmRzKEdUS19XSURHRVQodmlldyksICZ4Um9vdCwgJnlSb290KTsKKyNlbmRp
ZgorICAgIGV2ZW50LT5idXR0b24ueF9yb290ID0geFJvb3Q7CisgICAgZXZlbnQtPmJ1dHRvbi55
X3Jvb3QgPSB5Um9vdDsKIAorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgSlNWYWx1ZVJl
ZiBjb250ZXh0Q2xpY2tDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CiAg
ICAgR2RrRXZlbnQgZXZlbnQ7Ci0gICAgbWVtc2V0KCZldmVudCwgMCwgc2l6ZW9mKGV2ZW50KSk7
Ci0gICAgZXZlbnQuYnV0dG9uLmJ1dHRvbiA9IDM7Ci0gICAgZXZlbnQuYnV0dG9uLnggPSBsYXN0
TW91c2VQb3NpdGlvblg7Ci0gICAgZXZlbnQuYnV0dG9uLnkgPSBsYXN0TW91c2VQb3NpdGlvblk7
Ci0gICAgZXZlbnQuYnV0dG9uLndpbmRvdyA9IEdUS19XSURHRVQodmlldyktPndpbmRvdzsKKyAg
ICBpZiAoIXByZXBhcmVNb3VzZUJ1dHRvbkV2ZW50KCZldmVudCwgMykpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIGdib29sZWFuIHJldHVybl92
YWw7Ci0gICAgZG93biA9IHRydWU7CiAgICAgZXZlbnQudHlwZSA9IEdES19CVVRUT05fUFJFU1M7
Ci0gICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25fcHJlc3NfZXZlbnQiLCAm
ZXZlbnQsICZyZXR1cm5fdmFsKTsKLQotICAgIGRvd24gPSBmYWxzZTsKKyAgICBzZW5kT3JRdWV1
ZUV2ZW50KGV2ZW50KTsKICAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9SRUxFQVNFOwotICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9uX3JlbGVhc2VfZXZlbnQiLCAmZXZl
bnQsICZyZXR1cm5fdmFsKTsKKyAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAogc3RhdGljIHZvaWQgdXBk
YXRlQ2xpY2tDb3VudChpbnQgYnV0dG9uKQogewotICAgIC8vIEZJWE1FOiB0YWtlIHRoZSBsYXN0
IGNsaWNrZWQgYnV0dG9uIG51bWJlciBhbmQgdGhlIHRpbWUgb2YgbGFzdCBjbGljayBpbnRvIGFj
Y291bnQuCi0gICAgaWYgKGxhc3RDbGlja1Bvc2l0aW9uWCAhPSBsYXN0TW91c2VQb3NpdGlvblgg
fHwgbGFzdENsaWNrUG9zaXRpb25ZICE9IGxhc3RNb3VzZVBvc2l0aW9uWSB8fCBjdXJyZW50RXZl
bnRCdXR0b24gIT0gYnV0dG9uKQorICAgIGlmIChsYXN0Q2xpY2tQb3NpdGlvblggIT0gbGFzdE1v
dXNlUG9zaXRpb25YCisgICAgICAgIHx8IGxhc3RDbGlja1Bvc2l0aW9uWSAhPSBsYXN0TW91c2VQ
b3NpdGlvblkKKyAgICAgICAgfHwgbGFzdENsaWNrQnV0dG9uICE9IGJ1dHRvbgorICAgICAgICB8
fCB0aW1lT2Zmc2V0IC0gbGFzdENsaWNrVGltZU9mZnNldCA+PSAxKQogICAgICAgICBjbGlja0Nv
dW50ID0gMTsKICAgICBlbHNlCiAgICAgICAgIGNsaWNrQ291bnQrKzsKQEAgLTE1NCwxMjkgKzE4
MCw2MSBAQCBzdGF0aWMgdm9pZCBnZXRSb290Q29vcmRzKEd0a1dpZGdldCogdmlldywgaW50KiBy
b290WCwgaW50KiByb290WSkKIAogc3RhdGljIEpTVmFsdWVSZWYgbW91c2VEb3duQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIFdlYktpdFdlYlZpZXcqIHZpZXcg
PSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwotICAgIGlmICghdmll
dykKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAg
ZG93biA9IHRydWU7Ci0KLSAgICBHZGtFdmVudCBldmVudDsKLSAgICBtZW1zZXQoJmV2ZW50LCAw
LCBzaXplb2YoZXZlbnQpKTsKLSAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9QUkVTUzsKLSAg
ICBldmVudC5idXR0b24uYnV0dG9uID0gMTsKLQorICAgIGludCBidXR0b24gPSAxOwogICAgIGlm
IChhcmd1bWVudENvdW50ID09IDEpIHsKLSAgICAgICAgZXZlbnQuYnV0dG9uLmJ1dHRvbiA9IChp
bnQpSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSArIDE7
CisgICAgICAgIGJ1dHRvbiA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRl
eHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSkgKyAxOwogICAgICAgICBnX3JldHVybl92YWxf
aWZfZmFpbCgoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbiksIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpKTsKICAgICB9CiAKLSAgICBjdXJyZW50RXZlbnRCdXR0b24gPSBldmVudC5idXR0
b24uYnV0dG9uOwotCi0gICAgZXZlbnQuYnV0dG9uLnggPSBsYXN0TW91c2VQb3NpdGlvblg7Ci0g
ICAgZXZlbnQuYnV0dG9uLnkgPSBsYXN0TW91c2VQb3NpdGlvblk7Ci0gICAgZXZlbnQuYnV0dG9u
LndpbmRvdyA9IEdUS19XSURHRVQodmlldyktPndpbmRvdzsKLSAgICBldmVudC5idXR0b24udGlt
ZSA9IEdES19DVVJSRU5UX1RJTUU7Ci0gICAgZXZlbnQuYnV0dG9uLmRldmljZSA9IGdka19kZXZp
Y2VfZ2V0X2NvcmVfcG9pbnRlcigpOwotCi0gICAgaW50IHhfcm9vdCwgeV9yb290OwotI2lmIEdU
S19DSEVDS19WRVJTSU9OKDIsMTcsMykKLSAgICBnZGtfd2luZG93X2dldF9yb290X2Nvb3JkcyhH
VEtfV0lER0VUKHZpZXcpLT53aW5kb3csIGxhc3RNb3VzZVBvc2l0aW9uWCwgbGFzdE1vdXNlUG9z
aXRpb25ZLCAmeF9yb290LCAmeV9yb290KTsKLSNlbHNlCi0gICAgZ2V0Um9vdENvb3JkcyhHVEtf
V0lER0VUKHZpZXcpLCAmeF9yb290LCAmeV9yb290KTsKLSNlbmRpZgorICAgIEdka0V2ZW50IGV2
ZW50OworICAgIGlmICghcHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQoJmV2ZW50LCBidXR0b24pKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKLSAgICBldmVu
dC5idXR0b24ueF9yb290ID0geF9yb290OwotICAgIGV2ZW50LmJ1dHRvbi55X3Jvb3QgPSB5X3Jv
b3Q7CisgICAgZXZlbnQudHlwZSA9IEdES19CVVRUT05fUFJFU1M7CisgICAgc2VuZE9yUXVldWVF
dmVudChldmVudCk7CiAKICAgICB1cGRhdGVDbGlja0NvdW50KGV2ZW50LmJ1dHRvbi5idXR0b24p
OwotCi0gICAgaWYgKCFtc2dRdWV1ZVtlbmRPZlF1ZXVlXS5kZWxheSkgewotICAgICAgICB3ZWJr
aXRfd2ViX2ZyYW1lX2xheW91dChtYWluRnJhbWUpOwotCi0gICAgICAgIGdib29sZWFuIHJldHVy
bl92YWw7Ci0gICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9uX3ByZXNz
X2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuX3ZhbCk7Ci0gICAgICAgIGlmIChjbGlja0NvdW50ID09
IDIpIHsKLSAgICAgICAgICAgIGV2ZW50LnR5cGUgPSBHREtfMkJVVFRPTl9QUkVTUzsKLSAgICAg
ICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9uX3ByZXNzX2V2ZW50Iiwg
JmV2ZW50LCAmcmV0dXJuX3ZhbCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAv
LyByZXBsYXlTYXZlZEV2ZW50cyBzaG91bGQgaGF2ZSB0aGUgcmVxdWlyZWQgbG9naWMgdG8gbWFr
ZSBsZWFwRm9yd2FyZCBkZWxheXMgd29yawotICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlKytd
LmV2ZW50ID0gZXZlbnQ7Ci0gICAgICAgIHJlcGxheVNhdmVkRXZlbnRzKCk7CisgICAgaWYgKGNs
aWNrQ291bnQgPT0gMikgeworICAgICAgICBldmVudC50eXBlID0gR0RLXzJCVVRUT05fUFJFU1M7
CisgICAgICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwogICAgIH0KIAorICAgIGJ1dHRvbkN1
cnJlbnRseURvd24gPSBidXR0b247CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogfQogCiBzdGF0aWMgZ3VpbnQgZ2V0U3RhdGVGbGFncygpCiB7Ci0gICAgZ3VpbnQg
c3RhdGUgPSAwOwotCi0gICAgaWYgKGRvd24pIHsKLSAgICAgICAgaWYgKGN1cnJlbnRFdmVudEJ1
dHRvbiA9PSAxKQotICAgICAgICAgICAgc3RhdGUgPSBHREtfQlVUVE9OMV9NQVNLOwotICAgICAg
ICBlbHNlIGlmIChjdXJyZW50RXZlbnRCdXR0b24gPT0gMikKLSAgICAgICAgICAgIHN0YXRlID0g
R0RLX0JVVFRPTjJfTUFTSzsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVudEV2ZW50QnV0dG9uID09
IDMpCi0gICAgICAgICAgICBzdGF0ZSA9IEdES19CVVRUT04zX01BU0s7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIHN0YXRlID0gMDsKLQotICAgIHJldHVybiBzdGF0ZTsKKyAgICBpZiAoYnV0dG9uQ3Vy
cmVudGx5RG93biA9PSAxKQorICAgICAgICByZXR1cm4gR0RLX0JVVFRPTjFfTUFTSzsKKyAgICBp
ZiAoYnV0dG9uQ3VycmVudGx5RG93biA9PSAyKQorICAgICAgICByZXR1cm4gR0RLX0JVVFRPTjJf
TUFTSzsKKyAgICBpZiAoYnV0dG9uQ3VycmVudGx5RG93biA9PSAzKQorICAgICAgICByZXR1cm4g
R0RLX0JVVFRPTjNfTUFTSzsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYg
bW91c2VVcENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKIAotICAgIFdl
YktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJh
bWUpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwotCi0gICAgR2RrRXZlbnQgZXZlbnQ7Ci0gICAgbWVtc2V0KCZldmVudCwgMCwg
c2l6ZW9mKGV2ZW50KSk7Ci0gICAgZXZlbnQudHlwZSA9IEdES19CVVRUT05fUkVMRUFTRTsKLSAg
ICBldmVudC5idXR0b24uYnV0dG9uID0gMTsKLQorICAgIGludCBidXR0b24gPSAxOwogICAgIGlm
IChhcmd1bWVudENvdW50ID09IDEpIHsKLSAgICAgICAgZXZlbnQuYnV0dG9uLmJ1dHRvbiA9IChp
bnQpSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSArIDE7
CisgICAgICAgIGJ1dHRvbiA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRl
eHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSkgKyAxOwogICAgICAgICBnX3JldHVybl92YWxf
aWZfZmFpbCgoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbiksIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpKTsKICAgICB9CiAKLSAgICBjdXJyZW50RXZlbnRCdXR0b24gPSBldmVudC5idXR0
b24uYnV0dG9uOwotCi0gICAgZXZlbnQuYnV0dG9uLnggPSBsYXN0TW91c2VQb3NpdGlvblg7Ci0g
ICAgZXZlbnQuYnV0dG9uLnkgPSBsYXN0TW91c2VQb3NpdGlvblk7Ci0gICAgZXZlbnQuYnV0dG9u
LndpbmRvdyA9IEdUS19XSURHRVQodmlldyktPndpbmRvdzsKLSAgICBldmVudC5idXR0b24udGlt
ZSA9IEdES19DVVJSRU5UX1RJTUU7Ci0gICAgZXZlbnQuYnV0dG9uLmRldmljZSA9IGdka19kZXZp
Y2VfZ2V0X2NvcmVfcG9pbnRlcigpOwotICAgIGV2ZW50LmJ1dHRvbi5zdGF0ZSA9IGdldFN0YXRl
RmxhZ3MoKTsKLQotICAgIGRvd24gPSBmYWxzZTsKLQotICAgIGludCB4X3Jvb3QsIHlfcm9vdDsK
LSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLDE3LDMpCi0gICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9j
b29yZHMoR1RLX1dJREdFVCh2aWV3KS0+d2luZG93LCBsYXN0TW91c2VQb3NpdGlvblgsIGxhc3RN
b3VzZVBvc2l0aW9uWSwgJnhfcm9vdCwgJnlfcm9vdCk7Ci0jZWxzZQotICAgIGdldFJvb3RDb29y
ZHMoR1RLX1dJREdFVCh2aWV3KSwgJnhfcm9vdCwgJnlfcm9vdCk7Ci0jZW5kaWYKLQotICAgIGV2
ZW50LmJ1dHRvbi54X3Jvb3QgPSB4X3Jvb3Q7Ci0gICAgZXZlbnQuYnV0dG9uLnlfcm9vdCA9IHlf
cm9vdDsKLQotICAgIGlmICgoZHJhZ01vZGUgJiYgIXJlcGxheWluZ1NhdmVkRXZlbnRzKSB8fCBt
c2dRdWV1ZVtlbmRPZlF1ZXVlXS5kZWxheSkgewotICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVl
XS5ldmVudCA9IGV2ZW50OwotICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlKytdLmlzRHJhZ0V2
ZW50ID0gdHJ1ZTsKLSAgICAgICAgcmVwbGF5U2F2ZWRFdmVudHMoKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICB3ZWJraXRfd2ViX2ZyYW1lX2xheW91dChtYWluRnJhbWUpOwotCi0gICAgICAgIGdi
b29sZWFuIHJldHVybl92YWw7Ci0gICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAi
YnV0dG9uX3JlbGVhc2VfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICB9CisgICAg
R2RrRXZlbnQgZXZlbnQ7CisgICAgaWYgKCFwcmVwYXJlTW91c2VCdXR0b25FdmVudCgmZXZlbnQs
IGJ1dHRvbikpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IAogICAgIGxhc3RDbGlja1Bvc2l0aW9uWCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsKICAgICBsYXN0
Q2xpY2tQb3NpdGlvblkgPSBsYXN0TW91c2VQb3NpdGlvblk7CisgICAgbGFzdENsaWNrQnV0dG9u
ID0gYnV0dG9uQ3VycmVudGx5RG93bjsKKyAgICBsYXN0Q2xpY2tUaW1lT2Zmc2V0ID0gdGltZU9m
ZnNldDsKKyAgICBidXR0b25DdXJyZW50bHlEb3duID0gMDsKIAorICAgIGV2ZW50LnR5cGUgPSBH
REtfQlVUVE9OX1JFTEVBU0U7CisgICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7CiAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC0zMDIsMjkgKzI2MCwx
OCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZU1vdmVUb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbgogICAgIGV2ZW50Lm1vdGlvbi50aW1lID0gR0RL
X0NVUlJFTlRfVElNRTsKICAgICBldmVudC5tb3Rpb24ud2luZG93ID0gR1RLX1dJREdFVCh2aWV3
KS0+d2luZG93OwogICAgIGV2ZW50Lm1vdGlvbi5kZXZpY2UgPSBnZGtfZGV2aWNlX2dldF9jb3Jl
X3BvaW50ZXIoKTsKKyAgICBldmVudC5tb3Rpb24uc3RhdGUgPSBnZXRTdGF0ZUZsYWdzKCk7CiAK
LSAgICBpbnQgeF9yb290LCB5X3Jvb3Q7CisgICAgaW50IHhSb290LCB5Um9vdDsKICNpZiBHVEtf
Q0hFQ0tfVkVSU0lPTigyLDE3LDMpCi0gICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHMoR1RL
X1dJREdFVCh2aWV3KS0+d2luZG93LCBsYXN0TW91c2VQb3NpdGlvblgsIGxhc3RNb3VzZVBvc2l0
aW9uWSwgJnhfcm9vdCwgJnlfcm9vdCk7CisgICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHMo
R1RLX1dJREdFVCh2aWV3KS0+d2luZG93LCBsYXN0TW91c2VQb3NpdGlvblgsIGxhc3RNb3VzZVBv
c2l0aW9uWSwgJnhSb290LCAmeVJvb3QpOwogI2Vsc2UKLSAgICBnZXRSb290Q29vcmRzKEdUS19X
SURHRVQodmlldyksICZ4X3Jvb3QsICZ5X3Jvb3QpOworICAgIGdldFJvb3RDb29yZHMoR1RLX1dJ
REdFVCh2aWV3KSwgJnhSb290LCAmeVJvb3QpOwogI2VuZGlmCisgICAgZXZlbnQubW90aW9uLnhf
cm9vdCA9IHhSb290OworICAgIGV2ZW50Lm1vdGlvbi55X3Jvb3QgPSB5Um9vdDsKIAotICAgIGV2
ZW50Lm1vdGlvbi54X3Jvb3QgPSB4X3Jvb3Q7Ci0gICAgZXZlbnQubW90aW9uLnlfcm9vdCA9IHlf
cm9vdDsKLSAgICAKLSAgICBldmVudC5tb3Rpb24uc3RhdGUgPSBnZXRTdGF0ZUZsYWdzKCk7Ci0K
LSAgICBpZiAoZHJhZ01vZGUgJiYgZG93biAmJiAhcmVwbGF5aW5nU2F2ZWRFdmVudHMpIHsKLSAg
ICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZV0uZXZlbnQgPSBldmVudDsKLSAgICAgICAgbXNnUXVl
dWVbZW5kT2ZRdWV1ZSsrXS5pc0RyYWdFdmVudCA9IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQobWFpbkZyYW1lKTsKLQotICAgICAgICBnYm9vbGVh
biByZXR1cm5fdmFsOwotICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywgIm1vdGlv
bl9ub3RpZnlfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICB9Ci0KKyAgICBzZW5k
T3JRdWV1ZUV2ZW50KGV2ZW50KTsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CiB9CiAKQEAgLTM2MywxNCArMzEwLDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VX
aGVlbFRvQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW8K
ICAgICBlbHNlCiAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CiAKLSAgICBpZiAoZHJh
Z01vZGUgJiYgZG93biAmJiAhcmVwbGF5aW5nU2F2ZWRFdmVudHMpIHsKLSAgICAgICAgbXNnUXVl
dWVbZW5kT2ZRdWV1ZV0uZXZlbnQgPSBldmVudDsKLSAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1
ZSsrXS5pc0RyYWdFdmVudCA9IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgd2Via2l0X3dl
Yl9mcmFtZV9sYXlvdXQobWFpbkZyYW1lKTsKLSAgICAgICAgZ3RrX21haW5fZG9fZXZlbnQoJmV2
ZW50KTsKLSAgICB9Ci0KKyAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKQEAgLTM4Myw0OCArMzIzLDY1IEBA
IHN0YXRpYyBKU1ZhbHVlUmVmIGJlZ2luRHJhZ1dpdGhGaWxlc0NhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogfQogCi12b2lkIHJlcGxheVNhdmVkRXZlbnRzKCkKK3N0YXRpYyB2b2lkIHNl
bmRPclF1ZXVlRXZlbnQoR2RrRXZlbnQgZXZlbnQpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgZG9l
c24ndCBkZWFsIHdpdGggZm9yd2FyZCBsZWFwcywgYnV0IGl0IHNob3VsZC4KKyAgICAvLyBNb3Vz
ZSBtb3ZlIGV2ZW50cyBhcmUgcXVldWVkIGlmIHRoZSBwcmV2aW91cyBldmVudCB3YXMgcXVldWVk
IG9yIGlmIGEKKyAgICAvLyBkZWxheSB3YXMgc2V0IHVwIGJ5IGxlYXBGb3J3YXJkKCkuCisgICAg
aWYgKGVuZE9mUXVldWUgIT0gc3RhcnRPZlF1ZXVlIHx8IG1zZ1F1ZXVlW2VuZE9mUXVldWVdLmRl
bGF5KSB7CisgICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWUrK10uZXZlbnQgPSBldmVudDsKKyAg
ICAgICAgcmVwbGF5U2F2ZWRFdmVudHMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAg
IGRpc3BhdGNoRXZlbnQoZXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBkaXNwYXRjaEV2ZW50KEdk
a0V2ZW50IGV2ZW50KQoreworICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7
CiAgICAgV2ViS2l0V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3
KG1haW5GcmFtZSk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXBs
YXlpbmdTYXZlZEV2ZW50cyA9IHRydWU7CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAg
aWYgKGV2ZW50LnR5cGUgPT0gR0RLX0JVVFRPTl9QUkVTUyB8fCBldmVudC50eXBlID09IEdES18y
QlVUVE9OX1BSRVNTKQorICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywgImJ1dHRv
bl9wcmVzc19ldmVudCIsICZldmVudCwgJnJldHVyblZhbHVlKTsKKyAgICBlbHNlIGlmIChldmVu
dC50eXBlID09IEdES19CVVRUT05fUkVMRUFTRSkKKyAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9u
YW1lKHZpZXcsICJidXR0b25fcmVsZWFzZV9ldmVudCIsICZldmVudCwgJnJldHVyblZhbHVlKTsK
KyAgICBlbHNlIGlmIChldmVudC50eXBlID09IEdES19NT1RJT05fTk9USUZZKQorICAgICAgICBn
X3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywgIm1vdGlvbl9ub3RpZnlfZXZlbnQiLCAmZXZlbnQs
ICZyZXR1cm5WYWx1ZSk7CisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSA9PSBHREtfU0NST0xMKQor
ICAgICAgICBndGtfbWFpbl9kb19ldmVudCgmZXZlbnQpOworfQogCi0gICAgZm9yICh1bnNpZ25l
ZCBxdWV1ZVBvcyA9IDA7IHF1ZXVlUG9zIDwgZW5kT2ZRdWV1ZTsgcXVldWVQb3MrKykgewotICAg
ICAgICBHZGtFdmVudCBldmVudCA9IG1zZ1F1ZXVlW3F1ZXVlUG9zXS5ldmVudDsKLSAgICAgICAg
Z2Jvb2xlYW4gcmV0dXJuX3ZhbDsKLQotICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKLSAg
ICAgICAgY2FzZSBHREtfQlVUVE9OX1JFTEVBU0U6Ci0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0
X2J5X25hbWUodmlldywgImJ1dHRvbl9yZWxlYXNlX2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuX3Zh
bCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHREtfQlVUVE9OX1BSRVNTOgot
ICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25fcHJlc3NfZXZl
bnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEdES19NT1RJT05fTk9USUZZOgotICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1l
KHZpZXcsICJtb3Rpb25fbm90aWZ5X2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuX3ZhbCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9CitzdGF0aWMgZ2Jvb2xlYW4gbGVhcEZvcndhcmREZWxheUNhbGxiYWNrKGdwb2lu
dGVyIGRhdGEpCit7CisgICAgZG9uZUxlYXBpbmdGb3J3YXJkID0gdHJ1ZTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CiAKLSAgICAgICAgc3RhcnRPZlF1ZXVlKys7Ci0gICAgfQordm9pZCByZXBsYXlT
YXZlZEV2ZW50cygpCit7CisgICAgcmVwbGF5aW5nU2F2ZWRFdmVudHMgPSB0cnVlOwogCi0gICAg
aW50IG51bVF1ZXVlZE1lc3NhZ2VzID0gZW5kT2ZRdWV1ZSAtIHN0YXJ0T2ZRdWV1ZTsKLSAgICBp
ZiAoIW51bVF1ZXVlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN0YXJ0T2ZRdWV1ZSA9IDA7Ci0gICAg
ICAgIGVuZE9mUXVldWUgPSAwOwotICAgICAgICByZXBsYXlpbmdTYXZlZEV2ZW50cyA9IGZhbHNl
OwotICAgICAgICByZXR1cm47CisgICAgaWYgKHN0YXJ0T2ZRdWV1ZSA8IGVuZE9mUXVldWUpIHsK
KyAgICAgICAgLy8gRmlyc3Qgc2VuZCBhbGwgdGhlIGV2ZW50cyB0aGF0IGFyZSByZWFkeSB0byBi
ZSBzZW50CisgICAgICAgIHdoaWxlICghbXNnUXVldWVbc3RhcnRPZlF1ZXVlXS5kZWxheSAmJiBz
dGFydE9mUXVldWUgPCBlbmRPZlF1ZXVlKQorICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChtc2dR
dWV1ZVtzdGFydE9mUXVldWUrK10uZXZlbnQpOworCisgICAgICAgIGlmIChzdGFydE9mUXVldWUg
PT0gZW5kT2ZRdWV1ZSkgeworICAgICAgICAgICAgc3RhcnRPZlF1ZXVlID0gMDsKKyAgICAgICAg
ICAgIGVuZE9mUXVldWUgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gUHVt
cCB0aGUgbWFpbiBsb29wIHVudGlsIHdlIGhhdmUgZmluaXNoZWQgbGVhcGluZyBmb3J3YXJkLgor
ICAgICAgICAgICAgZG9uZUxlYXBpbmdGb3J3YXJkID0gZmFsc2U7CisgICAgICAgICAgICBnX3Rp
bWVvdXRfYWRkKG1zZ1F1ZXVlW3N0YXJ0T2ZRdWV1ZV0uZGVsYXksIGxlYXBGb3J3YXJkRGVsYXlD
YWxsYmFjaywgMCk7CisgICAgICAgICAgICBtc2dRdWV1ZVtzdGFydE9mUXVldWVdLmRlbGF5ID0g
MDsKKyAgICAgICAgICAgIHdoaWxlICghZG9uZUxlYXBpbmdGb3J3YXJkKQorICAgICAgICAgICAg
ICAgIGd0a19tYWluX2l0ZXJhdGlvbigpOworICAgICAgICB9CiAgICAgfQogCi0gICAgc3RhcnRP
ZlF1ZXVlID0gMDsKLSAgICBlbmRPZlF1ZXVlID0gMDsKLQogICAgIHJlcGxheWluZ1NhdmVkRXZl
bnRzID0gZmFsc2U7CiB9CiAKQEAgLTY2MSwxNyArNjE4LDIxIEBAIHN0YXRpYyBKU0NsYXNzUmVm
IGdldENsYXNzKEpTQ29udGV4dFJlZiBjb250ZXh0KQogICAgIHJldHVybiBldmVudFNlbmRlckNs
YXNzOwogfQogCi1KU09iamVjdFJlZiBtYWtlRXZlbnRTZW5kZXIoSlNDb250ZXh0UmVmIGNvbnRl
eHQpCitKU09iamVjdFJlZiBtYWtlRXZlbnRTZW5kZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIGJv
b2wgaXNUb3BGcmFtZSkKIHsKLSAgICBkb3duID0gZmFsc2U7Ci0gICAgZHJhZ01vZGUgPSB0cnVl
OwotICAgIGxhc3RNb3VzZVBvc2l0aW9uWCA9IGxhc3RNb3VzZVBvc2l0aW9uWSA9IDA7Ci0gICAg
bGFzdENsaWNrUG9zaXRpb25YID0gbGFzdENsaWNrUG9zaXRpb25ZID0gMDsKLQotICAgIGlmICgh
cmVwbGF5aW5nU2F2ZWRFdmVudHMpIHsKLSAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBjYW4gYmUg
Y2FsbGVkIGluIHRoZSBtaWRkbGUgb2YgYSB0ZXN0LCBldmVuCi0gICAgICAgIC8vIHdoaWxlIHJl
cGxheWluZyBzYXZlZCBldmVudHMuIFJlc2V0dGluZyB0aGVzZSB3aGlsZSBkb2luZyB0aGF0Ci0g
ICAgICAgIC8vIGNhbiBicmVhayB0aGluZ3MuCisgICAgaWYgKGlzVG9wRnJhbWUpIHsKKyAgICAg
ICAgZHJhZ01vZGUgPSB0cnVlOworICAgICAgICByZXBsYXlpbmdTYXZlZEV2ZW50cyA9IGZhbHNl
OworICAgICAgICBkb25lTGVhcGluZ0ZvcndhcmQgPSBmYWxzZTsKKyAgICAgICAgdGltZU9mZnNl
dCA9IDA7CisKKyAgICAgICAgbGFzdE1vdXNlUG9zaXRpb25YID0gbGFzdE1vdXNlUG9zaXRpb25Z
ID0gMDsKKyAgICAgICAgbGFzdENsaWNrUG9zaXRpb25YID0gbGFzdENsaWNrUG9zaXRpb25ZID0g
MDsKKyAgICAgICAgbGFzdENsaWNrVGltZU9mZnNldCA9IDA7CisgICAgICAgIGxhc3RDbGlja0J1
dHRvbiA9IDA7CisgICAgICAgIGJ1dHRvbkN1cnJlbnRseURvd24gPSAwOworICAgICAgICBjbGlj
a0NvdW50ID0gMDsKKwogICAgICAgICBlbmRPZlF1ZXVlID0gMDsKICAgICAgICAgc3RhcnRPZlF1
ZXVlID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvRXZlbnRTZW5kZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNl
bmRlci5oCmluZGV4IDI3MmU4YTkuLmNlMzNjY2MgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9FdmVudFNlbmRlci5oCkBAIC0zMyw3ICszMyw3IEBACiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTQ29udGV4dFJlZjsKIHR5cGVkZWYgc3RydWN0IE9w
YXF1ZUpTVmFsdWUqIEpTT2JqZWN0UmVmOwogCi1KU09iamVjdFJlZiBtYWtlRXZlbnRTZW5kZXIo
SlNDb250ZXh0UmVmIGNvbnRleHQpOworSlNPYmplY3RSZWYgbWFrZUV2ZW50U2VuZGVyKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBib29sIGlzVG9wRnJhbWUpOwogdm9pZCByZXBsYXlTYXZlZEV2ZW50
cygpOwogCiAjZW5kaWYKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="commit-queue"
          id="39800"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55579</attachid>
            <date>2010-05-10 11:31:43 -0700</date>
            <delta_ts>2010-05-10 15:10:31 -0700</delta_ts>
            <desc>Patch with style fixes</desc>
            <filename>0001-Double-clicks-cause-three-button-press-events.patch</filename>
            <type>text/plain</type>
            <size>21120</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA4ODAwOGM4MTRkYWM2OTNjY2RiN2M3NWY5M2JkNjc4YWEzM2I3NWUwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDEwIE1heSAyMDEwIDA5OjU2OjQ2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
RG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRzCiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKClBhdGNoIGJ5IE1hcnRpbiBSb2Jp
bnNvbiA8bXJvYmluc29uQGlnYWxpYS5jb20+IG9uIDIwMTAtMDUtMTAKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgpBZGQgbGVhcEZvcndhcmQgc3VwcG9ydCB0byB0aGUgR3RrKyBEUlQuCgoq
IER1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6Cih3ZWJWaWV3V2luZG93T2Jq
ZWN0Q2xlYXJlZCk6IE9ubHkgaW5pdGlhbGl6ZSB0aGUgRXZlbnRTZW5kZXIgd2hlbiBsb2FkaW5n
IHRoZSB0b3AgZnJhbWUuCiogRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcDoKKGxl
YXBGb3J3YXJkQ2FsbGJhY2spOiBBZGQgc3VwcG9ydCBmb3IgYWRqdXN0aW5nIHRoZSB0aW1lIG9m
ZnNldCBvbiBsZWFwRm9yd2FyZCgpCihwcmVwYXJlTW91c2VCdXR0b25FdmVudCk6IEFkZGVkLgoo
Y29udGV4dENsaWNrQ2FsbGJhY2spOiBVc2UgcHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQgJiBzZW5k
T3JRdWV1ZUV2ZW50LgoodXBkYXRlQ2xpY2tDb3VudCk6IFRha2UgdGltZSBvZmZzZXQgaW50byBh
Y2NvdW50IHdoZW4gY291bnRpbmcgY2xpY2tzLgoobW91c2VEb3duQ2FsbGJhY2spOiBVc2UgcHJl
cGFyZU1vdXNlQnV0dG9uRXZlbnQgJiBzZW5kT3JRdWV1ZUV2ZW50LgooZ2V0U3RhdGVGbGFncyk6
IENoYW5nZSBkb3duL2N1cnJlbnRFdmVudEJ1dHRvbiBpbnRvIGJ1dHRvbkN1cnJlbnRseS9sYXN0
Q2xpY2tCdXR0b24uCihtb3VzZVVwQ2FsbGJhY2spOiBVc2UgcHJlcGFyZU1vdXNlQnV0dG9uRXZl
bnQuCihtb3VzZU1vdmVUb0NhbGxiYWNrKTogVXNlIHNlbmRPclF1ZXVlRXZlbnQuCihtb3VzZVdo
ZWVsVG9DYWxsYmFjayk6IFVzZSBzZW5kT3JRdWV1ZUV2ZW50Lgooc2VuZE9yUXVldWVFdmVudCk6
IEFkZGVkLgooZGlzcGF0Y2hFdmVudCk6IEFkZGVkLgoobGVhcEZvcndhcmREZWxheUNhbGxiYWNr
KTogQWRkZWQuCihyZXBsYXlTYXZlZEV2ZW50cyk6IFByb3Blcmx5IGhhbmRsZSBsZWFwRm9yd2Fy
ZCBoZXJlIGFuZCBkZWZlciB0byBkaXNwYXRjaEV2ZW50LgoobWFrZUV2ZW50U2VuZGVyKTogT25s
eSBpbml0aWFsaXplIHRoZSBFdmVudFNlbmRlciB3aGVuIGxvYWRpbmcgdGhlIHRvcCBmcmFtZS4K
KiBEdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuaDogT25seSBpbml0aWFsaXplIHRoZSBF
dmVudFNlbmRlciB3aGVuIGxvYWRpbmcgdGhlIHRvcCBmcmFtZS4KLS0tCiBXZWJLaXRUb29scy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOCArKwogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCB8ICAgIDIgKy0KIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAgICAgfCAgMzQxICsrKysr
KysrKy0tLS0tLS0tLS0tLQogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2Vu
ZGVyLmggICAgICB8ICAgIDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMTgxIGluc2VydGlvbnMoKyks
IDE5MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMTk5YWYyZC4uMWVjNjY4NyAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDEwLTA1LTEwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
b3VibGUgY2xpY2tzIGNhdXNlIHRocmVlIGJ1dHRvbiBwcmVzcyBldmVudHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODUzCisKKyAgICAgICAgQWRk
IGxlYXBGb3J3YXJkIHN1cHBvcnQgdG8gdGhlIEd0aysgRFJULgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHdlYlZpZXdXaW5kb3dP
YmplY3RDbGVhcmVkKTogT25seSBpbml0aWFsaXplIHRoZSBFdmVudFNlbmRlciB3aGVuIGxvYWRp
bmcgdGhlIHRvcCBmcmFtZS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5k
ZXIuY3BwOgorICAgICAgICAobGVhcEZvcndhcmRDYWxsYmFjayk6IEFkZCBzdXBwb3J0IGZvciBh
ZGp1c3RpbmcgdGhlIHRpbWUgb2Zmc2V0IG9uIGxlYXBGb3J3YXJkKCkKKyAgICAgICAgKHByZXBh
cmVNb3VzZUJ1dHRvbkV2ZW50KTogQWRkZWQuCisgICAgICAgIChjb250ZXh0Q2xpY2tDYWxsYmFj
ayk6IFVzZSBwcmVwYXJlTW91c2VCdXR0b25FdmVudCAmIHNlbmRPclF1ZXVlRXZlbnQuCisgICAg
ICAgICh1cGRhdGVDbGlja0NvdW50KTogVGFrZSB0aW1lIG9mZnNldCBpbnRvIGFjY291bnQgd2hl
biBjb3VudGluZyBjbGlja3MuCisgICAgICAgIChtb3VzZURvd25DYWxsYmFjayk6IFVzZSBwcmVw
YXJlTW91c2VCdXR0b25FdmVudCAmIHNlbmRPclF1ZXVlRXZlbnQuCisgICAgICAgIChnZXRTdGF0
ZUZsYWdzKTogQ2hhbmdlIGRvd24vY3VycmVudEV2ZW50QnV0dG9uIGludG8gYnV0dG9uQ3VycmVu
dGx5L2xhc3RDbGlja0J1dHRvbi4KKyAgICAgICAgKG1vdXNlVXBDYWxsYmFjayk6IFVzZSBwcmVw
YXJlTW91c2VCdXR0b25FdmVudC4KKyAgICAgICAgKG1vdXNlTW92ZVRvQ2FsbGJhY2spOiBVc2Ug
c2VuZE9yUXVldWVFdmVudC4KKyAgICAgICAgKG1vdXNlV2hlZWxUb0NhbGxiYWNrKTogVXNlIHNl
bmRPclF1ZXVlRXZlbnQuCisgICAgICAgIChzZW5kT3JRdWV1ZUV2ZW50KTogQWRkZWQuCisgICAg
ICAgIChkaXNwYXRjaEV2ZW50KTogQWRkZWQuCisgICAgICAgIChsZWFwRm9yd2FyZERlbGF5Q2Fs
bGJhY2spOiBBZGRlZC4KKyAgICAgICAgKHJlcGxheVNhdmVkRXZlbnRzKTogUHJvcGVybHkgaGFu
ZGxlIGxlYXBGb3J3YXJkIGhlcmUgYW5kIGRlZmVyIHRvIGRpc3BhdGNoRXZlbnQuCisgICAgICAg
IChtYWtlRXZlbnRTZW5kZXIpOiBPbmx5IGluaXRpYWxpemUgdGhlIEV2ZW50U2VuZGVyIHdoZW4g
bG9hZGluZyB0aGUgdG9wIGZyYW1lLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9FdmVu
dFNlbmRlci5oOiBPbmx5IGluaXRpYWxpemUgdGhlIEV2ZW50U2VuZGVyIHdoZW4gbG9hZGluZyB0
aGUgdG9wIGZyYW1lLgorCiAyMDEwLTA1LTEwICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggMGYzY2Ez
OC4uZTkxMmE0OCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1
bXBSZW5kZXJUcmVlLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVt
cFJlbmRlclRyZWUuY3BwCkBAIC02NjIsNyArNjYyLDcgQEAgc3RhdGljIHZvaWQgd2ViVmlld1dp
bmRvd09iamVjdENsZWFyZWQoV2ViS2l0V2ViVmlldyogdmlldywgV2ViS2l0V2ViRnJhbWUqIGZy
YW0KICAgICBBU1NFUlQoIWV4Y2VwdGlvbik7CiAKICAgICBKU1N0cmluZ1JlZiBldmVudFNlbmRl
clN0ciA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJldmVudFNlbmRlciIpOwotICAg
IEpTVmFsdWVSZWYgZXZlbnRTZW5kZXIgPSBtYWtlRXZlbnRTZW5kZXIoY29udGV4dCk7CisgICAg
SlNWYWx1ZVJlZiBldmVudFNlbmRlciA9IG1ha2VFdmVudFNlbmRlcihjb250ZXh0LCAhd2Via2l0
X3dlYl9mcmFtZV9nZXRfcGFyZW50KGZyYW1lKSk7CiAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShj
b250ZXh0LCB3aW5kb3dPYmplY3QsIGV2ZW50U2VuZGVyU3RyLCBldmVudFNlbmRlciwga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSwg
MCk7CiAgICAgSlNTdHJpbmdSZWxlYXNlKGV2ZW50U2VuZGVyU3RyKTsKIH0KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDljMjdkOGMuLjQ2
NTg1MzUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNl
bmRlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVy
LmNwcApAQCAtNDUsMjggKzQ1LDI5IEBACiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNp
bmNsdWRlIDxzdHJpbmcuaD4KIAotLy8gVE9ETzogQ3VycmVudGx5IGRyYWcgYW5kIGRyb3AgcmVs
YXRlZCBjb2RlIGlzIGxlZnQgb3V0IGFuZAotLy8gc2hvdWxkIGJlIG1lcmdlZCBvbmNlIHdlIGhh
dmUgZHJhZyBhbmQgZHJvcCBzdXBwb3J0IGluIFdlYkNvcmUuCisvLyBGSVhNRTogSW1wbGVtZW50
IHN1cHBvcnQgZm9yIHN5bnRoZXNpemluZyBkcm9wIGV2ZW50cy4KIAogZXh0ZXJuICJDIiB7CiAg
ICAgZXh0ZXJuIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQoV2ViS2l0V2ViRnJhbWUqIGZy
YW1lKTsKIH0KIAotc3RhdGljIGJvb2wgZG93biA9IGZhbHNlOwotc3RhdGljIGJvb2wgY3VycmVu
dEV2ZW50QnV0dG9uID0gMTsKLXN0YXRpYyBib29sIGRyYWdNb2RlID0gdHJ1ZTsKLXN0YXRpYyBi
b29sIHJlcGxheWluZ1NhdmVkRXZlbnRzID0gZmFsc2U7CitzdGF0aWMgYm9vbCBkcmFnTW9kZTsK
K3N0YXRpYyBib29sIHJlcGxheWluZ1NhdmVkRXZlbnRzOworc3RhdGljIGJvb2wgZG9uZUxlYXBp
bmdGb3J3YXJkOworc3RhdGljIGludCB0aW1lT2Zmc2V0OworCiBzdGF0aWMgaW50IGxhc3RNb3Vz
ZVBvc2l0aW9uWDsKIHN0YXRpYyBpbnQgbGFzdE1vdXNlUG9zaXRpb25ZOwotCiBzdGF0aWMgaW50
IGxhc3RDbGlja1Bvc2l0aW9uWDsKIHN0YXRpYyBpbnQgbGFzdENsaWNrUG9zaXRpb25ZOwotc3Rh
dGljIGludCBjbGlja0NvdW50ID0gMDsKK3N0YXRpYyBpbnQgbGFzdENsaWNrVGltZU9mZnNldDsK
K3N0YXRpYyBpbnQgbGFzdENsaWNrQnV0dG9uOworc3RhdGljIGludCBidXR0b25DdXJyZW50bHlE
b3duOworc3RhdGljIGludCBjbGlja0NvdW50OwogCiBzdHJ1Y3QgRGVsYXllZE1lc3NhZ2Ugewog
ICAgIEdka0V2ZW50IGV2ZW50OwogICAgIGd1bG9uZyBkZWxheTsKLSAgICBnYm9vbGVhbiBpc0Ry
YWdFdmVudDsKIH07CiAKIHN0YXRpYyBEZWxheWVkTWVzc2FnZSBtc2dRdWV1ZVsxMDI0XTsKQEAg
LTg0LDYgKzg1LDEwIEBAIGVudW0gS2V5TG9jYXRpb25Db2RlIHsKICAgICBET01fS0VZX0xPQ0FU
SU9OX05VTVBBRCAgICAgICAgPSAweDAzCiB9OwogCitzdGF0aWMgdm9pZCBzZW5kT3JRdWV1ZUV2
ZW50KEdka0V2ZW50IGV2ZW50KTsKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnQoR2RrRXZlbnQg
ZXZlbnQpOworc3RhdGljIGd1aW50IGdldFN0YXRlRmxhZ3MoKTsKKwogc3RhdGljIEpTVmFsdWVS
ZWYgZ2V0RHJhZ01vZGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
IHsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIGRyYWdNb2RlKTsKQEAg
LTk3LDQxICsxMDIsNjIgQEAgc3RhdGljIGJvb2wgc2V0RHJhZ01vZGVDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmkKIAogc3RhdGljIEpTVmFs
dWVSZWYgbGVhcEZvcndhcmRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7
Ci0gICAgLy8gRklYTUU6IEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgZm9yd2FyZCBsZWFwcworICAg
IGlmIChhcmd1bWVudENvdW50ID4gMCkgeworICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlXS5k
ZWxheSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7
CisgICAgICAgIHRpbWVPZmZzZXQgKz0gbXNnUXVldWVbZW5kT2ZRdWV1ZV0uZGVsYXk7CisgICAg
ICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKTsKKyAgICB9CisKICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVm
IGNvbnRleHRDbGlja0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK2Jvb2wg
cHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBpbnQgYnV0dG9uKQogewot
ICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7Ci0KICAgICBXZWJLaXRXZWJW
aWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKICAg
ICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWVtc2V0KGV2ZW50LCAwLCBzaXplb2Yo
ZXZlbnQpKTsKKyAgICBldmVudC0+YnV0dG9uLmJ1dHRvbiA9IGJ1dHRvbjsKKyAgICBldmVudC0+
YnV0dG9uLnggPSBsYXN0TW91c2VQb3NpdGlvblg7CisgICAgZXZlbnQtPmJ1dHRvbi55ID0gbGFz
dE1vdXNlUG9zaXRpb25ZOworICAgIGV2ZW50LT5idXR0b24ud2luZG93ID0gR1RLX1dJREdFVCh2
aWV3KS0+d2luZG93OworICAgIGV2ZW50LT5idXR0b24udGltZSA9IEdES19DVVJSRU5UX1RJTUU7
CisgICAgZXZlbnQtPmJ1dHRvbi5kZXZpY2UgPSBnZGtfZGV2aWNlX2dldF9jb3JlX3BvaW50ZXIo
KTsKKyAgICBldmVudC0+YnV0dG9uLnN0YXRlID0gZ2V0U3RhdGVGbGFncygpOworCisgICAgaW50
IHhSb290LCB5Um9vdDsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNywgMykKKyAgICBnZGtf
d2luZG93X2dldF9yb290X2Nvb3JkcyhHVEtfV0lER0VUKHZpZXcpLT53aW5kb3csIGxhc3RNb3Vz
ZVBvc2l0aW9uWCwgbGFzdE1vdXNlUG9zaXRpb25ZLCAmeFJvb3QsICZ5Um9vdCk7CisjZWxzZQor
ICAgIGdldFJvb3RDb29yZHMoR1RLX1dJREdFVCh2aWV3KSwgJnhSb290LCAmeVJvb3QpOworI2Vu
ZGlmCisgICAgZXZlbnQtPmJ1dHRvbi54X3Jvb3QgPSB4Um9vdDsKKyAgICBldmVudC0+YnV0dG9u
Lnlfcm9vdCA9IHlSb290OworCisgICAgcmV0dXJuIHRydWU7Cit9CiAKK3N0YXRpYyBKU1ZhbHVl
UmVmIGNvbnRleHRDbGlja0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
ICAgICBHZGtFdmVudCBldmVudDsKLSAgICBtZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoZXZlbnQp
KTsKLSAgICBldmVudC5idXR0b24uYnV0dG9uID0gMzsKLSAgICBldmVudC5idXR0b24ueCA9IGxh
c3RNb3VzZVBvc2l0aW9uWDsKLSAgICBldmVudC5idXR0b24ueSA9IGxhc3RNb3VzZVBvc2l0aW9u
WTsKLSAgICBldmVudC5idXR0b24ud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+d2luZG93Owor
ICAgIGlmICghcHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQoJmV2ZW50LCAzKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCi0gICAgZ2Jvb2xlYW4gcmV0dXJu
X3ZhbDsKLSAgICBkb3duID0gdHJ1ZTsKICAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9QUkVT
UzsKLSAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywgImJ1dHRvbl9wcmVzc19ldmVudCIs
ICZldmVudCwgJnJldHVybl92YWwpOwotCi0gICAgZG93biA9IGZhbHNlOworICAgIHNlbmRPclF1
ZXVlRXZlbnQoZXZlbnQpOwogICAgIGV2ZW50LnR5cGUgPSBHREtfQlVUVE9OX1JFTEVBU0U7Ci0g
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25fcmVsZWFzZV9ldmVudCIsICZl
dmVudCwgJnJldHVybl92YWwpOworICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwogCiAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCiBzdGF0aWMgdm9pZCB1
cGRhdGVDbGlja0NvdW50KGludCBidXR0b24pCiB7Ci0gICAgLy8gRklYTUU6IHRha2UgdGhlIGxh
c3QgY2xpY2tlZCBidXR0b24gbnVtYmVyIGFuZCB0aGUgdGltZSBvZiBsYXN0IGNsaWNrIGludG8g
YWNjb3VudC4KLSAgICBpZiAobGFzdENsaWNrUG9zaXRpb25YICE9IGxhc3RNb3VzZVBvc2l0aW9u
WCB8fCBsYXN0Q2xpY2tQb3NpdGlvblkgIT0gbGFzdE1vdXNlUG9zaXRpb25ZIHx8IGN1cnJlbnRF
dmVudEJ1dHRvbiAhPSBidXR0b24pCisgICAgaWYgKGxhc3RDbGlja1Bvc2l0aW9uWCAhPSBsYXN0
TW91c2VQb3NpdGlvblgKKyAgICAgICAgfHwgbGFzdENsaWNrUG9zaXRpb25ZICE9IGxhc3RNb3Vz
ZVBvc2l0aW9uWQorICAgICAgICB8fCBsYXN0Q2xpY2tCdXR0b24gIT0gYnV0dG9uCisgICAgICAg
IHx8IHRpbWVPZmZzZXQgLSBsYXN0Q2xpY2tUaW1lT2Zmc2V0ID49IDEpCiAgICAgICAgIGNsaWNr
Q291bnQgPSAxOwogICAgIGVsc2UKICAgICAgICAgY2xpY2tDb3VudCsrOwpAQCAtMTU0LDEyOSAr
MTgwLDYxIEBAIHN0YXRpYyB2b2lkIGdldFJvb3RDb29yZHMoR3RrV2lkZ2V0KiB2aWV3LCBpbnQq
IHJvb3RYLCBpbnQqIHJvb3RZKQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZURvd25DYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgV2ViS2l0V2ViVmlldyogdmll
dyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7Ci0gICAgaWYgKCF2
aWV3KQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0KLSAg
ICBkb3duID0gdHJ1ZTsKLQotICAgIEdka0V2ZW50IGV2ZW50OwotICAgIG1lbXNldCgmZXZlbnQs
IDAsIHNpemVvZihldmVudCkpOwotICAgIGV2ZW50LnR5cGUgPSBHREtfQlVUVE9OX1BSRVNTOwot
ICAgIGV2ZW50LmJ1dHRvbi5idXR0b24gPSAxOwotCisgICAgaW50IGJ1dHRvbiA9IDE7CiAgICAg
aWYgKGFyZ3VtZW50Q291bnQgPT0gMSkgewotICAgICAgICBldmVudC5idXR0b24uYnV0dG9uID0g
KGludClKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pICsg
MTsKKyAgICAgICAgYnV0dG9uID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29u
dGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKSArIDE7CiAgICAgICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKSwgSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCkpOwogICAgIH0KIAotICAgIGN1cnJlbnRFdmVudEJ1dHRvbiA9IGV2ZW50LmJ1
dHRvbi5idXR0b247Ci0KLSAgICBldmVudC5idXR0b24ueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsK
LSAgICBldmVudC5idXR0b24ueSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKLSAgICBldmVudC5idXR0
b24ud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+d2luZG93OwotICAgIGV2ZW50LmJ1dHRvbi50
aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKLSAgICBldmVudC5idXR0b24uZGV2aWNlID0gZ2RrX2Rl
dmljZV9nZXRfY29yZV9wb2ludGVyKCk7Ci0KLSAgICBpbnQgeF9yb290LCB5X3Jvb3Q7Ci0jaWYg
R1RLX0NIRUNLX1ZFUlNJT04oMiwxNywzKQotICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRz
KEdUS19XSURHRVQodmlldyktPndpbmRvdywgbGFzdE1vdXNlUG9zaXRpb25YLCBsYXN0TW91c2VQ
b3NpdGlvblksICZ4X3Jvb3QsICZ5X3Jvb3QpOwotI2Vsc2UKLSAgICBnZXRSb290Q29vcmRzKEdU
S19XSURHRVQodmlldyksICZ4X3Jvb3QsICZ5X3Jvb3QpOwotI2VuZGlmCisgICAgR2RrRXZlbnQg
ZXZlbnQ7CisgICAgaWYgKCFwcmVwYXJlTW91c2VCdXR0b25FdmVudCgmZXZlbnQsIGJ1dHRvbikp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIGV2
ZW50LmJ1dHRvbi54X3Jvb3QgPSB4X3Jvb3Q7Ci0gICAgZXZlbnQuYnV0dG9uLnlfcm9vdCA9IHlf
cm9vdDsKKyAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9QUkVTUzsKKyAgICBzZW5kT3JRdWV1
ZUV2ZW50KGV2ZW50KTsKIAogICAgIHVwZGF0ZUNsaWNrQ291bnQoZXZlbnQuYnV0dG9uLmJ1dHRv
bik7Ci0KLSAgICBpZiAoIW1zZ1F1ZXVlW2VuZE9mUXVldWVdLmRlbGF5KSB7Ci0gICAgICAgIHdl
YmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7Ci0KLSAgICAgICAgZ2Jvb2xlYW4gcmV0
dXJuX3ZhbDsKLSAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25fcHJl
c3NfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICAgICAgaWYgKGNsaWNrQ291bnQg
PT0gMikgewotICAgICAgICAgICAgZXZlbnQudHlwZSA9IEdES18yQlVUVE9OX1BSRVNTOwotICAg
ICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25fcHJlc3NfZXZlbnQi
LCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIHJlcGxheVNhdmVkRXZlbnRzIHNob3VsZCBoYXZlIHRoZSByZXF1aXJlZCBsb2dpYyB0byBt
YWtlIGxlYXBGb3J3YXJkIGRlbGF5cyB3b3JrCi0gICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWUr
K10uZXZlbnQgPSBldmVudDsKLSAgICAgICAgcmVwbGF5U2F2ZWRFdmVudHMoKTsKKyAgICBpZiAo
Y2xpY2tDb3VudCA9PSAyKSB7CisgICAgICAgIGV2ZW50LnR5cGUgPSBHREtfMkJVVFRPTl9QUkVT
UzsKKyAgICAgICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7CiAgICAgfQogCisgICAgYnV0dG9u
Q3VycmVudGx5RG93biA9IGJ1dHRvbjsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CiB9CiAKIHN0YXRpYyBndWludCBnZXRTdGF0ZUZsYWdzKCkKIHsKLSAgICBndWlu
dCBzdGF0ZSA9IDA7Ci0KLSAgICBpZiAoZG93bikgewotICAgICAgICBpZiAoY3VycmVudEV2ZW50
QnV0dG9uID09IDEpCi0gICAgICAgICAgICBzdGF0ZSA9IEdES19CVVRUT04xX01BU0s7Ci0gICAg
ICAgIGVsc2UgaWYgKGN1cnJlbnRFdmVudEJ1dHRvbiA9PSAyKQotICAgICAgICAgICAgc3RhdGUg
PSBHREtfQlVUVE9OMl9NQVNLOwotICAgICAgICBlbHNlIGlmIChjdXJyZW50RXZlbnRCdXR0b24g
PT0gMykKLSAgICAgICAgICAgIHN0YXRlID0gR0RLX0JVVFRPTjNfTUFTSzsKLSAgICB9IGVsc2UK
LSAgICAgICAgc3RhdGUgPSAwOwotCi0gICAgcmV0dXJuIHN0YXRlOworICAgIGlmIChidXR0b25D
dXJyZW50bHlEb3duID09IDEpCisgICAgICAgIHJldHVybiBHREtfQlVUVE9OMV9NQVNLOworICAg
IGlmIChidXR0b25DdXJyZW50bHlEb3duID09IDIpCisgICAgICAgIHJldHVybiBHREtfQlVUVE9O
Ml9NQVNLOworICAgIGlmIChidXR0b25DdXJyZW50bHlEb3duID09IDMpCisgICAgICAgIHJldHVy
biBHREtfQlVUVE9OM19NQVNLOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgSlNWYWx1ZVJl
ZiBtb3VzZVVwQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogCi0gICAg
V2ViS2l0V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5G
cmFtZSk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7Ci0KLSAgICBHZGtFdmVudCBldmVudDsKLSAgICBtZW1zZXQoJmV2ZW50LCAw
LCBzaXplb2YoZXZlbnQpKTsKLSAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9SRUxFQVNFOwot
ICAgIGV2ZW50LmJ1dHRvbi5idXR0b24gPSAxOwotCisgICAgaW50IGJ1dHRvbiA9IDE7CiAgICAg
aWYgKGFyZ3VtZW50Q291bnQgPT0gMSkgewotICAgICAgICBldmVudC5idXR0b24uYnV0dG9uID0g
KGludClKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pICsg
MTsKKyAgICAgICAgYnV0dG9uID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29u
dGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKSArIDE7CiAgICAgICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKSwgSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCkpOwogICAgIH0KIAotICAgIGN1cnJlbnRFdmVudEJ1dHRvbiA9IGV2ZW50LmJ1
dHRvbi5idXR0b247Ci0KLSAgICBldmVudC5idXR0b24ueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsK
LSAgICBldmVudC5idXR0b24ueSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKLSAgICBldmVudC5idXR0
b24ud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+d2luZG93OwotICAgIGV2ZW50LmJ1dHRvbi50
aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKLSAgICBldmVudC5idXR0b24uZGV2aWNlID0gZ2RrX2Rl
dmljZV9nZXRfY29yZV9wb2ludGVyKCk7Ci0gICAgZXZlbnQuYnV0dG9uLnN0YXRlID0gZ2V0U3Rh
dGVGbGFncygpOwotCi0gICAgZG93biA9IGZhbHNlOwotCi0gICAgaW50IHhfcm9vdCwgeV9yb290
OwotI2lmIEdUS19DSEVDS19WRVJTSU9OKDIsMTcsMykKLSAgICBnZGtfd2luZG93X2dldF9yb290
X2Nvb3JkcyhHVEtfV0lER0VUKHZpZXcpLT53aW5kb3csIGxhc3RNb3VzZVBvc2l0aW9uWCwgbGFz
dE1vdXNlUG9zaXRpb25ZLCAmeF9yb290LCAmeV9yb290KTsKLSNlbHNlCi0gICAgZ2V0Um9vdENv
b3JkcyhHVEtfV0lER0VUKHZpZXcpLCAmeF9yb290LCAmeV9yb290KTsKLSNlbmRpZgotCi0gICAg
ZXZlbnQuYnV0dG9uLnhfcm9vdCA9IHhfcm9vdDsKLSAgICBldmVudC5idXR0b24ueV9yb290ID0g
eV9yb290OwotCi0gICAgaWYgKChkcmFnTW9kZSAmJiAhcmVwbGF5aW5nU2F2ZWRFdmVudHMpIHx8
IG1zZ1F1ZXVlW2VuZE9mUXVldWVdLmRlbGF5KSB7Ci0gICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVl
dWVdLmV2ZW50ID0gZXZlbnQ7Ci0gICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWUrK10uaXNEcmFn
RXZlbnQgPSB0cnVlOwotICAgICAgICByZXBsYXlTYXZlZEV2ZW50cygpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7Ci0KLSAgICAgICAg
Z2Jvb2xlYW4gcmV0dXJuX3ZhbDsKLSAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcs
ICJidXR0b25fcmVsZWFzZV9ldmVudCIsICZldmVudCwgJnJldHVybl92YWwpOwotICAgIH0KKyAg
ICBHZGtFdmVudCBldmVudDsKKyAgICBpZiAoIXByZXBhcmVNb3VzZUJ1dHRvbkV2ZW50KCZldmVu
dCwgYnV0dG9uKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OwogCiAgICAgbGFzdENsaWNrUG9zaXRpb25YID0gbGFzdE1vdXNlUG9zaXRpb25YOwogICAgIGxh
c3RDbGlja1Bvc2l0aW9uWSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKKyAgICBsYXN0Q2xpY2tCdXR0
b24gPSBidXR0b25DdXJyZW50bHlEb3duOworICAgIGxhc3RDbGlja1RpbWVPZmZzZXQgPSB0aW1l
T2Zmc2V0OworICAgIGJ1dHRvbkN1cnJlbnRseURvd24gPSAwOwogCisgICAgZXZlbnQudHlwZSA9
IEdES19CVVRUT05fUkVMRUFTRTsKKyAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKQEAgLTMwMiwyOSArMjYw
LDE4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlTW92ZVRvQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uCiAgICAgZXZlbnQubW90aW9uLnRpbWUgPSBH
REtfQ1VSUkVOVF9USU1FOwogICAgIGV2ZW50Lm1vdGlvbi53aW5kb3cgPSBHVEtfV0lER0VUKHZp
ZXcpLT53aW5kb3c7CiAgICAgZXZlbnQubW90aW9uLmRldmljZSA9IGdka19kZXZpY2VfZ2V0X2Nv
cmVfcG9pbnRlcigpOworICAgIGV2ZW50Lm1vdGlvbi5zdGF0ZSA9IGdldFN0YXRlRmxhZ3MoKTsK
IAotICAgIGludCB4X3Jvb3QsIHlfcm9vdDsKKyAgICBpbnQgeFJvb3QsIHlSb290OwogI2lmIEdU
S19DSEVDS19WRVJTSU9OKDIsMTcsMykKLSAgICBnZGtfd2luZG93X2dldF9yb290X2Nvb3JkcyhH
VEtfV0lER0VUKHZpZXcpLT53aW5kb3csIGxhc3RNb3VzZVBvc2l0aW9uWCwgbGFzdE1vdXNlUG9z
aXRpb25ZLCAmeF9yb290LCAmeV9yb290KTsKKyAgICBnZGtfd2luZG93X2dldF9yb290X2Nvb3Jk
cyhHVEtfV0lER0VUKHZpZXcpLT53aW5kb3csIGxhc3RNb3VzZVBvc2l0aW9uWCwgbGFzdE1vdXNl
UG9zaXRpb25ZLCAmeFJvb3QsICZ5Um9vdCk7CiAjZWxzZQotICAgIGdldFJvb3RDb29yZHMoR1RL
X1dJREdFVCh2aWV3KSwgJnhfcm9vdCwgJnlfcm9vdCk7CisgICAgZ2V0Um9vdENvb3JkcyhHVEtf
V0lER0VUKHZpZXcpLCAmeFJvb3QsICZ5Um9vdCk7CiAjZW5kaWYKKyAgICBldmVudC5tb3Rpb24u
eF9yb290ID0geFJvb3Q7CisgICAgZXZlbnQubW90aW9uLnlfcm9vdCA9IHlSb290OwogCi0gICAg
ZXZlbnQubW90aW9uLnhfcm9vdCA9IHhfcm9vdDsKLSAgICBldmVudC5tb3Rpb24ueV9yb290ID0g
eV9yb290OwotICAgIAotICAgIGV2ZW50Lm1vdGlvbi5zdGF0ZSA9IGdldFN0YXRlRmxhZ3MoKTsK
LQotICAgIGlmIChkcmFnTW9kZSAmJiBkb3duICYmICFyZXBsYXlpbmdTYXZlZEV2ZW50cykgewot
ICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlXS5ldmVudCA9IGV2ZW50OwotICAgICAgICBtc2dR
dWV1ZVtlbmRPZlF1ZXVlKytdLmlzRHJhZ0V2ZW50ID0gdHJ1ZTsKLSAgICB9IGVsc2UgewotICAg
ICAgICB3ZWJraXRfd2ViX2ZyYW1lX2xheW91dChtYWluRnJhbWUpOwotCi0gICAgICAgIGdib29s
ZWFuIHJldHVybl92YWw7Ci0gICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAibW90
aW9uX25vdGlmeV9ldmVudCIsICZldmVudCwgJnJldHVybl92YWwpOwotICAgIH0KLQorICAgIHNl
bmRPclF1ZXVlRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKIH0KIApAQCAtMzYzLDE0ICszMTAsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3Vz
ZVdoZWVsVG9DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
bwogICAgIGVsc2UKICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKIAotICAgIGlmIChk
cmFnTW9kZSAmJiBkb3duICYmICFyZXBsYXlpbmdTYXZlZEV2ZW50cykgewotICAgICAgICBtc2dR
dWV1ZVtlbmRPZlF1ZXVlXS5ldmVudCA9IGV2ZW50OwotICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1
ZXVlKytdLmlzRHJhZ0V2ZW50ID0gdHJ1ZTsKLSAgICB9IGVsc2UgewotICAgICAgICB3ZWJraXRf
d2ViX2ZyYW1lX2xheW91dChtYWluRnJhbWUpOwotICAgICAgICBndGtfbWFpbl9kb19ldmVudCgm
ZXZlbnQpOwotICAgIH0KLQorICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtMzgzLDQ4ICszMjMsNjUg
QEAgc3RhdGljIEpTVmFsdWVSZWYgYmVnaW5EcmFnV2l0aEZpbGVzQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGYKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7CiB9CiAKLXZvaWQgcmVwbGF5U2F2ZWRFdmVudHMoKQorc3RhdGljIHZvaWQg
c2VuZE9yUXVldWVFdmVudChHZGtFdmVudCBldmVudCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBk
b2Vzbid0IGRlYWwgd2l0aCBmb3J3YXJkIGxlYXBzLCBidXQgaXQgc2hvdWxkLgorICAgIC8vIE1v
dXNlIG1vdmUgZXZlbnRzIGFyZSBxdWV1ZWQgaWYgdGhlIHByZXZpb3VzIGV2ZW50IHdhcyBxdWV1
ZWQgb3IgaWYgYQorICAgIC8vIGRlbGF5IHdhcyBzZXQgdXAgYnkgbGVhcEZvcndhcmQoKS4KKyAg
ICBpZiAoZW5kT2ZRdWV1ZSAhPSBzdGFydE9mUXVldWUgfHwgbXNnUXVldWVbZW5kT2ZRdWV1ZV0u
ZGVsYXkpIHsKKyAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZSsrXS5ldmVudCA9IGV2ZW50Owor
ICAgICAgICByZXBsYXlTYXZlZEV2ZW50cygpOworICAgICAgICByZXR1cm47CisgICAgfQogCisg
ICAgZGlzcGF0Y2hFdmVudChldmVudCk7Cit9CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnQo
R2RrRXZlbnQgZXZlbnQpCit7CisgICAgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQobWFpbkZyYW1l
KTsKICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3Zp
ZXcobWFpbkZyYW1lKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJl
cGxheWluZ1NhdmVkRXZlbnRzID0gdHJ1ZTsKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAg
ICBpZiAoZXZlbnQudHlwZSA9PSBHREtfQlVUVE9OX1BSRVNTIHx8IGV2ZW50LnR5cGUgPT0gR0RL
XzJCVVRUT05fUFJFU1MpCisgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0
dG9uX3ByZXNzX2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuVmFsdWUpOworICAgIGVsc2UgaWYgKGV2
ZW50LnR5cGUgPT0gR0RLX0JVVFRPTl9SRUxFQVNFKQorICAgICAgICBnX3NpZ25hbF9lbWl0X2J5
X25hbWUodmlldywgImJ1dHRvbl9yZWxlYXNlX2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuVmFsdWUp
OworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gR0RLX01PVElPTl9OT1RJRlkpCisgICAgICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAibW90aW9uX25vdGlmeV9ldmVudCIsICZldmVu
dCwgJnJldHVyblZhbHVlKTsKKyAgICBlbHNlIGlmIChldmVudC50eXBlID09IEdES19TQ1JPTEwp
CisgICAgICAgIGd0a19tYWluX2RvX2V2ZW50KCZldmVudCk7Cit9CiAKLSAgICBmb3IgKHVuc2ln
bmVkIHF1ZXVlUG9zID0gMDsgcXVldWVQb3MgPCBlbmRPZlF1ZXVlOyBxdWV1ZVBvcysrKSB7Ci0g
ICAgICAgIEdka0V2ZW50IGV2ZW50ID0gbXNnUXVldWVbcXVldWVQb3NdLmV2ZW50OwotICAgICAg
ICBnYm9vbGVhbiByZXR1cm5fdmFsOwotCi0gICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewot
ICAgICAgICBjYXNlIEdES19CVVRUT05fUkVMRUFTRToKLSAgICAgICAgICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9uX3JlbGVhc2VfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5f
dmFsKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdES19CVVRUT05fUFJFU1M6
Ci0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywgImJ1dHRvbl9wcmVzc19l
dmVudCIsICZldmVudCwgJnJldHVybl92YWwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgR0RLX01PVElPTl9OT1RJRlk6Ci0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25h
bWUodmlldywgIm1vdGlvbl9ub3RpZnlfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIH0KK3N0YXRpYyBnYm9vbGVhbiBsZWFwRm9yd2FyZERlbGF5Q2FsbGJhY2soZ3Bv
aW50ZXIgZGF0YSkKK3sKKyAgICBkb25lTGVhcGluZ0ZvcndhcmQgPSB0cnVlOworICAgIHJldHVy
biBmYWxzZTsKK30KIAotICAgICAgICBzdGFydE9mUXVldWUrKzsKLSAgICB9Cit2b2lkIHJlcGxh
eVNhdmVkRXZlbnRzKCkKK3sKKyAgICByZXBsYXlpbmdTYXZlZEV2ZW50cyA9IHRydWU7CiAKLSAg
ICBpbnQgbnVtUXVldWVkTWVzc2FnZXMgPSBlbmRPZlF1ZXVlIC0gc3RhcnRPZlF1ZXVlOwotICAg
IGlmICghbnVtUXVldWVkTWVzc2FnZXMpIHsKLSAgICAgICAgc3RhcnRPZlF1ZXVlID0gMDsKLSAg
ICAgICAgZW5kT2ZRdWV1ZSA9IDA7Ci0gICAgICAgIHJlcGxheWluZ1NhdmVkRXZlbnRzID0gZmFs
c2U7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoc3RhcnRPZlF1ZXVlIDwgZW5kT2ZRdWV1ZSkg
eworICAgICAgICAvLyBGaXJzdCBzZW5kIGFsbCB0aGUgZXZlbnRzIHRoYXQgYXJlIHJlYWR5IHRv
IGJlIHNlbnQKKyAgICAgICAgd2hpbGUgKCFtc2dRdWV1ZVtzdGFydE9mUXVldWVdLmRlbGF5ICYm
IHN0YXJ0T2ZRdWV1ZSA8IGVuZE9mUXVldWUpCisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KG1z
Z1F1ZXVlW3N0YXJ0T2ZRdWV1ZSsrXS5ldmVudCk7CisKKyAgICAgICAgaWYgKHN0YXJ0T2ZRdWV1
ZSA9PSBlbmRPZlF1ZXVlKSB7CisgICAgICAgICAgICBzdGFydE9mUXVldWUgPSAwOworICAgICAg
ICAgICAgZW5kT2ZRdWV1ZSA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBQ
dW1wIHRoZSBtYWluIGxvb3AgdW50aWwgd2UgaGF2ZSBmaW5pc2hlZCBsZWFwaW5nIGZvcndhcmQu
CisgICAgICAgICAgICBkb25lTGVhcGluZ0ZvcndhcmQgPSBmYWxzZTsKKyAgICAgICAgICAgIGdf
dGltZW91dF9hZGQobXNnUXVldWVbc3RhcnRPZlF1ZXVlXS5kZWxheSwgbGVhcEZvcndhcmREZWxh
eUNhbGxiYWNrLCAwKTsKKyAgICAgICAgICAgIG1zZ1F1ZXVlW3N0YXJ0T2ZRdWV1ZV0uZGVsYXkg
PSAwOworICAgICAgICAgICAgd2hpbGUgKCFkb25lTGVhcGluZ0ZvcndhcmQpCisgICAgICAgICAg
ICAgICAgZ3RrX21haW5faXRlcmF0aW9uKCk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGFy
dE9mUXVldWUgPSAwOwotICAgIGVuZE9mUXVldWUgPSAwOwotCiAgICAgcmVwbGF5aW5nU2F2ZWRF
dmVudHMgPSBmYWxzZTsKIH0KIApAQCAtNjYxLDE3ICs2MTgsMjEgQEAgc3RhdGljIEpTQ2xhc3NS
ZWYgZ2V0Q2xhc3MoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgcmV0dXJuIGV2ZW50U2VuZGVy
Q2xhc3M7CiB9CiAKLUpTT2JqZWN0UmVmIG1ha2VFdmVudFNlbmRlcihKU0NvbnRleHRSZWYgY29u
dGV4dCkKK0pTT2JqZWN0UmVmIG1ha2VFdmVudFNlbmRlcihKU0NvbnRleHRSZWYgY29udGV4dCwg
Ym9vbCBpc1RvcEZyYW1lKQogewotICAgIGRvd24gPSBmYWxzZTsKLSAgICBkcmFnTW9kZSA9IHRy
dWU7Ci0gICAgbGFzdE1vdXNlUG9zaXRpb25YID0gbGFzdE1vdXNlUG9zaXRpb25ZID0gMDsKLSAg
ICBsYXN0Q2xpY2tQb3NpdGlvblggPSBsYXN0Q2xpY2tQb3NpdGlvblkgPSAwOwotCi0gICAgaWYg
KCFyZXBsYXlpbmdTYXZlZEV2ZW50cykgewotICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBi
ZSBjYWxsZWQgaW4gdGhlIG1pZGRsZSBvZiBhIHRlc3QsIGV2ZW4KLSAgICAgICAgLy8gd2hpbGUg
cmVwbGF5aW5nIHNhdmVkIGV2ZW50cy4gUmVzZXR0aW5nIHRoZXNlIHdoaWxlIGRvaW5nIHRoYXQK
LSAgICAgICAgLy8gY2FuIGJyZWFrIHRoaW5ncy4KKyAgICBpZiAoaXNUb3BGcmFtZSkgeworICAg
ICAgICBkcmFnTW9kZSA9IHRydWU7CisgICAgICAgIHJlcGxheWluZ1NhdmVkRXZlbnRzID0gZmFs
c2U7CisgICAgICAgIGRvbmVMZWFwaW5nRm9yd2FyZCA9IGZhbHNlOworICAgICAgICB0aW1lT2Zm
c2V0ID0gMDsKKworICAgICAgICBsYXN0TW91c2VQb3NpdGlvblggPSBsYXN0TW91c2VQb3NpdGlv
blkgPSAwOworICAgICAgICBsYXN0Q2xpY2tQb3NpdGlvblggPSBsYXN0Q2xpY2tQb3NpdGlvblkg
PSAwOworICAgICAgICBsYXN0Q2xpY2tUaW1lT2Zmc2V0ID0gMDsKKyAgICAgICAgbGFzdENsaWNr
QnV0dG9uID0gMDsKKyAgICAgICAgYnV0dG9uQ3VycmVudGx5RG93biA9IDA7CisgICAgICAgIGNs
aWNrQ291bnQgPSAwOworCiAgICAgICAgIGVuZE9mUXVldWUgPSAwOwogICAgICAgICBzdGFydE9m
UXVldWUgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9FdmVudFNlbmRlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50
U2VuZGVyLmgKaW5kZXggMjcyZThhOS4uY2UzM2NjYyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIHR5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwogdHlwZWRlZiBzdHJ1Y3Qg
T3BhcXVlSlNWYWx1ZSogSlNPYmplY3RSZWY7CiAKLUpTT2JqZWN0UmVmIG1ha2VFdmVudFNlbmRl
cihKU0NvbnRleHRSZWYgY29udGV4dCk7CitKU09iamVjdFJlZiBtYWtlRXZlbnRTZW5kZXIoSlND
b250ZXh0UmVmIGNvbnRleHQsIGJvb2wgaXNUb3BGcmFtZSk7CiB2b2lkIHJlcGxheVNhdmVkRXZl
bnRzKCk7CiAKICNlbmRpZgotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55607</attachid>
            <date>2010-05-10 15:10:35 -0700</date>
            <delta_ts>2010-05-10 19:09:38 -0700</delta_ts>
            <desc>Only initialize the EventSender when loading the top frame</desc>
            <filename>bug-38853-20100510151034.patch</filename>
            <type>text/plain</type>
            <size>5400</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2ZTBmMmI0NjcxMTQ5YmE1ODBkMTA1MTljNWViNGRhZTMwMTc0NGVlLi5jMTdhYTA5
NDI5YWEzODM4NWY3ZjVhYzgwMDBkMTkyNDgwMGZlNTc4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMDUtMTAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIERvdWJs
ZSBjbGlja3MgY2F1c2UgdGhyZWUgYnV0dG9uIHByZXNzIGV2ZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKKworICAgICAgICBPbmx5IGlu
aXRpYWxpemUgdGhlIEdUSysgRXZlbnRTZW5kZXIgd2hlbiBsb2FkaW5nIHRoZSB0b3AgZnJhbWUu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAg
ICAgICAod2ViVmlld1dpbmRvd09iamVjdENsZWFyZWQpOiBQYXNzIGluZm9ybWF0aW9uIGFib3V0
IHdoZXRoZXIgdGhpcyBpcyB0aGUgbWFpbiBmcmFtZSB0byBtYWtlRXZlbnRTZW5kZXIuCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKG1ha2VF
dmVudFNlbmRlcik6IE9ubHkgaW5pdGlhbGl6ZSB0aGUgRXZlbnRTZW5kZXIgaWYgdGhlIG1haW4g
ZnJhbWUgaGFzIGxvYWRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5k
ZXIuaDogQWRkIHRoZSBpc1RvcEZyYW1lIGFyZ3VtZW50LgorCiAyMDEwLTA1LTEwICBEaXJrIFBy
YW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBS
ZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVy
VHJlZS5jcHAKaW5kZXggMGYzY2EzODNmNDJlOGJiZjYwMzNiOTQ3NTI0MjM5OGEwY2YyYTdiMi4u
ZjNlZWRjNjIxMzJkM2VlOWMyYjE5OTQyNzY0ZDMzZDVlNzY4ZmE1YSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0yLDYgKzIs
NyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRva2VyIDxhbHBAbnVhbnRpLmNvbT4KICAqIENv
cHlyaWdodCAoQykgMjAwOSBKYW4gQWxvbnpvIDxqbWFsb256b0BnbWFpbC5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNjYyLDcgKzY2Myw3IEBAIHN0YXRpYyB2b2lkIHdlYlZpZXdXaW5kb3dPYmplY3RDbGVh
cmVkKFdlYktpdFdlYlZpZXcqIHZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtCiAgICAgQVNTRVJU
KCFleGNlcHRpb24pOwogCiAgICAgSlNTdHJpbmdSZWYgZXZlbnRTZW5kZXJTdHIgPSBKU1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZXZlbnRTZW5kZXIiKTsKLSAgICBKU1ZhbHVlUmVmIGV2
ZW50U2VuZGVyID0gbWFrZUV2ZW50U2VuZGVyKGNvbnRleHQpOworICAgIEpTVmFsdWVSZWYgZXZl
bnRTZW5kZXIgPSBtYWtlRXZlbnRTZW5kZXIoY29udGV4dCwgIXdlYmtpdF93ZWJfZnJhbWVfZ2V0
X3BhcmVudChmcmFtZSkpOwogICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwgd2luZG93
T2JqZWN0LCBldmVudFNlbmRlclN0ciwgZXZlbnRTZW5kZXIsIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUsIDApOwogICAgIEpTU3Ry
aW5nUmVsZWFzZShldmVudFNlbmRlclN0cik7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAppbmRleCA5YzI3ZDhjODlmMGMwMDYyOGRjYmU1MmM3
MDA2NmQwMzRkOWJkN2ZkLi5lYzJkZTM4YzE4N2U5YTkxYmI0MGEwMTYxZjQ1ZjI3OTlkZTc2NmQx
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIu
Y3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAK
QEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IFphbiBEb2JlcnNlayA8
emFuZG9iZXJzZWtAZ21haWwuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MiwxNiArNTMsMTYgQEAgZXh0ZXJuICJDIiB7
CiAgICAgZXh0ZXJuIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQoV2ViS2l0V2ViRnJhbWUq
IGZyYW1lKTsKIH0KIAotc3RhdGljIGJvb2wgZG93biA9IGZhbHNlOwotc3RhdGljIGJvb2wgY3Vy
cmVudEV2ZW50QnV0dG9uID0gMTsKLXN0YXRpYyBib29sIGRyYWdNb2RlID0gdHJ1ZTsKLXN0YXRp
YyBib29sIHJlcGxheWluZ1NhdmVkRXZlbnRzID0gZmFsc2U7CitzdGF0aWMgYm9vbCBkb3duOwor
c3RhdGljIGJvb2wgY3VycmVudEV2ZW50QnV0dG9uOworc3RhdGljIGJvb2wgZHJhZ01vZGU7Citz
dGF0aWMgYm9vbCByZXBsYXlpbmdTYXZlZEV2ZW50czsKIHN0YXRpYyBpbnQgbGFzdE1vdXNlUG9z
aXRpb25YOwogc3RhdGljIGludCBsYXN0TW91c2VQb3NpdGlvblk7CiAKIHN0YXRpYyBpbnQgbGFz
dENsaWNrUG9zaXRpb25YOwogc3RhdGljIGludCBsYXN0Q2xpY2tQb3NpdGlvblk7Ci1zdGF0aWMg
aW50IGNsaWNrQ291bnQgPSAwOworc3RhdGljIGludCBjbGlja0NvdW50OwogCiBzdHJ1Y3QgRGVs
YXllZE1lc3NhZ2UgewogICAgIEdka0V2ZW50IGV2ZW50OwpAQCAtNjYxLDE3ICs2NjIsMTkgQEAg
c3RhdGljIEpTQ2xhc3NSZWYgZ2V0Q2xhc3MoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgcmV0
dXJuIGV2ZW50U2VuZGVyQ2xhc3M7CiB9CiAKLUpTT2JqZWN0UmVmIG1ha2VFdmVudFNlbmRlcihK
U0NvbnRleHRSZWYgY29udGV4dCkKK0pTT2JqZWN0UmVmIG1ha2VFdmVudFNlbmRlcihKU0NvbnRl
eHRSZWYgY29udGV4dCwgYm9vbCBpc1RvcEZyYW1lKQogewotICAgIGRvd24gPSBmYWxzZTsKLSAg
ICBkcmFnTW9kZSA9IHRydWU7Ci0gICAgbGFzdE1vdXNlUG9zaXRpb25YID0gbGFzdE1vdXNlUG9z
aXRpb25ZID0gMDsKLSAgICBsYXN0Q2xpY2tQb3NpdGlvblggPSBsYXN0Q2xpY2tQb3NpdGlvblkg
PSAwOwotCi0gICAgaWYgKCFyZXBsYXlpbmdTYXZlZEV2ZW50cykgewotICAgICAgICAvLyBUaGlz
IGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgaW4gdGhlIG1pZGRsZSBvZiBhIHRlc3QsIGV2ZW4KLSAg
ICAgICAgLy8gd2hpbGUgcmVwbGF5aW5nIHNhdmVkIGV2ZW50cy4gUmVzZXR0aW5nIHRoZXNlIHdo
aWxlIGRvaW5nIHRoYXQKLSAgICAgICAgLy8gY2FuIGJyZWFrIHRoaW5ncy4KKyAgICAvLyBPbmx5
IGluaXRpYWxpemUgdGhlIEV2ZW50U2VuZGVyIGlmIHdlIGFyZSBsb2FkaW5nIHRoZSB0b3AgZnJh
bWUuCisgICAgLy8gTG9hZGluZyBzdWItZnJhbWVzIHNob3VsZCBub3QgcmVzZXQgdGhlIGV2ZW50
IHNlbmRlciBzdGF0ZS4KKyAgICBpZiAoIWlzVG9wRnJhbWUpIHsKKyAgICAgICAgZG93biA9IGZh
bHNlOworICAgICAgICBjdXJyZW50RXZlbnRCdXR0b24gPSAxOworICAgICAgICBkcmFnTW9kZSA9
IHRydWU7CisgICAgICAgIHJlcGxheWluZ1NhdmVkRXZlbnRzID0gZmFsc2U7CisgICAgICAgIGxh
c3RNb3VzZVBvc2l0aW9uWCA9IGxhc3RNb3VzZVBvc2l0aW9uWSA9IDA7CisgICAgICAgIGxhc3RD
bGlja1Bvc2l0aW9uWCA9IGxhc3RDbGlja1Bvc2l0aW9uWSA9IDA7CisgICAgICAgIGNsaWNrQ291
bnQgPSAwOworCiAgICAgICAgIGVuZE9mUXVldWUgPSAwOwogICAgICAgICBzdGFydE9mUXVldWUg
PSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9F
dmVudFNlbmRlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVy
LmgKaW5kZXggMjcyZThhOTQwMjA3OWQ5MjcyYzAxNTA4N2I2YmVkOTdhNDk0MjJjYi4uNDg5MjAw
OWZjMTA2YTNmYjQzYjI4ZTY2ZDM2ZGExMGQ4YmUyNGJhMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Myw3ICszNCw3IEBACiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTQ29u
dGV4dFJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpTT2JqZWN0UmVmOwogCi1K
U09iamVjdFJlZiBtYWtlRXZlbnRTZW5kZXIoSlNDb250ZXh0UmVmIGNvbnRleHQpOworSlNPYmpl
Y3RSZWYgbWFrZUV2ZW50U2VuZGVyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBib29sIGlzVG9wRnJh
bWUpOwogdm9pZCByZXBsYXlTYXZlZEV2ZW50cygpOwogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55642</attachid>
            <date>2010-05-10 19:09:42 -0700</date>
            <delta_ts>2010-05-10 20:50:52 -0700</delta_ts>
            <desc>Add leapForward support to the DRT</desc>
            <filename>bug-38853-20100510190941.patch</filename>
            <type>text/plain</type>
            <size>17381</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAxOTlhZjJkZWIwOWRjMTdkMDdiNzI1ZmUxYmQzZjNlZTllNWNiZmM2Li42MzA2ZDYw
ZjQ1MTZiZWI2ZjIxYjJkYzYyMWU0MjhhNTA5YTUwNjc2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTAtMDUtMTAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvdWJsZSBjbGlj
a3MgY2F1c2UgdGhyZWUgYnV0dG9uIHByZXNzIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKKworICAgICAgICBBZGQgbGVhcEZvcndh
cmQgc3VwcG9ydCB0byB0aGUgR1RLKyBEUlQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9n
dGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAod2ViVmlld1dpbmRvd09iamVjdENsZWFy
ZWQpOiBPbmx5IGluaXRpYWxpemUgdGhlIEV2ZW50U2VuZGVyIHdoZW4gbG9hZGluZyB0aGUgdG9w
IGZyYW1lLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHA6Cisg
ICAgICAgIChsZWFwRm9yd2FyZENhbGxiYWNrKTogQWRkIHN1cHBvcnQgZm9yIGFkanVzdGluZyB0
aGUgdGltZSBvZmZzZXQgb24gbGVhcEZvcndhcmQoKQorICAgICAgICAoY29udGV4dENsaWNrQ2Fs
bGJhY2spOiBVc2Ugc2VuZE9yUXVldWVFdmVudC4KKyAgICAgICAgKHVwZGF0ZUNsaWNrQ291bnQp
OiBUYWtlIHRpbWUgb2Zmc2V0IGludG8gYWNjb3VudCB3aGVuIGNvdW50aW5nIGNsaWNrcy4KKyAg
ICAgICAgKG1vdXNlRG93bkNhbGxiYWNrKTogVXNlIHNlbmRPclF1ZXVlRXZlbnQuCisgICAgICAg
IChnZXRTdGF0ZUZsYWdzKTogQ2hhbmdlIGRvd24vY3VycmVudEV2ZW50QnV0dG9uIGludG8gYnV0
dG9uQ3VycmVudGx5L2xhc3RDbGlja0J1dHRvbi4KKyAgICAgICAgKG1vdXNlVXBDYWxsYmFjayk6
IFVzZSBzZW5kT3JRdWV1ZUV2ZW50LgorICAgICAgICAobW91c2VNb3ZlVG9DYWxsYmFjayk6IFVz
ZSBzZW5kT3JRdWV1ZUV2ZW50LgorICAgICAgICAobW91c2VXaGVlbFRvQ2FsbGJhY2spOiBVc2Ug
c2VuZE9yUXVldWVFdmVudC4KKyAgICAgICAgKHNlbmRPclF1ZXVlRXZlbnQpOiBBZGRlZC4KKyAg
ICAgICAgKGRpc3BhdGNoRXZlbnQpOiBBZGRlZC4KKyAgICAgICAgKGxlYXBGb3J3YXJkRGVsYXlD
YWxsYmFjayk6IEFkZGVkLgorICAgICAgICAocmVwbGF5U2F2ZWRFdmVudHMpOiBQcm9wZXJseSBo
YW5kbGUgbGVhcEZvcndhcmQgaGVyZSBhbmQgZGVmZXIgdG8gZGlzcGF0Y2hFdmVudC4KKyAgICAg
ICAgKG1ha2VFdmVudFNlbmRlcik6IE9ubHkgaW5pdGlhbGl6ZSB0aGUgRXZlbnRTZW5kZXIgd2hl
biBsb2FkaW5nIHRoZSB0b3AgZnJhbWUuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0V2
ZW50U2VuZGVyLmg6IE9ubHkgaW5pdGlhbGl6ZSB0aGUgRXZlbnRTZW5kZXIgd2hlbiBsb2FkaW5n
IHRoZSB0b3AgZnJhbWUuCisKIDIwMTAtMDUtMTAgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCAwZjNj
YTM4M2Y0MmU4YmJmNjAzM2I5NDc1MjQyMzk4YTBjZjJhN2IyLi5lOTEyYTQ4NzczN2RjNjM2OGIy
ODIzY2UwMmFhZDczNDMwMjY2ZmUyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTY2Miw3ICs2NjIsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZChXZWJLaXRXZWJWaWV3KiB2aWV3LCBXZWJLaXRX
ZWJGcmFtZSogZnJhbQogICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKIAogICAgIEpTU3RyaW5nUmVm
IGV2ZW50U2VuZGVyU3RyID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImV2ZW50U2Vu
ZGVyIik7Ci0gICAgSlNWYWx1ZVJlZiBldmVudFNlbmRlciA9IG1ha2VFdmVudFNlbmRlcihjb250
ZXh0KTsKKyAgICBKU1ZhbHVlUmVmIGV2ZW50U2VuZGVyID0gbWFrZUV2ZW50U2VuZGVyKGNvbnRl
eHQsICF3ZWJraXRfd2ViX2ZyYW1lX2dldF9wYXJlbnQoZnJhbWUpKTsKICAgICBKU09iamVjdFNl
dFByb3BlcnR5KGNvbnRleHQsIHdpbmRvd09iamVjdCwgZXZlbnRTZW5kZXJTdHIsIGV2ZW50U2Vu
ZGVyLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlLCAwKTsKICAgICBKU1N0cmluZ1JlbGVhc2UoZXZlbnRTZW5kZXJTdHIpOwogfQpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNw
cCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKaW5kZXgg
OWMyN2Q4Yzg5ZjBjMDA2MjhkY2JlNTJjNzAwNjZkMDM0ZDliZDdmZC4uYTkwNzI4OGUzMTFiMmEz
NGZmNDg0NTliZTgwMWVkYjZlYjhmMTFiMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCkBAIC00NSwyOCArNDUsMjkgQEAKICNpbmNsdWRlIDxn
ZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCi0vLyBUT0RPOiBDdXJyZW50
bHkgZHJhZyBhbmQgZHJvcCByZWxhdGVkIGNvZGUgaXMgbGVmdCBvdXQgYW5kCi0vLyBzaG91bGQg
YmUgbWVyZ2VkIG9uY2Ugd2UgaGF2ZSBkcmFnIGFuZCBkcm9wIHN1cHBvcnQgaW4gV2ViQ29yZS4K
Ky8vIEZJWE1FOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3Igc3ludGhlc2l6aW5nIGRyb3AgZXZlbnRz
LgogCiBleHRlcm4gIkMiIHsKICAgICBleHRlcm4gdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX2xheW91
dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpOwogfQogCi1zdGF0aWMgYm9vbCBkb3duID0gZmFsc2U7
Ci1zdGF0aWMgYm9vbCBjdXJyZW50RXZlbnRCdXR0b24gPSAxOwotc3RhdGljIGJvb2wgZHJhZ01v
ZGUgPSB0cnVlOwotc3RhdGljIGJvb2wgcmVwbGF5aW5nU2F2ZWRFdmVudHMgPSBmYWxzZTsKK3N0
YXRpYyBib29sIGRyYWdNb2RlOworc3RhdGljIGJvb2wgcmVwbGF5aW5nU2F2ZWRFdmVudHM7Citz
dGF0aWMgYm9vbCBkb25lTGVhcGluZ0ZvcndhcmQ7CitzdGF0aWMgaW50IHRpbWVPZmZzZXQ7CisK
IHN0YXRpYyBpbnQgbGFzdE1vdXNlUG9zaXRpb25YOwogc3RhdGljIGludCBsYXN0TW91c2VQb3Np
dGlvblk7Ci0KIHN0YXRpYyBpbnQgbGFzdENsaWNrUG9zaXRpb25YOwogc3RhdGljIGludCBsYXN0
Q2xpY2tQb3NpdGlvblk7Ci1zdGF0aWMgaW50IGNsaWNrQ291bnQgPSAwOworc3RhdGljIGludCBs
YXN0Q2xpY2tUaW1lT2Zmc2V0Oworc3RhdGljIGludCBsYXN0Q2xpY2tCdXR0b247CitzdGF0aWMg
aW50IGJ1dHRvbkN1cnJlbnRseURvd247CitzdGF0aWMgaW50IGNsaWNrQ291bnQ7CiAKIHN0cnVj
dCBEZWxheWVkTWVzc2FnZSB7CiAgICAgR2RrRXZlbnQgZXZlbnQ7CiAgICAgZ3Vsb25nIGRlbGF5
OwotICAgIGdib29sZWFuIGlzRHJhZ0V2ZW50OwogfTsKIAogc3RhdGljIERlbGF5ZWRNZXNzYWdl
IG1zZ1F1ZXVlWzEwMjRdOwpAQCAtODQsNiArODUsMTAgQEAgZW51bSBLZXlMb2NhdGlvbkNvZGUg
ewogICAgIERPTV9LRVlfTE9DQVRJT05fTlVNUEFEICAgICAgICA9IDB4MDMKIH07CiAKK3N0YXRp
YyB2b2lkIHNlbmRPclF1ZXVlRXZlbnQoR2RrRXZlbnQgZXZlbnQpOworc3RhdGljIHZvaWQgZGlz
cGF0Y2hFdmVudChHZGtFdmVudCBldmVudCk7CitzdGF0aWMgZ3VpbnQgZ2V0U3RhdGVGbGFncygp
OworCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXREcmFnTW9kZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29u
dGV4dCwgZHJhZ01vZGUpOwpAQCAtOTcsMTQgKzEwMiwxNyBAQCBzdGF0aWMgYm9vbCBzZXREcmFn
TW9kZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
U3RyaQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBsZWFwRm9yd2FyZENhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKIHsKLSAgICAvLyBGSVhNRTogQWRkIHByb3BlciBzdXBwb3J0IGZv
ciBmb3J3YXJkIGxlYXBzCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPiAwKSB7CisgICAgICAgIG1z
Z1F1ZXVlW2VuZE9mUXVldWVdLmRlbGF5ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3Vt
ZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICAgICAgdGltZU9mZnNldCArPSBtc2dRdWV1ZVtlbmRP
ZlF1ZXVlXS5kZWxheTsKKyAgICAgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24p
OworICAgIH0KKwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0K
IAogc3RhdGljIEpTVmFsdWVSZWYgY29udGV4dENsaWNrQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewotICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7
Ci0KICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3Zp
ZXcobWFpbkZyYW1lKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKQEAgLTExNiwyMiArMTI0LDIwIEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIGNvbnRleHRDbGlja0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvCiAgICAgZXZlbnQuYnV0dG9uLnkgPSBsYXN0TW91c2VQb3NpdGlvblk7CiAgICAg
ZXZlbnQuYnV0dG9uLndpbmRvdyA9IEdUS19XSURHRVQodmlldyktPndpbmRvdzsKIAotICAgIGdi
b29sZWFuIHJldHVybl92YWw7Ci0gICAgZG93biA9IHRydWU7CiAgICAgZXZlbnQudHlwZSA9IEdE
S19CVVRUT05fUFJFU1M7Ci0gICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25f
cHJlc3NfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLQotICAgIGRvd24gPSBmYWxzZTsK
KyAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKICAgICBldmVudC50eXBlID0gR0RLX0JVVFRP
Tl9SRUxFQVNFOwotICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9uX3JlbGVh
c2VfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKKyAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2
ZW50KTsKIAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAog
c3RhdGljIHZvaWQgdXBkYXRlQ2xpY2tDb3VudChpbnQgYnV0dG9uKQogewotICAgIC8vIEZJWE1F
OiB0YWtlIHRoZSBsYXN0IGNsaWNrZWQgYnV0dG9uIG51bWJlciBhbmQgdGhlIHRpbWUgb2YgbGFz
dCBjbGljayBpbnRvIGFjY291bnQuCi0gICAgaWYgKGxhc3RDbGlja1Bvc2l0aW9uWCAhPSBsYXN0
TW91c2VQb3NpdGlvblggfHwgbGFzdENsaWNrUG9zaXRpb25ZICE9IGxhc3RNb3VzZVBvc2l0aW9u
WSB8fCBjdXJyZW50RXZlbnRCdXR0b24gIT0gYnV0dG9uKQorICAgIGlmIChsYXN0Q2xpY2tQb3Np
dGlvblggIT0gbGFzdE1vdXNlUG9zaXRpb25YCisgICAgICAgIHx8IGxhc3RDbGlja1Bvc2l0aW9u
WSAhPSBsYXN0TW91c2VQb3NpdGlvblkKKyAgICAgICAgfHwgbGFzdENsaWNrQnV0dG9uICE9IGJ1
dHRvbgorICAgICAgICB8fCB0aW1lT2Zmc2V0IC0gbGFzdENsaWNrVGltZU9mZnNldCA+PSAxKQog
ICAgICAgICBjbGlja0NvdW50ID0gMTsKICAgICBlbHNlCiAgICAgICAgIGNsaWNrQ291bnQrKzsK
QEAgLTE1NCwyNCArMTYwLDIwIEBAIHN0YXRpYyB2b2lkIGdldFJvb3RDb29yZHMoR3RrV2lkZ2V0
KiB2aWV3LCBpbnQqIHJvb3RYLCBpbnQqIHJvb3RZKQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBtb3Vz
ZURvd25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CisKICAgICBXZWJL
aXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1l
KTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKIAotICAgIGRvd24gPSB0cnVlOwotCiAgICAgR2RrRXZlbnQgZXZlbnQ7CiAgICAg
bWVtc2V0KCZldmVudCwgMCwgc2l6ZW9mKGV2ZW50KSk7Ci0gICAgZXZlbnQudHlwZSA9IEdES19C
VVRUT05fUFJFU1M7CiAgICAgZXZlbnQuYnV0dG9uLmJ1dHRvbiA9IDE7CiAKICAgICBpZiAoYXJn
dW1lbnRDb3VudCA9PSAxKSB7Ci0gICAgICAgIGV2ZW50LmJ1dHRvbi5idXR0b24gPSAoaW50KUpT
VmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikgKyAxOworICAg
ICAgICBldmVudC5idXR0b24uYnV0dG9uID0gKGludCkoSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSkgKyAxOwogICAgICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbCgoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbiksIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpKTsKICAgICB9CiAKLSAgICBjdXJyZW50RXZlbnRCdXR0b24gPSBldmVudC5idXR0b24u
YnV0dG9uOwotCiAgICAgZXZlbnQuYnV0dG9uLnggPSBsYXN0TW91c2VQb3NpdGlvblg7CiAgICAg
ZXZlbnQuYnV0dG9uLnkgPSBsYXN0TW91c2VQb3NpdGlvblk7CiAgICAgZXZlbnQuYnV0dG9uLndp
bmRvdyA9IEdUS19XSURHRVQodmlldyktPndpbmRvdzsKQEAgLTE4NCw0NSArMTg2LDMxIEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIG1vdXNlRG93bkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwKICNlbHNlCiAgICAgZ2V0Um9vdENvb3JkcyhHVEtfV0lER0VU
KHZpZXcpLCAmeF9yb290LCAmeV9yb290KTsKICNlbmRpZgotCiAgICAgZXZlbnQuYnV0dG9uLnhf
cm9vdCA9IHhfcm9vdDsKICAgICBldmVudC5idXR0b24ueV9yb290ID0geV9yb290OwogCi0gICAg
dXBkYXRlQ2xpY2tDb3VudChldmVudC5idXR0b24uYnV0dG9uKTsKLQotICAgIGlmICghbXNnUXVl
dWVbZW5kT2ZRdWV1ZV0uZGVsYXkpIHsKLSAgICAgICAgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQo
bWFpbkZyYW1lKTsKKyAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9QUkVTUzsKKyAgICBzZW5k
T3JRdWV1ZUV2ZW50KGV2ZW50KTsKIAotICAgICAgICBnYm9vbGVhbiByZXR1cm5fdmFsOwotICAg
ICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywgImJ1dHRvbl9wcmVzc19ldmVudCIsICZl
dmVudCwgJnJldHVybl92YWwpOwotICAgICAgICBpZiAoY2xpY2tDb3VudCA9PSAyKSB7Ci0gICAg
ICAgICAgICBldmVudC50eXBlID0gR0RLXzJCVVRUT05fUFJFU1M7Ci0gICAgICAgICAgICBnX3Np
Z25hbF9lbWl0X2J5X25hbWUodmlldywgImJ1dHRvbl9wcmVzc19ldmVudCIsICZldmVudCwgJnJl
dHVybl92YWwpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gcmVwbGF5U2F2
ZWRFdmVudHMgc2hvdWxkIGhhdmUgdGhlIHJlcXVpcmVkIGxvZ2ljIHRvIG1ha2UgbGVhcEZvcndh
cmQgZGVsYXlzIHdvcmsKLSAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZSsrXS5ldmVudCA9IGV2
ZW50OwotICAgICAgICByZXBsYXlTYXZlZEV2ZW50cygpOworICAgIHVwZGF0ZUNsaWNrQ291bnQo
ZXZlbnQuYnV0dG9uLmJ1dHRvbik7CisgICAgaWYgKGNsaWNrQ291bnQgPT0gMikgeworICAgICAg
ICBldmVudC50eXBlID0gR0RLXzJCVVRUT05fUFJFU1M7CisgICAgICAgIHNlbmRPclF1ZXVlRXZl
bnQoZXZlbnQpOwogICAgIH0KIAorICAgIGJ1dHRvbkN1cnJlbnRseURvd24gPSBldmVudC5idXR0
b24uYnV0dG9uOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0K
IAogc3RhdGljIGd1aW50IGdldFN0YXRlRmxhZ3MoKQogewotICAgIGd1aW50IHN0YXRlID0gMDsK
LQotICAgIGlmIChkb3duKSB7Ci0gICAgICAgIGlmIChjdXJyZW50RXZlbnRCdXR0b24gPT0gMSkK
LSAgICAgICAgICAgIHN0YXRlID0gR0RLX0JVVFRPTjFfTUFTSzsKLSAgICAgICAgZWxzZSBpZiAo
Y3VycmVudEV2ZW50QnV0dG9uID09IDIpCi0gICAgICAgICAgICBzdGF0ZSA9IEdES19CVVRUT04y
X01BU0s7Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRFdmVudEJ1dHRvbiA9PSAzKQotICAgICAg
ICAgICAgc3RhdGUgPSBHREtfQlVUVE9OM19NQVNLOwotICAgIH0gZWxzZQotICAgICAgICBzdGF0
ZSA9IDA7Ci0KLSAgICByZXR1cm4gc3RhdGU7CisgICAgaWYgKGJ1dHRvbkN1cnJlbnRseURvd24g
PT0gMSkKKyAgICAgICAgcmV0dXJuIEdES19CVVRUT04xX01BU0s7CisgICAgaWYgKGJ1dHRvbkN1
cnJlbnRseURvd24gPT0gMikKKyAgICAgICAgcmV0dXJuIEdES19CVVRUT04yX01BU0s7CisgICAg
aWYgKGJ1dHRvbkN1cnJlbnRseURvd24gPT0gMykKKyAgICAgICAgcmV0dXJuIEdES19CVVRUT04z
X01BU0s7CisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlVXBDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC0yMzQsNyArMjIyLDYgQEAgc3Rh
dGljIEpTVmFsdWVSZWYgbW91c2VVcENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlMKIAogICAgIEdka0V2ZW50IGV2ZW50OwogICAgIG1lbXNldCgm
ZXZlbnQsIDAsIHNpemVvZihldmVudCkpOwotICAgIGV2ZW50LnR5cGUgPSBHREtfQlVUVE9OX1JF
TEVBU0U7CiAgICAgZXZlbnQuYnV0dG9uLmJ1dHRvbiA9IDE7CiAKICAgICBpZiAoYXJndW1lbnRD
b3VudCA9PSAxKSB7CkBAIC0yNDIsOCArMjI5LDYgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VV
cENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlMK
ICAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24p
LCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7CiAgICAgfQogCi0gICAgY3VycmVudEV2
ZW50QnV0dG9uID0gZXZlbnQuYnV0dG9uLmJ1dHRvbjsKLQogICAgIGV2ZW50LmJ1dHRvbi54ID0g
bGFzdE1vdXNlUG9zaXRpb25YOwogICAgIGV2ZW50LmJ1dHRvbi55ID0gbGFzdE1vdXNlUG9zaXRp
b25ZOwogICAgIGV2ZW50LmJ1dHRvbi53aW5kb3cgPSBHVEtfV0lER0VUKHZpZXcpLT53aW5kb3c7
CkBAIC0yNTEsOCArMjM2LDYgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VVcENhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlMKICAgICBldmVudC5i
dXR0b24uZGV2aWNlID0gZ2RrX2RldmljZV9nZXRfY29yZV9wb2ludGVyKCk7CiAgICAgZXZlbnQu
YnV0dG9uLnN0YXRlID0gZ2V0U3RhdGVGbGFncygpOwogCi0gICAgZG93biA9IGZhbHNlOwotCiAg
ICAgaW50IHhfcm9vdCwgeV9yb290OwogI2lmIEdUS19DSEVDS19WRVJTSU9OKDIsMTcsMykKICAg
ICBnZGtfd2luZG93X2dldF9yb290X2Nvb3JkcyhHVEtfV0lER0VUKHZpZXcpLT53aW5kb3csIGxh
c3RNb3VzZVBvc2l0aW9uWCwgbGFzdE1vdXNlUG9zaXRpb25ZLCAmeF9yb290LCAmeV9yb290KTsK
QEAgLTI2MywyMCArMjQ2LDE0IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlVXBDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTCiAgICAgZXZlbnQu
YnV0dG9uLnhfcm9vdCA9IHhfcm9vdDsKICAgICBldmVudC5idXR0b24ueV9yb290ID0geV9yb290
OwogCi0gICAgaWYgKChkcmFnTW9kZSAmJiAhcmVwbGF5aW5nU2F2ZWRFdmVudHMpIHx8IG1zZ1F1
ZXVlW2VuZE9mUXVldWVdLmRlbGF5KSB7Ci0gICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWVdLmV2
ZW50ID0gZXZlbnQ7Ci0gICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWUrK10uaXNEcmFnRXZlbnQg
PSB0cnVlOwotICAgICAgICByZXBsYXlTYXZlZEV2ZW50cygpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7Ci0KLSAgICAgICAgZ2Jvb2xl
YW4gcmV0dXJuX3ZhbDsKLSAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0
b25fcmVsZWFzZV9ldmVudCIsICZldmVudCwgJnJldHVybl92YWwpOwotICAgIH0KLQogICAgIGxh
c3RDbGlja1Bvc2l0aW9uWCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsKICAgICBsYXN0Q2xpY2tQb3Np
dGlvblkgPSBsYXN0TW91c2VQb3NpdGlvblk7CisgICAgbGFzdENsaWNrQnV0dG9uID0gYnV0dG9u
Q3VycmVudGx5RG93bjsKKyAgICBsYXN0Q2xpY2tUaW1lT2Zmc2V0ID0gdGltZU9mZnNldDsKKyAg
ICBidXR0b25DdXJyZW50bHlEb3duID0gMDsKIAorICAgIGV2ZW50LnR5cGUgPSBHREtfQlVUVE9O
X1JFTEVBU0U7CisgICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7CiAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC0zMDksMjIgKzI4NiwxMiBAQCBzdGF0
aWMgSlNWYWx1ZVJlZiBtb3VzZU1vdmVUb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbgogI2Vsc2UKICAgICBnZXRSb290Q29vcmRzKEdUS19XSURHRVQo
dmlldyksICZ4X3Jvb3QsICZ5X3Jvb3QpOwogI2VuZGlmCi0KICAgICBldmVudC5tb3Rpb24ueF9y
b290ID0geF9yb290OwogICAgIGV2ZW50Lm1vdGlvbi55X3Jvb3QgPSB5X3Jvb3Q7Ci0gICAgCi0g
ICAgZXZlbnQubW90aW9uLnN0YXRlID0gZ2V0U3RhdGVGbGFncygpOwotCi0gICAgaWYgKGRyYWdN
b2RlICYmIGRvd24gJiYgIXJlcGxheWluZ1NhdmVkRXZlbnRzKSB7Ci0gICAgICAgIG1zZ1F1ZXVl
W2VuZE9mUXVldWVdLmV2ZW50ID0gZXZlbnQ7Ci0gICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWUr
K10uaXNEcmFnRXZlbnQgPSB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHdlYmtpdF93ZWJf
ZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7CiAKLSAgICAgICAgZ2Jvb2xlYW4gcmV0dXJuX3ZhbDsK
LSAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJtb3Rpb25fbm90aWZ5X2V2ZW50
IiwgJmV2ZW50LCAmcmV0dXJuX3ZhbCk7Ci0gICAgfQorICAgIGV2ZW50Lm1vdGlvbi5zdGF0ZSA9
IGdldFN0YXRlRmxhZ3MoKTsKIAorICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwogICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtMzYzLDE0ICszMzAs
NyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZVdoZWVsVG9DYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3RpbwogICAgIGVsc2UKICAgICAgICAgZ19hc3NlcnRf
bm90X3JlYWNoZWQoKTsKIAotICAgIGlmIChkcmFnTW9kZSAmJiBkb3duICYmICFyZXBsYXlpbmdT
YXZlZEV2ZW50cykgewotICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlXS5ldmVudCA9IGV2ZW50
OwotICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlKytdLmlzRHJhZ0V2ZW50ID0gdHJ1ZTsKLSAg
ICB9IGVsc2UgewotICAgICAgICB3ZWJraXRfd2ViX2ZyYW1lX2xheW91dChtYWluRnJhbWUpOwot
ICAgICAgICBndGtfbWFpbl9kb19ldmVudCgmZXZlbnQpOwotICAgIH0KLQorICAgIHNlbmRPclF1
ZXVlRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKIH0KIApAQCAtMzgzLDQ4ICszNDMsNjUgQEAgc3RhdGljIEpTVmFsdWVSZWYgYmVnaW5EcmFn
V2l0aEZpbGVzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGYKICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXZvaWQgcmVwbGF5
U2F2ZWRFdmVudHMoKQorc3RhdGljIHZvaWQgc2VuZE9yUXVldWVFdmVudChHZGtFdmVudCBldmVu
dCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGRlYWwgd2l0aCBmb3J3YXJkIGxlYXBz
LCBidXQgaXQgc2hvdWxkLgorICAgIC8vIE1vdXNlIG1vdmUgZXZlbnRzIGFyZSBxdWV1ZWQgaWYg
dGhlIHByZXZpb3VzIGV2ZW50IHdhcyBxdWV1ZWQgb3IgaWYgYQorICAgIC8vIGRlbGF5IHdhcyBz
ZXQgdXAgYnkgbGVhcEZvcndhcmQoKS4KKyAgICBpZiAoZW5kT2ZRdWV1ZSAhPSBzdGFydE9mUXVl
dWUgfHwgbXNnUXVldWVbZW5kT2ZRdWV1ZV0uZGVsYXkpIHsKKyAgICAgICAgbXNnUXVldWVbZW5k
T2ZRdWV1ZSsrXS5ldmVudCA9IGV2ZW50OworICAgICAgICByZXBsYXlTYXZlZEV2ZW50cygpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZGlzcGF0Y2hFdmVudChldmVudCk7Cit9CiAK
K3N0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnQoR2RrRXZlbnQgZXZlbnQpCit7CisgICAgd2Via2l0
X3dlYl9mcmFtZV9sYXlvdXQobWFpbkZyYW1lKTsKICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0g
d2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKICAgICBpZiAoIXZpZXcp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHJlcGxheWluZ1NhdmVkRXZlbnRzID0gdHJ1ZTsKKyAg
ICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBpZiAoZXZlbnQudHlwZSA9PSBHREtfQlVUVE9O
X1BSRVNTIHx8IGV2ZW50LnR5cGUgPT0gR0RLXzJCVVRUT05fUFJFU1MpCisgICAgICAgIGdfc2ln
bmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9uX3ByZXNzX2V2ZW50IiwgJmV2ZW50LCAmcmV0
dXJuVmFsdWUpOworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gR0RLX0JVVFRPTl9SRUxFQVNF
KQorICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywgImJ1dHRvbl9yZWxlYXNlX2V2
ZW50IiwgJmV2ZW50LCAmcmV0dXJuVmFsdWUpOworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0g
R0RLX01PVElPTl9OT1RJRlkpCisgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAi
bW90aW9uX25vdGlmeV9ldmVudCIsICZldmVudCwgJnJldHVyblZhbHVlKTsKKyAgICBlbHNlIGlm
IChldmVudC50eXBlID09IEdES19TQ1JPTEwpCisgICAgICAgIGd0a19tYWluX2RvX2V2ZW50KCZl
dmVudCk7Cit9CiAKLSAgICBmb3IgKHVuc2lnbmVkIHF1ZXVlUG9zID0gMDsgcXVldWVQb3MgPCBl
bmRPZlF1ZXVlOyBxdWV1ZVBvcysrKSB7Ci0gICAgICAgIEdka0V2ZW50IGV2ZW50ID0gbXNnUXVl
dWVbcXVldWVQb3NdLmV2ZW50OwotICAgICAgICBnYm9vbGVhbiByZXR1cm5fdmFsOwotCi0gICAg
ICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewotICAgICAgICBjYXNlIEdES19CVVRUT05fUkVMRUFT
RToKLSAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9uX3JlbGVh
c2VfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEdES19CVVRUT05fUFJFU1M6Ci0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5
X25hbWUodmlldywgImJ1dHRvbl9wcmVzc19ldmVudCIsICZldmVudCwgJnJldHVybl92YWwpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0RLX01PVElPTl9OT1RJRlk6Ci0gICAg
ICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywgIm1vdGlvbl9ub3RpZnlfZXZlbnQi
LCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KK3N0YXRpYyBnYm9vbGVhbiBs
ZWFwRm9yd2FyZERlbGF5Q2FsbGJhY2soZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBkb25lTGVhcGlu
Z0ZvcndhcmQgPSB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KIAotICAgICAgICBzdGFydE9m
UXVldWUrKzsKLSAgICB9Cit2b2lkIHJlcGxheVNhdmVkRXZlbnRzKCkKK3sKKyAgICByZXBsYXlp
bmdTYXZlZEV2ZW50cyA9IHRydWU7CiAKLSAgICBpbnQgbnVtUXVldWVkTWVzc2FnZXMgPSBlbmRP
ZlF1ZXVlIC0gc3RhcnRPZlF1ZXVlOwotICAgIGlmICghbnVtUXVldWVkTWVzc2FnZXMpIHsKLSAg
ICAgICAgc3RhcnRPZlF1ZXVlID0gMDsKLSAgICAgICAgZW5kT2ZRdWV1ZSA9IDA7Ci0gICAgICAg
IHJlcGxheWluZ1NhdmVkRXZlbnRzID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAo
c3RhcnRPZlF1ZXVlIDwgZW5kT2ZRdWV1ZSkgeworICAgICAgICAvLyBGaXJzdCBzZW5kIGFsbCB0
aGUgZXZlbnRzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHNlbnQKKyAgICAgICAgd2hpbGUgKCFtc2dR
dWV1ZVtzdGFydE9mUXVldWVdLmRlbGF5ICYmIHN0YXJ0T2ZRdWV1ZSA8IGVuZE9mUXVldWUpCisg
ICAgICAgICAgICBkaXNwYXRjaEV2ZW50KG1zZ1F1ZXVlW3N0YXJ0T2ZRdWV1ZSsrXS5ldmVudCk7
CisKKyAgICAgICAgaWYgKHN0YXJ0T2ZRdWV1ZSA9PSBlbmRPZlF1ZXVlKSB7CisgICAgICAgICAg
ICBzdGFydE9mUXVldWUgPSAwOworICAgICAgICAgICAgZW5kT2ZRdWV1ZSA9IDA7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBQdW1wIHRoZSBtYWluIGxvb3AgdW50aWwgd2UgaGF2
ZSBmaW5pc2hlZCBsZWFwaW5nIGZvcndhcmQuCisgICAgICAgICAgICBkb25lTGVhcGluZ0Zvcndh
cmQgPSBmYWxzZTsKKyAgICAgICAgICAgIGdfdGltZW91dF9hZGQobXNnUXVldWVbc3RhcnRPZlF1
ZXVlXS5kZWxheSwgbGVhcEZvcndhcmREZWxheUNhbGxiYWNrLCAwKTsKKyAgICAgICAgICAgIG1z
Z1F1ZXVlW3N0YXJ0T2ZRdWV1ZV0uZGVsYXkgPSAwOworICAgICAgICAgICAgd2hpbGUgKCFkb25l
TGVhcGluZ0ZvcndhcmQpCisgICAgICAgICAgICAgICAgZ3RrX21haW5faXRlcmF0aW9uKCk7Cisg
ICAgICAgIH0KICAgICB9CiAKLSAgICBzdGFydE9mUXVldWUgPSAwOwotICAgIGVuZE9mUXVldWUg
PSAwOwotCiAgICAgcmVwbGF5aW5nU2F2ZWRFdmVudHMgPSBmYWxzZTsKIH0KIApAQCAtNjYxLDE3
ICs2MzgsMjEgQEAgc3RhdGljIEpTQ2xhc3NSZWYgZ2V0Q2xhc3MoSlNDb250ZXh0UmVmIGNvbnRl
eHQpCiAgICAgcmV0dXJuIGV2ZW50U2VuZGVyQ2xhc3M7CiB9CiAKLUpTT2JqZWN0UmVmIG1ha2VF
dmVudFNlbmRlcihKU0NvbnRleHRSZWYgY29udGV4dCkKK0pTT2JqZWN0UmVmIG1ha2VFdmVudFNl
bmRlcihKU0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBpc1RvcEZyYW1lKQogewotICAgIGRvd24g
PSBmYWxzZTsKLSAgICBkcmFnTW9kZSA9IHRydWU7Ci0gICAgbGFzdE1vdXNlUG9zaXRpb25YID0g
bGFzdE1vdXNlUG9zaXRpb25ZID0gMDsKLSAgICBsYXN0Q2xpY2tQb3NpdGlvblggPSBsYXN0Q2xp
Y2tQb3NpdGlvblkgPSAwOwotCi0gICAgaWYgKCFyZXBsYXlpbmdTYXZlZEV2ZW50cykgewotICAg
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgaW4gdGhlIG1pZGRsZSBvZiBhIHRl
c3QsIGV2ZW4KLSAgICAgICAgLy8gd2hpbGUgcmVwbGF5aW5nIHNhdmVkIGV2ZW50cy4gUmVzZXR0
aW5nIHRoZXNlIHdoaWxlIGRvaW5nIHRoYXQKLSAgICAgICAgLy8gY2FuIGJyZWFrIHRoaW5ncy4K
KyAgICBpZiAoaXNUb3BGcmFtZSkgeworICAgICAgICBkcmFnTW9kZSA9IHRydWU7CisgICAgICAg
IHJlcGxheWluZ1NhdmVkRXZlbnRzID0gZmFsc2U7CisgICAgICAgIGRvbmVMZWFwaW5nRm9yd2Fy
ZCA9IGZhbHNlOworICAgICAgICB0aW1lT2Zmc2V0ID0gMDsKKworICAgICAgICBsYXN0TW91c2VQ
b3NpdGlvblggPSBsYXN0TW91c2VQb3NpdGlvblkgPSAwOworICAgICAgICBsYXN0Q2xpY2tQb3Np
dGlvblggPSBsYXN0Q2xpY2tQb3NpdGlvblkgPSAwOworICAgICAgICBsYXN0Q2xpY2tUaW1lT2Zm
c2V0ID0gMDsKKyAgICAgICAgbGFzdENsaWNrQnV0dG9uID0gMDsKKyAgICAgICAgYnV0dG9uQ3Vy
cmVudGx5RG93biA9IDA7CisgICAgICAgIGNsaWNrQ291bnQgPSAwOworCiAgICAgICAgIGVuZE9m
UXVldWUgPSAwOwogICAgICAgICBzdGFydE9mUXVldWUgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5oIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmgKaW5kZXggMjcyZThhOTQwMjA3OWQ5
MjcyYzAxNTA4N2I2YmVkOTdhNDk0MjJjYi4uY2UzM2NjYzk1MmFjYTU2MDdkYTZiNGE0ODNjNjA3
Y2VlOTkxNmNiOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2
ZW50U2VuZGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2Vu
ZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29u
dGV4dCogSlNDb250ZXh0UmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNPYmpl
Y3RSZWY7CiAKLUpTT2JqZWN0UmVmIG1ha2VFdmVudFNlbmRlcihKU0NvbnRleHRSZWYgY29udGV4
dCk7CitKU09iamVjdFJlZiBtYWtlRXZlbnRTZW5kZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIGJv
b2wgaXNUb3BGcmFtZSk7CiB2b2lkIHJlcGxheVNhdmVkRXZlbnRzKCk7CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55648</attachid>
            <date>2010-05-10 19:32:11 -0700</date>
            <delta_ts>2010-06-01 09:23:43 -0700</delta_ts>
            <desc>Small EventSender cleanups</desc>
            <filename>bug-38853-20100510193210.patch</filename>
            <type>text/plain</type>
            <size>7250</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2MzA2ZDYwZjQ1MTZiZWI2ZjIxYjJkYzYyMWU0MjhhNTA5YTUwNjc2Li4yMjVjMGZm
MjE1MDM2ZjYyYzY3MjYxNjBlMGFjODU3NjBjZTg4MzQ2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDUtMTAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIERvdWJs
ZSBjbGlja3MgY2F1c2UgdGhyZWUgYnV0dG9uIHByZXNzIGV2ZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKKworICAgICAgICBTbWFsbCBF
dmVudFNlbmRlciBjbGVhbnVwcy4gQ29uc29saWRhdGUgc29tZSBjb21tb24gY29kZS4gU3R5bGUg
Zml4ZXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwOgor
ICAgICAgICAocHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQpOiBBZGRlZC4KKyAgICAgICAgKGNvbnRl
eHRDbGlja0NhbGxiYWNrKTogVXNlIHByZXBhcmVNb3VzZUJ1dHRvbkV2ZW50LgorICAgICAgICAo
bW91c2VEb3duQ2FsbGJhY2spOiBVc2UgcHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQuCisgICAgICAg
IChtb3VzZVVwQ2FsbGJhY2spOiBVc2UgcHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQuCisgICAgICAg
IChtb3VzZU1vdmVUb0NhbGxiYWNrKTogU21hbGwgc3R5bGUgZml4LgorCiAyMDEwLTA1LTEwICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9FdmVudFNlbmRlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
RXZlbnRTZW5kZXIuY3BwCmluZGV4IGE5MDcyODhlMzExYjJhMzRmZjQ4NDU5YmU4MDFlZGI2ZWI4
ZjExYjIuLmMxM2ZjZjBiZmZiNjRjM2JlM2ZiNDQ3OTBlOWI0OTE1NmRmYWNjNjMgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcApAQCAtMTExLDE4
ICsxMTEsMzggQEAgc3RhdGljIEpTVmFsdWVSZWYgbGVhcEZvcndhcmRDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24KICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIGNvbnRleHRDbGlj
a0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK2Jvb2wgcHJlcGFyZU1vdXNl
QnV0dG9uRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBpbnQgYnV0dG9uKQogewogICAgIFdlYktpdFdl
YlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwog
ICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtZW1zZXQoZXZlbnQsIDAsIHNpemVv
ZihldmVudCkpOworICAgIGV2ZW50LT5idXR0b24uYnV0dG9uID0gYnV0dG9uOworICAgIGV2ZW50
LT5idXR0b24ueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsKKyAgICBldmVudC0+YnV0dG9uLnkgPSBs
YXN0TW91c2VQb3NpdGlvblk7CisgICAgZXZlbnQtPmJ1dHRvbi53aW5kb3cgPSBHVEtfV0lER0VU
KHZpZXcpLT53aW5kb3c7CisgICAgZXZlbnQtPmJ1dHRvbi50aW1lID0gR0RLX0NVUlJFTlRfVElN
RTsKKyAgICBldmVudC0+YnV0dG9uLmRldmljZSA9IGdka19kZXZpY2VfZ2V0X2NvcmVfcG9pbnRl
cigpOworICAgIGV2ZW50LT5idXR0b24uc3RhdGUgPSBnZXRTdGF0ZUZsYWdzKCk7CisKKyAgICBp
bnQgeFJvb3QsIHlSb290OworI2lmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE3LCAzKQorICAgIGdk
a193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKEdUS19XSURHRVQodmlldyktPndpbmRvdywgbGFzdE1v
dXNlUG9zaXRpb25YLCBsYXN0TW91c2VQb3NpdGlvblksICZ4Um9vdCwgJnlSb290KTsKKyNlbHNl
CisgICAgZ2V0Um9vdENvb3JkcyhHVEtfV0lER0VUKHZpZXcpLCAmeFJvb3QsICZ5Um9vdCk7Cisj
ZW5kaWYKKyAgICBldmVudC0+YnV0dG9uLnhfcm9vdCA9IHhSb290OworICAgIGV2ZW50LT5idXR0
b24ueV9yb290ID0geVJvb3Q7CiAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIEpTVmFs
dWVSZWYgY29udGV4dENsaWNrQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
ewogICAgIEdka0V2ZW50IGV2ZW50OwotICAgIG1lbXNldCgmZXZlbnQsIDAsIHNpemVvZihldmVu
dCkpOwotICAgIGV2ZW50LmJ1dHRvbi5idXR0b24gPSAzOwotICAgIGV2ZW50LmJ1dHRvbi54ID0g
bGFzdE1vdXNlUG9zaXRpb25YOwotICAgIGV2ZW50LmJ1dHRvbi55ID0gbGFzdE1vdXNlUG9zaXRp
b25ZOwotICAgIGV2ZW50LmJ1dHRvbi53aW5kb3cgPSBHVEtfV0lER0VUKHZpZXcpLT53aW5kb3c7
CisgICAgaWYgKCFwcmVwYXJlTW91c2VCdXR0b25FdmVudCgmZXZlbnQsIDMpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKICAgICBldmVudC50eXBlID0g
R0RLX0JVVFRPTl9QUkVTUzsKICAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKQEAgLTE2MSwz
MyArMTgxLDE1IEBAIHN0YXRpYyB2b2lkIGdldFJvb3RDb29yZHMoR3RrV2lkZ2V0KiB2aWV3LCBp
bnQqIHJvb3RYLCBpbnQqIHJvb3RZKQogc3RhdGljIEpTVmFsdWVSZWYgbW91c2VEb3duQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogCi0gICAgV2ViS2l0V2ViVmlldyog
dmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7Ci0gICAgaWYg
KCF2aWV3KQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0K
LSAgICBHZGtFdmVudCBldmVudDsKLSAgICBtZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoZXZlbnQp
KTsKLSAgICBldmVudC5idXR0b24uYnV0dG9uID0gMTsKLQorICAgIGludCBidXR0b24gPSAxOwog
ICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpIHsKLSAgICAgICAgZXZlbnQuYnV0dG9uLmJ1dHRv
biA9IChpbnQpKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlv
bikpICsgMTsKKyAgICAgICAgYnV0dG9uID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKSArIDE7CiAgICAgICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKSwgSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCkpOwogICAgIH0KIAotICAgIGV2ZW50LmJ1dHRvbi54ID0gbGFzdE1v
dXNlUG9zaXRpb25YOwotICAgIGV2ZW50LmJ1dHRvbi55ID0gbGFzdE1vdXNlUG9zaXRpb25ZOwot
ICAgIGV2ZW50LmJ1dHRvbi53aW5kb3cgPSBHVEtfV0lER0VUKHZpZXcpLT53aW5kb3c7Ci0gICAg
ZXZlbnQuYnV0dG9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOwotICAgIGV2ZW50LmJ1dHRvbi5k
ZXZpY2UgPSBnZGtfZGV2aWNlX2dldF9jb3JlX3BvaW50ZXIoKTsKLQotICAgIGludCB4X3Jvb3Qs
IHlfcm9vdDsKLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLDE3LDMpCi0gICAgZ2RrX3dpbmRvd19n
ZXRfcm9vdF9jb29yZHMoR1RLX1dJREdFVCh2aWV3KS0+d2luZG93LCBsYXN0TW91c2VQb3NpdGlv
blgsIGxhc3RNb3VzZVBvc2l0aW9uWSwgJnhfcm9vdCwgJnlfcm9vdCk7Ci0jZWxzZQotICAgIGdl
dFJvb3RDb29yZHMoR1RLX1dJREdFVCh2aWV3KSwgJnhfcm9vdCwgJnlfcm9vdCk7Ci0jZW5kaWYK
LSAgICBldmVudC5idXR0b24ueF9yb290ID0geF9yb290OwotICAgIGV2ZW50LmJ1dHRvbi55X3Jv
b3QgPSB5X3Jvb3Q7CisgICAgR2RrRXZlbnQgZXZlbnQ7CisgICAgaWYgKCFwcmVwYXJlTW91c2VC
dXR0b25FdmVudCgmZXZlbnQsIGJ1dHRvbikpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKIAogICAgIGV2ZW50LnR5cGUgPSBHREtfQlVUVE9OX1BSRVNTOwog
ICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwpAQCAtMjE1LDM2ICsyMTcsMTUgQEAgc3RhdGlj
IGd1aW50IGdldFN0YXRlRmxhZ3MoKQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZVVwQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotCi0gICAgV2ViS2l0V2ViVmlldyog
dmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7Ci0gICAgaWYg
KCF2aWV3KQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0K
LSAgICBHZGtFdmVudCBldmVudDsKLSAgICBtZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoZXZlbnQp
KTsKLSAgICBldmVudC5idXR0b24uYnV0dG9uID0gMTsKLQorICAgIGludCBidXR0b24gPSAxOwog
ICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpIHsKLSAgICAgICAgZXZlbnQuYnV0dG9uLmJ1dHRv
biA9IChpbnQpSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9u
KSArIDE7CisgICAgICAgIGJ1dHRvbiA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSkgKyAxOwogICAgICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbCgoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbiksIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpKTsKICAgICB9CiAKLSAgICBldmVudC5idXR0b24ueCA9IGxhc3RNb3Vz
ZVBvc2l0aW9uWDsKLSAgICBldmVudC5idXR0b24ueSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKLSAg
ICBldmVudC5idXR0b24ud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+d2luZG93OwotICAgIGV2
ZW50LmJ1dHRvbi50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKLSAgICBldmVudC5idXR0b24uZGV2
aWNlID0gZ2RrX2RldmljZV9nZXRfY29yZV9wb2ludGVyKCk7Ci0gICAgZXZlbnQuYnV0dG9uLnN0
YXRlID0gZ2V0U3RhdGVGbGFncygpOwotCi0gICAgaW50IHhfcm9vdCwgeV9yb290OwotI2lmIEdU
S19DSEVDS19WRVJTSU9OKDIsMTcsMykKLSAgICBnZGtfd2luZG93X2dldF9yb290X2Nvb3JkcyhH
VEtfV0lER0VUKHZpZXcpLT53aW5kb3csIGxhc3RNb3VzZVBvc2l0aW9uWCwgbGFzdE1vdXNlUG9z
aXRpb25ZLCAmeF9yb290LCAmeV9yb290KTsKLSNlbHNlCi0gICAgZ2V0Um9vdENvb3JkcyhHVEtf
V0lER0VUKHZpZXcpLCAmeF9yb290LCAmeV9yb290KTsKLSNlbmRpZgotCi0gICAgZXZlbnQuYnV0
dG9uLnhfcm9vdCA9IHhfcm9vdDsKLSAgICBldmVudC5idXR0b24ueV9yb290ID0geV9yb290Owor
ICAgIEdka0V2ZW50IGV2ZW50OworICAgIGlmICghcHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQoJmV2
ZW50LCBidXR0b24pKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7CiAKICAgICBsYXN0Q2xpY2tQb3NpdGlvblggPSBsYXN0TW91c2VQb3NpdGlvblg7CiAgICAg
bGFzdENsaWNrUG9zaXRpb25ZID0gbGFzdE1vdXNlUG9zaXRpb25ZOwpAQCAtMjc5LDE3ICsyNjAs
MTYgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VNb3ZlVG9DYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24KICAgICBldmVudC5tb3Rpb24udGltZSA9IEdE
S19DVVJSRU5UX1RJTUU7CiAgICAgZXZlbnQubW90aW9uLndpbmRvdyA9IEdUS19XSURHRVQodmll
dyktPndpbmRvdzsKICAgICBldmVudC5tb3Rpb24uZGV2aWNlID0gZ2RrX2RldmljZV9nZXRfY29y
ZV9wb2ludGVyKCk7CisgICAgZXZlbnQubW90aW9uLnN0YXRlID0gZ2V0U3RhdGVGbGFncygpOwog
Ci0gICAgaW50IHhfcm9vdCwgeV9yb290OworICAgIGludCB4Um9vdCwgeVJvb3Q7CiAjaWYgR1RL
X0NIRUNLX1ZFUlNJT04oMiwxNywzKQotICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKEdU
S19XSURHRVQodmlldyktPndpbmRvdywgbGFzdE1vdXNlUG9zaXRpb25YLCBsYXN0TW91c2VQb3Np
dGlvblksICZ4X3Jvb3QsICZ5X3Jvb3QpOworICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRz
KEdUS19XSURHRVQodmlldyktPndpbmRvdywgbGFzdE1vdXNlUG9zaXRpb25YLCBsYXN0TW91c2VQ
b3NpdGlvblksICZ4Um9vdCwgJnlSb290KTsKICNlbHNlCi0gICAgZ2V0Um9vdENvb3JkcyhHVEtf
V0lER0VUKHZpZXcpLCAmeF9yb290LCAmeV9yb290KTsKKyAgICBnZXRSb290Q29vcmRzKEdUS19X
SURHRVQodmlldyksICZ4Um9vdCwgJnlSb290KTsKICNlbmRpZgotICAgIGV2ZW50Lm1vdGlvbi54
X3Jvb3QgPSB4X3Jvb3Q7Ci0gICAgZXZlbnQubW90aW9uLnlfcm9vdCA9IHlfcm9vdDsKLQotICAg
IGV2ZW50Lm1vdGlvbi5zdGF0ZSA9IGdldFN0YXRlRmxhZ3MoKTsKKyAgICBldmVudC5tb3Rpb24u
eF9yb290ID0geFJvb3Q7CisgICAgZXZlbnQubW90aW9uLnlfcm9vdCA9IHlSb290OwogCiAgICAg
c2VuZE9yUXVldWVFdmVudChldmVudCk7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55653</attachid>
            <date>2010-05-10 20:50:52 -0700</date>
            <delta_ts>2010-05-14 11:57:38 -0700</delta_ts>
            <desc>Add leapForward support to the GTK+ DRT</desc>
            <filename>0001-Double-clicks-cause-three-button-press-events.patch</filename>
            <type>text/plain</type>
            <size>21120</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA4ODAwOGM4MTRkYWM2OTNjY2RiN2M3NWY5M2JkNjc4YWEzM2I3NWUwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDEwIE1heSAyMDEwIDA5OjU2OjQ2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
RG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRzCiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKClBhdGNoIGJ5IE1hcnRpbiBSb2Jp
bnNvbiA8bXJvYmluc29uQGlnYWxpYS5jb20+IG9uIDIwMTAtMDUtMTAKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgpBZGQgbGVhcEZvcndhcmQgc3VwcG9ydCB0byB0aGUgR3RrKyBEUlQuCgoq
IER1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6Cih3ZWJWaWV3V2luZG93T2Jq
ZWN0Q2xlYXJlZCk6IE9ubHkgaW5pdGlhbGl6ZSB0aGUgRXZlbnRTZW5kZXIgd2hlbiBsb2FkaW5n
IHRoZSB0b3AgZnJhbWUuCiogRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcDoKKGxl
YXBGb3J3YXJkQ2FsbGJhY2spOiBBZGQgc3VwcG9ydCBmb3IgYWRqdXN0aW5nIHRoZSB0aW1lIG9m
ZnNldCBvbiBsZWFwRm9yd2FyZCgpCihwcmVwYXJlTW91c2VCdXR0b25FdmVudCk6IEFkZGVkLgoo
Y29udGV4dENsaWNrQ2FsbGJhY2spOiBVc2UgcHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQgJiBzZW5k
T3JRdWV1ZUV2ZW50LgoodXBkYXRlQ2xpY2tDb3VudCk6IFRha2UgdGltZSBvZmZzZXQgaW50byBh
Y2NvdW50IHdoZW4gY291bnRpbmcgY2xpY2tzLgoobW91c2VEb3duQ2FsbGJhY2spOiBVc2UgcHJl
cGFyZU1vdXNlQnV0dG9uRXZlbnQgJiBzZW5kT3JRdWV1ZUV2ZW50LgooZ2V0U3RhdGVGbGFncyk6
IENoYW5nZSBkb3duL2N1cnJlbnRFdmVudEJ1dHRvbiBpbnRvIGJ1dHRvbkN1cnJlbnRseS9sYXN0
Q2xpY2tCdXR0b24uCihtb3VzZVVwQ2FsbGJhY2spOiBVc2UgcHJlcGFyZU1vdXNlQnV0dG9uRXZl
bnQuCihtb3VzZU1vdmVUb0NhbGxiYWNrKTogVXNlIHNlbmRPclF1ZXVlRXZlbnQuCihtb3VzZVdo
ZWVsVG9DYWxsYmFjayk6IFVzZSBzZW5kT3JRdWV1ZUV2ZW50Lgooc2VuZE9yUXVldWVFdmVudCk6
IEFkZGVkLgooZGlzcGF0Y2hFdmVudCk6IEFkZGVkLgoobGVhcEZvcndhcmREZWxheUNhbGxiYWNr
KTogQWRkZWQuCihyZXBsYXlTYXZlZEV2ZW50cyk6IFByb3Blcmx5IGhhbmRsZSBsZWFwRm9yd2Fy
ZCBoZXJlIGFuZCBkZWZlciB0byBkaXNwYXRjaEV2ZW50LgoobWFrZUV2ZW50U2VuZGVyKTogT25s
eSBpbml0aWFsaXplIHRoZSBFdmVudFNlbmRlciB3aGVuIGxvYWRpbmcgdGhlIHRvcCBmcmFtZS4K
KiBEdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuaDogT25seSBpbml0aWFsaXplIHRoZSBF
dmVudFNlbmRlciB3aGVuIGxvYWRpbmcgdGhlIHRvcCBmcmFtZS4KLS0tCiBXZWJLaXRUb29scy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOCArKwogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCB8ICAgIDIgKy0KIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAgICAgfCAgMzQxICsrKysr
KysrKy0tLS0tLS0tLS0tLQogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2Vu
ZGVyLmggICAgICB8ICAgIDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMTgxIGluc2VydGlvbnMoKyks
IDE5MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMTk5YWYyZC4uMWVjNjY4NyAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDEwLTA1LTEwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
b3VibGUgY2xpY2tzIGNhdXNlIHRocmVlIGJ1dHRvbiBwcmVzcyBldmVudHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODUzCisKKyAgICAgICAgQWRk
IGxlYXBGb3J3YXJkIHN1cHBvcnQgdG8gdGhlIEd0aysgRFJULgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHdlYlZpZXdXaW5kb3dP
YmplY3RDbGVhcmVkKTogT25seSBpbml0aWFsaXplIHRoZSBFdmVudFNlbmRlciB3aGVuIGxvYWRp
bmcgdGhlIHRvcCBmcmFtZS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5k
ZXIuY3BwOgorICAgICAgICAobGVhcEZvcndhcmRDYWxsYmFjayk6IEFkZCBzdXBwb3J0IGZvciBh
ZGp1c3RpbmcgdGhlIHRpbWUgb2Zmc2V0IG9uIGxlYXBGb3J3YXJkKCkKKyAgICAgICAgKHByZXBh
cmVNb3VzZUJ1dHRvbkV2ZW50KTogQWRkZWQuCisgICAgICAgIChjb250ZXh0Q2xpY2tDYWxsYmFj
ayk6IFVzZSBwcmVwYXJlTW91c2VCdXR0b25FdmVudCAmIHNlbmRPclF1ZXVlRXZlbnQuCisgICAg
ICAgICh1cGRhdGVDbGlja0NvdW50KTogVGFrZSB0aW1lIG9mZnNldCBpbnRvIGFjY291bnQgd2hl
biBjb3VudGluZyBjbGlja3MuCisgICAgICAgIChtb3VzZURvd25DYWxsYmFjayk6IFVzZSBwcmVw
YXJlTW91c2VCdXR0b25FdmVudCAmIHNlbmRPclF1ZXVlRXZlbnQuCisgICAgICAgIChnZXRTdGF0
ZUZsYWdzKTogQ2hhbmdlIGRvd24vY3VycmVudEV2ZW50QnV0dG9uIGludG8gYnV0dG9uQ3VycmVu
dGx5L2xhc3RDbGlja0J1dHRvbi4KKyAgICAgICAgKG1vdXNlVXBDYWxsYmFjayk6IFVzZSBwcmVw
YXJlTW91c2VCdXR0b25FdmVudC4KKyAgICAgICAgKG1vdXNlTW92ZVRvQ2FsbGJhY2spOiBVc2Ug
c2VuZE9yUXVldWVFdmVudC4KKyAgICAgICAgKG1vdXNlV2hlZWxUb0NhbGxiYWNrKTogVXNlIHNl
bmRPclF1ZXVlRXZlbnQuCisgICAgICAgIChzZW5kT3JRdWV1ZUV2ZW50KTogQWRkZWQuCisgICAg
ICAgIChkaXNwYXRjaEV2ZW50KTogQWRkZWQuCisgICAgICAgIChsZWFwRm9yd2FyZERlbGF5Q2Fs
bGJhY2spOiBBZGRlZC4KKyAgICAgICAgKHJlcGxheVNhdmVkRXZlbnRzKTogUHJvcGVybHkgaGFu
ZGxlIGxlYXBGb3J3YXJkIGhlcmUgYW5kIGRlZmVyIHRvIGRpc3BhdGNoRXZlbnQuCisgICAgICAg
IChtYWtlRXZlbnRTZW5kZXIpOiBPbmx5IGluaXRpYWxpemUgdGhlIEV2ZW50U2VuZGVyIHdoZW4g
bG9hZGluZyB0aGUgdG9wIGZyYW1lLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9FdmVu
dFNlbmRlci5oOiBPbmx5IGluaXRpYWxpemUgdGhlIEV2ZW50U2VuZGVyIHdoZW4gbG9hZGluZyB0
aGUgdG9wIGZyYW1lLgorCiAyMDEwLTA1LTEwICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggMGYzY2Ez
OC4uZTkxMmE0OCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1
bXBSZW5kZXJUcmVlLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVt
cFJlbmRlclRyZWUuY3BwCkBAIC02NjIsNyArNjYyLDcgQEAgc3RhdGljIHZvaWQgd2ViVmlld1dp
bmRvd09iamVjdENsZWFyZWQoV2ViS2l0V2ViVmlldyogdmlldywgV2ViS2l0V2ViRnJhbWUqIGZy
YW0KICAgICBBU1NFUlQoIWV4Y2VwdGlvbik7CiAKICAgICBKU1N0cmluZ1JlZiBldmVudFNlbmRl
clN0ciA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJldmVudFNlbmRlciIpOwotICAg
IEpTVmFsdWVSZWYgZXZlbnRTZW5kZXIgPSBtYWtlRXZlbnRTZW5kZXIoY29udGV4dCk7CisgICAg
SlNWYWx1ZVJlZiBldmVudFNlbmRlciA9IG1ha2VFdmVudFNlbmRlcihjb250ZXh0LCAhd2Via2l0
X3dlYl9mcmFtZV9nZXRfcGFyZW50KGZyYW1lKSk7CiAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShj
b250ZXh0LCB3aW5kb3dPYmplY3QsIGV2ZW50U2VuZGVyU3RyLCBldmVudFNlbmRlciwga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSwg
MCk7CiAgICAgSlNTdHJpbmdSZWxlYXNlKGV2ZW50U2VuZGVyU3RyKTsKIH0KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDljMjdkOGMuLjQ2
NTg1MzUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNl
bmRlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVy
LmNwcApAQCAtNDUsMjggKzQ1LDI5IEBACiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNp
bmNsdWRlIDxzdHJpbmcuaD4KIAotLy8gVE9ETzogQ3VycmVudGx5IGRyYWcgYW5kIGRyb3AgcmVs
YXRlZCBjb2RlIGlzIGxlZnQgb3V0IGFuZAotLy8gc2hvdWxkIGJlIG1lcmdlZCBvbmNlIHdlIGhh
dmUgZHJhZyBhbmQgZHJvcCBzdXBwb3J0IGluIFdlYkNvcmUuCisvLyBGSVhNRTogSW1wbGVtZW50
IHN1cHBvcnQgZm9yIHN5bnRoZXNpemluZyBkcm9wIGV2ZW50cy4KIAogZXh0ZXJuICJDIiB7CiAg
ICAgZXh0ZXJuIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQoV2ViS2l0V2ViRnJhbWUqIGZy
YW1lKTsKIH0KIAotc3RhdGljIGJvb2wgZG93biA9IGZhbHNlOwotc3RhdGljIGJvb2wgY3VycmVu
dEV2ZW50QnV0dG9uID0gMTsKLXN0YXRpYyBib29sIGRyYWdNb2RlID0gdHJ1ZTsKLXN0YXRpYyBi
b29sIHJlcGxheWluZ1NhdmVkRXZlbnRzID0gZmFsc2U7CitzdGF0aWMgYm9vbCBkcmFnTW9kZTsK
K3N0YXRpYyBib29sIHJlcGxheWluZ1NhdmVkRXZlbnRzOworc3RhdGljIGJvb2wgZG9uZUxlYXBp
bmdGb3J3YXJkOworc3RhdGljIGludCB0aW1lT2Zmc2V0OworCiBzdGF0aWMgaW50IGxhc3RNb3Vz
ZVBvc2l0aW9uWDsKIHN0YXRpYyBpbnQgbGFzdE1vdXNlUG9zaXRpb25ZOwotCiBzdGF0aWMgaW50
IGxhc3RDbGlja1Bvc2l0aW9uWDsKIHN0YXRpYyBpbnQgbGFzdENsaWNrUG9zaXRpb25ZOwotc3Rh
dGljIGludCBjbGlja0NvdW50ID0gMDsKK3N0YXRpYyBpbnQgbGFzdENsaWNrVGltZU9mZnNldDsK
K3N0YXRpYyBpbnQgbGFzdENsaWNrQnV0dG9uOworc3RhdGljIGludCBidXR0b25DdXJyZW50bHlE
b3duOworc3RhdGljIGludCBjbGlja0NvdW50OwogCiBzdHJ1Y3QgRGVsYXllZE1lc3NhZ2Ugewog
ICAgIEdka0V2ZW50IGV2ZW50OwogICAgIGd1bG9uZyBkZWxheTsKLSAgICBnYm9vbGVhbiBpc0Ry
YWdFdmVudDsKIH07CiAKIHN0YXRpYyBEZWxheWVkTWVzc2FnZSBtc2dRdWV1ZVsxMDI0XTsKQEAg
LTg0LDYgKzg1LDEwIEBAIGVudW0gS2V5TG9jYXRpb25Db2RlIHsKICAgICBET01fS0VZX0xPQ0FU
SU9OX05VTVBBRCAgICAgICAgPSAweDAzCiB9OwogCitzdGF0aWMgdm9pZCBzZW5kT3JRdWV1ZUV2
ZW50KEdka0V2ZW50IGV2ZW50KTsKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnQoR2RrRXZlbnQg
ZXZlbnQpOworc3RhdGljIGd1aW50IGdldFN0YXRlRmxhZ3MoKTsKKwogc3RhdGljIEpTVmFsdWVS
ZWYgZ2V0RHJhZ01vZGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
IHsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIGRyYWdNb2RlKTsKQEAg
LTk3LDQxICsxMDIsNjIgQEAgc3RhdGljIGJvb2wgc2V0RHJhZ01vZGVDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmkKIAogc3RhdGljIEpTVmFs
dWVSZWYgbGVhcEZvcndhcmRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7
Ci0gICAgLy8gRklYTUU6IEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgZm9yd2FyZCBsZWFwcworICAg
IGlmIChhcmd1bWVudENvdW50ID4gMCkgeworICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlXS5k
ZWxheSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7
CisgICAgICAgIHRpbWVPZmZzZXQgKz0gbXNnUXVldWVbZW5kT2ZRdWV1ZV0uZGVsYXk7CisgICAg
ICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKTsKKyAgICB9CisKICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVm
IGNvbnRleHRDbGlja0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK2Jvb2wg
cHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBpbnQgYnV0dG9uKQogewot
ICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7Ci0KICAgICBXZWJLaXRXZWJW
aWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKICAg
ICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWVtc2V0KGV2ZW50LCAwLCBzaXplb2Yo
ZXZlbnQpKTsKKyAgICBldmVudC0+YnV0dG9uLmJ1dHRvbiA9IGJ1dHRvbjsKKyAgICBldmVudC0+
YnV0dG9uLnggPSBsYXN0TW91c2VQb3NpdGlvblg7CisgICAgZXZlbnQtPmJ1dHRvbi55ID0gbGFz
dE1vdXNlUG9zaXRpb25ZOworICAgIGV2ZW50LT5idXR0b24ud2luZG93ID0gR1RLX1dJREdFVCh2
aWV3KS0+d2luZG93OworICAgIGV2ZW50LT5idXR0b24udGltZSA9IEdES19DVVJSRU5UX1RJTUU7
CisgICAgZXZlbnQtPmJ1dHRvbi5kZXZpY2UgPSBnZGtfZGV2aWNlX2dldF9jb3JlX3BvaW50ZXIo
KTsKKyAgICBldmVudC0+YnV0dG9uLnN0YXRlID0gZ2V0U3RhdGVGbGFncygpOworCisgICAgaW50
IHhSb290LCB5Um9vdDsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNywgMykKKyAgICBnZGtf
d2luZG93X2dldF9yb290X2Nvb3JkcyhHVEtfV0lER0VUKHZpZXcpLT53aW5kb3csIGxhc3RNb3Vz
ZVBvc2l0aW9uWCwgbGFzdE1vdXNlUG9zaXRpb25ZLCAmeFJvb3QsICZ5Um9vdCk7CisjZWxzZQor
ICAgIGdldFJvb3RDb29yZHMoR1RLX1dJREdFVCh2aWV3KSwgJnhSb290LCAmeVJvb3QpOworI2Vu
ZGlmCisgICAgZXZlbnQtPmJ1dHRvbi54X3Jvb3QgPSB4Um9vdDsKKyAgICBldmVudC0+YnV0dG9u
Lnlfcm9vdCA9IHlSb290OworCisgICAgcmV0dXJuIHRydWU7Cit9CiAKK3N0YXRpYyBKU1ZhbHVl
UmVmIGNvbnRleHRDbGlja0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
ICAgICBHZGtFdmVudCBldmVudDsKLSAgICBtZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoZXZlbnQp
KTsKLSAgICBldmVudC5idXR0b24uYnV0dG9uID0gMzsKLSAgICBldmVudC5idXR0b24ueCA9IGxh
c3RNb3VzZVBvc2l0aW9uWDsKLSAgICBldmVudC5idXR0b24ueSA9IGxhc3RNb3VzZVBvc2l0aW9u
WTsKLSAgICBldmVudC5idXR0b24ud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+d2luZG93Owor
ICAgIGlmICghcHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQoJmV2ZW50LCAzKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCi0gICAgZ2Jvb2xlYW4gcmV0dXJu
X3ZhbDsKLSAgICBkb3duID0gdHJ1ZTsKICAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9QUkVT
UzsKLSAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywgImJ1dHRvbl9wcmVzc19ldmVudCIs
ICZldmVudCwgJnJldHVybl92YWwpOwotCi0gICAgZG93biA9IGZhbHNlOworICAgIHNlbmRPclF1
ZXVlRXZlbnQoZXZlbnQpOwogICAgIGV2ZW50LnR5cGUgPSBHREtfQlVUVE9OX1JFTEVBU0U7Ci0g
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25fcmVsZWFzZV9ldmVudCIsICZl
dmVudCwgJnJldHVybl92YWwpOworICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwogCiAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCiBzdGF0aWMgdm9pZCB1
cGRhdGVDbGlja0NvdW50KGludCBidXR0b24pCiB7Ci0gICAgLy8gRklYTUU6IHRha2UgdGhlIGxh
c3QgY2xpY2tlZCBidXR0b24gbnVtYmVyIGFuZCB0aGUgdGltZSBvZiBsYXN0IGNsaWNrIGludG8g
YWNjb3VudC4KLSAgICBpZiAobGFzdENsaWNrUG9zaXRpb25YICE9IGxhc3RNb3VzZVBvc2l0aW9u
WCB8fCBsYXN0Q2xpY2tQb3NpdGlvblkgIT0gbGFzdE1vdXNlUG9zaXRpb25ZIHx8IGN1cnJlbnRF
dmVudEJ1dHRvbiAhPSBidXR0b24pCisgICAgaWYgKGxhc3RDbGlja1Bvc2l0aW9uWCAhPSBsYXN0
TW91c2VQb3NpdGlvblgKKyAgICAgICAgfHwgbGFzdENsaWNrUG9zaXRpb25ZICE9IGxhc3RNb3Vz
ZVBvc2l0aW9uWQorICAgICAgICB8fCBsYXN0Q2xpY2tCdXR0b24gIT0gYnV0dG9uCisgICAgICAg
IHx8IHRpbWVPZmZzZXQgLSBsYXN0Q2xpY2tUaW1lT2Zmc2V0ID49IDEpCiAgICAgICAgIGNsaWNr
Q291bnQgPSAxOwogICAgIGVsc2UKICAgICAgICAgY2xpY2tDb3VudCsrOwpAQCAtMTU0LDEyOSAr
MTgwLDYxIEBAIHN0YXRpYyB2b2lkIGdldFJvb3RDb29yZHMoR3RrV2lkZ2V0KiB2aWV3LCBpbnQq
IHJvb3RYLCBpbnQqIHJvb3RZKQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZURvd25DYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgV2ViS2l0V2ViVmlldyogdmll
dyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7Ci0gICAgaWYgKCF2
aWV3KQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0KLSAg
ICBkb3duID0gdHJ1ZTsKLQotICAgIEdka0V2ZW50IGV2ZW50OwotICAgIG1lbXNldCgmZXZlbnQs
IDAsIHNpemVvZihldmVudCkpOwotICAgIGV2ZW50LnR5cGUgPSBHREtfQlVUVE9OX1BSRVNTOwot
ICAgIGV2ZW50LmJ1dHRvbi5idXR0b24gPSAxOwotCisgICAgaW50IGJ1dHRvbiA9IDE7CiAgICAg
aWYgKGFyZ3VtZW50Q291bnQgPT0gMSkgewotICAgICAgICBldmVudC5idXR0b24uYnV0dG9uID0g
KGludClKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pICsg
MTsKKyAgICAgICAgYnV0dG9uID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29u
dGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKSArIDE7CiAgICAgICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKSwgSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCkpOwogICAgIH0KIAotICAgIGN1cnJlbnRFdmVudEJ1dHRvbiA9IGV2ZW50LmJ1
dHRvbi5idXR0b247Ci0KLSAgICBldmVudC5idXR0b24ueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsK
LSAgICBldmVudC5idXR0b24ueSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKLSAgICBldmVudC5idXR0
b24ud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+d2luZG93OwotICAgIGV2ZW50LmJ1dHRvbi50
aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKLSAgICBldmVudC5idXR0b24uZGV2aWNlID0gZ2RrX2Rl
dmljZV9nZXRfY29yZV9wb2ludGVyKCk7Ci0KLSAgICBpbnQgeF9yb290LCB5X3Jvb3Q7Ci0jaWYg
R1RLX0NIRUNLX1ZFUlNJT04oMiwxNywzKQotICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRz
KEdUS19XSURHRVQodmlldyktPndpbmRvdywgbGFzdE1vdXNlUG9zaXRpb25YLCBsYXN0TW91c2VQ
b3NpdGlvblksICZ4X3Jvb3QsICZ5X3Jvb3QpOwotI2Vsc2UKLSAgICBnZXRSb290Q29vcmRzKEdU
S19XSURHRVQodmlldyksICZ4X3Jvb3QsICZ5X3Jvb3QpOwotI2VuZGlmCisgICAgR2RrRXZlbnQg
ZXZlbnQ7CisgICAgaWYgKCFwcmVwYXJlTW91c2VCdXR0b25FdmVudCgmZXZlbnQsIGJ1dHRvbikp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIGV2
ZW50LmJ1dHRvbi54X3Jvb3QgPSB4X3Jvb3Q7Ci0gICAgZXZlbnQuYnV0dG9uLnlfcm9vdCA9IHlf
cm9vdDsKKyAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9QUkVTUzsKKyAgICBzZW5kT3JRdWV1
ZUV2ZW50KGV2ZW50KTsKIAogICAgIHVwZGF0ZUNsaWNrQ291bnQoZXZlbnQuYnV0dG9uLmJ1dHRv
bik7Ci0KLSAgICBpZiAoIW1zZ1F1ZXVlW2VuZE9mUXVldWVdLmRlbGF5KSB7Ci0gICAgICAgIHdl
YmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7Ci0KLSAgICAgICAgZ2Jvb2xlYW4gcmV0
dXJuX3ZhbDsKLSAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25fcHJl
c3NfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICAgICAgaWYgKGNsaWNrQ291bnQg
PT0gMikgewotICAgICAgICAgICAgZXZlbnQudHlwZSA9IEdES18yQlVUVE9OX1BSRVNTOwotICAg
ICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25fcHJlc3NfZXZlbnQi
LCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIHJlcGxheVNhdmVkRXZlbnRzIHNob3VsZCBoYXZlIHRoZSByZXF1aXJlZCBsb2dpYyB0byBt
YWtlIGxlYXBGb3J3YXJkIGRlbGF5cyB3b3JrCi0gICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWUr
K10uZXZlbnQgPSBldmVudDsKLSAgICAgICAgcmVwbGF5U2F2ZWRFdmVudHMoKTsKKyAgICBpZiAo
Y2xpY2tDb3VudCA9PSAyKSB7CisgICAgICAgIGV2ZW50LnR5cGUgPSBHREtfMkJVVFRPTl9QUkVT
UzsKKyAgICAgICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7CiAgICAgfQogCisgICAgYnV0dG9u
Q3VycmVudGx5RG93biA9IGJ1dHRvbjsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CiB9CiAKIHN0YXRpYyBndWludCBnZXRTdGF0ZUZsYWdzKCkKIHsKLSAgICBndWlu
dCBzdGF0ZSA9IDA7Ci0KLSAgICBpZiAoZG93bikgewotICAgICAgICBpZiAoY3VycmVudEV2ZW50
QnV0dG9uID09IDEpCi0gICAgICAgICAgICBzdGF0ZSA9IEdES19CVVRUT04xX01BU0s7Ci0gICAg
ICAgIGVsc2UgaWYgKGN1cnJlbnRFdmVudEJ1dHRvbiA9PSAyKQotICAgICAgICAgICAgc3RhdGUg
PSBHREtfQlVUVE9OMl9NQVNLOwotICAgICAgICBlbHNlIGlmIChjdXJyZW50RXZlbnRCdXR0b24g
PT0gMykKLSAgICAgICAgICAgIHN0YXRlID0gR0RLX0JVVFRPTjNfTUFTSzsKLSAgICB9IGVsc2UK
LSAgICAgICAgc3RhdGUgPSAwOwotCi0gICAgcmV0dXJuIHN0YXRlOworICAgIGlmIChidXR0b25D
dXJyZW50bHlEb3duID09IDEpCisgICAgICAgIHJldHVybiBHREtfQlVUVE9OMV9NQVNLOworICAg
IGlmIChidXR0b25DdXJyZW50bHlEb3duID09IDIpCisgICAgICAgIHJldHVybiBHREtfQlVUVE9O
Ml9NQVNLOworICAgIGlmIChidXR0b25DdXJyZW50bHlEb3duID09IDMpCisgICAgICAgIHJldHVy
biBHREtfQlVUVE9OM19NQVNLOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgSlNWYWx1ZVJl
ZiBtb3VzZVVwQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogCi0gICAg
V2ViS2l0V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5G
cmFtZSk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7Ci0KLSAgICBHZGtFdmVudCBldmVudDsKLSAgICBtZW1zZXQoJmV2ZW50LCAw
LCBzaXplb2YoZXZlbnQpKTsKLSAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9SRUxFQVNFOwot
ICAgIGV2ZW50LmJ1dHRvbi5idXR0b24gPSAxOwotCisgICAgaW50IGJ1dHRvbiA9IDE7CiAgICAg
aWYgKGFyZ3VtZW50Q291bnQgPT0gMSkgewotICAgICAgICBldmVudC5idXR0b24uYnV0dG9uID0g
KGludClKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pICsg
MTsKKyAgICAgICAgYnV0dG9uID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29u
dGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKSArIDE7CiAgICAgICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKSwgSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCkpOwogICAgIH0KIAotICAgIGN1cnJlbnRFdmVudEJ1dHRvbiA9IGV2ZW50LmJ1
dHRvbi5idXR0b247Ci0KLSAgICBldmVudC5idXR0b24ueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsK
LSAgICBldmVudC5idXR0b24ueSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKLSAgICBldmVudC5idXR0
b24ud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+d2luZG93OwotICAgIGV2ZW50LmJ1dHRvbi50
aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKLSAgICBldmVudC5idXR0b24uZGV2aWNlID0gZ2RrX2Rl
dmljZV9nZXRfY29yZV9wb2ludGVyKCk7Ci0gICAgZXZlbnQuYnV0dG9uLnN0YXRlID0gZ2V0U3Rh
dGVGbGFncygpOwotCi0gICAgZG93biA9IGZhbHNlOwotCi0gICAgaW50IHhfcm9vdCwgeV9yb290
OwotI2lmIEdUS19DSEVDS19WRVJTSU9OKDIsMTcsMykKLSAgICBnZGtfd2luZG93X2dldF9yb290
X2Nvb3JkcyhHVEtfV0lER0VUKHZpZXcpLT53aW5kb3csIGxhc3RNb3VzZVBvc2l0aW9uWCwgbGFz
dE1vdXNlUG9zaXRpb25ZLCAmeF9yb290LCAmeV9yb290KTsKLSNlbHNlCi0gICAgZ2V0Um9vdENv
b3JkcyhHVEtfV0lER0VUKHZpZXcpLCAmeF9yb290LCAmeV9yb290KTsKLSNlbmRpZgotCi0gICAg
ZXZlbnQuYnV0dG9uLnhfcm9vdCA9IHhfcm9vdDsKLSAgICBldmVudC5idXR0b24ueV9yb290ID0g
eV9yb290OwotCi0gICAgaWYgKChkcmFnTW9kZSAmJiAhcmVwbGF5aW5nU2F2ZWRFdmVudHMpIHx8
IG1zZ1F1ZXVlW2VuZE9mUXVldWVdLmRlbGF5KSB7Ci0gICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVl
dWVdLmV2ZW50ID0gZXZlbnQ7Ci0gICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWUrK10uaXNEcmFn
RXZlbnQgPSB0cnVlOwotICAgICAgICByZXBsYXlTYXZlZEV2ZW50cygpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7Ci0KLSAgICAgICAg
Z2Jvb2xlYW4gcmV0dXJuX3ZhbDsKLSAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcs
ICJidXR0b25fcmVsZWFzZV9ldmVudCIsICZldmVudCwgJnJldHVybl92YWwpOwotICAgIH0KKyAg
ICBHZGtFdmVudCBldmVudDsKKyAgICBpZiAoIXByZXBhcmVNb3VzZUJ1dHRvbkV2ZW50KCZldmVu
dCwgYnV0dG9uKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OwogCiAgICAgbGFzdENsaWNrUG9zaXRpb25YID0gbGFzdE1vdXNlUG9zaXRpb25YOwogICAgIGxh
c3RDbGlja1Bvc2l0aW9uWSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKKyAgICBsYXN0Q2xpY2tCdXR0
b24gPSBidXR0b25DdXJyZW50bHlEb3duOworICAgIGxhc3RDbGlja1RpbWVPZmZzZXQgPSB0aW1l
T2Zmc2V0OworICAgIGJ1dHRvbkN1cnJlbnRseURvd24gPSAwOwogCisgICAgZXZlbnQudHlwZSA9
IEdES19CVVRUT05fUkVMRUFTRTsKKyAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKQEAgLTMwMiwyOSArMjYw
LDE4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlTW92ZVRvQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uCiAgICAgZXZlbnQubW90aW9uLnRpbWUgPSBH
REtfQ1VSUkVOVF9USU1FOwogICAgIGV2ZW50Lm1vdGlvbi53aW5kb3cgPSBHVEtfV0lER0VUKHZp
ZXcpLT53aW5kb3c7CiAgICAgZXZlbnQubW90aW9uLmRldmljZSA9IGdka19kZXZpY2VfZ2V0X2Nv
cmVfcG9pbnRlcigpOworICAgIGV2ZW50Lm1vdGlvbi5zdGF0ZSA9IGdldFN0YXRlRmxhZ3MoKTsK
IAotICAgIGludCB4X3Jvb3QsIHlfcm9vdDsKKyAgICBpbnQgeFJvb3QsIHlSb290OwogI2lmIEdU
S19DSEVDS19WRVJTSU9OKDIsMTcsMykKLSAgICBnZGtfd2luZG93X2dldF9yb290X2Nvb3JkcyhH
VEtfV0lER0VUKHZpZXcpLT53aW5kb3csIGxhc3RNb3VzZVBvc2l0aW9uWCwgbGFzdE1vdXNlUG9z
aXRpb25ZLCAmeF9yb290LCAmeV9yb290KTsKKyAgICBnZGtfd2luZG93X2dldF9yb290X2Nvb3Jk
cyhHVEtfV0lER0VUKHZpZXcpLT53aW5kb3csIGxhc3RNb3VzZVBvc2l0aW9uWCwgbGFzdE1vdXNl
UG9zaXRpb25ZLCAmeFJvb3QsICZ5Um9vdCk7CiAjZWxzZQotICAgIGdldFJvb3RDb29yZHMoR1RL
X1dJREdFVCh2aWV3KSwgJnhfcm9vdCwgJnlfcm9vdCk7CisgICAgZ2V0Um9vdENvb3JkcyhHVEtf
V0lER0VUKHZpZXcpLCAmeFJvb3QsICZ5Um9vdCk7CiAjZW5kaWYKKyAgICBldmVudC5tb3Rpb24u
eF9yb290ID0geFJvb3Q7CisgICAgZXZlbnQubW90aW9uLnlfcm9vdCA9IHlSb290OwogCi0gICAg
ZXZlbnQubW90aW9uLnhfcm9vdCA9IHhfcm9vdDsKLSAgICBldmVudC5tb3Rpb24ueV9yb290ID0g
eV9yb290OwotICAgIAotICAgIGV2ZW50Lm1vdGlvbi5zdGF0ZSA9IGdldFN0YXRlRmxhZ3MoKTsK
LQotICAgIGlmIChkcmFnTW9kZSAmJiBkb3duICYmICFyZXBsYXlpbmdTYXZlZEV2ZW50cykgewot
ICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlXS5ldmVudCA9IGV2ZW50OwotICAgICAgICBtc2dR
dWV1ZVtlbmRPZlF1ZXVlKytdLmlzRHJhZ0V2ZW50ID0gdHJ1ZTsKLSAgICB9IGVsc2UgewotICAg
ICAgICB3ZWJraXRfd2ViX2ZyYW1lX2xheW91dChtYWluRnJhbWUpOwotCi0gICAgICAgIGdib29s
ZWFuIHJldHVybl92YWw7Ci0gICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAibW90
aW9uX25vdGlmeV9ldmVudCIsICZldmVudCwgJnJldHVybl92YWwpOwotICAgIH0KLQorICAgIHNl
bmRPclF1ZXVlRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKIH0KIApAQCAtMzYzLDE0ICszMTAsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3Vz
ZVdoZWVsVG9DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
bwogICAgIGVsc2UKICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKIAotICAgIGlmIChk
cmFnTW9kZSAmJiBkb3duICYmICFyZXBsYXlpbmdTYXZlZEV2ZW50cykgewotICAgICAgICBtc2dR
dWV1ZVtlbmRPZlF1ZXVlXS5ldmVudCA9IGV2ZW50OwotICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1
ZXVlKytdLmlzRHJhZ0V2ZW50ID0gdHJ1ZTsKLSAgICB9IGVsc2UgewotICAgICAgICB3ZWJraXRf
d2ViX2ZyYW1lX2xheW91dChtYWluRnJhbWUpOwotICAgICAgICBndGtfbWFpbl9kb19ldmVudCgm
ZXZlbnQpOwotICAgIH0KLQorICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtMzgzLDQ4ICszMjMsNjUg
QEAgc3RhdGljIEpTVmFsdWVSZWYgYmVnaW5EcmFnV2l0aEZpbGVzQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGYKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7CiB9CiAKLXZvaWQgcmVwbGF5U2F2ZWRFdmVudHMoKQorc3RhdGljIHZvaWQg
c2VuZE9yUXVldWVFdmVudChHZGtFdmVudCBldmVudCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBk
b2Vzbid0IGRlYWwgd2l0aCBmb3J3YXJkIGxlYXBzLCBidXQgaXQgc2hvdWxkLgorICAgIC8vIE1v
dXNlIG1vdmUgZXZlbnRzIGFyZSBxdWV1ZWQgaWYgdGhlIHByZXZpb3VzIGV2ZW50IHdhcyBxdWV1
ZWQgb3IgaWYgYQorICAgIC8vIGRlbGF5IHdhcyBzZXQgdXAgYnkgbGVhcEZvcndhcmQoKS4KKyAg
ICBpZiAoZW5kT2ZRdWV1ZSAhPSBzdGFydE9mUXVldWUgfHwgbXNnUXVldWVbZW5kT2ZRdWV1ZV0u
ZGVsYXkpIHsKKyAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZSsrXS5ldmVudCA9IGV2ZW50Owor
ICAgICAgICByZXBsYXlTYXZlZEV2ZW50cygpOworICAgICAgICByZXR1cm47CisgICAgfQogCisg
ICAgZGlzcGF0Y2hFdmVudChldmVudCk7Cit9CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnQo
R2RrRXZlbnQgZXZlbnQpCit7CisgICAgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQobWFpbkZyYW1l
KTsKICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3Zp
ZXcobWFpbkZyYW1lKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJl
cGxheWluZ1NhdmVkRXZlbnRzID0gdHJ1ZTsKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAg
ICBpZiAoZXZlbnQudHlwZSA9PSBHREtfQlVUVE9OX1BSRVNTIHx8IGV2ZW50LnR5cGUgPT0gR0RL
XzJCVVRUT05fUFJFU1MpCisgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0
dG9uX3ByZXNzX2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuVmFsdWUpOworICAgIGVsc2UgaWYgKGV2
ZW50LnR5cGUgPT0gR0RLX0JVVFRPTl9SRUxFQVNFKQorICAgICAgICBnX3NpZ25hbF9lbWl0X2J5
X25hbWUodmlldywgImJ1dHRvbl9yZWxlYXNlX2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuVmFsdWUp
OworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gR0RLX01PVElPTl9OT1RJRlkpCisgICAgICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAibW90aW9uX25vdGlmeV9ldmVudCIsICZldmVu
dCwgJnJldHVyblZhbHVlKTsKKyAgICBlbHNlIGlmIChldmVudC50eXBlID09IEdES19TQ1JPTEwp
CisgICAgICAgIGd0a19tYWluX2RvX2V2ZW50KCZldmVudCk7Cit9CiAKLSAgICBmb3IgKHVuc2ln
bmVkIHF1ZXVlUG9zID0gMDsgcXVldWVQb3MgPCBlbmRPZlF1ZXVlOyBxdWV1ZVBvcysrKSB7Ci0g
ICAgICAgIEdka0V2ZW50IGV2ZW50ID0gbXNnUXVldWVbcXVldWVQb3NdLmV2ZW50OwotICAgICAg
ICBnYm9vbGVhbiByZXR1cm5fdmFsOwotCi0gICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewot
ICAgICAgICBjYXNlIEdES19CVVRUT05fUkVMRUFTRToKLSAgICAgICAgICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9uX3JlbGVhc2VfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5f
dmFsKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdES19CVVRUT05fUFJFU1M6
Ci0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywgImJ1dHRvbl9wcmVzc19l
dmVudCIsICZldmVudCwgJnJldHVybl92YWwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgR0RLX01PVElPTl9OT1RJRlk6Ci0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25h
bWUodmlldywgIm1vdGlvbl9ub3RpZnlfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIH0KK3N0YXRpYyBnYm9vbGVhbiBsZWFwRm9yd2FyZERlbGF5Q2FsbGJhY2soZ3Bv
aW50ZXIgZGF0YSkKK3sKKyAgICBkb25lTGVhcGluZ0ZvcndhcmQgPSB0cnVlOworICAgIHJldHVy
biBmYWxzZTsKK30KIAotICAgICAgICBzdGFydE9mUXVldWUrKzsKLSAgICB9Cit2b2lkIHJlcGxh
eVNhdmVkRXZlbnRzKCkKK3sKKyAgICByZXBsYXlpbmdTYXZlZEV2ZW50cyA9IHRydWU7CiAKLSAg
ICBpbnQgbnVtUXVldWVkTWVzc2FnZXMgPSBlbmRPZlF1ZXVlIC0gc3RhcnRPZlF1ZXVlOwotICAg
IGlmICghbnVtUXVldWVkTWVzc2FnZXMpIHsKLSAgICAgICAgc3RhcnRPZlF1ZXVlID0gMDsKLSAg
ICAgICAgZW5kT2ZRdWV1ZSA9IDA7Ci0gICAgICAgIHJlcGxheWluZ1NhdmVkRXZlbnRzID0gZmFs
c2U7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoc3RhcnRPZlF1ZXVlIDwgZW5kT2ZRdWV1ZSkg
eworICAgICAgICAvLyBGaXJzdCBzZW5kIGFsbCB0aGUgZXZlbnRzIHRoYXQgYXJlIHJlYWR5IHRv
IGJlIHNlbnQKKyAgICAgICAgd2hpbGUgKCFtc2dRdWV1ZVtzdGFydE9mUXVldWVdLmRlbGF5ICYm
IHN0YXJ0T2ZRdWV1ZSA8IGVuZE9mUXVldWUpCisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KG1z
Z1F1ZXVlW3N0YXJ0T2ZRdWV1ZSsrXS5ldmVudCk7CisKKyAgICAgICAgaWYgKHN0YXJ0T2ZRdWV1
ZSA9PSBlbmRPZlF1ZXVlKSB7CisgICAgICAgICAgICBzdGFydE9mUXVldWUgPSAwOworICAgICAg
ICAgICAgZW5kT2ZRdWV1ZSA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBQ
dW1wIHRoZSBtYWluIGxvb3AgdW50aWwgd2UgaGF2ZSBmaW5pc2hlZCBsZWFwaW5nIGZvcndhcmQu
CisgICAgICAgICAgICBkb25lTGVhcGluZ0ZvcndhcmQgPSBmYWxzZTsKKyAgICAgICAgICAgIGdf
dGltZW91dF9hZGQobXNnUXVldWVbc3RhcnRPZlF1ZXVlXS5kZWxheSwgbGVhcEZvcndhcmREZWxh
eUNhbGxiYWNrLCAwKTsKKyAgICAgICAgICAgIG1zZ1F1ZXVlW3N0YXJ0T2ZRdWV1ZV0uZGVsYXkg
PSAwOworICAgICAgICAgICAgd2hpbGUgKCFkb25lTGVhcGluZ0ZvcndhcmQpCisgICAgICAgICAg
ICAgICAgZ3RrX21haW5faXRlcmF0aW9uKCk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGFy
dE9mUXVldWUgPSAwOwotICAgIGVuZE9mUXVldWUgPSAwOwotCiAgICAgcmVwbGF5aW5nU2F2ZWRF
dmVudHMgPSBmYWxzZTsKIH0KIApAQCAtNjYxLDE3ICs2MTgsMjEgQEAgc3RhdGljIEpTQ2xhc3NS
ZWYgZ2V0Q2xhc3MoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgcmV0dXJuIGV2ZW50U2VuZGVy
Q2xhc3M7CiB9CiAKLUpTT2JqZWN0UmVmIG1ha2VFdmVudFNlbmRlcihKU0NvbnRleHRSZWYgY29u
dGV4dCkKK0pTT2JqZWN0UmVmIG1ha2VFdmVudFNlbmRlcihKU0NvbnRleHRSZWYgY29udGV4dCwg
Ym9vbCBpc1RvcEZyYW1lKQogewotICAgIGRvd24gPSBmYWxzZTsKLSAgICBkcmFnTW9kZSA9IHRy
dWU7Ci0gICAgbGFzdE1vdXNlUG9zaXRpb25YID0gbGFzdE1vdXNlUG9zaXRpb25ZID0gMDsKLSAg
ICBsYXN0Q2xpY2tQb3NpdGlvblggPSBsYXN0Q2xpY2tQb3NpdGlvblkgPSAwOwotCi0gICAgaWYg
KCFyZXBsYXlpbmdTYXZlZEV2ZW50cykgewotICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBi
ZSBjYWxsZWQgaW4gdGhlIG1pZGRsZSBvZiBhIHRlc3QsIGV2ZW4KLSAgICAgICAgLy8gd2hpbGUg
cmVwbGF5aW5nIHNhdmVkIGV2ZW50cy4gUmVzZXR0aW5nIHRoZXNlIHdoaWxlIGRvaW5nIHRoYXQK
LSAgICAgICAgLy8gY2FuIGJyZWFrIHRoaW5ncy4KKyAgICBpZiAoaXNUb3BGcmFtZSkgeworICAg
ICAgICBkcmFnTW9kZSA9IHRydWU7CisgICAgICAgIHJlcGxheWluZ1NhdmVkRXZlbnRzID0gZmFs
c2U7CisgICAgICAgIGRvbmVMZWFwaW5nRm9yd2FyZCA9IGZhbHNlOworICAgICAgICB0aW1lT2Zm
c2V0ID0gMDsKKworICAgICAgICBsYXN0TW91c2VQb3NpdGlvblggPSBsYXN0TW91c2VQb3NpdGlv
blkgPSAwOworICAgICAgICBsYXN0Q2xpY2tQb3NpdGlvblggPSBsYXN0Q2xpY2tQb3NpdGlvblkg
PSAwOworICAgICAgICBsYXN0Q2xpY2tUaW1lT2Zmc2V0ID0gMDsKKyAgICAgICAgbGFzdENsaWNr
QnV0dG9uID0gMDsKKyAgICAgICAgYnV0dG9uQ3VycmVudGx5RG93biA9IDA7CisgICAgICAgIGNs
aWNrQ291bnQgPSAwOworCiAgICAgICAgIGVuZE9mUXVldWUgPSAwOwogICAgICAgICBzdGFydE9m
UXVldWUgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9FdmVudFNlbmRlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50
U2VuZGVyLmgKaW5kZXggMjcyZThhOS4uY2UzM2NjYyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIHR5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwogdHlwZWRlZiBzdHJ1Y3Qg
T3BhcXVlSlNWYWx1ZSogSlNPYmplY3RSZWY7CiAKLUpTT2JqZWN0UmVmIG1ha2VFdmVudFNlbmRl
cihKU0NvbnRleHRSZWYgY29udGV4dCk7CitKU09iamVjdFJlZiBtYWtlRXZlbnRTZW5kZXIoSlND
b250ZXh0UmVmIGNvbnRleHQsIGJvb2wgaXNUb3BGcmFtZSk7CiB2b2lkIHJlcGxheVNhdmVkRXZl
bnRzKCk7CiAKICNlbmRpZgotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55917</attachid>
            <date>2010-05-12 17:53:55 -0700</date>
            <delta_ts>2010-05-12 17:59:27 -0700</delta_ts>
            <desc>Take into account the timeOffset when synthesizing events in the DRT</desc>
            <filename>0001-GTK-Double-clicks-cause-three-button-press-events.patch</filename>
            <type>text/plain</type>
            <size>3039</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBlZDA2ODY4Y2EwZmY4ZDIyMzUyM2NjMmVmZWY4NjIwNDA3NGZhZmIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDEyIE1heSAyMDEwIDE1OjU3OjIyIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
W0dUS10gRG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRzCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKClJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKVGFrZSBpbnRvIGFjY291bnQgdGhlIHJlbGF0aXZlIHRpbWVPZmZzZXQg
ZnJvbSBsZWFwRm93YXJkIGluIHRoZSBHVEsrIEV2ZW50U2VuZGVyLgoKKiBEdW1wUmVuZGVyVHJl
ZS9ndGsvRXZlbnRTZW5kZXIuY3BwOgoocHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQpOiBBZGQgdGlt
ZU9mZnNldCB0byB0aGUgYmFzZSB0aW1lLgoobW91c2VNb3ZlVG9DYWxsYmFjayk6IERpdHRvLgoo
bW91c2VXaGVlbFRvQ2FsbGJhY2spOiBEaXR0by4KLS0tCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArKysrKysrKysrKysrKwogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcCB8ICAgIDYgKysrLS0tCiAyIGZp
bGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIy
NWMwZmYuLjQ0ZWFjODkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNS0xMiAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRG91YmxlIGNsaWNrcyBjYXVzZSB0aHJl
ZSBidXR0b24gcHJlc3MgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zODg1MworCisgICAgICAgIFRha2UgaW50byBhY2NvdW50IHRoZSByZWxh
dGl2ZSB0aW1lT2Zmc2V0IGZyb20gbGVhcEZvd2FyZCBpbiB0aGUgR1RLKyBFdmVudFNlbmRlci4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHA6CisgICAgICAg
IChwcmVwYXJlTW91c2VCdXR0b25FdmVudCk6IEFkZCB0aW1lT2Zmc2V0IHRvIHRoZSBiYXNlIHRp
bWUuCisgICAgICAgIChtb3VzZU1vdmVUb0NhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChtb3Vz
ZVdoZWVsVG9DYWxsYmFjayk6IERpdHRvLgorCiAyMDEwLTA1LTEwICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNl
bmRlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3Bw
CmluZGV4IGMxM2ZjZjAuLjE1NjU4MjUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgcHJlcGFyZU1v
dXNlQnV0dG9uRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBpbnQgYnV0dG9uKQogICAgIGV2ZW50LT5i
dXR0b24ueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsKICAgICBldmVudC0+YnV0dG9uLnkgPSBsYXN0
TW91c2VQb3NpdGlvblk7CiAgICAgZXZlbnQtPmJ1dHRvbi53aW5kb3cgPSBHVEtfV0lER0VUKHZp
ZXcpLT53aW5kb3c7Ci0gICAgZXZlbnQtPmJ1dHRvbi50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsK
KyAgICBldmVudC0+YnV0dG9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FICsgdGltZU9mZnNldDsK
ICAgICBldmVudC0+YnV0dG9uLmRldmljZSA9IGdka19kZXZpY2VfZ2V0X2NvcmVfcG9pbnRlcigp
OwogICAgIGV2ZW50LT5idXR0b24uc3RhdGUgPSBnZXRTdGF0ZUZsYWdzKCk7CiAKQEAgLTI1Nyw3
ICsyNTcsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZU1vdmVUb0NhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbgogICAgIGV2ZW50LnR5cGUgPSBHREtf
TU9USU9OX05PVElGWTsKICAgICBldmVudC5tb3Rpb24ueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsK
ICAgICBldmVudC5tb3Rpb24ueSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKLSAgICBldmVudC5tb3Rp
b24udGltZSA9IEdES19DVVJSRU5UX1RJTUU7CisgICAgZXZlbnQubW90aW9uLnRpbWUgPSBHREtf
Q1VSUkVOVF9USU1FICsgdGltZU9mZnNldDsKICAgICBldmVudC5tb3Rpb24ud2luZG93ID0gR1RL
X1dJREdFVCh2aWV3KS0+d2luZG93OwogICAgIGV2ZW50Lm1vdGlvbi5kZXZpY2UgPSBnZGtfZGV2
aWNlX2dldF9jb3JlX3BvaW50ZXIoKTsKICAgICBldmVudC5tb3Rpb24uc3RhdGUgPSBnZXRTdGF0
ZUZsYWdzKCk7CkBAIC0yOTYsNyArMjk2LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VXaGVl
bFRvQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW8KICAg
ICBldmVudC50eXBlID0gR0RLX1NDUk9MTDsKICAgICBldmVudC5zY3JvbGwueCA9IGxhc3RNb3Vz
ZVBvc2l0aW9uWDsKICAgICBldmVudC5zY3JvbGwueSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKLSAg
ICBldmVudC5zY3JvbGwudGltZSA9IEdES19DVVJSRU5UX1RJTUU7CisgICAgZXZlbnQuc2Nyb2xs
LnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FICsgdGltZU9mZnNldDsKICAgICBldmVudC5zY3JvbGwu
d2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+d2luZG93OwogCiAgICAgaWYgKGhvcml6b250YWwg
PCAwKQotLSAKMS42LjMuMwoK
</data>
<flag name="commit-queue"
          id="40223"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55918</attachid>
            <date>2010-05-12 17:59:27 -0700</date>
            <delta_ts>2010-05-12 18:07:31 -0700</delta_ts>
            <desc>Take into account the timeOffset when synthesizing events in the DRT</desc>
            <filename>0001-GTK-Double-clicks-cause-three-button-press-events.patch</filename>
            <type>text/plain</type>
            <size>3689</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBiZjVlYTYwMjJlYzNiMTc3NGY2NmYwMWZlNTlmOGRmMzFmNmQ2MzNlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDEyIE1heSAyMDEwIDE1OjU3OjIyIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
W0dUS10gRG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRzCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKClJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKVGFrZSBpbnRvIGFjY291bnQgdGhlIHJlbGF0aXZlIHRpbWVPZmZzZXQg
ZnJvbSBsZWFwRm93YXJkIGluIHRoZSBHVEsrIEV2ZW50U2VuZGVyLgoKKiBEdW1wUmVuZGVyVHJl
ZS9ndGsvRXZlbnRTZW5kZXIuY3BwOgoocHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQpOiBBZGQgdGlt
ZU9mZnNldCB0byB0aGUgYmFzZSB0aW1lLgoobW91c2VNb3ZlVG9DYWxsYmFjayk6IERpdHRvLgoo
bW91c2VXaGVlbFRvQ2FsbGJhY2spOiBEaXR0by4KLS0tCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArKysrKysrKysrKysrKwogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcCB8ICAgMTMgKysrKysrKysrLS0t
LQogMiBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpp
bmRleCAyMjVjMGZmLi40NGVhYzg5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDUtMTIg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIERvdWJsZSBjbGlja3MgY2F1
c2UgdGhyZWUgYnV0dG9uIHByZXNzIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKKworICAgICAgICBUYWtlIGludG8gYWNjb3VudCB0
aGUgcmVsYXRpdmUgdGltZU9mZnNldCBmcm9tIGxlYXBGb3dhcmQgaW4gdGhlIEdUSysgRXZlbnRT
ZW5kZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwOgor
ICAgICAgICAocHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQpOiBBZGQgdGltZU9mZnNldCB0byB0aGUg
YmFzZSB0aW1lLgorICAgICAgICAobW91c2VNb3ZlVG9DYWxsYmFjayk6IERpdHRvLgorICAgICAg
ICAobW91c2VXaGVlbFRvQ2FsbGJhY2spOiBEaXR0by4KKwogMjAxMC0wNS0xMCAgTWFydGluIFJv
Ymluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
RXZlbnRTZW5kZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2Vu
ZGVyLmNwcAppbmRleCBjMTNmY2YwLi4zZjM1ZWRiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIHBy
ZXBhcmVNb3VzZUJ1dHRvbkV2ZW50KEdka0V2ZW50KiBldmVudCwgaW50IGJ1dHRvbikKICAgICBl
dmVudC0+YnV0dG9uLnggPSBsYXN0TW91c2VQb3NpdGlvblg7CiAgICAgZXZlbnQtPmJ1dHRvbi55
ID0gbGFzdE1vdXNlUG9zaXRpb25ZOwogICAgIGV2ZW50LT5idXR0b24ud2luZG93ID0gR1RLX1dJ
REdFVCh2aWV3KS0+d2luZG93OwotICAgIGV2ZW50LT5idXR0b24udGltZSA9IEdES19DVVJSRU5U
X1RJTUU7CisgICAgZXZlbnQtPmJ1dHRvbi50aW1lID0gR0RLX0NVUlJFTlRfVElNRSArIHRpbWVP
ZmZzZXQ7CiAgICAgZXZlbnQtPmJ1dHRvbi5kZXZpY2UgPSBnZGtfZGV2aWNlX2dldF9jb3JlX3Bv
aW50ZXIoKTsKICAgICBldmVudC0+YnV0dG9uLnN0YXRlID0gZ2V0U3RhdGVGbGFncygpOwogCkBA
IC0yNTcsNyArMjU3LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VNb3ZlVG9DYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24KICAgICBldmVudC50eXBl
ID0gR0RLX01PVElPTl9OT1RJRlk7CiAgICAgZXZlbnQubW90aW9uLnggPSBsYXN0TW91c2VQb3Np
dGlvblg7CiAgICAgZXZlbnQubW90aW9uLnkgPSBsYXN0TW91c2VQb3NpdGlvblk7Ci0gICAgZXZl
bnQubW90aW9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOworICAgIGV2ZW50Lm1vdGlvbi50aW1l
ID0gR0RLX0NVUlJFTlRfVElNRSArIHRpbWVPZmZzZXQ7CiAgICAgZXZlbnQubW90aW9uLndpbmRv
dyA9IEdUS19XSURHRVQodmlldyktPndpbmRvdzsKICAgICBldmVudC5tb3Rpb24uZGV2aWNlID0g
Z2RrX2RldmljZV9nZXRfY29yZV9wb2ludGVyKCk7CiAgICAgZXZlbnQubW90aW9uLnN0YXRlID0g
Z2V0U3RhdGVGbGFncygpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1v
dXNlV2hlZWxUb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvCiAgICAgZXZlbnQudHlwZSA9IEdES19TQ1JPTEw7CiAgICAgZXZlbnQuc2Nyb2xsLnggPSBs
YXN0TW91c2VQb3NpdGlvblg7CiAgICAgZXZlbnQuc2Nyb2xsLnkgPSBsYXN0TW91c2VQb3NpdGlv
blk7Ci0gICAgZXZlbnQuc2Nyb2xsLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOworICAgIGV2ZW50
LnNjcm9sbC50aW1lID0gR0RLX0NVUlJFTlRfVElNRSArIHRpbWVPZmZzZXQ7CiAgICAgZXZlbnQu
c2Nyb2xsLndpbmRvdyA9IEdUS19XSURHRVQodmlldyktPndpbmRvdzsKIAogICAgIGlmIChob3Jp
em9udGFsIDwgMCkKQEAgLTYyNCw3ICs2MjQsMTIgQEAgSlNPYmplY3RSZWYgbWFrZUV2ZW50U2Vu
ZGVyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBib29sIGlzVG9wRnJhbWUpCiAgICAgICAgIGRyYWdN
b2RlID0gdHJ1ZTsKICAgICAgICAgcmVwbGF5aW5nU2F2ZWRFdmVudHMgPSBmYWxzZTsKICAgICAg
ICAgZG9uZUxlYXBpbmdGb3J3YXJkID0gZmFsc2U7Ci0gICAgICAgIHRpbWVPZmZzZXQgPSAwOwor
CisgICAgICAgIC8vIEZseSBmb3J3YXJkIGluIHRpbWUgb25lIHNlY29uZCB3aGVuIHRoZSBtYWlu
IGZyYW1lIGxvYWRzLiBUaGlzIHdpbGwKKyAgICAgICAgLy8gZW5zdXJlIHRoYXQgd2hlbiBhIHRl
c3QgYmVnaW4gY2xpY2tpbmcgaW4gdGhlIHNhbWUgbG9jYXRpb24gYXMKKyAgICAgICAgLy8gYSBw
cmV2aW91cyB0ZXN0LCB0aG9zZSBjbGlja3Mgd29uJ3QgYmUgaW50ZXJwcmV0ZWQgYXMgY29udGlu
dWF0aW9ucworICAgICAgICAvLyBvZiB0aGUgcHJldmlvdXMgdGVzdCdzIGNsaWNrIHNlcXVlbmNl
cy4KKyAgICAgICAgdGltZU9mZnNldCArPSAxMDAwOwogCiAgICAgICAgIGxhc3RNb3VzZVBvc2l0
aW9uWCA9IGxhc3RNb3VzZVBvc2l0aW9uWSA9IDA7CiAgICAgICAgIGxhc3RDbGlja1Bvc2l0aW9u
WCA9IGxhc3RDbGlja1Bvc2l0aW9uWSA9IDA7Ci0tIAoxLjYuMy4zCgo=
</data>
<flag name="commit-queue"
          id="40225"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55919</attachid>
            <date>2010-05-12 18:07:31 -0700</date>
            <delta_ts>2010-05-14 11:57:38 -0700</delta_ts>
            <desc>Take into account the timeOffset when synthesizing events in the DRT</desc>
            <filename>0001-GTK-Double-clicks-cause-three-button-press-events.patch</filename>
            <type>text/plain</type>
            <size>3997</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBkY2Q2NmFhYTU1NDZkZjEyYmE2OTY1OWZhN2M4ZDM2MzdjMGQ1NTI2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDEyIE1heSAyMDEwIDE1OjU3OjIyIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
W0dUS10gRG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRzCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKClJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKVGFrZSBpbnRvIGFjY291bnQgdGhlIHJlbGF0aXZlIHRpbWVPZmZzZXQg
ZnJvbSBsZWFwRm93YXJkIGluIHRoZSBHVEsrIEV2ZW50U2VuZGVyLgoKKiBEdW1wUmVuZGVyVHJl
ZS9ndGsvRXZlbnRTZW5kZXIuY3BwOgoocHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQpOiBBZGQgdGlt
ZU9mZnNldCB0byB0aGUgYmFzZSB0aW1lLgoobW91c2VNb3ZlVG9DYWxsYmFjayk6IERpdHRvLgoo
bW91c2VXaGVlbFRvQ2FsbGJhY2spOiBEaXR0by4KKG1ha2VFdmVudFNlbmRlcik6IERpdHRvLgot
LS0KIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1
ICsrKysrKysrKysrKysrKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2Vu
ZGVyLmNwcCB8ICAgMTUgKysrKysrKysrKy0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2Vy
dGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIyNWMwZmYuLjM5NTMwZTIgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNS0xMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0dUS10gRG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODg1Mwor
CisgICAgICAgIFRha2UgaW50byBhY2NvdW50IHRoZSByZWxhdGl2ZSB0aW1lT2Zmc2V0IGZyb20g
bGVhcEZvd2FyZCBpbiB0aGUgR1RLKyBFdmVudFNlbmRlci4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChwcmVwYXJlTW91c2VCdXR0b25F
dmVudCk6IEFkZCB0aW1lT2Zmc2V0IHRvIHRoZSBiYXNlIHRpbWUuCisgICAgICAgIChtb3VzZU1v
dmVUb0NhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChtb3VzZVdoZWVsVG9DYWxsYmFjayk6IERp
dHRvLgorICAgICAgICAobWFrZUV2ZW50U2VuZGVyKTogRGl0dG8uCisKIDIwMTAtMDUtMTAgIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9F
dmVudFNlbmRlci5jcHAKaW5kZXggYzEzZmNmMC4uN2Y4YjI1NSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIGV4
dGVybiAiQyIgewogc3RhdGljIGJvb2wgZHJhZ01vZGU7CiBzdGF0aWMgYm9vbCByZXBsYXlpbmdT
YXZlZEV2ZW50czsKIHN0YXRpYyBib29sIGRvbmVMZWFwaW5nRm9yd2FyZDsKLXN0YXRpYyBpbnQg
dGltZU9mZnNldDsKK3N0YXRpYyBndWludDMyIHRpbWVPZmZzZXQgPSAwOwogCiBzdGF0aWMgaW50
IGxhc3RNb3VzZVBvc2l0aW9uWDsKIHN0YXRpYyBpbnQgbGFzdE1vdXNlUG9zaXRpb25ZOwpAQCAt
MTIyLDcgKzEyMiw3IEBAIGJvb2wgcHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQoR2RrRXZlbnQqIGV2
ZW50LCBpbnQgYnV0dG9uKQogICAgIGV2ZW50LT5idXR0b24ueCA9IGxhc3RNb3VzZVBvc2l0aW9u
WDsKICAgICBldmVudC0+YnV0dG9uLnkgPSBsYXN0TW91c2VQb3NpdGlvblk7CiAgICAgZXZlbnQt
PmJ1dHRvbi53aW5kb3cgPSBHVEtfV0lER0VUKHZpZXcpLT53aW5kb3c7Ci0gICAgZXZlbnQtPmJ1
dHRvbi50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKKyAgICBldmVudC0+YnV0dG9uLnRpbWUgPSBH
REtfQ1VSUkVOVF9USU1FICsgdGltZU9mZnNldDsKICAgICBldmVudC0+YnV0dG9uLmRldmljZSA9
IGdka19kZXZpY2VfZ2V0X2NvcmVfcG9pbnRlcigpOwogICAgIGV2ZW50LT5idXR0b24uc3RhdGUg
PSBnZXRTdGF0ZUZsYWdzKCk7CiAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBtb3VzZU1vdmVUb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbgogICAgIGV2ZW50LnR5cGUgPSBHREtfTU9USU9OX05PVElGWTsKICAgICBldmVudC5t
b3Rpb24ueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsKICAgICBldmVudC5tb3Rpb24ueSA9IGxhc3RN
b3VzZVBvc2l0aW9uWTsKLSAgICBldmVudC5tb3Rpb24udGltZSA9IEdES19DVVJSRU5UX1RJTUU7
CisgICAgZXZlbnQubW90aW9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FICsgdGltZU9mZnNldDsK
ICAgICBldmVudC5tb3Rpb24ud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+d2luZG93OwogICAg
IGV2ZW50Lm1vdGlvbi5kZXZpY2UgPSBnZGtfZGV2aWNlX2dldF9jb3JlX3BvaW50ZXIoKTsKICAg
ICBldmVudC5tb3Rpb24uc3RhdGUgPSBnZXRTdGF0ZUZsYWdzKCk7CkBAIC0yOTYsNyArMjk2LDcg
QEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VXaGVlbFRvQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW8KICAgICBldmVudC50eXBlID0gR0RLX1NDUk9MTDsK
ICAgICBldmVudC5zY3JvbGwueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsKICAgICBldmVudC5zY3Jv
bGwueSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKLSAgICBldmVudC5zY3JvbGwudGltZSA9IEdES19D
VVJSRU5UX1RJTUU7CisgICAgZXZlbnQuc2Nyb2xsLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FICsg
dGltZU9mZnNldDsKICAgICBldmVudC5zY3JvbGwud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+
d2luZG93OwogCiAgICAgaWYgKGhvcml6b250YWwgPCAwKQpAQCAtNjI0LDcgKzYyNCwxMiBAQCBK
U09iamVjdFJlZiBtYWtlRXZlbnRTZW5kZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgaXNU
b3BGcmFtZSkKICAgICAgICAgZHJhZ01vZGUgPSB0cnVlOwogICAgICAgICByZXBsYXlpbmdTYXZl
ZEV2ZW50cyA9IGZhbHNlOwogICAgICAgICBkb25lTGVhcGluZ0ZvcndhcmQgPSBmYWxzZTsKLSAg
ICAgICAgdGltZU9mZnNldCA9IDA7CisKKyAgICAgICAgLy8gRmx5IGZvcndhcmQgaW4gdGltZSBv
bmUgc2Vjb25kIHdoZW4gdGhlIG1haW4gZnJhbWUgbG9hZHMuIFRoaXMgd2lsbAorICAgICAgICAv
LyBlbnN1cmUgdGhhdCB3aGVuIGEgdGVzdCBiZWdpbiBjbGlja2luZyBpbiB0aGUgc2FtZSBsb2Nh
dGlvbiBhcworICAgICAgICAvLyBhIHByZXZpb3VzIHRlc3QsIHRob3NlIGNsaWNrcyB3b24ndCBi
ZSBpbnRlcnByZXRlZCBhcyBjb250aW51YXRpb25zCisgICAgICAgIC8vIG9mIHRoZSBwcmV2aW91
cyB0ZXN0J3MgY2xpY2sgc2VxdWVuY2VzLgorICAgICAgICB0aW1lT2Zmc2V0ICs9IDEwMDA7CiAK
ICAgICAgICAgbGFzdE1vdXNlUG9zaXRpb25YID0gbGFzdE1vdXNlUG9zaXRpb25ZID0gMDsKICAg
ICAgICAgbGFzdENsaWNrUG9zaXRpb25YID0gbGFzdENsaWNrUG9zaXRpb25ZID0gMDsKLS0gCjEu
Ni4zLjMKCg==
</data>
<flag name="commit-queue"
          id="40227"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55922</attachid>
            <date>2010-05-12 18:22:19 -0700</date>
            <delta_ts>2010-05-12 20:35:17 -0700</delta_ts>
            <desc>Send the proper mouse events during clicking</desc>
            <filename>0001-GTK-Double-clicks-cause-three-button-press-events.patch</filename>
            <type>text/plain</type>
            <size>3997</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBkY2Q2NmFhYTU1NDZkZjEyYmE2OTY1OWZhN2M4ZDM2MzdjMGQ1NTI2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDEyIE1heSAyMDEwIDE1OjU3OjIyIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
W0dUS10gRG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRzCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKClJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKVGFrZSBpbnRvIGFjY291bnQgdGhlIHJlbGF0aXZlIHRpbWVPZmZzZXQg
ZnJvbSBsZWFwRm93YXJkIGluIHRoZSBHVEsrIEV2ZW50U2VuZGVyLgoKKiBEdW1wUmVuZGVyVHJl
ZS9ndGsvRXZlbnRTZW5kZXIuY3BwOgoocHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQpOiBBZGQgdGlt
ZU9mZnNldCB0byB0aGUgYmFzZSB0aW1lLgoobW91c2VNb3ZlVG9DYWxsYmFjayk6IERpdHRvLgoo
bW91c2VXaGVlbFRvQ2FsbGJhY2spOiBEaXR0by4KKG1ha2VFdmVudFNlbmRlcik6IERpdHRvLgot
LS0KIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1
ICsrKysrKysrKysrKysrKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2Vu
ZGVyLmNwcCB8ICAgMTUgKysrKysrKysrKy0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2Vy
dGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIyNWMwZmYuLjM5NTMwZTIgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNS0xMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0dUS10gRG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODg1Mwor
CisgICAgICAgIFRha2UgaW50byBhY2NvdW50IHRoZSByZWxhdGl2ZSB0aW1lT2Zmc2V0IGZyb20g
bGVhcEZvd2FyZCBpbiB0aGUgR1RLKyBFdmVudFNlbmRlci4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChwcmVwYXJlTW91c2VCdXR0b25F
dmVudCk6IEFkZCB0aW1lT2Zmc2V0IHRvIHRoZSBiYXNlIHRpbWUuCisgICAgICAgIChtb3VzZU1v
dmVUb0NhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChtb3VzZVdoZWVsVG9DYWxsYmFjayk6IERp
dHRvLgorICAgICAgICAobWFrZUV2ZW50U2VuZGVyKTogRGl0dG8uCisKIDIwMTAtMDUtMTAgIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9F
dmVudFNlbmRlci5jcHAKaW5kZXggYzEzZmNmMC4uN2Y4YjI1NSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIGV4
dGVybiAiQyIgewogc3RhdGljIGJvb2wgZHJhZ01vZGU7CiBzdGF0aWMgYm9vbCByZXBsYXlpbmdT
YXZlZEV2ZW50czsKIHN0YXRpYyBib29sIGRvbmVMZWFwaW5nRm9yd2FyZDsKLXN0YXRpYyBpbnQg
dGltZU9mZnNldDsKK3N0YXRpYyBndWludDMyIHRpbWVPZmZzZXQgPSAwOwogCiBzdGF0aWMgaW50
IGxhc3RNb3VzZVBvc2l0aW9uWDsKIHN0YXRpYyBpbnQgbGFzdE1vdXNlUG9zaXRpb25ZOwpAQCAt
MTIyLDcgKzEyMiw3IEBAIGJvb2wgcHJlcGFyZU1vdXNlQnV0dG9uRXZlbnQoR2RrRXZlbnQqIGV2
ZW50LCBpbnQgYnV0dG9uKQogICAgIGV2ZW50LT5idXR0b24ueCA9IGxhc3RNb3VzZVBvc2l0aW9u
WDsKICAgICBldmVudC0+YnV0dG9uLnkgPSBsYXN0TW91c2VQb3NpdGlvblk7CiAgICAgZXZlbnQt
PmJ1dHRvbi53aW5kb3cgPSBHVEtfV0lER0VUKHZpZXcpLT53aW5kb3c7Ci0gICAgZXZlbnQtPmJ1
dHRvbi50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKKyAgICBldmVudC0+YnV0dG9uLnRpbWUgPSBH
REtfQ1VSUkVOVF9USU1FICsgdGltZU9mZnNldDsKICAgICBldmVudC0+YnV0dG9uLmRldmljZSA9
IGdka19kZXZpY2VfZ2V0X2NvcmVfcG9pbnRlcigpOwogICAgIGV2ZW50LT5idXR0b24uc3RhdGUg
PSBnZXRTdGF0ZUZsYWdzKCk7CiAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBtb3VzZU1vdmVUb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbgogICAgIGV2ZW50LnR5cGUgPSBHREtfTU9USU9OX05PVElGWTsKICAgICBldmVudC5t
b3Rpb24ueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsKICAgICBldmVudC5tb3Rpb24ueSA9IGxhc3RN
b3VzZVBvc2l0aW9uWTsKLSAgICBldmVudC5tb3Rpb24udGltZSA9IEdES19DVVJSRU5UX1RJTUU7
CisgICAgZXZlbnQubW90aW9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FICsgdGltZU9mZnNldDsK
ICAgICBldmVudC5tb3Rpb24ud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+d2luZG93OwogICAg
IGV2ZW50Lm1vdGlvbi5kZXZpY2UgPSBnZGtfZGV2aWNlX2dldF9jb3JlX3BvaW50ZXIoKTsKICAg
ICBldmVudC5tb3Rpb24uc3RhdGUgPSBnZXRTdGF0ZUZsYWdzKCk7CkBAIC0yOTYsNyArMjk2LDcg
QEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VXaGVlbFRvQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW8KICAgICBldmVudC50eXBlID0gR0RLX1NDUk9MTDsK
ICAgICBldmVudC5zY3JvbGwueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsKICAgICBldmVudC5zY3Jv
bGwueSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKLSAgICBldmVudC5zY3JvbGwudGltZSA9IEdES19D
VVJSRU5UX1RJTUU7CisgICAgZXZlbnQuc2Nyb2xsLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FICsg
dGltZU9mZnNldDsKICAgICBldmVudC5zY3JvbGwud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+
d2luZG93OwogCiAgICAgaWYgKGhvcml6b250YWwgPCAwKQpAQCAtNjI0LDcgKzYyNCwxMiBAQCBK
U09iamVjdFJlZiBtYWtlRXZlbnRTZW5kZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgaXNU
b3BGcmFtZSkKICAgICAgICAgZHJhZ01vZGUgPSB0cnVlOwogICAgICAgICByZXBsYXlpbmdTYXZl
ZEV2ZW50cyA9IGZhbHNlOwogICAgICAgICBkb25lTGVhcGluZ0ZvcndhcmQgPSBmYWxzZTsKLSAg
ICAgICAgdGltZU9mZnNldCA9IDA7CisKKyAgICAgICAgLy8gRmx5IGZvcndhcmQgaW4gdGltZSBv
bmUgc2Vjb25kIHdoZW4gdGhlIG1haW4gZnJhbWUgbG9hZHMuIFRoaXMgd2lsbAorICAgICAgICAv
LyBlbnN1cmUgdGhhdCB3aGVuIGEgdGVzdCBiZWdpbiBjbGlja2luZyBpbiB0aGUgc2FtZSBsb2Nh
dGlvbiBhcworICAgICAgICAvLyBhIHByZXZpb3VzIHRlc3QsIHRob3NlIGNsaWNrcyB3b24ndCBi
ZSBpbnRlcnByZXRlZCBhcyBjb250aW51YXRpb25zCisgICAgICAgIC8vIG9mIHRoZSBwcmV2aW91
cyB0ZXN0J3MgY2xpY2sgc2VxdWVuY2VzLgorICAgICAgICB0aW1lT2Zmc2V0ICs9IDEwMDA7CiAK
ICAgICAgICAgbGFzdE1vdXNlUG9zaXRpb25YID0gbGFzdE1vdXNlUG9zaXRpb25ZID0gMDsKICAg
ICAgICAgbGFzdENsaWNrUG9zaXRpb25YID0gbGFzdENsaWNrUG9zaXRpb25ZID0gMDsKLS0gCjEu
Ni4zLjMKCg==
</data>
<flag name="commit-queue"
          id="40232"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55933</attachid>
            <date>2010-05-12 20:35:17 -0700</date>
            <delta_ts>2010-05-14 09:07:51 -0700</delta_ts>
            <desc>Send the proper mouse events during clicking</desc>
            <filename>0001-GTK-Double-clicks-cause-three-button-press-events.patch</filename>
            <type>text/plain</type>
            <size>17555</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA5NzAxYmY0M2NiOTZkOTFhYmJhMDU0ZDRlMTliZWJiYjJiMGMxOTgyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDEyIE1heSAyMDEwIDIwOjM0OjEwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
W0dUS10gRG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRzCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKClJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKV2ViQ29yZToKCkFkZCBHT3duUHRyIHdyYXBwZXIgZm9yIEdka0V2ZW50
IGFuZCBleHBvc2UgYSBzZXR0ZXIgZm9yClBsYXRmb3JtTW91c2VFdmVudDo6bV9jbGlja0NvdW50
LgoKKiBHTlVtYWtlZmlsZS5hbTogQWRkIEdPd25QdHJHdGsue2NwcCxofSB0byB0aGUgc291cmNl
cyBsaXN0LgoqIHBsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oOgooV2ViQ29yZTo6UGxhdGZv
cm1Nb3VzZUV2ZW50OjpzZXRDbGlja0NvdW50KTogQWRkZWQuCiogcGxhdGZvcm0vZ3RrL0dPd25Q
dHJHdGsuY3BwOiBBZGRlZC4KKFdURjo6R2RrRXZlbnQpOgoqIHBsYXRmb3JtL2d0ay9HT3duUHRy
R3RrLmg6IEFkZGVkLgoKV2ViS2l0L2d0azoKCkhhbmRsZSBjbGljayBjb3VudGluZyBtdWNoIGxp
a2UgdGhlIFdpbmRvd3MgcG9ydC4gR1RLKyBvbmx5CmNvdW50cyB0cmlwbGUtY2xpY2tzIG5hdGl2
ZWx5LCBzbyB1c2UgR1RLKyBkb3VibGUtY2xpY2sgc2V0dGluZ3MKdG8gY291bnQgY2xpY2tzIHdp
dGggZXZlbiBsYXJnZXIgY2xpY2sgY291bnRzLiBBbHNvIGZpbHRlciB0aGUKZXh0cmEgR0RLX0JV
VFRPTl9QUkVTUyBiZWZvcmUgR0RLX3syLDN9QlVUVE9OX1BSRVNTIGV2ZW50cyB1c2luZwpnZGtf
ZXZlbnRfcGVlaygpLgoKKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6Cih3ZWJraXRfd2ViX3Zp
ZXdfYnV0dG9uX3ByZXNzX2V2ZW50KTogQ291bnQgY2xpY2tzIG1hbnVhbGx5LiBGaWx0ZXIgZXh0
cmEgZXZlbnRzLgoKV2ViS2l0VG9vbHM6CgpXZWJLaXQgbm93IGZpbHRlcnMgdGhlIGV4dHJhIEdE
S19CVVRUT05fUFJFU1MgYmVmb3JlIEdES18yQlVUVE9OX1BSRVNTCmFuZCBHREtfM0JVVFRPTl9Q
UkVTUyB2aWEgZ2RrX2V2ZW50X3BlZWsoKS4gU2luY2UgRXZlbnRTZW5kZXIgYnlwYXNzZXMKdGhl
IEdESyBldmVudCBxdWV1ZSBlbnRpcmVseSwgd2Ugc2ltcGx5IGRvIG5vdCBzZW5kIHRoZSBleHRy
YSBldmVudC4KCiogRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcDoKKG1vdXNlRG93
bkNhbGxiYWNrKTogRG8gbm90IHNlbmQgZXh0cmEgZXZlbnQuIFNlbmQgR0RLXzNCVVRUT05fUFJF
U1MgYXBwcm9wcmlhdGVseS4KKGRpc3BhdGNoRXZlbnQpOiBQcm9wZXJseSBoYW5kbGUgR0RLXzNC
VVRUT05fUFJFU1MuCgpMYXlvdXRUZXN0czoKCiogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6IFVuc2tp
cCBwYXNzaW5nIHRlc3RzLgoqIHBsYXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVjdGlvbi81MDU3NTA2
LTItZXhwZWN0ZWQudHh0OiBSZWJhc2VsaW5lIHRoaXMgdGVzdCwgYXMgaXQncyBjb3JyZWN0IG5v
dy4KLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTAgKysrKwogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgICAgICAgICAg
ICAgICAgICAgfCAgICAyIC0KIC4uLi9ndGsvZWRpdGluZy9zZWxlY3Rpb24vNTA1NzUwNi0yLWV4
cGVjdGVkLnR4dCAgIHwgICAgMyArLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDE3ICsrKysrKysrCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFt
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybU1vdXNlRXZlbnQuaCAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvcGxhdGZv
cm0vZ3RrL0dPd25QdHJHdGsuY3BwICAgICAgICAgICAgICAgIHwgICAzMyArKysrKysrKysrKysr
KysKIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuaCAgICAgICAgICAgICAgICAgIHwg
ICAzMyArKysrKysrKysrKysrKysKIFdlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxNiArKysrKysrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcCAgICAgICAgICAgICAgICB8ICAgNDQgKysrKysrKysrKysrKysrKysrKy0KIFdl
YktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNSAr
KysrKysrCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwICAg
ICB8ICAgMjcgKysrKysrKystLS0tCiAxMiBmaWxlcyBjaGFuZ2VkLCAxOTAgaW5zZXJ0aW9ucygr
KSwgMTMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR093blB0ckd0ay5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL2d0
ay9HT3duUHRyR3RrLmgKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2FhNTU4Yy4uYjc5ZWY4OSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDEwLTA1LTEyICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RL
XSBEb3VibGUgY2xpY2tzIGNhdXNlIHRocmVlIGJ1dHRvbiBwcmVzcyBldmVudHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODUzCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDogVW5za2lwIHBhc3NpbmcgdGVzdHMuCisgICAgICAgICog
cGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uLzUwNTc1MDYtMi1leHBlY3RlZC50eHQ6IFJl
YmFzZWxpbmUgdGhpcyB0ZXN0LCBhcyBpdCdzIGNvcnJlY3Qgbm93LgorCiAyMDEwLTA1LTEwICBE
aXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggNWIwMGI3MS4uMjU4ZThlOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQKQEAgLTEzMjgsMTEgKzEzMjgsOSBAQCBmYXN0L2V2ZW50cy9hdXRvc2Ny
b2xsLWluLXRleHRmaWVsZC5odG1sCiBmYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLW5vbnNjcm9sbGFi
bGUtaWZyYW1lLWluLXNjcm9sbGFibGUtZGl2Lmh0bWwKIGZhc3QvZXZlbnRzL2F1dG9zY3JvbGwt
d2l0aC1ub24tc2Nyb2xsYWJsZS1wYXJlbnQuaHRtbAogZmFzdC9ldmVudHMvYmx1ci1mb2N1cy13
aW5kb3ctc2hvdWxkLWJsdXItZm9jdXMtZWxlbWVudC5odG1sCi1mYXN0L2V2ZW50cy9jbGljay1j
b3VudC5odG1sCiBmYXN0L2V2ZW50cy9jb250ZW50LWNoYW5nZWQtZHVyaW5nLWRyb3AuaHRtbAog
ZmFzdC9ldmVudHMvY29udGV4dC1vbm1vdXNlZG93bi1ldmVudC5odG1sCiBmYXN0L2V2ZW50cy9j
cmFzaC1vbi1tdXRhdGUtZHVyaW5nLWRyb3AuaHRtbAotZmFzdC9ldmVudHMvZGJsY2xpY2stYWRk
RXZlbnRMaXN0ZW5lci5odG1sCiBmYXN0L2V2ZW50cy9kcmFnLWluLWZyYW1lcy5odG1sCiBmYXN0
L2V2ZW50cy9mcmFtZS10YWItZm9jdXMuaHRtbAogZmFzdC9ldmVudHMvanMta2V5Ym9hcmQtZXZl
bnQtY3JlYXRpb24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Vk
aXRpbmcvc2VsZWN0aW9uLzUwNTc1MDYtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZWRpdGluZy9zZWxlY3Rpb24vNTA1NzUwNi0yLWV4cGVjdGVkLnR4dAppbmRleCAz
ZDE3ZDFhLi4wMzZkODcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZWRp
dGluZy9zZWxlY3Rpb24vNTA1NzUwNi0yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvZWRpdGluZy9zZWxlY3Rpb24vNTA1NzUwNi0yLWV4cGVjdGVkLnR4dApAQCAt
MjYsNCArMjYsNSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMzApIHNpemUgNzg0eDIwCiAgICAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMjB4MjAKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDIwOiAiYmFyIgotY2FyZXQ6IHBvc2l0aW9uIDMgb2YgY2hpbGQgMCB7I3RleHR9IG9m
IGNoaWxkIDAge1NQQU59IG9mIGNoaWxkIDAge1REfSBvZiBjaGlsZCAwIHtUUn0gb2YgY2hpbGQg
MCB7VEJPRFl9IG9mIGNoaWxkIDEge1RBQkxFfSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEg
e0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CitzZWxlY3Rpb24gc3RhcnQ6IHBv
c2l0aW9uIDAgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge1NQQU59IG9mIGNoaWxkIDAg
e1REfSBvZiBjaGlsZCAwIHtUUn0gb2YgY2hpbGQgMCB7VEJPRFl9IG9mIGNoaWxkIDEge1RBQkxF
fSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9m
IGRvY3VtZW50CitzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDAgb2YgY2hpbGQgMyB7RElWfSBv
ZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRv
Y3VtZW50CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGE5YzU0NmMuLjA4YzhhMTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDUtMTIgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIERvdWJsZSBjbGlja3MgY2F1c2UgdGhy
ZWUgYnV0dG9uIHByZXNzIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKKworICAgICAgICBBZGQgR093blB0ciB3cmFwcGVyIGZvciBH
ZGtFdmVudCBhbmQgZXhwb3NlIGEgc2V0dGVyIGZvcgorICAgICAgICBQbGF0Zm9ybU1vdXNlRXZl
bnQ6Om1fY2xpY2tDb3VudC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgR093blB0
ckd0ay57Y3BwLGh9IHRvIHRoZSBzb3VyY2VzIGxpc3QuCisgICAgICAgICogcGxhdGZvcm0vUGxh
dGZvcm1Nb3VzZUV2ZW50Lmg6IAorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50
OjpzZXRDbGlja0NvdW50KTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0dPd25QdHJH
dGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6R2RrRXZlbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9HT3duUHRyR3RrLmg6IEFkZGVkLgorCiAyMDEwLTA1LTEwICBEaXJrIFNjaHVsemUg
IDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJt
YW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KaW5kZXggNzQ5OGJhYi4uZWM2ZmRjNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yMTAwLDYgKzIxMDAs
OCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0V2ZW50
TG9vcEd0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVDaG9vc2VyR3RrLmNwcCBc
CiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgXAorCVdlYkNvcmUvcGxh
dGZvcm0vZ3RrL0dPd25QdHJHdGsuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRy
R3RrLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwIFwKIAlXZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1Bs
dWdpbldpZGdldC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1v
dXNlRXZlbnQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgKaW5kZXgg
NTEyMTk5NS4uYmUyNTk3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1v
dXNlRXZlbnQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oCkBA
IC0xMjIsNiArMTIyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKEdUSykg
CiAgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChHZGtFdmVudEJ1dHRvbiopOwogICAgICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQoR2RrRXZlbnRNb3Rpb24qKTsKKyAgICAgICAgdm9pZCBzZXRDbGlj
a0NvdW50KGludCBjb3VudCkgeyBtX2NsaWNrQ291bnQgPSBjb3VudDsgfQogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShFRkwpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRy
R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NThmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmNwcApAQCAtMCwwICsxLDMzIEBACisvKgorICog
IENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdPd25QdHJHdGsuaCIKKwor
I2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8R2RrRXZlbnQ+KEdka0V2ZW50KiBw
dHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ2RrX2V2ZW50X2ZyZWUocHRyKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR093blB0ckd0ay5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR093blB0ckd0ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjY3NGVhNTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
T3duUHRyR3RrLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAg
SWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBHT3duUHRyR3RrX2gKKyNkZWZpbmUgR093
blB0ckd0a19oCisKKyNpbmNsdWRlICJHT3duUHRyLmgiCisKK3R5cGVkZWYgdW5pb24gX0dka0V2
ZW50IEdka0V2ZW50OworCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiB2b2lkIGZyZWVP
d25lZEdQdHI8R2RrRXZlbnQ+KEdka0V2ZW50Kik7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDI0Yzcw
MjMuLjFlMmZhMzkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDUtMTIgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIERvdWJsZSBjbGlja3MgY2F1c2UgdGhyZWUgYnV0
dG9uIHByZXNzIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mzg4NTMKKworICAgICAgICBIYW5kbGUgY2xpY2sgY291bnRpbmcgbXVjaCBsaWtl
IHRoZSBXaW5kb3dzIHBvcnQuIEdUSysgb25seQorICAgICAgICBjb3VudHMgdHJpcGxlLWNsaWNr
cyBuYXRpdmVseSwgc28gdXNlIEdUSysgZG91YmxlLWNsaWNrIHNldHRpbmdzCisgICAgICAgIHRv
IGNvdW50IGNsaWNrcyB3aXRoIGV2ZW4gbGFyZ2VyIGNsaWNrIGNvdW50cy4gQWxzbyBmaWx0ZXIg
dGhlCisgICAgICAgIGV4dHJhIEdES19CVVRUT05fUFJFU1MgYmVmb3JlIEdES197MiwzfUJVVFRP
Tl9QUkVTUyBldmVudHMgdXNpbmcKKyAgICAgICAgZ2RrX2V2ZW50X3BlZWsoKS4KKworICAgICAg
ICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19i
dXR0b25fcHJlc3NfZXZlbnQpOiBDb3VudCBjbGlja3MgbWFudWFsbHkuIEZpbHRlciBleHRyYSBl
dmVudHMuCisKIDIwMTAtMDUtMDYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKaW5kZXggMTBhMDgyYy4uZGQ2YTAyNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNp
bmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPEdPd25QdHIuaD4KKyNpbmNsdWRl
IDxHT3duUHRyR3RrLmg+CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
R3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCkBAIC01ODcsMTEg
KzU4OCw1MSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2tleV9yZWxlYXNlX2V2
ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2J1dHRvbl9wcmVzc19ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZl
bnRCdXR0b24qIGV2ZW50KQogeworICAgIC8vIEV2ZW50dWFsbHkgaXQgbWF5IG1ha2Ugc2Vuc2Ug
Zm9yIHRoZXNlIHRvIGJlIHBlci12aWV3IGFuZCBwZXItZGV2aWNlLAorICAgIC8vIGJ1dCBhdCB0
aGlzIHRpbWUgdGhlIGltcGxlbWVudGF0aW9uIG1hdGNoZXMgdGhlIFdpbmRvd3MgcG9ydC4KKyAg
ICBzdGF0aWMgaW50IGN1cnJlbnRDbGlja0NvdW50ID0gMTsKKyAgICBzdGF0aWMgSW50UG9pbnQg
cHJldmlvdXNQb2ludDsKKyAgICBzdGF0aWMgZ3VpbnQgcHJldmlvdXNCdXR0b247CisgICAgc3Rh
dGljIGd1aW50MzIgcHJldmlvdXNUaW1lOworCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyh3aWRnZXQpOwogCiAgICAgLy8gRklYTUU6IG5lZWQgdG8ga2VlcCB0
cmFjayBvZiBzdWJmcmFtZSBmb2N1cyBmb3Iga2V5IGV2ZW50cwogICAgIGd0a193aWRnZXRfZ3Jh
Yl9mb2N1cyh3aWRnZXQpOwogCisgICAgLy8gRm9yIGRvdWJsZSBhbmQgdHJpcGxlIGNsaWNrcyBH
REsgc2VuZHMgYm90aCBhIG5vcm1hbCBidXR0b24gcHJlc3MgZXZlbnQKKyAgICAvLyBhbmQgYSBz
cGVjaWZpYyB0eXBlIChsaWtlIEdES18yQlVUVE9OX1BSRVNTKS4gSWYgd2UgZGV0ZWN0IGEgc3Bl
Y2lhbCBwcmVzcworICAgIC8vIGNvbWluZyB1cCwgaWdub3JlIHRoaXMgZXZlbnQgYXMgaXQgY2Vy
dGFpbmx5IGdlbmVyYXRlZCB0aGUgZG91YmxlIG9yIHRyaXBsZQorICAgIC8vIGNsaWNrLiBUaGUg
Y29uc2VxdWVuY2Ugb2Ygbm90IGVhdGluZyB0aGlzIGV2ZW50IGlzIHR3byBET00gYnV0dG9uIHBy
ZXNzIGV2ZW50cworICAgIC8vIGFyZSBnZW5lcmF0ZWQuCisgICAgR093blB0cjxHZGtFdmVudD4g
bmV4dEV2ZW50KGdka19ldmVudF9wZWVrKCkpOworICAgIGlmIChuZXh0RXZlbnQgJiYgKG5leHRF
dmVudC0+YW55LnR5cGUgPT0gR0RLXzJCVVRUT05fUFJFU1MgfHwgbmV4dEV2ZW50LT5hbnkudHlw
ZSA9PSBHREtfM0JVVFRPTl9QUkVTUykpCisgICAgICAgIHJldHVybiBUUlVFOworCisgICAgc3Rh
dGljIGdpbnQgZG91YmxlQ2xpY2tEaXN0YW5jZSA9IDA7CisgICAgc3RhdGljIGdpbnQgZG91Ymxl
Q2xpY2tUaW1lID0gMDsKKyAgICBpZiAoIWRvdWJsZUNsaWNrRGlzdGFuY2UpIHsKKyAgICAgICAg
R3RrU2V0dGluZ3MqIHNldHRpbmdzID0gZ3RrX3NldHRpbmdzX2dldF9mb3Jfc2NyZWVuKGdka19k
cmF3YWJsZV9nZXRfc2NyZWVuKHdpZGdldC0+d2luZG93KSk7CisgICAgICAgIGdfb2JqZWN0X2dl
dChzZXR0aW5ncywgImd0ay1kb3VibGUtY2xpY2stZGlzdGFuY2UiLCAmZG91YmxlQ2xpY2tEaXN0
YW5jZSwgTlVMTCk7CisgICAgICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImd0ay1kb3VibGUt
Y2xpY2stdGltZSIsICZkb3VibGVDbGlja1RpbWUsIE5VTEwpOworICAgIH0KKworICAgIFBsYXRm
b3JtTW91c2VFdmVudCBwbGF0Zm9ybUV2ZW50KGV2ZW50KTsKKworICAgIGlmICgoZXZlbnQtPnR5
cGUgPT0gR0RLXzJCVVRUT05fUFJFU1MgfHwgZXZlbnQtPnR5cGUgPT0gR0RLXzNCVVRUT05fUFJF
U1MpCisgICAgICAgIHx8ICgoYWJzKGV2ZW50LT54IC0gcHJldmlvdXNQb2ludC54KCkpIDwgZG91
YmxlQ2xpY2tEaXN0YW5jZSkKKyAgICAgICAgICAgICYmIChhYnMoZXZlbnQtPnkgLSBwcmV2aW91
c1BvaW50LnkoKSkgPCBkb3VibGVDbGlja0Rpc3RhbmNlKQorICAgICAgICAgICAgJiYgKGV2ZW50
LT50aW1lIC0gcHJldmlvdXNUaW1lIDwgc3RhdGljX2Nhc3Q8Z3VpbnQ+KGRvdWJsZUNsaWNrVGlt
ZSkpCisgICAgICAgICAgICAmJiAoZXZlbnQtPmJ1dHRvbiA9PSBwcmV2aW91c0J1dHRvbikpKQor
ICAgICAgICBjdXJyZW50Q2xpY2tDb3VudCsrOworICAgIGVsc2UKKyAgICAgICAgY3VycmVudENs
aWNrQ291bnQgPSAxOworCisgICAgcGxhdGZvcm1FdmVudC5zZXRDbGlja0NvdW50KGN1cnJlbnRD
bGlja0NvdW50KTsKKyAgICBwcmV2aW91c1BvaW50ID0gcGxhdGZvcm1FdmVudC5wb3MoKTsKKyAg
ICBwcmV2aW91c0J1dHRvbiA9IGV2ZW50LT5idXR0b247CisgICAgcHJldmlvdXNUaW1lID0gZXZl
bnQtPnRpbWU7CisKICAgICBpZiAoZXZlbnQtPmJ1dHRvbiA9PSAzKQogICAgICAgICByZXR1cm4g
d2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KHdlYlZpZXcsIFBsYXRm
b3JtTW91c2VFdmVudChldmVudCkpOwogCkBAIC01OTksNyArNjQwLDggQEAgc3RhdGljIGdib29s
ZWFuIHdlYmtpdF93ZWJfdmlld19idXR0b25fcHJlc3NfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQs
IEdka0V2ZW50QnUKICAgICBpZiAoIWZyYW1lLT52aWV3KCkpCiAgICAgICAgIHJldHVybiBGQUxT
RTsKIAotICAgIGdib29sZWFuIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxl
TW91c2VQcmVzc0V2ZW50KFBsYXRmb3JtTW91c2VFdmVudChldmVudCkpOworCisgICAgZ2Jvb2xl
YW4gcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQo
cGxhdGZvcm1FdmVudCk7CiAKICNpZiBQTEFURk9STShYMTEpCiAgICAgLyogQ29weSBzZWxlY3Rp
b24gdG8gdGhlIFgxMSBzZWxlY3Rpb24gY2xpcGJvYXJkICovCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMzk1MzBlMi4uMzJk
OGM1NyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xz
L0NoYW5nZUxvZwpAQCAtNSw2ICs1LDIxIEBACiAgICAgICAgIFtHVEtdIERvdWJsZSBjbGlja3Mg
Y2F1c2UgdGhyZWUgYnV0dG9uIHByZXNzIGV2ZW50cwogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKIAorICAgICAgICBXZWJLaXQgbm93IGZpbHRl
cnMgdGhlIGV4dHJhIEdES19CVVRUT05fUFJFU1MgYmVmb3JlIEdES18yQlVUVE9OX1BSRVNTCisg
ICAgICAgIGFuZCBHREtfM0JVVFRPTl9QUkVTUyB2aWEgZ2RrX2V2ZW50X3BlZWsoKS4gU2luY2Ug
RXZlbnRTZW5kZXIgYnlwYXNzZXMKKyAgICAgICAgdGhlIEdESyBldmVudCBxdWV1ZSBlbnRpcmVs
eSwgd2Ugc2ltcGx5IGRvIG5vdCBzZW5kIHRoZSBleHRyYSBldmVudC4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChtb3VzZURvd25DYWxs
YmFjayk6IERvIG5vdCBzZW5kIGV4dHJhIGV2ZW50LiBTZW5kIEdES18zQlVUVE9OX1BSRVNTIGFw
cHJvcHJpYXRlbHkuCisgICAgICAgIChkaXNwYXRjaEV2ZW50KTogUHJvcGVybHkgaGFuZGxlIEdE
S18zQlVUVE9OX1BSRVNTLgorCisyMDEwLTA1LTEyICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbR1RLXSBEb3VibGUgY2xpY2tzIGNhdXNlIHRocmVlIGJ1dHRvbiBwcmVzcyBldmVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODUz
CisKICAgICAgICAgVGFrZSBpbnRvIGFjY291bnQgdGhlIHJlbGF0aXZlIHRpbWVPZmZzZXQgZnJv
bSBsZWFwRm93YXJkIGluIHRoZSBHVEsrIEV2ZW50U2VuZGVyLgogCiAgICAgICAgICogRHVtcFJl
bmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcDoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDdmOGIyNTUuLjhhMDQ4ZWQgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcApAQCAtMTgxLDcg
KzE4MSw3IEBAIHN0YXRpYyB2b2lkIGdldFJvb3RDb29yZHMoR3RrV2lkZ2V0KiB2aWV3LCBpbnQq
IHJvb3RYLCBpbnQqIHJvb3RZKQogc3RhdGljIEpTVmFsdWVSZWYgbW91c2VEb3duQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogCi0gICAgaW50IGJ1dHRvbiA9IDE7Cisg
ICAgaW50IGJ1dHRvbiA9IDA7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkgewogICAgICAg
ICBidXR0b24gPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1
bWVudHNbMF0sIGV4Y2VwdGlvbikpICsgMTsKICAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
KCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pLCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KSk7CkBAIC0xOTEsMTYgKzE5MSwyNSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZURvd25DYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sCiAgICAgaWYg
KCFwcmVwYXJlTW91c2VCdXR0b25FdmVudCgmZXZlbnQsIGJ1dHRvbikpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIGV2ZW50LnR5cGUgPSBHREtf
QlVUVE9OX1BSRVNTOwotICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOworICAgIGJ1dHRvbkN1
cnJlbnRseURvd24gPSBldmVudC5idXR0b24uYnV0dG9uOwogCisgICAgLy8gTm9ybWFsbHkgR0RL
IHdpbGwgc2VuZCBib3RoIEdES19CVVRUT05fUFJFU1MgYW5kIEdES18yQlVUVE9OX1BSRVNTIGZv
cgorICAgIC8vIHRoZSBzZWNvbmQgYnV0dG9uIHByZXNzIGR1cmluZyBkb3VibGUtY2xpY2tzLiBX
ZWJLaXQgR1RLKyBzZWxlY3RpdmVseQorICAgIC8vIGlnbm9yZXMgdGhlIGZpcnN0IEdES19CVVRU
T05fUFJFU1Mgb2YgdGhhdCBwYWlyIHVzaW5nIGdka19ldmVudF9wZWVrLgorICAgIC8vIFNpbmNl
IG91ciBldmVudHMgYXJlbid0IGV2ZXIgZ29pbmcgb250byB0aGUgR0RLIGV2ZW50IHF1ZXVlLCBX
ZWJLaXQgd29uJ3QKKyAgICAvLyBiZSBhYmxlIHRvIGZpbHRlciBvdXQgdGhlIGZpcnN0IEdES19C
VVRUT05fUFJFU1MsIHNvIHdlIGp1c3QgZG9uJ3Qgc2VuZAorICAgIC8vIGl0IGhlcmUuIEV2ZW50
dWFsbHkgdGhpcyBjb2RlIHNob3VsZCBwcm9iYWJseSBmaWd1cmUgb3V0IGEgd2F5IHRvIGdldCBh
bGwKKyAgICAvLyBhcHByb3ByaWF0ZSBldmVudHMgb250byB0aGUgZXZlbnQgcXVldWUgYW5kIHRo
aXMgd29yay1hcm91bmQgc2hvdWxkIGJlCisgICAgLy8gcmVtb3ZlZC4KICAgICB1cGRhdGVDbGlj
a0NvdW50KGV2ZW50LmJ1dHRvbi5idXR0b24pOwotICAgIGlmIChjbGlja0NvdW50ID09IDIpIHsK
KyAgICBpZiAoY2xpY2tDb3VudCA9PSAyKQogICAgICAgICBldmVudC50eXBlID0gR0RLXzJCVVRU
T05fUFJFU1M7Ci0gICAgICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwotICAgIH0KKyAgICBl
bHNlIGlmIChjbGlja0NvdW50ID09IDMpCisgICAgICAgIGV2ZW50LnR5cGUgPSBHREtfM0JVVFRP
Tl9QUkVTUzsKKyAgICBlbHNlCisgICAgICAgIGV2ZW50LnR5cGUgPSBHREtfQlVUVE9OX1BSRVNT
OwogCi0gICAgYnV0dG9uQ3VycmVudGx5RG93biA9IGV2ZW50LmJ1dHRvbi5idXR0b247CisgICAg
c2VuZE9yUXVldWVFdmVudChldmVudCk7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogfQogCkBAIC0yMTcsNyArMjI2LDcgQEAgc3RhdGljIGd1aW50IGdldFN0YXRl
RmxhZ3MoKQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZVVwQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQogewotICAgIGludCBidXR0b24gPSAxOworICAgIGludCBidXR0b24g
PSAwOwogICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpIHsKICAgICAgICAgYnV0dG9uID0gc3Rh
dGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNl
cHRpb24pKSArIDE7CiAgICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCghZXhjZXB0aW9uIHx8
ICEqZXhjZXB0aW9uKSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwpAQCAtMzQ0LDcg
KzM1Myw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnQoR2RrRXZlbnQgZXZlbnQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGdib29sZWFuIHJldHVyblZhbHVlOwotICAgIGlmIChldmVudC50
eXBlID09IEdES19CVVRUT05fUFJFU1MgfHwgZXZlbnQudHlwZSA9PSBHREtfMkJVVFRPTl9QUkVT
UykKKyAgICBpZiAoZXZlbnQudHlwZSA9PSBHREtfQlVUVE9OX1BSRVNTIHx8IGV2ZW50LnR5cGUg
PT0gR0RLXzJCVVRUT05fUFJFU1MgfHwgZXZlbnQudHlwZSA9PSBHREtfM0JVVFRPTl9QUkVTUykK
ICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25fcHJlc3NfZXZlbnQi
LCAmZXZlbnQsICZyZXR1cm5WYWx1ZSk7CiAgICAgZWxzZSBpZiAoZXZlbnQudHlwZSA9PSBHREtf
QlVUVE9OX1JFTEVBU0UpCiAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0
dG9uX3JlbGVhc2VfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5WYWx1ZSk7Ci0tIAoxLjYuMy4zCgo=
</data>
<flag name="commit-queue"
          id="40247"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56076</attachid>
            <date>2010-05-14 09:07:51 -0700</date>
            <delta_ts>2010-06-01 10:31:21 -0700</delta_ts>
            <desc>Send the proper mouse events during clicking (update)</desc>
            <filename>0001-GTK-Double-clicks-cause-three-button-press-events.patch</filename>
            <type>text/plain</type>
            <size>16539</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSAzOTI5ZjM2ZTNhYzA2NjI1Yjc3ZDI4NDBhMjE3MzA5MGYzYWMzOGQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDEyIE1heSAyMDEwIDIwOjM0OjEwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
W0dUS10gRG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRzCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKClJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKV2ViQ29yZToKCkFkZCBHT3duUHRyIHdyYXBwZXIgZm9yIEdka0V2ZW50
IGFuZCBleHBvc2UgYSBzZXR0ZXIgZm9yClBsYXRmb3JtTW91c2VFdmVudDo6bV9jbGlja0NvdW50
LgoKKiBHTlVtYWtlZmlsZS5hbTogQWRkIEdPd25QdHJHdGsue2NwcCxofSB0byB0aGUgc291cmNl
cyBsaXN0LgoqIHBsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oOgooV2ViQ29yZTo6UGxhdGZv
cm1Nb3VzZUV2ZW50OjpzZXRDbGlja0NvdW50KTogQWRkZWQuCiogcGxhdGZvcm0vZ3RrL0dPd25Q
dHJHdGsuY3BwOiBBZGRlZC4KKFdURjo6R2RrRXZlbnQpOgoqIHBsYXRmb3JtL2d0ay9HT3duUHRy
R3RrLmg6IEFkZGVkLgoKV2ViS2l0L2d0azoKCkhhbmRsZSBjbGljayBjb3VudGluZyBtdWNoIGxp
a2UgdGhlIFdpbmRvd3MgcG9ydC4gR1RLKyBvbmx5CmNvdW50cyB0cmlwbGUtY2xpY2tzIG5hdGl2
ZWx5LCBzbyB1c2UgR1RLKyBkb3VibGUtY2xpY2sgc2V0dGluZ3MKdG8gY291bnQgY2xpY2tzIHdp
dGggZXZlbiBsYXJnZXIgY2xpY2sgY291bnRzLiBBbHNvIGZpbHRlciB0aGUKZXh0cmEgR0RLX0JV
VFRPTl9QUkVTUyBiZWZvcmUgR0RLX3syLDN9QlVUVE9OX1BSRVNTIGV2ZW50cyB1c2luZwpnZGtf
ZXZlbnRfcGVlaygpLgoKKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6Cih3ZWJraXRfd2ViX3Zp
ZXdfYnV0dG9uX3ByZXNzX2V2ZW50KTogQ291bnQgY2xpY2tzIG1hbnVhbGx5LiBGaWx0ZXIgZXh0
cmEgZXZlbnRzLgoKV2ViS2l0VG9vbHM6CgpXZWJLaXQgbm93IGZpbHRlcnMgdGhlIGV4dHJhIEdE
S19CVVRUT05fUFJFU1MgYmVmb3JlIEdES18yQlVUVE9OX1BSRVNTCmFuZCBHREtfM0JVVFRPTl9Q
UkVTUyB2aWEgZ2RrX2V2ZW50X3BlZWsoKS4gU2luY2UgRXZlbnRTZW5kZXIgYnlwYXNzZXMKdGhl
IEdESyBldmVudCBxdWV1ZSBlbnRpcmVseSwgd2Ugc2ltcGx5IGRvIG5vdCBzZW5kIHRoZSBleHRy
YSBldmVudC4KCiogRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcDoKKG1vdXNlRG93
bkNhbGxiYWNrKTogRG8gbm90IHNlbmQgZXh0cmEgZXZlbnQuIFNlbmQgR0RLXzNCVVRUT05fUFJF
U1MgYXBwcm9wcmlhdGVseS4KKGRpc3BhdGNoRXZlbnQpOiBQcm9wZXJseSBoYW5kbGUgR0RLXzNC
VVRUT05fUFJFU1MuCgpMYXlvdXRUZXN0czoKCiogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6IFVuc2tp
cCBwYXNzaW5nIHRlc3RzLgoqIHBsYXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVjdGlvbi81MDU3NTA2
LTItZXhwZWN0ZWQudHh0OiBSZWJhc2VsaW5lIHRoaXMgdGVzdCwgYXMgaXQncyBjb3JyZWN0IG5v
dy4KLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTAgKysrKwogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgICAgICAgICAg
ICAgICAgICAgfCAgICAyIC0KIC4uLi9ndGsvZWRpdGluZy9zZWxlY3Rpb24vNTA1NzUwNi0yLWV4
cGVjdGVkLnR4dCAgIHwgICAgMyArLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDE3ICsrKysrKysrCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFt
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybU1vdXNlRXZlbnQuaCAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvcGxhdGZv
cm0vZ3RrL0dPd25QdHJHdGsuY3BwICAgICAgICAgICAgICAgIHwgICAzMyArKysrKysrKysrKysr
KysKIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuaCAgICAgICAgICAgICAgICAgIHwg
ICAzMyArKysrKysrKysrKysrKysKIFdlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxNiArKysrKysrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcCAgICAgICAgICAgICAgICB8ICAgNDQgKysrKysrKysrKysrKysrKysrKy0KIFdl
YktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNSAr
KysrKysrCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwICAg
ICB8ICAgMjMgKysrKysrKy0tLQogMTIgZmlsZXMgY2hhbmdlZCwgMTg4IGluc2VydGlvbnMoKyks
IDExIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0dPd25QdHJHdGsuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R093blB0ckd0ay5oCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNhYTU1OGMuLmI3OWVmODkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMC0wNS0xMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10g
RG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODg1MworCisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1NraXBwZWQ6IFVuc2tpcCBwYXNzaW5nIHRlc3RzLgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVjdGlvbi81MDU3NTA2LTItZXhwZWN0ZWQudHh0OiBSZWJh
c2VsaW5lIHRoaXMgdGVzdCwgYXMgaXQncyBjb3JyZWN0IG5vdy4KKwogMjAxMC0wNS0xMCAgRGly
ayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDViMDBiNzEuLjI1OGU4ZTggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkCkBAIC0xMzI4LDExICsxMzI4LDkgQEAgZmFzdC9ldmVudHMvYXV0b3Njcm9s
bC1pbi10ZXh0ZmllbGQuaHRtbAogZmFzdC9ldmVudHMvYXV0b3Njcm9sbC1ub25zY3JvbGxhYmxl
LWlmcmFtZS1pbi1zY3JvbGxhYmxlLWRpdi5odG1sCiBmYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLXdp
dGgtbm9uLXNjcm9sbGFibGUtcGFyZW50Lmh0bWwKIGZhc3QvZXZlbnRzL2JsdXItZm9jdXMtd2lu
ZG93LXNob3VsZC1ibHVyLWZvY3VzLWVsZW1lbnQuaHRtbAotZmFzdC9ldmVudHMvY2xpY2stY291
bnQuaHRtbAogZmFzdC9ldmVudHMvY29udGVudC1jaGFuZ2VkLWR1cmluZy1kcm9wLmh0bWwKIGZh
c3QvZXZlbnRzL2NvbnRleHQtb25tb3VzZWRvd24tZXZlbnQuaHRtbAogZmFzdC9ldmVudHMvY3Jh
c2gtb24tbXV0YXRlLWR1cmluZy1kcm9wLmh0bWwKLWZhc3QvZXZlbnRzL2RibGNsaWNrLWFkZEV2
ZW50TGlzdGVuZXIuaHRtbAogZmFzdC9ldmVudHMvZHJhZy1pbi1mcmFtZXMuaHRtbAogZmFzdC9l
dmVudHMvZnJhbWUtdGFiLWZvY3VzLmh0bWwKIGZhc3QvZXZlbnRzL2pzLWtleWJvYXJkLWV2ZW50
LWNyZWF0aW9uLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9lZGl0
aW5nL3NlbGVjdGlvbi81MDU3NTA2LTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uLzUwNTc1MDYtMi1leHBlY3RlZC50eHQKaW5kZXggM2Qx
N2QxYS4uMDM2ZDg3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2VkaXRp
bmcvc2VsZWN0aW9uLzUwNTc1MDYtMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uLzUwNTc1MDYtMi1leHBlY3RlZC50eHQKQEAgLTI2
LDQgKzI2LDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgwLDMwKSBzaXplIDc4NHgyMAogICAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDIweDIwCiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCAyMDogImJhciIKLWNhcmV0OiBwb3NpdGlvbiAzIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBj
aGlsZCAwIHtTUEFOfSBvZiBjaGlsZCAwIHtURH0gb2YgY2hpbGQgMCB7VFJ9IG9mIGNoaWxkIDAg
e1RCT0RZfSBvZiBjaGlsZCAxIHtUQUJMRX0gb2YgY2hpbGQgMiB7RElWfSBvZiBjaGlsZCAxIHtC
T0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAorc2VsZWN0aW9uIHN0YXJ0OiBwb3Np
dGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtTUEFOfSBvZiBjaGlsZCAwIHtU
RH0gb2YgY2hpbGQgMCB7VFJ9IG9mIGNoaWxkIDAge1RCT0RZfSBvZiBjaGlsZCAxIHtUQUJMRX0g
b2YgY2hpbGQgMiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBk
b2N1bWVudAorc2VsZWN0aW9uIGVuZDogICBwb3NpdGlvbiAwIG9mIGNoaWxkIDMge0RJVn0gb2Yg
Y2hpbGQgMiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1
bWVudApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBhOWM1NDZjLi4wOGM4YTE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA1LTEyICBNYXJ0aW4g
Um9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBEb3VibGUgY2xpY2tzIGNhdXNlIHRocmVl
IGJ1dHRvbiBwcmVzcyBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM4ODUzCisKKyAgICAgICAgQWRkIEdPd25QdHIgd3JhcHBlciBmb3IgR2Rr
RXZlbnQgYW5kIGV4cG9zZSBhIHNldHRlciBmb3IKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
OjptX2NsaWNrQ291bnQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIEdPd25QdHJH
dGsue2NwcCxofSB0byB0aGUgc291cmNlcyBsaXN0LgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRm
b3JtTW91c2VFdmVudC5oOiAKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudDo6
c2V0Q2xpY2tDb3VudCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HT3duUHRyR3Rr
LmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6Okdka0V2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvR093blB0ckd0ay5oOiBBZGRlZC4KKwogMjAxMC0wNS0xMCAgRGlyayBTY2h1bHplICA8
a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMgWmltbWVybWFu
bi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDc0OThiYWIuLmVjNmZkYzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjEwMCw2ICsyMTAwLDgg
QEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9FdmVudExv
b3BHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlQ2hvb3Nlckd0ay5jcHAgXAog
CVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwIFwKKwlXZWJDb3JlL3BsYXRm
b3JtL2d0ay9HT3duUHRyR3RrLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR093blB0ckd0
ay5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcCBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQbHVn
aW5XaWRnZXQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3Vz
ZUV2ZW50LmggYi9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oCmluZGV4IDUx
MjE5OTUuLmJlMjU5NzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3Vz
ZUV2ZW50LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaApAQCAt
MTIyLDYgKzEyMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShHVEspIAog
ICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQoR2RrRXZlbnRCdXR0b24qKTsKICAgICAgICAgUGxh
dGZvcm1Nb3VzZUV2ZW50KEdka0V2ZW50TW90aW9uKik7CisgICAgICAgIHZvaWQgc2V0Q2xpY2tD
b3VudChpbnQgY291bnQpIHsgbV9jbGlja0NvdW50ID0gY291bnQ7IH0KICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oRUZMKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR093blB0ckd0
ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTU4ZjMzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR093blB0ckd0ay5jcHAKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHT3duUHRyR3RrLmgiCisKKyNp
bmNsdWRlIDxnZGsvZ2RrLmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdka0V2ZW50PihHZGtFdmVudCogcHRy
KQoreworICAgIGlmIChwdHIpCisgICAgICAgIGdka19ldmVudF9mcmVlKHB0cik7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42NzRlYTU4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR093
blB0ckd0ay5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIEln
YWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgR093blB0ckd0a19oCisjZGVmaW5lIEdPd25Q
dHJHdGtfaAorCisjaW5jbHVkZSAiR093blB0ci5oIgorCit0eXBlZGVmIHVuaW9uIF9HZGtFdmVu
dCBHZGtFdmVudDsKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gdm9pZCBmcmVlT3du
ZWRHUHRyPEdka0V2ZW50PihHZGtFdmVudCopOworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAyNGM3MDIz
Li4xZTJmYTM5IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA1LTEyICBNYXJ0aW4gUm9iaW5z
b24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbR1RLXSBEb3VibGUgY2xpY2tzIGNhdXNlIHRocmVlIGJ1dHRv
biBwcmVzcyBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM4ODUzCisKKyAgICAgICAgSGFuZGxlIGNsaWNrIGNvdW50aW5nIG11Y2ggbGlrZSB0
aGUgV2luZG93cyBwb3J0LiBHVEsrIG9ubHkKKyAgICAgICAgY291bnRzIHRyaXBsZS1jbGlja3Mg
bmF0aXZlbHksIHNvIHVzZSBHVEsrIGRvdWJsZS1jbGljayBzZXR0aW5ncworICAgICAgICB0byBj
b3VudCBjbGlja3Mgd2l0aCBldmVuIGxhcmdlciBjbGljayBjb3VudHMuIEFsc28gZmlsdGVyIHRo
ZQorICAgICAgICBleHRyYSBHREtfQlVUVE9OX1BSRVNTIGJlZm9yZSBHREtfezIsM31CVVRUT05f
UFJFU1MgZXZlbnRzIHVzaW5nCisgICAgICAgIGdka19ldmVudF9wZWVrKCkuCisKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYnV0
dG9uX3ByZXNzX2V2ZW50KTogQ291bnQgY2xpY2tzIG1hbnVhbGx5LiBGaWx0ZXIgZXh0cmEgZXZl
bnRzLgorCiAyMDEwLTA1LTA2ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCmluZGV4IDEwYTA4MmMuLmRkNmEwMjcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDxHT3duUHRyLmg+CisjaW5jbHVkZSA8
R093blB0ckd0ay5oPgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkd0
a1ZlcnNpb25pbmcuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgpAQCAtNTg3LDExICs1
ODgsNTEgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19rZXlfcmVsZWFzZV9ldmVu
dChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRLZXkKIAogc3RhdGljIGdib29sZWFuIHdlYmtp
dF93ZWJfdmlld19idXR0b25fcHJlc3NfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50
QnV0dG9uKiBldmVudCkKIHsKKyAgICAvLyBFdmVudHVhbGx5IGl0IG1heSBtYWtlIHNlbnNlIGZv
ciB0aGVzZSB0byBiZSBwZXItdmlldyBhbmQgcGVyLWRldmljZSwKKyAgICAvLyBidXQgYXQgdGhp
cyB0aW1lIHRoZSBpbXBsZW1lbnRhdGlvbiBtYXRjaGVzIHRoZSBXaW5kb3dzIHBvcnQuCisgICAg
c3RhdGljIGludCBjdXJyZW50Q2xpY2tDb3VudCA9IDE7CisgICAgc3RhdGljIEludFBvaW50IHBy
ZXZpb3VzUG9pbnQ7CisgICAgc3RhdGljIGd1aW50IHByZXZpb3VzQnV0dG9uOworICAgIHN0YXRp
YyBndWludDMyIHByZXZpb3VzVGltZTsKKwogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBX
RUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKIAogICAgIC8vIEZJWE1FOiBuZWVkIHRvIGtlZXAgdHJh
Y2sgb2Ygc3ViZnJhbWUgZm9jdXMgZm9yIGtleSBldmVudHMKICAgICBndGtfd2lkZ2V0X2dyYWJf
Zm9jdXMod2lkZ2V0KTsKIAorICAgIC8vIEZvciBkb3VibGUgYW5kIHRyaXBsZSBjbGlja3MgR0RL
IHNlbmRzIGJvdGggYSBub3JtYWwgYnV0dG9uIHByZXNzIGV2ZW50CisgICAgLy8gYW5kIGEgc3Bl
Y2lmaWMgdHlwZSAobGlrZSBHREtfMkJVVFRPTl9QUkVTUykuIElmIHdlIGRldGVjdCBhIHNwZWNp
YWwgcHJlc3MKKyAgICAvLyBjb21pbmcgdXAsIGlnbm9yZSB0aGlzIGV2ZW50IGFzIGl0IGNlcnRh
aW5seSBnZW5lcmF0ZWQgdGhlIGRvdWJsZSBvciB0cmlwbGUKKyAgICAvLyBjbGljay4gVGhlIGNv
bnNlcXVlbmNlIG9mIG5vdCBlYXRpbmcgdGhpcyBldmVudCBpcyB0d28gRE9NIGJ1dHRvbiBwcmVz
cyBldmVudHMKKyAgICAvLyBhcmUgZ2VuZXJhdGVkLgorICAgIEdPd25QdHI8R2RrRXZlbnQ+IG5l
eHRFdmVudChnZGtfZXZlbnRfcGVlaygpKTsKKyAgICBpZiAobmV4dEV2ZW50ICYmIChuZXh0RXZl
bnQtPmFueS50eXBlID09IEdES18yQlVUVE9OX1BSRVNTIHx8IG5leHRFdmVudC0+YW55LnR5cGUg
PT0gR0RLXzNCVVRUT05fUFJFU1MpKQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIHN0YXRp
YyBnaW50IGRvdWJsZUNsaWNrRGlzdGFuY2UgPSAwOworICAgIHN0YXRpYyBnaW50IGRvdWJsZUNs
aWNrVGltZSA9IDA7CisgICAgaWYgKCFkb3VibGVDbGlja0Rpc3RhbmNlKSB7CisgICAgICAgIEd0
a1NldHRpbmdzKiBzZXR0aW5ncyA9IGd0a19zZXR0aW5nc19nZXRfZm9yX3NjcmVlbihnZGtfZHJh
d2FibGVfZ2V0X3NjcmVlbih3aWRnZXQtPndpbmRvdykpOworICAgICAgICBnX29iamVjdF9nZXQo
c2V0dGluZ3MsICJndGstZG91YmxlLWNsaWNrLWRpc3RhbmNlIiwgJmRvdWJsZUNsaWNrRGlzdGFu
Y2UsIE5VTEwpOworICAgICAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJndGstZG91YmxlLWNs
aWNrLXRpbWUiLCAmZG91YmxlQ2xpY2tUaW1lLCBOVUxMKTsKKyAgICB9CisKKyAgICBQbGF0Zm9y
bU1vdXNlRXZlbnQgcGxhdGZvcm1FdmVudChldmVudCk7CisKKyAgICBpZiAoKGV2ZW50LT50eXBl
ID09IEdES18yQlVUVE9OX1BSRVNTIHx8IGV2ZW50LT50eXBlID09IEdES18zQlVUVE9OX1BSRVNT
KQorICAgICAgICB8fCAoKGFicyhldmVudC0+eCAtIHByZXZpb3VzUG9pbnQueCgpKSA8IGRvdWJs
ZUNsaWNrRGlzdGFuY2UpCisgICAgICAgICAgICAmJiAoYWJzKGV2ZW50LT55IC0gcHJldmlvdXNQ
b2ludC55KCkpIDwgZG91YmxlQ2xpY2tEaXN0YW5jZSkKKyAgICAgICAgICAgICYmIChldmVudC0+
dGltZSAtIHByZXZpb3VzVGltZSA8IHN0YXRpY19jYXN0PGd1aW50Pihkb3VibGVDbGlja1RpbWUp
KQorICAgICAgICAgICAgJiYgKGV2ZW50LT5idXR0b24gPT0gcHJldmlvdXNCdXR0b24pKSkKKyAg
ICAgICAgY3VycmVudENsaWNrQ291bnQrKzsKKyAgICBlbHNlCisgICAgICAgIGN1cnJlbnRDbGlj
a0NvdW50ID0gMTsKKworICAgIHBsYXRmb3JtRXZlbnQuc2V0Q2xpY2tDb3VudChjdXJyZW50Q2xp
Y2tDb3VudCk7CisgICAgcHJldmlvdXNQb2ludCA9IHBsYXRmb3JtRXZlbnQucG9zKCk7CisgICAg
cHJldmlvdXNCdXR0b24gPSBldmVudC0+YnV0dG9uOworICAgIHByZXZpb3VzVGltZSA9IGV2ZW50
LT50aW1lOworCiAgICAgaWYgKGV2ZW50LT5idXR0b24gPT0gMykKICAgICAgICAgcmV0dXJuIHdl
YmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudCh3ZWJWaWV3LCBQbGF0Zm9y
bU1vdXNlRXZlbnQoZXZlbnQpKTsKIApAQCAtNTk5LDcgKzY0MCw4IEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfYnV0dG9uX3ByZXNzX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtFdmVudEJ1CiAgICAgaWYgKCFmcmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm4gRkFMU0U7
CiAKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1v
dXNlUHJlc3NFdmVudChQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQpKTsKKworICAgIGdib29sZWFu
IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KHBs
YXRmb3JtRXZlbnQpOwogCiAjaWYgUExBVEZPUk0oWDExKQogICAgIC8qIENvcHkgc2VsZWN0aW9u
IHRvIHRoZSBYMTEgc2VsZWN0aW9uIGNsaXBib2FyZCAqLwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM5NTMwZTIuLjMyZDhj
NTcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9D
aGFuZ2VMb2cKQEAgLTUsNiArNSwyMSBAQAogICAgICAgICBbR1RLXSBEb3VibGUgY2xpY2tzIGNh
dXNlIHRocmVlIGJ1dHRvbiBwcmVzcyBldmVudHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODUzCiAKKyAgICAgICAgV2ViS2l0IG5vdyBmaWx0ZXJz
IHRoZSBleHRyYSBHREtfQlVUVE9OX1BSRVNTIGJlZm9yZSBHREtfMkJVVFRPTl9QUkVTUworICAg
ICAgICBhbmQgR0RLXzNCVVRUT05fUFJFU1MgdmlhIGdka19ldmVudF9wZWVrKCkuIFNpbmNlIEV2
ZW50U2VuZGVyIGJ5cGFzc2VzCisgICAgICAgIHRoZSBHREsgZXZlbnQgcXVldWUgZW50aXJlbHks
IHdlIHNpbXBseSBkbyBub3Qgc2VuZCB0aGUgZXh0cmEgZXZlbnQuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAobW91c2VEb3duQ2FsbGJh
Y2spOiBEbyBub3Qgc2VuZCBleHRyYSBldmVudC4gU2VuZCBHREtfM0JVVFRPTl9QUkVTUyBhcHBy
b3ByaWF0ZWx5LgorICAgICAgICAoZGlzcGF0Y2hFdmVudCk6IFByb3Blcmx5IGhhbmRsZSBHREtf
M0JVVFRPTl9QUkVTUy4KKworMjAxMC0wNS0xMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0dUS10gRG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODg1Mwor
CiAgICAgICAgIFRha2UgaW50byBhY2NvdW50IHRoZSByZWxhdGl2ZSB0aW1lT2Zmc2V0IGZyb20g
bGVhcEZvd2FyZCBpbiB0aGUgR1RLKyBFdmVudFNlbmRlci4KIAogICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHA6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAppbmRleCA3ZjhiMjU1Li41ODJlMGEwIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKQEAgLTE5MSwxNiAr
MTkxLDI1IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlRG93bkNhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwKICAgICBpZiAoIXByZXBhcmVNb3VzZUJ1
dHRvbkV2ZW50KCZldmVudCwgYnV0dG9uKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogCi0gICAgZXZlbnQudHlwZSA9IEdES19CVVRUT05fUFJFU1M7Ci0g
ICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7CisgICAgYnV0dG9uQ3VycmVudGx5RG93biA9IGV2
ZW50LmJ1dHRvbi5idXR0b247CiAKKyAgICAvLyBOb3JtYWxseSBHREsgd2lsbCBzZW5kIGJvdGgg
R0RLX0JVVFRPTl9QUkVTUyBhbmQgR0RLXzJCVVRUT05fUFJFU1MgZm9yCisgICAgLy8gdGhlIHNl
Y29uZCBidXR0b24gcHJlc3MgZHVyaW5nIGRvdWJsZS1jbGlja3MuIFdlYktpdCBHVEsrIHNlbGVj
dGl2ZWx5CisgICAgLy8gaWdub3JlcyB0aGUgZmlyc3QgR0RLX0JVVFRPTl9QUkVTUyBvZiB0aGF0
IHBhaXIgdXNpbmcgZ2RrX2V2ZW50X3BlZWsuCisgICAgLy8gU2luY2Ugb3VyIGV2ZW50cyBhcmVu
J3QgZXZlciBnb2luZyBvbnRvIHRoZSBHREsgZXZlbnQgcXVldWUsIFdlYktpdCB3b24ndAorICAg
IC8vIGJlIGFibGUgdG8gZmlsdGVyIG91dCB0aGUgZmlyc3QgR0RLX0JVVFRPTl9QUkVTUywgc28g
d2UganVzdCBkb24ndCBzZW5kCisgICAgLy8gaXQgaGVyZS4gRXZlbnR1YWxseSB0aGlzIGNvZGUg
c2hvdWxkIHByb2JhYmx5IGZpZ3VyZSBvdXQgYSB3YXkgdG8gZ2V0IGFsbAorICAgIC8vIGFwcHJv
cHJpYXRlIGV2ZW50cyBvbnRvIHRoZSBldmVudCBxdWV1ZSBhbmQgdGhpcyB3b3JrLWFyb3VuZCBz
aG91bGQgYmUKKyAgICAvLyByZW1vdmVkLgogICAgIHVwZGF0ZUNsaWNrQ291bnQoZXZlbnQuYnV0
dG9uLmJ1dHRvbik7Ci0gICAgaWYgKGNsaWNrQ291bnQgPT0gMikgeworICAgIGlmIChjbGlja0Nv
dW50ID09IDIpCiAgICAgICAgIGV2ZW50LnR5cGUgPSBHREtfMkJVVFRPTl9QUkVTUzsKLSAgICAg
ICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7Ci0gICAgfQorICAgIGVsc2UgaWYgKGNsaWNrQ291
bnQgPT0gMykKKyAgICAgICAgZXZlbnQudHlwZSA9IEdES18zQlVUVE9OX1BSRVNTOworICAgIGVs
c2UKKyAgICAgICAgZXZlbnQudHlwZSA9IEdES19CVVRUT05fUFJFU1M7CiAKLSAgICBidXR0b25D
dXJyZW50bHlEb3duID0gZXZlbnQuYnV0dG9uLmJ1dHRvbjsKKyAgICBzZW5kT3JRdWV1ZUV2ZW50
KGV2ZW50KTsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAK
QEAgLTM0NCw3ICszNTMsNyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaEV2ZW50KEdka0V2ZW50IGV2
ZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKLSAgICBp
ZiAoZXZlbnQudHlwZSA9PSBHREtfQlVUVE9OX1BSRVNTIHx8IGV2ZW50LnR5cGUgPT0gR0RLXzJC
VVRUT05fUFJFU1MpCisgICAgaWYgKGV2ZW50LnR5cGUgPT0gR0RLX0JVVFRPTl9QUkVTUyB8fCBl
dmVudC50eXBlID09IEdES18yQlVUVE9OX1BSRVNTIHx8IGV2ZW50LnR5cGUgPT0gR0RLXzNCVVRU
T05fUFJFU1MpCiAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9uX3By
ZXNzX2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuVmFsdWUpOwogICAgIGVsc2UgaWYgKGV2ZW50LnR5
cGUgPT0gR0RLX0JVVFRPTl9SRUxFQVNFKQogICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUo
dmlldywgImJ1dHRvbl9yZWxlYXNlX2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuVmFsdWUpOwotLSAK
MS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56092</attachid>
            <date>2010-05-14 11:57:38 -0700</date>
            <delta_ts>2010-05-27 06:37:02 -0700</delta_ts>
            <desc>Combine two related patches</desc>
            <filename>0001-GTK-Double-clicks-cause-three-button-press-events.patch</filename>
            <type>text/plain</type>
            <size>20049</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBiZDc4MDhjN2U2MTJjMjc5NmM1ODc4NWJmZDVhYjE1NDNkNWZjYmJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDE0IE1heSAyMDEwIDExOjM1OjEwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
W0dUS10gRG91YmxlIGNsaWNrcyBjYXVzZSB0aHJlZSBidXR0b24gcHJlc3MgZXZlbnRzCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKClJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKQWRkIHJ1ZGltZW50YXJ5IGxlYXBGb3J3YXJkIHN1cHBvcnQgdG8gdGhl
IEdUSysgRFJULiBsZWFwRm9yd2FyZCBhbGxvd3MgYSB0ZXN0CnRvIHBhdXNlIGZvciBhIHNwZWNp
ZmllZCBhbW91bnQgb2YgdGltZS4gSXQgaXMgdXNlZCBpbiB0aGUgcHJvY2Vzc2luZyBvZiBkcmFn
LQotYW5kLWRyb3AgZGF0YSBhcyB3ZWxsIGFzIHRvIHNlcGFyYXRlIGRpc3RpbmN0IG1vdXNlIGRv
dWJsZS1jbGlja3MgaW4gc29tZSB0ZXN0cy4KVGhpcyBwYXRjaCBlbmFibGVzIHRlc3RzIHRoYXQg
cmVseSBvbiB0aGUgbGF0dGVyIGJlaGF2aW9yIHRvIHBhc3MuCgoqIER1bXBSZW5kZXJUcmVlL2d0
ay9EdW1wUmVuZGVyVHJlZS5jcHA6Cih3ZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZCk6IE9ubHkg
aW5pdGlhbGl6ZSB0aGUgRXZlbnRTZW5kZXIgd2hlbiBsb2FkaW5nIHRoZSB0b3AgZnJhbWUuCiog
RHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcDoKKGxlYXBGb3J3YXJkQ2FsbGJhY2sp
OiBBZGQgc3VwcG9ydCBmb3IgYWRqdXN0aW5nIHRoZSB0aW1lIG9mZnNldCBvbiBsZWFwRm9yd2Fy
ZCgpLgooY29udGV4dENsaWNrQ2FsbGJhY2spOiBVc2Ugc2VuZE9yUXVldWVFdmVudC4KKHVwZGF0
ZUNsaWNrQ291bnQpOiBUYWtlIHRoZSB0aW1lIG9mZnNldCBpbnRvIGFjY291bnQgd2hlbiBjb3Vu
dGluZyBjbGlja3MuCihtb3VzZURvd25DYWxsYmFjayk6IFVzZSBzZW5kT3JRdWV1ZUV2ZW50Lgoo
Z2V0U3RhdGVGbGFncyk6IENoYW5nZSBkb3duL2N1cnJlbnRFdmVudEJ1dHRvbiBpbnRvIGJ1dHRv
bkN1cnJlbnRseURvd24vbGFzdENsaWNrQnV0dG9uLgoobW91c2VVcENhbGxiYWNrKTogVXNlIHNl
bmRPclF1ZXVlRXZlbnQuCihtb3VzZU1vdmVUb0NhbGxiYWNrKTogRGl0dG8uCihtb3VzZVdoZWVs
VG9DYWxsYmFjayk6IERpdHRvLgooc2VuZE9yUXVldWVFdmVudCk6IEFkZGVkLgooZGlzcGF0Y2hF
dmVudCk6IEFkZGVkLgoocmVwbGF5U2F2ZWRFdmVudHMpOiBQYXVzZSB3aGVuIGFuIGV2ZW50IGhh
cyBhIGRlbGF5IGFuZCBkZWZlciB0byBkaXNwYXRjaEV2ZW50LgoobWFrZUV2ZW50U2VuZGVyKTog
T25seSBpbml0aWFsaXplIHRoZSBFdmVudFNlbmRlciB3aGVuIGxvYWRpbmcgdGhlIHRvcCBmcmFt
ZS4KKiBEdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuaDogRGl0dG8uCi0tLQogV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjkgKysrCiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwIHwgICAgMiAr
LQogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcCAgICB8ICAy
NDAgKysrKysrKysrLS0tLS0tLS0tLS0tCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
RXZlbnRTZW5kZXIuaCAgICAgIHwgICAgMiArLQogNCBmaWxlcyBjaGFuZ2VkLCAxMzYgaW5zZXJ0
aW9ucygrKSwgMTM3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBjZDg4MzIzLi4wNzE1MDIzIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAtMDUtMTQgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtHVEtdIERvdWJsZSBjbGlja3MgY2F1c2UgdGhyZWUgYnV0dG9uIHByZXNzIGV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMK
KworICAgICAgICBBZGQgcnVkaW1lbnRhcnkgbGVhcEZvcndhcmQgc3VwcG9ydCB0byB0aGUgR1RL
KyBEUlQuIGxlYXBGb3J3YXJkIGFsbG93cyBhIHRlc3QKKyAgICAgICAgdG8gcGF1c2UgZm9yIGEg
c3BlY2lmaWVkIGFtb3VudCBvZiB0aW1lLiBJdCBpcyB1c2VkIGluIHRoZSBwcm9jZXNzaW5nIG9m
IGRyYWctCisgICAgICAgIC1hbmQtZHJvcCBkYXRhIGFzIHdlbGwgYXMgdG8gc2VwYXJhdGUgZGlz
dGluY3QgbW91c2UgZG91YmxlLWNsaWNrcyBpbiBzb21lIHRlc3RzLgorICAgICAgICBUaGlzIHBh
dGNoIGVuYWJsZXMgdGVzdHMgdGhhdCByZWx5IG9uIHRoZSBsYXR0ZXIgYmVoYXZpb3IgdG8gcGFz
cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6Cisg
ICAgICAgICh3ZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZCk6IE9ubHkgaW5pdGlhbGl6ZSB0aGUg
RXZlbnRTZW5kZXIgd2hlbiBsb2FkaW5nIHRoZSB0b3AgZnJhbWUuCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKGxlYXBGb3J3YXJkQ2FsbGJh
Y2spOiBBZGQgc3VwcG9ydCBmb3IgYWRqdXN0aW5nIHRoZSB0aW1lIG9mZnNldCBvbiBsZWFwRm9y
d2FyZCgpLgorICAgICAgICAoY29udGV4dENsaWNrQ2FsbGJhY2spOiBVc2Ugc2VuZE9yUXVldWVF
dmVudC4KKyAgICAgICAgKHVwZGF0ZUNsaWNrQ291bnQpOiBUYWtlIHRoZSB0aW1lIG9mZnNldCBp
bnRvIGFjY291bnQgd2hlbiBjb3VudGluZyBjbGlja3MuCisgICAgICAgIChtb3VzZURvd25DYWxs
YmFjayk6IFVzZSBzZW5kT3JRdWV1ZUV2ZW50LgorICAgICAgICAoZ2V0U3RhdGVGbGFncyk6IENo
YW5nZSBkb3duL2N1cnJlbnRFdmVudEJ1dHRvbiBpbnRvIGJ1dHRvbkN1cnJlbnRseURvd24vbGFz
dENsaWNrQnV0dG9uLgorICAgICAgICAobW91c2VVcENhbGxiYWNrKTogVXNlIHNlbmRPclF1ZXVl
RXZlbnQuCisgICAgICAgIChtb3VzZU1vdmVUb0NhbGxiYWNrKTogRGl0dG8uCisgICAgICAgICht
b3VzZVdoZWVsVG9DYWxsYmFjayk6IERpdHRvLgorICAgICAgICAoc2VuZE9yUXVldWVFdmVudCk6
IEFkZGVkLgorICAgICAgICAoZGlzcGF0Y2hFdmVudCk6IEFkZGVkLgorICAgICAgICAocmVwbGF5
U2F2ZWRFdmVudHMpOiBQYXVzZSB3aGVuIGFuIGV2ZW50IGhhcyBhIGRlbGF5IGFuZCBkZWZlciB0
byBkaXNwYXRjaEV2ZW50LgorICAgICAgICAobWFrZUV2ZW50U2VuZGVyKTogT25seSBpbml0aWFs
aXplIHRoZSBFdmVudFNlbmRlciB3aGVuIGxvYWRpbmcgdGhlIHRvcCBmcmFtZS4KKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuaDogRGl0dG8uCisKIDIwMTAtMDUtMTQg
IFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFJ1
YmJlci1zdGFtcGVkIGJ5IEFudHRpIEtvaXZpc3RvLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggMGYzY2EzOC4uZTkxMmE0OCAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVl
LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUu
Y3BwCkBAIC02NjIsNyArNjYyLDcgQEAgc3RhdGljIHZvaWQgd2ViVmlld1dpbmRvd09iamVjdENs
ZWFyZWQoV2ViS2l0V2ViVmlldyogdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW0KICAgICBBU1NF
UlQoIWV4Y2VwdGlvbik7CiAKICAgICBKU1N0cmluZ1JlZiBldmVudFNlbmRlclN0ciA9IEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJldmVudFNlbmRlciIpOwotICAgIEpTVmFsdWVSZWYg
ZXZlbnRTZW5kZXIgPSBtYWtlRXZlbnRTZW5kZXIoY29udGV4dCk7CisgICAgSlNWYWx1ZVJlZiBl
dmVudFNlbmRlciA9IG1ha2VFdmVudFNlbmRlcihjb250ZXh0LCAhd2Via2l0X3dlYl9mcmFtZV9n
ZXRfcGFyZW50KGZyYW1lKSk7CiAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCB3aW5k
b3dPYmplY3QsIGV2ZW50U2VuZGVyU3RyLCBldmVudFNlbmRlciwga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSwgMCk7CiAgICAgSlNT
dHJpbmdSZWxlYXNlKGV2ZW50U2VuZGVyU3RyKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDljMjdkOGMuLjc2YjEwMjIgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKKysr
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcApAQCAtNDUs
MjggKzQ1LDI3IEBACiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxzdHJp
bmcuaD4KIAotLy8gVE9ETzogQ3VycmVudGx5IGRyYWcgYW5kIGRyb3AgcmVsYXRlZCBjb2RlIGlz
IGxlZnQgb3V0IGFuZAotLy8gc2hvdWxkIGJlIG1lcmdlZCBvbmNlIHdlIGhhdmUgZHJhZyBhbmQg
ZHJvcCBzdXBwb3J0IGluIFdlYkNvcmUuCisvLyBGSVhNRTogSW1wbGVtZW50IHN1cHBvcnQgZm9y
IHN5bnRoZXNpemluZyBkcm9wIGV2ZW50cy4KIAogZXh0ZXJuICJDIiB7CiAgICAgZXh0ZXJuIHZv
aWQgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKIH0KIAot
c3RhdGljIGJvb2wgZG93biA9IGZhbHNlOwotc3RhdGljIGJvb2wgY3VycmVudEV2ZW50QnV0dG9u
ID0gMTsKLXN0YXRpYyBib29sIGRyYWdNb2RlID0gdHJ1ZTsKLXN0YXRpYyBib29sIHJlcGxheWlu
Z1NhdmVkRXZlbnRzID0gZmFsc2U7CitzdGF0aWMgYm9vbCBkcmFnTW9kZTsKK3N0YXRpYyBpbnQg
dGltZU9mZnNldCA9IDA7CisKIHN0YXRpYyBpbnQgbGFzdE1vdXNlUG9zaXRpb25YOwogc3RhdGlj
IGludCBsYXN0TW91c2VQb3NpdGlvblk7Ci0KIHN0YXRpYyBpbnQgbGFzdENsaWNrUG9zaXRpb25Y
Owogc3RhdGljIGludCBsYXN0Q2xpY2tQb3NpdGlvblk7Ci1zdGF0aWMgaW50IGNsaWNrQ291bnQg
PSAwOworc3RhdGljIGludCBsYXN0Q2xpY2tUaW1lT2Zmc2V0Oworc3RhdGljIGludCBsYXN0Q2xp
Y2tCdXR0b247CitzdGF0aWMgaW50IGJ1dHRvbkN1cnJlbnRseURvd247CitzdGF0aWMgaW50IGNs
aWNrQ291bnQ7CiAKIHN0cnVjdCBEZWxheWVkTWVzc2FnZSB7CiAgICAgR2RrRXZlbnQgZXZlbnQ7
CiAgICAgZ3Vsb25nIGRlbGF5OwotICAgIGdib29sZWFuIGlzRHJhZ0V2ZW50OwogfTsKIAogc3Rh
dGljIERlbGF5ZWRNZXNzYWdlIG1zZ1F1ZXVlWzEwMjRdOwpAQCAtODQsNiArODMsMTAgQEAgZW51
bSBLZXlMb2NhdGlvbkNvZGUgewogICAgIERPTV9LRVlfTE9DQVRJT05fTlVNUEFEICAgICAgICA9
IDB4MDMKIH07CiAKK3N0YXRpYyB2b2lkIHNlbmRPclF1ZXVlRXZlbnQoR2RrRXZlbnQgZXZlbnQp
Oworc3RhdGljIHZvaWQgZGlzcGF0Y2hFdmVudChHZGtFdmVudCBldmVudCk7CitzdGF0aWMgZ3Vp
bnQgZ2V0U3RhdGVGbGFncygpOworCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXREcmFnTW9kZUNhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIHJldHVybiBKU1Zh
bHVlTWFrZUJvb2xlYW4oY29udGV4dCwgZHJhZ01vZGUpOwpAQCAtOTcsMTQgKzEwMCwxNyBAQCBz
dGF0aWMgYm9vbCBzZXREcmFnTW9kZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBvYmplY3QsIEpTU3RyaQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBsZWFwRm9yd2FyZENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKLSAgICAvLyBGSVhNRTogQWRk
IHByb3BlciBzdXBwb3J0IGZvciBmb3J3YXJkIGxlYXBzCisgICAgaWYgKGFyZ3VtZW50Q291bnQg
PiAwKSB7CisgICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWVdLmRlbGF5ID0gSlNWYWx1ZVRvTnVt
YmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICAgICAgdGltZU9mZnNl
dCArPSBtc2dRdWV1ZVtlbmRPZlF1ZXVlXS5kZWxheTsKKyAgICAgICAgQVNTRVJUKCFleGNlcHRp
b24gfHwgISpleGNlcHRpb24pOworICAgIH0KKwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYgY29udGV4dENsaWNrQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIHdlYmtpdF93ZWJfZnJhbWVf
bGF5b3V0KG1haW5GcmFtZSk7Ci0KICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dl
Yl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKQEAgLTExNiwyMiArMTIyLDIw
IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbnRleHRDbGlja0NhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvCiAgICAgZXZlbnQuYnV0dG9uLnkgPSBsYXN0TW91
c2VQb3NpdGlvblk7CiAgICAgZXZlbnQuYnV0dG9uLndpbmRvdyA9IEdUS19XSURHRVQodmlldykt
PndpbmRvdzsKIAotICAgIGdib29sZWFuIHJldHVybl92YWw7Ci0gICAgZG93biA9IHRydWU7CiAg
ICAgZXZlbnQudHlwZSA9IEdES19CVVRUT05fUFJFU1M7Ci0gICAgZ19zaWduYWxfZW1pdF9ieV9u
YW1lKHZpZXcsICJidXR0b25fcHJlc3NfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLQot
ICAgIGRvd24gPSBmYWxzZTsKKyAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKICAgICBldmVu
dC50eXBlID0gR0RLX0JVVFRPTl9SRUxFQVNFOwotICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2
aWV3LCAiYnV0dG9uX3JlbGVhc2VfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKKyAgICBz
ZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKIAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKIH0KIAogc3RhdGljIHZvaWQgdXBkYXRlQ2xpY2tDb3VudChpbnQgYnV0dG9u
KQogewotICAgIC8vIEZJWE1FOiB0YWtlIHRoZSBsYXN0IGNsaWNrZWQgYnV0dG9uIG51bWJlciBh
bmQgdGhlIHRpbWUgb2YgbGFzdCBjbGljayBpbnRvIGFjY291bnQuCi0gICAgaWYgKGxhc3RDbGlj
a1Bvc2l0aW9uWCAhPSBsYXN0TW91c2VQb3NpdGlvblggfHwgbGFzdENsaWNrUG9zaXRpb25ZICE9
IGxhc3RNb3VzZVBvc2l0aW9uWSB8fCBjdXJyZW50RXZlbnRCdXR0b24gIT0gYnV0dG9uKQorICAg
IGlmIChsYXN0Q2xpY2tQb3NpdGlvblggIT0gbGFzdE1vdXNlUG9zaXRpb25YCisgICAgICAgIHx8
IGxhc3RDbGlja1Bvc2l0aW9uWSAhPSBsYXN0TW91c2VQb3NpdGlvblkKKyAgICAgICAgfHwgbGFz
dENsaWNrQnV0dG9uICE9IGJ1dHRvbgorICAgICAgICB8fCB0aW1lT2Zmc2V0IC0gbGFzdENsaWNr
VGltZU9mZnNldCA+PSAxKQogICAgICAgICBjbGlja0NvdW50ID0gMTsKICAgICBlbHNlCiAgICAg
ICAgIGNsaWNrQ291bnQrKzsKQEAgLTE1NCwyOCArMTU4LDI0IEBAIHN0YXRpYyB2b2lkIGdldFJv
b3RDb29yZHMoR3RrV2lkZ2V0KiB2aWV3LCBpbnQqIHJvb3RYLCBpbnQqIHJvb3RZKQogCiBzdGF0
aWMgSlNWYWx1ZVJlZiBtb3VzZURvd25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCiB7CisKICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRf
d2ViX3ZpZXcobWFpbkZyYW1lKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIGRvd24gPSB0cnVlOwotCiAgICAgR2Rr
RXZlbnQgZXZlbnQ7CiAgICAgbWVtc2V0KCZldmVudCwgMCwgc2l6ZW9mKGV2ZW50KSk7Ci0gICAg
ZXZlbnQudHlwZSA9IEdES19CVVRUT05fUFJFU1M7CiAgICAgZXZlbnQuYnV0dG9uLmJ1dHRvbiA9
IDE7CiAKICAgICBpZiAoYXJndW1lbnRDb3VudCA9PSAxKSB7Ci0gICAgICAgIGV2ZW50LmJ1dHRv
bi5idXR0b24gPSAoaW50KUpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4
Y2VwdGlvbikgKyAxOworICAgICAgICBldmVudC5idXR0b24uYnV0dG9uID0gKGludCkoSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSkgKyAxOwogICAgICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbCgoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbiksIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKICAgICB9CiAKLSAgICBjdXJyZW50RXZlbnRCdXR0
b24gPSBldmVudC5idXR0b24uYnV0dG9uOwotCiAgICAgZXZlbnQuYnV0dG9uLnggPSBsYXN0TW91
c2VQb3NpdGlvblg7CiAgICAgZXZlbnQuYnV0dG9uLnkgPSBsYXN0TW91c2VQb3NpdGlvblk7CiAg
ICAgZXZlbnQuYnV0dG9uLndpbmRvdyA9IEdUS19XSURHRVQodmlldyktPndpbmRvdzsKLSAgICBl
dmVudC5idXR0b24udGltZSA9IEdES19DVVJSRU5UX1RJTUU7CisgICAgZXZlbnQuYnV0dG9uLnRp
bWUgPSBHREtfQ1VSUkVOVF9USU1FICsgdGltZU9mZnNldDsKICAgICBldmVudC5idXR0b24uZGV2
aWNlID0gZ2RrX2RldmljZV9nZXRfY29yZV9wb2ludGVyKCk7CiAKICAgICBpbnQgeF9yb290LCB5
X3Jvb3Q7CkBAIC0xODQsNDUgKzE4NCwzMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZURvd25D
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sCiAjZWxz
ZQogICAgIGdldFJvb3RDb29yZHMoR1RLX1dJREdFVCh2aWV3KSwgJnhfcm9vdCwgJnlfcm9vdCk7
CiAjZW5kaWYKLQogICAgIGV2ZW50LmJ1dHRvbi54X3Jvb3QgPSB4X3Jvb3Q7CiAgICAgZXZlbnQu
YnV0dG9uLnlfcm9vdCA9IHlfcm9vdDsKIAotICAgIHVwZGF0ZUNsaWNrQ291bnQoZXZlbnQuYnV0
dG9uLmJ1dHRvbik7Ci0KLSAgICBpZiAoIW1zZ1F1ZXVlW2VuZE9mUXVldWVdLmRlbGF5KSB7Ci0g
ICAgICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7CisgICAgZXZlbnQudHlw
ZSA9IEdES19CVVRUT05fUFJFU1M7CisgICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7CiAKLSAg
ICAgICAgZ2Jvb2xlYW4gcmV0dXJuX3ZhbDsKLSAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1l
KHZpZXcsICJidXR0b25fcHJlc3NfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICAg
ICAgaWYgKGNsaWNrQ291bnQgPT0gMikgewotICAgICAgICAgICAgZXZlbnQudHlwZSA9IEdES18y
QlVUVE9OX1BSRVNTOwotICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJi
dXR0b25fcHJlc3NfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICAgICAgfQotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIHJlcGxheVNhdmVkRXZlbnRzIHNob3VsZCBoYXZlIHRoZSBy
ZXF1aXJlZCBsb2dpYyB0byBtYWtlIGxlYXBGb3J3YXJkIGRlbGF5cyB3b3JrCi0gICAgICAgIG1z
Z1F1ZXVlW2VuZE9mUXVldWUrK10uZXZlbnQgPSBldmVudDsKLSAgICAgICAgcmVwbGF5U2F2ZWRF
dmVudHMoKTsKKyAgICB1cGRhdGVDbGlja0NvdW50KGV2ZW50LmJ1dHRvbi5idXR0b24pOworICAg
IGlmIChjbGlja0NvdW50ID09IDIpIHsKKyAgICAgICAgZXZlbnQudHlwZSA9IEdES18yQlVUVE9O
X1BSRVNTOworICAgICAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKICAgICB9CiAKKyAgICBi
dXR0b25DdXJyZW50bHlEb3duID0gZXZlbnQuYnV0dG9uLmJ1dHRvbjsKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKIHN0YXRpYyBndWludCBnZXRTdGF0ZUZs
YWdzKCkKIHsKLSAgICBndWludCBzdGF0ZSA9IDA7Ci0KLSAgICBpZiAoZG93bikgewotICAgICAg
ICBpZiAoY3VycmVudEV2ZW50QnV0dG9uID09IDEpCi0gICAgICAgICAgICBzdGF0ZSA9IEdES19C
VVRUT04xX01BU0s7Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRFdmVudEJ1dHRvbiA9PSAyKQot
ICAgICAgICAgICAgc3RhdGUgPSBHREtfQlVUVE9OMl9NQVNLOwotICAgICAgICBlbHNlIGlmIChj
dXJyZW50RXZlbnRCdXR0b24gPT0gMykKLSAgICAgICAgICAgIHN0YXRlID0gR0RLX0JVVFRPTjNf
TUFTSzsKLSAgICB9IGVsc2UKLSAgICAgICAgc3RhdGUgPSAwOwotCi0gICAgcmV0dXJuIHN0YXRl
OworICAgIGlmIChidXR0b25DdXJyZW50bHlEb3duID09IDEpCisgICAgICAgIHJldHVybiBHREtf
QlVUVE9OMV9NQVNLOworICAgIGlmIChidXR0b25DdXJyZW50bHlEb3duID09IDIpCisgICAgICAg
IHJldHVybiBHREtfQlVUVE9OMl9NQVNLOworICAgIGlmIChidXR0b25DdXJyZW50bHlEb3duID09
IDMpCisgICAgICAgIHJldHVybiBHREtfQlVUVE9OM19NQVNLOworICAgIHJldHVybiAwOwogfQog
CiBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZVVwQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQpAQCAtMjM0LDcgKzIyMCw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlVXBDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTCiAKICAg
ICBHZGtFdmVudCBldmVudDsKICAgICBtZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoZXZlbnQpKTsK
LSAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9SRUxFQVNFOwogICAgIGV2ZW50LmJ1dHRvbi5i
dXR0b24gPSAxOwogCiAgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkgewpAQCAtMjQyLDE3ICsy
MjcsMTMgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VVcENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlMKICAgICAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pLCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KSk7CiAgICAgfQogCi0gICAgY3VycmVudEV2ZW50QnV0dG9uID0gZXZlbnQuYnV0dG9u
LmJ1dHRvbjsKLQogICAgIGV2ZW50LmJ1dHRvbi54ID0gbGFzdE1vdXNlUG9zaXRpb25YOwogICAg
IGV2ZW50LmJ1dHRvbi55ID0gbGFzdE1vdXNlUG9zaXRpb25ZOwogICAgIGV2ZW50LmJ1dHRvbi53
aW5kb3cgPSBHVEtfV0lER0VUKHZpZXcpLT53aW5kb3c7Ci0gICAgZXZlbnQuYnV0dG9uLnRpbWUg
PSBHREtfQ1VSUkVOVF9USU1FOworICAgIGV2ZW50LmJ1dHRvbi50aW1lID0gR0RLX0NVUlJFTlRf
VElNRSArIHRpbWVPZmZzZXQ7CiAgICAgZXZlbnQuYnV0dG9uLmRldmljZSA9IGdka19kZXZpY2Vf
Z2V0X2NvcmVfcG9pbnRlcigpOwogICAgIGV2ZW50LmJ1dHRvbi5zdGF0ZSA9IGdldFN0YXRlRmxh
Z3MoKTsKIAotICAgIGRvd24gPSBmYWxzZTsKLQogICAgIGludCB4X3Jvb3QsIHlfcm9vdDsKICNp
ZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLDE3LDMpCiAgICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29y
ZHMoR1RLX1dJREdFVCh2aWV3KS0+d2luZG93LCBsYXN0TW91c2VQb3NpdGlvblgsIGxhc3RNb3Vz
ZVBvc2l0aW9uWSwgJnhfcm9vdCwgJnlfcm9vdCk7CkBAIC0yNjMsMjAgKzI0NCwxNCBAQCBzdGF0
aWMgSlNWYWx1ZVJlZiBtb3VzZVVwQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uLCBKUwogICAgIGV2ZW50LmJ1dHRvbi54X3Jvb3QgPSB4X3Jvb3Q7CiAg
ICAgZXZlbnQuYnV0dG9uLnlfcm9vdCA9IHlfcm9vdDsKIAotICAgIGlmICgoZHJhZ01vZGUgJiYg
IXJlcGxheWluZ1NhdmVkRXZlbnRzKSB8fCBtc2dRdWV1ZVtlbmRPZlF1ZXVlXS5kZWxheSkgewot
ICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlXS5ldmVudCA9IGV2ZW50OwotICAgICAgICBtc2dR
dWV1ZVtlbmRPZlF1ZXVlKytdLmlzRHJhZ0V2ZW50ID0gdHJ1ZTsKLSAgICAgICAgcmVwbGF5U2F2
ZWRFdmVudHMoKTsKLSAgICB9IGVsc2UgewotICAgICAgICB3ZWJraXRfd2ViX2ZyYW1lX2xheW91
dChtYWluRnJhbWUpOwotCi0gICAgICAgIGdib29sZWFuIHJldHVybl92YWw7Ci0gICAgICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9uX3JlbGVhc2VfZXZlbnQiLCAmZXZlbnQs
ICZyZXR1cm5fdmFsKTsKLSAgICB9Ci0KICAgICBsYXN0Q2xpY2tQb3NpdGlvblggPSBsYXN0TW91
c2VQb3NpdGlvblg7CiAgICAgbGFzdENsaWNrUG9zaXRpb25ZID0gbGFzdE1vdXNlUG9zaXRpb25Z
OworICAgIGxhc3RDbGlja0J1dHRvbiA9IGJ1dHRvbkN1cnJlbnRseURvd247CisgICAgbGFzdENs
aWNrVGltZU9mZnNldCA9IHRpbWVPZmZzZXQ7CisgICAgYnV0dG9uQ3VycmVudGx5RG93biA9IDA7
CiAKKyAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9SRUxFQVNFOworICAgIHNlbmRPclF1ZXVl
RXZlbnQoZXZlbnQpOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IH0KIApAQCAtMjk5LDcgKzI3NCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlTW92ZVRvQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uCiAgICAgZXZl
bnQudHlwZSA9IEdES19NT1RJT05fTk9USUZZOwogICAgIGV2ZW50Lm1vdGlvbi54ID0gbGFzdE1v
dXNlUG9zaXRpb25YOwogICAgIGV2ZW50Lm1vdGlvbi55ID0gbGFzdE1vdXNlUG9zaXRpb25ZOwot
ICAgIGV2ZW50Lm1vdGlvbi50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKKyAgICBldmVudC5tb3Rp
b24udGltZSA9IEdES19DVVJSRU5UX1RJTUUgKyB0aW1lT2Zmc2V0OwogICAgIGV2ZW50Lm1vdGlv
bi53aW5kb3cgPSBHVEtfV0lER0VUKHZpZXcpLT53aW5kb3c7CiAgICAgZXZlbnQubW90aW9uLmRl
dmljZSA9IGdka19kZXZpY2VfZ2V0X2NvcmVfcG9pbnRlcigpOwogCkBAIC0zMDksMjIgKzI4NCwx
MiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZU1vdmVUb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbgogI2Vsc2UKICAgICBnZXRSb290Q29vcmRzKEdU
S19XSURHRVQodmlldyksICZ4X3Jvb3QsICZ5X3Jvb3QpOwogI2VuZGlmCi0KICAgICBldmVudC5t
b3Rpb24ueF9yb290ID0geF9yb290OwogICAgIGV2ZW50Lm1vdGlvbi55X3Jvb3QgPSB5X3Jvb3Q7
Ci0gICAgCi0gICAgZXZlbnQubW90aW9uLnN0YXRlID0gZ2V0U3RhdGVGbGFncygpOwotCi0gICAg
aWYgKGRyYWdNb2RlICYmIGRvd24gJiYgIXJlcGxheWluZ1NhdmVkRXZlbnRzKSB7Ci0gICAgICAg
IG1zZ1F1ZXVlW2VuZE9mUXVldWVdLmV2ZW50ID0gZXZlbnQ7Ci0gICAgICAgIG1zZ1F1ZXVlW2Vu
ZE9mUXVldWUrK10uaXNEcmFnRXZlbnQgPSB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHdl
YmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7CiAKLSAgICAgICAgZ2Jvb2xlYW4gcmV0
dXJuX3ZhbDsKLSAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJtb3Rpb25fbm90
aWZ5X2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuX3ZhbCk7Ci0gICAgfQorICAgIGV2ZW50Lm1vdGlv
bi5zdGF0ZSA9IGdldFN0YXRlRmxhZ3MoKTsKIAorICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQp
OwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtMzQ5
LDcgKzMxNCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlV2hlZWxUb0NhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvCiAgICAgZXZlbnQudHlwZSA9IEdE
S19TQ1JPTEw7CiAgICAgZXZlbnQuc2Nyb2xsLnggPSBsYXN0TW91c2VQb3NpdGlvblg7CiAgICAg
ZXZlbnQuc2Nyb2xsLnkgPSBsYXN0TW91c2VQb3NpdGlvblk7Ci0gICAgZXZlbnQuc2Nyb2xsLnRp
bWUgPSBHREtfQ1VSUkVOVF9USU1FOworICAgIGV2ZW50LnNjcm9sbC50aW1lID0gR0RLX0NVUlJF
TlRfVElNRSArIHRpbWVPZmZzZXQ7CiAgICAgZXZlbnQuc2Nyb2xsLndpbmRvdyA9IEdUS19XSURH
RVQodmlldyktPndpbmRvdzsKIAogICAgIGlmIChob3Jpem9udGFsIDwgMCkKQEAgLTM2MywxNCAr
MzI4LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VXaGVlbFRvQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW8KICAgICBlbHNlCiAgICAgICAgIGdfYXNz
ZXJ0X25vdF9yZWFjaGVkKCk7CiAKLSAgICBpZiAoZHJhZ01vZGUgJiYgZG93biAmJiAhcmVwbGF5
aW5nU2F2ZWRFdmVudHMpIHsKLSAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZV0uZXZlbnQgPSBl
dmVudDsKLSAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZSsrXS5pc0RyYWdFdmVudCA9IHRydWU7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQobWFpbkZyYW1l
KTsKLSAgICAgICAgZ3RrX21haW5fZG9fZXZlbnQoJmV2ZW50KTsKLSAgICB9Ci0KKyAgICBzZW5k
T3JRdWV1ZUV2ZW50KGV2ZW50KTsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CiB9CiAKQEAgLTM4Myw0OSArMzQxLDU0IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGJlZ2lu
RHJhZ1dpdGhGaWxlc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi12b2lkIHJl
cGxheVNhdmVkRXZlbnRzKCkKK3N0YXRpYyB2b2lkIHNlbmRPclF1ZXVlRXZlbnQoR2RrRXZlbnQg
ZXZlbnQpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBkZWFsIHdpdGggZm9yd2FyZCBs
ZWFwcywgYnV0IGl0IHNob3VsZC4KKyAgICAvLyBNb3VzZSBtb3ZlIGV2ZW50cyBhcmUgcXVldWVk
IGlmIHRoZSBwcmV2aW91cyBldmVudCB3YXMgcXVldWVkIG9yIGlmIGEKKyAgICAvLyBkZWxheSB3
YXMgc2V0IHVwIGJ5IGxlYXBGb3J3YXJkKCkuCisgICAgaWYgKGVuZE9mUXVldWUgIT0gc3RhcnRP
ZlF1ZXVlIHx8IG1zZ1F1ZXVlW2VuZE9mUXVldWVdLmRlbGF5KSB7CisgICAgICAgIG1zZ1F1ZXVl
W2VuZE9mUXVldWUrK10uZXZlbnQgPSBldmVudDsKKyAgICAgICAgcmVwbGF5U2F2ZWRFdmVudHMo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQpOwor
fQorCitzdGF0aWMgdm9pZCBkaXNwYXRjaEV2ZW50KEdka0V2ZW50IGV2ZW50KQoreworICAgIHdl
YmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7CiAgICAgV2ViS2l0V2ViVmlldyogdmll
dyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CiAgICAgaWYgKCF2
aWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXBsYXlpbmdTYXZlZEV2ZW50cyA9IHRydWU7
Ci0KLSAgICBmb3IgKHVuc2lnbmVkIHF1ZXVlUG9zID0gMDsgcXVldWVQb3MgPCBlbmRPZlF1ZXVl
OyBxdWV1ZVBvcysrKSB7Ci0gICAgICAgIEdka0V2ZW50IGV2ZW50ID0gbXNnUXVldWVbcXVldWVQ
b3NdLmV2ZW50OwotICAgICAgICBnYm9vbGVhbiByZXR1cm5fdmFsOwotCi0gICAgICAgIHN3aXRj
aCAoZXZlbnQudHlwZSkgewotICAgICAgICBjYXNlIEdES19CVVRUT05fUkVMRUFTRToKLSAgICAg
ICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9uX3JlbGVhc2VfZXZlbnQi
LCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEdES19CVVRUT05fUFJFU1M6Ci0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmll
dywgImJ1dHRvbl9wcmVzc19ldmVudCIsICZldmVudCwgJnJldHVybl92YWwpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0RLX01PVElPTl9OT1RJRlk6Ci0gICAgICAgICAgICBn
X3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywgIm1vdGlvbl9ub3RpZnlfZXZlbnQiLCAmZXZlbnQs
ICZyZXR1cm5fdmFsKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsK
KyAgICBpZiAoZXZlbnQudHlwZSA9PSBHREtfQlVUVE9OX1BSRVNTIHx8IGV2ZW50LnR5cGUgPT0g
R0RLXzJCVVRUT05fUFJFU1MpCisgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAi
YnV0dG9uX3ByZXNzX2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuVmFsdWUpOworICAgIGVsc2UgaWYg
KGV2ZW50LnR5cGUgPT0gR0RLX0JVVFRPTl9SRUxFQVNFKQorICAgICAgICBnX3NpZ25hbF9lbWl0
X2J5X25hbWUodmlldywgImJ1dHRvbl9yZWxlYXNlX2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuVmFs
dWUpOworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gR0RLX01PVElPTl9OT1RJRlkpCisgICAg
ICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAibW90aW9uX25vdGlmeV9ldmVudCIsICZl
dmVudCwgJnJldHVyblZhbHVlKTsKKyAgICBlbHNlIGlmIChldmVudC50eXBlID09IEdES19TQ1JP
TEwpCisgICAgICAgIGd0a19tYWluX2RvX2V2ZW50KCZldmVudCk7Cit9CiAKLSAgICAgICAgc3Rh
cnRPZlF1ZXVlKys7Ci0gICAgfQordm9pZCByZXBsYXlTYXZlZEV2ZW50cygpCit7CisgICAgLy8g
RklYTUU6IEV2ZW50dWFsbHkgd2UgbWF5IG5lZWQgdG8gaGF2ZSBtb3JlIHNvcGhpc3RpY2F0ZWQg
bG9naWMgdG8KKyAgICAvLyB0cmFjayBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbnMuCisKKyAgICAv
LyBGaXJzdCBzZW5kIGFsbCB0aGUgZXZlbnRzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHNlbnQKKyAg
ICB3aGlsZSAoc3RhcnRPZlF1ZXVlIDwgZW5kT2ZRdWV1ZSkgeworICAgICAgICBpZiAobXNnUXVl
dWVbc3RhcnRPZlF1ZXVlXS5kZWxheSkgeworICAgICAgICAgICAgZ191c2xlZXAobXNnUXVldWVb
c3RhcnRPZlF1ZXVlXS5kZWxheSAqIDEwMDApOworICAgICAgICAgICAgbXNnUXVldWVbc3RhcnRP
ZlF1ZXVlXS5kZWxheSA9IDA7CisgICAgICAgIH0KIAotICAgIGludCBudW1RdWV1ZWRNZXNzYWdl
cyA9IGVuZE9mUXVldWUgLSBzdGFydE9mUXVldWU7Ci0gICAgaWYgKCFudW1RdWV1ZWRNZXNzYWdl
cykgewotICAgICAgICBzdGFydE9mUXVldWUgPSAwOwotICAgICAgICBlbmRPZlF1ZXVlID0gMDsK
LSAgICAgICAgcmVwbGF5aW5nU2F2ZWRFdmVudHMgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICBkaXNwYXRjaEV2ZW50KG1zZ1F1ZXVlW3N0YXJ0T2ZRdWV1ZSsrXS5ldmVudCk7CiAg
ICAgfQogCiAgICAgc3RhcnRPZlF1ZXVlID0gMDsKICAgICBlbmRPZlF1ZXVlID0gMDsKLQotICAg
IHJlcGxheWluZ1NhdmVkRXZlbnRzID0gZmFsc2U7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGtl
eURvd25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC02NjEsMTcgKzYy
NCwyNCBAQCBzdGF0aWMgSlNDbGFzc1JlZiBnZXRDbGFzcyhKU0NvbnRleHRSZWYgY29udGV4dCkK
ICAgICByZXR1cm4gZXZlbnRTZW5kZXJDbGFzczsKIH0KIAotSlNPYmplY3RSZWYgbWFrZUV2ZW50
U2VuZGVyKEpTQ29udGV4dFJlZiBjb250ZXh0KQorSlNPYmplY3RSZWYgbWFrZUV2ZW50U2VuZGVy
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBib29sIGlzVG9wRnJhbWUpCiB7Ci0gICAgZG93biA9IGZh
bHNlOwotICAgIGRyYWdNb2RlID0gdHJ1ZTsKLSAgICBsYXN0TW91c2VQb3NpdGlvblggPSBsYXN0
TW91c2VQb3NpdGlvblkgPSAwOwotICAgIGxhc3RDbGlja1Bvc2l0aW9uWCA9IGxhc3RDbGlja1Bv
c2l0aW9uWSA9IDA7Ci0KLSAgICBpZiAoIXJlcGxheWluZ1NhdmVkRXZlbnRzKSB7Ci0gICAgICAg
IC8vIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBpbiB0aGUgbWlkZGxlIG9mIGEgdGVzdCwg
ZXZlbgotICAgICAgICAvLyB3aGlsZSByZXBsYXlpbmcgc2F2ZWQgZXZlbnRzLiBSZXNldHRpbmcg
dGhlc2Ugd2hpbGUgZG9pbmcgdGhhdAotICAgICAgICAvLyBjYW4gYnJlYWsgdGhpbmdzLgorICAg
IGlmIChpc1RvcEZyYW1lKSB7CisgICAgICAgIGRyYWdNb2RlID0gdHJ1ZTsKKworICAgICAgICAv
LyBGbHkgZm9yd2FyZCBpbiB0aW1lIG9uZSBzZWNvbmQgd2hlbiB0aGUgbWFpbiBmcmFtZSBsb2Fk
cy4gVGhpcyB3aWxsCisgICAgICAgIC8vIGVuc3VyZSB0aGF0IHdoZW4gYSB0ZXN0IGJlZ2luIGNs
aWNraW5nIGluIHRoZSBzYW1lIGxvY2F0aW9uIGFzCisgICAgICAgIC8vIGEgcHJldmlvdXMgdGVz
dCwgdGhvc2UgY2xpY2tzIHdvbid0IGJlIGludGVycHJldGVkIGFzIGNvbnRpbnVhdGlvbnMKKyAg
ICAgICAgLy8gb2YgdGhlIHByZXZpb3VzIHRlc3QncyBjbGljayBzZXF1ZW5jZXMuCisgICAgICAg
IHRpbWVPZmZzZXQgKz0gMTAwMDsKKworICAgICAgICBsYXN0TW91c2VQb3NpdGlvblggPSBsYXN0
TW91c2VQb3NpdGlvblkgPSAwOworICAgICAgICBsYXN0Q2xpY2tQb3NpdGlvblggPSBsYXN0Q2xp
Y2tQb3NpdGlvblkgPSAwOworICAgICAgICBsYXN0Q2xpY2tUaW1lT2Zmc2V0ID0gMDsKKyAgICAg
ICAgbGFzdENsaWNrQnV0dG9uID0gMDsKKyAgICAgICAgYnV0dG9uQ3VycmVudGx5RG93biA9IDA7
CisgICAgICAgIGNsaWNrQ291bnQgPSAwOworCiAgICAgICAgIGVuZE9mUXVldWUgPSAwOwogICAg
ICAgICBzdGFydE9mUXVldWUgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0V2ZW50U2VuZGVyLmgKaW5kZXggMjcyZThhOS4uY2UzM2NjYyAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmgKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwogdHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNPYmplY3RSZWY7CiAKLUpTT2JqZWN0UmVmIG1h
a2VFdmVudFNlbmRlcihKU0NvbnRleHRSZWYgY29udGV4dCk7CitKU09iamVjdFJlZiBtYWtlRXZl
bnRTZW5kZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgaXNUb3BGcmFtZSk7CiB2b2lkIHJl
cGxheVNhdmVkRXZlbnRzKCk7CiAKICNlbmRpZgotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57235</attachid>
            <date>2010-05-27 06:32:51 -0700</date>
            <delta_ts>2010-05-28 04:51:24 -0700</delta_ts>
            <desc>Rudimentary leapForward support</desc>
            <filename>bug-38853-20100527153248.patch</filename>
            <type>text/plain</type>
            <size>18548</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0YmFjNjBmZjkyODQzY2YxNmJlYjI2YWZmNTNiZjUxYTAzMmMxNmE0Li42ZjhjYzUx
YTRiYmM1MmQ3ZjkwMDliNGUyNTcwMzAyNWM0MDIwZGEzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTAtMDUtMjcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIERvdWJs
ZSBjbGlja3MgY2F1c2UgdGhyZWUgYnV0dG9uIHByZXNzIGV2ZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKKworICAgICAgICBBZGQgcnVk
aW1lbnRhcnkgbGVhcEZvcndhcmQgc3VwcG9ydCB0byB0aGUgR1RLKyBEUlQuIGxlYXBGb3J3YXJk
IGFsbG93cyBhIHRlc3QKKyAgICAgICAgdG8gcGF1c2UgZm9yIGEgc3BlY2lmaWVkIGFtb3VudCBv
ZiB0aW1lLiBJdCBpcyB1c2VkIGluIHRoZSBwcm9jZXNzaW5nIG9mIGRyYWctCisgICAgICAgIC1h
bmQtZHJvcCBkYXRhIGFzIHdlbGwgYXMgdG8gc2VwYXJhdGUgZGlzdGluY3QgbW91c2UgZG91Ymxl
LWNsaWNrcyBpbiBzb21lIHRlc3RzLgorICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdGVzdHMg
dGhhdCByZWx5IG9uIHRoZSBsYXR0ZXIgYmVoYXZpb3IgdG8gcGFzcy4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgICh3ZWJWaWV3V2lu
ZG93T2JqZWN0Q2xlYXJlZCk6IE9ubHkgaW5pdGlhbGl6ZSB0aGUgRXZlbnRTZW5kZXIgd2hlbiBs
b2FkaW5nIHRoZSB0b3AgZnJhbWUuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50
U2VuZGVyLmNwcDoKKyAgICAgICAgKGxlYXBGb3J3YXJkQ2FsbGJhY2spOiBBZGQgc3VwcG9ydCBm
b3IgYWRqdXN0aW5nIHRoZSB0aW1lIG9mZnNldCBvbiBsZWFwRm9yd2FyZCgpLgorICAgICAgICAo
Y29udGV4dENsaWNrQ2FsbGJhY2spOiBVc2Ugc2VuZE9yUXVldWVFdmVudC4KKyAgICAgICAgKHVw
ZGF0ZUNsaWNrQ291bnQpOiBUYWtlIHRoZSB0aW1lIG9mZnNldCBpbnRvIGFjY291bnQgd2hlbiBj
b3VudGluZyBjbGlja3MuCisgICAgICAgIChtb3VzZURvd25DYWxsYmFjayk6IFVzZSBzZW5kT3JR
dWV1ZUV2ZW50LgorICAgICAgICAoZ2V0U3RhdGVGbGFncyk6IENoYW5nZSBkb3duL2N1cnJlbnRF
dmVudEJ1dHRvbiBpbnRvIGJ1dHRvbkN1cnJlbnRseURvd24vbGFzdENsaWNrQnV0dG9uLgorICAg
ICAgICAobW91c2VVcENhbGxiYWNrKTogVXNlIHNlbmRPclF1ZXVlRXZlbnQuCisgICAgICAgICht
b3VzZU1vdmVUb0NhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChtb3VzZVdoZWVsVG9DYWxsYmFj
ayk6IERpdHRvLgorICAgICAgICAoc2VuZE9yUXVldWVFdmVudCk6IEFkZGVkLgorICAgICAgICAo
ZGlzcGF0Y2hFdmVudCk6IEFkZGVkLgorICAgICAgICAocmVwbGF5U2F2ZWRFdmVudHMpOiBQYXVz
ZSB3aGVuIGFuIGV2ZW50IGhhcyBhIGRlbGF5IGFuZCBkZWZlciB0byBkaXNwYXRjaEV2ZW50Lgor
ICAgICAgICAobWFrZUV2ZW50U2VuZGVyKTogT25seSBpbml0aWFsaXplIHRoZSBFdmVudFNlbmRl
ciB3aGVuIGxvYWRpbmcgdGhlIHRvcCBmcmFtZS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9n
dGsvRXZlbnRTZW5kZXIuaDogRGl0dG8uCisKIDIwMTAtMDUtMjcgIEx1aXogQWdvc3RpbmkgIDxs
dWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCAwMmMwYWJiOTc2ZWRiYTBiYmE3OGM2ZmUzZThj
NmM4YjY5ZDIxNmYyLi41YzM5MzdmNmMyNDU2YzhkZDE0MGMzNDYwNzQwMTgwNjJjYzk5ZWVkIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUu
Y3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5j
cHAKQEAgLTY2Myw3ICs2NjMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJWaWV3V2luZG93T2JqZWN0Q2xl
YXJlZChXZWJLaXRXZWJWaWV3KiB2aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbQogICAgIEFTU0VS
VCghZXhjZXB0aW9uKTsKIAogICAgIEpTU3RyaW5nUmVmIGV2ZW50U2VuZGVyU3RyID0gSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImV2ZW50U2VuZGVyIik7Ci0gICAgSlNWYWx1ZVJlZiBl
dmVudFNlbmRlciA9IG1ha2VFdmVudFNlbmRlcihjb250ZXh0KTsKKyAgICBKU1ZhbHVlUmVmIGV2
ZW50U2VuZGVyID0gbWFrZUV2ZW50U2VuZGVyKGNvbnRleHQsICF3ZWJraXRfd2ViX2ZyYW1lX2dl
dF9wYXJlbnQoZnJhbWUpKTsKICAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIHdpbmRv
d09iamVjdCwgZXZlbnRTZW5kZXJTdHIsIGV2ZW50U2VuZGVyLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCAwKTsKICAgICBKU1N0
cmluZ1JlbGVhc2UoZXZlbnRTZW5kZXJTdHIpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKaW5kZXggOWMyN2Q4Yzg5ZjBjMDA2MjhkY2JlNTJj
NzAwNjZkMDM0ZDliZDdmZC4uMGI5ZWY3M2ZlNTE1MjNiNmM2ZmFkN2EyNWU5ZDMzYjIzOGU3Y2Yz
NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVy
LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3Bw
CkBAIC00NSwyOCArNDUsMjcgQEAKICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1
ZGUgPHN0cmluZy5oPgogCi0vLyBUT0RPOiBDdXJyZW50bHkgZHJhZyBhbmQgZHJvcCByZWxhdGVk
IGNvZGUgaXMgbGVmdCBvdXQgYW5kCi0vLyBzaG91bGQgYmUgbWVyZ2VkIG9uY2Ugd2UgaGF2ZSBk
cmFnIGFuZCBkcm9wIHN1cHBvcnQgaW4gV2ViQ29yZS4KKy8vIEZJWE1FOiBJbXBsZW1lbnQgc3Vw
cG9ydCBmb3Igc3ludGhlc2l6aW5nIGRyb3AgZXZlbnRzLgogCiBleHRlcm4gIkMiIHsKICAgICBl
eHRlcm4gdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX2xheW91dChXZWJLaXRXZWJGcmFtZSogZnJhbWUp
OwogfQogCi1zdGF0aWMgYm9vbCBkb3duID0gZmFsc2U7Ci1zdGF0aWMgYm9vbCBjdXJyZW50RXZl
bnRCdXR0b24gPSAxOwotc3RhdGljIGJvb2wgZHJhZ01vZGUgPSB0cnVlOwotc3RhdGljIGJvb2wg
cmVwbGF5aW5nU2F2ZWRFdmVudHMgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRyYWdNb2RlOworc3Rh
dGljIGludCB0aW1lT2Zmc2V0ID0gMDsKKwogc3RhdGljIGludCBsYXN0TW91c2VQb3NpdGlvblg7
CiBzdGF0aWMgaW50IGxhc3RNb3VzZVBvc2l0aW9uWTsKLQogc3RhdGljIGludCBsYXN0Q2xpY2tQ
b3NpdGlvblg7CiBzdGF0aWMgaW50IGxhc3RDbGlja1Bvc2l0aW9uWTsKLXN0YXRpYyBpbnQgY2xp
Y2tDb3VudCA9IDA7CitzdGF0aWMgaW50IGxhc3RDbGlja1RpbWVPZmZzZXQ7CitzdGF0aWMgaW50
IGxhc3RDbGlja0J1dHRvbjsKK3N0YXRpYyBpbnQgYnV0dG9uQ3VycmVudGx5RG93bjsKK3N0YXRp
YyBpbnQgY2xpY2tDb3VudDsKIAogc3RydWN0IERlbGF5ZWRNZXNzYWdlIHsKICAgICBHZGtFdmVu
dCBldmVudDsKICAgICBndWxvbmcgZGVsYXk7Ci0gICAgZ2Jvb2xlYW4gaXNEcmFnRXZlbnQ7CiB9
OwogCiBzdGF0aWMgRGVsYXllZE1lc3NhZ2UgbXNnUXVldWVbMTAyNF07CkBAIC04NCw2ICs4Mywx
MCBAQCBlbnVtIEtleUxvY2F0aW9uQ29kZSB7CiAgICAgRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQg
ICAgICAgID0gMHgwMwogfTsKIAorc3RhdGljIHZvaWQgc2VuZE9yUXVldWVFdmVudChHZGtFdmVu
dCBldmVudCk7CitzdGF0aWMgdm9pZCBkaXNwYXRjaEV2ZW50KEdka0V2ZW50IGV2ZW50KTsKK3N0
YXRpYyBndWludCBnZXRTdGF0ZUZsYWdzKCk7CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGdldERyYWdN
b2RlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNT
dHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBkcmFnTW9kZSk7CkBAIC05NywxNCArMTAw
LDE3IEBAIHN0YXRpYyBib29sIHNldERyYWdNb2RlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGxlYXBG
b3J3YXJkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIC8vIEZJ
WE1FOiBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIGZvcndhcmQgbGVhcHMKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA+IDApIHsKKyAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZV0uZGVsYXkgPSBKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOworICAgICAgICB0
aW1lT2Zmc2V0ICs9IG1zZ1F1ZXVlW2VuZE9mUXVldWVdLmRlbGF5OworICAgICAgICBBU1NFUlQo
IWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisgICAgfQorCiAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBjb250ZXh0Q2xp
Y2tDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgd2Via2l0X3dl
Yl9mcmFtZV9sYXlvdXQobWFpbkZyYW1lKTsKLQogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3
ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwogICAgIGlmICghdmlldykK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwpAQCAtMTE2LDIy
ICsxMjIsMjAgQEAgc3RhdGljIEpTVmFsdWVSZWYgY29udGV4dENsaWNrQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW8KICAgICBldmVudC5idXR0b24ueSA9
IGxhc3RNb3VzZVBvc2l0aW9uWTsKICAgICBldmVudC5idXR0b24ud2luZG93ID0gR1RLX1dJREdF
VCh2aWV3KS0+d2luZG93OwogCi0gICAgZ2Jvb2xlYW4gcmV0dXJuX3ZhbDsKLSAgICBkb3duID0g
dHJ1ZTsKICAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9QUkVTUzsKLSAgICBnX3NpZ25hbF9l
bWl0X2J5X25hbWUodmlldywgImJ1dHRvbl9wcmVzc19ldmVudCIsICZldmVudCwgJnJldHVybl92
YWwpOwotCi0gICAgZG93biA9IGZhbHNlOworICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwog
ICAgIGV2ZW50LnR5cGUgPSBHREtfQlVUVE9OX1JFTEVBU0U7Ci0gICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKHZpZXcsICJidXR0b25fcmVsZWFzZV9ldmVudCIsICZldmVudCwgJnJldHVybl92YWwp
OworICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwogCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogfQogCiBzdGF0aWMgdm9pZCB1cGRhdGVDbGlja0NvdW50KGlu
dCBidXR0b24pCiB7Ci0gICAgLy8gRklYTUU6IHRha2UgdGhlIGxhc3QgY2xpY2tlZCBidXR0b24g
bnVtYmVyIGFuZCB0aGUgdGltZSBvZiBsYXN0IGNsaWNrIGludG8gYWNjb3VudC4KLSAgICBpZiAo
bGFzdENsaWNrUG9zaXRpb25YICE9IGxhc3RNb3VzZVBvc2l0aW9uWCB8fCBsYXN0Q2xpY2tQb3Np
dGlvblkgIT0gbGFzdE1vdXNlUG9zaXRpb25ZIHx8IGN1cnJlbnRFdmVudEJ1dHRvbiAhPSBidXR0
b24pCisgICAgaWYgKGxhc3RDbGlja1Bvc2l0aW9uWCAhPSBsYXN0TW91c2VQb3NpdGlvblgKKyAg
ICAgICAgfHwgbGFzdENsaWNrUG9zaXRpb25ZICE9IGxhc3RNb3VzZVBvc2l0aW9uWQorICAgICAg
ICB8fCBsYXN0Q2xpY2tCdXR0b24gIT0gYnV0dG9uCisgICAgICAgIHx8IHRpbWVPZmZzZXQgLSBs
YXN0Q2xpY2tUaW1lT2Zmc2V0ID49IDEpCiAgICAgICAgIGNsaWNrQ291bnQgPSAxOwogICAgIGVs
c2UKICAgICAgICAgY2xpY2tDb3VudCsrOwpAQCAtMTU0LDI0ICsxNTgsMjAgQEAgc3RhdGljIHZv
aWQgZ2V0Um9vdENvb3JkcyhHdGtXaWRnZXQqIHZpZXcsIGludCogcm9vdFgsIGludCogcm9vdFkp
CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlRG93bkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKKwogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2Zy
YW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCi0gICAgZG93biA9IHRydWU7Ci0K
ICAgICBHZGtFdmVudCBldmVudDsKICAgICBtZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoZXZlbnQp
KTsKLSAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9QUkVTUzsKICAgICBldmVudC5idXR0b24u
YnV0dG9uID0gMTsKIAogICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpIHsKLSAgICAgICAgZXZl
bnQuYnV0dG9uLmJ1dHRvbiA9IChpbnQpSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50
c1swXSwgZXhjZXB0aW9uKSArIDE7CisgICAgICAgIGV2ZW50LmJ1dHRvbi5idXR0b24gPSAoaW50
KShKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKSArIDE7
CiAgICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9u
KSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwogICAgIH0KIAotICAgIGN1cnJlbnRF
dmVudEJ1dHRvbiA9IGV2ZW50LmJ1dHRvbi5idXR0b247Ci0KICAgICBldmVudC5idXR0b24ueCA9
IGxhc3RNb3VzZVBvc2l0aW9uWDsKICAgICBldmVudC5idXR0b24ueSA9IGxhc3RNb3VzZVBvc2l0
aW9uWTsKICAgICBldmVudC5idXR0b24ud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+d2luZG93
OwpAQCAtMTg0LDQ1ICsxODQsMzEgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VEb3duQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLAogI2Vsc2UKICAg
ICBnZXRSb290Q29vcmRzKEdUS19XSURHRVQodmlldyksICZ4X3Jvb3QsICZ5X3Jvb3QpOwogI2Vu
ZGlmCi0KICAgICBldmVudC5idXR0b24ueF9yb290ID0geF9yb290OwogICAgIGV2ZW50LmJ1dHRv
bi55X3Jvb3QgPSB5X3Jvb3Q7CiAKLSAgICB1cGRhdGVDbGlja0NvdW50KGV2ZW50LmJ1dHRvbi5i
dXR0b24pOwotCi0gICAgaWYgKCFtc2dRdWV1ZVtlbmRPZlF1ZXVlXS5kZWxheSkgewotICAgICAg
ICB3ZWJraXRfd2ViX2ZyYW1lX2xheW91dChtYWluRnJhbWUpOworICAgIGV2ZW50LnR5cGUgPSBH
REtfQlVUVE9OX1BSRVNTOworICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwogCi0gICAgICAg
IGdib29sZWFuIHJldHVybl92YWw7Ci0gICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3
LCAiYnV0dG9uX3ByZXNzX2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuX3ZhbCk7Ci0gICAgICAgIGlm
IChjbGlja0NvdW50ID09IDIpIHsKLSAgICAgICAgICAgIGV2ZW50LnR5cGUgPSBHREtfMkJVVFRP
Tl9QUkVTUzsKLSAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9u
X3ByZXNzX2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuX3ZhbCk7Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UgewotICAgICAgICAvLyByZXBsYXlTYXZlZEV2ZW50cyBzaG91bGQgaGF2ZSB0aGUgcmVxdWly
ZWQgbG9naWMgdG8gbWFrZSBsZWFwRm9yd2FyZCBkZWxheXMgd29yawotICAgICAgICBtc2dRdWV1
ZVtlbmRPZlF1ZXVlKytdLmV2ZW50ID0gZXZlbnQ7Ci0gICAgICAgIHJlcGxheVNhdmVkRXZlbnRz
KCk7CisgICAgdXBkYXRlQ2xpY2tDb3VudChldmVudC5idXR0b24uYnV0dG9uKTsKKyAgICBpZiAo
Y2xpY2tDb3VudCA9PSAyKSB7CisgICAgICAgIGV2ZW50LnR5cGUgPSBHREtfMkJVVFRPTl9QUkVT
UzsKKyAgICAgICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7CiAgICAgfQogCisgICAgYnV0dG9u
Q3VycmVudGx5RG93biA9IGV2ZW50LmJ1dHRvbi5idXR0b247CiAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCiBzdGF0aWMgZ3VpbnQgZ2V0U3RhdGVGbGFncygp
CiB7Ci0gICAgZ3VpbnQgc3RhdGUgPSAwOwotCi0gICAgaWYgKGRvd24pIHsKLSAgICAgICAgaWYg
KGN1cnJlbnRFdmVudEJ1dHRvbiA9PSAxKQotICAgICAgICAgICAgc3RhdGUgPSBHREtfQlVUVE9O
MV9NQVNLOwotICAgICAgICBlbHNlIGlmIChjdXJyZW50RXZlbnRCdXR0b24gPT0gMikKLSAgICAg
ICAgICAgIHN0YXRlID0gR0RLX0JVVFRPTjJfTUFTSzsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVu
dEV2ZW50QnV0dG9uID09IDMpCi0gICAgICAgICAgICBzdGF0ZSA9IEdES19CVVRUT04zX01BU0s7
Ci0gICAgfSBlbHNlCi0gICAgICAgIHN0YXRlID0gMDsKLQotICAgIHJldHVybiBzdGF0ZTsKKyAg
ICBpZiAoYnV0dG9uQ3VycmVudGx5RG93biA9PSAxKQorICAgICAgICByZXR1cm4gR0RLX0JVVFRP
TjFfTUFTSzsKKyAgICBpZiAoYnV0dG9uQ3VycmVudGx5RG93biA9PSAyKQorICAgICAgICByZXR1
cm4gR0RLX0JVVFRPTjJfTUFTSzsKKyAgICBpZiAoYnV0dG9uQ3VycmVudGx5RG93biA9PSAzKQor
ICAgICAgICByZXR1cm4gR0RLX0JVVFRPTjNfTUFTSzsKKyAgICByZXR1cm4gMDsKIH0KIAogc3Rh
dGljIEpTVmFsdWVSZWYgbW91c2VVcENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKQEAgLTIzNCw3ICsyMjAsNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZVVwQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKUwogCiAgICAgR2Rr
RXZlbnQgZXZlbnQ7CiAgICAgbWVtc2V0KCZldmVudCwgMCwgc2l6ZW9mKGV2ZW50KSk7Ci0gICAg
ZXZlbnQudHlwZSA9IEdES19CVVRUT05fUkVMRUFTRTsKICAgICBldmVudC5idXR0b24uYnV0dG9u
ID0gMTsKIAogICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpIHsKQEAgLTI0MiwxNyArMjI3LDE4
IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlVXBDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTCiAgICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCkpOwogICAgIH0KIAotICAgIGN1cnJlbnRFdmVudEJ1dHRvbiA9IGV2ZW50LmJ1dHRvbi5idXR0
b247Ci0KICAgICBldmVudC5idXR0b24ueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsKICAgICBldmVu
dC5idXR0b24ueSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKICAgICBldmVudC5idXR0b24ud2luZG93
ID0gR1RLX1dJREdFVCh2aWV3KS0+d2luZG93OwotICAgIGV2ZW50LmJ1dHRvbi50aW1lID0gR0RL
X0NVUlJFTlRfVElNRTsKKworICAgIC8vIE1vdXNlIHVwICYgZG93biBldmVudHMgZGlzcGF0Y2hl
ZCB2aWEgZ19zaWduYWxfZW1pdF9ieV9uYW1lIG11c3Qgb2Zmc2V0CisgICAgLy8gdGhlaXIgdGlt
ZSB2YWx1ZSwgc28gdGhhdCBXZWJLaXQgY2FuIGRldGVjdCB3aGVyZSBzZXF1ZW5jZXMgb2YgbW91
c2UKKyAgICAvLyBjbGlja3MgYmVnaW4gYW5kIGVuZC4gVGhpcyBzaG91bGQgbm90IGludGVyZmVy
ZSB3aXRoIEdESyAgb3IgR1RLKyBldmVudAorICAgIC8vIHByb2Nlc3NpbmcsIGJlY2F1c2UgdGhl
IGV2ZW50IGlzIG9ubHkgc2VlbiBieSB0aGUgd2lkZ2V0LgorICAgIGV2ZW50LmJ1dHRvbi50aW1l
ID0gR0RLX0NVUlJFTlRfVElNRSArIHRpbWVPZmZzZXQ7CiAgICAgZXZlbnQuYnV0dG9uLmRldmlj
ZSA9IGdka19kZXZpY2VfZ2V0X2NvcmVfcG9pbnRlcigpOwogICAgIGV2ZW50LmJ1dHRvbi5zdGF0
ZSA9IGdldFN0YXRlRmxhZ3MoKTsKIAotICAgIGRvd24gPSBmYWxzZTsKLQogICAgIGludCB4X3Jv
b3QsIHlfcm9vdDsKICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLDE3LDMpCiAgICAgZ2RrX3dpbmRv
d19nZXRfcm9vdF9jb29yZHMoR1RLX1dJREdFVCh2aWV3KS0+d2luZG93LCBsYXN0TW91c2VQb3Np
dGlvblgsIGxhc3RNb3VzZVBvc2l0aW9uWSwgJnhfcm9vdCwgJnlfcm9vdCk7CkBAIC0yNjMsMjAg
KzI0OSwxNCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZVVwQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKUwogICAgIGV2ZW50LmJ1dHRvbi54X3Jv
b3QgPSB4X3Jvb3Q7CiAgICAgZXZlbnQuYnV0dG9uLnlfcm9vdCA9IHlfcm9vdDsKIAotICAgIGlm
ICgoZHJhZ01vZGUgJiYgIXJlcGxheWluZ1NhdmVkRXZlbnRzKSB8fCBtc2dRdWV1ZVtlbmRPZlF1
ZXVlXS5kZWxheSkgewotICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlXS5ldmVudCA9IGV2ZW50
OwotICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlKytdLmlzRHJhZ0V2ZW50ID0gdHJ1ZTsKLSAg
ICAgICAgcmVwbGF5U2F2ZWRFdmVudHMoKTsKLSAgICB9IGVsc2UgewotICAgICAgICB3ZWJraXRf
d2ViX2ZyYW1lX2xheW91dChtYWluRnJhbWUpOwotCi0gICAgICAgIGdib29sZWFuIHJldHVybl92
YWw7Ci0gICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9uX3JlbGVhc2Vf
ZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICB9Ci0KICAgICBsYXN0Q2xpY2tQb3Np
dGlvblggPSBsYXN0TW91c2VQb3NpdGlvblg7CiAgICAgbGFzdENsaWNrUG9zaXRpb25ZID0gbGFz
dE1vdXNlUG9zaXRpb25ZOworICAgIGxhc3RDbGlja0J1dHRvbiA9IGJ1dHRvbkN1cnJlbnRseURv
d247CisgICAgbGFzdENsaWNrVGltZU9mZnNldCA9IHRpbWVPZmZzZXQ7CisgICAgYnV0dG9uQ3Vy
cmVudGx5RG93biA9IDA7CiAKKyAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9SRUxFQVNFOwor
ICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKIH0KIApAQCAtMjk5LDcgKzI3OSwxMiBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBtb3VzZU1vdmVUb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbgogICAgIGV2ZW50LnR5cGUgPSBHREtfTU9USU9OX05PVElGWTsKICAgICBldmVudC5t
b3Rpb24ueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsKICAgICBldmVudC5tb3Rpb24ueSA9IGxhc3RN
b3VzZVBvc2l0aW9uWTsKLSAgICBldmVudC5tb3Rpb24udGltZSA9IEdES19DVVJSRU5UX1RJTUU7
CisKKyAgICAvLyBNb3VzZSB1cCAmIGRvd24gZXZlbnRzIGRpc3BhdGNoZWQgdmlhIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZSBtdXN0IG9mZnNldAorICAgIC8vIHRoZWlyIHRpbWUgdmFsdWUsIHNvIHRo
YXQgV2ViS2l0IGNhbiBkZXRlY3Qgd2hlcmUgc2VxdWVuY2VzIG9mIG1vdXNlCisgICAgLy8gY2xp
Y2tzIGJlZ2luIGFuZCBlbmQuIFRoaXMgc2hvdWxkIG5vdCBpbnRlcmZlcmUgd2l0aCBHREsgIG9y
IEdUSysgZXZlbnQKKyAgICAvLyBwcm9jZXNzaW5nLCBiZWNhdXNlIHRoZSBldmVudCBpcyBvbmx5
IHNlZW4gYnkgdGhlIHdpZGdldC4KKyAgICBldmVudC5tb3Rpb24udGltZSA9IEdES19DVVJSRU5U
X1RJTUUgKyB0aW1lT2Zmc2V0OwogICAgIGV2ZW50Lm1vdGlvbi53aW5kb3cgPSBHVEtfV0lER0VU
KHZpZXcpLT53aW5kb3c7CiAgICAgZXZlbnQubW90aW9uLmRldmljZSA9IGdka19kZXZpY2VfZ2V0
X2NvcmVfcG9pbnRlcigpOwogCkBAIC0zMDksMjIgKzI5NCwxMiBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBtb3VzZU1vdmVUb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbgogI2Vsc2UKICAgICBnZXRSb290Q29vcmRzKEdUS19XSURHRVQodmlldyksICZ4X3Jv
b3QsICZ5X3Jvb3QpOwogI2VuZGlmCi0KICAgICBldmVudC5tb3Rpb24ueF9yb290ID0geF9yb290
OwogICAgIGV2ZW50Lm1vdGlvbi55X3Jvb3QgPSB5X3Jvb3Q7Ci0gICAgCi0gICAgZXZlbnQubW90
aW9uLnN0YXRlID0gZ2V0U3RhdGVGbGFncygpOwogCi0gICAgaWYgKGRyYWdNb2RlICYmIGRvd24g
JiYgIXJlcGxheWluZ1NhdmVkRXZlbnRzKSB7Ci0gICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWVd
LmV2ZW50ID0gZXZlbnQ7Ci0gICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWUrK10uaXNEcmFnRXZl
bnQgPSB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0
KG1haW5GcmFtZSk7Ci0KLSAgICAgICAgZ2Jvb2xlYW4gcmV0dXJuX3ZhbDsKLSAgICAgICAgZ19z
aWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJtb3Rpb25fbm90aWZ5X2V2ZW50IiwgJmV2ZW50LCAm
cmV0dXJuX3ZhbCk7Ci0gICAgfQorICAgIGV2ZW50Lm1vdGlvbi5zdGF0ZSA9IGdldFN0YXRlRmxh
Z3MoKTsKIAorICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtMzYzLDE0ICszMzgsNyBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBtb3VzZVdoZWVsVG9DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3RpbwogICAgIGVsc2UKICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQo
KTsKIAotICAgIGlmIChkcmFnTW9kZSAmJiBkb3duICYmICFyZXBsYXlpbmdTYXZlZEV2ZW50cykg
ewotICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlXS5ldmVudCA9IGV2ZW50OwotICAgICAgICBt
c2dRdWV1ZVtlbmRPZlF1ZXVlKytdLmlzRHJhZ0V2ZW50ID0gdHJ1ZTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICB3ZWJraXRfd2ViX2ZyYW1lX2xheW91dChtYWluRnJhbWUpOwotICAgICAgICBndGtf
bWFpbl9kb19ldmVudCgmZXZlbnQpOwotICAgIH0KLQorICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZl
bnQpOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAt
MzgzLDQ5ICszNTEsNTQgQEAgc3RhdGljIEpTVmFsdWVSZWYgYmVnaW5EcmFnV2l0aEZpbGVzQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGYKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXZvaWQgcmVwbGF5U2F2ZWRFdmVudHMo
KQorc3RhdGljIHZvaWQgc2VuZE9yUXVldWVFdmVudChHZGtFdmVudCBldmVudCkKIHsKLSAgICAv
LyBGSVhNRTogVGhpcyBkb2Vzbid0IGRlYWwgd2l0aCBmb3J3YXJkIGxlYXBzLCBidXQgaXQgc2hv
dWxkLgorICAgIC8vIE1vdXNlIG1vdmUgZXZlbnRzIGFyZSBxdWV1ZWQgaWYgdGhlIHByZXZpb3Vz
IGV2ZW50IHdhcyBxdWV1ZWQgb3IgaWYgYQorICAgIC8vIGRlbGF5IHdhcyBzZXQgdXAgYnkgbGVh
cEZvcndhcmQoKS4KKyAgICBpZiAoZW5kT2ZRdWV1ZSAhPSBzdGFydE9mUXVldWUgfHwgbXNnUXVl
dWVbZW5kT2ZRdWV1ZV0uZGVsYXkpIHsKKyAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZSsrXS5l
dmVudCA9IGV2ZW50OworICAgICAgICByZXBsYXlTYXZlZEV2ZW50cygpOworICAgICAgICByZXR1
cm47CisgICAgfQogCisgICAgZGlzcGF0Y2hFdmVudChldmVudCk7Cit9CisKK3N0YXRpYyB2b2lk
IGRpc3BhdGNoRXZlbnQoR2RrRXZlbnQgZXZlbnQpCit7CisgICAgd2Via2l0X3dlYl9mcmFtZV9s
YXlvdXQobWFpbkZyYW1lKTsKICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9m
cmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHJlcGxheWluZ1NhdmVkRXZlbnRzID0gdHJ1ZTsKLQotICAgIGZvciAodW5z
aWduZWQgcXVldWVQb3MgPSAwOyBxdWV1ZVBvcyA8IGVuZE9mUXVldWU7IHF1ZXVlUG9zKyspIHsK
LSAgICAgICAgR2RrRXZlbnQgZXZlbnQgPSBtc2dRdWV1ZVtxdWV1ZVBvc10uZXZlbnQ7Ci0gICAg
ICAgIGdib29sZWFuIHJldHVybl92YWw7Ci0KLSAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7
Ci0gICAgICAgIGNhc2UgR0RLX0JVVFRPTl9SRUxFQVNFOgotICAgICAgICAgICAgZ19zaWduYWxf
ZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25fcmVsZWFzZV9ldmVudCIsICZldmVudCwgJnJldHVy
bl92YWwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0RLX0JVVFRPTl9QUkVT
UzoKLSAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAiYnV0dG9uX3ByZXNz
X2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuX3ZhbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBHREtfTU9USU9OX05PVElGWToKLSAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlf
bmFtZSh2aWV3LCAibW90aW9uX25vdGlmeV9ldmVudCIsICZldmVudCwgJnJldHVybl92YWwpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQorICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGlmIChldmVudC50
eXBlID09IEdES19CVVRUT05fUFJFU1MgfHwgZXZlbnQudHlwZSA9PSBHREtfMkJVVFRPTl9QUkVT
UykKKyAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25fcHJlc3NfZXZl
bnQiLCAmZXZlbnQsICZyZXR1cm5WYWx1ZSk7CisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSA9PSBH
REtfQlVUVE9OX1JFTEVBU0UpCisgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh2aWV3LCAi
YnV0dG9uX3JlbGVhc2VfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5WYWx1ZSk7CisgICAgZWxzZSBp
ZiAoZXZlbnQudHlwZSA9PSBHREtfTU9USU9OX05PVElGWSkKKyAgICAgICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKHZpZXcsICJtb3Rpb25fbm90aWZ5X2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuVmFs
dWUpOworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gR0RLX1NDUk9MTCkKKyAgICAgICAgZ3Rr
X21haW5fZG9fZXZlbnQoJmV2ZW50KTsKK30KIAotICAgICAgICBzdGFydE9mUXVldWUrKzsKLSAg
ICB9Cit2b2lkIHJlcGxheVNhdmVkRXZlbnRzKCkKK3sKKyAgICAvLyBGSVhNRTogRXZlbnR1YWxs
eSB3ZSBtYXkgbmVlZCB0byBoYXZlIG1vcmUgc29waGlzdGljYXRlZCBsb2dpYyB0bworICAgIC8v
IHRyYWNrIGRyYWctYW5kLWRyb3Agb3BlcmF0aW9ucy4KKworICAgIC8vIEZpcnN0IHNlbmQgYWxs
IHRoZSBldmVudHMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgc2VudAorICAgIHdoaWxlIChzdGFydE9m
UXVldWUgPCBlbmRPZlF1ZXVlKSB7CisgICAgICAgIGlmIChtc2dRdWV1ZVtzdGFydE9mUXVldWVd
LmRlbGF5KSB7CisgICAgICAgICAgICBnX3VzbGVlcChtc2dRdWV1ZVtzdGFydE9mUXVldWVdLmRl
bGF5ICogMTAwMCk7CisgICAgICAgICAgICBtc2dRdWV1ZVtzdGFydE9mUXVldWVdLmRlbGF5ID0g
MDsKKyAgICAgICAgfQogCi0gICAgaW50IG51bVF1ZXVlZE1lc3NhZ2VzID0gZW5kT2ZRdWV1ZSAt
IHN0YXJ0T2ZRdWV1ZTsKLSAgICBpZiAoIW51bVF1ZXVlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN0
YXJ0T2ZRdWV1ZSA9IDA7Ci0gICAgICAgIGVuZE9mUXVldWUgPSAwOwotICAgICAgICByZXBsYXlp
bmdTYXZlZEV2ZW50cyA9IGZhbHNlOwotICAgICAgICByZXR1cm47CisgICAgICAgIGRpc3BhdGNo
RXZlbnQobXNnUXVldWVbc3RhcnRPZlF1ZXVlKytdLmV2ZW50KTsKICAgICB9CiAKICAgICBzdGFy
dE9mUXVldWUgPSAwOwogICAgIGVuZE9mUXVldWUgPSAwOwotCi0gICAgcmVwbGF5aW5nU2F2ZWRF
dmVudHMgPSBmYWxzZTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYga2V5RG93bkNhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTY2MSwxNyArNjM0LDI0IEBAIHN0YXRpYyBK
U0NsYXNzUmVmIGdldENsYXNzKEpTQ29udGV4dFJlZiBjb250ZXh0KQogICAgIHJldHVybiBldmVu
dFNlbmRlckNsYXNzOwogfQogCi1KU09iamVjdFJlZiBtYWtlRXZlbnRTZW5kZXIoSlNDb250ZXh0
UmVmIGNvbnRleHQpCitKU09iamVjdFJlZiBtYWtlRXZlbnRTZW5kZXIoSlNDb250ZXh0UmVmIGNv
bnRleHQsIGJvb2wgaXNUb3BGcmFtZSkKIHsKLSAgICBkb3duID0gZmFsc2U7Ci0gICAgZHJhZ01v
ZGUgPSB0cnVlOwotICAgIGxhc3RNb3VzZVBvc2l0aW9uWCA9IGxhc3RNb3VzZVBvc2l0aW9uWSA9
IDA7Ci0gICAgbGFzdENsaWNrUG9zaXRpb25YID0gbGFzdENsaWNrUG9zaXRpb25ZID0gMDsKLQot
ICAgIGlmICghcmVwbGF5aW5nU2F2ZWRFdmVudHMpIHsKLSAgICAgICAgLy8gVGhpcyBmdW5jdGlv
biBjYW4gYmUgY2FsbGVkIGluIHRoZSBtaWRkbGUgb2YgYSB0ZXN0LCBldmVuCi0gICAgICAgIC8v
IHdoaWxlIHJlcGxheWluZyBzYXZlZCBldmVudHMuIFJlc2V0dGluZyB0aGVzZSB3aGlsZSBkb2lu
ZyB0aGF0Ci0gICAgICAgIC8vIGNhbiBicmVhayB0aGluZ3MuCisgICAgaWYgKGlzVG9wRnJhbWUp
IHsKKyAgICAgICAgZHJhZ01vZGUgPSB0cnVlOworCisgICAgICAgIC8vIEZseSBmb3J3YXJkIGlu
IHRpbWUgb25lIHNlY29uZCB3aGVuIHRoZSBtYWluIGZyYW1lIGxvYWRzLiBUaGlzIHdpbGwKKyAg
ICAgICAgLy8gZW5zdXJlIHRoYXQgd2hlbiBhIHRlc3QgYmVnaW5zIGNsaWNraW5nIGluIHRoZSBz
YW1lIGxvY2F0aW9uIGFzCisgICAgICAgIC8vIGEgcHJldmlvdXMgdGVzdCwgdGhvc2UgY2xpY2tz
IHdvbid0IGJlIGludGVycHJldGVkIGFzIGNvbnRpbnVhdGlvbnMKKyAgICAgICAgLy8gb2YgdGhl
IHByZXZpb3VzIHRlc3QncyBjbGljayBzZXF1ZW5jZXMuCisgICAgICAgIHRpbWVPZmZzZXQgKz0g
MTAwMDsKKworICAgICAgICBsYXN0TW91c2VQb3NpdGlvblggPSBsYXN0TW91c2VQb3NpdGlvblkg
PSAwOworICAgICAgICBsYXN0Q2xpY2tQb3NpdGlvblggPSBsYXN0Q2xpY2tQb3NpdGlvblkgPSAw
OworICAgICAgICBsYXN0Q2xpY2tUaW1lT2Zmc2V0ID0gMDsKKyAgICAgICAgbGFzdENsaWNrQnV0
dG9uID0gMDsKKyAgICAgICAgYnV0dG9uQ3VycmVudGx5RG93biA9IDA7CisgICAgICAgIGNsaWNr
Q291bnQgPSAwOworCiAgICAgICAgIGVuZE9mUXVldWUgPSAwOwogICAgICAgICBzdGFydE9mUXVl
dWUgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9FdmVudFNlbmRlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2Vu
ZGVyLmgKaW5kZXggMjcyZThhOTQwMjA3OWQ5MjcyYzAxNTA4N2I2YmVkOTdhNDk0MjJjYi4uY2Uz
M2NjYzk1MmFjYTU2MDdkYTZiNGE0ODNjNjA3Y2VlOTkxNmNiOCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmgKKysrIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwogdHlwZWRlZiBz
dHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNPYmplY3RSZWY7CiAKLUpTT2JqZWN0UmVmIG1ha2VFdmVu
dFNlbmRlcihKU0NvbnRleHRSZWYgY29udGV4dCk7CitKU09iamVjdFJlZiBtYWtlRXZlbnRTZW5k
ZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgaXNUb3BGcmFtZSk7CiB2b2lkIHJlcGxheVNh
dmVkRXZlbnRzKCk7CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57317</attachid>
            <date>2010-05-28 04:50:03 -0700</date>
            <delta_ts>2010-06-01 09:24:01 -0700</delta_ts>
            <desc>Rudimentary leapForward support (small fix)</desc>
            <filename>bug-38853-20100528135001.patch</filename>
            <type>text/plain</type>
            <size>18430</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0YmFjNjBmZjkyODQzY2YxNmJlYjI2YWZmNTNiZjUxYTAzMmMxNmE0Li42ZjhjYzUx
YTRiYmM1MmQ3ZjkwMDliNGUyNTcwMzAyNWM0MDIwZGEzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTAtMDUtMjcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIERvdWJs
ZSBjbGlja3MgY2F1c2UgdGhyZWUgYnV0dG9uIHByZXNzIGV2ZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NTMKKworICAgICAgICBBZGQgcnVk
aW1lbnRhcnkgbGVhcEZvcndhcmQgc3VwcG9ydCB0byB0aGUgR1RLKyBEUlQuIGxlYXBGb3J3YXJk
IGFsbG93cyBhIHRlc3QKKyAgICAgICAgdG8gcGF1c2UgZm9yIGEgc3BlY2lmaWVkIGFtb3VudCBv
ZiB0aW1lLiBJdCBpcyB1c2VkIGluIHRoZSBwcm9jZXNzaW5nIG9mIGRyYWctCisgICAgICAgIC1h
bmQtZHJvcCBkYXRhIGFzIHdlbGwgYXMgdG8gc2VwYXJhdGUgZGlzdGluY3QgbW91c2UgZG91Ymxl
LWNsaWNrcyBpbiBzb21lIHRlc3RzLgorICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdGVzdHMg
dGhhdCByZWx5IG9uIHRoZSBsYXR0ZXIgYmVoYXZpb3IgdG8gcGFzcy4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgICh3ZWJWaWV3V2lu
ZG93T2JqZWN0Q2xlYXJlZCk6IE9ubHkgaW5pdGlhbGl6ZSB0aGUgRXZlbnRTZW5kZXIgd2hlbiBs
b2FkaW5nIHRoZSB0b3AgZnJhbWUuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50
U2VuZGVyLmNwcDoKKyAgICAgICAgKGxlYXBGb3J3YXJkQ2FsbGJhY2spOiBBZGQgc3VwcG9ydCBm
b3IgYWRqdXN0aW5nIHRoZSB0aW1lIG9mZnNldCBvbiBsZWFwRm9yd2FyZCgpLgorICAgICAgICAo
Y29udGV4dENsaWNrQ2FsbGJhY2spOiBVc2Ugc2VuZE9yUXVldWVFdmVudC4KKyAgICAgICAgKHVw
ZGF0ZUNsaWNrQ291bnQpOiBUYWtlIHRoZSB0aW1lIG9mZnNldCBpbnRvIGFjY291bnQgd2hlbiBj
b3VudGluZyBjbGlja3MuCisgICAgICAgIChtb3VzZURvd25DYWxsYmFjayk6IFVzZSBzZW5kT3JR
dWV1ZUV2ZW50LgorICAgICAgICAoZ2V0U3RhdGVGbGFncyk6IENoYW5nZSBkb3duL2N1cnJlbnRF
dmVudEJ1dHRvbiBpbnRvIGJ1dHRvbkN1cnJlbnRseURvd24vbGFzdENsaWNrQnV0dG9uLgorICAg
ICAgICAobW91c2VVcENhbGxiYWNrKTogVXNlIHNlbmRPclF1ZXVlRXZlbnQuCisgICAgICAgICht
b3VzZU1vdmVUb0NhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChtb3VzZVdoZWVsVG9DYWxsYmFj
ayk6IERpdHRvLgorICAgICAgICAoc2VuZE9yUXVldWVFdmVudCk6IEFkZGVkLgorICAgICAgICAo
ZGlzcGF0Y2hFdmVudCk6IEFkZGVkLgorICAgICAgICAocmVwbGF5U2F2ZWRFdmVudHMpOiBQYXVz
ZSB3aGVuIGFuIGV2ZW50IGhhcyBhIGRlbGF5IGFuZCBkZWZlciB0byBkaXNwYXRjaEV2ZW50Lgor
ICAgICAgICAobWFrZUV2ZW50U2VuZGVyKTogT25seSBpbml0aWFsaXplIHRoZSBFdmVudFNlbmRl
ciB3aGVuIGxvYWRpbmcgdGhlIHRvcCBmcmFtZS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9n
dGsvRXZlbnRTZW5kZXIuaDogRGl0dG8uCisKIDIwMTAtMDUtMjcgIEx1aXogQWdvc3RpbmkgIDxs
dWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCAwMmMwYWJiOTc2ZWRiYTBiYmE3OGM2ZmUzZThj
NmM4YjY5ZDIxNmYyLi41YzM5MzdmNmMyNDU2YzhkZDE0MGMzNDYwNzQwMTgwNjJjYzk5ZWVkIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUu
Y3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5j
cHAKQEAgLTY2Myw3ICs2NjMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJWaWV3V2luZG93T2JqZWN0Q2xl
YXJlZChXZWJLaXRXZWJWaWV3KiB2aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbQogICAgIEFTU0VS
VCghZXhjZXB0aW9uKTsKIAogICAgIEpTU3RyaW5nUmVmIGV2ZW50U2VuZGVyU3RyID0gSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImV2ZW50U2VuZGVyIik7Ci0gICAgSlNWYWx1ZVJlZiBl
dmVudFNlbmRlciA9IG1ha2VFdmVudFNlbmRlcihjb250ZXh0KTsKKyAgICBKU1ZhbHVlUmVmIGV2
ZW50U2VuZGVyID0gbWFrZUV2ZW50U2VuZGVyKGNvbnRleHQsICF3ZWJraXRfd2ViX2ZyYW1lX2dl
dF9wYXJlbnQoZnJhbWUpKTsKICAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIHdpbmRv
d09iamVjdCwgZXZlbnRTZW5kZXJTdHIsIGV2ZW50U2VuZGVyLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCAwKTsKICAgICBKU1N0
cmluZ1JlbGVhc2UoZXZlbnRTZW5kZXJTdHIpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKaW5kZXggOWMyN2Q4Yzg5ZjBjMDA2MjhkY2JlNTJj
NzAwNjZkMDM0ZDliZDdmZC4uZmFjMWQ5ZGQyZDNmNzNiZmY0MjhkODI1ZWEzODM0OTRjNzZlNGVl
MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVy
LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3Bw
CkBAIC00NSwyOCArNDUsMjcgQEAKICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1
ZGUgPHN0cmluZy5oPgogCi0vLyBUT0RPOiBDdXJyZW50bHkgZHJhZyBhbmQgZHJvcCByZWxhdGVk
IGNvZGUgaXMgbGVmdCBvdXQgYW5kCi0vLyBzaG91bGQgYmUgbWVyZ2VkIG9uY2Ugd2UgaGF2ZSBk
cmFnIGFuZCBkcm9wIHN1cHBvcnQgaW4gV2ViQ29yZS4KKy8vIEZJWE1FOiBJbXBsZW1lbnQgc3Vw
cG9ydCBmb3Igc3ludGhlc2l6aW5nIGRyb3AgZXZlbnRzLgogCiBleHRlcm4gIkMiIHsKICAgICBl
eHRlcm4gdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX2xheW91dChXZWJLaXRXZWJGcmFtZSogZnJhbWUp
OwogfQogCi1zdGF0aWMgYm9vbCBkb3duID0gZmFsc2U7Ci1zdGF0aWMgYm9vbCBjdXJyZW50RXZl
bnRCdXR0b24gPSAxOwotc3RhdGljIGJvb2wgZHJhZ01vZGUgPSB0cnVlOwotc3RhdGljIGJvb2wg
cmVwbGF5aW5nU2F2ZWRFdmVudHMgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRyYWdNb2RlOworc3Rh
dGljIGludCB0aW1lT2Zmc2V0ID0gMDsKKwogc3RhdGljIGludCBsYXN0TW91c2VQb3NpdGlvblg7
CiBzdGF0aWMgaW50IGxhc3RNb3VzZVBvc2l0aW9uWTsKLQogc3RhdGljIGludCBsYXN0Q2xpY2tQ
b3NpdGlvblg7CiBzdGF0aWMgaW50IGxhc3RDbGlja1Bvc2l0aW9uWTsKLXN0YXRpYyBpbnQgY2xp
Y2tDb3VudCA9IDA7CitzdGF0aWMgaW50IGxhc3RDbGlja1RpbWVPZmZzZXQ7CitzdGF0aWMgaW50
IGxhc3RDbGlja0J1dHRvbjsKK3N0YXRpYyBpbnQgYnV0dG9uQ3VycmVudGx5RG93bjsKK3N0YXRp
YyBpbnQgY2xpY2tDb3VudDsKIAogc3RydWN0IERlbGF5ZWRNZXNzYWdlIHsKICAgICBHZGtFdmVu
dCBldmVudDsKICAgICBndWxvbmcgZGVsYXk7Ci0gICAgZ2Jvb2xlYW4gaXNEcmFnRXZlbnQ7CiB9
OwogCiBzdGF0aWMgRGVsYXllZE1lc3NhZ2UgbXNnUXVldWVbMTAyNF07CkBAIC04NCw2ICs4Mywx
MCBAQCBlbnVtIEtleUxvY2F0aW9uQ29kZSB7CiAgICAgRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQg
ICAgICAgID0gMHgwMwogfTsKIAorc3RhdGljIHZvaWQgc2VuZE9yUXVldWVFdmVudChHZGtFdmVu
dCBldmVudCk7CitzdGF0aWMgdm9pZCBkaXNwYXRjaEV2ZW50KEdka0V2ZW50IGV2ZW50KTsKK3N0
YXRpYyBndWludCBnZXRTdGF0ZUZsYWdzKCk7CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGdldERyYWdN
b2RlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNT
dHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBkcmFnTW9kZSk7CkBAIC05NywxNCArMTAw
LDE3IEBAIHN0YXRpYyBib29sIHNldERyYWdNb2RlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGxlYXBG
b3J3YXJkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIC8vIEZJ
WE1FOiBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIGZvcndhcmQgbGVhcHMKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA+IDApIHsKKyAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZV0uZGVsYXkgPSBKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOworICAgICAgICB0
aW1lT2Zmc2V0ICs9IG1zZ1F1ZXVlW2VuZE9mUXVldWVdLmRlbGF5OworICAgICAgICBBU1NFUlQo
IWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisgICAgfQorCiAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBjb250ZXh0Q2xp
Y2tDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgd2Via2l0X3dl
Yl9mcmFtZV9sYXlvdXQobWFpbkZyYW1lKTsKLQogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3
ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwogICAgIGlmICghdmlldykK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwpAQCAtMTE2LDIy
ICsxMjIsMjAgQEAgc3RhdGljIEpTVmFsdWVSZWYgY29udGV4dENsaWNrQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW8KICAgICBldmVudC5idXR0b24ueSA9
IGxhc3RNb3VzZVBvc2l0aW9uWTsKICAgICBldmVudC5idXR0b24ud2luZG93ID0gR1RLX1dJREdF
VCh2aWV3KS0+d2luZG93OwogCi0gICAgZ2Jvb2xlYW4gcmV0dXJuX3ZhbDsKLSAgICBkb3duID0g
dHJ1ZTsKICAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9QUkVTUzsKLSAgICBnX3NpZ25hbF9l
bWl0X2J5X25hbWUodmlldywgImJ1dHRvbl9wcmVzc19ldmVudCIsICZldmVudCwgJnJldHVybl92
YWwpOwotCi0gICAgZG93biA9IGZhbHNlOworICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwog
ICAgIGV2ZW50LnR5cGUgPSBHREtfQlVUVE9OX1JFTEVBU0U7Ci0gICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKHZpZXcsICJidXR0b25fcmVsZWFzZV9ldmVudCIsICZldmVudCwgJnJldHVybl92YWwp
OworICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZlbnQpOwogCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogfQogCiBzdGF0aWMgdm9pZCB1cGRhdGVDbGlja0NvdW50KGlu
dCBidXR0b24pCiB7Ci0gICAgLy8gRklYTUU6IHRha2UgdGhlIGxhc3QgY2xpY2tlZCBidXR0b24g
bnVtYmVyIGFuZCB0aGUgdGltZSBvZiBsYXN0IGNsaWNrIGludG8gYWNjb3VudC4KLSAgICBpZiAo
bGFzdENsaWNrUG9zaXRpb25YICE9IGxhc3RNb3VzZVBvc2l0aW9uWCB8fCBsYXN0Q2xpY2tQb3Np
dGlvblkgIT0gbGFzdE1vdXNlUG9zaXRpb25ZIHx8IGN1cnJlbnRFdmVudEJ1dHRvbiAhPSBidXR0
b24pCisgICAgaWYgKGxhc3RDbGlja1Bvc2l0aW9uWCAhPSBsYXN0TW91c2VQb3NpdGlvblgKKyAg
ICAgICAgfHwgbGFzdENsaWNrUG9zaXRpb25ZICE9IGxhc3RNb3VzZVBvc2l0aW9uWQorICAgICAg
ICB8fCBsYXN0Q2xpY2tCdXR0b24gIT0gYnV0dG9uCisgICAgICAgIHx8IHRpbWVPZmZzZXQgLSBs
YXN0Q2xpY2tUaW1lT2Zmc2V0ID49IDEpCiAgICAgICAgIGNsaWNrQ291bnQgPSAxOwogICAgIGVs
c2UKICAgICAgICAgY2xpY2tDb3VudCsrOwpAQCAtMTU4LDI0ICsxNjIsMjQgQEAgc3RhdGljIEpT
VmFsdWVSZWYgbW91c2VEb3duQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLAogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogCi0gICAgZG93biA9IHRydWU7Ci0KICAgICBHZGtFdmVudCBl
dmVudDsKICAgICBtZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoZXZlbnQpKTsKLSAgICBldmVudC50
eXBlID0gR0RLX0JVVFRPTl9QUkVTUzsKICAgICBldmVudC5idXR0b24uYnV0dG9uID0gMTsKIAog
ICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpIHsKLSAgICAgICAgZXZlbnQuYnV0dG9uLmJ1dHRv
biA9IChpbnQpSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9u
KSArIDE7CisgICAgICAgIGV2ZW50LmJ1dHRvbi5idXR0b24gPSAoaW50KShKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKSArIDE7CiAgICAgICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKSwgSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCkpOwogICAgIH0KIAotICAgIGN1cnJlbnRFdmVudEJ1dHRvbiA9IGV2
ZW50LmJ1dHRvbi5idXR0b247Ci0KICAgICBldmVudC5idXR0b24ueCA9IGxhc3RNb3VzZVBvc2l0
aW9uWDsKICAgICBldmVudC5idXR0b24ueSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKICAgICBldmVu
dC5idXR0b24ud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+d2luZG93OwotICAgIGV2ZW50LmJ1
dHRvbi50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKKworICAgIC8vIE1vdXNlIHVwICYgZG93biBl
dmVudHMgZGlzcGF0Y2hlZCB2aWEgZ19zaWduYWxfZW1pdF9ieV9uYW1lIG11c3Qgb2Zmc2V0Cisg
ICAgLy8gdGhlaXIgdGltZSB2YWx1ZSwgc28gdGhhdCBXZWJLaXQgY2FuIGRldGVjdCB3aGVyZSBz
ZXF1ZW5jZXMgb2YgbW91c2UKKyAgICAvLyBjbGlja3MgYmVnaW4gYW5kIGVuZC4gVGhpcyBzaG91
bGQgbm90IGludGVyZmVyZSB3aXRoIEdESyBvciBHVEsrIGV2ZW50CisgICAgLy8gcHJvY2Vzc2lu
ZywgYmVjYXVzZSB0aGUgZXZlbnQgaXMgb25seSBzZWVuIGJ5IHRoZSB3aWRnZXQuCisgICAgZXZl
bnQubW90aW9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FICsgdGltZU9mZnNldDsKICAgICBldmVu
dC5idXR0b24uZGV2aWNlID0gZ2RrX2RldmljZV9nZXRfY29yZV9wb2ludGVyKCk7CiAKICAgICBp
bnQgeF9yb290LCB5X3Jvb3Q7CkBAIC0xODQsNDUgKzE4OCwzMSBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBtb3VzZURvd25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sCiAjZWxzZQogICAgIGdldFJvb3RDb29yZHMoR1RLX1dJREdFVCh2aWV3KSwgJnhfcm9v
dCwgJnlfcm9vdCk7CiAjZW5kaWYKLQogICAgIGV2ZW50LmJ1dHRvbi54X3Jvb3QgPSB4X3Jvb3Q7
CiAgICAgZXZlbnQuYnV0dG9uLnlfcm9vdCA9IHlfcm9vdDsKIAotICAgIHVwZGF0ZUNsaWNrQ291
bnQoZXZlbnQuYnV0dG9uLmJ1dHRvbik7Ci0KLSAgICBpZiAoIW1zZ1F1ZXVlW2VuZE9mUXVldWVd
LmRlbGF5KSB7Ci0gICAgICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7Cisg
ICAgZXZlbnQudHlwZSA9IEdES19CVVRUT05fUFJFU1M7CisgICAgc2VuZE9yUXVldWVFdmVudChl
dmVudCk7CiAKLSAgICAgICAgZ2Jvb2xlYW4gcmV0dXJuX3ZhbDsKLSAgICAgICAgZ19zaWduYWxf
ZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25fcHJlc3NfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5f
dmFsKTsKLSAgICAgICAgaWYgKGNsaWNrQ291bnQgPT0gMikgewotICAgICAgICAgICAgZXZlbnQu
dHlwZSA9IEdES18yQlVUVE9OX1BSRVNTOwotICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9u
YW1lKHZpZXcsICJidXR0b25fcHJlc3NfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIHJlcGxheVNhdmVkRXZlbnRzIHNob3Vs
ZCBoYXZlIHRoZSByZXF1aXJlZCBsb2dpYyB0byBtYWtlIGxlYXBGb3J3YXJkIGRlbGF5cyB3b3Jr
Ci0gICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWUrK10uZXZlbnQgPSBldmVudDsKLSAgICAgICAg
cmVwbGF5U2F2ZWRFdmVudHMoKTsKKyAgICB1cGRhdGVDbGlja0NvdW50KGV2ZW50LmJ1dHRvbi5i
dXR0b24pOworICAgIGlmIChjbGlja0NvdW50ID09IDIpIHsKKyAgICAgICAgZXZlbnQudHlwZSA9
IEdES18yQlVUVE9OX1BSRVNTOworICAgICAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKICAg
ICB9CiAKKyAgICBidXR0b25DdXJyZW50bHlEb3duID0gZXZlbnQuYnV0dG9uLmJ1dHRvbjsKICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKIHN0YXRpYyBndWlu
dCBnZXRTdGF0ZUZsYWdzKCkKIHsKLSAgICBndWludCBzdGF0ZSA9IDA7Ci0KLSAgICBpZiAoZG93
bikgewotICAgICAgICBpZiAoY3VycmVudEV2ZW50QnV0dG9uID09IDEpCi0gICAgICAgICAgICBz
dGF0ZSA9IEdES19CVVRUT04xX01BU0s7Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRFdmVudEJ1
dHRvbiA9PSAyKQotICAgICAgICAgICAgc3RhdGUgPSBHREtfQlVUVE9OMl9NQVNLOwotICAgICAg
ICBlbHNlIGlmIChjdXJyZW50RXZlbnRCdXR0b24gPT0gMykKLSAgICAgICAgICAgIHN0YXRlID0g
R0RLX0JVVFRPTjNfTUFTSzsKLSAgICB9IGVsc2UKLSAgICAgICAgc3RhdGUgPSAwOwotCi0gICAg
cmV0dXJuIHN0YXRlOworICAgIGlmIChidXR0b25DdXJyZW50bHlEb3duID09IDEpCisgICAgICAg
IHJldHVybiBHREtfQlVUVE9OMV9NQVNLOworICAgIGlmIChidXR0b25DdXJyZW50bHlEb3duID09
IDIpCisgICAgICAgIHJldHVybiBHREtfQlVUVE9OMl9NQVNLOworICAgIGlmIChidXR0b25DdXJy
ZW50bHlEb3duID09IDMpCisgICAgICAgIHJldHVybiBHREtfQlVUVE9OM19NQVNLOworICAgIHJl
dHVybiAwOwogfQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZVVwQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMjM0LDcgKzIyNCw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IG1vdXNlVXBDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTCiAKICAgICBHZGtFdmVudCBldmVudDsKICAgICBtZW1zZXQoJmV2ZW50LCAwLCBzaXpl
b2YoZXZlbnQpKTsKLSAgICBldmVudC50eXBlID0gR0RLX0JVVFRPTl9SRUxFQVNFOwogICAgIGV2
ZW50LmJ1dHRvbi5idXR0b24gPSAxOwogCiAgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkgewpA
QCAtMjQyLDE3ICsyMzEsMTggQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VVcENhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlMKICAgICAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pLCBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KSk7CiAgICAgfQogCi0gICAgY3VycmVudEV2ZW50QnV0dG9uID0g
ZXZlbnQuYnV0dG9uLmJ1dHRvbjsKLQogICAgIGV2ZW50LmJ1dHRvbi54ID0gbGFzdE1vdXNlUG9z
aXRpb25YOwogICAgIGV2ZW50LmJ1dHRvbi55ID0gbGFzdE1vdXNlUG9zaXRpb25ZOwogICAgIGV2
ZW50LmJ1dHRvbi53aW5kb3cgPSBHVEtfV0lER0VUKHZpZXcpLT53aW5kb3c7Ci0gICAgZXZlbnQu
YnV0dG9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOworCisgICAgLy8gTW91c2UgdXAgJiBkb3du
IGV2ZW50cyBkaXNwYXRjaGVkIHZpYSBnX3NpZ25hbF9lbWl0X2J5X25hbWUgbXVzdCBvZmZzZXQK
KyAgICAvLyB0aGVpciB0aW1lIHZhbHVlLCBzbyB0aGF0IFdlYktpdCBjYW4gZGV0ZWN0IHdoZXJl
IHNlcXVlbmNlcyBvZiBtb3VzZQorICAgIC8vIGNsaWNrcyBiZWdpbiBhbmQgZW5kLiBUaGlzIHNo
b3VsZCBub3QgaW50ZXJmZXJlIHdpdGggR0RLIG9yIEdUSysgZXZlbnQKKyAgICAvLyBwcm9jZXNz
aW5nLCBiZWNhdXNlIHRoZSBldmVudCBpcyBvbmx5IHNlZW4gYnkgdGhlIHdpZGdldC4KKyAgICBl
dmVudC5idXR0b24udGltZSA9IEdES19DVVJSRU5UX1RJTUUgKyB0aW1lT2Zmc2V0OwogICAgIGV2
ZW50LmJ1dHRvbi5kZXZpY2UgPSBnZGtfZGV2aWNlX2dldF9jb3JlX3BvaW50ZXIoKTsKICAgICBl
dmVudC5idXR0b24uc3RhdGUgPSBnZXRTdGF0ZUZsYWdzKCk7CiAKLSAgICBkb3duID0gZmFsc2U7
Ci0KICAgICBpbnQgeF9yb290LCB5X3Jvb3Q7CiAjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMiwxNywz
KQogICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKEdUS19XSURHRVQodmlldyktPndpbmRv
dywgbGFzdE1vdXNlUG9zaXRpb25YLCBsYXN0TW91c2VQb3NpdGlvblksICZ4X3Jvb3QsICZ5X3Jv
b3QpOwpAQCAtMjYzLDIwICsyNTMsMTQgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VVcENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlMKICAgICBl
dmVudC5idXR0b24ueF9yb290ID0geF9yb290OwogICAgIGV2ZW50LmJ1dHRvbi55X3Jvb3QgPSB5
X3Jvb3Q7CiAKLSAgICBpZiAoKGRyYWdNb2RlICYmICFyZXBsYXlpbmdTYXZlZEV2ZW50cykgfHwg
bXNnUXVldWVbZW5kT2ZRdWV1ZV0uZGVsYXkpIHsKLSAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1
ZV0uZXZlbnQgPSBldmVudDsKLSAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZSsrXS5pc0RyYWdF
dmVudCA9IHRydWU7Ci0gICAgICAgIHJlcGxheVNhdmVkRXZlbnRzKCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQobWFpbkZyYW1lKTsKLQotICAgICAgICBn
Ym9vbGVhbiByZXR1cm5fdmFsOwotICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywg
ImJ1dHRvbl9yZWxlYXNlX2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuX3ZhbCk7Ci0gICAgfQotCiAg
ICAgbGFzdENsaWNrUG9zaXRpb25YID0gbGFzdE1vdXNlUG9zaXRpb25YOwogICAgIGxhc3RDbGlj
a1Bvc2l0aW9uWSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKKyAgICBsYXN0Q2xpY2tCdXR0b24gPSBi
dXR0b25DdXJyZW50bHlEb3duOworICAgIGxhc3RDbGlja1RpbWVPZmZzZXQgPSB0aW1lT2Zmc2V0
OworICAgIGJ1dHRvbkN1cnJlbnRseURvd24gPSAwOwogCisgICAgZXZlbnQudHlwZSA9IEdES19C
VVRUT05fUkVMRUFTRTsKKyAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKQEAgLTI5OSw2ICsyODMsNyBAQCBz
dGF0aWMgSlNWYWx1ZVJlZiBtb3VzZU1vdmVUb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbgogICAgIGV2ZW50LnR5cGUgPSBHREtfTU9USU9OX05PVElG
WTsKICAgICBldmVudC5tb3Rpb24ueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsKICAgICBldmVudC5t
b3Rpb24ueSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKKwogICAgIGV2ZW50Lm1vdGlvbi50aW1lID0g
R0RLX0NVUlJFTlRfVElNRTsKICAgICBldmVudC5tb3Rpb24ud2luZG93ID0gR1RLX1dJREdFVCh2
aWV3KS0+d2luZG93OwogICAgIGV2ZW50Lm1vdGlvbi5kZXZpY2UgPSBnZGtfZGV2aWNlX2dldF9j
b3JlX3BvaW50ZXIoKTsKQEAgLTMwOSwyMiArMjk0LDEyIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1v
dXNlTW92ZVRvQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uCiAjZWxzZQogICAgIGdldFJvb3RDb29yZHMoR1RLX1dJREdFVCh2aWV3KSwgJnhfcm9vdCwg
Jnlfcm9vdCk7CiAjZW5kaWYKLQogICAgIGV2ZW50Lm1vdGlvbi54X3Jvb3QgPSB4X3Jvb3Q7CiAg
ICAgZXZlbnQubW90aW9uLnlfcm9vdCA9IHlfcm9vdDsKLSAgICAKLSAgICBldmVudC5tb3Rpb24u
c3RhdGUgPSBnZXRTdGF0ZUZsYWdzKCk7Ci0KLSAgICBpZiAoZHJhZ01vZGUgJiYgZG93biAmJiAh
cmVwbGF5aW5nU2F2ZWRFdmVudHMpIHsKLSAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZV0uZXZl
bnQgPSBldmVudDsKLSAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZSsrXS5pc0RyYWdFdmVudCA9
IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQobWFp
bkZyYW1lKTsKIAotICAgICAgICBnYm9vbGVhbiByZXR1cm5fdmFsOwotICAgICAgICBnX3NpZ25h
bF9lbWl0X2J5X25hbWUodmlldywgIm1vdGlvbl9ub3RpZnlfZXZlbnQiLCAmZXZlbnQsICZyZXR1
cm5fdmFsKTsKLSAgICB9CisgICAgZXZlbnQubW90aW9uLnN0YXRlID0gZ2V0U3RhdGVGbGFncygp
OwogCisgICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC0zNjMsMTQgKzMzOCw3IEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIG1vdXNlV2hlZWxUb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvCiAgICAgZWxzZQogICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOwog
Ci0gICAgaWYgKGRyYWdNb2RlICYmIGRvd24gJiYgIXJlcGxheWluZ1NhdmVkRXZlbnRzKSB7Ci0g
ICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWVdLmV2ZW50ID0gZXZlbnQ7Ci0gICAgICAgIG1zZ1F1
ZXVlW2VuZE9mUXVldWUrK10uaXNEcmFnRXZlbnQgPSB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7Ci0gICAgICAgIGd0a19tYWlu
X2RvX2V2ZW50KCZldmVudCk7Ci0gICAgfQotCisgICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7
CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC0zODMs
NDkgKzM1MSw1NCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBiZWdpbkRyYWdXaXRoRmlsZXNDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZgogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAotdm9pZCByZXBsYXlTYXZlZEV2ZW50cygpCitz
dGF0aWMgdm9pZCBzZW5kT3JRdWV1ZUV2ZW50KEdka0V2ZW50IGV2ZW50KQogewotICAgIC8vIEZJ
WE1FOiBUaGlzIGRvZXNuJ3QgZGVhbCB3aXRoIGZvcndhcmQgbGVhcHMsIGJ1dCBpdCBzaG91bGQu
CisgICAgLy8gTW91c2UgbW92ZSBldmVudHMgYXJlIHF1ZXVlZCBpZiB0aGUgcHJldmlvdXMgZXZl
bnQgd2FzIHF1ZXVlZCBvciBpZiBhCisgICAgLy8gZGVsYXkgd2FzIHNldCB1cCBieSBsZWFwRm9y
d2FyZCgpLgorICAgIGlmIChlbmRPZlF1ZXVlICE9IHN0YXJ0T2ZRdWV1ZSB8fCBtc2dRdWV1ZVtl
bmRPZlF1ZXVlXS5kZWxheSkgeworICAgICAgICBtc2dRdWV1ZVtlbmRPZlF1ZXVlKytdLmV2ZW50
ID0gZXZlbnQ7CisgICAgICAgIHJlcGxheVNhdmVkRXZlbnRzKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAKKyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKworc3RhdGljIHZvaWQgZGlz
cGF0Y2hFdmVudChHZGtFdmVudCBldmVudCkKK3sKKyAgICB3ZWJraXRfd2ViX2ZyYW1lX2xheW91
dChtYWluRnJhbWUpOwogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1l
X2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgcmVwbGF5aW5nU2F2ZWRFdmVudHMgPSB0cnVlOwotCi0gICAgZm9yICh1bnNpZ25l
ZCBxdWV1ZVBvcyA9IDA7IHF1ZXVlUG9zIDwgZW5kT2ZRdWV1ZTsgcXVldWVQb3MrKykgewotICAg
ICAgICBHZGtFdmVudCBldmVudCA9IG1zZ1F1ZXVlW3F1ZXVlUG9zXS5ldmVudDsKLSAgICAgICAg
Z2Jvb2xlYW4gcmV0dXJuX3ZhbDsKLQotICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKLSAg
ICAgICAgY2FzZSBHREtfQlVUVE9OX1JFTEVBU0U6Ci0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0
X2J5X25hbWUodmlldywgImJ1dHRvbl9yZWxlYXNlX2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuX3Zh
bCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHREtfQlVUVE9OX1BSRVNTOgot
ICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0b25fcHJlc3NfZXZl
bnQiLCAmZXZlbnQsICZyZXR1cm5fdmFsKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEdES19NT1RJT05fTk9USUZZOgotICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1l
KHZpZXcsICJtb3Rpb25fbm90aWZ5X2V2ZW50IiwgJmV2ZW50LCAmcmV0dXJuX3ZhbCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgaWYgKGV2ZW50LnR5cGUg
PT0gR0RLX0JVVFRPTl9QUkVTUyB8fCBldmVudC50eXBlID09IEdES18yQlVUVE9OX1BSRVNTKQor
ICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywgImJ1dHRvbl9wcmVzc19ldmVudCIs
ICZldmVudCwgJnJldHVyblZhbHVlKTsKKyAgICBlbHNlIGlmIChldmVudC50eXBlID09IEdES19C
VVRUT05fUkVMRUFTRSkKKyAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJidXR0
b25fcmVsZWFzZV9ldmVudCIsICZldmVudCwgJnJldHVyblZhbHVlKTsKKyAgICBlbHNlIGlmIChl
dmVudC50eXBlID09IEdES19NT1RJT05fTk9USUZZKQorICAgICAgICBnX3NpZ25hbF9lbWl0X2J5
X25hbWUodmlldywgIm1vdGlvbl9ub3RpZnlfZXZlbnQiLCAmZXZlbnQsICZyZXR1cm5WYWx1ZSk7
CisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSA9PSBHREtfU0NST0xMKQorICAgICAgICBndGtfbWFp
bl9kb19ldmVudCgmZXZlbnQpOworfQogCi0gICAgICAgIHN0YXJ0T2ZRdWV1ZSsrOwotICAgIH0K
K3ZvaWQgcmVwbGF5U2F2ZWRFdmVudHMoKQoreworICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdl
IG1heSBuZWVkIHRvIGhhdmUgbW9yZSBzb3BoaXN0aWNhdGVkIGxvZ2ljIHRvCisgICAgLy8gdHJh
Y2sgZHJhZy1hbmQtZHJvcCBvcGVyYXRpb25zLgorCisgICAgLy8gRmlyc3Qgc2VuZCBhbGwgdGhl
IGV2ZW50cyB0aGF0IGFyZSByZWFkeSB0byBiZSBzZW50CisgICAgd2hpbGUgKHN0YXJ0T2ZRdWV1
ZSA8IGVuZE9mUXVldWUpIHsKKyAgICAgICAgaWYgKG1zZ1F1ZXVlW3N0YXJ0T2ZRdWV1ZV0uZGVs
YXkpIHsKKyAgICAgICAgICAgIGdfdXNsZWVwKG1zZ1F1ZXVlW3N0YXJ0T2ZRdWV1ZV0uZGVsYXkg
KiAxMDAwKTsKKyAgICAgICAgICAgIG1zZ1F1ZXVlW3N0YXJ0T2ZRdWV1ZV0uZGVsYXkgPSAwOwor
ICAgICAgICB9CiAKLSAgICBpbnQgbnVtUXVldWVkTWVzc2FnZXMgPSBlbmRPZlF1ZXVlIC0gc3Rh
cnRPZlF1ZXVlOwotICAgIGlmICghbnVtUXVldWVkTWVzc2FnZXMpIHsKLSAgICAgICAgc3RhcnRP
ZlF1ZXVlID0gMDsKLSAgICAgICAgZW5kT2ZRdWV1ZSA9IDA7Ci0gICAgICAgIHJlcGxheWluZ1Nh
dmVkRXZlbnRzID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgZGlzcGF0Y2hFdmVu
dChtc2dRdWV1ZVtzdGFydE9mUXVldWUrK10uZXZlbnQpOwogICAgIH0KIAogICAgIHN0YXJ0T2ZR
dWV1ZSA9IDA7CiAgICAgZW5kT2ZRdWV1ZSA9IDA7Ci0KLSAgICByZXBsYXlpbmdTYXZlZEV2ZW50
cyA9IGZhbHNlOwogfQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBrZXlEb3duQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtNjYxLDE3ICs2MzQsMjQgQEAgc3RhdGljIEpTQ2xh
c3NSZWYgZ2V0Q2xhc3MoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgcmV0dXJuIGV2ZW50U2Vu
ZGVyQ2xhc3M7CiB9CiAKLUpTT2JqZWN0UmVmIG1ha2VFdmVudFNlbmRlcihKU0NvbnRleHRSZWYg
Y29udGV4dCkKK0pTT2JqZWN0UmVmIG1ha2VFdmVudFNlbmRlcihKU0NvbnRleHRSZWYgY29udGV4
dCwgYm9vbCBpc1RvcEZyYW1lKQogewotICAgIGRvd24gPSBmYWxzZTsKLSAgICBkcmFnTW9kZSA9
IHRydWU7Ci0gICAgbGFzdE1vdXNlUG9zaXRpb25YID0gbGFzdE1vdXNlUG9zaXRpb25ZID0gMDsK
LSAgICBsYXN0Q2xpY2tQb3NpdGlvblggPSBsYXN0Q2xpY2tQb3NpdGlvblkgPSAwOwotCi0gICAg
aWYgKCFyZXBsYXlpbmdTYXZlZEV2ZW50cykgewotICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNh
biBiZSBjYWxsZWQgaW4gdGhlIG1pZGRsZSBvZiBhIHRlc3QsIGV2ZW4KLSAgICAgICAgLy8gd2hp
bGUgcmVwbGF5aW5nIHNhdmVkIGV2ZW50cy4gUmVzZXR0aW5nIHRoZXNlIHdoaWxlIGRvaW5nIHRo
YXQKLSAgICAgICAgLy8gY2FuIGJyZWFrIHRoaW5ncy4KKyAgICBpZiAoaXNUb3BGcmFtZSkgewor
ICAgICAgICBkcmFnTW9kZSA9IHRydWU7CisKKyAgICAgICAgLy8gRmx5IGZvcndhcmQgaW4gdGlt
ZSBvbmUgc2Vjb25kIHdoZW4gdGhlIG1haW4gZnJhbWUgbG9hZHMuIFRoaXMgd2lsbAorICAgICAg
ICAvLyBlbnN1cmUgdGhhdCB3aGVuIGEgdGVzdCBiZWdpbnMgY2xpY2tpbmcgaW4gdGhlIHNhbWUg
bG9jYXRpb24gYXMKKyAgICAgICAgLy8gYSBwcmV2aW91cyB0ZXN0LCB0aG9zZSBjbGlja3Mgd29u
J3QgYmUgaW50ZXJwcmV0ZWQgYXMgY29udGludWF0aW9ucworICAgICAgICAvLyBvZiB0aGUgcHJl
dmlvdXMgdGVzdCdzIGNsaWNrIHNlcXVlbmNlcy4KKyAgICAgICAgdGltZU9mZnNldCArPSAxMDAw
OworCisgICAgICAgIGxhc3RNb3VzZVBvc2l0aW9uWCA9IGxhc3RNb3VzZVBvc2l0aW9uWSA9IDA7
CisgICAgICAgIGxhc3RDbGlja1Bvc2l0aW9uWCA9IGxhc3RDbGlja1Bvc2l0aW9uWSA9IDA7Cisg
ICAgICAgIGxhc3RDbGlja1RpbWVPZmZzZXQgPSAwOworICAgICAgICBsYXN0Q2xpY2tCdXR0b24g
PSAwOworICAgICAgICBidXR0b25DdXJyZW50bHlEb3duID0gMDsKKyAgICAgICAgY2xpY2tDb3Vu
dCA9IDA7CisKICAgICAgICAgZW5kT2ZRdWV1ZSA9IDA7CiAgICAgICAgIHN0YXJ0T2ZRdWV1ZSA9
IDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2
ZW50U2VuZGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIu
aAppbmRleCAyNzJlOGE5NDAyMDc5ZDkyNzJjMDE1MDg3YjZiZWQ5N2E0OTQyMmNiLi5jZTMzY2Nj
OTUyYWNhNTYwN2RhNmI0YTQ4M2M2MDdjZWU5OTE2Y2I4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuaApAQCAtMzMsNyArMzMsNyBAQAogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CiB0eXBlZGVmIHN0cnVj
dCBPcGFxdWVKU1ZhbHVlKiBKU09iamVjdFJlZjsKIAotSlNPYmplY3RSZWYgbWFrZUV2ZW50U2Vu
ZGVyKEpTQ29udGV4dFJlZiBjb250ZXh0KTsKK0pTT2JqZWN0UmVmIG1ha2VFdmVudFNlbmRlcihK
U0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBpc1RvcEZyYW1lKTsKIHZvaWQgcmVwbGF5U2F2ZWRF
dmVudHMoKTsKIAogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>