<?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>150703</bug_id>
          
          <creation_ts>2015-10-29 18:59:46 -0700</creation_ts>
          <short_desc>Web Inspector: Convert TimelineRuler to View base class</short_desc>
          <delta_ts>2015-11-05 13:18:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>149186</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1137747</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-29 18:59:46 -0700</bug_when>
    <thetext>* SUMMARY
Convert TimelineRuler to View base class. TimelineRuler can update markers and selection separately from the rest of its content, which may require additional layout logic in View.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137749</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-10-29 19:00:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/23326721&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139075</commentid>
    <comment_count>2</comment_count>
      <attachid>264722</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-03 14:16:55 -0800</bug_when>
    <thetext>Created attachment 264722
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139106</commentid>
    <comment_count>3</comment_count>
      <attachid>264722</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-11-03 14:56:30 -0800</bug_when>
    <thetext>Comment on attachment 264722
[Patch] Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineRuler.js:340
&gt; -        var visibleWidth = this._recalculate();
&gt; +        let visibleWidth = this.element.clientWidth;

Why this change?

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:44
&gt; +    get isLayoutPending()

This should be a function if it is prefixed with &quot;is&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139123</commentid>
    <comment_count>4</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-03 15:28:38 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 264722 [details]
&gt; [Patch] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264722&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/TimelineRuler.js:340
&gt; &gt; -        var visibleWidth = this._recalculate();
&gt; &gt; +        let visibleWidth = this.element.clientWidth;
&gt; 
&gt; Why this change?

I think this was an error.

&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:44
&gt; &gt; +    get isLayoutPending()
&gt; 
&gt; This should be a function if it is prefixed with &quot;is&quot;.

What about changing to &quot;has&quot;? We prefix getters with both &quot;is&quot; and &quot;has&quot;, the latter being slightly more common.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139127</commentid>
    <comment_count>5</comment_count>
      <attachid>264740</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-03 15:33:57 -0800</bug_when>
    <thetext>Created attachment 264740
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139155</commentid>
    <comment_count>6</comment_count>
      <attachid>264740</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-11-03 16:00:04 -0800</bug_when>
    <thetext>Comment on attachment 264740
[Patch] Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:44
&gt; +    get hasPendingLayout()

Getters should have no verb prefix, including &quot;has&quot;. Properties should be about the state of the object, not a question being asked. A better property name would be &quot;layoutScheduled&quot; or &quot;layoutPending&quot;. Otherwise this should be a function with an &quot;is&quot; or &quot;has&quot; prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139160</commentid>
    <comment_count>7</comment_count>
      <attachid>264747</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-03 16:07:51 -0800</bug_when>
    <thetext>Created attachment 264747
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139695</commentid>
    <comment_count>8</comment_count>
      <attachid>264747</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-05 11:55:33 -0800</bug_when>
    <thetext>Comment on attachment 264747
[Patch] Proposed Fix

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

r=me, nice work

&gt; Source/WebInspectorUI/ChangeLog:7
&gt; +

Please add a summary (from the bug is fine).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139711</commentid>
    <comment_count>9</comment_count>
      <attachid>264878</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-05 12:30:13 -0800</bug_when>
    <thetext>Created attachment 264878
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139721</commentid>
    <comment_count>10</comment_count>
      <attachid>264878</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-05 13:18:36 -0800</bug_when>
    <thetext>Comment on attachment 264878
[Patch] Proposed Fix

Clearing flags on attachment: 264878

Committed r192070: &lt;http://trac.webkit.org/changeset/192070&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139722</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-05 13:18:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264722</attachid>
            <date>2015-11-03 14:16:55 -0800</date>
            <delta_ts>2015-11-03 15:33:54 -0800</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-150703-20151103141608.patch</filename>
            <type>text/plain</type>
            <size>30455</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxOTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
