<?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>46611</bug_id>
          
          <creation_ts>2010-09-27 01:25:42 -0700</creation_ts>
          <short_desc>Web Inspector: split InspectorTimelineAgent into two parts.</short_desc>
          <delta_ts>2010-09-27 11:35:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</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>
          <dependson>46637</dependson>
          <blocked>46614</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>285363</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-09-27 01:25:42 -0700</bug_when>
    <thetext>We have an idea to split InspectorTimelineAgent into two parts.
The first part is an instrumentation API which can be used for DOM breakpoints too.
The other is the real Timeline agent which do a transformation of raw data into timeline data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285366</commentid>
    <comment_count>1</comment_count>
      <attachid>68886</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-09-27 01:27:36 -0700</bug_when>
    <thetext>Created attachment 68886
[patch] initial version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285368</commentid>
    <comment_count>2</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-09-27 01:30:38 -0700</bug_when>
    <thetext>this is the first patch for that.
In the next patches I&apos;ll rename API part of Timeline Agent to InspectorInstrumentation and fix all Timeline related places in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285369</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-27 01:34:31 -0700</bug_when>
    <thetext>Attachment 68886 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/inspector/InspectorTimelineAgent.cpp:50:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285370</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-09-27 01:41:39 -0700</bug_when>
    <thetext>It would be great to post the entire plan here. I agree that it might be worth doing more than a single patch, but we need a meta-bug to track it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285389</commentid>
    <comment_count>5</comment_count>
      <attachid>68895</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-09-27 03:23:10 -0700</bug_when>
    <thetext>Created attachment 68895
[patch] second iteration

style was fixed.
meta-bug was created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285409</commentid>
    <comment_count>6</comment_count>
      <attachid>68895</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-09-27 05:56:51 -0700</bug_when>
    <thetext>Comment on attachment 68895
[patch] second iteration

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

