<?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>100675</bug_id>
          
          <creation_ts>2012-10-29 07:59:25 -0700</creation_ts>
          <short_desc>[chromium] Provide WebKit API interface for platform gesture curves</short_desc>
          <delta_ts>2012-11-01 15:10:57 -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>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>100884</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Kroeger">rjkroege</reporter>
          <assigned_to name="Robert Kroeger">rjkroege</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
    
    <cc>yusufo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>753454</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-10-29 07:59:25 -0700</bug_when>
    <thetext>Currently there is code in Platform to animate selected inertial fling initiating gestures. One gesture curve does not fit all platforms. Add interfaces that permit the Chromium platform to provide its fling animation implementation from outside of WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754408</commentid>
    <comment_count>1</comment_count>
      <attachid>171461</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-10-30 09:00:00 -0700</bug_when>
    <thetext>Created attachment 171461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754411</commentid>
    <comment_count>2</comment_count>
      <attachid>171461</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-10-30 09:03:45 -0700</bug_when>
    <thetext>Comment on attachment 171461
Patch

jamesr@: Please take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754414</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 09:08:46 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754587</commentid>
    <comment_count>4</comment_count>
      <attachid>171461</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-30 12:32:22 -0700</bug_when>
    <thetext>Comment on attachment 171461
Patch

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

&gt; Source/Platform/chromium/public/WebGestureCurve.h:41
&gt; +    // Returns a name of the curve for use in debugging.
&gt; +    virtual const char* debugName() const = 0;

Should we make this #ifndef NDEBUG?

&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:27
&gt; +

No need for this blank line.

&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:31
&gt; +#include &quot;public/WebGestureCurve.h&quot;
&gt; +#include &quot;public/WebGestureCurveTarget.h&quot;

We&apos;ve been using the &lt;public/WebGestureCurve.h&gt; style when including these sorts of headers.

&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:33
&gt; +#if PLATFORM(CHROMIUM)

No need for PLAFORM(CHROMIUM) ifdefs in the chromium directory.

&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:51
&gt; +#if PLATFORM(CHROMIUM)

ditto

&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:69
&gt; +    , m_waitingForFirstTick(false)

Its odd that you initialize this to true above and false here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754588</commentid>
    <comment_count>5</comment_count>
      <attachid>171461</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-30 12:33:52 -0700</bug_when>
    <thetext>Comment on attachment 171461
Patch

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

This looks very similar to WebFlingAnimator.  Did you consider consolidating?

&gt; Source/Platform/chromium/public/WebGestureCurveTarget.h:35
&gt; +    // FIXME: add interfaces for scroll(), etc.

I don&apos;t understand this FIXME. What other interfaces would you need?