YThjZjk0MWQzNWM3YzVmOTgzYjA0OWFlY2JkMTU0OGEzZGU1ZWEzLi45Mjg3NmRiNzlhZGI1ZDJl
ZTY1YTc0M2NlYmQzZjJiYWNiZGFhNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1OSBAQAogMjAxNS0xMS0wMyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBUaW1lbGluZVJ1bGVyIHRvIFZpZXcg
YmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwNzAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3KToKKyAgICAgICAgQWRkIHJ1bGVy
IGFzIGEgc3Vidmlldy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmll
dy5wcm90b3R5cGUubGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgU2VwYXJhdGUgcnVsZXIgbGF5
b3V0IG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rp
bWVsaW5lUnVsZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuc2V0IGFsbG93c0Ns
aXBwZWRMYWJlbHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90
eXBlLnNldCBmb3JtYXRMYWJlbENhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZS5zZXQgYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5zZXQgemVyb1RpbWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLnNldCBzdGFydFRp
bWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLnNldCBk
dXJhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUu
Z2V0IGVuZFRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90
eXBlLnNldCBlbmRUaW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnBy
b3RvdHlwZS5nZXQgc2Vjb25kc1BlclBpeGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZS5zZXQgc2Vjb25kc1BlclBpeGVsKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS51cGRhdGVMYXlvdXRJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUubmVlZHNMYXlvdXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLmxheW91dCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuX25lZWRzTWFy
a2VyTGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlw
ZS5fbmVlZHNTZWxlY3Rpb25MYXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIucHJvdG90eXBlLl9yZWNhbGN1bGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlci5wcm90b3R5cGUuX3VwZGF0ZU1hcmtlcnMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl91cGRhdGVTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZURvd24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9oYW5kbGVNb3Vz
ZU1vdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9o
YW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3Rv
dHlwZS5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VEb3duKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VN
b3ZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5faGFu
ZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VVcCk6CisgICAgICAgIFJlbmFtZWQgbWV0aG9kcyB0byBt
YXRjaCBuZXcgVmlldy5wcm90b3R5cGUgbWV0aG9kcyBhbmQgY2xlYW5lZCB1cAorICAgICAgICBz
b21lIGNvZGUgdG8gdXNlIGxldCwgZm9yLi4ub2YuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICBObyBs
b25nZXIgbmVlZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90
eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZWQgdG8gbGF5b3V0LCBv
dmVycmlkZXMgVmlldy5wcm90b3R5cGUubGF5b3V0LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIucHJvdG90eXBlLl9uZWVkc0xheW91dCk6IERlbGV0ZWQuCisgICAgICAgIFJl
bmFtZWQgdG8gbmVlZHNMYXlvdXQsIG92ZXJyaWRlcyBWaWV3LnByb3RvdHlwZS5uZWVkc0xheW91
dC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5fbmVlZHNN
YXJrZXJMYXlvdXQudXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZS5fbmVlZHNTZWxlY3Rpb25MYXlvdXQudXBkYXRlKTogRGVsZXRl
ZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5nZXQgaXNMYXlvdXRQZW5kaW5nKToKKyAgICAgICAg
QWRkZWQgZ2V0dGVyIHRvIGNoZWNrIGZvciBwZW5kaW5nIGxheW91dC4KKworMjAxNS0xMS0wMyAg
TWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ3JlYXRlIFZpZXcgYmFzZSBjbGFzcywgcmVmYWN0b3Igc29tZSBjb3JlIHZpZXcgY2xhc3Nl
cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5MTg2
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lUnVsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UaW1lbGluZVJ1bGVyLmpzCmluZGV4IDIzZGQyMGU3OWJlMTE2ZmU1YjEzYTA1NGYxNDli
NzgzNzQzMzAwZDIuLjk5MzE0Y2IwYjE3ZjZiYmExM2E3NDdmNGMyMGY3YWUwYzdjNzNhZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lUnVsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVSdWxlci5qcwpAQCAtMjMsMjIgKzIzLDIxIEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBj
bGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICBzdXBlcigpOwog
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0aW1lbGluZS1ydWxlciIpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGltZWxpbmUtcnVsZXIiKTsKIAog
ICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CiAgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaGVhZGVyIik7
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxlbWVudCk7
CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJFbGVtZW50KTsK
IAogICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJtYXJr
ZXJzIik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFya2Vyc0Vs
ZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFya2Vyc0Vs
ZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX3plcm9UaW1lID0gMDsKICAgICAgICAgdGhpcy5fc3Rh
cnRUaW1lID0gMDsKQEAgLTU5LDExICs1OCw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVy
ID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAg
IC8vIFB1YmxpYwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IGFsbG93c0NsaXBwZWRMYWJlbHMoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93c0NsaXBwZWRMYWJlbHM7CkBAIC03Niw3ICs3
MCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICB0aGlzLl9hbGxvd3NDbGlwcGVk
TGFiZWxzID0geCB8fCBmYWxzZTsKIAotICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOworICAg
ICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgc2V0IGZvcm1hdExhYmVsQ2Fs
bGJhY2soeCkKQEAgLTg4LDcgKzgyLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBj
bGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAg
IHRoaXMuX2Zvcm1hdExhYmVsQ2FsbGJhY2sgPSB4IHx8IG51bGw7CiAKLSAgICAgICAgdGhpcy5f
bmVlZHNMYXlvdXQoKTsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogICAgIH0KIAogICAg
IGdldCBhbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24oKQpAQCAtMTA1LDcgKzk5LDcgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogCiAgICAgICAgIGlmICh4KSB7CiAgICAgICAgICAgICB0aGlzLl9tb3Vz
ZURvd25FdmVudExpc3RlbmVyID0gdGhpcy5faGFuZGxlTW91c2VEb3duLmJpbmQodGhpcyk7Ci0g
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRo
aXMuX21vdXNlRG93bkV2ZW50TGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93bkV2ZW50TGlzdGVuZXIp
OwogCiAgICAgICAgICAgICB0aGlzLl9sZWZ0U2hhZGVkQXJlYUVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgIHRoaXMuX2xlZnRTaGFkZWRBcmVhRWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJzaGFkZWQtYXJlYSIpOwpAQCAtMTMwLDcgKzEyNCw3IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICAgICAgdGhpcy5fbmVlZHNTZWxlY3Rpb25MYXlv
dXQoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duRXZlbnRMaXN0ZW5lcik7
CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3du
IiwgdGhpcy5fbW91c2VEb3duRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fbW91c2VEb3duRXZlbnRMaXN0ZW5lcjsKIAogICAgICAgICAgICAgdGhpcy5fbGVmdFNoYWRl
ZEFyZWFFbGVtZW50LnJlbW92ZSgpOwpAQCAtMTY5LDcgKzE2Myw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKIAogICAgICAgICB0aGlzLl96ZXJvVGltZSA9IHggfHwgMDsKIAotICAgICAgICB0aGlz
Ll9uZWVkc0xheW91dCgpOworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAg
ICAgZ2V0IHN0YXJ0VGltZSgpCkBAIC0xODcsNyArMTgxLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogICAgICAgICBpZiAoIWlzTmFOKHRoaXMuX2R1cmF0aW9uKSkKICAgICAgICAgICAgIHRoaXMu
X2VuZFRpbWUgPSB0aGlzLl9zdGFydFRpbWUgKyB0aGlzLl9kdXJhdGlvbjsKIAotICAgICAgICB0
aGlzLl9uZWVkc0xheW91dCgpOworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQog
CiAgICAgZ2V0IGR1cmF0aW9uKCkKQEAgLTIxMCwxMiArMjA0LDEyIEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLl9lbmRUaW1lUGlubmVkID0g
ZmFsc2U7CiAKLSAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKKyAgICAgICAgdGhpcy5uZWVk
c0xheW91dCgpOwogICAgIH0KIAogICAgIGdldCBlbmRUaW1lKCkKICAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5fZW5kVGltZVBpbm5lZCAmJiB0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyKQorICAgICAgICBpZiAoIXRoaXMuX2VuZFRpbWVQaW5uZWQgJiYgdGhpcy5pc0xheW91
dFBlbmRpbmcpCiAgICAgICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZSgpOwogICAgICAgICByZXR1
cm4gdGhpcy5fZW5kVGltZTsKICAgICB9CkBAIC0yMjgsMTIgKzIyMiwxMiBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuX2VuZFRpbWUgPSB4IHx8IDA7CiAgICAgICAgIHRoaXMu
X2VuZFRpbWVQaW5uZWQgPSB0cnVlOwogCi0gICAgICAgIHRoaXMuX25lZWRzTGF5b3V0KCk7Cisg
ICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKICAgICB9CiAKICAgICBnZXQgc2Vjb25kc1BlclBp
eGVsKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyKQorICAgICAgICBpZiAodGhpcy5pc0xheW91dFBlbmRpbmcpCiAgICAgICAgICAgICB0
aGlzLl9yZWNhbGN1bGF0ZSgpOwogICAgICAgICByZXR1cm4gdGhpcy5fc2Vjb25kc1BlclBpeGVs
OwogICAgIH0KQEAgLTI0Nyw3ICsyNDEsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9
IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAg
IHRoaXMuX2VuZFRpbWVQaW5uZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fY3VycmVudFNsaWNl
VGltZSA9IDA7CiAKLSAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKKyAgICAgICAgdGhpcy5u
ZWVkc0xheW91dCgpOwogICAgIH0KIAogICAgIGdldCBzbmFwSW50ZXJ2YWwoKQpAQCAtMzM0LDI3
ICszMjgsNjEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1
bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gdGhpcy5fbWFy
a2VyRWxlbWVudE1hcC5nZXQobWFya2VyKSB8fCBudWxsOwogICAgIH0KIAotICAgIHVwZGF0ZUxh
eW91dCgpCisgICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQoKQogICAgIHsKLSAgICAgICAgaWYgKHRo
aXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGNhbmNl
bEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpOwot
ICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXI7
CisgICAgICAgIC8vIElmIGEgbGF5b3V0IGlzIHBlbmRpbmcgd2UgY2FuIGxldCB0aGUgYmFzZSBj
bGFzcyBoYW5kbGUgaXQgYW5kIHJldHVybiwgc2luY2UgdGhhdCB3aWxsIHVwZGF0ZQorICAgICAg
ICAvLyBtYXJrZXJzIGFuZCB0aGUgc2VsZWN0aW9uIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAg
IGlmICh0aGlzLmlzTGF5b3V0UGVuZGluZykgeworICAgICAgICAgICAgc3VwZXIudXBkYXRlTGF5
b3V0SWZOZWVkZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLl9yZWNhbGN1bGF0ZSgpOworICAgICAgICBsZXQgdmlz
aWJsZVdpZHRoID0gdGhpcy5lbGVtZW50LmNsaWVudFdpZHRoOwogICAgICAgICBpZiAodmlzaWJs
ZVdpZHRoIDw9IDApCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGR1cmF0aW9u
ID0gdGhpcy5kdXJhdGlvbjsKKyAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91
dFVwZGF0ZUlkZW50aWZpZXIpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVNYXJrZXJzKHZpc2li
bGVXaWR0aCwgdGhpcy5kdXJhdGlvbik7CiAKLSAgICAgICAgdmFyIHBpeGVsc1BlclNlY29uZCA9
IHZpc2libGVXaWR0aCAvIGR1cmF0aW9uOworICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkU2Vs
ZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNl
bGVjdGlvbih2aXNpYmxlV2lkdGgsIHRoaXMuZHVyYXRpb24pOworICAgIH0KIAotICAgICAgICAv
LyBDYWxjdWxhdGUgYSBkaXZpZGVyIGNvdW50IGJhc2VkIG9uIHRoZSBtYXhpbXVtIGFsbG93ZWQg
ZGl2aWRlciBkZW5zaXR5LgotICAgICAgICB2YXIgZGl2aWRlckNvdW50ID0gTWF0aC5yb3VuZCh2
aXNpYmxlV2lkdGggLyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5NaW5pbXVtRGl2aWRlclNw
YWNpbmcpOworICAgIG5lZWRzTGF5b3V0KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmlzTGF5
b3V0UGVuZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhpcy5fc2No
ZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRlSWRlbnRpZmllcikgeworICAgICAgICAgICAgY2FuY2Vs
QW5pbWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRlSWRlbnRpZmll
cik7CisgICAgICAgICAgICB0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlm
aWVyID0gdW5kZWZpbmVkOworICAgICAgICB9CiAKKyAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxl
ZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGNhbmNlbEFu
aW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZp
ZXIpOworICAgICAgICAgICAgdGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRl
bnRpZmllciA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorCisgICAgICAgIHN1cGVyLm5lZWRzTGF5
b3V0KCk7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBsYXlvdXQoKQorICAgIHsK
KyAgICAgICAgbGV0IHZpc2libGVXaWR0aCA9IHRoaXMuX3JlY2FsY3VsYXRlKCk7CisgICAgICAg
IGlmICh2aXNpYmxlV2lkdGggPD0gMCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBs
ZXQgZHVyYXRpb24gPSB0aGlzLmR1cmF0aW9uOworICAgICAgICBsZXQgcGl4ZWxzUGVyU2Vjb25k
ID0gdmlzaWJsZVdpZHRoIC8gZHVyYXRpb247CisKKyAgICAgICAgLy8gQ2FsY3VsYXRlIGEgZGl2
aWRlciBjb3VudCBiYXNlZCBvbiB0aGUgbWF4aW11bSBhbGxvd2VkIGRpdmlkZXIgZGVuc2l0eS4K
KyAgICAgICAgbGV0IGRpdmlkZXJDb3VudCA9IE1hdGgucm91bmQodmlzaWJsZVdpZHRoIC8gV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuTWluaW11bURpdmlkZXJTcGFjaW5nKTsKKyAgICAgICAg
bGV0IHNsaWNlVGltZTsKICAgICAgICAgaWYgKHRoaXMuX2VuZFRpbWVQaW5uZWQgfHwgIXRoaXMu
X2N1cnJlbnRTbGljZVRpbWUpIHsKICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgc2xpY2Ug
dGltZSBiYXNlZCBvbiB0aGUgcm91Z2ggZGl2aWRlciBjb3VudCBhbmQgdGhlIHRpbWUgc3Bhbi4K
LSAgICAgICAgICAgIHZhciBzbGljZVRpbWUgPSBkdXJhdGlvbiAvIGRpdmlkZXJDb3VudDsKKyAg
ICAgICAgICAgIHNsaWNlVGltZSA9IGR1cmF0aW9uIC8gZGl2aWRlckNvdW50OwogCiAgICAgICAg
ICAgICAvLyBTbmFwIHRoZSBzbGljZSB0aW1lIHRvIGEgbmVhcmVzdCBudW1iZXIgKGUuZy4gMC4x
LCAwLjIsIDAuNSwgMSwgMiwgNSwgMTAsIDIwLCA1MCwgZXRjLikKICAgICAgICAgICAgIHNsaWNl
VGltZSA9IE1hdGgucG93KDEwLCBNYXRoLmNlaWwoTWF0aC5sb2coc2xpY2VUaW1lKSAvIE1hdGgu
TE4xMCkpOwpAQCAtMzY2LDExICszOTQsMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIg
PSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAg
ICAgICAgdGhpcy5fY3VycmVudFNsaWNlVGltZSA9IHNsaWNlVGltZTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIFJldXNlIHRoZSBsYXN0IHNsaWNlIHRpbWUgc2luY2UgdGhlIHRp
bWUgZHVyYXRpb24gZG9lcyBub3Qgc2NhbGUgdG8gZml0IHdoZW4gdGhlIGVuZCB0aW1lIGlzbid0
IHBpbm5lZC4KLSAgICAgICAgICAgIHZhciBzbGljZVRpbWUgPSB0aGlzLl9jdXJyZW50U2xpY2VU
aW1lOworICAgICAgICAgICAgc2xpY2VUaW1lID0gdGhpcy5fY3VycmVudFNsaWNlVGltZTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZhciBmaXJzdERpdmlkZXJUaW1lID0gKE1hdGguY2VpbCgodGhp
cy5fc3RhcnRUaW1lIC0gdGhpcy5femVyb1RpbWUpIC8gc2xpY2VUaW1lKSAqIHNsaWNlVGltZSkg
KyB0aGlzLl96ZXJvVGltZTsKLSAgICAgICAgdmFyIGxhc3REaXZpZGVyVGltZSA9IHRoaXMuX2Vu
ZFRpbWU7CisgICAgICAgIGxldCBmaXJzdERpdmlkZXJUaW1lID0gKE1hdGguY2VpbCgodGhpcy5f
c3RhcnRUaW1lIC0gdGhpcy5femVyb1RpbWUpIC8gc2xpY2VUaW1lKSAqIHNsaWNlVGltZSkgKyB0
aGlzLl96ZXJvVGltZTsKKyAgICAgICAgbGV0IGxhc3REaXZpZGVyVGltZSA9IHRoaXMuX2VuZFRp
bWU7CiAKICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBkaXZpZGVyIGNvdW50IG5vdyBiYXNlZCBv
biB0aGUgZmluYWwgc2xpY2UgdGltZS4KICAgICAgICAgZGl2aWRlckNvdW50ID0gTWF0aC5jZWls
KChsYXN0RGl2aWRlclRpbWUgLSBmaXJzdERpdmlkZXJUaW1lKSAvIHNsaWNlVGltZSk7CkBAIC0z
NzksNyArNDA3LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGlu
ZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBpZiAoIXRoaXMuX2Vu
ZFRpbWVQaW5uZWQpCiAgICAgICAgICAgICArK2RpdmlkZXJDb3VudDsKIAotICAgICAgICB2YXIg
ZGl2aWRlckRhdGEgPSB7CisgICAgICAgIGxldCBkaXZpZGVyRGF0YSA9IHsKICAgICAgICAgICAg
IGNvdW50OiBkaXZpZGVyQ291bnQsCiAgICAgICAgICAgICBmaXJzdFRpbWU6IGZpcnN0RGl2aWRl
clRpbWUsCiAgICAgICAgICAgICBsYXN0VGltZTogbGFzdERpdmlkZXJUaW1lLApAQCAtMzkzLDkg
KzQyMSw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxl
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICB0aGlzLl9jdXJyZW50RGl2
aWRlcnMgPSBkaXZpZGVyRGF0YTsKIAotICAgICAgICB2YXIgbWFya2VyRGl2aWRlcnMgPSB0aGlz
Ll9tYXJrZXJzRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuIiArIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLkRpdmlkZXJFbGVtZW50U3R5bGVDbGFzc05hbWUpOwotCi0gICAgICAgIHZhciBk
aXZpZGVyRWxlbWVudCA9IHRoaXMuX2hlYWRlckVsZW1lbnQuZmlyc3RDaGlsZDsKKyAgICAgICAg
bGV0IG1hcmtlckRpdmlkZXJzID0gdGhpcy5fbWFya2Vyc0VsZW1lbnQucXVlcnlTZWxlY3RvckFs
bCgiLiIgKyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5EaXZpZGVyRWxlbWVudFN0eWxlQ2xh
c3NOYW1lKTsKKyAgICAgICAgbGV0IGRpdmlkZXJFbGVtZW50ID0gdGhpcy5faGVhZGVyRWxlbWVu
dC5maXJzdENoaWxkOwogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IGRpdmlkZXJDb3Vu
dDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoIWRpdmlkZXJFbGVtZW50KSB7CkBAIC00MDMsMjEg
KzQzMCwyMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVs
ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICAgICAgZGl2aWRlckVs
ZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuRGl2aWRlckVsZW1l
bnRTdHlsZUNsYXNzTmFtZTsKICAgICAgICAgICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmFw
cGVuZENoaWxkKGRpdmlkZXJFbGVtZW50KTsKIAotICAgICAgICAgICAgICAgIHZhciBsYWJlbEVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgICAgICBs
ZXQgbGFiZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAg
ICAgICAgICAgbGFiZWxFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyLkRpdmlkZXJMYWJlbEVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKICAgICAgICAgICAgICAgICBk
aXZpZGVyRWxlbWVudC5hcHBlbmRDaGlsZChsYWJlbEVsZW1lbnQpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICB2YXIgbWFya2VyRGl2aWRlckVsZW1lbnQgPSBtYXJrZXJEaXZpZGVyc1tp
XTsKKyAgICAgICAgICAgIGxldCBtYXJrZXJEaXZpZGVyRWxlbWVudCA9IG1hcmtlckRpdmlkZXJz
W2ldOwogICAgICAgICAgICAgaWYgKCFtYXJrZXJEaXZpZGVyRWxlbWVudCkgewogICAgICAgICAg
ICAgICAgIG1hcmtlckRpdmlkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CiAgICAgICAgICAgICAgICAgbWFya2VyRGl2aWRlckVsZW1lbnQuY2xhc3NOYW1lID0gV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuRGl2aWRlckVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKICAg
ICAgICAgICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudC5hcHBlbmRDaGlsZChtYXJrZXJEaXZp
ZGVyRWxlbWVudCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciBkaXZpZGVyVGlt
ZSA9IGZpcnN0RGl2aWRlclRpbWUgKyAoc2xpY2VUaW1lICogaSk7Ci0KLSAgICAgICAgICAgIHZh
ciBuZXdMZWZ0UG9zaXRpb24gPSAoZGl2aWRlclRpbWUgLSB0aGlzLl9zdGFydFRpbWUpIC8gZHVy
YXRpb247CisgICAgICAgICAgICBsZXQgZGl2aWRlclRpbWUgPSBmaXJzdERpdmlkZXJUaW1lICsg
KHNsaWNlVGltZSAqIGkpOworICAgICAgICAgICAgbGV0IG5ld0xlZnRQb3NpdGlvbiA9IChkaXZp
ZGVyVGltZSAtIHRoaXMuX3N0YXJ0VGltZSkgLyBkdXJhdGlvbjsKIAogICAgICAgICAgICAgaWYg
KCF0aGlzLl9hbGxvd3NDbGlwcGVkTGFiZWxzKSB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3Qg
YWxsb3cgZGl2aWRlcnMgdW5kZXIgMCUgd2hlcmUgdGhleSB3aWxsIGJlIGNvbXBsZXRlbHkgaGlk
ZGVuLgpAQCAtNDQ0LDcgKzQ3MCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xh
c3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICAv
LyBSZW1vdmUgZXh0cmEgZGl2aWRlcnMuCiAgICAgICAgIHdoaWxlIChkaXZpZGVyRWxlbWVudCkg
ewotICAgICAgICAgICAgdmFyIG5leHREaXZpZGVyRWxlbWVudCA9IGRpdmlkZXJFbGVtZW50Lm5l
eHRTaWJsaW5nOworICAgICAgICAgICAgbGV0IG5leHREaXZpZGVyRWxlbWVudCA9IGRpdmlkZXJF
bGVtZW50Lm5leHRTaWJsaW5nOwogICAgICAgICAgICAgZGl2aWRlckVsZW1lbnQucmVtb3ZlKCk7
CiAgICAgICAgICAgICBkaXZpZGVyRWxlbWVudCA9IG5leHREaXZpZGVyRWxlbWVudDsKICAgICAg
ICAgfQpAQCAtNDU2LDY3ICs0ODIsMjYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBj
bGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0
aGlzLl91cGRhdGVTZWxlY3Rpb24odmlzaWJsZVdpZHRoLCBkdXJhdGlvbik7CiAgICAgfQogCi0g
ICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQoKQotICAgIHsKLSAgICAgICAgLy8gSWYgdGhlcmUgaXMg
YSBtYWluIGxheW91dCBzY2hlZHVsZWQgd2UgY2FuIGp1c3QgdXBkYXRlIGxheW91dCBhbmQgcmV0
dXJuLCBzaW5jZSB0aGF0Ci0gICAgICAgIC8vIHdpbGwgdXBkYXRlIG1hcmtlcnMgYW5kIHRoZSBz
ZWxlY3Rpb24gYXQgdGhlIHNhbWUgdGltZS4KLSAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZExh
eW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdmlzaWJsZVdp
ZHRoID0gdGhpcy5fZWxlbWVudC5jbGllbnRXaWR0aDsKLSAgICAgICAgaWYgKHZpc2libGVXaWR0
aCA8PSAwKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVs
ZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQotICAgICAgICAgICAgdGhpcy5fdXBkYXRl
TWFya2Vycyh2aXNpYmxlV2lkdGgsIHRoaXMuZHVyYXRpb24pOwotCi0gICAgICAgIGlmICh0aGlz
Ll9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVyKQotICAgICAgICAgICAg
dGhpcy5fdXBkYXRlU2VsZWN0aW9uKHZpc2libGVXaWR0aCwgdGhpcy5kdXJhdGlvbik7Ci0gICAg
fQotCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX25lZWRzTGF5b3V0KCkKLSAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJ
ZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY2hl
ZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZp
ZXIpIHsKLSAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZFNl
bGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMu
X3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLQot
ICAgICAgICB0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gcmVxdWVzdEFu
aW1hdGlvbkZyYW1lKHRoaXMudXBkYXRlTGF5b3V0LmJpbmQodGhpcykpOwotICAgIH0KLQogICAg
IF9uZWVkc01hcmtlckxheW91dCgpCiAgICAgewogICAgICAgICAvLyBJZiBsYXlvdXQgaXMgc2No
ZWR1bGVkLCBhYm9ydCBzaW5jZSBtYXJrZXJzIHdpbGwgYmUgdXBkYXRlZCB3aGVuIGxheW91dCBo
YXBwZW5zLgotICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmll
cikKKyAgICAgICAgaWYgKHRoaXMuaXNMYXlvdXRQZW5kaW5nKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlm
aWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRV
cGRhdGVJZGVudGlmaWVyOworICAgICAgICB0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRh
dGVJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKKyAgICAgICAgICAg
IHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7
CiAKLSAgICAgICAgICAgIHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLl9lbGVtZW50LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgbGV0IHZpc2libGVXaWR0aCA9IHRoaXMuZWxlbWVudC5jbGllbnRX
aWR0aDsKICAgICAgICAgICAgIGlmICh2aXNpYmxlV2lkdGggPD0gMCkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1hcmtlcnModmlzaWJsZVdpZHRo
LCB0aGlzLmR1cmF0aW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3NjaGVkdWxlZE1h
cmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRl
LmJpbmQodGhpcykpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBfbmVlZHNTZWxlY3Rpb25M
YXlvdXQoKQpAQCAtNTI1LDM2ICs1MTAsMzQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIg
PSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIElmIGxheW91dCBpcyBzY2hlZHVsZWQsIGFib3J0
IHNpbmNlIHRoZSBzZWxlY3Rpb24gd2lsbCBiZSB1cGRhdGVkIHdoZW4gbGF5b3V0IGhhcHBlbnMu
Ci0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQorICAg
ICAgICBpZiAodGhpcy5pc0xheW91dFBlbmRpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZnVuY3Rpb24gdXBkYXRlKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVw
ZGF0ZUlkZW50aWZpZXI7CisgICAgICAgIHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVw
ZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4geworICAgICAgICAg
ICAgdGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHVuZGVm
aW5lZDsKIAotICAgICAgICAgICAgdmFyIHZpc2libGVXaWR0aCA9IHRoaXMuX2VsZW1lbnQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICBsZXQgdmlzaWJsZVdpZHRoID0gdGhpcy5lbGVtZW50LmNs
aWVudFdpZHRoOwogICAgICAgICAgICAgaWYgKHZpc2libGVXaWR0aCA8PSAwKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKHZpc2li
bGVXaWR0aCwgdGhpcy5kdXJhdGlvbik7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9zY2hl
ZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKHVwZGF0ZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgX3JlY2Fs
Y3VsYXRlKCkKICAgICB7Ci0gICAgICAgIHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLl9lbGVtZW50
LmNsaWVudFdpZHRoOworICAgICAgICBsZXQgdmlzaWJsZVdpZHRoID0gdGhpcy5lbGVtZW50LmNs
aWVudFdpZHRoOwogICAgICAgICBpZiAodmlzaWJsZVdpZHRoIDw9IDApCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKIAorICAgICAgICBsZXQgZHVyYXRpb247CiAgICAgICAgIGlmICh0aGlzLl9lbmRU
aW1lUGlubmVkKQotICAgICAgICAgICAgdmFyIGR1cmF0aW9uID0gdGhpcy5fZW5kVGltZSAtIHRo
aXMuX3N0YXJ0VGltZTsKKyAgICAgICAgICAgIGR1cmF0aW9uID0gdGhpcy5fZW5kVGltZSAtIHRo
aXMuX3N0YXJ0VGltZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFyIGR1cmF0aW9uID0g
dmlzaWJsZVdpZHRoICogdGhpcy5fc2Vjb25kc1BlclBpeGVsOworICAgICAgICAgICAgZHVyYXRp
b24gPSB2aXNpYmxlV2lkdGggKiB0aGlzLl9zZWNvbmRzUGVyUGl4ZWw7CiAKICAgICAgICAgdGhp
cy5fc2Vjb25kc1BlclBpeGVsID0gZHVyYXRpb24gLyB2aXNpYmxlV2lkdGg7CiAKQEAgLTU4MCwy
NyArNTYzLDI3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVS
dWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBj
YW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyKTsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRV
cGRhdGVJZGVudGlmaWVyOworICAgICAgICAgICAgdGhpcy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0
VXBkYXRlSWRlbnRpZmllciA9IHVuZGVmaW5lZDsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMu
X21hcmtlckVsZW1lbnRNYXAuZm9yRWFjaChmdW5jdGlvbihtYXJrZXJFbGVtZW50LCBtYXJrZXIp
IHsKLSAgICAgICAgICAgIHZhciBuZXdMZWZ0UG9zaXRpb24gPSAobWFya2VyLnRpbWUgLSB0aGlz
Ll9zdGFydFRpbWUpIC8gZHVyYXRpb247CisgICAgICAgIGZvciAobGV0IFttYXJrZXIsIG1hcmtl
ckVsZW1lbnRdIG9mIHRoaXMuX21hcmtlckVsZW1lbnRNYXApIHsKKyAgICAgICAgICAgIGxldCBu
ZXdMZWZ0UG9zaXRpb24gPSAobWFya2VyLnRpbWUgLSB0aGlzLl9zdGFydFRpbWUpIC8gZHVyYXRp
b247CiAKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVBvc2l0aW9uT2ZFbGVtZW50KG1hcmtlckVs
ZW1lbnQsIG5ld0xlZnRQb3NpdGlvbiwgdmlzaWJsZVdpZHRoKTsKIAogICAgICAgICAgICAgaWYg
KCFtYXJrZXJFbGVtZW50LnBhcmVudE5vZGUpCiAgICAgICAgICAgICAgICAgdGhpcy5fbWFya2Vy
c0VsZW1lbnQuYXBwZW5kQ2hpbGQobWFya2VyRWxlbWVudCk7Ci0gICAgICAgIH0sIHRoaXMpOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgX3VwZGF0ZVNlbGVjdGlvbih2aXNpYmxlV2lkdGgsIGR1
cmF0aW9uKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91
dFVwZGF0ZUlkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRo
aXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIpOwotICAgICAgICAg
ICAgZGVsZXRlIHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXI7
CisgICAgICAgICAgICB0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlm
aWVyID0gdW5kZWZpbmVkOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkFsbG93c1RpbWVSYW5nZVNl
bGVjdGlvblN0eWxlQ2xhc3NOYW1lLCB0aGlzLl9hbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24pOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0b3IuVGltZWxp
bmVSdWxlci5BbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSwgdGhpcy5fYWxs
b3dzVGltZVJhbmdlU2VsZWN0aW9uKTsKIAogICAgICAgICBpZiAoIXRoaXMuX2FsbG93c1RpbWVS
YW5nZVNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTYzMiwxMSArNjE1LDExIEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5fcmlnaHRTZWxlY3Rpb25IYW5kbGVF
bGVtZW50LnRpdGxlID0gZm9ybWF0dGVkRW5kVGltZVRleHQ7CiAKICAgICAgICAgaWYgKCF0aGlz
Ll9zZWxlY3Rpb25EcmFnRWxlbWVudC5wYXJlbnROb2RlKSB7Ci0gICAgICAgICAgICB0aGlzLl9l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlbGVjdGlvbkRyYWdFbGVtZW50KTsKLSAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGVmdFNoYWRlZEFyZWFFbGVtZW50
KTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGVmdFNlbGVj
dGlvbkhhbmRsZUVsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9yaWdodFNoYWRlZEFyZWFFbGVtZW50KTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRTZWxlY3Rpb25IYW5kbGVFbGVtZW50KTsKKyAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWxlY3Rpb25EcmFnRWxlbWVu
dCk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGVmdFNoYWRl
ZEFyZWFFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9sZWZ0U2VsZWN0aW9uSGFuZGxlRWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRTaGFkZWRBcmVhRWxlbWVudCk7CisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRTZWxlY3Rpb25IYW5kbGVFbGVtZW50
KTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2Rpc3BhdGNoVGltZVJhbmdlU2VsZWN0aW9u
Q2hhbmdlZEV2ZW50KCk7CkBAIC02ODAsNyArNjYzLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3NlbGVjdGlvbklzTW92ZSA9IGV2
ZW50LnRhcmdldCA9PT0gdGhpcy5fc2VsZWN0aW9uRHJhZ0VsZW1lbnQ7Ci0gICAgICAgIHRoaXMu
X3J1bGVyQm91bmRpbmdDbGllbnRSZWN0ID0gdGhpcy5fZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKTsKKyAgICAgICAgdGhpcy5fcnVsZXJCb3VuZGluZ0NsaWVudFJlY3QgPSB0aGlzLmVs
ZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAKICAgICAgICAgaWYgKHRoaXMuX3NlbGVj
dGlvbklzTW92ZSkgewogICAgICAgICAgICAgdGhpcy5fbGFzdE1vdXNlUG9zaXRpb24gPSBldmVu
dC5wYWdlWDsKQEAgLTcwNSwxMiArNjg4LDEzIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVy
ID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LmJ1dHRvbiA9PT0gMCk7CiAKKyAgICAgICAg
bGV0IGN1cnJlbnRNb3VzZVBvc2l0aW9uOwogICAgICAgICBpZiAodGhpcy5fc2VsZWN0aW9uSXNN
b3ZlKSB7Ci0gICAgICAgICAgICB2YXIgY3VycmVudE1vdXNlUG9zaXRpb24gPSBNYXRoLm1heCh0
aGlzLl9tb3ZlU2VsZWN0aW9uTWF4aW11bUxlZnRPZmZzZXQsIE1hdGgubWluKHRoaXMuX21vdmVT
ZWxlY3Rpb25NYXhpbXVtUmlnaHRPZmZzZXQsIGV2ZW50LnBhZ2VYKSk7CisgICAgICAgICAgICBj
dXJyZW50TW91c2VQb3NpdGlvbiA9IE1hdGgubWF4KHRoaXMuX21vdmVTZWxlY3Rpb25NYXhpbXVt
TGVmdE9mZnNldCwgTWF0aC5taW4odGhpcy5fbW92ZVNlbGVjdGlvbk1heGltdW1SaWdodE9mZnNl
dCwgZXZlbnQucGFnZVgpKTsKIAotICAgICAgICAgICAgdmFyIG9mZnNldFRpbWUgPSAoY3VycmVu
dE1vdXNlUG9zaXRpb24gLSB0aGlzLl9sYXN0TW91c2VQb3NpdGlvbikgKiB0aGlzLnNlY29uZHNQ
ZXJQaXhlbDsKLSAgICAgICAgICAgIHZhciBzZWxlY3Rpb25EdXJhdGlvbiA9IHRoaXMuc2VsZWN0
aW9uRW5kVGltZSAtIHRoaXMuc2VsZWN0aW9uU3RhcnRUaW1lOwotICAgICAgICAgICAgdmFyIG9s
ZFNlbGVjdGlvblN0YXJ0VGltZSA9IHRoaXMuc2VsZWN0aW9uU3RhcnRUaW1lOworICAgICAgICAg
ICAgbGV0IG9mZnNldFRpbWUgPSAoY3VycmVudE1vdXNlUG9zaXRpb24gLSB0aGlzLl9sYXN0TW91
c2VQb3NpdGlvbikgKiB0aGlzLnNlY29uZHNQZXJQaXhlbDsKKyAgICAgICAgICAgIGxldCBzZWxl
Y3Rpb25EdXJhdGlvbiA9IHRoaXMuc2VsZWN0aW9uRW5kVGltZSAtIHRoaXMuc2VsZWN0aW9uU3Rh
cnRUaW1lOworICAgICAgICAgICAgbGV0IG9sZFNlbGVjdGlvblN0YXJ0VGltZSA9IHRoaXMuc2Vs
ZWN0aW9uU3RhcnRUaW1lOwogCiAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZSA9
IE1hdGgubWF4KHRoaXMuc3RhcnRUaW1lLCBNYXRoLm1pbih0aGlzLnNlbGVjdGlvblN0YXJ0VGlt
ZSArIG9mZnNldFRpbWUsIHRoaXMuZW5kVGltZSAtIHNlbGVjdGlvbkR1cmF0aW9uKSk7CiAgICAg
ICAgICAgICB0aGlzLnNlbGVjdGlvbkVuZFRpbWUgPSB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZSAr
IHNlbGVjdGlvbkR1cmF0aW9uOwpAQCAtNzE5LDI2ICs3MDMsMjYgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgICAgICAgICAgICAgIC8vIFdoZW4gc25hcHBpbmcgd2UgbmVlZCB0byBjaGVjayB0
aGUgbW91c2UgcG9zaXRpb24gZGVsdGEgcmVsYXRpdmUgdG8gdGhlIGxhc3Qgc25hcCwgcmF0aGVy
IHRoYW4gdGhlCiAgICAgICAgICAgICAgICAgLy8gbGFzdCBtb3VzZSBtb3ZlLiBJZiBhIHNuYXAg
b2NjdXJzIHdlIGFkanVzdCBmb3IgdGhlIGFtb3VudCB0aGUgY3Vyc29yIGRyaWZ0ZWQsIHNvIHRo
YXQgdGhlIG1vdXNlCiAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhl
IHNlbGVjdGlvbiByZW1haW5zIGNvbnN0YW50LgotICAgICAgICAgICAgICAgIHZhciBzbmFwT2Zm
c2V0ID0gdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgLSBvbGRTZWxlY3Rpb25TdGFydFRpbWU7Cisg
ICAgICAgICAgICAgICAgbGV0IHNuYXBPZmZzZXQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZSAt
IG9sZFNlbGVjdGlvblN0YXJ0VGltZTsKICAgICAgICAgICAgICAgICBpZiAoIXNuYXBPZmZzZXQp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgICAgIHZhciBwb3Np
dGlvbkRyaWZ0ID0gKG9mZnNldFRpbWUgLSBzbmFwT2Zmc2V0ICogdGhpcy5zbmFwSW50ZXJ2YWwp
IC8gdGhpcy5zZWNvbmRzUGVyUGl4ZWw7CisgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9uRHJp
ZnQgPSAob2Zmc2V0VGltZSAtIHNuYXBPZmZzZXQgKiB0aGlzLnNuYXBJbnRlcnZhbCkgLyB0aGlz
LnNlY29uZHNQZXJQaXhlbDsKICAgICAgICAgICAgICAgICBjdXJyZW50TW91c2VQb3NpdGlvbiAt
PSBwb3NpdGlvbkRyaWZ0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0aGlzLl9sYXN0
TW91c2VQb3NpdGlvbiA9IGN1cnJlbnRNb3VzZVBvc2l0aW9uOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgdmFyIGN1cnJlbnRNb3VzZVBvc2l0aW9uID0gZXZlbnQucGFnZVggLSB0aGlz
Ll9ydWxlckJvdW5kaW5nQ2xpZW50UmVjdC5sZWZ0OworICAgICAgICAgICAgY3VycmVudE1vdXNl
UG9zaXRpb24gPSBldmVudC5wYWdlWCAtIHRoaXMuX3J1bGVyQm91bmRpbmdDbGllbnRSZWN0Lmxl
ZnQ7CiAKICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRUaW1lID0gTWF0aC5tYXgodGhp
cy5zdGFydFRpbWUsIHRoaXMuc3RhcnRUaW1lICsgKE1hdGgubWluKGN1cnJlbnRNb3VzZVBvc2l0
aW9uLCB0aGlzLl9tb3VzZURvd25Qb3NpdGlvbikgKiB0aGlzLnNlY29uZHNQZXJQaXhlbCkpOwog
ICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmRUaW1lID0gTWF0aC5taW4odGhpcy5zdGFydFRp
bWUgKyAoTWF0aC5tYXgoY3VycmVudE1vdXNlUG9zaXRpb24sIHRoaXMuX21vdXNlRG93blBvc2l0
aW9uKSAqIHRoaXMuc2Vjb25kc1BlclBpeGVsKSwgdGhpcy5lbmRUaW1lKTsKIAogICAgICAgICAg
ICAgLy8gVHVybiBvbiBjb2wtcmVzaXplIGN1cnNvciBzdHlsZSBvbmNlIGRyYWdnaW5nIGJlZ2lu
cywgcmF0aGVyIHRoYW4gb24gdGhlIGluaXRpYWwgbW91c2UgZG93bi4KLSAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNp
emluZ1NlbGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLlJlc2l6aW5nU2VsZWN0aW9u
U3R5bGVDbGFzc05hbWUpOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0
aW9uKHRoaXMuX2VsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMuZHVyYXRpb24pOworICAgICAgICB0
aGlzLl91cGRhdGVTZWxlY3Rpb24odGhpcy5lbGVtZW50LmNsaWVudFdpZHRoLCB0aGlzLmR1cmF0
aW9uKTsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5z
dG9wUHJvcGFnYXRpb24oKTsKQEAgLTc0OSw3ICs3MzMsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LmJ1dHRvbiA9PT0gMCk7CiAKICAgICAgICAg
aWYgKCF0aGlzLl9zZWxlY3Rpb25Jc01vdmUpIHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVj
dGlvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLlJlc2l6aW5nU2VsZWN0aW9uU3R5bGVD
bGFzc05hbWUpOwogCiAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25FbmRUaW1lIC0gdGhp
cy5zZWxlY3Rpb25TdGFydFRpbWUgPCB0aGlzLm1pbmltdW1TZWxlY3Rpb25EdXJhdGlvbikgewog
ICAgICAgICAgICAgICAgIC8vIFRoZSBzZWN0aW9uIGlzIHNtYWxsZXIgdGhhbiBhbGxvd2VkLCBn
cm93IGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGRyYWcgdG8gbWVldCB0aGUgbWludW11bS4KQEAg
LTc4OSw3ICs3NzMsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVs
aW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgdGhpcy5fZHJhZ0hhbmRsZUlzU3RhcnRUaW1lID0gZXZlbnQudGFyZ2V0ID09
PSB0aGlzLl9sZWZ0U2VsZWN0aW9uSGFuZGxlRWxlbWVudDsKLSAgICAgICAgdGhpcy5fbW91c2VE
b3duUG9zaXRpb24gPSBldmVudC5wYWdlWCAtIHRoaXMuX2VsZW1lbnQudG90YWxPZmZzZXRMZWZ0
OworICAgICAgICB0aGlzLl9tb3VzZURvd25Qb3NpdGlvbiA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5l
bGVtZW50LnRvdGFsT2Zmc2V0TGVmdDsKIAogICAgICAgICB0aGlzLl9zZWxlY3Rpb25IYW5kbGVN
b3VzZU1vdmVFdmVudExpc3RlbmVyID0gdGhpcy5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VN
b3ZlLmJpbmQodGhpcyk7CiAgICAgICAgIHRoaXMuX3NlbGVjdGlvbkhhbmRsZU1vdXNlVXBFdmVu
dExpc3RlbmVyID0gdGhpcy5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VVcC5iaW5kKHRoaXMp
OwpAQCAtNzk4LDcgKzc4Miw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3Mg
VGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fc2VsZWN0aW9uSGFuZGxlTW91
c2VNb3ZlRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNldXAiLCB0aGlzLl9zZWxlY3Rpb25IYW5kbGVNb3VzZVVwRXZlbnRMaXN0ZW5lcik7CiAK
LSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJ1bGVyLlJlc2l6aW5nU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1Nl
bGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKQEAgLTgwOCwxOSArNzkyLDE5IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50
LmJ1dHRvbiA9PT0gMCk7CiAKLSAgICAgICAgdmFyIGN1cnJlbnRNb3VzZVBvc2l0aW9uID0gZXZl
bnQucGFnZVggLSB0aGlzLl9lbGVtZW50LnRvdGFsT2Zmc2V0TGVmdDsKLSAgICAgICAgdmFyIGN1
cnJlbnRUaW1lID0gdGhpcy5zdGFydFRpbWUgKyAoY3VycmVudE1vdXNlUG9zaXRpb24gKiB0aGlz
LnNlY29uZHNQZXJQaXhlbCk7CisgICAgICAgIGxldCBjdXJyZW50TW91c2VQb3NpdGlvbiA9IGV2
ZW50LnBhZ2VYIC0gdGhpcy5lbGVtZW50LnRvdGFsT2Zmc2V0TGVmdDsKKyAgICAgICAgbGV0IGN1
cnJlbnRUaW1lID0gdGhpcy5zdGFydFRpbWUgKyAoY3VycmVudE1vdXNlUG9zaXRpb24gKiB0aGlz
LnNlY29uZHNQZXJQaXhlbCk7CiAgICAgICAgIGlmICh0aGlzLnNuYXBJbnRlcnZhbCkKICAgICAg
ICAgICAgIGN1cnJlbnRUaW1lID0gdGhpcy5fc25hcFZhbHVlKGN1cnJlbnRUaW1lKTsKIAogICAg
ICAgICBpZiAoZXZlbnQuYWx0S2V5ICYmICFldmVudC5jdHJsS2V5ICYmICFldmVudC5tZXRhS2V5
ICYmICFldmVudC5zaGlmdEtleSkgewogICAgICAgICAgICAgLy8gUmVzaXplIHRoZSBzZWxlY3Rp
b24gb24gYm90aCBzaWRlcyB3aGVuIHRoZSBPcHRpb24ga2V5cyBpcyBoZWxkIGRvd24uCiAgICAg
ICAgICAgICBpZiAodGhpcy5fZHJhZ0hhbmRsZUlzU3RhcnRUaW1lKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIHRpbWVEaWZmZXJlbmNlID0gY3VycmVudFRpbWUgLSB0aGlzLnNlbGVjdGlvblN0YXJ0
VGltZTsKKyAgICAgICAgICAgICAgICBsZXQgdGltZURpZmZlcmVuY2UgPSBjdXJyZW50VGltZSAt
IHRoaXMuc2VsZWN0aW9uU3RhcnRUaW1lOwogICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9u
U3RhcnRUaW1lID0gTWF0aC5tYXgodGhpcy5zdGFydFRpbWUsIE1hdGgubWluKGN1cnJlbnRUaW1l
LCB0aGlzLnNlbGVjdGlvbkVuZFRpbWUgLSB0aGlzLm1pbmltdW1TZWxlY3Rpb25EdXJhdGlvbikp
OwogICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uRW5kVGltZSA9IE1hdGgubWluKE1hdGgu
bWF4KHRoaXMuc2VsZWN0aW9uU3RhcnRUaW1lICsgdGhpcy5taW5pbXVtU2VsZWN0aW9uRHVyYXRp
b24sIHRoaXMuc2VsZWN0aW9uRW5kVGltZSAtIHRpbWVEaWZmZXJlbmNlKSwgdGhpcy5lbmRUaW1l
KTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRpbWVEaWZmZXJl
bmNlID0gY3VycmVudFRpbWUgLSB0aGlzLnNlbGVjdGlvbkVuZFRpbWU7CisgICAgICAgICAgICAg
ICAgbGV0IHRpbWVEaWZmZXJlbmNlID0gY3VycmVudFRpbWUgLSB0aGlzLnNlbGVjdGlvbkVuZFRp
bWU7CiAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmRUaW1lID0gTWF0aC5taW4oTWF0
aC5tYXgodGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgKyB0aGlzLm1pbmltdW1TZWxlY3Rpb25EdXJh
dGlvbiwgY3VycmVudFRpbWUpLCB0aGlzLmVuZFRpbWUpOwogICAgICAgICAgICAgICAgIHRoaXMu
c2VsZWN0aW9uU3RhcnRUaW1lID0gTWF0aC5tYXgodGhpcy5zdGFydFRpbWUsIE1hdGgubWluKHRo
aXMuc2VsZWN0aW9uU3RhcnRUaW1lIC0gdGltZURpZmZlcmVuY2UsIHRoaXMuc2VsZWN0aW9uRW5k
VGltZSAtIHRoaXMubWluaW11bVNlbGVjdGlvbkR1cmF0aW9uKSk7CiAgICAgICAgICAgICB9CkBA
IC04MzIsNyArODE2LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1l
bGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgICAgIHRo
aXMuc2VsZWN0aW9uRW5kVGltZSA9IE1hdGgubWluKE1hdGgubWF4KHRoaXMuc2VsZWN0aW9uU3Rh
cnRUaW1lICsgdGhpcy5taW5pbXVtU2VsZWN0aW9uRHVyYXRpb24sIGN1cnJlbnRUaW1lKSwgdGhp
cy5lbmRUaW1lKTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvbih0
aGlzLl9lbGVtZW50LmNsaWVudFdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKKyAgICAgICAgdGhpcy5f
dXBkYXRlU2VsZWN0aW9uKHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aCwgdGhpcy5kdXJhdGlvbik7
CiAKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQuc3RvcFBy
b3BhZ2F0aW9uKCk7CkBAIC04NDIsNyArODI2LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVs
ZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09PSAwKTsKIAotICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVs
ZXIuUmVzaXppbmdTZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLlJlc2l6aW5nU2Vs
ZWN0aW9uU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlz
dGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX3NlbGVjdGlvbkhhbmRsZU1vdXNlTW92ZUV2ZW50TGlz
dGVuZXIpOwogICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwg
dGhpcy5fc2VsZWN0aW9uSGFuZGxlTW91c2VVcEV2ZW50TGlzdGVuZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKaW5kZXggODdmZjkz
ZWYxMmQ0NjljMWFkOWMyYjI0MTA0MDk5ZWQ5ZjFmM2I2NC4uZjA1MmQ4NjA3YTE5MWMxYjBiMzQx
MTJjNzA2YWZjOTljODFkYTU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaWV3LmpzCkBAIC00MSw2ICs0MSwxMSBAQCBXZWJJbnNwZWN0b3Iu
VmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJl
dHVybiB0aGlzLl9lbGVtZW50OwogICAgIH0KIAorICAgIGdldCBpc0xheW91dFBlbmRpbmcoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICEhdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRp
ZmllcjsKKyAgICB9CisKICAgICBnZXQgc3Vidmlld3MoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3N1YnZpZXdzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264740</attachid>
            <date>2015-11-03 15:33:57 -0800</date>
            <delta_ts>2015-11-03 16:07:47 -0800</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-150703-20151103153300.patch</filename>
            <type>text/plain</type>
            <size>30457</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxOTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
