<?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>23488</bug_id>
          
          <creation_ts>2009-01-22 17:51:27 -0800</creation_ts>
          <short_desc>Make TimerBase thread-aware. For use in Workers.</short_desc>
          <delta_ts>2009-01-29 18:02:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>22718</blocked>
    
    <blocked>23560</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Titov">dimich</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>106667</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-22 17:51:27 -0800</bug_when>
    <thetext>To add setTimeout and friends to workers, we need to make TimerBase thread-aware. Timers use &apos;timer heap&apos; to compute the nearest firing time and then fire timers that are ready. This heap is now global and will go into a new ThreadTimers object which will live in ThreadGlobalData. 

Also, global SharedTimer interface gets wrapped into an abstract class so the WorkerRunLoop can implement it too.

Patch is coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106705</commentid>
    <comment_count>1</comment_count>
      <attachid>26957</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-22 21:51:31 -0800</bug_when>
    <thetext>Created attachment 26957
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106728</commentid>
    <comment_count>2</comment_count>
      <attachid>26964</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-23 01:55:54 -0800</bug_when>
    <thetext>Created attachment 26964
Proposed patch, v2

Thanks to David Levin who noticed a few coding style issues!
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106807</commentid>
    <comment_count>3</comment_count>
      <attachid>26985</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-23 14:48:52 -0800</bug_when>
    <thetext>Created attachment 26985
Updated patch

Looking at it a bit more, fixed following:
- in multiple threads case, the timers can be created before worker thread initializes SharedTimer, and SharedTimer pointer may be set to 0 before all the timers are removed. Add check to avoid calling to SharedTimer when it&apos;s 0. (in setSharedTimer, updateSharedTimer)

- made ThreadTimers::m_timerHeap an instance of a Vector rather then a pointer to avoid it leaking when ThreadTimers gets destroyed (it does if its thread is not a main one)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106875</commentid>
    <comment_count>4</comment_count>
      <attachid>26985</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-24 13:35:05 -0800</bug_when>
    <thetext>Comment on attachment 26985
Updated patch

&gt; +    class SharedTimer {
&gt; +    public:
&gt; +        virtual ~SharedTimer() {}
&gt; +        virtual void setFiredFunction(void (*)()) = 0;
&gt; +        // The fire time is relative to the classic POSIX epoch of January 1, 1970,
&gt; +        // as the result of currentTime() is.
&gt; +        virtual void setFireTime(double) = 0;
&gt; +        virtual void stop() = 0;
&gt; +    };

The formatting was slightly better in the old version, where there was a blank line before the comment. It&apos;s a little harder to understand what the comment is grouped with here with everything mushed together.

&gt; +Vector&lt;TimerBase*&gt;* ThreadTimers::timerHeap()
&gt; +{
&gt; +    return &amp;m_timerHeap;
&gt; +}

I think this should return a reference instead of a pointer. Callers currently have code to handle 0, and I&apos;m not sure why.

&gt; +HashSet&lt;const TimerBase*&gt;* ThreadTimers::timersReadyToFire()
&gt; +{
&gt; +    return m_timersReadyToFire;
&gt; +}

This too.

&gt; -        ASSERT(m_index &lt; (timerHeap ? static_cast&lt;int&gt;(timerHeap-&gt;size()) : 0));
&gt; +        ASSERT(m_index &lt; (timerHeap() ? static_cast&lt;int&gt;(timerHeap()-&gt;size()) : 0));

Can timerHeap() be zero? If not, lets remove the unneeded code.

&gt; -        ASSERT_UNUSED(offset, m_index + offset &lt;= (timerHeap ? static_cast&lt;int&gt;(timerHeap-&gt;size()) : 0));
&gt; +        ASSERT_UNUSED(offset, m_index + offset &lt;= (timerHeap() ? static_cast&lt;int&gt;(timerHeap()-&gt;size()) : 0));

Same question here.

&gt; -    return m_nextFireTime || (timersReadyToFire &amp;&amp; timersReadyToFire-&gt;contains(this));
&gt; +    return m_nextFireTime || (timersReadyToFire() &amp;&amp; timersReadyToFire()-&gt;contains(this));

Can timersReadToFire() be zero? If not, lets remove the unneeded code.

&gt; +class SharedTimer;

Forward declarations should all go at the top of the file, not in the middle.