&gt; Source/WebKit/chromium/public/platform/WebGestureCurve.h:1
&gt; +/*

Why are you adding this header?

&gt; Source/WebKit/chromium/public/platform/WebGestureCurveTarget.h:1
&gt; +/*

Why this header?

&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:33
&gt; +#if PLATFORM(CHROMIUM)

You&apos;re in a directory called .../chromium/..., the PLATFORM(CHROMIUM) check is redundant

&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:51
&gt; +#if PLATFORM(CHROMIUM)

ditto

&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.h:46
&gt; +    static PassOwnPtr&lt;WebActiveGestureAnimation&gt; create(PassOwnPtr&lt;WebGestureCurve&gt;, WebGestureCurveTarget*);
&gt; +    static PassOwnPtr&lt;WebActiveGestureAnimation&gt; create(PassOwnPtr&lt;WebGestureCurve&gt;, WebGestureCurveTarget*, double startTime);

WebKit style would be to just have one function with a default parameter instead of two</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754710</commentid>
    <comment_count>6</comment_count>
      <attachid>171461</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-10-30 15:19:59 -0700</bug_when>
    <thetext>Comment on attachment 171461
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebGestureCurve.h:41
&gt;&gt; +    virtual const char* debugName() const = 0;
&gt; 
&gt; Should we make this #ifndef NDEBUG?

This method is used to help populate TRACE_EVENT_ASYNC_BEGIN1 calls in users of WebGestureCurve instances so perhaps not. The function name is misleading. I have renamed in p2.

&gt;&gt; Source/Platform/chromium/public/WebGestureCurveTarget.h:35
&gt;&gt; +    // FIXME: add interfaces for scroll(), etc.
&gt; 
&gt; I don&apos;t understand this FIXME. What other interfaces would you need?

oversight. Left over from sed-ing over PlatformGestureCurveTarget.h

&gt;&gt; Source/WebKit/chromium/public/platform/WebGestureCurve.h:1
&gt;&gt; +/*
&gt; 
&gt; Why are you adding this header?

Was unclear on its necessity. Removed in p2

&gt;&gt; Source/WebKit/chromium/public/platform/WebGestureCurveTarget.h:1
&gt;&gt; +/*
&gt; 
&gt; Why this header?

Was unclear on its necessity. Removed in p2

&gt;&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:27
&gt;&gt; +
&gt; 
&gt; No need for this blank line.

done, p2

&gt;&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:31
&gt;&gt; +#include &quot;public/WebGestureCurveTarget.h&quot;
&gt; 
&gt; We&apos;ve been using the &lt;public/WebGestureCurve.h&gt; style when including these sorts of headers.

done, p2

&gt;&gt;&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:33
&gt;&gt;&gt; +#if PLATFORM(CHROMIUM)
&gt;&gt; 
&gt;&gt; No need for PLAFORM(CHROMIUM) ifdefs in the chromium directory.
&gt; 
&gt; You&apos;re in a directory called .../chromium/..., the PLATFORM(CHROMIUM) check is redundant

done, p2

&gt;&gt;&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:51
&gt;&gt;&gt; +#if PLATFORM(CHROMIUM)
&gt;&gt; 
&gt;&gt; ditto
&gt; 
&gt; ditto

done p2

&gt;&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:69
&gt;&gt; +    , m_waitingForFirstTick(false)
&gt; 
&gt; Its odd that you initialize this to true above and false here.

All curves (conceptually) begin in the m_waitingForFirstTick  = true state as they run their time from 0 and have never ticked. A curve with a non-0 startTime would imply that we&apos;re replicating a curve that was already being animated on impl and is being re-created on main so it has already ticked. 

I think that I can make this clearer and delete some code while I&apos;m at it. Done in p2.

&gt;&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.h:46
&gt;&gt; +    static PassOwnPtr&lt;WebActiveGestureAnimation&gt; create(PassOwnPtr&lt;WebGestureCurve&gt;, WebGestureCurveTarget*, double startTime);
&gt; 
&gt; WebKit style would be to just have one function with a default parameter instead of two

I renamed the creates to make their usage clearer. Different and hopefully better in p2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754715</commentid>
    <comment_count>7</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-10-30 15:22:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 171461 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171461&amp;action=review
&gt; 
&gt; This looks very similar to WebFlingAnimator.  Did you consider consolidating?

AFAIK: WebFlingAnimator is only as a virtual interface via WebFlingAnimatorToGestureCurveAdapter. So, I was planning on moving a version of WebFlingAnimatorToGestureCurveAdapter to Chromium and wrapping WebFlingAnimator&apos;s implementation in Chromium with the adapter so that it would implement WebGestureCurve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754719</commentid>
    <comment_count>8</comment_count>
      <attachid>171531</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-10-30 15:25:37 -0700</bug_when>
    <thetext>Created attachment 171531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755386</commentid>
    <comment_count>9</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-10-31 09:44:55 -0700</bug_when>
    <thetext>jamesr@ could you please take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755549</commentid>
    <comment_count>10</comment_count>
      <attachid>171531</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-31 12:36:30 -0700</bug_when>
    <thetext>Comment on attachment 171531
Patch

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

One more round and then we should be good to go.

&gt; Source/Platform/chromium/public/WebGestureCurve.h:41
&gt; +    // Returns a name of the curve for use in tracing.
&gt; +    virtual const char* traceName() const = 0;

I don&apos;t think you should add this - put the tracing on the implementation side if you want to trace with additional information known only by the implementation. The lifetime of the WebGestureCurve is the same as that of the animation so you will get the same data out.  This isn&apos;t logically part of the API.

&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:1
&gt; +/*

This file doesn&apos;t have any dependencies on things in Source/WebKit/ or Source/WebCore and is implementing a Platform API, so it should be in Source/Platform/chromium/src

&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.h:1
&gt; +/*

This file as well doesn&apos;t have any dependencies on things in Source/WebKit/ or Source/WebCore and is implementing a Platform API, so it should be in Source/Platform/chromium/src</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756176</commentid>
    <comment_count>11</comment_count>
      <attachid>171531</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-11-01 06:50:41 -0700</bug_when>
    <thetext>Comment on attachment 171531
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebGestureCurve.h:41
&gt;&gt; +    virtual const char* traceName() const = 0;
&gt; 
&gt; I don&apos;t think you should add this - put the tracing on the implementation side if you want to trace with additional information known only by the implementation. The lifetime of the WebGestureCurve is the same as that of the animation so you will get the same data out.  This isn&apos;t logically part of the API.

done in p3.

&gt;&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.cpp:1
&gt;&gt; +/*
&gt; 
&gt; This file doesn&apos;t have any dependencies on things in Source/WebKit/ or Source/WebCore and is implementing a Platform API, so it should be in Source/Platform/chromium/src

moved elsewhere and renamed in p3 -- see next comment.

&gt;&gt; Source/WebKit/chromium/src/WebActiveGestureAnimation.h:1
&gt;&gt; +/*
&gt; 
&gt; This file as well doesn&apos;t have any dependencies on things in Source/WebKit/ or Source/WebCore and is implementing a Platform API, so it should be in Source/Platform/chromium/src

done in p3. 

But given that this class is effectively a helper for WebViewImpl, by analogy to PageWidgetDelegate.h, why doesn&apos;t it belong in Source/WebKit/chromium/src? Perhaps without the Web name prefix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756228</commentid>
    <comment_count>12</comment_count>
      <attachid>171849</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-11-01 07:32:32 -0700</bug_when>
    <thetext>Created attachment 171849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756232</commentid>
    <comment_count>13</comment_count>
      <attachid>171849</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-11-01 07:34:39 -0700</bug_when>
    <thetext>Comment on attachment 171849
Patch

jamesr@ please take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756484</commentid>
    <comment_count>14</comment_count>
      <attachid>171849</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-11-01 11:32:25 -0700</bug_when>
    <thetext>Comment on attachment 171849
Patch

R=me

Re putting it in Source/WebKit/chromium/src vs Source/Platform/chromium/src: we have two WebKit APIs, a client API (lives in WebKit/chromium/public) and a platform API (Platform/chromium/public).  The ideal is to keep dependencies a DAG.  Implementations of the client API can depend on all of WebKit since users of the client API are depending on WebKit.  The client API can&apos;t be used by anything outside of the WebKit layer (meaning WebCore / Platform can&apos;t use client API concepts).  Implementations of the platform API can&apos;t depend on anything in WebKit outside of the platform API, but anything in WebKit/WebCore/Platform can depend on them.

Since you&apos;ve defined Web*Gesture* as part of the platform API, the implementation belongs in the Platform location.  This means anything in WebKit/WebCore/Platform are able to depend on it.  If the only caller is in the client API implementation (WebViewImpl) then if you want you can move the whole thing to the client API.  I think we&apos;ll want to depend on this from WebCore/platform/ScrollAnimatorNone so I&apos;d be inclined to leave it where it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756512</commentid>
    <comment_count>15</comment_count>
      <attachid>171849</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-01 11:56:28 -0700</bug_when>
    <thetext>Comment on attachment 171849
Patch

Clearing flags on attachment: 171849

Committed r133203: &lt;http://trac.webkit.org/changeset/133203&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756513</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-01 11:56:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756662</commentid>
    <comment_count>17</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-11-01 15:10:57 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 171849 [details])
&gt; R=me
&gt; 
&gt; Re putting it in Source/WebKit/chromium/src vs Source/Platform/chromium/src: we have two WebKit APIs, a client API (lives in WebKit/chromium/public) and a platform API (Platform/chromium/public).  The ideal is to keep dependencies a DAG.  Implementations of the client API can depend on all of WebKit since users of the client API are depending on WebKit.  The client API can&apos;t be used by anything outside of the WebKit layer (meaning WebCore / Platform can&apos;t use client API concepts).  Implementations of the platform API can&apos;t depend on anything in WebKit outside of the platform API, but anything in WebKit/WebCore/Platform can depend on them.
&gt; 
&gt; Since you&apos;ve defined Web*Gesture* as part of the platform API, the implementation belongs in the Platform location.  This means anything in WebKit/WebCore/Platform are able to depend on it.  If the only caller is in the client API implementation (WebViewImpl) then if you want you can move the whole thing to the client API.  I think we&apos;ll want to depend on this from WebCore/platform/ScrollAnimatorNone so I&apos;d be inclined to leave it where it is.

Thanks for the info. This was very helpful.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171461</attachid>
            <date>2012-10-30 09:00:00 -0700</date>
            <delta_ts>2012-10-30 15:25:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100675-20121030115825.patch</filename>
            <type>text/plain</type>
            <size>20928</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyMTJkZDY2ZjViNzdm
ZmJjYzA5OTMwNjJjM2JkZmVmZjE3NTUyMWVjLi5lZjNmYTg5OTg3ZWVlZTRhNjk5Yzc5OTNjOGU1
ZWI0MTliMTcyNWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMC0zMCAg
Um9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBQcm92aWRlIFdlYktpdCBBUEkgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybSBnZXN0dXJlIGN1
cnZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAw
Njc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVm
aW5lIGludGVyZmFjZXMgdG8gcGVybWl0IHRoZSBDaHJvbWl1bSBlbWJlZGRlciB0byBwcm92aWRl
IGl0cyBvd24KKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgYSBnZXN0dXJlIGFuaW1hdGlvbiBj
dXJ2ZSBhbmQgYWRkIGFuIGVudHJ5IHBvaW50CisgICAgICAgIHRvIFBsYXRmb3JtLmggdGhhdCBw
ZXJtaXRzIFdlYktpdCB0byBvYnRhaW4gYW4gaW5zdGFuY2Ugb2YgYW4gZW1iZWRkZXItCisgICAg
ICAgIHByb3ZpZGVkIGdlc3R1cmUgY3VydmUuCisKKyAgICAgICAgTm8gdGVzdHMgbmVlZGVkIGlu
IHRoaXMgQ0w6IG9ubHkgaW50ZXJmYWNlcyBhcmUgYmVpbmcgYWRkZWQuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm06OmNyZWF0ZUZsaW5nQW5pbWF0aW9uQ3VydmUpOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJHZXN0dXJlQ3VydmUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUN1cnZlOjp+
V2ViR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViR2VzdHVyZUN1
cnZlVGFyZ2V0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkdlc3R1
cmVDdXJ2ZVRhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlc3R1cmVDdXJ2ZVRhcmdldDo6
fldlYkdlc3R1cmVDdXJ2ZVRhcmdldCk6CisKIDIwMTItMTAtMjYgIENocmlzdG9waGVyIENhbWVy
b24gIDxjY2FtZXJvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgYWRk
aXRpb25hbCBtZW1vcnkgbWFuYWdlbWVudCBmaWVsZHMgdG8gV2ViR3JhcGhpY3NDb250ZXh0M0QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjJkNDUxZGMwNTlhOGQyYjM0ZjRmMDU3N2U5
Y2FhZTBjOWUzMjgzYi4uNDRhNWEyZjU1ZDAxOWUyYWY4YzhiNjIxNmY0ZGY0NjBhNmRiODA0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0xMC0zMCAg
Um9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBQcm92aWRlIFdlYktpdCBBUEkgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybSBnZXN0dXJlIGN1
cnZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAw
Njc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVm
aW5lIGludGVyZmFjZXMgdG8gcGVybWl0IHRoZSBDaHJvbWl1bSBlbWJlZGRlciB0byBwcm92aWRl
IGl0cyBvd24KKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgYSBnZXN0dXJlIGFuaW1hdGlvbiBj
dXJ2ZSBhbmQgYWRkIGFuIGVudHJ5IHBvaW50CisgICAgICAgIHRvIFBsYXRmb3JtLmggdGhhdCBw
ZXJtaXRzIFdlYktpdCB0byBvYnRhaW4gYW4gaW5zdGFuY2Ugb2YgYW4gZW1iZWRkZXItCisgICAg
ICAgIHByb3ZpZGVkIGdlc3R1cmUgY3VydmUuCisKKyAgICAgICAgTm8gdGVzdHMgbmVlZGVkIGlu
IHRoaXMgQ0w6IG9ubHkgaW50ZXJmYWNlcyBhcmUgYmVpbmcgYWRkZWQuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJHZXN0dXJlQ3VydmUuaDog
QWRkZWQuCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkdlc3R1cmVDdXJ2ZVRhcmdldC5o
OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWN0aXZlR2VzdHVy
ZUFuaW1hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbjo6fldlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6YW5pbWF0ZSk6CisgICAg
ICAgICogc3JjL1dlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb24uaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbik6CisKIDIwMTItMTAt
MjkgIEV1Z2VuZSBLbHl1Y2huaWtvdiAgPGV1c3Rhcy5idWdAZ21haWwuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFRpbWVsaW5lOiBtYWtlIGNwdS1tb25pdG9yaW5nIGZlYXR1cmUgYXZh
aWxhYmxlIG9ubHkgb24gY2FwYWJsZSBicm93c2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCA4
NzA2MzkzNDAxNGFlYmZiM2NhM2NiOGZhYjY2M2Y3ZTdmZjUzM2RkLi40MzQwOTE0YmQ1OGNkNjhk
YWZlNzRiNDcyNGJhMmU3YTljZTlmM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxh
dGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtNzEsNiAr
NzEsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFJlY3QuaCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkdhbWVwYWQuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYkdhbWVwYWRzLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJHZXN0dXJlQ3VydmVUYXJnZXQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYkdlc3R1cmVDdXJ2ZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkhU
VFBCb2R5LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQSGVhZGVyVmlz
aXRvci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxh
dGZvcm0uaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAppbmRl
eCA0N2Q5OTA1ZGM0OTUzMGIwNzBlZDJmNjViZWU1M2IxM2Q3YWNkNDBlLi40YTEwYWFhOTBjMjU5
M2I3OWE1ZjdhNDYwMDIwMWNhYzI3NmQxMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9QbGF0Zm9ybS5oCkBAIC01NCw2ICs1NCw4IEBAIGNsYXNzIFdlYkNvb2tpZUphcjsK
IGNsYXNzIFdlYkZpbGVTeXN0ZW07CiBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwogY2xhc3MgV2Vi
RmxpbmdBbmltYXRvcjsKK2NsYXNzIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldDsKK2NsYXNzIFdlYkdl
c3R1cmVDdXJ2ZTsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyOwogY2xhc3MgV2ViTWVkaWFT
dHJlYW1DZW50ZXJDbGllbnQ7CiBjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWw7CkBAIC03MSw2
ICs3Myw4IEBAIGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYlVSTExvYWRlcjsKIGNsYXNzIFdlYldv
cmtlclJ1bkxvb3A7CiBzdHJ1Y3QgV2ViTG9jYWxpemVkU3RyaW5nOworc3RydWN0IFdlYkZsb2F0
UG9pbnQ7CitzdHJ1Y3QgV2ViU2l6ZTsKIAogY2xhc3MgUGxhdGZvcm0gewogcHVibGljOgpAQCAt
NDE2LDYgKzQyMCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkZsaW5nQW5pbWF0b3Iq
IGNyZWF0ZUZsaW5nQW5pbWF0b3IoKSB7IHJldHVybiAwOyB9CiAKKyAgICAvLyBDcmVhdGVzIGEg
bmV3IGZsaW5nIGFuaW1hdGlvbiBjdXJ2ZSBpbnN0YW5jZSBmb3IgZGV2aWNlIHxkZXZpY2VTb3Vy
Y2V8CisgICAgLy8gd2l0aCB8dmVsb2NpdHl8IGFuZCBhbHJlYWR5IHNjcm9sbGVkIHxjdW11bGF0
aXZlU2Nyb2xsfCBwaXhlbHMuCisgICAgdmlydHVhbCBXZWJHZXN0dXJlQ3VydmUqIGNyZWF0ZUZs
aW5nQW5pbWF0aW9uQ3VydmUoaW50IGRldmljZVNvdXJjZSwgY29uc3QgV2ViRmxvYXRQb2ludCYg
dmVsb2NpdHksIGNvbnN0IFdlYlNpemUmIGN1bXVsYXRpdmVTY3JvbGwpIHsgcmV0dXJuIDA7IH0K
KwogICAgIC8vIFdlYlJUQyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAvLyBERVBSRUNBVEVECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdlc3R1cmVDdXJ2ZS5oIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHZXN0dXJlQ3VydmUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDRk
YzMzNDI2Yjk1YjE4NTRiY2ZjM2E5NWNjYjdjY2JlODFhMWY2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHZXN0dXJlQ3VydmUuaApAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkdlc3R1cmVDdXJ2ZV9oCisjZGVm
aW5lIFdlYkdlc3R1cmVDdXJ2ZV9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJH
ZXN0dXJlQ3VydmVUYXJnZXQ7CisKKy8vIEFic3RyYWN0IGludGVyZmFjZSBmb3IgY3VydmVzIHVz
ZWQgYnkgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLiBBCisvLyBXZWJHZXN0dXJlQ3Vy
dmUgZGVmaW5lcyB0aGUgYW5pbWF0aW9uIHBhcmFtZXRlcnMgYXMgYSBmdW5jdGlvbiBvZiB0aW1l
CisvLyAoemVyby1iYXNlZCksIGFuZCBhcHBsaWVzIHRoZSBwYXJhbWV0ZXJzIGRpcmVjdGx5IHRv
IHRoZSB0YXJnZXQgb2YgdGhlCisvLyBhbmltYXRpb24uCitjbGFzcyBXZWJHZXN0dXJlQ3VydmUg
eworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdlc3R1cmVDdXJ2ZSgpIHsgfQorCisgICAgLy8g
UmV0dXJucyBhIG5hbWUgb2YgdGhlIGN1cnZlIGZvciB1c2UgaW4gZGVidWdnaW5nLgorICAgIHZp
cnR1YWwgY29uc3QgY2hhciogZGVidWdOYW1lKCkgY29uc3QgPSAwOworCisgICAgLy8gUmV0dXJu
cyBmYWxzZSBpZiBjdXJ2ZSBoYXMgZmluaXNoZWQgYW5kIGNhbiBubyBsb25nZXIgYmUgYXBwbGll
ZC4KKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoZG91YmxlIHRpbWUsIFdlYkdlc3R1cmVDdXJ2ZVRh
cmdldCopID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR2VzdHVyZUN1cnZlVGFy
Z2V0LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdlc3R1cmVDdXJ2ZVRh
cmdldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY5YTliNGVjZGY1NGU2ZTNjZjdjZDI4ZjA1YzQ0MmIwZDU2ZmUy
MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
Ykdlc3R1cmVDdXJ2ZVRhcmdldC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViR2VzdHVyZUN1cnZlVGFyZ2V0X2gKKyNkZWZpbmUgV2ViR2VzdHVyZUN1cnZlVGFy
Z2V0X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBvaW50OworCitjbGFzcyBX
ZWJHZXN0dXJlQ3VydmVUYXJnZXQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxC
eShjb25zdCBXZWJQb2ludCYpID0gMDsKKyAgICAvLyBGSVhNRTogYWRkIGludGVyZmFjZXMgZm9y
IHNjcm9sbCgpLCBldGMuCisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJHZXN0dXJlQ3Vy
dmVUYXJnZXQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAzZWRjNGE1YjQ3NjJiNDQ5ZDg0MjRiNjRmMmEy
NjIwYzFlYTlkNDQxLi40Njc2YTEwZTljZjI1MDNmZjVhMTA4YWExNDdmYmViZTI1NTU0YmNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0zMDUsNiArMzA1LDggQEAKICAgICAgICAg
ICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UmVjdC5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL3BsYXRmb3JtL1dlYkdhbWVwYWQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJHYW1lcGFkcy5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL3BsYXRm
b3JtL1dlYkdlc3R1cmVDdXJ2ZVRhcmdldC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL3Bs
YXRmb3JtL1dlYkdlc3R1cmVDdXJ2ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRm
b3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxh
dGZvcm0vV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9X
ZWJIVFRQSGVhZGVyVmlzaXRvci5oJywKQEAgLTQ3Myw2ICs0NzUsOCBAQAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2Vi
QWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViQWN0
aXZlR2VzdHVyZUFuaW1hdGlvbi5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBbmltYXRpb25D
b250cm9sbGVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFycmF5QnVmZmVyLmNw
cCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJHZXN0dXJlQ3VydmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYkdlc3R1cmVDdXJ2ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4Y2I1NTE4YmI1YTM4OTdiNjlkMDE5YzE5
MjFmZTdlNGRlYmNjOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJHZXN0dXJlQ3VydmUuaApAQCAtMCwwICsxLDI2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgIi4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHZXN0
dXJlQ3VydmUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYkdlc3R1cmVDdXJ2ZVRhcmdldC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vV2ViR2VzdHVyZUN1cnZlVGFyZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFlNzY0
MTExNjIzZDExMmM4YWVhYzFiNmE0ZTUwYzI3MzRkNWViZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkdlc3R1cmVDdXJ2ZVRhcmdl
dC5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkdlc3R1cmVDdXJ2ZVRhcmdldC5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zOTY5NTRmOTFhMTU3YmI4OGJhMDFmZmEzM2QwZjA2ZjhkNjI1NzM3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWN0aXZlR2Vz
dHVyZUFuaW1hdGlvbi5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIldlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb24uaCIKKworI2luY2x1
ZGUgInB1YmxpYy9XZWJHZXN0dXJlQ3VydmUuaCIKKyNpbmNsdWRlICJwdWJsaWMvV2ViR2VzdHVy
ZUN1cnZlVGFyZ2V0LmgiCisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNsdWRlICJUcmFj
ZUV2ZW50LmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8V2Vi
QWN0aXZlR2VzdHVyZUFuaW1hdGlvbj4gV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRl
KFBhc3NPd25QdHI8V2ViR2VzdHVyZUN1cnZlPiBjdXJ2ZSwgV2ViR2VzdHVyZUN1cnZlVGFyZ2V0
KiB0YXJnZXQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJBY3RpdmVHZXN0dXJlQW5p
bWF0aW9uKGN1cnZlLCB0YXJnZXQpKTsKK30KKworUGFzc093blB0cjxXZWJBY3RpdmVHZXN0dXJl
QW5pbWF0aW9uPiBXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoUGFzc093blB0cjxX
ZWJHZXN0dXJlQ3VydmU+IGN1cnZlLCBXZWJHZXN0dXJlQ3VydmVUYXJnZXQqIHRhcmdldCwgZG91
YmxlIHN0YXJ0VGltZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkFjdGl2ZUdlc3R1
cmVBbmltYXRpb24oY3VydmUsIHRhcmdldCwgc3RhcnRUaW1lKSk7Cit9CisKK1dlYkFjdGl2ZUdl
c3R1cmVBbmltYXRpb246On5XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKCkKK3sKKyNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVF9BU1lOQ19FTkQwKCJpbnB1dCIsICJHZXN0
dXJlQW5pbWF0aW9uIiwgdGhpcyk7CisjZW5kaWYKK30KKworV2ViQWN0aXZlR2VzdHVyZUFuaW1h
dGlvbjo6V2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFdlYkdlc3R1cmVDdXJ2
ZT4gY3VydmUsIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0KQorICAgIDogbV9zdGFydFRp
bWUoMCkKKyAgICAsIG1fd2FpdGluZ0ZvckZpcnN0VGljayh0cnVlKQorICAgICwgbV9jdXJ2ZShj
dXJ2ZSkKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkKK3sKKyNpZiBQTEFURk9STShDSFJPTUlVTSkK
KyAgICBUUkFDRV9FVkVOVF9BU1lOQ19CRUdJTjEoImlucHV0IiwgIkdlc3R1cmVBbmltYXRpb24i
LCB0aGlzLCAiY3VydmUiLCBtX2N1cnZlLT5kZWJ1Z05hbWUoKSk7CisjZW5kaWYKK30KKworV2Vi
QWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6V2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3du
UHRyPFdlYkdlc3R1cmVDdXJ2ZT4gY3VydmUsIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0
LCBkb3VibGUgc3RhcnRUaW1lKQorICAgIDogbV9zdGFydFRpbWUoc3RhcnRUaW1lKQorICAgICwg
bV93YWl0aW5nRm9yRmlyc3RUaWNrKGZhbHNlKQorICAgICwgbV9jdXJ2ZShjdXJ2ZSkKKyAgICAs
IG1fdGFyZ2V0KHRhcmdldCkKK3sKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9F
VkVOVF9BU1lOQ19CRUdJTjEoImlucHV0IiwgIkdlc3R1cmVBbmltYXRpb24iLCB0aGlzLCAiY3Vy
dmUiLCBtX2N1cnZlLT5kZWJ1Z05hbWUoKSk7CisjZW5kaWYKK30KKworYm9vbCBXZWJBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uOjphbmltYXRlKGRvdWJsZSB0aW1lKQoreworICAgIGlmIChtX3dhaXRp
bmdGb3JGaXJzdFRpY2spIHsKKyAgICAgICAgbV9zdGFydFRpbWUgPSB0aW1lOworICAgICAgICBt
X3dhaXRpbmdGb3JGaXJzdFRpY2sgPSBmYWxzZTsKKyAgICB9CisgICAgLy8gQWxsIFdlYkdlc3R1
cmVDdXJ2ZXMgYXNzdW1lIHplcm8tYmFzZWQgdGltZSwgc28gd2Ugc3VidHJhY3QKKyAgICAvLyB0
aGUgYW5pbWF0aW9uIHN0YXJ0IHRpbWUgYmVmb3JlIHBhc3NpbmcgdG8gdGhlIGN1cnZlLgorICAg
IHJldHVybiBtX2N1cnZlLT5hcHBseSh0aW1lIC0gbV9zdGFydFRpbWUsIG1fdGFyZ2V0KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZhZDA5ZmNi
ZDMxOGY2NzdjY2I3OWU1NTdmZWU5ZTNlZjQ5NDg1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb24uaApAQCAtMCww
ICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uX2gKKyNk
ZWZpbmUgV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbl9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkdlc3R1cmVDdXJ2ZTsKK2Ns
YXNzIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldDsKKworLy8gSW1wbGVtZW50cyBhIGdlc3R1cmUgYW5p
bWF0aW9uIChmbGluZyBzY3JvbGwsIGV0Yy4pIHVzaW5nIGEgY3VydmUgd2l0aCBhIGdlbmVyaWMg
aW50ZXJmYWNlCisvLyB0byBkZWZpbmUgdGhlIGFuaW1hdGlvbiBwYXJhbWV0ZXJzIGFzIGEgZnVu
Y3Rpb24gb2YgdGltZSwgYW5kIGFwcGxpZXMgdGhlIGFuaW1hdGlvbgorLy8gdG8gYSB0YXJnZXQs
IGFnYWluIHZpYSBhIGdlbmVyaWMgaW50ZXJmYWNlLiBJdCBpcyBhc3N1bWVkIHRoYXQgYW5pbWF0
ZSgpIGlzIGNhbGxlZAorLy8gb24gYSBtb3JlLW9yLWxlc3MgcmVndWxhciBiYXNpcyBieSB0aGUg
b3duZXIuCitjbGFzcyBXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKTsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPiBjcmVhdGUoUGFzc093blB0
cjxXZWJHZXN0dXJlQ3VydmU+LCBXZWJHZXN0dXJlQ3VydmVUYXJnZXQqKTsKKyAgICBzdGF0aWMg
UGFzc093blB0cjxXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPiBjcmVhdGUoUGFzc093blB0cjxX
ZWJHZXN0dXJlQ3VydmU+LCBXZWJHZXN0dXJlQ3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1l
KTsKKyAgICB+V2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbigpOworCisgICAgYm9vbCBhbmltYXRl
KGRvdWJsZSB0aW1lKTsKKworcHJpdmF0ZToKKyAgICAvLyBBc3N1bWVzIGEgdmFsaWQgV2ViR2Vz
dHVyZUN1cnZlVGFyZ2V0IHRoYXQgb3V0bGl2ZXMgdGhlIGFuaW1hdGlvbi4KKyAgICBXZWJBY3Rp
dmVHZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8V2ViR2VzdHVyZUN1cnZlPiwgV2ViR2VzdHVy
ZUN1cnZlVGFyZ2V0Kik7CisgICAgV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRy
PFdlYkdlc3R1cmVDdXJ2ZT4sIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldCosIGRvdWJsZSBzdGFydFRp
bWUpOworCisgICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGJvb2wgbV93YWl0aW5nRm9yRmly
c3RUaWNrOworICAgIE93blB0cjxXZWJHZXN0dXJlQ3VydmU+IG1fY3VydmU7CisgICAgV2ViR2Vz
dHVyZUN1cnZlVGFyZ2V0KiBtX3RhcmdldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171531</attachid>
            <date>2012-10-30 15:25:37 -0700</date>
            <delta_ts>2012-11-01 07:32:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100675-20121030182401.patch</filename>
            <type>text/plain</type>
            <size>16420</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyMTJkZDY2ZjViNzdm
ZmJjYzA5OTMwNjJjM2JkZmVmZjE3NTUyMWVjLi5lZjNmYTg5OTg3ZWVlZTRhNjk5Yzc5OTNjOGU1
ZWI0MTliMTcyNWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMC0zMCAg
Um9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBQcm92aWRlIFdlYktpdCBBUEkgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybSBnZXN0dXJlIGN1
cnZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAw
Njc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVm
aW5lIGludGVyZmFjZXMgdG8gcGVybWl0IHRoZSBDaHJvbWl1bSBlbWJlZGRlciB0byBwcm92aWRl
IGl0cyBvd24KKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgYSBnZXN0dXJlIGFuaW1hdGlvbiBj
dXJ2ZSBhbmQgYWRkIGFuIGVudHJ5IHBvaW50CisgICAgICAgIHRvIFBsYXRmb3JtLmggdGhhdCBw
ZXJtaXRzIFdlYktpdCB0byBvYnRhaW4gYW4gaW5zdGFuY2Ugb2YgYW4gZW1iZWRkZXItCisgICAg
ICAgIHByb3ZpZGVkIGdlc3R1cmUgY3VydmUuCisKKyAgICAgICAgTm8gdGVzdHMgbmVlZGVkIGlu
IHRoaXMgQ0w6IG9ubHkgaW50ZXJmYWNlcyBhcmUgYmVpbmcgYWRkZWQuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm06OmNyZWF0ZUZsaW5nQW5pbWF0aW9uQ3VydmUpOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJHZXN0dXJlQ3VydmUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUN1cnZlOjp+
V2ViR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViR2VzdHVyZUN1
cnZlVGFyZ2V0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkdlc3R1
cmVDdXJ2ZVRhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlc3R1cmVDdXJ2ZVRhcmdldDo6
fldlYkdlc3R1cmVDdXJ2ZVRhcmdldCk6CisKIDIwMTItMTAtMjYgIENocmlzdG9waGVyIENhbWVy
b24gIDxjY2FtZXJvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgYWRk
aXRpb25hbCBtZW1vcnkgbWFuYWdlbWVudCBmaWVsZHMgdG8gV2ViR3JhcGhpY3NDb250ZXh0M0QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjJkNDUxZGMwNTlhOGQyYjM0ZjRmMDU3N2U5
Y2FhZTBjOWUzMjgzYi4uMjkwMzU0N2MwYjlmYWE3ZWI5YmU1YWUzZWZjNDg2YWRmNWJiMDYyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0xMC0zMCAg
Um9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBQcm92aWRlIFdlYktpdCBBUEkgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybSBnZXN0dXJlIGN1
cnZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAw
Njc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVm
aW5lIGludGVyZmFjZXMgdG8gcGVybWl0IHRoZSBDaHJvbWl1bSBlbWJlZGRlciB0byBwcm92aWRl
IGl0cyBvd24KKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgYSBnZXN0dXJlIGFuaW1hdGlvbiBj
dXJ2ZSBhbmQgYWRkIGFuIGVudHJ5IHBvaW50CisgICAgICAgIHRvIFBsYXRmb3JtLmggdGhhdCBw
ZXJtaXRzIFdlYktpdCB0byBvYnRhaW4gYW4gaW5zdGFuY2Ugb2YgYW4gZW1iZWRkZXItCisgICAg
ICAgIHByb3ZpZGVkIGdlc3R1cmUgY3VydmUuCisKKyAgICAgICAgTm8gdGVzdHMgbmVlZGVkIGlu
IHRoaXMgQ0w6IG9ubHkgaW50ZXJmYWNlcyBhcmUgYmVpbmcgYWRkZWQuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHNyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY3RpdmVHZXN0
dXJlQW5pbWF0aW9uOjpjcmVhdGVBdEFuaW1hdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlV2l0aFRpbWVPZmZzZXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjp+V2ViQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb246Oldl
YkFjdGl2ZUdlc3R1cmVBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBY3RpdmVHZXN0
dXJlQW5pbWF0aW9uOjphbmltYXRlKToKKyAgICAgICAgKiBzcmMvV2ViQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uKToKKwogMjAxMi0xMC0yOSAgRXVnZW5lIEtseXVjaG5pa292ICA8ZXVz
dGFzLmJ1Z0BnbWFpbC5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogVGltZWxpbmU6IG1h
a2UgY3B1LW1vbml0b3JpbmcgZmVhdHVyZSBhdmFpbGFibGUgb25seSBvbiBjYXBhYmxlIGJyb3dz
ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9Q
bGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IDg3MDYzOTM0MDE0YWViZmIzY2EzY2I4ZmFiNjYz
ZjdlN2ZmNTMzZGQuLjQzNDA5MTRiZDU4Y2Q2OGRhZmU3NGI0NzI0YmEyZTdhOWNlOWYzZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0
Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC03MSw2ICs3MSw4IEBACiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkZsb2F0UmVjdC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViR2FtZXBhZC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViR2FtZXBhZHMu
aCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkdlc3R1cmVDdXJ2ZVRhcmdldC5o
JywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViR2VzdHVyZUN1cnZlLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYkhUVFBIZWFkZXJWaXNpdG9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCmluZGV4IDQ3ZDk5MDVkYzQ5NTMwYjA3MGVkMmY2NWJl
ZTUzYjEzZDdhY2Q0MGUuLjRhMTBhYWE5MGMyNTkzYjc5YTVmN2E0NjAwMjAxY2FjMjc2ZDEwYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAor
KysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKQEAgLTU0LDYg
KzU0LDggQEAgY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViRmlsZVN5c3RlbTsKIGNsYXNz
IFdlYkZpbGVVdGlsaXRpZXM7CiBjbGFzcyBXZWJGbGluZ0FuaW1hdG9yOworY2xhc3MgV2ViR2Vz
dHVyZUN1cnZlVGFyZ2V0OworY2xhc3MgV2ViR2VzdHVyZUN1cnZlOwogY2xhc3MgV2ViTWVkaWFT
dHJlYW1DZW50ZXI7CiBjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudDsKIGNsYXNzIFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbDsKQEAgLTcxLDYgKzczLDggQEAgY2xhc3MgV2ViVVJMOwogY2xh
c3MgV2ViVVJMTG9hZGVyOwogY2xhc3MgV2ViV29ya2VyUnVuTG9vcDsKIHN0cnVjdCBXZWJMb2Nh
bGl6ZWRTdHJpbmc7CitzdHJ1Y3QgV2ViRmxvYXRQb2ludDsKK3N0cnVjdCBXZWJTaXplOwogCiBj
bGFzcyBQbGF0Zm9ybSB7CiBwdWJsaWM6CkBAIC00MTYsNiArNDIwLDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgV2ViRmxpbmdBbmltYXRvciogY3JlYXRlRmxpbmdBbmltYXRvcigpIHsgcmV0
dXJuIDA7IH0KIAorICAgIC8vIENyZWF0ZXMgYSBuZXcgZmxpbmcgYW5pbWF0aW9uIGN1cnZlIGlu
c3RhbmNlIGZvciBkZXZpY2UgfGRldmljZVNvdXJjZXwKKyAgICAvLyB3aXRoIHx2ZWxvY2l0eXwg
YW5kIGFscmVhZHkgc2Nyb2xsZWQgfGN1bXVsYXRpdmVTY3JvbGx8IHBpeGVscy4KKyAgICB2aXJ0
dWFsIFdlYkdlc3R1cmVDdXJ2ZSogY3JlYXRlRmxpbmdBbmltYXRpb25DdXJ2ZShpbnQgZGV2aWNl
U291cmNlLCBjb25zdCBXZWJGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgV2ViU2l6ZSYgY3Vt
dWxhdGl2ZVNjcm9sbCkgeyByZXR1cm4gMDsgfQorCiAgICAgLy8gV2ViUlRDIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8v
IERFUFJFQ0FURUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViR2VzdHVyZUN1cnZlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdl
c3R1cmVDdXJ2ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3YWNmOGIyYzM1NDJiM2FiZGIyZTEzNGI5ODA5Nzhj
YTdhMjNhMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkdlc3R1cmVDdXJ2ZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViR2VzdHVyZUN1cnZlX2gKKyNkZWZpbmUgV2ViR2VzdHVyZUN1cnZlX2gKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldDsKKworLy8gQWJz
dHJhY3QgaW50ZXJmYWNlIGZvciBjdXJ2ZXMgdXNlZCBieSBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24uIEEKKy8vIFdlYkdlc3R1cmVDdXJ2ZSBkZWZpbmVzIHRoZSBhbmltYXRpb24gcGFy
YW1ldGVycyBhcyBhIGZ1bmN0aW9uIG9mIHRpbWUKKy8vICh6ZXJvLWJhc2VkKSwgYW5kIGFwcGxp
ZXMgdGhlIHBhcmFtZXRlcnMgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvZiB0aGUKKy8vIGFuaW1h
dGlvbi4KK2NsYXNzIFdlYkdlc3R1cmVDdXJ2ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2Vi
R2VzdHVyZUN1cnZlKCkgeyB9CisKKyAgICAvLyBSZXR1cm5zIGEgbmFtZSBvZiB0aGUgY3VydmUg
Zm9yIHVzZSBpbiB0cmFjaW5nLgorICAgIHZpcnR1YWwgY29uc3QgY2hhciogdHJhY2VOYW1lKCkg
Y29uc3QgPSAwOworCisgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBjdXJ2ZSBoYXMgZmluaXNoZWQg
YW5kIGNhbiBubyBsb25nZXIgYmUgYXBwbGllZC4KKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoZG91
YmxlIHRpbWUsIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldCopID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViR2VzdHVyZUN1cnZlVGFyZ2V0LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkdlc3R1cmVDdXJ2ZVRhcmdldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhZWFjMWI2ZTI5
NjAwM2YyYWNhZTgyYTNhMjEyZmJmYjkwZGY4ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdlc3R1cmVDdXJ2ZVRhcmdldC5oCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR2VzdHVyZUN1cnZlVGFyZ2V0X2gK
KyNkZWZpbmUgV2ViR2VzdHVyZUN1cnZlVGFyZ2V0X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBvaW50OworCitjbGFzcyBXZWJHZXN0dXJlQ3VydmVUYXJnZXQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJQb2ludCYpID0gMDsKKworcHJv
dGVjdGVkOgorICAgIHZpcnR1YWwgfldlYkdlc3R1cmVDdXJ2ZVRhcmdldCgpIHsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CmluZGV4IDNlZGM0YTViNDc2MmI0NDlkODQyNGI2NGYyYTI2MjBjMWVhOWQ0NDEuLjA0Y2M5NzI0
MjJjNGViNzNlMzUwY2ZmOWY5YzNmNTE0MThiOGY0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKQEAgLTQ3Myw2ICs0NzMsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dENo
ZWNraW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlRleHRD
aGVja2luZ1Jlc3VsdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViQWN0aXZlR2VzdHVyZUFuaW1h
dGlvbi5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlv
bi5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkFycmF5QnVmZmVyLmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdmZmNkZGMxYThiZjViZWNhMzA1ZmE1NzFkZWEzNjZmNjcyY2IxNDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY3RpdmVHZXN0
dXJlQW5pbWF0aW9uLmNwcApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb24uaCIKKworI2luY2x1ZGUg
IlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViR2VzdHVyZUN1cnZlLmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYkdlc3R1cmVDdXJ2ZVRhcmdldC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUGFzc093blB0cjxXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPiBXZWJBY3RpdmVHZXN0
dXJlQW5pbWF0aW9uOjpjcmVhdGVBdEFuaW1hdGlvblN0YXJ0KFBhc3NPd25QdHI8V2ViR2VzdHVy
ZUN1cnZlPiBjdXJ2ZSwgV2ViR2VzdHVyZUN1cnZlVGFyZ2V0KiB0YXJnZXQpCit7CisgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKGN1cnZlLCB0YXJnZXQs
IDAsIHRydWUpKTsKK30KKworUGFzc093blB0cjxXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPiBX
ZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGVXaXRoVGltZU9mZnNldChQYXNzT3duUHRy
PFdlYkdlc3R1cmVDdXJ2ZT4gY3VydmUsIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0LCBk
b3VibGUgc3RhcnRUaW1lKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQWN0aXZlR2Vz
dHVyZUFuaW1hdGlvbihjdXJ2ZSwgdGFyZ2V0LCBzdGFydFRpbWUsIGZhbHNlKSk7Cit9CisKK1dl
YkFjdGl2ZUdlc3R1cmVBbmltYXRpb246On5XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKCkKK3sK
KyAgICBUUkFDRV9FVkVOVF9BU1lOQ19FTkQwKCJpbnB1dCIsICJHZXN0dXJlQW5pbWF0aW9uIiwg
dGhpcyk7Cit9CisKK1dlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb246OldlYkFjdGl2ZUdlc3R1cmVB
bmltYXRpb24oUGFzc093blB0cjxXZWJHZXN0dXJlQ3VydmU+IGN1cnZlLCBXZWJHZXN0dXJlQ3Vy
dmVUYXJnZXQqIHRhcmdldCwgZG91YmxlIHN0YXJ0VGltZSwgYm9vbCB3YWl0aW5nRm9yRmlyc3RU
aWNrKQorICAgIDogbV9zdGFydFRpbWUoc3RhcnRUaW1lKQorICAgICwgbV93YWl0aW5nRm9yRmly
c3RUaWNrKHdhaXRpbmdGb3JGaXJzdFRpY2spCisgICAgLCBtX2N1cnZlKGN1cnZlKQorICAgICwg
bV90YXJnZXQodGFyZ2V0KQoreworICAgIFRSQUNFX0VWRU5UX0FTWU5DX0JFR0lOMSgiaW5wdXQi
LCAiR2VzdHVyZUFuaW1hdGlvbiIsIHRoaXMsICJjdXJ2ZSIsIG1fY3VydmUtPnRyYWNlTmFtZSgp
KTsKK30KKworYm9vbCBXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjphbmltYXRlKGRvdWJsZSB0
aW1lKQoreworICAgIGlmIChtX3dhaXRpbmdGb3JGaXJzdFRpY2spIHsKKyAgICAgICAgbV9zdGFy
dFRpbWUgPSB0aW1lOworICAgICAgICBtX3dhaXRpbmdGb3JGaXJzdFRpY2sgPSBmYWxzZTsKKyAg
ICB9CisgICAgLy8gQWxsIFdlYkdlc3R1cmVDdXJ2ZXMgYXNzdW1lIHplcm8tYmFzZWQgdGltZSwg
c28gd2Ugc3VidHJhY3QKKyAgICAvLyB0aGUgYW5pbWF0aW9uIHN0YXJ0IHRpbWUgYmVmb3JlIHBh
c3NpbmcgdG8gdGhlIGN1cnZlLgorICAgIHJldHVybiBtX2N1cnZlLT5hcHBseSh0aW1lIC0gbV9z
dGFydFRpbWUsIG1fdGFyZ2V0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjUyZTFiZjc1MjE0MWFkY2JiNWUyMTNmNWRkMGE4YzFjNWIxYmE3MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjdGl2ZUdl
c3R1cmVBbmltYXRpb24uaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBY3Rp
dmVHZXN0dXJlQW5pbWF0aW9uX2gKKyNkZWZpbmUgV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbl9o
CisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkdlc3R1cmVDdXJ2ZTsKK2NsYXNzIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldDsKKworLy8g
SW1wbGVtZW50cyBhIGdlc3R1cmUgYW5pbWF0aW9uIChmbGluZyBzY3JvbGwsIGV0Yy4pIHVzaW5n
IGEgY3VydmUgd2l0aCBhIGdlbmVyaWMgaW50ZXJmYWNlCisvLyB0byBkZWZpbmUgdGhlIGFuaW1h
dGlvbiBwYXJhbWV0ZXJzIGFzIGEgZnVuY3Rpb24gb2YgdGltZSwgYW5kIGFwcGxpZXMgdGhlIGFu
aW1hdGlvbgorLy8gdG8gYSB0YXJnZXQsIGFnYWluIHZpYSBhIGdlbmVyaWMgaW50ZXJmYWNlLiBJ
dCBpcyBhc3N1bWVkIHRoYXQgYW5pbWF0ZSgpIGlzIGNhbGxlZAorLy8gb24gYSBtb3JlLW9yLWxl
c3MgcmVndWxhciBiYXNpcyBieSB0aGUgb3duZXIuCitjbGFzcyBXZWJBY3RpdmVHZXN0dXJlQW5p
bWF0aW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJBY3RpdmVHZXN0dXJlQW5pbWF0
aW9uKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJBY3RpdmVHZXN0dXJlQW5p
bWF0aW9uPiBjcmVhdGVBdEFuaW1hdGlvblN0YXJ0KFBhc3NPd25QdHI8V2ViR2VzdHVyZUN1cnZl
PiwgV2ViR2VzdHVyZUN1cnZlVGFyZ2V0Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQWN0
aXZlR2VzdHVyZUFuaW1hdGlvbj4gY3JlYXRlV2l0aFRpbWVPZmZzZXQoUGFzc093blB0cjxXZWJH
ZXN0dXJlQ3VydmU+LCBXZWJHZXN0dXJlQ3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsK
KyAgICB+V2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbigpOworCisgICAgYm9vbCBhbmltYXRlKGRv
dWJsZSB0aW1lKTsKKworcHJpdmF0ZToKKyAgICAvLyBBc3N1bWVzIGEgdmFsaWQgV2ViR2VzdHVy
ZUN1cnZlVGFyZ2V0IHRoYXQgb3V0bGl2ZXMgdGhlIGFuaW1hdGlvbi4KKyAgICBXZWJBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8V2ViR2VzdHVyZUN1cnZlPiwgV2ViR2VzdHVyZUN1
cnZlVGFyZ2V0KiwgZG91YmxlIHN0YXJ0VGltZSwgYm9vbCB3YWl0aW5nRm9yRmlyc3RUaWNrKTsK
KworICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKKyAgICBib29sIG1fd2FpdGluZ0ZvckZpcnN0VGlj
azsKKyAgICBPd25QdHI8V2ViR2VzdHVyZUN1cnZlPiBtX2N1cnZlOworICAgIFdlYkdlc3R1cmVD
dXJ2ZVRhcmdldCogbV90YXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171849</attachid>
            <date>2012-11-01 07:32:32 -0700</date>
            <delta_ts>2012-11-01 11:56:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100675-20121101103053.patch</filename>
            <type>text/plain</type>
            <size>14876</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyMTJkZDY2ZjViNzdm
ZmJjYzA5OTMwNjJjM2JkZmVmZjE3NTUyMWVjLi45YjE4NDk2ZDBjOWY0YzQyZmEyZDMzNTMxMzU3
OWUyYTM4Y2E4MTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMi0xMC0zMCAg
Um9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBQcm92aWRlIFdlYktpdCBBUEkgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybSBnZXN0dXJlIGN1
cnZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAw
Njc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVm
aW5lIGludGVyZmFjZXMgdG8gcGVybWl0IHRoZSBDaHJvbWl1bSBlbWJlZGRlciB0byBwcm92aWRl
IGl0cyBvd24KKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgYSBnZXN0dXJlIGFuaW1hdGlvbiBj
dXJ2ZSBhbmQgYWRkIGFuIGVudHJ5IHBvaW50CisgICAgICAgIHRvIFBsYXRmb3JtLmggdGhhdCBw
ZXJtaXRzIFdlYktpdCB0byBvYnRhaW4gYW4gaW5zdGFuY2Ugb2YgYW4gZW1iZWRkZXItCisgICAg
ICAgIHByb3ZpZGVkIGdlc3R1cmUgY3VydmUuCisKKyAgICAgICAgTm8gdGVzdHMgbmVlZGVkIGlu
IHRoaXMgQ0w6IG9ubHkgaW50ZXJmYWNlcyBhcmUgYmVpbmcgYWRkZWQuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm06OmNyZWF0ZUZsaW5nQW5pbWF0aW9uQ3VydmUpOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJHZXN0dXJlQ3VydmUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUN1cnZlOjp+
V2ViR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViR2VzdHVyZUN1
cnZlVGFyZ2V0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkdlc3R1
cmVDdXJ2ZVRhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlc3R1cmVDdXJ2ZVRhcmdldDo6
fldlYkdlc3R1cmVDdXJ2ZVRhcmdldCk6CisgICAgICAgICogY2hyb21pdW0vc3JjL1dlYkFjdGl2
ZUdlc3R1cmVBbmltYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZUF0QW5pbWF0aW9uU3Rh
cnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGVX
aXRoVGltZU9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjdGl2ZUdlc3R1cmVBbmltYXRp
b246On5XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWN0
aXZlR2VzdHVyZUFuaW1hdGlvbjo6V2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb246OmFuaW1hdGUpOgorICAgICAgICAq
IGNocm9taXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb24pOgorCiAyMDEy
LTEwLTI2ICBDaHJpc3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gQWRkIGFkZGl0aW9uYWwgbWVtb3J5IG1hbmFnZW1lbnQgZmllbGRz
IHRvIFdlYkdyYXBoaWNzQ29udGV4dDNECmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxh
dGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IDg3MDYzOTM0
MDE0YWViZmIzY2EzY2I4ZmFiNjYzZjdlN2ZmNTMzZGQuLmRkMjZlNmE1OWY4MWIwYTIzZDY3MzNl
MTVmMGZiNzQ4MTE1ODg1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5n
eXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC03MSw2ICs3MSw4IEBA
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UmVjdC5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViR2FtZXBhZC5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViR2FtZXBhZHMuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
Ykdlc3R1cmVDdXJ2ZVRhcmdldC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
R2VzdHVyZUN1cnZlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGlj
c0NvbnRleHQzRC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEJvZHku
aCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkhUVFBIZWFkZXJWaXNpdG9yLmgn
LApAQCAtMTY0LDYgKzE2Niw4IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL3dpbi9X
ZWJTYW5kYm94U3VwcG9ydC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvd2luL1dl
YlRoZW1lRW5naW5lLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3NyYy9QbGF0Zm9ybS5jcHAn
LAorICAgICAgICAgICAgJ2Nocm9taXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNw
cCcsCisgICAgICAgICAgICAnY2hyb21pdW0vc3JjL1dlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb24u
aCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vc3JjL1dlYkNTdHJpbmcuY3BwJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9zcmMvV2ViRmlsdGVyT3BlcmF0aW9uLmNwcCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vc3JjL1dlYkZpbHRlck9wZXJhdGlvbnMuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaCBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAppbmRleCA0N2Q5OTA1ZGM0OTUzMGIwNzBlZDJmNjVi
ZWU1M2IxM2Q3YWNkNDBlLi40YTEwYWFhOTBjMjU5M2I3OWE1ZjdhNDYwMDIwMWNhYzI3NmQxMGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgK
KysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCkBAIC01NCw2
ICs1NCw4IEBAIGNsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkZpbGVTeXN0ZW07CiBjbGFz
cyBXZWJGaWxlVXRpbGl0aWVzOwogY2xhc3MgV2ViRmxpbmdBbmltYXRvcjsKK2NsYXNzIFdlYkdl
c3R1cmVDdXJ2ZVRhcmdldDsKK2NsYXNzIFdlYkdlc3R1cmVDdXJ2ZTsKIGNsYXNzIFdlYk1lZGlh
U3RyZWFtQ2VudGVyOwogY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQ7CiBjbGFzcyBX
ZWJNZXNzYWdlUG9ydENoYW5uZWw7CkBAIC03MSw2ICs3Myw4IEBAIGNsYXNzIFdlYlVSTDsKIGNs
YXNzIFdlYlVSTExvYWRlcjsKIGNsYXNzIFdlYldvcmtlclJ1bkxvb3A7CiBzdHJ1Y3QgV2ViTG9j
YWxpemVkU3RyaW5nOworc3RydWN0IFdlYkZsb2F0UG9pbnQ7CitzdHJ1Y3QgV2ViU2l6ZTsKIAog
Y2xhc3MgUGxhdGZvcm0gewogcHVibGljOgpAQCAtNDE2LDYgKzQyMCwxMCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIFdlYkZsaW5nQW5pbWF0b3IqIGNyZWF0ZUZsaW5nQW5pbWF0b3IoKSB7IHJl
dHVybiAwOyB9CiAKKyAgICAvLyBDcmVhdGVzIGEgbmV3IGZsaW5nIGFuaW1hdGlvbiBjdXJ2ZSBp
bnN0YW5jZSBmb3IgZGV2aWNlIHxkZXZpY2VTb3VyY2V8CisgICAgLy8gd2l0aCB8dmVsb2NpdHl8
IGFuZCBhbHJlYWR5IHNjcm9sbGVkIHxjdW11bGF0aXZlU2Nyb2xsfCBwaXhlbHMuCisgICAgdmly
dHVhbCBXZWJHZXN0dXJlQ3VydmUqIGNyZWF0ZUZsaW5nQW5pbWF0aW9uQ3VydmUoaW50IGRldmlj
ZVNvdXJjZSwgY29uc3QgV2ViRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IFdlYlNpemUmIGN1
bXVsYXRpdmVTY3JvbGwpIHsgcmV0dXJuIDA7IH0KKwogICAgIC8vIFdlYlJUQyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAv
LyBERVBSRUNBVEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkdlc3R1cmVDdXJ2ZS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJH
ZXN0dXJlQ3VydmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMDMyOTY0NTQwYTNjYjdlZTIzN2YxNzBhZTg4Mzky
MTVjODBkZGRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJHZXN0dXJlQ3VydmUuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYkdlc3R1cmVDdXJ2ZV9oCisjZGVmaW5lIFdlYkdlc3R1cmVDdXJ2ZV9oCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJHZXN0dXJlQ3VydmVUYXJnZXQ7CisKKy8vIEFi
c3RyYWN0IGludGVyZmFjZSBmb3IgY3VydmVzIHVzZWQgYnkgQWN0aXZlUGxhdGZvcm1HZXN0dXJl
QW5pbWF0aW9uLiBBCisvLyBXZWJHZXN0dXJlQ3VydmUgZGVmaW5lcyB0aGUgYW5pbWF0aW9uIHBh
cmFtZXRlcnMgYXMgYSBmdW5jdGlvbiBvZiB0aW1lCisvLyAoemVyby1iYXNlZCksIGFuZCBhcHBs
aWVzIHRoZSBwYXJhbWV0ZXJzIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb2YgdGhlCisvLyBhbmlt
YXRpb24uCitjbGFzcyBXZWJHZXN0dXJlQ3VydmUgeworcHVibGljOgorICAgIHZpcnR1YWwgfldl
Ykdlc3R1cmVDdXJ2ZSgpIHsgfQorCisgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBjdXJ2ZSBoYXMg
ZmluaXNoZWQgYW5kIGNhbiBubyBsb25nZXIgYmUgYXBwbGllZC4KKyAgICB2aXJ0dWFsIGJvb2wg
YXBwbHkoZG91YmxlIHRpbWUsIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldCopID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViR2VzdHVyZUN1cnZlVGFyZ2V0LmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkdlc3R1cmVDdXJ2ZVRhcmdldC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZh
ZWFjMWI2ZTI5NjAwM2YyYWNhZTgyYTNhMjEyZmJmYjkwZGY4ZWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdlc3R1cmVDdXJ2ZVRhcmdldC5o
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR2VzdHVyZUN1cnZl
VGFyZ2V0X2gKKyNkZWZpbmUgV2ViR2VzdHVyZUN1cnZlVGFyZ2V0X2gKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBvaW50OworCitjbGFzcyBXZWJHZXN0dXJlQ3VydmVUYXJnZXQg
eworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJQb2ludCYpID0g
MDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfldlYkdlc3R1cmVDdXJ2ZVRhcmdldCgpIHsg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNwcCBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9zcmMvV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzdjYWQwNThhNDIyZTIxNTNjYTE3M2Q0YzQwMDM0ZGVmOGI1NWEyOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9zcmMvV2ViQWN0aXZl
R2VzdHVyZUFuaW1hdGlvbi5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgiCisKKyNpbmNs
dWRlIDxwdWJsaWMvV2ViR2VzdHVyZUN1cnZlLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkdlc3R1
cmVDdXJ2ZVRhcmdldC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc093blB0cjxXZWJB
Y3RpdmVHZXN0dXJlQW5pbWF0aW9uPiBXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGVB
dEFuaW1hdGlvblN0YXJ0KFBhc3NPd25QdHI8V2ViR2VzdHVyZUN1cnZlPiBjdXJ2ZSwgV2ViR2Vz
dHVyZUN1cnZlVGFyZ2V0KiB0YXJnZXQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJB
Y3RpdmVHZXN0dXJlQW5pbWF0aW9uKGN1cnZlLCB0YXJnZXQsIDAsIHRydWUpKTsKK30KKworUGFz
c093blB0cjxXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPiBXZWJBY3RpdmVHZXN0dXJlQW5pbWF0
aW9uOjpjcmVhdGVXaXRoVGltZU9mZnNldChQYXNzT3duUHRyPFdlYkdlc3R1cmVDdXJ2ZT4gY3Vy
dmUsIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0LCBkb3VibGUgc3RhcnRUaW1lKQorewor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbihjdXJ2ZSwg
dGFyZ2V0LCBzdGFydFRpbWUsIGZhbHNlKSk7Cit9CisKK1dlYkFjdGl2ZUdlc3R1cmVBbmltYXRp
b246On5XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKCkKK3sKK30KKworV2ViQWN0aXZlR2VzdHVy
ZUFuaW1hdGlvbjo6V2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFdlYkdlc3R1
cmVDdXJ2ZT4gY3VydmUsIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0LCBkb3VibGUgc3Rh
cnRUaW1lLCBib29sIHdhaXRpbmdGb3JGaXJzdFRpY2spCisgICAgOiBtX3N0YXJ0VGltZShzdGFy
dFRpbWUpCisgICAgLCBtX3dhaXRpbmdGb3JGaXJzdFRpY2sod2FpdGluZ0ZvckZpcnN0VGljaykK
KyAgICAsIG1fY3VydmUoY3VydmUpCisgICAgLCBtX3RhcmdldCh0YXJnZXQpCit7Cit9CisKK2Jv
b2wgV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6YW5pbWF0ZShkb3VibGUgdGltZSkKK3sKKyAg
ICBpZiAobV93YWl0aW5nRm9yRmlyc3RUaWNrKSB7CisgICAgICAgIG1fc3RhcnRUaW1lID0gdGlt
ZTsKKyAgICAgICAgbV93YWl0aW5nRm9yRmlyc3RUaWNrID0gZmFsc2U7CisgICAgfQorICAgIC8v
IEFsbCBXZWJHZXN0dXJlQ3VydmVzIGFzc3VtZSB6ZXJvLWJhc2VkIHRpbWUsIHNvIHdlIHN1YnRy
YWN0CisgICAgLy8gdGhlIGFuaW1hdGlvbiBzdGFydCB0aW1lIGJlZm9yZSBwYXNzaW5nIHRvIHRo
ZSBjdXJ2ZS4KKyAgICByZXR1cm4gbV9jdXJ2ZS0+YXBwbHkodGltZSAtIG1fc3RhcnRUaW1lLCBt
X3RhcmdldCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmggYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vc3JjL1dlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NTJlMWJmNzUyMTQxYWRjYmI1ZTIxM2Y1ZGQwYThjMWM1YjFiYTcwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJl
QW5pbWF0aW9uLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQWN0aXZlR2Vz
dHVyZUFuaW1hdGlvbl9oCisjZGVmaW5lIFdlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb25faAorCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJHZXN0dXJlQ3VydmU7CitjbGFzcyBXZWJHZXN0dXJlQ3VydmVUYXJnZXQ7CisKKy8vIEltcGxl
bWVudHMgYSBnZXN0dXJlIGFuaW1hdGlvbiAoZmxpbmcgc2Nyb2xsLCBldGMuKSB1c2luZyBhIGN1
cnZlIHdpdGggYSBnZW5lcmljIGludGVyZmFjZQorLy8gdG8gZGVmaW5lIHRoZSBhbmltYXRpb24g
cGFyYW1ldGVycyBhcyBhIGZ1bmN0aW9uIG9mIHRpbWUsIGFuZCBhcHBsaWVzIHRoZSBhbmltYXRp
b24KKy8vIHRvIGEgdGFyZ2V0LCBhZ2FpbiB2aWEgYSBnZW5lcmljIGludGVyZmFjZS4gSXQgaXMg
YXNzdW1lZCB0aGF0IGFuaW1hdGUoKSBpcyBjYWxsZWQKKy8vIG9uIGEgbW9yZS1vci1sZXNzIHJl
Z3VsYXIgYmFzaXMgYnkgdGhlIG93bmVyLgorY2xhc3MgV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlv
biB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbik7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlv
bj4gY3JlYXRlQXRBbmltYXRpb25TdGFydChQYXNzT3duUHRyPFdlYkdlc3R1cmVDdXJ2ZT4sIFdl
Ykdlc3R1cmVDdXJ2ZVRhcmdldCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkFjdGl2ZUdl
c3R1cmVBbmltYXRpb24+IGNyZWF0ZVdpdGhUaW1lT2Zmc2V0KFBhc3NPd25QdHI8V2ViR2VzdHVy
ZUN1cnZlPiwgV2ViR2VzdHVyZUN1cnZlVGFyZ2V0KiwgZG91YmxlIHN0YXJ0VGltZSk7CisgICAg
fldlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb24oKTsKKworICAgIGJvb2wgYW5pbWF0ZShkb3VibGUg
dGltZSk7CisKK3ByaXZhdGU6CisgICAgLy8gQXNzdW1lcyBhIHZhbGlkIFdlYkdlc3R1cmVDdXJ2
ZVRhcmdldCB0aGF0IG91dGxpdmVzIHRoZSBhbmltYXRpb24uCisgICAgV2ViQWN0aXZlR2VzdHVy
ZUFuaW1hdGlvbihQYXNzT3duUHRyPFdlYkdlc3R1cmVDdXJ2ZT4sIFdlYkdlc3R1cmVDdXJ2ZVRh
cmdldCosIGRvdWJsZSBzdGFydFRpbWUsIGJvb2wgd2FpdGluZ0ZvckZpcnN0VGljayk7CisKKyAg
ICBkb3VibGUgbV9zdGFydFRpbWU7CisgICAgYm9vbCBtX3dhaXRpbmdGb3JGaXJzdFRpY2s7Cisg
ICAgT3duUHRyPFdlYkdlc3R1cmVDdXJ2ZT4gbV9jdXJ2ZTsKKyAgICBXZWJHZXN0dXJlQ3VydmVU
YXJnZXQqIG1fdGFyZ2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>