YThjZjk0MWQzNWM3YzVmOTgzYjA0OWFlY2JkMTU0OGEzZGU1ZWEzLi45Mjg3NmRiNzlhZGI1ZDJl
ZTY1YTc0M2NlYmQzZjJiYWNiZGFhNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1OSBAQAogMjAxNS0xMS0wMyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBUaW1lbGluZVJ1bGVyIHRvIFZpZXcg
YmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwNzAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3KToKKyAgICAgICAgQWRkIHJ1bGVy
IGFzIGEgc3Vidmlldy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmll
dy5wcm90b3R5cGUubGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgU2VwYXJhdGUgcnVsZXIgbGF5
b3V0IG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rp
bWVsaW5lUnVsZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuc2V0IGFsbG93c0Ns
aXBwZWRMYWJlbHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90
eXBlLnNldCBmb3JtYXRMYWJlbENhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZS5zZXQgYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5zZXQgemVyb1RpbWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLnNldCBzdGFydFRp
bWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLnNldCBk
dXJhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUu
Z2V0IGVuZFRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90
eXBlLnNldCBlbmRUaW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnBy
b3RvdHlwZS5nZXQgc2Vjb25kc1BlclBpeGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZS5zZXQgc2Vjb25kc1BlclBpeGVsKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS51cGRhdGVMYXlvdXRJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUubmVlZHNMYXlvdXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLmxheW91dCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuX25lZWRzTWFy
a2VyTGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlw
ZS5fbmVlZHNTZWxlY3Rpb25MYXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIucHJvdG90eXBlLl9yZWNhbGN1bGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlci5wcm90b3R5cGUuX3VwZGF0ZU1hcmtlcnMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl91cGRhdGVTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZURvd24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9oYW5kbGVNb3Vz
ZU1vdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9o
YW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3Rv
dHlwZS5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VEb3duKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VN
b3ZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5faGFu
ZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VVcCk6CisgICAgICAgIFJlbmFtZWQgbWV0aG9kcyB0byBt
YXRjaCBuZXcgVmlldy5wcm90b3R5cGUgbWV0aG9kcyBhbmQgY2xlYW5lZCB1cAorICAgICAgICBz
b21lIGNvZGUgdG8gdXNlIGxldCwgZm9yLi4ub2YuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICBObyBs
b25nZXIgbmVlZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90
eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZWQgdG8gbGF5b3V0LCBv
dmVycmlkZXMgVmlldy5wcm90b3R5cGUubGF5b3V0LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIucHJvdG90eXBlLl9uZWVkc0xheW91dCk6IERlbGV0ZWQuCisgICAgICAgIFJl
bmFtZWQgdG8gbmVlZHNMYXlvdXQsIG92ZXJyaWRlcyBWaWV3LnByb3RvdHlwZS5uZWVkc0xheW91
dC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5fbmVlZHNN
YXJrZXJMYXlvdXQudXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZS5fbmVlZHNTZWxlY3Rpb25MYXlvdXQudXBkYXRlKTogRGVsZXRl
ZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5nZXQgaXNMYXlvdXRQZW5kaW5nKToKKyAgICAgICAg
QWRkZWQgZ2V0dGVyIHRvIGNoZWNrIGZvciBwZW5kaW5nIGxheW91dC4KKworMjAxNS0xMS0wMyAg
TWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ3JlYXRlIFZpZXcgYmFzZSBjbGFzcywgcmVmYWN0b3Igc29tZSBjb3JlIHZpZXcgY2xhc3Nl
cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5MTg2
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lUnVsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UaW1lbGluZVJ1bGVyLmpzCmluZGV4IDIzZGQyMGU3OWJlMTE2ZmU1YjEzYTA1NGYxNDli
NzgzNzQzMzAwZDIuLmI1NWRkNDc2NzQ5NmJiOTlkNTA4NTk1MDEzNWJhZjNjMmQzNGY5MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lUnVsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVSdWxlci5qcwpAQCAtMjMsMjIgKzIzLDIxIEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBj
bGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICBzdXBlcigpOwog
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0aW1lbGluZS1ydWxlciIpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGltZWxpbmUtcnVsZXIiKTsKIAog
ICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CiAgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaGVhZGVyIik7
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxlbWVudCk7
CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJFbGVtZW50KTsK
IAogICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJtYXJr
ZXJzIik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFya2Vyc0Vs
ZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFya2Vyc0Vs
ZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX3plcm9UaW1lID0gMDsKICAgICAgICAgdGhpcy5fc3Rh
cnRUaW1lID0gMDsKQEAgLTU5LDExICs1OCw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVy
ID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAg
IC8vIFB1YmxpYwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IGFsbG93c0NsaXBwZWRMYWJlbHMoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93c0NsaXBwZWRMYWJlbHM7CkBAIC03Niw3ICs3
MCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICB0aGlzLl9hbGxvd3NDbGlwcGVk
TGFiZWxzID0geCB8fCBmYWxzZTsKIAotICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOworICAg
ICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgc2V0IGZvcm1hdExhYmVsQ2Fs
bGJhY2soeCkKQEAgLTg4LDcgKzgyLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBj
bGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAg
IHRoaXMuX2Zvcm1hdExhYmVsQ2FsbGJhY2sgPSB4IHx8IG51bGw7CiAKLSAgICAgICAgdGhpcy5f
bmVlZHNMYXlvdXQoKTsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogICAgIH0KIAogICAg
IGdldCBhbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24oKQpAQCAtMTA1LDcgKzk5LDcgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogCiAgICAgICAgIGlmICh4KSB7CiAgICAgICAgICAgICB0aGlzLl9tb3Vz
ZURvd25FdmVudExpc3RlbmVyID0gdGhpcy5faGFuZGxlTW91c2VEb3duLmJpbmQodGhpcyk7Ci0g
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRo
aXMuX21vdXNlRG93bkV2ZW50TGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93bkV2ZW50TGlzdGVuZXIp
OwogCiAgICAgICAgICAgICB0aGlzLl9sZWZ0U2hhZGVkQXJlYUVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgIHRoaXMuX2xlZnRTaGFkZWRBcmVhRWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJzaGFkZWQtYXJlYSIpOwpAQCAtMTMwLDcgKzEyNCw3IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICAgICAgdGhpcy5fbmVlZHNTZWxlY3Rpb25MYXlv
dXQoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duRXZlbnRMaXN0ZW5lcik7
CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3du
IiwgdGhpcy5fbW91c2VEb3duRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fbW91c2VEb3duRXZlbnRMaXN0ZW5lcjsKIAogICAgICAgICAgICAgdGhpcy5fbGVmdFNoYWRl
ZEFyZWFFbGVtZW50LnJlbW92ZSgpOwpAQCAtMTY5LDcgKzE2Myw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKIAogICAgICAgICB0aGlzLl96ZXJvVGltZSA9IHggfHwgMDsKIAotICAgICAgICB0aGlz
Ll9uZWVkc0xheW91dCgpOworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAg
ICAgZ2V0IHN0YXJ0VGltZSgpCkBAIC0xODcsNyArMTgxLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogICAgICAgICBpZiAoIWlzTmFOKHRoaXMuX2R1cmF0aW9uKSkKICAgICAgICAgICAgIHRoaXMu
X2VuZFRpbWUgPSB0aGlzLl9zdGFydFRpbWUgKyB0aGlzLl9kdXJhdGlvbjsKIAotICAgICAgICB0
aGlzLl9uZWVkc0xheW91dCgpOworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQog
CiAgICAgZ2V0IGR1cmF0aW9uKCkKQEAgLTIxMCwxMiArMjA0LDEyIEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLl9lbmRUaW1lUGlubmVkID0g
ZmFsc2U7CiAKLSAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKKyAgICAgICAgdGhpcy5uZWVk
c0xheW91dCgpOwogICAgIH0KIAogICAgIGdldCBlbmRUaW1lKCkKICAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5fZW5kVGltZVBpbm5lZCAmJiB0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyKQorICAgICAgICBpZiAoIXRoaXMuX2VuZFRpbWVQaW5uZWQgJiYgdGhpcy5oYXNQZW5k
aW5nTGF5b3V0KQogICAgICAgICAgICAgdGhpcy5fcmVjYWxjdWxhdGUoKTsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2VuZFRpbWU7CiAgICAgfQpAQCAtMjI4LDEyICsyMjIsMTIgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogICAgICAgICB0aGlzLl9lbmRUaW1lID0geCB8fCAwOwogICAgICAgICB0aGlz
Ll9lbmRUaW1lUGlubmVkID0gdHJ1ZTsKIAotICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOwor
ICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgZ2V0IHNlY29uZHNQZXJQ
aXhlbCgpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRl
bnRpZmllcikKKyAgICAgICAgaWYgKHRoaXMuaGFzUGVuZGluZ0xheW91dCkKICAgICAgICAgICAg
IHRoaXMuX3JlY2FsY3VsYXRlKCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWNvbmRzUGVyUGl4
ZWw7CiAgICAgfQpAQCAtMjQ3LDcgKzI0MSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVy
ID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAg
ICAgdGhpcy5fZW5kVGltZVBpbm5lZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9jdXJyZW50U2xp
Y2VUaW1lID0gMDsKIAotICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOworICAgICAgICB0aGlz
Lm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgZ2V0IHNuYXBJbnRlcnZhbCgpCkBAIC0zMzQs
MjcgKzMyOCw2MSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5l
UnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl9t
YXJrZXJFbGVtZW50TWFwLmdldChtYXJrZXIpIHx8IG51bGw7CiAgICAgfQogCi0gICAgdXBkYXRl
TGF5b3V0KCkKKyAgICB1cGRhdGVMYXlvdXRJZk5lZWRlZCgpCiAgICAgewotICAgICAgICBpZiAo
dGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikgewotICAgICAgICAgICAgY2Fu
Y2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7
Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmll
cjsKKyAgICAgICAgLy8gSWYgYSBsYXlvdXQgaXMgcGVuZGluZyB3ZSBjYW4gbGV0IHRoZSBiYXNl
IGNsYXNzIGhhbmRsZSBpdCBhbmQgcmV0dXJuLCBzaW5jZSB0aGF0IHdpbGwgdXBkYXRlCisgICAg
ICAgIC8vIG1hcmtlcnMgYW5kIHRoZSBzZWxlY3Rpb24gYXQgdGhlIHNhbWUgdGltZS4KKyAgICAg
ICAgaWYgKHRoaXMuaGFzUGVuZGluZ0xheW91dCkgeworICAgICAgICAgICAgc3VwZXIudXBkYXRl
TGF5b3V0SWZOZWVkZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLl9yZWNhbGN1bGF0ZSgpOworICAgICAgICBsZXQg
dmlzaWJsZVdpZHRoID0gdGhpcy5fcmVjYWxjdWxhdGUoKTsKICAgICAgICAgaWYgKHZpc2libGVX
aWR0aCA8PSAwKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBkdXJhdGlvbiA9
IHRoaXMuZHVyYXRpb247CisgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRV
cGRhdGVJZGVudGlmaWVyKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlTWFya2Vycyh2aXNpYmxl
V2lkdGgsIHRoaXMuZHVyYXRpb24pOwogCi0gICAgICAgIHZhciBwaXhlbHNQZXJTZWNvbmQgPSB2
aXNpYmxlV2lkdGggLyBkdXJhdGlvbjsKKyAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFNlbGVj
dGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVTZWxl
Y3Rpb24odmlzaWJsZVdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKKyAgICB9CiAKLSAgICAgICAgLy8g
Q2FsY3VsYXRlIGEgZGl2aWRlciBjb3VudCBiYXNlZCBvbiB0aGUgbWF4aW11bSBhbGxvd2VkIGRp
dmlkZXIgZGVuc2l0eS4KLSAgICAgICAgdmFyIGRpdmlkZXJDb3VudCA9IE1hdGgucm91bmQodmlz
aWJsZVdpZHRoIC8gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuTWluaW11bURpdmlkZXJTcGFj
aW5nKTsKKyAgICBuZWVkc0xheW91dCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5oYXNQZW5k
aW5nTGF5b3V0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlzLl9zY2hl
ZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBjYW5jZWxB
bmltYXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVy
KTsKKyAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZp
ZXIgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KIAorICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVk
U2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllcikgeworICAgICAgICAgICAgY2FuY2VsQW5p
bWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmll
cik7CisgICAgICAgICAgICB0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVu
dGlmaWVyID0gdW5kZWZpbmVkOworICAgICAgICB9CisKKyAgICAgICAgc3VwZXIubmVlZHNMYXlv
dXQoKTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGxheW91dCgpCisgICAgewor
ICAgICAgICBsZXQgdmlzaWJsZVdpZHRoID0gdGhpcy5fcmVjYWxjdWxhdGUoKTsKKyAgICAgICAg
aWYgKHZpc2libGVXaWR0aCA8PSAwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxl
dCBkdXJhdGlvbiA9IHRoaXMuZHVyYXRpb247CisgICAgICAgIGxldCBwaXhlbHNQZXJTZWNvbmQg
PSB2aXNpYmxlV2lkdGggLyBkdXJhdGlvbjsKKworICAgICAgICAvLyBDYWxjdWxhdGUgYSBkaXZp
ZGVyIGNvdW50IGJhc2VkIG9uIHRoZSBtYXhpbXVtIGFsbG93ZWQgZGl2aWRlciBkZW5zaXR5Lgor
ICAgICAgICBsZXQgZGl2aWRlckNvdW50ID0gTWF0aC5yb3VuZCh2aXNpYmxlV2lkdGggLyBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlci5NaW5pbXVtRGl2aWRlclNwYWNpbmcpOworICAgICAgICBs
ZXQgc2xpY2VUaW1lOwogICAgICAgICBpZiAodGhpcy5fZW5kVGltZVBpbm5lZCB8fCAhdGhpcy5f
Y3VycmVudFNsaWNlVGltZSkgewogICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzbGljZSB0
aW1lIGJhc2VkIG9uIHRoZSByb3VnaCBkaXZpZGVyIGNvdW50IGFuZCB0aGUgdGltZSBzcGFuLgot
ICAgICAgICAgICAgdmFyIHNsaWNlVGltZSA9IGR1cmF0aW9uIC8gZGl2aWRlckNvdW50OworICAg
ICAgICAgICAgc2xpY2VUaW1lID0gZHVyYXRpb24gLyBkaXZpZGVyQ291bnQ7CiAKICAgICAgICAg
ICAgIC8vIFNuYXAgdGhlIHNsaWNlIHRpbWUgdG8gYSBuZWFyZXN0IG51bWJlciAoZS5nLiAwLjEs
IDAuMiwgMC41LCAxLCAyLCA1LCAxMCwgMjAsIDUwLCBldGMuKQogICAgICAgICAgICAgc2xpY2VU
aW1lID0gTWF0aC5wb3coMTAsIE1hdGguY2VpbChNYXRoLmxvZyhzbGljZVRpbWUpIC8gTWF0aC5M
TjEwKSk7CkBAIC0zNjYsMTEgKzM5NCwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9
IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAg
ICAgICB0aGlzLl9jdXJyZW50U2xpY2VUaW1lID0gc2xpY2VUaW1lOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gUmV1c2UgdGhlIGxhc3Qgc2xpY2UgdGltZSBzaW5jZSB0aGUgdGlt
ZSBkdXJhdGlvbiBkb2VzIG5vdCBzY2FsZSB0byBmaXQgd2hlbiB0aGUgZW5kIHRpbWUgaXNuJ3Qg
cGlubmVkLgotICAgICAgICAgICAgdmFyIHNsaWNlVGltZSA9IHRoaXMuX2N1cnJlbnRTbGljZVRp
bWU7CisgICAgICAgICAgICBzbGljZVRpbWUgPSB0aGlzLl9jdXJyZW50U2xpY2VUaW1lOwogICAg
ICAgICB9CiAKLSAgICAgICAgdmFyIGZpcnN0RGl2aWRlclRpbWUgPSAoTWF0aC5jZWlsKCh0aGlz
Ll9zdGFydFRpbWUgLSB0aGlzLl96ZXJvVGltZSkgLyBzbGljZVRpbWUpICogc2xpY2VUaW1lKSAr
IHRoaXMuX3plcm9UaW1lOwotICAgICAgICB2YXIgbGFzdERpdmlkZXJUaW1lID0gdGhpcy5fZW5k
VGltZTsKKyAgICAgICAgbGV0IGZpcnN0RGl2aWRlclRpbWUgPSAoTWF0aC5jZWlsKCh0aGlzLl9z
dGFydFRpbWUgLSB0aGlzLl96ZXJvVGltZSkgLyBzbGljZVRpbWUpICogc2xpY2VUaW1lKSArIHRo
aXMuX3plcm9UaW1lOworICAgICAgICBsZXQgbGFzdERpdmlkZXJUaW1lID0gdGhpcy5fZW5kVGlt
ZTsKIAogICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGRpdmlkZXIgY291bnQgbm93IGJhc2VkIG9u
IHRoZSBmaW5hbCBzbGljZSB0aW1lLgogICAgICAgICBkaXZpZGVyQ291bnQgPSBNYXRoLmNlaWwo
KGxhc3REaXZpZGVyVGltZSAtIGZpcnN0RGl2aWRlclRpbWUpIC8gc2xpY2VUaW1lKTsKQEAgLTM3
OSw3ICs0MDcsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5l
UnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGlmICghdGhpcy5fZW5k
VGltZVBpbm5lZCkKICAgICAgICAgICAgICsrZGl2aWRlckNvdW50OwogCi0gICAgICAgIHZhciBk
aXZpZGVyRGF0YSA9IHsKKyAgICAgICAgbGV0IGRpdmlkZXJEYXRhID0gewogICAgICAgICAgICAg
Y291bnQ6IGRpdmlkZXJDb3VudCwKICAgICAgICAgICAgIGZpcnN0VGltZTogZmlyc3REaXZpZGVy
VGltZSwKICAgICAgICAgICAgIGxhc3RUaW1lOiBsYXN0RGl2aWRlclRpbWUsCkBAIC0zOTMsOSAr
NDIxLDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX2N1cnJlbnREaXZp
ZGVycyA9IGRpdmlkZXJEYXRhOwogCi0gICAgICAgIHZhciBtYXJrZXJEaXZpZGVycyA9IHRoaXMu
X21hcmtlcnNFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi4iICsgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUnVsZXIuRGl2aWRlckVsZW1lbnRTdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICAgICAgdmFyIGRp
dmlkZXJFbGVtZW50ID0gdGhpcy5faGVhZGVyRWxlbWVudC5maXJzdENoaWxkOworICAgICAgICBs
ZXQgbWFya2VyRGl2aWRlcnMgPSB0aGlzLl9tYXJrZXJzRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxs
KCIuIiArIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkRpdmlkZXJFbGVtZW50U3R5bGVDbGFz
c05hbWUpOworICAgICAgICBsZXQgZGl2aWRlckVsZW1lbnQgPSB0aGlzLl9oZWFkZXJFbGVtZW50
LmZpcnN0Q2hpbGQ7CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gZGl2aWRlckNvdW50
OyArK2kpIHsKICAgICAgICAgICAgIGlmICghZGl2aWRlckVsZW1lbnQpIHsKQEAgLTQwMywyMSAr
NDMwLDIwIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxl
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgICAgICBkaXZpZGVyRWxl
bWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5EaXZpZGVyRWxlbWVu
dFN0eWxlQ2xhc3NOYW1lOwogICAgICAgICAgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZGl2aWRlckVsZW1lbnQpOwogCi0gICAgICAgICAgICAgICAgdmFyIGxhYmVsRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgICAgIGxl
dCBsYWJlbEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAg
ICAgICAgICBsYWJlbEVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVs
ZXIuRGl2aWRlckxhYmVsRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwogICAgICAgICAgICAgICAgIGRp
dmlkZXJFbGVtZW50LmFwcGVuZENoaWxkKGxhYmVsRWxlbWVudCk7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIHZhciBtYXJrZXJEaXZpZGVyRWxlbWVudCA9IG1hcmtlckRpdmlkZXJzW2ld
OworICAgICAgICAgICAgbGV0IG1hcmtlckRpdmlkZXJFbGVtZW50ID0gbWFya2VyRGl2aWRlcnNb
aV07CiAgICAgICAgICAgICBpZiAoIW1hcmtlckRpdmlkZXJFbGVtZW50KSB7CiAgICAgICAgICAg
ICAgICAgbWFya2VyRGl2aWRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKICAgICAgICAgICAgICAgICBtYXJrZXJEaXZpZGVyRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlci5EaXZpZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwogICAg
ICAgICAgICAgICAgIHRoaXMuX21hcmtlcnNFbGVtZW50LmFwcGVuZENoaWxkKG1hcmtlckRpdmlk
ZXJFbGVtZW50KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdmFyIGRpdmlkZXJUaW1l
ID0gZmlyc3REaXZpZGVyVGltZSArIChzbGljZVRpbWUgKiBpKTsKLQotICAgICAgICAgICAgdmFy
IG5ld0xlZnRQb3NpdGlvbiA9IChkaXZpZGVyVGltZSAtIHRoaXMuX3N0YXJ0VGltZSkgLyBkdXJh
dGlvbjsKKyAgICAgICAgICAgIGxldCBkaXZpZGVyVGltZSA9IGZpcnN0RGl2aWRlclRpbWUgKyAo
c2xpY2VUaW1lICogaSk7CisgICAgICAgICAgICBsZXQgbmV3TGVmdFBvc2l0aW9uID0gKGRpdmlk
ZXJUaW1lIC0gdGhpcy5fc3RhcnRUaW1lKSAvIGR1cmF0aW9uOwogCiAgICAgICAgICAgICBpZiAo
IXRoaXMuX2FsbG93c0NsaXBwZWRMYWJlbHMpIHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBh
bGxvdyBkaXZpZGVycyB1bmRlciAwJSB3aGVyZSB0aGV5IHdpbGwgYmUgY29tcGxldGVseSBoaWRk
ZW4uCkBAIC00NDQsNyArNDcwLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFz
cyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIC8v
IFJlbW92ZSBleHRyYSBkaXZpZGVycy4KICAgICAgICAgd2hpbGUgKGRpdmlkZXJFbGVtZW50KSB7
Ci0gICAgICAgICAgICB2YXIgbmV4dERpdmlkZXJFbGVtZW50ID0gZGl2aWRlckVsZW1lbnQubmV4
dFNpYmxpbmc7CisgICAgICAgICAgICBsZXQgbmV4dERpdmlkZXJFbGVtZW50ID0gZGl2aWRlckVs
ZW1lbnQubmV4dFNpYmxpbmc7CiAgICAgICAgICAgICBkaXZpZGVyRWxlbWVudC5yZW1vdmUoKTsK
ICAgICAgICAgICAgIGRpdmlkZXJFbGVtZW50ID0gbmV4dERpdmlkZXJFbGVtZW50OwogICAgICAg
ICB9CkBAIC00NTYsNjcgKzQ4MiwyNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNs
YXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRo
aXMuX3VwZGF0ZVNlbGVjdGlvbih2aXNpYmxlV2lkdGgsIGR1cmF0aW9uKTsKICAgICB9CiAKLSAg
ICB1cGRhdGVMYXlvdXRJZk5lZWRlZCgpCi0gICAgewotICAgICAgICAvLyBJZiB0aGVyZSBpcyBh
IG1haW4gbGF5b3V0IHNjaGVkdWxlZCB3ZSBjYW4ganVzdCB1cGRhdGUgbGF5b3V0IGFuZCByZXR1
cm4sIHNpbmNlIHRoYXQKLSAgICAgICAgLy8gd2lsbCB1cGRhdGUgbWFya2VycyBhbmQgdGhlIHNl
bGVjdGlvbiBhdCB0aGUgc2FtZSB0aW1lLgotICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5
b3V0VXBkYXRlSWRlbnRpZmllcikgewotICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciB2aXNpYmxlV2lk
dGggPSB0aGlzLl9lbGVtZW50LmNsaWVudFdpZHRoOwotICAgICAgICBpZiAodmlzaWJsZVdpZHRo
IDw9IDApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxl
ZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXIpCi0gICAgICAgICAgICB0aGlzLl91cGRhdGVN
YXJrZXJzKHZpc2libGVXaWR0aCwgdGhpcy5kdXJhdGlvbik7Ci0KLSAgICAgICAgaWYgKHRoaXMu
X3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIpCi0gICAgICAgICAgICB0
aGlzLl91cGRhdGVTZWxlY3Rpb24odmlzaWJsZVdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKLSAgICB9
Ci0KICAgICAvLyBQcml2YXRlCiAKLSAgICBfbmVlZHNMYXlvdXQoKQotICAgIHsKLSAgICAgICAg
aWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91dFVwZGF0ZUlk
ZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVk
dWxlZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgZGVsZXRlIHRo
aXMuX3NjaGVkdWxlZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmll
cikgewotICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkU2Vs
ZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5f
c2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0g
ICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUodGhpcy51cGRhdGVMYXlvdXQuYmluZCh0aGlzKSk7Ci0gICAgfQotCiAgICAg
X25lZWRzTWFya2VyTGF5b3V0KCkKICAgICB7CiAgICAgICAgIC8vIElmIGxheW91dCBpcyBzY2hl
ZHVsZWQsIGFib3J0IHNpbmNlIG1hcmtlcnMgd2lsbCBiZSB1cGRhdGVkIHdoZW4gbGF5b3V0IGhh
cHBlbnMuCi0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVy
KQorICAgICAgICBpZiAodGhpcy5oYXNQZW5kaW5nTGF5b3V0KQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlm
aWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRV
cGRhdGVJZGVudGlmaWVyOworICAgICAgICB0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRh
dGVJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKKyAgICAgICAgICAg
IHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7
CiAKLSAgICAgICAgICAgIHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLl9lbGVtZW50LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgbGV0IHZpc2libGVXaWR0aCA9IHRoaXMuZWxlbWVudC5jbGllbnRX
aWR0aDsKICAgICAgICAgICAgIGlmICh2aXNpYmxlV2lkdGggPD0gMCkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1hcmtlcnModmlzaWJsZVdpZHRo
LCB0aGlzLmR1cmF0aW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3NjaGVkdWxlZE1h
cmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRl
LmJpbmQodGhpcykpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBfbmVlZHNTZWxlY3Rpb25M
YXlvdXQoKQpAQCAtNTI1LDM2ICs1MTAsMzQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIg
PSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIElmIGxheW91dCBpcyBzY2hlZHVsZWQsIGFib3J0
IHNpbmNlIHRoZSBzZWxlY3Rpb24gd2lsbCBiZSB1cGRhdGVkIHdoZW4gbGF5b3V0IGhhcHBlbnMu
Ci0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQorICAg
ICAgICBpZiAodGhpcy5oYXNQZW5kaW5nTGF5b3V0KQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVy
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRV
cGRhdGVJZGVudGlmaWVyOworICAgICAgICB0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRV
cGRhdGVJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKKyAgICAgICAg
ICAgIHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRl
ZmluZWQ7CiAKLSAgICAgICAgICAgIHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLl9lbGVtZW50LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgbGV0IHZpc2libGVXaWR0aCA9IHRoaXMuZWxlbWVudC5j
bGllbnRXaWR0aDsKICAgICAgICAgICAgIGlmICh2aXNpYmxlV2lkdGggPD0gMCkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvbih2aXNp
YmxlV2lkdGgsIHRoaXMuZHVyYXRpb24pOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fc2No
ZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25G
cmFtZSh1cGRhdGUuYmluZCh0aGlzKSk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIF9yZWNh
bGN1bGF0ZSgpCiAgICAgewotICAgICAgICB2YXIgdmlzaWJsZVdpZHRoID0gdGhpcy5fZWxlbWVu
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgbGV0IHZpc2libGVXaWR0aCA9IHRoaXMuZWxlbWVudC5j
bGllbnRXaWR0aDsKICAgICAgICAgaWYgKHZpc2libGVXaWR0aCA8PSAwKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAKKyAgICAgICAgbGV0IGR1cmF0aW9uOwogICAgICAgICBpZiAodGhpcy5fZW5k
VGltZVBpbm5lZCkKLSAgICAgICAgICAgIHZhciBkdXJhdGlvbiA9IHRoaXMuX2VuZFRpbWUgLSB0
aGlzLl9zdGFydFRpbWU7CisgICAgICAgICAgICBkdXJhdGlvbiA9IHRoaXMuX2VuZFRpbWUgLSB0
aGlzLl9zdGFydFRpbWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhciBkdXJhdGlvbiA9
IHZpc2libGVXaWR0aCAqIHRoaXMuX3NlY29uZHNQZXJQaXhlbDsKKyAgICAgICAgICAgIGR1cmF0
aW9uID0gdmlzaWJsZVdpZHRoICogdGhpcy5fc2Vjb25kc1BlclBpeGVsOwogCiAgICAgICAgIHRo
aXMuX3NlY29uZHNQZXJQaXhlbCA9IGR1cmF0aW9uIC8gdmlzaWJsZVdpZHRoOwogCkBAIC01ODAs
MjcgKzU2MywyNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5l
UnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgewogICAgICAgICBpZiAodGhp
cy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRlSWRlbnRpZmllcikgewogICAgICAgICAgICAg
Y2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRlSWRl
bnRpZmllcik7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0
VXBkYXRlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91
dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlz
Ll9tYXJrZXJFbGVtZW50TWFwLmZvckVhY2goZnVuY3Rpb24obWFya2VyRWxlbWVudCwgbWFya2Vy
KSB7Ci0gICAgICAgICAgICB2YXIgbmV3TGVmdFBvc2l0aW9uID0gKG1hcmtlci50aW1lIC0gdGhp
cy5fc3RhcnRUaW1lKSAvIGR1cmF0aW9uOworICAgICAgICBmb3IgKGxldCBbbWFya2VyLCBtYXJr
ZXJFbGVtZW50XSBvZiB0aGlzLl9tYXJrZXJFbGVtZW50TWFwKSB7CisgICAgICAgICAgICBsZXQg
bmV3TGVmdFBvc2l0aW9uID0gKG1hcmtlci50aW1lIC0gdGhpcy5fc3RhcnRUaW1lKSAvIGR1cmF0
aW9uOwogCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVQb3NpdGlvbk9mRWxlbWVudChtYXJrZXJF
bGVtZW50LCBuZXdMZWZ0UG9zaXRpb24sIHZpc2libGVXaWR0aCk7CiAKICAgICAgICAgICAgIGlm
ICghbWFya2VyRWxlbWVudC5wYXJlbnROb2RlKQogICAgICAgICAgICAgICAgIHRoaXMuX21hcmtl
cnNFbGVtZW50LmFwcGVuZENoaWxkKG1hcmtlckVsZW1lbnQpOwotICAgICAgICB9LCB0aGlzKTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIF91cGRhdGVTZWxlY3Rpb24odmlzaWJsZVdpZHRoLCBk
dXJhdGlvbikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlv
dXRVcGRhdGVJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0
aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsKLSAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVy
OworICAgICAgICAgICAgdGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRp
ZmllciA9IHVuZGVmaW5lZDsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5BbGxvd3NUaW1lUmFuZ2VT
ZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSwgdGhpcy5fYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUnVsZXIuQWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUsIHRoaXMuX2Fs
bG93c1RpbWVSYW5nZVNlbGVjdGlvbik7CiAKICAgICAgICAgaWYgKCF0aGlzLl9hbGxvd3NUaW1l
UmFuZ2VTZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CkBAIC02MzIsMTEgKzYxNSwxMSBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuX3JpZ2h0U2VsZWN0aW9uSGFuZGxl
RWxlbWVudC50aXRsZSA9IGZvcm1hdHRlZEVuZFRpbWVUZXh0OwogCiAgICAgICAgIGlmICghdGhp
cy5fc2VsZWN0aW9uRHJhZ0VsZW1lbnQucGFyZW50Tm9kZSkgewotICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWxlY3Rpb25EcmFnRWxlbWVudCk7Ci0gICAgICAg
ICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTaGFkZWRBcmVhRWxlbWVu
dCk7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTZWxl
Y3Rpb25IYW5kbGVFbGVtZW50KTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fcmlnaHRTaGFkZWRBcmVhRWxlbWVudCk7Ci0gICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX3JpZ2h0U2VsZWN0aW9uSGFuZGxlRWxlbWVudCk7CisgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VsZWN0aW9uRHJhZ0VsZW1l
bnQpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTaGFk
ZWRBcmVhRWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fbGVmdFNlbGVjdGlvbkhhbmRsZUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX3JpZ2h0U2hhZGVkQXJlYUVsZW1lbnQpOworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JpZ2h0U2VsZWN0aW9uSGFuZGxlRWxlbWVu
dCk7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9kaXNwYXRjaFRpbWVSYW5nZVNlbGVjdGlv
bkNoYW5nZWRFdmVudCgpOwpAQCAtNjgwLDcgKzY2Myw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zZWxlY3Rpb25Jc01vdmUgPSBl
dmVudC50YXJnZXQgPT09IHRoaXMuX3NlbGVjdGlvbkRyYWdFbGVtZW50OwotICAgICAgICB0aGlz
Ll9ydWxlckJvdW5kaW5nQ2xpZW50UmVjdCA9IHRoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7CisgICAgICAgIHRoaXMuX3J1bGVyQm91bmRpbmdDbGllbnRSZWN0ID0gdGhpcy5l
bGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCiAgICAgICAgIGlmICh0aGlzLl9zZWxl
Y3Rpb25Jc01vdmUpIHsKICAgICAgICAgICAgIHRoaXMuX2xhc3RNb3VzZVBvc2l0aW9uID0gZXZl
bnQucGFnZVg7CkBAIC03MDUsMTIgKzY4OCwxMyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5idXR0b24gPT09IDApOwogCisgICAgICAg
IGxldCBjdXJyZW50TW91c2VQb3NpdGlvbjsKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbklz
TW92ZSkgewotICAgICAgICAgICAgdmFyIGN1cnJlbnRNb3VzZVBvc2l0aW9uID0gTWF0aC5tYXgo
dGhpcy5fbW92ZVNlbGVjdGlvbk1heGltdW1MZWZ0T2Zmc2V0LCBNYXRoLm1pbih0aGlzLl9tb3Zl
U2VsZWN0aW9uTWF4aW11bVJpZ2h0T2Zmc2V0LCBldmVudC5wYWdlWCkpOworICAgICAgICAgICAg
Y3VycmVudE1vdXNlUG9zaXRpb24gPSBNYXRoLm1heCh0aGlzLl9tb3ZlU2VsZWN0aW9uTWF4aW11
bUxlZnRPZmZzZXQsIE1hdGgubWluKHRoaXMuX21vdmVTZWxlY3Rpb25NYXhpbXVtUmlnaHRPZmZz
ZXQsIGV2ZW50LnBhZ2VYKSk7CiAKLSAgICAgICAgICAgIHZhciBvZmZzZXRUaW1lID0gKGN1cnJl
bnRNb3VzZVBvc2l0aW9uIC0gdGhpcy5fbGFzdE1vdXNlUG9zaXRpb24pICogdGhpcy5zZWNvbmRz
UGVyUGl4ZWw7Ci0gICAgICAgICAgICB2YXIgc2VsZWN0aW9uRHVyYXRpb24gPSB0aGlzLnNlbGVj
dGlvbkVuZFRpbWUgLSB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZTsKLSAgICAgICAgICAgIHZhciBv
bGRTZWxlY3Rpb25TdGFydFRpbWUgPSB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZTsKKyAgICAgICAg
ICAgIGxldCBvZmZzZXRUaW1lID0gKGN1cnJlbnRNb3VzZVBvc2l0aW9uIC0gdGhpcy5fbGFzdE1v
dXNlUG9zaXRpb24pICogdGhpcy5zZWNvbmRzUGVyUGl4ZWw7CisgICAgICAgICAgICBsZXQgc2Vs
ZWN0aW9uRHVyYXRpb24gPSB0aGlzLnNlbGVjdGlvbkVuZFRpbWUgLSB0aGlzLnNlbGVjdGlvblN0
YXJ0VGltZTsKKyAgICAgICAgICAgIGxldCBvbGRTZWxlY3Rpb25TdGFydFRpbWUgPSB0aGlzLnNl
bGVjdGlvblN0YXJ0VGltZTsKIAogICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUg
PSBNYXRoLm1heCh0aGlzLnN0YXJ0VGltZSwgTWF0aC5taW4odGhpcy5zZWxlY3Rpb25TdGFydFRp
bWUgKyBvZmZzZXRUaW1lLCB0aGlzLmVuZFRpbWUgLSBzZWxlY3Rpb25EdXJhdGlvbikpOwogICAg
ICAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmRUaW1lID0gdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUg
KyBzZWxlY3Rpb25EdXJhdGlvbjsKQEAgLTcxOSwyNiArNzAzLDI2IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgICAgICAgICAvLyBXaGVuIHNuYXBwaW5nIHdlIG5lZWQgdG8gY2hlY2sg
dGhlIG1vdXNlIHBvc2l0aW9uIGRlbHRhIHJlbGF0aXZlIHRvIHRoZSBsYXN0IHNuYXAsIHJhdGhl
ciB0aGFuIHRoZQogICAgICAgICAgICAgICAgIC8vIGxhc3QgbW91c2UgbW92ZS4gSWYgYSBzbmFw
IG9jY3VycyB3ZSBhZGp1c3QgZm9yIHRoZSBhbW91bnQgdGhlIGN1cnNvciBkcmlmdGVkLCBzbyB0
aGF0IHRoZSBtb3VzZQogICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRo
ZSBzZWxlY3Rpb24gcmVtYWlucyBjb25zdGFudC4KLSAgICAgICAgICAgICAgICB2YXIgc25hcE9m
ZnNldCA9IHRoaXMuc2VsZWN0aW9uU3RhcnRUaW1lIC0gb2xkU2VsZWN0aW9uU3RhcnRUaW1lOwor
ICAgICAgICAgICAgICAgIGxldCBzbmFwT2Zmc2V0ID0gdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUg
LSBvbGRTZWxlY3Rpb25TdGFydFRpbWU7CiAgICAgICAgICAgICAgICAgaWYgKCFzbmFwT2Zmc2V0
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICB2YXIgcG9z
aXRpb25EcmlmdCA9IChvZmZzZXRUaW1lIC0gc25hcE9mZnNldCAqIHRoaXMuc25hcEludGVydmFs
KSAvIHRoaXMuc2Vjb25kc1BlclBpeGVsOworICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbkRy
aWZ0ID0gKG9mZnNldFRpbWUgLSBzbmFwT2Zmc2V0ICogdGhpcy5zbmFwSW50ZXJ2YWwpIC8gdGhp
cy5zZWNvbmRzUGVyUGl4ZWw7CiAgICAgICAgICAgICAgICAgY3VycmVudE1vdXNlUG9zaXRpb24g
LT0gcG9zaXRpb25EcmlmdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdGhpcy5fbGFz
dE1vdXNlUG9zaXRpb24gPSBjdXJyZW50TW91c2VQb3NpdGlvbjsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHZhciBjdXJyZW50TW91c2VQb3NpdGlvbiA9IGV2ZW50LnBhZ2VYIC0gdGhp
cy5fcnVsZXJCb3VuZGluZ0NsaWVudFJlY3QubGVmdDsKKyAgICAgICAgICAgIGN1cnJlbnRNb3Vz
ZVBvc2l0aW9uID0gZXZlbnQucGFnZVggLSB0aGlzLl9ydWxlckJvdW5kaW5nQ2xpZW50UmVjdC5s
ZWZ0OwogCiAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZSA9IE1hdGgubWF4KHRo
aXMuc3RhcnRUaW1lLCB0aGlzLnN0YXJ0VGltZSArIChNYXRoLm1pbihjdXJyZW50TW91c2VQb3Np
dGlvbiwgdGhpcy5fbW91c2VEb3duUG9zaXRpb24pICogdGhpcy5zZWNvbmRzUGVyUGl4ZWwpKTsK
ICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uRW5kVGltZSA9IE1hdGgubWluKHRoaXMuc3RhcnRU
aW1lICsgKE1hdGgubWF4KGN1cnJlbnRNb3VzZVBvc2l0aW9uLCB0aGlzLl9tb3VzZURvd25Qb3Np
dGlvbikgKiB0aGlzLnNlY29uZHNQZXJQaXhlbCksIHRoaXMuZW5kVGltZSk7CiAKICAgICAgICAg
ICAgIC8vIFR1cm4gb24gY29sLXJlc2l6ZSBjdXJzb3Igc3R5bGUgb25jZSBkcmFnZ2luZyBiZWdp
bnMsIHJhdGhlciB0aGFuIG9uIHRoZSBpbml0aWFsIG1vdXNlIGRvd24uCi0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVz
aXppbmdTZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVjdGlv
blN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVj
dGlvbih0aGlzLl9lbGVtZW50LmNsaWVudFdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKKyAgICAgICAg
dGhpcy5fdXBkYXRlU2VsZWN0aW9uKHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aCwgdGhpcy5kdXJh
dGlvbik7CiAKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQu
c3RvcFByb3BhZ2F0aW9uKCk7CkBAIC03NDksNyArNzMzLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5idXR0b24gPT09IDApOwogCiAgICAgICAg
IGlmICghdGhpcy5fc2VsZWN0aW9uSXNNb3ZlKSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVzaXppbmdTZWxl
Y3Rpb25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxl
Q2xhc3NOYW1lKTsKIAogICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uRW5kVGltZSAtIHRo
aXMuc2VsZWN0aW9uU3RhcnRUaW1lIDwgdGhpcy5taW5pbXVtU2VsZWN0aW9uRHVyYXRpb24pIHsK
ICAgICAgICAgICAgICAgICAvLyBUaGUgc2VjdGlvbiBpcyBzbWFsbGVyIHRoYW4gYWxsb3dlZCwg
Z3JvdyBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBkcmFnIHRvIG1lZXQgdGhlIG1pbnVtdW0uCkBA
IC03ODksNyArNzczLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1l
bGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIHRoaXMuX2RyYWdIYW5kbGVJc1N0YXJ0VGltZSA9IGV2ZW50LnRhcmdldCA9
PT0gdGhpcy5fbGVmdFNlbGVjdGlvbkhhbmRsZUVsZW1lbnQ7Ci0gICAgICAgIHRoaXMuX21vdXNl
RG93blBvc2l0aW9uID0gZXZlbnQucGFnZVggLSB0aGlzLl9lbGVtZW50LnRvdGFsT2Zmc2V0TGVm
dDsKKyAgICAgICAgdGhpcy5fbW91c2VEb3duUG9zaXRpb24gPSBldmVudC5wYWdlWCAtIHRoaXMu
ZWxlbWVudC50b3RhbE9mZnNldExlZnQ7CiAKICAgICAgICAgdGhpcy5fc2VsZWN0aW9uSGFuZGxl
TW91c2VNb3ZlRXZlbnRMaXN0ZW5lciA9IHRoaXMuX2hhbmRsZVNlbGVjdGlvbkhhbmRsZU1vdXNl
TW92ZS5iaW5kKHRoaXMpOwogICAgICAgICB0aGlzLl9zZWxlY3Rpb25IYW5kbGVNb3VzZVVwRXZl
bnRMaXN0ZW5lciA9IHRoaXMuX2hhbmRsZVNlbGVjdGlvbkhhbmRsZU1vdXNlVXAuYmluZCh0aGlz
KTsKQEAgLTc5OCw3ICs3ODIsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNz
IFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGRvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX3NlbGVjdGlvbkhhbmRsZU1v
dXNlTW92ZUV2ZW50TGlzdGVuZXIpOwogICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZXVwIiwgdGhpcy5fc2VsZWN0aW9uSGFuZGxlTW91c2VVcEV2ZW50TGlzdGVuZXIpOwog
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxp
bmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVzaXppbmdT
ZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQo
KTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CkBAIC04MDgsMTkgKzc5MiwxOSBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVu
dC5idXR0b24gPT09IDApOwogCi0gICAgICAgIHZhciBjdXJyZW50TW91c2VQb3NpdGlvbiA9IGV2
ZW50LnBhZ2VYIC0gdGhpcy5fZWxlbWVudC50b3RhbE9mZnNldExlZnQ7Ci0gICAgICAgIHZhciBj
dXJyZW50VGltZSA9IHRoaXMuc3RhcnRUaW1lICsgKGN1cnJlbnRNb3VzZVBvc2l0aW9uICogdGhp
cy5zZWNvbmRzUGVyUGl4ZWwpOworICAgICAgICBsZXQgY3VycmVudE1vdXNlUG9zaXRpb24gPSBl
dmVudC5wYWdlWCAtIHRoaXMuZWxlbWVudC50b3RhbE9mZnNldExlZnQ7CisgICAgICAgIGxldCBj
dXJyZW50VGltZSA9IHRoaXMuc3RhcnRUaW1lICsgKGN1cnJlbnRNb3VzZVBvc2l0aW9uICogdGhp
cy5zZWNvbmRzUGVyUGl4ZWwpOwogICAgICAgICBpZiAodGhpcy5zbmFwSW50ZXJ2YWwpCiAgICAg
ICAgICAgICBjdXJyZW50VGltZSA9IHRoaXMuX3NuYXBWYWx1ZShjdXJyZW50VGltZSk7CiAKICAg
ICAgICAgaWYgKGV2ZW50LmFsdEtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQubWV0YUtl
eSAmJiAhZXZlbnQuc2hpZnRLZXkpIHsKICAgICAgICAgICAgIC8vIFJlc2l6ZSB0aGUgc2VsZWN0
aW9uIG9uIGJvdGggc2lkZXMgd2hlbiB0aGUgT3B0aW9uIGtleXMgaXMgaGVsZCBkb3duLgogICAg
ICAgICAgICAgaWYgKHRoaXMuX2RyYWdIYW5kbGVJc1N0YXJ0VGltZSkgewotICAgICAgICAgICAg
ICAgIHZhciB0aW1lRGlmZmVyZW5jZSA9IGN1cnJlbnRUaW1lIC0gdGhpcy5zZWxlY3Rpb25TdGFy
dFRpbWU7CisgICAgICAgICAgICAgICAgbGV0IHRpbWVEaWZmZXJlbmNlID0gY3VycmVudFRpbWUg
LSB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZTsKICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlv
blN0YXJ0VGltZSA9IE1hdGgubWF4KHRoaXMuc3RhcnRUaW1lLCBNYXRoLm1pbihjdXJyZW50VGlt
ZSwgdGhpcy5zZWxlY3Rpb25FbmRUaW1lIC0gdGhpcy5taW5pbXVtU2VsZWN0aW9uRHVyYXRpb24p
KTsKICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkVuZFRpbWUgPSBNYXRoLm1pbihNYXRo
Lm1heCh0aGlzLnNlbGVjdGlvblN0YXJ0VGltZSArIHRoaXMubWluaW11bVNlbGVjdGlvbkR1cmF0
aW9uLCB0aGlzLnNlbGVjdGlvbkVuZFRpbWUgLSB0aW1lRGlmZmVyZW5jZSksIHRoaXMuZW5kVGlt
ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHZhciB0aW1lRGlmZmVy
ZW5jZSA9IGN1cnJlbnRUaW1lIC0gdGhpcy5zZWxlY3Rpb25FbmRUaW1lOworICAgICAgICAgICAg
ICAgIGxldCB0aW1lRGlmZmVyZW5jZSA9IGN1cnJlbnRUaW1lIC0gdGhpcy5zZWxlY3Rpb25FbmRU
aW1lOwogICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uRW5kVGltZSA9IE1hdGgubWluKE1h
dGgubWF4KHRoaXMuc2VsZWN0aW9uU3RhcnRUaW1lICsgdGhpcy5taW5pbXVtU2VsZWN0aW9uRHVy
YXRpb24sIGN1cnJlbnRUaW1lKSwgdGhpcy5lbmRUaW1lKTsKICAgICAgICAgICAgICAgICB0aGlz
LnNlbGVjdGlvblN0YXJ0VGltZSA9IE1hdGgubWF4KHRoaXMuc3RhcnRUaW1lLCBNYXRoLm1pbih0
aGlzLnNlbGVjdGlvblN0YXJ0VGltZSAtIHRpbWVEaWZmZXJlbmNlLCB0aGlzLnNlbGVjdGlvbkVu
ZFRpbWUgLSB0aGlzLm1pbmltdW1TZWxlY3Rpb25EdXJhdGlvbikpOwogICAgICAgICAgICAgfQpA
QCAtODMyLDcgKzgxNiw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGlt
ZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgICAgICB0
aGlzLnNlbGVjdGlvbkVuZFRpbWUgPSBNYXRoLm1pbihNYXRoLm1heCh0aGlzLnNlbGVjdGlvblN0
YXJ0VGltZSArIHRoaXMubWluaW11bVNlbGVjdGlvbkR1cmF0aW9uLCBjdXJyZW50VGltZSksIHRo
aXMuZW5kVGltZSk7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24o
dGhpcy5fZWxlbWVudC5jbGllbnRXaWR0aCwgdGhpcy5kdXJhdGlvbik7CisgICAgICAgIHRoaXMu
X3VwZGF0ZVNlbGVjdGlvbih0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMuZHVyYXRpb24p
OwogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQ
cm9wYWdhdGlvbigpOwpAQCAtODQyLDcgKzgyNiw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LmJ1dHRvbiA9PT0gMCk7CiAKLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyLlJlc2l6aW5nU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1Nl
bGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExp
c3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLl9zZWxlY3Rpb25IYW5kbGVNb3VzZU1vdmVFdmVudExp
c3RlbmVyKTsKICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIs
IHRoaXMuX3NlbGVjdGlvbkhhbmRsZU1vdXNlVXBFdmVudExpc3RlbmVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzCmluZGV4IDg3ZmY5
M2VmMTJkNDY5YzFhZDljMmIyNDEwNDA5OWVkOWYxZjNiNjQuLjNlNmFhOGRhNTJmYjAxNGU3YTk5
ZDIzMjc0YzIyZjEwOGJkZGI3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcwpAQCAtNDEsNiArNDEsMTEgQEAgV2ViSW5zcGVjdG9y
LlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBy
ZXR1cm4gdGhpcy5fZWxlbWVudDsKICAgICB9CiAKKyAgICBnZXQgaGFzUGVuZGluZ0xheW91dCgp
CisgICAgeworICAgICAgICByZXR1cm4gISF0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyOworICAgIH0KKwogICAgIGdldCBzdWJ2aWV3cygpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fc3Vidmlld3M7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264747</attachid>
            <date>2015-11-03 16:07:51 -0800</date>
            <delta_ts>2015-11-05 12:30:10 -0800</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-150703-20151103160654.patch</filename>
            <type>text/plain</type>
            <size>30436</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxOTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