&gt; WebCore/inspector/InspectorTimelineAgent.cpp:49
&gt; +class InspectorTimelineAgent2 : ScriptGCEventListener, public Noncopyable {

I&apos;d rather call this one InspectorTimeline (leave the name) + Call new one InspectorInstrumentation.

&gt; WebCore/inspector/InspectorTimelineAgent.cpp:67
&gt; +        : record(record), data(data), children(children), type(type)

Use WebKit indentation.

&gt; WebCore/inspector/InspectorTimelineAgent.cpp:79
&gt; +        : startTime(startTime), endTime(endTime), collectedBytes(collectedBytes)

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285435</commentid>
    <comment_count>7</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-09-27 07:00:19 -0700</bug_when>
    <thetext>Committed r68389
	M	WebCore/ChangeLog
	M	WebCore/inspector/InspectorTimelineAgent.cpp
	M	WebCore/inspector/InspectorTimelineAgent.h
r68389 = 61bf1b14bdab882b955c90734e98974872476198 (refs/remotes/trunk)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68886</attachid>
            <date>2010-09-27 01:27:36 -0700</date>
            <delta_ts>2010-09-27 03:23:10 -0700</delta_ts>
            <desc>[patch] initial version.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>26117</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjhiYTZkMy4uNjQ4ODFjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBAQAorMjAxMC0wOS0yNyAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGl2aWRlIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQgaW50byB0d28gcGFydHMuCisKKyAgICAgICAgV2UgaGF2ZSBhbiBpZGVhIHRvIHNw
bGl0IEluc3BlY3RvclRpbWVsaW5lQWdlbnQgaW50byB0d28gcGFydHMuCisgICAgICAgIFRoZSBm
aXJzdCBwYXJ0IGlzIGFuIGluc3RydW1lbnRhdGlvbiBBUEkgd2hpY2ggY2FuIGJlIHVzZWQgZm9y
IERPTSBicmVha3BvaW50cyB0b28uCisgICAgICAgIFRoZSBvdGhlciBpcyB0aGUgcmVhbCBUaW1l
bGluZSBhZ2VudCB3aGljaCBkbyBhIHRyYW5zZm9ybWF0aW9uIG9mIHJhdyBkYXRhIGludG8gdGlt
ZWxpbmUgZGF0YS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDY2MTEKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpUaW1lbGlu
ZVJlY29yZEVudHJ5OjpUaW1lbGluZVJlY29yZEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQyOjpHQ0V2ZW50OjpHQ0V2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Mik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Mjo6fkluc3BlY3RvclRpbWVs
aW5lQWdlbnQyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpk
aWRHQyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Mjo6YWRkUmVj
b3JkVG9UaW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50
Mjo6c2V0SGVhcFNpemVTdGF0aXN0aWMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDI6OnN0YXJ0TmV3UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQyOjpjb21wbGV0ZUN1cnJlbnRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDI6OmFzeW5jUmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjphdG9taWNSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDI6OmdldFRvcFJlY29yZERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpyZXNldEZyb250ZW5kUHJveHlPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDI6OnB1c2hHQ0V2ZW50
UmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6On5JbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OndpbGxDYWxsRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6ZGlkQ2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZERpc3BhdGNoRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbExheW91dCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRMYXlvdXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFJlY2FsY3VsYXRlU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkUmVjYWxjdWxhdGVTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsUGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkUGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFdyaXRlSFRNTCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRXcml0ZUhUTUwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkSW5zdGFsbFRp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFJlbW92
ZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxG
aXJlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlk
RmlyZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Ondp
bGxDaGFuZ2VYSFJSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmRpZENoYW5nZVhIUlJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbExvYWRYSFIpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTG9hZFhIUik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFNlbmRS
ZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6ZGlkUmVjZWl2ZVJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkUmVjZWl2ZVJlc291
cmNlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmRpZE1hcmtUaW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpkaWRNYXJrRE9NQ29udGVudEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZE1hcmtMb2FkRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cmVzZXRGcm9udGVuZFByb3h5T2JqZWN0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorCiAyMDEw
LTA5LTI0ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNo
aW5pY2hpcm8gSGFtYWppLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcAppbmRleCBmYmIxN2M0Li45YzNmZTEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNDYsMTUgKzQ2LDE1MiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGludCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzX2luc3RhbmNlQ291bnQg
PSAwOwogCi1JbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KElu
c3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKLSAgICA6IG1fZnJvbnRlbmQoZnJvbnRlbmQpCitj
bGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50MiA6IFNjcmlwdEdDRXZlbnRMaXN0ZW5lciwgcHVi
bGljIE5vbmNvcHlhYmxlCit7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDIo
SW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKTsKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JUaW1l
bGluZUFnZW50MigpOworCisgICAgdm9pZCBzdGFydE5ld1JlY29yZChQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgdm9pZCBjb21wbGV0ZUN1cnJl
bnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICB2b2lkIGF0b21pY1JlY29yZChQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgdm9pZCBh
c3luY1JlY29yZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlw
ZSk7CisgICAgSW5zcGVjdG9yT2JqZWN0KiBnZXRUb3BSZWNvcmREYXRhKCk7CisgICAgdmlydHVh
bCB2b2lkIGRpZEdDKGRvdWJsZSwgZG91YmxlLCBzaXplX3QpOworCisgICAgdm9pZCByZXNldEZy
b250ZW5kUHJveHlPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKTsKKyAgICB2b2lk
IHJlc2V0KCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFRpbWVsaW5lUmVjb3JkRW50cnkgewor
ICAgICAgICBUaW1lbGluZVJlY29yZEVudHJ5KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBy
ZWNvcmQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBQYXNzUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiBjaGlsZHJlbiwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCisgICAgICAgIDog
cmVjb3JkKHJlY29yZCksIGRhdGEoZGF0YSksIGNoaWxkcmVuKGNoaWxkcmVuKSwgdHlwZSh0eXBl
KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cmVjb3JkOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhOworICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVuOworICAgICAgICBUaW1lbGluZVJlY29yZFR5
cGUgdHlwZTsKKyAgICB9OworICAgIFZlY3RvcjxUaW1lbGluZVJlY29yZEVudHJ5PiBtX3JlY29y
ZFN0YWNrOworCisgICAgc3RydWN0IEdDRXZlbnQgeworICAgICAgICBHQ0V2ZW50KGRvdWJsZSBz
dGFydFRpbWUsIGRvdWJsZSBlbmRUaW1lLCBzaXplX3QgY29sbGVjdGVkQnl0ZXMpCisgICAgICAg
IDogc3RhcnRUaW1lKHN0YXJ0VGltZSksIGVuZFRpbWUoZW5kVGltZSksIGNvbGxlY3RlZEJ5dGVz
KGNvbGxlY3RlZEJ5dGVzKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgZG91YmxlIHN0
YXJ0VGltZTsKKyAgICAgICAgZG91YmxlIGVuZFRpbWU7CisgICAgICAgIHNpemVfdCBjb2xsZWN0
ZWRCeXRlczsKKyAgICB9OworICAgIHR5cGVkZWYgVmVjdG9yPEdDRXZlbnQ+IEdDRXZlbnRzOwor
ICAgIEdDRXZlbnRzIG1fZ2NFdmVudHM7CisgICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJvbnRl
bmQ7CisKKyAgICB2b2lkIHB1c2hHQ0V2ZW50UmVjb3JkcygpOworICAgIHZvaWQgc2V0SGVhcFNp
emVTdGF0aXN0aWMoSW5zcGVjdG9yT2JqZWN0KiByZWNvcmQpOworICAgIHZvaWQgYWRkUmVjb3Jk
VG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcHJwUmVjb3JkLCBUaW1lbGlu
ZVJlY29yZFR5cGUgdHlwZSk7Cit9OworCitJbnNwZWN0b3JUaW1lbGluZUFnZW50Mjo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDIoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogewotICAgICsr
c19pbnN0YW5jZUNvdW50OworICAgIG1fZnJvbnRlbmQgPSBmcm9udGVuZDsKICAgICBTY3JpcHRH
Q0V2ZW50OjphZGRFdmVudExpc3RlbmVyKHRoaXMpOwotICAgIEFTU0VSVChtX2Zyb250ZW5kKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpwdXNoR0NFdmVudFJlY29yZHMoKQor
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDI6On5JbnNwZWN0b3JUaW1lbGluZUFnZW50MigpCit7Cisg
ICAgU2NyaXB0R0NFdmVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Mjo6ZGlkR0MoZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGVu
ZFRpbWUsIHNpemVfdCBjb2xsZWN0ZWRCeXRlc0NvdW50KQoreworICAgIG1fZ2NFdmVudHMuYXBw
ZW5kKEdDRXZlbnQoc3RhcnRUaW1lLCBlbmRUaW1lLCBjb2xsZWN0ZWRCeXRlc0NvdW50KSk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDI6OmFkZFJlY29yZFRvVGltZWxpbmUoUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBycFJlY29yZCwgVGltZWxpbmVSZWNvcmRUeXBlIHR5
cGUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkKHBycFJlY29yZCk7Cisg
ICAgcmVjb3JkLT5zZXROdW1iZXIoInR5cGUiLCB0eXBlKTsKKyAgICBzZXRIZWFwU2l6ZVN0YXRp
c3RpYyhyZWNvcmQuZ2V0KCkpOworICAgIGlmIChtX3JlY29yZFN0YWNrLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9mcm9udGVuZC0+YWRkUmVjb3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeSBwYXJlbnQgPSBtX3JlY29y
ZFN0YWNrLmxhc3QoKTsKKyAgICAgICAgcGFyZW50LmNoaWxkcmVuLT5wdXNoT2JqZWN0KHJlY29y
ZC5yZWxlYXNlKCkpOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Mjo6
c2V0SGVhcFNpemVTdGF0aXN0aWMoSW5zcGVjdG9yT2JqZWN0KiByZWNvcmQpCit7CisgICAgc2l6
ZV90IHVzZWRIZWFwU2l6ZSA9IDA7CisgICAgc2l6ZV90IHRvdGFsSGVhcFNpemUgPSAwOworICAg
IFNjcmlwdEdDRXZlbnQ6OmdldEhlYXBTaXplKHVzZWRIZWFwU2l6ZSwgdG90YWxIZWFwU2l6ZSk7
CisgICAgcmVjb3JkLT5zZXROdW1iZXIoInVzZWRIZWFwU2l6ZSIsIHVzZWRIZWFwU2l6ZSk7Cisg
ICAgcmVjb3JkLT5zZXROdW1iZXIoInRvdGFsSGVhcFNpemUiLCB0b3RhbEhlYXBTaXplKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Mjo6c3RhcnROZXdSZWNvcmQoUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQoreworICAg
IHB1c2hHQ0V2ZW50UmVjb3JkcygpOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29y
ZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJl
bnRUaW1lTVMoKSk7CisgICAgbV9yZWNvcmRTdGFjay5hcHBlbmQoVGltZWxpbmVSZWNvcmRFbnRy
eShyZWNvcmQucmVsZWFzZSgpLCBkYXRhLCBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCksIHR5cGUp
KTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Mjo6Y29tcGxldGVDdXJyZW50UmVj
b3JkKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQoreworICAgIC8vIEFuIGVtcHR5IHN0YWNrIGNv
dWxkIG1lcmVseSBtZWFuIHRoYXQgdGhlIHRpbWVsaW5lIGFnZW50IHdhcyB0dXJuZWQgb24gaW4g
dGhlIG1pZGRsZSBvZgorICAgIC8vIGFuIGV2ZW50LiAgRG9uJ3QgdHJlYXQgYXMgYW4gZXJyb3Iu
CisgICAgaWYgKCFtX3JlY29yZFN0YWNrLmlzRW1wdHkoKSkgeworICAgICAgICBwdXNoR0NFdmVu
dFJlY29yZHMoKTsKKyAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeSBlbnRyeSA9IG1fcmVjb3Jk
U3RhY2subGFzdCgpOworICAgICAgICBtX3JlY29yZFN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAg
ICAgQVNTRVJUKGVudHJ5LnR5cGUgPT0gdHlwZSk7CisgICAgICAgIGVudHJ5LnJlY29yZC0+c2V0
T2JqZWN0KCJkYXRhIiwgZW50cnkuZGF0YSk7CisgICAgICAgIGVudHJ5LnJlY29yZC0+c2V0QXJy
YXkoImNoaWxkcmVuIiwgZW50cnkuY2hpbGRyZW4pOworICAgICAgICBlbnRyeS5yZWNvcmQtPnNl
dE51bWJlcigiZW5kVGltZSIsIFdURjo6Y3VycmVudFRpbWVNUygpKTsKKyAgICAgICAgYWRkUmVj
b3JkVG9UaW1lbGluZShlbnRyeS5yZWNvcmQsIHR5cGUpOworICAgIH0KK30KKwordm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Mjo6YXN5bmNSZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlwZSByZWNvcmRUeXBlKQoreworICAgIHB1c2hHQ0V2
ZW50UmVjb3JkcygpOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IFRpbWVs
aW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJlbnRUaW1lTVMo
KSk7CisgICAgcmVjb3JkLT5zZXRPYmplY3QoImRhdGEiLCBkYXRhKTsKKyAgICByZWNvcmQtPnNl
dE51bWJlcigidHlwZSIsIHJlY29yZFR5cGUpOworICAgIHNldEhlYXBTaXplU3RhdGlzdGljKHJl
Y29yZC5nZXQoKSk7CisgICAgbV9mcm9udGVuZC0+YWRkUmVjb3JkVG9UaW1lbGluZShyZWNvcmQu
cmVsZWFzZSgpKTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Mjo6YXRvbWljUmVj
b3JkKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBUaW1lbGluZVJlY29yZFR5cGUg
cmVjb3JkVHlwZSkKK3sKKyAgICBwdXNoR0NFdmVudFJlY29yZHMoKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVy
aWNSZWNvcmQoV1RGOjpjdXJyZW50VGltZU1TKCkpOworICAgIHJlY29yZC0+c2V0T2JqZWN0KCJk
YXRhIiwgZGF0YSk7CisgICAgYWRkUmVjb3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgpLCBy
ZWNvcmRUeXBlKTsKK30KKworSW5zcGVjdG9yT2JqZWN0KiBJbnNwZWN0b3JUaW1lbGluZUFnZW50
Mjo6Z2V0VG9wUmVjb3JkRGF0YSgpCit7CisgICAgaWYgKG1fcmVjb3JkU3RhY2suaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9yZWNvcmRTdGFjay5sYXN0KCkuZGF0
YS5nZXQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Mjo6cmVzZXQoKQorewor
ICAgIG1fcmVjb3JkU3RhY2suY2xlYXIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50Mjo6cmVzZXRGcm9udGVuZFByb3h5T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVu
ZCkKK3sKKyAgICBBU1NFUlQoZnJvbnRlbmQpOworICAgIHJlc2V0KCk7CisgICAgbV9mcm9udGVu
ZCA9IGZyb250ZW5kOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpwdXNoR0NF
dmVudFJlY29yZHMoKQogewogICAgIGlmICghbV9nY0V2ZW50cy5zaXplKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTY5LDI2NyArMjA2LDE5MyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OnB1c2hHQ0V2ZW50UmVjb3JkcygpCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpZEdDKGRvdWJsZSBzdGFydFRpbWUsIGRvdWJsZSBlbmRUaW1lLCBzaXplX3QgY29s
bGVjdGVkQnl0ZXNDb3VudCkKK0luc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogewotICAgIG1fZ2NFdmVudHMu
YXBwZW5kKEdDRXZlbnQoc3RhcnRUaW1lLCBlbmRUaW1lLCBjb2xsZWN0ZWRCeXRlc0NvdW50KSk7
CisgICAgKytzX2luc3RhbmNlQ291bnQ7CisgICAgbV90aW1lbGluZUFnZW50ID0gbmV3IEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQyKGZyb250ZW5kKTsKIH0KIAogSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6fkluc3BlY3RvclRpbWVsaW5lQWdlbnQoKQogewogICAgIEFTU0VSVChzX2luc3RhbmNlQ291
bnQpOwogICAgIC0tc19pbnN0YW5jZUNvdW50OwotICAgIFNjcmlwdEdDRXZlbnQ6OnJlbW92ZUV2
ZW50TGlzdGVuZXIodGhpcyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cmVz
ZXQoKQoreworICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCisgICAgICAgIG1fdGltZWxpbmVBZ2Vu
dC0+cmVzZXQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsQ2FsbEZ1
bmN0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpCiB7Ci0gICAg
cHVzaEN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVGdW5jdGlvbkNh
bGxEYXRhKHNjcmlwdE5hbWUsIHNjcmlwdExpbmUpLCBGdW5jdGlvbkNhbGxUaW1lbGluZVJlY29y
ZFR5cGUpOworICAgIG1fdGltZWxpbmVBZ2VudC0+c3RhcnROZXdSZWNvcmQoVGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVGdW5jdGlvbkNhbGxEYXRhKHNjcmlwdE5hbWUsIHNjcmlwdExpbmUp
LCBGdW5jdGlvbkNhbGxUaW1lbGluZVJlY29yZFR5cGUpOwogfQogCiB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmRpZENhbGxGdW5jdGlvbigpCiB7Ci0gICAgZGlkQ29tcGxldGVDdXJyZW50
UmVjb3JkKEZ1bmN0aW9uQ2FsbFRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgbV90aW1lbGluZUFn
ZW50LT5jb21wbGV0ZUN1cnJlbnRSZWNvcmQoRnVuY3Rpb25DYWxsVGltZWxpbmVSZWNvcmRUeXBl
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGlzcGF0Y2hFdmVudChj
b25zdCBFdmVudCYgZXZlbnQpCiB7Ci0gICAgcHVzaEN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVFdmVudERpc3BhdGNoRGF0YShldmVudCksCi0gICAgICAgIEV2ZW50
RGlzcGF0Y2hUaW1lbGluZVJlY29yZFR5cGUpOworICAgIG1fdGltZWxpbmVBZ2VudC0+c3RhcnRO
ZXdSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVFdmVudERpc3BhdGNoRGF0YShl
dmVudCksIEV2ZW50RGlzcGF0Y2hUaW1lbGluZVJlY29yZFR5cGUpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZERpc3BhdGNoRXZlbnQoKQogewotICAgIGRpZENvbXBsZXRl
Q3VycmVudFJlY29yZChFdmVudERpc3BhdGNoVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICBtX3Rp
bWVsaW5lQWdlbnQtPmNvbXBsZXRlQ3VycmVudFJlY29yZChFdmVudERpc3BhdGNoVGltZWxpbmVS
ZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsTGF5b3V0
KCkKIHsKLSAgICBwdXNoQ3VycmVudFJlY29yZChJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpLCBM
YXlvdXRUaW1lbGluZVJlY29yZFR5cGUpOworICAgIG1fdGltZWxpbmVBZ2VudC0+c3RhcnROZXdS
ZWNvcmQoSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSwgTGF5b3V0VGltZWxpbmVSZWNvcmRUeXBl
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRMYXlvdXQoKQogewotICAg
IGRpZENvbXBsZXRlQ3VycmVudFJlY29yZChMYXlvdXRUaW1lbGluZVJlY29yZFR5cGUpOworICAg
IG1fdGltZWxpbmVBZ2VudC0+Y29tcGxldGVDdXJyZW50UmVjb3JkKExheW91dFRpbWVsaW5lUmVj
b3JkVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFJlY2FsY3Vs
YXRlU3R5bGUoKQogewotICAgIHB1c2hDdXJyZW50UmVjb3JkKEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCksIFJlY2FsY3VsYXRlU3R5bGVzVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICBtX3RpbWVs
aW5lQWdlbnQtPnN0YXJ0TmV3UmVjb3JkKEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCksIFJlY2Fs
Y3VsYXRlU3R5bGVzVGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpkaWRSZWNhbGN1bGF0ZVN0eWxlKCkKIHsKLSAgICBkaWRDb21wbGV0ZUN1cnJl
bnRSZWNvcmQoUmVjYWxjdWxhdGVTdHlsZXNUaW1lbGluZVJlY29yZFR5cGUpOworICAgIG1fdGlt
ZWxpbmVBZ2VudC0+Y29tcGxldGVDdXJyZW50UmVjb3JkKFJlY2FsY3VsYXRlU3R5bGVzVGltZWxp
bmVSZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsUGFp
bnQoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBwdXNoQ3VycmVudFJlY29yZChUaW1lbGlu
ZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVBhaW50RGF0YShyZWN0KSwgUGFpbnRUaW1lbGluZVJlY29y
ZFR5cGUpOworICAgIG1fdGltZWxpbmVBZ2VudC0+c3RhcnROZXdSZWNvcmQoVGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVQYWludERhdGEocmVjdCksIFBhaW50VGltZWxpbmVSZWNvcmRUeXBl
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRQYWludCgpCiB7Ci0gICAg
ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFBhaW50VGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICBt
X3RpbWVsaW5lQWdlbnQtPmNvbXBsZXRlQ3VycmVudFJlY29yZChQYWludFRpbWVsaW5lUmVjb3Jk
VHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFdyaXRlSFRNTCh1
bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lKQogewotICAgIHB1c2hD
dXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUGFyc2VIVE1MRGF0YShs
ZW5ndGgsIHN0YXJ0TGluZSksIFBhcnNlSFRNTFRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgbV90
aW1lbGluZUFnZW50LT5zdGFydE5ld1JlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0
ZVBhcnNlSFRNTERhdGEobGVuZ3RoLCBzdGFydExpbmUpLCBQYXJzZUhUTUxUaW1lbGluZVJlY29y
ZFR5cGUpOwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFdyaXRlSFRNTCh1
bnNpZ25lZCBpbnQgZW5kTGluZSkKIHsKLSAgICBpZiAoIW1fcmVjb3JkU3RhY2suaXNFbXB0eSgp
KSB7Ci0gICAgICAgIFRpbWVsaW5lUmVjb3JkRW50cnkgZW50cnkgPSBtX3JlY29yZFN0YWNrLmxh
c3QoKTsKLSAgICAgICAgZW50cnkuZGF0YS0+c2V0TnVtYmVyKCJlbmRMaW5lIiwgZW5kTGluZSk7
Ci0gICAgICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZChQYXJzZUhUTUxUaW1lbGluZVJlY29y
ZFR5cGUpOworICAgIEluc3BlY3Rvck9iamVjdCogZGF0YSA9IG1fdGltZWxpbmVBZ2VudC0+Z2V0
VG9wUmVjb3JkRGF0YSgpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIGRhdGEtPnNldE51bWJl
cigiZW5kTGluZSIsIGVuZExpbmUpOworICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPmNvbXBsZXRl
Q3VycmVudFJlY29yZChQYXJzZUhUTUxUaW1lbGluZVJlY29yZFR5cGUpOwogICAgIH0KIH0KIAog
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRJbnN0YWxsVGltZXIoaW50IHRpbWVySWQs
IGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCiB7Ci0gICAgcHVzaEdDRXZlbnRSZWNvcmRz
KCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkID0gVGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKFdURjo6Y3VycmVudFRpbWVNUygpKTsKLSAgICBy
ZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlVGlt
ZXJJbnN0YWxsRGF0YSh0aW1lcklkLCB0aW1lb3V0LCBzaW5nbGVTaG90KSk7Ci0gICAgYWRkUmVj
b3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgpLCBUaW1lckluc3RhbGxUaW1lbGluZVJlY29y
ZFR5cGUpOworICAgIG1fdGltZWxpbmVBZ2VudC0+YXRvbWljUmVjb3JkKFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeTo6Y3JlYXRlVGltZXJJbnN0YWxsRGF0YSh0aW1lcklkLCB0aW1lb3V0LCBzaW5nbGVT
aG90KSwgVGltZXJJbnN0YWxsVGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpkaWRSZW1vdmVUaW1lcihpbnQgdGltZXJJZCkKIHsKLSAgICBwdXNo
R0NFdmVudFJlY29yZHMoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBU
aW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoV1RGOjpjdXJyZW50VGlt
ZU1TKCkpOwotICAgIHJlY29yZC0+c2V0T2JqZWN0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRGYWN0
b3J5OjpjcmVhdGVHZW5lcmljVGltZXJEYXRhKHRpbWVySWQpKTsKLSAgICBhZGRSZWNvcmRUb1Rp
bWVsaW5lKHJlY29yZC5yZWxlYXNlKCksIFRpbWVyUmVtb3ZlVGltZWxpbmVSZWNvcmRUeXBlKTsK
KyAgICBtX3RpbWVsaW5lQWdlbnQtPmF0b21pY1JlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6
OmNyZWF0ZUdlbmVyaWNUaW1lckRhdGEodGltZXJJZCksIFRpbWVyUmVtb3ZlVGltZWxpbmVSZWNv
cmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRmlyZVRpbWVy
KGludCB0aW1lcklkKQogewotICAgIHB1c2hDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFj
dG9yeTo6Y3JlYXRlR2VuZXJpY1RpbWVyRGF0YSh0aW1lcklkKSwgVGltZXJGaXJlVGltZWxpbmVS
ZWNvcmRUeXBlKTsKKyAgICBtX3RpbWVsaW5lQWdlbnQtPnN0YXJ0TmV3UmVjb3JkKFRpbWVsaW5l
UmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1RpbWVyRGF0YSh0aW1lcklkKSwgVGltZXJGaXJl
VGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpk
aWRGaXJlVGltZXIoKQogewotICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lckZpcmVU
aW1lbGluZVJlY29yZFR5cGUpOworICAgIG1fdGltZWxpbmVBZ2VudC0+Y29tcGxldGVDdXJyZW50
UmVjb3JkKFRpbWVyRmlyZVRpbWVsaW5lUmVjb3JkVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6d2lsbENoYW5nZVhIUlJlYWR5U3RhdGUoY29uc3QgU3RyaW5nJiB1cmws
IGludCByZWFkeVN0YXRlKQogewotICAgIHB1c2hDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeTo6Y3JlYXRlWEhSUmVhZHlTdGF0ZUNoYW5nZURhdGEodXJsLCByZWFkeVN0YXRlKSwg
WEhSUmVhZHlTdGF0ZUNoYW5nZVJlY29yZFR5cGUpOworICAgIG1fdGltZWxpbmVBZ2VudC0+c3Rh
cnROZXdSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVYSFJSZWFkeVN0YXRlQ2hh
bmdlRGF0YSh1cmwsIHJlYWR5U3RhdGUpLCBYSFJSZWFkeVN0YXRlQ2hhbmdlUmVjb3JkVHlwZSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0
ZSgpCiB7Ci0gICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFhIUlJlYWR5U3RhdGVDaGFuZ2VS
ZWNvcmRUeXBlKTsKKyAgICBtX3RpbWVsaW5lQWdlbnQtPmNvbXBsZXRlQ3VycmVudFJlY29yZChY
SFJSZWFkeVN0YXRlQ2hhbmdlUmVjb3JkVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6d2lsbExvYWRYSFIoY29uc3QgU3RyaW5nJiB1cmwpIAogewotICAgIHB1c2hDdXJy
ZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlWEhSTG9hZERhdGEodXJsKSwg
WEhSTG9hZFJlY29yZFR5cGUpOworICAgIG1fdGltZWxpbmVBZ2VudC0+c3RhcnROZXdSZWNvcmQo
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVYSFJMb2FkRGF0YSh1cmwpLCBYSFJMb2FkUmVj
b3JkVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTG9hZFhIUigp
CiB7Ci0gICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFhIUkxvYWRSZWNvcmRUeXBlKTsKKyAg
ICBtX3RpbWVsaW5lQWdlbnQtPmNvbXBsZXRlQ3VycmVudFJlY29yZChYSFJMb2FkUmVjb3JkVHlw
ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbEV2YWx1YXRlU2NyaXB0
KGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcikKIHsKLSAgICBwdXNoQ3VycmVudFJl
Y29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUV2YWx1YXRlU2NyaXB0RGF0YSh1cmws
IGxpbmVOdW1iZXIpLCBFdmFsdWF0ZVNjcmlwdFRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgbV90
aW1lbGluZUFnZW50LT5zdGFydE5ld1JlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0
ZUV2YWx1YXRlU2NyaXB0RGF0YSh1cmwsIGxpbmVOdW1iZXIpLCBFdmFsdWF0ZVNjcmlwdFRpbWVs
aW5lUmVjb3JkVHlwZSk7CiB9CiAgICAgCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRp
ZEV2YWx1YXRlU2NyaXB0KCkKIHsKLSAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoRXZhbHVh
dGVTY3JpcHRUaW1lbGluZVJlY29yZFR5cGUpOworICAgIG1fdGltZWxpbmVBZ2VudC0+Y29tcGxl
dGVDdXJyZW50UmVjb3JkKEV2YWx1YXRlU2NyaXB0VGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdChj
b25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBwdXNoR0NFdmVudFJlY29yZHMoKTsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0
ZUdlbmVyaWNSZWNvcmQoV1RGOjpjdXJyZW50VGltZU1TKCkpOwotICAgIHJlY29yZC0+c2V0T2Jq
ZWN0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVTY2hlZHVsZVJlc291cmNl
UmVxdWVzdERhdGEodXJsKSk7Ci0gICAgcmVjb3JkLT5zZXROdW1iZXIoInR5cGUiLCBTY2hlZHVs
ZVJlc291cmNlUmVxdWVzdFRpbWVsaW5lUmVjb3JkVHlwZSk7Ci0gICAgYWRkUmVjb3JkVG9UaW1l
bGluZShyZWNvcmQucmVsZWFzZSgpLCBTY2hlZHVsZVJlc291cmNlUmVxdWVzdFRpbWVsaW5lUmVj
b3JkVHlwZSk7CisgICAgbV90aW1lbGluZUFnZW50LT5hdG9taWNSZWNvcmQoVGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVTY2hlZHVsZVJlc291cmNlUmVxdWVzdERhdGEodXJsKSwgU2NoZWR1
bGVSZXNvdXJjZVJlcXVlc3RUaW1lbGluZVJlY29yZFR5cGUpOwogfQogCi12b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgYm9vbCBpc01haW5SZXNvdXJjZSwKLSAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxTZW5kUmVzb3VyY2VS
ZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHB1c2hHQ0V2ZW50UmVjb3Jkcygp
OwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IFRpbWVsaW5lUmVjb3JkRmFj
dG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJlbnRUaW1lTVMoKSk7Ci0gICAgcmVj
b3JkLT5zZXRPYmplY3QoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291
cmNlU2VuZFJlcXVlc3REYXRhKGlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlLCByZXF1ZXN0KSk7
Ci0gICAgcmVjb3JkLT5zZXROdW1iZXIoInR5cGUiLCBSZXNvdXJjZVNlbmRSZXF1ZXN0VGltZWxp
bmVSZWNvcmRUeXBlKTsKLSAgICBzZXRIZWFwU2l6ZVN0YXRpc3RpYyhyZWNvcmQuZ2V0KCkpOwot
ICAgIG1fZnJvbnRlbmQtPmFkZFJlY29yZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2UoKSk7Cisg
ICAgbV90aW1lbGluZUFnZW50LT5hc3luY1JlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNy
ZWF0ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKGlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlLCBy
ZXF1ZXN0KSwgUmVzb3VyY2VTZW5kUmVxdWVzdFRpbWVsaW5lUmVjb3JkVHlwZSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKQogewotICAgIHB1c2hDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlUmVjZWl2ZVJlc291cmNlRGF0YShpZGVudGlmaWVyKSwgUmVjZWl2
ZVJlc291cmNlRGF0YVRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgbV90aW1lbGluZUFnZW50LT5z
dGFydE5ld1JlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlY2VpdmVSZXNvdXJj
ZURhdGEoaWRlbnRpZmllciksIFJlY2VpdmVSZXNvdXJjZURhdGFUaW1lbGluZVJlY29yZFR5cGUp
OwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFJlY2VpdmVSZXNvdXJjZURh
dGEoKQogewotICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZChSZWNlaXZlUmVzb3VyY2VEYXRh
VGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICBtX3RpbWVsaW5lQWdlbnQtPmNvbXBsZXRlQ3VycmVu
dFJlY29yZChSZWNlaXZlUmVzb3VyY2VEYXRhVGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KICAgICAK
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7Ci0gICAgcHVzaEN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVh
dGVSZXNvdXJjZVJlY2VpdmVSZXNwb25zZURhdGEoaWRlbnRpZmllciwgcmVzcG9uc2UpLCBSZXNv
dXJjZVJlY2VpdmVSZXNwb25zZVRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgbV90aW1lbGluZUFn
ZW50LT5zdGFydE5ld1JlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNl
UmVjZWl2ZVJlc3BvbnNlRGF0YShpZGVudGlmaWVyLCByZXNwb25zZSksIFJlc291cmNlUmVjZWl2
ZVJlc3BvbnNlVGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSgpCiB7Ci0gICAgZGlkQ29tcGxldGVD
dXJyZW50UmVjb3JkKFJlc291cmNlUmVjZWl2ZVJlc3BvbnNlVGltZWxpbmVSZWNvcmRUeXBlKTsK
KyAgICBtX3RpbWVsaW5lQWdlbnQtPmNvbXBsZXRlQ3VycmVudFJlY29yZChSZXNvdXJjZVJlY2Vp
dmVSZXNwb25zZVRpbWVsaW5lUmVjb3JkVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgYm9vbCBkaWRGYWlsKQogewotICAgIHB1c2hHQ0V2ZW50UmVjb3JkcygpOwotICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRl
R2VuZXJpY1JlY29yZChXVEY6OmN1cnJlbnRUaW1lTVMoKSk7Ci0gICAgcmVjb3JkLT5zZXRPYmpl
Y3QoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlRmluaXNoRGF0
YShpZGVudGlmaWVyLCBkaWRGYWlsKSk7Ci0gICAgcmVjb3JkLT5zZXROdW1iZXIoInR5cGUiLCBS
ZXNvdXJjZUZpbmlzaFRpbWVsaW5lUmVjb3JkVHlwZSk7Ci0gICAgc2V0SGVhcFNpemVTdGF0aXN0
aWMocmVjb3JkLmdldCgpKTsKLSAgICBtX2Zyb250ZW5kLT5hZGRSZWNvcmRUb1RpbWVsaW5lKHJl
Y29yZC5yZWxlYXNlKCkpOworICAgIG1fdGltZWxpbmVBZ2VudC0+YXN5bmNSZWNvcmQoVGltZWxp
bmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVSZXNvdXJjZUZpbmlzaERhdGEoaWRlbnRpZmllciwgZGlk
RmFpbCksIFJlc291cmNlRmluaXNoVGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpkaWRNYXJrVGltZWxpbmUoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewotICAgIHB1c2hHQ0V2ZW50UmVjb3JkcygpOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHJlY29yZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChX
VEY6OmN1cnJlbnRUaW1lTVMoKSk7Ci0gICAgcmVjb3JkLT5zZXRPYmplY3QoImRhdGEiLCBUaW1l
bGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZU1hcmtUaW1lbGluZURhdGEobWVzc2FnZSkpOwotICAg
IGFkZFJlY29yZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2UoKSwgTWFya1RpbWVsaW5lUmVjb3Jk
VHlwZSk7CisgICAgbV90aW1lbGluZUFnZW50LT5hdG9taWNSZWNvcmQoVGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVNYXJrVGltZWxpbmVEYXRhKG1lc3NhZ2UpLCBNYXJrVGltZWxpbmVSZWNv
cmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRNYXJrRE9NQ29u
dGVudEV2ZW50KCkKIHsKLSAgICBwdXNoR0NFdmVudFJlY29yZHMoKTsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVy
aWNSZWNvcmQoV1RGOjpjdXJyZW50VGltZU1TKCkpOwotICAgIGFkZFJlY29yZFRvVGltZWxpbmUo
cmVjb3JkLnJlbGVhc2UoKSwgTWFya0RPTUNvbnRlbnRFdmVudFR5cGUpOworICAgIG1fdGltZWxp
bmVBZ2VudC0+YXRvbWljUmVjb3JkKEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCksIE1hcmtET01D
b250ZW50RXZlbnRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRN
YXJrTG9hZEV2ZW50KCkKIHsKLSAgICBwdXNoR0NFdmVudFJlY29yZHMoKTsKLSAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdl
bmVyaWNSZWNvcmQoV1RGOjpjdXJyZW50VGltZU1TKCkpOwotICAgIGFkZFJlY29yZFRvVGltZWxp
bmUocmVjb3JkLnJlbGVhc2UoKSwgTWFya0xvYWRFdmVudFR5cGUpOwotfQotCi12b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OnJlc2V0KCkKLXsKLSAgICBtX3JlY29yZFN0YWNrLmNsZWFyKCk7
CisgICAgbV90aW1lbGluZUFnZW50LT5hdG9taWNSZWNvcmQoSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKSwgTWFya0xvYWRFdmVudFR5cGUpOwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnJlc2V0RnJvbnRlbmRQcm94eU9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQp
CiB7Ci0gICAgQVNTRVJUKGZyb250ZW5kKTsKLSAgICByZXNldCgpOwotICAgIG1fZnJvbnRlbmQg
PSBmcm9udGVuZDsKLX0KLQotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjphZGRSZWNvcmRU
b1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwcnBSZWNvcmQsIFRpbWVsaW5l
UmVjb3JkVHlwZSB0eXBlKQotewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZChw
cnBSZWNvcmQpOwotICAgIHJlY29yZC0+c2V0TnVtYmVyKCJ0eXBlIiwgdHlwZSk7Ci0gICAgc2V0
SGVhcFNpemVTdGF0aXN0aWMocmVjb3JkLmdldCgpKTsKLSAgICBpZiAobV9yZWNvcmRTdGFjay5p
c0VtcHR5KCkpCi0gICAgICAgIG1fZnJvbnRlbmQtPmFkZFJlY29yZFRvVGltZWxpbmUocmVjb3Jk
LnJlbGVhc2UoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFRpbWVsaW5lUmVjb3JkRW50cnkgcGFy
ZW50ID0gbV9yZWNvcmRTdGFjay5sYXN0KCk7Ci0gICAgICAgIHBhcmVudC5jaGlsZHJlbi0+cHVz
aE9iamVjdChyZWNvcmQucmVsZWFzZSgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6c2V0SGVhcFNpemVTdGF0aXN0aWMoSW5zcGVjdG9yT2JqZWN0KiByZWNvcmQp
Ci17Ci0gICAgc2l6ZV90IHVzZWRIZWFwU2l6ZSA9IDA7Ci0gICAgc2l6ZV90IHRvdGFsSGVhcFNp
emUgPSAwOwotICAgIFNjcmlwdEdDRXZlbnQ6OmdldEhlYXBTaXplKHVzZWRIZWFwU2l6ZSwgdG90
YWxIZWFwU2l6ZSk7Ci0gICAgcmVjb3JkLT5zZXROdW1iZXIoInVzZWRIZWFwU2l6ZSIsIHVzZWRI
ZWFwU2l6ZSk7Ci0gICAgcmVjb3JkLT5zZXROdW1iZXIoInRvdGFsSGVhcFNpemUiLCB0b3RhbEhl
YXBTaXplKTsKKyAgICBtX3RpbWVsaW5lQWdlbnQtPnJlc2V0RnJvbnRlbmRQcm94eU9iamVjdChm
cm9udGVuZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVD
dXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQotewotICAgIC8vIEFuIGVtcHR5
IHN0YWNrIGNvdWxkIG1lcmVseSBtZWFuIHRoYXQgdGhlIHRpbWVsaW5lIGFnZW50IHdhcyB0dXJu
ZWQgb24gaW4gdGhlIG1pZGRsZSBvZgotICAgIC8vIGFuIGV2ZW50LiAgRG9uJ3QgdHJlYXQgYXMg
YW4gZXJyb3IuCi0gICAgaWYgKCFtX3JlY29yZFN0YWNrLmlzRW1wdHkoKSkgewotICAgICAgICBw
dXNoR0NFdmVudFJlY29yZHMoKTsKLSAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeSBlbnRyeSA9
IG1fcmVjb3JkU3RhY2subGFzdCgpOwotICAgICAgICBtX3JlY29yZFN0YWNrLnJlbW92ZUxhc3Qo
KTsKLSAgICAgICAgQVNTRVJUKGVudHJ5LnR5cGUgPT0gdHlwZSk7Ci0gICAgICAgIGVudHJ5LnJl
Y29yZC0+c2V0T2JqZWN0KCJkYXRhIiwgZW50cnkuZGF0YSk7Ci0gICAgICAgIGVudHJ5LnJlY29y
ZC0+c2V0QXJyYXkoImNoaWxkcmVuIiwgZW50cnkuY2hpbGRyZW4pOwotICAgICAgICBlbnRyeS5y
ZWNvcmQtPnNldE51bWJlcigiZW5kVGltZSIsIFdURjo6Y3VycmVudFRpbWVNUygpKTsKLSAgICAg
ICAgYWRkUmVjb3JkVG9UaW1lbGluZShlbnRyeS5yZWNvcmQsIHR5cGUpOwotICAgIH0KLX0KLQot
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpwdXNoQ3VycmVudFJlY29yZChQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCi17Ci0gICAg
cHVzaEdDRXZlbnRSZWNvcmRzKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3Jk
ID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKFdURjo6Y3VycmVu
dFRpbWVNUygpKTsKLSAgICBtX3JlY29yZFN0YWNrLmFwcGVuZChUaW1lbGluZVJlY29yZEVudHJ5
KHJlY29yZC5yZWxlYXNlKCksIGRhdGEsIEluc3BlY3RvckFycmF5OjpjcmVhdGUoKSwgdHlwZSkp
OwotfQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
aCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCA0MTBl
MTg5Li45ZGUzYzRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW50
UmVjdDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Citj
bGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50MjsKIAogLy8gTXVzdCBiZSBrZXB0IGluIHN5bmMg
d2l0aCBUaW1lbGluZUFnZW50LmpzCiBlbnVtIFRpbWVsaW5lUmVjb3JkVHlwZSB7CkBAIC03Myw3
ICs3NCw3IEBAIGVudW0gVGltZWxpbmVSZWNvcmRUeXBlIHsKICAgICBYSFJTZW5kUmVjb3JkVHlw
ZSA9IDIxCiB9OwogCi1jbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50IDogU2NyaXB0R0NFdmVu
dExpc3RlbmVyLCBwdWJsaWMgTm9uY29weWFibGUgeworY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpOwogICAgIH5JbnNwZWN0b3JUaW1l
bGluZUFnZW50KCk7CkBAIC0xMjYsNDggKzEyNywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nUmVzb3VyY2UodW5zaWduZWQgbG9uZywgYm9vbCBkaWRGYWlsKTsKICAgICB2
b2lkIHdpbGxSZWNlaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRHQyhkb3VibGUsIGRvdWJsZSwgc2l6ZV90KTsKIAogICAgIHN0YXRpYyBpbnQgaW5z
dGFuY2VDb3VudCgpIHsgcmV0dXJuIHNfaW5zdGFuY2VDb3VudDsgfQogICAgIHN0YXRpYyBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiByZXRyaWV2ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAK
IHByaXZhdGU6Ci0gICAgc3RydWN0IFRpbWVsaW5lUmVjb3JkRW50cnkgewotICAgICAgICBUaW1l
bGluZVJlY29yZEVudHJ5KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBj
aGlsZHJlbiwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCi0gICAgICAgICAgICA6IHJlY29yZChy
ZWNvcmQpLCBkYXRhKGRhdGEpLCBjaGlsZHJlbihjaGlsZHJlbiksIHR5cGUodHlwZSkKLSAgICAg
ICAgewotICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZDsK
LSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YTsKLSAgICAgICAgUmVmUHRyPElu
c3BlY3RvckFycmF5PiBjaGlsZHJlbjsKLSAgICAgICAgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGU7
Ci0gICAgfTsKLSAgICAgICAgCi0gICAgdm9pZCBwdXNoQ3VycmVudFJlY29yZChQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSk7Ci0gICAgdm9pZCBzZXRIZWFw
U2l6ZVN0YXRpc3RpYyhJbnNwZWN0b3JPYmplY3QqIHJlY29yZCk7Ci0gICAgICAgIAotICAgIHZv
aWQgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZSk7Ci0KLSAgICB2
b2lkIGFkZFJlY29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBUaW1l
bGluZVJlY29yZFR5cGUpOwotCi0gICAgdm9pZCBwdXNoR0NFdmVudFJlY29yZHMoKTsKLQotICAg
IEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwotCi0gICAgVmVjdG9yPFRpbWVsaW5lUmVj
b3JkRW50cnk+IG1fcmVjb3JkU3RhY2s7CisKICAgICBzdGF0aWMgaW50IHNfaW5zdGFuY2VDb3Vu
dDsKLSAgICBzdHJ1Y3QgR0NFdmVudCB7Ci0gICAgICAgIEdDRXZlbnQoZG91YmxlIHN0YXJ0VGlt
ZSwgZG91YmxlIGVuZFRpbWUsIHNpemVfdCBjb2xsZWN0ZWRCeXRlcykKLSAgICAgICAgICAgIDog
c3RhcnRUaW1lKHN0YXJ0VGltZSksIGVuZFRpbWUoZW5kVGltZSksIGNvbGxlY3RlZEJ5dGVzKGNv
bGxlY3RlZEJ5dGVzKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgZG91YmxlIHN0YXJ0
VGltZTsKLSAgICAgICAgZG91YmxlIGVuZFRpbWU7Ci0gICAgICAgIHNpemVfdCBjb2xsZWN0ZWRC
eXRlczsKLSAgICB9OwotICAgIHR5cGVkZWYgVmVjdG9yPEdDRXZlbnQ+IEdDRXZlbnRzOwotICAg
IEdDRXZlbnRzIG1fZ2NFdmVudHM7CisKKyAgICBPd25QdHI8SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDI+IG1fdGltZWxpbmVBZ2VudDsKIH07CiAKIGlubGluZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpyZXRyaWV2ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68895</attachid>
            <date>2010-09-27 03:23:10 -0700</date>
            <delta_ts>2010-09-27 05:56:51 -0700</delta_ts>
            <desc>[patch] second iteration</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27191</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjhiYTZkMy4uNjQ4ODFjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBAQAorMjAxMC0wOS0yNyAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGl2aWRlIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQgaW50byB0d28gcGFydHMuCisKKyAgICAgICAgV2UgaGF2ZSBhbiBpZGVhIHRvIHNw
bGl0IEluc3BlY3RvclRpbWVsaW5lQWdlbnQgaW50byB0d28gcGFydHMuCisgICAgICAgIFRoZSBm
aXJzdCBwYXJ0IGlzIGFuIGluc3RydW1lbnRhdGlvbiBBUEkgd2hpY2ggY2FuIGJlIHVzZWQgZm9y
IERPTSBicmVha3BvaW50cyB0b28uCisgICAgICAgIFRoZSBvdGhlciBpcyB0aGUgcmVhbCBUaW1l
bGluZSBhZ2VudCB3aGljaCBkbyBhIHRyYW5zZm9ybWF0aW9uIG9mIHJhdyBkYXRhIGludG8gdGlt
ZWxpbmUgZGF0YS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDY2MTEKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpUaW1lbGlu
ZVJlY29yZEVudHJ5OjpUaW1lbGluZVJlY29yZEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQyOjpHQ0V2ZW50OjpHQ0V2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Mik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Mjo6fkluc3BlY3RvclRpbWVs
aW5lQWdlbnQyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpk
aWRHQyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Mjo6YWRkUmVj
b3JkVG9UaW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50
Mjo6c2V0SGVhcFNpemVTdGF0aXN0aWMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDI6OnN0YXJ0TmV3UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQyOjpjb21wbGV0ZUN1cnJlbnRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDI6OmFzeW5jUmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjphdG9taWNSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDI6OmdldFRvcFJlY29yZERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpyZXNldEZyb250ZW5kUHJveHlPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDI6OnB1c2hHQ0V2ZW50
UmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6On5JbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OndpbGxDYWxsRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6ZGlkQ2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZERpc3BhdGNoRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbExheW91dCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRMYXlvdXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFJlY2FsY3VsYXRlU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkUmVjYWxjdWxhdGVTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsUGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkUGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFdyaXRlSFRNTCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRXcml0ZUhUTUwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkSW5zdGFsbFRp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFJlbW92
ZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxG
aXJlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlk
RmlyZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Ondp
bGxDaGFuZ2VYSFJSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmRpZENoYW5nZVhIUlJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbExvYWRYSFIpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTG9hZFhIUik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFNlbmRS
ZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6ZGlkUmVjZWl2ZVJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkUmVjZWl2ZVJlc291
cmNlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmRpZE1hcmtUaW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpkaWRNYXJrRE9NQ29udGVudEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZE1hcmtMb2FkRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cmVzZXRGcm9udGVuZFByb3h5T2JqZWN0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorCiAyMDEw
LTA5LTI0ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNo
aW5pY2hpcm8gSGFtYWppLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcAppbmRleCBmYmIxN2M0Li4wNzU0NWFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNDYsMTUgKzQ2LDE1MSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGludCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzX2luc3RhbmNlQ291bnQg
PSAwOwogCi1JbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KElu
c3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKLSAgICA6IG1fZnJvbnRlbmQoZnJvbnRlbmQpCitj
bGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50MiA6IFNjcmlwdEdDRXZlbnRMaXN0ZW5lciwgcHVi
bGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50MihJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpOworICAgIHZpcnR1YWwgfkluc3BlY3RvclRpbWVs
aW5lQWdlbnQyKCk7CisKKyAgICB2b2lkIHN0YXJ0TmV3UmVjb3JkKFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICB2b2lkIGNvbXBsZXRlQ3VycmVu
dFJlY29yZChUaW1lbGluZVJlY29yZFR5cGUpOworICAgIHZvaWQgYWRkQXRvbWljUmVjb3JkKFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICB2b2lk
IHB1c2hPdXRPZk9yZGVyUmVjb3JkKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxp
bmVSZWNvcmRUeXBlKTsKKyAgICBJbnNwZWN0b3JPYmplY3QqIGdldFRvcFJlY29yZERhdGEoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkR0MoZG91YmxlLCBkb3VibGUsIHNpemVfdCk7CisKKyAgICB2
b2lkIHJlc2V0RnJvbnRlbmRQcm94eU9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQp
OworICAgIHZvaWQgcmVzZXQoKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgVGltZWxpbmVSZWNv
cmRFbnRyeSB7CisgICAgICAgIFRpbWVsaW5lUmVjb3JkRW50cnkoUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHJlY29yZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVuLCBUaW1lbGluZVJlY29yZFR5cGUgdHlwZSkK
KyAgICAgICAgOiByZWNvcmQocmVjb3JkKSwgZGF0YShkYXRhKSwgY2hpbGRyZW4oY2hpbGRyZW4p
LCB0eXBlKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiByZWNvcmQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGE7
CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW47CisgICAgICAgIFRpbWVs
aW5lUmVjb3JkVHlwZSB0eXBlOworICAgIH07CisgICAgVmVjdG9yPFRpbWVsaW5lUmVjb3JkRW50
cnk+IG1fcmVjb3JkU3RhY2s7CisKKyAgICBzdHJ1Y3QgR0NFdmVudCB7CisgICAgICAgIEdDRXZl
bnQoZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGVuZFRpbWUsIHNpemVfdCBjb2xsZWN0ZWRCeXRl
cykKKyAgICAgICAgOiBzdGFydFRpbWUoc3RhcnRUaW1lKSwgZW5kVGltZShlbmRUaW1lKSwgY29s
bGVjdGVkQnl0ZXMoY29sbGVjdGVkQnl0ZXMpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAg
ICBkb3VibGUgc3RhcnRUaW1lOworICAgICAgICBkb3VibGUgZW5kVGltZTsKKyAgICAgICAgc2l6
ZV90IGNvbGxlY3RlZEJ5dGVzOworICAgIH07CisgICAgdHlwZWRlZiBWZWN0b3I8R0NFdmVudD4g
R0NFdmVudHM7CisgICAgR0NFdmVudHMgbV9nY0V2ZW50czsKKyAgICBJbnNwZWN0b3JGcm9udGVu
ZCogbV9mcm9udGVuZDsKKworICAgIHZvaWQgcHVzaEdDRXZlbnRSZWNvcmRzKCk7CisgICAgdm9p
ZCBzZXRIZWFwU2l6ZVN0YXRpc3RpYyhJbnNwZWN0b3JPYmplY3QqIHJlY29yZCk7CisgICAgdm9p
ZCBhZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwcnBSZWNv
cmQsIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKTsKK307CisKK0luc3BlY3RvclRpbWVsaW5lQWdl
bnQyOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50MihJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQp
CiB7Ci0gICAgKytzX2luc3RhbmNlQ291bnQ7CisgICAgbV9mcm9udGVuZCA9IGZyb250ZW5kOwog
ICAgIFNjcmlwdEdDRXZlbnQ6OmFkZEV2ZW50TGlzdGVuZXIodGhpcyk7Ci0gICAgQVNTRVJUKG1f
ZnJvbnRlbmQpOwogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnB1c2hHQ0V2ZW50
UmVjb3JkcygpCitJbnNwZWN0b3JUaW1lbGluZUFnZW50Mjo6fkluc3BlY3RvclRpbWVsaW5lQWdl
bnQyKCkKK3sKKyAgICBTY3JpcHRHQ0V2ZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKHRoaXMpOwor
fQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpkaWRHQyhkb3VibGUgc3RhcnRUaW1l
LCBkb3VibGUgZW5kVGltZSwgc2l6ZV90IGNvbGxlY3RlZEJ5dGVzQ291bnQpCit7CisgICAgbV9n
Y0V2ZW50cy5hcHBlbmQoR0NFdmVudChzdGFydFRpbWUsIGVuZFRpbWUsIGNvbGxlY3RlZEJ5dGVz
Q291bnQpKTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Mjo6YWRkUmVjb3JkVG9U
aW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcHJwUmVjb3JkLCBUaW1lbGluZVJl
Y29yZFR5cGUgdHlwZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQocHJw
UmVjb3JkKTsKKyAgICByZWNvcmQtPnNldE51bWJlcigidHlwZSIsIHR5cGUpOworICAgIHNldEhl
YXBTaXplU3RhdGlzdGljKHJlY29yZC5nZXQoKSk7CisgICAgaWYgKG1fcmVjb3JkU3RhY2suaXNF
bXB0eSgpKQorICAgICAgICBtX2Zyb250ZW5kLT5hZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZC5y
ZWxlYXNlKCkpOworICAgIGVsc2UgeworICAgICAgICBUaW1lbGluZVJlY29yZEVudHJ5IHBhcmVu
dCA9IG1fcmVjb3JkU3RhY2subGFzdCgpOworICAgICAgICBwYXJlbnQuY2hpbGRyZW4tPnB1c2hP
YmplY3QocmVjb3JkLnJlbGVhc2UoKSk7CisgICAgfQorfQorCit2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQyOjpzZXRIZWFwU2l6ZVN0YXRpc3RpYyhJbnNwZWN0b3JPYmplY3QqIHJlY29yZCkK
K3sKKyAgICBzaXplX3QgdXNlZEhlYXBTaXplID0gMDsKKyAgICBzaXplX3QgdG90YWxIZWFwU2l6
ZSA9IDA7CisgICAgU2NyaXB0R0NFdmVudDo6Z2V0SGVhcFNpemUodXNlZEhlYXBTaXplLCB0b3Rh
bEhlYXBTaXplKTsKKyAgICByZWNvcmQtPnNldE51bWJlcigidXNlZEhlYXBTaXplIiwgdXNlZEhl
YXBTaXplKTsKKyAgICByZWNvcmQtPnNldE51bWJlcigidG90YWxIZWFwU2l6ZSIsIHRvdGFsSGVh
cFNpemUpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpzdGFydE5ld1JlY29y
ZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlIHR5
cGUpCit7CisgICAgcHVzaEdDRXZlbnRSZWNvcmRzKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gcmVjb3JkID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3Jk
KFdURjo6Y3VycmVudFRpbWVNUygpKTsKKyAgICBtX3JlY29yZFN0YWNrLmFwcGVuZChUaW1lbGlu
ZVJlY29yZEVudHJ5KHJlY29yZC5yZWxlYXNlKCksIGRhdGEsIEluc3BlY3RvckFycmF5OjpjcmVh
dGUoKSwgdHlwZSkpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpjb21wbGV0
ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCit7CisgICAgLy8gQW4gZW1w
dHkgc3RhY2sgY291bGQgbWVyZWx5IG1lYW4gdGhhdCB0aGUgdGltZWxpbmUgYWdlbnQgd2FzIHR1
cm5lZCBvbiBpbiB0aGUgbWlkZGxlIG9mCisgICAgLy8gYW4gZXZlbnQuICBEb24ndCB0cmVhdCBh
cyBhbiBlcnJvci4KKyAgICBpZiAoIW1fcmVjb3JkU3RhY2suaXNFbXB0eSgpKSB7CisgICAgICAg
IHB1c2hHQ0V2ZW50UmVjb3JkcygpOworICAgICAgICBUaW1lbGluZVJlY29yZEVudHJ5IGVudHJ5
ID0gbV9yZWNvcmRTdGFjay5sYXN0KCk7CisgICAgICAgIG1fcmVjb3JkU3RhY2sucmVtb3ZlTGFz
dCgpOworICAgICAgICBBU1NFUlQoZW50cnkudHlwZSA9PSB0eXBlKTsKKyAgICAgICAgZW50cnku
cmVjb3JkLT5zZXRPYmplY3QoImRhdGEiLCBlbnRyeS5kYXRhKTsKKyAgICAgICAgZW50cnkucmVj
b3JkLT5zZXRBcnJheSgiY2hpbGRyZW4iLCBlbnRyeS5jaGlsZHJlbik7CisgICAgICAgIGVudHJ5
LnJlY29yZC0+c2V0TnVtYmVyKCJlbmRUaW1lIiwgV1RGOjpjdXJyZW50VGltZU1TKCkpOworICAg
ICAgICBhZGRSZWNvcmRUb1RpbWVsaW5lKGVudHJ5LnJlY29yZCwgdHlwZSk7CisgICAgfQorfQor
Cit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpwdXNoT3V0T2ZPcmRlclJlY29yZChQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlIHJlY29yZFR5
cGUpCit7CisgICAgcHVzaEdDRXZlbnRSZWNvcmRzKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gcmVjb3JkID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3Jk
KFdURjo6Y3VycmVudFRpbWVNUygpKTsKKyAgICByZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIGRh
dGEpOworICAgIHJlY29yZC0+c2V0TnVtYmVyKCJ0eXBlIiwgcmVjb3JkVHlwZSk7CisgICAgc2V0
SGVhcFNpemVTdGF0aXN0aWMocmVjb3JkLmdldCgpKTsKKyAgICBtX2Zyb250ZW5kLT5hZGRSZWNv
cmRUb1RpbWVsaW5lKHJlY29yZC5yZWxlYXNlKCkpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQyOjphZGRBdG9taWNSZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRh
dGEsIFRpbWVsaW5lUmVjb3JkVHlwZSByZWNvcmRUeXBlKQoreworICAgIHB1c2hHQ0V2ZW50UmVj
b3JkcygpOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJlbnRUaW1lTVMoKSk7Cisg
ICAgcmVjb3JkLT5zZXRPYmplY3QoImRhdGEiLCBkYXRhKTsKKyAgICBhZGRSZWNvcmRUb1RpbWVs
aW5lKHJlY29yZC5yZWxlYXNlKCksIHJlY29yZFR5cGUpOworfQorCitJbnNwZWN0b3JPYmplY3Qq
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpnZXRUb3BSZWNvcmREYXRhKCkKK3sKKyAgICBpZiAo
bV9yZWNvcmRTdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBt
X3JlY29yZFN0YWNrLmxhc3QoKS5kYXRhLmdldCgpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQyOjpyZXNldCgpCit7CisgICAgbV9yZWNvcmRTdGFjay5jbGVhcigpOworfQorCit2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQyOjpyZXNldEZyb250ZW5kUHJveHlPYmplY3QoSW5z
cGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQoreworICAgIEFTU0VSVChmcm9udGVuZCk7CisgICAg
cmVzZXQoKTsKKyAgICBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDI6OnB1c2hHQ0V2ZW50UmVjb3JkcygpCiB7CiAgICAgaWYgKCFtX2djRXZl
bnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjksMjY3ICsyMDUsMjI3IEBAIHZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cHVzaEdDRXZlbnRSZWNvcmRzKCkKICAgICB9CiB9CiAK
LXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkR0MoZG91YmxlIHN0YXJ0VGltZSwgZG91
YmxlIGVuZFRpbWUsIHNpemVfdCBjb2xsZWN0ZWRCeXRlc0NvdW50KQorSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRl
bmQpCiB7Ci0gICAgbV9nY0V2ZW50cy5hcHBlbmQoR0NFdmVudChzdGFydFRpbWUsIGVuZFRpbWUs
IGNvbGxlY3RlZEJ5dGVzQ291bnQpKTsKKyAgICArK3NfaW5zdGFuY2VDb3VudDsKKyAgICBtX3Rp
bWVsaW5lQWdlbnQgPSBuZXcgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDIoZnJvbnRlbmQpOwogfQog
CiBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpCiB7CiAg
ICAgQVNTRVJUKHNfaW5zdGFuY2VDb3VudCk7CiAgICAgLS1zX2luc3RhbmNlQ291bnQ7Ci0gICAg
U2NyaXB0R0NFdmVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpyZXNldCgpCit7CisgICAgaWYgKG1fdGltZWxpbmVBZ2VudCkK
KyAgICAgICAgbV90aW1lbGluZUFnZW50LT5yZXNldCgpOwogfQogCiB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OndpbGxDYWxsRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBp
bnQgc2NyaXB0TGluZSkKIHsKLSAgICBwdXNoQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZEZh
Y3Rvcnk6OmNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEoc2NyaXB0TmFtZSwgc2NyaXB0TGluZSksIEZ1
bmN0aW9uQ2FsbFRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgaWYgKG1fdGltZWxpbmVBZ2VudCkK
KyAgICAgICAgbV90aW1lbGluZUFnZW50LT5zdGFydE5ld1JlY29yZChUaW1lbGluZVJlY29yZEZh
Y3Rvcnk6OmNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEoc2NyaXB0TmFtZSwgc2NyaXB0TGluZSksIEZ1
bmN0aW9uQ2FsbFRpbWVsaW5lUmVjb3JkVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6ZGlkQ2FsbEZ1bmN0aW9uKCkKIHsKLSAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNv
cmQoRnVuY3Rpb25DYWxsVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICBpZiAobV90aW1lbGluZUFn
ZW50KQorICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPmNvbXBsZXRlQ3VycmVudFJlY29yZChGdW5j
dGlvbkNhbGxUaW1lbGluZVJlY29yZFR5cGUpOwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OndpbGxEaXNwYXRjaEV2ZW50KGNvbnN0IEV2ZW50JiBldmVudCkKIHsKLSAgICBwdXNo
Q3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUV2ZW50RGlzcGF0Y2hE
YXRhKGV2ZW50KSwKLSAgICAgICAgRXZlbnREaXNwYXRjaFRpbWVsaW5lUmVjb3JkVHlwZSk7Cisg
ICAgaWYgKG1fdGltZWxpbmVBZ2VudCkKKyAgICAgICAgbV90aW1lbGluZUFnZW50LT5zdGFydE5l
d1JlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUV2ZW50RGlzcGF0Y2hEYXRhKGV2
ZW50KSwgRXZlbnREaXNwYXRjaFRpbWVsaW5lUmVjb3JkVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6ZGlkRGlzcGF0Y2hFdmVudCgpCiB7Ci0gICAgZGlkQ29tcGxldGVD
dXJyZW50UmVjb3JkKEV2ZW50RGlzcGF0Y2hUaW1lbGluZVJlY29yZFR5cGUpOworICAgIGlmICht
X3RpbWVsaW5lQWdlbnQpCisgICAgICAgIG1fdGltZWxpbmVBZ2VudC0+Y29tcGxldGVDdXJyZW50
UmVjb3JkKEV2ZW50RGlzcGF0Y2hUaW1lbGluZVJlY29yZFR5cGUpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OndpbGxMYXlvdXQoKQogewotICAgIHB1c2hDdXJyZW50UmVjb3Jk
KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCksIExheW91dFRpbWVsaW5lUmVjb3JkVHlwZSk7Cisg
ICAgaWYgKG1fdGltZWxpbmVBZ2VudCkKKyAgICAgICAgbV90aW1lbGluZUFnZW50LT5zdGFydE5l
d1JlY29yZChJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpLCBMYXlvdXRUaW1lbGluZVJlY29yZFR5
cGUpOwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZExheW91dCgpCiB7Ci0g
ICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKExheW91dFRpbWVsaW5lUmVjb3JkVHlwZSk7Cisg
ICAgaWYgKG1fdGltZWxpbmVBZ2VudCkKKyAgICAgICAgbV90aW1lbGluZUFnZW50LT5jb21wbGV0
ZUN1cnJlbnRSZWNvcmQoTGF5b3V0VGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsUmVjYWxjdWxhdGVTdHlsZSgpCiB7Ci0gICAgcHVzaEN1
cnJlbnRSZWNvcmQoSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSwgUmVjYWxjdWxhdGVTdHlsZXNU
aW1lbGluZVJlY29yZFR5cGUpOworICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCisgICAgICAgIG1f
dGltZWxpbmVBZ2VudC0+c3RhcnROZXdSZWNvcmQoSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSwg
UmVjYWxjdWxhdGVTdHlsZXNUaW1lbGluZVJlY29yZFR5cGUpOwogfQogCiB2b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmRpZFJlY2FsY3VsYXRlU3R5bGUoKQogewotICAgIGRpZENvbXBsZXRl
Q3VycmVudFJlY29yZChSZWNhbGN1bGF0ZVN0eWxlc1RpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAg
aWYgKG1fdGltZWxpbmVBZ2VudCkKKyAgICAgICAgbV90aW1lbGluZUFnZW50LT5jb21wbGV0ZUN1
cnJlbnRSZWNvcmQoUmVjYWxjdWxhdGVTdHlsZXNUaW1lbGluZVJlY29yZFR5cGUpOwogfQogCiB2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxQYWludChjb25zdCBJbnRSZWN0JiByZWN0
KQogewotICAgIHB1c2hDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRl
UGFpbnREYXRhKHJlY3QpLCBQYWludFRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgaWYgKG1fdGlt
ZWxpbmVBZ2VudCkKKyAgICAgICAgbV90aW1lbGluZUFnZW50LT5zdGFydE5ld1JlY29yZChUaW1l
bGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVBhaW50RGF0YShyZWN0KSwgUGFpbnRUaW1lbGluZVJl
Y29yZFR5cGUpOwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFBhaW50KCkK
IHsKLSAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoUGFpbnRUaW1lbGluZVJlY29yZFR5cGUp
OworICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCisgICAgICAgIG1fdGltZWxpbmVBZ2VudC0+Y29t
cGxldGVDdXJyZW50UmVjb3JkKFBhaW50VGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsV3JpdGVIVE1MKHVuc2lnbmVkIGludCBsZW5ndGgs
IHVuc2lnbmVkIGludCBzdGFydExpbmUpCiB7Ci0gICAgcHVzaEN1cnJlbnRSZWNvcmQoVGltZWxp
bmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQYXJzZUhUTUxEYXRhKGxlbmd0aCwgc3RhcnRMaW5lKSwg
UGFyc2VIVE1MVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICBpZiAobV90aW1lbGluZUFnZW50KQor
ICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPnN0YXJ0TmV3UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFj
dG9yeTo6Y3JlYXRlUGFyc2VIVE1MRGF0YShsZW5ndGgsIHN0YXJ0TGluZSksIFBhcnNlSFRNTFRp
bWVsaW5lUmVjb3JkVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlk
V3JpdGVIVE1MKHVuc2lnbmVkIGludCBlbmRMaW5lKQogewotICAgIGlmICghbV9yZWNvcmRTdGFj
ay5pc0VtcHR5KCkpIHsKLSAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeSBlbnRyeSA9IG1fcmVj
b3JkU3RhY2subGFzdCgpOwotICAgICAgICBlbnRyeS5kYXRhLT5zZXROdW1iZXIoImVuZExpbmUi
LCBlbmRMaW5lKTsKLSAgICAgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFBhcnNlSFRNTFRp
bWVsaW5lUmVjb3JkVHlwZSk7CisgICAgaWYgKG1fdGltZWxpbmVBZ2VudCkgeworICAgICAgICBJ
bnNwZWN0b3JPYmplY3QqIGRhdGEgPSBtX3RpbWVsaW5lQWdlbnQtPmdldFRvcFJlY29yZERhdGEo
KTsKKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIGRhdGEtPnNldE51bWJlcigiZW5k
TGluZSIsIGVuZExpbmUpOworICAgICAgICAgICAgbV90aW1lbGluZUFnZW50LT5jb21wbGV0ZUN1
cnJlbnRSZWNvcmQoUGFyc2VIVE1MVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICAgICAgfQogICAg
IH0KIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRJbnN0YWxsVGltZXIoaW50
IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCiB7Ci0gICAgcHVzaEdDRXZl
bnRSZWNvcmRzKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkID0gVGltZWxp
bmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKFdURjo6Y3VycmVudFRpbWVNUygp
KTsKLSAgICByZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6
Y3JlYXRlVGltZXJJbnN0YWxsRGF0YSh0aW1lcklkLCB0aW1lb3V0LCBzaW5nbGVTaG90KSk7Ci0g
ICAgYWRkUmVjb3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgpLCBUaW1lckluc3RhbGxUaW1l
bGluZVJlY29yZFR5cGUpOworICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCisgICAgICAgIG1fdGlt
ZWxpbmVBZ2VudC0+YWRkQXRvbWljUmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRl
VGltZXJJbnN0YWxsRGF0YSh0aW1lcklkLCB0aW1lb3V0LCBzaW5nbGVTaG90KSwgVGltZXJJbnN0
YWxsVGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpkaWRSZW1vdmVUaW1lcihpbnQgdGltZXJJZCkKIHsKLSAgICBwdXNoR0NFdmVudFJlY29yZHMo
KTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZh
Y3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoV1RGOjpjdXJyZW50VGltZU1TKCkpOwotICAgIHJl
Y29yZC0+c2V0T2JqZWN0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5l
cmljVGltZXJEYXRhKHRpbWVySWQpKTsKLSAgICBhZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZC5y
ZWxlYXNlKCksIFRpbWVyUmVtb3ZlVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICBpZiAobV90aW1l
bGluZUFnZW50KQorICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPmFkZEF0b21pY1JlY29yZChUaW1l
bGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNUaW1lckRhdGEodGltZXJJZCksIFRpbWVy
UmVtb3ZlVGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50Ojp3aWxsRmlyZVRpbWVyKGludCB0aW1lcklkKQogewotICAgIHB1c2hDdXJyZW50UmVjb3Jk
KFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1RpbWVyRGF0YSh0aW1lcklkKSwg
VGltZXJGaXJlVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICBpZiAobV90aW1lbGluZUFnZW50KQor
ICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPnN0YXJ0TmV3UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFj
dG9yeTo6Y3JlYXRlR2VuZXJpY1RpbWVyRGF0YSh0aW1lcklkKSwgVGltZXJGaXJlVGltZWxpbmVS
ZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRGaXJlVGlt
ZXIoKQogewotICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lckZpcmVUaW1lbGluZVJl
Y29yZFR5cGUpOworICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCisgICAgICAgIG1fdGltZWxpbmVB
Z2VudC0+Y29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVyRmlyZVRpbWVsaW5lUmVjb3JkVHlwZSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbENoYW5nZVhIUlJlYWR5U3Rh
dGUoY29uc3QgU3RyaW5nJiB1cmwsIGludCByZWFkeVN0YXRlKQogewotICAgIHB1c2hDdXJyZW50
UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlWEhSUmVhZHlTdGF0ZUNoYW5nZURh
dGEodXJsLCByZWFkeVN0YXRlKSwgWEhSUmVhZHlTdGF0ZUNoYW5nZVJlY29yZFR5cGUpOworICAg
IGlmIChtX3RpbWVsaW5lQWdlbnQpCisgICAgICAgIG1fdGltZWxpbmVBZ2VudC0+c3RhcnROZXdS
ZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVYSFJSZWFkeVN0YXRlQ2hhbmdlRGF0
YSh1cmwsIHJlYWR5U3RhdGUpLCBYSFJSZWFkeVN0YXRlQ2hhbmdlUmVjb3JkVHlwZSk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZSgpCiB7
Ci0gICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFhIUlJlYWR5U3RhdGVDaGFuZ2VSZWNvcmRU
eXBlKTsKKyAgICBpZiAobV90aW1lbGluZUFnZW50KQorICAgICAgICBtX3RpbWVsaW5lQWdlbnQt
PmNvbXBsZXRlQ3VycmVudFJlY29yZChYSFJSZWFkeVN0YXRlQ2hhbmdlUmVjb3JkVHlwZSk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbExvYWRYSFIoY29uc3QgU3RyaW5n
JiB1cmwpIAogewotICAgIHB1c2hDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6
Y3JlYXRlWEhSTG9hZERhdGEodXJsKSwgWEhSTG9hZFJlY29yZFR5cGUpOworICAgIGlmIChtX3Rp
bWVsaW5lQWdlbnQpCisgICAgICAgIG1fdGltZWxpbmVBZ2VudC0+c3RhcnROZXdSZWNvcmQoVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVYSFJMb2FkRGF0YSh1cmwpLCBYSFJMb2FkUmVjb3Jk
VHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTG9hZFhIUigpCiB7
Ci0gICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFhIUkxvYWRSZWNvcmRUeXBlKTsKKyAgICBp
ZiAobV90aW1lbGluZUFnZW50KQorICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPmNvbXBsZXRlQ3Vy
cmVudFJlY29yZChYSFJMb2FkUmVjb3JkVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6d2lsbEV2YWx1YXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51
bWJlcikKIHsKLSAgICBwdXNoQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNy
ZWF0ZUV2YWx1YXRlU2NyaXB0RGF0YSh1cmwsIGxpbmVOdW1iZXIpLCBFdmFsdWF0ZVNjcmlwdFRp
bWVsaW5lUmVjb3JkVHlwZSk7CisgICAgaWYgKG1fdGltZWxpbmVBZ2VudCkKKyAgICAgICAgbV90
aW1lbGluZUFnZW50LT5zdGFydE5ld1JlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0
ZUV2YWx1YXRlU2NyaXB0RGF0YSh1cmwsIGxpbmVOdW1iZXIpLCBFdmFsdWF0ZVNjcmlwdFRpbWVs
aW5lUmVjb3JkVHlwZSk7CiB9CiAgICAgCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRp
ZEV2YWx1YXRlU2NyaXB0KCkKIHsKLSAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoRXZhbHVh
dGVTY3JpcHRUaW1lbGluZVJlY29yZFR5cGUpOworICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCisg
ICAgICAgIG1fdGltZWxpbmVBZ2VudC0+Y29tcGxldGVDdXJyZW50UmVjb3JkKEV2YWx1YXRlU2Ny
aXB0VGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBw
dXNoR0NFdmVudFJlY29yZHMoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQg
PSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoV1RGOjpjdXJyZW50
VGltZU1TKCkpOwotICAgIHJlY29yZC0+c2V0T2JqZWN0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVTY2hlZHVsZVJlc291cmNlUmVxdWVzdERhdGEodXJsKSk7Ci0gICAgcmVj
b3JkLT5zZXROdW1iZXIoInR5cGUiLCBTY2hlZHVsZVJlc291cmNlUmVxdWVzdFRpbWVsaW5lUmVj
b3JkVHlwZSk7Ci0gICAgYWRkUmVjb3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgpLCBTY2hl
ZHVsZVJlc291cmNlUmVxdWVzdFRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgaWYgKG1fdGltZWxp
bmVBZ2VudCkKKyAgICAgICAgbV90aW1lbGluZUFnZW50LT5hZGRBdG9taWNSZWNvcmQoVGltZWxp
bmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVTY2hlZHVsZVJlc291cmNlUmVxdWVzdERhdGEodXJsKSwg
U2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RUaW1lbGluZVJlY29yZFR5cGUpOwogfQogCi12b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgYm9vbCBpc01haW5SZXNvdXJjZSwKLSAgICBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxTZW5kUmVz
b3VyY2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgYm9vbCBpc01haW5SZXNvdXJj
ZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHB1c2hHQ0V2ZW50UmVj
b3JkcygpOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJlbnRUaW1lTVMoKSk7Ci0g
ICAgcmVjb3JkLT5zZXRPYmplY3QoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0
ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKGlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlLCByZXF1
ZXN0KSk7Ci0gICAgcmVjb3JkLT5zZXROdW1iZXIoInR5cGUiLCBSZXNvdXJjZVNlbmRSZXF1ZXN0
VGltZWxpbmVSZWNvcmRUeXBlKTsKLSAgICBzZXRIZWFwU2l6ZVN0YXRpc3RpYyhyZWNvcmQuZ2V0
KCkpOwotICAgIG1fZnJvbnRlbmQtPmFkZFJlY29yZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2Uo
KSk7CisgICAgaWYgKG1fdGltZWxpbmVBZ2VudCkKKyAgICAgICAgbV90aW1lbGluZUFnZW50LT5w
dXNoT3V0T2ZPcmRlclJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNl
U2VuZFJlcXVlc3REYXRhKGlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlLCByZXF1ZXN0KSwgUmVz
b3VyY2VTZW5kUmVxdWVzdFRpbWVsaW5lUmVjb3JkVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKQogewotICAgIHB1c2hDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6
Y3JlYXRlUmVjZWl2ZVJlc291cmNlRGF0YShpZGVudGlmaWVyKSwgUmVjZWl2ZVJlc291cmNlRGF0
YVRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgaWYgKG1fdGltZWxpbmVBZ2VudCkKKyAgICAgICAg
bV90aW1lbGluZUFnZW50LT5zdGFydE5ld1JlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNy
ZWF0ZVJlY2VpdmVSZXNvdXJjZURhdGEoaWRlbnRpZmllciksIFJlY2VpdmVSZXNvdXJjZURhdGFU
aW1lbGluZVJlY29yZFR5cGUpOwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNvdXJjZURhdGEoKQogewotICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZChS
ZWNlaXZlUmVzb3VyY2VEYXRhVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICBpZiAobV90aW1lbGlu
ZUFnZW50KQorICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPmNvbXBsZXRlQ3VycmVudFJlY29yZChS
ZWNlaXZlUmVzb3VyY2VEYXRhVGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KICAgICAKIHZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0g
ICAgcHVzaEN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVSZXNvdXJj
ZVJlY2VpdmVSZXNwb25zZURhdGEoaWRlbnRpZmllciwgcmVzcG9uc2UpLCBSZXNvdXJjZVJlY2Vp
dmVSZXNwb25zZVRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgaWYgKG1fdGltZWxpbmVBZ2VudCkK
KyAgICAgICAgbV90aW1lbGluZUFnZW50LT5zdGFydE5ld1JlY29yZChUaW1lbGluZVJlY29yZEZh
Y3Rvcnk6OmNyZWF0ZVJlc291cmNlUmVjZWl2ZVJlc3BvbnNlRGF0YShpZGVudGlmaWVyLCByZXNw
b25zZSksIFJlc291cmNlUmVjZWl2ZVJlc3BvbnNlVGltZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSgp
CiB7Ci0gICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFJlc291cmNlUmVjZWl2ZVJlc3BvbnNl
VGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICBpZiAobV90aW1lbGluZUFnZW50KQorICAgICAgICBt
X3RpbWVsaW5lQWdlbnQtPmNvbXBsZXRlQ3VycmVudFJlY29yZChSZXNvdXJjZVJlY2VpdmVSZXNw
b25zZVRpbWVsaW5lUmVjb3JkVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgYm9v
bCBkaWRGYWlsKQogewotICAgIHB1c2hHQ0V2ZW50UmVjb3JkcygpOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IHJlY29yZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJp
Y1JlY29yZChXVEY6OmN1cnJlbnRUaW1lTVMoKSk7Ci0gICAgcmVjb3JkLT5zZXRPYmplY3QoImRh
dGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlRmluaXNoRGF0YShpZGVu
dGlmaWVyLCBkaWRGYWlsKSk7Ci0gICAgcmVjb3JkLT5zZXROdW1iZXIoInR5cGUiLCBSZXNvdXJj
ZUZpbmlzaFRpbWVsaW5lUmVjb3JkVHlwZSk7Ci0gICAgc2V0SGVhcFNpemVTdGF0aXN0aWMocmVj
b3JkLmdldCgpKTsKLSAgICBtX2Zyb250ZW5kLT5hZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZC5y
ZWxlYXNlKCkpOworICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCisgICAgICAgIG1fdGltZWxpbmVB
Z2VudC0+cHVzaE91dE9mT3JkZXJSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVS
ZXNvdXJjZUZpbmlzaERhdGEoaWRlbnRpZmllciwgZGlkRmFpbCksIFJlc291cmNlRmluaXNoVGlt
ZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRN
YXJrVGltZWxpbmUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIHB1c2hHQ0V2ZW50UmVj
b3JkcygpOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJlbnRUaW1lTVMoKSk7Ci0g
ICAgcmVjb3JkLT5zZXRPYmplY3QoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0
ZU1hcmtUaW1lbGluZURhdGEobWVzc2FnZSkpOwotICAgIGFkZFJlY29yZFRvVGltZWxpbmUocmVj
b3JkLnJlbGVhc2UoKSwgTWFya1RpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgaWYgKG1fdGltZWxp
bmVBZ2VudCkKKyAgICAgICAgbV90aW1lbGluZUFnZW50LT5hZGRBdG9taWNSZWNvcmQoVGltZWxp
bmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVNYXJrVGltZWxpbmVEYXRhKG1lc3NhZ2UpLCBNYXJrVGlt
ZWxpbmVSZWNvcmRUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRN
YXJrRE9NQ29udGVudEV2ZW50KCkKIHsKLSAgICBwdXNoR0NFdmVudFJlY29yZHMoKTsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNy
ZWF0ZUdlbmVyaWNSZWNvcmQoV1RGOjpjdXJyZW50VGltZU1TKCkpOwotICAgIGFkZFJlY29yZFRv
VGltZWxpbmUocmVjb3JkLnJlbGVhc2UoKSwgTWFya0RPTUNvbnRlbnRFdmVudFR5cGUpOworICAg
IGlmIChtX3RpbWVsaW5lQWdlbnQpCisgICAgICAgIG1fdGltZWxpbmVBZ2VudC0+YWRkQXRvbWlj
UmVjb3JkKEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCksIE1hcmtET01Db250ZW50RXZlbnRUeXBl
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRNYXJrTG9hZEV2ZW50KCkK
IHsKLSAgICBwdXNoR0NFdmVudFJlY29yZHMoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoV1RG
OjpjdXJyZW50VGltZU1TKCkpOwotICAgIGFkZFJlY29yZFRvVGltZWxpbmUocmVjb3JkLnJlbGVh
c2UoKSwgTWFya0xvYWRFdmVudFR5cGUpOwotfQotCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnJlc2V0KCkKLXsKLSAgICBtX3JlY29yZFN0YWNrLmNsZWFyKCk7CisgICAgaWYgKG1fdGlt
ZWxpbmVBZ2VudCkKKyAgICAgICAgbV90aW1lbGluZUFnZW50LT5hZGRBdG9taWNSZWNvcmQoSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKSwgTWFya0xvYWRFdmVudFR5cGUpOwogfQogCiB2b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJlc2V0RnJvbnRlbmRQcm94eU9iamVjdChJbnNwZWN0b3JG
cm9udGVuZCogZnJvbnRlbmQpCiB7Ci0gICAgQVNTRVJUKGZyb250ZW5kKTsKLSAgICByZXNldCgp
OwotICAgIG1fZnJvbnRlbmQgPSBmcm9udGVuZDsKLX0KLQotdm9pZCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjphZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBw
cnBSZWNvcmQsIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQotewotICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHJlY29yZChwcnBSZWNvcmQpOwotICAgIHJlY29yZC0+c2V0TnVtYmVyKCJ0eXBl
IiwgdHlwZSk7Ci0gICAgc2V0SGVhcFNpemVTdGF0aXN0aWMocmVjb3JkLmdldCgpKTsKLSAgICBp
ZiAobV9yZWNvcmRTdGFjay5pc0VtcHR5KCkpCi0gICAgICAgIG1fZnJvbnRlbmQtPmFkZFJlY29y
ZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2UoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFRpbWVs
aW5lUmVjb3JkRW50cnkgcGFyZW50ID0gbV9yZWNvcmRTdGFjay5sYXN0KCk7Ci0gICAgICAgIHBh
cmVudC5jaGlsZHJlbi0+cHVzaE9iamVjdChyZWNvcmQucmVsZWFzZSgpKTsKLSAgICB9Ci19Ci0K
LXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0SGVhcFNpemVTdGF0aXN0aWMoSW5zcGVj
dG9yT2JqZWN0KiByZWNvcmQpCi17Ci0gICAgc2l6ZV90IHVzZWRIZWFwU2l6ZSA9IDA7Ci0gICAg
c2l6ZV90IHRvdGFsSGVhcFNpemUgPSAwOwotICAgIFNjcmlwdEdDRXZlbnQ6OmdldEhlYXBTaXpl
KHVzZWRIZWFwU2l6ZSwgdG90YWxIZWFwU2l6ZSk7Ci0gICAgcmVjb3JkLT5zZXROdW1iZXIoInVz
ZWRIZWFwU2l6ZSIsIHVzZWRIZWFwU2l6ZSk7Ci0gICAgcmVjb3JkLT5zZXROdW1iZXIoInRvdGFs
SGVhcFNpemUiLCB0b3RhbEhlYXBTaXplKTsKKyAgICBpZiAobV90aW1lbGluZUFnZW50KQorICAg
ICAgICBtX3RpbWVsaW5lQWdlbnQtPnJlc2V0RnJvbnRlbmRQcm94eU9iamVjdChmcm9udGVuZCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVDdXJyZW50UmVj
b3JkKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQotewotICAgIC8vIEFuIGVtcHR5IHN0YWNrIGNv
dWxkIG1lcmVseSBtZWFuIHRoYXQgdGhlIHRpbWVsaW5lIGFnZW50IHdhcyB0dXJuZWQgb24gaW4g
dGhlIG1pZGRsZSBvZgotICAgIC8vIGFuIGV2ZW50LiAgRG9uJ3QgdHJlYXQgYXMgYW4gZXJyb3Iu
Ci0gICAgaWYgKCFtX3JlY29yZFN0YWNrLmlzRW1wdHkoKSkgewotICAgICAgICBwdXNoR0NFdmVu
dFJlY29yZHMoKTsKLSAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeSBlbnRyeSA9IG1fcmVjb3Jk
U3RhY2subGFzdCgpOwotICAgICAgICBtX3JlY29yZFN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAg
ICAgQVNTRVJUKGVudHJ5LnR5cGUgPT0gdHlwZSk7Ci0gICAgICAgIGVudHJ5LnJlY29yZC0+c2V0
T2JqZWN0KCJkYXRhIiwgZW50cnkuZGF0YSk7Ci0gICAgICAgIGVudHJ5LnJlY29yZC0+c2V0QXJy
YXkoImNoaWxkcmVuIiwgZW50cnkuY2hpbGRyZW4pOwotICAgICAgICBlbnRyeS5yZWNvcmQtPnNl
dE51bWJlcigiZW5kVGltZSIsIFdURjo6Y3VycmVudFRpbWVNUygpKTsKLSAgICAgICAgYWRkUmVj
b3JkVG9UaW1lbGluZShlbnRyeS5yZWNvcmQsIHR5cGUpOwotICAgIH0KLX0KLQotdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpwdXNoQ3VycmVudFJlY29yZChQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCi17Ci0gICAgcHVzaEdDRXZl
bnRSZWNvcmRzKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkID0gVGltZWxp
bmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKFdURjo6Y3VycmVudFRpbWVNUygp
KTsKLSAgICBtX3JlY29yZFN0YWNrLmFwcGVuZChUaW1lbGluZVJlY29yZEVudHJ5KHJlY29yZC5y
ZWxlYXNlKCksIGRhdGEsIEluc3BlY3RvckFycmF5OjpjcmVhdGUoKSwgdHlwZSkpOwotfQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCA0MTBlMTg5Li45ZGUz
YzRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC00
Niw2ICs0Niw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW50UmVjdDsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50MjsKIAogLy8gTXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBUaW1l
bGluZUFnZW50LmpzCiBlbnVtIFRpbWVsaW5lUmVjb3JkVHlwZSB7CkBAIC03Myw3ICs3NCw3IEBA
IGVudW0gVGltZWxpbmVSZWNvcmRUeXBlIHsKICAgICBYSFJTZW5kUmVjb3JkVHlwZSA9IDIxCiB9
OwogCi1jbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50IDogU2NyaXB0R0NFdmVudExpc3RlbmVy
LCBwdWJsaWMgTm9uY29weWFibGUgeworY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudChJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpOwogICAgIH5JbnNwZWN0b3JUaW1lbGluZUFnZW50
KCk7CkBAIC0xMjYsNDggKzEyNywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nUmVzb3VyY2UodW5zaWduZWQgbG9uZywgYm9vbCBkaWRGYWlsKTsKICAgICB2b2lkIHdpbGxS
ZWNlaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgIAotICAgIHZpcnR1YWwgdm9pZCBkaWRH
Qyhkb3VibGUsIGRvdWJsZSwgc2l6ZV90KTsKIAogICAgIHN0YXRpYyBpbnQgaW5zdGFuY2VDb3Vu
dCgpIHsgcmV0dXJuIHNfaW5zdGFuY2VDb3VudDsgfQogICAgIHN0YXRpYyBJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiByZXRyaWV2ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKIHByaXZhdGU6
Ci0gICAgc3RydWN0IFRpbWVsaW5lUmVjb3JkRW50cnkgewotICAgICAgICBUaW1lbGluZVJlY29y
ZEVudHJ5KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQsIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkYXRhLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBjaGlsZHJlbiwg
VGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCi0gICAgICAgICAgICA6IHJlY29yZChyZWNvcmQpLCBk
YXRhKGRhdGEpLCBjaGlsZHJlbihjaGlsZHJlbiksIHR5cGUodHlwZSkKLSAgICAgICAgewotICAg
ICAgICB9Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZDsKLSAgICAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiBjaGlsZHJlbjsKLSAgICAgICAgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGU7Ci0gICAgfTsK
LSAgICAgICAgCi0gICAgdm9pZCBwdXNoQ3VycmVudFJlY29yZChQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSk7Ci0gICAgdm9pZCBzZXRIZWFwU2l6ZVN0YXRp
c3RpYyhJbnNwZWN0b3JPYmplY3QqIHJlY29yZCk7Ci0gICAgICAgIAotICAgIHZvaWQgZGlkQ29t
cGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZSk7Ci0KLSAgICB2b2lkIGFkZFJl
Y29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29y
ZFR5cGUpOwotCi0gICAgdm9pZCBwdXNoR0NFdmVudFJlY29yZHMoKTsKLQotICAgIEluc3BlY3Rv
ckZyb250ZW5kKiBtX2Zyb250ZW5kOwotCi0gICAgVmVjdG9yPFRpbWVsaW5lUmVjb3JkRW50cnk+
IG1fcmVjb3JkU3RhY2s7CisKICAgICBzdGF0aWMgaW50IHNfaW5zdGFuY2VDb3VudDsKLSAgICBz
dHJ1Y3QgR0NFdmVudCB7Ci0gICAgICAgIEdDRXZlbnQoZG91YmxlIHN0YXJ0VGltZSwgZG91Ymxl
IGVuZFRpbWUsIHNpemVfdCBjb2xsZWN0ZWRCeXRlcykKLSAgICAgICAgICAgIDogc3RhcnRUaW1l
KHN0YXJ0VGltZSksIGVuZFRpbWUoZW5kVGltZSksIGNvbGxlY3RlZEJ5dGVzKGNvbGxlY3RlZEJ5
dGVzKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgZG91YmxlIHN0YXJ0VGltZTsKLSAg
ICAgICAgZG91YmxlIGVuZFRpbWU7Ci0gICAgICAgIHNpemVfdCBjb2xsZWN0ZWRCeXRlczsKLSAg
ICB9OwotICAgIHR5cGVkZWYgVmVjdG9yPEdDRXZlbnQ+IEdDRXZlbnRzOwotICAgIEdDRXZlbnRz
IG1fZ2NFdmVudHM7CisKKyAgICBPd25QdHI8SW5zcGVjdG9yVGltZWxpbmVBZ2VudDI+IG1fdGlt
ZWxpbmVBZ2VudDsKIH07CiAKIGlubGluZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpyZXRyaWV2ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQo=
</data>
<flag name="review"
          id="58482"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>