<?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>81909</bug_id>
          
          <creation_ts>2012-03-22 07:41:32 -0700</creation_ts>
          <short_desc>Web Inspector: only update Timeline overview when really needed</short_desc>
          <delta_ts>2012-03-28 10:17:26 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Kosyakov">caseq</reporter>
          <assigned_to name="Andrey Kosyakov">caseq</assigned_to>
          <cc>apavlov</cc>
    
    <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>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>585266</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-03-22 07:41:32 -0700</bug_when>
    <thetext>Currently, we update timeline overview upon any refresh of the lower pane. This really needs to be done only when we have new events, or displayed categories change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585268</commentid>
    <comment_count>1</comment_count>
      <attachid>133262</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-03-22 07:42:58 -0700</bug_when>
    <thetext>Created attachment 133262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587468</commentid>
    <comment_count>2</comment_count>
      <attachid>133262</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-25 23:18:11 -0700</bug_when>
    <thetext>Comment on attachment 133262
Patch

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

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:562
&gt; +        if (this._needOverviewUpdate) {

What about onRecordsCleared? why would we end up here with this._needOverviewUpdate === false anyways?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589959</commentid>
    <comment_count>3</comment_count>
      <attachid>134295</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-03-28 07:54:53 -0700</bug_when>
    <thetext>Created attachment 134295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589970</commentid>
    <comment_count>4</comment_count>
      <attachid>134295</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-28 08:06:13 -0700</bug_when>
    <thetext>Comment on attachment 134295
Patch

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

A bunch of nits.

&gt; Source/WebCore/ChangeLog:6
&gt; +        - do not use formatted records and TimelinePresentationModel in Overview;

It sounds like you are doing more than one thing in this change. Please consider splitting it into parts.

&gt; Source/WebCore/inspector/front-end/TimelineModel.js:88
&gt; +WebInspector.TimelineModel.getStartTime = function(record)

No get prefix in WebKit functions.

&gt; Source/WebCore/inspector/front-end/TimelineModel.js:90
&gt; +    return record.startTime / 1000;

I think we should operate original units on the model level.

&gt; Source/WebCore/inspector/front-end/TimelineOverviewPane.js:102
&gt; +    var categories = WebInspector.TimelinePresentationModel.getCategories();

categories()

&gt; Source/WebCore/inspector/front-end/TimelineOverviewPane.js:155
&gt; +        this._heapGraph.setSize(this._overviewGrid.element.offsetWidth, 60);

Please extract constant.

&gt; Source/WebCore/inspector/front-end/TimelinePresentationModel.js:60
&gt; +WebInspector.TimelinePresentationModel.getRecordStyle = function(record) {

recordStyle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590003</commentid>
    <comment_count>5</comment_count>
      <attachid>134306</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-03-28 09:01:59 -0700</bug_when>
    <thetext>Created attachment 134306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590011</commentid>
    <comment_count>6</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-03-28 09:06:55 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 134295 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134295&amp;action=review
&gt; 
&gt; A bunch of nits.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:6
&gt; &gt; +        - do not use formatted records and TimelinePresentationModel in Overview;
&gt; 
&gt; It sounds like you are doing more than one thing in this change. Please consider splitting it into parts.

Well, these changes are actually quite interconnected, separating them would appear artificial to me. Changed wording of the ChangeLog instead.

&gt; No get prefix in WebKit functions.

Fixed.

&gt; &gt; Source/WebCore/inspector/front-end/TimelineModel.js:90
&gt; &gt; +    return record.startTime / 1000;
&gt; 
&gt; I think we should operate original units on the model level.

The model does operate original unit, we just provide this as a helper for higher-level code -- presentation model and overview should use same units, as they pass times back and forth. We could change PresentationModel to use original units as well, but I&apos;d prefer this to be a separate change.

&gt; categories()

Fixed.

&gt; &gt; Source/WebCore/inspector/front-end/TimelineOverviewPane.js:155
&gt; &gt; +        this._heapGraph.setSize(this._overviewGrid.element.offsetWidth, 60);
&gt; 
&gt; Please extract constant.

This was a drive by fix, I got rid of the method and the constant in bug 82471.

&gt; &gt; Source/WebCore/inspector/front-end/TimelinePresentationModel.js:60
&gt; &gt; +WebInspector.TimelinePresentationModel.getRecordStyle = function(record) {
&gt; 
&gt; recordStyle.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590055</commentid>
    <comment_count>7</comment_count>
      <attachid>134318</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-03-28 09:46:48 -0700</bug_when>
    <thetext>Created attachment 134318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590061</commentid>
    <comment_count>8</comment_count>
      <attachid>134318</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-28 09:57:09 -0700</bug_when>
    <thetext>Comment on attachment 134318
Patch

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

&gt; Source/WebCore/inspector/front-end/TimelineModel.js:88
&gt; +WebInspector.TimelineModel.startTime = function(record)

startTimeInSeconds ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590088</commentid>
    <comment_count>9</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-03-28 10:17:26 -0700</bug_when>
    <thetext>Committed r112409: &lt;http://trac.webkit.org/changeset/112409&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133262</attachid>
            <date>2012-03-22 07:42:58 -0700</date>
            <delta_ts>2012-03-28 07:54:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81909-20120322184256.patch</filename>
            <type>text/plain</type>
            <size>2317</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJmYjAyYjI3NmFmNTYx
ZGZiNzAxNWZiNThlOWE1ZDc4ODk3YTM1YS4uYWY2NDhlYTI2N2MzNjk3OTNlYzJiNzIxNmQwZGNm
MzdkZjNmYmVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTIyICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogb25seSB1cGRhdGUgVGltZWxpbmUgb3ZlcnZpZXcgd2hlbiByZWFsbHkgbmVlZGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTkwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gb25seSB1cGRhdGUg
b3ZlcnZpZXcgcGFuZSB3aGVuIHdlIGhhdmUgbmV3IGV2ZW50cyBvciB3aGVuIGRpc3BsYXllZCBj
YXRlZ29yaWVzIGNoYW5nZS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxp
bmVQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlw
ZS5fb25DYXRlZ29yeUNoZWNrYm94Q2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQYW5lbC5wcm90b3R5cGUuX2lubmVyQWRkUmVjb3JkVG9UaW1lbGluZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3JlZnJlc2gpOgorCiAyMDEy
LTAzLTIyICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
cGRhdGUgTGF5b3V0VW5pdCB1c2FnZSBpbiBGcmFtZVNlbGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IDcxYzIy
ZTRhMzAwOGFmNWIxYTg0MjIxODE5ZTBlYTQyOTZmNDUzZTYuLjJjY2I5ZmVjYWU4YTM3YTIyZDk4
MmZjZjNkYWQ3MGQxZDVjMmY0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKQEAgLTI1NCw2ICsyNTQsNyBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgX29uQ2F0ZWdvcnlDaGVja2Jv
eENsaWNrZWQ6IGZ1bmN0aW9uKGNhdGVnb3J5LCBldmVudCkKICAgICB7CiAgICAgICAgIGNhdGVn
b3J5LmhpZGRlbiA9ICFldmVudC50YXJnZXQuY2hlY2tlZDsKKyAgICAgICAgdGhpcy5fbmVlZE92
ZXJ2aWV3VXBkYXRlID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fc2NoZWR1bGVSZWZyZXNoKHRydWUp
OwogICAgIH0sCiAKQEAgLTQ2NCw2ICs0NjUsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwuZm9yQWxsUmVjb3JkcyhbIGZvcm1hdHRlZFJlY29yZCBdLCBh
ZGRUaW1lc3RhbXBSZWNvcmRzKTsKKyAgICAgICAgdGhpcy5fbmVlZE92ZXJ2aWV3VXBkYXRlID0g
dHJ1ZTsKICAgICB9LAogCiAgICAgc2lkZWJhclJlc2l6ZWQ6IGZ1bmN0aW9uKGV2ZW50KQpAQCAt
NTU3LDggKzU1OSwxMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVmcmVzaFRpbWVvdXQ7CiAgICAgICAgIH0KIAot
ICAgICAgICB0aGlzLl9vdmVydmlld1BhbmUudXBkYXRlKHRoaXMuX3Nob3dTaG9ydEV2ZW50cyk7
Ci0KKyAgICAgICAgaWYgKHRoaXMuX25lZWRPdmVydmlld1VwZGF0ZSkgeworICAgICAgICAgICAg
dGhpcy5fb3ZlcnZpZXdQYW5lLnVwZGF0ZSh0aGlzLl9zaG93U2hvcnRFdmVudHMpOworICAgICAg
ICAgICAgdGhpcy5fbmVlZE92ZXJ2aWV3VXBkYXRlID0gZmFsc2U7CisgICAgICAgIH0KICAgICAg
ICAgaWYgKCF0aGlzLl9ib3VuZGFyaWVzQXJlVmFsaWQpCiAgICAgICAgICAgICB0aGlzLl9jYWxj
dWxhdG9yLnNldFdpbmRvdyh0aGlzLl9vdmVydmlld1BhbmUud2luZG93U3RhcnRUaW1lKCksIHRo
aXMuX292ZXJ2aWV3UGFuZS53aW5kb3dFbmRUaW1lKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134295</attachid>
            <date>2012-03-28 07:54:53 -0700</date>
            <delta_ts>2012-03-28 09:01:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81909-20120328185451.patch</filename>
            <type>text/plain</type>
            <size>48790</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNjMGRjNDIwZjVjYmEz
OWZkM2MwMWMzNDBhMWJkZWY3ZTRmOGY0YS4uMmZkYjdjZDk3ZDI0NDJiNWY3ZjlkOGM5ZDU4ZWJl
ZmUwOTQ1MzkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEyLTAzLTI4ICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogb25seSB1cGRhdGUgVGltZWxpbmUgb3ZlcnZpZXcgd2hlbiByZWFsbHkgbmVlZGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTkwOQorCisgICAg
ICAgIC0gZG8gbm90IHVzZSBmb3JtYXR0ZWQgcmVjb3JkcyBhbmQgVGltZWxpbmVQcmVzZW50YXRp
b25Nb2RlbCBpbiBPdmVydmlldzsKKyAgICAgICAgLSB1cGRhdGUgb3ZlcnZpZXcgaW5kZXBlbmRl
bnRseSBmcm9tIGJvdHRvbSBwYW5lLCBiYXNlZCBvbiBtb2RlbCBldmVudHM7CisgICAgICAgIC0g
bWFpbnRhaW4gcmVjb3JkIGJvdW5kYXJpZXMgaW4gVGltZWxpbmVNb2RlbAorICAgICAgICAtIGlu
dHJvZHVjZSBUaW1lbGluZUFnZ3JlZ2F0ZWRSZWNvcmQgYXMgdmVydGljYWwgb3ZlcnZpZXcncyBj
b3VudGVycGFydCB0byBUaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9UaW1lbGluZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuZ2V0U3RhcnRUaW1lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLmdldEVuZFRpbWUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuZ2V0RHVyYXRpb24pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwucHJvdG90eXBlLl9hZGRSZWNvcmQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1vZGVsLnByb3RvdHlwZS5taW5pbXVtUmVjb3JkVGltZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5wcm90b3R5cGUubWF4aW11bVJlY29y
ZFRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwucHJvdG90eXBlLl91
cGRhdGVCb3VuZGFyaWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5l
T3ZlcnZpZXdQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQ
YW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5
cGUuX3Nob3dUaW1lbGluZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZp
ZXdQYW5lLnByb3RvdHlwZS5fc2hvd01lbW9yeUdyYXBoKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUuX3NldFZlcnRpY2FsT3ZlcnZpZXcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS5fb25D
YXRlZ29yeVZpc2liaWxpdHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUuX3VwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBlLl91cGRhdGVDYXRlZ29yeVN0cmlwcy5tYXJr
UGVyY2VudGFnZXNGb3JSZWNvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3Zl
cnZpZXdQYW5lLnByb3RvdHlwZS5fdXBkYXRlQ2F0ZWdvcnlTdHJpcHMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS53aW5kb3dTdGFydFRpbWUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS53
aW5kb3dFbmRUaW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFu
ZS5wcm90b3R5cGUuX29uV2luZG93Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBlLnNldFNob3dTaG9ydEV2ZW50cyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBlLl9zY2hlZHVsZVJl
ZnJlc2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdDYWxjdWxhdG9y
LnByb3RvdHlwZS5jb21wdXRlQmFyR3JhcGhQZXJjZW50YWdlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGltZWxpbmVPdmVydmlld0NhbGN1bGF0b3IucHJvdG90eXBlLnNldFdpbmRvdyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0NhbGN1bGF0b3IucHJvdG90eXBl
LnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwR3JhcGgpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBHcmFwaC5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lVmVydGljYWxPdmVydmlldy5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmlldy5wcm90b3R5cGUudXBkYXRlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcucHJvdG90eXBlLndhc1No
b3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcucHJv
dG90eXBlLndpbGxIaWRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZlcnRpY2Fs
T3ZlcnZpZXcucHJvdG90eXBlLl9hZ2dyZWdhdGVGcmFtZVN0YXRpc3RpY3MpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmlldy5wcm90b3R5cGUuX2FnZ3JlZ2F0
ZVJlY29yZHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmll
dy5wcm90b3R5cGUuZ2V0V2luZG93VGltZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lVmVydGljYWxPdmVydmlldy5wcm90b3R5cGUuX29uUmVjb3JkQWRkZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdncmVnYXRlZFJlY29yZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGltZWxpbmVBZ2dyZWdhdGVkUmVjb3JkLnByb3RvdHlwZS5fYWdncmVnYXRlU3RhdGlz
dGljcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9jcmVhdGVTdGF0dXNiYXJCdXR0b25zKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fdG9nZ2xlRmlsdGVy
QnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90
b3R5cGUuX3Jlc2V0UGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
cHJvdG90eXBlLl9yZWZyZXNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUNhbGN1
bGF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRvci5wcm90b3R5
cGUuZm9ybWF0VGltZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBy
ZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9u
TW9kZWwuZ2V0Q2F0ZWdvcmllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVz
ZW50YXRpb25Nb2RlbC5nZXRSZWNvcmRTdHlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5jYXRlZ29yeUZvclJlY29yZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUucmVzZXQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLmFk
ZFJlY29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2Rl
bC5SZWNvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9k
ZWwuUmVjb3JkLnByb3RvdHlwZS5nZW5lcmF0ZVBvcHVwQ29udGVudCk6CisKIDIwMTItMDMtMjcg
IEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIFRyYW5zZmVyIHdoZWVsIGZsaW5nIHZpYSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xp
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5l
TW9kZWwuanMKaW5kZXggODE1ZmU3YTgzNTU1ZWU4ZTcyMWFlMDViOTZjZDdlZmJmYTRiZDUwMS4u
YmNmMGFkNzQ5MmU3YjliODRmOGRhYzcyZjdjNjAwZGJkNmM3MjRhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVNb2RlbC5qcwpAQCAtMzUs
NiArMzUsOCBAQAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwgPSBmdW5jdGlvbigpCiB7CiAg
ICAgdGhpcy5fcmVjb3JkcyA9IFtdOworICAgIHRoaXMuX21pbmltdW1SZWNvcmRUaW1lID0gLTE7
CisgICAgdGhpcy5fbWF4aW11bVJlY29yZFRpbWUgPSAtMTsKICAgICB0aGlzLl9jb2xsZWN0aW9u
RW5hYmxlZCA9IGZhbHNlOwogCiAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnRUeXBlcy5UaW1l
bGluZUV2ZW50UmVjb3JkZWQsIHRoaXMuX29uUmVjb3JkQWRkZWQsIHRoaXMpOwpAQCAtODMsNiAr
ODUsMjEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzID0gewogICAgIFJlY29y
ZHNDbGVhcmVkOiAiUmVjb3Jkc0NsZWFyZWQiCiB9CiAKK1dlYkluc3BlY3Rvci5UaW1lbGluZU1v
ZGVsLmdldFN0YXJ0VGltZSA9IGZ1bmN0aW9uKHJlY29yZCkKK3sKKyAgICByZXR1cm4gcmVjb3Jk
LnN0YXJ0VGltZSAvIDEwMDA7Cit9CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLmdldEVu
ZFRpbWUgPSBmdW5jdGlvbihyZWNvcmQpCit7CisgICAgcmV0dXJuICh0eXBlb2YgcmVjb3JkLmVu
ZFRpbWUgPT09ICJ1bmRlZmluZWQiID8gcmVjb3JkLnN0YXJ0VGltZSA6IHJlY29yZC5lbmRUaW1l
KSAvIDEwMDA7Cit9CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLmdldER1cmF0aW9uID0g
ZnVuY3Rpb24ocmVjb3JkKQoreworICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2Rl
bC5nZXRFbmRUaW1lKHJlY29yZCkgLSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5nZXRTdGFy
dFRpbWUocmVjb3JkKTsKK30KKwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwucHJvdG90eXBl
ID0gewogICAgIHN0YXJ0UmVjb3JkOiBmdW5jdGlvbigpCiAgICAgewpAQCAtMTE1LDYgKzEzMiw3
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICBfYWRkUmVj
b3JkOiBmdW5jdGlvbihyZWNvcmQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmRzLnB1c2go
cmVjb3JkKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQm91bmRhcmllcyhyZWNvcmQpOwogICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2Rl
bC5FdmVudHMuUmVjb3JkQWRkZWQsIHJlY29yZCk7CiAgICAgfSwKIApAQCAtMTc0LDcgKzE5Miwz
MCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgcmVzZXQ6
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlY29yZHMgPSBbXTsKKyAgICAgICAg
dGhpcy5fbWluaW11bVJlY29yZFRpbWUgPSAtMTsKKyAgICAgICAgdGhpcy5fbWF4aW11bVJlY29y
ZFRpbWUgPSAtMTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzLlJlY29yZHNDbGVhcmVkKTsKKyAgICB9LAorCisg
ICAgbWluaW11bVJlY29yZFRpbWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9taW5pbXVtUmVjb3JkVGltZTsKKyAgICB9LAorCisgICAgbWF4aW11bVJlY29yZFRpbWU6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tYXhpbXVtUmVjb3JkVGlt
ZTsKKyAgICB9LAorCisgICAgX3VwZGF0ZUJvdW5kYXJpZXM6IGZ1bmN0aW9uKHJlY29yZCkKKyAg
ICB7CisgICAgICAgIHZhciBzdGFydFRpbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5n
ZXRTdGFydFRpbWUocmVjb3JkKTsKKyAgICAgICAgdmFyIGVuZFRpbWUgPSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVNb2RlbC5nZXRFbmRUaW1lKHJlY29yZCk7CisKKyAgICAgICAgaWYgKHRoaXMuX21p
bmltdW1SZWNvcmRUaW1lID09PSAtMSB8fCBzdGFydFRpbWUgPCB0aGlzLl9taW5pbXVtUmVjb3Jk
VGltZSkKKyAgICAgICAgICAgIHRoaXMuX21pbmltdW1SZWNvcmRUaW1lID0gc3RhcnRUaW1lOwor
ICAgICAgICBpZiAodGhpcy5fbWF4aW11bVJlY29yZFRpbWUgPT09IC0xIHx8IGVuZFRpbWUgPiB0
aGlzLl9tYXhpbXVtUmVjb3JkVGltZSkKKyAgICAgICAgICAgIHRoaXMuX21heGltdW1SZWNvcmRU
aW1lID0gZW5kVGltZTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzCmluZGV4IDQzMTg5
ODljZjE5ZDE2N2M3YmU1MTQ3YmQ0ZmZjYTQwMTg3NmNlNzkuLmY0MmE0YjRlNzQyNTc2ODU1YmEy
ZThmMmMzYmY2MmFmOThjMTFiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcwpAQCAtMzIsOCArMzIs
OSBAQAogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0K
ICAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5G
aWx0ZXJ9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsfSBtb2RlbAogICov
Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUgPSBmdW5jdGlvbihwcmVzZW50YXRp
b25Nb2RlbCkKK1dlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZSA9IGZ1bmN0aW9uKG1v
ZGVsKQogewogICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwogICAgIHRoaXMuZWxlbWVudC5pZCA9ICJ0aW1lbGluZS1vdmVydmlldy1wYW5lbCI7CkBAIC00
MSw3ICs0Miw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZSA9IGZ1bmN0aW9u
KHByZXNlbnRhdGlvbk1vZGVsKQogICAgIHRoaXMuX3dpbmRvd1N0YXJ0VGltZSA9IDA7CiAgICAg
dGhpcy5fd2luZG93RW5kVGltZSA9IEluZmluaXR5OwogCi0gICAgdGhpcy5fcHJlc2VudGF0aW9u
TW9kZWwgPSBwcmVzZW50YXRpb25Nb2RlbDsKKyAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOwogCiAg
ICAgdGhpcy5fdG9wUGFuZVNpZGViYXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CiAgICAgdGhpcy5fdG9wUGFuZVNpZGViYXJFbGVtZW50LmlkID0gInRpbWVsaW5lLW92
ZXJ2aWV3LXNpZGViYXIiOwpAQCAtODMsNyArODQsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVP
dmVydmlld1BhbmUgPSBmdW5jdGlvbihwcmVzZW50YXRpb25Nb2RlbCkKIAogICAgIHRoaXMuX292
ZXJ2aWV3Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX292ZXJ2aWV3R3JpZC5lbGVtZW50KTsK
IAotICAgIHRoaXMuX2hlYXBHcmFwaCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcEdyYXBoKCk7Cisg
ICAgdGhpcy5faGVhcEdyYXBoID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwR3JhcGgodGhpcy5fbW9k
ZWwpOwogICAgIHRoaXMuX2hlYXBHcmFwaC5lbGVtZW50LmlkID0gInRpbWVsaW5lLW92ZXJ2aWV3
LW1lbW9yeSI7CiAgICAgdGhpcy5fb3ZlcnZpZXdHcmlkLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRo
aXMuX2hlYXBHcmFwaC5lbGVtZW50LCB0aGlzLl9vdmVydmlld0dyaWQuaXRlbXNHcmFwaHNFbGVt
ZW50KTsKIApAQCAtOTgsNyArOTksNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1Bh
bmUgPSBmdW5jdGlvbihwcmVzZW50YXRpb25Nb2RlbCkKICAKICAgICB0aGlzLl9jYXRlZ29yeUdy
YXBocyA9IHt9OwogICAgIHZhciBpID0gMDsKLSAgICB2YXIgY2F0ZWdvcmllcyA9IHRoaXMuX3By
ZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3JpZXM7CisgICAgdmFyIGNhdGVnb3JpZXMgPSBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5nZXRDYXRlZ29yaWVzKCk7CiAgICAgZm9y
ICh2YXIgY2F0ZWdvcnkgaW4gY2F0ZWdvcmllcykgewogICAgICAgICB2YXIgY2F0ZWdvcnlHcmFw
aCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeUdyYXBoKGNhdGVnb3JpZXNbY2F0
ZWdvcnldLCBpKysgJSAyKTsKICAgICAgICAgdGhpcy5fY2F0ZWdvcnlHcmFwaHNbY2F0ZWdvcnld
ID0gY2F0ZWdvcnlHcmFwaDsKQEAgLTEwOCw2ICsxMDksOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVPdmVydmlld1BhbmUgPSBmdW5jdGlvbihwcmVzZW50YXRpb25Nb2RlbCkKIAogICAgIHRoaXMu
X292ZXJ2aWV3R3JpZC5zZXRTY3JvbGxBbmREaXZpZGVyVG9wKDAsIDApOwogICAgIHRoaXMuX292
ZXJ2aWV3Q2FsY3VsYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0NhbGN1
bGF0b3IoKTsKKworICAgIG1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTW9kZWwuRXZlbnRzLlJlY29yZEFkZGVkLCB0aGlzLl9zY2hlZHVsZVJlZnJlc2gsIHRoaXMp
OworICAgIG1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwu
RXZlbnRzLlJlY29yZHNDbGVhcmVkLCB0aGlzLl91cGRhdGUsIHRoaXMpOwogfQogCiBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUuTWluU2VsZWN0YWJsZVNpemUgPSAxMjsKQEAgLTEz
OCw3ICsxNDIsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl9oZWFwR3JhcGguaGlkZSgpOwogICAgICAgICB0aGlzLl9zZXRW
ZXJ0aWNhbE92ZXJ2aWV3KHRoaXMuX2N1cnJlbnRNb2RlID09PSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVPdmVydmlld1BhbmUuTW9kZS5FdmVudHNWZXJ0aWNhbCk7CiAgICAgICAgIHRoaXMuX292ZXJ2
aWV3R3JpZC5pdGVtc0dyYXBoc0VsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0g
ICAgICAgIHRoaXMuX3VwZGF0ZUNhdGVnb3J5U3RyaXBzKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVs
LnJvb3RSZWNvcmQoKS5jaGlsZHJlbik7CisgICAgICAgIHRoaXMuX3VwZGF0ZUNhdGVnb3J5U3Ry
aXBzKCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5FdmVudHMuTW9kZUNoYW5nZWQsIHRoaXMuX2N1cnJlbnRN
b2RlKTsKICAgICB9LAogCkBAIC0xNDgsNyArMTUyLDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
T3ZlcnZpZXdQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc2V0VmVydGljYWxPdmVy
dmlldyhmYWxzZSk7CiAgICAgICAgIHRoaXMuX21lbW9yeU92ZXJ2aWV3SXRlbS5yZXZlYWxBbmRT
ZWxlY3QoZmFsc2UpOwogICAgICAgICB0aGlzLl9oZWFwR3JhcGguc2hvdygpOwotICAgICAgICB0
aGlzLl9oZWFwR3JhcGgudXBkYXRlKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJvb3RSZWNvcmQo
KS5jaGlsZHJlbik7CisgICAgICAgIHRoaXMuX2hlYXBHcmFwaC5zZXRTaXplKHRoaXMuX292ZXJ2
aWV3R3JpZC5lbGVtZW50Lm9mZnNldFdpZHRoLCA2MCk7CisgICAgICAgIHRoaXMuX2hlYXBHcmFw
aC51cGRhdGUoKTsKICAgICAgICAgdGhpcy5fb3ZlcnZpZXdHcmlkLml0ZW1zR3JhcGhzRWxlbWVu
dC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLkV2ZW50cy5Nb2RlQ2hh
bmdlZCwgdGhpcy5fY3VycmVudE1vZGUpOwogICAgIH0sCkBAIC0xNTgsMTMgKzE2MywxMiBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAoIWVuYWJsZWQgPT09ICF0aGlzLl92ZXJ0aWNhbE92ZXJ2aWV3KQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBpZiAoZW5hYmxlZCkgewotICAgICAgICAgICAgdGhpcy5fdmVydGljYWxP
dmVydmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVWZXJ0aWNhbE92ZXJ2aWV3KCk7Cisg
ICAgICAgICAgICB0aGlzLl92ZXJ0aWNhbE92ZXJ2aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5UaW1l
bGluZVZlcnRpY2FsT3ZlcnZpZXcodGhpcy5fbW9kZWwpOwogICAgICAgICAgICAgdGhpcy5fdmVy
dGljYWxPdmVydmlldy5zaG93KHRoaXMuX292ZXJ2aWV3Q29udGFpbmVyKTsKLSAgICAgICAgICAg
IHRoaXMuX3ZlcnRpY2FsT3ZlcnZpZXcudXBkYXRlKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJv
b3RSZWNvcmQoKS5jaGlsZHJlbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0aGlz
Ll92ZXJ0aWNhbE92ZXJ2aWV3LmRldGFjaCgpOwotICAgICAgICAgICAgdGhpcy5fb3ZlcnZpZXdH
cmlkLml0ZW1zR3JhcGhzRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAg
ICAgICAgIHRoaXMuX3ZlcnRpY2FsT3ZlcnZpZXcgPSBudWxsOworICAgICAgICAgICAgdGhpcy5f
b3ZlcnZpZXdHcmlkLml0ZW1zR3JhcGhzRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4i
KTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTE4MCw1NyArMTg0LDU0IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIg
Y2F0ZWdvcnkgPSBldmVudC5kYXRhOwogICAgICAgICB0aGlzLl9jYXRlZ29yeUdyYXBoc1tjYXRl
Z29yeS5uYW1lXS5kaW1tZWQgPSBjYXRlZ29yeS5oaWRkZW47CisgICAgICAgIHRoaXMuX3VwZGF0
ZSgpOwogICAgIH0sCiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKHNob3dTaG9ydEV2ZW50cykKKyAg
ICBfdXBkYXRlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9zaG93U2hvcnRFdmVu
dHMgPSBzaG93U2hvcnRFdmVudHM7Ci0gICAgICAgIHRoaXMuX292ZXJ2aWV3Q2FsY3VsYXRvci5y
ZXNldCgpOwotCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUJvdW5kYXJpZXMocmVjb3JkKQotICAg
ICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9vdmVydmlld0NhbGN1bGF0b3IudXBkYXRlQm91bmRh
cmllcyhyZWNvcmQpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdmFyIHJlY29yZHMgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5yb290UmVjb3JkKCku
Y2hpbGRyZW47Ci0gICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLmZvckFsbFJlY29y
ZHMocmVjb3JkcywgdXBkYXRlQm91bmRhcmllcy5iaW5kKHRoaXMpKTsKKyAgICAgICAgZGVsZXRl
IHRoaXMuX3JlZnJlc2hUaW1lb3V0OwogCiAgICAgICAgIGlmICh0aGlzLl9oZWFwR3JhcGgudmlz
aWJsZSkgewogICAgICAgICAgICAgdGhpcy5faGVhcEdyYXBoLnNldFNpemUodGhpcy5fb3ZlcnZp
ZXdHcmlkLmVsZW1lbnQub2Zmc2V0V2lkdGgsIDYwKTsKLSAgICAgICAgICAgIHRoaXMuX2hlYXBH
cmFwaC51cGRhdGUocmVjb3Jkcyk7CisgICAgICAgICAgICB0aGlzLl9oZWFwR3JhcGgudXBkYXRl
KCk7CiAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fdmVydGljYWxPdmVydmlldykKLSAgICAgICAg
ICAgIHRoaXMuX3ZlcnRpY2FsT3ZlcnZpZXcudXBkYXRlKHJlY29yZHMpOworICAgICAgICAgICAg
dGhpcy5fdmVydGljYWxPdmVydmlldy51cGRhdGUoKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgdGhpcy5fdXBkYXRlQ2F0ZWdvcnlTdHJpcHMocmVjb3Jkcyk7CisgICAgICAgICAgICB0aGlz
Ll91cGRhdGVDYXRlZ29yeVN0cmlwcygpOworCisgICAgICAgIHRoaXMuX292ZXJ2aWV3Q2FsY3Vs
YXRvci5zZXRXaW5kb3codGhpcy5fbW9kZWwubWluaW11bVJlY29yZFRpbWUoKSwgdGhpcy5fbW9k
ZWwubWF4aW11bVJlY29yZFRpbWUoKSk7CiAgICAgICAgIHRoaXMuX292ZXJ2aWV3R3JpZC51cGRh
dGVEaXZpZGVycyh0cnVlLCB0aGlzLl9vdmVydmlld0NhbGN1bGF0b3IpOwogICAgIH0sCiAKLSAg
ICBfdXBkYXRlQ2F0ZWdvcnlTdHJpcHM6IGZ1bmN0aW9uKHJlY29yZHMpCisgICAgX3VwZGF0ZUNh
dGVnb3J5U3RyaXBzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBDbGVhciBzdW1tYXJ5
IGJhcnMuCiAgICAgICAgIHZhciB0aW1lbGluZXMgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgY2F0
ZWdvcnkgaW4gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuY2F0ZWdvcmllcykgeworICAgICAgICB2
YXIgY2F0ZWdvcmllcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmdl
dENhdGVnb3JpZXMoKTsKKyAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gY2F0ZWdvcmllcykg
ewogICAgICAgICAgICAgdGltZWxpbmVzW2NhdGVnb3J5XSA9IFtdOwogICAgICAgICAgICAgdGhp
cy5fY2F0ZWdvcnlHcmFwaHNbY2F0ZWdvcnldLmNsZWFyQ2h1bmtzKCk7CiAgICAgICAgIH0KKyAg
ICAgICAgdGhpcy5fb3ZlcnZpZXdDYWxjdWxhdG9yLnNldFdpbmRvdyh0aGlzLl9tb2RlbC5taW5p
bXVtUmVjb3JkVGltZSgpLCB0aGlzLl9tb2RlbC5tYXhpbXVtUmVjb3JkVGltZSgpKTsKIAogICAg
ICAgICAvLyBDcmVhdGUgc3BhcnNlIGFycmF5cyB3aXRoIDEwMSBjZWxscyBlYWNoIHRvIGZpbGwg
d2l0aCBjaHVua3MgZm9yIGEgZ2l2ZW4gY2F0ZWdvcnkuCiAgICAgICAgIGZ1bmN0aW9uIG1hcmtQ
ZXJjZW50YWdlc0ZvclJlY29yZChyZWNvcmQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
KHRoaXMuX3Nob3dTaG9ydEV2ZW50cyB8fCByZWNvcmQuaXNMb25nKCkpKQorICAgICAgICAgICAg
dmFyIGlzTG9uZyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLmdldER1cmF0aW9uKHJlY29y
ZCkgPiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5zaG9ydFJlY29yZFRo
cmVzaG9sZDsKKyAgICAgICAgICAgIGlmICghKHRoaXMuX3Nob3dTaG9ydEV2ZW50cyB8fCBpc0xv
bmcpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHZhciBwZXJjZW50YWdl
cyA9IHRoaXMuX292ZXJ2aWV3Q2FsY3VsYXRvci5jb21wdXRlQmFyR3JhcGhQZXJjZW50YWdlcyhy
ZWNvcmQpOwogCiAgICAgICAgICAgICB2YXIgZW5kID0gTWF0aC5yb3VuZChwZXJjZW50YWdlcy5l
bmQpOwotICAgICAgICAgICAgdmFyIGNhdGVnb3J5TmFtZSA9IHJlY29yZC5jYXRlZ29yeS5uYW1l
OworICAgICAgICAgICAgdmFyIGNhdGVnb3J5TmFtZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVBy
ZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3J5Rm9yUmVjb3JkKHJlY29yZCkubmFtZTsKICAgICAgICAg
ICAgIGZvciAodmFyIGogPSBNYXRoLnJvdW5kKHBlcmNlbnRhZ2VzLnN0YXJ0KTsgaiA8PSBlbmQ7
ICsraikKICAgICAgICAgICAgICAgICB0aW1lbGluZXNbY2F0ZWdvcnlOYW1lXVtqXSA9IHRydWU7
CiAgICAgICAgIH0KKyAgICAgICAgdmFyIHJlY29yZHMgPSB0aGlzLl9tb2RlbC5yZWNvcmRzOwog
ICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5mb3JBbGxSZWNvcmRzKHJlY29yZHMs
IG1hcmtQZXJjZW50YWdlc0ZvclJlY29yZC5iaW5kKHRoaXMpKTsKIAogICAgICAgICAvLyBDb252
ZXJ0IHNwYXJzZSBhcnJheXMgdG8gY29udGludW91cyBzZWdtZW50cywgcmVuZGVyIGdyYXBocyBm
b3IgZWFjaC4KLSAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gdGhpcy5fcHJlc2VudGF0aW9u
TW9kZWwuY2F0ZWdvcmllcykgeworICAgICAgICBmb3IgKHZhciBjYXRlZ29yeSBpbiBjYXRlZ29y
aWVzKSB7CiAgICAgICAgICAgICB2YXIgdGltZWxpbmUgPSB0aW1lbGluZXNbY2F0ZWdvcnldOwog
ICAgICAgICAgICAgd2luZG93LnRpbWVsaW5lU2F2ZWQgPSB0aW1lbGluZTsKICAgICAgICAgICAg
IHZhciBjaHVua1N0YXJ0ID0gLTE7CkBAIC0zMDQsMTIgKzMwNSwxMiBAQCBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBlID0gewogCiAgICAgd2luZG93U3RhcnRUaW1l
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fd2luZG93U3RhcnRUaW1l
IHx8IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLm1pbmltdW1SZWNvcmRUaW1lKCk7CisgICAgICAg
IHJldHVybiB0aGlzLl93aW5kb3dTdGFydFRpbWUgfHwgdGhpcy5fbW9kZWwubWluaW11bVJlY29y
ZFRpbWUoKTsKICAgICB9LAogCiAgICAgd2luZG93RW5kVGltZTogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX3dpbmRvd0VuZFRpbWUgPCBJbmZpbml0eSA/IHRoaXMuX3dp
bmRvd0VuZFRpbWUgOiB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5tYXhpbXVtUmVjb3JkVGltZSgp
OworICAgICAgICByZXR1cm4gdGhpcy5fd2luZG93RW5kVGltZSA8IEluZmluaXR5ID8gdGhpcy5f
d2luZG93RW5kVGltZSA6IHRoaXMuX21vZGVsLm1heGltdW1SZWNvcmRUaW1lKCk7CiAgICAgfSwK
IAogICAgIHdpbmRvd0xlZnQ6IGZ1bmN0aW9uKCkKQEAgLTMyOSwxMiArMzMwLDI1IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLl93aW5kb3dTdGFydFRpbWUgPSB0aW1lcy5zdGFydFRpbWU7CiAgICAgICAgICAgICB0aGlz
Ll93aW5kb3dFbmRUaW1lID0gdGltZXMuZW5kVGltZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHZhciBhYnNvbHV0ZU1pbiA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLm1pbmltdW1S
ZWNvcmRUaW1lKCk7Ci0gICAgICAgICAgICB2YXIgYWJzb2x1dGVNYXggPSB0aGlzLl9wcmVzZW50
YXRpb25Nb2RlbC5tYXhpbXVtUmVjb3JkVGltZSgpOworICAgICAgICAgICAgdmFyIGFic29sdXRl
TWluID0gdGhpcy5fbW9kZWwubWluaW11bVJlY29yZFRpbWUoKTsKKyAgICAgICAgICAgIHZhciBh
YnNvbHV0ZU1heCA9IHRoaXMuX21vZGVsLm1heGltdW1SZWNvcmRUaW1lKCk7CiAgICAgICAgICAg
ICB0aGlzLl93aW5kb3dTdGFydFRpbWUgPSBhYnNvbHV0ZU1pbiArIChhYnNvbHV0ZU1heCAtIGFi
c29sdXRlTWluKSAqIHRoaXMud2luZG93TGVmdCgpOwogICAgICAgICAgICAgdGhpcy5fd2luZG93
RW5kVGltZSA9IGFic29sdXRlTWluICsgKGFic29sdXRlTWF4IC0gYWJzb2x1dGVNaW4pICogdGhp
cy53aW5kb3dSaWdodCgpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5FdmVudHMuV2luZG93
Q2hhbmdlZCk7CisgICAgfSwKKworICAgIHNldFNob3dTaG9ydEV2ZW50czogZnVuY3Rpb24odmFs
dWUpCisgICAgeworICAgICAgICB0aGlzLl9zaG93U2hvcnRFdmVudHMgPSB2YWx1ZTsKKyAgICAg
ICAgdGhpcy5fdXBkYXRlKCk7CisgICAgfSwKKworICAgIF9zY2hlZHVsZVJlZnJlc2g6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9yZWZyZXNoVGltZW91dCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fcmVmcmVzaFRpbWVvdXQgPSBzZXRUaW1lb3V0KHRo
aXMuX3VwZGF0ZS5iaW5kKHRoaXMpLCAxMDApOwogICAgIH0KIH0KIApAQCAtNTQ1LDM0ICs1NTks
MjUgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdDYWxjdWxhdG9yID0gZnVuY3Rpb24o
KQogV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdDYWxjdWxhdG9yLnByb3RvdHlwZSA9IHsK
ICAgICBjb21wdXRlQmFyR3JhcGhQZXJjZW50YWdlczogZnVuY3Rpb24ocmVjb3JkKQogICAgIHsK
LSAgICAgICAgdmFyIHN0YXJ0ID0gKHJlY29yZC5zdGFydFRpbWUgLSB0aGlzLm1pbmltdW1Cb3Vu
ZGFyeSkgLyB0aGlzLmJvdW5kYXJ5U3BhbiAqIDEwMDsKLSAgICAgICAgdmFyIGVuZCA9IChyZWNv
cmQuZW5kVGltZSAtIHRoaXMubWluaW11bUJvdW5kYXJ5KSAvIHRoaXMuYm91bmRhcnlTcGFuICog
MTAwOworICAgICAgICB2YXIgc3RhcnQgPSAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuZ2V0
U3RhcnRUaW1lKHJlY29yZCkgLSB0aGlzLm1pbmltdW1Cb3VuZGFyeSkgLyB0aGlzLmJvdW5kYXJ5
U3BhbiAqIDEwMDsKKyAgICAgICAgdmFyIGVuZCA9IChXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2Rl
bC5nZXRFbmRUaW1lKHJlY29yZCkgLSB0aGlzLm1pbmltdW1Cb3VuZGFyeSkgLyB0aGlzLmJvdW5k
YXJ5U3BhbiAqIDEwMDsKICAgICAgICAgcmV0dXJuIHtzdGFydDogc3RhcnQsIGVuZDogZW5kfTsK
ICAgICB9LAogCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0
aGlzLm1pbmltdW1Cb3VuZGFyeTsKLSAgICAgICAgZGVsZXRlIHRoaXMubWF4aW11bUJvdW5kYXJ5
OwotICAgIH0sCi0KLSAgICB1cGRhdGVCb3VuZGFyaWVzOiBmdW5jdGlvbihyZWNvcmQpCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbmltdW0KKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gbWF4aW11bQorICAgICAqLworICAgIHNldFdpbmRvdzogZnVuY3Rpb24obWluaW11bSwgbWF4
aW11bSkKICAgICB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgaWYgKHR5
cGVvZiB0aGlzLm1pbmltdW1Cb3VuZGFyeSA9PT0gInVuZGVmaW5lZCIgfHwgcmVjb3JkLnN0YXJ0
VGltZSA8IHRoaXMubWluaW11bUJvdW5kYXJ5KSB7Ci0gICAgICAgICAgICB0aGlzLm1pbmltdW1C
b3VuZGFyeSA9IHJlY29yZC5zdGFydFRpbWU7Ci0gICAgICAgICAgICByZXN1bHQgPSB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tYXhpbXVtQm91bmRhcnkgPT09ICJ1
bmRlZmluZWQiIHx8IHJlY29yZC5lbmRUaW1lID4gdGhpcy5tYXhpbXVtQm91bmRhcnkpIHsKLSAg
ICAgICAgICAgIHRoaXMubWF4aW11bUJvdW5kYXJ5ID0gcmVjb3JkLmVuZFRpbWU7Ci0gICAgICAg
ICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIHRoaXMubWluaW11bUJvdW5kYXJ5ID0gbWluaW11bSA+PSAwID8gbWluaW11bSA6IHVu
ZGVmaW5lZDsKKyAgICAgICAgdGhpcy5tYXhpbXVtQm91bmRhcnkgPSBtYXhpbXVtID49IDAgPyBt
YXhpbXVtIDogdW5kZWZpbmVkOworICAgICAgICB0aGlzLmJvdW5kYXJ5U3BhbiA9IHRoaXMubWF4
aW11bUJvdW5kYXJ5IC0gdGhpcy5taW5pbXVtQm91bmRhcnk7CiAgICAgfSwKIAotICAgIGdldCBi
b3VuZGFyeVNwYW4oKQorICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1
cm4gdGhpcy5tYXhpbXVtQm91bmRhcnkgLSB0aGlzLm1pbmltdW1Cb3VuZGFyeTsKKyAgICAgICAg
dGhpcy5zZXRXaW5kb3codW5kZWZpbmVkLCB1bmRlZmluZWQpOwogICAgIH0sCiAKICAgICBmb3Jt
YXRUaW1lOiBmdW5jdGlvbih2YWx1ZSkKQEAgLTY3NCw5ICs2NzksMTEgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lT3ZlcnZpZXdQYW5lLldpbmRvd1NlbGVjdG9yLnByb3RvdHlwZSA9IHsKIAogLyoq
CiAgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWx9
IG1vZGVsCiAgKi8KLVdlYkluc3BlY3Rvci5IZWFwR3JhcGggPSBmdW5jdGlvbigpIHsKK1dlYklu
c3BlY3Rvci5IZWFwR3JhcGggPSBmdW5jdGlvbihtb2RlbCkgewogICAgIHRoaXMuX2NhbnZhcyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIHRoaXMuX21vZGVsID0gbW9k
ZWw7CiAKICAgICB0aGlzLl9tYXhIZWFwU2l6ZUxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgdGhpcy5fbWF4SGVhcFNpemVMYWJlbC5hZGRTdHlsZUNsYXNzKCJtYXgi
KTsKQEAgLTY5NCw3ICs3MDEsNiBAQCBXZWJJbnNwZWN0b3IuSGVhcEdyYXBoID0gZnVuY3Rpb24o
KSB7CiAKIFdlYkluc3BlY3Rvci5IZWFwR3JhcGgucHJvdG90eXBlID0gewogICAgIGdldCBlbGVt
ZW50KCkgewotICAgIC8vICAgIHJldHVybiB0aGlzLl9jYW52YXM7CiAgICAgICAgIHJldHVybiB0
aGlzLl9lbGVtZW50OwogICAgIH0sCiAKQEAgLTcxNSwyNCArNzIxLDIwIEBAIFdlYkluc3BlY3Rv
ci5IZWFwR3JhcGgucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jYW52YXMuaGVpZ2h0ID0g
aCAtIDU7CiAgICAgfSwKIAotICAgIHVwZGF0ZTogZnVuY3Rpb24ocmVjb3JkcykKKyAgICB1cGRh
dGU6IGZ1bmN0aW9uKCkKICAgICB7CisgICAgICAgIHZhciByZWNvcmRzID0gdGhpcy5fbW9kZWwu
cmVjb3JkczsKICAgICAgICAgaWYgKCFyZWNvcmRzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBjb25zdCBsb3dlck9mZnNldCA9IDM7CiAgICAgICAgIHZhciBtYXhVc2Vk
SGVhcFNpemUgPSAwOwogICAgICAgICB2YXIgbWluVXNlZEhlYXBTaXplID0gMTAwMDAwMDAwMDAw
OwotICAgICAgICB2YXIgbWluVGltZTsKLSAgICAgICAgdmFyIG1heFRpbWU7CisgICAgICAgIHZh
ciBtaW5UaW1lID0gdGhpcy5fbW9kZWwubWluaW11bVJlY29yZFRpbWUoKTsKKyAgICAgICAgdmFy
IG1heFRpbWUgPSB0aGlzLl9tb2RlbC5tYXhpbXVtUmVjb3JkVGltZSgpOzsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuZm9yQWxsUmVjb3JkcyhyZWNvcmRzLCBmdW5jdGlvbihy
KSB7CiAgICAgICAgICAgICBtYXhVc2VkSGVhcFNpemUgPSBNYXRoLm1heChtYXhVc2VkSGVhcFNp
emUsIHIudXNlZEhlYXBTaXplIHx8IG1heFVzZWRIZWFwU2l6ZSk7CiAgICAgICAgICAgICBtaW5V
c2VkSGVhcFNpemUgPSBNYXRoLm1pbihtaW5Vc2VkSGVhcFNpemUsIHIudXNlZEhlYXBTaXplIHx8
IG1pblVzZWRIZWFwU2l6ZSk7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlb2YgbWluVGltZSA9PT0g
InVuZGVmaW5lZCIgfHwgci5zdGFydFRpbWUgPCBtaW5UaW1lKQotICAgICAgICAgICAgICAgIG1p
blRpbWUgPSByLnN0YXJ0VGltZTsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgbWF4VGltZSA9PT0g
InVuZGVmaW5lZCIgfHwgci5lbmRUaW1lID4gbWF4VGltZSkKLSAgICAgICAgICAgICAgICBtYXhU
aW1lID0gci5lbmRUaW1lOwogICAgICAgICB9KTsKICAgICAgICAgbWluVXNlZEhlYXBTaXplID0g
TWF0aC5taW4obWluVXNlZEhlYXBTaXplLCBtYXhVc2VkSGVhcFNpemUpOwogCkBAIC03NDUsOSAr
NzQ3LDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBHcmFwaC5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVBhbmVsLmZvckFsbFJlY29yZHMocmVjb3JkcywgZnVuY3Rpb24o
cikgewogICAgICAgICAgICAgaWYgKCFyLnVzZWRIZWFwU2l6ZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICAgdmFyIHggPSBNYXRoLnJvdW5kKChyLmVuZFRpbWUgLSBtaW5U
aW1lKSAqIHhGYWN0b3IpOwotICAgICAgICAgICAgIHZhciB5ID0gTWF0aC5yb3VuZCgoci51c2Vk
SGVhcFNpemUgLSBtaW5Vc2VkSGVhcFNpemUpICogeUZhY3Rvcik7Ci0gICAgICAgICAgICAgaGlz
dG9ncmFtW3hdID0gTWF0aC5tYXgoaGlzdG9ncmFtW3hdIHx8IDAsIHkpOworICAgICAgICAgICAg
dmFyIHggPSBNYXRoLnJvdW5kKChXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5nZXRFbmRUaW1l
KHIpIC0gbWluVGltZSkgKiB4RmFjdG9yKTsKKyAgICAgICAgICAgIHZhciB5ID0gTWF0aC5yb3Vu
ZCgoci51c2VkSGVhcFNpemUgLSBtaW5Vc2VkSGVhcFNpemUpICogeUZhY3Rvcik7CisgICAgICAg
ICAgICBoaXN0b2dyYW1beF0gPSBNYXRoLm1heChoaXN0b2dyYW1beF0gfHwgMCwgeSk7CiAgICAg
ICAgIH0pOwogCiAgICAgICAgIHZhciBjdHggPSB0aGlzLl9jYW52YXMuZ2V0Q29udGV4dCgiMmQi
KTsKQEAgLTc5NiwxMiArNzk4LDE0IEBAIFdlYkluc3BlY3Rvci5IZWFwR3JhcGgucHJvdG90eXBl
ID0gewogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuVmll
d30KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWx9IG1vZGVsCiAgKi8KLVdl
Ykluc3BlY3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcgPSBmdW5jdGlvbigpIHsKK1dlYklu
c3BlY3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcgPSBmdW5jdGlvbihtb2RlbCkgewogICAg
IFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJ0
aW1lbGluZS12ZXJ0aWNhbC1vdmVydmlldy1iYXJzIGZpbGwiOwogICAgIHRoaXMucmVzZXQoKTsK
KyAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOwogfQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVWZXJ0
aWNhbE92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKQEAgLTgxMSwxNCArODE1LDE1IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9mcmFtZU1vZGUgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fYmFyVGltZXMgPSBbXTsKICAgICAg
ICAgdGhpcy5fbG9uZ2VzdEJhclRpbWUgPSAwOworICAgICAgICB0aGlzLl9hZ2dyZWdhdGVkUmVj
b3JkcyA9IFtdOwogICAgIH0sCiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKGFsbFJlY29yZHMpCisg
ICAgdXBkYXRlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgcmVjb3JkcyA9IFtdOwog
ICAgICAgICB2YXIgZnJhbWVDb3VudCA9IDA7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YWxsUmVjb3Jkcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHJlY29yZCA9IGFsbFJl
Y29yZHNbaV07CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fYWdncmVnYXRlZFJl
Y29yZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciByZWNvcmQgPSB0aGlzLl9hZ2dy
ZWdhdGVkUmVjb3Jkc1tpXTsKICAgICAgICAgICAgIGlmIChyZWNvcmQuY2F0ZWdvcnkuaGlkZGVu
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHJlY29yZC50eXBl
ID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLkJlZ2luRnJhbWUgfHwg
KGZyYW1lQ291bnQgJiYgKGkgKyAxID09PSByZWNvcmRzLmxlbmd0aCkpKQpAQCAtODQ1LDYgKzg1
MCwyOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVWZXJ0aWNhbE92ZXJ2aWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fYnVpbGRCYXIo
c3RhdGlzdGljc1tpXSwgc2NhbGUpLCBwYWRkaW5nKTsKICAgICB9LAogCisgICAgd2FzU2hvd246
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZWRSZWNvcmRzID0gW107
CisgICAgICAgIHZhciByZWNvcmRzID0gdGhpcy5fbW9kZWwucmVjb3JkczsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByZWNvcmRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5f
YWdncmVnYXRlZFJlY29yZHMucHVzaChuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdncmVnYXRl
ZFJlY29yZChyZWNvcmRzW2ldKSk7CisKKyAgICAgICAgdGhpcy51cGRhdGUoKTsKKyAgICAgICAg
dGhpcy5fbW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5F
dmVudHMuUmVjb3JkQWRkZWQsIHRoaXMuX29uUmVjb3JkQWRkZWQsIHRoaXMpOworICAgICAgICB0
aGlzLl9tb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLkV2
ZW50cy5SZWNvcmRzQ2xlYXJlZCwgdGhpcy5yZXNldCwgdGhpcyk7CisgICAgfSwKKworICAgIHdp
bGxIaWRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9tb2RlbC5yZW1vdmVFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLkV2ZW50cy5SZWNvcmRBZGRlZCwg
dGhpcy5fb25SZWNvcmRBZGRlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX21vZGVsLnJlbW92ZUV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzLlJlY29yZHNDbGVh
cmVkLCB0aGlzLl9vblJlY29yZHNDbGVhcmVkLCB0aGlzKTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdncmVnYXRlZFJlY29y
ZD59IHJlY29yZHMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyT2ZCYXJzCisgICAgICov
CiAgICAgX2FnZ3JlZ2F0ZUZyYW1lczogZnVuY3Rpb24ocmVjb3JkcywgbnVtYmVyT2ZCYXJzKQog
ICAgIHsKICAgICAgICAgdmFyIHN0YXRpc3RpY3MgPSBbXTsKQEAgLTg3Niw2ICs5MDMsMTEgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiBzdGF0aXN0aWNzOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e0FycmF5LjxXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2dyZWdhdGVkUmVjb3JkPn0gcmVjb3Jkcwor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydEluZGV4CisgICAgICogQHBhcmFtIHtPYmplY3R9
IHN0YXRpc3RpY3MKKyAgICAgKi8KICAgICBfYWdncmVnYXRlRnJhbWVTdGF0aXN0aWNzOiBmdW5j
dGlvbihyZWNvcmRzLCBzdGFydEluZGV4LCBzdGF0aXN0aWNzKQogICAgIHsKICAgICAgICAgdmFy
IHRvdGFsVGltZSA9IDA7CkBAIC04ODMsMTIgKzkxNSwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVWZXJ0aWNhbE92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciByZWNvcmQg
PSByZWNvcmRzW2luZGV4XTsKICAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5CZWdpbkZyYW1lKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSBPYmplY3Qua2V5cyhyZWNv
cmQuYWdncmVnYXRlZFN0YXRzKTsKKyAgICAgICAgICAgIHZhciBjYXRlZ29yaWVzID0gT2JqZWN0
LmtleXMocmVjb3JkLnRpbWVCeUNhdGVnb3J5KTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY2F0ZWdvcmllcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgIHZhciBjYXRl
Z29yeSA9IGNhdGVnb3JpZXNbaV07CiAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gc3RhdGlz
dGljc1tjYXRlZ29yeV0gfHwgMDsKLSAgICAgICAgICAgICAgICB2YWx1ZSArPSByZWNvcmQuYWdn
cmVnYXRlZFN0YXRzW2NhdGVnb3J5XTsKLSAgICAgICAgICAgICAgICB0b3RhbFRpbWUgKz0gcmVj
b3JkLmFnZ3JlZ2F0ZWRTdGF0c1tjYXRlZ29yeV07CisgICAgICAgICAgICAgICAgdmFsdWUgKz0g
cmVjb3JkLnRpbWVCeUNhdGVnb3J5W2NhdGVnb3J5XTsKKyAgICAgICAgICAgICAgICB0b3RhbFRp
bWUgKz0gcmVjb3JkLnRpbWVCeUNhdGVnb3J5W2NhdGVnb3J5XTsKICAgICAgICAgICAgICAgICBz
dGF0aXN0aWNzW2NhdGVnb3J5XSA9IHZhbHVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC04OTgsNiArOTMwLDEwIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJh
bSB7QXJyYXkuPFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZ3JlZ2F0ZWRSZWNvcmQ+fSByZWNvcmRz
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mQmFycworICAgICAqLwogICAgIF9hZ2dy
ZWdhdGVSZWNvcmRzOiBmdW5jdGlvbihyZWNvcmRzLCBudW1iZXJPZkJhcnMpCiAgICAgewogICAg
ICAgICB2YXIgc3RhdGlzdGljcyA9IFtdOwpAQCAtOTA3LDEyICs5NDMsMTIgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2
YXIgbGFzdEluZGV4ID0gTWF0aC5taW4oTWF0aC5mbG9vcigoYmFyTnVtYmVyICsgMSkgKiB0aGlz
Ll9yZWNvcmRzUGVyQmFyKSwgcmVjb3Jkcy5sZW5ndGgpOwogICAgICAgICAgICAgZm9yICgrK2N1
cnJlbnRSZWNvcmQ7IGN1cnJlbnRSZWNvcmQgPCBsYXN0SW5kZXg7ICsrY3VycmVudFJlY29yZCkg
ewogICAgICAgICAgICAgICAgIHZhciByZWNvcmQgPSByZWNvcmRzW2N1cnJlbnRSZWNvcmRdOwot
ICAgICAgICAgICAgICAgIGlmIChsb25nZXN0UmVjb3JkLmVuZFRpbWUgLSBsb25nZXN0UmVjb3Jk
LnN0YXJ0VGltZSA8IHJlY29yZC5lbmRUaW1lIC0gcmVjb3JkLnN0YXJ0VGltZSkKKyAgICAgICAg
ICAgICAgICBpZiAobG9uZ2VzdFJlY29yZC5kdXJhdGlvbiA8IHJlY29yZC5kdXJhdGlvbikKICAg
ICAgICAgICAgICAgICAgICAgbG9uZ2VzdFJlY29yZCA9IHJlY29yZDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHZhciBiYXJFbmRUaW1lID0gcmVjb3Jkc1tjdXJyZW50UmVjb3JkIC0gMV0u
ZW5kVGltZTsKLSAgICAgICAgICAgIHN0YXRpc3RpY3MucHVzaChsb25nZXN0UmVjb3JkLmFnZ3Jl
Z2F0ZWRTdGF0cyk7Ci0gICAgICAgICAgICB0aGlzLl9sb25nZXN0QmFyVGltZSA9IE1hdGgubWF4
KHRoaXMuX2xvbmdlc3RCYXJUaW1lLCBsb25nZXN0UmVjb3JkLmVuZFRpbWUgLSBsb25nZXN0UmVj
b3JkLnN0YXJ0VGltZSk7CisgICAgICAgICAgICBzdGF0aXN0aWNzLnB1c2gobG9uZ2VzdFJlY29y
ZC50aW1lQnlDYXRlZ29yeSk7CisgICAgICAgICAgICB0aGlzLl9sb25nZXN0QmFyVGltZSA9IE1h
dGgubWF4KHRoaXMuX2xvbmdlc3RCYXJUaW1lLCBsb25nZXN0UmVjb3JkLmR1cmF0aW9uKTsKICAg
ICAgICAgICAgIHRoaXMuX2JhclRpbWVzLnB1c2goeyBzdGFydFRpbWU6IGJhclN0YXJ0VGltZSwg
ZW5kVGltZTogYmFyRW5kVGltZSB9KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gc3RhdGlz
dGljczsKQEAgLTk1Myw2ICs5ODksMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxP
dmVydmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBzdGFydFRpbWU6IGZpcnN0QmFyID49
IHRoaXMuX2JhclRpbWVzLmxlbmd0aCA/IEluZmluaXR5IDogdGhpcy5fYmFyVGltZXNbZmlyc3RC
YXJdLnN0YXJ0VGltZSwKICAgICAgICAgICAgIGVuZFRpbWU6IHJpZ2h0T2Zmc2V0ICsgc25hcFRv
UmlnaHRUb2xlcmFuY2VQaXhlbHMgPiB3aW5kb3dTcGFuID8gSW5maW5pdHkgOiB0aGlzLl9iYXJU
aW1lc1tsYXN0QmFyXS5lbmRUaW1lCiAgICAgICAgIH0KKyAgICB9LAorCisgICAgX29uUmVjb3Jk
QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fYWdncmVnYXRlZFJl
Y29yZHMucHVzaChuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdncmVnYXRlZFJlY29yZChldmVu
dC5kYXRhKSk7CiAgICAgfQogfQogCkBAIC05NjAsNiArMTAwMSwzOSBAQCBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVWZXJ0aWNhbE92ZXJ2aWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuVmlldy5wcgogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtPYmplY3R9IHJh
d1JlY29yZAorICovCitXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2dyZWdhdGVkUmVjb3JkID0gZnVu
Y3Rpb24ocmF3UmVjb3JkKQoreworICAgIHRoaXMudGltZUJ5Q2F0ZWdvcnkgPSB7fTsKKyAgICB0
aGlzLmNhdGVnb3J5ID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuY2F0
ZWdvcnlGb3JSZWNvcmQocmF3UmVjb3JkKTsKKyAgICB0aGlzLnR5cGUgPSByYXdSZWNvcmQudHlw
ZTsKKyAgICB0aGlzLl9hZ2dyZWdhdGVTdGF0aXN0aWNzKHJhd1JlY29yZCk7CisgICAgdGhpcy5z
dGFydFRpbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5nZXRTdGFydFRpbWUocmF3UmVj
b3JkKTsKKyAgICB0aGlzLmVuZFRpbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5nZXRF
bmRUaW1lKHJhd1JlY29yZCk7CisgICAgdGhpcy5kdXJhdGlvbiA9IHRoaXMuZW5kVGltZSAtIHRo
aXMuc3RhcnRUaW1lOworfQorCitXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2dyZWdhdGVkUmVjb3Jk
LnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge09iamVjdH0gcmF3UmVjb3Jk
CisgICAgICovCisgICAgX2FnZ3JlZ2F0ZVN0YXRpc3RpY3M6IGZ1bmN0aW9uKHJhd1JlY29yZCkK
KyAgICB7CisgICAgICAgIHZhciBjaGlsZHJlblRpbWUgPSAwOworICAgICAgICB2YXIgY2hpbGRy
ZW4gPSByYXdSZWNvcmQuY2hpbGRyZW4gfHwgW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpICB7CisgICAgICAgICAgICB0aGlzLl9hZ2dyZWdhdGVT
dGF0aXN0aWNzKGNoaWxkcmVuW2ldKTsKKyAgICAgICAgICAgIGNoaWxkcmVuVGltZSArPSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNb2RlbC5nZXREdXJhdGlvbihjaGlsZHJlbltpXSk7CisgICAgICAg
IH0KKyAgICAgICAgdmFyIGNhdGVnb3J5TmFtZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNl
bnRhdGlvbk1vZGVsLmdldFJlY29yZFN0eWxlKHJhd1JlY29yZCkuY2F0ZWdvcnkubmFtZTsKKyAg
ICAgICAgdmFyIG93blRpbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5nZXREdXJhdGlv
bihyYXdSZWNvcmQpIC0gY2hpbGRyZW5UaW1lOworICAgICAgICB0aGlzLnRpbWVCeUNhdGVnb3J5
W2NhdGVnb3J5TmFtZV0gPSAodGhpcy50aW1lQnlDYXRlZ29yeVtjYXRlZ29yeU5hbWVdIHx8IDAp
ICsgb3duVGltZTsKKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCiAgKi8KIFdlYklu
c3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3TW9kZVNlbGVjdG9yID0gZnVuY3Rpb24oc2VsZWN0Q2Fs
bGJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rp
bWVsaW5lUGFuZWwuanMKaW5kZXggNzFjMjJlNGEzMDA4YWY1YjFhODQyMjE4MTllMGVhNDI5NmY0
NTNlNi4uZWMxNjhmODNkNDZkNjQ4OGQ0NjZlOGJhYzkyYTc1MDRmMGQ4N2EwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpA
QCAtMzcsMTAgKzM3LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24o
KQogICAgIFdlYkluc3BlY3Rvci5QYW5lbC5jYWxsKHRoaXMsICJ0aW1lbGluZSIpOwogICAgIHRo
aXMucmVnaXN0ZXJSZXF1aXJlZENTUygidGltZWxpbmVQYW5lbC5jc3MiKTsKIAorICAgIHRoaXMu
X21vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsKCk7CiAgICAgdGhpcy5fcHJl
c2VudGF0aW9uTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9k
ZWwoKTsKIAotICAgIHRoaXMuX292ZXJ2aWV3UGFuZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxp
bmVPdmVydmlld1BhbmUodGhpcy5fcHJlc2VudGF0aW9uTW9kZWwpOworICAgIHRoaXMuX292ZXJ2
aWV3UGFuZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUodGhpcy5fbW9k
ZWwpOwogICAgIHRoaXMuX292ZXJ2aWV3UGFuZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5FdmVudHMuV2luZG93Q2hhbmdlZCwgdGhpcy5fc2NoZWR1
bGVSZWZyZXNoLmJpbmQodGhpcywgZmFsc2UpKTsKKyAgICB0aGlzLl9vdmVydmlld1BhbmUuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUuRXZlbnRzLk1v
ZGVDaGFuZ2VkLCB0aGlzLl90aW1lbGluZXNPdmVydmlld01vZGVDaGFuZ2VkLCB0aGlzKTsKIAog
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9vdmVydmlld1BhbmUuZWxlbWVudCk7
CiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5f
Y29udGV4dE1lbnUuYmluZCh0aGlzKSwgdHJ1ZSk7CkBAIC02MCw3ICs2Miw2IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3RpbWVsaW5lTWVtb3J5
U3BsaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fc3RhcnRTcGxpdHRl
ckRyYWdnaW5nLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLl90aW1lbGluZU1lbW9yeVNw
bGl0dGVyLmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOwogICAgIHRoaXMuX21lbW9yeVN0YXRpc3Rp
Y3MgPSBuZXcgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3ModGhpcywgdGhpcy5zcGxpdFZp
ZXcucHJlZmVycmVkU2lkZWJhcldpZHRoKCkpOwotICAgIHRoaXMuX292ZXJ2aWV3UGFuZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5FdmVudHMuTW9k
ZUNoYW5nZWQsIHRoaXMuX3RpbWVsaW5lc092ZXJ2aWV3TW9kZUNoYW5nZWQsIHRoaXMpOwogICAg
IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5tZW1vcnlDb3VudGVyR3JhcGhzSGVpZ2h0ID0gV2ViSW5z
cGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRpbmcoIm1lbW9yeUNvdW50ZXJHcmFwaHNIZWlnaHQi
LCAxNTApOwogCiAgICAgdmFyIGl0ZW1zVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlNp
ZGViYXJTZWN0aW9uVHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSRUNPUkRTIiks
IHt9LCB0cnVlKTsKQEAgLTk0LDcgKzk1LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwg
PSBmdW5jdGlvbigpCiAgICAgdGhpcy5fZXhwYW5kRWxlbWVudHMuaWQgPSAib3JwaGFuLWV4cGFu
ZC1lbGVtZW50cyI7CiAgICAgdGhpcy5faXRlbXNHcmFwaHNFbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2V4cGFuZEVsZW1lbnRzKTsKIAotICAgIHRoaXMuX2NhbGN1bGF0b3IgPSBuZXcgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRvcih0aGlzLl9wcmVzZW50YXRpb25Nb2RlbCk7CisgICAg
dGhpcy5fY2FsY3VsYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yKHRo
aXMuX21vZGVsKTsKICAgICB2YXIgc2hvcnRSZWNvcmRUaHJlc2hvbGRUaXRsZSA9IE51bWJlci5z
ZWNvbmRzVG9TdHJpbmcoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuc2hv
cnRSZWNvcmRUaHJlc2hvbGQpOwogICAgIHRoaXMuX3Nob3dTaG9ydFJlY29yZHNUaXRsZVRleHQg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdGhlIHJlY29yZHMgdGhhdCBhcmUgc2hvcnRl
ciB0aGFuICVzIiwgc2hvcnRSZWNvcmRUaHJlc2hvbGRUaXRsZSk7CiAgICAgdGhpcy5faGlkZVNo
b3J0UmVjb3Jkc1RpdGxlVGV4dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0aGUgcmVj
b3JkcyB0aGF0IGFyZSBzaG9ydGVyIHRoYW4gJXMiLCBzaG9ydFJlY29yZFRocmVzaG9sZFRpdGxl
KTsKQEAgLTExMSwxMSArMTEyLDEzIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVu
Y3Rpb24oKQogICAgIC8vIERpc2FibGUgc2hvcnQgZXZlbnRzIGZpbHRlciBieSBkZWZhdWx0Lgog
ICAgIHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLnRvZ2dsZWQgPSB0cnVlOwogICAgIHRoaXMuX3No
b3dTaG9ydEV2ZW50cyA9IHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLnRvZ2dsZWQ7CisgICAgdGhp
cy5fb3ZlcnZpZXdQYW5lLnNldFNob3dTaG9ydEV2ZW50cyh0aGlzLl9zaG93U2hvcnRFdmVudHMp
OworCiAgICAgdGhpcy5fdGltZVN0YW1wUmVjb3JkcyA9IFtdOwogICAgIHRoaXMuX2V4cGFuZE9m
ZnNldCA9IDE1OwogCiAgICAgdGhpcy5fY3JlYXRlRmlsZVNlbGVjdG9yKCk7Ci0gICAgdGhpcy5f
bW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwoKTsKKwogICAgIHRoaXMuX21v
ZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzLlJl
Y29yZEFkZGVkLCB0aGlzLl9vblRpbWVsaW5lRXZlbnRSZWNvcmRlZCwgdGhpcyk7CiAgICAgdGhp
cy5fbW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5FdmVu
dHMuUmVjb3Jkc0NsZWFyZWQsIHRoaXMuX29uUmVjb3Jkc0NsZWFyZWQsIHRoaXMpOwogCkBAIC0y
MjAsNyArMjIzLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewog
CiAgICAgICAgIHRoaXMuc3RhdHVzQmFyRmlsdGVycyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogICAgICAgICB0aGlzLnN0YXR1c0JhckZpbHRlcnMuY2xhc3NOYW1lID0gInN0YXR1
cy1iYXItaXRlbXMiOwotICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IHRoaXMuX3ByZXNlbnRhdGlv
bk1vZGVsLmNhdGVnb3JpZXM7CisgICAgICAgIHZhciBjYXRlZ29yaWVzID0gV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuZ2V0Q2F0ZWdvcmllcygpOwogICAgICAgICBmb3Ig
KHZhciBjYXRlZ29yeU5hbWUgaW4gY2F0ZWdvcmllcykgewogICAgICAgICAgICAgdmFyIGNhdGVn
b3J5ID0gY2F0ZWdvcmllc1tjYXRlZ29yeU5hbWVdOwogICAgICAgICAgICAgdGhpcy5zdGF0dXNC
YXJGaWx0ZXJzLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVRpbWVsaW5lQ2F0ZWdvcnlTdGF0dXNC
YXJDaGVja2JveChjYXRlZ29yeSwgdGhpcy5fb25DYXRlZ29yeUNoZWNrYm94Q2xpY2tlZC5iaW5k
KHRoaXMsIGNhdGVnb3J5KSkpOwpAQCAtNDE2LDYgKzQxOSw3IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVy
QnV0dG9uLnRvZ2dsZWQgPSAhdGhpcy50b2dnbGVGaWx0ZXJCdXR0b24udG9nZ2xlZDsKICAgICAg
ICAgdGhpcy5fc2hvd1Nob3J0RXZlbnRzID0gdGhpcy50b2dnbGVGaWx0ZXJCdXR0b24udG9nZ2xl
ZDsKKyAgICAgICAgdGhpcy5fb3ZlcnZpZXdQYW5lLnNldFNob3dTaG9ydEV2ZW50cyh0aGlzLl9z
aG93U2hvcnRFdmVudHMpOwogICAgICAgICB0aGlzLnRvZ2dsZUZpbHRlckJ1dHRvbi5lbGVtZW50
LnRpdGxlID0gdGhpcy5fc2hvd1Nob3J0RXZlbnRzID8gdGhpcy5faGlkZVNob3J0UmVjb3Jkc1Rp
dGxlVGV4dCA6IHRoaXMuX3Nob3dTaG9ydFJlY29yZHNUaXRsZVRleHQ7CiAgICAgICAgIHRoaXMu
X3NjaGVkdWxlUmVmcmVzaCh0cnVlKTsKICAgICB9LApAQCAtNDk5LDcgKzUwMyw2IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcHJlc2Vu
dGF0aW9uTW9kZWwucmVzZXQoKTsKICAgICAgICAgdGhpcy5fdGltZVN0YW1wUmVjb3JkcyA9IFtd
OwogICAgICAgICB0aGlzLl9ib3VuZGFyaWVzQXJlVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgdGhp
cy5fb3ZlcnZpZXdQYW5lLnJlc2V0KCk7CiAgICAgICAgIHRoaXMuX2FkanVzdFNjcm9sbFBvc2l0
aW9uKDApOwogICAgICAgICB0aGlzLl9jbG9zZVJlY29yZERldGFpbHMoKTsKICAgICAgICAgdGhp
cy5fYWxsUmVjb3Jkc0NvdW50ID0gMDsKQEAgLTU1Nyw4ICs1NjAsNiBAQCBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVm
cmVzaFRpbWVvdXQ7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9vdmVydmlld1BhbmUudXBk
YXRlKHRoaXMuX3Nob3dTaG9ydEV2ZW50cyk7Ci0KICAgICAgICAgaWYgKCF0aGlzLl9ib3VuZGFy
aWVzQXJlVmFsaWQpCiAgICAgICAgICAgICB0aGlzLl9jYWxjdWxhdG9yLnNldFdpbmRvdyh0aGlz
Ll9vdmVydmlld1BhbmUud2luZG93U3RhcnRUaW1lKCksIHRoaXMuX292ZXJ2aWV3UGFuZS53aW5k
b3dFbmRUaW1lKCkpOwogCkBAIC03NTEsMTEgKzc1MiwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlw
ZTsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVs
aW5lUHJlc2VudGF0aW9uTW9kZWx9IHByZXNlbnRhdGlvbk1vZGVsCisgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5UaW1lbGluZU1vZGVsfSBtb2RlbAogICovCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVD
YWxjdWxhdG9yID0gZnVuY3Rpb24ocHJlc2VudGF0aW9uTW9kZWwpCitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVDYWxjdWxhdG9yID0gZnVuY3Rpb24obW9kZWwpCiB7Ci0gICAgdGhpcy5fcHJlc2VudGF0
aW9uTW9kZWwgPSBwcmVzZW50YXRpb25Nb2RlbDsKKyAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOwog
fQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZSA9IHsKQEAgLTc5
Myw3ICs3OTQsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZSA9
IHsKIAogICAgIGZvcm1hdFRpbWU6IGZ1bmN0aW9uKHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIE51bWJlci5zZWNvbmRzVG9TdHJpbmcodmFsdWUgKyB0aGlzLm1pbmltdW1Cb3VuZGFyeSAt
IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLm1pbmltdW1SZWNvcmRUaW1lKCkpOworICAgICAgICBy
ZXR1cm4gTnVtYmVyLnNlY29uZHNUb1N0cmluZyh2YWx1ZSArIHRoaXMubWluaW11bUJvdW5kYXJ5
IC0gdGhpcy5fbW9kZWwubWluaW11bVJlY29yZFRpbWUoKSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0
aW9uTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwuanMKaW5kZXggNWVmMzNjZjI2ZjU5YzQxOTY1YjkxM2EwNmJiNzQw
YjA3NWU2NDc4ZC4uZWY3YWYyMmM0N2VkYTk1NTc0YWEwZWI1ODVhY2FjMzI0NzI3YWU5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNl
bnRhdGlvbk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qcwpAQCAtMzQsMTAgKzM0LDYgQEAKICAqLwogV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwgPSBmdW5jdGlvbigpCiB7Ci0gICAg
dGhpcy5fY2F0ZWdvcmllcyA9IHt9OwotICAgIHRoaXMuX2FkZENhdGVnb3J5KG5ldyBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVDYXRlZ29yeSgibG9hZGluZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TG9hZGluZyIpLCAicmdiKDQ3LDEwMiwyMzYpIikpOwotICAgIHRoaXMuX2FkZENhdGVnb3J5KG5l
dyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSgic2NyaXB0aW5nIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTY3JpcHRpbmciKSwgInJnYigxNTcsMjMxLDExOSkiKSk7Ci0gICAgdGhpcy5f
YWRkQ2F0ZWdvcnkobmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5KCJyZW5kZXJpbmci
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbmRlcmluZyIpLCAicmdiKDE2NCw2MCwyNTUpIikp
OwogICAgIHRoaXMuX2xpbmtpZmllciA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLmNyZWF0ZUxpbmtpZmllcigpOwogICAgIHRoaXMuX2dsdWVSZWNvcmRzID0gZmFsc2U7
CiAgICAgdGhpcy5fZmlsdGVycyA9IFtdOwpAQCAtNDYsNiArNDIsNjUgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwgPSBmdW5jdGlvbigpCiAKIFdlYkluc3BlY3Rvci5U
aW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnNob3J0UmVjb3JkVGhyZXNob2xkID0gMC4wMTU7CiAK
K1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmdldENhdGVnb3JpZXMgPSBm
dW5jdGlvbigpCit7CisgICAgaWYgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1v
ZGVsLl9jYXRlZ29yaWVzKQorICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJl
c2VudGF0aW9uTW9kZWwuX2NhdGVnb3JpZXM7CisgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJl
c2VudGF0aW9uTW9kZWwuX2NhdGVnb3JpZXMgPSB7CisgICAgICAgIGxvYWRpbmc6IG5ldyBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSgibG9hZGluZyIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiTG9hZGluZyIpLCAicmdiKDQ3LDEwMiwyMzYpIiksCisgICAgICAgIHNjcmlwdGluZzogbmV3
IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5KCJzY3JpcHRpbmciLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlNjcmlwdGluZyIpLCAicmdiKDE1NywyMzEsMTE5KSIpLAorICAgICAgICByZW5k
ZXJpbmc6IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSgicmVuZGVyaW5nIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSZW5kZXJpbmciKSwgInJnYigxNjQsNjAsMjU1KSIpCisgICAg
fTsKKyAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuX2Nh
dGVnb3JpZXM7Cit9OworCisvKioKKyAqIEBwYXJhbSB7T2JqZWN0fSByZWNvcmQKKyAqLworV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuZ2V0UmVjb3JkU3R5bGUgPSBmdW5j
dGlvbihyZWNvcmQpIHsKKyAgICBpZiAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9u
TW9kZWwuX3JlY29yZFN0eWxlc01hcCkKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5UaW1l
bGluZVByZXNlbnRhdGlvbk1vZGVsLl9yZWNvcmRTdHlsZXNNYXBbcmVjb3JkLnR5cGVdOworCisg
ICAgdmFyIHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlw
ZTsKKyAgICB2YXIgY2F0ZWdvcmllcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlv
bk1vZGVsLmdldENhdGVnb3JpZXMoKTsKKyAgICAgICAgCisgICAgdmFyIHJlY29yZFN0eWxlcyA9
IHt9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5Sb290XSA9IHsgdGl0bGU6ICIjcm9v
dCIsIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0gfTsKKyAgICByZWNvcmRTdHlsZXNb
cmVjb3JkVHlwZXMuRXZlbnREaXNwYXRjaF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkV2ZW50IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgIHJl
Y29yZFN0eWxlc1tyZWNvcmRUeXBlcy5MYXlvdXRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJMYXlvdXQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07Cisg
ICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlY2FsY3VsYXRlU3R5bGVzXSA9IHsgdGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjYWxjdWxhdGUgU3R5bGUiKSwgY2F0ZWdvcnk6IGNh
dGVnb3JpZXNbInJlbmRlcmluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlBh
aW50XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFpbnQiKSwgY2F0ZWdvcnk6
IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVz
LkJlZ2luRnJhbWVdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGcmFtZSBTdGFy
dCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sicmVuZGVyaW5nIl0gfTsKKyAgICByZWNvcmRTdHls
ZXNbcmVjb3JkVHlwZXMuUGFyc2VIVE1MXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUGFyc2UiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OworICAgIHJlY29y
ZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lckluc3RhbGxdID0geyB0aXRsZTogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJJbnN0YWxsIFRpbWVyIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRp
bmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lclJlbW92ZV0gPSB7IHRp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbW92ZSBUaW1lciIpLCBjYXRlZ29yeTogY2F0
ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuVGlt
ZXJGaXJlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZXIgRmlyZWQiKSwg
Y2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3Jl
Y29yZFR5cGVzLlhIUlJlYWR5U3RhdGVDaGFuZ2VdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJYSFIgUmVhZHkgU3RhdGUgQ2hhbmdlIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJz
Y3JpcHRpbmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5YSFJMb2FkXSA9IHsg
dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhSIExvYWQiKSwgY2F0ZWdvcnk6IGNhdGVn
b3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkV2YWx1
YXRlU2NyaXB0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZhbHVhdGUgU2Ny
aXB0IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgIHJlY29yZFN0
eWxlc1tyZWNvcmRUeXBlcy5UaW1lU3RhbXBdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTdGFtcCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAgICBy
ZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VTZW5kUmVxdWVzdF0gPSB7IHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbmQgUmVxdWVzdCIpLCBjYXRlZ29yeTogY2F0ZWdvcmll
c1sibG9hZGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlUmVj
ZWl2ZVJlc3BvbnNlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjZWl2ZSBS
ZXNwb25zZSIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07CisgICAgcmVjb3Jk
U3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlRmluaXNoXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRmluaXNoIExvYWRpbmciKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRp
bmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5GdW5jdGlvbkNhbGxdID0geyB0
aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGdW5jdGlvbiBDYWxsIiksIGNhdGVnb3J5OiBj
YXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5S
ZXNvdXJjZVJlY2VpdmVkRGF0YV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
Y2VpdmUgRGF0YSIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07CisgICAgcmVj
b3JkU3R5bGVzW3JlY29yZFR5cGVzLkdDRXZlbnRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJHQyBFdmVudCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsK
KyAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuTWFya0RPTUNvbnRlbnRdID0geyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJET01Db250ZW50IGV2ZW50IiksIGNhdGVnb3J5OiBjYXRl
Z29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5NYXJr
TG9hZF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWQgZXZlbnQiKSwgY2F0
ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29y
ZFR5cGVzLlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU2NoZWR1bGUgUmVxdWVzdCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGlu
ZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlcXVlc3RBbmltYXRpb25GcmFt
ZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgQW5pbWF0aW9uIEZy
YW1lIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgIHJlY29yZFN0
eWxlc1tyZWNvcmRUeXBlcy5DYW5jZWxBbmltYXRpb25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNhbmNlbCBBbmltYXRpb24gRnJhbWUiKSwgY2F0ZWdvcnk6IGNhdGVn
b3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkZpcmVB
bmltYXRpb25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFuaW1hdGlv
biBGcmFtZSBGaXJlZCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKwor
ICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLl9yZWNvcmRTdHlsZXNN
YXAgPSByZWNvcmRTdHlsZXM7CisgICAgcmV0dXJuIHJlY29yZFN0eWxlc1tyZWNvcmQudHlwZV07
Cit9CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3J5Rm9y
UmVjb3JkID0gZnVuY3Rpb24ocmVjb3JkKQoreworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuZ2V0UmVjb3JkU3R5bGUocmVjb3JkKS5jYXRlZ29y
eTsKK30KKwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBl
ID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwuRmlsdGVyfSBmaWx0ZXIKQEAgLTY5LDE3ICsxMjQsNiBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3RpbWVyUmVjb3JkcyA9IHt9OwogICAgICAgICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVS
ZWNvcmRzID0ge307CiAgICAgICAgIHRoaXMuX21pbmltdW1SZWNvcmRUaW1lID0gLTE7Ci0gICAg
ICAgIHRoaXMuX21heGltdW1SZWNvcmRUaW1lID0gLTE7Ci0gICAgfSwKLQotICAgIG1pbmltdW1S
ZWNvcmRUaW1lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbWluaW11
bVJlY29yZFRpbWU7Ci0gICAgfSwKLQotICAgIG1heGltdW1SZWNvcmRUaW1lOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbWF4aW11bVJlY29yZFRpbWU7CiAgICAgfSwK
IAogICAgIGFkZFJlY29yZDogZnVuY3Rpb24ocmVjb3JkLCBwYXJlbnRSZWNvcmQpCkBAIC04Nyw2
ICsxMzEsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHZhciBjb25uZWN0ZWRUb09sZFJlY29yZCA9IGZhbHNlOwogICAgICAg
ICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBl
OwogCisgICAgICAgIGlmICh0aGlzLl9taW5pbXVtUmVjb3JkVGltZSA9PT0gLTEgfHwgcmVjb3Jk
LnN0YXJ0VGltZSA8IHRoaXMuX21pbmltdW1SZWNvcmRUaW1lKQorICAgICAgICAgICAgdGhpcy5f
bWluaW11bVJlY29yZFRpbWUgPSByZWNvcmQuc3RhcnRUaW1lOworCiAgICAgICAgIGlmIChyZWNv
cmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuTWFya0RPTUNvbnRlbnQgfHwgcmVjb3JkLnR5cGUgPT09
IHJlY29yZFR5cGVzLk1hcmtMb2FkKQogICAgICAgICAgICAgcGFyZW50UmVjb3JkID0gbnVsbDsg
Ly8gTm8gYmFyIGVudHJ5IGZvciBsb2FkIGV2ZW50cy4KICAgICAgICAgZWxzZSB7CkBAIC0xMTgs
NyArMTY1LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdmFyIGZvcm1hdHRlZFJlY29yZCA9IG5ldyBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQodGhpcywgcmVjb3Jk
LCBwYXJlbnRSZWNvcmQsIHNjcmlwdERldGFpbHMpOwotICAgICAgICB0aGlzLl91cGRhdGVCb3Vu
ZGFyaWVzKGZvcm1hdHRlZFJlY29yZCk7ICAgIAogCiAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9
PT0gcmVjb3JkVHlwZXMuTWFya0RPTUNvbnRlbnQgfHwgcmVjb3JkLnR5cGUgPT09IHJlY29yZFR5
cGVzLk1hcmtMb2FkKQogICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFJlY29yZDsKQEAgLTEy
OSw3ICsxNzUsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5Db3VudDsgKytp
KQogICAgICAgICAgICAgdGhpcy5hZGRSZWNvcmQoY2hpbGRyZW5baV0sIGZvcm1hdHRlZFJlY29y
ZCk7CiAKLSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmNhbGN1bGF0ZUFnZ3JlZ2F0ZWRTdGF0cyh0
aGlzLl9jYXRlZ29yaWVzKTsKKyAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmNhbGN1bGF0ZUFnZ3Jl
Z2F0ZWRTdGF0cyhXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5nZXRDYXRl
Z29yaWVzKCkpOwogCiAgICAgICAgIGlmIChjb25uZWN0ZWRUb09sZFJlY29yZCkgewogICAgICAg
ICAgICAgcmVjb3JkID0gZm9ybWF0dGVkUmVjb3JkOwpAQCAtMTQ4LDE0ICsxOTQsNiBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiBmb3JtYXR0ZWRSZWNvcmQ7CiAgICAgfSwKIAotICAgIF91cGRhdGVCb3VuZGFyaWVz
OiBmdW5jdGlvbihmb3JtYXR0ZWRSZWNvcmQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fbWlu
aW11bVJlY29yZFRpbWUgPT09IC0xIHx8IGZvcm1hdHRlZFJlY29yZC5zdGFydFRpbWUgPCB0aGlz
Ll9taW5pbXVtUmVjb3JkVGltZSkKLSAgICAgICAgICAgIHRoaXMuX21pbmltdW1SZWNvcmRUaW1l
ID0gZm9ybWF0dGVkUmVjb3JkLnN0YXJ0VGltZTsKLSAgICAgICAgaWYgKHRoaXMuX21heGltdW1S
ZWNvcmRUaW1lID09PSAtMSB8fCBmb3JtYXR0ZWRSZWNvcmQuZW5kVGltZSA+IHRoaXMuX21heGlt
dW1SZWNvcmRUaW1lKQotICAgICAgICAgICAgdGhpcy5fbWF4aW11bVJlY29yZFRpbWUgPSBmb3Jt
YXR0ZWRSZWNvcmQuZW5kVGltZTsKLSAgICB9LAotCiAgICAgX2ZpbmRQYXJlbnRSZWNvcmQ6IGZ1
bmN0aW9uKHJlY29yZCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZ2x1ZVJlY29yZHMpCkBA
IC0xODAsNTcgKzIxOCw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZ2x1ZVJlY29yZHMgPSBnbHVlOwogICAgIH0s
CiAKLSAgICBnZXQgY2F0ZWdvcmllcygpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY2F0
ZWdvcmllczsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
VGltZWxpbmVDYXRlZ29yeX0gY2F0ZWdvcnkKLSAgICAgKi8KLSAgICBfYWRkQ2F0ZWdvcnk6IGZ1
bmN0aW9uKGNhdGVnb3J5KQotICAgIHsKLSAgICAgICAgdGhpcy5fY2F0ZWdvcmllc1tjYXRlZ29y
eS5uYW1lXSA9IGNhdGVnb3J5OwotICAgIH0sCi0KLSAgICBnZXQgX3JlY29yZFN0eWxlcygpCi0g
ICAgewotICAgICAgICBpZiAoIXRoaXMuX3JlY29yZFN0eWxlc0FycmF5KSB7Ci0gICAgICAgICAg
ICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBl
OwotICAgICAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSB0aGlzLl9jYXRlZ29yaWVzOwotCi0gICAg
ICAgICAgICB2YXIgcmVjb3JkU3R5bGVzID0ge307Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNb
cmVjb3JkVHlwZXMuUm9vdF0gPSB7IHRpdGxlOiAiI3Jvb3QiLCBjYXRlZ29yeTogY2F0ZWdvcmll
c1sibG9hZGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRXZl
bnREaXNwYXRjaF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2ZW50IiksIGNh
dGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5
bGVzW3JlY29yZFR5cGVzLkxheW91dF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkxheW91dCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sicmVuZGVyaW5nIl0gfTsKLSAgICAgICAg
ICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZWNhbGN1bGF0ZVN0eWxlc10gPSB7IHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2FsY3VsYXRlIFN0eWxlIiksIGNhdGVnb3J5OiBj
YXRlZ29yaWVzWyJyZW5kZXJpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29y
ZFR5cGVzLlBhaW50XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFpbnQiKSwg
Y2F0ZWdvcnk6IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRT
dHlsZXNbcmVjb3JkVHlwZXMuQmVnaW5GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkZyYW1lIFN0YXJ0IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJyZW5kZXJpbmciXSB9
OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlBhcnNlSFRNTF0gPSB7IHRp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhcnNlIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVz
WyJsb2FkaW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1l
ckluc3RhbGxdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbnN0YWxsIFRpbWVy
IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVj
b3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVyUmVtb3ZlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUmVtb3ZlIFRpbWVyIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRp
bmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVyRmlyZV0g
PSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVyIEZpcmVkIiksIGNhdGVnb3J5
OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3Jl
Y29yZFR5cGVzLlhIUlJlYWR5U3RhdGVDaGFuZ2VdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJYSFIgUmVhZHkgU3RhdGUgQ2hhbmdlIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJz
Y3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlhIUkxv
YWRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJYSFIgTG9hZCIpLCBjYXRlZ29y
eTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1ty
ZWNvcmRUeXBlcy5FdmFsdWF0ZVNjcmlwdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkV2YWx1YXRlIFNjcmlwdCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0g
fTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lU3RhbXBdID0geyB0
aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFtcCIpLCBjYXRlZ29yeTogY2F0ZWdvcmll
c1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5S
ZXNvdXJjZVNlbmRSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2Vu
ZCBSZXF1ZXN0IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0gfTsKLSAgICAgICAg
ICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZV0gPSB7
IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2VpdmUgUmVzcG9uc2UiKSwgY2F0ZWdv
cnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3Jl
Y29yZFR5cGVzLlJlc291cmNlRmluaXNoXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRmluaXNoIExvYWRpbmciKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9Owot
ICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkZ1bmN0aW9uQ2FsbF0gPSB7IHRp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9uIENhbGwiKSwgY2F0ZWdvcnk6IGNh
dGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3Jk
VHlwZXMuUmVzb3VyY2VSZWNlaXZlZERhdGFdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSZWNlaXZlIERhdGEiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9Owot
ICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkdDRXZlbnRdID0geyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJHQyBFdmVudCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1si
c2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5NYXJr
RE9NQ29udGVudF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRPTUNvbnRlbnQg
ZXZlbnQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAg
ICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuTWFya0xvYWRdID0geyB0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJMb2FkIGV2ZW50IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRp
bmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlNjaGVkdWxlUmVz
b3VyY2VSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NoZWR1bGUg
UmVxdWVzdCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07Ci0gICAgICAgICAg
ICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVxdWVzdEFuaW1hdGlvbkZyYW1lXSA9IHsgdGl0
bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBBbmltYXRpb24gRnJhbWUiKSwgY2F0
ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHls
ZXNbcmVjb3JkVHlwZXMuQ2FuY2VsQW5pbWF0aW9uRnJhbWVdID0geyB0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDYW5jZWwgQW5pbWF0aW9uIEZyYW1lIiksIGNhdGVnb3J5OiBjYXRlZ29y
aWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVz
LkZpcmVBbmltYXRpb25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFu
aW1hdGlvbiBGcmFtZSBGaXJlZCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0g
fTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc0FycmF5ID0gcmVjb3JkU3R5bGVzOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRTdHlsZXNBcnJheTsKLSAgICB9
LAotCiAgICAgZmlsdGVyZWRSZWNvcmRzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBmdW5j
dGlvbiBmaWx0ZXIocmVjb3JkKQpAQCAtMjkxLDIwICsyNzgsMjEgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkID0gZnVuY3Rpb24ocHJlc2VudGF0aW9uTW9k
ZWwsIHJlY28KICAgICB0aGlzLl9saW5raWZpZXIgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5f
bGlua2lmaWVyOwogICAgIHRoaXMuX2FnZ3JlZ2F0ZWRTdGF0cyA9IFtdOwogICAgIHZhciByZWNv
cmRUeXBlcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGU7Ci0gICAgdmFy
IHN0eWxlID0gcHJlc2VudGF0aW9uTW9kZWwuX3JlY29yZFN0eWxlc1tyZWNvcmQudHlwZV07Cisg
ICAgdmFyIHN0eWxlID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuZ2V0
UmVjb3JkU3R5bGUocmVjb3JkKTsKICAgICB0aGlzLnBhcmVudCA9IHBhcmVudFJlY29yZDsKICAg
ICBpZiAocGFyZW50UmVjb3JkKQogICAgICAgICBwYXJlbnRSZWNvcmQuY2hpbGRyZW4ucHVzaCh0
aGlzKTsKICAgICB0aGlzLmNhdGVnb3J5ID0gc3R5bGUuY2F0ZWdvcnk7CiAgICAgdGhpcy50aXRs
ZSA9IHN0eWxlLnRpdGxlOwotICAgIHRoaXMuc3RhcnRUaW1lID0gcmVjb3JkLnN0YXJ0VGltZSAv
IDEwMDA7CisgICAgdGhpcy5zdGFydFRpbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5n
ZXRTdGFydFRpbWUocmVjb3JkKTsKICAgICB0aGlzLmRhdGEgPSByZWNvcmQuZGF0YTsKICAgICB0
aGlzLnR5cGUgPSByZWNvcmQudHlwZTsKLSAgICB0aGlzLmVuZFRpbWUgPSAodHlwZW9mIHJlY29y
ZC5lbmRUaW1lICE9PSAidW5kZWZpbmVkIikgPyByZWNvcmQuZW5kVGltZSAvIDEwMDAgOiB0aGlz
LnN0YXJ0VGltZTsKKyAgICB0aGlzLmVuZFRpbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2Rl
bC5nZXRFbmRUaW1lKHJlY29yZCk7CiAgICAgdGhpcy5fc2VsZlRpbWUgPSB0aGlzLmVuZFRpbWUg
LSB0aGlzLnN0YXJ0VGltZTsKICAgICB0aGlzLl9sYXN0Q2hpbGRFbmRUaW1lID0gdGhpcy5lbmRU
aW1lOwogICAgIHRoaXMuX2luaXRpYXRvck9mZnNldCA9IChwYXJlbnRSZWNvcmQgJiYgcGFyZW50
UmVjb3JkICE9PSBwcmVzZW50YXRpb25Nb2RlbC5fcm9vdFJlY29yZCkgPwogICAgICAgICBwYXJl
bnRSZWNvcmQuX2luaXRpYXRvck9mZnNldCArIHRoaXMuc3RhcnRUaW1lIC0gcGFyZW50UmVjb3Jk
LnN0YXJ0VGltZSA6IDA7CisgICAgdGhpcy5fc3RhcnRUaW1lT2Zmc2V0ID0gdGhpcy5zdGFydFRp
bWUgLSBwcmVzZW50YXRpb25Nb2RlbC5fbWluaW11bVJlY29yZFRpbWU7CiAKICAgICBpZiAocmVj
b3JkLnN0YWNrVHJhY2UgJiYgcmVjb3JkLnN0YWNrVHJhY2UubGVuZ3RoKQogICAgICAgICB0aGlz
LnN0YWNrVHJhY2UgPSByZWNvcmQuc3RhY2tUcmFjZTsKQEAgLTQzMiw3ICs0MjAsNyBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kRWxlbWVudFJvdyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkFnZ3JlZ2F0ZWQgVGltZSIpLCB0aGlzLl9nZW5lcmF0ZUFnZ3JlZ2F0ZWRJbmZv
KCkpOwogICAgICAgICB9CiAgICAgICAgIHZhciB0ZXh0ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCIlcyAoYXQgJXMpIiwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9sYXN0Q2hpbGRFbmRU
aW1lIC0gdGhpcy5zdGFydFRpbWUsIHRydWUpLAotICAgICAgICAgICAgTnVtYmVyLnNlY29uZHNU
b1N0cmluZyh0aGlzLnN0YXJ0VGltZSAtIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLm1pbmltdW1S
ZWNvcmRUaW1lKCkpKTsKKyAgICAgICAgICAgIE51bWJlci5zZWNvbmRzVG9TdHJpbmcodGhpcy5f
c3RhcnRUaW1lT2Zmc2V0KSk7CiAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3co
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEdXJhdGlvbiIpLCB0ZXh0KTsKIAogICAgICAgICBjb25z
dCByZWNvcmRUeXBlcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134306</attachid>
            <date>2012-03-28 09:01:59 -0700</date>
            <delta_ts>2012-03-28 09:46:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81909-20120328200157.patch</filename>
            <type>text/plain</type>
            <size>48508</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY3NDQ2MTY4NTBmNGVh
ZTllYWJhMzFiMzE0NDhkMTc3M2E5NWU3My4uMDE4ZTk3ZjJlOTQxMGJkYjI5Y2I4OTc5OGJhOGYy
YjYyYWFhYjQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDczIEBACiAyMDEyLTAzLTI4ICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogb25seSB1cGRhdGUgVGltZWxpbmUgb3ZlcnZpZXcgd2hlbiByZWFsbHkgbmVlZGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTkwOQorCisgICAg
ICAgIFN3aXRjaCB0aW1lbGluZSBvdmVydmlldyB0byB1c2luZyByYXcgcmVjb3JkcywgdGh1cyBy
ZW1vdmluZyBkZXBlbmRlbmN5IG9uIGluc3RhbmNlIG1lbWJlcnMgb2YKKyAgICAgICAgVGltZWxp
bmVQcmVzZW50YXRpb25Nb2RlbC4gVGhpcyByZXF1aXJlcyBtb3ZpbmcgcmVjb3JkIHN0eWxlcy9j
YXRlZ29yaWVzIHRvIHN0YXRpYyBnZXR0ZXJzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVs
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuZ2V0U3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1vZGVsLmdldEVuZFRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTW9kZWwuZ2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TW9kZWwucHJvdG90eXBlLl9hZGRSZWNvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTW9kZWwucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZU1vZGVsLnByb3RvdHlwZS5taW5pbXVtUmVjb3JkVGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVNb2RlbC5wcm90b3R5cGUubWF4aW11bVJlY29yZFRpbWUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwucHJvdG90eXBlLl91cGRhdGVCb3VuZGFyaWVzKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUuX3Nob3dUaW1lbGluZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS5f
c2hvd01lbW9yeUdyYXBoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
UGFuZS5wcm90b3R5cGUuX3NldFZlcnRpY2FsT3ZlcnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS5fb25DYXRlZ29yeVZpc2liaWxpdHlD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90
b3R5cGUuX3VwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1Bh
bmUucHJvdG90eXBlLl91cGRhdGVDYXRlZ29yeVN0cmlwcy5tYXJrUGVyY2VudGFnZXNGb3JSZWNv
cmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlw
ZS5fdXBkYXRlQ2F0ZWdvcnlTdHJpcHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
T3ZlcnZpZXdQYW5lLnByb3RvdHlwZS53aW5kb3dTdGFydFRpbWUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS53aW5kb3dFbmRUaW1lKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUuX29uV2lu
ZG93Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUu
cHJvdG90eXBlLnNldFNob3dTaG9ydEV2ZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBlLl9zY2hlZHVsZVJlZnJlc2gpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdDYWxjdWxhdG9yLnByb3RvdHlwZS5jb21wdXRl
QmFyR3JhcGhQZXJjZW50YWdlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVy
dmlld0NhbGN1bGF0b3IucHJvdG90eXBlLnNldFdpbmRvdyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVPdmVydmlld0NhbGN1bGF0b3IucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwR3JhcGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBHcmFw
aC5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZlcnRp
Y2FsT3ZlcnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVy
dmlldy5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVy
dGljYWxPdmVydmlldy5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
aW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcucHJvdG90eXBlLndhc1Nob3duKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcucHJvdG90eXBlLndpbGxIaWRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcucHJvdG90eXBl
Ll9hZ2dyZWdhdGVGcmFtZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lVmVydGljYWxPdmVydmlldy5wcm90b3R5cGUuX2FnZ3JlZ2F0ZVJlY29yZHMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmlldy5wcm90b3R5cGUuZ2V0V2lu
ZG93VGltZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmll
dy5wcm90b3R5cGUuX29uUmVjb3JkQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdncmVnYXRlZFJlY29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2dy
ZWdhdGVkUmVjb3JkLnByb3RvdHlwZS5fYWdncmVnYXRlU3RhdGlzdGljcyk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
cHJvdG90eXBlLl9jcmVhdGVTdGF0dXNiYXJCdXR0b25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fdG9nZ2xlRmlsdGVyQnV0dG9uQ2xpY2tlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3Jlc2V0UGFuZWwp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9yZWZyZXNo
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUNhbGN1bGF0b3IpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRvci5wcm90b3R5cGUuZm9ybWF0VGltZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuZ2V0Q2F0ZWdvcmll
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5nZXRS
ZWNvcmRTdHlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25N
b2RlbC5jYXRlZ29yeUZvclJlY29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
cmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLmFkZFJlY29yZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkLnByb3RvdHlw
ZS5nZW5lcmF0ZVBvcHVwQ29udGVudCk6CisKKzIwMTItMDMtMjggIEFuZHJleSBLb3N5YWtvdiAg
PGNhc2VxQGNocm9taXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBudWtlIEhlYXBH
cmFwaC5zZXRTaXplKCksIGRvIGl0IGF1dG9tYWdpY2FsbHkgb24gdXBkYXRlCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjQ3MQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lTW9kZWwuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lTW9kZWwuanMKaW5kZXgg
ODE1ZmU3YTgzNTU1ZWU4ZTcyMWFlMDViOTZjZDdlZmJmYTRiZDUwMS4uMmVmODdlZjFlMWEyM2U2
NzY3N2JmODdlYzRjODQxZmM0YmU2ODdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVNb2RlbC5qcwpAQCAtMzUsNiArMzUsOCBAQAogV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5fcmVjb3Jk
cyA9IFtdOworICAgIHRoaXMuX21pbmltdW1SZWNvcmRUaW1lID0gLTE7CisgICAgdGhpcy5fbWF4
aW11bVJlY29yZFRpbWUgPSAtMTsKICAgICB0aGlzLl9jb2xsZWN0aW9uRW5hYmxlZCA9IGZhbHNl
OwogCiAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnRUeXBlcy5UaW1lbGluZUV2ZW50UmVjb3Jk
ZWQsIHRoaXMuX29uUmVjb3JkQWRkZWQsIHRoaXMpOwpAQCAtODMsNiArODUsMjEgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzID0gewogICAgIFJlY29yZHNDbGVhcmVkOiAiUmVj
b3Jkc0NsZWFyZWQiCiB9CiAKK1dlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLnN0YXJ0VGltZSA9
IGZ1bmN0aW9uKHJlY29yZCkKK3sKKyAgICByZXR1cm4gcmVjb3JkLnN0YXJ0VGltZSAvIDEwMDA7
Cit9CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLmVuZFRpbWUgPSBmdW5jdGlvbihyZWNv
cmQpCit7CisgICAgcmV0dXJuICh0eXBlb2YgcmVjb3JkLmVuZFRpbWUgPT09ICJ1bmRlZmluZWQi
ID8gcmVjb3JkLnN0YXJ0VGltZSA6IHJlY29yZC5lbmRUaW1lKSAvIDEwMDA7Cit9CisKK1dlYklu
c3BlY3Rvci5UaW1lbGluZU1vZGVsLmR1cmF0aW9uID0gZnVuY3Rpb24ocmVjb3JkKQoreworICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5lbmRUaW1lKHJlY29yZCkgLSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNb2RlbC5zdGFydFRpbWUocmVjb3JkKTsKK30KKwogV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTW9kZWwucHJvdG90eXBlID0gewogICAgIHN0YXJ0UmVjb3JkOiBmdW5jdGlv
bigpCiAgICAgewpAQCAtMTE1LDYgKzEzMiw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVs
LnByb3RvdHlwZSA9IHsKICAgICBfYWRkUmVjb3JkOiBmdW5jdGlvbihyZWNvcmQpCiAgICAgewog
ICAgICAgICB0aGlzLl9yZWNvcmRzLnB1c2gocmVjb3JkKTsKKyAgICAgICAgdGhpcy5fdXBkYXRl
Qm91bmRhcmllcyhyZWNvcmQpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5FdmVudHMuUmVjb3JkQWRkZWQsIHJlY29yZCk7
CiAgICAgfSwKIApAQCAtMTc0LDcgKzE5MiwzMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX3JlY29yZHMgPSBbXTsKKyAgICAgICAgdGhpcy5fbWluaW11bVJlY29yZFRpbWUgPSAtMTsK
KyAgICAgICAgdGhpcy5fbWF4aW11bVJlY29yZFRpbWUgPSAtMTsKICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzLlJl
Y29yZHNDbGVhcmVkKTsKKyAgICB9LAorCisgICAgbWluaW11bVJlY29yZFRpbWU6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9taW5pbXVtUmVjb3JkVGltZTsKKyAgICB9
LAorCisgICAgbWF4aW11bVJlY29yZFRpbWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9tYXhpbXVtUmVjb3JkVGltZTsKKyAgICB9LAorCisgICAgX3VwZGF0ZUJvdW5k
YXJpZXM6IGZ1bmN0aW9uKHJlY29yZCkKKyAgICB7CisgICAgICAgIHZhciBzdGFydFRpbWUgPSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5zdGFydFRpbWUocmVjb3JkKTsKKyAgICAgICAgdmFy
IGVuZFRpbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5lbmRUaW1lKHJlY29yZCk7CisK
KyAgICAgICAgaWYgKHRoaXMuX21pbmltdW1SZWNvcmRUaW1lID09PSAtMSB8fCBzdGFydFRpbWUg
PCB0aGlzLl9taW5pbXVtUmVjb3JkVGltZSkKKyAgICAgICAgICAgIHRoaXMuX21pbmltdW1SZWNv
cmRUaW1lID0gc3RhcnRUaW1lOworICAgICAgICBpZiAodGhpcy5fbWF4aW11bVJlY29yZFRpbWUg
PT09IC0xIHx8IGVuZFRpbWUgPiB0aGlzLl9tYXhpbXVtUmVjb3JkVGltZSkKKyAgICAgICAgICAg
IHRoaXMuX21heGltdW1SZWNvcmRUaW1lID0gZW5kVGltZTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1Bh
bmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZp
ZXdQYW5lLmpzCmluZGV4IGMyNTQ3N2MzZjcwNmViNTBiYWNmMzdkYTdiZjc3YzBiMzM5MGUzYWYu
LmZiNTU2ZjZlZWE0ZmU5NjBjZWY5MmRjZGFhMjcyMTg4ZDg4NzVkMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3
UGFuZS5qcwpAQCAtMzIsOCArMzIsOSBAQAogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7
V2ViSW5zcGVjdG9yLk9iamVjdH0KICAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuVGltZWxp
bmVQcmVzZW50YXRpb25Nb2RlbC5GaWx0ZXJ9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1l
bGluZU1vZGVsfSBtb2RlbAogICovCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUg
PSBmdW5jdGlvbihwcmVzZW50YXRpb25Nb2RlbCkKK1dlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2
aWV3UGFuZSA9IGZ1bmN0aW9uKG1vZGVsKQogewogICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuZWxlbWVudC5pZCA9ICJ0aW1lbGluZS1v
dmVydmlldy1wYW5lbCI7CkBAIC00MSw3ICs0Miw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92
ZXJ2aWV3UGFuZSA9IGZ1bmN0aW9uKHByZXNlbnRhdGlvbk1vZGVsKQogICAgIHRoaXMuX3dpbmRv
d1N0YXJ0VGltZSA9IDA7CiAgICAgdGhpcy5fd2luZG93RW5kVGltZSA9IEluZmluaXR5OwogCi0g
ICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwgPSBwcmVzZW50YXRpb25Nb2RlbDsKKyAgICB0aGlz
Ll9tb2RlbCA9IG1vZGVsOwogCiAgICAgdGhpcy5fdG9wUGFuZVNpZGViYXJFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fdG9wUGFuZVNpZGViYXJFbGVt
ZW50LmlkID0gInRpbWVsaW5lLW92ZXJ2aWV3LXNpZGViYXIiOwpAQCAtODMsNyArODQsNyBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUgPSBmdW5jdGlvbihwcmVzZW50YXRpb25N
b2RlbCkKIAogICAgIHRoaXMuX292ZXJ2aWV3Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX292
ZXJ2aWV3R3JpZC5lbGVtZW50KTsKIAotICAgIHRoaXMuX2hlYXBHcmFwaCA9IG5ldyBXZWJJbnNw
ZWN0b3IuSGVhcEdyYXBoKCk7CisgICAgdGhpcy5faGVhcEdyYXBoID0gbmV3IFdlYkluc3BlY3Rv
ci5IZWFwR3JhcGgodGhpcy5fbW9kZWwpOwogICAgIHRoaXMuX2hlYXBHcmFwaC5lbGVtZW50Lmlk
ID0gInRpbWVsaW5lLW92ZXJ2aWV3LW1lbW9yeSI7CiAgICAgdGhpcy5fb3ZlcnZpZXdHcmlkLmVs
ZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuX2hlYXBHcmFwaC5lbGVtZW50LCB0aGlzLl9vdmVydmll
d0dyaWQuaXRlbXNHcmFwaHNFbGVtZW50KTsKIApAQCAtOTgsNyArOTksNyBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVPdmVydmlld1BhbmUgPSBmdW5jdGlvbihwcmVzZW50YXRpb25Nb2RlbCkKICAK
ICAgICB0aGlzLl9jYXRlZ29yeUdyYXBocyA9IHt9OwogICAgIHZhciBpID0gMDsKLSAgICB2YXIg
Y2F0ZWdvcmllcyA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3JpZXM7CisgICAgdmFy
IGNhdGVnb3JpZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5jYXRl
Z29yaWVzKCk7CiAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gY2F0ZWdvcmllcykgewogICAgICAg
ICB2YXIgY2F0ZWdvcnlHcmFwaCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeUdy
YXBoKGNhdGVnb3JpZXNbY2F0ZWdvcnldLCBpKysgJSAyKTsKICAgICAgICAgdGhpcy5fY2F0ZWdv
cnlHcmFwaHNbY2F0ZWdvcnldID0gY2F0ZWdvcnlHcmFwaDsKQEAgLTEwOCw2ICsxMDksOSBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUgPSBmdW5jdGlvbihwcmVzZW50YXRpb25N
b2RlbCkKIAogICAgIHRoaXMuX292ZXJ2aWV3R3JpZC5zZXRTY3JvbGxBbmREaXZpZGVyVG9wKDAs
IDApOwogICAgIHRoaXMuX292ZXJ2aWV3Q2FsY3VsYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlld0NhbGN1bGF0b3IoKTsKKworICAgIG1vZGVsLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzLlJlY29yZEFkZGVkLCB0aGlzLl9zY2hl
ZHVsZVJlZnJlc2gsIHRoaXMpOworICAgIG1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzLlJlY29yZHNDbGVhcmVkLCB0aGlzLl91cGRhdGUsIHRo
aXMpOwogfQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUuTWluU2VsZWN0YWJs
ZVNpemUgPSAxMjsKQEAgLTEzOCw3ICsxNDIsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVy
dmlld1BhbmUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9oZWFwR3JhcGguaGlkZSgpOwog
ICAgICAgICB0aGlzLl9zZXRWZXJ0aWNhbE92ZXJ2aWV3KHRoaXMuX2N1cnJlbnRNb2RlID09PSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUuTW9kZS5FdmVudHNWZXJ0aWNhbCk7CiAg
ICAgICAgIHRoaXMuX292ZXJ2aWV3R3JpZC5pdGVtc0dyYXBoc0VsZW1lbnQucmVtb3ZlU3R5bGVD
bGFzcygiaGlkZGVuIik7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUNhdGVnb3J5U3RyaXBzKHRoaXMu
X3ByZXNlbnRhdGlvbk1vZGVsLnJvb3RSZWNvcmQoKS5jaGlsZHJlbik7CisgICAgICAgIHRoaXMu
X3VwZGF0ZUNhdGVnb3J5U3RyaXBzKCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5FdmVudHMuTW9kZUNoYW5n
ZWQsIHRoaXMuX2N1cnJlbnRNb2RlKTsKICAgICB9LAogCkBAIC0xNDgsNyArMTUyLDcgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fc2V0VmVydGljYWxPdmVydmlldyhmYWxzZSk7CiAgICAgICAgIHRoaXMuX21lbW9yeU92ZXJ2
aWV3SXRlbS5yZXZlYWxBbmRTZWxlY3QoZmFsc2UpOwogICAgICAgICB0aGlzLl9oZWFwR3JhcGgu
c2hvdygpOwotICAgICAgICB0aGlzLl9oZWFwR3JhcGgudXBkYXRlKHRoaXMuX3ByZXNlbnRhdGlv
bk1vZGVsLnJvb3RSZWNvcmQoKS5jaGlsZHJlbik7CisgICAgICAgIHRoaXMuX2hlYXBHcmFwaC51
cGRhdGUoKTsKICAgICAgICAgdGhpcy5fb3ZlcnZpZXdHcmlkLml0ZW1zR3JhcGhzRWxlbWVudC5h
ZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLkV2ZW50cy5Nb2RlQ2hhbmdl
ZCwgdGhpcy5fY3VycmVudE1vZGUpOwogICAgIH0sCkBAIC0xNTgsMTMgKzE2MiwxMiBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBlID0gewogICAgICAgICBpZiAo
IWVuYWJsZWQgPT09ICF0aGlzLl92ZXJ0aWNhbE92ZXJ2aWV3KQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBpZiAoZW5hYmxlZCkgewotICAgICAgICAgICAgdGhpcy5fdmVydGljYWxPdmVy
dmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVWZXJ0aWNhbE92ZXJ2aWV3KCk7CisgICAg
ICAgICAgICB0aGlzLl92ZXJ0aWNhbE92ZXJ2aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVZlcnRpY2FsT3ZlcnZpZXcodGhpcy5fbW9kZWwpOwogICAgICAgICAgICAgdGhpcy5fdmVydGlj
YWxPdmVydmlldy5zaG93KHRoaXMuX292ZXJ2aWV3Q29udGFpbmVyKTsKLSAgICAgICAgICAgIHRo
aXMuX3ZlcnRpY2FsT3ZlcnZpZXcudXBkYXRlKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJvb3RS
ZWNvcmQoKS5jaGlsZHJlbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0aGlzLl92
ZXJ0aWNhbE92ZXJ2aWV3LmRldGFjaCgpOwotICAgICAgICAgICAgdGhpcy5fb3ZlcnZpZXdHcmlk
Lml0ZW1zR3JhcGhzRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAg
ICAgIHRoaXMuX3ZlcnRpY2FsT3ZlcnZpZXcgPSBudWxsOworICAgICAgICAgICAgdGhpcy5fb3Zl
cnZpZXdHcmlkLml0ZW1zR3JhcGhzRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsK
ICAgICAgICAgfQogICAgIH0sCiAKQEAgLTE4MCw1NiArMTgzLDUzIEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgY2F0
ZWdvcnkgPSBldmVudC5kYXRhOwogICAgICAgICB0aGlzLl9jYXRlZ29yeUdyYXBoc1tjYXRlZ29y
eS5uYW1lXS5kaW1tZWQgPSBjYXRlZ29yeS5oaWRkZW47CisgICAgICAgIHRoaXMuX3VwZGF0ZSgp
OwogICAgIH0sCiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKHNob3dTaG9ydEV2ZW50cykKKyAgICBf
dXBkYXRlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9zaG93U2hvcnRFdmVudHMg
PSBzaG93U2hvcnRFdmVudHM7Ci0gICAgICAgIHRoaXMuX292ZXJ2aWV3Q2FsY3VsYXRvci5yZXNl
dCgpOwotCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUJvdW5kYXJpZXMocmVjb3JkKQotICAgICAg
ICB7Ci0gICAgICAgICAgICB0aGlzLl9vdmVydmlld0NhbGN1bGF0b3IudXBkYXRlQm91bmRhcmll
cyhyZWNvcmQpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFyIHJlY29yZHMgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5yb290UmVjb3JkKCkuY2hp
bGRyZW47Ci0gICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLmZvckFsbFJlY29yZHMo
cmVjb3JkcywgdXBkYXRlQm91bmRhcmllcy5iaW5kKHRoaXMpKTsKKyAgICAgICAgZGVsZXRlIHRo
aXMuX3JlZnJlc2hUaW1lb3V0OwogCiAgICAgICAgIGlmICh0aGlzLl9oZWFwR3JhcGgudmlzaWJs
ZSkKLSAgICAgICAgICAgIHRoaXMuX2hlYXBHcmFwaC51cGRhdGUocmVjb3Jkcyk7CisgICAgICAg
ICAgICB0aGlzLl9oZWFwR3JhcGgudXBkYXRlKCk7CiAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3Zl
cnRpY2FsT3ZlcnZpZXcpCi0gICAgICAgICAgICB0aGlzLl92ZXJ0aWNhbE92ZXJ2aWV3LnVwZGF0
ZShyZWNvcmRzKTsKKyAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsT3ZlcnZpZXcudXBkYXRlKCk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNhdGVnb3J5U3RyaXBzKHJl
Y29yZHMpOworICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ2F0ZWdvcnlTdHJpcHMoKTsKKworICAg
ICAgICB0aGlzLl9vdmVydmlld0NhbGN1bGF0b3Iuc2V0V2luZG93KHRoaXMuX21vZGVsLm1pbmlt
dW1SZWNvcmRUaW1lKCksIHRoaXMuX21vZGVsLm1heGltdW1SZWNvcmRUaW1lKCkpOwogICAgICAg
ICB0aGlzLl9vdmVydmlld0dyaWQudXBkYXRlRGl2aWRlcnModHJ1ZSwgdGhpcy5fb3ZlcnZpZXdD
YWxjdWxhdG9yKTsKICAgICB9LAogCi0gICAgX3VwZGF0ZUNhdGVnb3J5U3RyaXBzOiBmdW5jdGlv
bihyZWNvcmRzKQorICAgIF91cGRhdGVDYXRlZ29yeVN0cmlwczogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgLy8gQ2xlYXIgc3VtbWFyeSBiYXJzLgogICAgICAgICB2YXIgdGltZWxpbmVzID0g
e307Ci0gICAgICAgIGZvciAodmFyIGNhdGVnb3J5IGluIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVs
LmNhdGVnb3JpZXMpIHsKKyAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5jYXRlZ29yaWVzKCk7CisgICAgICAgIGZvciAodmFyIGNh
dGVnb3J5IGluIGNhdGVnb3JpZXMpIHsKICAgICAgICAgICAgIHRpbWVsaW5lc1tjYXRlZ29yeV0g
PSBbXTsKICAgICAgICAgICAgIHRoaXMuX2NhdGVnb3J5R3JhcGhzW2NhdGVnb3J5XS5jbGVhckNo
dW5rcygpOwogICAgICAgICB9CisgICAgICAgIHRoaXMuX292ZXJ2aWV3Q2FsY3VsYXRvci5zZXRX
aW5kb3codGhpcy5fbW9kZWwubWluaW11bVJlY29yZFRpbWUoKSwgdGhpcy5fbW9kZWwubWF4aW11
bVJlY29yZFRpbWUoKSk7CiAKICAgICAgICAgLy8gQ3JlYXRlIHNwYXJzZSBhcnJheXMgd2l0aCAx
MDEgY2VsbHMgZWFjaCB0byBmaWxsIHdpdGggY2h1bmtzIGZvciBhIGdpdmVuIGNhdGVnb3J5Lgog
ICAgICAgICBmdW5jdGlvbiBtYXJrUGVyY2VudGFnZXNGb3JSZWNvcmQocmVjb3JkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoISh0aGlzLl9zaG93U2hvcnRFdmVudHMgfHwgcmVjb3JkLmlz
TG9uZygpKSkKKyAgICAgICAgICAgIHZhciBpc0xvbmcgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVN
b2RlbC5kdXJhdGlvbihyZWNvcmQpID4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9u
TW9kZWwuc2hvcnRSZWNvcmRUaHJlc2hvbGQ7CisgICAgICAgICAgICBpZiAoISh0aGlzLl9zaG93
U2hvcnRFdmVudHMgfHwgaXNMb25nKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB2YXIgcGVyY2VudGFnZXMgPSB0aGlzLl9vdmVydmlld0NhbGN1bGF0b3IuY29tcHV0ZUJh
ckdyYXBoUGVyY2VudGFnZXMocmVjb3JkKTsKIAogICAgICAgICAgICAgdmFyIGVuZCA9IE1hdGgu
cm91bmQocGVyY2VudGFnZXMuZW5kKTsKLSAgICAgICAgICAgIHZhciBjYXRlZ29yeU5hbWUgPSBy
ZWNvcmQuY2F0ZWdvcnkubmFtZTsKKyAgICAgICAgICAgIHZhciBjYXRlZ29yeU5hbWUgPSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5jYXRlZ29yeUZvclJlY29yZChyZWNv
cmQpLm5hbWU7CiAgICAgICAgICAgICBmb3IgKHZhciBqID0gTWF0aC5yb3VuZChwZXJjZW50YWdl
cy5zdGFydCk7IGogPD0gZW5kOyArK2opCiAgICAgICAgICAgICAgICAgdGltZWxpbmVzW2NhdGVn
b3J5TmFtZV1bal0gPSB0cnVlOwogICAgICAgICB9CisgICAgICAgIHZhciByZWNvcmRzID0gdGhp
cy5fbW9kZWwucmVjb3JkczsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuZm9y
QWxsUmVjb3JkcyhyZWNvcmRzLCBtYXJrUGVyY2VudGFnZXNGb3JSZWNvcmQuYmluZCh0aGlzKSk7
CiAKICAgICAgICAgLy8gQ29udmVydCBzcGFyc2UgYXJyYXlzIHRvIGNvbnRpbnVvdXMgc2VnbWVu
dHMsIHJlbmRlciBncmFwaHMgZm9yIGVhY2guCi0gICAgICAgIGZvciAodmFyIGNhdGVnb3J5IGlu
IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3JpZXMpIHsKKyAgICAgICAgZm9yICh2YXIg
Y2F0ZWdvcnkgaW4gY2F0ZWdvcmllcykgewogICAgICAgICAgICAgdmFyIHRpbWVsaW5lID0gdGlt
ZWxpbmVzW2NhdGVnb3J5XTsKICAgICAgICAgICAgIHdpbmRvdy50aW1lbGluZVNhdmVkID0gdGlt
ZWxpbmU7CiAgICAgICAgICAgICB2YXIgY2h1bmtTdGFydCA9IC0xOwpAQCAtMzAzLDEyICszMDMs
MTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZSA9IHsKIAog
ICAgIHdpbmRvd1N0YXJ0VGltZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX3dpbmRvd1N0YXJ0VGltZSB8fCB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5taW5pbXVtUmVj
b3JkVGltZSgpOworICAgICAgICByZXR1cm4gdGhpcy5fd2luZG93U3RhcnRUaW1lIHx8IHRoaXMu
X21vZGVsLm1pbmltdW1SZWNvcmRUaW1lKCk7CiAgICAgfSwKIAogICAgIHdpbmRvd0VuZFRpbWU6
IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl93aW5kb3dFbmRUaW1lIDwg
SW5maW5pdHkgPyB0aGlzLl93aW5kb3dFbmRUaW1lIDogdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwu
bWF4aW11bVJlY29yZFRpbWUoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dpbmRvd0VuZFRpbWUg
PCBJbmZpbml0eSA/IHRoaXMuX3dpbmRvd0VuZFRpbWUgOiB0aGlzLl9tb2RlbC5tYXhpbXVtUmVj
b3JkVGltZSgpOwogICAgIH0sCiAKICAgICB3aW5kb3dMZWZ0OiBmdW5jdGlvbigpCkBAIC0zMjgs
MTIgKzMyOCwyNSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fd2luZG93U3RhcnRUaW1lID0gdGltZXMuc3RhcnRUaW1l
OwogICAgICAgICAgICAgdGhpcy5fd2luZG93RW5kVGltZSA9IHRpbWVzLmVuZFRpbWU7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2YXIgYWJzb2x1dGVNaW4gPSB0aGlzLl9wcmVzZW50
YXRpb25Nb2RlbC5taW5pbXVtUmVjb3JkVGltZSgpOwotICAgICAgICAgICAgdmFyIGFic29sdXRl
TWF4ID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwubWF4aW11bVJlY29yZFRpbWUoKTsKKyAgICAg
ICAgICAgIHZhciBhYnNvbHV0ZU1pbiA9IHRoaXMuX21vZGVsLm1pbmltdW1SZWNvcmRUaW1lKCk7
CisgICAgICAgICAgICB2YXIgYWJzb2x1dGVNYXggPSB0aGlzLl9tb2RlbC5tYXhpbXVtUmVjb3Jk
VGltZSgpOwogICAgICAgICAgICAgdGhpcy5fd2luZG93U3RhcnRUaW1lID0gYWJzb2x1dGVNaW4g
KyAoYWJzb2x1dGVNYXggLSBhYnNvbHV0ZU1pbikgKiB0aGlzLndpbmRvd0xlZnQoKTsKICAgICAg
ICAgICAgIHRoaXMuX3dpbmRvd0VuZFRpbWUgPSBhYnNvbHV0ZU1pbiArIChhYnNvbHV0ZU1heCAt
IGFic29sdXRlTWluKSAqIHRoaXMud2luZG93UmlnaHQoKTsKICAgICAgICAgfQogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmll
d1BhbmUuRXZlbnRzLldpbmRvd0NoYW5nZWQpOworICAgIH0sCisKKyAgICBzZXRTaG93U2hvcnRF
dmVudHM6IGZ1bmN0aW9uKHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2hvd1Nob3J0RXZl
bnRzID0gdmFsdWU7CisgICAgICAgIHRoaXMuX3VwZGF0ZSgpOworICAgIH0sCisKKyAgICBfc2No
ZWR1bGVSZWZyZXNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcmVmcmVz
aFRpbWVvdXQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3JlZnJlc2hUaW1l
b3V0ID0gc2V0VGltZW91dCh0aGlzLl91cGRhdGUuYmluZCh0aGlzKSwgMTAwKTsKICAgICB9CiB9
CiAKQEAgLTU0NCwzNCArNTU3LDI1IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3Q2Fs
Y3VsYXRvciA9IGZ1bmN0aW9uKCkKIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3Q2FsY3Vs
YXRvci5wcm90b3R5cGUgPSB7CiAgICAgY29tcHV0ZUJhckdyYXBoUGVyY2VudGFnZXM6IGZ1bmN0
aW9uKHJlY29yZCkKICAgICB7Ci0gICAgICAgIHZhciBzdGFydCA9IChyZWNvcmQuc3RhcnRUaW1l
IC0gdGhpcy5taW5pbXVtQm91bmRhcnkpIC8gdGhpcy5ib3VuZGFyeVNwYW4gKiAxMDA7Ci0gICAg
ICAgIHZhciBlbmQgPSAocmVjb3JkLmVuZFRpbWUgLSB0aGlzLm1pbmltdW1Cb3VuZGFyeSkgLyB0
aGlzLmJvdW5kYXJ5U3BhbiAqIDEwMDsKKyAgICAgICAgdmFyIHN0YXJ0ID0gKFdlYkluc3BlY3Rv
ci5UaW1lbGluZU1vZGVsLnN0YXJ0VGltZShyZWNvcmQpIC0gdGhpcy5taW5pbXVtQm91bmRhcnkp
IC8gdGhpcy5ib3VuZGFyeVNwYW4gKiAxMDA7CisgICAgICAgIHZhciBlbmQgPSAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTW9kZWwuZW5kVGltZShyZWNvcmQpIC0gdGhpcy5taW5pbXVtQm91bmRhcnkp
IC8gdGhpcy5ib3VuZGFyeVNwYW4gKiAxMDA7CiAgICAgICAgIHJldHVybiB7c3RhcnQ6IHN0YXJ0
LCBlbmQ6IGVuZH07CiAgICAgfSwKIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICBkZWxldGUgdGhpcy5taW5pbXVtQm91bmRhcnk7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLm1h
eGltdW1Cb3VuZGFyeTsKLSAgICB9LAotCi0gICAgdXBkYXRlQm91bmRhcmllczogZnVuY3Rpb24o
cmVjb3JkKQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbWluaW11bQorICAgICAq
IEBwYXJhbSB7bnVtYmVyPX0gbWF4aW11bQorICAgICAqLworICAgIHNldFdpbmRvdzogZnVuY3Rp
b24obWluaW11bSwgbWF4aW11bSkKICAgICB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBmYWxzZTsK
LSAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1pbmltdW1Cb3VuZGFyeSA9PT0gInVuZGVmaW5lZCIg
fHwgcmVjb3JkLnN0YXJ0VGltZSA8IHRoaXMubWluaW11bUJvdW5kYXJ5KSB7Ci0gICAgICAgICAg
ICB0aGlzLm1pbmltdW1Cb3VuZGFyeSA9IHJlY29yZC5zdGFydFRpbWU7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tYXhpbXVt
Qm91bmRhcnkgPT09ICJ1bmRlZmluZWQiIHx8IHJlY29yZC5lbmRUaW1lID4gdGhpcy5tYXhpbXVt
Qm91bmRhcnkpIHsKLSAgICAgICAgICAgIHRoaXMubWF4aW11bUJvdW5kYXJ5ID0gcmVjb3JkLmVu
ZFRpbWU7Ci0gICAgICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIHRoaXMubWluaW11bUJvdW5kYXJ5ID0gbWluaW11bSA+PSAw
ID8gbWluaW11bSA6IHVuZGVmaW5lZDsKKyAgICAgICAgdGhpcy5tYXhpbXVtQm91bmRhcnkgPSBt
YXhpbXVtID49IDAgPyBtYXhpbXVtIDogdW5kZWZpbmVkOworICAgICAgICB0aGlzLmJvdW5kYXJ5
U3BhbiA9IHRoaXMubWF4aW11bUJvdW5kYXJ5IC0gdGhpcy5taW5pbXVtQm91bmRhcnk7CiAgICAg
fSwKIAotICAgIGdldCBib3VuZGFyeVNwYW4oKQorICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5tYXhpbXVtQm91bmRhcnkgLSB0aGlzLm1pbmltdW1Cb3Vu
ZGFyeTsKKyAgICAgICAgdGhpcy5zZXRXaW5kb3coKTsKICAgICB9LAogCiAgICAgZm9ybWF0VGlt
ZTogZnVuY3Rpb24odmFsdWUpCkBAIC02NzMsOSArNjc3LDExIEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZU92ZXJ2aWV3UGFuZS5XaW5kb3dTZWxlY3Rvci5wcm90b3R5cGUgPSB7CiAKIC8qKgogICog
QGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsfSBtb2Rl
bAogICovCi1XZWJJbnNwZWN0b3IuSGVhcEdyYXBoID0gZnVuY3Rpb24oKSB7CitXZWJJbnNwZWN0
b3IuSGVhcEdyYXBoID0gZnVuY3Rpb24obW9kZWwpIHsKICAgICB0aGlzLl9jYW52YXMgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOwog
CiAgICAgdGhpcy5fbWF4SGVhcFNpemVMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwogICAgIHRoaXMuX21heEhlYXBTaXplTGFiZWwuYWRkU3R5bGVDbGFzcygibWF4Iik7CkBA
IC02OTMsNyArNjk5LDYgQEAgV2ViSW5zcGVjdG9yLkhlYXBHcmFwaCA9IGZ1bmN0aW9uKCkgewog
CiBXZWJJbnNwZWN0b3IuSGVhcEdyYXBoLnByb3RvdHlwZSA9IHsKICAgICBnZXQgZWxlbWVudCgp
IHsKLSAgICAvLyAgICByZXR1cm4gdGhpcy5fY2FudmFzOwogICAgICAgICByZXR1cm4gdGhpcy5f
ZWxlbWVudDsKICAgICB9LAogCkBAIC03MDksOCArNzE0LDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBH
cmFwaC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJo
aWRkZW4iKTsKICAgICB9LAogCi0gICAgdXBkYXRlOiBmdW5jdGlvbihyZWNvcmRzKQorICAgIHVw
ZGF0ZTogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAgdmFyIHJlY29yZHMgPSB0aGlzLl9tb2Rl
bC5yZWNvcmRzOwogICAgICAgICBpZiAoIXJlY29yZHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC03MjEsMTYgKzcyNywxMSBAQCBXZWJJbnNwZWN0b3IuSGVhcEdyYXBoLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgY29uc3QgbG93ZXJPZmZzZXQgPSAzOwogICAgICAgICB2YXIgbWF4
VXNlZEhlYXBTaXplID0gMDsKICAgICAgICAgdmFyIG1pblVzZWRIZWFwU2l6ZSA9IDEwMDAwMDAw
MDAwMDsKLSAgICAgICAgdmFyIG1pblRpbWU7Ci0gICAgICAgIHZhciBtYXhUaW1lOworICAgICAg
ICB2YXIgbWluVGltZSA9IHRoaXMuX21vZGVsLm1pbmltdW1SZWNvcmRUaW1lKCk7CisgICAgICAg
IHZhciBtYXhUaW1lID0gdGhpcy5fbW9kZWwubWF4aW11bVJlY29yZFRpbWUoKTs7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLmZvckFsbFJlY29yZHMocmVjb3JkcywgZnVuY3Rp
b24ocikgewogICAgICAgICAgICAgbWF4VXNlZEhlYXBTaXplID0gTWF0aC5tYXgobWF4VXNlZEhl
YXBTaXplLCByLnVzZWRIZWFwU2l6ZSB8fCBtYXhVc2VkSGVhcFNpemUpOwogICAgICAgICAgICAg
bWluVXNlZEhlYXBTaXplID0gTWF0aC5taW4obWluVXNlZEhlYXBTaXplLCByLnVzZWRIZWFwU2l6
ZSB8fCBtaW5Vc2VkSGVhcFNpemUpOwotCi0gICAgICAgICAgICBpZiAodHlwZW9mIG1pblRpbWUg
PT09ICJ1bmRlZmluZWQiIHx8IHIuc3RhcnRUaW1lIDwgbWluVGltZSkKLSAgICAgICAgICAgICAg
ICBtaW5UaW1lID0gci5zdGFydFRpbWU7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIG1heFRpbWUg
PT09ICJ1bmRlZmluZWQiIHx8IHIuZW5kVGltZSA+IG1heFRpbWUpCi0gICAgICAgICAgICAgICAg
bWF4VGltZSA9IHIuZW5kVGltZTsKICAgICAgICAgfSk7CiAgICAgICAgIG1pblVzZWRIZWFwU2l6
ZSA9IE1hdGgubWluKG1pblVzZWRIZWFwU2l6ZSwgbWF4VXNlZEhlYXBTaXplKTsKIApAQCAtNzQz
LDkgKzc0NCw5IEBAIFdlYkluc3BlY3Rvci5IZWFwR3JhcGgucHJvdG90eXBlID0gewogICAgICAg
ICBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5mb3JBbGxSZWNvcmRzKHJlY29yZHMsIGZ1bmN0
aW9uKHIpIHsKICAgICAgICAgICAgIGlmICghci51c2VkSGVhcFNpemUpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgIHZhciB4ID0gTWF0aC5yb3VuZCgoci5lbmRUaW1lIC0g
bWluVGltZSkgKiB4RmFjdG9yKTsKLSAgICAgICAgICAgICB2YXIgeSA9IE1hdGgucm91bmQoKHIu
dXNlZEhlYXBTaXplIC0gbWluVXNlZEhlYXBTaXplKSAqIHlGYWN0b3IpOwotICAgICAgICAgICAg
IGhpc3RvZ3JhbVt4XSA9IE1hdGgubWF4KGhpc3RvZ3JhbVt4XSB8fCAwLCB5KTsKKyAgICAgICAg
ICAgIHZhciB4ID0gTWF0aC5yb3VuZCgoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuZW5kVGlt
ZShyKSAtIG1pblRpbWUpICogeEZhY3Rvcik7CisgICAgICAgICAgICB2YXIgeSA9IE1hdGgucm91
bmQoKHIudXNlZEhlYXBTaXplIC0gbWluVXNlZEhlYXBTaXplKSAqIHlGYWN0b3IpOworICAgICAg
ICAgICAgaGlzdG9ncmFtW3hdID0gTWF0aC5tYXgoaGlzdG9ncmFtW3hdIHx8IDAsIHkpOwogICAg
ICAgICB9KTsKIAogICAgICAgICB2YXIgY3R4ID0gdGhpcy5fY2FudmFzLmdldENvbnRleHQoIjJk
Iik7CkBAIC03OTQsMTIgKzc5NSwxNCBAQCBXZWJJbnNwZWN0b3IuSGVhcEdyYXBoLnByb3RvdHlw
ZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZp
ZXd9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsfSBtb2RlbAogICovCi1X
ZWJJbnNwZWN0b3IuVGltZWxpbmVWZXJ0aWNhbE92ZXJ2aWV3ID0gZnVuY3Rpb24oKSB7CitXZWJJ
bnNwZWN0b3IuVGltZWxpbmVWZXJ0aWNhbE92ZXJ2aWV3ID0gZnVuY3Rpb24obW9kZWwpIHsKICAg
ICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwogICAgIHRoaXMuZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAi
dGltZWxpbmUtdmVydGljYWwtb3ZlcnZpZXctYmFycyBmaWxsIjsKICAgICB0aGlzLnJlc2V0KCk7
CisgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDsKIH0KIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVy
dGljYWxPdmVydmlldy5wcm90b3R5cGUgPSB7CkBAIC04MDksMTQgKzgxMiwxNSBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVWZXJ0aWNhbE92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fZnJhbWVNb2RlID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX2JhclRpbWVzID0gW107CiAgICAg
ICAgIHRoaXMuX2xvbmdlc3RCYXJUaW1lID0gMDsKKyAgICAgICAgdGhpcy5fYWdncmVnYXRlZFJl
Y29yZHMgPSBbXTsKICAgICB9LAogCi0gICAgdXBkYXRlOiBmdW5jdGlvbihhbGxSZWNvcmRzKQor
ICAgIHVwZGF0ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHJlY29yZHMgPSBbXTsK
ICAgICAgICAgdmFyIGZyYW1lQ291bnQgPSAwOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGFsbFJlY29yZHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciByZWNvcmQgPSBhbGxS
ZWNvcmRzW2ldOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2FnZ3JlZ2F0ZWRS
ZWNvcmRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcmVjb3JkID0gdGhpcy5fYWdn
cmVnYXRlZFJlY29yZHNbaV07CiAgICAgICAgICAgICBpZiAocmVjb3JkLmNhdGVnb3J5LmhpZGRl
bikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChyZWNvcmQudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5CZWdpbkZyYW1lIHx8
IChmcmFtZUNvdW50ICYmIChpICsgMSA9PT0gcmVjb3Jkcy5sZW5ndGgpKSkKQEAgLTg0Myw2ICs4
NDcsMjggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuX2J1aWxkQmFy
KHN0YXRpc3RpY3NbaV0sIHNjYWxlKSwgcGFkZGluZyk7CiAgICAgfSwKIAorICAgIHdhc1Nob3du
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9hZ2dyZWdhdGVkUmVjb3JkcyA9IFtd
OworICAgICAgICB2YXIgcmVjb3JkcyA9IHRoaXMuX21vZGVsLnJlY29yZHM7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgcmVjb3Jkcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMu
X2FnZ3JlZ2F0ZWRSZWNvcmRzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZ3JlZ2F0
ZWRSZWNvcmQocmVjb3Jkc1tpXSkpOworCisgICAgICAgIHRoaXMudXBkYXRlKCk7CisgICAgICAg
IHRoaXMuX21vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwu
RXZlbnRzLlJlY29yZEFkZGVkLCB0aGlzLl9vblJlY29yZEFkZGVkLCB0aGlzKTsKKyAgICAgICAg
dGhpcy5fbW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5F
dmVudHMuUmVjb3Jkc0NsZWFyZWQsIHRoaXMucmVzZXQsIHRoaXMpOworICAgIH0sCisKKyAgICB3
aWxsSGlkZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fbW9kZWwucmVtb3ZlRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5FdmVudHMuUmVjb3JkQWRkZWQs
IHRoaXMuX29uUmVjb3JkQWRkZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9tb2RlbC5yZW1vdmVF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLkV2ZW50cy5SZWNvcmRzQ2xl
YXJlZCwgdGhpcy5yZXNldCwgdGhpcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7QXJyYXkuPFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZ3JlZ2F0ZWRSZWNvcmQ+fSByZWNvcmRz
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mQmFycworICAgICAqLwogICAgIF9hZ2dy
ZWdhdGVGcmFtZXM6IGZ1bmN0aW9uKHJlY29yZHMsIG51bWJlck9mQmFycykKICAgICB7CiAgICAg
ICAgIHZhciBzdGF0aXN0aWNzID0gW107CkBAIC04NzQsNiArOTAwLDExIEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
c3RhdGlzdGljczsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48V2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQWdncmVnYXRlZFJlY29yZD59IHJlY29yZHMKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gc3RhcnRJbmRleAorICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGF0aXN0aWNz
CisgICAgICovCiAgICAgX2FnZ3JlZ2F0ZUZyYW1lU3RhdGlzdGljczogZnVuY3Rpb24ocmVjb3Jk
cywgc3RhcnRJbmRleCwgc3RhdGlzdGljcykKICAgICB7CiAgICAgICAgIHZhciB0b3RhbFRpbWUg
PSAwOwpAQCAtODgxLDEyICs5MTIsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxP
dmVydmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcmVjb3JkID0gcmVjb3Jkc1tp
bmRleF07CiAgICAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1l
bGluZU1vZGVsLlJlY29yZFR5cGUuQmVnaW5GcmFtZSkKICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIHZhciBjYXRlZ29yaWVzID0gT2JqZWN0LmtleXMocmVjb3JkLmFnZ3JlZ2F0
ZWRTdGF0cyk7CisgICAgICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IE9iamVjdC5rZXlzKHJlY29y
ZC50aW1lQnlDYXRlZ29yeSk7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGVn
b3JpZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICB2YXIgY2F0ZWdvcnkgPSBjYXRl
Z29yaWVzW2ldOwogICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0YXRpc3RpY3NbY2F0ZWdv
cnldIHx8IDA7Ci0gICAgICAgICAgICAgICAgdmFsdWUgKz0gcmVjb3JkLmFnZ3JlZ2F0ZWRTdGF0
c1tjYXRlZ29yeV07Ci0gICAgICAgICAgICAgICAgdG90YWxUaW1lICs9IHJlY29yZC5hZ2dyZWdh
dGVkU3RhdHNbY2F0ZWdvcnldOworICAgICAgICAgICAgICAgIHZhbHVlICs9IHJlY29yZC50aW1l
QnlDYXRlZ29yeVtjYXRlZ29yeV07CisgICAgICAgICAgICAgICAgdG90YWxUaW1lICs9IHJlY29y
ZC50aW1lQnlDYXRlZ29yeVtjYXRlZ29yeV07CiAgICAgICAgICAgICAgICAgc3RhdGlzdGljc1tj
YXRlZ29yeV0gPSB2YWx1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtODk2LDYgKzky
NywxMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVWZXJ0aWNhbE92ZXJ2aWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxX
ZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2dyZWdhdGVkUmVjb3JkPn0gcmVjb3JkcworICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBudW1iZXJPZkJhcnMKKyAgICAgKi8KICAgICBfYWdncmVnYXRlUmVjb3Jk
czogZnVuY3Rpb24ocmVjb3JkcywgbnVtYmVyT2ZCYXJzKQogICAgIHsKICAgICAgICAgdmFyIHN0
YXRpc3RpY3MgPSBbXTsKQEAgLTkwNSwxMiArOTQwLDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVZlcnRpY2FsT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIGxhc3RJbmRl
eCA9IE1hdGgubWluKE1hdGguZmxvb3IoKGJhck51bWJlciArIDEpICogdGhpcy5fcmVjb3Jkc1Bl
ckJhciksIHJlY29yZHMubGVuZ3RoKTsKICAgICAgICAgICAgIGZvciAoKytjdXJyZW50UmVjb3Jk
OyBjdXJyZW50UmVjb3JkIDwgbGFzdEluZGV4OyArK2N1cnJlbnRSZWNvcmQpIHsKICAgICAgICAg
ICAgICAgICB2YXIgcmVjb3JkID0gcmVjb3Jkc1tjdXJyZW50UmVjb3JkXTsKLSAgICAgICAgICAg
ICAgICBpZiAobG9uZ2VzdFJlY29yZC5lbmRUaW1lIC0gbG9uZ2VzdFJlY29yZC5zdGFydFRpbWUg
PCByZWNvcmQuZW5kVGltZSAtIHJlY29yZC5zdGFydFRpbWUpCisgICAgICAgICAgICAgICAgaWYg
KGxvbmdlc3RSZWNvcmQuZHVyYXRpb24gPCByZWNvcmQuZHVyYXRpb24pCiAgICAgICAgICAgICAg
ICAgICAgIGxvbmdlc3RSZWNvcmQgPSByZWNvcmQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB2YXIgYmFyRW5kVGltZSA9IHJlY29yZHNbY3VycmVudFJlY29yZCAtIDFdLmVuZFRpbWU7Ci0g
ICAgICAgICAgICBzdGF0aXN0aWNzLnB1c2gobG9uZ2VzdFJlY29yZC5hZ2dyZWdhdGVkU3RhdHMp
OwotICAgICAgICAgICAgdGhpcy5fbG9uZ2VzdEJhclRpbWUgPSBNYXRoLm1heCh0aGlzLl9sb25n
ZXN0QmFyVGltZSwgbG9uZ2VzdFJlY29yZC5lbmRUaW1lIC0gbG9uZ2VzdFJlY29yZC5zdGFydFRp
bWUpOworICAgICAgICAgICAgc3RhdGlzdGljcy5wdXNoKGxvbmdlc3RSZWNvcmQudGltZUJ5Q2F0
ZWdvcnkpOworICAgICAgICAgICAgdGhpcy5fbG9uZ2VzdEJhclRpbWUgPSBNYXRoLm1heCh0aGlz
Ll9sb25nZXN0QmFyVGltZSwgbG9uZ2VzdFJlY29yZC5kdXJhdGlvbik7CiAgICAgICAgICAgICB0
aGlzLl9iYXJUaW1lcy5wdXNoKHsgc3RhcnRUaW1lOiBiYXJTdGFydFRpbWUsIGVuZFRpbWU6IGJh
ckVuZFRpbWUgfSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHN0YXRpc3RpY3M7CkBAIC05
NTEsNiArOTg2LDExIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcucHJv
dG90eXBlID0gewogICAgICAgICAgICAgc3RhcnRUaW1lOiBmaXJzdEJhciA+PSB0aGlzLl9iYXJU
aW1lcy5sZW5ndGggPyBJbmZpbml0eSA6IHRoaXMuX2JhclRpbWVzW2ZpcnN0QmFyXS5zdGFydFRp
bWUsCiAgICAgICAgICAgICBlbmRUaW1lOiByaWdodE9mZnNldCArIHNuYXBUb1JpZ2h0VG9sZXJh
bmNlUGl4ZWxzID4gd2luZG93U3BhbiA/IEluZmluaXR5IDogdGhpcy5fYmFyVGltZXNbbGFzdEJh
cl0uZW5kVGltZQogICAgICAgICB9CisgICAgfSwKKworICAgIF9vblJlY29yZEFkZGVkOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZWRSZWNvcmRzLnB1c2go
bmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZ3JlZ2F0ZWRSZWNvcmQoZXZlbnQuZGF0YSkpOwog
ICAgIH0KIH0KIApAQCAtOTU4LDYgKzk5OCwzOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVWZXJ0
aWNhbE92ZXJ2aWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcgog
CiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtPYmplY3R9IHJhd1JlY29yZAorICov
CitXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2dyZWdhdGVkUmVjb3JkID0gZnVuY3Rpb24ocmF3UmVj
b3JkKQoreworICAgIHRoaXMudGltZUJ5Q2F0ZWdvcnkgPSB7fTsKKyAgICB0aGlzLmNhdGVnb3J5
ID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuY2F0ZWdvcnlGb3JSZWNv
cmQocmF3UmVjb3JkKTsKKyAgICB0aGlzLnR5cGUgPSByYXdSZWNvcmQudHlwZTsKKyAgICB0aGlz
Ll9hZ2dyZWdhdGVTdGF0aXN0aWNzKHJhd1JlY29yZCk7CisgICAgdGhpcy5zdGFydFRpbWUgPSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5zdGFydFRpbWUocmF3UmVjb3JkKTsKKyAgICB0aGlz
LmVuZFRpbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5lbmRUaW1lKHJhd1JlY29yZCk7
CisgICAgdGhpcy5kdXJhdGlvbiA9IHRoaXMuZW5kVGltZSAtIHRoaXMuc3RhcnRUaW1lOworfQor
CitXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2dyZWdhdGVkUmVjb3JkLnByb3RvdHlwZSA9IHsKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge09iamVjdH0gcmF3UmVjb3JkCisgICAgICovCisgICAgX2Fn
Z3JlZ2F0ZVN0YXRpc3RpY3M6IGZ1bmN0aW9uKHJhd1JlY29yZCkKKyAgICB7CisgICAgICAgIHZh
ciBjaGlsZHJlblRpbWUgPSAwOworICAgICAgICB2YXIgY2hpbGRyZW4gPSByYXdSZWNvcmQuY2hp
bGRyZW4gfHwgW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3Ro
OyArK2kpICB7CisgICAgICAgICAgICB0aGlzLl9hZ2dyZWdhdGVTdGF0aXN0aWNzKGNoaWxkcmVu
W2ldKTsKKyAgICAgICAgICAgIGNoaWxkcmVuVGltZSArPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVN
b2RlbC5kdXJhdGlvbihjaGlsZHJlbltpXSk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIGNhdGVn
b3J5TmFtZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnJlY29yZFN0
eWxlKHJhd1JlY29yZCkuY2F0ZWdvcnkubmFtZTsKKyAgICAgICAgdmFyIG93blRpbWUgPSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNb2RlbC5kdXJhdGlvbihyYXdSZWNvcmQpIC0gY2hpbGRyZW5UaW1l
OworICAgICAgICB0aGlzLnRpbWVCeUNhdGVnb3J5W2NhdGVnb3J5TmFtZV0gPSAodGhpcy50aW1l
QnlDYXRlZ29yeVtjYXRlZ29yeU5hbWVdIHx8IDApICsgb3duVGltZTsKKyAgICB9Cit9CisKKy8q
KgorICogQGNvbnN0cnVjdG9yCiAgKi8KIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3TW9k
ZVNlbGVjdG9yID0gZnVuY3Rpb24oc2VsZWN0Q2FsbGJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggNzFjMjJl
NGEzMDA4YWY1YjFhODQyMjE4MTllMGVhNDI5NmY0NTNlNi4uMWU5ZDg2MDM1NDg1MTZiOGQwNmUy
NDI3OGI1YWU4NWVlYjc5YTdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMzcsMTAgKzM3LDEyIEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogICAgIFdlYkluc3BlY3Rvci5QYW5lbC5j
YWxsKHRoaXMsICJ0aW1lbGluZSIpOwogICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENTUygidGlt
ZWxpbmVQYW5lbC5jc3MiKTsKIAorICAgIHRoaXMuX21vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5U
aW1lbGluZU1vZGVsKCk7CiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwgPSBuZXcgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwoKTsKIAotICAgIHRoaXMuX292ZXJ2aWV3
UGFuZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUodGhpcy5fcHJlc2Vu
dGF0aW9uTW9kZWwpOworICAgIHRoaXMuX292ZXJ2aWV3UGFuZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVPdmVydmlld1BhbmUodGhpcy5fbW9kZWwpOwogICAgIHRoaXMuX292ZXJ2aWV3UGFu
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5FdmVu
dHMuV2luZG93Q2hhbmdlZCwgdGhpcy5fc2NoZWR1bGVSZWZyZXNoLmJpbmQodGhpcywgZmFsc2Up
KTsKKyAgICB0aGlzLl9vdmVydmlld1BhbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
VGltZWxpbmVPdmVydmlld1BhbmUuRXZlbnRzLk1vZGVDaGFuZ2VkLCB0aGlzLl90aW1lbGluZXNP
dmVydmlld01vZGVDaGFuZ2VkLCB0aGlzKTsKIAogICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9vdmVydmlld1BhbmUuZWxlbWVudCk7CiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5fY29udGV4dE1lbnUuYmluZCh0aGlzKSwgdHJ1
ZSk7CkBAIC02MCw3ICs2Miw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rp
b24oKQogICAgIHRoaXMuX3RpbWVsaW5lTWVtb3J5U3BsaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2Vkb3duIiwgdGhpcy5fc3RhcnRTcGxpdHRlckRyYWdnaW5nLmJpbmQodGhpcyksIGZhbHNl
KTsKICAgICB0aGlzLl90aW1lbGluZU1lbW9yeVNwbGl0dGVyLmFkZFN0eWxlQ2xhc3MoImhpZGRl
biIpOwogICAgIHRoaXMuX21lbW9yeVN0YXRpc3RpY3MgPSBuZXcgV2ViSW5zcGVjdG9yLk1lbW9y
eVN0YXRpc3RpY3ModGhpcywgdGhpcy5zcGxpdFZpZXcucHJlZmVycmVkU2lkZWJhcldpZHRoKCkp
OwotICAgIHRoaXMuX292ZXJ2aWV3UGFuZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5U
aW1lbGluZU92ZXJ2aWV3UGFuZS5FdmVudHMuTW9kZUNoYW5nZWQsIHRoaXMuX3RpbWVsaW5lc092
ZXJ2aWV3TW9kZUNoYW5nZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5tZW1v
cnlDb3VudGVyR3JhcGhzSGVpZ2h0ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRp
bmcoIm1lbW9yeUNvdW50ZXJHcmFwaHNIZWlnaHQiLCAxNTApOwogCiAgICAgdmFyIGl0ZW1zVHJl
ZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlNpZGViYXJTZWN0aW9uVHJlZUVsZW1lbnQoV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSRUNPUkRTIiksIHt9LCB0cnVlKTsKQEAgLTk0LDcgKzk1LDcg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fZXhw
YW5kRWxlbWVudHMuaWQgPSAib3JwaGFuLWV4cGFuZC1lbGVtZW50cyI7CiAgICAgdGhpcy5faXRl
bXNHcmFwaHNFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2V4cGFuZEVsZW1lbnRzKTsKIAotICAg
IHRoaXMuX2NhbGN1bGF0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRvcih0
aGlzLl9wcmVzZW50YXRpb25Nb2RlbCk7CisgICAgdGhpcy5fY2FsY3VsYXRvciA9IG5ldyBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yKHRoaXMuX21vZGVsKTsKICAgICB2YXIgc2hvcnRS
ZWNvcmRUaHJlc2hvbGRUaXRsZSA9IE51bWJlci5zZWNvbmRzVG9TdHJpbmcoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuc2hvcnRSZWNvcmRUaHJlc2hvbGQpOwogICAgIHRo
aXMuX3Nob3dTaG9ydFJlY29yZHNUaXRsZVRleHQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNo
b3cgdGhlIHJlY29yZHMgdGhhdCBhcmUgc2hvcnRlciB0aGFuICVzIiwgc2hvcnRSZWNvcmRUaHJl
c2hvbGRUaXRsZSk7CiAgICAgdGhpcy5faGlkZVNob3J0UmVjb3Jkc1RpdGxlVGV4dCA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiSGlkZSB0aGUgcmVjb3JkcyB0aGF0IGFyZSBzaG9ydGVyIHRoYW4g
JXMiLCBzaG9ydFJlY29yZFRocmVzaG9sZFRpdGxlKTsKQEAgLTExMSwxMSArMTEyLDEzIEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogICAgIC8vIERpc2FibGUgc2hv
cnQgZXZlbnRzIGZpbHRlciBieSBkZWZhdWx0LgogICAgIHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9u
LnRvZ2dsZWQgPSB0cnVlOwogICAgIHRoaXMuX3Nob3dTaG9ydEV2ZW50cyA9IHRoaXMudG9nZ2xl
RmlsdGVyQnV0dG9uLnRvZ2dsZWQ7CisgICAgdGhpcy5fb3ZlcnZpZXdQYW5lLnNldFNob3dTaG9y
dEV2ZW50cyh0aGlzLl9zaG93U2hvcnRFdmVudHMpOworCiAgICAgdGhpcy5fdGltZVN0YW1wUmVj
b3JkcyA9IFtdOwogICAgIHRoaXMuX2V4cGFuZE9mZnNldCA9IDE1OwogCiAgICAgdGhpcy5fY3Jl
YXRlRmlsZVNlbGVjdG9yKCk7Ci0gICAgdGhpcy5fbW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTW9kZWwoKTsKKwogICAgIHRoaXMuX21vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzLlJlY29yZEFkZGVkLCB0aGlzLl9vblRpbWVsaW5l
RXZlbnRSZWNvcmRlZCwgdGhpcyk7CiAgICAgdGhpcy5fbW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5FdmVudHMuUmVjb3Jkc0NsZWFyZWQsIHRoaXMuX29u
UmVjb3Jkc0NsZWFyZWQsIHRoaXMpOwogCkBAIC0yMjAsNyArMjIzLDcgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuc3RhdHVzQmFyRmls
dGVycyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLnN0YXR1
c0JhckZpbHRlcnMuY2xhc3NOYW1lID0gInN0YXR1cy1iYXItaXRlbXMiOwotICAgICAgICB2YXIg
Y2F0ZWdvcmllcyA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3JpZXM7CisgICAgICAg
IHZhciBjYXRlZ29yaWVzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwu
Y2F0ZWdvcmllcygpOwogICAgICAgICBmb3IgKHZhciBjYXRlZ29yeU5hbWUgaW4gY2F0ZWdvcmll
cykgewogICAgICAgICAgICAgdmFyIGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjYXRlZ29yeU5hbWVd
OwogICAgICAgICAgICAgdGhpcy5zdGF0dXNCYXJGaWx0ZXJzLmFwcGVuZENoaWxkKHRoaXMuX2Ny
ZWF0ZVRpbWVsaW5lQ2F0ZWdvcnlTdGF0dXNCYXJDaGVja2JveChjYXRlZ29yeSwgdGhpcy5fb25D
YXRlZ29yeUNoZWNrYm94Q2xpY2tlZC5iaW5kKHRoaXMsIGNhdGVnb3J5KSkpOwpAQCAtNDE2LDYg
KzQxOSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7
CiAgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLnRvZ2dsZWQgPSAhdGhpcy50b2dnbGVG
aWx0ZXJCdXR0b24udG9nZ2xlZDsKICAgICAgICAgdGhpcy5fc2hvd1Nob3J0RXZlbnRzID0gdGhp
cy50b2dnbGVGaWx0ZXJCdXR0b24udG9nZ2xlZDsKKyAgICAgICAgdGhpcy5fb3ZlcnZpZXdQYW5l
LnNldFNob3dTaG9ydEV2ZW50cyh0aGlzLl9zaG93U2hvcnRFdmVudHMpOwogICAgICAgICB0aGlz
LnRvZ2dsZUZpbHRlckJ1dHRvbi5lbGVtZW50LnRpdGxlID0gdGhpcy5fc2hvd1Nob3J0RXZlbnRz
ID8gdGhpcy5faGlkZVNob3J0UmVjb3Jkc1RpdGxlVGV4dCA6IHRoaXMuX3Nob3dTaG9ydFJlY29y
ZHNUaXRsZVRleHQ7CiAgICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaCh0cnVlKTsKICAgICB9
LApAQCAtNDk5LDcgKzUwMyw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwucmVzZXQoKTsKICAgICAgICAg
dGhpcy5fdGltZVN0YW1wUmVjb3JkcyA9IFtdOwogICAgICAgICB0aGlzLl9ib3VuZGFyaWVzQXJl
VmFsaWQgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdQYW5lLnJlc2V0KCk7CiAgICAg
ICAgIHRoaXMuX2FkanVzdFNjcm9sbFBvc2l0aW9uKDApOwogICAgICAgICB0aGlzLl9jbG9zZVJl
Y29yZERldGFpbHMoKTsKICAgICAgICAgdGhpcy5fYWxsUmVjb3Jkc0NvdW50ID0gMDsKQEAgLTU1
Nyw4ICs1NjAsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVmcmVzaFRpbWVvdXQ7CiAgICAgICAgIH0KIAotICAg
ICAgICB0aGlzLl9vdmVydmlld1BhbmUudXBkYXRlKHRoaXMuX3Nob3dTaG9ydEV2ZW50cyk7Ci0K
ICAgICAgICAgaWYgKCF0aGlzLl9ib3VuZGFyaWVzQXJlVmFsaWQpCiAgICAgICAgICAgICB0aGlz
Ll9jYWxjdWxhdG9yLnNldFdpbmRvdyh0aGlzLl9vdmVydmlld1BhbmUud2luZG93U3RhcnRUaW1l
KCksIHRoaXMuX292ZXJ2aWV3UGFuZS53aW5kb3dFbmRUaW1lKCkpOwogCkBAIC03NTEsMTEgKzc1
MiwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZTsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWx9IHByZXNlbnRh
dGlvbk1vZGVsCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsfSBtb2RlbAog
ICovCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yID0gZnVuY3Rpb24ocHJlc2VudGF0
aW9uTW9kZWwpCitXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yID0gZnVuY3Rpb24obW9k
ZWwpCiB7Ci0gICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwgPSBwcmVzZW50YXRpb25Nb2RlbDsK
KyAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOwogfQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxj
dWxhdG9yLnByb3RvdHlwZSA9IHsKQEAgLTc5Myw3ICs3OTQsNyBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZSA9IHsKIAogICAgIGZvcm1hdFRpbWU6IGZ1bmN0aW9u
KHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE51bWJlci5zZWNvbmRzVG9TdHJpbmcodmFs
dWUgKyB0aGlzLm1pbmltdW1Cb3VuZGFyeSAtIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLm1pbmlt
dW1SZWNvcmRUaW1lKCkpOworICAgICAgICByZXR1cm4gTnVtYmVyLnNlY29uZHNUb1N0cmluZyh2
YWx1ZSArIHRoaXMubWluaW11bUJvdW5kYXJ5IC0gdGhpcy5fbW9kZWwubWluaW11bVJlY29yZFRp
bWUoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuanMKaW5kZXggNWVm
MzNjZjI2ZjU5YzQxOTY1YjkxM2EwNmJiNzQwYjA3NWU2NDc4ZC4uMThmYzlmNmE1MTcyOGJiMTlm
N2Y3MzUwNzQxODIyYzk1MjhiZmQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qcwpA
QCAtMzQsMTAgKzM0LDYgQEAKICAqLwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9u
TW9kZWwgPSBmdW5jdGlvbigpCiB7Ci0gICAgdGhpcy5fY2F0ZWdvcmllcyA9IHt9OwotICAgIHRo
aXMuX2FkZENhdGVnb3J5KG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSgibG9hZGlu
ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9hZGluZyIpLCAicmdiKDQ3LDEwMiwyMzYpIikp
OwotICAgIHRoaXMuX2FkZENhdGVnb3J5KG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29y
eSgic2NyaXB0aW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHRpbmciKSwgInJnYigx
NTcsMjMxLDExOSkiKSk7Ci0gICAgdGhpcy5fYWRkQ2F0ZWdvcnkobmV3IFdlYkluc3BlY3Rvci5U
aW1lbGluZUNhdGVnb3J5KCJyZW5kZXJpbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbmRl
cmluZyIpLCAicmdiKDE2NCw2MCwyNTUpIikpOwogICAgIHRoaXMuX2xpbmtpZmllciA9IFdlYklu
c3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUxpbmtpZmllcigpOwogICAg
IHRoaXMuX2dsdWVSZWNvcmRzID0gZmFsc2U7CiAgICAgdGhpcy5fZmlsdGVycyA9IFtdOwpAQCAt
NDYsNiArNDIsNjUgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwgPSBm
dW5jdGlvbigpCiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnNob3J0
UmVjb3JkVGhyZXNob2xkID0gMC4wMTU7CiAKK1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRh
dGlvbk1vZGVsLmNhdGVnb3JpZXMgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLl9jYXRlZ29yaWVzKQorICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuX2NhdGVnb3JpZXM7CisgICAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuX2NhdGVnb3JpZXMgPSB7Cisg
ICAgICAgIGxvYWRpbmc6IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSgibG9hZGlu
ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9hZGluZyIpLCAicmdiKDQ3LDEwMiwyMzYpIiks
CisgICAgICAgIHNjcmlwdGluZzogbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5KCJz
Y3JpcHRpbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjcmlwdGluZyIpLCAicmdiKDE1Nywy
MzEsMTE5KSIpLAorICAgICAgICByZW5kZXJpbmc6IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVD
YXRlZ29yeSgicmVuZGVyaW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW5kZXJpbmciKSwg
InJnYigxNjQsNjAsMjU1KSIpCisgICAgfTsKKyAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUHJlc2VudGF0aW9uTW9kZWwuX2NhdGVnb3JpZXM7Cit9OworCisvKioKKyAqIEBwYXJhbSB7
T2JqZWN0fSByZWNvcmQKKyAqLworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9k
ZWwucmVjb3JkU3R5bGUgPSBmdW5jdGlvbihyZWNvcmQpIHsKKyAgICBpZiAoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuX3JlY29yZFN0eWxlc01hcCkKKyAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLl9yZWNvcmRTdHlsZXNN
YXBbcmVjb3JkLnR5cGVdOworCisgICAgdmFyIHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTW9kZWwuUmVjb3JkVHlwZTsKKyAgICB2YXIgY2F0ZWdvcmllcyA9IFdlYkluc3BlY3Rv
ci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3JpZXMoKTsKKyAgICAgICAgCisgICAg
dmFyIHJlY29yZFN0eWxlcyA9IHt9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5Sb290
XSA9IHsgdGl0bGU6ICIjcm9vdCIsIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0gfTsK
KyAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRXZlbnREaXNwYXRjaF0gPSB7IHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2ZW50IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3Jp
cHRpbmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5MYXlvdXRdID0geyB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXlvdXQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNb
InJlbmRlcmluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlY2FsY3VsYXRl
U3R5bGVzXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjYWxjdWxhdGUgU3R5
bGUiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07CisgICAgcmVjb3JkU3R5
bGVzW3JlY29yZFR5cGVzLlBhaW50XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UGFpbnQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07CisgICAgcmVjb3Jk
U3R5bGVzW3JlY29yZFR5cGVzLkJlZ2luRnJhbWVdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJGcmFtZSBTdGFydCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sicmVuZGVyaW5nIl0g
fTsKKyAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUGFyc2VIVE1MXSA9IHsgdGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUGFyc2UiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRp
bmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lckluc3RhbGxdID0geyB0
aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbnN0YWxsIFRpbWVyIiksIGNhdGVnb3J5OiBj
YXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5U
aW1lclJlbW92ZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbW92ZSBUaW1l
ciIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAgICByZWNvcmRTdHls
ZXNbcmVjb3JkVHlwZXMuVGltZXJGaXJlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiVGltZXIgRmlyZWQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Cisg
ICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlhIUlJlYWR5U3RhdGVDaGFuZ2VdID0geyB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJYSFIgUmVhZHkgU3RhdGUgQ2hhbmdlIiksIGNhdGVn
b3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRU
eXBlcy5YSFJMb2FkXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhSIExvYWQi
KSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVz
W3JlY29yZFR5cGVzLkV2YWx1YXRlU2NyaXB0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRXZhbHVhdGUgU2NyaXB0IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmci
XSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lU3RhbXBdID0geyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFtcCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2Ny
aXB0aW5nIl0gfTsKKyAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VTZW5kUmVx
dWVzdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbmQgUmVxdWVzdCIpLCBj
YXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29y
ZFR5cGVzLlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUmVjZWl2ZSBSZXNwb25zZSIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGlu
ZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlRmluaXNoXSA9IHsg
dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmluaXNoIExvYWRpbmciKSwgY2F0ZWdvcnk6
IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5G
dW5jdGlvbkNhbGxdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGdW5jdGlvbiBD
YWxsIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgIHJlY29yZFN0
eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVkRGF0YV0gPSB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlY2VpdmUgRGF0YSIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9h
ZGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkdDRXZlbnRdID0geyB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJHQyBFdmVudCIpLCBjYXRlZ29yeTogY2F0ZWdvcmll
c1sic2NyaXB0aW5nIl0gfTsKKyAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuTWFya0RPTUNv
bnRlbnRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJET01Db250ZW50IGV2ZW50
IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgIHJlY29yZFN0eWxl
c1tyZWNvcmRUeXBlcy5NYXJrTG9hZF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkxvYWQgZXZlbnQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAg
cmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0XSA9IHsgdGl0
bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NoZWR1bGUgUmVxdWVzdCIpLCBjYXRlZ29yeTog
Y2F0ZWdvcmllc1sibG9hZGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJl
cXVlc3RBbmltYXRpb25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
cXVlc3QgQW5pbWF0aW9uIEZyYW1lIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmci
XSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5DYW5jZWxBbmltYXRpb25GcmFtZV0g
PSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbmNlbCBBbmltYXRpb24gRnJhbWUi
KSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVz
W3JlY29yZFR5cGVzLkZpcmVBbmltYXRpb25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkFuaW1hdGlvbiBGcmFtZSBGaXJlZCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1si
c2NyaXB0aW5nIl0gfTsKKworICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1v
ZGVsLl9yZWNvcmRTdHlsZXNNYXAgPSByZWNvcmRTdHlsZXM7CisgICAgcmV0dXJuIHJlY29yZFN0
eWxlc1tyZWNvcmQudHlwZV07Cit9CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlv
bk1vZGVsLmNhdGVnb3J5Rm9yUmVjb3JkID0gZnVuY3Rpb24ocmVjb3JkKQoreworICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucmVjb3JkU3R5bGUo
cmVjb3JkKS5jYXRlZ29yeTsKK30KKwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9u
TW9kZWwucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuRmlsdGVyfSBmaWx0ZXIKQEAgLTY5LDE3ICsxMjQs
NiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3RpbWVyUmVjb3JkcyA9IHt9OwogICAgICAgICB0aGlzLl9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVSZWNvcmRzID0ge307CiAgICAgICAgIHRoaXMuX21pbmltdW1SZWNvcmRU
aW1lID0gLTE7Ci0gICAgICAgIHRoaXMuX21heGltdW1SZWNvcmRUaW1lID0gLTE7Ci0gICAgfSwK
LQotICAgIG1pbmltdW1SZWNvcmRUaW1lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fbWluaW11bVJlY29yZFRpbWU7Ci0gICAgfSwKLQotICAgIG1heGltdW1SZWNvcmRU
aW1lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbWF4aW11bVJlY29y
ZFRpbWU7CiAgICAgfSwKIAogICAgIGFkZFJlY29yZDogZnVuY3Rpb24ocmVjb3JkLCBwYXJlbnRS
ZWNvcmQpCkBAIC04Nyw2ICsxMzEsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRp
b25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBjb25uZWN0ZWRUb09sZFJlY29yZCA9
IGZhbHNlOwogICAgICAgICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVN
b2RlbC5SZWNvcmRUeXBlOwogCisgICAgICAgIGlmICh0aGlzLl9taW5pbXVtUmVjb3JkVGltZSA9
PT0gLTEgfHwgcmVjb3JkLnN0YXJ0VGltZSA8IHRoaXMuX21pbmltdW1SZWNvcmRUaW1lKQorICAg
ICAgICAgICAgdGhpcy5fbWluaW11bVJlY29yZFRpbWUgPSByZWNvcmQuc3RhcnRUaW1lOworCiAg
ICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuTWFya0RPTUNvbnRlbnQgfHwg
cmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLk1hcmtMb2FkKQogICAgICAgICAgICAgcGFyZW50
UmVjb3JkID0gbnVsbDsgLy8gTm8gYmFyIGVudHJ5IGZvciBsb2FkIGV2ZW50cy4KICAgICAgICAg
ZWxzZSB7CkBAIC0xMTgsNyArMTY1LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0
aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdmFyIGZvcm1hdHRl
ZFJlY29yZCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNv
cmQodGhpcywgcmVjb3JkLCBwYXJlbnRSZWNvcmQsIHNjcmlwdERldGFpbHMpOwotICAgICAgICB0
aGlzLl91cGRhdGVCb3VuZGFyaWVzKGZvcm1hdHRlZFJlY29yZCk7ICAgIAogCiAgICAgICAgIGlm
IChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuTWFya0RPTUNvbnRlbnQgfHwgcmVjb3JkLnR5
cGUgPT09IHJlY29yZFR5cGVzLk1hcmtMb2FkKQogICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRl
ZFJlY29yZDsKQEAgLTEyOSw3ICsxNzUsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hp
bGRyZW5Db3VudDsgKytpKQogICAgICAgICAgICAgdGhpcy5hZGRSZWNvcmQoY2hpbGRyZW5baV0s
IGZvcm1hdHRlZFJlY29yZCk7CiAKLSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmNhbGN1bGF0ZUFn
Z3JlZ2F0ZWRTdGF0cyh0aGlzLl9jYXRlZ29yaWVzKTsKKyAgICAgICAgZm9ybWF0dGVkUmVjb3Jk
LmNhbGN1bGF0ZUFnZ3JlZ2F0ZWRTdGF0cyhXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRp
b25Nb2RlbC5jYXRlZ29yaWVzKCkpOwogCiAgICAgICAgIGlmIChjb25uZWN0ZWRUb09sZFJlY29y
ZCkgewogICAgICAgICAgICAgcmVjb3JkID0gZm9ybWF0dGVkUmVjb3JkOwpAQCAtMTQ4LDE0ICsx
OTQsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRSZWNvcmQ7CiAgICAgfSwKIAotICAgIF91cGRh
dGVCb3VuZGFyaWVzOiBmdW5jdGlvbihmb3JtYXR0ZWRSZWNvcmQpCi0gICAgewotICAgICAgICBp
ZiAodGhpcy5fbWluaW11bVJlY29yZFRpbWUgPT09IC0xIHx8IGZvcm1hdHRlZFJlY29yZC5zdGFy
dFRpbWUgPCB0aGlzLl9taW5pbXVtUmVjb3JkVGltZSkKLSAgICAgICAgICAgIHRoaXMuX21pbmlt
dW1SZWNvcmRUaW1lID0gZm9ybWF0dGVkUmVjb3JkLnN0YXJ0VGltZTsKLSAgICAgICAgaWYgKHRo
aXMuX21heGltdW1SZWNvcmRUaW1lID09PSAtMSB8fCBmb3JtYXR0ZWRSZWNvcmQuZW5kVGltZSA+
IHRoaXMuX21heGltdW1SZWNvcmRUaW1lKQotICAgICAgICAgICAgdGhpcy5fbWF4aW11bVJlY29y
ZFRpbWUgPSBmb3JtYXR0ZWRSZWNvcmQuZW5kVGltZTsKLSAgICB9LAotCiAgICAgX2ZpbmRQYXJl
bnRSZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZ2x1
ZVJlY29yZHMpCkBAIC0xODAsNTcgKzIxOCw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNl
bnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZ2x1ZVJlY29yZHMgPSBn
bHVlOwogICAgIH0sCiAKLSAgICBnZXQgY2F0ZWdvcmllcygpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fY2F0ZWdvcmllczsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeX0gY2F0ZWdvcnkKLSAgICAgKi8KLSAgICBfYWRk
Q2F0ZWdvcnk6IGZ1bmN0aW9uKGNhdGVnb3J5KQotICAgIHsKLSAgICAgICAgdGhpcy5fY2F0ZWdv
cmllc1tjYXRlZ29yeS5uYW1lXSA9IGNhdGVnb3J5OwotICAgIH0sCi0KLSAgICBnZXQgX3JlY29y
ZFN0eWxlcygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3JlY29yZFN0eWxlc0FycmF5KSB7
Ci0gICAgICAgICAgICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2Rl
bC5SZWNvcmRUeXBlOwotICAgICAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSB0aGlzLl9jYXRlZ29y
aWVzOwotCi0gICAgICAgICAgICB2YXIgcmVjb3JkU3R5bGVzID0ge307Ci0gICAgICAgICAgICBy
ZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUm9vdF0gPSB7IHRpdGxlOiAiI3Jvb3QiLCBjYXRlZ29y
eTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVj
b3JkVHlwZXMuRXZlbnREaXNwYXRjaF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkV2ZW50IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAg
ICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkxheW91dF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkxheW91dCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sicmVuZGVyaW5nIl0g
fTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZWNhbGN1bGF0ZVN0eWxl
c10gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2FsY3VsYXRlIFN0eWxlIiks
IGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJyZW5kZXJpbmciXSB9OwotICAgICAgICAgICAgcmVjb3Jk
U3R5bGVzW3JlY29yZFR5cGVzLlBhaW50XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUGFpbnQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07Ci0gICAgICAg
ICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuQmVnaW5GcmFtZV0gPSB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkZyYW1lIFN0YXJ0IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJy
ZW5kZXJpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlBhcnNl
SFRNTF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhcnNlIiksIGNhdGVnb3J5
OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNv
cmRUeXBlcy5UaW1lckluc3RhbGxdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJ
bnN0YWxsIFRpbWVyIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAg
ICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVyUmVtb3ZlXSA9IHsgdGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVtb3ZlIFRpbWVyIiksIGNhdGVnb3J5OiBjYXRlZ29y
aWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVz
LlRpbWVyRmlyZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVyIEZpcmVk
IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVj
b3JkU3R5bGVzW3JlY29yZFR5cGVzLlhIUlJlYWR5U3RhdGVDaGFuZ2VdID0geyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJYSFIgUmVhZHkgU3RhdGUgQ2hhbmdlIiksIGNhdGVnb3J5OiBj
YXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29y
ZFR5cGVzLlhIUkxvYWRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJYSFIgTG9h
ZCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJl
Y29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmFsdWF0ZVNjcmlwdF0gPSB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkV2YWx1YXRlIFNjcmlwdCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1si
c2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1l
U3RhbXBdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFtcCIpLCBjYXRlZ29y
eTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1ty
ZWNvcmRUeXBlcy5SZXNvdXJjZVNlbmRSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU2VuZCBSZXF1ZXN0IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0g
fTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVS
ZXNwb25zZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2VpdmUgUmVzcG9u
c2UiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OwotICAgICAgICAgICAgcmVj
b3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlRmluaXNoXSA9IHsgdGl0bGU6IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRmluaXNoIExvYWRpbmciKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxv
YWRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkZ1bmN0aW9u
Q2FsbF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9uIENhbGwiKSwg
Y2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRT
dHlsZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VSZWNlaXZlZERhdGFdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZWNlaXZlIERhdGEiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxv
YWRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkdDRXZlbnRd
ID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJHQyBFdmVudCIpLCBjYXRlZ29yeTog
Y2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNv
cmRUeXBlcy5NYXJrRE9NQ29udGVudF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkRPTUNvbnRlbnQgZXZlbnQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07
Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuTWFya0xvYWRdID0geyB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2FkIGV2ZW50IiksIGNhdGVnb3J5OiBjYXRlZ29y
aWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVz
LlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2NoZWR1bGUgUmVxdWVzdCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07
Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVxdWVzdEFuaW1hdGlvbkZy
YW1lXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBBbmltYXRpb24g
RnJhbWUiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAg
ICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuQ2FuY2VsQW5pbWF0aW9uRnJhbWVdID0geyB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYW5jZWwgQW5pbWF0aW9uIEZyYW1lIiksIGNhdGVn
b3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVz
W3JlY29yZFR5cGVzLkZpcmVBbmltYXRpb25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkFuaW1hdGlvbiBGcmFtZSBGaXJlZCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1si
c2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc0FycmF5ID0gcmVj
b3JkU3R5bGVzOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRTdHlsZXNB
cnJheTsKLSAgICB9LAotCiAgICAgZmlsdGVyZWRSZWNvcmRzOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICBmdW5jdGlvbiBmaWx0ZXIocmVjb3JkKQpAQCAtMjkxLDIwICsyNzgsMjEgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkID0gZnVuY3Rpb24ocHJl
c2VudGF0aW9uTW9kZWwsIHJlY28KICAgICB0aGlzLl9saW5raWZpZXIgPSB0aGlzLl9wcmVzZW50
YXRpb25Nb2RlbC5fbGlua2lmaWVyOwogICAgIHRoaXMuX2FnZ3JlZ2F0ZWRTdGF0cyA9IFtdOwog
ICAgIHZhciByZWNvcmRUeXBlcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5
cGU7Ci0gICAgdmFyIHN0eWxlID0gcHJlc2VudGF0aW9uTW9kZWwuX3JlY29yZFN0eWxlc1tyZWNv
cmQudHlwZV07CisgICAgdmFyIHN0eWxlID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0
aW9uTW9kZWwucmVjb3JkU3R5bGUocmVjb3JkKTsKICAgICB0aGlzLnBhcmVudCA9IHBhcmVudFJl
Y29yZDsKICAgICBpZiAocGFyZW50UmVjb3JkKQogICAgICAgICBwYXJlbnRSZWNvcmQuY2hpbGRy
ZW4ucHVzaCh0aGlzKTsKICAgICB0aGlzLmNhdGVnb3J5ID0gc3R5bGUuY2F0ZWdvcnk7CiAgICAg
dGhpcy50aXRsZSA9IHN0eWxlLnRpdGxlOwotICAgIHRoaXMuc3RhcnRUaW1lID0gcmVjb3JkLnN0
YXJ0VGltZSAvIDEwMDA7CisgICAgdGhpcy5zdGFydFRpbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVNb2RlbC5zdGFydFRpbWUocmVjb3JkKTsKICAgICB0aGlzLmRhdGEgPSByZWNvcmQuZGF0YTsK
ICAgICB0aGlzLnR5cGUgPSByZWNvcmQudHlwZTsKLSAgICB0aGlzLmVuZFRpbWUgPSAodHlwZW9m
IHJlY29yZC5lbmRUaW1lICE9PSAidW5kZWZpbmVkIikgPyByZWNvcmQuZW5kVGltZSAvIDEwMDAg
OiB0aGlzLnN0YXJ0VGltZTsKKyAgICB0aGlzLmVuZFRpbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVNb2RlbC5lbmRUaW1lKHJlY29yZCk7CiAgICAgdGhpcy5fc2VsZlRpbWUgPSB0aGlzLmVuZFRp
bWUgLSB0aGlzLnN0YXJ0VGltZTsKICAgICB0aGlzLl9sYXN0Q2hpbGRFbmRUaW1lID0gdGhpcy5l
bmRUaW1lOwogICAgIHRoaXMuX2luaXRpYXRvck9mZnNldCA9IChwYXJlbnRSZWNvcmQgJiYgcGFy
ZW50UmVjb3JkICE9PSBwcmVzZW50YXRpb25Nb2RlbC5fcm9vdFJlY29yZCkgPwogICAgICAgICBw
YXJlbnRSZWNvcmQuX2luaXRpYXRvck9mZnNldCArIHRoaXMuc3RhcnRUaW1lIC0gcGFyZW50UmVj
b3JkLnN0YXJ0VGltZSA6IDA7CisgICAgdGhpcy5fc3RhcnRUaW1lT2Zmc2V0ID0gdGhpcy5zdGFy
dFRpbWUgLSBwcmVzZW50YXRpb25Nb2RlbC5fbWluaW11bVJlY29yZFRpbWU7CiAKICAgICBpZiAo
cmVjb3JkLnN0YWNrVHJhY2UgJiYgcmVjb3JkLnN0YWNrVHJhY2UubGVuZ3RoKQogICAgICAgICB0
aGlzLnN0YWNrVHJhY2UgPSByZWNvcmQuc3RhY2tUcmFjZTsKQEAgLTQzMiw3ICs0MjAsNyBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kRWxlbWVudFJvdyhXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkFnZ3JlZ2F0ZWQgVGltZSIpLCB0aGlzLl9nZW5lcmF0ZUFnZ3JlZ2F0ZWRJ
bmZvKCkpOwogICAgICAgICB9CiAgICAgICAgIHZhciB0ZXh0ID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCIlcyAoYXQgJXMpIiwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9sYXN0Q2hpbGRF
bmRUaW1lIC0gdGhpcy5zdGFydFRpbWUsIHRydWUpLAotICAgICAgICAgICAgTnVtYmVyLnNlY29u
ZHNUb1N0cmluZyh0aGlzLnN0YXJ0VGltZSAtIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLm1pbmlt
dW1SZWNvcmRUaW1lKCkpKTsKKyAgICAgICAgICAgIE51bWJlci5zZWNvbmRzVG9TdHJpbmcodGhp
cy5fc3RhcnRUaW1lT2Zmc2V0KSk7CiAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRS
b3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEdXJhdGlvbiIpLCB0ZXh0KTsKIAogICAgICAgICBj
b25zdCByZWNvcmRUeXBlcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGU7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134318</attachid>
            <date>2012-03-28 09:46:48 -0700</date>
            <delta_ts>2012-03-28 09:57:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81909-20120328204645.patch</filename>
            <type>text/plain</type>
            <size>48493</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY3NDQ2MTY4NTBmNGVh
ZTllYWJhMzFiMzE0NDhkMTc3M2E5NWU3My4uMTc4MTVhYWJmZmM4ZmM2NWMxMDM5NTVhNTg2ZmNl
ZTQ3NzdkMDBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDczIEBACiAyMDEyLTAzLTI4ICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogb25seSB1cGRhdGUgVGltZWxpbmUgb3ZlcnZpZXcgd2hlbiByZWFsbHkgbmVlZGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTkwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0aW1lbGlu
ZSBvdmVydmlldyB0byB1c2luZyByYXcgcmVjb3JkcywgdGh1cyByZW1vdmluZyBkZXBlbmRlbmN5
IG9uIGluc3RhbmNlIG1lbWJlcnMgb2YKKyAgICAgICAgVGltZWxpbmVQcmVzZW50YXRpb25Nb2Rl
bC4gVGhpcyByZXF1aXJlcyBtb3ZpbmcgcmVjb3JkIHN0eWxlcy9jYXRlZ29yaWVzIHRvIHN0YXRp
YyBnZXR0ZXJzLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVs
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuc3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZU1vZGVsLmVuZFRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TW9kZWwuZHVyYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwucHJv
dG90eXBlLl9hZGRSZWNvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwu
cHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLnBy
b3RvdHlwZS5taW5pbXVtUmVjb3JkVGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxp
bmVNb2RlbC5wcm90b3R5cGUubWF4aW11bVJlY29yZFRpbWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTW9kZWwucHJvdG90eXBlLl91cGRhdGVCb3VuZGFyaWVzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUuX3Nob3dUaW1lbGluZXMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS5fc2hvd01lbW9y
eUdyYXBoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90
b3R5cGUuX3NldFZlcnRpY2FsT3ZlcnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS5fb25DYXRlZ29yeVZpc2liaWxpdHlDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUuX3Vw
ZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90
eXBlLl91cGRhdGVDYXRlZ29yeVN0cmlwcy5tYXJrUGVyY2VudGFnZXNGb3JSZWNvcmQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS5fdXBkYXRl
Q2F0ZWdvcnlTdHJpcHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQ
YW5lLnByb3RvdHlwZS53aW5kb3dTdGFydFRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS53aW5kb3dFbmRUaW1lKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUuX29uV2luZG93Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBl
LnNldFNob3dTaG9ydEV2ZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVy
dmlld1BhbmUucHJvdG90eXBlLl9zY2hlZHVsZVJlZnJlc2gpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lT3ZlcnZpZXdDYWxjdWxhdG9yLnByb3RvdHlwZS5jb21wdXRlQmFyR3JhcGhQ
ZXJjZW50YWdlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0NhbGN1
bGF0b3IucHJvdG90eXBlLnNldFdpbmRvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxp
bmVPdmVydmlld0NhbGN1bGF0b3IucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwR3JhcGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBHcmFwaC5wcm90b3R5
cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZp
ZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmlldy5wcm90
b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVy
dmlldy5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZl
cnRpY2FsT3ZlcnZpZXcucHJvdG90eXBlLndhc1Nob3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcucHJvdG90eXBlLndpbGxIaWRlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcucHJvdG90eXBlLl9hZ2dyZWdh
dGVGcmFtZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGlj
YWxPdmVydmlldy5wcm90b3R5cGUuX2FnZ3JlZ2F0ZVJlY29yZHMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmlldy5wcm90b3R5cGUuZ2V0V2luZG93VGltZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmlldy5wcm90b3R5
cGUuX29uUmVjb3JkQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdncmVn
YXRlZFJlY29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2dyZWdhdGVkUmVj
b3JkLnByb3RvdHlwZS5fYWdncmVnYXRlU3RhdGlzdGljcyk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBl
Ll9jcmVhdGVTdGF0dXNiYXJCdXR0b25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVBhbmVsLnByb3RvdHlwZS5fdG9nZ2xlRmlsdGVyQnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3Jlc2V0UGFuZWwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9yZWZyZXNoKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUNhbGN1bGF0b3IpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lQ2FsY3VsYXRvci5wcm90b3R5cGUuZm9ybWF0VGltZSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuY2F0ZWdvcmllcyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5yZWNvcmRTdHlsZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5jYXRlZ29yeUZv
clJlY29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2Rl
bC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlLmFkZFJlY29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkLnByb3RvdHlwZS5nZW5lcmF0ZVBvcHVw
Q29udGVudCk6CisKKzIwMTItMDMtMjggIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVt
Lm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBudWtlIEhlYXBHcmFwaC5zZXRTaXplKCks
IGRvIGl0IGF1dG9tYWdpY2FsbHkgb24gdXBkYXRlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjQ3MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lTW9kZWwuanMKaW5kZXggODE1ZmU3YTgzNTU1ZWU4
ZTcyMWFlMDViOTZjZDdlZmJmYTRiZDUwMS4uMmVmODdlZjFlMWEyM2U2NzY3N2JmODdlYzRjODQx
ZmM0YmU2ODdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UaW1lbGluZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGltZWxpbmVNb2RlbC5qcwpAQCAtMzUsNiArMzUsOCBAQAogV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTW9kZWwgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5fcmVjb3JkcyA9IFtdOworICAgIHRo
aXMuX21pbmltdW1SZWNvcmRUaW1lID0gLTE7CisgICAgdGhpcy5fbWF4aW11bVJlY29yZFRpbWUg
PSAtMTsKICAgICB0aGlzLl9jb2xsZWN0aW9uRW5hYmxlZCA9IGZhbHNlOwogCiAgICAgV2ViSW5z
cGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1l
bGluZU1hbmFnZXIuRXZlbnRUeXBlcy5UaW1lbGluZUV2ZW50UmVjb3JkZWQsIHRoaXMuX29uUmVj
b3JkQWRkZWQsIHRoaXMpOwpAQCAtODMsNiArODUsMjEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TW9kZWwuRXZlbnRzID0gewogICAgIFJlY29yZHNDbGVhcmVkOiAiUmVjb3Jkc0NsZWFyZWQiCiB9
CiAKK1dlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLnN0YXJ0VGltZSA9IGZ1bmN0aW9uKHJlY29y
ZCkKK3sKKyAgICByZXR1cm4gcmVjb3JkLnN0YXJ0VGltZSAvIDEwMDA7Cit9CisKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZU1vZGVsLmVuZFRpbWUgPSBmdW5jdGlvbihyZWNvcmQpCit7CisgICAgcmV0
dXJuICh0eXBlb2YgcmVjb3JkLmVuZFRpbWUgPT09ICJ1bmRlZmluZWQiID8gcmVjb3JkLnN0YXJ0
VGltZSA6IHJlY29yZC5lbmRUaW1lKSAvIDEwMDA7Cit9CisKK1dlYkluc3BlY3Rvci5UaW1lbGlu
ZU1vZGVsLmR1cmF0aW9uID0gZnVuY3Rpb24ocmVjb3JkKQoreworICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVNb2RlbC5lbmRUaW1lKHJlY29yZCkgLSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVNb2RlbC5zdGFydFRpbWUocmVjb3JkKTsKK30KKwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwucHJvdG90eXBlID0gewogICAgIHN0YXJ0UmVjb3JkOiBmdW5jdGlvbigpCiAgICAgewpAQCAt
MTE1LDYgKzEzMiw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLnByb3RvdHlwZSA9IHsK
ICAgICBfYWRkUmVjb3JkOiBmdW5jdGlvbihyZWNvcmQpCiAgICAgewogICAgICAgICB0aGlzLl9y
ZWNvcmRzLnB1c2gocmVjb3JkKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQm91bmRhcmllcyhyZWNv
cmQpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
VGltZWxpbmVNb2RlbC5FdmVudHMuUmVjb3JkQWRkZWQsIHJlY29yZCk7CiAgICAgfSwKIApAQCAt
MTc0LDcgKzE5MiwzMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlY29yZHMgPSBb
XTsKKyAgICAgICAgdGhpcy5fbWluaW11bVJlY29yZFRpbWUgPSAtMTsKKyAgICAgICAgdGhpcy5f
bWF4aW11bVJlY29yZFRpbWUgPSAtMTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzLlJlY29yZHNDbGVhcmVkKTsK
KyAgICB9LAorCisgICAgbWluaW11bVJlY29yZFRpbWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9taW5pbXVtUmVjb3JkVGltZTsKKyAgICB9LAorCisgICAgbWF4aW11
bVJlY29yZFRpbWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tYXhp
bXVtUmVjb3JkVGltZTsKKyAgICB9LAorCisgICAgX3VwZGF0ZUJvdW5kYXJpZXM6IGZ1bmN0aW9u
KHJlY29yZCkKKyAgICB7CisgICAgICAgIHZhciBzdGFydFRpbWUgPSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVNb2RlbC5zdGFydFRpbWUocmVjb3JkKTsKKyAgICAgICAgdmFyIGVuZFRpbWUgPSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNb2RlbC5lbmRUaW1lKHJlY29yZCk7CisKKyAgICAgICAgaWYgKHRo
aXMuX21pbmltdW1SZWNvcmRUaW1lID09PSAtMSB8fCBzdGFydFRpbWUgPCB0aGlzLl9taW5pbXVt
UmVjb3JkVGltZSkKKyAgICAgICAgICAgIHRoaXMuX21pbmltdW1SZWNvcmRUaW1lID0gc3RhcnRU
aW1lOworICAgICAgICBpZiAodGhpcy5fbWF4aW11bVJlY29yZFRpbWUgPT09IC0xIHx8IGVuZFRp
bWUgPiB0aGlzLl9tYXhpbXVtUmVjb3JkVGltZSkKKyAgICAgICAgICAgIHRoaXMuX21heGltdW1S
ZWNvcmRUaW1lID0gZW5kVGltZTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzCmluZGV4
IGMyNTQ3N2MzZjcwNmViNTBiYWNmMzdkYTdiZjc3YzBiMzM5MGUzYWYuLmZiNTU2ZjZlZWE0ZmU5
NjBjZWY5MmRjZGFhMjcyMTg4ZDg4NzVkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcwpAQCAtMzIs
OCArMzIsOSBAQAogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9i
amVjdH0KICAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25N
b2RlbC5GaWx0ZXJ9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsfSBtb2Rl
bAogICovCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUgPSBmdW5jdGlvbihwcmVz
ZW50YXRpb25Nb2RlbCkKK1dlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZSA9IGZ1bmN0
aW9uKG1vZGVsKQogewogICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogICAgIHRoaXMuZWxlbWVudC5pZCA9ICJ0aW1lbGluZS1vdmVydmlldy1wYW5lbCI7
CkBAIC00MSw3ICs0Miw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZSA9IGZ1
bmN0aW9uKHByZXNlbnRhdGlvbk1vZGVsKQogICAgIHRoaXMuX3dpbmRvd1N0YXJ0VGltZSA9IDA7
CiAgICAgdGhpcy5fd2luZG93RW5kVGltZSA9IEluZmluaXR5OwogCi0gICAgdGhpcy5fcHJlc2Vu
dGF0aW9uTW9kZWwgPSBwcmVzZW50YXRpb25Nb2RlbDsKKyAgICB0aGlzLl9tb2RlbCA9IG1vZGVs
OwogCiAgICAgdGhpcy5fdG9wUGFuZVNpZGViYXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CiAgICAgdGhpcy5fdG9wUGFuZVNpZGViYXJFbGVtZW50LmlkID0gInRpbWVs
aW5lLW92ZXJ2aWV3LXNpZGViYXIiOwpAQCAtODMsNyArODQsNyBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlld1BhbmUgPSBmdW5jdGlvbihwcmVzZW50YXRpb25Nb2RlbCkKIAogICAgIHRo
aXMuX292ZXJ2aWV3Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX292ZXJ2aWV3R3JpZC5lbGVt
ZW50KTsKIAotICAgIHRoaXMuX2hlYXBHcmFwaCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcEdyYXBo
KCk7CisgICAgdGhpcy5faGVhcEdyYXBoID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwR3JhcGgodGhp
cy5fbW9kZWwpOwogICAgIHRoaXMuX2hlYXBHcmFwaC5lbGVtZW50LmlkID0gInRpbWVsaW5lLW92
ZXJ2aWV3LW1lbW9yeSI7CiAgICAgdGhpcy5fb3ZlcnZpZXdHcmlkLmVsZW1lbnQuaW5zZXJ0QmVm
b3JlKHRoaXMuX2hlYXBHcmFwaC5lbGVtZW50LCB0aGlzLl9vdmVydmlld0dyaWQuaXRlbXNHcmFw
aHNFbGVtZW50KTsKIApAQCAtOTgsNyArOTksNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVy
dmlld1BhbmUgPSBmdW5jdGlvbihwcmVzZW50YXRpb25Nb2RlbCkKICAKICAgICB0aGlzLl9jYXRl
Z29yeUdyYXBocyA9IHt9OwogICAgIHZhciBpID0gMDsKLSAgICB2YXIgY2F0ZWdvcmllcyA9IHRo
aXMuX3ByZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3JpZXM7CisgICAgdmFyIGNhdGVnb3JpZXMgPSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5jYXRlZ29yaWVzKCk7CiAgICAg
Zm9yICh2YXIgY2F0ZWdvcnkgaW4gY2F0ZWdvcmllcykgewogICAgICAgICB2YXIgY2F0ZWdvcnlH
cmFwaCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeUdyYXBoKGNhdGVnb3JpZXNb
Y2F0ZWdvcnldLCBpKysgJSAyKTsKICAgICAgICAgdGhpcy5fY2F0ZWdvcnlHcmFwaHNbY2F0ZWdv
cnldID0gY2F0ZWdvcnlHcmFwaDsKQEAgLTEwOCw2ICsxMDksOSBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlld1BhbmUgPSBmdW5jdGlvbihwcmVzZW50YXRpb25Nb2RlbCkKIAogICAgIHRo
aXMuX292ZXJ2aWV3R3JpZC5zZXRTY3JvbGxBbmREaXZpZGVyVG9wKDAsIDApOwogICAgIHRoaXMu
X292ZXJ2aWV3Q2FsY3VsYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0Nh
bGN1bGF0b3IoKTsKKworICAgIG1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTW9kZWwuRXZlbnRzLlJlY29yZEFkZGVkLCB0aGlzLl9zY2hlZHVsZVJlZnJlc2gsIHRo
aXMpOworICAgIG1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuRXZlbnRzLlJlY29yZHNDbGVhcmVkLCB0aGlzLl91cGRhdGUsIHRoaXMpOwogfQogCiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUuTWluU2VsZWN0YWJsZVNpemUgPSAxMjsKQEAg
LTEzOCw3ICsxNDIsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9oZWFwR3JhcGguaGlkZSgpOwogICAgICAgICB0aGlzLl9z
ZXRWZXJ0aWNhbE92ZXJ2aWV3KHRoaXMuX2N1cnJlbnRNb2RlID09PSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlld1BhbmUuTW9kZS5FdmVudHNWZXJ0aWNhbCk7CiAgICAgICAgIHRoaXMuX292
ZXJ2aWV3R3JpZC5pdGVtc0dyYXBoc0VsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7
Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUNhdGVnb3J5U3RyaXBzKHRoaXMuX3ByZXNlbnRhdGlvbk1v
ZGVsLnJvb3RSZWNvcmQoKS5jaGlsZHJlbik7CisgICAgICAgIHRoaXMuX3VwZGF0ZUNhdGVnb3J5
U3RyaXBzKCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5FdmVudHMuTW9kZUNoYW5nZWQsIHRoaXMuX2N1cnJl
bnRNb2RlKTsKICAgICB9LAogCkBAIC0xNDgsNyArMTUyLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc2V0VmVydGljYWxP
dmVydmlldyhmYWxzZSk7CiAgICAgICAgIHRoaXMuX21lbW9yeU92ZXJ2aWV3SXRlbS5yZXZlYWxB
bmRTZWxlY3QoZmFsc2UpOwogICAgICAgICB0aGlzLl9oZWFwR3JhcGguc2hvdygpOwotICAgICAg
ICB0aGlzLl9oZWFwR3JhcGgudXBkYXRlKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJvb3RSZWNv
cmQoKS5jaGlsZHJlbik7CisgICAgICAgIHRoaXMuX2hlYXBHcmFwaC51cGRhdGUoKTsKICAgICAg
ICAgdGhpcy5fb3ZlcnZpZXdHcmlkLml0ZW1zR3JhcGhzRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJo
aWRkZW4iKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLkV2ZW50cy5Nb2RlQ2hhbmdlZCwgdGhpcy5fY3VycmVu
dE1vZGUpOwogICAgIH0sCkBAIC0xNTgsMTMgKzE2MiwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVPdmVydmlld1BhbmUucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWVuYWJsZWQgPT09ICF0
aGlzLl92ZXJ0aWNhbE92ZXJ2aWV3KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAo
ZW5hYmxlZCkgewotICAgICAgICAgICAgdGhpcy5fdmVydGljYWxPdmVydmlldyA9IG5ldyBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVWZXJ0aWNhbE92ZXJ2aWV3KCk7CisgICAgICAgICAgICB0aGlzLl92
ZXJ0aWNhbE92ZXJ2aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZp
ZXcodGhpcy5fbW9kZWwpOwogICAgICAgICAgICAgdGhpcy5fdmVydGljYWxPdmVydmlldy5zaG93
KHRoaXMuX292ZXJ2aWV3Q29udGFpbmVyKTsKLSAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsT3Zl
cnZpZXcudXBkYXRlKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJvb3RSZWNvcmQoKS5jaGlsZHJl
bik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0aGlzLl92ZXJ0aWNhbE92ZXJ2aWV3
LmRldGFjaCgpOwotICAgICAgICAgICAgdGhpcy5fb3ZlcnZpZXdHcmlkLml0ZW1zR3JhcGhzRWxl
bWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgICAgIHRoaXMuX3ZlcnRp
Y2FsT3ZlcnZpZXcgPSBudWxsOworICAgICAgICAgICAgdGhpcy5fb3ZlcnZpZXdHcmlkLml0ZW1z
R3JhcGhzRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgfQogICAg
IH0sCiAKQEAgLTE4MCw1NiArMTgzLDUzIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
UGFuZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgY2F0ZWdvcnkgPSBldmVudC5k
YXRhOwogICAgICAgICB0aGlzLl9jYXRlZ29yeUdyYXBoc1tjYXRlZ29yeS5uYW1lXS5kaW1tZWQg
PSBjYXRlZ29yeS5oaWRkZW47CisgICAgICAgIHRoaXMuX3VwZGF0ZSgpOwogICAgIH0sCiAKLSAg
ICB1cGRhdGU6IGZ1bmN0aW9uKHNob3dTaG9ydEV2ZW50cykKKyAgICBfdXBkYXRlOiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICB0aGlzLl9zaG93U2hvcnRFdmVudHMgPSBzaG93U2hvcnRFdmVu
dHM7Ci0gICAgICAgIHRoaXMuX292ZXJ2aWV3Q2FsY3VsYXRvci5yZXNldCgpOwotCi0gICAgICAg
IGZ1bmN0aW9uIHVwZGF0ZUJvdW5kYXJpZXMocmVjb3JkKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB0aGlzLl9vdmVydmlld0NhbGN1bGF0b3IudXBkYXRlQm91bmRhcmllcyhyZWNvcmQpOwotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHJlY29yZHMg
PSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5yb290UmVjb3JkKCkuY2hpbGRyZW47Ci0gICAgICAg
IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLmZvckFsbFJlY29yZHMocmVjb3JkcywgdXBkYXRl
Qm91bmRhcmllcy5iaW5kKHRoaXMpKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3JlZnJlc2hUaW1l
b3V0OwogCiAgICAgICAgIGlmICh0aGlzLl9oZWFwR3JhcGgudmlzaWJsZSkKLSAgICAgICAgICAg
IHRoaXMuX2hlYXBHcmFwaC51cGRhdGUocmVjb3Jkcyk7CisgICAgICAgICAgICB0aGlzLl9oZWFw
R3JhcGgudXBkYXRlKCk7CiAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3ZlcnRpY2FsT3ZlcnZpZXcp
Ci0gICAgICAgICAgICB0aGlzLl92ZXJ0aWNhbE92ZXJ2aWV3LnVwZGF0ZShyZWNvcmRzKTsKKyAg
ICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsT3ZlcnZpZXcudXBkYXRlKCk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNhdGVnb3J5U3RyaXBzKHJlY29yZHMpOworICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlQ2F0ZWdvcnlTdHJpcHMoKTsKKworICAgICAgICB0aGlzLl9vdmVy
dmlld0NhbGN1bGF0b3Iuc2V0V2luZG93KHRoaXMuX21vZGVsLm1pbmltdW1SZWNvcmRUaW1lKCks
IHRoaXMuX21vZGVsLm1heGltdW1SZWNvcmRUaW1lKCkpOwogICAgICAgICB0aGlzLl9vdmVydmll
d0dyaWQudXBkYXRlRGl2aWRlcnModHJ1ZSwgdGhpcy5fb3ZlcnZpZXdDYWxjdWxhdG9yKTsKICAg
ICB9LAogCi0gICAgX3VwZGF0ZUNhdGVnb3J5U3RyaXBzOiBmdW5jdGlvbihyZWNvcmRzKQorICAg
IF91cGRhdGVDYXRlZ29yeVN0cmlwczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgLy8gQ2xl
YXIgc3VtbWFyeSBiYXJzLgogICAgICAgICB2YXIgdGltZWxpbmVzID0ge307Ci0gICAgICAgIGZv
ciAodmFyIGNhdGVnb3J5IGluIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3JpZXMpIHsK
KyAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRp
b25Nb2RlbC5jYXRlZ29yaWVzKCk7CisgICAgICAgIGZvciAodmFyIGNhdGVnb3J5IGluIGNhdGVn
b3JpZXMpIHsKICAgICAgICAgICAgIHRpbWVsaW5lc1tjYXRlZ29yeV0gPSBbXTsKICAgICAgICAg
ICAgIHRoaXMuX2NhdGVnb3J5R3JhcGhzW2NhdGVnb3J5XS5jbGVhckNodW5rcygpOwogICAgICAg
ICB9CisgICAgICAgIHRoaXMuX292ZXJ2aWV3Q2FsY3VsYXRvci5zZXRXaW5kb3codGhpcy5fbW9k
ZWwubWluaW11bVJlY29yZFRpbWUoKSwgdGhpcy5fbW9kZWwubWF4aW11bVJlY29yZFRpbWUoKSk7
CiAKICAgICAgICAgLy8gQ3JlYXRlIHNwYXJzZSBhcnJheXMgd2l0aCAxMDEgY2VsbHMgZWFjaCB0
byBmaWxsIHdpdGggY2h1bmtzIGZvciBhIGdpdmVuIGNhdGVnb3J5LgogICAgICAgICBmdW5jdGlv
biBtYXJrUGVyY2VudGFnZXNGb3JSZWNvcmQocmVjb3JkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoISh0aGlzLl9zaG93U2hvcnRFdmVudHMgfHwgcmVjb3JkLmlzTG9uZygpKSkKKyAgICAg
ICAgICAgIHZhciBpc0xvbmcgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5kdXJhdGlvbihy
ZWNvcmQpID4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuc2hvcnRSZWNv
cmRUaHJlc2hvbGQ7CisgICAgICAgICAgICBpZiAoISh0aGlzLl9zaG93U2hvcnRFdmVudHMgfHwg
aXNMb25nKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB2YXIgcGVyY2Vu
dGFnZXMgPSB0aGlzLl9vdmVydmlld0NhbGN1bGF0b3IuY29tcHV0ZUJhckdyYXBoUGVyY2VudGFn
ZXMocmVjb3JkKTsKIAogICAgICAgICAgICAgdmFyIGVuZCA9IE1hdGgucm91bmQocGVyY2VudGFn
ZXMuZW5kKTsKLSAgICAgICAgICAgIHZhciBjYXRlZ29yeU5hbWUgPSByZWNvcmQuY2F0ZWdvcnku
bmFtZTsKKyAgICAgICAgICAgIHZhciBjYXRlZ29yeU5hbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVQcmVzZW50YXRpb25Nb2RlbC5jYXRlZ29yeUZvclJlY29yZChyZWNvcmQpLm5hbWU7CiAgICAg
ICAgICAgICBmb3IgKHZhciBqID0gTWF0aC5yb3VuZChwZXJjZW50YWdlcy5zdGFydCk7IGogPD0g
ZW5kOyArK2opCiAgICAgICAgICAgICAgICAgdGltZWxpbmVzW2NhdGVnb3J5TmFtZV1bal0gPSB0
cnVlOwogICAgICAgICB9CisgICAgICAgIHZhciByZWNvcmRzID0gdGhpcy5fbW9kZWwucmVjb3Jk
czsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuZm9yQWxsUmVjb3JkcyhyZWNv
cmRzLCBtYXJrUGVyY2VudGFnZXNGb3JSZWNvcmQuYmluZCh0aGlzKSk7CiAKICAgICAgICAgLy8g
Q29udmVydCBzcGFyc2UgYXJyYXlzIHRvIGNvbnRpbnVvdXMgc2VnbWVudHMsIHJlbmRlciBncmFw
aHMgZm9yIGVhY2guCi0gICAgICAgIGZvciAodmFyIGNhdGVnb3J5IGluIHRoaXMuX3ByZXNlbnRh
dGlvbk1vZGVsLmNhdGVnb3JpZXMpIHsKKyAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gY2F0
ZWdvcmllcykgewogICAgICAgICAgICAgdmFyIHRpbWVsaW5lID0gdGltZWxpbmVzW2NhdGVnb3J5
XTsKICAgICAgICAgICAgIHdpbmRvdy50aW1lbGluZVNhdmVkID0gdGltZWxpbmU7CiAgICAgICAg
ICAgICB2YXIgY2h1bmtTdGFydCA9IC0xOwpAQCAtMzAzLDEyICszMDMsMTIgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZSA9IHsKIAogICAgIHdpbmRvd1N0YXJ0
VGltZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3dpbmRvd1N0YXJ0
VGltZSB8fCB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5taW5pbXVtUmVjb3JkVGltZSgpOworICAg
ICAgICByZXR1cm4gdGhpcy5fd2luZG93U3RhcnRUaW1lIHx8IHRoaXMuX21vZGVsLm1pbmltdW1S
ZWNvcmRUaW1lKCk7CiAgICAgfSwKIAogICAgIHdpbmRvd0VuZFRpbWU6IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl93aW5kb3dFbmRUaW1lIDwgSW5maW5pdHkgPyB0aGlz
Ll93aW5kb3dFbmRUaW1lIDogdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwubWF4aW11bVJlY29yZFRp
bWUoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dpbmRvd0VuZFRpbWUgPCBJbmZpbml0eSA/IHRo
aXMuX3dpbmRvd0VuZFRpbWUgOiB0aGlzLl9tb2RlbC5tYXhpbXVtUmVjb3JkVGltZSgpOwogICAg
IH0sCiAKICAgICB3aW5kb3dMZWZ0OiBmdW5jdGlvbigpCkBAIC0zMjgsMTIgKzMyOCwyNSBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgdGhpcy5fd2luZG93U3RhcnRUaW1lID0gdGltZXMuc3RhcnRUaW1lOwogICAgICAgICAgICAg
dGhpcy5fd2luZG93RW5kVGltZSA9IHRpbWVzLmVuZFRpbWU7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICB2YXIgYWJzb2x1dGVNaW4gPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5taW5p
bXVtUmVjb3JkVGltZSgpOwotICAgICAgICAgICAgdmFyIGFic29sdXRlTWF4ID0gdGhpcy5fcHJl
c2VudGF0aW9uTW9kZWwubWF4aW11bVJlY29yZFRpbWUoKTsKKyAgICAgICAgICAgIHZhciBhYnNv
bHV0ZU1pbiA9IHRoaXMuX21vZGVsLm1pbmltdW1SZWNvcmRUaW1lKCk7CisgICAgICAgICAgICB2
YXIgYWJzb2x1dGVNYXggPSB0aGlzLl9tb2RlbC5tYXhpbXVtUmVjb3JkVGltZSgpOwogICAgICAg
ICAgICAgdGhpcy5fd2luZG93U3RhcnRUaW1lID0gYWJzb2x1dGVNaW4gKyAoYWJzb2x1dGVNYXgg
LSBhYnNvbHV0ZU1pbikgKiB0aGlzLndpbmRvd0xlZnQoKTsKICAgICAgICAgICAgIHRoaXMuX3dp
bmRvd0VuZFRpbWUgPSBhYnNvbHV0ZU1pbiArIChhYnNvbHV0ZU1heCAtIGFic29sdXRlTWluKSAq
IHRoaXMud2luZG93UmlnaHQoKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUuRXZlbnRzLldp
bmRvd0NoYW5nZWQpOworICAgIH0sCisKKyAgICBzZXRTaG93U2hvcnRFdmVudHM6IGZ1bmN0aW9u
KHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2hvd1Nob3J0RXZlbnRzID0gdmFsdWU7Cisg
ICAgICAgIHRoaXMuX3VwZGF0ZSgpOworICAgIH0sCisKKyAgICBfc2NoZWR1bGVSZWZyZXNoOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcmVmcmVzaFRpbWVvdXQpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3JlZnJlc2hUaW1lb3V0ID0gc2V0VGltZW91
dCh0aGlzLl91cGRhdGUuYmluZCh0aGlzKSwgMTAwKTsKICAgICB9CiB9CiAKQEAgLTU0NCwzNCAr
NTU3LDI1IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3Q2FsY3VsYXRvciA9IGZ1bmN0
aW9uKCkKIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3Q2FsY3VsYXRvci5wcm90b3R5cGUg
PSB7CiAgICAgY29tcHV0ZUJhckdyYXBoUGVyY2VudGFnZXM6IGZ1bmN0aW9uKHJlY29yZCkKICAg
ICB7Ci0gICAgICAgIHZhciBzdGFydCA9IChyZWNvcmQuc3RhcnRUaW1lIC0gdGhpcy5taW5pbXVt
Qm91bmRhcnkpIC8gdGhpcy5ib3VuZGFyeVNwYW4gKiAxMDA7Ci0gICAgICAgIHZhciBlbmQgPSAo
cmVjb3JkLmVuZFRpbWUgLSB0aGlzLm1pbmltdW1Cb3VuZGFyeSkgLyB0aGlzLmJvdW5kYXJ5U3Bh
biAqIDEwMDsKKyAgICAgICAgdmFyIHN0YXJ0ID0gKFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVs
LnN0YXJ0VGltZShyZWNvcmQpIC0gdGhpcy5taW5pbXVtQm91bmRhcnkpIC8gdGhpcy5ib3VuZGFy
eVNwYW4gKiAxMDA7CisgICAgICAgIHZhciBlbmQgPSAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuZW5kVGltZShyZWNvcmQpIC0gdGhpcy5taW5pbXVtQm91bmRhcnkpIC8gdGhpcy5ib3VuZGFy
eVNwYW4gKiAxMDA7CiAgICAgICAgIHJldHVybiB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZH07CiAg
ICAgfSwKIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBkZWxldGUgdGhp
cy5taW5pbXVtQm91bmRhcnk7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLm1heGltdW1Cb3VuZGFyeTsK
LSAgICB9LAotCi0gICAgdXBkYXRlQm91bmRhcmllczogZnVuY3Rpb24ocmVjb3JkKQorICAgIC8q
KgorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbWluaW11bQorICAgICAqIEBwYXJhbSB7bnVtYmVy
PX0gbWF4aW11bQorICAgICAqLworICAgIHNldFdpbmRvdzogZnVuY3Rpb24obWluaW11bSwgbWF4
aW11bSkKICAgICB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgaWYgKHR5
cGVvZiB0aGlzLm1pbmltdW1Cb3VuZGFyeSA9PT0gInVuZGVmaW5lZCIgfHwgcmVjb3JkLnN0YXJ0
VGltZSA8IHRoaXMubWluaW11bUJvdW5kYXJ5KSB7Ci0gICAgICAgICAgICB0aGlzLm1pbmltdW1C
b3VuZGFyeSA9IHJlY29yZC5zdGFydFRpbWU7Ci0gICAgICAgICAgICByZXN1bHQgPSB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tYXhpbXVtQm91bmRhcnkgPT09ICJ1
bmRlZmluZWQiIHx8IHJlY29yZC5lbmRUaW1lID4gdGhpcy5tYXhpbXVtQm91bmRhcnkpIHsKLSAg
ICAgICAgICAgIHRoaXMubWF4aW11bUJvdW5kYXJ5ID0gcmVjb3JkLmVuZFRpbWU7Ci0gICAgICAg
ICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIHRoaXMubWluaW11bUJvdW5kYXJ5ID0gbWluaW11bSA+PSAwID8gbWluaW11bSA6IHVu
ZGVmaW5lZDsKKyAgICAgICAgdGhpcy5tYXhpbXVtQm91bmRhcnkgPSBtYXhpbXVtID49IDAgPyBt
YXhpbXVtIDogdW5kZWZpbmVkOworICAgICAgICB0aGlzLmJvdW5kYXJ5U3BhbiA9IHRoaXMubWF4
aW11bUJvdW5kYXJ5IC0gdGhpcy5taW5pbXVtQm91bmRhcnk7CiAgICAgfSwKIAotICAgIGdldCBi
b3VuZGFyeVNwYW4oKQorICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1
cm4gdGhpcy5tYXhpbXVtQm91bmRhcnkgLSB0aGlzLm1pbmltdW1Cb3VuZGFyeTsKKyAgICAgICAg
dGhpcy5zZXRXaW5kb3coKTsKICAgICB9LAogCiAgICAgZm9ybWF0VGltZTogZnVuY3Rpb24odmFs
dWUpCkBAIC02NzMsOSArNjc3LDExIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFu
ZS5XaW5kb3dTZWxlY3Rvci5wcm90b3R5cGUgPSB7CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsfSBtb2RlbAogICovCi1XZWJJbnNw
ZWN0b3IuSGVhcEdyYXBoID0gZnVuY3Rpb24oKSB7CitXZWJJbnNwZWN0b3IuSGVhcEdyYXBoID0g
ZnVuY3Rpb24obW9kZWwpIHsKICAgICB0aGlzLl9jYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJjYW52YXMiKTsKKyAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOwogCiAgICAgdGhpcy5fbWF4
SGVhcFNpemVMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMu
X21heEhlYXBTaXplTGFiZWwuYWRkU3R5bGVDbGFzcygibWF4Iik7CkBAIC02OTMsNyArNjk5LDYg
QEAgV2ViSW5zcGVjdG9yLkhlYXBHcmFwaCA9IGZ1bmN0aW9uKCkgewogCiBXZWJJbnNwZWN0b3Iu
SGVhcEdyYXBoLnByb3RvdHlwZSA9IHsKICAgICBnZXQgZWxlbWVudCgpIHsKLSAgICAvLyAgICBy
ZXR1cm4gdGhpcy5fY2FudmFzOwogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKICAgICB9
LAogCkBAIC03MDksOCArNzE0LDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBHcmFwaC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICB9
LAogCi0gICAgdXBkYXRlOiBmdW5jdGlvbihyZWNvcmRzKQorICAgIHVwZGF0ZTogZnVuY3Rpb24o
KQogICAgIHsKKyAgICAgICAgdmFyIHJlY29yZHMgPSB0aGlzLl9tb2RlbC5yZWNvcmRzOwogICAg
ICAgICBpZiAoIXJlY29yZHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC03MjEs
MTYgKzcyNywxMSBAQCBXZWJJbnNwZWN0b3IuSGVhcEdyYXBoLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgY29uc3QgbG93ZXJPZmZzZXQgPSAzOwogICAgICAgICB2YXIgbWF4VXNlZEhlYXBTaXplID0g
MDsKICAgICAgICAgdmFyIG1pblVzZWRIZWFwU2l6ZSA9IDEwMDAwMDAwMDAwMDsKLSAgICAgICAg
dmFyIG1pblRpbWU7Ci0gICAgICAgIHZhciBtYXhUaW1lOworICAgICAgICB2YXIgbWluVGltZSA9
IHRoaXMuX21vZGVsLm1pbmltdW1SZWNvcmRUaW1lKCk7CisgICAgICAgIHZhciBtYXhUaW1lID0g
dGhpcy5fbW9kZWwubWF4aW11bVJlY29yZFRpbWUoKTs7CiAgICAgICAgIFdlYkluc3BlY3Rvci5U
aW1lbGluZVBhbmVsLmZvckFsbFJlY29yZHMocmVjb3JkcywgZnVuY3Rpb24ocikgewogICAgICAg
ICAgICAgbWF4VXNlZEhlYXBTaXplID0gTWF0aC5tYXgobWF4VXNlZEhlYXBTaXplLCByLnVzZWRI
ZWFwU2l6ZSB8fCBtYXhVc2VkSGVhcFNpemUpOwogICAgICAgICAgICAgbWluVXNlZEhlYXBTaXpl
ID0gTWF0aC5taW4obWluVXNlZEhlYXBTaXplLCByLnVzZWRIZWFwU2l6ZSB8fCBtaW5Vc2VkSGVh
cFNpemUpOwotCi0gICAgICAgICAgICBpZiAodHlwZW9mIG1pblRpbWUgPT09ICJ1bmRlZmluZWQi
IHx8IHIuc3RhcnRUaW1lIDwgbWluVGltZSkKLSAgICAgICAgICAgICAgICBtaW5UaW1lID0gci5z
dGFydFRpbWU7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIG1heFRpbWUgPT09ICJ1bmRlZmluZWQi
IHx8IHIuZW5kVGltZSA+IG1heFRpbWUpCi0gICAgICAgICAgICAgICAgbWF4VGltZSA9IHIuZW5k
VGltZTsKICAgICAgICAgfSk7CiAgICAgICAgIG1pblVzZWRIZWFwU2l6ZSA9IE1hdGgubWluKG1p
blVzZWRIZWFwU2l6ZSwgbWF4VXNlZEhlYXBTaXplKTsKIApAQCAtNzQzLDkgKzc0NCw5IEBAIFdl
Ykluc3BlY3Rvci5IZWFwR3JhcGgucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQYW5lbC5mb3JBbGxSZWNvcmRzKHJlY29yZHMsIGZ1bmN0aW9uKHIpIHsKICAgICAg
ICAgICAgIGlmICghci51c2VkSGVhcFNpemUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgIHZhciB4ID0gTWF0aC5yb3VuZCgoci5lbmRUaW1lIC0gbWluVGltZSkgKiB4RmFj
dG9yKTsKLSAgICAgICAgICAgICB2YXIgeSA9IE1hdGgucm91bmQoKHIudXNlZEhlYXBTaXplIC0g
bWluVXNlZEhlYXBTaXplKSAqIHlGYWN0b3IpOwotICAgICAgICAgICAgIGhpc3RvZ3JhbVt4XSA9
IE1hdGgubWF4KGhpc3RvZ3JhbVt4XSB8fCAwLCB5KTsKKyAgICAgICAgICAgIHZhciB4ID0gTWF0
aC5yb3VuZCgoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuZW5kVGltZShyKSAtIG1pblRpbWUp
ICogeEZhY3Rvcik7CisgICAgICAgICAgICB2YXIgeSA9IE1hdGgucm91bmQoKHIudXNlZEhlYXBT
aXplIC0gbWluVXNlZEhlYXBTaXplKSAqIHlGYWN0b3IpOworICAgICAgICAgICAgaGlzdG9ncmFt
W3hdID0gTWF0aC5tYXgoaGlzdG9ncmFtW3hdIHx8IDAsIHkpOwogICAgICAgICB9KTsKIAogICAg
ICAgICB2YXIgY3R4ID0gdGhpcy5fY2FudmFzLmdldENvbnRleHQoIjJkIik7CkBAIC03OTQsMTIg
Kzc5NSwxNCBAQCBXZWJJbnNwZWN0b3IuSGVhcEdyYXBoLnByb3RvdHlwZSA9IHsKIC8qKgogICog
QGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CisgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsfSBtb2RlbAogICovCi1XZWJJbnNwZWN0b3IuVGlt
ZWxpbmVWZXJ0aWNhbE92ZXJ2aWV3ID0gZnVuY3Rpb24oKSB7CitXZWJJbnNwZWN0b3IuVGltZWxp
bmVWZXJ0aWNhbE92ZXJ2aWV3ID0gZnVuY3Rpb24obW9kZWwpIHsKICAgICBXZWJJbnNwZWN0b3Iu
Vmlldy5jYWxsKHRoaXMpOwogICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwogICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAidGltZWxpbmUtdmVydGlj
YWwtb3ZlcnZpZXctYmFycyBmaWxsIjsKICAgICB0aGlzLnJlc2V0KCk7CisgICAgdGhpcy5fbW9k
ZWwgPSBtb2RlbDsKIH0KIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmlldy5w
cm90b3R5cGUgPSB7CkBAIC04MDksMTQgKzgxMiwxNSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVW
ZXJ0aWNhbE92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZnJhbWVNb2RlID0g
ZmFsc2U7CiAgICAgICAgIHRoaXMuX2JhclRpbWVzID0gW107CiAgICAgICAgIHRoaXMuX2xvbmdl
c3RCYXJUaW1lID0gMDsKKyAgICAgICAgdGhpcy5fYWdncmVnYXRlZFJlY29yZHMgPSBbXTsKICAg
ICB9LAogCi0gICAgdXBkYXRlOiBmdW5jdGlvbihhbGxSZWNvcmRzKQorICAgIHVwZGF0ZTogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHJlY29yZHMgPSBbXTsKICAgICAgICAgdmFyIGZy
YW1lQ291bnQgPSAwOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbFJlY29yZHMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciByZWNvcmQgPSBhbGxSZWNvcmRzW2ldOworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2FnZ3JlZ2F0ZWRSZWNvcmRzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICB2YXIgcmVjb3JkID0gdGhpcy5fYWdncmVnYXRlZFJlY29yZHNb
aV07CiAgICAgICAgICAgICBpZiAocmVjb3JkLmNhdGVnb3J5LmhpZGRlbikKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5CZWdpbkZyYW1lIHx8IChmcmFtZUNvdW50ICYm
IChpICsgMSA9PT0gcmVjb3Jkcy5sZW5ndGgpKSkKQEAgLTg0Myw2ICs4NDcsMjggQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuX2J1aWxkQmFyKHN0YXRpc3RpY3NbaV0s
IHNjYWxlKSwgcGFkZGluZyk7CiAgICAgfSwKIAorICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB0aGlzLl9hZ2dyZWdhdGVkUmVjb3JkcyA9IFtdOworICAgICAgICB2YXIg
cmVjb3JkcyA9IHRoaXMuX21vZGVsLnJlY29yZHM7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcmVjb3Jkcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZWRSZWNv
cmRzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZ3JlZ2F0ZWRSZWNvcmQocmVjb3Jk
c1tpXSkpOworCisgICAgICAgIHRoaXMudXBkYXRlKCk7CisgICAgICAgIHRoaXMuX21vZGVsLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzLlJlY29yZEFk
ZGVkLCB0aGlzLl9vblJlY29yZEFkZGVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fbW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5FdmVudHMuUmVjb3Jkc0Ns
ZWFyZWQsIHRoaXMucmVzZXQsIHRoaXMpOworICAgIH0sCisKKyAgICB3aWxsSGlkZTogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fbW9kZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNb2RlbC5FdmVudHMuUmVjb3JkQWRkZWQsIHRoaXMuX29uUmVjb3Jk
QWRkZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9tb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1vZGVsLkV2ZW50cy5SZWNvcmRzQ2xlYXJlZCwgdGhpcy5yZXNl
dCwgdGhpcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYklu
c3BlY3Rvci5UaW1lbGluZUFnZ3JlZ2F0ZWRSZWNvcmQ+fSByZWNvcmRzCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IG51bWJlck9mQmFycworICAgICAqLwogICAgIF9hZ2dyZWdhdGVGcmFtZXM6IGZ1
bmN0aW9uKHJlY29yZHMsIG51bWJlck9mQmFycykKICAgICB7CiAgICAgICAgIHZhciBzdGF0aXN0
aWNzID0gW107CkBAIC04NzQsNiArOTAwLDExIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVZlcnRp
Y2FsT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gc3RhdGlzdGljczsKICAg
ICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdncmVnYXRlZFJlY29yZD59IHJlY29yZHMKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3Rh
cnRJbmRleAorICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGF0aXN0aWNzCisgICAgICovCiAgICAg
X2FnZ3JlZ2F0ZUZyYW1lU3RhdGlzdGljczogZnVuY3Rpb24ocmVjb3Jkcywgc3RhcnRJbmRleCwg
c3RhdGlzdGljcykKICAgICB7CiAgICAgICAgIHZhciB0b3RhbFRpbWUgPSAwOwpAQCAtODgxLDEy
ICs5MTIsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmVydGljYWxPdmVydmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB2YXIgcmVjb3JkID0gcmVjb3Jkc1tpbmRleF07CiAgICAgICAg
ICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29y
ZFR5cGUuQmVnaW5GcmFtZSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHZh
ciBjYXRlZ29yaWVzID0gT2JqZWN0LmtleXMocmVjb3JkLmFnZ3JlZ2F0ZWRTdGF0cyk7CisgICAg
ICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IE9iamVjdC5rZXlzKHJlY29yZC50aW1lQnlDYXRlZ29y
eSk7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGVnb3JpZXMubGVuZ3RoOyAr
K2kpIHsKICAgICAgICAgICAgICAgICB2YXIgY2F0ZWdvcnkgPSBjYXRlZ29yaWVzW2ldOwogICAg
ICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0YXRpc3RpY3NbY2F0ZWdvcnldIHx8IDA7Ci0gICAg
ICAgICAgICAgICAgdmFsdWUgKz0gcmVjb3JkLmFnZ3JlZ2F0ZWRTdGF0c1tjYXRlZ29yeV07Ci0g
ICAgICAgICAgICAgICAgdG90YWxUaW1lICs9IHJlY29yZC5hZ2dyZWdhdGVkU3RhdHNbY2F0ZWdv
cnldOworICAgICAgICAgICAgICAgIHZhbHVlICs9IHJlY29yZC50aW1lQnlDYXRlZ29yeVtjYXRl
Z29yeV07CisgICAgICAgICAgICAgICAgdG90YWxUaW1lICs9IHJlY29yZC50aW1lQnlDYXRlZ29y
eVtjYXRlZ29yeV07CiAgICAgICAgICAgICAgICAgc3RhdGlzdGljc1tjYXRlZ29yeV0gPSB2YWx1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtODk2LDYgKzkyNywxMCBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVWZXJ0aWNhbE92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVBZ2dyZWdhdGVkUmVjb3JkPn0gcmVjb3JkcworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBu
dW1iZXJPZkJhcnMKKyAgICAgKi8KICAgICBfYWdncmVnYXRlUmVjb3JkczogZnVuY3Rpb24ocmVj
b3JkcywgbnVtYmVyT2ZCYXJzKQogICAgIHsKICAgICAgICAgdmFyIHN0YXRpc3RpY3MgPSBbXTsK
QEAgLTkwNSwxMiArOTQwLDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIGxhc3RJbmRleCA9IE1hdGgubWluKE1h
dGguZmxvb3IoKGJhck51bWJlciArIDEpICogdGhpcy5fcmVjb3Jkc1BlckJhciksIHJlY29yZHMu
bGVuZ3RoKTsKICAgICAgICAgICAgIGZvciAoKytjdXJyZW50UmVjb3JkOyBjdXJyZW50UmVjb3Jk
IDwgbGFzdEluZGV4OyArK2N1cnJlbnRSZWNvcmQpIHsKICAgICAgICAgICAgICAgICB2YXIgcmVj
b3JkID0gcmVjb3Jkc1tjdXJyZW50UmVjb3JkXTsKLSAgICAgICAgICAgICAgICBpZiAobG9uZ2Vz
dFJlY29yZC5lbmRUaW1lIC0gbG9uZ2VzdFJlY29yZC5zdGFydFRpbWUgPCByZWNvcmQuZW5kVGlt
ZSAtIHJlY29yZC5zdGFydFRpbWUpCisgICAgICAgICAgICAgICAgaWYgKGxvbmdlc3RSZWNvcmQu
ZHVyYXRpb24gPCByZWNvcmQuZHVyYXRpb24pCiAgICAgICAgICAgICAgICAgICAgIGxvbmdlc3RS
ZWNvcmQgPSByZWNvcmQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB2YXIgYmFyRW5kVGlt
ZSA9IHJlY29yZHNbY3VycmVudFJlY29yZCAtIDFdLmVuZFRpbWU7Ci0gICAgICAgICAgICBzdGF0
aXN0aWNzLnB1c2gobG9uZ2VzdFJlY29yZC5hZ2dyZWdhdGVkU3RhdHMpOwotICAgICAgICAgICAg
dGhpcy5fbG9uZ2VzdEJhclRpbWUgPSBNYXRoLm1heCh0aGlzLl9sb25nZXN0QmFyVGltZSwgbG9u
Z2VzdFJlY29yZC5lbmRUaW1lIC0gbG9uZ2VzdFJlY29yZC5zdGFydFRpbWUpOworICAgICAgICAg
ICAgc3RhdGlzdGljcy5wdXNoKGxvbmdlc3RSZWNvcmQudGltZUJ5Q2F0ZWdvcnkpOworICAgICAg
ICAgICAgdGhpcy5fbG9uZ2VzdEJhclRpbWUgPSBNYXRoLm1heCh0aGlzLl9sb25nZXN0QmFyVGlt
ZSwgbG9uZ2VzdFJlY29yZC5kdXJhdGlvbik7CiAgICAgICAgICAgICB0aGlzLl9iYXJUaW1lcy5w
dXNoKHsgc3RhcnRUaW1lOiBiYXJTdGFydFRpbWUsIGVuZFRpbWU6IGJhckVuZFRpbWUgfSk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIHN0YXRpc3RpY3M7CkBAIC05NTEsNiArOTg2LDExIEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgc3RhcnRUaW1lOiBmaXJzdEJhciA+PSB0aGlzLl9iYXJUaW1lcy5sZW5ndGggPyBJ
bmZpbml0eSA6IHRoaXMuX2JhclRpbWVzW2ZpcnN0QmFyXS5zdGFydFRpbWUsCiAgICAgICAgICAg
ICBlbmRUaW1lOiByaWdodE9mZnNldCArIHNuYXBUb1JpZ2h0VG9sZXJhbmNlUGl4ZWxzID4gd2lu
ZG93U3BhbiA/IEluZmluaXR5IDogdGhpcy5fYmFyVGltZXNbbGFzdEJhcl0uZW5kVGltZQogICAg
ICAgICB9CisgICAgfSwKKworICAgIF9vblJlY29yZEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZWRSZWNvcmRzLnB1c2gobmV3IFdlYkluc3BlY3Rv
ci5UaW1lbGluZUFnZ3JlZ2F0ZWRSZWNvcmQoZXZlbnQuZGF0YSkpOwogICAgIH0KIH0KIApAQCAt
OTU4LDYgKzk5OCwzOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVWZXJ0aWNhbE92ZXJ2aWV3LnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcgogCiAvKioKICAqIEBjb25z
dHJ1Y3RvcgorICogQHBhcmFtIHtPYmplY3R9IHJhd1JlY29yZAorICovCitXZWJJbnNwZWN0b3Iu
VGltZWxpbmVBZ2dyZWdhdGVkUmVjb3JkID0gZnVuY3Rpb24ocmF3UmVjb3JkKQoreworICAgIHRo
aXMudGltZUJ5Q2F0ZWdvcnkgPSB7fTsKKyAgICB0aGlzLmNhdGVnb3J5ID0gV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuY2F0ZWdvcnlGb3JSZWNvcmQocmF3UmVjb3JkKTsK
KyAgICB0aGlzLnR5cGUgPSByYXdSZWNvcmQudHlwZTsKKyAgICB0aGlzLl9hZ2dyZWdhdGVTdGF0
aXN0aWNzKHJhd1JlY29yZCk7CisgICAgdGhpcy5zdGFydFRpbWUgPSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVNb2RlbC5zdGFydFRpbWUocmF3UmVjb3JkKTsKKyAgICB0aGlzLmVuZFRpbWUgPSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNb2RlbC5lbmRUaW1lKHJhd1JlY29yZCk7CisgICAgdGhpcy5kdXJh
dGlvbiA9IHRoaXMuZW5kVGltZSAtIHRoaXMuc3RhcnRUaW1lOworfQorCitXZWJJbnNwZWN0b3Iu
VGltZWxpbmVBZ2dyZWdhdGVkUmVjb3JkLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge09iamVjdH0gcmF3UmVjb3JkCisgICAgICovCisgICAgX2FnZ3JlZ2F0ZVN0YXRpc3Rp
Y3M6IGZ1bmN0aW9uKHJhd1JlY29yZCkKKyAgICB7CisgICAgICAgIHZhciBjaGlsZHJlblRpbWUg
PSAwOworICAgICAgICB2YXIgY2hpbGRyZW4gPSByYXdSZWNvcmQuY2hpbGRyZW4gfHwgW107Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpICB7CisgICAg
ICAgICAgICB0aGlzLl9hZ2dyZWdhdGVTdGF0aXN0aWNzKGNoaWxkcmVuW2ldKTsKKyAgICAgICAg
ICAgIGNoaWxkcmVuVGltZSArPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5kdXJhdGlvbihj
aGlsZHJlbltpXSk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIGNhdGVnb3J5TmFtZSA9IFdlYklu
c3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnJlY29yZFN0eWxlKHJhd1JlY29yZCku
Y2F0ZWdvcnkubmFtZTsKKyAgICAgICAgdmFyIG93blRpbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVNb2RlbC5kdXJhdGlvbihyYXdSZWNvcmQpIC0gY2hpbGRyZW5UaW1lOworICAgICAgICB0aGlz
LnRpbWVCeUNhdGVnb3J5W2NhdGVnb3J5TmFtZV0gPSAodGhpcy50aW1lQnlDYXRlZ29yeVtjYXRl
Z29yeU5hbWVdIHx8IDApICsgb3duVGltZTsKKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVj
dG9yCiAgKi8KIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3TW9kZVNlbGVjdG9yID0gZnVu
Y3Rpb24oc2VsZWN0Q2FsbGJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggNzFjMjJlNGEzMDA4YWY1YjFhODQy
MjE4MTllMGVhNDI5NmY0NTNlNi4uMWU5ZDg2MDM1NDg1MTZiOGQwNmUyNDI3OGI1YWU4NWVlYjc5
YTdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGlt
ZWxpbmVQYW5lbC5qcwpAQCAtMzcsMTAgKzM3LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBh
bmVsID0gZnVuY3Rpb24oKQogICAgIFdlYkluc3BlY3Rvci5QYW5lbC5jYWxsKHRoaXMsICJ0aW1l
bGluZSIpOwogICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENTUygidGltZWxpbmVQYW5lbC5jc3Mi
KTsKIAorICAgIHRoaXMuX21vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsKCk7
CiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwoKTsKIAotICAgIHRoaXMuX292ZXJ2aWV3UGFuZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUodGhpcy5fcHJlc2VudGF0aW9uTW9kZWwpOwor
ICAgIHRoaXMuX292ZXJ2aWV3UGFuZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmll
d1BhbmUodGhpcy5fbW9kZWwpOwogICAgIHRoaXMuX292ZXJ2aWV3UGFuZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5FdmVudHMuV2luZG93Q2hhbmdl
ZCwgdGhpcy5fc2NoZWR1bGVSZWZyZXNoLmJpbmQodGhpcywgZmFsc2UpKTsKKyAgICB0aGlzLl9v
dmVydmlld1BhbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmll
d1BhbmUuRXZlbnRzLk1vZGVDaGFuZ2VkLCB0aGlzLl90aW1lbGluZXNPdmVydmlld01vZGVDaGFu
Z2VkLCB0aGlzKTsKIAogICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9vdmVydmll
d1BhbmUuZWxlbWVudCk7CiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRl
eHRtZW51IiwgdGhpcy5fY29udGV4dE1lbnUuYmluZCh0aGlzKSwgdHJ1ZSk7CkBAIC02MCw3ICs2
Miw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMu
X3RpbWVsaW5lTWVtb3J5U3BsaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhp
cy5fc3RhcnRTcGxpdHRlckRyYWdnaW5nLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLl90
aW1lbGluZU1lbW9yeVNwbGl0dGVyLmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOwogICAgIHRoaXMu
X21lbW9yeVN0YXRpc3RpY3MgPSBuZXcgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3ModGhp
cywgdGhpcy5zcGxpdFZpZXcucHJlZmVycmVkU2lkZWJhcldpZHRoKCkpOwotICAgIHRoaXMuX292
ZXJ2aWV3UGFuZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
UGFuZS5FdmVudHMuTW9kZUNoYW5nZWQsIHRoaXMuX3RpbWVsaW5lc092ZXJ2aWV3TW9kZUNoYW5n
ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5tZW1vcnlDb3VudGVyR3JhcGhz
SGVpZ2h0ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRpbmcoIm1lbW9yeUNvdW50
ZXJHcmFwaHNIZWlnaHQiLCAxNTApOwogCiAgICAgdmFyIGl0ZW1zVHJlZUVsZW1lbnQgPSBuZXcg
V2ViSW5zcGVjdG9yLlNpZGViYXJTZWN0aW9uVHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSRUNPUkRTIiksIHt9LCB0cnVlKTsKQEAgLTk0LDcgKzk1LDcgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fZXhwYW5kRWxlbWVudHMuaWQg
PSAib3JwaGFuLWV4cGFuZC1lbGVtZW50cyI7CiAgICAgdGhpcy5faXRlbXNHcmFwaHNFbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2V4cGFuZEVsZW1lbnRzKTsKIAotICAgIHRoaXMuX2NhbGN1bGF0
b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRvcih0aGlzLl9wcmVzZW50YXRp
b25Nb2RlbCk7CisgICAgdGhpcy5fY2FsY3VsYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxp
bmVDYWxjdWxhdG9yKHRoaXMuX21vZGVsKTsKICAgICB2YXIgc2hvcnRSZWNvcmRUaHJlc2hvbGRU
aXRsZSA9IE51bWJlci5zZWNvbmRzVG9TdHJpbmcoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwuc2hvcnRSZWNvcmRUaHJlc2hvbGQpOwogICAgIHRoaXMuX3Nob3dTaG9ydFJl
Y29yZHNUaXRsZVRleHQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdGhlIHJlY29yZHMg
dGhhdCBhcmUgc2hvcnRlciB0aGFuICVzIiwgc2hvcnRSZWNvcmRUaHJlc2hvbGRUaXRsZSk7CiAg
ICAgdGhpcy5faGlkZVNob3J0UmVjb3Jkc1RpdGxlVGV4dCA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiSGlkZSB0aGUgcmVjb3JkcyB0aGF0IGFyZSBzaG9ydGVyIHRoYW4gJXMiLCBzaG9ydFJlY29y
ZFRocmVzaG9sZFRpdGxlKTsKQEAgLTExMSwxMSArMTEyLDEzIEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsID0gZnVuY3Rpb24oKQogICAgIC8vIERpc2FibGUgc2hvcnQgZXZlbnRzIGZpbHRl
ciBieSBkZWZhdWx0LgogICAgIHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLnRvZ2dsZWQgPSB0cnVl
OwogICAgIHRoaXMuX3Nob3dTaG9ydEV2ZW50cyA9IHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLnRv
Z2dsZWQ7CisgICAgdGhpcy5fb3ZlcnZpZXdQYW5lLnNldFNob3dTaG9ydEV2ZW50cyh0aGlzLl9z
aG93U2hvcnRFdmVudHMpOworCiAgICAgdGhpcy5fdGltZVN0YW1wUmVjb3JkcyA9IFtdOwogICAg
IHRoaXMuX2V4cGFuZE9mZnNldCA9IDE1OwogCiAgICAgdGhpcy5fY3JlYXRlRmlsZVNlbGVjdG9y
KCk7Ci0gICAgdGhpcy5fbW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwoKTsK
KwogICAgIHRoaXMuX21vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TW9kZWwuRXZlbnRzLlJlY29yZEFkZGVkLCB0aGlzLl9vblRpbWVsaW5lRXZlbnRSZWNvcmRlZCwg
dGhpcyk7CiAgICAgdGhpcy5fbW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVNb2RlbC5FdmVudHMuUmVjb3Jkc0NsZWFyZWQsIHRoaXMuX29uUmVjb3Jkc0NsZWFyZWQs
IHRoaXMpOwogCkBAIC0yMjAsNyArMjIzLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
cHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuc3RhdHVzQmFyRmlsdGVycyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLnN0YXR1c0JhckZpbHRlcnMuY2xh
c3NOYW1lID0gInN0YXR1cy1iYXItaXRlbXMiOwotICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IHRo
aXMuX3ByZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3JpZXM7CisgICAgICAgIHZhciBjYXRlZ29yaWVz
ID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuY2F0ZWdvcmllcygpOwog
ICAgICAgICBmb3IgKHZhciBjYXRlZ29yeU5hbWUgaW4gY2F0ZWdvcmllcykgewogICAgICAgICAg
ICAgdmFyIGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjYXRlZ29yeU5hbWVdOwogICAgICAgICAgICAg
dGhpcy5zdGF0dXNCYXJGaWx0ZXJzLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVRpbWVsaW5lQ2F0
ZWdvcnlTdGF0dXNCYXJDaGVja2JveChjYXRlZ29yeSwgdGhpcy5fb25DYXRlZ29yeUNoZWNrYm94
Q2xpY2tlZC5iaW5kKHRoaXMsIGNhdGVnb3J5KSkpOwpAQCAtNDE2LDYgKzQxOSw3IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMu
dG9nZ2xlRmlsdGVyQnV0dG9uLnRvZ2dsZWQgPSAhdGhpcy50b2dnbGVGaWx0ZXJCdXR0b24udG9n
Z2xlZDsKICAgICAgICAgdGhpcy5fc2hvd1Nob3J0RXZlbnRzID0gdGhpcy50b2dnbGVGaWx0ZXJC
dXR0b24udG9nZ2xlZDsKKyAgICAgICAgdGhpcy5fb3ZlcnZpZXdQYW5lLnNldFNob3dTaG9ydEV2
ZW50cyh0aGlzLl9zaG93U2hvcnRFdmVudHMpOwogICAgICAgICB0aGlzLnRvZ2dsZUZpbHRlckJ1
dHRvbi5lbGVtZW50LnRpdGxlID0gdGhpcy5fc2hvd1Nob3J0RXZlbnRzID8gdGhpcy5faGlkZVNo
b3J0UmVjb3Jkc1RpdGxlVGV4dCA6IHRoaXMuX3Nob3dTaG9ydFJlY29yZHNUaXRsZVRleHQ7CiAg
ICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaCh0cnVlKTsKICAgICB9LApAQCAtNDk5LDcgKzUw
Myw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fcHJlc2VudGF0aW9uTW9kZWwucmVzZXQoKTsKICAgICAgICAgdGhpcy5fdGltZVN0YW1w
UmVjb3JkcyA9IFtdOwogICAgICAgICB0aGlzLl9ib3VuZGFyaWVzQXJlVmFsaWQgPSBmYWxzZTsK
LSAgICAgICAgdGhpcy5fb3ZlcnZpZXdQYW5lLnJlc2V0KCk7CiAgICAgICAgIHRoaXMuX2FkanVz
dFNjcm9sbFBvc2l0aW9uKDApOwogICAgICAgICB0aGlzLl9jbG9zZVJlY29yZERldGFpbHMoKTsK
ICAgICAgICAgdGhpcy5fYWxsUmVjb3Jkc0NvdW50ID0gMDsKQEAgLTU1Nyw4ICs1NjAsNiBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBkZWxl
dGUgdGhpcy5fcmVmcmVzaFRpbWVvdXQ7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9vdmVy
dmlld1BhbmUudXBkYXRlKHRoaXMuX3Nob3dTaG9ydEV2ZW50cyk7Ci0KICAgICAgICAgaWYgKCF0
aGlzLl9ib3VuZGFyaWVzQXJlVmFsaWQpCiAgICAgICAgICAgICB0aGlzLl9jYWxjdWxhdG9yLnNl
dFdpbmRvdyh0aGlzLl9vdmVydmlld1BhbmUud2luZG93U3RhcnRUaW1lKCksIHRoaXMuX292ZXJ2
aWV3UGFuZS53aW5kb3dFbmRUaW1lKCkpOwogCkBAIC03NTEsMTEgKzc1MiwxMSBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlBh
bmVsLnByb3RvdHlwZTsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWx9IHByZXNlbnRhdGlvbk1vZGVsCisgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsfSBtb2RlbAogICovCi1XZWJJbnNwZWN0
b3IuVGltZWxpbmVDYWxjdWxhdG9yID0gZnVuY3Rpb24ocHJlc2VudGF0aW9uTW9kZWwpCitXZWJJ
bnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yID0gZnVuY3Rpb24obW9kZWwpCiB7Ci0gICAgdGhp
cy5fcHJlc2VudGF0aW9uTW9kZWwgPSBwcmVzZW50YXRpb25Nb2RlbDsKKyAgICB0aGlzLl9tb2Rl
bCA9IG1vZGVsOwogfQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlw
ZSA9IHsKQEAgLTc5Myw3ICs3OTQsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9y
LnByb3RvdHlwZSA9IHsKIAogICAgIGZvcm1hdFRpbWU6IGZ1bmN0aW9uKHZhbHVlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIE51bWJlci5zZWNvbmRzVG9TdHJpbmcodmFsdWUgKyB0aGlzLm1pbmlt
dW1Cb3VuZGFyeSAtIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLm1pbmltdW1SZWNvcmRUaW1lKCkp
OworICAgICAgICByZXR1cm4gTnVtYmVyLnNlY29uZHNUb1N0cmluZyh2YWx1ZSArIHRoaXMubWlu
aW11bUJvdW5kYXJ5IC0gdGhpcy5fbW9kZWwubWluaW11bVJlY29yZFRpbWUoKSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lUHJlc2VudGF0aW9uTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuanMKaW5kZXggNWVmMzNjZjI2ZjU5YzQxOTY1
YjkxM2EwNmJiNzQwYjA3NWU2NDc4ZC4uMThmYzlmNmE1MTcyOGJiMTlmN2Y3MzUwNzQxODIyYzk1
MjhiZmQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
aW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qcwpAQCAtMzQsMTAgKzM0LDYg
QEAKICAqLwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwgPSBmdW5jdGlv
bigpCiB7Ci0gICAgdGhpcy5fY2F0ZWdvcmllcyA9IHt9OwotICAgIHRoaXMuX2FkZENhdGVnb3J5
KG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSgibG9hZGluZyIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiTG9hZGluZyIpLCAicmdiKDQ3LDEwMiwyMzYpIikpOwotICAgIHRoaXMuX2Fk
ZENhdGVnb3J5KG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSgic2NyaXB0aW5nIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHRpbmciKSwgInJnYigxNTcsMjMxLDExOSkiKSk7
Ci0gICAgdGhpcy5fYWRkQ2F0ZWdvcnkobmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5
KCJyZW5kZXJpbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbmRlcmluZyIpLCAicmdiKDE2
NCw2MCwyNTUpIikpOwogICAgIHRoaXMuX2xpbmtpZmllciA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUxpbmtpZmllcigpOwogICAgIHRoaXMuX2dsdWVSZWNv
cmRzID0gZmFsc2U7CiAgICAgdGhpcy5fZmlsdGVycyA9IFtdOwpAQCAtNDYsNiArNDIsNjUgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwgPSBmdW5jdGlvbigpCiAKIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnNob3J0UmVjb3JkVGhyZXNob2xk
ID0gMC4wMTU7CiAKK1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmNhdGVn
b3JpZXMgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNl
bnRhdGlvbk1vZGVsLl9jYXRlZ29yaWVzKQorICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuX2NhdGVnb3JpZXM7CisgICAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuX2NhdGVnb3JpZXMgPSB7CisgICAgICAgIGxvYWRpbmc6
IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSgibG9hZGluZyIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiTG9hZGluZyIpLCAicmdiKDQ3LDEwMiwyMzYpIiksCisgICAgICAgIHNjcmlw
dGluZzogbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5KCJzY3JpcHRpbmciLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlNjcmlwdGluZyIpLCAicmdiKDE1NywyMzEsMTE5KSIpLAorICAg
ICAgICByZW5kZXJpbmc6IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSgicmVuZGVy
aW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW5kZXJpbmciKSwgInJnYigxNjQsNjAsMjU1
KSIpCisgICAgfTsKKyAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9u
TW9kZWwuX2NhdGVnb3JpZXM7Cit9OworCisvKioKKyAqIEBwYXJhbSB7T2JqZWN0fSByZWNvcmQK
KyAqLworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucmVjb3JkU3R5bGUg
PSBmdW5jdGlvbihyZWNvcmQpIHsKKyAgICBpZiAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwuX3JlY29yZFN0eWxlc01hcCkKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLl9yZWNvcmRTdHlsZXNNYXBbcmVjb3JkLnR5cGVd
OworCisgICAgdmFyIHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVj
b3JkVHlwZTsKKyAgICB2YXIgY2F0ZWdvcmllcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNl
bnRhdGlvbk1vZGVsLmNhdGVnb3JpZXMoKTsKKyAgICAgICAgCisgICAgdmFyIHJlY29yZFN0eWxl
cyA9IHt9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5Sb290XSA9IHsgdGl0bGU6ICIj
cm9vdCIsIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0gfTsKKyAgICByZWNvcmRTdHls
ZXNbcmVjb3JkVHlwZXMuRXZlbnREaXNwYXRjaF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkV2ZW50IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAg
IHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5MYXlvdXRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJMYXlvdXQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07
CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlY2FsY3VsYXRlU3R5bGVzXSA9IHsgdGl0
bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjYWxjdWxhdGUgU3R5bGUiKSwgY2F0ZWdvcnk6
IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVz
LlBhaW50XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFpbnQiKSwgY2F0ZWdv
cnk6IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5
cGVzLkJlZ2luRnJhbWVdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGcmFtZSBT
dGFydCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sicmVuZGVyaW5nIl0gfTsKKyAgICByZWNvcmRT
dHlsZXNbcmVjb3JkVHlwZXMuUGFyc2VIVE1MXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUGFyc2UiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OworICAgIHJl
Y29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lckluc3RhbGxdID0geyB0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJJbnN0YWxsIFRpbWVyIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3Jp
cHRpbmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lclJlbW92ZV0gPSB7
IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbW92ZSBUaW1lciIpLCBjYXRlZ29yeTog
Y2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMu
VGltZXJGaXJlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZXIgRmlyZWQi
KSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVz
W3JlY29yZFR5cGVzLlhIUlJlYWR5U3RhdGVDaGFuZ2VdID0geyB0aXRsZTogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJYSFIgUmVhZHkgU3RhdGUgQ2hhbmdlIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVz
WyJzY3JpcHRpbmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5YSFJMb2FkXSA9
IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhSIExvYWQiKSwgY2F0ZWdvcnk6IGNh
dGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkV2
YWx1YXRlU2NyaXB0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZhbHVhdGUg
U2NyaXB0IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgIHJlY29y
ZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lU3RhbXBdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTdGFtcCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAg
ICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VTZW5kUmVxdWVzdF0gPSB7IHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbmQgUmVxdWVzdCIpLCBjYXRlZ29yeTogY2F0ZWdv
cmllc1sibG9hZGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNl
UmVjZWl2ZVJlc3BvbnNlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjZWl2
ZSBSZXNwb25zZSIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07CisgICAgcmVj
b3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlRmluaXNoXSA9IHsgdGl0bGU6IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRmluaXNoIExvYWRpbmciKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxv
YWRpbmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5GdW5jdGlvbkNhbGxdID0g
eyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGdW5jdGlvbiBDYWxsIiksIGNhdGVnb3J5
OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5SZXNvdXJjZVJlY2VpdmVkRGF0YV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlY2VpdmUgRGF0YSIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07CisgICAg
cmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkdDRXZlbnRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJHQyBFdmVudCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0g
fTsKKyAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuTWFya0RPTUNvbnRlbnRdID0geyB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJET01Db250ZW50IGV2ZW50IiksIGNhdGVnb3J5OiBj
YXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5N
YXJrTG9hZF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWQgZXZlbnQiKSwg
Y2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3Jl
Y29yZFR5cGVzLlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2NoZWR1bGUgUmVxdWVzdCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9h
ZGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlcXVlc3RBbmltYXRpb25G
cmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgQW5pbWF0aW9u
IEZyYW1lIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgIHJlY29y
ZFN0eWxlc1tyZWNvcmRUeXBlcy5DYW5jZWxBbmltYXRpb25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkNhbmNlbCBBbmltYXRpb24gRnJhbWUiKSwgY2F0ZWdvcnk6IGNh
dGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkZp
cmVBbmltYXRpb25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFuaW1h
dGlvbiBGcmFtZSBGaXJlZCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsK
KworICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLl9yZWNvcmRTdHls
ZXNNYXAgPSByZWNvcmRTdHlsZXM7CisgICAgcmV0dXJuIHJlY29yZFN0eWxlc1tyZWNvcmQudHlw
ZV07Cit9CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3J5
Rm9yUmVjb3JkID0gZnVuY3Rpb24ocmVjb3JkKQoreworICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucmVjb3JkU3R5bGUocmVjb3JkKS5jYXRlZ29y
eTsKK30KKwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBl
ID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwuRmlsdGVyfSBmaWx0ZXIKQEAgLTY5LDE3ICsxMjQsNiBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3RpbWVyUmVjb3JkcyA9IHt9OwogICAgICAgICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVS
ZWNvcmRzID0ge307CiAgICAgICAgIHRoaXMuX21pbmltdW1SZWNvcmRUaW1lID0gLTE7Ci0gICAg
ICAgIHRoaXMuX21heGltdW1SZWNvcmRUaW1lID0gLTE7Ci0gICAgfSwKLQotICAgIG1pbmltdW1S
ZWNvcmRUaW1lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbWluaW11
bVJlY29yZFRpbWU7Ci0gICAgfSwKLQotICAgIG1heGltdW1SZWNvcmRUaW1lOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbWF4aW11bVJlY29yZFRpbWU7CiAgICAgfSwK
IAogICAgIGFkZFJlY29yZDogZnVuY3Rpb24ocmVjb3JkLCBwYXJlbnRSZWNvcmQpCkBAIC04Nyw2
ICsxMzEsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHZhciBjb25uZWN0ZWRUb09sZFJlY29yZCA9IGZhbHNlOwogICAgICAg
ICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBl
OwogCisgICAgICAgIGlmICh0aGlzLl9taW5pbXVtUmVjb3JkVGltZSA9PT0gLTEgfHwgcmVjb3Jk
LnN0YXJ0VGltZSA8IHRoaXMuX21pbmltdW1SZWNvcmRUaW1lKQorICAgICAgICAgICAgdGhpcy5f
bWluaW11bVJlY29yZFRpbWUgPSByZWNvcmQuc3RhcnRUaW1lOworCiAgICAgICAgIGlmIChyZWNv
cmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuTWFya0RPTUNvbnRlbnQgfHwgcmVjb3JkLnR5cGUgPT09
IHJlY29yZFR5cGVzLk1hcmtMb2FkKQogICAgICAgICAgICAgcGFyZW50UmVjb3JkID0gbnVsbDsg
Ly8gTm8gYmFyIGVudHJ5IGZvciBsb2FkIGV2ZW50cy4KICAgICAgICAgZWxzZSB7CkBAIC0xMTgs
NyArMTY1LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdmFyIGZvcm1hdHRlZFJlY29yZCA9IG5ldyBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQodGhpcywgcmVjb3Jk
LCBwYXJlbnRSZWNvcmQsIHNjcmlwdERldGFpbHMpOwotICAgICAgICB0aGlzLl91cGRhdGVCb3Vu
ZGFyaWVzKGZvcm1hdHRlZFJlY29yZCk7ICAgIAogCiAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9
PT0gcmVjb3JkVHlwZXMuTWFya0RPTUNvbnRlbnQgfHwgcmVjb3JkLnR5cGUgPT09IHJlY29yZFR5
cGVzLk1hcmtMb2FkKQogICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFJlY29yZDsKQEAgLTEy
OSw3ICsxNzUsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5Db3VudDsgKytp
KQogICAgICAgICAgICAgdGhpcy5hZGRSZWNvcmQoY2hpbGRyZW5baV0sIGZvcm1hdHRlZFJlY29y
ZCk7CiAKLSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmNhbGN1bGF0ZUFnZ3JlZ2F0ZWRTdGF0cyh0
aGlzLl9jYXRlZ29yaWVzKTsKKyAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmNhbGN1bGF0ZUFnZ3Jl
Z2F0ZWRTdGF0cyhXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5jYXRlZ29y
aWVzKCkpOwogCiAgICAgICAgIGlmIChjb25uZWN0ZWRUb09sZFJlY29yZCkgewogICAgICAgICAg
ICAgcmVjb3JkID0gZm9ybWF0dGVkUmVjb3JkOwpAQCAtMTQ4LDE0ICsxOTQsNiBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiBmb3JtYXR0ZWRSZWNvcmQ7CiAgICAgfSwKIAotICAgIF91cGRhdGVCb3VuZGFyaWVzOiBm
dW5jdGlvbihmb3JtYXR0ZWRSZWNvcmQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fbWluaW11
bVJlY29yZFRpbWUgPT09IC0xIHx8IGZvcm1hdHRlZFJlY29yZC5zdGFydFRpbWUgPCB0aGlzLl9t
aW5pbXVtUmVjb3JkVGltZSkKLSAgICAgICAgICAgIHRoaXMuX21pbmltdW1SZWNvcmRUaW1lID0g
Zm9ybWF0dGVkUmVjb3JkLnN0YXJ0VGltZTsKLSAgICAgICAgaWYgKHRoaXMuX21heGltdW1SZWNv
cmRUaW1lID09PSAtMSB8fCBmb3JtYXR0ZWRSZWNvcmQuZW5kVGltZSA+IHRoaXMuX21heGltdW1S
ZWNvcmRUaW1lKQotICAgICAgICAgICAgdGhpcy5fbWF4aW11bVJlY29yZFRpbWUgPSBmb3JtYXR0
ZWRSZWNvcmQuZW5kVGltZTsKLSAgICB9LAotCiAgICAgX2ZpbmRQYXJlbnRSZWNvcmQ6IGZ1bmN0
aW9uKHJlY29yZCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZ2x1ZVJlY29yZHMpCkBAIC0x
ODAsNTcgKzIxOCw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZ2x1ZVJlY29yZHMgPSBnbHVlOwogICAgIH0sCiAK
LSAgICBnZXQgY2F0ZWdvcmllcygpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY2F0ZWdv
cmllczsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVDYXRlZ29yeX0gY2F0ZWdvcnkKLSAgICAgKi8KLSAgICBfYWRkQ2F0ZWdvcnk6IGZ1bmN0
aW9uKGNhdGVnb3J5KQotICAgIHsKLSAgICAgICAgdGhpcy5fY2F0ZWdvcmllc1tjYXRlZ29yeS5u
YW1lXSA9IGNhdGVnb3J5OwotICAgIH0sCi0KLSAgICBnZXQgX3JlY29yZFN0eWxlcygpCi0gICAg
ewotICAgICAgICBpZiAoIXRoaXMuX3JlY29yZFN0eWxlc0FycmF5KSB7Ci0gICAgICAgICAgICB2
YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlOwot
ICAgICAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSB0aGlzLl9jYXRlZ29yaWVzOwotCi0gICAgICAg
ICAgICB2YXIgcmVjb3JkU3R5bGVzID0ge307Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVj
b3JkVHlwZXMuUm9vdF0gPSB7IHRpdGxlOiAiI3Jvb3QiLCBjYXRlZ29yeTogY2F0ZWdvcmllc1si
bG9hZGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRXZlbnRE
aXNwYXRjaF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2ZW50IiksIGNhdGVn
b3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVz
W3JlY29yZFR5cGVzLkxheW91dF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxh
eW91dCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sicmVuZGVyaW5nIl0gfTsKLSAgICAgICAgICAg
IHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZWNhbGN1bGF0ZVN0eWxlc10gPSB7IHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2FsY3VsYXRlIFN0eWxlIiksIGNhdGVnb3J5OiBjYXRl
Z29yaWVzWyJyZW5kZXJpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5
cGVzLlBhaW50XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFpbnQiKSwgY2F0
ZWdvcnk6IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHls
ZXNbcmVjb3JkVHlwZXMuQmVnaW5GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkZyYW1lIFN0YXJ0IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJyZW5kZXJpbmciXSB9Owot
ICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlBhcnNlSFRNTF0gPSB7IHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhcnNlIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJs
b2FkaW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lcklu
c3RhbGxdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbnN0YWxsIFRpbWVyIiks
IGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3Jk
U3R5bGVzW3JlY29yZFR5cGVzLlRpbWVyUmVtb3ZlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUmVtb3ZlIFRpbWVyIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmci
XSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVyRmlyZV0gPSB7
IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVyIEZpcmVkIiksIGNhdGVnb3J5OiBj
YXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29y
ZFR5cGVzLlhIUlJlYWR5U3RhdGVDaGFuZ2VdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJYSFIgUmVhZHkgU3RhdGUgQ2hhbmdlIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3Jp
cHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlhIUkxvYWRd
ID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJYSFIgTG9hZCIpLCBjYXRlZ29yeTog
Y2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNv
cmRUeXBlcy5FdmFsdWF0ZVNjcmlwdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkV2YWx1YXRlIFNjcmlwdCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsK
LSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lU3RhbXBdID0geyB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFtcCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1si
c2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNv
dXJjZVNlbmRSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VuZCBS
ZXF1ZXN0IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0gfTsKLSAgICAgICAgICAg
IHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZV0gPSB7IHRp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2VpdmUgUmVzcG9uc2UiKSwgY2F0ZWdvcnk6
IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29y
ZFR5cGVzLlJlc291cmNlRmluaXNoXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RmluaXNoIExvYWRpbmciKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OwotICAg
ICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkZ1bmN0aW9uQ2FsbF0gPSB7IHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9uIENhbGwiKSwgY2F0ZWdvcnk6IGNhdGVn
b3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlw
ZXMuUmVzb3VyY2VSZWNlaXZlZERhdGFdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZWNlaXZlIERhdGEiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OwotICAg
ICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkdDRXZlbnRdID0geyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJHQyBFdmVudCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2Ny
aXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5NYXJrRE9N
Q29udGVudF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRPTUNvbnRlbnQgZXZl
bnQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICBy
ZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuTWFya0xvYWRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJMb2FkIGV2ZW50IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmci
XSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlNjaGVkdWxlUmVzb3Vy
Y2VSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NoZWR1bGUgUmVx
dWVzdCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07Ci0gICAgICAgICAgICBy
ZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVxdWVzdEFuaW1hdGlvbkZyYW1lXSA9IHsgdGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBBbmltYXRpb24gRnJhbWUiKSwgY2F0ZWdv
cnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNb
cmVjb3JkVHlwZXMuQ2FuY2VsQW5pbWF0aW9uRnJhbWVdID0geyB0aXRsZTogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDYW5jZWwgQW5pbWF0aW9uIEZyYW1lIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVz
WyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkZp
cmVBbmltYXRpb25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFuaW1h
dGlvbiBGcmFtZSBGaXJlZCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsK
LSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc0FycmF5ID0gcmVjb3JkU3R5bGVzOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRTdHlsZXNBcnJheTsKLSAgICB9LAot
CiAgICAgZmlsdGVyZWRSZWNvcmRzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBmdW5jdGlv
biBmaWx0ZXIocmVjb3JkKQpAQCAtMjkxLDIwICsyNzgsMjEgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkID0gZnVuY3Rpb24ocHJlc2VudGF0aW9uTW9kZWws
IHJlY28KICAgICB0aGlzLl9saW5raWZpZXIgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5fbGlu
a2lmaWVyOwogICAgIHRoaXMuX2FnZ3JlZ2F0ZWRTdGF0cyA9IFtdOwogICAgIHZhciByZWNvcmRU
eXBlcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGU7Ci0gICAgdmFyIHN0
eWxlID0gcHJlc2VudGF0aW9uTW9kZWwuX3JlY29yZFN0eWxlc1tyZWNvcmQudHlwZV07CisgICAg
dmFyIHN0eWxlID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucmVjb3Jk
U3R5bGUocmVjb3JkKTsKICAgICB0aGlzLnBhcmVudCA9IHBhcmVudFJlY29yZDsKICAgICBpZiAo
cGFyZW50UmVjb3JkKQogICAgICAgICBwYXJlbnRSZWNvcmQuY2hpbGRyZW4ucHVzaCh0aGlzKTsK
ICAgICB0aGlzLmNhdGVnb3J5ID0gc3R5bGUuY2F0ZWdvcnk7CiAgICAgdGhpcy50aXRsZSA9IHN0
eWxlLnRpdGxlOwotICAgIHRoaXMuc3RhcnRUaW1lID0gcmVjb3JkLnN0YXJ0VGltZSAvIDEwMDA7
CisgICAgdGhpcy5zdGFydFRpbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5zdGFydFRp
bWUocmVjb3JkKTsKICAgICB0aGlzLmRhdGEgPSByZWNvcmQuZGF0YTsKICAgICB0aGlzLnR5cGUg
PSByZWNvcmQudHlwZTsKLSAgICB0aGlzLmVuZFRpbWUgPSAodHlwZW9mIHJlY29yZC5lbmRUaW1l
ICE9PSAidW5kZWZpbmVkIikgPyByZWNvcmQuZW5kVGltZSAvIDEwMDAgOiB0aGlzLnN0YXJ0VGlt
ZTsKKyAgICB0aGlzLmVuZFRpbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5lbmRUaW1l
KHJlY29yZCk7CiAgICAgdGhpcy5fc2VsZlRpbWUgPSB0aGlzLmVuZFRpbWUgLSB0aGlzLnN0YXJ0
VGltZTsKICAgICB0aGlzLl9sYXN0Q2hpbGRFbmRUaW1lID0gdGhpcy5lbmRUaW1lOwogICAgIHRo
aXMuX2luaXRpYXRvck9mZnNldCA9IChwYXJlbnRSZWNvcmQgJiYgcGFyZW50UmVjb3JkICE9PSBw
cmVzZW50YXRpb25Nb2RlbC5fcm9vdFJlY29yZCkgPwogICAgICAgICBwYXJlbnRSZWNvcmQuX2lu
aXRpYXRvck9mZnNldCArIHRoaXMuc3RhcnRUaW1lIC0gcGFyZW50UmVjb3JkLnN0YXJ0VGltZSA6
IDA7CisgICAgdGhpcy5fc3RhcnRUaW1lT2Zmc2V0ID0gdGhpcy5zdGFydFRpbWUgLSBwcmVzZW50
YXRpb25Nb2RlbC5fbWluaW11bVJlY29yZFRpbWU7CiAKICAgICBpZiAocmVjb3JkLnN0YWNrVHJh
Y2UgJiYgcmVjb3JkLnN0YWNrVHJhY2UubGVuZ3RoKQogICAgICAgICB0aGlzLnN0YWNrVHJhY2Ug
PSByZWNvcmQuc3RhY2tUcmFjZTsKQEAgLTQzMiw3ICs0MjAsNyBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlID0gewogICAgICAgICAgICAg
Y29udGVudEhlbHBlci5fYXBwZW5kRWxlbWVudFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFn
Z3JlZ2F0ZWQgVGltZSIpLCB0aGlzLl9nZW5lcmF0ZUFnZ3JlZ2F0ZWRJbmZvKCkpOwogICAgICAg
ICB9CiAgICAgICAgIHZhciB0ZXh0ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyAoYXQgJXMp
IiwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9sYXN0Q2hpbGRFbmRUaW1lIC0gdGhpcy5z
dGFydFRpbWUsIHRydWUpLAotICAgICAgICAgICAgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlz
LnN0YXJ0VGltZSAtIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLm1pbmltdW1SZWNvcmRUaW1lKCkp
KTsKKyAgICAgICAgICAgIE51bWJlci5zZWNvbmRzVG9TdHJpbmcodGhpcy5fc3RhcnRUaW1lT2Zm
c2V0KSk7CiAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJEdXJhdGlvbiIpLCB0ZXh0KTsKIAogICAgICAgICBjb25zdCByZWNvcmRUeXBl
cyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGU7Cg==
</data>
<flag name="review"
          id="138547"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>