YThjZjk0MWQzNWM3YzVmOTgzYjA0OWFlY2JkMTU0OGEzZGU1ZWEzLi45Mjg3NmRiNzlhZGI1ZDJl
ZTY1YTc0M2NlYmQzZjJiYWNiZGFhNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1OSBAQAogMjAxNS0xMS0wMyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBUaW1lbGluZVJ1bGVyIHRvIFZpZXcg
YmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwNzAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3KToKKyAgICAgICAgQWRkIHJ1bGVy
IGFzIGEgc3Vidmlldy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmll
dy5wcm90b3R5cGUubGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgU2VwYXJhdGUgcnVsZXIgbGF5
b3V0IG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rp
bWVsaW5lUnVsZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuc2V0IGFsbG93c0Ns
aXBwZWRMYWJlbHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90
eXBlLnNldCBmb3JtYXRMYWJlbENhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZS5zZXQgYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5zZXQgemVyb1RpbWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLnNldCBzdGFydFRp
bWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLnNldCBk
dXJhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUu
Z2V0IGVuZFRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90
eXBlLnNldCBlbmRUaW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnBy
b3RvdHlwZS5nZXQgc2Vjb25kc1BlclBpeGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZS5zZXQgc2Vjb25kc1BlclBpeGVsKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS51cGRhdGVMYXlvdXRJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUubmVlZHNMYXlvdXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLmxheW91dCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuX25lZWRzTWFy
a2VyTGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlw
ZS5fbmVlZHNTZWxlY3Rpb25MYXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIucHJvdG90eXBlLl9yZWNhbGN1bGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlci5wcm90b3R5cGUuX3VwZGF0ZU1hcmtlcnMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl91cGRhdGVTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZURvd24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9oYW5kbGVNb3Vz
ZU1vdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9o
YW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3Rv
dHlwZS5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VEb3duKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VN
b3ZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5faGFu
ZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VVcCk6CisgICAgICAgIFJlbmFtZWQgbWV0aG9kcyB0byBt
YXRjaCBuZXcgVmlldy5wcm90b3R5cGUgbWV0aG9kcyBhbmQgY2xlYW5lZCB1cAorICAgICAgICBz
b21lIGNvZGUgdG8gdXNlIGxldCwgZm9yLi4ub2YuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICBObyBs
b25nZXIgbmVlZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90
eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZWQgdG8gbGF5b3V0LCBv
dmVycmlkZXMgVmlldy5wcm90b3R5cGUubGF5b3V0LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIucHJvdG90eXBlLl9uZWVkc0xheW91dCk6IERlbGV0ZWQuCisgICAgICAgIFJl
bmFtZWQgdG8gbmVlZHNMYXlvdXQsIG92ZXJyaWRlcyBWaWV3LnByb3RvdHlwZS5uZWVkc0xheW91
dC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5fbmVlZHNN
YXJrZXJMYXlvdXQudXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZS5fbmVlZHNTZWxlY3Rpb25MYXlvdXQudXBkYXRlKTogRGVsZXRl
ZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5nZXQgaXNMYXlvdXRQZW5kaW5nKToKKyAgICAgICAg
QWRkZWQgZ2V0dGVyIHRvIGNoZWNrIGZvciBwZW5kaW5nIGxheW91dC4KKworMjAxNS0xMS0wMyAg
TWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ3JlYXRlIFZpZXcgYmFzZSBjbGFzcywgcmVmYWN0b3Igc29tZSBjb3JlIHZpZXcgY2xhc3Nl
cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5MTg2
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lUnVsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UaW1lbGluZVJ1bGVyLmpzCmluZGV4IDIzZGQyMGU3OWJlMTE2ZmU1YjEzYTA1NGYxNDli
NzgzNzQzMzAwZDIuLjNmOTZlOGQzOGY1Yzc4OTYxZjQ3MWJhMmFiMWY5ODVmZDgzNWNjZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lUnVsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVSdWxlci5qcwpAQCAtMjMsMjIgKzIzLDIxIEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBj
bGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICBzdXBlcigpOwog
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0aW1lbGluZS1ydWxlciIpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGltZWxpbmUtcnVsZXIiKTsKIAog
ICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CiAgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaGVhZGVyIik7
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxlbWVudCk7
CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJFbGVtZW50KTsK
IAogICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJtYXJr
ZXJzIik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFya2Vyc0Vs
ZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFya2Vyc0Vs
ZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX3plcm9UaW1lID0gMDsKICAgICAgICAgdGhpcy5fc3Rh
cnRUaW1lID0gMDsKQEAgLTU5LDExICs1OCw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVy
ID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAg
IC8vIFB1YmxpYwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IGFsbG93c0NsaXBwZWRMYWJlbHMoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93c0NsaXBwZWRMYWJlbHM7CkBAIC03Niw3ICs3
MCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICB0aGlzLl9hbGxvd3NDbGlwcGVk
TGFiZWxzID0geCB8fCBmYWxzZTsKIAotICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOworICAg
ICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgc2V0IGZvcm1hdExhYmVsQ2Fs
bGJhY2soeCkKQEAgLTg4LDcgKzgyLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBj
bGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAg
IHRoaXMuX2Zvcm1hdExhYmVsQ2FsbGJhY2sgPSB4IHx8IG51bGw7CiAKLSAgICAgICAgdGhpcy5f
bmVlZHNMYXlvdXQoKTsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogICAgIH0KIAogICAg
IGdldCBhbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24oKQpAQCAtMTA1LDcgKzk5LDcgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogCiAgICAgICAgIGlmICh4KSB7CiAgICAgICAgICAgICB0aGlzLl9tb3Vz
ZURvd25FdmVudExpc3RlbmVyID0gdGhpcy5faGFuZGxlTW91c2VEb3duLmJpbmQodGhpcyk7Ci0g
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRo
aXMuX21vdXNlRG93bkV2ZW50TGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93bkV2ZW50TGlzdGVuZXIp
OwogCiAgICAgICAgICAgICB0aGlzLl9sZWZ0U2hhZGVkQXJlYUVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgIHRoaXMuX2xlZnRTaGFkZWRBcmVhRWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJzaGFkZWQtYXJlYSIpOwpAQCAtMTMwLDcgKzEyNCw3IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICAgICAgdGhpcy5fbmVlZHNTZWxlY3Rpb25MYXlv
dXQoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duRXZlbnRMaXN0ZW5lcik7
CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3du
IiwgdGhpcy5fbW91c2VEb3duRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fbW91c2VEb3duRXZlbnRMaXN0ZW5lcjsKIAogICAgICAgICAgICAgdGhpcy5fbGVmdFNoYWRl
ZEFyZWFFbGVtZW50LnJlbW92ZSgpOwpAQCAtMTY5LDcgKzE2Myw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKIAogICAgICAgICB0aGlzLl96ZXJvVGltZSA9IHggfHwgMDsKIAotICAgICAgICB0aGlz
Ll9uZWVkc0xheW91dCgpOworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAg
ICAgZ2V0IHN0YXJ0VGltZSgpCkBAIC0xODcsNyArMTgxLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogICAgICAgICBpZiAoIWlzTmFOKHRoaXMuX2R1cmF0aW9uKSkKICAgICAgICAgICAgIHRoaXMu
X2VuZFRpbWUgPSB0aGlzLl9zdGFydFRpbWUgKyB0aGlzLl9kdXJhdGlvbjsKIAotICAgICAgICB0
aGlzLl9uZWVkc0xheW91dCgpOworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQog
CiAgICAgZ2V0IGR1cmF0aW9uKCkKQEAgLTIxMCwxMiArMjA0LDEyIEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLl9lbmRUaW1lUGlubmVkID0g
ZmFsc2U7CiAKLSAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKKyAgICAgICAgdGhpcy5uZWVk
c0xheW91dCgpOwogICAgIH0KIAogICAgIGdldCBlbmRUaW1lKCkKICAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5fZW5kVGltZVBpbm5lZCAmJiB0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyKQorICAgICAgICBpZiAoIXRoaXMuX2VuZFRpbWVQaW5uZWQgJiYgdGhpcy5sYXlvdXRQ
ZW5kaW5nKQogICAgICAgICAgICAgdGhpcy5fcmVjYWxjdWxhdGUoKTsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2VuZFRpbWU7CiAgICAgfQpAQCAtMjI4LDEyICsyMjIsMTIgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogICAgICAgICB0aGlzLl9lbmRUaW1lID0geCB8fCAwOwogICAgICAgICB0aGlzLl9l
bmRUaW1lUGlubmVkID0gdHJ1ZTsKIAotICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOworICAg
ICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgZ2V0IHNlY29uZHNQZXJQaXhl
bCgpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRp
ZmllcikKKyAgICAgICAgaWYgKHRoaXMubGF5b3V0UGVuZGluZykKICAgICAgICAgICAgIHRoaXMu
X3JlY2FsY3VsYXRlKCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWNvbmRzUGVyUGl4ZWw7CiAg
ICAgfQpAQCAtMjQ3LDcgKzI0MSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xh
c3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhp
cy5fZW5kVGltZVBpbm5lZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9jdXJyZW50U2xpY2VUaW1l
ID0gMDsKIAotICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOworICAgICAgICB0aGlzLm5lZWRz
TGF5b3V0KCk7CiAgICAgfQogCiAgICAgZ2V0IHNuYXBJbnRlcnZhbCgpCkBAIC0zMzQsMjcgKzMy
OCw2MSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl9tYXJrZXJF
bGVtZW50TWFwLmdldChtYXJrZXIpIHx8IG51bGw7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0
KCkKKyAgICB1cGRhdGVMYXlvdXRJZk5lZWRlZCgpCiAgICAgewotICAgICAgICBpZiAodGhpcy5f
c2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikgewotICAgICAgICAgICAgY2FuY2VsQW5p
bWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7Ci0gICAg
ICAgICAgICBkZWxldGUgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcjsKKyAg
ICAgICAgLy8gSWYgYSBsYXlvdXQgaXMgcGVuZGluZyB3ZSBjYW4gbGV0IHRoZSBiYXNlIGNsYXNz
IGhhbmRsZSBpdCBhbmQgcmV0dXJuLCBzaW5jZSB0aGF0IHdpbGwgdXBkYXRlCisgICAgICAgIC8v
IG1hcmtlcnMgYW5kIHRoZSBzZWxlY3Rpb24gYXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgaWYg
KHRoaXMubGF5b3V0UGVuZGluZykgeworICAgICAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0SWZO
ZWVkZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHZhciB2
aXNpYmxlV2lkdGggPSB0aGlzLl9yZWNhbGN1bGF0ZSgpOworICAgICAgICBsZXQgdmlzaWJsZVdp
ZHRoID0gdGhpcy5fcmVjYWxjdWxhdGUoKTsKICAgICAgICAgaWYgKHZpc2libGVXaWR0aCA8PSAw
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBkdXJhdGlvbiA9IHRoaXMuZHVy
YXRpb247CisgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlTWFya2Vycyh2aXNpYmxlV2lkdGgsIHRo
aXMuZHVyYXRpb24pOwogCi0gICAgICAgIHZhciBwaXhlbHNQZXJTZWNvbmQgPSB2aXNpYmxlV2lk
dGggLyBkdXJhdGlvbjsKKyAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91
dFVwZGF0ZUlkZW50aWZpZXIpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24odmlz
aWJsZVdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKKyAgICB9CiAKLSAgICAgICAgLy8gQ2FsY3VsYXRl
IGEgZGl2aWRlciBjb3VudCBiYXNlZCBvbiB0aGUgbWF4aW11bSBhbGxvd2VkIGRpdmlkZXIgZGVu
c2l0eS4KLSAgICAgICAgdmFyIGRpdmlkZXJDb3VudCA9IE1hdGgucm91bmQodmlzaWJsZVdpZHRo
IC8gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuTWluaW11bURpdmlkZXJTcGFjaW5nKTsKKyAg
ICBuZWVkc0xheW91dCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5sYXlvdXRQZW5kaW5nKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRNYXJrZXJM
YXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFt
ZSh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsKKyAgICAgICAg
ICAgIHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmlu
ZWQ7CisgICAgICAgIH0KIAorICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5
b3V0VXBkYXRlSWRlbnRpZmllcikgeworICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUo
dGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7CisgICAgICAg
ICAgICB0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gdW5k
ZWZpbmVkOworICAgICAgICB9CisKKyAgICAgICAgc3VwZXIubmVlZHNMYXlvdXQoKTsKKyAgICB9
CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGxheW91dCgpCisgICAgeworICAgICAgICBsZXQg
dmlzaWJsZVdpZHRoID0gdGhpcy5fcmVjYWxjdWxhdGUoKTsKKyAgICAgICAgaWYgKHZpc2libGVX
aWR0aCA8PSAwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBkdXJhdGlvbiA9
IHRoaXMuZHVyYXRpb247CisgICAgICAgIGxldCBwaXhlbHNQZXJTZWNvbmQgPSB2aXNpYmxlV2lk
dGggLyBkdXJhdGlvbjsKKworICAgICAgICAvLyBDYWxjdWxhdGUgYSBkaXZpZGVyIGNvdW50IGJh
c2VkIG9uIHRoZSBtYXhpbXVtIGFsbG93ZWQgZGl2aWRlciBkZW5zaXR5LgorICAgICAgICBsZXQg
ZGl2aWRlckNvdW50ID0gTWF0aC5yb3VuZCh2aXNpYmxlV2lkdGggLyBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlci5NaW5pbXVtRGl2aWRlclNwYWNpbmcpOworICAgICAgICBsZXQgc2xpY2VUaW1l
OwogICAgICAgICBpZiAodGhpcy5fZW5kVGltZVBpbm5lZCB8fCAhdGhpcy5fY3VycmVudFNsaWNl
VGltZSkgewogICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzbGljZSB0aW1lIGJhc2VkIG9u
IHRoZSByb3VnaCBkaXZpZGVyIGNvdW50IGFuZCB0aGUgdGltZSBzcGFuLgotICAgICAgICAgICAg
dmFyIHNsaWNlVGltZSA9IGR1cmF0aW9uIC8gZGl2aWRlckNvdW50OworICAgICAgICAgICAgc2xp
Y2VUaW1lID0gZHVyYXRpb24gLyBkaXZpZGVyQ291bnQ7CiAKICAgICAgICAgICAgIC8vIFNuYXAg
dGhlIHNsaWNlIHRpbWUgdG8gYSBuZWFyZXN0IG51bWJlciAoZS5nLiAwLjEsIDAuMiwgMC41LCAx
LCAyLCA1LCAxMCwgMjAsIDUwLCBldGMuKQogICAgICAgICAgICAgc2xpY2VUaW1lID0gTWF0aC5w
b3coMTAsIE1hdGguY2VpbChNYXRoLmxvZyhzbGljZVRpbWUpIC8gTWF0aC5MTjEwKSk7CkBAIC0z
NjYsMTEgKzM5NCwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVs
aW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICB0aGlzLl9j
dXJyZW50U2xpY2VUaW1lID0gc2xpY2VUaW1lOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgLy8gUmV1c2UgdGhlIGxhc3Qgc2xpY2UgdGltZSBzaW5jZSB0aGUgdGltZSBkdXJhdGlvbiBk
b2VzIG5vdCBzY2FsZSB0byBmaXQgd2hlbiB0aGUgZW5kIHRpbWUgaXNuJ3QgcGlubmVkLgotICAg
ICAgICAgICAgdmFyIHNsaWNlVGltZSA9IHRoaXMuX2N1cnJlbnRTbGljZVRpbWU7CisgICAgICAg
ICAgICBzbGljZVRpbWUgPSB0aGlzLl9jdXJyZW50U2xpY2VUaW1lOwogICAgICAgICB9CiAKLSAg
ICAgICAgdmFyIGZpcnN0RGl2aWRlclRpbWUgPSAoTWF0aC5jZWlsKCh0aGlzLl9zdGFydFRpbWUg
LSB0aGlzLl96ZXJvVGltZSkgLyBzbGljZVRpbWUpICogc2xpY2VUaW1lKSArIHRoaXMuX3plcm9U
aW1lOwotICAgICAgICB2YXIgbGFzdERpdmlkZXJUaW1lID0gdGhpcy5fZW5kVGltZTsKKyAgICAg
ICAgbGV0IGZpcnN0RGl2aWRlclRpbWUgPSAoTWF0aC5jZWlsKCh0aGlzLl9zdGFydFRpbWUgLSB0
aGlzLl96ZXJvVGltZSkgLyBzbGljZVRpbWUpICogc2xpY2VUaW1lKSArIHRoaXMuX3plcm9UaW1l
OworICAgICAgICBsZXQgbGFzdERpdmlkZXJUaW1lID0gdGhpcy5fZW5kVGltZTsKIAogICAgICAg
ICAvLyBDYWxjdWxhdGUgdGhlIGRpdmlkZXIgY291bnQgbm93IGJhc2VkIG9uIHRoZSBmaW5hbCBz
bGljZSB0aW1lLgogICAgICAgICBkaXZpZGVyQ291bnQgPSBNYXRoLmNlaWwoKGxhc3REaXZpZGVy
VGltZSAtIGZpcnN0RGl2aWRlclRpbWUpIC8gc2xpY2VUaW1lKTsKQEAgLTM3OSw3ICs0MDcsNyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGlmICghdGhpcy5fZW5kVGltZVBpbm5lZCkK
ICAgICAgICAgICAgICsrZGl2aWRlckNvdW50OwogCi0gICAgICAgIHZhciBkaXZpZGVyRGF0YSA9
IHsKKyAgICAgICAgbGV0IGRpdmlkZXJEYXRhID0gewogICAgICAgICAgICAgY291bnQ6IGRpdmlk
ZXJDb3VudCwKICAgICAgICAgICAgIGZpcnN0VGltZTogZmlyc3REaXZpZGVyVGltZSwKICAgICAg
ICAgICAgIGxhc3RUaW1lOiBsYXN0RGl2aWRlclRpbWUsCkBAIC0zOTMsOSArNDIxLDggQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX2N1cnJlbnREaXZpZGVycyA9IGRpdmlk
ZXJEYXRhOwogCi0gICAgICAgIHZhciBtYXJrZXJEaXZpZGVycyA9IHRoaXMuX21hcmtlcnNFbGVt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi4iICsgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuRGl2
aWRlckVsZW1lbnRTdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICAgICAgdmFyIGRpdmlkZXJFbGVtZW50
ID0gdGhpcy5faGVhZGVyRWxlbWVudC5maXJzdENoaWxkOworICAgICAgICBsZXQgbWFya2VyRGl2
aWRlcnMgPSB0aGlzLl9tYXJrZXJzRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuIiArIFdlYklu
c3BlY3Rvci5UaW1lbGluZVJ1bGVyLkRpdmlkZXJFbGVtZW50U3R5bGVDbGFzc05hbWUpOworICAg
ICAgICBsZXQgZGl2aWRlckVsZW1lbnQgPSB0aGlzLl9oZWFkZXJFbGVtZW50LmZpcnN0Q2hpbGQ7
CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gZGl2aWRlckNvdW50OyArK2kpIHsKICAg
ICAgICAgICAgIGlmICghZGl2aWRlckVsZW1lbnQpIHsKQEAgLTQwMywyMSArNDMwLDIwIEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgICAgICBkaXZpZGVyRWxlbWVudC5jbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5EaXZpZGVyRWxlbWVudFN0eWxlQ2xhc3NO
YW1lOwogICAgICAgICAgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2
aWRlckVsZW1lbnQpOwogCi0gICAgICAgICAgICAgICAgdmFyIGxhYmVsRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgICAgIGxldCBsYWJlbEVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgICAgICBsYWJl
bEVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuRGl2aWRlckxh
YmVsRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwogICAgICAgICAgICAgICAgIGRpdmlkZXJFbGVtZW50
LmFwcGVuZENoaWxkKGxhYmVsRWxlbWVudCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IHZhciBtYXJrZXJEaXZpZGVyRWxlbWVudCA9IG1hcmtlckRpdmlkZXJzW2ldOworICAgICAgICAg
ICAgbGV0IG1hcmtlckRpdmlkZXJFbGVtZW50ID0gbWFya2VyRGl2aWRlcnNbaV07CiAgICAgICAg
ICAgICBpZiAoIW1hcmtlckRpdmlkZXJFbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgbWFya2Vy
RGl2aWRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAg
ICAgICAgICBtYXJrZXJEaXZpZGVyRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlci5EaXZpZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwogICAgICAgICAgICAgICAg
IHRoaXMuX21hcmtlcnNFbGVtZW50LmFwcGVuZENoaWxkKG1hcmtlckRpdmlkZXJFbGVtZW50KTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdmFyIGRpdmlkZXJUaW1lID0gZmlyc3REaXZp
ZGVyVGltZSArIChzbGljZVRpbWUgKiBpKTsKLQotICAgICAgICAgICAgdmFyIG5ld0xlZnRQb3Np
dGlvbiA9IChkaXZpZGVyVGltZSAtIHRoaXMuX3N0YXJ0VGltZSkgLyBkdXJhdGlvbjsKKyAgICAg
ICAgICAgIGxldCBkaXZpZGVyVGltZSA9IGZpcnN0RGl2aWRlclRpbWUgKyAoc2xpY2VUaW1lICog
aSk7CisgICAgICAgICAgICBsZXQgbmV3TGVmdFBvc2l0aW9uID0gKGRpdmlkZXJUaW1lIC0gdGhp
cy5fc3RhcnRUaW1lKSAvIGR1cmF0aW9uOwogCiAgICAgICAgICAgICBpZiAoIXRoaXMuX2FsbG93
c0NsaXBwZWRMYWJlbHMpIHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBhbGxvdyBkaXZpZGVy
cyB1bmRlciAwJSB3aGVyZSB0aGV5IHdpbGwgYmUgY29tcGxldGVseSBoaWRkZW4uCkBAIC00NDQs
NyArNDcwLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1
bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIC8vIFJlbW92ZSBleHRy
YSBkaXZpZGVycy4KICAgICAgICAgd2hpbGUgKGRpdmlkZXJFbGVtZW50KSB7Ci0gICAgICAgICAg
ICB2YXIgbmV4dERpdmlkZXJFbGVtZW50ID0gZGl2aWRlckVsZW1lbnQubmV4dFNpYmxpbmc7Cisg
ICAgICAgICAgICBsZXQgbmV4dERpdmlkZXJFbGVtZW50ID0gZGl2aWRlckVsZW1lbnQubmV4dFNp
Ymxpbmc7CiAgICAgICAgICAgICBkaXZpZGVyRWxlbWVudC5yZW1vdmUoKTsKICAgICAgICAgICAg
IGRpdmlkZXJFbGVtZW50ID0gbmV4dERpdmlkZXJFbGVtZW50OwogICAgICAgICB9CkBAIC00NTYs
NjcgKzQ4MiwyNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5l
UnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNl
bGVjdGlvbih2aXNpYmxlV2lkdGgsIGR1cmF0aW9uKTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlv
dXRJZk5lZWRlZCgpCi0gICAgewotICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIG1haW4gbGF5b3V0
IHNjaGVkdWxlZCB3ZSBjYW4ganVzdCB1cGRhdGUgbGF5b3V0IGFuZCByZXR1cm4sIHNpbmNlIHRo
YXQKLSAgICAgICAgLy8gd2lsbCB1cGRhdGUgbWFya2VycyBhbmQgdGhlIHNlbGVjdGlvbiBhdCB0
aGUgc2FtZSB0aW1lLgotICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRl
bnRpZmllcikgewotICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLl9l
bGVtZW50LmNsaWVudFdpZHRoOwotICAgICAgICBpZiAodmlzaWJsZVdpZHRoIDw9IDApCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91
dFVwZGF0ZUlkZW50aWZpZXIpCi0gICAgICAgICAgICB0aGlzLl91cGRhdGVNYXJrZXJzKHZpc2li
bGVXaWR0aCwgdGhpcy5kdXJhdGlvbik7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFNl
bGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIpCi0gICAgICAgICAgICB0aGlzLl91cGRhdGVT
ZWxlY3Rpb24odmlzaWJsZVdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKLSAgICB9Ci0KICAgICAvLyBQ
cml2YXRlCiAKLSAgICBfbmVlZHNMYXlvdXQoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Nj
aGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsK
LSAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZE1hcmtlckxh
eW91dFVwZGF0ZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NjaGVkdWxl
ZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
dGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllcikgewotICAgICAg
ICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0
VXBkYXRlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fc2NoZWR1bGVkU2Vs
ZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllcjsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMu
X3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
dGhpcy51cGRhdGVMYXlvdXQuYmluZCh0aGlzKSk7Ci0gICAgfQotCiAgICAgX25lZWRzTWFya2Vy
TGF5b3V0KCkKICAgICB7CiAgICAgICAgIC8vIElmIGxheW91dCBpcyBzY2hlZHVsZWQsIGFib3J0
IHNpbmNlIG1hcmtlcnMgd2lsbCBiZSB1cGRhdGVkIHdoZW4gbGF5b3V0IGhhcHBlbnMuCi0gICAg
ICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQorICAgICAgICBp
ZiAodGhpcy5sYXlvdXRQZW5kaW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlm
ICh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVy
OworICAgICAgICB0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0g
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxl
ZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7CiAKLSAgICAgICAgICAg
IHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLl9lbGVtZW50LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgbGV0IHZpc2libGVXaWR0aCA9IHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aDsKICAgICAgICAg
ICAgIGlmICh2aXNpYmxlV2lkdGggPD0gMCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZU1hcmtlcnModmlzaWJsZVdpZHRoLCB0aGlzLmR1cmF0aW9u
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91dFVwZGF0
ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlLmJpbmQodGhpcykpOwor
ICAgICAgICB9KTsKICAgICB9CiAKICAgICBfbmVlZHNTZWxlY3Rpb25MYXlvdXQoKQpAQCAtNTI1
LDM2ICs1MTAsMzQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGlu
ZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIC8vIElmIGxheW91dCBpcyBzY2hlZHVsZWQsIGFib3J0IHNpbmNlIHRoZSBzZWxl
Y3Rpb24gd2lsbCBiZSB1cGRhdGVkIHdoZW4gbGF5b3V0IGhhcHBlbnMuCi0gICAgICAgIGlmICh0
aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQorICAgICAgICBpZiAodGhpcy5s
YXlvdXRQZW5kaW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICh0aGlzLl9z
Y2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGRlbGV0ZSB0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVyOwor
ICAgICAgICB0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVyID0g
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxl
ZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7CiAKLSAgICAgICAg
ICAgIHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLl9lbGVtZW50LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgbGV0IHZpc2libGVXaWR0aCA9IHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aDsKICAgICAg
ICAgICAgIGlmICh2aXNpYmxlV2lkdGggPD0gMCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvbih2aXNpYmxlV2lkdGgsIHRoaXMuZHVy
YXRpb24pOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5
b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGUuYmluZCh0
aGlzKSk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIF9yZWNhbGN1bGF0ZSgpCiAgICAgewot
ICAgICAgICB2YXIgdmlzaWJsZVdpZHRoID0gdGhpcy5fZWxlbWVudC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgbGV0IHZpc2libGVXaWR0aCA9IHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aDsKICAgICAg
ICAgaWYgKHZpc2libGVXaWR0aCA8PSAwKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICAg
ICAgbGV0IGR1cmF0aW9uOwogICAgICAgICBpZiAodGhpcy5fZW5kVGltZVBpbm5lZCkKLSAgICAg
ICAgICAgIHZhciBkdXJhdGlvbiA9IHRoaXMuX2VuZFRpbWUgLSB0aGlzLl9zdGFydFRpbWU7Cisg
ICAgICAgICAgICBkdXJhdGlvbiA9IHRoaXMuX2VuZFRpbWUgLSB0aGlzLl9zdGFydFRpbWU7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhciBkdXJhdGlvbiA9IHZpc2libGVXaWR0aCAqIHRo
aXMuX3NlY29uZHNQZXJQaXhlbDsKKyAgICAgICAgICAgIGR1cmF0aW9uID0gdmlzaWJsZVdpZHRo
ICogdGhpcy5fc2Vjb25kc1BlclBpeGVsOwogCiAgICAgICAgIHRoaXMuX3NlY29uZHNQZXJQaXhl
bCA9IGR1cmF0aW9uIC8gdmlzaWJsZVdpZHRoOwogCkBAIC01ODAsMjcgKzU2MywyNyBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTWFya2Vy
TGF5b3V0VXBkYXRlSWRlbnRpZmllcikgewogICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJh
bWUodGhpcy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7Ci0gICAgICAg
ICAgICBkZWxldGUgdGhpcy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRlSWRlbnRpZmllcjsK
KyAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXIg
PSB1bmRlZmluZWQ7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9tYXJrZXJFbGVtZW50TWFw
LmZvckVhY2goZnVuY3Rpb24obWFya2VyRWxlbWVudCwgbWFya2VyKSB7Ci0gICAgICAgICAgICB2
YXIgbmV3TGVmdFBvc2l0aW9uID0gKG1hcmtlci50aW1lIC0gdGhpcy5fc3RhcnRUaW1lKSAvIGR1
cmF0aW9uOworICAgICAgICBmb3IgKGxldCBbbWFya2VyLCBtYXJrZXJFbGVtZW50XSBvZiB0aGlz
Ll9tYXJrZXJFbGVtZW50TWFwKSB7CisgICAgICAgICAgICBsZXQgbmV3TGVmdFBvc2l0aW9uID0g
KG1hcmtlci50aW1lIC0gdGhpcy5fc3RhcnRUaW1lKSAvIGR1cmF0aW9uOwogCiAgICAgICAgICAg
ICB0aGlzLl91cGRhdGVQb3NpdGlvbk9mRWxlbWVudChtYXJrZXJFbGVtZW50LCBuZXdMZWZ0UG9z
aXRpb24sIHZpc2libGVXaWR0aCk7CiAKICAgICAgICAgICAgIGlmICghbWFya2VyRWxlbWVudC5w
YXJlbnROb2RlKQogICAgICAgICAgICAgICAgIHRoaXMuX21hcmtlcnNFbGVtZW50LmFwcGVuZENo
aWxkKG1hcmtlckVsZW1lbnQpOwotICAgICAgICB9LCB0aGlzKTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIF91cGRhdGVTZWxlY3Rpb24odmlzaWJsZVdpZHRoLCBkdXJhdGlvbikKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVy
KSB7CiAgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRTZWxl
Y3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9z
Y2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVyOworICAgICAgICAgICAgdGhp
cy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHVuZGVmaW5lZDsK
ICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlci5BbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb25TdHlsZUNsYXNz
TmFtZSwgdGhpcy5fYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKTsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC50b2dnbGUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuQWxsb3dzVGlt
ZVJhbmdlU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUsIHRoaXMuX2FsbG93c1RpbWVSYW5nZVNlbGVj
dGlvbik7CiAKICAgICAgICAgaWYgKCF0aGlzLl9hbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24pCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC02MzIsMTEgKzYxNSwxMSBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAgICAgICAgIHRoaXMuX3JpZ2h0U2VsZWN0aW9uSGFuZGxlRWxlbWVudC50aXRsZSA9IGZv
cm1hdHRlZEVuZFRpbWVUZXh0OwogCiAgICAgICAgIGlmICghdGhpcy5fc2VsZWN0aW9uRHJhZ0Vs
ZW1lbnQucGFyZW50Tm9kZSkgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9zZWxlY3Rpb25EcmFnRWxlbWVudCk7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTaGFkZWRBcmVhRWxlbWVudCk7Ci0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTZWxlY3Rpb25IYW5kbGVFbGVtZW50
KTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRTaGFk
ZWRBcmVhRWxlbWVudCk7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX3JpZ2h0U2VsZWN0aW9uSGFuZGxlRWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VsZWN0aW9uRHJhZ0VsZW1lbnQpOworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTaGFkZWRBcmVhRWxlbWVudCk7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGVmdFNlbGVjdGlvbkhh
bmRsZUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X3JpZ2h0U2hhZGVkQXJlYUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX3JpZ2h0U2VsZWN0aW9uSGFuZGxlRWxlbWVudCk7CiAgICAgICAgIH0KIAog
ICAgICAgICB0aGlzLl9kaXNwYXRjaFRpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWRFdmVudCgpOwpA
QCAtNjgwLDcgKzY2Myw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGlt
ZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICB0aGlzLl9zZWxlY3Rpb25Jc01vdmUgPSBldmVudC50YXJnZXQgPT09IHRo
aXMuX3NlbGVjdGlvbkRyYWdFbGVtZW50OwotICAgICAgICB0aGlzLl9ydWxlckJvdW5kaW5nQ2xp
ZW50UmVjdCA9IHRoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAg
IHRoaXMuX3J1bGVyQm91bmRpbmdDbGllbnRSZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpOwogCiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3Rpb25Jc01vdmUpIHsKICAg
ICAgICAgICAgIHRoaXMuX2xhc3RNb3VzZVBvc2l0aW9uID0gZXZlbnQucGFnZVg7CkBAIC03MDUs
MTIgKzY4OCwxMyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5l
UnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChldmVudC5idXR0b24gPT09IDApOwogCisgICAgICAgIGxldCBjdXJyZW50TW91c2VQ
b3NpdGlvbjsKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbklzTW92ZSkgewotICAgICAgICAg
ICAgdmFyIGN1cnJlbnRNb3VzZVBvc2l0aW9uID0gTWF0aC5tYXgodGhpcy5fbW92ZVNlbGVjdGlv
bk1heGltdW1MZWZ0T2Zmc2V0LCBNYXRoLm1pbih0aGlzLl9tb3ZlU2VsZWN0aW9uTWF4aW11bVJp
Z2h0T2Zmc2V0LCBldmVudC5wYWdlWCkpOworICAgICAgICAgICAgY3VycmVudE1vdXNlUG9zaXRp
b24gPSBNYXRoLm1heCh0aGlzLl9tb3ZlU2VsZWN0aW9uTWF4aW11bUxlZnRPZmZzZXQsIE1hdGgu
bWluKHRoaXMuX21vdmVTZWxlY3Rpb25NYXhpbXVtUmlnaHRPZmZzZXQsIGV2ZW50LnBhZ2VYKSk7
CiAKLSAgICAgICAgICAgIHZhciBvZmZzZXRUaW1lID0gKGN1cnJlbnRNb3VzZVBvc2l0aW9uIC0g
dGhpcy5fbGFzdE1vdXNlUG9zaXRpb24pICogdGhpcy5zZWNvbmRzUGVyUGl4ZWw7Ci0gICAgICAg
ICAgICB2YXIgc2VsZWN0aW9uRHVyYXRpb24gPSB0aGlzLnNlbGVjdGlvbkVuZFRpbWUgLSB0aGlz
LnNlbGVjdGlvblN0YXJ0VGltZTsKLSAgICAgICAgICAgIHZhciBvbGRTZWxlY3Rpb25TdGFydFRp
bWUgPSB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZTsKKyAgICAgICAgICAgIGxldCBvZmZzZXRUaW1l
ID0gKGN1cnJlbnRNb3VzZVBvc2l0aW9uIC0gdGhpcy5fbGFzdE1vdXNlUG9zaXRpb24pICogdGhp
cy5zZWNvbmRzUGVyUGl4ZWw7CisgICAgICAgICAgICBsZXQgc2VsZWN0aW9uRHVyYXRpb24gPSB0
aGlzLnNlbGVjdGlvbkVuZFRpbWUgLSB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZTsKKyAgICAgICAg
ICAgIGxldCBvbGRTZWxlY3Rpb25TdGFydFRpbWUgPSB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZTsK
IAogICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgPSBNYXRoLm1heCh0aGlzLnN0
YXJ0VGltZSwgTWF0aC5taW4odGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgKyBvZmZzZXRUaW1lLCB0
aGlzLmVuZFRpbWUgLSBzZWxlY3Rpb25EdXJhdGlvbikpOwogICAgICAgICAgICAgdGhpcy5zZWxl
Y3Rpb25FbmRUaW1lID0gdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgKyBzZWxlY3Rpb25EdXJhdGlv
bjsKQEAgLTcxOSwyNiArNzAzLDI2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xh
c3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAg
ICAgICAvLyBXaGVuIHNuYXBwaW5nIHdlIG5lZWQgdG8gY2hlY2sgdGhlIG1vdXNlIHBvc2l0aW9u
IGRlbHRhIHJlbGF0aXZlIHRvIHRoZSBsYXN0IHNuYXAsIHJhdGhlciB0aGFuIHRoZQogICAgICAg
ICAgICAgICAgIC8vIGxhc3QgbW91c2UgbW92ZS4gSWYgYSBzbmFwIG9jY3VycyB3ZSBhZGp1c3Qg
Zm9yIHRoZSBhbW91bnQgdGhlIGN1cnNvciBkcmlmdGVkLCBzbyB0aGF0IHRoZSBtb3VzZQogICAg
ICAgICAgICAgICAgIC8vIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBzZWxlY3Rpb24gcmVtYWlu
cyBjb25zdGFudC4KLSAgICAgICAgICAgICAgICB2YXIgc25hcE9mZnNldCA9IHRoaXMuc2VsZWN0
aW9uU3RhcnRUaW1lIC0gb2xkU2VsZWN0aW9uU3RhcnRUaW1lOworICAgICAgICAgICAgICAgIGxl
dCBzbmFwT2Zmc2V0ID0gdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgLSBvbGRTZWxlY3Rpb25TdGFy
dFRpbWU7CiAgICAgICAgICAgICAgICAgaWYgKCFzbmFwT2Zmc2V0KQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICB2YXIgcG9zaXRpb25EcmlmdCA9IChvZmZz
ZXRUaW1lIC0gc25hcE9mZnNldCAqIHRoaXMuc25hcEludGVydmFsKSAvIHRoaXMuc2Vjb25kc1Bl
clBpeGVsOworICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbkRyaWZ0ID0gKG9mZnNldFRpbWUg
LSBzbmFwT2Zmc2V0ICogdGhpcy5zbmFwSW50ZXJ2YWwpIC8gdGhpcy5zZWNvbmRzUGVyUGl4ZWw7
CiAgICAgICAgICAgICAgICAgY3VycmVudE1vdXNlUG9zaXRpb24gLT0gcG9zaXRpb25EcmlmdDsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdGhpcy5fbGFzdE1vdXNlUG9zaXRpb24gPSBj
dXJyZW50TW91c2VQb3NpdGlvbjsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBj
dXJyZW50TW91c2VQb3NpdGlvbiA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5fcnVsZXJCb3VuZGluZ0Ns
aWVudFJlY3QubGVmdDsKKyAgICAgICAgICAgIGN1cnJlbnRNb3VzZVBvc2l0aW9uID0gZXZlbnQu
cGFnZVggLSB0aGlzLl9ydWxlckJvdW5kaW5nQ2xpZW50UmVjdC5sZWZ0OwogCiAgICAgICAgICAg
ICB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZSA9IE1hdGgubWF4KHRoaXMuc3RhcnRUaW1lLCB0aGlz
LnN0YXJ0VGltZSArIChNYXRoLm1pbihjdXJyZW50TW91c2VQb3NpdGlvbiwgdGhpcy5fbW91c2VE
b3duUG9zaXRpb24pICogdGhpcy5zZWNvbmRzUGVyUGl4ZWwpKTsKICAgICAgICAgICAgIHRoaXMu
c2VsZWN0aW9uRW5kVGltZSA9IE1hdGgubWluKHRoaXMuc3RhcnRUaW1lICsgKE1hdGgubWF4KGN1
cnJlbnRNb3VzZVBvc2l0aW9uLCB0aGlzLl9tb3VzZURvd25Qb3NpdGlvbikgKiB0aGlzLnNlY29u
ZHNQZXJQaXhlbCksIHRoaXMuZW5kVGltZSk7CiAKICAgICAgICAgICAgIC8vIFR1cm4gb24gY29s
LXJlc2l6ZSBjdXJzb3Igc3R5bGUgb25jZSBkcmFnZ2luZyBiZWdpbnMsIHJhdGhlciB0aGFuIG9u
IHRoZSBpbml0aWFsIG1vdXNlIGRvd24uCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVzaXppbmdTZWxlY3Rpb25TdHls
ZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvbih0aGlzLl9lbGVtZW50
LmNsaWVudFdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0
aW9uKHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aCwgdGhpcy5kdXJhdGlvbik7CiAKICAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7
CkBAIC03NDksNyArNzMzLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBU
aW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBjb25zb2xl
LmFzc2VydChldmVudC5idXR0b24gPT09IDApOwogCiAgICAgICAgIGlmICghdGhpcy5fc2VsZWN0
aW9uSXNNb3ZlKSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVzaXppbmdTZWxlY3Rpb25TdHlsZUNsYXNzTmFt
ZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKIAogICAg
ICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uRW5kVGltZSAtIHRoaXMuc2VsZWN0aW9uU3RhcnRU
aW1lIDwgdGhpcy5taW5pbXVtU2VsZWN0aW9uRHVyYXRpb24pIHsKICAgICAgICAgICAgICAgICAv
LyBUaGUgc2VjdGlvbiBpcyBzbWFsbGVyIHRoYW4gYWxsb3dlZCwgZ3JvdyBpbiB0aGUgZGlyZWN0
aW9uIG9mIHRoZSBkcmFnIHRvIG1lZXQgdGhlIG1pbnVtdW0uCkBAIC03ODksNyArNzczLDcgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMu
X2RyYWdIYW5kbGVJc1N0YXJ0VGltZSA9IGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fbGVmdFNlbGVj
dGlvbkhhbmRsZUVsZW1lbnQ7Ci0gICAgICAgIHRoaXMuX21vdXNlRG93blBvc2l0aW9uID0gZXZl
bnQucGFnZVggLSB0aGlzLl9lbGVtZW50LnRvdGFsT2Zmc2V0TGVmdDsKKyAgICAgICAgdGhpcy5f
bW91c2VEb3duUG9zaXRpb24gPSBldmVudC5wYWdlWCAtIHRoaXMuZWxlbWVudC50b3RhbE9mZnNl
dExlZnQ7CiAKICAgICAgICAgdGhpcy5fc2VsZWN0aW9uSGFuZGxlTW91c2VNb3ZlRXZlbnRMaXN0
ZW5lciA9IHRoaXMuX2hhbmRsZVNlbGVjdGlvbkhhbmRsZU1vdXNlTW92ZS5iaW5kKHRoaXMpOwog
ICAgICAgICB0aGlzLl9zZWxlY3Rpb25IYW5kbGVNb3VzZVVwRXZlbnRMaXN0ZW5lciA9IHRoaXMu
X2hhbmRsZVNlbGVjdGlvbkhhbmRsZU1vdXNlVXAuYmluZCh0aGlzKTsKQEAgLTc5OCw3ICs3ODIs
NyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlbW92ZSIsIHRoaXMuX3NlbGVjdGlvbkhhbmRsZU1vdXNlTW92ZUV2ZW50TGlzdGVu
ZXIpOwogICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5f
c2VsZWN0aW9uSGFuZGxlTW91c2VVcEV2ZW50TGlzdGVuZXIpOwogCi0gICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1Nl
bGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVzaXppbmdTZWxlY3Rpb25TdHlsZUNsYXNz
TmFtZSk7CiAKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQu
c3RvcFByb3BhZ2F0aW9uKCk7CkBAIC04MDgsMTkgKzc5MiwxOSBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5idXR0b24gPT09IDApOwog
Ci0gICAgICAgIHZhciBjdXJyZW50TW91c2VQb3NpdGlvbiA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5f
ZWxlbWVudC50b3RhbE9mZnNldExlZnQ7Ci0gICAgICAgIHZhciBjdXJyZW50VGltZSA9IHRoaXMu
c3RhcnRUaW1lICsgKGN1cnJlbnRNb3VzZVBvc2l0aW9uICogdGhpcy5zZWNvbmRzUGVyUGl4ZWwp
OworICAgICAgICBsZXQgY3VycmVudE1vdXNlUG9zaXRpb24gPSBldmVudC5wYWdlWCAtIHRoaXMu
ZWxlbWVudC50b3RhbE9mZnNldExlZnQ7CisgICAgICAgIGxldCBjdXJyZW50VGltZSA9IHRoaXMu
c3RhcnRUaW1lICsgKGN1cnJlbnRNb3VzZVBvc2l0aW9uICogdGhpcy5zZWNvbmRzUGVyUGl4ZWwp
OwogICAgICAgICBpZiAodGhpcy5zbmFwSW50ZXJ2YWwpCiAgICAgICAgICAgICBjdXJyZW50VGlt
ZSA9IHRoaXMuX3NuYXBWYWx1ZShjdXJyZW50VGltZSk7CiAKICAgICAgICAgaWYgKGV2ZW50LmFs
dEtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuc2hpZnRL
ZXkpIHsKICAgICAgICAgICAgIC8vIFJlc2l6ZSB0aGUgc2VsZWN0aW9uIG9uIGJvdGggc2lkZXMg
d2hlbiB0aGUgT3B0aW9uIGtleXMgaXMgaGVsZCBkb3duLgogICAgICAgICAgICAgaWYgKHRoaXMu
X2RyYWdIYW5kbGVJc1N0YXJ0VGltZSkgewotICAgICAgICAgICAgICAgIHZhciB0aW1lRGlmZmVy
ZW5jZSA9IGN1cnJlbnRUaW1lIC0gdGhpcy5zZWxlY3Rpb25TdGFydFRpbWU7CisgICAgICAgICAg
ICAgICAgbGV0IHRpbWVEaWZmZXJlbmNlID0gY3VycmVudFRpbWUgLSB0aGlzLnNlbGVjdGlvblN0
YXJ0VGltZTsKICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZSA9IE1hdGgu
bWF4KHRoaXMuc3RhcnRUaW1lLCBNYXRoLm1pbihjdXJyZW50VGltZSwgdGhpcy5zZWxlY3Rpb25F
bmRUaW1lIC0gdGhpcy5taW5pbXVtU2VsZWN0aW9uRHVyYXRpb24pKTsKICAgICAgICAgICAgICAg
ICB0aGlzLnNlbGVjdGlvbkVuZFRpbWUgPSBNYXRoLm1pbihNYXRoLm1heCh0aGlzLnNlbGVjdGlv
blN0YXJ0VGltZSArIHRoaXMubWluaW11bVNlbGVjdGlvbkR1cmF0aW9uLCB0aGlzLnNlbGVjdGlv
bkVuZFRpbWUgLSB0aW1lRGlmZmVyZW5jZSksIHRoaXMuZW5kVGltZSk7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIHZhciB0aW1lRGlmZmVyZW5jZSA9IGN1cnJlbnRUaW1l
IC0gdGhpcy5zZWxlY3Rpb25FbmRUaW1lOworICAgICAgICAgICAgICAgIGxldCB0aW1lRGlmZmVy
ZW5jZSA9IGN1cnJlbnRUaW1lIC0gdGhpcy5zZWxlY3Rpb25FbmRUaW1lOwogICAgICAgICAgICAg
ICAgIHRoaXMuc2VsZWN0aW9uRW5kVGltZSA9IE1hdGgubWluKE1hdGgubWF4KHRoaXMuc2VsZWN0
aW9uU3RhcnRUaW1lICsgdGhpcy5taW5pbXVtU2VsZWN0aW9uRHVyYXRpb24sIGN1cnJlbnRUaW1l
KSwgdGhpcy5lbmRUaW1lKTsKICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0VGlt
ZSA9IE1hdGgubWF4KHRoaXMuc3RhcnRUaW1lLCBNYXRoLm1pbih0aGlzLnNlbGVjdGlvblN0YXJ0
VGltZSAtIHRpbWVEaWZmZXJlbmNlLCB0aGlzLnNlbGVjdGlvbkVuZFRpbWUgLSB0aGlzLm1pbmlt
dW1TZWxlY3Rpb25EdXJhdGlvbikpOwogICAgICAgICAgICAgfQpAQCAtODMyLDcgKzgxNiw3IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkVuZFRp
bWUgPSBNYXRoLm1pbihNYXRoLm1heCh0aGlzLnNlbGVjdGlvblN0YXJ0VGltZSArIHRoaXMubWlu
aW11bVNlbGVjdGlvbkR1cmF0aW9uLCBjdXJyZW50VGltZSksIHRoaXMuZW5kVGltZSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24odGhpcy5fZWxlbWVudC5jbGll
bnRXaWR0aCwgdGhpcy5kdXJhdGlvbik7CisgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvbih0
aGlzLmVsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMuZHVyYXRpb24pOwogCiAgICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwpAQCAt
ODQyLDcgKzgyNiw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxp
bmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGV2ZW50LmJ1dHRvbiA9PT0gMCk7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLlJlc2l6aW5nU2VsZWN0
aW9uU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxlQ2xhc3NO
YW1lKTsKIAogICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUi
LCB0aGlzLl9zZWxlY3Rpb25IYW5kbGVNb3VzZU1vdmVFdmVudExpc3RlbmVyKTsKICAgICAgICAg
ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMuX3NlbGVjdGlvbkhh
bmRsZU1vdXNlVXBFdmVudExpc3RlbmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzCmluZGV4IDg3ZmY5M2VmMTJkNDY5YzFhZDljMmIy
NDEwNDA5OWVkOWYxZjNiNjQuLjFjMjc5MzlkNzI5NDM0MmIwNTE3NzA5OWY5ZTRiNGUyNDc2NmEy
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Vmlldy5qcwpAQCAtNDEsNiArNDEsMTEgQEAgV2ViSW5zcGVjdG9yLlZpZXcgPSBjbGFzcyBWaWV3
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVu
dDsKICAgICB9CiAKKyAgICBnZXQgbGF5b3V0UGVuZGluZygpCisgICAgeworICAgICAgICByZXR1
cm4gISF0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyOworICAgIH0KKwogICAg
IGdldCBzdWJ2aWV3cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3Vidmlld3M7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264878</attachid>
            <date>2015-11-05 12:30:13 -0800</date>
            <delta_ts>2015-11-05 13:18:36 -0800</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-150703-20151105122914.patch</filename>
            <type>text/plain</type>
            <size>30698</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