&gt; +// A collection of timers per thread. Kept in ThreadGlobalData.
&gt; +class ThreadTimers : Noncopyable {

We normally want one class per header file. Can this class go in its own header? Also, can it be private? Do source files using the Timer class need to see this class&apos;s definition?

Can TimerBase still be the public interface to fireTimersInNestedEventLoop -- after all, it can just call through to the ThreadTimers function.

I think the patch would be so much better if you used references instead of pointers that I&apos;m going to say review- and wait for a new patch. But generally, this patch seems great, and I was really close to saying review+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106876</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-24 13:36:14 -0800</bug_when>
    <thetext>It&apos;s critical to keep the often-used header as small as possible. I&apos;d like to see the new version of this patch keep Timer.h small and put new declarations either in a new .h file or possibly in the .cpp file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106906</commentid>
    <comment_count>6</comment_count>
      <attachid>27008</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-24 23:26:27 -0800</bug_when>
    <thetext>Created attachment 27008
Review comments addressed.

Thanks for review!
I think this patch addresses all the comments:

- added vertical space to SharedTimer.h
- moved fireTimersInNestedEventLoop back as static to TimerBase. It redirects to ThreadTimers internally. So other source files do not need to know about ThreadTimers.
- ThreadTimers::timerHeap() now returns reference, not a pointer. Removed checks for zero in callers.
- ditto for the ThreadTimers::timersReadyToFire, but with a twist: this one had a dual purpose. It was used to point to a stack-allocated set of timers and also serve as reentrancy guard (this is why it could be 0 before and some checks for 0 were necessary). However, this wasn&apos;t very good for readability so I&apos;ve split this into 2 variables - bool m_firingTimers and m_timersReadyToFire that is never 0 (but can be empty).
- split ThreadTimers off into a separate .h and .cpp files. Couldn&apos;t make it private since it has to be used in ThreadGlobalData.cpp as well as in Timer.cpp.
- updated ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107591</commentid>
    <comment_count>7</comment_count>
      <attachid>27008</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-29 15:06:39 -0800</bug_when>
    <thetext>Comment on attachment 27008
Review comments addressed.

&gt; +static MainThreadSharedTimer* mainThreadSharedTimer()
&gt; +{
&gt; +    static MainThreadSharedTimer* timer = 0;
&gt; +    if (!timer)
&gt; +        timer = new MainThreadSharedTimer();
&gt; +    return timer;
&gt; +}

You can get the same behavior without an if statement.

    static MainThreadSharedTimer* mainThreadSharedTimer()
    {
        static MainThreadSharedTimer* timer = new MainThreadSharedTimer;
        return timer;
    }

&gt; +// Also, SharedTimer can be replaced with 0 before all timers are destructed.

Should say &quot;destroyed&quot; here, not &quot;destructed&quot;.

Looks fine, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107615</commentid>
    <comment_count>8</comment_count>
      <attachid>27170</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-29 16:20:41 -0800</bug_when>
    <thetext>Created attachment 27170
Final version

Thanks!!!

Addressed latest comments (removed &apos;if&apos; and fixed comment) and resolved against current tree.
Can be landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107631</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-29 18:02:16 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	C	WebCore/platform/ThreadGlobalData.h =&gt; WebCore/platform/ThreadTimers.h
	M	WebCore/ChangeLog
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.pro
	M	WebCore/WebCore.scons
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/WebCoreSources.bkl
	M	WebCore/platform/SharedTimer.h
	M	WebCore/platform/ThreadGlobalData.cpp
	M	WebCore/platform/ThreadGlobalData.h
	A	WebCore/platform/ThreadTimers.cpp
	M	WebCore/platform/Timer.cpp
	M	WebCore/platform/Timer.h
Committed r40393


I&apos;m not sure what the C means during the commit.  Hopefully not pain, death, or suffering.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26957</attachid>
            <date>2009-01-22 21:51:31 -0800</date>
            <delta_ts>2009-01-23 01:55:54 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>timers.txt</filename>
            <type>text/plain</type>
            <size>24744</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGNiODRmOS4uOWI5ZWFhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAwOS0wMS0yMiAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0ODgKKworICAgICAgICBNYWtlIFRpbWVyQmFzZSB0aHJlYWQtYXdhcmUgKGZvciBXb3JrZXJz
KS4KKyAgICAgICAgQWRkZWQgbmV3IGNsYXNzIFRocmVhZFRpbWVycyAtIGl0IGtlZXBzIGEgaGVh
cCBvZiBhbGwgdGltZXJzIGZvciBhIHRocmVhZCAocHJldmlvdXNseSBrZXB0IGluIGEgc3RhdGlj
IGdsb2JhbCkuCisgICAgICAgIFBvaW50ZXIgdG8gaW5zdGFuY2Ugb2YgVGhyZWFkVGltZXJzIGlz
IHN0b3JlZCBpbiBHbG9iYWxUaHJlYWREYXRhLgorICAgICAgICBBbGwgc3RhdGljIG1ldGhvZHMg
b2YgVGltZXJCYXNlIHdlbnQgdG8gVGhyZWFkVGltZXJzLgorCisgICAgICAgIFRoZSBUaW1lckJh
c2UgZnVuY3Rpb25hbGl0eSBkaWQgbm90IGNoYW5nZSAoaXQgbWFpbnRhaW5zIHRoZSB0aW1lciBo
ZWFwIHdoaWNoIGNvbXB1dGVzIHRoZSBuZWFyZXN0IGZpcmluZykuCisKKyAgICAgICAgQWRkZWQg
bmV3IGFic3RyYWN0IGNsYXNzIFNoYXJlZFRpbWVyLCBzbyB3b3JrZXIgdGhyZWFkcyBjYW4gcHJv
dmlkZSB0aGVpciBvd24gaW1wbGVtZW50YXRpb24gKHdpbGwgYmUgaW1wbGVtZW50ZWQgb24gV29y
a2VyUnVuTG9vcCkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VJZk5l
ZWRlZCk6IE5hbWUgY2hhbmdlIFRpbWVyQmFzZS0+VGhyZWFkVGltZXJzCisgICAgICAgICogcGFn
ZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpydW5Nb2RhbCk6IERpdHRv
LgorCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkVGltZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZFRpbWVyOjp+U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZVRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRo
cmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgQWRkZWQgYWJzdHJhY3QgU2hhcmVkVGlt
ZXIgYW5kIE1haW5UaHJlYWRTaGFyZWRUaW1lciB3aGljaCByZWRpcmVjdHMgdG8gdGhlIGV4aXN0
aW5nIHBvcnQtc3VwcGxpZWQgZnVuY3Rpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpUaHJl
YWRHbG9iYWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6On5UaHJl
YWRHbG9iYWxEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjp0aHJlYWRUaW1lcnMpOgorICAgICAg
ICBBZGRlZCBUaHJlYWRUaW1lcnMgdG8gVGhyZWFkR2xvYmFsRGF0YS4KKworICAgICAgICAqIHBs
YXRmb3JtL1RpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1haW5UaHJlYWRTaGFyZWRUaW1l
cik6CisgICAgICAgIFN0YXRpYyBnZXR0ZXIgZm9yIGEgTWFpblRocmVhZFNoYXJlZFRpbWVyIHNp
bmdsZXRvbi4KKworICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpUaHJlYWRUaW1lcnMp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzZXRTaGFyZWRUaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6OnRpbWVySGVhcCk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRUaW1lcnM6OnRpbWVyc1JlYWR5VG9GaXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZFRpbWVyczo6dXBkYXRlU2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
VGltZXJzOjpjb2xsZWN0RmlyaW5nVGltZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRp
bWVyczo6ZmlyZVRpbWVycyk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6OnNoYXJl
ZFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzaGFyZWRUaW1l
ckZpcmVkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpmaXJlVGlt
ZXJzSW5OZXN0ZWRFdmVudExvb3ApOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpm
aXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3BJbnRlcm5hbCk6CisgICAgICAgIFRocmVhZFRpbWVy
cyBpbXBsZW1lbnRhdGlvbi4gTW9zdCBvZiB0aGUgY29kZSBpcyBtb3ZlZCBmcm9tIHByZXZpb3Mg
c3RhdGljIGZ1bmN0aW9ucyBvbiBUaW1lckJhc2UuCisgICAgICAgIEluIGNhc2Ugb2YgYSBzaW5n
bGUgdGhyZWFkIHRoZXkgd2VyZSBzdGF0aWMsIG5vdyB0aGV5IGFyZSBwZXItdGhyZWFkLCB0b2dl
dGhlciB3aXRoIFRocmVhZFRpbWVycy4KKworICAgICAgICAoV2ViQ29yZTo6dGltZXJIZWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OnRpbWVyc1JlYWR5VG9GaXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbWVySGVhcEVsZW1lbnQ6OlRpbWVySGVhcEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
VGltZXJIZWFwRWxlbWVudDo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpU
aW1lckhlYXBFbGVtZW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFw
SXRlcmF0b3I6OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNl
OjpUaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjp+VGltZXJCYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGltZXJCYXNlOjpjaGVja0hlYXBJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJh
c2U6OmhlYXBEZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpoZWFwRGVsZXRl
TWluKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6aGVhcEluc2VydCk6CisgICAgICAg
IChXZWJDb3JlOjpUaW1lckJhc2U6OmhlYXBQb3BNaW4pOgorICAgICAgICAoV2ViQ29yZTo6VGlt
ZXJCYXNlOjpzZXROZXh0RmlyZVRpbWUpOgorICAgICAgICBOb3cgaW5zdGVhZCBvZiBzdGF0aWMg
dGltZXIgaGVhcCB0aGVzZSB1c2UgYWNjZXNzb3IgZnVuY3Rpb25zIHRoYXQgcHVsbCB0aHJlYWQt
c3BlY2lmaWMgaGVhcCBpbnN0YW5jZS4KKworICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmg6CisK
IDIwMDktMDEtMjEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMDVkY2E3MC4uNTkzOTc1NiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC00MjIsNyArNDIyLDcgQEAg
dm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlSWZOZWVkZWQoUGFnZSogcGFnZSkKIAog
ICAgIHNldEphdmFTY3JpcHRQYXVzZWQocGFnZS0+Z3JvdXAoKSwgdHJ1ZSk7CiAKLSAgICBUaW1l
ckJhc2U6OmZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOworICAgIFRocmVhZFRpbWVyczo6
ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CiAKICAgICBFdmVudExvb3AgbG9vcDsKICAg
ICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggNDY5
OGFhNS4uZDA3ODU3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIENocm9tZTo6
cnVuTW9kYWwoKSBjb25zdAogICAgIC8vIGluIGEgd2F5IHRoYXQgY291bGQgaW50ZXJhY3Qgd2l0
aCB0aGlzIHZpZXcuCiAgICAgUGFnZUdyb3VwTG9hZERlZmVycmVyIGRlZmVycmVyKG1fcGFnZSwg
ZmFsc2UpOwogCi0gICAgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsK
KyAgICBUaHJlYWRUaW1lcnM6OmZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwogICAgIG1f
Y2xpZW50LT5ydW5Nb2RhbCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZFRpbWVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKaW5kZXggNGNjOTBh
Mi4uYzdkYzZmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaApAQCAtMjgsMTcgKzI4LDQ1IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIC8vIFNpbmdsZSB0aW1lciwgc2hhcmVkIHRvIGlt
cGxlbWVudCBhbGwgdGhlIHRpbWVycyBtYW5hZ2VkIGJ5IHRoZSBUaW1lciBjbGFzcy4KKyAgICAv
LyBFYWNoIHRocmVhZCBoYXMgaXRzIG93biBzaW5nbGUgaW5zdGFuY2Ugb2Ygc2hhcmVkIHRpbWVy
LCB3aGljaCBpbXBsZW1lbnRzIHRoaXMgaW50ZXJmYWNlLgorICAgIC8vIFRoaXMgaW5zdGFuY2Ug
aXMgc2hhcmVkIGJ5IGFsbCB0aW1lcnMgaW4gdGhlIHRocmVhZC4KICAgICAvLyBOb3QgaW50ZW5k
ZWQgdG8gYmUgdXNlZCBkaXJlY3RseTsgdXNlIHRoZSBUaW1lciBjbGFzcyBpbnN0ZWFkLgorICAg
IGNsYXNzIFNoYXJlZFRpbWVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflNoYXJl
ZFRpbWVyKCkge30KKyAgICAgICAgdmlydHVhbCB2b2lkIHNldEZpcmVkRnVuY3Rpb24odm9pZCAo
KikoKSkgPSAwOworICAgICAgICAvLyBUaGUgZmlyZSB0aW1lIGlzIHJlbGF0aXZlIHRvIHRoZSBj
bGFzc2ljIFBPU0lYIGVwb2NoIG9mIEphbnVhcnkgMSwgMTk3MCwKKyAgICAgICAgLy8gYXMgdGhl
IHJlc3VsdCBvZiBjdXJyZW50VGltZSgpIGlzLgorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0Rmly
ZVRpbWUoZG91YmxlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOworICAg
IH07CiAKLSAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqKSgpKTsK
LQotICAgIC8vIFRoZSBmaXJlIHRpbWUgaXMgcmVsYXRpdmUgdG8gdGhlIGNsYXNzaWMgUE9TSVgg
ZXBvY2ggb2YgSmFudWFyeSAxLCAxOTcwLAotICAgIC8vIGFzIHRoZSByZXN1bHQgb2YgY3VycmVu
dFRpbWUoKSBpcy4KIAotICAgIHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlVGltZShkb3VibGUgZmly
ZVRpbWUpOworICAgIC8vIEltcGxlbWVudGVkIGJ5IHBvcnQgKHNpbmNlIGl0IHByb3ZpZGVzIHRo
ZSBydW4gbG9vcCBmb3IgdGhlIG1haW4gdGhyZWFkKS4KKyAgICAvLyBGSVhNRTogbWFrZSBwb3J0
cyBpbXBsZW1lbnQgTWFpblRocmVhZFNoYXJlZFRpbWVyIGRpcmVjdGx5IGluc3RlYWQuCisgICAg
dm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKikoKSk7CisgICAgdm9pZCBz
ZXRTaGFyZWRUaW1lckZpcmVUaW1lKGRvdWJsZSk7CiAgICAgdm9pZCBzdG9wU2hhcmVkVGltZXIo
KTsKIAotfQorICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIFNoYXJlZFRpbWVyIGZvciB0aGUgbWFp
biB0aHJlYWQuCisgICAgY2xhc3MgTWFpblRocmVhZFNoYXJlZFRpbWVyIDogcHVibGljIFNoYXJl
ZFRpbWVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0
aW9uKHZvaWQgKCpmdW5jdGlvbikoKSkKKyAgICAgICAgeworICAgICAgICAgICAgc2V0U2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uKGZ1bmN0aW9uKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHNldEZpcmVUaW1lKGRvdWJsZSBmaXJlVGltZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlVGltZShmaXJlVGltZSk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RvcFNoYXJlZFRpbWVyKCk7CisgICAgICAgIH0KKyAgICB9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIFNoYXJlZFRpbWVyX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCmluZGV4IDliZjBiZjIuLmYzM2IxNzEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIlN0cmluZ0ltcGwuaCIKKyNpbmNsdWRlICJUaW1l
ci5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiAjaWYgVVNFKElDVV9VTklDT0RF
KQpAQCAtNzAsNiArNzEsNyBAQCBUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKCkK
ICAgICA6IG1fZW1wdHlTdHJpbmcobmV3IFN0cmluZ0ltcGwpCiAgICAgLCBtX2F0b21pY1N0cmlu
Z1RhYmxlKG5ldyBIYXNoU2V0PFN0cmluZ0ltcGwqPikKICAgICAsIG1fZXZlbnROYW1lcyhuZXcg
RXZlbnROYW1lcykKKyAgICAsIG1fdGhyZWFkVGltZXJzKG5ldyBUaHJlYWRUaW1lcnMpCiAjaWYg
VVNFKElDVV9VTklDT0RFKQogICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1UobmV3IElDVUNvbnZl
cnRlcldyYXBwZXIpCiAjZW5kaWYKQEAgLTkwLDYgKzkyLDcgQEAgVGhyZWFkR2xvYmFsRGF0YTo6
flRocmVhZEdsb2JhbERhdGEoKQogCiAgICAgZGVsZXRlIG1fZXZlbnROYW1lczsKICAgICBkZWxl
dGUgbV9hdG9taWNTdHJpbmdUYWJsZTsKKyAgICBkZWxldGUgbV90aHJlYWRUaW1lcnM7CiAKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgfHwgbV9lbXB0eVN0cmluZy0+aGFzT25lUmVmKCkpOyAv
LyBXZSBpbnRlbnRpb25hbGx5IGRvbid0IGNsZWFuIHVwIHN0YXRpYyBkYXRhIG9uIGFwcGxpY2F0
aW9uIHF1aXQsIHNvIHRoZXJlIHdpbGwgYmUgbWFueSBzdHJpbmdzIHJlbWFpbmluZyBvbiB0aGUg
bWFpbiB0aHJlYWQuCiAgICAgZGVsZXRlIG1fZW1wdHlTdHJpbmc7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5oCmluZGV4IDE3NjM3YWEuLjdmYWNhMzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBFdmVudE5hbWVzOwogICAgIHN0cnVjdCBJQ1VDb252ZXJ0ZXJXcmFwcGVyOwogICAgIHN0
cnVjdCBURUNDb252ZXJ0ZXJXcmFwcGVyOworICAgIGNsYXNzIFRocmVhZFRpbWVyczsKIAogICAg
IGNsYXNzIFRocmVhZEdsb2JhbERhdGEgOiBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgpAQCAt
NDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEV2ZW50TmFtZXMmIGV2
ZW50TmFtZXMoKSB7IHJldHVybiAqbV9ldmVudE5hbWVzOyB9CiAgICAgICAgIFN0cmluZ0ltcGwq
IGVtcHR5U3RyaW5nKCkgeyByZXR1cm4gbV9lbXB0eVN0cmluZzsgfQogICAgICAgICBIYXNoU2V0
PFN0cmluZ0ltcGwqPiYgYXRvbWljU3RyaW5nVGFibGUoKSB7IHJldHVybiAqbV9hdG9taWNTdHJp
bmdUYWJsZTsgfQorICAgICAgICBUaHJlYWRUaW1lcnMmIHRocmVhZFRpbWVycygpIHsgcmV0dXJu
ICptX3RocmVhZFRpbWVyczsgfQogCiAjaWYgVVNFKElDVV9VTklDT0RFKQogICAgICAgICBJQ1VD
b252ZXJ0ZXJXcmFwcGVyJiBjYWNoZWRDb252ZXJ0ZXJJQ1UoKSB7IHJldHVybiAqbV9jYWNoZWRD
b252ZXJ0ZXJJQ1U7IH0KQEAgLTU4LDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBTdHJpbmdJbXBsKiBtX2VtcHR5U3RyaW5nOwogICAgICAgICBIYXNoU2V0PFN0cmluZ0lt
cGwqPiogbV9hdG9taWNTdHJpbmdUYWJsZTsKICAgICAgICAgRXZlbnROYW1lcyogbV9ldmVudE5h
bWVzOworICAgICAgICBUaHJlYWRUaW1lcnMqIG1fdGhyZWFkVGltZXJzOwogCiAjaWYgVVNFKElD
VV9VTklDT0RFKQogICAgICAgICBJQ1VDb252ZXJ0ZXJXcmFwcGVyKiBtX2NhY2hlZENvbnZlcnRl
cklDVTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9UaW1lci5jcHAKaW5kZXggMDA3MjE3ZC4uYmNjOGM3ZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNywxMSArMjgsMTMgQEAKICNpbmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSAiU2hhcmVk
VGltZXIuaCIKKyNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSA8bGltaXRz
Lmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CkBAIC00MywyMCArNDYsMTU2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoZW4g
d2Ugc2V0IGEgc2luZ2xlIHNoYXJlZCBzeXN0ZW0gdGltZXIgdG8gZmlyZSBhdCB0aGF0IHRpbWUu
CiAvLwogLy8gV2hlbiBhIHRpbWVyJ3MgIm5leHQgZmlyZSB0aW1lIiBjaGFuZ2VzLCB3ZSBuZWVk
IHRvIG1vdmUgaXQgYXJvdW5kIGluIHRoZSBwcmlvcml0eSBxdWV1ZS4KKy8vIAorLy8gVGltZXJz
IGFyZSBjcmVhdGVkLCBzdGFydGVkIGFuZCBmaXJlZCBvbiB0aGUgc2FtZSB0aHJlYWQsIGFuZCBl
YWNoIHRocmVhZCBoYXMgaXRzIG93biBUaHJlYWRUaW1lcnMKKy8vIGNvcHkgdG8ga2VlcCB0aGUg
aGVhcCBhbmQgYSBzZXQgb2YgY3VycmVudGx5IGZpcmluZyB0aW1lcnMuCiAKLS8vIC0tLS0tLS0t
LS0tLS0tLS0KK3N0YXRpYyBNYWluVGhyZWFkU2hhcmVkVGltZXIqIG1haW5UaHJlYWRTaGFyZWRU
aW1lcigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWRTaGFyZWRUaW1lciogdGltZXIgPSAwOwor
ICAgIGlmICghdGltZXIpCisgICAgICAgIHRpbWVyID0gbmV3IE1haW5UaHJlYWRTaGFyZWRUaW1l
cigpOworICAgIHJldHVybiB0aW1lcjsKK30KIAotc3RhdGljIFZlY3RvcjxUaW1lckJhc2UqPiog
dGltZXJIZWFwOwotc3RhdGljIEhhc2hTZXQ8Y29uc3QgVGltZXJCYXNlKj4qIHRpbWVyc1JlYWR5
VG9GaXJlOworVGhyZWFkVGltZXJzOjpUaHJlYWRUaW1lcnMoKQorICAgIDogbV90aW1lckhlYXAo
MCkKKyAgICAsIG1fdGltZXJzUmVhZHlUb0ZpcmUoMCkKKyAgICAsIG1fc2hhcmVkVGltZXIoMCkK
K3sKKyAgICBpZihpc01haW5UaHJlYWQoKSkKKyAgICAgICAgc2V0U2hhcmVkVGltZXIobWFpblRo
cmVhZFNoYXJlZFRpbWVyKCkpOworfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tCit2b2lkIFRocmVh
ZFRpbWVyczo6c2V0U2hhcmVkVGltZXIoU2hhcmVkVGltZXIqIHNoYXJlZFRpbWVyKQoreworICAg
IEFTU0VSVChzaGFyZWRUaW1lcik7CisgICAgQVNTRVJUKCFtX3NoYXJlZFRpbWVyKTsKKyAgICAv
LyBTaGFyZWRUaW1lciBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIGZpcnN0IHRpbWVyIGlz
IGNyZWF0ZWQuCisgICAgQVNTRVJUKCFtX3RpbWVySGVhcCk7CisgICAgbV9zaGFyZWRUaW1lciA9
IHNoYXJlZFRpbWVyOworICAgIG1fc2hhcmVkVGltZXItPnNldEZpcmVkRnVuY3Rpb24oVGhyZWFk
VGltZXJzOjpzaGFyZWRUaW1lckZpcmVkKTsgICAgCit9CisKK1ZlY3RvcjxUaW1lckJhc2UqPiog
VGhyZWFkVGltZXJzOjp0aW1lckhlYXAoKQoreworICAgIGlmICghbV90aW1lckhlYXApCisgICAg
ICAgIG1fdGltZXJIZWFwID0gbmV3IFZlY3RvcjxUaW1lckJhc2UqPjsKKyAgICByZXR1cm4gbV90
aW1lckhlYXA7Cit9CisKK0hhc2hTZXQ8Y29uc3QgVGltZXJCYXNlKj4qIFRocmVhZFRpbWVyczo6
dGltZXJzUmVhZHlUb0ZpcmUoKQoreworICAgIHJldHVybiBtX3RpbWVyc1JlYWR5VG9GaXJlOwor
fQorCit2b2lkIFRocmVhZFRpbWVyczo6dXBkYXRlU2hhcmVkVGltZXIoKQoreworICAgIEFTU0VS
VChtX3NoYXJlZFRpbWVyKTsKKyAgICBpZiAobV90aW1lcnNSZWFkeVRvRmlyZSB8fCAhbV90aW1l
ckhlYXAgfHwgbV90aW1lckhlYXAtPmlzRW1wdHkoKSkKKyAgICAgICAgbV9zaGFyZWRUaW1lci0+
c3RvcCgpOworICAgIGVsc2UgeworICAgICAgICBtX3NoYXJlZFRpbWVyLT5zZXRGaXJlVGltZSht
X3RpbWVySGVhcC0+Zmlyc3QoKS0+bV9uZXh0RmlyZVRpbWUpOworICAgIH0KK30KKworCit2b2lk
IFRocmVhZFRpbWVyczo6Y29sbGVjdEZpcmluZ1RpbWVycyhkb3VibGUgZmlyZVRpbWUsIFZlY3Rv
cjxUaW1lckJhc2UqPiYgZmlyaW5nVGltZXJzKQoreworICAgIHdoaWxlICghbV90aW1lckhlYXAt
PmlzRW1wdHkoKSAmJiBtX3RpbWVySGVhcC0+Zmlyc3QoKS0+bV9uZXh0RmlyZVRpbWUgPD0gZmly
ZVRpbWUpIHsKKyAgICAgICAgVGltZXJCYXNlKiB0aW1lciA9IG1fdGltZXJIZWFwLT5maXJzdCgp
OworICAgICAgICBmaXJpbmdUaW1lcnMuYXBwZW5kKHRpbWVyKTsKKyAgICAgICAgbV90aW1lcnNS
ZWFkeVRvRmlyZS0+YWRkKHRpbWVyKTsKKyAgICAgICAgdGltZXItPm1fbmV4dEZpcmVUaW1lID0g
MDsKKyAgICAgICAgdGltZXItPmhlYXBEZWxldGVNaW4oKTsKKyAgICB9Cit9CisKK3ZvaWQgVGhy
ZWFkVGltZXJzOjpmaXJlVGltZXJzKGRvdWJsZSBmaXJlVGltZSwgY29uc3QgVmVjdG9yPFRpbWVy
QmFzZSo+JiBmaXJpbmdUaW1lcnMpCit7CisgICAgaW50IHNpemUgPSBmaXJpbmdUaW1lcnMuc2l6
ZSgpOworICAgIGZvciAoaW50IGkgPSAwOyBpICE9IHNpemU7ICsraSkgeworICAgICAgICBUaW1l
ckJhc2UqIHRpbWVyID0gZmlyaW5nVGltZXJzW2ldOworCisgICAgICAgIC8vIElmIG5vdCBpbiB0
aGUgc2V0LCB0aGlzIHRpbWVyIGhhcyBiZWVuIGRlbGV0ZWQgb3IgcmUtc2NoZWR1bGVkIGluIGFu
b3RoZXIgdGltZXIncyBmaXJlZCBmdW5jdGlvbi4KKyAgICAgICAgLy8gU28gZWl0aGVyIHdlIGRv
bid0IHdhbnQgdG8gZmlyZSBpdCBhdCBhbGwgb3Igd2Ugd2lsbCBmaXJlIGl0IG5leHQgdGltZSB0
aGUgc2hhcmVkIHRpbWVyIGdvZXMgb2ZmLgorICAgICAgICAvLyBJdCBtaWdodCBldmVuIGhhdmUg
YmVlbiBkZWxldGVkOyB0aGF0J3MgT0sgYmVjYXVzZSB3ZSB3b24ndCBkbyBhbnl0aGluZyBlbHNl
IHdpdGggdGhlIHBvaW50ZXIuCisgICAgICAgIGlmICghbV90aW1lcnNSZWFkeVRvRmlyZS0+Y29u
dGFpbnModGltZXIpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gU2V0dGlu
ZyB0aGUgbmV4dCBmaXJlIHRpbWUgaGFzIGEgc2lkZSBlZmZlY3Qgb2YgcmVtb3ZpbmcgdGhlIHRp
bWVyIGZyb20gdGhlIGZpcmluZyB0aW1lcnMgc2V0LgorICAgICAgICBkb3VibGUgaW50ZXJ2YWwg
PSB0aW1lci0+cmVwZWF0SW50ZXJ2YWwoKTsKKyAgICAgICAgdGltZXItPnNldE5leHRGaXJlVGlt
ZShpbnRlcnZhbCA/IGZpcmVUaW1lICsgaW50ZXJ2YWwgOiAwKTsKKworICAgICAgICAvLyBPbmNl
IHRoZSB0aW1lciBoYXMgYmVlbiBmaXJlZCwgaXQgbWF5IGJlIGRlbGV0ZWQsIHNvIGRvIG5vdGhp
bmcgZWxzZSB3aXRoIGl0IGFmdGVyIHRoaXMgcG9pbnQuCisgICAgICAgIHRpbWVyLT5maXJlZCgp
OworCisgICAgICAgIC8vIENhdGNoIHRoZSBjYXNlIHdoZXJlIHRoZSB0aW1lciBhc2tlZCB0aW1l
cnMgdG8gZmlyZSBpbiBhIG5lc3RlZCBldmVudCBsb29wLgorICAgICAgICBpZiAoIW1fdGltZXJz
UmVhZHlUb0ZpcmUpCisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgVGhyZWFk
VGltZXJzOjpzaGFyZWRUaW1lckZpcmVkKCkKK3sKKyAgICAvLyBSZWRpcmVjdCB0byBub24tc3Rh
dGljIG1ldGhvZC4KKyAgICB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuc2hhcmVk
VGltZXJGaXJlZEludGVybmFsKCk7Cit9CisKK3ZvaWQgVGhyZWFkVGltZXJzOjpzaGFyZWRUaW1l
ckZpcmVkSW50ZXJuYWwoKQoreworICAgIC8vIERvIGEgcmUtZW50cmFuY3kgY2hlY2suCisgICAg
aWYgKG1fdGltZXJzUmVhZHlUb0ZpcmUpCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBm
aXJlVGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgVmVjdG9yPFRpbWVyQmFzZSo+IGZpcmluZ1Rp
bWVyczsKKyAgICBIYXNoU2V0PGNvbnN0IFRpbWVyQmFzZSo+IGZpcmluZ1RpbWVyc1NldDsKKwor
ICAgIG1fdGltZXJzUmVhZHlUb0ZpcmUgPSAmZmlyaW5nVGltZXJzU2V0OworCisgICAgY29sbGVj
dEZpcmluZ1RpbWVycyhmaXJlVGltZSwgZmlyaW5nVGltZXJzKTsKKyAgICBmaXJlVGltZXJzKGZp
cmVUaW1lLCBmaXJpbmdUaW1lcnMpOworCisgICAgbV90aW1lcnNSZWFkeVRvRmlyZSA9IDA7CisK
KyAgICB1cGRhdGVTaGFyZWRUaW1lcigpOworfQorCit2b2lkIFRocmVhZFRpbWVyczo6ZmlyZVRp
bWVyc0luTmVzdGVkRXZlbnRMb29wKCkKK3sKKyAgICAvLyBSZWRpcmVjdCB0byBub24tc3RhdGlj
IG1ldGhvZC4KKyAgICB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuZmlyZVRpbWVy
c0luTmVzdGVkRXZlbnRMb29wSW50ZXJuYWwoKTsKK30KKwordm9pZCBUaHJlYWRUaW1lcnM6OmZp
cmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcEludGVybmFsKCkKK3sKKyAgICBtX3RpbWVyc1JlYWR5
VG9GaXJlID0gMDsKKyAgICB1cGRhdGVTaGFyZWRUaW1lcigpOworfQorCisvLyBTaW1wbGUgYWNj
ZXNzb3JzIHRvIHR0aHJlYWQtc3BlY2lmaWMgZGF0YS4KK3N0YXRpYyBWZWN0b3I8VGltZXJCYXNl
Kj4qIHRpbWVySGVhcCgpCit7CisgICAgcmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRU
aW1lcnMoKS50aW1lckhlYXAoKTsKK30KKworc3RhdGljIEhhc2hTZXQ8Y29uc3QgVGltZXJCYXNl
Kj4qIHRpbWVyc1JlYWR5VG9GaXJlKCkKK3sKKyAgICByZXR1cm4gIHRocmVhZEdsb2JhbERhdGEo
KS50aHJlYWRUaW1lcnMoKS50aW1lcnNSZWFkeVRvRmlyZSgpOworfQogCiAvLyBDbGFzcyB0byBy
ZXByZXNlbnQgZWxlbWVudHMgaW4gdGhlIGhlYXAgd2hlbiBjYWxsaW5nIHRoZSBzdGFuZGFyZCBs
aWJyYXJ5IGhlYXAgYWxnb3JpdGhtcy4KIC8vIE1haW50YWlucyB0aGUgbV9oZWFwSW5kZXggdmFs
dWUgaW4gdGhlIHRpbWVycyB0aGVtc2VsdmVzLCB3aGljaCBhbGxvd3MgdXMgdG8gZG8gZWZmaWNp
ZW50CiAvLyBtb2RpZmljYXRpb24gb2YgdGhlIGhlYXAuCiBjbGFzcyBUaW1lckhlYXBFbGVtZW50
IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUaW1lckhlYXBFbGVtZW50KGludCBpKSA6IG1faW5k
ZXgoaSksIG1fdGltZXIoKCp0aW1lckhlYXApW21faW5kZXhdKSB7IGNoZWNrQ29uc2lzdGVuY3ko
KTsgfQorICAgIGV4cGxpY2l0IFRpbWVySGVhcEVsZW1lbnQoaW50IGkpCisgICAgICAgIDogbV9p
bmRleChpKQorICAgICAgICAsIG1fdGltZXIoKCp0aW1lckhlYXAoKSlbbV9pbmRleF0pCisgICAg
eyAKKyAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOyAKKyAgICB9CiAKICAgICBUaW1lckhlYXBF
bGVtZW50KGNvbnN0IFRpbWVySGVhcEVsZW1lbnQmKTsKICAgICBUaW1lckhlYXBFbGVtZW50JiBv
cGVyYXRvcj0oY29uc3QgVGltZXJIZWFwRWxlbWVudCYpOwpAQCAtNjYsNyArMjA1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0CiAgICAgewogICAgICAgICBB
U1NFUlQobV9pbmRleCA+PSAwKTsKLSAgICAgICAgQVNTRVJUKG1faW5kZXggPCAodGltZXJIZWFw
ID8gc3RhdGljX2Nhc3Q8aW50Pih0aW1lckhlYXAtPnNpemUoKSkgOiAwKSk7CisgICAgICAgIEFT
U0VSVChtX2luZGV4IDwgKHRpbWVySGVhcCgpID8gc3RhdGljX2Nhc3Q8aW50Pih0aW1lckhlYXAo
KS0+c2l6ZSgpKSA6IDApKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04Nyw3ICsyMjYsNyBAQCBp
bmxpbmUgVGltZXJIZWFwRWxlbWVudCYgVGltZXJIZWFwRWxlbWVudDo6b3BlcmF0b3I9KGNvbnN0
IFRpbWVySGVhcEVsZW1lbnQmIG8pCiAgICAgbV90aW1lciA9IHQ7CiAgICAgaWYgKG1faW5kZXgg
IT0gLTEpIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgICAgICAoKnRpbWVySGVh
cClbbV9pbmRleF0gPSB0OworICAgICAgICAoKnRpbWVySGVhcCgpKVttX2luZGV4XSA9IHQ7CiAg
ICAgICAgIHQtPm1faGVhcEluZGV4ID0gbV9pbmRleDsKICAgICB9CiAgICAgcmV0dXJuICp0aGlz
OwpAQCAtMTM0LDcgKzI3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3ko
aW50IG9mZnNldCA9IDApIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG9mZnNl
dCwgbV9pbmRleCArIG9mZnNldCA+PSAwKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChvZmZzZXQs
IG1faW5kZXggKyBvZmZzZXQgPD0gKHRpbWVySGVhcCA/IHN0YXRpY19jYXN0PGludD4odGltZXJI
ZWFwLT5zaXplKCkpIDogMCkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKG9mZnNldCwgbV9pbmRl
eCArIG9mZnNldCA8PSAodGltZXJIZWFwKCkgPyBzdGF0aWNfY2FzdDxpbnQ+KHRpbWVySGVhcCgp
LT5zaXplKCkpIDogMCkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE1MywyNyArMjkyLDE2IEBA
IGlubGluZSBpbnQgb3BlcmF0b3ItKFRpbWVySGVhcEl0ZXJhdG9yIGEsIFRpbWVySGVhcEl0ZXJh
dG9yIGIpIHsgcmV0dXJuIGEuaW5kZXgoCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCB1
cGRhdGVTaGFyZWRUaW1lcigpCi17Ci0gICAgaWYgKHRpbWVyc1JlYWR5VG9GaXJlIHx8ICF0aW1l
ckhlYXAgfHwgdGltZXJIZWFwLT5pc0VtcHR5KCkpCi0gICAgICAgIHN0b3BTaGFyZWRUaW1lcigp
OwotICAgIGVsc2UKLSAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlVGltZSh0aW1lckhlYXAtPmZp
cnN0KCktPm1fbmV4dEZpcmVUaW1lKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLQotCiBUaW1l
ckJhc2U6OlRpbWVyQmFzZSgpCi0gICAgOiBtX25leHRGaXJlVGltZSgwKSwgbV9yZXBlYXRJbnRl
cnZhbCgwKSwgbV9oZWFwSW5kZXgoLTEpCisgICAgOiBtX25leHRGaXJlVGltZSgwKQorICAgICwg
bV9yZXBlYXRJbnRlcnZhbCgwKQorICAgICwgbV9oZWFwSW5kZXgoLTEpCiB7Ci0gICAgLy8gV2Ug
b25seSBuZWVkIHRvIGRvIHRoaXMgb25jZSwgYnV0IHByb2JhYmx5IG5vdCB3b3J0aCB0cnlpbmcg
dG8gb3B0aW1pemUgaXQuCi0gICAgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHNoYXJlZFRp
bWVyRmlyZWQpOwogfQogCiBUaW1lckJhc2U6On5UaW1lckJhc2UoKQogewogICAgIHN0b3AoKTsK
LQogICAgIEFTU0VSVCghaW5IZWFwKCkpOwogfQogCkBAIC0xOTUsNyArMzIzLDcgQEAgdm9pZCBU
aW1lckJhc2U6OnN0b3AoKQogCiBib29sIFRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAogewot
ICAgIHJldHVybiBtX25leHRGaXJlVGltZSB8fCAodGltZXJzUmVhZHlUb0ZpcmUgJiYgdGltZXJz
UmVhZHlUb0ZpcmUtPmNvbnRhaW5zKHRoaXMpKTsKKyAgICByZXR1cm4gbV9uZXh0RmlyZVRpbWUg
fHwgKHRpbWVyc1JlYWR5VG9GaXJlKCkgJiYgdGltZXJzUmVhZHlUb0ZpcmUoKS0+Y29udGFpbnMo
dGhpcykpOwogfQogCiBkb3VibGUgVGltZXJCYXNlOjpuZXh0RmlyZUludGVydmFsKCkgY29uc3QK
QEAgLTIwOSwxMSArMzM3LDEwIEBAIGRvdWJsZSBUaW1lckJhc2U6Om5leHRGaXJlSW50ZXJ2YWwo
KSBjb25zdAogCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmNoZWNrSGVhcEluZGV4KCkgY29uc3QK
IHsKLSAgICBBU1NFUlQodGltZXJIZWFwKTsKLSAgICBBU1NFUlQoIXRpbWVySGVhcC0+aXNFbXB0
eSgpKTsKKyAgICBBU1NFUlQoIXRpbWVySGVhcCgpLT5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCht
X2hlYXBJbmRleCA+PSAwKTsKLSAgICBBU1NFUlQobV9oZWFwSW5kZXggPCBzdGF0aWNfY2FzdDxp
bnQ+KHRpbWVySGVhcC0+c2l6ZSgpKSk7Ci0gICAgQVNTRVJUKCgqdGltZXJIZWFwKVttX2hlYXBJ
bmRleF0gPT0gdGhpcyk7CisgICAgQVNTRVJUKG1faGVhcEluZGV4IDwgc3RhdGljX2Nhc3Q8aW50
Pih0aW1lckhlYXAoKS0+c2l6ZSgpKSk7CisgICAgQVNTRVJUKCgqdGltZXJIZWFwKCkpW21faGVh
cEluZGV4XSA9PSB0aGlzKTsKIH0KIAogaW5saW5lIHZvaWQgVGltZXJCYXNlOjpjaGVja0NvbnNp
c3RlbmN5KCkgY29uc3QKQEAgLTIzNiw3ICszNjMsNyBAQCBpbmxpbmUgdm9pZCBUaW1lckJhc2U6
OmhlYXBEZWxldGUoKQogewogICAgIEFTU0VSVChtX25leHRGaXJlVGltZSA9PSAwKTsKICAgICBo
ZWFwUG9wKCk7Ci0gICAgdGltZXJIZWFwLT5yZW1vdmVMYXN0KCk7CisgICAgdGltZXJIZWFwKCkt
PnJlbW92ZUxhc3QoKTsKICAgICBtX2hlYXBJbmRleCA9IC0xOwogfQogCkBAIC0yNDQsNyArMzcx
LDcgQEAgaW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFwRGVsZXRlTWluKCkKIHsKICAgICBBU1NF
UlQobV9uZXh0RmlyZVRpbWUgPT0gMCk7CiAgICAgaGVhcFBvcE1pbigpOwotICAgIHRpbWVySGVh
cC0+cmVtb3ZlTGFzdCgpOworICAgIHRpbWVySGVhcCgpLT5yZW1vdmVMYXN0KCk7CiAgICAgbV9o
ZWFwSW5kZXggPSAtMTsKIH0KIApAQCAtMjU4LDEwICszODUsOCBAQCBpbmxpbmUgdm9pZCBUaW1l
ckJhc2U6OmhlYXBJbmNyZWFzZUtleSgpCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmhlYXBJbnNl
cnQoKQogewogICAgIEFTU0VSVCghaW5IZWFwKCkpOwotICAgIGlmICghdGltZXJIZWFwKQotICAg
ICAgICB0aW1lckhlYXAgPSBuZXcgVmVjdG9yPFRpbWVyQmFzZSo+OwotICAgIHRpbWVySGVhcC0+
YXBwZW5kKHRoaXMpOwotICAgIG1faGVhcEluZGV4ID0gdGltZXJIZWFwLT5zaXplKCkgLSAxOwor
ICAgIHRpbWVySGVhcCgpLT5hcHBlbmQodGhpcyk7CisgICAgbV9oZWFwSW5kZXggPSB0aW1lckhl
YXAoKS0+c2l6ZSgpIC0gMTsKICAgICBoZWFwRGVjcmVhc2VLZXkoKTsKIH0KIApAQCAtMjc3LDE5
ICs0MDIsMTkgQEAgaW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFwUG9wKCkKIAogdm9pZCBUaW1l
ckJhc2U6OmhlYXBQb3BNaW4oKQogewotICAgIEFTU0VSVCh0aGlzID09IHRpbWVySGVhcC0+Zmly
c3QoKSk7CisgICAgQVNTRVJUKHRoaXMgPT0gdGltZXJIZWFwKCktPmZpcnN0KCkpOwogICAgIGNo
ZWNrSGVhcEluZGV4KCk7Ci0gICAgcG9wX2hlYXAoVGltZXJIZWFwSXRlcmF0b3IoMCksIFRpbWVy
SGVhcEl0ZXJhdG9yKHRpbWVySGVhcC0+c2l6ZSgpKSk7CisgICAgcG9wX2hlYXAoVGltZXJIZWFw
SXRlcmF0b3IoMCksIFRpbWVySGVhcEl0ZXJhdG9yKHRpbWVySGVhcCgpLT5zaXplKCkpKTsKICAg
ICBjaGVja0hlYXBJbmRleCgpOwotICAgIEFTU0VSVCh0aGlzID09IHRpbWVySGVhcC0+bGFzdCgp
KTsKKyAgICBBU1NFUlQodGhpcyA9PSB0aW1lckhlYXAoKS0+bGFzdCgpKTsKIH0KIAogdm9pZCBU
aW1lckJhc2U6OnNldE5leHRGaXJlVGltZShkb3VibGUgbmV3VGltZSkKIHsKICAgICAvLyBLZWVw
IGhlYXAgdmFsaWQgd2hpbGUgY2hhbmdpbmcgdGhlIG5leHQtZmlyZSB0aW1lLgogCi0gICAgaWYg
KHRpbWVyc1JlYWR5VG9GaXJlKQotICAgICAgICB0aW1lcnNSZWFkeVRvRmlyZS0+cmVtb3ZlKHRo
aXMpOworICAgIGlmICh0aW1lcnNSZWFkeVRvRmlyZSgpKQorICAgICAgICB0aW1lcnNSZWFkeVRv
RmlyZSgpLT5yZW1vdmUodGhpcyk7CiAKICAgICBkb3VibGUgb2xkVGltZSA9IG1fbmV4dEZpcmVU
aW1lOwogICAgIGlmIChvbGRUaW1lICE9IG5ld1RpbWUpIHsKQEAgLTMxMSw3MiArNDM2LDEwIEBA
IHZvaWQgVGltZXJCYXNlOjpzZXROZXh0RmlyZVRpbWUoZG91YmxlIG5ld1RpbWUpCiAgICAgICAg
IGJvb2wgaXNGaXJzdFRpbWVySW5IZWFwID0gbV9oZWFwSW5kZXggPT0gMDsKIAogICAgICAgICBp
ZiAod2FzRmlyc3RUaW1lckluSGVhcCB8fCBpc0ZpcnN0VGltZXJJbkhlYXApCi0gICAgICAgICAg
ICB1cGRhdGVTaGFyZWRUaW1lcigpOworICAgICAgICAgICAgIHRocmVhZEdsb2JhbERhdGEoKS50
aHJlYWRUaW1lcnMoKS51cGRhdGVTaGFyZWRUaW1lcigpOwogICAgIH0KIAogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIH0KIAotdm9pZCBUaW1lckJhc2U6OmNvbGxlY3RGaXJpbmdUaW1lcnMoZG91
YmxlIGZpcmVUaW1lLCBWZWN0b3I8VGltZXJCYXNlKj4mIGZpcmluZ1RpbWVycykKLXsKLSAgICB3
aGlsZSAoIXRpbWVySGVhcC0+aXNFbXB0eSgpICYmIHRpbWVySGVhcC0+Zmlyc3QoKS0+bV9uZXh0
RmlyZVRpbWUgPD0gZmlyZVRpbWUpIHsKLSAgICAgICAgVGltZXJCYXNlKiB0aW1lciA9IHRpbWVy
SGVhcC0+Zmlyc3QoKTsKLSAgICAgICAgZmlyaW5nVGltZXJzLmFwcGVuZCh0aW1lcik7Ci0gICAg
ICAgIHRpbWVyc1JlYWR5VG9GaXJlLT5hZGQodGltZXIpOwotICAgICAgICB0aW1lci0+bV9uZXh0
RmlyZVRpbWUgPSAwOwotICAgICAgICB0aW1lci0+aGVhcERlbGV0ZU1pbigpOwotICAgIH0KLX0K
LQotdm9pZCBUaW1lckJhc2U6OmZpcmVUaW1lcnMoZG91YmxlIGZpcmVUaW1lLCBjb25zdCBWZWN0
b3I8VGltZXJCYXNlKj4mIGZpcmluZ1RpbWVycykKLXsKLSAgICBpbnQgc2l6ZSA9IGZpcmluZ1Rp
bWVycy5zaXplKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gc2l6ZTsgKytpKSB7Ci0gICAg
ICAgIFRpbWVyQmFzZSogdGltZXIgPSBmaXJpbmdUaW1lcnNbaV07Ci0KLSAgICAgICAgLy8gSWYg
bm90IGluIHRoZSBzZXQsIHRoaXMgdGltZXIgaGFzIGJlZW4gZGVsZXRlZCBvciByZS1zY2hlZHVs
ZWQgaW4gYW5vdGhlciB0aW1lcidzIGZpcmVkIGZ1bmN0aW9uLgotICAgICAgICAvLyBTbyBlaXRo
ZXIgd2UgZG9uJ3Qgd2FudCB0byBmaXJlIGl0IGF0IGFsbCBvciB3ZSB3aWxsIGZpcmUgaXQgbmV4
dCB0aW1lIHRoZSBzaGFyZWQgdGltZXIgZ29lcyBvZmYuCi0gICAgICAgIC8vIEl0IG1pZ2h0IGV2
ZW4gaGF2ZSBiZWVuIGRlbGV0ZWQ7IHRoYXQncyBPSyBiZWNhdXNlIHdlIHdvbid0IGRvIGFueXRo
aW5nIGVsc2Ugd2l0aCB0aGUgcG9pbnRlci4KLSAgICAgICAgaWYgKCF0aW1lcnNSZWFkeVRvRmly
ZS0+Y29udGFpbnModGltZXIpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8g
U2V0dGluZyB0aGUgbmV4dCBmaXJlIHRpbWUgaGFzIGEgc2lkZSBlZmZlY3Qgb2YgcmVtb3Zpbmcg
dGhlIHRpbWVyIGZyb20gdGhlIGZpcmluZyB0aW1lcnMgc2V0LgotICAgICAgICBkb3VibGUgaW50
ZXJ2YWwgPSB0aW1lci0+cmVwZWF0SW50ZXJ2YWwoKTsKLSAgICAgICAgdGltZXItPnNldE5leHRG
aXJlVGltZShpbnRlcnZhbCA/IGZpcmVUaW1lICsgaW50ZXJ2YWwgOiAwKTsKLQotICAgICAgICAv
LyBPbmNlIHRoZSB0aW1lciBoYXMgYmVlbiBmaXJlZCwgaXQgbWF5IGJlIGRlbGV0ZWQsIHNvIGRv
IG5vdGhpbmcgZWxzZSB3aXRoIGl0IGFmdGVyIHRoaXMgcG9pbnQuCi0gICAgICAgIHRpbWVyLT5m
aXJlZCgpOwotCi0gICAgICAgIC8vIENhdGNoIHRoZSBjYXNlIHdoZXJlIHRoZSB0aW1lciBhc2tl
ZCB0aW1lcnMgdG8gZmlyZSBpbiBhIG5lc3RlZCBldmVudCBsb29wLgotICAgICAgICBpZiAoIXRp
bWVyc1JlYWR5VG9GaXJlKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFRp
bWVyQmFzZTo6c2hhcmVkVGltZXJGaXJlZCgpCi17Ci0gICAgLy8gRG8gYSByZS1lbnRyYW5jeSBj
aGVjay4KLSAgICBpZiAodGltZXJzUmVhZHlUb0ZpcmUpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGRvdWJsZSBmaXJlVGltZSA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgVmVjdG9yPFRpbWVyQmFzZSo+
IGZpcmluZ1RpbWVyczsKLSAgICBIYXNoU2V0PGNvbnN0IFRpbWVyQmFzZSo+IGZpcmluZ1RpbWVy
c1NldDsKLQotICAgIHRpbWVyc1JlYWR5VG9GaXJlID0gJmZpcmluZ1RpbWVyc1NldDsKLQotICAg
IGNvbGxlY3RGaXJpbmdUaW1lcnMoZmlyZVRpbWUsIGZpcmluZ1RpbWVycyk7Ci0gICAgZmlyZVRp
bWVycyhmaXJlVGltZSwgZmlyaW5nVGltZXJzKTsKLQotICAgIHRpbWVyc1JlYWR5VG9GaXJlID0g
MDsKLQotICAgIHVwZGF0ZVNoYXJlZFRpbWVyKCk7Ci19Ci0KLXZvaWQgVGltZXJCYXNlOjpmaXJl
VGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKQotewotICAgIHRpbWVyc1JlYWR5VG9GaXJlID0gMDsK
LSAgICB1cGRhdGVTaGFyZWRUaW1lcigpOwotfQotCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL1RpbWVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKaW5kZXggMGVlODZiMS4u
ZTFlMWI2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vVGltZXIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI4LDcgQEAKICNkZWZpbmUgVGltZXJf
aAogCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUz
LDggKzU1LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBhdWdtZW50UmVwZWF0SW50ZXJ2YWwoZG91
YmxlIGRlbHRhKSB7IHNldE5leHRGaXJlVGltZShtX25leHRGaXJlVGltZSArIGRlbHRhKTsgbV9y
ZXBlYXRJbnRlcnZhbCArPSBkZWx0YTsgfQogCi0gICAgc3RhdGljIHZvaWQgZmlyZVRpbWVyc0lu
TmVzdGVkRXZlbnRMb29wKCk7Ci0KIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZpcmVkKCkg
PSAwOwogCkBAIC03MywxNyArNzMsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhlYXBQb3AoKTsK
ICAgICB2b2lkIGhlYXBQb3BNaW4oKTsKIAotICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RGaXJpbmdU
aW1lcnMoZG91YmxlIGZpcmVUaW1lLCBWZWN0b3I8VGltZXJCYXNlKj4mKTsKLSAgICBzdGF0aWMg
dm9pZCBmaXJlVGltZXJzKGRvdWJsZSBmaXJlVGltZSwgY29uc3QgVmVjdG9yPFRpbWVyQmFzZSo+
Jik7Ci0gICAgc3RhdGljIHZvaWQgc2hhcmVkVGltZXJGaXJlZCgpOwotCiAgICAgZG91YmxlIG1f
bmV4dEZpcmVUaW1lOyAvLyAwIGlmIGluYWN0aXZlCiAgICAgZG91YmxlIG1fcmVwZWF0SW50ZXJ2
YWw7IC8vIDAgaWYgbm90IHJlcGVhdGluZwogICAgIGludCBtX2hlYXBJbmRleDsgLy8gLTEgaWYg
bm90IGluIGhlYXAKICAgICB1bnNpZ25lZCBtX2hlYXBJbnNlcnRpb25PcmRlcjsgLy8gVXNlZCB0
byBrZWVwIG9yZGVyIGFtb25nIGVxdWFsLWZpcmUtdGltZSB0aW1lcnMKIAotICAgIGZyaWVuZCB2
b2lkIHVwZGF0ZVNoYXJlZFRpbWVyKCk7CiAgICAgZnJpZW5kIGNsYXNzIFRpbWVySGVhcEVsZW1l
bnQ7CisgICAgZnJpZW5kIGNsYXNzIFRocmVhZFRpbWVyczsKICAgICBmcmllbmQgYm9vbCBvcGVy
YXRvcjwoY29uc3QgVGltZXJIZWFwRWxlbWVudCYsIGNvbnN0IFRpbWVySGVhcEVsZW1lbnQmKTsK
IH07CiAKQEAgLTEwMSw2ICs5NywzNSBAQCBwcml2YXRlOgogICAgIFRpbWVyRmlyZWRGdW5jdGlv
biBtX2Z1bmN0aW9uOwogfTsKIAorY2xhc3MgU2hhcmVkVGltZXI7CisKKy8vIEEgY29sbGVjdGlv
biBvZiB0aW1lcnMgcGVyIHRocmVhZC4gS2VwdCBpbiBUaHJlYWRHbG9iYWxEYXRhLgorY2xhc3Mg
VGhyZWFkVGltZXJzIDogTm9uY29weWFibGUgeworcHVibGljOgorICAgIFRocmVhZFRpbWVycygp
OworCisgICAgLy8gT24gYSB0aHJlYWQgZGlmZmVyZW50IHRoZW4gbWFpbiwgd2Ugc2hvdWxkIHNl
dCB0aGUgdGhyZWFkJ3MgaW5zdGFuY2Ugb2YgdGhlIFNoYXJlZFRpbWVyLgorICAgIHZvaWQgc2V0
U2hhcmVkVGltZXIoU2hhcmVkVGltZXIqKTsKKworICAgIFZlY3RvcjxUaW1lckJhc2UqPiogdGlt
ZXJIZWFwKCk7CisgICAgSGFzaFNldDxjb25zdCBUaW1lckJhc2UqPiogdGltZXJzUmVhZHlUb0Zp
cmUoKTsKKworICAgIHZvaWQgdXBkYXRlU2hhcmVkVGltZXIoKTsKKyAgICBzdGF0aWMgdm9pZCBm
aXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9p
ZCBzaGFyZWRUaW1lckZpcmVkKCk7CisKKyAgICB2b2lkIGZpcmVUaW1lcnMoZG91YmxlIGZpcmVU
aW1lLCBjb25zdCBWZWN0b3I8VGltZXJCYXNlKj4mKTsKKyAgICB2b2lkIGNvbGxlY3RGaXJpbmdU
aW1lcnMoZG91YmxlIGZpcmVUaW1lLCBWZWN0b3I8VGltZXJCYXNlKj4mKTsKKyAgICB2b2lkIHNo
YXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpOworICAgIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZl
bnRMb29wSW50ZXJuYWwoKTsKKworICAgIFZlY3RvcjxUaW1lckJhc2UqPiogbV90aW1lckhlYXA7
CisgICAgSGFzaFNldDxjb25zdCBUaW1lckJhc2UqPiogbV90aW1lcnNSZWFkeVRvRmlyZTsKKyAg
ICBTaGFyZWRUaW1lciogbV9zaGFyZWRUaW1lcjsKK307CisKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGFj
YTU5ZDMuLjcwNTE0NjggMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDEtMjIgIERtaXRyeSBU
aXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDg4CisKKyAgICAgICAgTWFrZSBUaW1lckJhc2UgdGhyZWFkLWF3YXJlIChmb3IgV29y
a2VycykuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KTogVXNlcyBUaHJl
YWRUaW1lcnMgaW5zdGVhZCBvZiBUaW1lckJhc2Ugc2luY2UgbWV0aG9kIG1vdmVkLgorCiAyMDA5
LTAxLTE5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUnViYmVyLXN0
YW1wZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggOWFlYzI0Yi4uNjhhODcxYiAxMDA2NDQKLS0tIGEv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMzYwLDcgKzM2MCw3
IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lKiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTCiAgICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPnVp
RGVsZWdhdGUoJnVpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFRpbWVyQmFzZTo6
ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CisgICAgVGhyZWFkVGltZXJzOjpmaXJlVGlt
ZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKIAogICAgIEJTVFIgcmVzdWx0QlNUUiA9IDA7CiAgICAg
aWYgKEZBSUxFRCh1aS0+cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdChtX3dl
YlZpZXcsIEJTdHJpbmcobWVzc2FnZSksIEJTdHJpbmcoZGVmYXVsdFZhbHVlKSwgJnJlc3VsdEJT
VFIpKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26964</attachid>
            <date>2009-01-23 01:55:54 -0800</date>
            <delta_ts>2009-01-23 14:48:52 -0800</delta_ts>
            <desc>Proposed patch, v2</desc>
            <filename>timers_v2.txt</filename>
            <type>text/plain</type>
            <size>24761</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGNiODRmOS4uYWUxMmI4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAwOS0wMS0yMiAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0ODgKKworICAgICAgICBNYWtlIFRpbWVyQmFzZSB0aHJlYWQtYXdhcmUgKGZvciBXb3JrZXJz
KS4KKyAgICAgICAgQWRkZWQgbmV3IGNsYXNzIFRocmVhZFRpbWVycyAtIGl0IGtlZXBzIGEgaGVh
cCBvZiBhbGwgdGltZXJzIGZvciBhIHRocmVhZCAocHJldmlvdXNseSBrZXB0IGluIGEgc3RhdGlj
IGdsb2JhbCkuCisgICAgICAgIFBvaW50ZXIgdG8gaW5zdGFuY2Ugb2YgVGhyZWFkVGltZXJzIGlz
IHN0b3JlZCBpbiBHbG9iYWxUaHJlYWREYXRhLgorICAgICAgICBBbGwgc3RhdGljIG1ldGhvZHMg
b2YgVGltZXJCYXNlIHdlbnQgdG8gVGhyZWFkVGltZXJzLgorCisgICAgICAgIFRoZSBUaW1lckJh
c2UgZnVuY3Rpb25hbGl0eSBkaWQgbm90IGNoYW5nZSAoaXQgbWFpbnRhaW5zIHRoZSB0aW1lciBo
ZWFwIHdoaWNoIGNvbXB1dGVzIHRoZSBuZWFyZXN0IGZpcmluZykuCisKKyAgICAgICAgQWRkZWQg
bmV3IGFic3RyYWN0IGNsYXNzIFNoYXJlZFRpbWVyLCBzbyB3b3JrZXIgdGhyZWFkcyBjYW4gcHJv
dmlkZSB0aGVpciBvd24gaW1wbGVtZW50YXRpb24gKHdpbGwgYmUgaW1wbGVtZW50ZWQgb24gV29y
a2VyUnVuTG9vcCkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VJZk5l
ZWRlZCk6IE5hbWUgY2hhbmdlIFRpbWVyQmFzZS0+VGhyZWFkVGltZXJzCisgICAgICAgICogcGFn
ZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpydW5Nb2RhbCk6IERpdHRv
LgorCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkVGltZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZFRpbWVyOjp+U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZVRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRo
cmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgQWRkZWQgYWJzdHJhY3QgU2hhcmVkVGlt
ZXIgYW5kIE1haW5UaHJlYWRTaGFyZWRUaW1lciB3aGljaCByZWRpcmVjdHMgdG8gdGhlIGV4aXN0
aW5nIHBvcnQtc3VwcGxpZWQgZnVuY3Rpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpUaHJl
YWRHbG9iYWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6On5UaHJl
YWRHbG9iYWxEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjp0aHJlYWRUaW1lcnMpOgorICAgICAg
ICBBZGRlZCBUaHJlYWRUaW1lcnMgdG8gVGhyZWFkR2xvYmFsRGF0YS4KKworICAgICAgICAqIHBs
YXRmb3JtL1RpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1haW5UaHJlYWRTaGFyZWRUaW1l
cik6CisgICAgICAgIFN0YXRpYyBnZXR0ZXIgZm9yIGEgTWFpblRocmVhZFNoYXJlZFRpbWVyIHNp
bmdsZXRvbi4KKworICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpUaHJlYWRUaW1lcnMp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzZXRTaGFyZWRUaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6OnRpbWVySGVhcCk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRUaW1lcnM6OnRpbWVyc1JlYWR5VG9GaXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZFRpbWVyczo6dXBkYXRlU2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
VGltZXJzOjpjb2xsZWN0RmlyaW5nVGltZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRp
bWVyczo6ZmlyZVRpbWVycyk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6OnNoYXJl
ZFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzaGFyZWRUaW1l
ckZpcmVkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpmaXJlVGlt
ZXJzSW5OZXN0ZWRFdmVudExvb3ApOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpm
aXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3BJbnRlcm5hbCk6CisgICAgICAgIFRocmVhZFRpbWVy
cyBpbXBsZW1lbnRhdGlvbi4gTW9zdCBvZiB0aGUgY29kZSBpcyBtb3ZlZCBmcm9tIHByZXZpb3Vz
IHN0YXRpYyBmdW5jdGlvbnMgb24gVGltZXJCYXNlLgorICAgICAgICBJbiBjYXNlIG9mIGEgc2lu
Z2xlIHRocmVhZCB0aGV5IHdlcmUgc3RhdGljLCBub3cgdGhleSBhcmUgcGVyLXRocmVhZCwgdG9n
ZXRoZXIgd2l0aCBUaHJlYWRUaW1lcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVySGVhcCk6
CisgICAgICAgIChXZWJDb3JlOjp0aW1lcnNSZWFkeVRvRmlyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaW1lckhlYXBFbGVtZW50OjpUaW1lckhlYXBFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbWVySGVhcEVsZW1lbnQ6OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAoV2ViQ29yZTo6
VGltZXJIZWFwRWxlbWVudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVh
cEl0ZXJhdG9yOjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFz
ZTo6VGltZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbWVyQmFzZTo6Y2hlY2tIZWFwSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJC
YXNlOjpoZWFwRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6aGVhcERlbGV0
ZU1pbik6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmhlYXBJbnNlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGltZXJCYXNlOjpoZWFwUG9wTWluKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bWVyQmFzZTo6c2V0TmV4dEZpcmVUaW1lKToKKyAgICAgICAgTm93IGluc3RlYWQgb2Ygc3RhdGlj
IHRpbWVyIGhlYXAgdGhlc2UgdXNlIGFjY2Vzc29yIGZ1bmN0aW9ucyB0aGF0IHB1bGwgdGhyZWFk
LXNwZWNpZmljIGhlYXAgaW5zdGFuY2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaW1lci5oOgor
CiAyMDA5LTAxLTIxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9KYXZh
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDA1ZGNhNzAuLjU5Mzk3NTYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNDIyLDcgKzQyMiw3IEBA
IHZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKFBhZ2UqIHBhZ2UpCiAK
ICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKHBhZ2UtPmdyb3VwKCksIHRydWUpOwogCi0gICAgVGlt
ZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKKyAgICBUaHJlYWRUaW1lcnM6
OmZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwogCiAgICAgRXZlbnRMb29wIGxvb3A7CiAg
ICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gZmFsc2U7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDQ2
OThhYTUuLmQwNzg1N2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBDaHJvbWU6
OnJ1bk1vZGFsKCkgY29uc3QKICAgICAvLyBpbiBhIHdheSB0aGF0IGNvdWxkIGludGVyYWN0IHdp
dGggdGhpcyB2aWV3LgogICAgIFBhZ2VHcm91cExvYWREZWZlcnJlciBkZWZlcnJlcihtX3BhZ2Us
IGZhbHNlKTsKIAotICAgIFRpbWVyQmFzZTo6ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7
CisgICAgVGhyZWFkVGltZXJzOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKICAgICBt
X2NsaWVudC0+cnVuTW9kYWwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRUaW1lci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCmluZGV4IDRjYzkw
YTIuLmM3ZGM2ZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKQEAgLTI4LDE3ICsyOCw0NSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICAvLyBTaW5nbGUgdGltZXIsIHNoYXJlZCB0byBp
bXBsZW1lbnQgYWxsIHRoZSB0aW1lcnMgbWFuYWdlZCBieSB0aGUgVGltZXIgY2xhc3MuCisgICAg
Ly8gRWFjaCB0aHJlYWQgaGFzIGl0cyBvd24gc2luZ2xlIGluc3RhbmNlIG9mIHNoYXJlZCB0aW1l
ciwgd2hpY2ggaW1wbGVtZW50cyB0aGlzIGludGVyZmFjZS4KKyAgICAvLyBUaGlzIGluc3RhbmNl
IGlzIHNoYXJlZCBieSBhbGwgdGltZXJzIGluIHRoZSB0aHJlYWQuCiAgICAgLy8gTm90IGludGVu
ZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHk7IHVzZSB0aGUgVGltZXIgY2xhc3MgaW5zdGVhZC4KKyAg
ICBjbGFzcyBTaGFyZWRUaW1lciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5TaGFy
ZWRUaW1lcigpIHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHZvaWQg
KCopKCkpID0gMDsKKyAgICAgICAgLy8gVGhlIGZpcmUgdGltZSBpcyByZWxhdGl2ZSB0byB0aGUg
Y2xhc3NpYyBQT1NJWCBlcG9jaCBvZiBKYW51YXJ5IDEsIDE5NzAsCisgICAgICAgIC8vIGFzIHRo
ZSByZXN1bHQgb2YgY3VycmVudFRpbWUoKSBpcy4KKyAgICAgICAgdmlydHVhbCB2b2lkIHNldEZp
cmVUaW1lKGRvdWJsZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKKyAg
ICB9OwogCi0gICAgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKikoKSk7
Ci0KLSAgICAvLyBUaGUgZmlyZSB0aW1lIGlzIHJlbGF0aXZlIHRvIHRoZSBjbGFzc2ljIFBPU0lY
IGVwb2NoIG9mIEphbnVhcnkgMSwgMTk3MCwKLSAgICAvLyBhcyB0aGUgcmVzdWx0IG9mIGN1cnJl
bnRUaW1lKCkgaXMuCiAKLSAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZVRpbWUoZG91YmxlIGZp
cmVUaW1lKTsKKyAgICAvLyBJbXBsZW1lbnRlZCBieSBwb3J0IChzaW5jZSBpdCBwcm92aWRlcyB0
aGUgcnVuIGxvb3AgZm9yIHRoZSBtYWluIHRocmVhZCkuCisgICAgLy8gRklYTUU6IG1ha2UgcG9y
dHMgaW1wbGVtZW50IE1haW5UaHJlYWRTaGFyZWRUaW1lciBkaXJlY3RseSBpbnN0ZWFkLgorICAg
IHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCopKCkpOworICAgIHZvaWQg
c2V0U2hhcmVkVGltZXJGaXJlVGltZShkb3VibGUpOwogICAgIHZvaWQgc3RvcFNoYXJlZFRpbWVy
KCk7CiAKLX0KKyAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBTaGFyZWRUaW1lciBmb3IgdGhlIG1h
aW4gdGhyZWFkLgorICAgIGNsYXNzIE1haW5UaHJlYWRTaGFyZWRUaW1lciA6IHB1YmxpYyBTaGFy
ZWRUaW1lciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZWRGdW5j
dGlvbih2b2lkICgqZnVuY3Rpb24pKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldFNoYXJl
ZFRpbWVyRmlyZWRGdW5jdGlvbihmdW5jdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlVGltZShkb3VibGUgZmlyZVRpbWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNldFNoYXJlZFRpbWVyRmlyZVRpbWUoZmlyZVRpbWUpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0b3BTaGFyZWRUaW1lcigpOworICAgICAgICB9CisgICAgfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBTaGFyZWRUaW1lcl9oCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAppbmRleCA5YmYwYmYyLi5mMzNiMTcxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCisjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAogI2lmIFVTRShJQ1VfVU5JQ09E
RSkKQEAgLTcwLDYgKzcxLDcgQEAgVGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSgp
CiAgICAgOiBtX2VtcHR5U3RyaW5nKG5ldyBTdHJpbmdJbXBsKQogICAgICwgbV9hdG9taWNTdHJp
bmdUYWJsZShuZXcgSGFzaFNldDxTdHJpbmdJbXBsKj4pCiAgICAgLCBtX2V2ZW50TmFtZXMobmV3
IEV2ZW50TmFtZXMpCisgICAgLCBtX3RocmVhZFRpbWVycyhuZXcgVGhyZWFkVGltZXJzKQogI2lm
IFVTRShJQ1VfVU5JQ09ERSkKICAgICAsIG1fY2FjaGVkQ29udmVydGVySUNVKG5ldyBJQ1VDb252
ZXJ0ZXJXcmFwcGVyKQogI2VuZGlmCkBAIC05MCw2ICs5Miw3IEBAIFRocmVhZEdsb2JhbERhdGE6
On5UaHJlYWRHbG9iYWxEYXRhKCkKIAogICAgIGRlbGV0ZSBtX2V2ZW50TmFtZXM7CiAgICAgZGVs
ZXRlIG1fYXRvbWljU3RyaW5nVGFibGU7CisgICAgZGVsZXRlIG1fdGhyZWFkVGltZXJzOwogCiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpIHx8IG1fZW1wdHlTdHJpbmctPmhhc09uZVJlZigpKTsg
Ly8gV2UgaW50ZW50aW9uYWxseSBkb24ndCBjbGVhbiB1cCBzdGF0aWMgZGF0YSBvbiBhcHBsaWNh
dGlvbiBxdWl0LCBzbyB0aGVyZSB3aWxsIGJlIG1hbnkgc3RyaW5ncyByZW1haW5pbmcgb24gdGhl
IG1haW4gdGhyZWFkLgogICAgIGRlbGV0ZSBtX2VtcHR5U3RyaW5nOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL1RocmVh
ZEdsb2JhbERhdGEuaAppbmRleCAxNzYzN2FhLi43ZmFjYTM2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1RocmVh
ZEdsb2JhbERhdGEuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgRXZlbnROYW1lczsKICAgICBzdHJ1Y3QgSUNVQ29udmVydGVyV3JhcHBlcjsKICAgICBz
dHJ1Y3QgVEVDQ29udmVydGVyV3JhcHBlcjsKKyAgICBjbGFzcyBUaHJlYWRUaW1lcnM7CiAKICAg
ICBjbGFzcyBUaHJlYWRHbG9iYWxEYXRhIDogTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKQEAg
LTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBFdmVudE5hbWVzJiBl
dmVudE5hbWVzKCkgeyByZXR1cm4gKm1fZXZlbnROYW1lczsgfQogICAgICAgICBTdHJpbmdJbXBs
KiBlbXB0eVN0cmluZygpIHsgcmV0dXJuIG1fZW1wdHlTdHJpbmc7IH0KICAgICAgICAgSGFzaFNl
dDxTdHJpbmdJbXBsKj4mIGF0b21pY1N0cmluZ1RhYmxlKCkgeyByZXR1cm4gKm1fYXRvbWljU3Ry
aW5nVGFibGU7IH0KKyAgICAgICAgVGhyZWFkVGltZXJzJiB0aHJlYWRUaW1lcnMoKSB7IHJldHVy
biAqbV90aHJlYWRUaW1lcnM7IH0KIAogI2lmIFVTRShJQ1VfVU5JQ09ERSkKICAgICAgICAgSUNV
Q29udmVydGVyV3JhcHBlciYgY2FjaGVkQ29udmVydGVySUNVKCkgeyByZXR1cm4gKm1fY2FjaGVk
Q29udmVydGVySUNVOyB9CkBAIC01OCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgU3RyaW5nSW1wbCogbV9lbXB0eVN0cmluZzsKICAgICAgICAgSGFzaFNldDxTdHJpbmdJ
bXBsKj4qIG1fYXRvbWljU3RyaW5nVGFibGU7CiAgICAgICAgIEV2ZW50TmFtZXMqIG1fZXZlbnRO
YW1lczsKKyAgICAgICAgVGhyZWFkVGltZXJzKiBtX3RocmVhZFRpbWVyczsKIAogI2lmIFVTRShJ
Q1VfVU5JQ09ERSkKICAgICAgICAgSUNVQ29udmVydGVyV3JhcHBlciogbV9jYWNoZWRDb252ZXJ0
ZXJJQ1U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vVGltZXIuY3BwCmluZGV4IDAwNzIxN2QuLjhkN2ZhMzAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3Bw
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjcsMTEgKzI4LDEzIEBACiAjaW5jbHVkZSAiVGltZXIuaCIKIAogI2luY2x1ZGUgIlNoYXJl
ZFRpbWVyLmgiCisjaW5jbHVkZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgPGxpbWl0
cy5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwpAQCAtNDMsMjAgKzQ2LDE1NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGVu
IHdlIHNldCBhIHNpbmdsZSBzaGFyZWQgc3lzdGVtIHRpbWVyIHRvIGZpcmUgYXQgdGhhdCB0aW1l
LgogLy8KIC8vIFdoZW4gYSB0aW1lcidzICJuZXh0IGZpcmUgdGltZSIgY2hhbmdlcywgd2UgbmVl
ZCB0byBtb3ZlIGl0IGFyb3VuZCBpbiB0aGUgcHJpb3JpdHkgcXVldWUuCisvLyAKKy8vIFRpbWVy
cyBhcmUgY3JlYXRlZCwgc3RhcnRlZCBhbmQgZmlyZWQgb24gdGhlIHNhbWUgdGhyZWFkLCBhbmQg
ZWFjaCB0aHJlYWQgaGFzIGl0cyBvd24gVGhyZWFkVGltZXJzCisvLyBjb3B5IHRvIGtlZXAgdGhl
IGhlYXAgYW5kIGEgc2V0IG9mIGN1cnJlbnRseSBmaXJpbmcgdGltZXJzLgogCi0vLyAtLS0tLS0t
LS0tLS0tLS0tCitzdGF0aWMgTWFpblRocmVhZFNoYXJlZFRpbWVyKiBtYWluVGhyZWFkU2hhcmVk
VGltZXIoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkU2hhcmVkVGltZXIqIHRpbWVyID0gMDsK
KyAgICBpZiAoIXRpbWVyKQorICAgICAgICB0aW1lciA9IG5ldyBNYWluVGhyZWFkU2hhcmVkVGlt
ZXIoKTsKKyAgICByZXR1cm4gdGltZXI7Cit9CiAKLXN0YXRpYyBWZWN0b3I8VGltZXJCYXNlKj4q
IHRpbWVySGVhcDsKLXN0YXRpYyBIYXNoU2V0PGNvbnN0IFRpbWVyQmFzZSo+KiB0aW1lcnNSZWFk
eVRvRmlyZTsKK1RocmVhZFRpbWVyczo6VGhyZWFkVGltZXJzKCkKKyAgICA6IG1fdGltZXJIZWFw
KDApCisgICAgLCBtX3RpbWVyc1JlYWR5VG9GaXJlKDApCisgICAgLCBtX3NoYXJlZFRpbWVyKDAp
Cit7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAgICBzZXRTaGFyZWRUaW1lcihtYWlu
VGhyZWFkU2hhcmVkVGltZXIoKSk7Cit9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0KK3ZvaWQgVGhy
ZWFkVGltZXJzOjpzZXRTaGFyZWRUaW1lcihTaGFyZWRUaW1lciogc2hhcmVkVGltZXIpCit7Cisg
ICAgQVNTRVJUKHNoYXJlZFRpbWVyKTsKKyAgICBBU1NFUlQoIW1fc2hhcmVkVGltZXIpOworICAg
IC8vIFNoYXJlZFRpbWVyIHNob3VsZCBiZSBpbml0aWFsaXplZCBiZWZvcmUgZmlyc3QgdGltZXIg
aXMgY3JlYXRlZC4KKyAgICBBU1NFUlQoIW1fdGltZXJIZWFwKTsKKyAgICBtX3NoYXJlZFRpbWVy
ID0gc2hhcmVkVGltZXI7CisgICAgbV9zaGFyZWRUaW1lci0+c2V0RmlyZWRGdW5jdGlvbihUaHJl
YWRUaW1lcnM6OnNoYXJlZFRpbWVyRmlyZWQpOworfQorCitWZWN0b3I8VGltZXJCYXNlKj4qIFRo
cmVhZFRpbWVyczo6dGltZXJIZWFwKCkKK3sKKyAgICBpZiAoIW1fdGltZXJIZWFwKQorICAgICAg
ICBtX3RpbWVySGVhcCA9IG5ldyBWZWN0b3I8VGltZXJCYXNlKj47CisgICAgcmV0dXJuIG1fdGlt
ZXJIZWFwOworfQorCitIYXNoU2V0PGNvbnN0IFRpbWVyQmFzZSo+KiBUaHJlYWRUaW1lcnM6OnRp
bWVyc1JlYWR5VG9GaXJlKCkKK3sKKyAgICByZXR1cm4gbV90aW1lcnNSZWFkeVRvRmlyZTsKK30K
Kwordm9pZCBUaHJlYWRUaW1lcnM6OnVwZGF0ZVNoYXJlZFRpbWVyKCkKK3sKKyAgICBBU1NFUlQo
bV9zaGFyZWRUaW1lcik7CisgICAgaWYgKG1fdGltZXJzUmVhZHlUb0ZpcmUgfHwgIW1fdGltZXJI
ZWFwIHx8IG1fdGltZXJIZWFwLT5pc0VtcHR5KCkpCisgICAgICAgIG1fc2hhcmVkVGltZXItPnN0
b3AoKTsKKyAgICBlbHNlCisgICAgICAgIG1fc2hhcmVkVGltZXItPnNldEZpcmVUaW1lKG1fdGlt
ZXJIZWFwLT5maXJzdCgpLT5tX25leHRGaXJlVGltZSk7Cit9CisKKwordm9pZCBUaHJlYWRUaW1l
cnM6OmNvbGxlY3RGaXJpbmdUaW1lcnMoZG91YmxlIGZpcmVUaW1lLCBWZWN0b3I8VGltZXJCYXNl
Kj4mIGZpcmluZ1RpbWVycykKK3sKKyAgICB3aGlsZSAoIW1fdGltZXJIZWFwLT5pc0VtcHR5KCkg
JiYgbV90aW1lckhlYXAtPmZpcnN0KCktPm1fbmV4dEZpcmVUaW1lIDw9IGZpcmVUaW1lKSB7Cisg
ICAgICAgIFRpbWVyQmFzZSogdGltZXIgPSBtX3RpbWVySGVhcC0+Zmlyc3QoKTsKKyAgICAgICAg
ZmlyaW5nVGltZXJzLmFwcGVuZCh0aW1lcik7CisgICAgICAgIG1fdGltZXJzUmVhZHlUb0ZpcmUt
PmFkZCh0aW1lcik7CisgICAgICAgIHRpbWVyLT5tX25leHRGaXJlVGltZSA9IDA7CisgICAgICAg
IHRpbWVyLT5oZWFwRGVsZXRlTWluKCk7CisgICAgfQorfQorCit2b2lkIFRocmVhZFRpbWVyczo6
ZmlyZVRpbWVycyhkb3VibGUgZmlyZVRpbWUsIGNvbnN0IFZlY3RvcjxUaW1lckJhc2UqPiYgZmly
aW5nVGltZXJzKQoreworICAgIHNpemVfdCBzaXplID0gZmlyaW5nVGltZXJzLnNpemUoKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBzaXplOyArK2kpIHsKKyAgICAgICAgVGltZXJCYXNl
KiB0aW1lciA9IGZpcmluZ1RpbWVyc1tpXTsKKworICAgICAgICAvLyBJZiBub3QgaW4gdGhlIHNl
dCwgdGhpcyB0aW1lciBoYXMgYmVlbiBkZWxldGVkIG9yIHJlLXNjaGVkdWxlZCBpbiBhbm90aGVy
IHRpbWVyJ3MgZmlyZWQgZnVuY3Rpb24uCisgICAgICAgIC8vIFNvIGVpdGhlciB3ZSBkb24ndCB3
YW50IHRvIGZpcmUgaXQgYXQgYWxsIG9yIHdlIHdpbGwgZmlyZSBpdCBuZXh0IHRpbWUgdGhlIHNo
YXJlZCB0aW1lciBnb2VzIG9mZi4KKyAgICAgICAgLy8gSXQgbWlnaHQgZXZlbiBoYXZlIGJlZW4g
ZGVsZXRlZDsgdGhhdCdzIE9LIGJlY2F1c2Ugd2Ugd29uJ3QgZG8gYW55dGhpbmcgZWxzZSB3aXRo
IHRoZSBwb2ludGVyLgorICAgICAgICBpZiAoIW1fdGltZXJzUmVhZHlUb0ZpcmUtPmNvbnRhaW5z
KHRpbWVyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIFNldHRpbmcgdGhl
IG5leHQgZmlyZSB0aW1lIGhhcyBhIHNpZGUgZWZmZWN0IG9mIHJlbW92aW5nIHRoZSB0aW1lciBm
cm9tIHRoZSBmaXJpbmcgdGltZXJzIHNldC4KKyAgICAgICAgZG91YmxlIGludGVydmFsID0gdGlt
ZXItPnJlcGVhdEludGVydmFsKCk7CisgICAgICAgIHRpbWVyLT5zZXROZXh0RmlyZVRpbWUoaW50
ZXJ2YWwgPyBmaXJlVGltZSArIGludGVydmFsIDogMCk7CisKKyAgICAgICAgLy8gT25jZSB0aGUg
dGltZXIgaGFzIGJlZW4gZmlyZWQsIGl0IG1heSBiZSBkZWxldGVkLCBzbyBkbyBub3RoaW5nIGVs
c2Ugd2l0aCBpdCBhZnRlciB0aGlzIHBvaW50LgorICAgICAgICB0aW1lci0+ZmlyZWQoKTsKKwor
ICAgICAgICAvLyBDYXRjaCB0aGUgY2FzZSB3aGVyZSB0aGUgdGltZXIgYXNrZWQgdGltZXJzIHRv
IGZpcmUgaW4gYSBuZXN0ZWQgZXZlbnQgbG9vcC4KKyAgICAgICAgaWYgKCFtX3RpbWVyc1JlYWR5
VG9GaXJlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIFRocmVhZFRpbWVy
czo6c2hhcmVkVGltZXJGaXJlZCgpCit7CisgICAgLy8gUmVkaXJlY3QgdG8gbm9uLXN0YXRpYyBt
ZXRob2QuCisgICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnNoYXJlZFRpbWVy
RmlyZWRJbnRlcm5hbCgpOworfQorCit2b2lkIFRocmVhZFRpbWVyczo6c2hhcmVkVGltZXJGaXJl
ZEludGVybmFsKCkKK3sKKyAgICAvLyBEbyBhIHJlLWVudHJhbmN5IGNoZWNrLgorICAgIGlmICht
X3RpbWVyc1JlYWR5VG9GaXJlKQorICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgZmlyZVRp
bWUgPSBjdXJyZW50VGltZSgpOworICAgIFZlY3RvcjxUaW1lckJhc2UqPiBmaXJpbmdUaW1lcnM7
CisgICAgSGFzaFNldDxjb25zdCBUaW1lckJhc2UqPiBmaXJpbmdUaW1lcnNTZXQ7CisKKyAgICBt
X3RpbWVyc1JlYWR5VG9GaXJlID0gJmZpcmluZ1RpbWVyc1NldDsKKworICAgIGNvbGxlY3RGaXJp
bmdUaW1lcnMoZmlyZVRpbWUsIGZpcmluZ1RpbWVycyk7CisgICAgZmlyZVRpbWVycyhmaXJlVGlt
ZSwgZmlyaW5nVGltZXJzKTsKKworICAgIG1fdGltZXJzUmVhZHlUb0ZpcmUgPSAwOworCisgICAg
dXBkYXRlU2hhcmVkVGltZXIoKTsKK30KKwordm9pZCBUaHJlYWRUaW1lcnM6OmZpcmVUaW1lcnNJ
bk5lc3RlZEV2ZW50TG9vcCgpCit7CisgICAgLy8gUmVkaXJlY3QgdG8gbm9uLXN0YXRpYyBtZXRo
b2QuCisgICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLmZpcmVUaW1lcnNJbk5l
c3RlZEV2ZW50TG9vcEludGVybmFsKCk7Cit9CisKK3ZvaWQgVGhyZWFkVGltZXJzOjpmaXJlVGlt
ZXJzSW5OZXN0ZWRFdmVudExvb3BJbnRlcm5hbCgpCit7CisgICAgbV90aW1lcnNSZWFkeVRvRmly
ZSA9IDA7CisgICAgdXBkYXRlU2hhcmVkVGltZXIoKTsKK30KKworLy8gU2ltcGxlIGFjY2Vzc29y
cyB0byB0dGhyZWFkLXNwZWNpZmljIGRhdGEuCitzdGF0aWMgVmVjdG9yPFRpbWVyQmFzZSo+KiB0
aW1lckhlYXAoKQoreworICAgIHJldHVybiB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJz
KCkudGltZXJIZWFwKCk7Cit9CisKK3N0YXRpYyBIYXNoU2V0PGNvbnN0IFRpbWVyQmFzZSo+KiB0
aW1lcnNSZWFkeVRvRmlyZSgpCit7CisgICAgcmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS50aHJl
YWRUaW1lcnMoKS50aW1lcnNSZWFkeVRvRmlyZSgpOworfQogCiAvLyBDbGFzcyB0byByZXByZXNl
bnQgZWxlbWVudHMgaW4gdGhlIGhlYXAgd2hlbiBjYWxsaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5
IGhlYXAgYWxnb3JpdGhtcy4KIC8vIE1haW50YWlucyB0aGUgbV9oZWFwSW5kZXggdmFsdWUgaW4g
dGhlIHRpbWVycyB0aGVtc2VsdmVzLCB3aGljaCBhbGxvd3MgdXMgdG8gZG8gZWZmaWNpZW50CiAv
LyBtb2RpZmljYXRpb24gb2YgdGhlIGhlYXAuCiBjbGFzcyBUaW1lckhlYXBFbGVtZW50IHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBUaW1lckhlYXBFbGVtZW50KGludCBpKSA6IG1faW5kZXgoaSks
IG1fdGltZXIoKCp0aW1lckhlYXApW21faW5kZXhdKSB7IGNoZWNrQ29uc2lzdGVuY3koKTsgfQor
ICAgIGV4cGxpY2l0IFRpbWVySGVhcEVsZW1lbnQoaW50IGkpCisgICAgICAgIDogbV9pbmRleChp
KQorICAgICAgICAsIG1fdGltZXIoKCp0aW1lckhlYXAoKSlbbV9pbmRleF0pCisgICAgeyAKKyAg
ICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOyAKKyAgICB9CiAKICAgICBUaW1lckhlYXBFbGVtZW50
KGNvbnN0IFRpbWVySGVhcEVsZW1lbnQmKTsKICAgICBUaW1lckhlYXBFbGVtZW50JiBvcGVyYXRv
cj0oY29uc3QgVGltZXJIZWFwRWxlbWVudCYpOwpAQCAtNjYsNyArMjA0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQo
bV9pbmRleCA+PSAwKTsKLSAgICAgICAgQVNTRVJUKG1faW5kZXggPCAodGltZXJIZWFwID8gc3Rh
dGljX2Nhc3Q8aW50Pih0aW1lckhlYXAtPnNpemUoKSkgOiAwKSk7CisgICAgICAgIEFTU0VSVCht
X2luZGV4IDwgKHRpbWVySGVhcCgpID8gc3RhdGljX2Nhc3Q8aW50Pih0aW1lckhlYXAoKS0+c2l6
ZSgpKSA6IDApKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04Nyw3ICsyMjUsNyBAQCBpbmxpbmUg
VGltZXJIZWFwRWxlbWVudCYgVGltZXJIZWFwRWxlbWVudDo6b3BlcmF0b3I9KGNvbnN0IFRpbWVy
SGVhcEVsZW1lbnQmIG8pCiAgICAgbV90aW1lciA9IHQ7CiAgICAgaWYgKG1faW5kZXggIT0gLTEp
IHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgICAgICAoKnRpbWVySGVhcClbbV9p
bmRleF0gPSB0OworICAgICAgICAoKnRpbWVySGVhcCgpKVttX2luZGV4XSA9IHQ7CiAgICAgICAg
IHQtPm1faGVhcEluZGV4ID0gbV9pbmRleDsKICAgICB9CiAgICAgcmV0dXJuICp0aGlzOwpAQCAt
MTM0LDcgKzI3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koaW50IG9m
ZnNldCA9IDApIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG9mZnNldCwgbV9p
bmRleCArIG9mZnNldCA+PSAwKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChvZmZzZXQsIG1faW5k
ZXggKyBvZmZzZXQgPD0gKHRpbWVySGVhcCA/IHN0YXRpY19jYXN0PGludD4odGltZXJIZWFwLT5z
aXplKCkpIDogMCkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKG9mZnNldCwgbV9pbmRleCArIG9m
ZnNldCA8PSAodGltZXJIZWFwKCkgPyBzdGF0aWNfY2FzdDxpbnQ+KHRpbWVySGVhcCgpLT5zaXpl
KCkpIDogMCkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE1MywyNyArMjkxLDE2IEBAIGlubGlu
ZSBpbnQgb3BlcmF0b3ItKFRpbWVySGVhcEl0ZXJhdG9yIGEsIFRpbWVySGVhcEl0ZXJhdG9yIGIp
IHsgcmV0dXJuIGEuaW5kZXgoCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCB1cGRhdGVT
aGFyZWRUaW1lcigpCi17Ci0gICAgaWYgKHRpbWVyc1JlYWR5VG9GaXJlIHx8ICF0aW1lckhlYXAg
fHwgdGltZXJIZWFwLT5pc0VtcHR5KCkpCi0gICAgICAgIHN0b3BTaGFyZWRUaW1lcigpOwotICAg
IGVsc2UKLSAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlVGltZSh0aW1lckhlYXAtPmZpcnN0KCkt
Pm1fbmV4dEZpcmVUaW1lKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLQotCiBUaW1lckJhc2U6
OlRpbWVyQmFzZSgpCi0gICAgOiBtX25leHRGaXJlVGltZSgwKSwgbV9yZXBlYXRJbnRlcnZhbCgw
KSwgbV9oZWFwSW5kZXgoLTEpCisgICAgOiBtX25leHRGaXJlVGltZSgwKQorICAgICwgbV9yZXBl
YXRJbnRlcnZhbCgwKQorICAgICwgbV9oZWFwSW5kZXgoLTEpCiB7Ci0gICAgLy8gV2Ugb25seSBu
ZWVkIHRvIGRvIHRoaXMgb25jZSwgYnV0IHByb2JhYmx5IG5vdCB3b3J0aCB0cnlpbmcgdG8gb3B0
aW1pemUgaXQuCi0gICAgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHNoYXJlZFRpbWVyRmly
ZWQpOwogfQogCiBUaW1lckJhc2U6On5UaW1lckJhc2UoKQogewogICAgIHN0b3AoKTsKLQogICAg
IEFTU0VSVCghaW5IZWFwKCkpOwogfQogCkBAIC0xOTUsNyArMzIyLDcgQEAgdm9pZCBUaW1lckJh
c2U6OnN0b3AoKQogCiBib29sIFRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIHJl
dHVybiBtX25leHRGaXJlVGltZSB8fCAodGltZXJzUmVhZHlUb0ZpcmUgJiYgdGltZXJzUmVhZHlU
b0ZpcmUtPmNvbnRhaW5zKHRoaXMpKTsKKyAgICByZXR1cm4gbV9uZXh0RmlyZVRpbWUgfHwgKHRp
bWVyc1JlYWR5VG9GaXJlKCkgJiYgdGltZXJzUmVhZHlUb0ZpcmUoKS0+Y29udGFpbnModGhpcykp
OwogfQogCiBkb3VibGUgVGltZXJCYXNlOjpuZXh0RmlyZUludGVydmFsKCkgY29uc3QKQEAgLTIw
OSwxMSArMzM2LDEwIEBAIGRvdWJsZSBUaW1lckJhc2U6Om5leHRGaXJlSW50ZXJ2YWwoKSBjb25z
dAogCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmNoZWNrSGVhcEluZGV4KCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQodGltZXJIZWFwKTsKLSAgICBBU1NFUlQoIXRpbWVySGVhcC0+aXNFbXB0eSgpKTsK
KyAgICBBU1NFUlQoIXRpbWVySGVhcCgpLT5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX2hlYXBJ
bmRleCA+PSAwKTsKLSAgICBBU1NFUlQobV9oZWFwSW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+KHRp
bWVySGVhcC0+c2l6ZSgpKSk7Ci0gICAgQVNTRVJUKCgqdGltZXJIZWFwKVttX2hlYXBJbmRleF0g
PT0gdGhpcyk7CisgICAgQVNTRVJUKG1faGVhcEluZGV4IDwgc3RhdGljX2Nhc3Q8aW50Pih0aW1l
ckhlYXAoKS0+c2l6ZSgpKSk7CisgICAgQVNTRVJUKCgqdGltZXJIZWFwKCkpW21faGVhcEluZGV4
XSA9PSB0aGlzKTsKIH0KIAogaW5saW5lIHZvaWQgVGltZXJCYXNlOjpjaGVja0NvbnNpc3RlbmN5
KCkgY29uc3QKQEAgLTIzNiw3ICszNjIsNyBAQCBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmhlYXBE
ZWxldGUoKQogewogICAgIEFTU0VSVChtX25leHRGaXJlVGltZSA9PSAwKTsKICAgICBoZWFwUG9w
KCk7Ci0gICAgdGltZXJIZWFwLT5yZW1vdmVMYXN0KCk7CisgICAgdGltZXJIZWFwKCktPnJlbW92
ZUxhc3QoKTsKICAgICBtX2hlYXBJbmRleCA9IC0xOwogfQogCkBAIC0yNDQsNyArMzcwLDcgQEAg
aW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFwRGVsZXRlTWluKCkKIHsKICAgICBBU1NFUlQobV9u
ZXh0RmlyZVRpbWUgPT0gMCk7CiAgICAgaGVhcFBvcE1pbigpOwotICAgIHRpbWVySGVhcC0+cmVt
b3ZlTGFzdCgpOworICAgIHRpbWVySGVhcCgpLT5yZW1vdmVMYXN0KCk7CiAgICAgbV9oZWFwSW5k
ZXggPSAtMTsKIH0KIApAQCAtMjU4LDEwICszODQsOCBAQCBpbmxpbmUgdm9pZCBUaW1lckJhc2U6
OmhlYXBJbmNyZWFzZUtleSgpCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmhlYXBJbnNlcnQoKQog
ewogICAgIEFTU0VSVCghaW5IZWFwKCkpOwotICAgIGlmICghdGltZXJIZWFwKQotICAgICAgICB0
aW1lckhlYXAgPSBuZXcgVmVjdG9yPFRpbWVyQmFzZSo+OwotICAgIHRpbWVySGVhcC0+YXBwZW5k
KHRoaXMpOwotICAgIG1faGVhcEluZGV4ID0gdGltZXJIZWFwLT5zaXplKCkgLSAxOworICAgIHRp
bWVySGVhcCgpLT5hcHBlbmQodGhpcyk7CisgICAgbV9oZWFwSW5kZXggPSB0aW1lckhlYXAoKS0+
c2l6ZSgpIC0gMTsKICAgICBoZWFwRGVjcmVhc2VLZXkoKTsKIH0KIApAQCAtMjc3LDE5ICs0MDEs
MTkgQEAgaW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFwUG9wKCkKIAogdm9pZCBUaW1lckJhc2U6
OmhlYXBQb3BNaW4oKQogewotICAgIEFTU0VSVCh0aGlzID09IHRpbWVySGVhcC0+Zmlyc3QoKSk7
CisgICAgQVNTRVJUKHRoaXMgPT0gdGltZXJIZWFwKCktPmZpcnN0KCkpOwogICAgIGNoZWNrSGVh
cEluZGV4KCk7Ci0gICAgcG9wX2hlYXAoVGltZXJIZWFwSXRlcmF0b3IoMCksIFRpbWVySGVhcEl0
ZXJhdG9yKHRpbWVySGVhcC0+c2l6ZSgpKSk7CisgICAgcG9wX2hlYXAoVGltZXJIZWFwSXRlcmF0
b3IoMCksIFRpbWVySGVhcEl0ZXJhdG9yKHRpbWVySGVhcCgpLT5zaXplKCkpKTsKICAgICBjaGVj
a0hlYXBJbmRleCgpOwotICAgIEFTU0VSVCh0aGlzID09IHRpbWVySGVhcC0+bGFzdCgpKTsKKyAg
ICBBU1NFUlQodGhpcyA9PSB0aW1lckhlYXAoKS0+bGFzdCgpKTsKIH0KIAogdm9pZCBUaW1lckJh
c2U6OnNldE5leHRGaXJlVGltZShkb3VibGUgbmV3VGltZSkKIHsKICAgICAvLyBLZWVwIGhlYXAg
dmFsaWQgd2hpbGUgY2hhbmdpbmcgdGhlIG5leHQtZmlyZSB0aW1lLgogCi0gICAgaWYgKHRpbWVy
c1JlYWR5VG9GaXJlKQotICAgICAgICB0aW1lcnNSZWFkeVRvRmlyZS0+cmVtb3ZlKHRoaXMpOwor
ICAgIGlmICh0aW1lcnNSZWFkeVRvRmlyZSgpKQorICAgICAgICB0aW1lcnNSZWFkeVRvRmlyZSgp
LT5yZW1vdmUodGhpcyk7CiAKICAgICBkb3VibGUgb2xkVGltZSA9IG1fbmV4dEZpcmVUaW1lOwog
ICAgIGlmIChvbGRUaW1lICE9IG5ld1RpbWUpIHsKQEAgLTMxMSw3MiArNDM1LDExIEBAIHZvaWQg
VGltZXJCYXNlOjpzZXROZXh0RmlyZVRpbWUoZG91YmxlIG5ld1RpbWUpCiAgICAgICAgIGJvb2wg
aXNGaXJzdFRpbWVySW5IZWFwID0gbV9oZWFwSW5kZXggPT0gMDsKIAogICAgICAgICBpZiAod2Fz
Rmlyc3RUaW1lckluSGVhcCB8fCBpc0ZpcnN0VGltZXJJbkhlYXApCi0gICAgICAgICAgICB1cGRh
dGVTaGFyZWRUaW1lcigpOworICAgICAgICAgICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRp
bWVycygpLnVwZGF0ZVNoYXJlZFRpbWVyKCk7CiAgICAgfQogCiAgICAgY2hlY2tDb25zaXN0ZW5j
eSgpOwogfQogCi12b2lkIFRpbWVyQmFzZTo6Y29sbGVjdEZpcmluZ1RpbWVycyhkb3VibGUgZmly
ZVRpbWUsIFZlY3RvcjxUaW1lckJhc2UqPiYgZmlyaW5nVGltZXJzKQotewotICAgIHdoaWxlICgh
dGltZXJIZWFwLT5pc0VtcHR5KCkgJiYgdGltZXJIZWFwLT5maXJzdCgpLT5tX25leHRGaXJlVGlt
ZSA8PSBmaXJlVGltZSkgewotICAgICAgICBUaW1lckJhc2UqIHRpbWVyID0gdGltZXJIZWFwLT5m
aXJzdCgpOwotICAgICAgICBmaXJpbmdUaW1lcnMuYXBwZW5kKHRpbWVyKTsKLSAgICAgICAgdGlt
ZXJzUmVhZHlUb0ZpcmUtPmFkZCh0aW1lcik7Ci0gICAgICAgIHRpbWVyLT5tX25leHRGaXJlVGlt
ZSA9IDA7Ci0gICAgICAgIHRpbWVyLT5oZWFwRGVsZXRlTWluKCk7Ci0gICAgfQotfQotCi12b2lk
IFRpbWVyQmFzZTo6ZmlyZVRpbWVycyhkb3VibGUgZmlyZVRpbWUsIGNvbnN0IFZlY3RvcjxUaW1l
ckJhc2UqPiYgZmlyaW5nVGltZXJzKQotewotICAgIGludCBzaXplID0gZmlyaW5nVGltZXJzLnNp
emUoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSAhPSBzaXplOyArK2kpIHsKLSAgICAgICAgVGlt
ZXJCYXNlKiB0aW1lciA9IGZpcmluZ1RpbWVyc1tpXTsKLQotICAgICAgICAvLyBJZiBub3QgaW4g
dGhlIHNldCwgdGhpcyB0aW1lciBoYXMgYmVlbiBkZWxldGVkIG9yIHJlLXNjaGVkdWxlZCBpbiBh
bm90aGVyIHRpbWVyJ3MgZmlyZWQgZnVuY3Rpb24uCi0gICAgICAgIC8vIFNvIGVpdGhlciB3ZSBk
b24ndCB3YW50IHRvIGZpcmUgaXQgYXQgYWxsIG9yIHdlIHdpbGwgZmlyZSBpdCBuZXh0IHRpbWUg
dGhlIHNoYXJlZCB0aW1lciBnb2VzIG9mZi4KLSAgICAgICAgLy8gSXQgbWlnaHQgZXZlbiBoYXZl
IGJlZW4gZGVsZXRlZDsgdGhhdCdzIE9LIGJlY2F1c2Ugd2Ugd29uJ3QgZG8gYW55dGhpbmcgZWxz
ZSB3aXRoIHRoZSBwb2ludGVyLgotICAgICAgICBpZiAoIXRpbWVyc1JlYWR5VG9GaXJlLT5jb250
YWlucyh0aW1lcikpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBTZXR0aW5n
IHRoZSBuZXh0IGZpcmUgdGltZSBoYXMgYSBzaWRlIGVmZmVjdCBvZiByZW1vdmluZyB0aGUgdGlt
ZXIgZnJvbSB0aGUgZmlyaW5nIHRpbWVycyBzZXQuCi0gICAgICAgIGRvdWJsZSBpbnRlcnZhbCA9
IHRpbWVyLT5yZXBlYXRJbnRlcnZhbCgpOwotICAgICAgICB0aW1lci0+c2V0TmV4dEZpcmVUaW1l
KGludGVydmFsID8gZmlyZVRpbWUgKyBpbnRlcnZhbCA6IDApOwotCi0gICAgICAgIC8vIE9uY2Ug
dGhlIHRpbWVyIGhhcyBiZWVuIGZpcmVkLCBpdCBtYXkgYmUgZGVsZXRlZCwgc28gZG8gbm90aGlu
ZyBlbHNlIHdpdGggaXQgYWZ0ZXIgdGhpcyBwb2ludC4KLSAgICAgICAgdGltZXItPmZpcmVkKCk7
Ci0KLSAgICAgICAgLy8gQ2F0Y2ggdGhlIGNhc2Ugd2hlcmUgdGhlIHRpbWVyIGFza2VkIHRpbWVy
cyB0byBmaXJlIGluIGEgbmVzdGVkIGV2ZW50IGxvb3AuCi0gICAgICAgIGlmICghdGltZXJzUmVh
ZHlUb0ZpcmUpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgVGltZXJCYXNl
OjpzaGFyZWRUaW1lckZpcmVkKCkKLXsKLSAgICAvLyBEbyBhIHJlLWVudHJhbmN5IGNoZWNrLgot
ICAgIGlmICh0aW1lcnNSZWFkeVRvRmlyZSkKLSAgICAgICAgcmV0dXJuOworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0gICAgZG91YmxlIGZpcmVUaW1lID0gY3VycmVudFRpbWUoKTsKLSAgICBW
ZWN0b3I8VGltZXJCYXNlKj4gZmlyaW5nVGltZXJzOwotICAgIEhhc2hTZXQ8Y29uc3QgVGltZXJC
YXNlKj4gZmlyaW5nVGltZXJzU2V0OwotCi0gICAgdGltZXJzUmVhZHlUb0ZpcmUgPSAmZmlyaW5n
VGltZXJzU2V0OwotCi0gICAgY29sbGVjdEZpcmluZ1RpbWVycyhmaXJlVGltZSwgZmlyaW5nVGlt
ZXJzKTsKLSAgICBmaXJlVGltZXJzKGZpcmVUaW1lLCBmaXJpbmdUaW1lcnMpOwotCi0gICAgdGlt
ZXJzUmVhZHlUb0ZpcmUgPSAwOwotCi0gICAgdXBkYXRlU2hhcmVkVGltZXIoKTsKLX0KLQotdm9p
ZCBUaW1lckJhc2U6OmZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpCi17Ci0gICAgdGltZXJz
UmVhZHlUb0ZpcmUgPSAwOwotICAgIHVwZGF0ZVNoYXJlZFRpbWVyKCk7Ci19Ci0KLX0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIu
aAppbmRleCAwZWU4NmIxLi5lMWUxYjY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Rp
bWVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjgsNyBA
QAogI2RlZmluZSBUaW1lcl9oCiAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTMsOCArNTUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGF1Z21lbnRS
ZXBlYXRJbnRlcnZhbChkb3VibGUgZGVsdGEpIHsgc2V0TmV4dEZpcmVUaW1lKG1fbmV4dEZpcmVU
aW1lICsgZGVsdGEpOyBtX3JlcGVhdEludGVydmFsICs9IGRlbHRhOyB9CiAKLSAgICBzdGF0aWMg
dm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKLQogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgZmlyZWQoKSA9IDA7CiAKQEAgLTczLDE3ICs3MywxMyBAQCBwcml2YXRlOgogICAg
IHZvaWQgaGVhcFBvcCgpOwogICAgIHZvaWQgaGVhcFBvcE1pbigpOwogCi0gICAgc3RhdGljIHZv
aWQgY29sbGVjdEZpcmluZ1RpbWVycyhkb3VibGUgZmlyZVRpbWUsIFZlY3RvcjxUaW1lckJhc2Uq
PiYpOwotICAgIHN0YXRpYyB2b2lkIGZpcmVUaW1lcnMoZG91YmxlIGZpcmVUaW1lLCBjb25zdCBW
ZWN0b3I8VGltZXJCYXNlKj4mKTsKLSAgICBzdGF0aWMgdm9pZCBzaGFyZWRUaW1lckZpcmVkKCk7
Ci0KICAgICBkb3VibGUgbV9uZXh0RmlyZVRpbWU7IC8vIDAgaWYgaW5hY3RpdmUKICAgICBkb3Vi
bGUgbV9yZXBlYXRJbnRlcnZhbDsgLy8gMCBpZiBub3QgcmVwZWF0aW5nCiAgICAgaW50IG1faGVh
cEluZGV4OyAvLyAtMSBpZiBub3QgaW4gaGVhcAogICAgIHVuc2lnbmVkIG1faGVhcEluc2VydGlv
bk9yZGVyOyAvLyBVc2VkIHRvIGtlZXAgb3JkZXIgYW1vbmcgZXF1YWwtZmlyZS10aW1lIHRpbWVy
cwogCi0gICAgZnJpZW5kIHZvaWQgdXBkYXRlU2hhcmVkVGltZXIoKTsKICAgICBmcmllbmQgY2xh
c3MgVGltZXJIZWFwRWxlbWVudDsKKyAgICBmcmllbmQgY2xhc3MgVGhyZWFkVGltZXJzOwogICAg
IGZyaWVuZCBib29sIG9wZXJhdG9yPChjb25zdCBUaW1lckhlYXBFbGVtZW50JiwgY29uc3QgVGlt
ZXJIZWFwRWxlbWVudCYpOwogfTsKIApAQCAtMTAxLDYgKzk3LDM1IEBAIHByaXZhdGU6CiAgICAg
VGltZXJGaXJlZEZ1bmN0aW9uIG1fZnVuY3Rpb247CiB9OwogCitjbGFzcyBTaGFyZWRUaW1lcjsK
KworLy8gQSBjb2xsZWN0aW9uIG9mIHRpbWVycyBwZXIgdGhyZWFkLiBLZXB0IGluIFRocmVhZEds
b2JhbERhdGEuCitjbGFzcyBUaHJlYWRUaW1lcnMgOiBOb25jb3B5YWJsZSB7CitwdWJsaWM6Cisg
ICAgVGhyZWFkVGltZXJzKCk7CisKKyAgICAvLyBPbiBhIHRocmVhZCBkaWZmZXJlbnQgdGhlbiBt
YWluLCB3ZSBzaG91bGQgc2V0IHRoZSB0aHJlYWQncyBpbnN0YW5jZSBvZiB0aGUgU2hhcmVkVGlt
ZXIuCisgICAgdm9pZCBzZXRTaGFyZWRUaW1lcihTaGFyZWRUaW1lciopOworCisgICAgVmVjdG9y
PFRpbWVyQmFzZSo+KiB0aW1lckhlYXAoKTsKKyAgICBIYXNoU2V0PGNvbnN0IFRpbWVyQmFzZSo+
KiB0aW1lcnNSZWFkeVRvRmlyZSgpOworCisgICAgdm9pZCB1cGRhdGVTaGFyZWRUaW1lcigpOwor
ICAgIHN0YXRpYyB2b2lkIGZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOworCitwcml2YXRl
OgorICAgIHN0YXRpYyB2b2lkIHNoYXJlZFRpbWVyRmlyZWQoKTsKKworICAgIHZvaWQgZmlyZVRp
bWVycyhkb3VibGUgZmlyZVRpbWUsIGNvbnN0IFZlY3RvcjxUaW1lckJhc2UqPiYpOworICAgIHZv
aWQgY29sbGVjdEZpcmluZ1RpbWVycyhkb3VibGUgZmlyZVRpbWUsIFZlY3RvcjxUaW1lckJhc2Uq
PiYpOworICAgIHZvaWQgc2hhcmVkVGltZXJGaXJlZEludGVybmFsKCk7CisgICAgdm9pZCBmaXJl
VGltZXJzSW5OZXN0ZWRFdmVudExvb3BJbnRlcm5hbCgpOworCisgICAgVmVjdG9yPFRpbWVyQmFz
ZSo+KiBtX3RpbWVySGVhcDsKKyAgICBIYXNoU2V0PGNvbnN0IFRpbWVyQmFzZSo+KiBtX3RpbWVy
c1JlYWR5VG9GaXJlOworICAgIFNoYXJlZFRpbWVyKiBtX3NoYXJlZFRpbWVyOworfTsKKwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKaW5kZXggYWNhNTlkMy4uNzA1MTQ2OCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAw
OS0wMS0yMiAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0ODgKKworICAgICAgICBNYWtlIFRpbWVyQmFzZSB0aHJl
YWQtYXdhcmUgKGZvciBXb3JrZXJzKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRQ
cm9tcHQpOiBVc2VzIFRocmVhZFRpbWVycyBpbnN0ZWFkIG9mIFRpbWVyQmFzZSBzaW5jZSBtZXRo
b2QgbW92ZWQuCisKIDIwMDktMDEtMTkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KZGlmZiAtLWdpdCBh
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA5YWVjMjRiLi42OGE4
NzFiIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CkBAIC0zNjAsNyArMzYwLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRQ
cm9tcHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFMKICAgICBpZiAoRkFJ
TEVEKG1fd2ViVmlldy0+dWlEZWxlZ2F0ZSgmdWkpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKKyAgICBUaHJl
YWRUaW1lcnM6OmZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwogCiAgICAgQlNUUiByZXN1
bHRCU1RSID0gMDsKICAgICBpZiAoRkFJTEVEKHVpLT5ydW5KYXZhU2NyaXB0VGV4dElucHV0UGFu
ZWxXaXRoUHJvbXB0KG1fd2ViVmlldywgQlN0cmluZyhtZXNzYWdlKSwgQlN0cmluZyhkZWZhdWx0
VmFsdWUpLCAmcmVzdWx0QlNUUikpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26985</attachid>
            <date>2009-01-23 14:48:52 -0800</date>
            <delta_ts>2009-01-24 23:26:27 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>timers_v3.txt</filename>
            <type>text/plain</type>
            <size>25087</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzJlZjFjMC4uOGMwN2Q5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAwOS0wMS0yMiAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0ODgKKworICAgICAgICBNYWtlIFRpbWVyQmFzZSB0aHJlYWQtYXdhcmUgKGZvciBXb3JrZXJz
KS4KKyAgICAgICAgQWRkZWQgbmV3IGNsYXNzIFRocmVhZFRpbWVycyAtIGl0IGtlZXBzIGEgaGVh
cCBvZiBhbGwgdGltZXJzIGZvciBhIHRocmVhZCAocHJldmlvdXNseSBrZXB0IGluIGEgc3RhdGlj
IGdsb2JhbCkuCisgICAgICAgIFBvaW50ZXIgdG8gaW5zdGFuY2Ugb2YgVGhyZWFkVGltZXJzIGlz
IHN0b3JlZCBpbiBHbG9iYWxUaHJlYWREYXRhLgorICAgICAgICBBbGwgc3RhdGljIG1ldGhvZHMg
b2YgVGltZXJCYXNlIHdlbnQgdG8gVGhyZWFkVGltZXJzLgorCisgICAgICAgIFRoZSBUaW1lckJh
c2UgZnVuY3Rpb25hbGl0eSBkaWQgbm90IGNoYW5nZSAoaXQgbWFpbnRhaW5zIHRoZSB0aW1lciBo
ZWFwIHdoaWNoIGNvbXB1dGVzIHRoZSBuZWFyZXN0IGZpcmluZykuCisKKyAgICAgICAgQWRkZWQg
bmV3IGFic3RyYWN0IGNsYXNzIFNoYXJlZFRpbWVyLCBzbyB3b3JrZXIgdGhyZWFkcyBjYW4gcHJv
dmlkZSB0aGVpciBvd24gaW1wbGVtZW50YXRpb24gKHdpbGwgYmUgaW1wbGVtZW50ZWQgb24gV29y
a2VyUnVuTG9vcCkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VJZk5l
ZWRlZCk6IE5hbWUgY2hhbmdlIFRpbWVyQmFzZS0+VGhyZWFkVGltZXJzCisgICAgICAgICogcGFn
ZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpydW5Nb2RhbCk6IERpdHRv
LgorCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkVGltZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZFRpbWVyOjp+U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZVRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRo
cmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgQWRkZWQgYWJzdHJhY3QgU2hhcmVkVGlt
ZXIgYW5kIE1haW5UaHJlYWRTaGFyZWRUaW1lciB3aGljaCByZWRpcmVjdHMgdG8gdGhlIGV4aXN0
aW5nIHBvcnQtc3VwcGxpZWQgZnVuY3Rpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpUaHJl
YWRHbG9iYWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6On5UaHJl
YWRHbG9iYWxEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjp0aHJlYWRUaW1lcnMpOgorICAgICAg
ICBBZGRlZCBUaHJlYWRUaW1lcnMgdG8gVGhyZWFkR2xvYmFsRGF0YS4KKworICAgICAgICAqIHBs
YXRmb3JtL1RpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1haW5UaHJlYWRTaGFyZWRUaW1l
cik6CisgICAgICAgIFN0YXRpYyBnZXR0ZXIgZm9yIGEgTWFpblRocmVhZFNoYXJlZFRpbWVyIHNp
bmdsZXRvbi4KKworICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpUaHJlYWRUaW1lcnMp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzZXRTaGFyZWRUaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6OnRpbWVySGVhcCk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRUaW1lcnM6OnRpbWVyc1JlYWR5VG9GaXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZFRpbWVyczo6dXBkYXRlU2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
VGltZXJzOjpjb2xsZWN0RmlyaW5nVGltZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRp
bWVyczo6ZmlyZVRpbWVycyk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6OnNoYXJl
ZFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzaGFyZWRUaW1l
ckZpcmVkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpmaXJlVGlt
ZXJzSW5OZXN0ZWRFdmVudExvb3ApOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpm
aXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3BJbnRlcm5hbCk6CisgICAgICAgIFRocmVhZFRpbWVy
cyBpbXBsZW1lbnRhdGlvbi4gTW9zdCBvZiB0aGUgY29kZSBpcyBtb3ZlZCBmcm9tIHByZXZpb3Vz
IHN0YXRpYyBmdW5jdGlvbnMgb24gVGltZXJCYXNlLgorICAgICAgICBJbiBjYXNlIG9mIGEgc2lu
Z2xlIHRocmVhZCB0aGV5IHdlcmUgc3RhdGljLCBub3cgdGhleSBhcmUgcGVyLXRocmVhZCwgdG9n
ZXRoZXIgd2l0aCBUaHJlYWRUaW1lcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVySGVhcCk6
CisgICAgICAgIChXZWJDb3JlOjp0aW1lcnNSZWFkeVRvRmlyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaW1lckhlYXBFbGVtZW50OjpUaW1lckhlYXBFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbWVySGVhcEVsZW1lbnQ6OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAoV2ViQ29yZTo6
VGltZXJIZWFwRWxlbWVudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVh
cEl0ZXJhdG9yOjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFz
ZTo6VGltZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbWVyQmFzZTo6Y2hlY2tIZWFwSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJC
YXNlOjpoZWFwRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6aGVhcERlbGV0
ZU1pbik6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmhlYXBJbnNlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGltZXJCYXNlOjpoZWFwUG9wTWluKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bWVyQmFzZTo6c2V0TmV4dEZpcmVUaW1lKToKKyAgICAgICAgTm93IGluc3RlYWQgb2Ygc3RhdGlj
IHRpbWVyIGhlYXAgdGhlc2UgdXNlIGFjY2Vzc29yIGZ1bmN0aW9ucyB0aGF0IHB1bGwgdGhyZWFk
LXNwZWNpZmljIGhlYXAgaW5zdGFuY2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaW1lci5oOgor
CiAyMDA5LTAxLTIzICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlIGxheWVyKCkgaW50byBSZW5kZXJCb3ggYW5kIG1ha2UgaXQgbm9uLXZpcnR1YWwuICBNb3Zl
IGFsbCBvZiB0aGUgc2Nyb2xsaW5nIGZ1bmN0aW9ucyBmcm9tIFJlbmRlck9iamVjdApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMDVkY2E3MC4uNTkz
OTc1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVy
LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBA
IC00MjIsNyArNDIyLDcgQEAgdm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlSWZOZWVk
ZWQoUGFnZSogcGFnZSkKIAogICAgIHNldEphdmFTY3JpcHRQYXVzZWQocGFnZS0+Z3JvdXAoKSwg
dHJ1ZSk7CiAKLSAgICBUaW1lckJhc2U6OmZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwor
ICAgIFRocmVhZFRpbWVyczo6ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CiAKICAgICBF
dmVudExvb3AgbG9vcDsKICAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvV2ViQ29yZS9wYWdlL0No
cm9tZS5jcHAKaW5kZXggNDY5OGFhNS4uZDA3ODU3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTE4NCw3ICsxODQs
NyBAQCB2b2lkIENocm9tZTo6cnVuTW9kYWwoKSBjb25zdAogICAgIC8vIGluIGEgd2F5IHRoYXQg
Y291bGQgaW50ZXJhY3Qgd2l0aCB0aGlzIHZpZXcuCiAgICAgUGFnZUdyb3VwTG9hZERlZmVycmVy
IGRlZmVycmVyKG1fcGFnZSwgZmFsc2UpOwogCi0gICAgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5O
ZXN0ZWRFdmVudExvb3AoKTsKKyAgICBUaHJlYWRUaW1lcnM6OmZpcmVUaW1lcnNJbk5lc3RlZEV2
ZW50TG9vcCgpOwogICAgIG1fY2xpZW50LT5ydW5Nb2RhbCgpOwogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRp
bWVyLmgKaW5kZXggNGNjOTBhMi4uYzdkYzZmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRUaW1lci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaApAQCAt
MjgsMTcgKzI4LDQ1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIC8vIFNpbmdsZSB0
aW1lciwgc2hhcmVkIHRvIGltcGxlbWVudCBhbGwgdGhlIHRpbWVycyBtYW5hZ2VkIGJ5IHRoZSBU
aW1lciBjbGFzcy4KKyAgICAvLyBFYWNoIHRocmVhZCBoYXMgaXRzIG93biBzaW5nbGUgaW5zdGFu
Y2Ugb2Ygc2hhcmVkIHRpbWVyLCB3aGljaCBpbXBsZW1lbnRzIHRoaXMgaW50ZXJmYWNlLgorICAg
IC8vIFRoaXMgaW5zdGFuY2UgaXMgc2hhcmVkIGJ5IGFsbCB0aW1lcnMgaW4gdGhlIHRocmVhZC4K
ICAgICAvLyBOb3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseTsgdXNlIHRoZSBUaW1lciBj
bGFzcyBpbnN0ZWFkLgorICAgIGNsYXNzIFNoYXJlZFRpbWVyIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHZpcnR1YWwgflNoYXJlZFRpbWVyKCkge30KKyAgICAgICAgdmlydHVhbCB2b2lkIHNldEZp
cmVkRnVuY3Rpb24odm9pZCAoKikoKSkgPSAwOworICAgICAgICAvLyBUaGUgZmlyZSB0aW1lIGlz
IHJlbGF0aXZlIHRvIHRoZSBjbGFzc2ljIFBPU0lYIGVwb2NoIG9mIEphbnVhcnkgMSwgMTk3MCwK
KyAgICAgICAgLy8gYXMgdGhlIHJlc3VsdCBvZiBjdXJyZW50VGltZSgpIGlzLgorICAgICAgICB2
aXJ0dWFsIHZvaWQgc2V0RmlyZVRpbWUoZG91YmxlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCkgPSAwOworICAgIH07CiAKLSAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbih2b2lkICgqKSgpKTsKLQotICAgIC8vIFRoZSBmaXJlIHRpbWUgaXMgcmVsYXRpdmUgdG8g
dGhlIGNsYXNzaWMgUE9TSVggZXBvY2ggb2YgSmFudWFyeSAxLCAxOTcwLAotICAgIC8vIGFzIHRo
ZSByZXN1bHQgb2YgY3VycmVudFRpbWUoKSBpcy4KIAotICAgIHZvaWQgc2V0U2hhcmVkVGltZXJG
aXJlVGltZShkb3VibGUgZmlyZVRpbWUpOworICAgIC8vIEltcGxlbWVudGVkIGJ5IHBvcnQgKHNp
bmNlIGl0IHByb3ZpZGVzIHRoZSBydW4gbG9vcCBmb3IgdGhlIG1haW4gdGhyZWFkKS4KKyAgICAv
LyBGSVhNRTogbWFrZSBwb3J0cyBpbXBsZW1lbnQgTWFpblRocmVhZFNoYXJlZFRpbWVyIGRpcmVj
dGx5IGluc3RlYWQuCisgICAgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAo
KikoKSk7CisgICAgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVUaW1lKGRvdWJsZSk7CiAgICAgdm9p
ZCBzdG9wU2hhcmVkVGltZXIoKTsKIAotfQorICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIFNoYXJl
ZFRpbWVyIGZvciB0aGUgbWFpbiB0aHJlYWQuCisgICAgY2xhc3MgTWFpblRocmVhZFNoYXJlZFRp
bWVyIDogcHVibGljIFNoYXJlZFRpbWVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwg
dm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmdW5jdGlvbikoKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKGZ1bmN0aW9uKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldEZpcmVUaW1lKGRvdWJsZSBmaXJl
VGltZSkKKyAgICAgICAgeworICAgICAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlVGltZShmaXJl
VGltZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkK
KyAgICAgICAgeworICAgICAgICAgICAgc3RvcFNoYXJlZFRpbWVyKCk7CisgICAgICAgIH0KKyAg
ICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIFNoYXJl
ZFRpbWVyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCmluZGV4IDliZjBiZjIu
LmYzM2IxNzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIlN0cmluZ0ltcGwu
aCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiAj
aWYgVVNFKElDVV9VTklDT0RFKQpAQCAtNzAsNiArNzEsNyBAQCBUaHJlYWRHbG9iYWxEYXRhOjpU
aHJlYWRHbG9iYWxEYXRhKCkKICAgICA6IG1fZW1wdHlTdHJpbmcobmV3IFN0cmluZ0ltcGwpCiAg
ICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKG5ldyBIYXNoU2V0PFN0cmluZ0ltcGwqPikKICAgICAs
IG1fZXZlbnROYW1lcyhuZXcgRXZlbnROYW1lcykKKyAgICAsIG1fdGhyZWFkVGltZXJzKG5ldyBU
aHJlYWRUaW1lcnMpCiAjaWYgVVNFKElDVV9VTklDT0RFKQogICAgICwgbV9jYWNoZWRDb252ZXJ0
ZXJJQ1UobmV3IElDVUNvbnZlcnRlcldyYXBwZXIpCiAjZW5kaWYKQEAgLTkwLDYgKzkyLDcgQEAg
VGhyZWFkR2xvYmFsRGF0YTo6flRocmVhZEdsb2JhbERhdGEoKQogCiAgICAgZGVsZXRlIG1fZXZl
bnROYW1lczsKICAgICBkZWxldGUgbV9hdG9taWNTdHJpbmdUYWJsZTsKKyAgICBkZWxldGUgbV90
aHJlYWRUaW1lcnM7CiAKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgfHwgbV9lbXB0eVN0cmlu
Zy0+aGFzT25lUmVmKCkpOyAvLyBXZSBpbnRlbnRpb25hbGx5IGRvbid0IGNsZWFuIHVwIHN0YXRp
YyBkYXRhIG9uIGFwcGxpY2F0aW9uIHF1aXQsIHNvIHRoZXJlIHdpbGwgYmUgbWFueSBzdHJpbmdz
IHJlbWFpbmluZyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgZGVsZXRlIG1fZW1wdHlTdHJpbmc7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCmluZGV4IDE3NjM3YWEuLjdmYWNhMzYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBFdmVudE5hbWVzOwogICAgIHN0cnVjdCBJQ1VDb252ZXJ0
ZXJXcmFwcGVyOwogICAgIHN0cnVjdCBURUNDb252ZXJ0ZXJXcmFwcGVyOworICAgIGNsYXNzIFRo
cmVhZFRpbWVyczsKIAogICAgIGNsYXNzIFRocmVhZEdsb2JhbERhdGEgOiBOb25jb3B5YWJsZSB7
CiAgICAgcHVibGljOgpAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIEV2ZW50TmFtZXMmIGV2ZW50TmFtZXMoKSB7IHJldHVybiAqbV9ldmVudE5hbWVzOyB9CiAg
ICAgICAgIFN0cmluZ0ltcGwqIGVtcHR5U3RyaW5nKCkgeyByZXR1cm4gbV9lbXB0eVN0cmluZzsg
fQogICAgICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiYgYXRvbWljU3RyaW5nVGFibGUoKSB7IHJl
dHVybiAqbV9hdG9taWNTdHJpbmdUYWJsZTsgfQorICAgICAgICBUaHJlYWRUaW1lcnMmIHRocmVh
ZFRpbWVycygpIHsgcmV0dXJuICptX3RocmVhZFRpbWVyczsgfQogCiAjaWYgVVNFKElDVV9VTklD
T0RFKQogICAgICAgICBJQ1VDb252ZXJ0ZXJXcmFwcGVyJiBjYWNoZWRDb252ZXJ0ZXJJQ1UoKSB7
IHJldHVybiAqbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7IH0KQEAgLTU4LDYgKzYwLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmdJbXBsKiBtX2VtcHR5U3RyaW5nOwogICAgICAg
ICBIYXNoU2V0PFN0cmluZ0ltcGwqPiogbV9hdG9taWNTdHJpbmdUYWJsZTsKICAgICAgICAgRXZl
bnROYW1lcyogbV9ldmVudE5hbWVzOworICAgICAgICBUaHJlYWRUaW1lcnMqIG1fdGhyZWFkVGlt
ZXJzOwogCiAjaWYgVVNFKElDVV9VTklDT0RFKQogICAgICAgICBJQ1VDb252ZXJ0ZXJXcmFwcGVy
KiBtX2NhY2hlZENvbnZlcnRlcklDVTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vVGlt
ZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKaW5kZXggMDA3MjE3ZC4uMTMyN2Jl
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9UaW1lci5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNywxMSArMjgsMTMgQEAKICNpbmNsdWRlICJUaW1lci5oIgog
CiAjaW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKKyNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgi
CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPG1hdGgu
aD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC00MywyMCArNDYsMTYxIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIFRoZW4gd2Ugc2V0IGEgc2luZ2xlIHNoYXJlZCBzeXN0ZW0gdGltZXIgdG8g
ZmlyZSBhdCB0aGF0IHRpbWUuCiAvLwogLy8gV2hlbiBhIHRpbWVyJ3MgIm5leHQgZmlyZSB0aW1l
IiBjaGFuZ2VzLCB3ZSBuZWVkIHRvIG1vdmUgaXQgYXJvdW5kIGluIHRoZSBwcmlvcml0eSBxdWV1
ZS4KKy8vIAorLy8gVGltZXJzIGFyZSBjcmVhdGVkLCBzdGFydGVkIGFuZCBmaXJlZCBvbiB0aGUg
c2FtZSB0aHJlYWQsIGFuZCBlYWNoIHRocmVhZCBoYXMgaXRzIG93biBUaHJlYWRUaW1lcnMKKy8v
IGNvcHkgdG8ga2VlcCB0aGUgaGVhcCBhbmQgYSBzZXQgb2YgY3VycmVudGx5IGZpcmluZyB0aW1l
cnMuCiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0KK3N0YXRpYyBNYWluVGhyZWFkU2hhcmVkVGltZXIq
IG1haW5UaHJlYWRTaGFyZWRUaW1lcigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWRTaGFyZWRU
aW1lciogdGltZXIgPSAwOworICAgIGlmICghdGltZXIpCisgICAgICAgIHRpbWVyID0gbmV3IE1h
aW5UaHJlYWRTaGFyZWRUaW1lcigpOworICAgIHJldHVybiB0aW1lcjsKK30KIAotc3RhdGljIFZl
Y3RvcjxUaW1lckJhc2UqPiogdGltZXJIZWFwOwotc3RhdGljIEhhc2hTZXQ8Y29uc3QgVGltZXJC
YXNlKj4qIHRpbWVyc1JlYWR5VG9GaXJlOworVGhyZWFkVGltZXJzOjpUaHJlYWRUaW1lcnMoKQor
ICAgIDogbV90aW1lcnNSZWFkeVRvRmlyZSgwKQorICAgICwgbV9zaGFyZWRUaW1lcigwKQorewor
ICAgIGlmIChpc01haW5UaHJlYWQoKSkKKyAgICAgICAgc2V0U2hhcmVkVGltZXIobWFpblRocmVh
ZFNoYXJlZFRpbWVyKCkpOworfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tCisvLyBBIHdvcmtlciB0
aHJlYWQgbWF5IGluaXRpYWxpemUgU2hhcmVkVGltZXIgYWZ0ZXIgc29tZSB0aW1lcnMgYXJlIGNy
ZWF0ZWQuCisvLyBBbHNvLCBTaGFyZWRUaW1lciBjYW4gYmUgcmVwbGFjZWQgd2l0aCAwIGJlZm9y
ZSBhbGwgdGltZXJzIGFyZSBkZXN0cnVjdGVkLgordm9pZCBUaHJlYWRUaW1lcnM6OnNldFNoYXJl
ZFRpbWVyKFNoYXJlZFRpbWVyKiBzaGFyZWRUaW1lcikKK3sKKyAgICBpZiAobV9zaGFyZWRUaW1l
cikgeworICAgICAgICBtX3NoYXJlZFRpbWVyLT5zZXRGaXJlZEZ1bmN0aW9uKDApOworICAgICAg
ICBtX3NoYXJlZFRpbWVyLT5zdG9wKCk7CisgICAgfQorICAgIAorICAgIG1fc2hhcmVkVGltZXIg
PSBzaGFyZWRUaW1lcjsKKyAgICAKKyAgICBpZiAoc2hhcmVkVGltZXIpIHsKKyAgICAgICAgbV9z
aGFyZWRUaW1lci0+c2V0RmlyZWRGdW5jdGlvbihUaHJlYWRUaW1lcnM6OnNoYXJlZFRpbWVyRmly
ZWQpOworICAgICAgICB1cGRhdGVTaGFyZWRUaW1lcigpOworICAgIH0KK30KKworVmVjdG9yPFRp
bWVyQmFzZSo+KiBUaHJlYWRUaW1lcnM6OnRpbWVySGVhcCgpCit7CisgICAgcmV0dXJuICZtX3Rp
bWVySGVhcDsKK30KKworSGFzaFNldDxjb25zdCBUaW1lckJhc2UqPiogVGhyZWFkVGltZXJzOjp0
aW1lcnNSZWFkeVRvRmlyZSgpCit7CisgICAgcmV0dXJuIG1fdGltZXJzUmVhZHlUb0ZpcmU7Cit9
CisKK3ZvaWQgVGhyZWFkVGltZXJzOjp1cGRhdGVTaGFyZWRUaW1lcigpCit7CisgICAgaWYgKCFt
X3NoYXJlZFRpbWVyKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIGlmIChtX3RpbWVy
c1JlYWR5VG9GaXJlIHx8IG1fdGltZXJIZWFwLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zaGFyZWRU
aW1lci0+c3RvcCgpOworICAgIGVsc2UKKyAgICAgICAgbV9zaGFyZWRUaW1lci0+c2V0RmlyZVRp
bWUobV90aW1lckhlYXAuZmlyc3QoKS0+bV9uZXh0RmlyZVRpbWUpOworfQorCisKK3ZvaWQgVGhy
ZWFkVGltZXJzOjpjb2xsZWN0RmlyaW5nVGltZXJzKGRvdWJsZSBmaXJlVGltZSwgVmVjdG9yPFRp
bWVyQmFzZSo+JiBmaXJpbmdUaW1lcnMpCit7CisgICAgd2hpbGUgKCFtX3RpbWVySGVhcC5pc0Vt
cHR5KCkgJiYgbV90aW1lckhlYXAuZmlyc3QoKS0+bV9uZXh0RmlyZVRpbWUgPD0gZmlyZVRpbWUp
IHsKKyAgICAgICAgVGltZXJCYXNlKiB0aW1lciA9IG1fdGltZXJIZWFwLmZpcnN0KCk7CisgICAg
ICAgIGZpcmluZ1RpbWVycy5hcHBlbmQodGltZXIpOworICAgICAgICBtX3RpbWVyc1JlYWR5VG9G
aXJlLT5hZGQodGltZXIpOworICAgICAgICB0aW1lci0+bV9uZXh0RmlyZVRpbWUgPSAwOworICAg
ICAgICB0aW1lci0+aGVhcERlbGV0ZU1pbigpOworICAgIH0KK30KKwordm9pZCBUaHJlYWRUaW1l
cnM6OmZpcmVUaW1lcnMoZG91YmxlIGZpcmVUaW1lLCBjb25zdCBWZWN0b3I8VGltZXJCYXNlKj4m
IGZpcmluZ1RpbWVycykKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IGZpcmluZ1RpbWVycy5zaXplKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gc2l6ZTsgKytpKSB7CisgICAgICAgIFRpbWVy
QmFzZSogdGltZXIgPSBmaXJpbmdUaW1lcnNbaV07CisKKyAgICAgICAgLy8gSWYgbm90IGluIHRo
ZSBzZXQsIHRoaXMgdGltZXIgaGFzIGJlZW4gZGVsZXRlZCBvciByZS1zY2hlZHVsZWQgaW4gYW5v
dGhlciB0aW1lcidzIGZpcmVkIGZ1bmN0aW9uLgorICAgICAgICAvLyBTbyBlaXRoZXIgd2UgZG9u
J3Qgd2FudCB0byBmaXJlIGl0IGF0IGFsbCBvciB3ZSB3aWxsIGZpcmUgaXQgbmV4dCB0aW1lIHRo
ZSBzaGFyZWQgdGltZXIgZ29lcyBvZmYuCisgICAgICAgIC8vIEl0IG1pZ2h0IGV2ZW4gaGF2ZSBi
ZWVuIGRlbGV0ZWQ7IHRoYXQncyBPSyBiZWNhdXNlIHdlIHdvbid0IGRvIGFueXRoaW5nIGVsc2Ug
d2l0aCB0aGUgcG9pbnRlci4KKyAgICAgICAgaWYgKCFtX3RpbWVyc1JlYWR5VG9GaXJlLT5jb250
YWlucyh0aW1lcikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBTZXR0aW5n
IHRoZSBuZXh0IGZpcmUgdGltZSBoYXMgYSBzaWRlIGVmZmVjdCBvZiByZW1vdmluZyB0aGUgdGlt
ZXIgZnJvbSB0aGUgZmlyaW5nIHRpbWVycyBzZXQuCisgICAgICAgIGRvdWJsZSBpbnRlcnZhbCA9
IHRpbWVyLT5yZXBlYXRJbnRlcnZhbCgpOworICAgICAgICB0aW1lci0+c2V0TmV4dEZpcmVUaW1l
KGludGVydmFsID8gZmlyZVRpbWUgKyBpbnRlcnZhbCA6IDApOworCisgICAgICAgIC8vIE9uY2Ug
dGhlIHRpbWVyIGhhcyBiZWVuIGZpcmVkLCBpdCBtYXkgYmUgZGVsZXRlZCwgc28gZG8gbm90aGlu
ZyBlbHNlIHdpdGggaXQgYWZ0ZXIgdGhpcyBwb2ludC4KKyAgICAgICAgdGltZXItPmZpcmVkKCk7
CisKKyAgICAgICAgLy8gQ2F0Y2ggdGhlIGNhc2Ugd2hlcmUgdGhlIHRpbWVyIGFza2VkIHRpbWVy
cyB0byBmaXJlIGluIGEgbmVzdGVkIGV2ZW50IGxvb3AuCisgICAgICAgIGlmICghbV90aW1lcnNS
ZWFkeVRvRmlyZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBUaHJlYWRU
aW1lcnM6OnNoYXJlZFRpbWVyRmlyZWQoKQoreworICAgIC8vIFJlZGlyZWN0IHRvIG5vbi1zdGF0
aWMgbWV0aG9kLgorICAgIHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMoKS5zaGFyZWRU
aW1lckZpcmVkSW50ZXJuYWwoKTsKK30KKwordm9pZCBUaHJlYWRUaW1lcnM6OnNoYXJlZFRpbWVy
RmlyZWRJbnRlcm5hbCgpCit7CisgICAgLy8gRG8gYSByZS1lbnRyYW5jeSBjaGVjay4KKyAgICBp
ZiAobV90aW1lcnNSZWFkeVRvRmlyZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZG91YmxlIGZp
cmVUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBWZWN0b3I8VGltZXJCYXNlKj4gZmlyaW5nVGlt
ZXJzOworICAgIEhhc2hTZXQ8Y29uc3QgVGltZXJCYXNlKj4gZmlyaW5nVGltZXJzU2V0OworCisg
ICAgbV90aW1lcnNSZWFkeVRvRmlyZSA9ICZmaXJpbmdUaW1lcnNTZXQ7CisKKyAgICBjb2xsZWN0
RmlyaW5nVGltZXJzKGZpcmVUaW1lLCBmaXJpbmdUaW1lcnMpOworICAgIGZpcmVUaW1lcnMoZmly
ZVRpbWUsIGZpcmluZ1RpbWVycyk7CisKKyAgICBtX3RpbWVyc1JlYWR5VG9GaXJlID0gMDsKKwor
ICAgIHVwZGF0ZVNoYXJlZFRpbWVyKCk7Cit9CisKK3ZvaWQgVGhyZWFkVGltZXJzOjpmaXJlVGlt
ZXJzSW5OZXN0ZWRFdmVudExvb3AoKQoreworICAgIC8vIFJlZGlyZWN0IHRvIG5vbi1zdGF0aWMg
bWV0aG9kLgorICAgIHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMoKS5maXJlVGltZXJz
SW5OZXN0ZWRFdmVudExvb3BJbnRlcm5hbCgpOworfQorCit2b2lkIFRocmVhZFRpbWVyczo6Zmly
ZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wSW50ZXJuYWwoKQoreworICAgIG1fdGltZXJzUmVhZHlU
b0ZpcmUgPSAwOworICAgIHVwZGF0ZVNoYXJlZFRpbWVyKCk7Cit9CisKKy8vIFNpbXBsZSBhY2Nl
c3NvcnMgdG8gdHRocmVhZC1zcGVjaWZpYyBkYXRhLgorc3RhdGljIFZlY3RvcjxUaW1lckJhc2Uq
PiogdGltZXJIZWFwKCkKK3sKKyAgICByZXR1cm4gdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRp
bWVycygpLnRpbWVySGVhcCgpOworfQorCitzdGF0aWMgSGFzaFNldDxjb25zdCBUaW1lckJhc2Uq
PiogdGltZXJzUmVhZHlUb0ZpcmUoKQoreworICAgIHJldHVybiB0aHJlYWRHbG9iYWxEYXRhKCku
dGhyZWFkVGltZXJzKCkudGltZXJzUmVhZHlUb0ZpcmUoKTsKK30KIAogLy8gQ2xhc3MgdG8gcmVw
cmVzZW50IGVsZW1lbnRzIGluIHRoZSBoZWFwIHdoZW4gY2FsbGluZyB0aGUgc3RhbmRhcmQgbGli
cmFyeSBoZWFwIGFsZ29yaXRobXMuCiAvLyBNYWludGFpbnMgdGhlIG1faGVhcEluZGV4IHZhbHVl
IGluIHRoZSB0aW1lcnMgdGhlbXNlbHZlcywgd2hpY2ggYWxsb3dzIHVzIHRvIGRvIGVmZmljaWVu
dAogLy8gbW9kaWZpY2F0aW9uIG9mIHRoZSBoZWFwLgogY2xhc3MgVGltZXJIZWFwRWxlbWVudCB7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVGltZXJIZWFwRWxlbWVudChpbnQgaSkgOiBtX2luZGV4
KGkpLCBtX3RpbWVyKCgqdGltZXJIZWFwKVttX2luZGV4XSkgeyBjaGVja0NvbnNpc3RlbmN5KCk7
IH0KKyAgICBleHBsaWNpdCBUaW1lckhlYXBFbGVtZW50KGludCBpKQorICAgICAgICA6IG1faW5k
ZXgoaSkKKyAgICAgICAgLCBtX3RpbWVyKCgqdGltZXJIZWFwKCkpW21faW5kZXhdKQorICAgIHsg
CisgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsgCisgICAgfQogCiAgICAgVGltZXJIZWFwRWxl
bWVudChjb25zdCBUaW1lckhlYXBFbGVtZW50Jik7CiAgICAgVGltZXJIZWFwRWxlbWVudCYgb3Bl
cmF0b3I9KGNvbnN0IFRpbWVySGVhcEVsZW1lbnQmKTsKQEAgLTY2LDcgKzIxMCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKG1faW5kZXggPj0gMCk7Ci0gICAgICAgIEFTU0VSVChtX2luZGV4IDwgKHRpbWVySGVhcCA/
IHN0YXRpY19jYXN0PGludD4odGltZXJIZWFwLT5zaXplKCkpIDogMCkpOworICAgICAgICBBU1NF
UlQobV9pbmRleCA8ICh0aW1lckhlYXAoKSA/IHN0YXRpY19jYXN0PGludD4odGltZXJIZWFwKCkt
PnNpemUoKSkgOiAwKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtODcsNyArMjMxLDcgQEAgaW5s
aW5lIFRpbWVySGVhcEVsZW1lbnQmIFRpbWVySGVhcEVsZW1lbnQ6Om9wZXJhdG9yPShjb25zdCBU
aW1lckhlYXBFbGVtZW50JiBvKQogICAgIG1fdGltZXIgPSB0OwogICAgIGlmIChtX2luZGV4ICE9
IC0xKSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKLSAgICAgICAgKCp0aW1lckhlYXAp
W21faW5kZXhdID0gdDsKKyAgICAgICAgKCp0aW1lckhlYXAoKSlbbV9pbmRleF0gPSB0OwogICAg
ICAgICB0LT5tX2hlYXBJbmRleCA9IG1faW5kZXg7CiAgICAgfQogICAgIHJldHVybiAqdGhpczsK
QEAgLTEzNCw3ICsyNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGlu
dCBvZmZzZXQgPSAwKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChvZmZzZXQs
IG1faW5kZXggKyBvZmZzZXQgPj0gMCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2Zmc2V0LCBt
X2luZGV4ICsgb2Zmc2V0IDw9ICh0aW1lckhlYXAgPyBzdGF0aWNfY2FzdDxpbnQ+KHRpbWVySGVh
cC0+c2l6ZSgpKSA6IDApKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChvZmZzZXQsIG1faW5kZXgg
KyBvZmZzZXQgPD0gKHRpbWVySGVhcCgpID8gc3RhdGljX2Nhc3Q8aW50Pih0aW1lckhlYXAoKS0+
c2l6ZSgpKSA6IDApKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNTMsMjcgKzI5NywxNiBAQCBp
bmxpbmUgaW50IG9wZXJhdG9yLShUaW1lckhlYXBJdGVyYXRvciBhLCBUaW1lckhlYXBJdGVyYXRv
ciBiKSB7IHJldHVybiBhLmluZGV4KAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgdXBk
YXRlU2hhcmVkVGltZXIoKQotewotICAgIGlmICh0aW1lcnNSZWFkeVRvRmlyZSB8fCAhdGltZXJI
ZWFwIHx8IHRpbWVySGVhcC0+aXNFbXB0eSgpKQotICAgICAgICBzdG9wU2hhcmVkVGltZXIoKTsK
LSAgICBlbHNlCi0gICAgICAgIHNldFNoYXJlZFRpbWVyRmlyZVRpbWUodGltZXJIZWFwLT5maXJz
dCgpLT5tX25leHRGaXJlVGltZSk7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0KLQogVGltZXJC
YXNlOjpUaW1lckJhc2UoKQotICAgIDogbV9uZXh0RmlyZVRpbWUoMCksIG1fcmVwZWF0SW50ZXJ2
YWwoMCksIG1faGVhcEluZGV4KC0xKQorICAgIDogbV9uZXh0RmlyZVRpbWUoMCkKKyAgICAsIG1f
cmVwZWF0SW50ZXJ2YWwoMCkKKyAgICAsIG1faGVhcEluZGV4KC0xKQogewotICAgIC8vIFdlIG9u
bHkgbmVlZCB0byBkbyB0aGlzIG9uY2UsIGJ1dCBwcm9iYWJseSBub3Qgd29ydGggdHJ5aW5nIHRv
IG9wdGltaXplIGl0LgotICAgIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbihzaGFyZWRUaW1l
ckZpcmVkKTsKIH0KIAogVGltZXJCYXNlOjp+VGltZXJCYXNlKCkKIHsKICAgICBzdG9wKCk7Ci0K
ICAgICBBU1NFUlQoIWluSGVhcCgpKTsKIH0KIApAQCAtMTk1LDcgKzMyOCw3IEBAIHZvaWQgVGlt
ZXJCYXNlOjpzdG9wKCkKIAogYm9vbCBUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9uZXh0RmlyZVRpbWUgfHwgKHRpbWVyc1JlYWR5VG9GaXJlICYmIHRpbWVyc1Jl
YWR5VG9GaXJlLT5jb250YWlucyh0aGlzKSk7CisgICAgcmV0dXJuIG1fbmV4dEZpcmVUaW1lIHx8
ICh0aW1lcnNSZWFkeVRvRmlyZSgpICYmIHRpbWVyc1JlYWR5VG9GaXJlKCktPmNvbnRhaW5zKHRo
aXMpKTsKIH0KIAogZG91YmxlIFRpbWVyQmFzZTo6bmV4dEZpcmVJbnRlcnZhbCgpIGNvbnN0CkBA
IC0yMDksMTEgKzM0MiwxMCBAQCBkb3VibGUgVGltZXJCYXNlOjpuZXh0RmlyZUludGVydmFsKCkg
Y29uc3QKIAogaW5saW5lIHZvaWQgVGltZXJCYXNlOjpjaGVja0hlYXBJbmRleCgpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKHRpbWVySGVhcCk7Ci0gICAgQVNTRVJUKCF0aW1lckhlYXAtPmlzRW1wdHko
KSk7CisgICAgQVNTRVJUKCF0aW1lckhlYXAoKS0+aXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9o
ZWFwSW5kZXggPj0gMCk7Ci0gICAgQVNTRVJUKG1faGVhcEluZGV4IDwgc3RhdGljX2Nhc3Q8aW50
Pih0aW1lckhlYXAtPnNpemUoKSkpOwotICAgIEFTU0VSVCgoKnRpbWVySGVhcClbbV9oZWFwSW5k
ZXhdID09IHRoaXMpOworICAgIEFTU0VSVChtX2hlYXBJbmRleCA8IHN0YXRpY19jYXN0PGludD4o
dGltZXJIZWFwKCktPnNpemUoKSkpOworICAgIEFTU0VSVCgoKnRpbWVySGVhcCgpKVttX2hlYXBJ
bmRleF0gPT0gdGhpcyk7CiB9CiAKIGlubGluZSB2b2lkIFRpbWVyQmFzZTo6Y2hlY2tDb25zaXN0
ZW5jeSgpIGNvbnN0CkBAIC0yMzYsNyArMzY4LDcgQEAgaW5saW5lIHZvaWQgVGltZXJCYXNlOjpo
ZWFwRGVsZXRlKCkKIHsKICAgICBBU1NFUlQobV9uZXh0RmlyZVRpbWUgPT0gMCk7CiAgICAgaGVh
cFBvcCgpOwotICAgIHRpbWVySGVhcC0+cmVtb3ZlTGFzdCgpOworICAgIHRpbWVySGVhcCgpLT5y
ZW1vdmVMYXN0KCk7CiAgICAgbV9oZWFwSW5kZXggPSAtMTsKIH0KIApAQCAtMjQ0LDcgKzM3Niw3
IEBAIGlubGluZSB2b2lkIFRpbWVyQmFzZTo6aGVhcERlbGV0ZU1pbigpCiB7CiAgICAgQVNTRVJU
KG1fbmV4dEZpcmVUaW1lID09IDApOwogICAgIGhlYXBQb3BNaW4oKTsKLSAgICB0aW1lckhlYXAt
PnJlbW92ZUxhc3QoKTsKKyAgICB0aW1lckhlYXAoKS0+cmVtb3ZlTGFzdCgpOwogICAgIG1faGVh
cEluZGV4ID0gLTE7CiB9CiAKQEAgLTI1OCwxMCArMzkwLDggQEAgaW5saW5lIHZvaWQgVGltZXJC
YXNlOjpoZWFwSW5jcmVhc2VLZXkoKQogaW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFwSW5zZXJ0
KCkKIHsKICAgICBBU1NFUlQoIWluSGVhcCgpKTsKLSAgICBpZiAoIXRpbWVySGVhcCkKLSAgICAg
ICAgdGltZXJIZWFwID0gbmV3IFZlY3RvcjxUaW1lckJhc2UqPjsKLSAgICB0aW1lckhlYXAtPmFw
cGVuZCh0aGlzKTsKLSAgICBtX2hlYXBJbmRleCA9IHRpbWVySGVhcC0+c2l6ZSgpIC0gMTsKKyAg
ICB0aW1lckhlYXAoKS0+YXBwZW5kKHRoaXMpOworICAgIG1faGVhcEluZGV4ID0gdGltZXJIZWFw
KCktPnNpemUoKSAtIDE7CiAgICAgaGVhcERlY3JlYXNlS2V5KCk7CiB9CiAKQEAgLTI3NywxOSAr
NDA3LDE5IEBAIGlubGluZSB2b2lkIFRpbWVyQmFzZTo6aGVhcFBvcCgpCiAKIHZvaWQgVGltZXJC
YXNlOjpoZWFwUG9wTWluKCkKIHsKLSAgICBBU1NFUlQodGhpcyA9PSB0aW1lckhlYXAtPmZpcnN0
KCkpOworICAgIEFTU0VSVCh0aGlzID09IHRpbWVySGVhcCgpLT5maXJzdCgpKTsKICAgICBjaGVj
a0hlYXBJbmRleCgpOwotICAgIHBvcF9oZWFwKFRpbWVySGVhcEl0ZXJhdG9yKDApLCBUaW1lckhl
YXBJdGVyYXRvcih0aW1lckhlYXAtPnNpemUoKSkpOworICAgIHBvcF9oZWFwKFRpbWVySGVhcEl0
ZXJhdG9yKDApLCBUaW1lckhlYXBJdGVyYXRvcih0aW1lckhlYXAoKS0+c2l6ZSgpKSk7CiAgICAg
Y2hlY2tIZWFwSW5kZXgoKTsKLSAgICBBU1NFUlQodGhpcyA9PSB0aW1lckhlYXAtPmxhc3QoKSk7
CisgICAgQVNTRVJUKHRoaXMgPT0gdGltZXJIZWFwKCktPmxhc3QoKSk7CiB9CiAKIHZvaWQgVGlt
ZXJCYXNlOjpzZXROZXh0RmlyZVRpbWUoZG91YmxlIG5ld1RpbWUpCiB7CiAgICAgLy8gS2VlcCBo
ZWFwIHZhbGlkIHdoaWxlIGNoYW5naW5nIHRoZSBuZXh0LWZpcmUgdGltZS4KIAotICAgIGlmICh0
aW1lcnNSZWFkeVRvRmlyZSkKLSAgICAgICAgdGltZXJzUmVhZHlUb0ZpcmUtPnJlbW92ZSh0aGlz
KTsKKyAgICBpZiAodGltZXJzUmVhZHlUb0ZpcmUoKSkKKyAgICAgICAgdGltZXJzUmVhZHlUb0Zp
cmUoKS0+cmVtb3ZlKHRoaXMpOwogCiAgICAgZG91YmxlIG9sZFRpbWUgPSBtX25leHRGaXJlVGlt
ZTsKICAgICBpZiAob2xkVGltZSAhPSBuZXdUaW1lKSB7CkBAIC0zMTEsNzIgKzQ0MSwxMSBAQCB2
b2lkIFRpbWVyQmFzZTo6c2V0TmV4dEZpcmVUaW1lKGRvdWJsZSBuZXdUaW1lKQogICAgICAgICBi
b29sIGlzRmlyc3RUaW1lckluSGVhcCA9IG1faGVhcEluZGV4ID09IDA7CiAKICAgICAgICAgaWYg
KHdhc0ZpcnN0VGltZXJJbkhlYXAgfHwgaXNGaXJzdFRpbWVySW5IZWFwKQotICAgICAgICAgICAg
dXBkYXRlU2hhcmVkVGltZXIoKTsKKyAgICAgICAgICAgIHRocmVhZEdsb2JhbERhdGEoKS50aHJl
YWRUaW1lcnMoKS51cGRhdGVTaGFyZWRUaW1lcigpOwogICAgIH0KIAogICAgIGNoZWNrQ29uc2lz
dGVuY3koKTsKIH0KIAotdm9pZCBUaW1lckJhc2U6OmNvbGxlY3RGaXJpbmdUaW1lcnMoZG91Ymxl
IGZpcmVUaW1lLCBWZWN0b3I8VGltZXJCYXNlKj4mIGZpcmluZ1RpbWVycykKLXsKLSAgICB3aGls
ZSAoIXRpbWVySGVhcC0+aXNFbXB0eSgpICYmIHRpbWVySGVhcC0+Zmlyc3QoKS0+bV9uZXh0Rmly
ZVRpbWUgPD0gZmlyZVRpbWUpIHsKLSAgICAgICAgVGltZXJCYXNlKiB0aW1lciA9IHRpbWVySGVh
cC0+Zmlyc3QoKTsKLSAgICAgICAgZmlyaW5nVGltZXJzLmFwcGVuZCh0aW1lcik7Ci0gICAgICAg
IHRpbWVyc1JlYWR5VG9GaXJlLT5hZGQodGltZXIpOwotICAgICAgICB0aW1lci0+bV9uZXh0Rmly
ZVRpbWUgPSAwOwotICAgICAgICB0aW1lci0+aGVhcERlbGV0ZU1pbigpOwotICAgIH0KLX0KLQot
dm9pZCBUaW1lckJhc2U6OmZpcmVUaW1lcnMoZG91YmxlIGZpcmVUaW1lLCBjb25zdCBWZWN0b3I8
VGltZXJCYXNlKj4mIGZpcmluZ1RpbWVycykKLXsKLSAgICBpbnQgc2l6ZSA9IGZpcmluZ1RpbWVy
cy5zaXplKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gc2l6ZTsgKytpKSB7Ci0gICAgICAg
IFRpbWVyQmFzZSogdGltZXIgPSBmaXJpbmdUaW1lcnNbaV07Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSAgICAgICAgLy8gSWYgbm90IGluIHRoZSBzZXQsIHRoaXMgdGltZXIgaGFzIGJlZW4g
ZGVsZXRlZCBvciByZS1zY2hlZHVsZWQgaW4gYW5vdGhlciB0aW1lcidzIGZpcmVkIGZ1bmN0aW9u
LgotICAgICAgICAvLyBTbyBlaXRoZXIgd2UgZG9uJ3Qgd2FudCB0byBmaXJlIGl0IGF0IGFsbCBv
ciB3ZSB3aWxsIGZpcmUgaXQgbmV4dCB0aW1lIHRoZSBzaGFyZWQgdGltZXIgZ29lcyBvZmYuCi0g
ICAgICAgIC8vIEl0IG1pZ2h0IGV2ZW4gaGF2ZSBiZWVuIGRlbGV0ZWQ7IHRoYXQncyBPSyBiZWNh
dXNlIHdlIHdvbid0IGRvIGFueXRoaW5nIGVsc2Ugd2l0aCB0aGUgcG9pbnRlci4KLSAgICAgICAg
aWYgKCF0aW1lcnNSZWFkeVRvRmlyZS0+Y29udGFpbnModGltZXIpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgLy8gU2V0dGluZyB0aGUgbmV4dCBmaXJlIHRpbWUgaGFzIGEgc2lk
ZSBlZmZlY3Qgb2YgcmVtb3ZpbmcgdGhlIHRpbWVyIGZyb20gdGhlIGZpcmluZyB0aW1lcnMgc2V0
LgotICAgICAgICBkb3VibGUgaW50ZXJ2YWwgPSB0aW1lci0+cmVwZWF0SW50ZXJ2YWwoKTsKLSAg
ICAgICAgdGltZXItPnNldE5leHRGaXJlVGltZShpbnRlcnZhbCA/IGZpcmVUaW1lICsgaW50ZXJ2
YWwgOiAwKTsKLQotICAgICAgICAvLyBPbmNlIHRoZSB0aW1lciBoYXMgYmVlbiBmaXJlZCwgaXQg
bWF5IGJlIGRlbGV0ZWQsIHNvIGRvIG5vdGhpbmcgZWxzZSB3aXRoIGl0IGFmdGVyIHRoaXMgcG9p
bnQuCi0gICAgICAgIHRpbWVyLT5maXJlZCgpOwotCi0gICAgICAgIC8vIENhdGNoIHRoZSBjYXNl
IHdoZXJlIHRoZSB0aW1lciBhc2tlZCB0aW1lcnMgdG8gZmlyZSBpbiBhIG5lc3RlZCBldmVudCBs
b29wLgotICAgICAgICBpZiAoIXRpbWVyc1JlYWR5VG9GaXJlKQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgfQotfQotCi12b2lkIFRpbWVyQmFzZTo6c2hhcmVkVGltZXJGaXJlZCgpCi17Ci0gICAg
Ly8gRG8gYSByZS1lbnRyYW5jeSBjaGVjay4KLSAgICBpZiAodGltZXJzUmVhZHlUb0ZpcmUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGRvdWJsZSBmaXJlVGltZSA9IGN1cnJlbnRUaW1lKCk7Ci0g
ICAgVmVjdG9yPFRpbWVyQmFzZSo+IGZpcmluZ1RpbWVyczsKLSAgICBIYXNoU2V0PGNvbnN0IFRp
bWVyQmFzZSo+IGZpcmluZ1RpbWVyc1NldDsKLQotICAgIHRpbWVyc1JlYWR5VG9GaXJlID0gJmZp
cmluZ1RpbWVyc1NldDsKLQotICAgIGNvbGxlY3RGaXJpbmdUaW1lcnMoZmlyZVRpbWUsIGZpcmlu
Z1RpbWVycyk7Ci0gICAgZmlyZVRpbWVycyhmaXJlVGltZSwgZmlyaW5nVGltZXJzKTsKLQotICAg
IHRpbWVyc1JlYWR5VG9GaXJlID0gMDsKLQotICAgIHVwZGF0ZVNoYXJlZFRpbWVyKCk7Ci19Ci0K
LXZvaWQgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKQotewotICAgIHRp
bWVyc1JlYWR5VG9GaXJlID0gMDsKLSAgICB1cGRhdGVTaGFyZWRUaW1lcigpOwotfQotCi19CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL1Rp
bWVyLmgKaW5kZXggMGVlODZiMS4uZDA4NDA1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9UaW1lci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI4
LDcgQEAKICNkZWZpbmUgVGltZXJfaAogCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUzLDggKzU1LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBhdWdt
ZW50UmVwZWF0SW50ZXJ2YWwoZG91YmxlIGRlbHRhKSB7IHNldE5leHRGaXJlVGltZShtX25leHRG
aXJlVGltZSArIGRlbHRhKTsgbV9yZXBlYXRJbnRlcnZhbCArPSBkZWx0YTsgfQogCi0gICAgc3Rh
dGljIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7Ci0KIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGZpcmVkKCkgPSAwOwogCkBAIC03MywxNyArNzMsMTMgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGhlYXBQb3AoKTsKICAgICB2b2lkIGhlYXBQb3BNaW4oKTsKIAotICAgIHN0YXRp
YyB2b2lkIGNvbGxlY3RGaXJpbmdUaW1lcnMoZG91YmxlIGZpcmVUaW1lLCBWZWN0b3I8VGltZXJC
YXNlKj4mKTsKLSAgICBzdGF0aWMgdm9pZCBmaXJlVGltZXJzKGRvdWJsZSBmaXJlVGltZSwgY29u
c3QgVmVjdG9yPFRpbWVyQmFzZSo+Jik7Ci0gICAgc3RhdGljIHZvaWQgc2hhcmVkVGltZXJGaXJl
ZCgpOwotCiAgICAgZG91YmxlIG1fbmV4dEZpcmVUaW1lOyAvLyAwIGlmIGluYWN0aXZlCiAgICAg
ZG91YmxlIG1fcmVwZWF0SW50ZXJ2YWw7IC8vIDAgaWYgbm90IHJlcGVhdGluZwogICAgIGludCBt
X2hlYXBJbmRleDsgLy8gLTEgaWYgbm90IGluIGhlYXAKICAgICB1bnNpZ25lZCBtX2hlYXBJbnNl
cnRpb25PcmRlcjsgLy8gVXNlZCB0byBrZWVwIG9yZGVyIGFtb25nIGVxdWFsLWZpcmUtdGltZSB0
aW1lcnMKIAotICAgIGZyaWVuZCB2b2lkIHVwZGF0ZVNoYXJlZFRpbWVyKCk7CiAgICAgZnJpZW5k
IGNsYXNzIFRpbWVySGVhcEVsZW1lbnQ7CisgICAgZnJpZW5kIGNsYXNzIFRocmVhZFRpbWVyczsK
ICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcjwoY29uc3QgVGltZXJIZWFwRWxlbWVudCYsIGNvbnN0
IFRpbWVySGVhcEVsZW1lbnQmKTsKIH07CiAKQEAgLTEwMSw2ICs5NywzNSBAQCBwcml2YXRlOgog
ICAgIFRpbWVyRmlyZWRGdW5jdGlvbiBtX2Z1bmN0aW9uOwogfTsKIAorY2xhc3MgU2hhcmVkVGlt
ZXI7CisKKy8vIEEgY29sbGVjdGlvbiBvZiB0aW1lcnMgcGVyIHRocmVhZC4gS2VwdCBpbiBUaHJl
YWRHbG9iYWxEYXRhLgorY2xhc3MgVGhyZWFkVGltZXJzIDogTm9uY29weWFibGUgeworcHVibGlj
OgorICAgIFRocmVhZFRpbWVycygpOworCisgICAgLy8gT24gYSB0aHJlYWQgZGlmZmVyZW50IHRo
ZW4gbWFpbiwgd2Ugc2hvdWxkIHNldCB0aGUgdGhyZWFkJ3MgaW5zdGFuY2Ugb2YgdGhlIFNoYXJl
ZFRpbWVyLgorICAgIHZvaWQgc2V0U2hhcmVkVGltZXIoU2hhcmVkVGltZXIqKTsKKworICAgIFZl
Y3RvcjxUaW1lckJhc2UqPiogdGltZXJIZWFwKCk7CisgICAgSGFzaFNldDxjb25zdCBUaW1lckJh
c2UqPiogdGltZXJzUmVhZHlUb0ZpcmUoKTsKKworICAgIHZvaWQgdXBkYXRlU2hhcmVkVGltZXIo
KTsKKyAgICBzdGF0aWMgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKKworcHJp
dmF0ZToKKyAgICBzdGF0aWMgdm9pZCBzaGFyZWRUaW1lckZpcmVkKCk7CisKKyAgICB2b2lkIGZp
cmVUaW1lcnMoZG91YmxlIGZpcmVUaW1lLCBjb25zdCBWZWN0b3I8VGltZXJCYXNlKj4mKTsKKyAg
ICB2b2lkIGNvbGxlY3RGaXJpbmdUaW1lcnMoZG91YmxlIGZpcmVUaW1lLCBWZWN0b3I8VGltZXJC
YXNlKj4mKTsKKyAgICB2b2lkIHNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpOworICAgIHZvaWQg
ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wSW50ZXJuYWwoKTsKKworICAgIFZlY3RvcjxUaW1l
ckJhc2UqPiBtX3RpbWVySGVhcDsKKyAgICBIYXNoU2V0PGNvbnN0IFRpbWVyQmFzZSo+KiBtX3Rp
bWVyc1JlYWR5VG9GaXJlOyAvLyBUZW1wb3JhcmlseSBob2xkcyBhIHBvaW50ZXIgdG8gYSBzdGFj
ayBvYmplY3QuIE5vIG93bmVyc2hpcC4KKyAgICBTaGFyZWRUaW1lciogbV9zaGFyZWRUaW1lcjsg
Ly8gRXh0ZXJuYWwgb2JqZWN0LCBjYW4gYmUgYSBydW4gbG9vcCBvbiBhIHdvcmtlciB0aHJlYWQu
IE5vcm1hbGx5IHNldC9yZXNldCBieSB3b3JrZXIgdGhyZWFkLgorfTsKKwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
aW5kZXggOTRjOTcwOS4uMTM4YjY3YyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wMS0yMiAg
RG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM0ODgKKworICAgICAgICBNYWtlIFRpbWVyQmFzZSB0aHJlYWQtYXdhcmUg
KGZvciBXb3JrZXJzKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOiBV
c2VzIFRocmVhZFRpbWVycyBpbnN0ZWFkIG9mIFRpbWVyQmFzZSBzaW5jZSBtZXRob2QgbW92ZWQu
CisKIDIwMDktMDEtMjIgIEVyaWMgUm9tYW4gIDxlcm9tYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDlhZWMyNGIuLjY4YTg3MWIgMTAwNjQ0Ci0tLSBh
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTM2MCw3ICszNjAs
NyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgUwogICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT51
aURlbGVnYXRlKCZ1aSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBUaW1lckJhc2U6
OmZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOworICAgIFRocmVhZFRpbWVyczo6ZmlyZVRp
bWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CiAKICAgICBCU1RSIHJlc3VsdEJTVFIgPSAwOwogICAg
IGlmIChGQUlMRUQodWktPnJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQobV93
ZWJWaWV3LCBCU3RyaW5nKG1lc3NhZ2UpLCBCU3RyaW5nKGRlZmF1bHRWYWx1ZSksICZyZXN1bHRC
U1RSKSkpCg==
</data>
<flag name="review"
          id="12932"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27008</attachid>
            <date>2009-01-24 23:26:27 -0800</date>
            <delta_ts>2009-01-29 16:20:41 -0800</delta_ts>
            <desc>Review comments addressed.</desc>
            <filename>timers_v4.txt</filename>
            <type>text/plain</type>
            <size>32250</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzJlZjFjMC4uYWY4ZTZhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAwOS0wMS0yNCAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0ODgKKworICAgICAgICBNYWtlIFRpbWVyQmFzZSB0aHJlYWQtYXdhcmUgKGZvciBXb3JrZXJz
KS4KKyAgICAgICAgQWRkZWQgbmV3IGNsYXNzIFRocmVhZFRpbWVycyAtIGl0IGtlZXBzIGEgaGVh
cCBvZiBhbGwgdGltZXJzIGZvciBhIHRocmVhZCAocHJldmlvdXNseSBrZXB0IGluIGEgc3RhdGlj
IGdsb2JhbCkuCisgICAgICAgIFBvaW50ZXIgdG8gaW5zdGFuY2Ugb2YgVGhyZWFkVGltZXJzIGlz
IHN0b3JlZCBpbiBHbG9iYWxUaHJlYWREYXRhLgorICAgICAgICBNb3N0IHN0YXRpYyBtZXRob2Rz
IG9mIFRpbWVyQmFzZSB3ZW50IHRvIFRocmVhZFRpbWVycy4KKworICAgICAgICBUaGUgVGltZXJC
YXNlIGZ1bmN0aW9uYWxpdHkgZGlkIG5vdCBjaGFuZ2UgKGl0IG1haW50YWlucyB0aGUgdGltZXIg
aGVhcCB3aGljaCBjb21wdXRlcyB0aGUgbmVhcmVzdCBmaXJpbmcpLgorCisgICAgICAgIEFkZGVk
IG5ldyBhYnN0cmFjdCBjbGFzcyBTaGFyZWRUaW1lciwgc28gd29ya2VyIHRocmVhZHMgY2FuIHBy
b3ZpZGUgdGhlaXIgb3duIGltcGxlbWVudGF0aW9uICh3aWxsIGJlIGltcGxlbWVudGVkIG9uIFdv
cmtlclJ1bkxvb3ApLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2Vi
Q29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS5zY29uczoKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICBBZGRlZCBu
ZXcgVGhyZWFkVGltZXJzLmNwcCB0byBidWlsZCBmaWxlcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZFRpbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lcjo6flNoYXJlZFRp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZp
cmVUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCk6
CisgICAgICAgIEFkZGVkIGFic3RyYWN0IFNoYXJlZFRpbWVyIGFuZCBNYWluVGhyZWFkU2hhcmVk
VGltZXIgd2hpY2ggcmVkaXJlY3RzIHRvIHRoZSBleGlzdGluZyBwb3J0LXN1cHBsaWVkIGZ1bmN0
aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjp+VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
R2xvYmFsRGF0YTo6dGhyZWFkVGltZXJzKToKKyAgICAgICAgQWRkZWQgVGhyZWFkVGltZXJzIHRv
IFRocmVhZEdsb2JhbERhdGEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1haW5UaHJlYWRTaGFyZWRUaW1lcik6CisgICAg
ICAgIFN0YXRpYyBnZXR0ZXIgZm9yIGEgTWFpblRocmVhZFNoYXJlZFRpbWVyIHNpbmdsZXRvbi4K
KworICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpUaHJlYWRUaW1lcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzZXRTaGFyZWRUaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRUaW1lcnM6OnVwZGF0ZVNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZFRpbWVyczo6Y29sbGVjdEZpcmluZ1RpbWVycyk6CisgICAgICAgIChXZWJDb3JlOjpU
aHJlYWRUaW1lcnM6OmZpcmVUaW1lcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJz
OjpzaGFyZWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVyczo6c2hh
cmVkVGltZXJGaXJlZEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVyczo6
ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKToKKyAgICAgICAgVGhyZWFkVGltZXJzIGltcGxl
bWVudGF0aW9uLiBNb3N0IG9mIHRoZSBjb2RlIGlzIG1vdmVkIGZyb20gcHJldmlvdXMgc3RhdGlj
IGZ1bmN0aW9ucyBvbiBUaW1lckJhc2UuCisgICAgICAgIE5lZWQgYSBuZXcgY2xhc3Mgc28gZWFj
aCB0aHJlYWQgbWF5IGdldCB0cyBvd24gY29weSBvZiB0aGUgdGltZXIgaGVhcC4KKworICAgICAg
ICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZFRpbWVyczo6dGltZXJIZWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVyczo6
dGltZXJzUmVhZHlUb0ZpcmUpOgorCisgICAgICAgICogcGxhdGZvcm0vVGltZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dGltZXJIZWFwKToKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyc1JlYWR5
VG9GaXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcEVsZW1lbnQ6OlRpbWVySGVhcEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwRWxlbWVudDo6Y2hlY2tDb25zaXN0
ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckhlYXBFbGVtZW50OjpvcGVyYXRvcj0pOgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwSXRlcmF0b3I6OmNoZWNrQ29uc2lzdGVuY3kpOgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpUaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VGltZXJCYXNlOjp+VGltZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6
aXNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpjaGVja0hlYXBJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmhlYXBEZWxldGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGltZXJCYXNlOjpoZWFwRGVsZXRlTWluKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVy
QmFzZTo6aGVhcEluc2VydCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmhlYXBQb3BN
aW4pOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpzZXROZXh0RmlyZVRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3ApOgor
ICAgICAgICBOb3cgaW5zdGVhZCBvZiBzdGF0aWMgdGltZXIgaGVhcCB0aGVzZSB1c2UgYWNjZXNz
b3IgZnVuY3Rpb25zIHRoYXQgcHVsbCB0aHJlYWQtc3BlY2lmaWMgaGVhcCBpbnN0YW5jZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmg6CisgICAgICAgIHN0YXRpYyBtZXRob2RzIG1vdmVk
IHRvIFRocmVhZFRpbWVycy4KKwogMjAwOS0wMS0yMyAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBs
ZS5jb20+CiAKICAgICAgICAgTW92ZSBsYXllcigpIGludG8gUmVuZGVyQm94IGFuZCBtYWtlIGl0
IG5vbi12aXJ0dWFsLiAgTW92ZSBhbGwgb2YgdGhlIHNjcm9sbGluZyBmdW5jdGlvbnMgZnJvbSBS
ZW5kZXJPYmplY3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDJiMmUzMjIuLmViNGJhM2UgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTI2OSw2
ICsxMjY5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL1RocmVh
ZENoZWNrLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAgXAogCVdl
YkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL1Ro
cmVhZFRpbWVycy5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmggXAogCVdl
YkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmggXAog
CVdlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDk4YWNmMWUuLjA4Mzc3ODEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpA
QCAtOTM1LDYgKzkzNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL3RleHQvVGV4dEVu
Y29kaW5nUmVnaXN0cnkuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwIFwK
ICAgICBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcCBcCisgICAgcGxhdGZvcm0vVGhyZWFk
VGltZXJzLmNwcCBcCiAgICAgcGxhdGZvcm0vVGltZXIuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0
L1VuaWNvZGVSYW5nZS5jcHAgXAogICAgIHBsYXRmb3JtL1dpZGdldC5jcHAgXApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnNjb25zIGIvV2ViQ29yZS9XZWJDb3JlLnNjb25zCmluZGV4IGJm
Nzc0ZGEuLjRhZWQ2YWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5zY29ucworKysgYi9X
ZWJDb3JlL1dlYkNvcmUuc2NvbnMKQEAgLTczOSw2ICs3MzksNyBAQCBzb3VyY2VzWydwbGF0Zm9y
bSddID0gWwogICAgICdwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwJywKICAgICAncGxhdGZvcm0v
VGhlbWUuY3BwJywKICAgICAncGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAnLAorICAgICdw
bGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwJywKICAgICAncGxhdGZvcm0vVGltZXIuY3BwJywKICAg
ICAncGxhdGZvcm0vV2lkZ2V0LmNwcCcKIF0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IGViMDUzMzQuLmMxOTZhMzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagpAQCAtMzM2OCw2ICszMzY4LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8
RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFRocmVhZFRpbWVycy5jcHAiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxUaHJlYWRUaW1lcnMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFRpbWVyLmNwcCINCiAJCQkJPg0KIAkJCTwvRmls
ZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYwODU3
ZDcuLjJlMjMxYmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xODEsNiArMTgxLDggQEAKIAkJMThBMDUzN0QwRjI2ODU5QzAwQTUxNzA1IC8qIFdvcmtl
clJ1bkxvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE4QTA1MzdCMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmggKi87IH07CiAJCTE4
RTY4Nzg3MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEU2ODc4NTBFREI3OTM0MDBBOEU4QjcgLyog
RE9NVGltZXIuY3BwICovOyB9OwogCQkxOEU2ODc4ODBFREI3OTM1MDBBOEU4QjcgLyogRE9NVGlt
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4RTY4
Nzg2MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5oICovOyB9OworCQkxOEVDNjM5RjBGMkMy
NDQ5MDA3QUIwOTggLyogVGhyZWFkVGltZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4RUM2MzlEMEYyQzI0NDkwMDdBQjA5OCAvKiBUaHJlYWRU
aW1lcnMuY3BwICovOyB9OworCQkxOEVDNjNBMDBGMkMyNDQ5MDA3QUIwOTggLyogVGhyZWFkVGlt
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEVD
NjM5RTBGMkMyNDQ5MDA3QUIwOTggLyogVGhyZWFkVGltZXJzLmggKi87IH07CiAJCTFBMEQ1NzM2
MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEQ1NzM0MEE1Qzc3RkUwMDdFREQ0QyAvKiBP
dmVyZmxvd0V2ZW50LmNwcCAqLzsgfTsKIAkJMUEwRDU3MzcwQTVDNzdGRTAwN0VERDRDIC8qIE92
ZXJmbG93RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBMEQ1NzM1MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmggKi87IH07CiAJ
CTFBMEQ1NzQwMEE1Qzc4NjcwMDdFREQ0QyAvKiBKU092ZXJmbG93RXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRDU3M0UwQTVDNzg2NzAw
N0VERDRDIC8qIEpTT3ZlcmZsb3dFdmVudC5jcHAgKi87IH07CkBAIC01MDI4LDYgKzUwMzAsOCBA
QAogCQkxOEEwNTM3QjBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJSdW5Mb29wLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE4RTY4Nzg1MEVEQjc5MzQwMEE4RThCNyAvKiBET01UaW1lci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01UaW1lci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE4RTY4Nzg2MEVEQjc5MzUwMEE4RThCNyAvKiBET01U
aW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01UaW1lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxOEVDNjM5RDBGMkMyNDQ5MDA3QUIwOTggLyogVGhy
ZWFkVGltZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVh
ZFRpbWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE4RUM2MzlFMEYyQzI0
NDkwMDdBQjA5OCAvKiBUaHJlYWRUaW1lcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGhyZWFkVGltZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMEQ1
NzM0MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdmVyZmxvd0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUEwRDU3MzUwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE92ZXJmbG93RXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwRDU3MzgwQTVDNzgxMjAwN0VERDRDIC8qIE92
ZXJmbG93RXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBPdmVyZmxvd0V2ZW50Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNjc1LDYgKzEzNjc5LDggQEAKIAkJ
CQk1MURGNkQ3RDBCOTJBMTZEMDBDMkRDODUgLyogVGhyZWFkQ2hlY2suaCAqLywKIAkJCQlFMUZG
NTdBNTBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5jcHAgKi8sCiAJCQkJRTFG
RjU3QTIwRjAxMjU1QjAwODkxRUJCIC8qIFRocmVhZEdsb2JhbERhdGEuaCAqLywKKwkJCQkxOEVD
NjM5RDBGMkMyNDQ5MDA3QUIwOTggLyogVGhyZWFkVGltZXJzLmNwcCAqLywKKwkJCQkxOEVDNjM5
RTBGMkMyNDQ5MDA3QUIwOTggLyogVGhyZWFkVGltZXJzLmggKi8sCiAJCQkJOTMzMDlFQTEwOTlF
Qjc4QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCAqLywKIAkJCQk5MzA1QjI0QzA5OEYxQjZCMDBDMjg4
NTUgLyogVGltZXIuaCAqLywKIAkJCQkxNDE5RDJDNDBDRUE2RjYxMDBGRjUwN0EgLyogVHJlZVNo
YXJlZC5oICovLApAQCAtMTY2MjgsNiArMTY2MzQsNyBAQAogCQkJCTFBNTY5RDI1MEQ3RTJCODIw
MDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFFMDk5
RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxOEEw
NTM3RDBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMThFQzYzQTAwRjJDMjQ0OTAwN0FCMDk4IC8qIFRocmVhZFRpbWVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0xODU5Nyw2ICsxODYwNCw3IEBACiAJCQkJMUE1NjlEMjIwRDdFMkI4MjAwN0MzOTgz
IC8qIHJ1bnRpbWVfb2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDI0MEQ3RTJC
ODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlF
MUQwOTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVfdW5pdHMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMThFQzYzOUYwRjJDMjQ0OTAwN0FCMDk4IC8qIFRocmVhZFRpbWVycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsIGIvV2ViQ29yZS9X
ZWJDb3JlU291cmNlcy5ia2wKaW5kZXggMmYzMTI3MC4uNTQxZTA4OCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlU291cmNlcy5ia2wKKysrIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wK
QEAgLTc2MCw2ICs3NjAsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMg
bmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUuCiAgICAgICAgIHBsYXRmb3JtL3RleHQvVGV4dEVuY29k
aW5nUmVnaXN0cnkuY3BwCiAgICAgICAgIHBsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAKICAg
ICAgICAgcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKyAgICAgICAgcGxhdGZvcm0vVGhy
ZWFkVGltZXJzLmNwcAogICAgICAgICBwbGF0Zm9ybS9UaW1lci5jcHAKICAgICAgICAgcGxhdGZv
cm0vV2lkZ2V0LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkVGltZXIuaAppbmRleCA0Y2M5MGEyLi5hMDA1YWRkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRUaW1lci5oCkBAIC0yOCwxNyArMjgsNDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0g
ICAgLy8gU2luZ2xlIHRpbWVyLCBzaGFyZWQgdG8gaW1wbGVtZW50IGFsbCB0aGUgdGltZXJzIG1h
bmFnZWQgYnkgdGhlIFRpbWVyIGNsYXNzLgorICAgIC8vIEVhY2ggdGhyZWFkIGhhcyBpdHMgb3du
IHNpbmdsZSBpbnN0YW5jZSBvZiBzaGFyZWQgdGltZXIsIHdoaWNoIGltcGxlbWVudHMgdGhpcyBp
bnRlcmZhY2UuCisgICAgLy8gVGhpcyBpbnN0YW5jZSBpcyBzaGFyZWQgYnkgYWxsIHRpbWVycyBp
biB0aGUgdGhyZWFkLgogICAgIC8vIE5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5OyB1
c2UgdGhlIFRpbWVyIGNsYXNzIGluc3RlYWQuCisgICAgY2xhc3MgU2hhcmVkVGltZXIgeworICAg
IHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+U2hhcmVkVGltZXIoKSB7fQorICAgICAgICB2aXJ0
dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbih2b2lkICgqKSgpKSA9IDA7CiAKLSAgICB2b2lkIHNl
dFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqKSgpKTsKKyAgICAgICAgLy8gVGhlIGZp
cmUgdGltZSBpcyByZWxhdGl2ZSB0byB0aGUgY2xhc3NpYyBQT1NJWCBlcG9jaCBvZiBKYW51YXJ5
IDEsIDE5NzAsCisgICAgICAgIC8vIGFzIHRoZSByZXN1bHQgb2YgY3VycmVudFRpbWUoKSBpcy4K
KyAgICAgICAgdmlydHVhbCB2b2lkIHNldEZpcmVUaW1lKGRvdWJsZSkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKKyAgICB9OwogCi0gICAgLy8gVGhlIGZpcmUgdGltZSBp
cyByZWxhdGl2ZSB0byB0aGUgY2xhc3NpYyBQT1NJWCBlcG9jaCBvZiBKYW51YXJ5IDEsIDE5NzAs
Ci0gICAgLy8gYXMgdGhlIHJlc3VsdCBvZiBjdXJyZW50VGltZSgpIGlzLgogCi0gICAgdm9pZCBz
ZXRTaGFyZWRUaW1lckZpcmVUaW1lKGRvdWJsZSBmaXJlVGltZSk7CisgICAgLy8gSW1wbGVtZW50
ZWQgYnkgcG9ydCAoc2luY2UgaXQgcHJvdmlkZXMgdGhlIHJ1biBsb29wIGZvciB0aGUgbWFpbiB0
aHJlYWQpLgorICAgIC8vIEZJWE1FOiBtYWtlIHBvcnRzIGltcGxlbWVudCBNYWluVGhyZWFkU2hh
cmVkVGltZXIgZGlyZWN0bHkgaW5zdGVhZC4KKyAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRG
dW5jdGlvbih2b2lkICgqKSgpKTsKKyAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZVRpbWUoZG91
YmxlKTsKICAgICB2b2lkIHN0b3BTaGFyZWRUaW1lcigpOwogCi19CisgICAgLy8gSW1wbGVtZW50
YXRpb24gb2YgU2hhcmVkVGltZXIgZm9yIHRoZSBtYWluIHRocmVhZC4KKyAgICBjbGFzcyBNYWlu
VGhyZWFkU2hhcmVkVGltZXIgOiBwdWJsaWMgU2hhcmVkVGltZXIgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHNldEZpcmVkRnVuY3Rpb24odm9pZCAoKmZ1bmN0aW9uKSgpKQor
ICAgICAgICB7CisgICAgICAgICAgICBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24oZnVuY3Rp
b24pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZVRp
bWUoZG91YmxlIGZpcmVUaW1lKQorICAgICAgICB7CisgICAgICAgICAgICBzZXRTaGFyZWRUaW1l
ckZpcmVUaW1lKGZpcmVUaW1lKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdmlydHVh
bCB2b2lkIHN0b3AoKQorICAgICAgICB7CisgICAgICAgICAgICBzdG9wU2hhcmVkVGltZXIoKTsK
KyAgICAgICAgfQorICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisj
ZW5kaWYgLy8gU2hhcmVkVGltZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9UaHJl
YWRHbG9iYWxEYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAK
aW5kZXggOWJmMGJmMi4uOTAzYWY2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9UaHJl
YWRHbG9iYWxEYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVk
ZSAiU3RyaW5nSW1wbC5oIgorI2luY2x1ZGUgIlRocmVhZFRpbWVycy5oIgogI2luY2x1ZGUgPHd0
Zi9VbnVzZWRQYXJhbS5oPgogCiAjaWYgVVNFKElDVV9VTklDT0RFKQpAQCAtNzAsNiArNzEsNyBA
QCBUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKCkKICAgICA6IG1fZW1wdHlTdHJp
bmcobmV3IFN0cmluZ0ltcGwpCiAgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKG5ldyBIYXNoU2V0
PFN0cmluZ0ltcGwqPikKICAgICAsIG1fZXZlbnROYW1lcyhuZXcgRXZlbnROYW1lcykKKyAgICAs
IG1fdGhyZWFkVGltZXJzKG5ldyBUaHJlYWRUaW1lcnMpCiAjaWYgVVNFKElDVV9VTklDT0RFKQog
ICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1UobmV3IElDVUNvbnZlcnRlcldyYXBwZXIpCiAjZW5k
aWYKQEAgLTkwLDYgKzkyLDcgQEAgVGhyZWFkR2xvYmFsRGF0YTo6flRocmVhZEdsb2JhbERhdGEo
KQogCiAgICAgZGVsZXRlIG1fZXZlbnROYW1lczsKICAgICBkZWxldGUgbV9hdG9taWNTdHJpbmdU
YWJsZTsKKyAgICBkZWxldGUgbV90aHJlYWRUaW1lcnM7CiAKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkgfHwgbV9lbXB0eVN0cmluZy0+aGFzT25lUmVmKCkpOyAvLyBXZSBpbnRlbnRpb25hbGx5
IGRvbid0IGNsZWFuIHVwIHN0YXRpYyBkYXRhIG9uIGFwcGxpY2F0aW9uIHF1aXQsIHNvIHRoZXJl
IHdpbGwgYmUgbWFueSBzdHJpbmdzIHJlbWFpbmluZyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAg
ZGVsZXRlIG1fZW1wdHlTdHJpbmc7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1RocmVh
ZEdsb2JhbERhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCmluZGV4
IDE3NjM3YWEuLjdmYWNhMzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xv
YmFsRGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCkBAIC0z
Niw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBFdmVudE5hbWVzOwog
ICAgIHN0cnVjdCBJQ1VDb252ZXJ0ZXJXcmFwcGVyOwogICAgIHN0cnVjdCBURUNDb252ZXJ0ZXJX
cmFwcGVyOworICAgIGNsYXNzIFRocmVhZFRpbWVyczsKIAogICAgIGNsYXNzIFRocmVhZEdsb2Jh
bERhdGEgOiBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgpAQCAtNDUsNiArNDYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEV2ZW50TmFtZXMmIGV2ZW50TmFtZXMoKSB7IHJldHVy
biAqbV9ldmVudE5hbWVzOyB9CiAgICAgICAgIFN0cmluZ0ltcGwqIGVtcHR5U3RyaW5nKCkgeyBy
ZXR1cm4gbV9lbXB0eVN0cmluZzsgfQogICAgICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiYgYXRv
bWljU3RyaW5nVGFibGUoKSB7IHJldHVybiAqbV9hdG9taWNTdHJpbmdUYWJsZTsgfQorICAgICAg
ICBUaHJlYWRUaW1lcnMmIHRocmVhZFRpbWVycygpIHsgcmV0dXJuICptX3RocmVhZFRpbWVyczsg
fQogCiAjaWYgVVNFKElDVV9VTklDT0RFKQogICAgICAgICBJQ1VDb252ZXJ0ZXJXcmFwcGVyJiBj
YWNoZWRDb252ZXJ0ZXJJQ1UoKSB7IHJldHVybiAqbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7IH0KQEAg
LTU4LDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmdJbXBsKiBt
X2VtcHR5U3RyaW5nOwogICAgICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiogbV9hdG9taWNTdHJp
bmdUYWJsZTsKICAgICAgICAgRXZlbnROYW1lcyogbV9ldmVudE5hbWVzOworICAgICAgICBUaHJl
YWRUaW1lcnMqIG1fdGhyZWFkVGltZXJzOwogCiAjaWYgVVNFKElDVV9VTklDT0RFKQogICAgICAg
ICBJQ1VDb252ZXJ0ZXJXcmFwcGVyKiBtX2NhY2hlZENvbnZlcnRlcklDVTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkVGltZXJzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjM3OWQw
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCkBA
IC0wLDAgKzEsMTYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVGhyZWFkVGltZXJzLmgiCisKKyNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgorI2luY2x1
ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRpbWVycyBhcmUg
Y3JlYXRlZCwgc3RhcnRlZCBhbmQgZmlyZWQgb24gdGhlIHNhbWUgdGhyZWFkLCBhbmQgZWFjaCB0
aHJlYWQgaGFzIGl0cyBvd24gVGhyZWFkVGltZXJzCisvLyBjb3B5IHRvIGtlZXAgdGhlIGhlYXAg
YW5kIGEgc2V0IG9mIGN1cnJlbnRseSBmaXJpbmcgdGltZXJzLgorCitzdGF0aWMgTWFpblRocmVh
ZFNoYXJlZFRpbWVyKiBtYWluVGhyZWFkU2hhcmVkVGltZXIoKQoreworICAgIHN0YXRpYyBNYWlu
VGhyZWFkU2hhcmVkVGltZXIqIHRpbWVyID0gMDsKKyAgICBpZiAoIXRpbWVyKQorICAgICAgICB0
aW1lciA9IG5ldyBNYWluVGhyZWFkU2hhcmVkVGltZXIoKTsKKyAgICByZXR1cm4gdGltZXI7Cit9
CisKK1RocmVhZFRpbWVyczo6VGhyZWFkVGltZXJzKCkKKyAgICA6IG1fc2hhcmVkVGltZXIoMCkK
KyAgICAsIG1fZmlyaW5nVGltZXJzKGZhbHNlKQoreworICAgIGlmIChpc01haW5UaHJlYWQoKSkK
KyAgICAgICAgc2V0U2hhcmVkVGltZXIobWFpblRocmVhZFNoYXJlZFRpbWVyKCkpOworfQorCisv
LyBBIHdvcmtlciB0aHJlYWQgbWF5IGluaXRpYWxpemUgU2hhcmVkVGltZXIgYWZ0ZXIgc29tZSB0
aW1lcnMgYXJlIGNyZWF0ZWQuCisvLyBBbHNvLCBTaGFyZWRUaW1lciBjYW4gYmUgcmVwbGFjZWQg
d2l0aCAwIGJlZm9yZSBhbGwgdGltZXJzIGFyZSBkZXN0cnVjdGVkLgordm9pZCBUaHJlYWRUaW1l
cnM6OnNldFNoYXJlZFRpbWVyKFNoYXJlZFRpbWVyKiBzaGFyZWRUaW1lcikKK3sKKyAgICBpZiAo
bV9zaGFyZWRUaW1lcikgeworICAgICAgICBtX3NoYXJlZFRpbWVyLT5zZXRGaXJlZEZ1bmN0aW9u
KDApOworICAgICAgICBtX3NoYXJlZFRpbWVyLT5zdG9wKCk7CisgICAgfQorICAgIAorICAgIG1f
c2hhcmVkVGltZXIgPSBzaGFyZWRUaW1lcjsKKyAgICAKKyAgICBpZiAoc2hhcmVkVGltZXIpIHsK
KyAgICAgICAgbV9zaGFyZWRUaW1lci0+c2V0RmlyZWRGdW5jdGlvbihUaHJlYWRUaW1lcnM6OnNo
YXJlZFRpbWVyRmlyZWQpOworICAgICAgICB1cGRhdGVTaGFyZWRUaW1lcigpOworICAgIH0KK30K
Kwordm9pZCBUaHJlYWRUaW1lcnM6OnVwZGF0ZVNoYXJlZFRpbWVyKCkKK3sKKyAgICBpZiAoIW1f
c2hhcmVkVGltZXIpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgaWYgKG1fZmlyaW5n
VGltZXJzIHx8IG1fdGltZXJIZWFwLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zaGFyZWRUaW1lci0+
c3RvcCgpOworICAgIGVsc2UKKyAgICAgICAgbV9zaGFyZWRUaW1lci0+c2V0RmlyZVRpbWUobV90
aW1lckhlYXAuZmlyc3QoKS0+bV9uZXh0RmlyZVRpbWUpOworfQorCisKK3ZvaWQgVGhyZWFkVGlt
ZXJzOjpjb2xsZWN0RmlyaW5nVGltZXJzKGRvdWJsZSBmaXJlVGltZSwgVmVjdG9yPFRpbWVyQmFz
ZSo+JiBmaXJpbmdUaW1lcnMpCit7CisgICAgd2hpbGUgKCFtX3RpbWVySGVhcC5pc0VtcHR5KCkg
JiYgbV90aW1lckhlYXAuZmlyc3QoKS0+bV9uZXh0RmlyZVRpbWUgPD0gZmlyZVRpbWUpIHsKKyAg
ICAgICAgVGltZXJCYXNlKiB0aW1lciA9IG1fdGltZXJIZWFwLmZpcnN0KCk7CisgICAgICAgIGZp
cmluZ1RpbWVycy5hcHBlbmQodGltZXIpOworICAgICAgICBtX3RpbWVyc1JlYWR5VG9GaXJlLmFk
ZCh0aW1lcik7CisgICAgICAgIHRpbWVyLT5tX25leHRGaXJlVGltZSA9IDA7CisgICAgICAgIHRp
bWVyLT5oZWFwRGVsZXRlTWluKCk7CisgICAgfQorfQorCit2b2lkIFRocmVhZFRpbWVyczo6Zmly
ZVRpbWVycyhkb3VibGUgZmlyZVRpbWUsIGNvbnN0IFZlY3RvcjxUaW1lckJhc2UqPiYgZmlyaW5n
VGltZXJzKQoreworICAgIHNpemVfdCBzaXplID0gZmlyaW5nVGltZXJzLnNpemUoKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSAhPSBzaXplOyArK2kpIHsKKyAgICAgICAgVGltZXJCYXNlKiB0
aW1lciA9IGZpcmluZ1RpbWVyc1tpXTsKKworICAgICAgICAvLyBJZiBub3QgaW4gdGhlIHNldCwg
dGhpcyB0aW1lciBoYXMgYmVlbiBkZWxldGVkIG9yIHJlLXNjaGVkdWxlZCBpbiBhbm90aGVyIHRp
bWVyJ3MgZmlyZWQgZnVuY3Rpb24uCisgICAgICAgIC8vIFNvIGVpdGhlciB3ZSBkb24ndCB3YW50
IHRvIGZpcmUgaXQgYXQgYWxsIG9yIHdlIHdpbGwgZmlyZSBpdCBuZXh0IHRpbWUgdGhlIHNoYXJl
ZCB0aW1lciBnb2VzIG9mZi4KKyAgICAgICAgLy8gSXQgbWlnaHQgZXZlbiBoYXZlIGJlZW4gZGVs
ZXRlZDsgdGhhdCdzIE9LIGJlY2F1c2Ugd2Ugd29uJ3QgZG8gYW55dGhpbmcgZWxzZSB3aXRoIHRo
ZSBwb2ludGVyLgorICAgICAgICBpZiAoIW1fdGltZXJzUmVhZHlUb0ZpcmUuY29udGFpbnModGlt
ZXIpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gU2V0dGluZyB0aGUgbmV4
dCBmaXJlIHRpbWUgaGFzIGEgc2lkZSBlZmZlY3Qgb2YgcmVtb3ZpbmcgdGhlIHRpbWVyIGZyb20g
dGhlIGZpcmluZyB0aW1lcnMgc2V0LgorICAgICAgICBkb3VibGUgaW50ZXJ2YWwgPSB0aW1lci0+
cmVwZWF0SW50ZXJ2YWwoKTsKKyAgICAgICAgdGltZXItPnNldE5leHRGaXJlVGltZShpbnRlcnZh
bCA/IGZpcmVUaW1lICsgaW50ZXJ2YWwgOiAwKTsKKworICAgICAgICAvLyBPbmNlIHRoZSB0aW1l
ciBoYXMgYmVlbiBmaXJlZCwgaXQgbWF5IGJlIGRlbGV0ZWQsIHNvIGRvIG5vdGhpbmcgZWxzZSB3
aXRoIGl0IGFmdGVyIHRoaXMgcG9pbnQuCisgICAgICAgIHRpbWVyLT5maXJlZCgpOworCisgICAg
ICAgIC8vIENhdGNoIHRoZSBjYXNlIHdoZXJlIHRoZSB0aW1lciBhc2tlZCB0aW1lcnMgdG8gZmly
ZSBpbiBhIG5lc3RlZCBldmVudCBsb29wLgorICAgICAgICBpZiAoIW1fZmlyaW5nVGltZXJzKQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIFRocmVhZFRpbWVyczo6c2hhcmVk
VGltZXJGaXJlZCgpCit7CisgICAgLy8gUmVkaXJlY3QgdG8gbm9uLXN0YXRpYyBtZXRob2QuCisg
ICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnNoYXJlZFRpbWVyRmlyZWRJbnRl
cm5hbCgpOworfQorCit2b2lkIFRocmVhZFRpbWVyczo6c2hhcmVkVGltZXJGaXJlZEludGVybmFs
KCkKK3sKKyAgICAvLyBEbyBhIHJlLWVudHJhbmN5IGNoZWNrLgorICAgIGlmIChtX2ZpcmluZ1Rp
bWVycykKKyAgICAgICAgcmV0dXJuOworICAgIG1fZmlyaW5nVGltZXJzID0gdHJ1ZTsKKworICAg
IGRvdWJsZSBmaXJlVGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgVmVjdG9yPFRpbWVyQmFzZSo+
IGZpcmluZ1RpbWVyczsKKworICAgIC8vIG1fdGltZXJzUmVhZHlUb0ZpcmUgd2lsbCBpbml0aWFs
bHkgY29udGFpbiB0aGUgc2FtZSBzZXQgYXMgZmlyaW5nVGltZXJzLCBidXQKKyAgICAvLyBhcyB0
aW1lcnMgZmlyZSBzb21lIG1hdCBiZWNvbWUgcmUtc2NoZWR1bGVkIG9yIGRlbGV0ZWQuIFRoZXkg
Z2V0IHJlbW92ZWQgZnJvbQorICAgIC8vIG1fdGltZXJzUmVhZHlUb0ZpcmUgc28gd2UgY2FuIGF2
b2lkIGZpcmluZyB0aGVtLgorICAgIEFTU0VSVChtX3RpbWVyc1JlYWR5VG9GaXJlLmlzRW1wdHko
KSk7CisKKyAgICBjb2xsZWN0RmlyaW5nVGltZXJzKGZpcmVUaW1lLCBmaXJpbmdUaW1lcnMpOwor
ICAgIGZpcmVUaW1lcnMoZmlyZVRpbWUsIGZpcmluZ1RpbWVycyk7CisKKyAgICBtX3RpbWVyc1Jl
YWR5VG9GaXJlLmNsZWFyKCk7CisgICAgbV9maXJpbmdUaW1lcnMgPSBmYWxzZTsKKworICAgIHVw
ZGF0ZVNoYXJlZFRpbWVyKCk7Cit9CisKK3ZvaWQgVGhyZWFkVGltZXJzOjpmaXJlVGltZXJzSW5O
ZXN0ZWRFdmVudExvb3AoKQoreworICAgIC8vIFJlc2V0IHRoZSByZWVudHJhbmN5IGd1YXJkIHNv
IHRoZSB0aW1lcnMgY2FuIGZpcmUgYWdhaW4uCisgICAgbV9maXJpbmdUaW1lcnMgPSBmYWxzZTsK
KyAgICBtX3RpbWVyc1JlYWR5VG9GaXJlLmNsZWFyKCk7CisgICAgdXBkYXRlU2hhcmVkVGltZXIo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZFRpbWVycy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjZjMzIwCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuaApAQCAtMCwwICsxLDY5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFRocmVhZFRpbWVyX2gKKyNkZWZpbmUgVGhyZWFk
VGltZXJfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworICAgIGNsYXNzIFNoYXJlZFRpbWVyOworICAgIGNsYXNzIFRpbWVyQmFzZTsKKworICAgIC8v
IEEgY29sbGVjdGlvbiBvZiB0aW1lcnMgcGVyIHRocmVhZC4gS2VwdCBpbiBUaHJlYWRHbG9iYWxE
YXRhLgorICAgIGNsYXNzIFRocmVhZFRpbWVycyA6IE5vbmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFRocmVhZFRpbWVycygpOworCisgICAgICAgIC8vIE9uIGEgdGhyZWFkIGRpZmZl
cmVudCB0aGVuIG1haW4sIHdlIHNob3VsZCBzZXQgdGhlIHRocmVhZCdzIGluc3RhbmNlIG9mIHRo
ZSBTaGFyZWRUaW1lci4KKyAgICAgICAgdm9pZCBzZXRTaGFyZWRUaW1lcihTaGFyZWRUaW1lciop
OworCisgICAgICAgIFZlY3RvcjxUaW1lckJhc2UqPiYgdGltZXJIZWFwKCkgeyByZXR1cm4gbV90
aW1lckhlYXA7IH0KKyAgICAgICAgSGFzaFNldDxjb25zdCBUaW1lckJhc2UqPiYgdGltZXJzUmVh
ZHlUb0ZpcmUoKSB7IHJldHVybiBtX3RpbWVyc1JlYWR5VG9GaXJlOyB9CisKKyAgICAgICAgdm9p
ZCB1cGRhdGVTaGFyZWRUaW1lcigpOworICAgICAgICB2b2lkIGZpcmVUaW1lcnNJbk5lc3RlZEV2
ZW50TG9vcCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgc3RhdGljIHZvaWQgc2hhcmVkVGlt
ZXJGaXJlZCgpOworCisgICAgICAgIHZvaWQgZmlyZVRpbWVycyhkb3VibGUgZmlyZVRpbWUsIGNv
bnN0IFZlY3RvcjxUaW1lckJhc2UqPiYpOworICAgICAgICB2b2lkIGNvbGxlY3RGaXJpbmdUaW1l
cnMoZG91YmxlIGZpcmVUaW1lLCBWZWN0b3I8VGltZXJCYXNlKj4mKTsKKyAgICAgICAgdm9pZCBz
aGFyZWRUaW1lckZpcmVkSW50ZXJuYWwoKTsKKyAgICAgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0
ZWRFdmVudExvb3BJbnRlcm5hbCgpOworCisgICAgICAgIFZlY3RvcjxUaW1lckJhc2UqPiBtX3Rp
bWVySGVhcDsKKyAgICAgICAgSGFzaFNldDxjb25zdCBUaW1lckJhc2UqPiBtX3RpbWVyc1JlYWR5
VG9GaXJlOyAvLyBUZW1wb3JhcmlseSBob2xkcyBhIHBvaW50ZXIgdG8gYSBzdGFjayBvYmplY3Qu
IE5vIG93bmVyc2hpcC4KKyAgICAgICAgU2hhcmVkVGltZXIqIG1fc2hhcmVkVGltZXI7IC8vIEV4
dGVybmFsIG9iamVjdCwgY2FuIGJlIGEgcnVuIGxvb3Agb24gYSB3b3JrZXIgdGhyZWFkLiBOb3Jt
YWxseSBzZXQvcmVzZXQgYnkgd29ya2VyIHRocmVhZC4KKyAgICAgICAgYm9vbCBtX2ZpcmluZ1Rp
bWVyczsgLy8gUmVlbnRyYW5jeSBndWFyZC4KKyAgICB9OworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL1RpbWVy
LmNwcAppbmRleCAwMDcyMTdkLi44ODFlNDhiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L1RpbWVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcApAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI4LDgg
QEAKICNpbmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKKyNpbmNs
dWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiVGhyZWFkVGltZXJzLmgiCiAjaW5j
bHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPG1hdGguaD4KQEAg
LTQ0LDE5ICs0NywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLwogLy8gV2hlbiBhIHRpbWVy
J3MgIm5leHQgZmlyZSB0aW1lIiBjaGFuZ2VzLCB3ZSBuZWVkIHRvIG1vdmUgaXQgYXJvdW5kIGlu
IHRoZSBwcmlvcml0eSBxdWV1ZS4KIAotLy8gLS0tLS0tLS0tLS0tLS0tLQotCi1zdGF0aWMgVmVj
dG9yPFRpbWVyQmFzZSo+KiB0aW1lckhlYXA7Ci1zdGF0aWMgSGFzaFNldDxjb25zdCBUaW1lckJh
c2UqPiogdGltZXJzUmVhZHlUb0ZpcmU7CisvLyBTaW1wbGUgYWNjZXNzb3JzIHRvIHRocmVhZC1z
cGVjaWZpYyBkYXRhLgorc3RhdGljIFZlY3RvcjxUaW1lckJhc2UqPiYgdGltZXJIZWFwKCkKK3sK
KyAgICByZXR1cm4gdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnRpbWVySGVhcCgp
OworfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tCitzdGF0aWMgSGFzaFNldDxjb25zdCBUaW1lckJh
c2UqPiYgdGltZXJzUmVhZHlUb0ZpcmUoKQoreworICAgIHJldHVybiB0aHJlYWRHbG9iYWxEYXRh
KCkudGhyZWFkVGltZXJzKCkudGltZXJzUmVhZHlUb0ZpcmUoKTsKK30KIAogLy8gQ2xhc3MgdG8g
cmVwcmVzZW50IGVsZW1lbnRzIGluIHRoZSBoZWFwIHdoZW4gY2FsbGluZyB0aGUgc3RhbmRhcmQg
bGlicmFyeSBoZWFwIGFsZ29yaXRobXMuCiAvLyBNYWludGFpbnMgdGhlIG1faGVhcEluZGV4IHZh
bHVlIGluIHRoZSB0aW1lcnMgdGhlbXNlbHZlcywgd2hpY2ggYWxsb3dzIHVzIHRvIGRvIGVmZmlj
aWVudAogLy8gbW9kaWZpY2F0aW9uIG9mIHRoZSBoZWFwLgogY2xhc3MgVGltZXJIZWFwRWxlbWVu
dCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVGltZXJIZWFwRWxlbWVudChpbnQgaSkgOiBtX2lu
ZGV4KGkpLCBtX3RpbWVyKCgqdGltZXJIZWFwKVttX2luZGV4XSkgeyBjaGVja0NvbnNpc3RlbmN5
KCk7IH0KKyAgICBleHBsaWNpdCBUaW1lckhlYXBFbGVtZW50KGludCBpKQorICAgICAgICA6IG1f
aW5kZXgoaSkKKyAgICAgICAgLCBtX3RpbWVyKHRpbWVySGVhcCgpW21faW5kZXhdKQorICAgIHsg
CisgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsgCisgICAgfQogCiAgICAgVGltZXJIZWFwRWxl
bWVudChjb25zdCBUaW1lckhlYXBFbGVtZW50Jik7CiAgICAgVGltZXJIZWFwRWxlbWVudCYgb3Bl
cmF0b3I9KGNvbnN0IFRpbWVySGVhcEVsZW1lbnQmKTsKQEAgLTY2LDcgKzc4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQobV9pbmRleCA+PSAwKTsKLSAgICAgICAgQVNTRVJUKG1faW5kZXggPCAodGltZXJIZWFwID8g
c3RhdGljX2Nhc3Q8aW50Pih0aW1lckhlYXAtPnNpemUoKSkgOiAwKSk7CisgICAgICAgIEFTU0VS
VChtX2luZGV4IDwgc3RhdGljX2Nhc3Q8aW50Pih0aW1lckhlYXAoKS5zaXplKCkpKTsKICAgICB9
CiAKIHByaXZhdGU6CkBAIC04Nyw3ICs5OSw3IEBAIGlubGluZSBUaW1lckhlYXBFbGVtZW50JiBU
aW1lckhlYXBFbGVtZW50OjpvcGVyYXRvcj0oY29uc3QgVGltZXJIZWFwRWxlbWVudCYgbykKICAg
ICBtX3RpbWVyID0gdDsKICAgICBpZiAobV9pbmRleCAhPSAtMSkgewogICAgICAgICBjaGVja0Nv
bnNpc3RlbmN5KCk7Ci0gICAgICAgICgqdGltZXJIZWFwKVttX2luZGV4XSA9IHQ7CisgICAgICAg
IHRpbWVySGVhcCgpW21faW5kZXhdID0gdDsKICAgICAgICAgdC0+bV9oZWFwSW5kZXggPSBtX2lu
ZGV4OwogICAgIH0KICAgICByZXR1cm4gKnRoaXM7CkBAIC0xMzQsNyArMTQ2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShpbnQgb2Zmc2V0ID0gMCkgY29uc3QKICAgICB7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2Zmc2V0LCBtX2luZGV4ICsgb2Zmc2V0ID49IDApOwot
ICAgICAgICBBU1NFUlRfVU5VU0VEKG9mZnNldCwgbV9pbmRleCArIG9mZnNldCA8PSAodGltZXJI
ZWFwID8gc3RhdGljX2Nhc3Q8aW50Pih0aW1lckhlYXAtPnNpemUoKSkgOiAwKSk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQob2Zmc2V0LCBtX2luZGV4ICsgb2Zmc2V0IDw9IHN0YXRpY19jYXN0PGlu
dD4odGltZXJIZWFwKCkuc2l6ZSgpKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTUzLDI3ICsx
NjUsMTYgQEAgaW5saW5lIGludCBvcGVyYXRvci0oVGltZXJIZWFwSXRlcmF0b3IgYSwgVGltZXJI
ZWFwSXRlcmF0b3IgYikgeyByZXR1cm4gYS5pbmRleCgKIAogLy8gLS0tLS0tLS0tLS0tLS0tLQog
Ci12b2lkIHVwZGF0ZVNoYXJlZFRpbWVyKCkKLXsKLSAgICBpZiAodGltZXJzUmVhZHlUb0ZpcmUg
fHwgIXRpbWVySGVhcCB8fCB0aW1lckhlYXAtPmlzRW1wdHkoKSkKLSAgICAgICAgc3RvcFNoYXJl
ZFRpbWVyKCk7Ci0gICAgZWxzZQotICAgICAgICBzZXRTaGFyZWRUaW1lckZpcmVUaW1lKHRpbWVy
SGVhcC0+Zmlyc3QoKS0+bV9uZXh0RmlyZVRpbWUpOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0t
Ci0KIFRpbWVyQmFzZTo6VGltZXJCYXNlKCkKLSAgICA6IG1fbmV4dEZpcmVUaW1lKDApLCBtX3Jl
cGVhdEludGVydmFsKDApLCBtX2hlYXBJbmRleCgtMSkKKyAgICA6IG1fbmV4dEZpcmVUaW1lKDAp
CisgICAgLCBtX3JlcGVhdEludGVydmFsKDApCisgICAgLCBtX2hlYXBJbmRleCgtMSkKIHsKLSAg
ICAvLyBXZSBvbmx5IG5lZWQgdG8gZG8gdGhpcyBvbmNlLCBidXQgcHJvYmFibHkgbm90IHdvcnRo
IHRyeWluZyB0byBvcHRpbWl6ZSBpdC4KLSAgICBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24o
c2hhcmVkVGltZXJGaXJlZCk7CiB9CiAKIFRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCiB7CiAgICAg
c3RvcCgpOwotCiAgICAgQVNTRVJUKCFpbkhlYXAoKSk7CiB9CiAKQEAgLTE5NSw3ICsxOTYsNyBA
QCB2b2lkIFRpbWVyQmFzZTo6c3RvcCgpCiAKIGJvb2wgVGltZXJCYXNlOjppc0FjdGl2ZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fbmV4dEZpcmVUaW1lIHx8ICh0aW1lcnNSZWFkeVRvRmlyZSAm
JiB0aW1lcnNSZWFkeVRvRmlyZS0+Y29udGFpbnModGhpcykpOworICAgIHJldHVybiBtX25leHRG
aXJlVGltZSB8fCB0aW1lcnNSZWFkeVRvRmlyZSgpLmNvbnRhaW5zKHRoaXMpOwogfQogCiBkb3Vi
bGUgVGltZXJCYXNlOjpuZXh0RmlyZUludGVydmFsKCkgY29uc3QKQEAgLTIwOSwxMSArMjEwLDEw
IEBAIGRvdWJsZSBUaW1lckJhc2U6Om5leHRGaXJlSW50ZXJ2YWwoKSBjb25zdAogCiBpbmxpbmUg
dm9pZCBUaW1lckJhc2U6OmNoZWNrSGVhcEluZGV4KCkgY29uc3QKIHsKLSAgICBBU1NFUlQodGlt
ZXJIZWFwKTsKLSAgICBBU1NFUlQoIXRpbWVySGVhcC0+aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQo
IXRpbWVySGVhcCgpLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1faGVhcEluZGV4ID49IDApOwot
ICAgIEFTU0VSVChtX2hlYXBJbmRleCA8IHN0YXRpY19jYXN0PGludD4odGltZXJIZWFwLT5zaXpl
KCkpKTsKLSAgICBBU1NFUlQoKCp0aW1lckhlYXApW21faGVhcEluZGV4XSA9PSB0aGlzKTsKKyAg
ICBBU1NFUlQobV9oZWFwSW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+KHRpbWVySGVhcCgpLnNpemUo
KSkpOworICAgIEFTU0VSVCh0aW1lckhlYXAoKVttX2hlYXBJbmRleF0gPT0gdGhpcyk7CiB9CiAK
IGlubGluZSB2b2lkIFRpbWVyQmFzZTo6Y2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0CkBAIC0yMzYs
MTUgKzIzNiwxNSBAQCBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmhlYXBEZWxldGUoKQogewogICAg
IEFTU0VSVChtX25leHRGaXJlVGltZSA9PSAwKTsKICAgICBoZWFwUG9wKCk7Ci0gICAgdGltZXJI
ZWFwLT5yZW1vdmVMYXN0KCk7CisgICAgdGltZXJIZWFwKCkucmVtb3ZlTGFzdCgpOwogICAgIG1f
aGVhcEluZGV4ID0gLTE7CiB9CiAKLWlubGluZSB2b2lkIFRpbWVyQmFzZTo6aGVhcERlbGV0ZU1p
bigpCit2b2lkIFRpbWVyQmFzZTo6aGVhcERlbGV0ZU1pbigpCiB7CiAgICAgQVNTRVJUKG1fbmV4
dEZpcmVUaW1lID09IDApOwogICAgIGhlYXBQb3BNaW4oKTsKLSAgICB0aW1lckhlYXAtPnJlbW92
ZUxhc3QoKTsKKyAgICB0aW1lckhlYXAoKS5yZW1vdmVMYXN0KCk7CiAgICAgbV9oZWFwSW5kZXgg
PSAtMTsKIH0KIApAQCAtMjU4LDEwICsyNTgsOCBAQCBpbmxpbmUgdm9pZCBUaW1lckJhc2U6Omhl
YXBJbmNyZWFzZUtleSgpCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmhlYXBJbnNlcnQoKQogewog
ICAgIEFTU0VSVCghaW5IZWFwKCkpOwotICAgIGlmICghdGltZXJIZWFwKQotICAgICAgICB0aW1l
ckhlYXAgPSBuZXcgVmVjdG9yPFRpbWVyQmFzZSo+OwotICAgIHRpbWVySGVhcC0+YXBwZW5kKHRo
aXMpOwotICAgIG1faGVhcEluZGV4ID0gdGltZXJIZWFwLT5zaXplKCkgLSAxOworICAgIHRpbWVy
SGVhcCgpLmFwcGVuZCh0aGlzKTsKKyAgICBtX2hlYXBJbmRleCA9IHRpbWVySGVhcCgpLnNpemUo
KSAtIDE7CiAgICAgaGVhcERlY3JlYXNlS2V5KCk7CiB9CiAKQEAgLTI3NywxOSArMjc1LDE4IEBA
IGlubGluZSB2b2lkIFRpbWVyQmFzZTo6aGVhcFBvcCgpCiAKIHZvaWQgVGltZXJCYXNlOjpoZWFw
UG9wTWluKCkKIHsKLSAgICBBU1NFUlQodGhpcyA9PSB0aW1lckhlYXAtPmZpcnN0KCkpOworICAg
IEFTU0VSVCh0aGlzID09IHRpbWVySGVhcCgpLmZpcnN0KCkpOwogICAgIGNoZWNrSGVhcEluZGV4
KCk7Ci0gICAgcG9wX2hlYXAoVGltZXJIZWFwSXRlcmF0b3IoMCksIFRpbWVySGVhcEl0ZXJhdG9y
KHRpbWVySGVhcC0+c2l6ZSgpKSk7CisgICAgcG9wX2hlYXAoVGltZXJIZWFwSXRlcmF0b3IoMCks
IFRpbWVySGVhcEl0ZXJhdG9yKHRpbWVySGVhcCgpLnNpemUoKSkpOwogICAgIGNoZWNrSGVhcElu
ZGV4KCk7Ci0gICAgQVNTRVJUKHRoaXMgPT0gdGltZXJIZWFwLT5sYXN0KCkpOworICAgIEFTU0VS
VCh0aGlzID09IHRpbWVySGVhcCgpLmxhc3QoKSk7CiB9CiAKIHZvaWQgVGltZXJCYXNlOjpzZXRO
ZXh0RmlyZVRpbWUoZG91YmxlIG5ld1RpbWUpCiB7CiAgICAgLy8gS2VlcCBoZWFwIHZhbGlkIHdo
aWxlIGNoYW5naW5nIHRoZSBuZXh0LWZpcmUgdGltZS4KIAotICAgIGlmICh0aW1lcnNSZWFkeVRv
RmlyZSkKLSAgICAgICAgdGltZXJzUmVhZHlUb0ZpcmUtPnJlbW92ZSh0aGlzKTsKKyAgICB0aW1l
cnNSZWFkeVRvRmlyZSgpLnJlbW92ZSh0aGlzKTsKIAogICAgIGRvdWJsZSBvbGRUaW1lID0gbV9u
ZXh0RmlyZVRpbWU7CiAgICAgaWYgKG9sZFRpbWUgIT0gbmV3VGltZSkgewpAQCAtMzExLDcyICsz
MDgsMTcgQEAgdm9pZCBUaW1lckJhc2U6OnNldE5leHRGaXJlVGltZShkb3VibGUgbmV3VGltZSkK
ICAgICAgICAgYm9vbCBpc0ZpcnN0VGltZXJJbkhlYXAgPSBtX2hlYXBJbmRleCA9PSAwOwogCiAg
ICAgICAgIGlmICh3YXNGaXJzdFRpbWVySW5IZWFwIHx8IGlzRmlyc3RUaW1lckluSGVhcCkKLSAg
ICAgICAgICAgIHVwZGF0ZVNoYXJlZFRpbWVyKCk7CisgICAgICAgICAgICB0aHJlYWRHbG9iYWxE
YXRhKCkudGhyZWFkVGltZXJzKCkudXBkYXRlU2hhcmVkVGltZXIoKTsKICAgICB9CiAKICAgICBj
aGVja0NvbnNpc3RlbmN5KCk7CiB9CiAKLXZvaWQgVGltZXJCYXNlOjpjb2xsZWN0RmlyaW5nVGlt
ZXJzKGRvdWJsZSBmaXJlVGltZSwgVmVjdG9yPFRpbWVyQmFzZSo+JiBmaXJpbmdUaW1lcnMpCi17
Ci0gICAgd2hpbGUgKCF0aW1lckhlYXAtPmlzRW1wdHkoKSAmJiB0aW1lckhlYXAtPmZpcnN0KCkt
Pm1fbmV4dEZpcmVUaW1lIDw9IGZpcmVUaW1lKSB7Ci0gICAgICAgIFRpbWVyQmFzZSogdGltZXIg
PSB0aW1lckhlYXAtPmZpcnN0KCk7Ci0gICAgICAgIGZpcmluZ1RpbWVycy5hcHBlbmQodGltZXIp
OwotICAgICAgICB0aW1lcnNSZWFkeVRvRmlyZS0+YWRkKHRpbWVyKTsKLSAgICAgICAgdGltZXIt
Pm1fbmV4dEZpcmVUaW1lID0gMDsKLSAgICAgICAgdGltZXItPmhlYXBEZWxldGVNaW4oKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgVGltZXJCYXNlOjpmaXJlVGltZXJzKGRvdWJsZSBmaXJlVGltZSwgY29u
c3QgVmVjdG9yPFRpbWVyQmFzZSo+JiBmaXJpbmdUaW1lcnMpCi17Ci0gICAgaW50IHNpemUgPSBm
aXJpbmdUaW1lcnMuc2l6ZSgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpICE9IHNpemU7ICsraSkg
ewotICAgICAgICBUaW1lckJhc2UqIHRpbWVyID0gZmlyaW5nVGltZXJzW2ldOwotCi0gICAgICAg
IC8vIElmIG5vdCBpbiB0aGUgc2V0LCB0aGlzIHRpbWVyIGhhcyBiZWVuIGRlbGV0ZWQgb3IgcmUt
c2NoZWR1bGVkIGluIGFub3RoZXIgdGltZXIncyBmaXJlZCBmdW5jdGlvbi4KLSAgICAgICAgLy8g
U28gZWl0aGVyIHdlIGRvbid0IHdhbnQgdG8gZmlyZSBpdCBhdCBhbGwgb3Igd2Ugd2lsbCBmaXJl
IGl0IG5leHQgdGltZSB0aGUgc2hhcmVkIHRpbWVyIGdvZXMgb2ZmLgotICAgICAgICAvLyBJdCBt
aWdodCBldmVuIGhhdmUgYmVlbiBkZWxldGVkOyB0aGF0J3MgT0sgYmVjYXVzZSB3ZSB3b24ndCBk
byBhbnl0aGluZyBlbHNlIHdpdGggdGhlIHBvaW50ZXIuCi0gICAgICAgIGlmICghdGltZXJzUmVh
ZHlUb0ZpcmUtPmNvbnRhaW5zKHRpbWVyKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgIC8vIFNldHRpbmcgdGhlIG5leHQgZmlyZSB0aW1lIGhhcyBhIHNpZGUgZWZmZWN0IG9mIHJl
bW92aW5nIHRoZSB0aW1lciBmcm9tIHRoZSBmaXJpbmcgdGltZXJzIHNldC4KLSAgICAgICAgZG91
YmxlIGludGVydmFsID0gdGltZXItPnJlcGVhdEludGVydmFsKCk7Ci0gICAgICAgIHRpbWVyLT5z
ZXROZXh0RmlyZVRpbWUoaW50ZXJ2YWwgPyBmaXJlVGltZSArIGludGVydmFsIDogMCk7Ci0KLSAg
ICAgICAgLy8gT25jZSB0aGUgdGltZXIgaGFzIGJlZW4gZmlyZWQsIGl0IG1heSBiZSBkZWxldGVk
LCBzbyBkbyBub3RoaW5nIGVsc2Ugd2l0aCBpdCBhZnRlciB0aGlzIHBvaW50LgotICAgICAgICB0
aW1lci0+ZmlyZWQoKTsKLQotICAgICAgICAvLyBDYXRjaCB0aGUgY2FzZSB3aGVyZSB0aGUgdGlt
ZXIgYXNrZWQgdGltZXJzIHRvIGZpcmUgaW4gYSBuZXN0ZWQgZXZlbnQgbG9vcC4KLSAgICAgICAg
aWYgKCF0aW1lcnNSZWFkeVRvRmlyZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQot
dm9pZCBUaW1lckJhc2U6OnNoYXJlZFRpbWVyRmlyZWQoKQotewotICAgIC8vIERvIGEgcmUtZW50
cmFuY3kgY2hlY2suCi0gICAgaWYgKHRpbWVyc1JlYWR5VG9GaXJlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBkb3VibGUgZmlyZVRpbWUgPSBjdXJyZW50VGltZSgpOwotICAgIFZlY3RvcjxUaW1l
ckJhc2UqPiBmaXJpbmdUaW1lcnM7Ci0gICAgSGFzaFNldDxjb25zdCBUaW1lckJhc2UqPiBmaXJp
bmdUaW1lcnNTZXQ7Ci0KLSAgICB0aW1lcnNSZWFkeVRvRmlyZSA9ICZmaXJpbmdUaW1lcnNTZXQ7
Ci0KLSAgICBjb2xsZWN0RmlyaW5nVGltZXJzKGZpcmVUaW1lLCBmaXJpbmdUaW1lcnMpOwotICAg
IGZpcmVUaW1lcnMoZmlyZVRpbWUsIGZpcmluZ1RpbWVycyk7Ci0KLSAgICB0aW1lcnNSZWFkeVRv
RmlyZSA9IDA7Ci0KLSAgICB1cGRhdGVTaGFyZWRUaW1lcigpOwotfQotCiB2b2lkIFRpbWVyQmFz
ZTo6ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCkKIHsKLSAgICB0aW1lcnNSZWFkeVRvRmly
ZSA9IDA7Ci0gICAgdXBkYXRlU2hhcmVkVGltZXIoKTsKKyAgICAvLyBSZWRpcmVjdCB0byBUaHJl
YWRUaW1lcnMuCisgICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLmZpcmVUaW1l
cnNJbk5lc3RlZEV2ZW50TG9vcCgpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
VGltZXIuaAppbmRleCAwZWU4NmIxLi5hYWI1MmMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL1RpbWVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCkBAIC0yNyw3ICsyNyw2
IEBACiAjZGVmaW5lIFRpbWVyX2gKIAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03MywxNyAr
NzIsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhlYXBQb3AoKTsKICAgICB2b2lkIGhlYXBQb3BN
aW4oKTsKIAotICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RGaXJpbmdUaW1lcnMoZG91YmxlIGZpcmVU
aW1lLCBWZWN0b3I8VGltZXJCYXNlKj4mKTsKLSAgICBzdGF0aWMgdm9pZCBmaXJlVGltZXJzKGRv
dWJsZSBmaXJlVGltZSwgY29uc3QgVmVjdG9yPFRpbWVyQmFzZSo+Jik7Ci0gICAgc3RhdGljIHZv
aWQgc2hhcmVkVGltZXJGaXJlZCgpOwotCiAgICAgZG91YmxlIG1fbmV4dEZpcmVUaW1lOyAvLyAw
IGlmIGluYWN0aXZlCiAgICAgZG91YmxlIG1fcmVwZWF0SW50ZXJ2YWw7IC8vIDAgaWYgbm90IHJl
cGVhdGluZwogICAgIGludCBtX2hlYXBJbmRleDsgLy8gLTEgaWYgbm90IGluIGhlYXAKICAgICB1
bnNpZ25lZCBtX2hlYXBJbnNlcnRpb25PcmRlcjsgLy8gVXNlZCB0byBrZWVwIG9yZGVyIGFtb25n
IGVxdWFsLWZpcmUtdGltZSB0aW1lcnMKIAotICAgIGZyaWVuZCB2b2lkIHVwZGF0ZVNoYXJlZFRp
bWVyKCk7CiAgICAgZnJpZW5kIGNsYXNzIFRpbWVySGVhcEVsZW1lbnQ7CisgICAgZnJpZW5kIGNs
YXNzIFRocmVhZFRpbWVyczsKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcjwoY29uc3QgVGltZXJI
ZWFwRWxlbWVudCYsIGNvbnN0IFRpbWVySGVhcEVsZW1lbnQmKTsKIH07CiAK
</data>
<flag name="review"
          id="12955"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27170</attachid>
            <date>2009-01-29 16:20:41 -0800</date>
            <delta_ts>2009-01-29 16:20:41 -0800</delta_ts>
            <desc>Final version</desc>
            <filename>timers_v7.txt</filename>
            <type>text/plain</type>
            <size>32356</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzQxNjRlMS4uYWI2ZDFmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAwOS0wMS0yOSAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0ODgKKworICAgICAgICBNYWtlIFRpbWVyQmFzZSB0aHJlYWQtYXdhcmUgKGZvciBXb3JrZXJz
KS4KKyAgICAgICAgQWRkZWQgbmV3IGNsYXNzIFRocmVhZFRpbWVycyAtIGl0IGtlZXBzIGEgaGVh
cCBvZiBhbGwgdGltZXJzIGZvciBhIHRocmVhZCAocHJldmlvdXNseSBrZXB0IGluIGEgc3RhdGlj
IGdsb2JhbCkuCisgICAgICAgIFBvaW50ZXIgdG8gaW5zdGFuY2Ugb2YgVGhyZWFkVGltZXJzIGlz
IHN0b3JlZCBpbiBHbG9iYWxUaHJlYWREYXRhLgorICAgICAgICBNb3N0IHN0YXRpYyBtZXRob2Rz
IG9mIFRpbWVyQmFzZSB3ZW50IHRvIFRocmVhZFRpbWVycy4KKworICAgICAgICBUaGUgVGltZXJC
YXNlIGZ1bmN0aW9uYWxpdHkgZGlkIG5vdCBjaGFuZ2UgKGl0IG1haW50YWlucyB0aGUgdGltZXIg
aGVhcCB3aGljaCBjb21wdXRlcyB0aGUgbmVhcmVzdCBmaXJpbmcpLgorCisgICAgICAgIEFkZGVk
IG5ldyBhYnN0cmFjdCBjbGFzcyBTaGFyZWRUaW1lciwgc28gd29ya2VyIHRocmVhZHMgY2FuIHBy
b3ZpZGUgdGhlaXIgb3duIGltcGxlbWVudGF0aW9uICh3aWxsIGJlIGltcGxlbWVudGVkIG9uIFdv
cmtlclJ1bkxvb3ApLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2Vi
Q29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS5zY29uczoKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICBBZGRlZCBu
ZXcgVGhyZWFkVGltZXJzLmNwcCB0byBidWlsZCBmaWxlcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZFRpbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lcjo6flNoYXJlZFRp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZp
cmVUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCk6
CisgICAgICAgIEFkZGVkIGFic3RyYWN0IFNoYXJlZFRpbWVyIGFuZCBNYWluVGhyZWFkU2hhcmVk
VGltZXIgd2hpY2ggcmVkaXJlY3RzIHRvIHRoZSBleGlzdGluZyBwb3J0LXN1cHBsaWVkIGZ1bmN0
aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjp+VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
R2xvYmFsRGF0YTo6dGhyZWFkVGltZXJzKToKKyAgICAgICAgQWRkZWQgVGhyZWFkVGltZXJzIHRv
IFRocmVhZEdsb2JhbERhdGEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1haW5UaHJlYWRTaGFyZWRUaW1lcik6CisgICAg
ICAgIFN0YXRpYyBnZXR0ZXIgZm9yIGEgTWFpblRocmVhZFNoYXJlZFRpbWVyIHNpbmdsZXRvbi4K
KworICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpUaHJlYWRUaW1lcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzZXRTaGFyZWRUaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRUaW1lcnM6OnVwZGF0ZVNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZFRpbWVyczo6Y29sbGVjdEZpcmluZ1RpbWVycyk6CisgICAgICAgIChXZWJDb3JlOjpU
aHJlYWRUaW1lcnM6OmZpcmVUaW1lcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJz
OjpzaGFyZWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVyczo6c2hh
cmVkVGltZXJGaXJlZEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVyczo6
ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKToKKyAgICAgICAgVGhyZWFkVGltZXJzIGltcGxl
bWVudGF0aW9uLiBNb3N0IG9mIHRoZSBjb2RlIGlzIG1vdmVkIGZyb20gcHJldmlvdXMgc3RhdGlj
IGZ1bmN0aW9ucyBvbiBUaW1lckJhc2UuCisgICAgICAgIE5lZWQgYSBuZXcgY2xhc3Mgc28gZWFj
aCB0aHJlYWQgbWF5IGdldCB0cyBvd24gY29weSBvZiB0aGUgdGltZXIgaGVhcC4KKworICAgICAg
ICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZFRpbWVyczo6dGltZXJIZWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVyczo6
dGltZXJzUmVhZHlUb0ZpcmUpOgorCisgICAgICAgICogcGxhdGZvcm0vVGltZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dGltZXJIZWFwKToKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyc1JlYWR5
VG9GaXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcEVsZW1lbnQ6OlRpbWVySGVhcEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwRWxlbWVudDo6Y2hlY2tDb25zaXN0
ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckhlYXBFbGVtZW50OjpvcGVyYXRvcj0pOgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwSXRlcmF0b3I6OmNoZWNrQ29uc2lzdGVuY3kpOgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpUaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VGltZXJCYXNlOjp+VGltZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6
aXNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpjaGVja0hlYXBJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmhlYXBEZWxldGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGltZXJCYXNlOjpoZWFwRGVsZXRlTWluKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVy
QmFzZTo6aGVhcEluc2VydCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmhlYXBQb3BN
aW4pOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpzZXROZXh0RmlyZVRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3ApOgor
ICAgICAgICBOb3cgaW5zdGVhZCBvZiBzdGF0aWMgdGltZXIgaGVhcCB0aGVzZSB1c2UgYWNjZXNz
b3IgZnVuY3Rpb25zIHRoYXQgcHVsbCB0aHJlYWQtc3BlY2lmaWMgaGVhcCBpbnN0YW5jZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmg6CisgICAgICAgIHN0YXRpYyBtZXRob2RzIG1vdmVk
IHRvIFRocmVhZFRpbWVycy4KKwogMjAwOS0wMS0yOSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBs
ZS5jb20+CiAKICAgICAgICAgTW92ZSB0aGUgbGluZSBib3ggbGlzdCBtZW1iZXIgb3V0IG9mIFJl
bmRlckZsb3cgYW5kIGRvd24gaW50byBSZW5kZXJCbG9jayBhbmQgUmVuZGVySW5saW5lLiAgRWxp
bWluYXRlIFJlbmRlckZsb3cgZnJvbSB0aGUgdHJlZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDZhYWNkOGEuLmY2NDE3
YjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtMTI3Miw2ICsxMjcyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL1RocmVhZENoZWNrLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oIFwK
KwlXZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0v
VGhyZWFkVGltZXJzLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwIFwKIAlXZWJDb3Jl
L3BsYXRmb3JtL1RpbWVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIFwKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4
IDNiMjBhOTEuLjMxODk2OTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtOTQxLDYgKzk0MSw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwIFwKICAgICBwbGF0Zm9ybS90
ZXh0L1RleHRTdHJlYW0uY3BwIFwKICAgICBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcCBc
CisgICAgcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcCBcCiAgICAgcGxhdGZvcm0vVGltZXIuY3Bw
IFwKICAgICBwbGF0Zm9ybS90ZXh0L1VuaWNvZGVSYW5nZS5jcHAgXAogICAgIHBsYXRmb3JtL1dp
ZGdldC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnNjb25zIGIvV2ViQ29yZS9X
ZWJDb3JlLnNjb25zCmluZGV4IDI4NjE3YTUuLmQxZjkxNjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS5zY29ucworKysgYi9XZWJDb3JlL1dlYkNvcmUuc2NvbnMKQEAgLTc0Miw2ICs3NDIs
NyBAQCBzb3VyY2VzWydwbGF0Zm9ybSddID0gWwogICAgICdwbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwJywKICAgICAncGxhdGZvcm0vVGhlbWUuY3BwJywKICAgICAncGxhdGZvcm0vVGhyZWFkR2xv
YmFsRGF0YS5jcHAnLAorICAgICdwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwJywKICAgICAncGxh
dGZvcm0vVGltZXIuY3BwJywKICAgICAncGxhdGZvcm0vV2lkZ2V0LmNwcCcKIF0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDBiYmMyY2IuLjQ3MjVkMDggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzM3Niw2ICszMzc2LDE0IEBACiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XFRocmVhZFRpbWVycy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxUaHJlYWRUaW1lcnMuaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFRpbWVyLmNw
cCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDJiMWI3OTcuLmY2MzczNjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODIsNiArMTgyLDggQEAKIAkJMTRFQzI2ODAwOUNB
MDdFMDAwRTFFRUVDIC8qIEV2ZW50VGFyZ2V0Tm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEVDMjY3RTA5Q0EwN0UwMDBFMUVFRUMgLyogRXZl
bnRUYXJnZXROb2RlLmNwcCAqLzsgfTsKIAkJMTRGRkUzMUQwQUUxOTYzMzAwMTM2QkY1IC8qIEhU
TUxGcmFtZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNEZGRTMxQjBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
NEZGRTMxRTBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGRkUzMUMwQUUxOTYz
MzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCAqLzsgfTsKKwkJMTg1QkNGMjgw
RjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODVCQ0YyNjBGMzI3OUNFMDAwRUEyNjIgLyogVGhy
ZWFkVGltZXJzLmNwcCAqLzsgfTsKKwkJMTg1QkNGMjkwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVh
ZFRpbWVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oICovOyB9OwogCQkxODg2
MDRCMzBGMkU2NTRBMDAwQjY0NDMgLyogRE9NVGltZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTg4NjA0QjEwRjJFNjU0QTAwMEI2NDQzIC8qIERP
TVRpbWVyLmNwcCAqLzsgfTsKIAkJMTg4NjA0QjQwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODg2MDRC
MjBGMkU2NTRBMDAwQjY0NDMgLyogRE9NVGltZXIuaCAqLzsgfTsKIAkJMThBMDUzN0MwRjI2ODU5
QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMThBMDUzN0EwRjI2ODU5QzAwQTUxNzA1IC8qIFdvcmtlclJ1
bkxvb3AuY3BwICovOyB9OwpAQCAtNTAzNiw2ICs1MDM4LDggQEAKIAkJMTRFQzI2N0UwOUNBMDdF
MDAwRTFFRUVDIC8qIEV2ZW50VGFyZ2V0Tm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFdmVudFRhcmdldE5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNEZGRTMxQjBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEZyYW1lRWxlbWVudEJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGRkUzMUMwQUUxOTYzMzAwMTM2QkY1
IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMTg1QkNGMjYwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRUaW1lcnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxODVCQ0YyNzBGMzI3OUNFMDAwRUEyNjIgLyogVGhy
ZWFkVGltZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFRpbWVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODg2MDRCMTBGMkU2NTRBMDAwQjY0
NDMgLyogRE9NVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RE9NVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODg2MDRCMjBGMkU2
NTRBMDAwQjY0NDMgLyogRE9NVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMThBMDUzN0EwRjI2
ODU5QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV29ya2VyUnVuTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMzY5NCw2ICsxMzY5OCw4IEBACiAJCQkJNTFERjZEN0QwQjkyQTE2RDAwQzJEQzg1
IC8qIFRocmVhZENoZWNrLmggKi8sCiAJCQkJRTFGRjU3QTUwRjAxMjU2QjAwODkxRUJCIC8qIFRo
cmVhZEdsb2JhbERhdGEuY3BwICovLAogCQkJCUUxRkY1N0EyMEYwMTI1NUIwMDg5MUVCQiAvKiBU
aHJlYWRHbG9iYWxEYXRhLmggKi8sCisJCQkJMTg1QkNGMjYwRjMyNzlDRTAwMEVBMjYyIC8qIFRo
cmVhZFRpbWVycy5jcHAgKi8sCisJCQkJMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVh
ZFRpbWVycy5oICovLAogCQkJCTkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAg
Ki8sCiAJCQkJOTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8sCiAJCQkJMTQx
OUQyQzQwQ0VBNkY2MTAwRkY1MDdBIC8qIFRyZWVTaGFyZWQuaCAqLywKQEAgLTE2NjUyLDYgKzE2
NjU4LDcgQEAKIAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmplY3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1l
X3Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2RTU4MSAvKiB2
aXNpYmxlX3VuaXRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkxODVCQ0YyOTBGMzI3OUNFMDAwRUEy
NjIgLyogVGhyZWFkVGltZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE4NjI1LDYgKzE4NjMyLDcg
QEAKIAkJCQkxQTU2OUQyMjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMjQwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfcm9v
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxRDA5OUU2NDkyMDA1NkU1ODEgLyogdmlz
aWJsZV91bml0cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxODVCQ0YyODBGMzI3OUNFMDAwRUEy
NjIgLyogVGhyZWFkVGltZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlU291cmNlcy5ia2wgYi9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAppbmRleCA0
OTZiYjBhLi44NmMyMjFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAor
KysgYi9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbApAQCAtNzYzLDYgKzc2Myw3IEBAIFRoaXMg
ZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWVkZWQgdG8gYnVpbGQgV2ViQ29yZS4K
ICAgICAgICAgcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKICAgICAgICAg
cGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAogICAgICAgICBwbGF0Zm9ybS9UaHJlYWRHbG9i
YWxEYXRhLmNwcAorICAgICAgICBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCiAgICAgICAgIHBs
YXRmb3JtL1RpbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9XaWRnZXQuY3BwCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRUaW1lci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCmluZGV4
IDRjYzkwYTIuLmEwMDVhZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGlt
ZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKQEAgLTI4LDE3ICsyOCw0
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICAvLyBTaW5nbGUgdGltZXIsIHNoYXJl
ZCB0byBpbXBsZW1lbnQgYWxsIHRoZSB0aW1lcnMgbWFuYWdlZCBieSB0aGUgVGltZXIgY2xhc3Mu
CisgICAgLy8gRWFjaCB0aHJlYWQgaGFzIGl0cyBvd24gc2luZ2xlIGluc3RhbmNlIG9mIHNoYXJl
ZCB0aW1lciwgd2hpY2ggaW1wbGVtZW50cyB0aGlzIGludGVyZmFjZS4KKyAgICAvLyBUaGlzIGlu
c3RhbmNlIGlzIHNoYXJlZCBieSBhbGwgdGltZXJzIGluIHRoZSB0aHJlYWQuCiAgICAgLy8gTm90
IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHk7IHVzZSB0aGUgVGltZXIgY2xhc3MgaW5zdGVh
ZC4KKyAgICBjbGFzcyBTaGFyZWRUaW1lciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFs
IH5TaGFyZWRUaW1lcigpIHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9u
KHZvaWQgKCopKCkpID0gMDsKIAotICAgIHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9u
KHZvaWQgKCopKCkpOworICAgICAgICAvLyBUaGUgZmlyZSB0aW1lIGlzIHJlbGF0aXZlIHRvIHRo
ZSBjbGFzc2ljIFBPU0lYIGVwb2NoIG9mIEphbnVhcnkgMSwgMTk3MCwKKyAgICAgICAgLy8gYXMg
dGhlIHJlc3VsdCBvZiBjdXJyZW50VGltZSgpIGlzLgorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0
RmlyZVRpbWUoZG91YmxlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwor
ICAgIH07CiAKLSAgICAvLyBUaGUgZmlyZSB0aW1lIGlzIHJlbGF0aXZlIHRvIHRoZSBjbGFzc2lj
IFBPU0lYIGVwb2NoIG9mIEphbnVhcnkgMSwgMTk3MCwKLSAgICAvLyBhcyB0aGUgcmVzdWx0IG9m
IGN1cnJlbnRUaW1lKCkgaXMuCiAKLSAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZVRpbWUoZG91
YmxlIGZpcmVUaW1lKTsKKyAgICAvLyBJbXBsZW1lbnRlZCBieSBwb3J0IChzaW5jZSBpdCBwcm92
aWRlcyB0aGUgcnVuIGxvb3AgZm9yIHRoZSBtYWluIHRocmVhZCkuCisgICAgLy8gRklYTUU6IG1h
a2UgcG9ydHMgaW1wbGVtZW50IE1haW5UaHJlYWRTaGFyZWRUaW1lciBkaXJlY3RseSBpbnN0ZWFk
LgorICAgIHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCopKCkpOworICAg
IHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlVGltZShkb3VibGUpOwogICAgIHZvaWQgc3RvcFNoYXJl
ZFRpbWVyKCk7CiAKLX0KKyAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBTaGFyZWRUaW1lciBmb3Ig
dGhlIG1haW4gdGhyZWFkLgorICAgIGNsYXNzIE1haW5UaHJlYWRTaGFyZWRUaW1lciA6IHB1Ymxp
YyBTaGFyZWRUaW1lciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0Rmly
ZWRGdW5jdGlvbih2b2lkICgqZnVuY3Rpb24pKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNl
dFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbihmdW5jdGlvbik7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlVGltZShkb3VibGUgZmlyZVRpbWUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHNldFNoYXJlZFRpbWVyRmlyZVRpbWUoZmlyZVRpbWUpOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0b3BTaGFyZWRUaW1lcigpOworICAgICAgICB9CisgICAgfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBTaGFyZWRUaW1lcl9oCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAppbmRleCA5YmYwYmYyLi45MDNhZjY2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCisjaW5jbHVk
ZSAiVGhyZWFkVGltZXJzLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKICNpZiBV
U0UoSUNVX1VOSUNPREUpCkBAIC03MCw2ICs3MSw3IEBAIFRocmVhZEdsb2JhbERhdGE6OlRocmVh
ZEdsb2JhbERhdGEoKQogICAgIDogbV9lbXB0eVN0cmluZyhuZXcgU3RyaW5nSW1wbCkKICAgICAs
IG1fYXRvbWljU3RyaW5nVGFibGUobmV3IEhhc2hTZXQ8U3RyaW5nSW1wbCo+KQogICAgICwgbV9l
dmVudE5hbWVzKG5ldyBFdmVudE5hbWVzKQorICAgICwgbV90aHJlYWRUaW1lcnMobmV3IFRocmVh
ZFRpbWVycykKICNpZiBVU0UoSUNVX1VOSUNPREUpCiAgICAgLCBtX2NhY2hlZENvbnZlcnRlcklD
VShuZXcgSUNVQ29udmVydGVyV3JhcHBlcikKICNlbmRpZgpAQCAtOTAsNiArOTIsNyBAQCBUaHJl
YWRHbG9iYWxEYXRhOjp+VGhyZWFkR2xvYmFsRGF0YSgpCiAKICAgICBkZWxldGUgbV9ldmVudE5h
bWVzOwogICAgIGRlbGV0ZSBtX2F0b21pY1N0cmluZ1RhYmxlOworICAgIGRlbGV0ZSBtX3RocmVh
ZFRpbWVyczsKIAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSB8fCBtX2VtcHR5U3RyaW5nLT5o
YXNPbmVSZWYoKSk7IC8vIFdlIGludGVudGlvbmFsbHkgZG9uJ3QgY2xlYW4gdXAgc3RhdGljIGRh
dGEgb24gYXBwbGljYXRpb24gcXVpdCwgc28gdGhlcmUgd2lsbCBiZSBtYW55IHN0cmluZ3MgcmVt
YWluaW5nIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICBkZWxldGUgbV9lbXB0eVN0cmluZzsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKaW5kZXggMTc2MzdhYS4uN2ZhY2EzNiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIEV2ZW50TmFtZXM7CiAgICAgc3RydWN0IElDVUNvbnZlcnRlcldy
YXBwZXI7CiAgICAgc3RydWN0IFRFQ0NvbnZlcnRlcldyYXBwZXI7CisgICAgY2xhc3MgVGhyZWFk
VGltZXJzOwogCiAgICAgY2xhc3MgVGhyZWFkR2xvYmFsRGF0YSA6IE5vbmNvcHlhYmxlIHsKICAg
ICBwdWJsaWM6CkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
RXZlbnROYW1lcyYgZXZlbnROYW1lcygpIHsgcmV0dXJuICptX2V2ZW50TmFtZXM7IH0KICAgICAg
ICAgU3RyaW5nSW1wbCogZW1wdHlTdHJpbmcoKSB7IHJldHVybiBtX2VtcHR5U3RyaW5nOyB9CiAg
ICAgICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBhdG9taWNTdHJpbmdUYWJsZSgpIHsgcmV0dXJu
ICptX2F0b21pY1N0cmluZ1RhYmxlOyB9CisgICAgICAgIFRocmVhZFRpbWVycyYgdGhyZWFkVGlt
ZXJzKCkgeyByZXR1cm4gKm1fdGhyZWFkVGltZXJzOyB9CiAKICNpZiBVU0UoSUNVX1VOSUNPREUp
CiAgICAgICAgIElDVUNvbnZlcnRlcldyYXBwZXImIGNhY2hlZENvbnZlcnRlcklDVSgpIHsgcmV0
dXJuICptX2NhY2hlZENvbnZlcnRlcklDVTsgfQpAQCAtNTgsNiArNjAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFN0cmluZ0ltcGwqIG1fZW1wdHlTdHJpbmc7CiAgICAgICAgIEhh
c2hTZXQ8U3RyaW5nSW1wbCo+KiBtX2F0b21pY1N0cmluZ1RhYmxlOwogICAgICAgICBFdmVudE5h
bWVzKiBtX2V2ZW50TmFtZXM7CisgICAgICAgIFRocmVhZFRpbWVycyogbV90aHJlYWRUaW1lcnM7
CiAKICNpZiBVU0UoSUNVX1VOSUNPREUpCiAgICAgICAgIElDVUNvbnZlcnRlcldyYXBwZXIqIG1f
Y2FjaGVkQ29udmVydGVySUNVOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRU
aW1lcnMuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYTA2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUaHJlYWRUaW1lcnMuaCIKKwor
I2luY2x1ZGUgIlNoYXJlZFRpbWVyLmgiCisjaW5jbHVkZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgor
I2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworLy8gVGltZXJzIGFyZSBjcmVhdGVkLCBzdGFydGVkIGFuZCBmaXJl
ZCBvbiB0aGUgc2FtZSB0aHJlYWQsIGFuZCBlYWNoIHRocmVhZCBoYXMgaXRzIG93biBUaHJlYWRU
aW1lcnMKKy8vIGNvcHkgdG8ga2VlcCB0aGUgaGVhcCBhbmQgYSBzZXQgb2YgY3VycmVudGx5IGZp
cmluZyB0aW1lcnMuCisKK3N0YXRpYyBNYWluVGhyZWFkU2hhcmVkVGltZXIqIG1haW5UaHJlYWRT
aGFyZWRUaW1lcigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWRTaGFyZWRUaW1lciogdGltZXIg
PSBuZXcgTWFpblRocmVhZFNoYXJlZFRpbWVyOworICAgIHJldHVybiB0aW1lcjsKK30KKworVGhy
ZWFkVGltZXJzOjpUaHJlYWRUaW1lcnMoKQorICAgIDogbV9zaGFyZWRUaW1lcigwKQorICAgICwg
bV9maXJpbmdUaW1lcnMoZmFsc2UpCit7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAg
ICBzZXRTaGFyZWRUaW1lcihtYWluVGhyZWFkU2hhcmVkVGltZXIoKSk7Cit9CisKKy8vIEEgd29y
a2VyIHRocmVhZCBtYXkgaW5pdGlhbGl6ZSBTaGFyZWRUaW1lciBhZnRlciBzb21lIHRpbWVycyBh
cmUgY3JlYXRlZC4KKy8vIEFsc28sIFNoYXJlZFRpbWVyIGNhbiBiZSByZXBsYWNlZCB3aXRoIDAg
YmVmb3JlIGFsbCB0aW1lcnMgYXJlIGRlc3Ryb3llZC4KK3ZvaWQgVGhyZWFkVGltZXJzOjpzZXRT
aGFyZWRUaW1lcihTaGFyZWRUaW1lciogc2hhcmVkVGltZXIpCit7CisgICAgaWYgKG1fc2hhcmVk
VGltZXIpIHsKKyAgICAgICAgbV9zaGFyZWRUaW1lci0+c2V0RmlyZWRGdW5jdGlvbigwKTsKKyAg
ICAgICAgbV9zaGFyZWRUaW1lci0+c3RvcCgpOworICAgIH0KKyAgICAKKyAgICBtX3NoYXJlZFRp
bWVyID0gc2hhcmVkVGltZXI7CisgICAgCisgICAgaWYgKHNoYXJlZFRpbWVyKSB7CisgICAgICAg
IG1fc2hhcmVkVGltZXItPnNldEZpcmVkRnVuY3Rpb24oVGhyZWFkVGltZXJzOjpzaGFyZWRUaW1l
ckZpcmVkKTsKKyAgICAgICAgdXBkYXRlU2hhcmVkVGltZXIoKTsKKyAgICB9Cit9CisKK3ZvaWQg
VGhyZWFkVGltZXJzOjp1cGRhdGVTaGFyZWRUaW1lcigpCit7CisgICAgaWYgKCFtX3NoYXJlZFRp
bWVyKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIGlmIChtX2ZpcmluZ1RpbWVycyB8
fCBtX3RpbWVySGVhcC5pc0VtcHR5KCkpCisgICAgICAgIG1fc2hhcmVkVGltZXItPnN0b3AoKTsK
KyAgICBlbHNlCisgICAgICAgIG1fc2hhcmVkVGltZXItPnNldEZpcmVUaW1lKG1fdGltZXJIZWFw
LmZpcnN0KCktPm1fbmV4dEZpcmVUaW1lKTsKK30KKworCit2b2lkIFRocmVhZFRpbWVyczo6Y29s
bGVjdEZpcmluZ1RpbWVycyhkb3VibGUgZmlyZVRpbWUsIFZlY3RvcjxUaW1lckJhc2UqPiYgZmly
aW5nVGltZXJzKQoreworICAgIHdoaWxlICghbV90aW1lckhlYXAuaXNFbXB0eSgpICYmIG1fdGlt
ZXJIZWFwLmZpcnN0KCktPm1fbmV4dEZpcmVUaW1lIDw9IGZpcmVUaW1lKSB7CisgICAgICAgIFRp
bWVyQmFzZSogdGltZXIgPSBtX3RpbWVySGVhcC5maXJzdCgpOworICAgICAgICBmaXJpbmdUaW1l
cnMuYXBwZW5kKHRpbWVyKTsKKyAgICAgICAgbV90aW1lcnNSZWFkeVRvRmlyZS5hZGQodGltZXIp
OworICAgICAgICB0aW1lci0+bV9uZXh0RmlyZVRpbWUgPSAwOworICAgICAgICB0aW1lci0+aGVh
cERlbGV0ZU1pbigpOworICAgIH0KK30KKwordm9pZCBUaHJlYWRUaW1lcnM6OmZpcmVUaW1lcnMo
ZG91YmxlIGZpcmVUaW1lLCBjb25zdCBWZWN0b3I8VGltZXJCYXNlKj4mIGZpcmluZ1RpbWVycykK
K3sKKyAgICBzaXplX3Qgc2l6ZSA9IGZpcmluZ1RpbWVycy5zaXplKCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgIT0gc2l6ZTsgKytpKSB7CisgICAgICAgIFRpbWVyQmFzZSogdGltZXIgPSBm
aXJpbmdUaW1lcnNbaV07CisKKyAgICAgICAgLy8gSWYgbm90IGluIHRoZSBzZXQsIHRoaXMgdGlt
ZXIgaGFzIGJlZW4gZGVsZXRlZCBvciByZS1zY2hlZHVsZWQgaW4gYW5vdGhlciB0aW1lcidzIGZp
cmVkIGZ1bmN0aW9uLgorICAgICAgICAvLyBTbyBlaXRoZXIgd2UgZG9uJ3Qgd2FudCB0byBmaXJl
IGl0IGF0IGFsbCBvciB3ZSB3aWxsIGZpcmUgaXQgbmV4dCB0aW1lIHRoZSBzaGFyZWQgdGltZXIg
Z29lcyBvZmYuCisgICAgICAgIC8vIEl0IG1pZ2h0IGV2ZW4gaGF2ZSBiZWVuIGRlbGV0ZWQ7IHRo
YXQncyBPSyBiZWNhdXNlIHdlIHdvbid0IGRvIGFueXRoaW5nIGVsc2Ugd2l0aCB0aGUgcG9pbnRl
ci4KKyAgICAgICAgaWYgKCFtX3RpbWVyc1JlYWR5VG9GaXJlLmNvbnRhaW5zKHRpbWVyKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIFNldHRpbmcgdGhlIG5leHQgZmlyZSB0
aW1lIGhhcyBhIHNpZGUgZWZmZWN0IG9mIHJlbW92aW5nIHRoZSB0aW1lciBmcm9tIHRoZSBmaXJp
bmcgdGltZXJzIHNldC4KKyAgICAgICAgZG91YmxlIGludGVydmFsID0gdGltZXItPnJlcGVhdElu
dGVydmFsKCk7CisgICAgICAgIHRpbWVyLT5zZXROZXh0RmlyZVRpbWUoaW50ZXJ2YWwgPyBmaXJl
VGltZSArIGludGVydmFsIDogMCk7CisKKyAgICAgICAgLy8gT25jZSB0aGUgdGltZXIgaGFzIGJl
ZW4gZmlyZWQsIGl0IG1heSBiZSBkZWxldGVkLCBzbyBkbyBub3RoaW5nIGVsc2Ugd2l0aCBpdCBh
ZnRlciB0aGlzIHBvaW50LgorICAgICAgICB0aW1lci0+ZmlyZWQoKTsKKworICAgICAgICAvLyBD
YXRjaCB0aGUgY2FzZSB3aGVyZSB0aGUgdGltZXIgYXNrZWQgdGltZXJzIHRvIGZpcmUgaW4gYSBu
ZXN0ZWQgZXZlbnQgbG9vcC4KKyAgICAgICAgaWYgKCFtX2ZpcmluZ1RpbWVycykKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBUaHJlYWRUaW1lcnM6OnNoYXJlZFRpbWVyRmly
ZWQoKQoreworICAgIC8vIFJlZGlyZWN0IHRvIG5vbi1zdGF0aWMgbWV0aG9kLgorICAgIHRocmVh
ZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMoKS5zaGFyZWRUaW1lckZpcmVkSW50ZXJuYWwoKTsK
K30KKwordm9pZCBUaHJlYWRUaW1lcnM6OnNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpCit7Cisg
ICAgLy8gRG8gYSByZS1lbnRyYW5jeSBjaGVjay4KKyAgICBpZiAobV9maXJpbmdUaW1lcnMpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2ZpcmluZ1RpbWVycyA9IHRydWU7CisKKyAgICBkb3VibGUg
ZmlyZVRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIFZlY3RvcjxUaW1lckJhc2UqPiBmaXJpbmdU
aW1lcnM7CisKKyAgICAvLyBtX3RpbWVyc1JlYWR5VG9GaXJlIHdpbGwgaW5pdGlhbGx5IGNvbnRh
aW4gdGhlIHNhbWUgc2V0IGFzIGZpcmluZ1RpbWVycywgYnV0CisgICAgLy8gYXMgdGltZXJzIGZp
cmUgc29tZSBtYXQgYmVjb21lIHJlLXNjaGVkdWxlZCBvciBkZWxldGVkLiBUaGV5IGdldCByZW1v
dmVkIGZyb20KKyAgICAvLyBtX3RpbWVyc1JlYWR5VG9GaXJlIHNvIHdlIGNhbiBhdm9pZCBmaXJp
bmcgdGhlbS4KKyAgICBBU1NFUlQobV90aW1lcnNSZWFkeVRvRmlyZS5pc0VtcHR5KCkpOworCisg
ICAgY29sbGVjdEZpcmluZ1RpbWVycyhmaXJlVGltZSwgZmlyaW5nVGltZXJzKTsKKyAgICBmaXJl
VGltZXJzKGZpcmVUaW1lLCBmaXJpbmdUaW1lcnMpOworCisgICAgbV90aW1lcnNSZWFkeVRvRmly
ZS5jbGVhcigpOworICAgIG1fZmlyaW5nVGltZXJzID0gZmFsc2U7CisKKyAgICB1cGRhdGVTaGFy
ZWRUaW1lcigpOworfQorCit2b2lkIFRocmVhZFRpbWVyczo6ZmlyZVRpbWVyc0luTmVzdGVkRXZl
bnRMb29wKCkKK3sKKyAgICAvLyBSZXNldCB0aGUgcmVlbnRyYW5jeSBndWFyZCBzbyB0aGUgdGlt
ZXJzIGNhbiBmaXJlIGFnYWluLgorICAgIG1fZmlyaW5nVGltZXJzID0gZmFsc2U7CisgICAgbV90
aW1lcnNSZWFkeVRvRmlyZS5jbGVhcigpOworICAgIHVwZGF0ZVNoYXJlZFRpbWVyKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9U
aHJlYWRUaW1lcnMuaCBiL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY2YzMyMAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBUaHJlYWRUaW1lcl9oCisjZGVmaW5lIFRocmVhZFRpbWVyX2gK
KworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBj
bGFzcyBTaGFyZWRUaW1lcjsKKyAgICBjbGFzcyBUaW1lckJhc2U7CisKKyAgICAvLyBBIGNvbGxl
Y3Rpb24gb2YgdGltZXJzIHBlciB0aHJlYWQuIEtlcHQgaW4gVGhyZWFkR2xvYmFsRGF0YS4KKyAg
ICBjbGFzcyBUaHJlYWRUaW1lcnMgOiBOb25jb3B5YWJsZSB7CisgICAgcHVibGljOgorICAgICAg
ICBUaHJlYWRUaW1lcnMoKTsKKworICAgICAgICAvLyBPbiBhIHRocmVhZCBkaWZmZXJlbnQgdGhl
biBtYWluLCB3ZSBzaG91bGQgc2V0IHRoZSB0aHJlYWQncyBpbnN0YW5jZSBvZiB0aGUgU2hhcmVk
VGltZXIuCisgICAgICAgIHZvaWQgc2V0U2hhcmVkVGltZXIoU2hhcmVkVGltZXIqKTsKKworICAg
ICAgICBWZWN0b3I8VGltZXJCYXNlKj4mIHRpbWVySGVhcCgpIHsgcmV0dXJuIG1fdGltZXJIZWFw
OyB9CisgICAgICAgIEhhc2hTZXQ8Y29uc3QgVGltZXJCYXNlKj4mIHRpbWVyc1JlYWR5VG9GaXJl
KCkgeyByZXR1cm4gbV90aW1lcnNSZWFkeVRvRmlyZTsgfQorCisgICAgICAgIHZvaWQgdXBkYXRl
U2hhcmVkVGltZXIoKTsKKyAgICAgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3Ao
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHN0YXRpYyB2b2lkIHNoYXJlZFRpbWVyRmlyZWQo
KTsKKworICAgICAgICB2b2lkIGZpcmVUaW1lcnMoZG91YmxlIGZpcmVUaW1lLCBjb25zdCBWZWN0
b3I8VGltZXJCYXNlKj4mKTsKKyAgICAgICAgdm9pZCBjb2xsZWN0RmlyaW5nVGltZXJzKGRvdWJs
ZSBmaXJlVGltZSwgVmVjdG9yPFRpbWVyQmFzZSo+Jik7CisgICAgICAgIHZvaWQgc2hhcmVkVGlt
ZXJGaXJlZEludGVybmFsKCk7CisgICAgICAgIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRM
b29wSW50ZXJuYWwoKTsKKworICAgICAgICBWZWN0b3I8VGltZXJCYXNlKj4gbV90aW1lckhlYXA7
CisgICAgICAgIEhhc2hTZXQ8Y29uc3QgVGltZXJCYXNlKj4gbV90aW1lcnNSZWFkeVRvRmlyZTsg
Ly8gVGVtcG9yYXJpbHkgaG9sZHMgYSBwb2ludGVyIHRvIGEgc3RhY2sgb2JqZWN0LiBObyBvd25l
cnNoaXAuCisgICAgICAgIFNoYXJlZFRpbWVyKiBtX3NoYXJlZFRpbWVyOyAvLyBFeHRlcm5hbCBv
YmplY3QsIGNhbiBiZSBhIHJ1biBsb29wIG9uIGEgd29ya2VyIHRocmVhZC4gTm9ybWFsbHkgc2V0
L3Jlc2V0IGJ5IHdvcmtlciB0aHJlYWQuCisgICAgICAgIGJvb2wgbV9maXJpbmdUaW1lcnM7IC8v
IFJlZW50cmFuY3kgZ3VhcmQuCisgICAgfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKaW5k
ZXggMDA3MjE3ZC4uODgxZTQ4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyOCw4IEBACiAjaW5j
bHVkZSAiVGltZXIuaCIKIAogI2luY2x1ZGUgIlNoYXJlZFRpbWVyLmgiCisjaW5jbHVkZSAiVGhy
ZWFkR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIlRocmVhZFRpbWVycy5oIgogI2luY2x1ZGUgPGxp
bWl0cy5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxtYXRoLmg+CkBAIC00NCwxOSAr
NDcsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8KIC8vIFdoZW4gYSB0aW1lcidzICJuZXh0
IGZpcmUgdGltZSIgY2hhbmdlcywgd2UgbmVlZCB0byBtb3ZlIGl0IGFyb3VuZCBpbiB0aGUgcHJp
b3JpdHkgcXVldWUuCiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0KLQotc3RhdGljIFZlY3RvcjxUaW1l
ckJhc2UqPiogdGltZXJIZWFwOwotc3RhdGljIEhhc2hTZXQ8Y29uc3QgVGltZXJCYXNlKj4qIHRp
bWVyc1JlYWR5VG9GaXJlOworLy8gU2ltcGxlIGFjY2Vzc29ycyB0byB0aHJlYWQtc3BlY2lmaWMg
ZGF0YS4KK3N0YXRpYyBWZWN0b3I8VGltZXJCYXNlKj4mIHRpbWVySGVhcCgpCit7CisgICAgcmV0
dXJuIHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMoKS50aW1lckhlYXAoKTsKK30KIAot
Ly8gLS0tLS0tLS0tLS0tLS0tLQorc3RhdGljIEhhc2hTZXQ8Y29uc3QgVGltZXJCYXNlKj4mIHRp
bWVyc1JlYWR5VG9GaXJlKCkKK3sKKyAgICByZXR1cm4gdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVh
ZFRpbWVycygpLnRpbWVyc1JlYWR5VG9GaXJlKCk7Cit9CiAKIC8vIENsYXNzIHRvIHJlcHJlc2Vu
dCBlbGVtZW50cyBpbiB0aGUgaGVhcCB3aGVuIGNhbGxpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkg
aGVhcCBhbGdvcml0aG1zLgogLy8gTWFpbnRhaW5zIHRoZSBtX2hlYXBJbmRleCB2YWx1ZSBpbiB0
aGUgdGltZXJzIHRoZW1zZWx2ZXMsIHdoaWNoIGFsbG93cyB1cyB0byBkbyBlZmZpY2llbnQKIC8v
IG1vZGlmaWNhdGlvbiBvZiB0aGUgaGVhcC4KIGNsYXNzIFRpbWVySGVhcEVsZW1lbnQgewogcHVi
bGljOgotICAgIGV4cGxpY2l0IFRpbWVySGVhcEVsZW1lbnQoaW50IGkpIDogbV9pbmRleChpKSwg
bV90aW1lcigoKnRpbWVySGVhcClbbV9pbmRleF0pIHsgY2hlY2tDb25zaXN0ZW5jeSgpOyB9Cisg
ICAgZXhwbGljaXQgVGltZXJIZWFwRWxlbWVudChpbnQgaSkKKyAgICAgICAgOiBtX2luZGV4KGkp
CisgICAgICAgICwgbV90aW1lcih0aW1lckhlYXAoKVttX2luZGV4XSkKKyAgICB7IAorICAgICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7IAorICAgIH0KIAogICAgIFRpbWVySGVhcEVsZW1lbnQoY29u
c3QgVGltZXJIZWFwRWxlbWVudCYpOwogICAgIFRpbWVySGVhcEVsZW1lbnQmIG9wZXJhdG9yPShj
b25zdCBUaW1lckhlYXBFbGVtZW50Jik7CkBAIC02Niw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1faW5k
ZXggPj0gMCk7Ci0gICAgICAgIEFTU0VSVChtX2luZGV4IDwgKHRpbWVySGVhcCA/IHN0YXRpY19j
YXN0PGludD4odGltZXJIZWFwLT5zaXplKCkpIDogMCkpOworICAgICAgICBBU1NFUlQobV9pbmRl
eCA8IHN0YXRpY19jYXN0PGludD4odGltZXJIZWFwKCkuc2l6ZSgpKSk7CiAgICAgfQogCiBwcml2
YXRlOgpAQCAtODcsNyArOTksNyBAQCBpbmxpbmUgVGltZXJIZWFwRWxlbWVudCYgVGltZXJIZWFw
RWxlbWVudDo6b3BlcmF0b3I9KGNvbnN0IFRpbWVySGVhcEVsZW1lbnQmIG8pCiAgICAgbV90aW1l
ciA9IHQ7CiAgICAgaWYgKG1faW5kZXggIT0gLTEpIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5j
eSgpOwotICAgICAgICAoKnRpbWVySGVhcClbbV9pbmRleF0gPSB0OworICAgICAgICB0aW1lckhl
YXAoKVttX2luZGV4XSA9IHQ7CiAgICAgICAgIHQtPm1faGVhcEluZGV4ID0gbV9pbmRleDsKICAg
ICB9CiAgICAgcmV0dXJuICp0aGlzOwpAQCAtMTM0LDcgKzE0Niw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNoZWNrQ29uc2lzdGVuY3koaW50IG9mZnNldCA9IDApIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlRfVU5VU0VEKG9mZnNldCwgbV9pbmRleCArIG9mZnNldCA+PSAwKTsKLSAgICAgICAg
QVNTRVJUX1VOVVNFRChvZmZzZXQsIG1faW5kZXggKyBvZmZzZXQgPD0gKHRpbWVySGVhcCA/IHN0
YXRpY19jYXN0PGludD4odGltZXJIZWFwLT5zaXplKCkpIDogMCkpOworICAgICAgICBBU1NFUlRf
VU5VU0VEKG9mZnNldCwgbV9pbmRleCArIG9mZnNldCA8PSBzdGF0aWNfY2FzdDxpbnQ+KHRpbWVy
SGVhcCgpLnNpemUoKSkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE1MywyNyArMTY1LDE2IEBA
IGlubGluZSBpbnQgb3BlcmF0b3ItKFRpbWVySGVhcEl0ZXJhdG9yIGEsIFRpbWVySGVhcEl0ZXJh
dG9yIGIpIHsgcmV0dXJuIGEuaW5kZXgoCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCB1
cGRhdGVTaGFyZWRUaW1lcigpCi17Ci0gICAgaWYgKHRpbWVyc1JlYWR5VG9GaXJlIHx8ICF0aW1l
ckhlYXAgfHwgdGltZXJIZWFwLT5pc0VtcHR5KCkpCi0gICAgICAgIHN0b3BTaGFyZWRUaW1lcigp
OwotICAgIGVsc2UKLSAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlVGltZSh0aW1lckhlYXAtPmZp
cnN0KCktPm1fbmV4dEZpcmVUaW1lKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLQotCiBUaW1l
ckJhc2U6OlRpbWVyQmFzZSgpCi0gICAgOiBtX25leHRGaXJlVGltZSgwKSwgbV9yZXBlYXRJbnRl
cnZhbCgwKSwgbV9oZWFwSW5kZXgoLTEpCisgICAgOiBtX25leHRGaXJlVGltZSgwKQorICAgICwg
bV9yZXBlYXRJbnRlcnZhbCgwKQorICAgICwgbV9oZWFwSW5kZXgoLTEpCiB7Ci0gICAgLy8gV2Ug
b25seSBuZWVkIHRvIGRvIHRoaXMgb25jZSwgYnV0IHByb2JhYmx5IG5vdCB3b3J0aCB0cnlpbmcg
dG8gb3B0aW1pemUgaXQuCi0gICAgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHNoYXJlZFRp
bWVyRmlyZWQpOwogfQogCiBUaW1lckJhc2U6On5UaW1lckJhc2UoKQogewogICAgIHN0b3AoKTsK
LQogICAgIEFTU0VSVCghaW5IZWFwKCkpOwogfQogCkBAIC0xOTUsNyArMTk2LDcgQEAgdm9pZCBU
aW1lckJhc2U6OnN0b3AoKQogCiBib29sIFRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAogewot
ICAgIHJldHVybiBtX25leHRGaXJlVGltZSB8fCAodGltZXJzUmVhZHlUb0ZpcmUgJiYgdGltZXJz
UmVhZHlUb0ZpcmUtPmNvbnRhaW5zKHRoaXMpKTsKKyAgICByZXR1cm4gbV9uZXh0RmlyZVRpbWUg
fHwgdGltZXJzUmVhZHlUb0ZpcmUoKS5jb250YWlucyh0aGlzKTsKIH0KIAogZG91YmxlIFRpbWVy
QmFzZTo6bmV4dEZpcmVJbnRlcnZhbCgpIGNvbnN0CkBAIC0yMDksMTEgKzIxMCwxMCBAQCBkb3Vi
bGUgVGltZXJCYXNlOjpuZXh0RmlyZUludGVydmFsKCkgY29uc3QKIAogaW5saW5lIHZvaWQgVGlt
ZXJCYXNlOjpjaGVja0hlYXBJbmRleCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHRpbWVySGVhcCk7
Ci0gICAgQVNTRVJUKCF0aW1lckhlYXAtPmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCF0aW1lckhl
YXAoKS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX2hlYXBJbmRleCA+PSAwKTsKLSAgICBBU1NF
UlQobV9oZWFwSW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+KHRpbWVySGVhcC0+c2l6ZSgpKSk7Ci0g
ICAgQVNTRVJUKCgqdGltZXJIZWFwKVttX2hlYXBJbmRleF0gPT0gdGhpcyk7CisgICAgQVNTRVJU
KG1faGVhcEluZGV4IDwgc3RhdGljX2Nhc3Q8aW50Pih0aW1lckhlYXAoKS5zaXplKCkpKTsKKyAg
ICBBU1NFUlQodGltZXJIZWFwKClbbV9oZWFwSW5kZXhdID09IHRoaXMpOwogfQogCiBpbmxpbmUg
dm9pZCBUaW1lckJhc2U6OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdApAQCAtMjM2LDE1ICsyMzYs
MTUgQEAgaW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFwRGVsZXRlKCkKIHsKICAgICBBU1NFUlQo
bV9uZXh0RmlyZVRpbWUgPT0gMCk7CiAgICAgaGVhcFBvcCgpOwotICAgIHRpbWVySGVhcC0+cmVt
b3ZlTGFzdCgpOworICAgIHRpbWVySGVhcCgpLnJlbW92ZUxhc3QoKTsKICAgICBtX2hlYXBJbmRl
eCA9IC0xOwogfQogCi1pbmxpbmUgdm9pZCBUaW1lckJhc2U6OmhlYXBEZWxldGVNaW4oKQordm9p
ZCBUaW1lckJhc2U6OmhlYXBEZWxldGVNaW4oKQogewogICAgIEFTU0VSVChtX25leHRGaXJlVGlt
ZSA9PSAwKTsKICAgICBoZWFwUG9wTWluKCk7Ci0gICAgdGltZXJIZWFwLT5yZW1vdmVMYXN0KCk7
CisgICAgdGltZXJIZWFwKCkucmVtb3ZlTGFzdCgpOwogICAgIG1faGVhcEluZGV4ID0gLTE7CiB9
CiAKQEAgLTI1OCwxMCArMjU4LDggQEAgaW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFwSW5jcmVh
c2VLZXkoKQogaW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFwSW5zZXJ0KCkKIHsKICAgICBBU1NF
UlQoIWluSGVhcCgpKTsKLSAgICBpZiAoIXRpbWVySGVhcCkKLSAgICAgICAgdGltZXJIZWFwID0g
bmV3IFZlY3RvcjxUaW1lckJhc2UqPjsKLSAgICB0aW1lckhlYXAtPmFwcGVuZCh0aGlzKTsKLSAg
ICBtX2hlYXBJbmRleCA9IHRpbWVySGVhcC0+c2l6ZSgpIC0gMTsKKyAgICB0aW1lckhlYXAoKS5h
cHBlbmQodGhpcyk7CisgICAgbV9oZWFwSW5kZXggPSB0aW1lckhlYXAoKS5zaXplKCkgLSAxOwog
ICAgIGhlYXBEZWNyZWFzZUtleSgpOwogfQogCkBAIC0yNzcsMTkgKzI3NSwxOCBAQCBpbmxpbmUg
dm9pZCBUaW1lckJhc2U6OmhlYXBQb3AoKQogCiB2b2lkIFRpbWVyQmFzZTo6aGVhcFBvcE1pbigp
CiB7Ci0gICAgQVNTRVJUKHRoaXMgPT0gdGltZXJIZWFwLT5maXJzdCgpKTsKKyAgICBBU1NFUlQo
dGhpcyA9PSB0aW1lckhlYXAoKS5maXJzdCgpKTsKICAgICBjaGVja0hlYXBJbmRleCgpOwotICAg
IHBvcF9oZWFwKFRpbWVySGVhcEl0ZXJhdG9yKDApLCBUaW1lckhlYXBJdGVyYXRvcih0aW1lckhl
YXAtPnNpemUoKSkpOworICAgIHBvcF9oZWFwKFRpbWVySGVhcEl0ZXJhdG9yKDApLCBUaW1lckhl
YXBJdGVyYXRvcih0aW1lckhlYXAoKS5zaXplKCkpKTsKICAgICBjaGVja0hlYXBJbmRleCgpOwot
ICAgIEFTU0VSVCh0aGlzID09IHRpbWVySGVhcC0+bGFzdCgpKTsKKyAgICBBU1NFUlQodGhpcyA9
PSB0aW1lckhlYXAoKS5sYXN0KCkpOwogfQogCiB2b2lkIFRpbWVyQmFzZTo6c2V0TmV4dEZpcmVU
aW1lKGRvdWJsZSBuZXdUaW1lKQogewogICAgIC8vIEtlZXAgaGVhcCB2YWxpZCB3aGlsZSBjaGFu
Z2luZyB0aGUgbmV4dC1maXJlIHRpbWUuCiAKLSAgICBpZiAodGltZXJzUmVhZHlUb0ZpcmUpCi0g
ICAgICAgIHRpbWVyc1JlYWR5VG9GaXJlLT5yZW1vdmUodGhpcyk7CisgICAgdGltZXJzUmVhZHlU
b0ZpcmUoKS5yZW1vdmUodGhpcyk7CiAKICAgICBkb3VibGUgb2xkVGltZSA9IG1fbmV4dEZpcmVU
aW1lOwogICAgIGlmIChvbGRUaW1lICE9IG5ld1RpbWUpIHsKQEAgLTMxMSw3MiArMzA4LDE3IEBA
IHZvaWQgVGltZXJCYXNlOjpzZXROZXh0RmlyZVRpbWUoZG91YmxlIG5ld1RpbWUpCiAgICAgICAg
IGJvb2wgaXNGaXJzdFRpbWVySW5IZWFwID0gbV9oZWFwSW5kZXggPT0gMDsKIAogICAgICAgICBp
ZiAod2FzRmlyc3RUaW1lckluSGVhcCB8fCBpc0ZpcnN0VGltZXJJbkhlYXApCi0gICAgICAgICAg
ICB1cGRhdGVTaGFyZWRUaW1lcigpOworICAgICAgICAgICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRo
cmVhZFRpbWVycygpLnVwZGF0ZVNoYXJlZFRpbWVyKCk7CiAgICAgfQogCiAgICAgY2hlY2tDb25z
aXN0ZW5jeSgpOwogfQogCi12b2lkIFRpbWVyQmFzZTo6Y29sbGVjdEZpcmluZ1RpbWVycyhkb3Vi
bGUgZmlyZVRpbWUsIFZlY3RvcjxUaW1lckJhc2UqPiYgZmlyaW5nVGltZXJzKQotewotICAgIHdo
aWxlICghdGltZXJIZWFwLT5pc0VtcHR5KCkgJiYgdGltZXJIZWFwLT5maXJzdCgpLT5tX25leHRG
aXJlVGltZSA8PSBmaXJlVGltZSkgewotICAgICAgICBUaW1lckJhc2UqIHRpbWVyID0gdGltZXJI
ZWFwLT5maXJzdCgpOwotICAgICAgICBmaXJpbmdUaW1lcnMuYXBwZW5kKHRpbWVyKTsKLSAgICAg
ICAgdGltZXJzUmVhZHlUb0ZpcmUtPmFkZCh0aW1lcik7Ci0gICAgICAgIHRpbWVyLT5tX25leHRG
aXJlVGltZSA9IDA7Ci0gICAgICAgIHRpbWVyLT5oZWFwRGVsZXRlTWluKCk7Ci0gICAgfQotfQot
Ci12b2lkIFRpbWVyQmFzZTo6ZmlyZVRpbWVycyhkb3VibGUgZmlyZVRpbWUsIGNvbnN0IFZlY3Rv
cjxUaW1lckJhc2UqPiYgZmlyaW5nVGltZXJzKQotewotICAgIGludCBzaXplID0gZmlyaW5nVGlt
ZXJzLnNpemUoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSAhPSBzaXplOyArK2kpIHsKLSAgICAg
ICAgVGltZXJCYXNlKiB0aW1lciA9IGZpcmluZ1RpbWVyc1tpXTsKLQotICAgICAgICAvLyBJZiBu
b3QgaW4gdGhlIHNldCwgdGhpcyB0aW1lciBoYXMgYmVlbiBkZWxldGVkIG9yIHJlLXNjaGVkdWxl
ZCBpbiBhbm90aGVyIHRpbWVyJ3MgZmlyZWQgZnVuY3Rpb24uCi0gICAgICAgIC8vIFNvIGVpdGhl
ciB3ZSBkb24ndCB3YW50IHRvIGZpcmUgaXQgYXQgYWxsIG9yIHdlIHdpbGwgZmlyZSBpdCBuZXh0
IHRpbWUgdGhlIHNoYXJlZCB0aW1lciBnb2VzIG9mZi4KLSAgICAgICAgLy8gSXQgbWlnaHQgZXZl
biBoYXZlIGJlZW4gZGVsZXRlZDsgdGhhdCdzIE9LIGJlY2F1c2Ugd2Ugd29uJ3QgZG8gYW55dGhp
bmcgZWxzZSB3aXRoIHRoZSBwb2ludGVyLgotICAgICAgICBpZiAoIXRpbWVyc1JlYWR5VG9GaXJl
LT5jb250YWlucyh0aW1lcikpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBT
ZXR0aW5nIHRoZSBuZXh0IGZpcmUgdGltZSBoYXMgYSBzaWRlIGVmZmVjdCBvZiByZW1vdmluZyB0
aGUgdGltZXIgZnJvbSB0aGUgZmlyaW5nIHRpbWVycyBzZXQuCi0gICAgICAgIGRvdWJsZSBpbnRl
cnZhbCA9IHRpbWVyLT5yZXBlYXRJbnRlcnZhbCgpOwotICAgICAgICB0aW1lci0+c2V0TmV4dEZp
cmVUaW1lKGludGVydmFsID8gZmlyZVRpbWUgKyBpbnRlcnZhbCA6IDApOwotCi0gICAgICAgIC8v
IE9uY2UgdGhlIHRpbWVyIGhhcyBiZWVuIGZpcmVkLCBpdCBtYXkgYmUgZGVsZXRlZCwgc28gZG8g
bm90aGluZyBlbHNlIHdpdGggaXQgYWZ0ZXIgdGhpcyBwb2ludC4KLSAgICAgICAgdGltZXItPmZp
cmVkKCk7Ci0KLSAgICAgICAgLy8gQ2F0Y2ggdGhlIGNhc2Ugd2hlcmUgdGhlIHRpbWVyIGFza2Vk
IHRpbWVycyB0byBmaXJlIGluIGEgbmVzdGVkIGV2ZW50IGxvb3AuCi0gICAgICAgIGlmICghdGlt
ZXJzUmVhZHlUb0ZpcmUpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgVGlt
ZXJCYXNlOjpzaGFyZWRUaW1lckZpcmVkKCkKLXsKLSAgICAvLyBEbyBhIHJlLWVudHJhbmN5IGNo
ZWNrLgotICAgIGlmICh0aW1lcnNSZWFkeVRvRmlyZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
ZG91YmxlIGZpcmVUaW1lID0gY3VycmVudFRpbWUoKTsKLSAgICBWZWN0b3I8VGltZXJCYXNlKj4g
ZmlyaW5nVGltZXJzOwotICAgIEhhc2hTZXQ8Y29uc3QgVGltZXJCYXNlKj4gZmlyaW5nVGltZXJz
U2V0OwotCi0gICAgdGltZXJzUmVhZHlUb0ZpcmUgPSAmZmlyaW5nVGltZXJzU2V0OwotCi0gICAg
Y29sbGVjdEZpcmluZ1RpbWVycyhmaXJlVGltZSwgZmlyaW5nVGltZXJzKTsKLSAgICBmaXJlVGlt
ZXJzKGZpcmVUaW1lLCBmaXJpbmdUaW1lcnMpOwotCi0gICAgdGltZXJzUmVhZHlUb0ZpcmUgPSAw
OwotCi0gICAgdXBkYXRlU2hhcmVkVGltZXIoKTsKLX0KLQogdm9pZCBUaW1lckJhc2U6OmZpcmVU
aW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpCiB7Ci0gICAgdGltZXJzUmVhZHlUb0ZpcmUgPSAwOwot
ICAgIHVwZGF0ZVNoYXJlZFRpbWVyKCk7CisgICAgLy8gUmVkaXJlY3QgdG8gVGhyZWFkVGltZXJz
LgorICAgIHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMoKS5maXJlVGltZXJzSW5OZXN0
ZWRFdmVudExvb3AoKTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgK
aW5kZXggMGVlODZiMS4uYWFiNTJjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9UaW1l
ci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAtMjcsNyArMjcsNiBAQAogI2Rl
ZmluZSBUaW1lcl9oCiAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzMsMTcgKzcyLDEzIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBoZWFwUG9wKCk7CiAgICAgdm9pZCBoZWFwUG9wTWluKCk7CiAK
LSAgICBzdGF0aWMgdm9pZCBjb2xsZWN0RmlyaW5nVGltZXJzKGRvdWJsZSBmaXJlVGltZSwgVmVj
dG9yPFRpbWVyQmFzZSo+Jik7Ci0gICAgc3RhdGljIHZvaWQgZmlyZVRpbWVycyhkb3VibGUgZmly
ZVRpbWUsIGNvbnN0IFZlY3RvcjxUaW1lckJhc2UqPiYpOwotICAgIHN0YXRpYyB2b2lkIHNoYXJl
ZFRpbWVyRmlyZWQoKTsKLQogICAgIGRvdWJsZSBtX25leHRGaXJlVGltZTsgLy8gMCBpZiBpbmFj
dGl2ZQogICAgIGRvdWJsZSBtX3JlcGVhdEludGVydmFsOyAvLyAwIGlmIG5vdCByZXBlYXRpbmcK
ICAgICBpbnQgbV9oZWFwSW5kZXg7IC8vIC0xIGlmIG5vdCBpbiBoZWFwCiAgICAgdW5zaWduZWQg
bV9oZWFwSW5zZXJ0aW9uT3JkZXI7IC8vIFVzZWQgdG8ga2VlcCBvcmRlciBhbW9uZyBlcXVhbC1m
aXJlLXRpbWUgdGltZXJzCiAKLSAgICBmcmllbmQgdm9pZCB1cGRhdGVTaGFyZWRUaW1lcigpOwog
ICAgIGZyaWVuZCBjbGFzcyBUaW1lckhlYXBFbGVtZW50OworICAgIGZyaWVuZCBjbGFzcyBUaHJl
YWRUaW1lcnM7CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFRpbWVySGVhcEVsZW1l
bnQmLCBjb25zdCBUaW1lckhlYXBFbGVtZW50Jik7CiB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>