ZTVlNWM5YzI3Y2I0NzQzYmYyNjVkOTE4OWZmNWMzYjc2NGZmZTU2Li40ZmQ2M2EzYzc1NWYzNWQ2
NDkwOTU5MDhmMGU2ZWUwZDFlYjgxZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAxNS0xMS0wNSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBUaW1lbGluZVJ1bGVyIHRvIFZpZXcg
YmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwNzAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAgICAgICBD
b252ZXJ0IFRpbWVsaW5lUnVsZXIgdG8gVmlldyBiYXNlIGNsYXNzLiBSdWxlciBtYXJrZXJzIGFu
ZCBzZWxlY3Rpb24gZWxlbWVudHMKKyAgICAgICAgY2FuIGJlIHVwZGF0ZWQgaW5kZXBlbmRlbnQg
ZnJvbSBpdHMgbWFpbiBsYXlvdXQuIFRoZSBsb2dpYyBmb3IgdGhlc2UgYWRkaXRpb25hbAorICAg
ICAgICBsYXlvdXRzIGlzIGltcGxlbWVudGVkIGFzIGFuIG92ZXJyaWRlIG9mIFZpZXcucHJvdG90
eXBlLm5lZWRzTGF5b3V0LCBhbmQgcmVtYWlucworICAgICAgICBsYXJnZWx5IHVuY2hhbmdlZC4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcpOgorICAgICAgICBB
ZGQgcnVsZXIgYXMgYSBzdWJ2aWV3LgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGlt
ZWxpbmVWaWV3LnByb3RvdHlwZS5sYXlvdXQpOiBEZWxldGVkLgorICAgICAgICBTZXBhcmF0ZSBy
dWxlciBsYXlvdXQgbm8gbG9uZ2VyIG5lZWRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVSdWxlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5zZXQg
YWxsb3dzQ2xpcHBlZExhYmVscyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ci5wcm90b3R5cGUuc2V0IGZvcm1hdExhYmVsQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLnNldCBhbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLnNldCB6ZXJv
VGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuc2V0
IHN0YXJ0VGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5
cGUuc2V0IGR1cmF0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnBy
b3RvdHlwZS5nZXQgZW5kVGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ci5wcm90b3R5cGUuc2V0IGVuZFRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIucHJvdG90eXBlLmdldCBzZWNvbmRzUGVyUGl4ZWwpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLnNldCBzZWNvbmRzUGVyUGl4ZWwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLnVwZGF0ZUxheW91dElmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5uZWVk
c0xheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUu
bGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5f
bmVlZHNNYXJrZXJMYXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIu
cHJvdG90eXBlLl9uZWVkc1NlbGVjdGlvbkxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSdWxlci5wcm90b3R5cGUuX3JlY2FsY3VsYXRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5fdXBkYXRlTWFya2Vycyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuX3VwZGF0ZVNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuX2hhbmRsZU1vdXNl
RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuX2hh
bmRsZU1vdXNlTW92ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90
b3R5cGUuX2hhbmRsZU1vdXNlVXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVs
ZXIucHJvdG90eXBlLl9oYW5kbGVTZWxlY3Rpb25IYW5kbGVNb3VzZURvd24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9oYW5kbGVTZWxlY3Rpb25IYW5k
bGVNb3VzZU1vdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90
eXBlLl9oYW5kbGVTZWxlY3Rpb25IYW5kbGVNb3VzZVVwKToKKyAgICAgICAgUmVuYW1lZCBtZXRo
b2RzIHRvIG1hdGNoIG5ldyBWaWV3LnByb3RvdHlwZSBtZXRob2RzIGFuZCBjbGVhbmVkIHVwCisg
ICAgICAgIHNvbWUgY29kZSB0byB1c2UgbGV0LCBmb3IuLi5vZi4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIE5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ci5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgUmVuYW1lZCB0byBs
YXlvdXQsIG92ZXJyaWRlcyBWaWV3LnByb3RvdHlwZS5sYXlvdXQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuX25lZWRzTGF5b3V0KTogRGVsZXRlZC4KKyAg
ICAgICAgUmVuYW1lZCB0byBuZWVkc0xheW91dCwgb3ZlcnJpZGVzIFZpZXcucHJvdG90eXBlLm5l
ZWRzTGF5b3V0LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBl
Ll9uZWVkc01hcmtlckxheW91dC51cGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9uZWVkc1NlbGVjdGlvbkxheW91dC51cGRhdGUp
OiBEZWxldGVkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmdldCBpc0xheW91dFBlbmRpbmcpOgor
ICAgICAgICBBZGRlZCBnZXR0ZXIgdG8gY2hlY2sgZm9yIHBlbmRpbmcgbGF5b3V0LgorCiAyMDE1
LTExLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3Rvcjog4oyl4oyYQyBzb21ldGltZXMgZW5kcyB1cHMgdXAgb3BlbmluZyBpbnNw
ZWN0b3Igd2l0aG91dCBjb25zb2xlIHByb21wdCBmb2N1c2VkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcwpp
bmRleCA4YTQxYzYwMThmZmNjYThjMGRiNTQ3OTY4NjdkNDY2MjU2YjQ5NGI0Li40ZWRmZjhkOGJl
NDViMTY3ZjgzNmRiOGI3M2UzOGQ3ODU4YjhhN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanMKQEAg
LTIzLDIyICsyMywyMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xh
c3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3Ry
dWN0b3IoKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgidGltZWxpbmUtcnVsZXIiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoInRpbWVsaW5lLXJ1bGVyIik7CiAKICAgICAgICAgdGhpcy5faGVhZGVyRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9oZWFk
ZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoImhlYWRlciIpOwotICAgICAgICB0aGlzLl9lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlckVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fbWFya2Vy
c0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5f
bWFya2Vyc0VsZW1lbnQuY2xhc3NMaXN0LmFkZCgibWFya2VycyIpOwotICAgICAgICB0aGlzLl9l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX21hcmtlcnNFbGVtZW50KTsKKyAgICAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX21hcmtlcnNFbGVtZW50KTsKIAogICAgICAgICB0aGlz
Ll96ZXJvVGltZSA9IDA7CiAgICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IDA7CkBAIC01OSwxMSAr
NTgsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGdldCBl
bGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0KLQog
ICAgIGdldCBhbGxvd3NDbGlwcGVkTGFiZWxzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9hbGxvd3NDbGlwcGVkTGFiZWxzOwpAQCAtNzYsNyArNzAsNyBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAKICAgICAgICAgdGhpcy5fYWxsb3dzQ2xpcHBlZExhYmVscyA9IHggfHwgZmFsc2U7CiAK
LSAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgp
OwogICAgIH0KIAogICAgIHNldCBmb3JtYXRMYWJlbENhbGxiYWNrKHgpCkBAIC04OCw3ICs4Miw3
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICB0aGlzLl9mb3JtYXRMYWJlbENhbGxi
YWNrID0geCB8fCBudWxsOwogCi0gICAgICAgIHRoaXMuX25lZWRzTGF5b3V0KCk7CisgICAgICAg
IHRoaXMubmVlZHNMYXlvdXQoKTsKICAgICB9CiAKICAgICBnZXQgYWxsb3dzVGltZVJhbmdlU2Vs
ZWN0aW9uKCkKQEAgLTEwNSw3ICs5OSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0g
Y2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAg
ICBpZiAoeCkgewogICAgICAgICAgICAgdGhpcy5fbW91c2VEb3duRXZlbnRMaXN0ZW5lciA9IHRo
aXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURvd25FdmVudExpc3Rl
bmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRv
d24iLCB0aGlzLl9tb3VzZURvd25FdmVudExpc3RlbmVyKTsKIAogICAgICAgICAgICAgdGhpcy5f
bGVmdFNoYWRlZEFyZWFFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICAgICAgICAgICB0aGlzLl9sZWZ0U2hhZGVkQXJlYUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2hh
ZGVkLWFyZWEiKTsKQEAgLTEzMCw3ICsxMjQsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAg
ICAgICAgICAgIHRoaXMuX25lZWRzU2VsZWN0aW9uTGF5b3V0KCk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93
biIsIHRoaXMuX21vdXNlRG93bkV2ZW50TGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93bkV2ZW50
TGlzdGVuZXIpOwogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX21vdXNlRG93bkV2ZW50TGlzdGVu
ZXI7CiAKICAgICAgICAgICAgIHRoaXMuX2xlZnRTaGFkZWRBcmVhRWxlbWVudC5yZW1vdmUoKTsK
QEAgLTE2OSw3ICsxNjMsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRp
bWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgdGhpcy5f
emVyb1RpbWUgPSB4IHx8IDA7CiAKLSAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKKyAgICAg
ICAgdGhpcy5uZWVkc0xheW91dCgpOwogICAgIH0KIAogICAgIGdldCBzdGFydFRpbWUoKQpAQCAt
MTg3LDcgKzE4MSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxp
bmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgaWYgKCFpc05hTih0
aGlzLl9kdXJhdGlvbikpCiAgICAgICAgICAgICB0aGlzLl9lbmRUaW1lID0gdGhpcy5fc3RhcnRU
aW1lICsgdGhpcy5fZHVyYXRpb247CiAKLSAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKKyAg
ICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogICAgIH0KIAogICAgIGdldCBkdXJhdGlvbigpCkBA
IC0yMTAsMTIgKzIwNCwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRp
bWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgdGhpcy5fZW5kVGltZVBpbm5lZCA9IGZhbHNlOwogCi0gICAgICAgIHRoaXMu
X25lZWRzTGF5b3V0KCk7CisgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKICAgICB9CiAKICAg
ICBnZXQgZW5kVGltZSgpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2VuZFRpbWVQaW5uZWQg
JiYgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAgICAgaWYgKCF0
aGlzLl9lbmRUaW1lUGlubmVkICYmIHRoaXMubGF5b3V0UGVuZGluZykKICAgICAgICAgICAgIHRo
aXMuX3JlY2FsY3VsYXRlKCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbmRUaW1lOwogICAgIH0K
QEAgLTIyOCwxMiArMjIyLDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3Mg
VGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5f
ZW5kVGltZSA9IHggfHwgMDsKICAgICAgICAgdGhpcy5fZW5kVGltZVBpbm5lZCA9IHRydWU7CiAK
LSAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgp
OwogICAgIH0KIAogICAgIGdldCBzZWNvbmRzUGVyUGl4ZWwoKQogICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCisgICAgICAgIGlmICh0aGlz
LmxheW91dFBlbmRpbmcpCiAgICAgICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZSgpOwogICAgICAg
ICByZXR1cm4gdGhpcy5fc2Vjb25kc1BlclBpeGVsOwogICAgIH0KQEAgLTI0Nyw3ICsyNDEsNyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuX2VuZFRpbWVQaW5uZWQgPSBmYWxz
ZTsKICAgICAgICAgdGhpcy5fY3VycmVudFNsaWNlVGltZSA9IDA7CiAKLSAgICAgICAgdGhpcy5f
bmVlZHNMYXlvdXQoKTsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogICAgIH0KIAogICAg
IGdldCBzbmFwSW50ZXJ2YWwoKQpAQCAtMzQyLDI3ICszMzYsNjEgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgICAgICByZXR1cm4gdGhpcy5fbWFya2VyRWxlbWVudE1hcC5nZXQobWFya2VyKSB8
fCBudWxsOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCisgICAgdXBkYXRlTGF5b3V0SWZO
ZWVkZWQoKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlk
ZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVk
dWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3Nj
aGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXI7CisgICAgICAgIC8vIElmIGEgbGF5b3V0IGlz
IHBlbmRpbmcgd2UgY2FuIGxldCB0aGUgYmFzZSBjbGFzcyBoYW5kbGUgaXQgYW5kIHJldHVybiwg
c2luY2UgdGhhdCB3aWxsIHVwZGF0ZQorICAgICAgICAvLyBtYXJrZXJzIGFuZCB0aGUgc2VsZWN0
aW9uIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIGlmICh0aGlzLmxheW91dFBlbmRpbmcpIHsK
KyAgICAgICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dElmTmVlZGVkKCk7CisgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgdmlzaWJsZVdpZHRoID0gdGhpcy5fcmVj
YWxjdWxhdGUoKTsKKyAgICAgICAgbGV0IHZpc2libGVXaWR0aCA9IHRoaXMuX3JlY2FsY3VsYXRl
KCk7CiAgICAgICAgIGlmICh2aXNpYmxlV2lkdGggPD0gMCkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICB2YXIgZHVyYXRpb24gPSB0aGlzLmR1cmF0aW9uOworICAgICAgICBpZiAodGhp
cy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHRo
aXMuX3VwZGF0ZU1hcmtlcnModmlzaWJsZVdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKIAotICAgICAg
ICB2YXIgcGl4ZWxzUGVyU2Vjb25kID0gdmlzaWJsZVdpZHRoIC8gZHVyYXRpb247CisgICAgICAg
IGlmICh0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVyKQorICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKHZpc2libGVXaWR0aCwgdGhpcy5kdXJhdGlv
bik7CisgICAgfQogCi0gICAgICAgIC8vIENhbGN1bGF0ZSBhIGRpdmlkZXIgY291bnQgYmFzZWQg
b24gdGhlIG1heGltdW0gYWxsb3dlZCBkaXZpZGVyIGRlbnNpdHkuCi0gICAgICAgIHZhciBkaXZp
ZGVyQ291bnQgPSBNYXRoLnJvdW5kKHZpc2libGVXaWR0aCAvIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJ1bGVyLk1pbmltdW1EaXZpZGVyU3BhY2luZyk7CisgICAgbmVlZHNMYXlvdXQoKQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMubGF5b3V0UGVuZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRlSWRlbnRpZmllcikg
eworICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkTWFya2Vy
TGF5b3V0VXBkYXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICB0aGlzLl9zY2hlZHVsZWRNYXJr
ZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gdW5kZWZpbmVkOworICAgICAgICB9CiAKKyAgICAg
ICAgaWYgKHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsK
KyAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlv
bkxheW91dFVwZGF0ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgdGhpcy5fc2NoZWR1bGVkU2Vs
ZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorCisg
ICAgICAgIHN1cGVyLm5lZWRzTGF5b3V0KCk7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisK
KyAgICBsYXlvdXQoKQorICAgIHsKKyAgICAgICAgbGV0IHZpc2libGVXaWR0aCA9IHRoaXMuX3Jl
Y2FsY3VsYXRlKCk7CisgICAgICAgIGlmICh2aXNpYmxlV2lkdGggPD0gMCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBsZXQgZHVyYXRpb24gPSB0aGlzLmR1cmF0aW9uOworICAgICAg
ICBsZXQgcGl4ZWxzUGVyU2Vjb25kID0gdmlzaWJsZVdpZHRoIC8gZHVyYXRpb247CisKKyAgICAg
ICAgLy8gQ2FsY3VsYXRlIGEgZGl2aWRlciBjb3VudCBiYXNlZCBvbiB0aGUgbWF4aW11bSBhbGxv
d2VkIGRpdmlkZXIgZGVuc2l0eS4KKyAgICAgICAgbGV0IGRpdmlkZXJDb3VudCA9IE1hdGgucm91
bmQodmlzaWJsZVdpZHRoIC8gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuTWluaW11bURpdmlk
ZXJTcGFjaW5nKTsKKyAgICAgICAgbGV0IHNsaWNlVGltZTsKICAgICAgICAgaWYgKHRoaXMuX2Vu
ZFRpbWVQaW5uZWQgfHwgIXRoaXMuX2N1cnJlbnRTbGljZVRpbWUpIHsKICAgICAgICAgICAgIC8v
IENhbGN1bGF0ZSB0aGUgc2xpY2UgdGltZSBiYXNlZCBvbiB0aGUgcm91Z2ggZGl2aWRlciBjb3Vu
dCBhbmQgdGhlIHRpbWUgc3Bhbi4KLSAgICAgICAgICAgIHZhciBzbGljZVRpbWUgPSBkdXJhdGlv
biAvIGRpdmlkZXJDb3VudDsKKyAgICAgICAgICAgIHNsaWNlVGltZSA9IGR1cmF0aW9uIC8gZGl2
aWRlckNvdW50OwogCiAgICAgICAgICAgICAvLyBTbmFwIHRoZSBzbGljZSB0aW1lIHRvIGEgbmVh
cmVzdCBudW1iZXIgKGUuZy4gMC4xLCAwLjIsIDAuNSwgMSwgMiwgNSwgMTAsIDIwLCA1MCwgZXRj
LikKICAgICAgICAgICAgIHNsaWNlVGltZSA9IE1hdGgucG93KDEwLCBNYXRoLmNlaWwoTWF0aC5s
b2coc2xpY2VUaW1lKSAvIE1hdGguTE4xMCkpOwpAQCAtMzc0LDExICs0MDIsMTEgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogICAgICAgICAgICAgdGhpcy5fY3VycmVudFNsaWNlVGltZSA9IHNsaWNl
VGltZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFJldXNlIHRoZSBsYXN0IHNs
aWNlIHRpbWUgc2luY2UgdGhlIHRpbWUgZHVyYXRpb24gZG9lcyBub3Qgc2NhbGUgdG8gZml0IHdo
ZW4gdGhlIGVuZCB0aW1lIGlzbid0IHBpbm5lZC4KLSAgICAgICAgICAgIHZhciBzbGljZVRpbWUg
PSB0aGlzLl9jdXJyZW50U2xpY2VUaW1lOworICAgICAgICAgICAgc2xpY2VUaW1lID0gdGhpcy5f
Y3VycmVudFNsaWNlVGltZTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBmaXJzdERpdmlkZXJU
aW1lID0gKE1hdGguY2VpbCgodGhpcy5fc3RhcnRUaW1lIC0gdGhpcy5femVyb1RpbWUpIC8gc2xp
Y2VUaW1lKSAqIHNsaWNlVGltZSkgKyB0aGlzLl96ZXJvVGltZTsKLSAgICAgICAgdmFyIGxhc3RE
aXZpZGVyVGltZSA9IHRoaXMuX2VuZFRpbWU7CisgICAgICAgIGxldCBmaXJzdERpdmlkZXJUaW1l
ID0gKE1hdGguY2VpbCgodGhpcy5fc3RhcnRUaW1lIC0gdGhpcy5femVyb1RpbWUpIC8gc2xpY2VU
aW1lKSAqIHNsaWNlVGltZSkgKyB0aGlzLl96ZXJvVGltZTsKKyAgICAgICAgbGV0IGxhc3REaXZp
ZGVyVGltZSA9IHRoaXMuX2VuZFRpbWU7CiAKICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBkaXZp
ZGVyIGNvdW50IG5vdyBiYXNlZCBvbiB0aGUgZmluYWwgc2xpY2UgdGltZS4KICAgICAgICAgZGl2
aWRlckNvdW50ID0gTWF0aC5jZWlsKChsYXN0RGl2aWRlclRpbWUgLSBmaXJzdERpdmlkZXJUaW1l
KSAvIHNsaWNlVGltZSk7CkBAIC0zODcsNyArNDE1LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
ICAgICAgICBpZiAoIXRoaXMuX2VuZFRpbWVQaW5uZWQpCiAgICAgICAgICAgICArK2RpdmlkZXJD
b3VudDsKIAotICAgICAgICB2YXIgZGl2aWRlckRhdGEgPSB7CisgICAgICAgIGxldCBkaXZpZGVy
RGF0YSA9IHsKICAgICAgICAgICAgIGNvdW50OiBkaXZpZGVyQ291bnQsCiAgICAgICAgICAgICBm
aXJzdFRpbWU6IGZpcnN0RGl2aWRlclRpbWUsCiAgICAgICAgICAgICBsYXN0VGltZTogbGFzdERp
dmlkZXJUaW1lLApAQCAtNDAxLDkgKzQyOSw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVy
ID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAg
ICAgICB0aGlzLl9jdXJyZW50RGl2aWRlcnMgPSBkaXZpZGVyRGF0YTsKIAotICAgICAgICB2YXIg
bWFya2VyRGl2aWRlcnMgPSB0aGlzLl9tYXJrZXJzRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCIu
IiArIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkRpdmlkZXJFbGVtZW50U3R5bGVDbGFzc05h
bWUpOwotCi0gICAgICAgIHZhciBkaXZpZGVyRWxlbWVudCA9IHRoaXMuX2hlYWRlckVsZW1lbnQu
Zmlyc3RDaGlsZDsKKyAgICAgICAgbGV0IG1hcmtlckRpdmlkZXJzID0gdGhpcy5fbWFya2Vyc0Vs
ZW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLiIgKyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5E
aXZpZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgbGV0IGRpdmlkZXJFbGVtZW50
ID0gdGhpcy5faGVhZGVyRWxlbWVudC5maXJzdENoaWxkOwogCiAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDw9IGRpdmlkZXJDb3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoIWRpdmlkZXJF
bGVtZW50KSB7CkBAIC00MTEsMjEgKzQzOCwyMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAg
ICAgICAgICAgICAgZGl2aWRlckVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUnVsZXIuRGl2aWRlckVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKICAgICAgICAgICAgICAgICB0
aGlzLl9oZWFkZXJFbGVtZW50LmFwcGVuZENoaWxkKGRpdmlkZXJFbGVtZW50KTsKIAotICAgICAg
ICAgICAgICAgIHZhciBsYWJlbEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgICAgICAgICBsZXQgbGFiZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICAgbGFiZWxFbGVtZW50LmNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkRpdmlkZXJMYWJlbEVsZW1lbnRTdHlsZUNsYXNzTmFt
ZTsKICAgICAgICAgICAgICAgICBkaXZpZGVyRWxlbWVudC5hcHBlbmRDaGlsZChsYWJlbEVsZW1l
bnQpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB2YXIgbWFya2VyRGl2aWRlckVsZW1l
bnQgPSBtYXJrZXJEaXZpZGVyc1tpXTsKKyAgICAgICAgICAgIGxldCBtYXJrZXJEaXZpZGVyRWxl
bWVudCA9IG1hcmtlckRpdmlkZXJzW2ldOwogICAgICAgICAgICAgaWYgKCFtYXJrZXJEaXZpZGVy
RWxlbWVudCkgewogICAgICAgICAgICAgICAgIG1hcmtlckRpdmlkZXJFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICAgbWFya2VyRGl2aWRlckVs
ZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuRGl2aWRlckVsZW1l
bnRTdHlsZUNsYXNzTmFtZTsKICAgICAgICAgICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudC5h
cHBlbmRDaGlsZChtYXJrZXJEaXZpZGVyRWxlbWVudCk7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIHZhciBkaXZpZGVyVGltZSA9IGZpcnN0RGl2aWRlclRpbWUgKyAoc2xpY2VUaW1lICog
aSk7Ci0KLSAgICAgICAgICAgIHZhciBuZXdMZWZ0UG9zaXRpb24gPSAoZGl2aWRlclRpbWUgLSB0
aGlzLl9zdGFydFRpbWUpIC8gZHVyYXRpb247CisgICAgICAgICAgICBsZXQgZGl2aWRlclRpbWUg
PSBmaXJzdERpdmlkZXJUaW1lICsgKHNsaWNlVGltZSAqIGkpOworICAgICAgICAgICAgbGV0IG5l
d0xlZnRQb3NpdGlvbiA9IChkaXZpZGVyVGltZSAtIHRoaXMuX3N0YXJ0VGltZSkgLyBkdXJhdGlv
bjsKIAogICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxvd3NDbGlwcGVkTGFiZWxzKSB7CiAgICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgZGl2aWRlcnMgdW5kZXIgMCUgd2hlcmUgdGhleSB3
aWxsIGJlIGNvbXBsZXRlbHkgaGlkZGVuLgpAQCAtNDUyLDcgKzQ3OCw3IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKIAogICAgICAgICAvLyBSZW1vdmUgZXh0cmEgZGl2aWRlcnMuCiAgICAgICAgIHdo
aWxlIChkaXZpZGVyRWxlbWVudCkgewotICAgICAgICAgICAgdmFyIG5leHREaXZpZGVyRWxlbWVu
dCA9IGRpdmlkZXJFbGVtZW50Lm5leHRTaWJsaW5nOworICAgICAgICAgICAgbGV0IG5leHREaXZp
ZGVyRWxlbWVudCA9IGRpdmlkZXJFbGVtZW50Lm5leHRTaWJsaW5nOwogICAgICAgICAgICAgZGl2
aWRlckVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgICAgICBkaXZpZGVyRWxlbWVudCA9IG5leHRE
aXZpZGVyRWxlbWVudDsKICAgICAgICAgfQpAQCAtNDY0LDY3ICs0OTAsMjYgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24odmlzaWJsZVdpZHRoLCBk
dXJhdGlvbik7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQoKQotICAgIHsKLSAg
ICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtYWluIGxheW91dCBzY2hlZHVsZWQgd2UgY2FuIGp1c3Qg
dXBkYXRlIGxheW91dCBhbmQgcmV0dXJuLCBzaW5jZSB0aGF0Ci0gICAgICAgIC8vIHdpbGwgdXBk
YXRlIG1hcmtlcnMgYW5kIHRoZSBzZWxlY3Rpb24gYXQgdGhlIHNhbWUgdGltZS4KLSAgICAgICAg
aWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgICAg
IHRoaXMudXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICB2YXIgdmlzaWJsZVdpZHRoID0gdGhpcy5fZWxlbWVudC5jbGllbnRXaWR0aDsKLSAg
ICAgICAgaWYgKHZpc2libGVXaWR0aCA8PSAwKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGlmICh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQotICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlTWFya2Vycyh2aXNpYmxlV2lkdGgsIHRoaXMuZHVyYXRpb24p
OwotCi0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVu
dGlmaWVyKQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKHZpc2libGVXaWR0aCwg
dGhpcy5kdXJhdGlvbik7Ci0gICAgfQotCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX25lZWRzTGF5
b3V0KCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVs
ZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBjYW5jZWxBbmlt
YXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsK
LSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlv
bkxheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZy
YW1lKHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIpOwotICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50
aWZpZXI7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJ
ZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMudXBkYXRlTGF5b3V0LmJpbmQo
dGhpcykpOwotICAgIH0KLQogICAgIF9uZWVkc01hcmtlckxheW91dCgpCiAgICAgewogICAgICAg
ICAvLyBJZiBsYXlvdXQgaXMgc2NoZWR1bGVkLCBhYm9ydCBzaW5jZSBtYXJrZXJzIHdpbGwgYmUg
dXBkYXRlZCB3aGVuIGxheW91dCBoYXBwZW5zLgotICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVk
TGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAgICAgaWYgKHRoaXMubGF5b3V0UGVuZGluZykK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTWFya2Vy
TGF5b3V0VXBkYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBm
dW5jdGlvbiB1cGRhdGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fc2No
ZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRlSWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy5fc2NoZWR1
bGVkTWFya2VyTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgo
KSA9PiB7CisgICAgICAgICAgICB0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyID0gdW5kZWZpbmVkOwogCi0gICAgICAgICAgICB2YXIgdmlzaWJsZVdpZHRoID0gdGhp
cy5fZWxlbWVudC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIGxldCB2aXNpYmxlV2lkdGggPSB0
aGlzLmVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICAgICAgICAgICBpZiAodmlzaWJsZVdpZHRoIDw9
IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVN
YXJrZXJzKHZpc2libGVXaWR0aCwgdGhpcy5kdXJhdGlvbik7Ci0gICAgICAgIH0KLQotICAgICAg
ICB0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gcmVxdWVzdEFu
aW1hdGlvbkZyYW1lKHVwZGF0ZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAg
ICAgX25lZWRzU2VsZWN0aW9uTGF5b3V0KCkKQEAgLTUzMywzNiArNTE4LDM0IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBJZiBsYXlvdXQg
aXMgc2NoZWR1bGVkLCBhYm9ydCBzaW5jZSB0aGUgc2VsZWN0aW9uIHdpbGwgYmUgdXBkYXRlZCB3
aGVuIGxheW91dCBoYXBwZW5zLgotICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBk
YXRlSWRlbnRpZmllcikKKyAgICAgICAgaWYgKHRoaXMubGF5b3V0UGVuZGluZykKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0
VXBkYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBmdW5jdGlv
biB1cGRhdGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fc2NoZWR1bGVk
U2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy5fc2NoZWR1bGVk
U2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgo
KSA9PiB7CisgICAgICAgICAgICB0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJ
ZGVudGlmaWVyID0gdW5kZWZpbmVkOwogCi0gICAgICAgICAgICB2YXIgdmlzaWJsZVdpZHRoID0g
dGhpcy5fZWxlbWVudC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIGxldCB2aXNpYmxlV2lkdGgg
PSB0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICAgICAgICAgICBpZiAodmlzaWJsZVdpZHRo
IDw9IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICB0aGlzLl91cGRh
dGVTZWxlY3Rpb24odmlzaWJsZVdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIgPSBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlLmJpbmQodGhpcykpOworICAgICAgICB9KTsKICAg
ICB9CiAKICAgICBfcmVjYWxjdWxhdGUoKQogICAgIHsKLSAgICAgICAgdmFyIHZpc2libGVXaWR0
aCA9IHRoaXMuX2VsZW1lbnQuY2xpZW50V2lkdGg7CisgICAgICAgIGxldCB2aXNpYmxlV2lkdGgg
PSB0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICAgICAgIGlmICh2aXNpYmxlV2lkdGggPD0g
MCkKICAgICAgICAgICAgIHJldHVybiAwOwogCisgICAgICAgIGxldCBkdXJhdGlvbjsKICAgICAg
ICAgaWYgKHRoaXMuX2VuZFRpbWVQaW5uZWQpCi0gICAgICAgICAgICB2YXIgZHVyYXRpb24gPSB0
aGlzLl9lbmRUaW1lIC0gdGhpcy5fc3RhcnRUaW1lOworICAgICAgICAgICAgZHVyYXRpb24gPSB0
aGlzLl9lbmRUaW1lIC0gdGhpcy5fc3RhcnRUaW1lOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB2YXIgZHVyYXRpb24gPSB2aXNpYmxlV2lkdGggKiB0aGlzLl9zZWNvbmRzUGVyUGl4ZWw7Cisg
ICAgICAgICAgICBkdXJhdGlvbiA9IHZpc2libGVXaWR0aCAqIHRoaXMuX3NlY29uZHNQZXJQaXhl
bDsKIAogICAgICAgICB0aGlzLl9zZWNvbmRzUGVyUGl4ZWwgPSBkdXJhdGlvbiAvIHZpc2libGVX
aWR0aDsKIApAQCAtNTg4LDI3ICs1NzEsMjcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIg
PSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXIp
IHsKICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZE1hcmtl
ckxheW91dFVwZGF0ZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NjaGVk
dWxlZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXI7CisgICAgICAgICAgICB0aGlzLl9zY2hl
ZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gdW5kZWZpbmVkOwogICAgICAgICB9
CiAKLSAgICAgICAgdGhpcy5fbWFya2VyRWxlbWVudE1hcC5mb3JFYWNoKGZ1bmN0aW9uKG1hcmtl
ckVsZW1lbnQsIG1hcmtlcikgewotICAgICAgICAgICAgdmFyIG5ld0xlZnRQb3NpdGlvbiA9ICht
YXJrZXIudGltZSAtIHRoaXMuX3N0YXJ0VGltZSkgLyBkdXJhdGlvbjsKKyAgICAgICAgZm9yIChs
ZXQgW21hcmtlciwgbWFya2VyRWxlbWVudF0gb2YgdGhpcy5fbWFya2VyRWxlbWVudE1hcCkgewor
ICAgICAgICAgICAgbGV0IG5ld0xlZnRQb3NpdGlvbiA9IChtYXJrZXIudGltZSAtIHRoaXMuX3N0
YXJ0VGltZSkgLyBkdXJhdGlvbjsKIAogICAgICAgICAgICAgdGhpcy5fdXBkYXRlUG9zaXRpb25P
ZkVsZW1lbnQobWFya2VyRWxlbWVudCwgbmV3TGVmdFBvc2l0aW9uLCB2aXNpYmxlV2lkdGgpOwog
CiAgICAgICAgICAgICBpZiAoIW1hcmtlckVsZW1lbnQucGFyZW50Tm9kZSkKICAgICAgICAgICAg
ICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudC5hcHBlbmRDaGlsZChtYXJrZXJFbGVtZW50KTsKLSAg
ICAgICAgfSwgdGhpcyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBfdXBkYXRlU2VsZWN0aW9u
KHZpc2libGVXaWR0aCwgZHVyYXRpb24pCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2NoZWR1
bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllcikgewogICAgICAgICAgICAgY2FuY2Vs
QW5pbWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRp
Zmllcik7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0
VXBkYXRlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxh
eW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgIH0KIAotICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIu
QWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUsIHRoaXMuX2FsbG93c1RpbWVS
YW5nZVNlbGVjdGlvbik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkFsbG93c1RpbWVSYW5nZVNlbGVjdGlvblN0eWxlQ2xh
c3NOYW1lLCB0aGlzLl9hbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24pOwogCiAgICAgICAgIGlmICgh
dGhpcy5fYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NjQwLDExICs2MjMsMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1l
bGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLl9yaWdo
dFNlbGVjdGlvbkhhbmRsZUVsZW1lbnQudGl0bGUgPSBmb3JtYXR0ZWRFbmRUaW1lVGV4dDsKIAog
ICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGlvbkRyYWdFbGVtZW50LnBhcmVudE5vZGUpIHsKLSAg
ICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VsZWN0aW9uRHJhZ0Vs
ZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sZWZ0
U2hhZGVkQXJlYUVsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9sZWZ0U2VsZWN0aW9uSGFuZGxlRWxlbWVudCk7Ci0gICAgICAgICAgICB0aGlzLl9l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JpZ2h0U2hhZGVkQXJlYUVsZW1lbnQpOwotICAgICAg
ICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFNlbGVjdGlvbkhhbmRs
ZUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Nl
bGVjdGlvbkRyYWdFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9sZWZ0U2hhZGVkQXJlYUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTZWxlY3Rpb25IYW5kbGVFbGVtZW50KTsKKyAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFNoYWRlZEFyZWFFbGVtZW50
KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFNlbGVj
dGlvbkhhbmRsZUVsZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fZGlzcGF0Y2hU
aW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkRXZlbnQoKTsKQEAgLTY4OCw3ICs2NzEsNyBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2Vs
ZWN0aW9uSXNNb3ZlID0gZXZlbnQudGFyZ2V0ID09PSB0aGlzLl9zZWxlY3Rpb25EcmFnRWxlbWVu
dDsKLSAgICAgICAgdGhpcy5fcnVsZXJCb3VuZGluZ0NsaWVudFJlY3QgPSB0aGlzLl9lbGVtZW50
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICB0aGlzLl9ydWxlckJvdW5kaW5nQ2xp
ZW50UmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKIAogICAgICAg
ICBpZiAodGhpcy5fc2VsZWN0aW9uSXNNb3ZlKSB7CiAgICAgICAgICAgICB0aGlzLl9sYXN0TW91
c2VQb3NpdGlvbiA9IGV2ZW50LnBhZ2VYOwpAQCAtNzEzLDEyICs2OTYsMTMgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09
PSAwKTsKIAorICAgICAgICBsZXQgY3VycmVudE1vdXNlUG9zaXRpb247CiAgICAgICAgIGlmICh0
aGlzLl9zZWxlY3Rpb25Jc01vdmUpIHsKLSAgICAgICAgICAgIHZhciBjdXJyZW50TW91c2VQb3Np
dGlvbiA9IE1hdGgubWF4KHRoaXMuX21vdmVTZWxlY3Rpb25NYXhpbXVtTGVmdE9mZnNldCwgTWF0
aC5taW4odGhpcy5fbW92ZVNlbGVjdGlvbk1heGltdW1SaWdodE9mZnNldCwgZXZlbnQucGFnZVgp
KTsKKyAgICAgICAgICAgIGN1cnJlbnRNb3VzZVBvc2l0aW9uID0gTWF0aC5tYXgodGhpcy5fbW92
ZVNlbGVjdGlvbk1heGltdW1MZWZ0T2Zmc2V0LCBNYXRoLm1pbih0aGlzLl9tb3ZlU2VsZWN0aW9u
TWF4aW11bVJpZ2h0T2Zmc2V0LCBldmVudC5wYWdlWCkpOwogCi0gICAgICAgICAgICB2YXIgb2Zm
c2V0VGltZSA9IChjdXJyZW50TW91c2VQb3NpdGlvbiAtIHRoaXMuX2xhc3RNb3VzZVBvc2l0aW9u
KSAqIHRoaXMuc2Vjb25kc1BlclBpeGVsOwotICAgICAgICAgICAgdmFyIHNlbGVjdGlvbkR1cmF0
aW9uID0gdGhpcy5zZWxlY3Rpb25FbmRUaW1lIC0gdGhpcy5zZWxlY3Rpb25TdGFydFRpbWU7Ci0g
ICAgICAgICAgICB2YXIgb2xkU2VsZWN0aW9uU3RhcnRUaW1lID0gdGhpcy5zZWxlY3Rpb25TdGFy
dFRpbWU7CisgICAgICAgICAgICBsZXQgb2Zmc2V0VGltZSA9IChjdXJyZW50TW91c2VQb3NpdGlv
biAtIHRoaXMuX2xhc3RNb3VzZVBvc2l0aW9uKSAqIHRoaXMuc2Vjb25kc1BlclBpeGVsOworICAg
ICAgICAgICAgbGV0IHNlbGVjdGlvbkR1cmF0aW9uID0gdGhpcy5zZWxlY3Rpb25FbmRUaW1lIC0g
dGhpcy5zZWxlY3Rpb25TdGFydFRpbWU7CisgICAgICAgICAgICBsZXQgb2xkU2VsZWN0aW9uU3Rh
cnRUaW1lID0gdGhpcy5zZWxlY3Rpb25TdGFydFRpbWU7CiAKICAgICAgICAgICAgIHRoaXMuc2Vs
ZWN0aW9uU3RhcnRUaW1lID0gTWF0aC5tYXgodGhpcy5zdGFydFRpbWUsIE1hdGgubWluKHRoaXMu
c2VsZWN0aW9uU3RhcnRUaW1lICsgb2Zmc2V0VGltZSwgdGhpcy5lbmRUaW1lIC0gc2VsZWN0aW9u
RHVyYXRpb24pKTsKICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uRW5kVGltZSA9IHRoaXMuc2Vs
ZWN0aW9uU3RhcnRUaW1lICsgc2VsZWN0aW9uRHVyYXRpb247CkBAIC03MjcsMjYgKzcxMSwyNiBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICAgICAgLy8gV2hlbiBzbmFwcGluZyB3
ZSBuZWVkIHRvIGNoZWNrIHRoZSBtb3VzZSBwb3NpdGlvbiBkZWx0YSByZWxhdGl2ZSB0byB0aGUg
bGFzdCBzbmFwLCByYXRoZXIgdGhhbiB0aGUKICAgICAgICAgICAgICAgICAvLyBsYXN0IG1vdXNl
IG1vdmUuIElmIGEgc25hcCBvY2N1cnMgd2UgYWRqdXN0IGZvciB0aGUgYW1vdW50IHRoZSBjdXJz
b3IgZHJpZnRlZCwgc28gdGhhdCB0aGUgbW91c2UKICAgICAgICAgICAgICAgICAvLyBwb3NpdGlv
biByZWxhdGl2ZSB0byB0aGUgc2VsZWN0aW9uIHJlbWFpbnMgY29uc3RhbnQuCi0gICAgICAgICAg
ICAgICAgdmFyIHNuYXBPZmZzZXQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZSAtIG9sZFNlbGVj
dGlvblN0YXJ0VGltZTsKKyAgICAgICAgICAgICAgICBsZXQgc25hcE9mZnNldCA9IHRoaXMuc2Vs
ZWN0aW9uU3RhcnRUaW1lIC0gb2xkU2VsZWN0aW9uU3RhcnRUaW1lOwogICAgICAgICAgICAgICAg
IGlmICghc25hcE9mZnNldCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uRHJpZnQgPSAob2Zmc2V0VGltZSAtIHNuYXBPZmZzZXQgKiB0
aGlzLnNuYXBJbnRlcnZhbCkgLyB0aGlzLnNlY29uZHNQZXJQaXhlbDsKKyAgICAgICAgICAgICAg
ICBsZXQgcG9zaXRpb25EcmlmdCA9IChvZmZzZXRUaW1lIC0gc25hcE9mZnNldCAqIHRoaXMuc25h
cEludGVydmFsKSAvIHRoaXMuc2Vjb25kc1BlclBpeGVsOwogICAgICAgICAgICAgICAgIGN1cnJl
bnRNb3VzZVBvc2l0aW9uIC09IHBvc2l0aW9uRHJpZnQ7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIHRoaXMuX2xhc3RNb3VzZVBvc2l0aW9uID0gY3VycmVudE1vdXNlUG9zaXRpb247CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2YXIgY3VycmVudE1vdXNlUG9zaXRpb24gPSBl
dmVudC5wYWdlWCAtIHRoaXMuX3J1bGVyQm91bmRpbmdDbGllbnRSZWN0LmxlZnQ7CisgICAgICAg
ICAgICBjdXJyZW50TW91c2VQb3NpdGlvbiA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5fcnVsZXJCb3Vu
ZGluZ0NsaWVudFJlY3QubGVmdDsKIAogICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydFRp
bWUgPSBNYXRoLm1heCh0aGlzLnN0YXJ0VGltZSwgdGhpcy5zdGFydFRpbWUgKyAoTWF0aC5taW4o
Y3VycmVudE1vdXNlUG9zaXRpb24sIHRoaXMuX21vdXNlRG93blBvc2l0aW9uKSAqIHRoaXMuc2Vj
b25kc1BlclBpeGVsKSk7CiAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkVuZFRpbWUgPSBNYXRo
Lm1pbih0aGlzLnN0YXJ0VGltZSArIChNYXRoLm1heChjdXJyZW50TW91c2VQb3NpdGlvbiwgdGhp
cy5fbW91c2VEb3duUG9zaXRpb24pICogdGhpcy5zZWNvbmRzUGVyUGl4ZWwpLCB0aGlzLmVuZFRp
bWUpOwogCiAgICAgICAgICAgICAvLyBUdXJuIG9uIGNvbC1yZXNpemUgY3Vyc29yIHN0eWxlIG9u
Y2UgZHJhZ2dpbmcgYmVnaW5zLCByYXRoZXIgdGhhbiBvbiB0aGUgaW5pdGlhbCBtb3VzZSBkb3du
LgotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyLlJlc2l6aW5nU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUpOworICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIu
UmVzaXppbmdTZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICB0
aGlzLl91cGRhdGVTZWxlY3Rpb24odGhpcy5fZWxlbWVudC5jbGllbnRXaWR0aCwgdGhpcy5kdXJh
dGlvbik7CisgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvbih0aGlzLmVsZW1lbnQuY2xpZW50
V2lkdGgsIHRoaXMuZHVyYXRpb24pOwogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwpAQCAtNzU3LDcgKzc0MSw3IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09
PSAwKTsKIAogICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGlvbklzTW92ZSkgewotICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyLlJlc2l6aW5nU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVzaXpp
bmdTZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVj
dGlvbkVuZFRpbWUgLSB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZSA8IHRoaXMubWluaW11bVNlbGVj
dGlvbkR1cmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIHNlY3Rpb24gaXMgc21hbGxl
ciB0aGFuIGFsbG93ZWQsIGdyb3cgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgZHJhZyB0byBtZWV0
IHRoZSBtaW51bXVtLgpAQCAtNzk3LDcgKzc4MSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9kcmFnSGFuZGxlSXNTdGFydFRpbWUg
PSBldmVudC50YXJnZXQgPT09IHRoaXMuX2xlZnRTZWxlY3Rpb25IYW5kbGVFbGVtZW50OwotICAg
ICAgICB0aGlzLl9tb3VzZURvd25Qb3NpdGlvbiA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5fZWxlbWVu
dC50b3RhbE9mZnNldExlZnQ7CisgICAgICAgIHRoaXMuX21vdXNlRG93blBvc2l0aW9uID0gZXZl
bnQucGFnZVggLSB0aGlzLmVsZW1lbnQudG90YWxPZmZzZXRMZWZ0OwogCiAgICAgICAgIHRoaXMu
X3NlbGVjdGlvbkhhbmRsZU1vdXNlTW92ZUV2ZW50TGlzdGVuZXIgPSB0aGlzLl9oYW5kbGVTZWxl
Y3Rpb25IYW5kbGVNb3VzZU1vdmUuYmluZCh0aGlzKTsKICAgICAgICAgdGhpcy5fc2VsZWN0aW9u
SGFuZGxlTW91c2VVcEV2ZW50TGlzdGVuZXIgPSB0aGlzLl9oYW5kbGVTZWxlY3Rpb25IYW5kbGVN
b3VzZVVwLmJpbmQodGhpcyk7CkBAIC04MDYsNyArNzkwLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLl9z
ZWxlY3Rpb25IYW5kbGVNb3VzZU1vdmVFdmVudExpc3RlbmVyKTsKICAgICAgICAgZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMuX3NlbGVjdGlvbkhhbmRsZU1vdXNlVXBF
dmVudExpc3RlbmVyKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVzaXppbmdTZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSk7
CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJ1bGVyLlJlc2l6aW5nU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwpAQCAt
ODE2LDE5ICs4MDAsMTkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1l
bGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgIHsKICAgICAgICAgY29u
c29sZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09PSAwKTsKIAotICAgICAgICB2YXIgY3VycmVudE1v
dXNlUG9zaXRpb24gPSBldmVudC5wYWdlWCAtIHRoaXMuX2VsZW1lbnQudG90YWxPZmZzZXRMZWZ0
OwotICAgICAgICB2YXIgY3VycmVudFRpbWUgPSB0aGlzLnN0YXJ0VGltZSArIChjdXJyZW50TW91
c2VQb3NpdGlvbiAqIHRoaXMuc2Vjb25kc1BlclBpeGVsKTsKKyAgICAgICAgbGV0IGN1cnJlbnRN
b3VzZVBvc2l0aW9uID0gZXZlbnQucGFnZVggLSB0aGlzLmVsZW1lbnQudG90YWxPZmZzZXRMZWZ0
OworICAgICAgICBsZXQgY3VycmVudFRpbWUgPSB0aGlzLnN0YXJ0VGltZSArIChjdXJyZW50TW91
c2VQb3NpdGlvbiAqIHRoaXMuc2Vjb25kc1BlclBpeGVsKTsKICAgICAgICAgaWYgKHRoaXMuc25h
cEludGVydmFsKQogICAgICAgICAgICAgY3VycmVudFRpbWUgPSB0aGlzLl9zbmFwVmFsdWUoY3Vy
cmVudFRpbWUpOwogCiAgICAgICAgIGlmIChldmVudC5hbHRLZXkgJiYgIWV2ZW50LmN0cmxLZXkg
JiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7CiAgICAgICAgICAgICAvLyBS
ZXNpemUgdGhlIHNlbGVjdGlvbiBvbiBib3RoIHNpZGVzIHdoZW4gdGhlIE9wdGlvbiBrZXlzIGlz
IGhlbGQgZG93bi4KICAgICAgICAgICAgIGlmICh0aGlzLl9kcmFnSGFuZGxlSXNTdGFydFRpbWUp
IHsKLSAgICAgICAgICAgICAgICB2YXIgdGltZURpZmZlcmVuY2UgPSBjdXJyZW50VGltZSAtIHRo
aXMuc2VsZWN0aW9uU3RhcnRUaW1lOworICAgICAgICAgICAgICAgIGxldCB0aW1lRGlmZmVyZW5j
ZSA9IGN1cnJlbnRUaW1lIC0gdGhpcy5zZWxlY3Rpb25TdGFydFRpbWU7CiAgICAgICAgICAgICAg
ICAgdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgPSBNYXRoLm1heCh0aGlzLnN0YXJ0VGltZSwgTWF0
aC5taW4oY3VycmVudFRpbWUsIHRoaXMuc2VsZWN0aW9uRW5kVGltZSAtIHRoaXMubWluaW11bVNl
bGVjdGlvbkR1cmF0aW9uKSk7CiAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmRUaW1l
ID0gTWF0aC5taW4oTWF0aC5tYXgodGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgKyB0aGlzLm1pbmlt
dW1TZWxlY3Rpb25EdXJhdGlvbiwgdGhpcy5zZWxlY3Rpb25FbmRUaW1lIC0gdGltZURpZmZlcmVu
Y2UpLCB0aGlzLmVuZFRpbWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICB2YXIgdGltZURpZmZlcmVuY2UgPSBjdXJyZW50VGltZSAtIHRoaXMuc2VsZWN0aW9uRW5kVGlt
ZTsKKyAgICAgICAgICAgICAgICBsZXQgdGltZURpZmZlcmVuY2UgPSBjdXJyZW50VGltZSAtIHRo
aXMuc2VsZWN0aW9uRW5kVGltZTsKICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkVuZFRp
bWUgPSBNYXRoLm1pbihNYXRoLm1heCh0aGlzLnNlbGVjdGlvblN0YXJ0VGltZSArIHRoaXMubWlu
aW11bVNlbGVjdGlvbkR1cmF0aW9uLCBjdXJyZW50VGltZSksIHRoaXMuZW5kVGltZSk7CiAgICAg
ICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgPSBNYXRoLm1heCh0aGlzLnN0YXJ0
VGltZSwgTWF0aC5taW4odGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgLSB0aW1lRGlmZmVyZW5jZSwg
dGhpcy5zZWxlY3Rpb25FbmRUaW1lIC0gdGhpcy5taW5pbXVtU2VsZWN0aW9uRHVyYXRpb24pKTsK
ICAgICAgICAgICAgIH0KQEAgLTg0MCw3ICs4MjQsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
dWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAg
ICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmRUaW1lID0gTWF0aC5taW4oTWF0aC5tYXgo
dGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgKyB0aGlzLm1pbmltdW1TZWxlY3Rpb25EdXJhdGlvbiwg
Y3VycmVudFRpbWUpLCB0aGlzLmVuZFRpbWUpOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5f
dXBkYXRlU2VsZWN0aW9uKHRoaXMuX2VsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMuZHVyYXRpb24p
OworICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24odGhpcy5lbGVtZW50LmNsaWVudFdpZHRo
LCB0aGlzLmR1cmF0aW9uKTsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAg
ICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKQEAgLTg1MCw3ICs4MzQsNyBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5idXR0b24g
PT09IDApOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIuUmVzaXppbmdTZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgZG9jdW1l
bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fc2VsZWN0aW9uSGFuZGxl
TW91c2VNb3ZlRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlz
dGVuZXIoIm1vdXNldXAiLCB0aGlzLl9zZWxlY3Rpb25IYW5kbGVNb3VzZVVwRXZlbnRMaXN0ZW5l
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9WaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmll
dy5qcwppbmRleCA4N2ZmOTNlZjEyZDQ2OWMxYWQ5YzJiMjQxMDQwOTllZDlmMWYzYjY0Li4xYzI3
OTM5ZDcyOTQzNDJiMDUxNzcwOTlmOWU0YjRlMjQ3NjZhMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKQEAgLTQxLDYgKzQxLDEx
IEBAIFdlYkluc3BlY3Rvci5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CiAgICAgfQogCisgICAgZ2V0IGxh
eW91dFBlbmRpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhdGhpcy5fc2NoZWR1bGVkTGF5
b3V0VXBkYXRlSWRlbnRpZmllcjsKKyAgICB9CisKICAgICBnZXQgc3Vidmlld3MoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3N1YnZpZXdzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>