<?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>200118</bug_id>
          
          <creation_ts>2019-07-24 21:39:58 -0700</creation_ts>
          <short_desc>Web Inspector: Timelines: disable related agents when the tab is closed</short_desc>
          <delta_ts>2019-08-05 19:23:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</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>200117</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1555708</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-07-24 21:39:58 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555806</commentid>
    <comment_count>1</comment_count>
      <attachid>374892</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-07-25 09:28:24 -0700</bug_when>
    <thetext>Created attachment 374892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555809</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-25 09:30:04 -0700</bug_when>
    <thetext>This patch modifies the inspector protocol. Please ensure that any frontend changes appropriately use feature checks for new protocol features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557497</commentid>
    <comment_count>3</comment_count>
      <attachid>374892</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-07-31 19:34:50 -0700</bug_when>
    <thetext>Comment on attachment 374892
Patch

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

This looks correct on the frontend. I have a few questions on the backend changes.

&gt; Source/JavaScriptCore/inspector/agents/InspectorHeapAgent.cpp:86
&gt; +    m_tracking = false;

We already returned above if we are tracking so this seems wrong.

&gt; Source/WebCore/inspector/agents/InspectorMemoryAgent.cpp:84
&gt; +    m_tracking = false;
&gt; +
&gt; +    ResourceUsageThread::removeObserver(this);

This doesn&apos;t seem balanced. start/stopTracking handle the observer. If disable doesn&apos;t do anything while tracking then this seems unnecessary.

&gt; Source/WebCore/inspector/agents/InspectorMemoryAgent.cpp:-101
&gt; -    if (!m_enabled)
&gt; -        return;

Nice. Yeah this point shouldn&apos;t even be reached if we&apos;re enabled.

&gt; Source/WebCore/inspector/agents/InspectorTimelineAgent.cpp:-97
&gt; -    m_instrumentingAgents.setPersistentInspectorTimelineAgent(this);

This change is confusing. The original idea behind a `persistent` agent was that it would always be around in InstrumentingAgents even if the frontend had not enabled (and I believe even if a frontend wasn&apos;t connected...)

Maybe the `persistent` part is not needed anymore and this would be just like the other instrumenting agent pointers.

&gt; Source/WebInspectorUI/UserInterface/Controllers/HeapManager.js:26
&gt;  WI.HeapManager = class HeapManager extends WI.Object

This can now have a warning comment at the top about multi-target support. We&apos;ll eventually need to get a snapshot from each target, and operate on HeapSnapshots per-target.

&gt; Source/WebInspectorUI/UserInterface/Controllers/HeapManager.js:76
&gt; +        HeapAgent.snapshot((error, timestamp, snapshotStringData) =&gt; {

This for example either would need a target or would snapshot all targets in a multi-target world.

&gt; Source/WebInspectorUI/UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:269
&gt; +        const objectGroup = undefined;
&gt; +        WI.heapManager.getRemoteObject(this._node, objectGroup, (error, remoteObjectPayload) =&gt; {

Interesting... this should probably have an object group, but it is the global object so maybe we don&apos;t care since it will likely be kept alive forever. Though global objects in isolated worlds are maybe getting leaked from this... only while Web Inspector is open.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557661</commentid>
    <comment_count>4</comment_count>
      <attachid>374892</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-01 11:32:31 -0700</bug_when>
    <thetext>Comment on attachment 374892
Patch

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

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorHeapAgent.cpp:86
&gt;&gt; +    m_tracking = false;
&gt; 
&gt; We already returned above if we are tracking so this seems wrong.

I actually don&apos;t think we should have the earlier return (I probably forgot to remove this from one of my earlier iterations).  If we `disable` while actively tracking, that SHOULD stop tracking.  `disable` should take precedence over everything.

&gt;&gt; Source/WebCore/inspector/agents/InspectorMemoryAgent.cpp:84
&gt;&gt; +    ResourceUsageThread::removeObserver(this);
&gt; 
&gt; This doesn&apos;t seem balanced. start/stopTracking handle the observer. If disable doesn&apos;t do anything while tracking then this seems unnecessary.

See previous response.

&gt;&gt; Source/WebCore/inspector/agents/InspectorTimelineAgent.cpp:-97
&gt;&gt; -    m_instrumentingAgents.setPersistentInspectorTimelineAgent(this);
&gt; 
&gt; This change is confusing. The original idea behind a `persistent` agent was that it would always be around in InstrumentingAgents even if the frontend had not enabled (and I believe even if a frontend wasn&apos;t connected...)
&gt; 
&gt; Maybe the `persistent` part is not needed anymore and this would be just like the other instrumenting agent pointers.

The only reason we had `persistent` was to support auto-capture whenever the main frame navigates and `console.profile`/`console.profileEnd`.  If the Timelines tab isn&apos;t enabled, I don&apos;t think those should be either.

I do think it could use a better name, like `inspectorTimelineAgent` and `activelyTrackingInspectorTimelineAgent`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557705</commentid>
    <comment_count>5</comment_count>
      <attachid>375336</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-01 12:43:01 -0700</bug_when>
    <thetext>Created attachment 375336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558123</commentid>
    <comment_count>6</comment_count>
      <attachid>375455</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-02 14:18:14 -0700</bug_when>
    <thetext>Created attachment 375455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558670</commentid>
    <comment_count>7</comment_count>
      <attachid>375455</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-08-05 18:23:47 -0700</bug_when>
    <thetext>Comment on attachment 375455
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558688</commentid>
    <comment_count>8</comment_count>
      <attachid>375455</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-05 19:22:06 -0700</bug_when>
    <thetext>Comment on attachment 375455
Patch

Clearing flags on attachment: 375455

Committed r248286: &lt;https://trac.webkit.org/changeset/248286&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558689</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-05 19:22:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558690</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-05 19:23:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/53968929&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374892</attachid>
            <date>2019-07-25 09:28:24 -0700</date>
            <delta_ts>2019-08-01 12:42:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200118-20190725092824.patch</filename>
            <type>text/plain</type>
            <size>54526</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQ2OTJhNTY1MDVkZDU0MmZlYTViNzNkNDA3NTAz
NDA1NjFlYzQ2OWMuLjBiZjk2YjE2MTZkY2NjMTYzMzdiMzk4Y2JiMjMxMDI3ZmRlN2Y3NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTA3LTI1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBU
aW1lbGluZXM6IGRpc2FibGUgcmVsYXRlZCBhZ2VudHMgd2hlbiB0aGUgdGFiIGlzIGNsb3NlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTE4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV3b3JrIGhv
dyBgZW5hYmxlYC9gZGlzYWJsZWAgaXMgdXNlZCBmb3IgdGltZWxpbmUtcmVsYXRlZCBhZ2VudHMg
c28gdGhhdCBldmVudHMgYXJlIG5vdCBzZW50CisgICAgICAgIGFuZCBkYXRhIGlzbid0IGtlcHQg
YWxpdmUgd2hlbiB0aGUgVGltZWxpbmVzIHRhYiBpc24ndCBlbmFibGVkLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL1RpbWVsaW5lLmpzb246CisgICAgICAgIEFkZCBgZW5hYmxlYC9g
ZGlzYWJsZWAgY29tbWFuZHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JIZWFwQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rvckhl
YXBBZ2VudDo6ZGlzYWJsZSk6CisKIDIwMTktMDctMjQgIEFsZXhleSBTaHZheWthICA8c2h2YWlr
YWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFRocmVlIGNoZWNrcyBhcmUgbWlzc2luZyBpbiBQ
cm94eSBpbnRlcm5hbCBtZXRob2RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjEzN2ZhMDIwY2I5MzM3ZGRkY2Q3
ZGJjYTdkYWM1MDBjMmYwZTg5OS4uNTg0ZjAxMTE0YzQ3NDc4YTRkOTdlNDVmNWU1OTNlZTE2OTA3
YzA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE5LTA3LTI1ICBEZXZpbiBSb3Vz
c28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBUaW1lbGlu
ZXM6IGRpc2FibGUgcmVsYXRlZCBhZ2VudHMgd2hlbiB0aGUgdGFiIGlzIGNsb3NlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTE4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV3b3JrIGhvdyBgZW5h
YmxlYC9gZGlzYWJsZWAgaXMgdXNlZCBmb3IgdGltZWxpbmUtcmVsYXRlZCBhZ2VudHMgc28gdGhh
dCBldmVudHMgYXJlIG5vdCBzZW50CisgICAgICAgIGFuZCBkYXRhIGlzbid0IGtlcHQgYWxpdmUg
d2hlbiB0aGUgVGltZWxpbmVzIHRhYiBpc24ndCBlbmFibGVkLgorCisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpl
bmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlzYWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdG9wKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9wKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcEZyb21Db25zb2xl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Om1haW5GcmFtZVN0
YXJ0ZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OnN0YXJ0UHJvZ3JhbW1hdGljQ2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpzdG9wUHJvZ3JhbW1hdGljQ2FwdHVyZSk6CisgICAgICAgIFJlbmFtZSBg
bV9lbmFibGVkKmAgdG8gYG1fdHJhY2tpbmcqYCB0byBtYXRjaCBvdGhlciB0aW1lbGluZS1yZWxh
dGVkIGFnZW50cy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck1lbW9yeUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TWVtb3J5QWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5
QWdlbnQ6OmRpZEhhbmRsZU1lbW9yeVByZXNzdXJlKToKKwogMjAxOS0wNy0yNCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtibWFsbG9jXSBBZGQgSXNvSGVh
cCB0ZXN0IHRvIGVuc3VyZSB0aGF0IElzb0hlYXAgcGFnZXMgYXJlIG5vdCBhbGxvY2F0aW5nIHRv
byBsYXJnZSBWQQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMjdmMGY4ZDJmNWIyY2QwYzA0
OWE1ZTQ2ZGJlY2YwY2FkNmVjY2NiOC4uNDk5MmY2NjI5M2ZmNmQwMTA0ZjVkY2YyM2E2MTU0MGU3
MjU3ZDQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUgQEAKKzIwMTkt
MDctMjUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFRpbWVsaW5lczogZGlzYWJsZSByZWxhdGVkIGFnZW50cyB3aGVuIHRoZSB0YWIg
aXMgY2xvc2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDAxMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXdvcmsgaG93IGBlbmFibGVgL2BkaXNhYmxlYCBpcyB1c2VkIGZvciB0aW1lbGluZS1yZWxh
dGVkIGFnZW50cyBzbyB0aGF0IGV2ZW50cyBhcmUgbm90IHNlbnQKKyAgICAgICAgYW5kIGRhdGEg
aXNuJ3Qga2VwdCBhbGl2ZSB3aGVuIHRoZSBUaW1lbGluZXMgdGFiIGlzbid0IGVuYWJsZWQuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qczoK
KyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlcik6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFn
ZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5h
Z2VyLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90
eXBlLnNldCBhdXRvQ2FwdHVyZU9uUGFnZUxvYWQpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5h
Z2VyLnByb3RvdHlwZS5lbmFibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdl
ci5wcm90b3R5cGUuZGlzYWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2Vy
LnByb3RvdHlwZS5zdGFydENhcHR1cmluZyk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIu
cHJvdG90eXBlLnN0b3BDYXB0dXJpbmcpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnBy
b3RvdHlwZS5hc3luYyBwcm9jZXNzSlNPTik6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIu
cHJvdG90eXBlLmNhcHR1cmluZ1N0YXJ0ZWQpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2Vy
LnByb3RvdHlwZS5jYXB0dXJpbmdTdG9wcGVkKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdl
ci5wcm90b3R5cGUuYXV0b0NhcHR1cmVTdGFydGVkKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFu
YWdlci5wcm90b3R5cGUuZXZlbnRSZWNvcmRlZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFn
ZXIucHJvdG90eXBlLnBhZ2VET01Db250ZW50TG9hZGVkRXZlbnRGaXJlZCk6CisgICAgICAgIChX
SS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLnBhZ2VMb2FkRXZlbnRGaXJlZCk6CisgICAgICAg
IChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmNwdVByb2ZpbGVyVHJhY2tpbmdVcGRhdGVk
KToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUubWVtb3J5VHJhY2tpbmdV
cGRhdGVkKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuaGVhcFRyYWNr
aW5nU3RhcnRlZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmhlYXBU
cmFja2luZ0NvbXBsZXRlZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBl
LmhlYXBTbmFwc2hvdEFkZGVkKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5
cGUuX2xvYWROZXdSZWNvcmRpbmcpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3Rv
dHlwZS5fbGVnYWN5QXR0ZW1wdFN0YXJ0QXV0b0NhcHR1cmluZ0ZvckZyYW1lKToKKyAgICAgICAg
KFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX3Byb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOgor
ICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5fbWFpblJlc291cmNlRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX3Jlc291cmNlV2Fz
QWRkZWQpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5fZ2FyYmFnZUNv
bGxlY3RlZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLl9tZW1vcnlQ
cmVzc3VyZSk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLnNjcmlwdFBy
b2ZpbGVyVHJhY2tpbmdVcGRhdGVkKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90
b3R5cGUuc2NyaXB0UHJvZmlsZXJUcmFja2luZ0NvbXBsZXRlZCk6CisgICAgICAgIChXSS5UaW1l
bGluZU1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVBdXRvQ2FwdHVyZUluc3RydW1lbnRzKToKKyAg
ICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZURPTU5vZGVEaWRGaXJl
RXZlbnQpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlRE9N
Tm9kZVBvd2VyRWZmaWNpZW50UGxheWJhY2tTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL0luc3RydW1lbnQuanM6CisgICAgICAgIChXSS5JbnN0cnVtZW50LnN0
YXJ0TGVnYWN5VGltZWxpbmVBZ2VudCk6CisgICAgICAgIChXSS5JbnN0cnVtZW50LnN0b3BMZWdh
Y3lUaW1lbGluZUFnZW50KToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
SGVhcE1hbmFnZXIuanM6CisgICAgICAgIChXSS5IZWFwTWFuYWdlcik6IEFkZGVkLgorICAgICAg
ICAoV0kuSGVhcE1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAo
V0kuSGVhcE1hbmFnZXIucHJvdG90eXBlLmVuYWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuSGVh
cE1hbmFnZXIucHJvdG90eXBlLmRpc2FibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkhlYXBNYW5h
Z2VyLnByb3RvdHlwZS5zbmFwc2hvdCk6IEFkZGVkLgorICAgICAgICAoV0kuSGVhcE1hbmFnZXIu
cHJvdG90eXBlLmdldFByZXZpZXcpOiBBZGRlZC4KKyAgICAgICAgKFdJLkhlYXBNYW5hZ2VyLnBy
b3RvdHlwZS5nZXRSZW1vdGVPYmplY3QpOiBBZGRlZC4KKyAgICAgICAgKFdJLkhlYXBNYW5hZ2Vy
LnByb3RvdHlwZS5nYXJiYWdlQ29sbGVjdGVkKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvTWVtb3J5TWFuYWdlci5qczoKKyAgICAgICAgKFdJLk1lbW9yeU1hbmFnZXIp
OiBBZGRlZC4KKyAgICAgICAgKFdJLk1lbW9yeU1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVU
YXJnZXQpOgorICAgICAgICAoV0kuTWVtb3J5TWFuYWdlci5wcm90b3R5cGUuZW5hYmxlKTogQWRk
ZWQuCisgICAgICAgIChXSS5NZW1vcnlNYW5hZ2VyLnByb3RvdHlwZS5kaXNhYmxlKTogQWRkZWQu
CisgICAgICAgIChXSS5NZW1vcnlNYW5hZ2VyLnByb3RvdHlwZS5tZW1vcnlQcmVzc3VyZSk6CisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanM6
CisgICAgICAgIChXSS5UaW1lbGluZVRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlRpbWVs
aW5lVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmNsb3NlZCk6CisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL01vZGVscy9IZWFwQWxsb2NhdGlvbnNJbnN0cnVtZW50LmpzOgorICAgICAgICAoV0ku
SGVhcEFsbG9jYXRpb25zSW5zdHJ1bWVudCk6CisgICAgICAgIChXSS5IZWFwQWxsb2NhdGlvbnNJ
bnN0cnVtZW50LnByb3RvdHlwZS5fdGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVZpZXcuanM6CisgICAgICAgIChX
SS5IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVZpZXcucHJvdG90eXBlLl90YWtlSGVhcFNuYXBzaG90
Q2xpY2tlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9IZWFwU25hcHNob3RJbnN0
YW5jZURhdGFHcmlkTm9kZS5qczoKKyAgICAgICAgKFdJLkhlYXBTbmFwc2hvdEluc3RhbmNlRGF0
YUdyaWROb2RlLmxvZ0hlYXBTbmFwc2hvdE5vZGUpOgorICAgICAgICAoV0kuSGVhcFNuYXBzaG90
SW5zdGFuY2VEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9wb3B1bGF0ZVByZXZpZXcpOgorICAgICAg
ICAoV0kuSGVhcFNuYXBzaG90SW5zdGFuY2VEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9tb3VzZW92
ZXJIYW5kbGVyLmFwcGVuZFBhdGhSb3cpOgorICAgICAgICBHbyB0aHJvdWdoIHRoZSBgSGVhcE1h
bmFnZXJgIGZvciBgSGVhcEFnZW50YCBjb21tYW5kcyBzbyBpdCBjYW4gYmV0dGVyIG1hbmFnZSBz
dGF0ZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzOgorICAgICAgICAo
V0kuY29udGVudExvYWRlZCk6CisKIDIwMTktMDctMjQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT046IG5vIGNvbnRl
eHQgbWVudSBpdGVtcyB3b3JrIHdoZW4gY29udGV4dCBtZW51IGNsaWNraW5nIG9uICJBZGQgQnJl
YWtwb2ludCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCmluZGV4IDkwOGJjMGVjMGRjODVjM2Vj
NTA1OTEzOTZiMTYzNzE3MmJmOTYxZWUuLjIwZTFkOGQ5MDYwMmFlZTZmYjY1YTc4MDk2MjE4ZTQw
NDYwYmIzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApAQCAtNTQsMjkgKzU0LDM2IEBA
IHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJv
bnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzCiAKIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogewotICAgIC8vIFN0
b3AgdHJhY2tpbmcgd2l0aG91dCB0YWtpbmcgYSBzbmFwc2hvdC4KLSAgICBtX3RyYWNraW5nID0g
ZmFsc2U7Ci0KICAgICBFcnJvclN0cmluZyBpZ25vcmVkOwogICAgIGRpc2FibGUoaWdub3JlZCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQordm9p
ZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7
Ci0gICAgaWYgKG1fZW5hYmxlZCkKKyAgICBpZiAobV9lbmFibGVkKSB7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIkhlYXBBZ2VudCBhbHJlYWR5IGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKICAgICBtX2VuYWJsZWQgPSB0cnVlOwogCiAgICAgbV9lbnZpcm9ubWVudC52bSgp
LmhlYXAuYWRkT2JzZXJ2ZXIodGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVhcEFnZW50Ojpk
aXNhYmxlKEVycm9yU3RyaW5nJikKK3ZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpkaXNhYmxlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICBpZiAo
bV90cmFja2luZykgeworICAgICAgICBlcnJvclN0cmluZyA9ICJIZWFwQWdlbnQgY2Fubm90IGJl
IGRpc2FibGVkIHdoaWxlIGFjdGl2ZWx5IHRyYWNraW5nIl9zOwogICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKCFtX2VuYWJsZWQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSGVh
cEFnZW50IGFscmVhZHkgZGlzYWJsZWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICBtX2VuYWJsZWQgPSBmYWxzZTsKKyAgICBtX3RyYWNraW5nID0gZmFsc2U7CiAKICAgICBtX2Vu
dmlyb25tZW50LnZtKCkuaGVhcC5yZW1vdmVPYnNlcnZlcih0aGlzKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UaW1lbGluZS5qc29uIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UaW1lbGluZS5qc29uCmlu
ZGV4IDk4ODAwMzJlYzgxNGM2NTk4ZmI2OWZmZDNkNDhkMjU5MDAxOTk3MTIuLjhjNzE2ODI4ZDY5
YmI4MGI4OWU0MGZhZjlhNzA2ODgyM2VlMGZhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGltZWxpbmUuanNvbgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1RpbWVsaW5lLmpzb24KQEAgLTU2LDYgKzU2
LDE0IEBACiAgICAgICAgIH0KICAgICBdLAogICAgICJjb21tYW5kcyI6IFsKKyAgICAgICAgewor
ICAgICAgICAgICAgIm5hbWUiOiAiZW5hYmxlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJFbmFibGVzIFRpbWVsaW5lIGRvbWFpbiBldmVudHMuIgorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAibmFtZSI6ICJkaXNhYmxlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJEaXNhYmxlcyBUaW1lbGluZSBkb21haW4gZXZlbnRzLiIKKyAgICAgICAgfSwKICAgICAg
ICAgewogICAgICAgICAgICAgIm5hbWUiOiAic3RhcnQiLAogICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIlN0YXJ0cyBjYXB0dXJpbmcgaW5zdHJ1bWVudGF0aW9uIGV2ZW50cy4iLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcAppbmRleCAyMmQ0N2Y1N2Y0NWUyMDliNzM1MmRmYTBkNTNjMjJmMDIwOTlhNThlLi44
NmFlNTgwYjIyZjZjZjk5YWMwMTBiZmJiYjIzN2ViZDQ0MGYzMjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cApAQCAtNDcsMjYgKzQ3LDQxIEBAIEluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1v
cnlBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogCiB2b2lkIEluc3BlY3Rvck1lbW9y
eUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNr
ZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3Rv
ck1lbW9yeUFnZW50KHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogewotICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JNZW1vcnlBZ2VudChudWxscHRyKTsKLQogICAg
IEVycm9yU3RyaW5nIGlnbm9yZWQ7Ci0gICAgc3RvcFRyYWNraW5nKGlnbm9yZWQpOwogICAgIGRp
c2FibGUoaWdub3JlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmVuYWJsZShF
cnJvclN0cmluZyYpCit2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjplbmFibGUoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nKQogewotICAgIG1fZW5hYmxlZCA9IHRydWU7CisgICAgaWYgKG1faW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JNZW1vcnlBZ2VudCgpID09IHRoaXMpIHsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiTWVtb3J5QWdlbnQgYWxyZWFkeSBlbmFibGVkIl9zOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3Rv
ck1lbW9yeUFnZW50KHRoaXMpOwogfQogCi12b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpkaXNh
YmxlKEVycm9yU3RyaW5nJikKK3ZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRpc2FibGUoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIG1fZW5hYmxlZCA9IGZhbHNlOworICAgIGlm
IChtX3RyYWNraW5nKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1lbW9yeUFnZW50IGNhbm5v
dCBiZSBkaXNhYmxlZCB3aGlsZSBhY3RpdmVseSB0cmFja2luZyJfczsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTWVtb3J5
QWdlbnQoKSAhPSB0aGlzKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1lbW9yeUFnZW50IGFs
cmVhZHkgZGlzYWJsZWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yTWVtb3J5QWdlbnQobnVsbHB0cik7CisKKyAgICBt
X3RyYWNraW5nID0gZmFsc2U7CisKKyAgICBSZXNvdXJjZVVzYWdlVGhyZWFkOjpyZW1vdmVPYnNl
cnZlcih0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6c3RhcnRUcmFja2lu
ZyhFcnJvclN0cmluZyYpCkBAIC05Nyw5ICsxMTIsNiBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFn
ZW50OjpzdG9wVHJhY2tpbmcoRXJyb3JTdHJpbmcmKQogCiB2b2lkIEluc3BlY3Rvck1lbW9yeUFn
ZW50OjpkaWRIYW5kbGVNZW1vcnlQcmVzc3VyZShDcml0aWNhbCBjcml0aWNhbCkKIHsKLSAgICBp
ZiAoIW1fZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgTWVtb3J5RnJvbnRlbmREaXNw
YXRjaGVyOjpTZXZlcml0eSBzZXZlcml0eSA9IGNyaXRpY2FsID09IENyaXRpY2FsOjpZZXMgPyBN
ZW1vcnlGcm9udGVuZERpc3BhdGNoZXI6OlNldmVyaXR5OjpDcml0aWNhbCA6IE1lbW9yeUZyb250
ZW5kRGlzcGF0Y2hlcjo6U2V2ZXJpdHk6Ok5vbkNyaXRpY2FsOwogICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5tZW1vcnlQcmVzc3VyZShtX2Vudmlyb25tZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgp
LT5lbGFwc2VkVGltZSgpLnNlY29uZHMoKSwgc2V2ZXJpdHkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCmluZGV4
IGU1OTE4YWNjNmUxZmFjZWVhMDZhZTVlYWJmZTY0ZDhiMTExYWY5ZDcuLjVjMTQ3MTExNTQwZTVj
ZjQzNTFiYjhlZGU0MDBlN2U4NDZlYTQ2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKQEAgLTYxLDcgKzYxLDYg
QEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Ok1lbW9yeUZyb250
ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6TWVtb3J5QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAgYm9v
bCBtX2VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV90cmFja2luZyB7IGZhbHNlIH07CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCA0M2EyNGVhMDM1Zjk5YWRhNmEzYzQzNjZmMzhj
MDdhNTNhOWE5YTQwLi4zOTBlNWU5NjI0MjdlYjAwMGRmMzY4OWI4OTk4MGY1ZDcyN2RiMTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTk0LDExICs5NCwzNCBAQCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpID0gZGVmYXVsdDsKIAogdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCh0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZykKK3sKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRJbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkgPT0gdGhpcykgeworICAgICAgICBlcnJvclN0cmluZyA9ICJUaW1lbGlu
ZUFnZW50IGFscmVhZHkgZW5hYmxlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCh0aGlzKTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaXNhYmxlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZykKK3sKKyAgICBpZiAobV90cmFja2luZykgeworICAgICAgICBl
cnJvclN0cmluZyA9ICJUaW1lbGluZUFnZW50IGNhbm5vdCBiZSBkaXNhYmxlZCB3aGlsZSBhY3Rp
dmVseSB0cmFja2luZyJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2lu
c3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSAhPSB0
aGlzKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlRpbWVsaW5lQWdlbnQgYWxyZWFkeSBkaXNh
YmxlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5zZXRQZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudChudWxscHRyKTsKIAogICAg
IEVycm9yU3RyaW5nIHVudXNlZDsKQEAgLTExMCw3ICsxMzMsNyBAQCB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlz
Y29ubmVjdAogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0KEVycm9yU3RyaW5n
JiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKIHsKLSAgICBtX2VuYWJsZWRGcm9tRnJv
bnRlbmQgPSB0cnVlOworICAgIG1fdHJhY2tpbmdGcm9tRnJvbnRlbmQgPSB0cnVlOwogCiAgICAg
aW50ZXJuYWxTdGFydChtYXhDYWxsU3RhY2tEZXB0aCk7CiB9CkBAIC0xMTksNyArMTQyLDcgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdG9wKEVycm9yU3RyaW5nJikKIHsKICAgICBp
bnRlcm5hbFN0b3AoKTsKIAotICAgIG1fZW5hYmxlZEZyb21Gcm9udGVuZCA9IGZhbHNlOworICAg
IG1fdHJhY2tpbmdGcm9tRnJvbnRlbmQgPSBmYWxzZTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpzZXRBdXRvQ2FwdHVyZUVuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJs
ZWQpCkBAIC0xNTMsNyArMTc2LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRJ
bnN0cnVtZW50cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT04KIAogdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0
YWNrRGVwdGgpCiB7Ci0gICAgaWYgKG1fZW5hYmxlZCkKKyAgICBpZiAobV90cmFja2luZykKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1heENhbGxTdGFja0RlcHRoICYmICptYXhDYWxsU3Rh
Y2tEZXB0aCA+IDApCkBAIC0xNjUsMTMgKzE4OCwxMyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKIAogICAg
IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5hZGRMaXN0ZW5lcih0aGlzKTsKIAot
ICAgIG1fZW5hYmxlZCA9IHRydWU7CisgICAgbV90cmFja2luZyA9IHRydWU7CiAKICAgICAvLyBG
SVhNRTogQWJzdHJhY3QgYXdheSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIG9uY2UgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc0OCBpcyBmaXhlZC4KIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIG1fZnJhbWVTdGFydE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6
V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVCZWdpbiksIFt0aGlzXSgpIHsK
LSAgICAgICAgaWYgKCFtX2VuYWJsZWQgfHwgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZl
cigpLmlzUGF1c2VkKCkpCisgICAgICAgIGlmICghbV90cmFja2luZyB8fCBtX2Vudmlyb25tZW50
LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQYXVzZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBpZiAoIW1fcnVuTG9vcE5lc3RpbmdMZXZlbCkKQEAgLTE4MCw3ICsyMDMsNyBAQCB2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhD
YWxsU3RhY2tEZXB0aCkKICAgICB9KTsKIAogICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9v
cE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0
aGlzXSgpIHsKLSAgICAgICAgaWYgKCFtX2VuYWJsZWQgfHwgbV9lbnZpcm9ubWVudC5zY3JpcHRE
ZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCkpCisgICAgICAgIGlmICghbV90cmFja2luZyB8fCBtX2Vu
dmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQYXVzZWQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBBU1NFUlQobV9ydW5Mb29wTmVzdGluZ0xldmVsID4gMCk7CkBAIC0y
MDksNyArMjMyLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0
KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6aW50ZXJuYWxTdG9wKCkKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICBpZiAoIW1f
dHJhY2tpbmcpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5z
ZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KG51bGxwdHIpOwpAQCAtMjI4LDcgKzI1MSw3IEBAIHZv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9wKCkKIAogICAgIGNsZWFyUmVj
b3JkU3RhY2soKTsKIAotICAgIG1fZW5hYmxlZCA9IGZhbHNlOworICAgIG1fdHJhY2tpbmcgPSBm
YWxzZTsKICAgICBtX3N0YXJ0ZWRDb21wb3NpdGUgPSBmYWxzZTsKICAgICBtX2F1dG9DYXB0dXJl
UGhhc2UgPSBBdXRvQ2FwdHVyZVBoYXNlOjpOb25lOwogCkBAIC0yNTgsNyArMjgxLDcgQEAgdm9p
ZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghbV9lbmFi
bGVkICYmIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5pc0VtcHR5KCkpCisgICAgaWYg
KCFtX3RyYWNraW5nICYmIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5pc0VtcHR5KCkp
CiAgICAgICAgIHN0YXJ0UHJvZ3JhbW1hdGljQ2FwdHVyZSgpOwogCiAgICAgbV9wZW5kaW5nQ29u
c29sZVByb2ZpbGVSZWNvcmRzLmFwcGVuZChjcmVhdGVSZWNvcmRFbnRyeShUaW1lbGluZVJlY29y
ZEZhY3Rvcnk6OmNyZWF0ZUNvbnNvbGVQcm9maWxlRGF0YSh0aXRsZSksIFRpbWVsaW5lUmVjb3Jk
VHlwZTo6Q29uc29sZVByb2ZpbGUsIHRydWUsIGZyYW1lRnJvbUV4ZWNTdGF0ZShleGVjKSkpOwpA
QCAtMjc3LDcgKzMwMCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcEZyb21D
b25zb2xlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsCiAgICAgICAgICAgICBk
aWRDb21wbGV0ZVJlY29yZEVudHJ5KHJlY29yZCk7CiAgICAgICAgICAgICBtX3BlbmRpbmdDb25z
b2xlUHJvZmlsZVJlY29yZHMucmVtb3ZlKGkpOwogCi0gICAgICAgICAgICBpZiAoIW1fZW5hYmxl
ZEZyb21Gcm9udGVuZCAmJiBtX3BlbmRpbmdDb25zb2xlUHJvZmlsZVJlY29yZHMuaXNFbXB0eSgp
KQorICAgICAgICAgICAgaWYgKCFtX3RyYWNraW5nRnJvbUZyb250ZW5kICYmIG1fcGVuZGluZ0Nv
bnNvbGVQcm9maWxlUmVjb3Jkcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgc3RvcFByb2dy
YW1tYXRpY0NhcHR1cmUoKTsKIAogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDMxLDcgKzQ1NCw3
IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dGltZUVuZChGcmFtZSYgZnJhbWUsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjptYWlu
RnJhbWVTdGFydGVkTG9hZGluZygpCiB7Ci0gICAgaWYgKG1fZW5hYmxlZCkKKyAgICBpZiAobV90
cmFja2luZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2F1dG9DYXB0dXJlRW5hYmxl
ZCkKQEAgLTQ2NSw3ICs0ODgsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Om1haW5G
cmFtZU5hdmlnYXRlZCgpCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnRQcm9n
cmFtbWF0aWNDYXB0dXJlKCkKIHsKLSAgICBBU1NFUlQoIW1fZW5hYmxlZCk7CisgICAgQVNTRVJU
KCFtX3RyYWNraW5nKTsKIAogICAgIC8vIERpc2FibGUgYnJlYWtwb2ludHMgZHVyaW5nIHByb2dy
YW1tYXRpYyBjYXB0dXJlLgogICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dl
ckFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkg
ewpAQCAtNDg0LDggKzUwNyw4IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnRQ
cm9ncmFtbWF0aWNDYXB0dXJlKCkKIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdG9w
UHJvZ3JhbW1hdGljQ2FwdHVyZSgpCiB7Ci0gICAgQVNTRVJUKG1fZW5hYmxlZCk7Ci0gICAgQVNT
RVJUKCFtX2VuYWJsZWRGcm9tRnJvbnRlbmQpOworICAgIEFTU0VSVChtX3RyYWNraW5nKTsKKyAg
ICBBU1NFUlQoIW1fdHJhY2tpbmdGcm9tRnJvbnRlbmQpOwogCiAgICAgdG9nZ2xlSW5zdHJ1bWVu
dHMoSW5zdHJ1bWVudFN0YXRlOjpTdG9wKTsKICAgICB0b2dnbGVUaW1lbGluZUluc3RydW1lbnQo
SW5zdHJ1bWVudFN0YXRlOjpTdG9wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggYWFjMzhmZjkyMjRm
NzVjZmQ3ODZlODg2MzQ5MGEwYWY4OGVjOGZmZS4uNjQ2OWNjMTYyODBkZGI4MzVmNzkyMGIzN2Vm
ZjBmZWEwMjEzMGJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTk0LDYgKzk0LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRl
bmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgZmluYWw7CiAgICAgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFz
b24pIGZpbmFsOwogCisgICAgLy8gVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKKyAg
ICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZGlzYWJsZShFcnJv
clN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQq
IG1heENhbGxTdGFja0RlcHRoID0gbnVsbHB0cikgZmluYWw7CiAgICAgdm9pZCBzdG9wKEVycm9y
U3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzZXRBdXRvQ2FwdHVyZUVuYWJsZWQoRXJyb3JTdHJp
bmcmLCBib29sKSBmaW5hbDsKQEAgLTIxMyw4ICsyMTYsOCBAQCBwcml2YXRlOgogICAgIGludCBt
X2lkIHsgMSB9OwogICAgIGludCBtX21heENhbGxTdGFja0RlcHRoIHsgNSB9OwogCi0gICAgYm9v
bCBtX2VuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9lbmFibGVkRnJvbUZyb250ZW5kIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fdHJhY2tpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV90cmFj
a2luZ0Zyb21Gcm9udGVuZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Byb2dyYW1tYXRpY0NhcHR1
cmVSZXN0b3JlQnJlYWtwb2ludEFjdGl2ZVZhbHVlIHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9h
dXRvQ2FwdHVyZUVuYWJsZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSGVhcE1hbmFnZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9IZWFwTWFuYWdlci5qcwpp
bmRleCAzNjFlMDRiOGY0MmM2ZjI4Y2JmNTk5NDExZDYyM2I2NjZmMjJmNWExLi4yMDEwY2QyNmM1
NTkwNzM1MGMzOTRiNmU0MTc4NDU1YmZhYTJjNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9IZWFwTWFuYWdlci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9IZWFwTWFuYWdl
ci5qcwpAQCAtMjUsMjAgKzI1LDkyIEBACiAKIFdJLkhlYXBNYW5hZ2VyID0gY2xhc3MgSGVhcE1h
bmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIHsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAg
ICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsKKyAgICB9CisK
ICAgICAvLyBUYXJnZXQKIAogICAgIGluaXRpYWxpemVUYXJnZXQodGFyZ2V0KQogICAgIHsKKyAg
ICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAg
IGlmICh0YXJnZXQuSGVhcEFnZW50KQogICAgICAgICAgICAgdGFyZ2V0LkhlYXBBZ2VudC5lbmFi
bGUoKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAorICAgIGVuYWJsZSgpCisgICAgeworICAg
ICAgICBpZiAodGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0
aGlzLl9lbmFibGVkID0gdHJ1ZTsKKworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFy
Z2V0cykKKyAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRhcmdldCh0YXJnZXQpOworICAgIH0K
KworICAgIGRpc2FibGUoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRz
KSB7CisgICAgICAgICAgICBpZiAodGFyZ2V0LkhlYXBBZ2VudCkKKyAgICAgICAgICAgICAgICB0
YXJnZXQuSGVhcEFnZW50LmRpc2FibGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2Vu
YWJsZWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBzbmFwc2hvdChjYWxsYmFjaykKKyAgICB7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworICAgICAgICBjb25zb2xlLmFz
c2VydCh3aW5kb3cuSGVhcEFnZW50KTsKKyAgICAgICAgSGVhcEFnZW50LnNuYXBzaG90KChlcnJv
ciwgdGltZXN0YW1wLCBzbmFwc2hvdFN0cmluZ0RhdGEpID0+IHsKKyAgICAgICAgICAgIGlmIChl
cnJvcikKKyAgICAgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKGVycm9yKTsKKyAg
ICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCB0aW1lc3RhbXAsIHNuYXBzaG90U3RyaW5nRGF0YSk7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIGdldFByZXZpZXcobm9kZSwgY2FsbGJhY2spCisg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQod2luZG93LkhlYXBBZ2VudCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5v
ZGUgaW5zdGFuY2VvZiBXSS5IZWFwU25hcHNob3ROb2RlUHJveHkpOworICAgICAgICBIZWFwQWdl
bnQuZ2V0UHJldmlldyhub2RlLmlkLCAoZXJyb3IsIHN0cmluZywgZnVuY3Rpb25EZXRhaWxzLCBw
cmV2aWV3KSA9PiB7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgV0ku
cmVwb3J0SW50ZXJuYWxFcnJvcihlcnJvcik7CisgICAgICAgICAgICBjYWxsYmFjayhlcnJvciwg
c3RyaW5nLCBmdW5jdGlvbkRldGFpbHMsIHByZXZpZXcpOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBnZXRSZW1vdGVPYmplY3Qobm9kZSwgb2JqZWN0R3JvdXAsIGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHdpbmRvdy5IZWFwQWdlbnQpOworICAgICAgICBjb25zb2xlLmFzc2VydChub2RlIGlu
c3RhbmNlb2YgV0kuSGVhcFNuYXBzaG90Tm9kZVByb3h5KTsKKyAgICAgICAgSGVhcEFnZW50Lmdl
dFJlbW90ZU9iamVjdChub2RlLmlkLCBvYmplY3RHcm91cCwgKGVycm9yLCByZXN1bHQpID0+IHsK
KyAgICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5h
bEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOworICAg
ICAgICB9KTsKKyAgICB9CisKICAgICBnYXJiYWdlQ29sbGVjdGVkKHRhcmdldCwgcGF5bG9hZCkK
ICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkhlYXBPYnNlcnZlci4KIAorICAgICAg
ICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgLy8g
RklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjczMjM+IFdlYiBJbnNwZWN0b3I6IEVuYWJs
ZSBNZW1vcnkgcHJvZmlsaW5nIGluIFdvcmtlcnMKICAgICAgICAgaWYgKHRhcmdldCAhPT0gV0ku
bWFpblRhcmdldCkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL01lbW9yeU1hbmFnZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9NZW1vcnlNYW5h
Z2VyLmpzCmluZGV4IDc2ZTY3YTZkZTY3ZjUwZDY5MDFkZTk5YTBkN2NjNjA4YTRkOGY2NGUuLmFh
Njc3N2JhNGZhMzRkNmQ1OTc1OTRiZmJjZmUxN2YxNTBiNDRiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL01lbW9yeU1hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
TWVtb3J5TWFuYWdlci5qcwpAQCAtMjUsMjAgKzI1LDU3IEBACiAKIFdJLk1lbW9yeU1hbmFnZXIg
PSBjbGFzcyBNZW1vcnlNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiB7CisgICAgY29uc3RydWN0
b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9lbmFibGVkID0g
ZmFsc2U7CisgICAgfQorCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0aWFsaXplVGFyZ2V0KHRh
cmdldCkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJl
dHVybjsKKwogICAgICAgICBpZiAodGFyZ2V0Lk1lbW9yeUFnZW50KQogICAgICAgICAgICAgdGFy
Z2V0Lk1lbW9yeUFnZW50LmVuYWJsZSgpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwogCisgICAg
ZW5hYmxlKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSB0cnVlOworCisgICAgICAgIGZvciAo
bGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVGFy
Z2V0KHRhcmdldCk7CisgICAgfQorCisgICAgZGlzYWJsZSgpCisgICAgeworICAgICAgICBpZiAo
IXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChsZXQg
dGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQuTWVtb3J5QWdl
bnQpCisgICAgICAgICAgICAgICAgdGFyZ2V0Lk1lbW9yeUFnZW50LmRpc2FibGUoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsKKyAgICB9CisKICAgICBtZW1v
cnlQcmVzc3VyZSh0aW1lc3RhbXAsIHByb3RvY29sU2V2ZXJpdHkpCiAgICAgewogICAgICAgICAv
LyBDYWxsZWQgZnJvbSBXSS5NZW1vcnlPYnNlcnZlci4KIAorICAgICAgICBpZiAoIXRoaXMuX2Vu
YWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgbGV0IG1lbW9yeVByZXNzdXJl
RXZlbnQgPSBXSS5NZW1vcnlQcmVzc3VyZUV2ZW50LmZyb21QYXlsb2FkKHRpbWVzdGFtcCwgcHJv
dG9jb2xTZXZlcml0eSk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
Lk1lbW9yeU1hbmFnZXIuRXZlbnQuTWVtb3J5UHJlc3N1cmUsIHttZW1vcnlQcmVzc3VyZUV2ZW50
fSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCmluZGV4IGIxNjFh
NjU5NjVjNTk4NWM5NTk5ZDVmOTQ2MDdmYzZiMDQxN2NhMGMuLjU5OWE1NGQ3M2IyNjdhZjYzNzkx
NzQzMTc0NzI3ZTQyODNjNTVmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIu
anMKQEAgLTMxLDYgKzMxLDggQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICBzdXBlcigpOwogCisgICAg
ICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsKKwogICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExp
c3RlbmVyKFdJLkZyYW1lLkV2ZW50LlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsIHRoaXMuX3Byb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQsIHRoaXMpOwogICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291
cmNlRGlkQ2hhbmdlLCB0aGlzKTsKIApAQCAtNjUsNyArNjcsMTQgQEAgV0kuVGltZWxpbmVNYW5h
Z2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBpbml0
aWFsaXplVGFyZ2V0KHRhcmdldCkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAodGFyZ2V0LlRpbWVsaW5lQWdlbnQp
IHsKKyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4xKTogVGltZWxpbmUuZW5h
YmxlIGRpZCBub3QgZXhpc3QuCisgICAgICAgICAgICBpZiAodGFyZ2V0LlRpbWVsaW5lQWdlbnQu
ZW5hYmxlKQorICAgICAgICAgICAgICAgIHRhcmdldC5UaW1lbGluZUFnZW50LmVuYWJsZSgpOwor
CiAgICAgICAgICAgICB0aGlzLl91cGRhdGVBdXRvQ2FwdHVyZUluc3RydW1lbnRzKFt0YXJnZXRd
KTsKIAogICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDkpOiBUaW1lbGluZS5zZXRB
dXRvQ2FwdHVyZUVuYWJsZWQgZGlkIG5vdCBleGlzdC4KQEAgLTE1NCw3ICsxNjMsNyBAQCBXSS5U
aW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
IAogICAgIHJlc2V0KCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmlzQ2FwdHVyaW5nKCkpCisg
ICAgICAgIGlmICh0aGlzLl9jYXB0dXJpbmdTdGF0ZSA9PT0gVGltZWxpbmVNYW5hZ2VyLkNhcHR1
cmluZ1N0YXRlLlN0YXJ0aW5nIHx8IHRoaXMuX2NhcHR1cmluZ1N0YXRlID09PSBUaW1lbGluZU1h
bmFnZXIuQ2FwdHVyaW5nU3RhdGUuQWN0aXZlKQogICAgICAgICAgICAgdGhpcy5zdG9wQ2FwdHVy
aW5nKCk7CiAKICAgICAgICAgdGhpcy5fcmVjb3JkaW5ncyA9IFtdOwpAQCAtMTgzLDYgKzE5Miw4
IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogCiAgICAgc2V0IGF1dG9DYXB0dXJlT25QYWdlTG9hZChhdXRvQ2FwdHVyZSkKICAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAgIGF1
dG9DYXB0dXJlID0gISFhdXRvQ2FwdHVyZTsKIAogICAgICAgICBpZiAodGhpcy5fYXV0b0NhcHR1
cmVPblBhZ2VMb2FkID09PSBhdXRvQ2FwdHVyZSkKQEAgLTIzNyw4ICsyNDgsMzkgQEAgV0kuVGlt
ZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICBlbmFibGUoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
X2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9
IHRydWU7CisKKyAgICAgICAgdGhpcy5yZXNldCgpOworCisgICAgICAgIGZvciAobGV0IHRhcmdl
dCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVGFyZ2V0KHRhcmdl
dCk7CisgICAgfQorCisgICAgZGlzYWJsZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Vu
YWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5yZXNldCgpOworCisg
ICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKSB7CisgICAgICAgICAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgMTMuMSk6IFRpbWVsaW5lLmRpc2FibGUgZGlkIG5vdCBleGlzdC4K
KyAgICAgICAgICAgIGlmICh0YXJnZXQuVGltZWxpbmVBZ2VudCAmJiB0YXJnZXQuVGltZWxpbmVB
Z2VudC5kaXNhYmxlKQorICAgICAgICAgICAgICAgIHRhcmdldC5UaW1lbGluZUFnZW50LmRpc2Fi
bGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsKKyAgICB9
CisKICAgICBzdGFydENhcHR1cmluZyhzaG91bGRDcmVhdGVSZWNvcmRpbmcpCiAgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKwogICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl9jYXB0dXJpbmdTdGF0ZSA9PT0gVGltZWxpbmVNYW5hZ2VyLkNhcHR1cmluZ1N0
YXRlLlN0b3BwaW5nIHx8IHRoaXMuX2NhcHR1cmluZ1N0YXRlID09PSBUaW1lbGluZU1hbmFnZXIu
Q2FwdHVyaW5nU3RhdGUuSW5hY3RpdmUsICJUaW1lbGluZU1hbmFnZXIgaXMgYWxyZWFkeSBjYXB0
dXJpbmcuIik7CiAgICAgICAgIGlmICh0aGlzLl9jYXB0dXJpbmdTdGF0ZSAhPT0gVGltZWxpbmVN
YW5hZ2VyLkNhcHR1cmluZ1N0YXRlLlN0b3BwaW5nICYmIHRoaXMuX2NhcHR1cmluZ1N0YXRlICE9
PSBUaW1lbGluZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuSW5hY3RpdmUpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0yNTQsNiArMjk2LDggQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGlt
ZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBzdG9wQ2FwdHVyaW5nKCkKICAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX2NhcHR1cmluZ1N0YXRlID09PSBUaW1lbGluZU1hbmFnZXIuQ2Fw
dHVyaW5nU3RhdGUuU3RhcnRpbmcgfHwgdGhpcy5fY2FwdHVyaW5nU3RhdGUgPT09IFRpbWVsaW5l
TWFuYWdlci5DYXB0dXJpbmdTdGF0ZS5BY3RpdmUsICJUaW1lbGluZU1hbmFnZXIgaXMgbm90IGNh
cHR1cmluZy4iKTsKICAgICAgICAgaWYgKHRoaXMuX2NhcHR1cmluZ1N0YXRlICE9PSBUaW1lbGlu
ZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuU3RhcnRpbmcgJiYgdGhpcy5fY2FwdHVyaW5nU3RhdGUg
IT09IFRpbWVsaW5lTWFuYWdlci5DYXB0dXJpbmdTdGF0ZS5BY3RpdmUpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0yOTUsNyArMzM5LDcgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGlt
ZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LlJlY29yZGluZ0NyZWF0ZWQs
IHtyZWNvcmRpbmc6IG5ld1JlY29yZGluZ30pOwogCi0gICAgICAgIGlmICh0aGlzLmlzQ2FwdHVy
aW5nKCkpCisgICAgICAgIGlmICh0aGlzLl9jYXB0dXJpbmdTdGF0ZSA9PT0gVGltZWxpbmVNYW5h
Z2VyLkNhcHR1cmluZ1N0YXRlLlN0YXJ0aW5nIHx8IHRoaXMuX2NhcHR1cmluZ1N0YXRlID09PSBU
aW1lbGluZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuQWN0aXZlKQogICAgICAgICAgICAgdGhpcy5z
dG9wQ2FwdHVyaW5nKCk7CiAKICAgICAgICAgbGV0IG9sZFJlY29yZGluZyA9IHRoaXMuX2FjdGl2
ZVJlY29yZGluZzsKQEAgLTQxOSw5ICs0NjMsMTEgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xh
c3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICAvLyBD
YWxsZWQgZnJvbSBXSS5UaW1lbGluZU9ic2VydmVyLgogCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAgIGxldCB3YWl0aW5nRm9yQ2FwdHVyaW5nU3RhcnRl
ZEV2ZW50ID0gdGhpcy5fY2FwdHVyaW5nU3RhdGUgPT09IFRpbWVsaW5lTWFuYWdlci5DYXB0dXJp
bmdTdGF0ZS5TdGFydGluZzsKIAotICAgICAgICBpZiAodGhpcy5pc0NhcHR1cmluZygpKQorICAg
ICAgICBpZiAodGhpcy5fY2FwdHVyaW5nU3RhdGUgPT09IFRpbWVsaW5lTWFuYWdlci5DYXB0dXJp
bmdTdGF0ZS5TdGFydGluZyB8fCB0aGlzLl9jYXB0dXJpbmdTdGF0ZSA9PT0gVGltZWxpbmVNYW5h
Z2VyLkNhcHR1cmluZ1N0YXRlLkFjdGl2ZSkKICAgICAgICAgICAgIHRoaXMuc3RvcENhcHR1cmlu
ZygpOwogCiAgICAgICAgIHRoaXMuX2luaXRpYXRlZEJ5QmFja2VuZFN0YXJ0ID0gdHJ1ZTsKQEAg
LTQ0MSw2ICs0ODcsOSBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLlRp
bWVsaW5lT2JzZXJ2ZXIuCiAKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQorICAgICAgICAg
ICAgcmV0dXJuOworCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuaXNDYXB0dXJpbmcoKSk7
CiAgICAgICAgIGlmICghdGhpcy5pc0NhcHR1cmluZygpKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNDg2LDYgKzUzNSw5IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0ku
UGFnZU9ic2VydmVyLgogCisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAg
IHJldHVybjsKKwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9hY3RpdmVSZWNvcmRpbmcp
OwogICAgICAgICBjb25zb2xlLmFzc2VydChpc05hTihXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJh
bWUuZG9tQ29udGVudFJlYWR5RXZlbnRUaW1lc3RhbXApKTsKIApAQCAtNTAxLDYgKzU1Myw5IEBA
IFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuUGFnZU9ic2VydmVyLgogCisg
ICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl9hY3RpdmVSZWNvcmRpbmcpOwogICAgICAgICBjb25zb2xl
LmFzc2VydChpc05hTihXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubG9hZEV2ZW50VGltZXN0
YW1wKSk7CiAKQEAgLTUyNSw2ICs1ODAsOSBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBU
aW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIC8vIENhbGxl
ZCBmcm9tIFdJLkNQVVByb2ZpbGVyT2JzZXJ2ZXIuCiAKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFi
bGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
aXNDYXB0dXJpbmcoKSk7CiAgICAgICAgIGlmICghdGhpcy5pc0NhcHR1cmluZygpKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTUwLDYgKzYwOCw5IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNs
YXNzIFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgLy8g
Q2FsbGVkIGZyb20gV0kuTWVtb3J5T2JzZXJ2ZXIuCiAKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFi
bGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
aXNDYXB0dXJpbmcoKSk7CiAgICAgICAgIGlmICghdGhpcy5pc0NhcHR1cmluZygpKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTcwLDE0ICs2MzEsMTYgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0g
Y2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgdGhpcy5j
YXB0dXJpbmdTdGFydGVkKHRpbWVzdGFtcCk7CiAKLSAgICAgICAgdGhpcy5fYWRkUmVjb3JkKG5l
dyBXSS5IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVJlY29yZCh0aW1lc3RhbXAsIHNuYXBzaG90KSk7
CisgICAgICAgIGlmICh0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgdGhpcy5fYWRkUmVjb3Jk
KG5ldyBXSS5IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVJlY29yZCh0aW1lc3RhbXAsIHNuYXBzaG90
KSk7CiAgICAgfQogCiAgICAgaGVhcFRyYWNraW5nQ29tcGxldGVkKHRpbWVzdGFtcCwgc25hcHNo
b3QpCiAgICAgewogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5IZWFwT2JzZXJ2ZXIuCiAKLSAg
ICAgICAgdGhpcy5fYWRkUmVjb3JkKG5ldyBXSS5IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVJlY29y
ZCh0aW1lc3RhbXAsIHNuYXBzaG90KSk7CisgICAgICAgIGlmICh0aGlzLl9lbmFibGVkKQorICAg
ICAgICAgICAgdGhpcy5fYWRkUmVjb3JkKG5ldyBXSS5IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVJl
Y29yZCh0aW1lc3RhbXAsIHNuYXBzaG90KSk7CiAKICAgICAgICAgdGhpcy5jYXB0dXJpbmdTdG9w
cGVkKCk7CiAgICAgfQpAQCAtNTg2LDYgKzY0OSw5IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNs
YXNzIFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgLy8g
Q2FsbGVkIGZyb20gV0kuSGVhcEFsbG9jYXRpb25zSW5zdHJ1bWVudC4KIAorICAgICAgICBpZiAo
IXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgdGhpcy5fYWRk
UmVjb3JkKG5ldyBXSS5IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVJlY29yZCh0aW1lc3RhbXAsIHNu
YXBzaG90KSk7CiAgICAgfQogCkBAIC04MjcsNyArODkzLDcgQEAgV0kuVGltZWxpbmVNYW5hZ2Vy
ID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMu
X3JlY29yZGluZ3MucHVzaChuZXdSZWNvcmRpbmcpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5UaW1lbGluZU1hbmFnZXIuRXZlbnQuUmVjb3JkaW5nQ3JlYXRlZCwg
e3JlY29yZGluZzogbmV3UmVjb3JkaW5nfSk7CiAKLSAgICAgICAgaWYgKHRoaXMuaXNDYXB0dXJp
bmcoKSkKKyAgICAgICAgaWYgKHRoaXMuX2NhcHR1cmluZ1N0YXRlID09PSBUaW1lbGluZU1hbmFn
ZXIuQ2FwdHVyaW5nU3RhdGUuU3RhcnRpbmcgfHwgdGhpcy5fY2FwdHVyaW5nU3RhdGUgPT09IFRp
bWVsaW5lTWFuYWdlci5DYXB0dXJpbmdTdGF0ZS5BY3RpdmUpCiAgICAgICAgICAgICB0aGlzLnN0
b3BDYXB0dXJpbmcoKTsKIAogICAgICAgICB2YXIgb2xkUmVjb3JkaW5nID0gdGhpcy5fYWN0aXZl
UmVjb3JkaW5nOwpAQCAtOTE3LDcgKzk4Myw3IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNz
IFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBsZXQgb2xkTWFpblJl
c291cmNlID0gZnJhbWUubWFpblJlc291cmNlIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX2lzQ2Fw
dHVyaW5nUGFnZVJlbG9hZCA9IG9sZE1haW5SZXNvdXJjZSAhPT0gbnVsbCAmJiBvbGRNYWluUmVz
b3VyY2UudXJsID09PSBtYWluUmVzb3VyY2UudXJsOwogCi0gICAgICAgIGlmICh0aGlzLmlzQ2Fw
dHVyaW5nKCkpCisgICAgICAgIGlmICh0aGlzLl9jYXB0dXJpbmdTdGF0ZSA9PT0gVGltZWxpbmVN
YW5hZ2VyLkNhcHR1cmluZ1N0YXRlLlN0YXJ0aW5nIHx8IHRoaXMuX2NhcHR1cmluZ1N0YXRlID09
PSBUaW1lbGluZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuQWN0aXZlKQogICAgICAgICAgICAgdGhp
cy5zdG9wQ2FwdHVyaW5nKCk7CiAKICAgICAgICAgdGhpcy5fbWFpblJlc291cmNlRm9yQXV0b0Nh
cHR1cmluZyA9IG1haW5SZXNvdXJjZTsKQEAgLTk3OSwxMSArMTA0NSwxNyBAQCBXSS5UaW1lbGlu
ZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAg
IF9wcm92aXNpb25hbExvYWRTdGFydGVkKGV2ZW50KQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlz
Ll9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIHRoaXMuX2F0dGVtcHRB
dXRvQ2FwdHVyaW5nRm9yRnJhbWUoZXZlbnQudGFyZ2V0KTsKICAgICB9CiAKICAgICBfbWFpblJl
c291cmNlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVk
KQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIC8vIElnbm9yZSByZXNvdXJjZSBldmVu
dHMgd2hlbiB0aGVyZSBpc24ndCBhIG1haW4gZnJhbWUgeWV0LiBUaG9zZSBldmVudHMgYXJlIHRy
aWdnZXJlZCBieQogICAgICAgICAvLyBsb2FkaW5nIHRoZSBjYWNoZWQgcmVzb3VyY2VzIHdoZW4g
dGhlIGluc3BlY3RvciBvcGVucywgYW5kIHRoZXkgZG8gbm90IGhhdmUgdGltaW5nIGluZm9ybWF0
aW9uLgogICAgICAgICBpZiAoIVdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSkKQEAgLTEwMTYs
NiArMTA4OCw5IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogCiAgICAgX3Jlc291cmNlV2FzQWRkZWQoZXZlbnQpCiAgICAgewor
ICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAg
ICAgLy8gSWdub3JlIHJlc291cmNlIGV2ZW50cyB3aGVuIHRoZXJlIGlzbid0IGEgbWFpbiBmcmFt
ZSB5ZXQuIFRob3NlIGV2ZW50cyBhcmUgdHJpZ2dlcmVkIGJ5CiAgICAgICAgIC8vIGxvYWRpbmcg
dGhlIGNhY2hlZCByZXNvdXJjZXMgd2hlbiB0aGUgaW5zcGVjdG9yIG9wZW5zLCBhbmQgdGhleSBk
byBub3QgaGF2ZSB0aW1pbmcgaW5mb3JtYXRpb24uCiAgICAgICAgIGlmICghV0kubmV0d29ya01h
bmFnZXIubWFpbkZyYW1lKQpAQCAtMTAyNiwxMiArMTEwMSwxOCBAQCBXSS5UaW1lbGluZU1hbmFn
ZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9nYXJi
YWdlQ29sbGVjdGVkKGV2ZW50KQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQor
ICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGxldCB7Y29sbGVjdGlvbn0gPSBldmVudC5k
YXRhOwogICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdJLlNjcmlwdFRpbWVsaW5lUmVjb3Jk
KFdJLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5HYXJiYWdlQ29sbGVjdGVkLCBjb2xs
ZWN0aW9uLnN0YXJ0VGltZSwgY29sbGVjdGlvbi5lbmRUaW1lLCBudWxsLCBudWxsLCBjb2xsZWN0
aW9uKSk7CiAgICAgfQogCiAgICAgX21lbW9yeVByZXNzdXJlKGV2ZW50KQogICAgIHsKKyAgICAg
ICAgaWYgKCF0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIHRo
aXMuX2FjdGl2ZVJlY29yZGluZy5hZGRNZW1vcnlQcmVzc3VyZUV2ZW50KGV2ZW50LmRhdGEubWVt
b3J5UHJlc3N1cmVFdmVudCk7CiAgICAgfQogCkBAIC0xMDY4LDYgKzExNDksOSBAQCBXSS5UaW1l
bGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAog
ICAgIHNjcmlwdFByb2ZpbGVyVHJhY2tpbmdVcGRhdGVkKGV2ZW50KQogICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGxldCB7
c3RhcnRUaW1lLCBlbmRUaW1lLCB0eXBlfSA9IGV2ZW50OwogICAgICAgICBsZXQgc2NyaXB0UmVj
b3JkVHlwZSA9IHRoaXMuX3NjcmlwdFByb2ZpbGVyVHlwZVRvU2NyaXB0VGltZWxpbmVSZWNvcmRU
eXBlKHR5cGUpOwogICAgICAgICBsZXQgcmVjb3JkID0gbmV3IFdJLlNjcmlwdFRpbWVsaW5lUmVj
b3JkKHNjcmlwdFJlY29yZFR5cGUsIHN0YXJ0VGltZSwgZW5kVGltZSwgbnVsbCwgbnVsbCwgbnVs
bCwgbnVsbCk7CkBAIC0xMDg0LDY3ICsxMTY4LDY5IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNs
YXNzIFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgc2NyaXB0UHJvZmls
ZXJUcmFja2luZ0NvbXBsZXRlZCh0aW1lc3RhbXAsIHNhbXBsZXMpCiAgICAgewotICAgICAgICBj
b25zb2xlLmFzc2VydCghdGhpcy5fd2ViVGltZWxpbmVTY3JpcHRSZWNvcmRzRXhwZWN0aW5nU2Ny
aXB0UHJvZmlsZXJFdmVudHMgfHwgdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzLmxlbmd0aCA+
PSB0aGlzLl93ZWJUaW1lbGluZVNjcmlwdFJlY29yZHNFeHBlY3RpbmdTY3JpcHRQcm9maWxlckV2
ZW50cy5sZW5ndGgpOworICAgICAgICBpZiAodGhpcy5fZW5hYmxlZCkgeworICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoIXRoaXMuX3dlYlRpbWVsaW5lU2NyaXB0UmVjb3Jkc0V4cGVjdGluZ1Nj
cmlwdFByb2ZpbGVyRXZlbnRzIHx8IHRoaXMuX3NjcmlwdFByb2ZpbGVyUmVjb3Jkcy5sZW5ndGgg
Pj0gdGhpcy5fd2ViVGltZWxpbmVTY3JpcHRSZWNvcmRzRXhwZWN0aW5nU2NyaXB0UHJvZmlsZXJF
dmVudHMubGVuZ3RoKTsKIAotICAgICAgICBpZiAoc2FtcGxlcykgewotICAgICAgICAgICAgbGV0
IHtzdGFja1RyYWNlc30gPSBzYW1wbGVzOwotICAgICAgICAgICAgbGV0IHRvcERvd25DYWxsaW5n
Q29udGV4dFRyZWUgPSB0aGlzLl9hY3RpdmVSZWNvcmRpbmcudG9wRG93bkNhbGxpbmdDb250ZXh0
VHJlZTsKKyAgICAgICAgICAgIGlmIChzYW1wbGVzKSB7CisgICAgICAgICAgICAgICAgbGV0IHtz
dGFja1RyYWNlc30gPSBzYW1wbGVzOworICAgICAgICAgICAgICAgIGxldCB0b3BEb3duQ2FsbGlu
Z0NvbnRleHRUcmVlID0gdGhpcy5fYWN0aXZlUmVjb3JkaW5nLnRvcERvd25DYWxsaW5nQ29udGV4
dFRyZWU7CiAKLSAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBhIHBlci1zYW1wbGUgZHVyYXRpb24u
Ci0gICAgICAgICAgICBsZXQgdGltZXN0YW1wSW5kZXggPSAwOwotICAgICAgICAgICAgbGV0IHRp
bWVzdGFtcENvdW50ID0gc3RhY2tUcmFjZXMubGVuZ3RoOwotICAgICAgICAgICAgbGV0IHNhbXBs
ZUR1cmF0aW9ucyA9IG5ldyBBcnJheSh0aW1lc3RhbXBDb3VudCk7Ci0gICAgICAgICAgICBsZXQg
c2FtcGxlRHVyYXRpb25JbmRleCA9IDA7Ci0gICAgICAgICAgICBjb25zdCBkZWZhdWx0RHVyYXRp
b24gPSAxIC8gMTAwMDsgLy8gMW1zLgotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0
aGlzLl9zY3JpcHRQcm9maWxlclJlY29yZHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICBsZXQgcmVjb3JkID0gdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzW2ldOworICAgICAgICAg
ICAgICAgIC8vIENhbGN1bGF0ZSBhIHBlci1zYW1wbGUgZHVyYXRpb24uCisgICAgICAgICAgICAg
ICAgbGV0IHRpbWVzdGFtcEluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICBsZXQgdGltZXN0YW1w
Q291bnQgPSBzdGFja1RyYWNlcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgbGV0IHNhbXBsZUR1
cmF0aW9ucyA9IG5ldyBBcnJheSh0aW1lc3RhbXBDb3VudCk7CisgICAgICAgICAgICAgICAgbGV0
IHNhbXBsZUR1cmF0aW9uSW5kZXggPSAwOworICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRE
dXJhdGlvbiA9IDEgLyAxMDAwOyAvLyAxbXMuCisgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCB0aGlzLl9zY3JpcHRQcm9maWxlclJlY29yZHMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbGV0IHJlY29yZCA9IHRoaXMuX3NjcmlwdFByb2ZpbGVyUmVjb3Jkc1tp
XTsKKworICAgICAgICAgICAgICAgICAgICAvLyBVc2UgYSBkZWZhdWx0IGR1cmF0aW9uIGZvciB0
aW1lc3RhbXBzIHJlY29yZGVkIG91dHNpZGUgb2YgU2NyaXB0UHJvZmlsZXIgZXZlbnRzLgorICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAodGltZXN0YW1wSW5kZXggPCB0aW1lc3RhbXBDb3VudCAm
JiBzdGFja1RyYWNlc1t0aW1lc3RhbXBJbmRleF0udGltZXN0YW1wIDwgcmVjb3JkLnN0YXJ0VGlt
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlRHVyYXRpb25zW3NhbXBsZUR1cmF0
aW9uSW5kZXgrK10gPSBkZWZhdWx0RHVyYXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICB0
aW1lc3RhbXBJbmRleCsrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgLy8gQXZlcmFnZSB0aGUgZHVyYXRpb24gcGVyIHNhbXBsZSBhY3Jvc3MgYWxsIHNhbXBs
ZXMgZHVyaW5nIHRoZSByZWNvcmQuCisgICAgICAgICAgICAgICAgICAgIGxldCBzYW1wbGVzSW5S
ZWNvcmQgPSAwOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAodGltZXN0YW1wSW5kZXggPCB0
aW1lc3RhbXBDb3VudCAmJiBzdGFja1RyYWNlc1t0aW1lc3RhbXBJbmRleF0udGltZXN0YW1wIDwg
cmVjb3JkLmVuZFRpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcEluZGV4
Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzSW5SZWNvcmQrKzsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoc2FtcGxlc0luUmVjb3JkKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXZlcmFnZUR1cmF0aW9uID0gKHJlY29yZC5l
bmRUaW1lIC0gcmVjb3JkLnN0YXJ0VGltZSkgLyBzYW1wbGVzSW5SZWNvcmQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzYW1wbGVEdXJhdGlvbnMuZmlsbChhdmVyYWdlRHVyYXRpb24sIHNhbXBs
ZUR1cmF0aW9uSW5kZXgsIHNhbXBsZUR1cmF0aW9uSW5kZXggKyBzYW1wbGVzSW5SZWNvcmQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlRHVyYXRpb25JbmRleCArPSBzYW1wbGVzSW5S
ZWNvcmQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICAvLyBVc2UgYSBkZWZhdWx0IGR1cmF0aW9uIGZvciB0aW1lc3RhbXBzIHJlY29y
ZGVkIG91dHNpZGUgb2YgU2NyaXB0UHJvZmlsZXIgZXZlbnRzLgotICAgICAgICAgICAgICAgIHdo
aWxlICh0aW1lc3RhbXBJbmRleCA8IHRpbWVzdGFtcENvdW50ICYmIHN0YWNrVHJhY2VzW3RpbWVz
dGFtcEluZGV4XS50aW1lc3RhbXAgPCByZWNvcmQuc3RhcnRUaW1lKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHNhbXBsZUR1cmF0aW9uc1tzYW1wbGVEdXJhdGlvbkluZGV4KytdID0gZGVmYXVsdER1
cmF0aW9uOwotICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXBJbmRleCsrOwotICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGltZXN0YW1wSW5kZXggPCB0aW1lc3RhbXBD
b3VudCkKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlRHVyYXRpb25zLmZpbGwoZGVmYXVsdER1
cmF0aW9uLCBzYW1wbGVEdXJhdGlvbkluZGV4KTsKIAotICAgICAgICAgICAgICAgIC8vIEF2ZXJh
Z2UgdGhlIGR1cmF0aW9uIHBlciBzYW1wbGUgYWNyb3NzIGFsbCBzYW1wbGVzIGR1cmluZyB0aGUg
cmVjb3JkLgotICAgICAgICAgICAgICAgIGxldCBzYW1wbGVzSW5SZWNvcmQgPSAwOwotICAgICAg
ICAgICAgICAgIHdoaWxlICh0aW1lc3RhbXBJbmRleCA8IHRpbWVzdGFtcENvdW50ICYmIHN0YWNr
VHJhY2VzW3RpbWVzdGFtcEluZGV4XS50aW1lc3RhbXAgPCByZWNvcmQuZW5kVGltZSkgewotICAg
ICAgICAgICAgICAgICAgICB0aW1lc3RhbXBJbmRleCsrOwotICAgICAgICAgICAgICAgICAgICBz
YW1wbGVzSW5SZWNvcmQrKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYg
KHNhbXBsZXNJblJlY29yZCkgewotICAgICAgICAgICAgICAgICAgICBsZXQgYXZlcmFnZUR1cmF0
aW9uID0gKHJlY29yZC5lbmRUaW1lIC0gcmVjb3JkLnN0YXJ0VGltZSkgLyBzYW1wbGVzSW5SZWNv
cmQ7Ci0gICAgICAgICAgICAgICAgICAgIHNhbXBsZUR1cmF0aW9ucy5maWxsKGF2ZXJhZ2VEdXJh
dGlvbiwgc2FtcGxlRHVyYXRpb25JbmRleCwgc2FtcGxlRHVyYXRpb25JbmRleCArIHNhbXBsZXNJ
blJlY29yZCk7Ci0gICAgICAgICAgICAgICAgICAgIHNhbXBsZUR1cmF0aW9uSW5kZXggKz0gc2Ft
cGxlc0luUmVjb3JkOworICAgICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVJlY29yZGluZy5pbml0
aWFsaXplQ2FsbGluZ0NvbnRleHRUcmVlcyhzdGFja1RyYWNlcywgc2FtcGxlRHVyYXRpb25zKTsK
KworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHRyYW5zZm9ybWF0aW9uIHNob3VsZCBu
b3QgYmUgbmVlZGVkIGFmdGVyIGludHJvZHVjaW5nIFByb2ZpbGVWaWV3LgorICAgICAgICAgICAg
ICAgIC8vIE9uY2Ugd2UgZWxpbWluYXRlIFByb2ZpbGVOb2RlVHJlZUVsZW1lbnRzIGFuZCBQcm9m
aWxlTm9kZURhdGFHcmlkTm9kZXMuCisgICAgICAgICAgICAgICAgLy8gPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE1NDk3Mz4gV2ViIEluc3BlY3RvcjogVGltZWxpbmVzIFVJIHJlZGVzaWduOiBSZW1v
dmUgVGltZWxpbmVTaWRlYmFyUGFuZWwKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IHRoaXMuX3NjcmlwdFByb2ZpbGVyUmVjb3Jkcy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgICAgICAgICBsZXQgcmVjb3JkID0gdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzW2ldOwor
ICAgICAgICAgICAgICAgICAgICByZWNvcmQucHJvZmlsZVBheWxvYWQgPSB0b3BEb3duQ2FsbGlu
Z0NvbnRleHRUcmVlLnRvQ1BVUHJvZmlsZVBheWxvYWQocmVjb3JkLnN0YXJ0VGltZSwgcmVjb3Jk
LmVuZFRpbWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgLy8gVXNlIGEgZGVmYXVsdCBkdXJhdGlvbiBmb3IgdGltZXN0YW1wcyByZWNvcmRlZCBvdXRz
aWRlIG9mIFNjcmlwdFByb2ZpbGVyIGV2ZW50cy4KLSAgICAgICAgICAgIGlmICh0aW1lc3RhbXBJ
bmRleCA8IHRpbWVzdGFtcENvdW50KQotICAgICAgICAgICAgICAgIHNhbXBsZUR1cmF0aW9ucy5m
aWxsKGRlZmF1bHREdXJhdGlvbiwgc2FtcGxlRHVyYXRpb25JbmRleCk7Ci0KLSAgICAgICAgICAg
IHRoaXMuX2FjdGl2ZVJlY29yZGluZy5pbml0aWFsaXplQ2FsbGluZ0NvbnRleHRUcmVlcyhzdGFj
a1RyYWNlcywgc2FtcGxlRHVyYXRpb25zKTsKLQotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMg
dHJhbnNmb3JtYXRpb24gc2hvdWxkIG5vdCBiZSBuZWVkZWQgYWZ0ZXIgaW50cm9kdWNpbmcgUHJv
ZmlsZVZpZXcuCi0gICAgICAgICAgICAvLyBPbmNlIHdlIGVsaW1pbmF0ZSBQcm9maWxlTm9kZVRy
ZWVFbGVtZW50cyBhbmQgUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGVzLgotICAgICAgICAgICAgLy8g
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1NDk3Mz4gV2ViIEluc3BlY3RvcjogVGltZWxpbmVzIFVJ
IHJlZGVzaWduOiBSZW1vdmUgVGltZWxpbmVTaWRlYmFyUGFuZWwKLSAgICAgICAgICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgbGV0IHJlY29yZCA9IHRoaXMuX3NjcmlwdFByb2ZpbGVyUmVjb3Jk
c1tpXTsKLSAgICAgICAgICAgICAgICByZWNvcmQucHJvZmlsZVBheWxvYWQgPSB0b3BEb3duQ2Fs
bGluZ0NvbnRleHRUcmVlLnRvQ1BVUHJvZmlsZVBheWxvYWQocmVjb3JkLnN0YXJ0VGltZSwgcmVj
b3JkLmVuZFRpbWUpOworICAgICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBTY3JpcHRQcm9maWxl
ciBjcmVhdGVkIHJlY29yZHMgd2l0aCBXZWIgVGltZWxpbmUgcmVjb3Jkcy4KKyAgICAgICAgICAg
IC8vIEZpbHRlciBvdXQgdGhlIGFscmVhZHkgYWRkZWQgU2NyaXB0UHJvZmlsZXIgZXZlbnRzIHdo
aWNoIHNob3VsZCBub3QgaGF2ZSBiZWVuIHdyYXBwZWQuCisgICAgICAgICAgICBpZiAoV0kuc2hh
cmVkQXBwLmRlYnVnZ2FibGVUeXBlICE9PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KSB7
CisgICAgICAgICAgICAgICAgdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzID0gdGhpcy5fc2Ny
aXB0UHJvZmlsZXJSZWNvcmRzLmZpbHRlcigoeCkgPT4geC5fX3NjcmlwdFByb2ZpbGVyVHlwZSA9
PT0gU2NyaXB0UHJvZmlsZXJBZ2VudC5FdmVudFR5cGUuT3RoZXIpOworICAgICAgICAgICAgICAg
IHRoaXMuX21lcmdlU2NyaXB0UHJvZmlsZVJlY29yZHMoKTsKICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzID0gbnVsbDsKKworICAgICAgICAg
ICAgbGV0IHRpbWVsaW5lID0gdGhpcy5fYWN0aXZlUmVjb3JkaW5nLnRpbWVsaW5lRm9yUmVjb3Jk
VHlwZShXSS5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdCk7CisgICAgICAgICAgICB0aW1lbGlu
ZS5yZWZyZXNoKCk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIFNjcmlw
dFByb2ZpbGVyIGNyZWF0ZWQgcmVjb3JkcyB3aXRoIFdlYiBUaW1lbGluZSByZWNvcmRzLgotICAg
ICAgICAvLyBGaWx0ZXIgb3V0IHRoZSBhbHJlYWR5IGFkZGVkIFNjcmlwdFByb2ZpbGVyIGV2ZW50
cyB3aGljaCBzaG91bGQgbm90IGhhdmUgYmVlbiB3cmFwcGVkLgotICAgICAgICBpZiAoV0kuc2hh
cmVkQXBwLmRlYnVnZ2FibGVUeXBlICE9PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KSB7
Ci0gICAgICAgICAgICB0aGlzLl9zY3JpcHRQcm9maWxlclJlY29yZHMgPSB0aGlzLl9zY3JpcHRQ
cm9maWxlclJlY29yZHMuZmlsdGVyKCh4KSA9PiB4Ll9fc2NyaXB0UHJvZmlsZXJUeXBlID09PSBT
Y3JpcHRQcm9maWxlckFnZW50LkV2ZW50VHlwZS5PdGhlcik7Ci0gICAgICAgICAgICB0aGlzLl9t
ZXJnZVNjcmlwdFByb2ZpbGVSZWNvcmRzKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9z
Y3JpcHRQcm9maWxlclJlY29yZHMgPSBudWxsOwotCi0gICAgICAgIGxldCB0aW1lbGluZSA9IHRo
aXMuX2FjdGl2ZVJlY29yZGluZy50aW1lbGluZUZvclJlY29yZFR5cGUoV0kuVGltZWxpbmVSZWNv
cmQuVHlwZS5TY3JpcHQpOwotICAgICAgICB0aW1lbGluZS5yZWZyZXNoKCk7Ci0KICAgICAgICAg
dGhpcy5jYXB0dXJpbmdTdG9wcGVkKHRpbWVzdGFtcCk7CiAgICAgfQogCkBAIC0xMjA2LDYgKzEy
OTIsOCBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKIAogICAgIF91cGRhdGVBdXRvQ2FwdHVyZUluc3RydW1lbnRzKHRhcmdldHMp
CiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKwogICAgICAg
ICBsZXQgZW5hYmxlZFRpbWVsaW5lVHlwZXMgPSB0aGlzLmVuYWJsZWRUaW1lbGluZVR5cGVzOwog
CiAgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiB0YXJnZXRzKSB7CkBAIC0xMjQ0LDYgKzEzMzIs
OSBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKIAogICAgIF9oYW5kbGVET01Ob2RlRGlkRmlyZUV2ZW50KGV2ZW50KQogICAgIHsK
KyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAg
ICAgIGxldCB7ZG9tRXZlbnR9ID0gZXZlbnQuZGF0YTsKIAogICAgICAgICB0aGlzLl9hZGRSZWNv
cmQobmV3IFdJLk1lZGlhVGltZWxpbmVSZWNvcmQoV0kuTWVkaWFUaW1lbGluZVJlY29yZC5FdmVu
dFR5cGUuRE9NRXZlbnQsIGRvbUV2ZW50LnRpbWVzdGFtcCwgewpAQCAtMTI1NCw2ICsxMzQ1LDkg
QEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICBfaGFuZGxlRE9NTm9kZVBvd2VyRWZmaWNpZW50UGxheWJhY2tTdGF0ZUNo
YW5nZWQoZXZlbnQpCiAgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAg
ICAgICByZXR1cm47CisKICAgICAgICAgbGV0IHt0aW1lc3RhbXAsIGlzUG93ZXJFZmZpY2llbnR9
ID0gZXZlbnQuZGF0YTsKIAogICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdJLk1lZGlhVGlt
ZWxpbmVSZWNvcmQoV0kuTWVkaWFUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuUG93ZXJFZmZpY2ll
bnRQbGF5YmFja1N0YXRlQ2hhbmdlZCwgdGltZXN0YW1wLCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcEFsbG9jYXRpb25zSW5zdHJ1
bWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9IZWFw
QWxsb2NhdGlvbnNJbnN0cnVtZW50LmpzCmluZGV4IDA5MDkwNjU3OGJkNjQxZDAwNzFkN2ZhNTE3
NjdlZjRkNmNjMDg0ZmYuLjhjNTkzYzAyYmI2N2M5YWNhOTIzNDg3N2M0YjViOWZlMDdlYTgxNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9I
ZWFwQWxsb2NhdGlvbnNJbnN0cnVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9IZWFwQWxsb2NhdGlvbnNJbnN0cnVtZW50LmpzCkBAIC03NSw3
ICs3NSw3IEBAIFdJLkhlYXBBbGxvY2F0aW9uc0luc3RydW1lbnQgPSBjbGFzcyBIZWFwQWxsb2Nh
dGlvbnNJbnN0cnVtZW50IGV4dGVuZHMgV0kuSW5zdHJ1CiAKICAgICBfdGFrZUhlYXBTbmFwc2hv
dCgpCiAgICAgewotICAgICAgICBIZWFwQWdlbnQuc25hcHNob3QoZnVuY3Rpb24oZXJyb3IsIHRp
bWVzdGFtcCwgc25hcHNob3RTdHJpbmdEYXRhKSB7CisgICAgICAgIFdJLmhlYXBNYW5hZ2VyLnNu
YXBzaG90KChlcnJvciwgdGltZXN0YW1wLCBzbmFwc2hvdFN0cmluZ0RhdGEpID0+IHsKICAgICAg
ICAgICAgIGxldCB3b3JrZXJQcm94eSA9IFdJLkhlYXBTbmFwc2hvdFdvcmtlclByb3h5LnNpbmds
ZXRvbigpOwogICAgICAgICAgICAgd29ya2VyUHJveHkuY3JlYXRlU25hcHNob3Qoc25hcHNob3RT
dHJpbmdEYXRhLCAoe29iamVjdElkLCBzbmFwc2hvdDogc2VyaWFsaXplZFNuYXBzaG90fSkgPT4g
ewogICAgICAgICAgICAgICAgIGxldCBzbmFwc2hvdCA9IFdJLkhlYXBTbmFwc2hvdFByb3h5LmRl
c2VyaWFsaXplKG9iamVjdElkLCBzZXJpYWxpemVkU25hcHNob3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0luc3RydW1lbnQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSW5zdHJ1bWVudC5qcwpp
bmRleCA0YzEyZDM2MDFkYjhiMGYyMjYzYTIwNDcyM2NhZTgwZmIwZDAxYjc4Li41MGZjZjNhYTdm
M2YxNDRlYTQyZGEyNTNlY2EyZjc3YmFjNGMxMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSW5zdHJ1bWVudC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSW5zdHJ1bWVudC5qcwpAQCAtNTQs
NiArNTQsNyBAQCBXSS5JbnN0cnVtZW50ID0gY2xhc3MgSW5zdHJ1bWVudAogCiAgICAgc3RhdGlj
IHN0YXJ0TGVnYWN5VGltZWxpbmVBZ2VudChpbml0aWF0ZWRCeUJhY2tlbmQpCiAgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydChXSS50aW1lbGluZU1hbmFnZXIuX2VuYWJsZWQpOwogICAgICAg
ICBjb25zb2xlLmFzc2VydCh3aW5kb3cuVGltZWxpbmVBZ2VudCwgIkF0dGVtcHRlZCB0byBzdGFy
dCBsZWdhY3kgdGltZWxpbmUgYWdlbnQgd2l0aG91dCBUaW1lbGluZUFnZW50LiIpOwogCiAgICAg
ICAgIGlmIChXSS5JbnN0cnVtZW50Ll9sZWdhY3lUaW1lbGluZUFnZW50U3RhcnRlZCkKQEAgLTY5
LDYgKzcwLDkgQEAgV0kuSW5zdHJ1bWVudCA9IGNsYXNzIEluc3RydW1lbnQKIAogICAgIHN0YXRp
YyBzdG9wTGVnYWN5VGltZWxpbmVBZ2VudChpbml0aWF0ZWRCeUJhY2tlbmQpCiAgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydChXSS50aW1lbGluZU1hbmFnZXIuX2VuYWJsZWQpOworICAgICAg
ICBjb25zb2xlLmFzc2VydCh3aW5kb3cuVGltZWxpbmVBZ2VudCwgIkF0dGVtcHRlZCB0byBzdG9w
IGxlZ2FjeSB0aW1lbGluZSBhZ2VudCB3aXRob3V0IFRpbWVsaW5lQWdlbnQuIik7CisKICAgICAg
ICAgaWYgKCFXSS5JbnN0cnVtZW50Ll9sZWdhY3lUaW1lbGluZUFnZW50U3RhcnRlZCkKICAgICAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVGVzdC9UZXN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVGVzdC9UZXN0LmpzCmluZGV4IDUwNTRmNGQwMjMwZGI5N2YxZGVhYzg4M2QwM2FhMTk3YTJm
ZWZiYjMuLjE3MTA4NmFhZTMyZTY4Y2Y5MGNmN2RmYmJmODM1OTdmMDU2M2YwMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKQEAgLTEy
OCw2ICsxMjgsOSBAQCBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogewogICAgIC8vIFRo
aW5ncyB0aGF0IHdvdWxkIG5vcm1hbGx5IGdldCBjYWxsZWQgYnkgdGhlIFVJLCB0aGF0IHdlIHN0
aWxsIHdhbnQgdG8gZG8gaW4gdGVzdHMuCiAgICAgV0kuY2FudmFzTWFuYWdlci5lbmFibGUoKTsK
KyAgICBXSS5oZWFwTWFuYWdlci5lbmFibGUoKTsKKyAgICBXSS5tZW1vcnlNYW5hZ2VyLmVuYWJs
ZSgpOworICAgIFdJLnRpbWVsaW5lTWFuYWdlci5lbmFibGUoKTsKIAogICAgIC8vIFNpZ25hbCB0
aGF0IHRoZSBmcm9udGVuZCBpcyBub3cgcmVhZHkgdG8gcmVjZWl2ZSBtZXNzYWdlcy4KICAgICBJ
bnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IZWFwQWxsb2NhdGlvbnNUaW1lbGlu
ZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IZWFw
QWxsb2NhdGlvbnNUaW1lbGluZVZpZXcuanMKaW5kZXggMzIzMzk1ZmE1ZjRmMmM2MjdmYTBhNTU3
Njg2MjFkNWVlZGUxNGI1MS4uNWE1MWQ0MmQzNzRkNmUyMmU3M2UxMGZlNTI5OTU1Y2YwMTFhNDRk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
SGVhcEFsbG9jYXRpb25zVGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hlYXBBbGxvY2F0aW9uc1RpbWVsaW5lVmlldy5qcwpAQCAt
NDA1LDcgKzQwNSw3IEBAIFdJLkhlYXBBbGxvY2F0aW9uc1RpbWVsaW5lVmlldyA9IGNsYXNzIEhl
YXBBbGxvY2F0aW9uc1RpbWVsaW5lVmlldyBleHRlbmRzIFdJLlRpCiAKICAgICBfdGFrZUhlYXBT
bmFwc2hvdENsaWNrZWQoKQogICAgIHsKLSAgICAgICAgSGVhcEFnZW50LnNuYXBzaG90KChlcnJv
ciwgdGltZXN0YW1wLCBzbmFwc2hvdFN0cmluZ0RhdGEpID0+IHsKKyAgICAgICAgV0kuaGVhcE1h
bmFnZXIuc25hcHNob3QoKGVycm9yLCB0aW1lc3RhbXAsIHNuYXBzaG90U3RyaW5nRGF0YSkgPT4g
ewogICAgICAgICAgICAgbGV0IHdvcmtlclByb3h5ID0gV0kuSGVhcFNuYXBzaG90V29ya2VyUHJv
eHkuc2luZ2xldG9uKCk7CiAgICAgICAgICAgICB3b3JrZXJQcm94eS5jcmVhdGVTbmFwc2hvdChz
bmFwc2hvdFN0cmluZ0RhdGEsICh7b2JqZWN0SWQsIHNuYXBzaG90OiBzZXJpYWxpemVkU25hcHNo
b3R9KSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IHNuYXBzaG90ID0gV0kuSGVhcFNuYXBzaG90
UHJveHkuZGVzZXJpYWxpemUob2JqZWN0SWQsIHNlcmlhbGl6ZWRTbmFwc2hvdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IZWFwU25hcHNo
b3RJbnN0YW5jZURhdGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0hlYXBTbmFwc2hvdEluc3RhbmNlRGF0YUdyaWROb2RlLmpzCmluZGV4IDU0
ODQ2ZjUwMmJlY2YzM2I5NzEzZGMzZTQwZTZiNTVhZDFmODk2ZjcuLmZjMTFjOTdkZjZlNmQwNGI3
ZTVmNDVhMDQ3NDMwMWMyZDljMmRiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hlYXBTbmFwc2hvdEluc3RhbmNlRGF0YUdyaWROb2RlLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hlYXBTbmFw
c2hvdEluc3RhbmNlRGF0YUdyaWROb2RlLmpzCkBAIC04MSwxMiArODEsMTIgQEAgV0kuSGVhcFNu
YXBzaG90SW5zdGFuY2VEYXRhR3JpZE5vZGUgPSBjbGFzcyBIZWFwU25hcHNob3RJbnN0YW5jZURh
dGFHcmlkTm9kZSBleHQKICAgICAgICAgICAgIGNvbnN0IHNob3VsZFJldmVhbENvbnNvbGUgPSB0
cnVlOwogCiAgICAgICAgICAgICBpZiAobm9kZS5jbGFzc05hbWUgPT09ICJzdHJpbmciKSB7Ci0g
ICAgICAgICAgICAgICAgSGVhcEFnZW50LmdldFByZXZpZXcobm9kZS5pZCwgZnVuY3Rpb24oZXJy
b3IsIHN0cmluZywgZnVuY3Rpb25EZXRhaWxzLCBvYmplY3RQcmV2aWV3UGF5bG9hZCkgeworICAg
ICAgICAgICAgICAgIFdJLmhlYXBNYW5hZ2VyLmdldFByZXZpZXcobm9kZSwgZnVuY3Rpb24oZXJy
b3IsIHN0cmluZywgZnVuY3Rpb25EZXRhaWxzLCBvYmplY3RQcmV2aWV3UGF5bG9hZCkgewogICAg
ICAgICAgICAgICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gZXJyb3IgPyBXSS5SZW1vdGVPYmpl
Y3QuZnJvbVByaW1pdGl2ZVZhbHVlKHVuZGVmaW5lZCkgOiBXSS5SZW1vdGVPYmplY3QuZnJvbVBy
aW1pdGl2ZVZhbHVlKHN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgIFdJLmNvbnNvbGVMb2dW
aWV3Q29udHJvbGxlci5hcHBlbmRJbW1lZGlhdGVFeGVjdXRpb25XaXRoUmVzdWx0KHRleHQsIHJl
bW90ZU9iamVjdCwgYWRkU3BlY2lhbFVzZXJMb2dDbGFzcywgc2hvdWxkUmV2ZWFsQ29uc29sZSk7
CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIEhlYXBBZ2VudC5nZXRSZW1vdGVPYmplY3Qobm9kZS5pZCwgV0kuUnVudGltZU1hbmFnZXIu
Q29uc29sZU9iamVjdEdyb3VwLCBmdW5jdGlvbihlcnJvciwgcmVtb3RlT2JqZWN0UGF5bG9hZCkg
eworICAgICAgICAgICAgICAgIFdJLmhlYXBNYW5hZ2VyLmdldFJlbW90ZU9iamVjdChub2RlLCBX
SS5SdW50aW1lTWFuYWdlci5Db25zb2xlT2JqZWN0R3JvdXAsIGZ1bmN0aW9uKGVycm9yLCByZW1v
dGVPYmplY3RQYXlsb2FkKSB7CiAgICAgICAgICAgICAgICAgICAgIGxldCByZW1vdGVPYmplY3Qg
PSBlcnJvciA/IFdJLlJlbW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUodW5kZWZpbmVkKSA6
IFdJLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChyZW1vdGVPYmplY3RQYXlsb2FkLCBXSS5hc3N1
bWluZ01haW5UYXJnZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIFdJLmNvbnNvbGVMb2dWaWV3
Q29udHJvbGxlci5hcHBlbmRJbW1lZGlhdGVFeGVjdXRpb25XaXRoUmVzdWx0KHRleHQsIHJlbW90
ZU9iamVjdCwgYWRkU3BlY2lhbFVzZXJMb2dDbGFzcywgc2hvdWxkUmV2ZWFsQ29uc29sZSk7CiAg
ICAgICAgICAgICAgICAgfSk7CkBAIC0yNjUsNyArMjY1LDggQEAgV0kuSGVhcFNuYXBzaG90SW5z
dGFuY2VEYXRhR3JpZE5vZGUgPSBjbGFzcyBIZWFwU25hcHNob3RJbnN0YW5jZURhdGFHcmlkTm9k
ZSBleHQKIAogICAgIF9wb3B1bGF0ZVdpbmRvd1ByZXZpZXcoY29udGFpbmVyRWxlbWVudCkKICAg
ICB7Ci0gICAgICAgIEhlYXBBZ2VudC5nZXRSZW1vdGVPYmplY3QodGhpcy5fbm9kZS5pZCwgKGVy
cm9yLCByZW1vdGVPYmplY3RQYXlsb2FkKSA9PiB7CisgICAgICAgIGNvbnN0IG9iamVjdEdyb3Vw
ID0gdW5kZWZpbmVkOworICAgICAgICBXSS5oZWFwTWFuYWdlci5nZXRSZW1vdGVPYmplY3QodGhp
cy5fbm9kZSwgb2JqZWN0R3JvdXAsIChlcnJvciwgcmVtb3RlT2JqZWN0UGF5bG9hZCkgPT4gewog
ICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVF
cnJvcihjb250YWluZXJFbGVtZW50KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTEs
NyArMjkyLDcgQEAgV0kuSGVhcFNuYXBzaG90SW5zdGFuY2VEYXRhR3JpZE5vZGUgPSBjbGFzcyBI
ZWFwU25hcHNob3RJbnN0YW5jZURhdGFHcmlkTm9kZSBleHQKIAogICAgIF9wb3B1bGF0ZVByZXZp
ZXcoY29udGFpbmVyRWxlbWVudCkKICAgICB7Ci0gICAgICAgIEhlYXBBZ2VudC5nZXRQcmV2aWV3
KHRoaXMuX25vZGUuaWQsIChlcnJvciwgc3RyaW5nLCBmdW5jdGlvbkRldGFpbHMsIG9iamVjdFBy
ZXZpZXdQYXlsb2FkKSA9PiB7CisgICAgICAgIFdJLmhlYXBNYW5hZ2VyLmdldFByZXZpZXcodGhp
cy5fbm9kZSwgKGVycm9yLCBzdHJpbmcsIGZ1bmN0aW9uRGV0YWlscywgb2JqZWN0UHJldmlld1Bh
eWxvYWQpID0+IHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgIHRo
aXMuX3BvcHVsYXRlRXJyb3IoY29udGFpbmVyRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNDI4LDcgKzQyOSw3IEBAIFdJLkhlYXBTbmFwc2hvdEluc3RhbmNlRGF0YUdyaWRO
b2RlID0gY2xhc3MgSGVhcFNuYXBzaG90SW5zdGFuY2VEYXRhR3JpZE5vZGUgZXh0CiAgICAgICAg
ICAgICAgICAgbGV0IGdvVG9BcnJvd1BsYWNlSG9sZGVyRWxlbWVudCA9IGNvbnRhaW5lckVsZW1l
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKTsKICAgICAgICAg
ICAgICAgICBnb1RvQXJyb3dQbGFjZUhvbGRlckVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICJpbmxp
bmUtYmxvY2siOwogICAgICAgICAgICAgICAgIGdvVG9BcnJvd1BsYWNlSG9sZGVyRWxlbWVudC5z
dHlsZS53aWR0aCA9ICIxMHB4IjsKLSAgICAgICAgICAgICAgICBIZWFwQWdlbnQuZ2V0UHJldmll
dyhub2RlLmlkLCBmdW5jdGlvbihlcnJvciwgc3RyaW5nLCBmdW5jdGlvbkRldGFpbHMsIG9iamVj
dFByZXZpZXdQYXlsb2FkKSB7CisgICAgICAgICAgICAgICAgV0kuaGVhcE1hbmFnZXIuZ2V0UHJl
dmlldyhub2RlLCBmdW5jdGlvbihlcnJvciwgc3RyaW5nLCBmdW5jdGlvbkRldGFpbHMsIG9iamVj
dFByZXZpZXdQYXlsb2FkKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChmdW5jdGlvbkRldGFp
bHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IGZ1bmN0aW9uRGV0
YWlscy5sb2NhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzb3VyY2VDb2RlID0g
V0kuZGVidWdnZXJNYW5hZ2VyLnNjcmlwdEZvcklkZW50aWZpZXIobG9jYXRpb24uc2NyaXB0SWQs
IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVRhYkNvbnRlbnRW
aWV3LmpzCmluZGV4IDNkMzkzZTdkZTQxZGUyYzQ3MTk1MGRlMDM4NDUzNjBiMmNhODNlZjAuLmFl
ZmJiYTkyN2JiZWExZjdmNTE5YjFhZDQ1ODNlOWUzNjg1Yjc4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVUYWJDb250ZW50Vmlldy5qcwpAQCAtOTEsNiArOTEsMTAgQEAgV0kuVGltZWxpbmVUYWJD
b250ZW50VmlldyA9IGNsYXNzIFRpbWVsaW5lVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50QnJvd3MKIAogICAgICAgICAvLyBFeHBsaWNpdGx5IHVwZGF0ZSB0aGUgcGF0aCBmb3IgdGhl
IG5hdmlnYXRpb24gYmFyIHRvIHByZXZlbnQgaXQgZnJvbSBzaG93aW5nIHVwIGFzIGJsYW5rLgog
ICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyLnVwZGF0ZUhpZXJhcmNoaWNhbFBhdGhGb3JDdXJy
ZW50Q29udGVudFZpZXcoKTsKKworICAgICAgICBXSS5oZWFwTWFuYWdlci5lbmFibGUoKTsKKyAg
ICAgICAgV0kubWVtb3J5TWFuYWdlci5lbmFibGUoKTsKKyAgICAgICAgV0kudGltZWxpbmVNYW5h
Z2VyLmVuYWJsZSgpOwogICAgIH0KIAogICAgIC8vIFN0YXRpYwpAQCAtMzI3LDEzICszMzEsMTcg
QEAgV0kuVGltZWxpbmVUYWJDb250ZW50VmlldyA9IGNsYXNzIFRpbWVsaW5lVGFiQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3MKIAogICAgIGNsb3NlZCgpCiAgICAgewotICAgICAg
ICBzdXBlci5jbG9zZWQoKTsKKyAgICAgICAgV0kudGltZWxpbmVNYW5hZ2VyLmRpc2FibGUoKTsK
KyAgICAgICAgV0kubWVtb3J5TWFuYWdlci5kaXNhYmxlKCk7CisgICAgICAgIFdJLmhlYXBNYW5h
Z2VyLmRpc2FibGUoKTsKIAogICAgICAgICBpZiAoV0kuRlBTSW5zdHJ1bWVudC5zdXBwb3J0ZWQo
KSkKICAgICAgICAgICAgIHRoaXMuY29udGVudEJyb3dzZXIubmF2aWdhdGlvbkJhci5yZW1vdmVF
dmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogCiAgICAgICAgIFdJLnRpbWVsaW5lTWFu
YWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXSS5u
b3RpZmljYXRpb25zLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CisKKyAg
ICAgICAgc3VwZXIuY2xvc2VkKCk7CiAgICAgfQogCiAgICAgY2FuU2hvd1JlcHJlc2VudGVkT2Jq
ZWN0KHJlcHJlc2VudGVkT2JqZWN0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA0YzZhNzA2MDBjNjZlNWMwNDY4OWY5ZThi
YzE5ZTE4MDFhMGY4ZmMuLjhiZjQ3OTU5MWQ0NzQzYWQ4NmJlNjhkNmQxNTkwZTFmNzMxZGZmZGUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNy0yNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNz
b0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVGltZWxpbmVzOiBkaXNhYmxl
IHJlbGF0ZWQgYWdlbnRzIHdoZW4gdGhlIHRhYiBpcyBjbG9zZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDExOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUt
Y29sdW1uLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL3NldEluc3RydW1lbnRz
LWVycm9ycy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS9zZXRJbnN0cnVtZW50
cy1wcm9ncmFtbWF0aWMtY2FwdHVyZS5odG1sOgorCiAyMDE5LTA3LTI0ICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IGBj
b25zb2xlLnNjcmVlbnNob3RgIHdpdGggZGV0YWNoZWQgTm9kZXMgdGhhdCBhcmUgZ3JhcGhpY2Fs
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4u
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCmlu
ZGV4IDU1YzVjNTdkYTkxYTQ1ZTU4YTMzYzFmYjI1NWU3OWEzZGVhNTMwOGQuLjU2ZjNkYjdkM2Iy
YzIyZGY3Zjg1OWE1ZWYxNDU1YzQyODdiNzkxNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCkBAIC0zMywxMiArMzMsMTIgQEAgZnVuY3Rp
b24gd2lsbEV2YWx1YXRlU2NyaXB0VGVzdCgpIHsKICAgICBjb25zb2xlLnByb2ZpbGVFbmQoKTsK
IH0KIAotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBQcm90b2NvbFRlc3QuZGVidWcoKTsKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVBc3luY1N1
aXRlKCJUaW1lbGluZS5MaW5lQ29sdW1uIik7CiAKICAgICBJbnNwZWN0b3JQcm90b2NvbC5zZW5k
Q29tbWFuZCgiUGFnZS5lbmFibGUiKTsKLQotICAgIGxldCBzdWl0ZSA9IFByb3RvY29sVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJUaW1lbGluZS5MaW5lQ29sdW1uIik7CisgICAgSW5zcGVjdG9yUHJv
dG9jb2wuc2VuZENvbW1hbmQoIlRpbWVsaW5lLmVuYWJsZSIpOwogCiAgICAgZnVuY3Rpb24gcmVw
bGFjZXIoa2V5LCB2YWx1ZSkgewogICAgICAgICBpZiAoa2V5ID09PSAic3RhcnRUaW1lIiB8fCBr
ZXkgPT09ICJlbmRUaW1lIiB8fCBrZXkgPT09ICJzY3JpcHRJZCIgfHwga2V5ID09PSAiZnJhbWVJ
ZCIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvc2V0SW5zdHJ1
bWVudHMtZXJyb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvc2V0SW5z
dHJ1bWVudHMtZXJyb3JzLmh0bWwKaW5kZXggZmE5ZmFhYmFjYjYxOTFmYTFjYmYzOGU2OGFlY2M1
N2Y2Y2NhMWU5Zi4uMGUyYTk1YjJlZjU0YTgwMTg0ZDJkN2MwMzBiNDAzOGVkZTY2ZTYxNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3NldEluc3RydW1lbnRzLWVy
cm9ycy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9zZXRJbnN0cnVt
ZW50cy1lcnJvcnMuaHRtbApAQCAtNyw2ICs3LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAg
IGxldCBzdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJUaW1lbGluZS5zZXRJ
bnN0cnVtZW50cy5lcnJvcnMiKTsKIAorICAgIEluc3BlY3RvclByb3RvY29sLnNlbmRDb21tYW5k
KCJIZWFwLmVuYWJsZSIpOworICAgIEluc3BlY3RvclByb3RvY29sLnNlbmRDb21tYW5kKCJNZW1v
cnkuZW5hYmxlIik7CisgICAgSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQoIlRpbWVsaW5l
LmVuYWJsZSIpOworCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiTWlz
c2luZ1JlcXVpcmVkQXJndW1lbnQiLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3NldEluc3RydW1lbnRz
LXByb2dyYW1tYXRpYy1jYXB0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUvc2V0SW5zdHJ1bWVudHMtcHJvZ3JhbW1hdGljLWNhcHR1cmUuaHRtbAppbmRleCAwNWZhN2Fk
NmI0ZWM3YjUzNjc2M2EwMWI5YTBiMGMwNzIyMjEwYjI2Li5lMWNmYzk5YzNiOGQxY2MzNGUxMTZk
MGNkZDg1NTkyNzQ5NjRjNTcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGlt
ZWxpbmUvc2V0SW5zdHJ1bWVudHMtcHJvZ3JhbW1hdGljLWNhcHR1cmUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvc2V0SW5zdHJ1bWVudHMtcHJvZ3JhbW1hdGljLWNh
cHR1cmUuaHRtbApAQCAtMTcsNiArMTcsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBsZXQgY2Fw
dHVyZVN0b3BwZWQgPSBudWxsOwogCiAgICAgSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQo
IkhlYXAuZW5hYmxlIik7CisgICAgSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQoIlRpbWVs
aW5lLmVuYWJsZSIpOwogCiAgICAgSW5zcGVjdG9yUHJvdG9jb2wuZXZlbnRIYW5kbGVyWyJUaW1l
bGluZS5yZWNvcmRpbmdTdGFydGVkIl0gPSAoKSA9PiB7CiAgICAgICAgIFByb3RvY29sVGVzdC5w
YXNzKCJUaW1lbGluZS5yZWNvcmRpbmdTdGFydGVkIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375336</attachid>
            <date>2019-08-01 12:43:01 -0700</date>
            <delta_ts>2019-08-02 14:18:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200118-20190801124259.patch</filename>
            <type>text/plain</type>
            <size>77114</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDE5NDllZTdhMDYwZTIzNTRmZGJhMmU2ZTVkODVl
Mjk5ZmMxNWVkZTEuLjMzNWVmYWRmYmM0NTkwOTk0Yzk5ZjBkZDJkM2M5MzI1YWE2NDdjM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTA4LTAxICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBU
aW1lbGluZXM6IGRpc2FibGUgcmVsYXRlZCBhZ2VudHMgd2hlbiB0aGUgdGFiIGlzIGNsb3NlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTE4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV3b3JrIGhv
dyBgZW5hYmxlYC9gZGlzYWJsZWAgaXMgdXNlZCBmb3IgdGltZWxpbmUtcmVsYXRlZCBhZ2VudHMg
c28gdGhhdCBldmVudHMgYXJlIG5vdCBzZW50CisgICAgICAgIGFuZCBkYXRhIGlzbid0IGtlcHQg
YWxpdmUgd2hlbiB0aGUgVGltZWxpbmVzIHRhYiBpc24ndCBlbmFibGVkLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL1RpbWVsaW5lLmpzb246CisgICAgICAgIEFkZCBgZW5hYmxlYC9g
ZGlzYWJsZWAgY29tbWFuZHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JIZWFwQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rvckhl
YXBBZ2VudDo6ZGlzYWJsZSk6CisKIDIwMTktMDctMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBCZWdpbiBvcmdhbml6aW5nIGIzIHRlc3Rz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggODBlMjUyZDQyZmM4ODVmMGVjNmM1NDA2NjY0NTdiNTI3ZGZkNTQzNS4u
NzhhNTkxYTQ4Njk1ZTI4NDdmMGU4OTVkZTUzOTE0YWIzN2RiNGNjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDgyIEBACisyMDE5LTA4LTAxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBUaW1lbGluZXM6IGRpc2FibGUgcmVsYXRlZCBh
Z2VudHMgd2hlbiB0aGUgdGFiIGlzIGNsb3NlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmV3b3JrIGhvdyBgZW5hYmxlYC9gZGlzYWJsZWAgaXMgdXNl
ZCBmb3IgdGltZWxpbmUtcmVsYXRlZCBhZ2VudHMgc28gdGhhdCBldmVudHMgYXJlIG5vdCBzZW50
CisgICAgICAgIGFuZCBkYXRhIGlzbid0IGtlcHQgYWxpdmUgd2hlbiB0aGUgVGltZWxpbmVzIHRh
YiBpc24ndCBlbmFibGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JU
aW1lbGluZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcEZyb21Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Om1haW5GcmFtZVN0YXJ0ZWRMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0UHJvZ3JhbW1hdGljQ2Fw
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdG9wUHJv
Z3JhbW1hdGljQ2FwdHVyZSk6CisgICAgICAgIFJlbmFtZSBgbV9lbmFibGVkKmAgdG8gYG1fdHJh
Y2tpbmcqYCB0byBtYXRjaCBvdGhlciB0aW1lbGluZS1yZWxhdGVkIGFnZW50cy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50Ojpl
bmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRpc2FibGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRpZEhhbmRsZU1lbW9y
eVByZXNzdXJlKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjp0cmFja2luZ0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdB
Z2VudHM6OnNldFRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50czo6cGVyc2lzdGVudEluc3BlY3RvclRpbWVs
aW5lQWdlbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHM6
OnNldFBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KTogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
dHJ1bWVudGluZ0FnZW50czo6cmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkSW5zdGFsbFRpbWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlbW92ZVRpbWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb25JbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZl
bnRPbldpbmRvd0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0SW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXRJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENvbXBvc2l0
ZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
b21wb3NpdGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFBhaW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFBhaW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1p
dExvYWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZnJhbWVTdGFydGVkTG9hZGluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmdJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZVRpbWVTdGFtcElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydFBy
b2ZpbGluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzdG9wUHJvZmlsaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnRpbWVsaW5lQWdlbnRUcmFja2luZyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2Vs
QW5pbWF0aW9uRnJhbWVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEZpcmVBbmltYXRpb25GcmFtZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZU9ic2VydmVyQ2FsbGJhY2tJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1l
bGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
dGltZWxpbmVBZ2VudEVuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RXhlY1N0YXRlSW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V4ZWNTdGF0
ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uSW50ZXJuYWwpOgorICAgICAgICBSZW5hbWUgZm9yIGNsYXJp
dHkvY29ycmVjdG5lc3M6CisgICAgICAgICAtIGBpbnNwZWN0b3JUaW1lbGluZUFnZW50YCA9PiBg
dHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50YAorICAgICAgICAgLSBgcGVyc2lzdGVudElu
c3BlY3RvclRpbWVsaW5lQWdlbnRgID0+IGBpbnNwZWN0b3JUaW1lbGluZUFnZW50YAorCiAyMDE5
LTA4LTAxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbU09VUF0gV2ViU29ja2V0czogYWRkIHN1cHBvcnQgZm9yIGV4dGVuc2lvbnMgd2hlbiB1
c2luZyB3ZWIgc29ja2V0cyBsaWJzb3VwIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXgg
YTQ0ZDk5ODU4M2IzOWUxZDgyNWNkZjQ1ZTg5NDQ3YjQ5MWNmYjZjZi4uYmUyNjZiMjg0MmZlZjI5
ZDAwNDgxN2JmMzA2ZDc5YzRiYmZiNWYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsODUgQEAKKzIwMTktMDgtMDEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRpbWVsaW5lczogZGlzYWJsZSByZWxhdGVkIGFn
ZW50cyB3aGVuIHRoZSB0YWIgaXMgY2xvc2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAxMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZXdvcmsgaG93IGBlbmFibGVgL2BkaXNhYmxlYCBpcyB1c2Vk
IGZvciB0aW1lbGluZS1yZWxhdGVkIGFnZW50cyBzbyB0aGF0IGV2ZW50cyBhcmUgbm90IHNlbnQK
KyAgICAgICAgYW5kIGRhdGEgaXNuJ3Qga2VwdCBhbGl2ZSB3aGVuIHRoZSBUaW1lbGluZXMgdGFi
IGlzbid0IGVuYWJsZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Rp
bWVsaW5lTWFuYWdlci5qczoKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlcik6CisgICAgICAg
IChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAg
ICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXSS5UaW1l
bGluZU1hbmFnZXIucHJvdG90eXBlLnNldCBhdXRvQ2FwdHVyZU9uUGFnZUxvYWQpOgorICAgICAg
ICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5lbmFibGUpOiBBZGRlZC4KKyAgICAgICAg
KFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuZGlzYWJsZSk6IEFkZGVkLgorICAgICAgICAo
V0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5zdGFydENhcHR1cmluZyk6CisgICAgICAgIChX
SS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLnN0b3BDYXB0dXJpbmcpOgorICAgICAgICAoV0ku
VGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5hc3luYyBwcm9jZXNzSlNPTik6CisgICAgICAgIChX
SS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmNhcHR1cmluZ1N0YXJ0ZWQpOgorICAgICAgICAo
V0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5jYXB0dXJpbmdTdG9wcGVkKToKKyAgICAgICAg
KFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuYXV0b0NhcHR1cmVTdGFydGVkKToKKyAgICAg
ICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuZXZlbnRSZWNvcmRlZCk6CisgICAgICAg
IChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLnBhZ2VET01Db250ZW50TG9hZGVkRXZlbnRG
aXJlZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLnBhZ2VMb2FkRXZl
bnRGaXJlZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmNwdVByb2Zp
bGVyVHJhY2tpbmdVcGRhdGVkKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5
cGUubWVtb3J5VHJhY2tpbmdVcGRhdGVkKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5w
cm90b3R5cGUuaGVhcFRyYWNraW5nU3RhcnRlZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFn
ZXIucHJvdG90eXBlLmhlYXBUcmFja2luZ0NvbXBsZXRlZCk6CisgICAgICAgIChXSS5UaW1lbGlu
ZU1hbmFnZXIucHJvdG90eXBlLmhlYXBTbmFwc2hvdEFkZGVkKToKKyAgICAgICAgKFdJLlRpbWVs
aW5lTWFuYWdlci5wcm90b3R5cGUuX2xvYWROZXdSZWNvcmRpbmcpOgorICAgICAgICAoV0kuVGlt
ZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5fbGVnYWN5QXR0ZW1wdFN0YXJ0QXV0b0NhcHR1cmluZ0Zv
ckZyYW1lKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX3Byb3Zpc2lv
bmFsTG9hZFN0YXJ0ZWQpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5f
bWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90
b3R5cGUuX3Jlc291cmNlV2FzQWRkZWQpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnBy
b3RvdHlwZS5fZ2FyYmFnZUNvbGxlY3RlZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIu
cHJvdG90eXBlLl9tZW1vcnlQcmVzc3VyZSk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIu
cHJvdG90eXBlLnNjcmlwdFByb2ZpbGVyVHJhY2tpbmdVcGRhdGVkKToKKyAgICAgICAgKFdJLlRp
bWVsaW5lTWFuYWdlci5wcm90b3R5cGUuc2NyaXB0UHJvZmlsZXJUcmFja2luZ0NvbXBsZXRlZCk6
CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVBdXRvQ2FwdHVy
ZUluc3RydW1lbnRzKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX2hh
bmRsZURPTU5vZGVEaWRGaXJlRXZlbnQpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnBy
b3RvdHlwZS5faGFuZGxlRE9NTm9kZVBvd2VyRWZmaWNpZW50UGxheWJhY2tTdGF0ZUNoYW5nZWQp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0luc3RydW1lbnQuanM6CisgICAgICAg
IChXSS5JbnN0cnVtZW50LnN0YXJ0TGVnYWN5VGltZWxpbmVBZ2VudCk6CisgICAgICAgIChXSS5J
bnN0cnVtZW50LnN0b3BMZWdhY3lUaW1lbGluZUFnZW50KToKKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvSGVhcE1hbmFnZXIuanM6CisgICAgICAgIChXSS5IZWFwTWFuYWdl
cik6IEFkZGVkLgorICAgICAgICAoV0kuSGVhcE1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVU
YXJnZXQpOgorICAgICAgICAoV0kuSGVhcE1hbmFnZXIucHJvdG90eXBlLmVuYWJsZSk6IEFkZGVk
LgorICAgICAgICAoV0kuSGVhcE1hbmFnZXIucHJvdG90eXBlLmRpc2FibGUpOiBBZGRlZC4KKyAg
ICAgICAgKFdJLkhlYXBNYW5hZ2VyLnByb3RvdHlwZS5zbmFwc2hvdCk6IEFkZGVkLgorICAgICAg
ICAoV0kuSGVhcE1hbmFnZXIucHJvdG90eXBlLmdldFByZXZpZXcpOiBBZGRlZC4KKyAgICAgICAg
KFdJLkhlYXBNYW5hZ2VyLnByb3RvdHlwZS5nZXRSZW1vdGVPYmplY3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdJLkhlYXBNYW5hZ2VyLnByb3RvdHlwZS5nYXJiYWdlQ29sbGVjdGVkKToKKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTWVtb3J5TWFuYWdlci5qczoKKyAgICAgICAg
KFdJLk1lbW9yeU1hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKFdJLk1lbW9yeU1hbmFnZXIucHJv
dG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAoV0kuTWVtb3J5TWFuYWdlci5wcm90
b3R5cGUuZW5hYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5NZW1vcnlNYW5hZ2VyLnByb3RvdHlw
ZS5kaXNhYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5NZW1vcnlNYW5hZ2VyLnByb3RvdHlwZS5t
ZW1vcnlQcmVzc3VyZSk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
VGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5UaW1lbGluZVRhYkNvbnRlbnRWaWV3KToK
KyAgICAgICAgKFdJLlRpbWVsaW5lVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmNsb3NlZCk6CisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9IZWFwQWxsb2NhdGlvbnNJbnN0cnVtZW50
LmpzOgorICAgICAgICAoV0kuSGVhcEFsbG9jYXRpb25zSW5zdHJ1bWVudCk6CisgICAgICAgIChX
SS5IZWFwQWxsb2NhdGlvbnNJbnN0cnVtZW50LnByb3RvdHlwZS5fdGFrZUhlYXBTbmFwc2hvdCk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVZp
ZXcuanM6CisgICAgICAgIChXSS5IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVZpZXcucHJvdG90eXBl
Ll90YWtlSGVhcFNuYXBzaG90Q2xpY2tlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9IZWFwU25hcHNob3RJbnN0YW5jZURhdGFHcmlkTm9kZS5qczoKKyAgICAgICAgKFdJLkhlYXBT
bmFwc2hvdEluc3RhbmNlRGF0YUdyaWROb2RlLmxvZ0hlYXBTbmFwc2hvdE5vZGUpOgorICAgICAg
ICAoV0kuSGVhcFNuYXBzaG90SW5zdGFuY2VEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9wb3B1bGF0
ZVByZXZpZXcpOgorICAgICAgICAoV0kuSGVhcFNuYXBzaG90SW5zdGFuY2VEYXRhR3JpZE5vZGUu
cHJvdG90eXBlLl9tb3VzZW92ZXJIYW5kbGVyLmFwcGVuZFBhdGhSb3cpOgorICAgICAgICBHbyB0
aHJvdWdoIHRoZSBgSGVhcE1hbmFnZXJgIGZvciBgSGVhcEFnZW50YCBjb21tYW5kcyBzbyBpdCBj
YW4gYmV0dGVyIG1hbmFnZSBzdGF0ZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC9U
ZXN0LmpzOgorICAgICAgICAoV0kuY29udGVudExvYWRlZCk6CisKIDIwMTktMDctMzEgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERl
YnVnZ2VyOiBzdXBwb3J0IGVtdWxhdGVVc2VyR2VzdHVyZSBwYXJhbWV0ZXIgaW4gRGVidWdnZXIu
ZXZhbHVhdGVPbkNhbGxGcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggOTA4YmMw
ZWMwZGM4NWMzZWM1MDU5MTM5NmIxNjM3MTcyYmY5NjFlZS4uYjUzNWZmNjE5MmFhY2VmYzc5YjRm
NmNkOTNkZjEyMDFhMzcxNDhhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC01NCwy
OSArNTQsMzEgQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXMKIAogdm9pZCBJbnNwZWN0b3JIZWFw
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7
Ci0gICAgLy8gU3RvcCB0cmFja2luZyB3aXRob3V0IHRha2luZyBhIHNuYXBzaG90LgotICAgIG1f
dHJhY2tpbmcgPSBmYWxzZTsKLQogICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CiAgICAgZGlzYWJs
ZShpZ25vcmVkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmVuYWJsZShFcnJvclN0
cmluZyYpCit2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZykKIHsKLSAgICBpZiAobV9lbmFibGVkKQorICAgIGlmIChtX2VuYWJsZWQpIHsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiSGVhcEFnZW50IGFscmVhZHkgZW5hYmxlZCJfczsKICAgICAg
ICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fZW5hYmxlZCA9IHRydWU7CiAKICAgICBtX2Vudmly
b25tZW50LnZtKCkuaGVhcC5hZGRPYnNlcnZlcih0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JI
ZWFwQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQordm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6
OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIGlmICghbV9lbmFibGVk
KQorICAgIGlmICghbV9lbmFibGVkKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkhlYXBBZ2Vu
dCBhbHJlYWR5IGRpc2FibGVkIl9zOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9l
bmFibGVkID0gZmFsc2U7CisgICAgbV90cmFja2luZyA9IGZhbHNlOwogCiAgICAgbV9lbnZpcm9u
bWVudC52bSgpLmhlYXAucmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGltZWxpbmUuanNvbiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGltZWxpbmUuanNvbgppbmRleCA5
ODgwMDMyZWM4MTRjNjU5OGZiNjlmZmQzZDQ4ZDI1OTAwMTk5NzEyLi44YzcxNjgyOGQ2OWJiODBi
ODllNDBmYWY5YTcwNjg4MjNlZTBmYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3Byb3RvY29sL1RpbWVsaW5lLmpzb24KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UaW1lbGluZS5qc29uCkBAIC01Niw2ICs1NiwxNCBA
QAogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFuZHMiOiBbCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJuYW1lIjogImVuYWJsZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5h
YmxlcyBUaW1lbGluZSBkb21haW4gZXZlbnRzLiIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
RGlzYWJsZXMgVGltZWxpbmUgZG9tYWluIGV2ZW50cy4iCisgICAgICAgIH0sCiAgICAgICAgIHsK
ICAgICAgICAgICAgICJuYW1lIjogInN0YXJ0IiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJTdGFydHMgY2FwdHVyaW5nIGluc3RydW1lbnRhdGlvbiBldmVudHMuIiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlSW5zdHJ1bWVudGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5o
CmluZGV4IDU1M2RjM2RhYzk1Mjg0ODY0ZjgwNjNkNzNkMmUxNzQ4OGVmOWQ4YjEuLjFmOTUyZDFi
MzIyOTNjMTYyNWIxODI5Y2MyNjFjMDcxOGFhNDRjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlSW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGVJbnN0cnVtZW50YXRpb24uaApAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlLCBU
eXBlIGpzVHlwZSwgY2xhc3MgRGF0YVR5cGU+CiBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25JbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUeXBlIGNhbGxUeXBlLCBjb25zdCBEYXRhVHlwZSYg
Y2FsbERhdGEpCiB7Ci0gICAgaWYgKCFJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnRpbWVsaW5l
QWdlbnRFbmFibGVkKGNvbnRleHQpKQorICAgIGlmICghSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp0aW1lbGluZUFnZW50VHJhY2tpbmcoY29udGV4dCkpCiAgICAgICAgIHJldHVybiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKICAgICBTdHJpbmcgcmVzb3VyY2VOYW1lOwogICAg
IGludCBsaW5lTnVtYmVyID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYTkwNGMwM2RiOTg5M2I0ZTgwYTU0
NjNiZDk0YTRlY2M5OTUzMmI0Yy4uMTA3NGU3NWVhZjQ5YTJkNTQyZjQ3NzQzMDE2MzVlN2VmYTA2
NTUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkSW5zdGFsbFRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZQogICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIGRlYnVn
Z2VyQWdlbnQtPmRpZFNjaGVkdWxlQXN5bmNDYWxsKGNvbnRleHQuZXhlY1N0YXRlKCksIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5jQ2FsbFR5cGU6OkRPTVRpbWVyLCB0aW1lcklkLCBzaW5n
bGVTaG90KTsKIAotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYg
KEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFn
ZW50LT5kaWRJbnN0YWxsVGltZXIodGltZXJJZCwgdGltZW91dCwgc2luZ2xlU2hvdCwgZnJhbWVG
b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpKTsKIH0KIApAQCAtMzI0LDcgKzMyNCw3
IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1lckltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVuCiB7CiAgICAgaWYgKEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRlYnVn
Z2VyQWdlbnQoKSkKICAgICAgICAgZGVidWdnZXJBZ2VudC0+ZGlkQ2FuY2VsQXN5bmNDYWxsKElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5jQ2FsbFR5cGU6OkRPTVRpbWVyLCB0aW1lcklkKTsK
LSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2lu
Z0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVt
b3ZlVGltZXIodGltZXJJZCwgZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQp
KTsKIH0KIApAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWREaXNwYXRjaFBvc3RNZXNzYWdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpCiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
Q2FsbEZ1bmN0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lLCBpbnQgc2NyaXB0Q29s
dW1uLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAgIGludCB0aW1lbGlu
ZUFnZW50SWQgPSAwOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKKyAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKICAgICAgICAgdGlt
ZWxpbmVBZ2VudC0+d2lsbENhbGxGdW5jdGlvbihzY3JpcHROYW1lLCBzY3JpcHRMaW5lLCBzY3Jp
cHRDb2x1bW4sIGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSk7CiAgICAg
ICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQpAQCAtMzk0
LDcgKzM5NCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rp
b25JbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvCiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBFdmVudCYgZXZlbnQsIGJvb2wgaGFzRXZlbnRMaXN0ZW5lcnMpCiB7CiAg
ICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpOworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwogICAgIGlmICh0
aW1lbGluZUFnZW50ICYmIGhhc0V2ZW50TGlzdGVuZXJzKSB7CiAgICAgICAgIHRpbWVsaW5lQWdl
bnQtPndpbGxEaXNwYXRjaEV2ZW50KGV2ZW50LCBkb2N1bWVudC5mcmFtZSgpKTsKICAgICAgICAg
dGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKQEAgLTQzMCw3ICs0MzAsNyBA
QCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudEltcGwoY29u
c3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aQogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgRXZlbnQmIGV2
ZW50LCBET01XaW5kb3cmIHdpbmRvdykKIHsKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsK
LSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CisgICAgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0
b3JUaW1lbGluZUFnZW50KCk7CiAgICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYgd2luZG93Lmhhc0V2
ZW50TGlzdGVuZXJzKGV2ZW50LnR5cGUoKSkpIHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2ls
bERpc3BhdGNoRXZlbnQoZXZlbnQsIHdpbmRvdy5mcmFtZSgpKTsKICAgICAgICAgdGltZWxpbmVB
Z2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZXZlbnREaWRSZXNldEFmdGVyRGlzcGF0Y2hJbXBsKElu
c3RydW1lbnRpbmdBZ2VudAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgdXJs
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpbnQgdGltZWxpbmVB
Z2VudElkID0gMDsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CisgICAg
aWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CiAgICAgICAgIHRpbWVs
aW5lQWdlbnQtPndpbGxFdmFsdWF0ZVNjcmlwdCh1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgZnJhbWUpOwogICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgp
OwogICAgIH0KQEAgLTQ3Niw3ICs0NzYsNyBAQCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVySW1wbChJbnN0cgogICAg
ICAgICBkb21EZWJ1Z2dlckFnZW50LT53aWxsRmlyZVRpbWVyKG9uZVNob3QpOwogCiAgICAgaW50
IHRpbWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRp
bWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSkgeworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgewogICAg
ICAgICB0aW1lbGluZUFnZW50LT53aWxsRmlyZVRpbWVyKHRpbWVySWQsIGZyYW1lRm9yU2NyaXB0
RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSk7CiAgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRp
bWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQpAQCAtNDkzLDE0ICs0OTMsMTQgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lckltcGwoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ28KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFs
aWRhdGVMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IEZyYW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQor
ICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGlt
ZWxpbmVBZ2VudC0+ZGlkSW52YWxpZGF0ZUxheW91dChmcmFtZSk7CiB9CiAKIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFt
ZSkKIHsKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBpZiAoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpKSB7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCgpKSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxMYXlvdXQoZnJhbWUpOwogICAg
ICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KQEAgLTUx
OCwyNSArNTE4LDI1IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMYXlvdXRJ
bXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpCiAKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsQ29tcG9zaXRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
clRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxDb21wb3NpdGUoZnJhbWUpOwogfQog
CiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tcG9zaXRlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQogewotICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRDb21wb3NpdGUoKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQYWludEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKLSAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFBhaW50
KHJlbmRlcmVyLmZyYW1lKCkpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUGFpbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJl
bmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYg
KEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFBhaW50KHJlbmRl
cmVyLCByZWN0KTsKIAogICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCkpCkBAIC01NDYsNyArNTQ2LDcg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWcKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQp
CiB7CiAgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRp
bWVsaW5lQWdlbnQoKSkgeworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdl
bnQoKSkgewogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUmVjYWxjdWxhdGVTdHlsZShkb2N1
bWVudC5mcmFtZSgpKTsKICAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+
aWQoKTsKICAgICB9CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnQK
IAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1
bGF0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1
bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkK
KyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRp
bWVsaW5lQWdlbnQtPmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKGRvY3VtZW50LmZyYW1l
KCkpOwogICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtB
Z2VudC0+ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oZG9jdW1lbnQpOwpAQCAtNzU0LDcg
Kzc1NCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50CiAgICAgICAgIHBhZ2VBZ2VudC0+ZnJh
bWVOYXZpZ2F0ZWQoZnJhbWUpOwogCiAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKLSAg
ICAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICAgICAgaWYgKEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRy
YWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICAgICAgdGltZWxpbmVBZ2Vu
dC0+bWFpbkZyYW1lTmF2aWdhdGVkKCk7CiAgICAgfQogfQpAQCAtNzc5LDcgKzc3OSw3IEBAIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVN0YXJ0ZWRMb2FkaW5nSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0CiAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAg
ICAgICAgaWYgKFBhZ2VEZWJ1Z2dlckFnZW50KiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMucGFnZURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgICAgIHBhZ2VEZWJ1Z2dl
ckFnZW50LT5tYWluRnJhbWVTdGFydGVkTG9hZGluZygpOwotICAgICAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGVyc2lz
dGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICAgICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRp
bWVsaW5lQWdlbnQoKSkKICAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPm1haW5GcmFtZVN0YXJ0
ZWRMb2FkaW5nKCk7CiAgICAgfQogCkBAIC04NzQsNyArODc0LDcgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHIKICAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1l
bnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1l
bGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGlu
ZUFnZW50LT50aW1lKGZyYW1lLCBsYWJlbCk7CiAgICAgaWYgKGF1dG8qIGNvbnNvbGVBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpCiAgICAgICAgIGNvbnNvbGVB
Z2VudC0+c3RhcnRUaW1pbmcoZXhlYywgbGFiZWwpOwpAQCAtOTA1LDcgKzkwNSw3IEBAIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZ0ltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1CiAKICAgICBpZiAoYXV0byogY29uc29sZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKICAgICAgICAgY29uc29sZUFnZW50LT5z
dG9wVGltaW5nKGV4ZWMsIGxhYmVsKTsKLSAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRv
KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRp
bWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+dGltZUVuZChmcmFtZSwgbGFi
ZWwpOwogfQogCkBAIC05MjAsNyArOTIwLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnN0b3BDb25zb2xlVGltaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnUKIAog
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVUaW1lU3RhbXBJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSwgUmVmPFNj
cmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKSkgeworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICAgICAgYXJndW1lbnRzLT5nZXRGaXJz
dEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSk7CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFRp
bWVTdGFtcChmcmFtZSwgbWVzc2FnZSk7CkBAIC05MjksMTMgKzkyOSwxMyBAQCB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZVRpbWVTdGFtcEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRQcm9m
aWxpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewotICAgIGlmIChJbnNwZWN0
b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJz
aXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1l
bGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPnN0YXJ0RnJvbUNvbnNvbGUoZXhl
YywgdGl0bGUpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcFByb2Zp
bGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNp
c3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+c3RvcEZyb21Db25zb2xlKGV4ZWMs
IHRpdGxlKTsKIH0KIApAQCAtMTExMiwxMSArMTExMiwxMSBAQCBib29sIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Y29uc29sZUFnZW50RW5hYmxlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnRpbWVsaW5lQWdlbnRFbmFibGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dGltZWxpbmVB
Z2VudFRyYWNraW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKICAgICBpZiAo
YXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQotICAgICAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOworICAgICAgICByZXR1cm4gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+dHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCkBAIC0xMTI0LDcgKzExMjQsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JgogewogICAgIGlmIChQYWdlRGVidWdnZXJBZ2VudCogcGFnZURlYnVnZ2VyQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLnBhZ2VEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHBhZ2VEZWJ1Z2dl
ckFnZW50LT5kaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCwgZG9jdW1lbnQpOwot
ICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5n
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCwgZG9jdW1lbnQuZnJhbWUoKSk7CiB9CiAKQEAg
LTExMzIsNyArMTEzMiw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYW5j
ZWxBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYKIHsKICAgICBpZiAoUGFn
ZURlYnVnZ2VyQWdlbnQqIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5w
YWdlRGVidWdnZXJBZ2VudCgpKQogICAgICAgICBwYWdlRGVidWdnZXJBZ2VudC0+ZGlkQ2FuY2Vs
QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCk7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5l
QWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAg
ICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQs
IGRvY3VtZW50LmZyYW1lKCkpOwogfQogCkBAIC0xMTQ1LDcgKzExNDUsNyBAQCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFu
aW1hdGlvbkZyYW1lSQogICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT53aWxsRmlyZUFuaW1hdGlv
bkZyYW1lKCk7CiAKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBpZiAoSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQq
IHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpKSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxGaXJlQW5pbWF0aW9u
RnJhbWUoY2FsbGJhY2tJZCwgZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgICAgIHRpbWVsaW5lQWdl
bnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQpAQCAtMTE2Myw3ICsxMTYzLDcgQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWUKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlT2JzZXJ2ZXJDYWxsYmFja0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3RyaW5nJiBjYWxs
YmFja1R5cGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaW50IHRp
bWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkg
eworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgewogICAgICAg
ICB0aW1lbGluZUFnZW50LT53aWxsRmlyZU9ic2VydmVyQ2FsbGJhY2soY2FsbGJhY2tUeXBlLCBm
cmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoJmNvbnRleHQpKTsKICAgICAgICAgdGltZWxp
bmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9CkBAIC0xMjAxLDcgKzEyMDEs
NyBAQCBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJl
dHJpZXZlVGltZWxpbmVBZ2VudChjb25zdCBJbgogICAgIGlmICghY29va2llLmlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0
aW1lbGluZUFnZW50ID0gY29va2llLmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpOworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSBjb29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygpLT50cmFja2luZ0luc3BlY3RvclRpbWVsaW5l
QWdlbnQoKTsKICAgICBpZiAodGltZWxpbmVBZ2VudCAmJiBjb29raWUuaGFzTWF0Y2hpbmdUaW1l
bGluZUFnZW50SWQodGltZWxpbmVBZ2VudC0+aWQoKSkpCiAgICAgICAgIHJldHVybiB0aW1lbGlu
ZUFnZW50OwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDljYWRmYjFlOGMxZjZmOTM4
YjRkMDU2MGI0MzJiZjE0NmYzNzEyYzEuLjFmZDQxOWQyZThhYThmNGJlNjllOTdjNzZjZjk0MGM3
YzlkZGI3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTI5NCw3ICsyOTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgbGFzdEZyb250ZW5kRGVsZXRlZCgpOwogCiAgICAgc3RhdGljIGJvb2wgY29uc29sZUFn
ZW50RW5hYmxlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgc3RhdGljIGJvb2wgdGlt
ZWxpbmVBZ2VudEVuYWJsZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHN0YXRpYyBi
b29sIHRpbWVsaW5lQWdlbnRUcmFja2luZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAg
ICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2Uo
UGFnZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVu
dGluZ0FnZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0Fn
ZW50cy5jcHAKaW5kZXggYTBlYWU0YjE3YjdiYzYzMmQ1MDk3NmZiMGJmZTE0OGRiODI4ODcxMC4u
NWY3ZTZjODAzZTc4ZmNjZjYxNmRkNjA1YzdhMmVmZDNlODViMzUzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcApAQCAtNTUsNyArNTUs
NyBAQCB2b2lkIEluc3RydW1lbnRpbmdBZ2VudHM6OnJlc2V0KCkKICAgICBtX3BhZ2VSdW50aW1l
QWdlbnQgPSBudWxscHRyOwogICAgIG1faW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudCA9IG51
bGxwdHI7CiAgICAgbV9pbnNwZWN0b3JUaW1lbGluZUFnZW50ID0gbnVsbHB0cjsKLSAgICBtX3Bl
cnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50ID0gbnVsbHB0cjsKKyAgICBtX3RyYWNraW5n
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCA9IG51bGxwdHI7CiAgICAgbV9pbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQgPSBudWxscHRyOwogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKICAgICBtX2lu
c3BlY3RvckNQVVByb2ZpbGVyQWdlbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKaW5kZXggOWE5Y2U2Y2UyYzlmNzE4Y2Q2MTcy
YzA0Y2M5ZTZiODk3MmZjNDMzNS4uODU5N2IxZTA2ZGVkY2UxYWM5NDc2ZjYxMmRiNWZiNDU5M2Jh
ZTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdB
Z2VudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50
cy5oCkBAIC0xMDksOCArMTA5LDggQEAgcHVibGljOgogICAgIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvclRp
bWVsaW5lQWdlbnQ7IH0KICAgICB2b2lkIHNldEluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JUaW1lbGluZUFnZW50ID0gYWdl
bnQ7IH0KIAotICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHBlcnNpc3RlbnRJbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxp
bmVBZ2VudDsgfQotICAgIHZvaWQgc2V0UGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQo
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCogYWdlbnQpIHsgbV9wZXJzaXN0ZW50SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCA9IGFnZW50OyB9CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdHJhY2tp
bmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV90cmFja2luZ0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ7IH0KKyAgICB2b2lkIHNldFRyYWNraW5nSW5zcGVjdG9yVGltZWxp
bmVBZ2VudChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBhZ2VudCkgeyBtX3RyYWNraW5nSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCA9IGFnZW50OyB9CiAKICAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQqIGluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50OyB9CiAgICAgdm9pZCBzZXRJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQo
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudCA9IGFnZW50OyB9CkBAIC0xNjMsNyArMTYzLDcgQEAgcHJpdmF0ZToKICAgICBQYWdlUnVu
dGltZUFnZW50KiBtX3BhZ2VSdW50aW1lQWdlbnQgeyBudWxscHRyIH07CiAgICAgSW5zcGVjdG9y
OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KiBtX2luc3BlY3RvclNjcmlwdFByb2ZpbGVy
QWdlbnQgeyBudWxscHRyIH07CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogbV9pbnNwZWN0
b3JUaW1lbGluZUFnZW50IHsgbnVsbHB0ciB9OwotICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQq
IG1fcGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQgeyBudWxscHRyIH07CisgICAgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCogbV90cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQgeyBu
dWxscHRyIH07CiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBtX2luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudCB7IG51bGxwdHIgfTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAgICAg
SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudCogbV9pbnNwZWN0b3JDUFVQcm9maWxlckFnZW50IHsg
bnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCAyMmQ0N2Y1N2Y0NWUyMDliNzM1MmRmYTBk
NTNjMjJmMDIwOTlhNThlLi4yOWM3NmQwYzdmZWE5MjJjMmEzZDk5NDE0Yzk4NmVhOGQyOGQ3N2I1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1l
bW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcApAQCAtNDcsMjYgKzQ3LDM2IEBAIEluc3BlY3Rvck1lbW9yeUFn
ZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogCiB2
b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJv
bnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLnNldEluc3BlY3Rvck1lbW9yeUFnZW50KHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3Rv
ck1lbW9yeUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVh
c29uKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JNZW1vcnlBZ2Vu
dChudWxscHRyKTsKLQogICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7Ci0gICAgc3RvcFRyYWNraW5n
KGlnbm9yZWQpOwogICAgIGRpc2FibGUoaWdub3JlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTWVt
b3J5QWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCit2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50
OjplbmFibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIG1fZW5hYmxlZCA9IHRy
dWU7CisgICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JNZW1vcnlBZ2VudCgp
ID09IHRoaXMpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWVtb3J5QWdlbnQgYWxyZWFkeSBl
bmFibGVkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLnNldEluc3BlY3Rvck1lbW9yeUFnZW50KHRoaXMpOwogfQogCi12b2lkIEluc3BlY3Rv
ck1lbW9yeUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKK3ZvaWQgSW5zcGVjdG9yTWVtb3J5
QWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIG1fZW5hYmxl
ZCA9IGZhbHNlOworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTWVtb3J5
QWdlbnQoKSAhPSB0aGlzKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1lbW9yeUFnZW50IGFs
cmVhZHkgZGlzYWJsZWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yTWVtb3J5QWdlbnQobnVsbHB0cik7CisKKyAgICBt
X3RyYWNraW5nID0gZmFsc2U7CisKKyAgICBSZXNvdXJjZVVzYWdlVGhyZWFkOjpyZW1vdmVPYnNl
cnZlcih0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6c3RhcnRUcmFja2lu
ZyhFcnJvclN0cmluZyYpCkBAIC05Nyw5ICsxMDcsNiBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFn
ZW50OjpzdG9wVHJhY2tpbmcoRXJyb3JTdHJpbmcmKQogCiB2b2lkIEluc3BlY3Rvck1lbW9yeUFn
ZW50OjpkaWRIYW5kbGVNZW1vcnlQcmVzc3VyZShDcml0aWNhbCBjcml0aWNhbCkKIHsKLSAgICBp
ZiAoIW1fZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgTWVtb3J5RnJvbnRlbmREaXNw
YXRjaGVyOjpTZXZlcml0eSBzZXZlcml0eSA9IGNyaXRpY2FsID09IENyaXRpY2FsOjpZZXMgPyBN
ZW1vcnlGcm9udGVuZERpc3BhdGNoZXI6OlNldmVyaXR5OjpDcml0aWNhbCA6IE1lbW9yeUZyb250
ZW5kRGlzcGF0Y2hlcjo6U2V2ZXJpdHk6Ok5vbkNyaXRpY2FsOwogICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5tZW1vcnlQcmVzc3VyZShtX2Vudmlyb25tZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgp
LT5lbGFwc2VkVGltZSgpLnNlY29uZHMoKSwgc2V2ZXJpdHkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCmluZGV4
IGU1OTE4YWNjNmUxZmFjZWVhMDZhZTVlYWJmZTY0ZDhiMTExYWY5ZDcuLjVjMTQ3MTExNTQwZTVj
ZjQzNTFiYjhlZGU0MDBlN2U4NDZlYTQ2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKQEAgLTYxLDcgKzYxLDYg
QEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Ok1lbW9yeUZyb250
ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6TWVtb3J5QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAgYm9v
bCBtX2VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV90cmFja2luZyB7IGZhbHNlIH07CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCA0M2EyNGVhMDM1Zjk5YWRhNmEzYzQzNjZmMzhj
MDdhNTNhOWE5YTQwLi40ODllMTJjY2ViNmUxODM5NTJkNTQ0YjUxOWNlMDM0YmI2MDg0MzVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTk0LDEyICs5NCwzMCBAQCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpID0gZGVmYXVsdDsKIAogdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCh0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnNldFBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KG51
bGxwdHIpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmVuYWJsZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcpCit7CisgICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCkgPT0gdGhpcykgeworICAgICAgICBlcnJvclN0cmluZyA9ICJU
aW1lbGluZUFnZW50IGFscmVhZHkgZW5hYmxlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRo
aXMpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nKQoreworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yVGltZWxpbmVBZ2VudCgpICE9IHRoaXMpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVGlt
ZWxpbmVBZ2VudCBhbHJlYWR5IGRpc2FibGVkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvclRpbWVsaW5lQWdlbnQobnVs
bHB0cik7CiAKICAgICBFcnJvclN0cmluZyB1bnVzZWQ7CiAgICAgc3RvcCh1bnVzZWQpOwpAQCAt
MTEwLDcgKzEyOCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0CiAKIHZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6c3RhcnQoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIG1heENhbGxTdGFj
a0RlcHRoKQogewotICAgIG1fZW5hYmxlZEZyb21Gcm9udGVuZCA9IHRydWU7CisgICAgbV90cmFj
a2luZ0Zyb21Gcm9udGVuZCA9IHRydWU7CiAKICAgICBpbnRlcm5hbFN0YXJ0KG1heENhbGxTdGFj
a0RlcHRoKTsKIH0KQEAgLTExOSw3ICsxMzcsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnN0b3AoRXJyb3JTdHJpbmcmKQogewogICAgIGludGVybmFsU3RvcCgpOwogCi0gICAgbV9l
bmFibGVkRnJvbUZyb250ZW5kID0gZmFsc2U7CisgICAgbV90cmFja2luZ0Zyb21Gcm9udGVuZCA9
IGZhbHNlOwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNldEF1dG9DYXB0dXJl
RW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkKQEAgLTE1Myw3ICsxNzEsNyBAQCB2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNldEluc3RydW1lbnRzKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgSlNPTgogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Omlu
dGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKIHsKLSAgICBpZiAobV9l
bmFibGVkKQorICAgIGlmIChtX3RyYWNraW5nKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
bWF4Q2FsbFN0YWNrRGVwdGggJiYgKm1heENhbGxTdGFja0RlcHRoID4gMCkKQEAgLTE2MSwxNyAr
MTc5LDE3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25z
dCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgIGVsc2UKICAgICAgICAgbV9tYXhDYWxsU3Rh
Y2tEZXB0aCA9IDU7CiAKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0VHJhY2tpbmdJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOwogCiAgICAgbV9lbnZpcm9ubWVudC5zY3JpcHRE
ZWJ1Z1NlcnZlcigpLmFkZExpc3RlbmVyKHRoaXMpOwogCi0gICAgbV9lbmFibGVkID0gdHJ1ZTsK
KyAgICBtX3RyYWNraW5nID0gdHJ1ZTsKIAogICAgIC8vIEZJWE1FOiBBYnN0cmFjdCBhd2F5IHBs
YXRmb3JtLXNwZWNpZmljIGNvZGUgb25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQyNzQ4IGlzIGZpeGVkLgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV9m
cmFtZVN0YXJ0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3Rh
dGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJz
OjpJbnNwZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkgewotICAgICAgICBpZiAoIW1fZW5hYmxl
ZCB8fCBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQYXVzZWQoKSkKKyAgICAg
ICAgaWYgKCFtX3RyYWNraW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5p
c1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghbV9ydW5Mb29w
TmVzdGluZ0xldmVsKQpAQCAtMTgwLDcgKzE5OCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgIH0p
OwogCiAgICAgbV9mcmFtZVN0b3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9i
c2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1
bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lRW5kKSwgW3RoaXNdKCkgewotICAgICAgICBpZiAo
IW1fZW5hYmxlZCB8fCBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQYXVzZWQo
KSkKKyAgICAgICAgaWYgKCFtX3RyYWNraW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdT
ZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEFTU0VS
VChtX3J1bkxvb3BOZXN0aW5nTGV2ZWwgPiAwKTsKQEAgLTIwOSwxMCArMjI3LDEwIEBAIHZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxT
dGFja0RlcHRoKQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RvcCgp
CiB7Ci0gICAgaWYgKCFtX2VuYWJsZWQpCisgICAgaWYgKCFtX3RyYWNraW5nKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yVGltZWxpbmVB
Z2VudChudWxscHRyKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0VHJhY2tpbmdJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KG51bGxwdHIpOwogCiAgICAgbV9lbnZpcm9ubWVudC5zY3JpcHRE
ZWJ1Z1NlcnZlcigpLnJlbW92ZUxpc3RlbmVyKHRoaXMsIHRydWUpOwogCkBAIC0yMjgsNyArMjQ2
LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0b3AoKQogCiAgICAg
Y2xlYXJSZWNvcmRTdGFjaygpOwogCi0gICAgbV9lbmFibGVkID0gZmFsc2U7CisgICAgbV90cmFj
a2luZyA9IGZhbHNlOwogICAgIG1fc3RhcnRlZENvbXBvc2l0ZSA9IGZhbHNlOwogICAgIG1fYXV0
b0NhcHR1cmVQaGFzZSA9IEF1dG9DYXB0dXJlUGhhc2U6Ok5vbmU7CiAKQEAgLTI1OCw3ICsyNzYs
NyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYg
KCFtX2VuYWJsZWQgJiYgbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzLmlzRW1wdHkoKSkK
KyAgICBpZiAoIW1fdHJhY2tpbmcgJiYgbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzLmlz
RW1wdHkoKSkKICAgICAgICAgc3RhcnRQcm9ncmFtbWF0aWNDYXB0dXJlKCk7CiAKICAgICBtX3Bl
bmRpbmdDb25zb2xlUHJvZmlsZVJlY29yZHMuYXBwZW5kKGNyZWF0ZVJlY29yZEVudHJ5KFRpbWVs
aW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlQ29uc29sZVByb2ZpbGVEYXRhKHRpdGxlKSwgVGltZWxp
bmVSZWNvcmRUeXBlOjpDb25zb2xlUHJvZmlsZSwgdHJ1ZSwgZnJhbWVGcm9tRXhlY1N0YXRlKGV4
ZWMpKSk7CkBAIC0yNzcsNyArMjk1LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpz
dG9wRnJvbUNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGwKICAgICAg
ICAgICAgIGRpZENvbXBsZXRlUmVjb3JkRW50cnkocmVjb3JkKTsKICAgICAgICAgICAgIG1fcGVu
ZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5yZW1vdmUoaSk7CiAKLSAgICAgICAgICAgIGlmICgh
bV9lbmFibGVkRnJvbUZyb250ZW5kICYmIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5p
c0VtcHR5KCkpCisgICAgICAgICAgICBpZiAoIW1fdHJhY2tpbmdGcm9tRnJvbnRlbmQgJiYgbV9w
ZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBz
dG9wUHJvZ3JhbW1hdGljQ2FwdHVyZSgpOwogCiAgICAgICAgICAgICByZXR1cm47CkBAIC00MzEs
NyArNDQ5LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0aW1lRW5kKEZyYW1lJiBm
cmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6Om1haW5GcmFtZVN0YXJ0ZWRMb2FkaW5nKCkKIHsKLSAgICBpZiAobV9lbmFibGVkKQorICAg
IGlmIChtX3RyYWNraW5nKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fYXV0b0NhcHR1
cmVFbmFibGVkKQpAQCAtNDY1LDcgKzQ4Myw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6bWFpbkZyYW1lTmF2aWdhdGVkKCkKIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpz
dGFydFByb2dyYW1tYXRpY0NhcHR1cmUoKQogewotICAgIEFTU0VSVCghbV9lbmFibGVkKTsKKyAg
ICBBU1NFUlQoIW1fdHJhY2tpbmcpOwogCiAgICAgLy8gRGlzYWJsZSBicmVha3BvaW50cyBkdXJp
bmcgcHJvZ3JhbW1hdGljIGNhcHR1cmUuCiAgICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQq
IGRlYnVnZ2VyQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGVidWdnZXJB
Z2VudCgpKSB7CkBAIC00ODQsOCArNTAyLDggQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpzdGFydFByb2dyYW1tYXRpY0NhcHR1cmUoKQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnN0b3BQcm9ncmFtbWF0aWNDYXB0dXJlKCkKIHsKLSAgICBBU1NFUlQobV9lbmFibGVkKTsK
LSAgICBBU1NFUlQoIW1fZW5hYmxlZEZyb21Gcm9udGVuZCk7CisgICAgQVNTRVJUKG1fdHJhY2tp
bmcpOworICAgIEFTU0VSVCghbV90cmFja2luZ0Zyb21Gcm9udGVuZCk7CiAKICAgICB0b2dnbGVJ
bnN0cnVtZW50cyhJbnN0cnVtZW50U3RhdGU6OlN0b3ApOwogICAgIHRvZ2dsZVRpbWVsaW5lSW5z
dHJ1bWVudChJbnN0cnVtZW50U3RhdGU6OlN0b3ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCBhYWMz
OGZmOTIyNGY3NWNmZDc4NmU4ODYzNDkwYTBhZjg4ZWM4ZmZlLi42NDY5Y2MxNjI4MGRkYjgzNWY3
OTIwYjM3ZWZmMGZlYTAyMTMwYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtOTQsNiArOTQsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBmaW5hbDsK
ICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29u
bmVjdFJlYXNvbikgZmluYWw7CiAKKyAgICAvLyBUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcgorICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBkaXNh
YmxlKEVycm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdGFydChFcnJvclN0cmluZyYsIGNv
bnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGggPSBudWxscHRyKSBmaW5hbDsKICAgICB2b2lkIHN0
b3AoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHNldEF1dG9DYXB0dXJlRW5hYmxlZChF
cnJvclN0cmluZyYsIGJvb2wpIGZpbmFsOwpAQCAtMjEzLDggKzIxNiw4IEBAIHByaXZhdGU6CiAg
ICAgaW50IG1faWQgeyAxIH07CiAgICAgaW50IG1fbWF4Q2FsbFN0YWNrRGVwdGggeyA1IH07CiAK
LSAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2VuYWJsZWRGcm9tRnJv
bnRlbmQgeyBmYWxzZSB9OworICAgIGJvb2wgbV90cmFja2luZyB7IGZhbHNlIH07CisgICAgYm9v
bCBtX3RyYWNraW5nRnJvbUZyb250ZW5kIHsgZmFsc2UgfTsKICAgICBib29sIG1fcHJvZ3JhbW1h
dGljQ2FwdHVyZVJlc3RvcmVCcmVha3BvaW50QWN0aXZlVmFsdWUgeyBmYWxzZSB9OwogCiAgICAg
Ym9vbCBtX2F1dG9DYXB0dXJlRW5hYmxlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9IZWFwTWFuYWdlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0hlYXBNYW5h
Z2VyLmpzCmluZGV4IDM2MWUwNGI4ZjQyYzZmMjhjYmY1OTk0MTFkNjIzYjY2NmYyMmY1YTEuLjg1
ODdlOWYwOWZmZjYwNWMxMmU2MjI4NzdhOTU4ZDIyOWJhZjlhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0hlYXBNYW5hZ2VyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0hl
YXBNYW5hZ2VyLmpzCkBAIC0yMywyMiArMjMsOTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCisvLyBGSVhNRTogSGVhcE1hbmFnZXIgbGFja3MgYWR2YW5jZWQg
bXVsdGktdGFyZ2V0IHN1cHBvcnQuIChJbnN0cnVtZW50cy9Qcm9maWxlcnMgcGVyLXRhcmdldCkK
KwogV0kuSGVhcE1hbmFnZXIgPSBjbGFzcyBIZWFwTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
eworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAg
dGhpcy5fZW5hYmxlZCA9IGZhbHNlOworICAgIH0KKwogICAgIC8vIFRhcmdldAogCiAgICAgaW5p
dGlhbGl6ZVRhcmdldCh0YXJnZXQpCiAgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQp
CisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgaWYgKHRhcmdldC5IZWFwQWdlbnQpCiAg
ICAgICAgICAgICB0YXJnZXQuSGVhcEFnZW50LmVuYWJsZSgpOwogICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCisgICAgZW5hYmxlKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9lbmFibGVkKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSB0cnVlOworCisg
ICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5p
bml0aWFsaXplVGFyZ2V0KHRhcmdldCk7CisgICAgfQorCisgICAgZGlzYWJsZSgpCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQuSGVhcEFnZW50KQorICAgICAgICAgICAgICAgIHRhcmdldC5IZWFwQWdlbnQuZGlzYWJsZSgp
OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlOworICAgIH0KKwor
ICAgIHNuYXBzaG90KGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5fZW5hYmxlZCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHdpbmRvdy5IZWFwQWdlbnQpOwor
ICAgICAgICBIZWFwQWdlbnQuc25hcHNob3QoKGVycm9yLCB0aW1lc3RhbXAsIHNuYXBzaG90U3Ry
aW5nRGF0YSkgPT4geworICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIFdJ
LnJlcG9ydEludGVybmFsRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY2FsbGJhY2soZXJyb3Is
IHRpbWVzdGFtcCwgc25hcHNob3RTdHJpbmdEYXRhKTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgZ2V0UHJldmlldyhub2RlLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX2VuYWJsZWQpOworICAgICAgICBjb25zb2xlLmFzc2VydCh3aW5kb3cuSGVhcEFn
ZW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZSBpbnN0YW5jZW9mIFdJLkhlYXBTbmFw
c2hvdE5vZGVQcm94eSk7CisgICAgICAgIEhlYXBBZ2VudC5nZXRQcmV2aWV3KG5vZGUuaWQsIChl
cnJvciwgc3RyaW5nLCBmdW5jdGlvbkRldGFpbHMsIHByZXZpZXcpID0+IHsKKyAgICAgICAgICAg
IGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKGVycm9y
KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCBzdHJpbmcsIGZ1bmN0aW9uRGV0YWlscywg
cHJldmlldyk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGdldFJlbW90ZU9iamVjdChub2Rl
LCBvYmplY3RHcm91cCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLl9lbmFibGVkKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQod2luZG93LkhlYXBBZ2VudCk7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGUgaW5zdGFuY2VvZiBXSS5IZWFwU25hcHNob3RO
b2RlUHJveHkpOworICAgICAgICBIZWFwQWdlbnQuZ2V0UmVtb3RlT2JqZWN0KG5vZGUuaWQsIG9i
amVjdEdyb3VwLCAoZXJyb3IsIHJlc3VsdCkgPT4geworICAgICAgICAgICAgaWYgKGVycm9yKQor
ICAgICAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoZXJyb3IpOworICAgICAgICAg
ICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIGdh
cmJhZ2VDb2xsZWN0ZWQodGFyZ2V0LCBwYXlsb2FkKQogICAgIHsKICAgICAgICAgLy8gQ2FsbGVk
IGZyb20gV0kuSGVhcE9ic2VydmVyLgogCisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE2NzMyMz4gV2ViIEluc3BlY3RvcjogRW5hYmxlIE1lbW9yeSBwcm9maWxpbmcgaW4gV29y
a2VycwogICAgICAgICBpZiAodGFyZ2V0ICE9PSBXSS5tYWluVGFyZ2V0KQogICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvTWVtb3J5TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL01lbW9yeU1hbmFnZXIuanMKaW5kZXggNzZlNjdhNmRlNjdm
NTBkNjkwMWRlOTlhMGQ3Y2M2MDhhNGQ4ZjY0ZS4uYWE2Nzc3YmE0ZmEzNGQ2ZDU5NzU5NGJmYmNm
ZTE3ZjE1MGI0NGI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvTWVtb3J5TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9NZW1vcnlNYW5hZ2VyLmpzCkBAIC0yNSwy
MCArMjUsNTcgQEAKIAogV0kuTWVtb3J5TWFuYWdlciA9IGNsYXNzIE1lbW9yeU1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKIHsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBl
cigpOworCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsKKyAgICB9CisKICAgICAvLyBU
YXJnZXQKIAogICAgIGluaXRpYWxpemVUYXJnZXQodGFyZ2V0KQogICAgIHsKKyAgICAgICAgaWYg
KCF0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGlmICh0YXJn
ZXQuTWVtb3J5QWdlbnQpCiAgICAgICAgICAgICB0YXJnZXQuTWVtb3J5QWdlbnQuZW5hYmxlKCk7
CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKKyAgICBlbmFibGUoKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5f
ZW5hYmxlZCA9IHRydWU7CisKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMp
CisgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVUYXJnZXQodGFyZ2V0KTsKKyAgICB9CisKKyAg
ICBkaXNhYmxlKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykgewor
ICAgICAgICAgICAgaWYgKHRhcmdldC5NZW1vcnlBZ2VudCkKKyAgICAgICAgICAgICAgICB0YXJn
ZXQuTWVtb3J5QWdlbnQuZGlzYWJsZSgpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZW5h
YmxlZCA9IGZhbHNlOworICAgIH0KKwogICAgIG1lbW9yeVByZXNzdXJlKHRpbWVzdGFtcCwgcHJv
dG9jb2xTZXZlcml0eSkKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLk1lbW9yeU9i
c2VydmVyLgogCisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKwogICAgICAgICBsZXQgbWVtb3J5UHJlc3N1cmVFdmVudCA9IFdJLk1lbW9yeVByZXNzdXJl
RXZlbnQuZnJvbVBheWxvYWQodGltZXN0YW1wLCBwcm90b2NvbFNldmVyaXR5KTsKICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuTWVtb3J5TWFuYWdlci5FdmVudC5NZW1v
cnlQcmVzc3VyZSwge21lbW9yeVByZXNzdXJlRXZlbnR9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1h
bmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXggYjE2MWE2NTk2NWM1OTg1Yzk1OTlkNWY5NDYwN2Zj
NmIwNDE3Y2EwYy4uNTk5YTU0ZDczYjI2N2FmNjM3OTE3NDMxNzQ3MjdlNDI4M2M1NWYxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
VGltZWxpbmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwpAQCAtMzEsNiArMzEsOCBAQCBXSS5U
aW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNl
OworCiAgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuUHJv
dmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhpcy5fcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhpcyk7
CiAgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJl
c291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwogCkBA
IC02NSw3ICs2NywxNCBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGluaXRpYWxpemVUYXJnZXQodGFyZ2V0KQogICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAg
ICAgICAgIGlmICh0YXJnZXQuVGltZWxpbmVBZ2VudCkgeworICAgICAgICAgICAgLy8gQ09NUEFU
SUJJTElUWSAoaU9TIDEzLjEpOiBUaW1lbGluZS5lbmFibGUgZGlkIG5vdCBleGlzdC4KKyAgICAg
ICAgICAgIGlmICh0YXJnZXQuVGltZWxpbmVBZ2VudC5lbmFibGUpCisgICAgICAgICAgICAgICAg
dGFyZ2V0LlRpbWVsaW5lQWdlbnQuZW5hYmxlKCk7CisKICAgICAgICAgICAgIHRoaXMuX3VwZGF0
ZUF1dG9DYXB0dXJlSW5zdHJ1bWVudHMoW3RhcmdldF0pOwogCiAgICAgICAgICAgICAvLyBDT01Q
QVRJQklMSVRZIChpT1MgOSk6IFRpbWVsaW5lLnNldEF1dG9DYXB0dXJlRW5hYmxlZCBkaWQgbm90
IGV4aXN0LgpAQCAtMTU0LDcgKzE2Myw3IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRp
bWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgcmVzZXQoKQogICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuaXNDYXB0dXJpbmcoKSkKKyAgICAgICAgaWYgKHRoaXMuX2NhcHR1cmlu
Z1N0YXRlID09PSBUaW1lbGluZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuU3RhcnRpbmcgfHwgdGhp
cy5fY2FwdHVyaW5nU3RhdGUgPT09IFRpbWVsaW5lTWFuYWdlci5DYXB0dXJpbmdTdGF0ZS5BY3Rp
dmUpCiAgICAgICAgICAgICB0aGlzLnN0b3BDYXB0dXJpbmcoKTsKIAogICAgICAgICB0aGlzLl9y
ZWNvcmRpbmdzID0gW107CkBAIC0xODMsNiArMTkyLDggQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0g
Y2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBzZXQgYXV0b0Nh
cHR1cmVPblBhZ2VMb2FkKGF1dG9DYXB0dXJlKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5fZW5hYmxlZCk7CisKICAgICAgICAgYXV0b0NhcHR1cmUgPSAhIWF1dG9DYXB0dXJl
OwogCiAgICAgICAgIGlmICh0aGlzLl9hdXRvQ2FwdHVyZU9uUGFnZUxvYWQgPT09IGF1dG9DYXB0
dXJlKQpAQCAtMjM3LDggKzI0OCwzOSBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1l
bGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgfQogICAgIH0KIAorICAgIGVu
YWJsZSgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLl9lbmFibGVkID0gdHJ1ZTsKKworICAgICAgICB0aGlzLnJl
c2V0KCk7CisKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCisgICAgICAg
ICAgICB0aGlzLmluaXRpYWxpemVUYXJnZXQodGFyZ2V0KTsKKyAgICB9CisKKyAgICBkaXNhYmxl
KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB0aGlzLnJlc2V0KCk7CisKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9m
IFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4xKTog
VGltZWxpbmUuZGlzYWJsZSBkaWQgbm90IGV4aXN0LgorICAgICAgICAgICAgaWYgKHRhcmdldC5U
aW1lbGluZUFnZW50ICYmIHRhcmdldC5UaW1lbGluZUFnZW50LmRpc2FibGUpCisgICAgICAgICAg
ICAgICAgdGFyZ2V0LlRpbWVsaW5lQWdlbnQuZGlzYWJsZSgpOworICAgICAgICB9CisKKyAgICAg
ICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlOworICAgIH0KKwogICAgIHN0YXJ0Q2FwdHVyaW5nKHNo
b3VsZENyZWF0ZVJlY29yZGluZykKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X2VuYWJsZWQpOworCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NhcHR1cmluZ1N0YXRl
ID09PSBUaW1lbGluZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuU3RvcHBpbmcgfHwgdGhpcy5fY2Fw
dHVyaW5nU3RhdGUgPT09IFRpbWVsaW5lTWFuYWdlci5DYXB0dXJpbmdTdGF0ZS5JbmFjdGl2ZSwg
IlRpbWVsaW5lTWFuYWdlciBpcyBhbHJlYWR5IGNhcHR1cmluZy4iKTsKICAgICAgICAgaWYgKHRo
aXMuX2NhcHR1cmluZ1N0YXRlICE9PSBUaW1lbGluZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuU3Rv
cHBpbmcgJiYgdGhpcy5fY2FwdHVyaW5nU3RhdGUgIT09IFRpbWVsaW5lTWFuYWdlci5DYXB0dXJp
bmdTdGF0ZS5JbmFjdGl2ZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1NCw2ICsyOTYsOCBA
QCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKIAogICAgIHN0b3BDYXB0dXJpbmcoKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5fZW5hYmxlZCk7CisKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY2FwdHVy
aW5nU3RhdGUgPT09IFRpbWVsaW5lTWFuYWdlci5DYXB0dXJpbmdTdGF0ZS5TdGFydGluZyB8fCB0
aGlzLl9jYXB0dXJpbmdTdGF0ZSA9PT0gVGltZWxpbmVNYW5hZ2VyLkNhcHR1cmluZ1N0YXRlLkFj
dGl2ZSwgIlRpbWVsaW5lTWFuYWdlciBpcyBub3QgY2FwdHVyaW5nLiIpOwogICAgICAgICBpZiAo
dGhpcy5fY2FwdHVyaW5nU3RhdGUgIT09IFRpbWVsaW5lTWFuYWdlci5DYXB0dXJpbmdTdGF0ZS5T
dGFydGluZyAmJiB0aGlzLl9jYXB0dXJpbmdTdGF0ZSAhPT0gVGltZWxpbmVNYW5hZ2VyLkNhcHR1
cmluZ1N0YXRlLkFjdGl2ZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI5NSw3ICszMzksNyBA
QCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UaW1lbGlu
ZU1hbmFnZXIuRXZlbnQuUmVjb3JkaW5nQ3JlYXRlZCwge3JlY29yZGluZzogbmV3UmVjb3JkaW5n
fSk7CiAKLSAgICAgICAgaWYgKHRoaXMuaXNDYXB0dXJpbmcoKSkKKyAgICAgICAgaWYgKHRoaXMu
X2NhcHR1cmluZ1N0YXRlID09PSBUaW1lbGluZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuU3RhcnRp
bmcgfHwgdGhpcy5fY2FwdHVyaW5nU3RhdGUgPT09IFRpbWVsaW5lTWFuYWdlci5DYXB0dXJpbmdT
dGF0ZS5BY3RpdmUpCiAgICAgICAgICAgICB0aGlzLnN0b3BDYXB0dXJpbmcoKTsKIAogICAgICAg
ICBsZXQgb2xkUmVjb3JkaW5nID0gdGhpcy5fYWN0aXZlUmVjb3JkaW5nOwpAQCAtNDE5LDkgKzQ2
MywxMSBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLlRpbWVsaW5lT2Jz
ZXJ2ZXIuCiAKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisKICAgICAg
ICAgbGV0IHdhaXRpbmdGb3JDYXB0dXJpbmdTdGFydGVkRXZlbnQgPSB0aGlzLl9jYXB0dXJpbmdT
dGF0ZSA9PT0gVGltZWxpbmVNYW5hZ2VyLkNhcHR1cmluZ1N0YXRlLlN0YXJ0aW5nOwogCi0gICAg
ICAgIGlmICh0aGlzLmlzQ2FwdHVyaW5nKCkpCisgICAgICAgIGlmICh0aGlzLl9jYXB0dXJpbmdT
dGF0ZSA9PT0gVGltZWxpbmVNYW5hZ2VyLkNhcHR1cmluZ1N0YXRlLlN0YXJ0aW5nIHx8IHRoaXMu
X2NhcHR1cmluZ1N0YXRlID09PSBUaW1lbGluZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuQWN0aXZl
KQogICAgICAgICAgICAgdGhpcy5zdG9wQ2FwdHVyaW5nKCk7CiAKICAgICAgICAgdGhpcy5faW5p
dGlhdGVkQnlCYWNrZW5kU3RhcnQgPSB0cnVlOwpAQCAtNDQxLDYgKzQ4Nyw5IEBAIFdJLlRpbWVs
aW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
IHsKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuVGltZWxpbmVPYnNlcnZlci4KIAorICAgICAg
ICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5pc0NhcHR1cmluZygpKTsKICAgICAgICAgaWYgKCF0aGlzLmlzQ2Fw
dHVyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00ODYsNiArNTM1LDkgQEAgV0kuVGlt
ZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgewogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5QYWdlT2JzZXJ2ZXIuCiAKKyAgICAgICAg
aWYgKCF0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX2FjdGl2ZVJlY29yZGluZyk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGlzTmFOKFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5kb21Db250ZW50UmVhZHlFdmVudFRp
bWVzdGFtcCkpOwogCkBAIC01MDEsNiArNTUzLDkgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xh
c3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICAvLyBD
YWxsZWQgZnJvbSBXSS5QYWdlT2JzZXJ2ZXIuCiAKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVk
KQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2Fj
dGl2ZVJlY29yZGluZyk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlzTmFOKFdJLm5ldHdvcmtN
YW5hZ2VyLm1haW5GcmFtZS5sb2FkRXZlbnRUaW1lc3RhbXApKTsKIApAQCAtNTI1LDYgKzU4MCw5
IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuQ1BVUHJvZmlsZXJPYnNl
cnZlci4KIAorICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47
CisKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5pc0NhcHR1cmluZygpKTsKICAgICAgICAg
aWYgKCF0aGlzLmlzQ2FwdHVyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC01NTAsNiAr
NjA4LDkgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5NZW1vcnlPYnNl
cnZlci4KIAorICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47
CisKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5pc0NhcHR1cmluZygpKTsKICAgICAgICAg
aWYgKCF0aGlzLmlzQ2FwdHVyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC01NzAsMTQg
KzYzMSwxNiBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICB0aGlzLmNhcHR1cmluZ1N0YXJ0ZWQodGltZXN0YW1w
KTsKIAotICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdJLkhlYXBBbGxvY2F0aW9uc1RpbWVs
aW5lUmVjb3JkKHRpbWVzdGFtcCwgc25hcHNob3QpKTsKKyAgICAgICAgaWYgKHRoaXMuX2VuYWJs
ZWQpCisgICAgICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdJLkhlYXBBbGxvY2F0aW9uc1Rp
bWVsaW5lUmVjb3JkKHRpbWVzdGFtcCwgc25hcHNob3QpKTsKICAgICB9CiAKICAgICBoZWFwVHJh
Y2tpbmdDb21wbGV0ZWQodGltZXN0YW1wLCBzbmFwc2hvdCkKICAgICB7CiAgICAgICAgIC8vIENh
bGxlZCBmcm9tIFdJLkhlYXBPYnNlcnZlci4KIAotICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3
IFdJLkhlYXBBbGxvY2F0aW9uc1RpbWVsaW5lUmVjb3JkKHRpbWVzdGFtcCwgc25hcHNob3QpKTsK
KyAgICAgICAgaWYgKHRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICB0aGlzLl9hZGRSZWNvcmQo
bmV3IFdJLkhlYXBBbGxvY2F0aW9uc1RpbWVsaW5lUmVjb3JkKHRpbWVzdGFtcCwgc25hcHNob3Qp
KTsKIAogICAgICAgICB0aGlzLmNhcHR1cmluZ1N0b3BwZWQoKTsKICAgICB9CkBAIC01ODYsNiAr
NjQ5LDkgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5IZWFwQWxsb2Nh
dGlvbnNJbnN0cnVtZW50LgogCisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKwogICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdJLkhlYXBBbGxvY2F0
aW9uc1RpbWVsaW5lUmVjb3JkKHRpbWVzdGFtcCwgc25hcHNob3QpKTsKICAgICB9CiAKQEAgLTgy
Nyw3ICs4OTMsNyBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fcmVjb3JkaW5ncy5wdXNoKG5ld1JlY29y
ZGluZyk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRpbWVsaW5l
TWFuYWdlci5FdmVudC5SZWNvcmRpbmdDcmVhdGVkLCB7cmVjb3JkaW5nOiBuZXdSZWNvcmRpbmd9
KTsKIAotICAgICAgICBpZiAodGhpcy5pc0NhcHR1cmluZygpKQorICAgICAgICBpZiAodGhpcy5f
Y2FwdHVyaW5nU3RhdGUgPT09IFRpbWVsaW5lTWFuYWdlci5DYXB0dXJpbmdTdGF0ZS5TdGFydGlu
ZyB8fCB0aGlzLl9jYXB0dXJpbmdTdGF0ZSA9PT0gVGltZWxpbmVNYW5hZ2VyLkNhcHR1cmluZ1N0
YXRlLkFjdGl2ZSkKICAgICAgICAgICAgIHRoaXMuc3RvcENhcHR1cmluZygpOwogCiAgICAgICAg
IHZhciBvbGRSZWNvcmRpbmcgPSB0aGlzLl9hY3RpdmVSZWNvcmRpbmc7CkBAIC05MTcsNyArOTgz
LDcgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgIGxldCBvbGRNYWluUmVzb3VyY2UgPSBmcmFtZS5tYWluUmVzb3Vy
Y2UgfHwgbnVsbDsKICAgICAgICAgdGhpcy5faXNDYXB0dXJpbmdQYWdlUmVsb2FkID0gb2xkTWFp
blJlc291cmNlICE9PSBudWxsICYmIG9sZE1haW5SZXNvdXJjZS51cmwgPT09IG1haW5SZXNvdXJj
ZS51cmw7CiAKLSAgICAgICAgaWYgKHRoaXMuaXNDYXB0dXJpbmcoKSkKKyAgICAgICAgaWYgKHRo
aXMuX2NhcHR1cmluZ1N0YXRlID09PSBUaW1lbGluZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuU3Rh
cnRpbmcgfHwgdGhpcy5fY2FwdHVyaW5nU3RhdGUgPT09IFRpbWVsaW5lTWFuYWdlci5DYXB0dXJp
bmdTdGF0ZS5BY3RpdmUpCiAgICAgICAgICAgICB0aGlzLnN0b3BDYXB0dXJpbmcoKTsKIAogICAg
ICAgICB0aGlzLl9tYWluUmVzb3VyY2VGb3JBdXRvQ2FwdHVyaW5nID0gbWFpblJlc291cmNlOwpA
QCAtOTc5LDExICsxMDQ1LDE3IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5l
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX3Byb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQo
ZXZlbnQpCiAgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICBy
ZXR1cm47CisKICAgICAgICAgdGhpcy5fYXR0ZW1wdEF1dG9DYXB0dXJpbmdGb3JGcmFtZShldmVu
dC50YXJnZXQpOwogICAgIH0KIAogICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCiAg
ICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisK
ICAgICAgICAgLy8gSWdub3JlIHJlc291cmNlIGV2ZW50cyB3aGVuIHRoZXJlIGlzbid0IGEgbWFp
biBmcmFtZSB5ZXQuIFRob3NlIGV2ZW50cyBhcmUgdHJpZ2dlcmVkIGJ5CiAgICAgICAgIC8vIGxv
YWRpbmcgdGhlIGNhY2hlZCByZXNvdXJjZXMgd2hlbiB0aGUgaW5zcGVjdG9yIG9wZW5zLCBhbmQg
dGhleSBkbyBub3QgaGF2ZSB0aW1pbmcgaW5mb3JtYXRpb24uCiAgICAgICAgIGlmICghV0kubmV0
d29ya01hbmFnZXIubWFpbkZyYW1lKQpAQCAtMTAxNiw2ICsxMDg4LDkgQEAgV0kuVGltZWxpbmVN
YW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBf
cmVzb3VyY2VXYXNBZGRlZChldmVudCkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxl
ZCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAvLyBJZ25vcmUgcmVzb3VyY2UgZXZl
bnRzIHdoZW4gdGhlcmUgaXNuJ3QgYSBtYWluIGZyYW1lIHlldC4gVGhvc2UgZXZlbnRzIGFyZSB0
cmlnZ2VyZWQgYnkKICAgICAgICAgLy8gbG9hZGluZyB0aGUgY2FjaGVkIHJlc291cmNlcyB3aGVu
IHRoZSBpbnNwZWN0b3Igb3BlbnMsIGFuZCB0aGV5IGRvIG5vdCBoYXZlIHRpbWluZyBpbmZvcm1h
dGlvbi4KICAgICAgICAgaWYgKCFXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUpCkBAIC0xMDI2
LDEyICsxMTAxLDE4IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX2dhcmJhZ2VDb2xsZWN0ZWQoZXZlbnQpCiAgICAg
eworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKICAg
ICAgICAgbGV0IHtjb2xsZWN0aW9ufSA9IGV2ZW50LmRhdGE7CiAgICAgICAgIHRoaXMuX2FkZFJl
Y29yZChuZXcgV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQoV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQu
RXZlbnRUeXBlLkdhcmJhZ2VDb2xsZWN0ZWQsIGNvbGxlY3Rpb24uc3RhcnRUaW1lLCBjb2xsZWN0
aW9uLmVuZFRpbWUsIG51bGwsIG51bGwsIGNvbGxlY3Rpb24pKTsKICAgICB9CiAKICAgICBfbWVt
b3J5UHJlc3N1cmUoZXZlbnQpCiAgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisg
ICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgdGhpcy5fYWN0aXZlUmVjb3JkaW5nLmFkZE1l
bW9yeVByZXNzdXJlRXZlbnQoZXZlbnQuZGF0YS5tZW1vcnlQcmVzc3VyZUV2ZW50KTsKICAgICB9
CiAKQEAgLTEwNjgsNiArMTE0OSw5IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVs
aW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgc2NyaXB0UHJvZmlsZXJUcmFja2lu
Z1VwZGF0ZWQoZXZlbnQpCiAgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAg
ICAgICAgICByZXR1cm47CisKICAgICAgICAgbGV0IHtzdGFydFRpbWUsIGVuZFRpbWUsIHR5cGV9
ID0gZXZlbnQ7CiAgICAgICAgIGxldCBzY3JpcHRSZWNvcmRUeXBlID0gdGhpcy5fc2NyaXB0UHJv
ZmlsZXJUeXBlVG9TY3JpcHRUaW1lbGluZVJlY29yZFR5cGUodHlwZSk7CiAgICAgICAgIGxldCBy
ZWNvcmQgPSBuZXcgV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQoc2NyaXB0UmVjb3JkVHlwZSwgc3Rh
cnRUaW1lLCBlbmRUaW1lLCBudWxsLCBudWxsLCBudWxsLCBudWxsKTsKQEAgLTEwODQsNjcgKzEx
NjgsNjkgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAKICAgICBzY3JpcHRQcm9maWxlclRyYWNraW5nQ29tcGxldGVkKHRpbWVz
dGFtcCwgc2FtcGxlcykKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl93ZWJU
aW1lbGluZVNjcmlwdFJlY29yZHNFeHBlY3RpbmdTY3JpcHRQcm9maWxlckV2ZW50cyB8fCB0aGlz
Ll9zY3JpcHRQcm9maWxlclJlY29yZHMubGVuZ3RoID49IHRoaXMuX3dlYlRpbWVsaW5lU2NyaXB0
UmVjb3Jkc0V4cGVjdGluZ1NjcmlwdFByb2ZpbGVyRXZlbnRzLmxlbmd0aCk7CisgICAgICAgIGlm
ICh0aGlzLl9lbmFibGVkKSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fd2Vi
VGltZWxpbmVTY3JpcHRSZWNvcmRzRXhwZWN0aW5nU2NyaXB0UHJvZmlsZXJFdmVudHMgfHwgdGhp
cy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzLmxlbmd0aCA+PSB0aGlzLl93ZWJUaW1lbGluZVNjcmlw
dFJlY29yZHNFeHBlY3RpbmdTY3JpcHRQcm9maWxlckV2ZW50cy5sZW5ndGgpOwogCi0gICAgICAg
IGlmIChzYW1wbGVzKSB7Ci0gICAgICAgICAgICBsZXQge3N0YWNrVHJhY2VzfSA9IHNhbXBsZXM7
Ci0gICAgICAgICAgICBsZXQgdG9wRG93bkNhbGxpbmdDb250ZXh0VHJlZSA9IHRoaXMuX2FjdGl2
ZVJlY29yZGluZy50b3BEb3duQ2FsbGluZ0NvbnRleHRUcmVlOworICAgICAgICAgICAgaWYgKHNh
bXBsZXMpIHsKKyAgICAgICAgICAgICAgICBsZXQge3N0YWNrVHJhY2VzfSA9IHNhbXBsZXM7Cisg
ICAgICAgICAgICAgICAgbGV0IHRvcERvd25DYWxsaW5nQ29udGV4dFRyZWUgPSB0aGlzLl9hY3Rp
dmVSZWNvcmRpbmcudG9wRG93bkNhbGxpbmdDb250ZXh0VHJlZTsKIAotICAgICAgICAgICAgLy8g
Q2FsY3VsYXRlIGEgcGVyLXNhbXBsZSBkdXJhdGlvbi4KLSAgICAgICAgICAgIGxldCB0aW1lc3Rh
bXBJbmRleCA9IDA7Ci0gICAgICAgICAgICBsZXQgdGltZXN0YW1wQ291bnQgPSBzdGFja1RyYWNl
cy5sZW5ndGg7Ci0gICAgICAgICAgICBsZXQgc2FtcGxlRHVyYXRpb25zID0gbmV3IEFycmF5KHRp
bWVzdGFtcENvdW50KTsKLSAgICAgICAgICAgIGxldCBzYW1wbGVEdXJhdGlvbkluZGV4ID0gMDsK
LSAgICAgICAgICAgIGNvbnN0IGRlZmF1bHREdXJhdGlvbiA9IDEgLyAxMDAwOyAvLyAxbXMuCi0g
ICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3NjcmlwdFByb2ZpbGVyUmVjb3Jk
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGxldCByZWNvcmQgPSB0aGlzLl9zY3Jp
cHRQcm9maWxlclJlY29yZHNbaV07CisgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGEgcGVy
LXNhbXBsZSBkdXJhdGlvbi4KKyAgICAgICAgICAgICAgICBsZXQgdGltZXN0YW1wSW5kZXggPSAw
OworICAgICAgICAgICAgICAgIGxldCB0aW1lc3RhbXBDb3VudCA9IHN0YWNrVHJhY2VzLmxlbmd0
aDsKKyAgICAgICAgICAgICAgICBsZXQgc2FtcGxlRHVyYXRpb25zID0gbmV3IEFycmF5KHRpbWVz
dGFtcENvdW50KTsKKyAgICAgICAgICAgICAgICBsZXQgc2FtcGxlRHVyYXRpb25JbmRleCA9IDA7
CisgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdER1cmF0aW9uID0gMSAvIDEwMDA7IC8vIDFt
cy4KKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3NjcmlwdFByb2Zp
bGVyUmVjb3Jkcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBsZXQgcmVjb3Jk
ID0gdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzW2ldOworCisgICAgICAgICAgICAgICAgICAg
IC8vIFVzZSBhIGRlZmF1bHQgZHVyYXRpb24gZm9yIHRpbWVzdGFtcHMgcmVjb3JkZWQgb3V0c2lk
ZSBvZiBTY3JpcHRQcm9maWxlciBldmVudHMuCisgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0
aW1lc3RhbXBJbmRleCA8IHRpbWVzdGFtcENvdW50ICYmIHN0YWNrVHJhY2VzW3RpbWVzdGFtcElu
ZGV4XS50aW1lc3RhbXAgPCByZWNvcmQuc3RhcnRUaW1lKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVEdXJhdGlvbnNbc2FtcGxlRHVyYXRpb25JbmRleCsrXSA9IGRlZmF1bHREdXJh
dGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcEluZGV4Kys7CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBBdmVyYWdlIHRoZSBkdXJh
dGlvbiBwZXIgc2FtcGxlIGFjcm9zcyBhbGwgc2FtcGxlcyBkdXJpbmcgdGhlIHJlY29yZC4KKyAg
ICAgICAgICAgICAgICAgICAgbGV0IHNhbXBsZXNJblJlY29yZCA9IDA7CisgICAgICAgICAgICAg
ICAgICAgIHdoaWxlICh0aW1lc3RhbXBJbmRleCA8IHRpbWVzdGFtcENvdW50ICYmIHN0YWNrVHJh
Y2VzW3RpbWVzdGFtcEluZGV4XS50aW1lc3RhbXAgPCByZWNvcmQuZW5kVGltZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZXN0YW1wSW5kZXgrKzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNhbXBsZXNJblJlY29yZCsrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGlmIChzYW1wbGVzSW5SZWNvcmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxldCBhdmVyYWdlRHVyYXRpb24gPSAocmVjb3JkLmVuZFRpbWUgLSByZWNvcmQuc3RhcnRUaW1l
KSAvIHNhbXBsZXNJblJlY29yZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZUR1cmF0
aW9ucy5maWxsKGF2ZXJhZ2VEdXJhdGlvbiwgc2FtcGxlRHVyYXRpb25JbmRleCwgc2FtcGxlRHVy
YXRpb25JbmRleCArIHNhbXBsZXNJblJlY29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBz
YW1wbGVEdXJhdGlvbkluZGV4ICs9IHNhbXBsZXNJblJlY29yZDsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIFVzZSBhIGRlZmF1
bHQgZHVyYXRpb24gZm9yIHRpbWVzdGFtcHMgcmVjb3JkZWQgb3V0c2lkZSBvZiBTY3JpcHRQcm9m
aWxlciBldmVudHMuCi0gICAgICAgICAgICAgICAgd2hpbGUgKHRpbWVzdGFtcEluZGV4IDwgdGlt
ZXN0YW1wQ291bnQgJiYgc3RhY2tUcmFjZXNbdGltZXN0YW1wSW5kZXhdLnRpbWVzdGFtcCA8IHJl
Y29yZC5zdGFydFRpbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgc2FtcGxlRHVyYXRpb25zW3Nh
bXBsZUR1cmF0aW9uSW5kZXgrK10gPSBkZWZhdWx0RHVyYXRpb247Ci0gICAgICAgICAgICAgICAg
ICAgIHRpbWVzdGFtcEluZGV4Kys7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGlmICh0aW1lc3RhbXBJbmRleCA8IHRpbWVzdGFtcENvdW50KQorICAgICAgICAgICAgICAgICAg
ICBzYW1wbGVEdXJhdGlvbnMuZmlsbChkZWZhdWx0RHVyYXRpb24sIHNhbXBsZUR1cmF0aW9uSW5k
ZXgpOwogCi0gICAgICAgICAgICAgICAgLy8gQXZlcmFnZSB0aGUgZHVyYXRpb24gcGVyIHNhbXBs
ZSBhY3Jvc3MgYWxsIHNhbXBsZXMgZHVyaW5nIHRoZSByZWNvcmQuCi0gICAgICAgICAgICAgICAg
bGV0IHNhbXBsZXNJblJlY29yZCA9IDA7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHRpbWVzdGFt
cEluZGV4IDwgdGltZXN0YW1wQ291bnQgJiYgc3RhY2tUcmFjZXNbdGltZXN0YW1wSW5kZXhdLnRp
bWVzdGFtcCA8IHJlY29yZC5lbmRUaW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFt
cEluZGV4Kys7Ci0gICAgICAgICAgICAgICAgICAgIHNhbXBsZXNJblJlY29yZCsrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoc2FtcGxlc0luUmVjb3JkKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGxldCBhdmVyYWdlRHVyYXRpb24gPSAocmVjb3JkLmVuZFRpbWUgLSBy
ZWNvcmQuc3RhcnRUaW1lKSAvIHNhbXBsZXNJblJlY29yZDsKLSAgICAgICAgICAgICAgICAgICAg
c2FtcGxlRHVyYXRpb25zLmZpbGwoYXZlcmFnZUR1cmF0aW9uLCBzYW1wbGVEdXJhdGlvbkluZGV4
LCBzYW1wbGVEdXJhdGlvbkluZGV4ICsgc2FtcGxlc0luUmVjb3JkKTsKLSAgICAgICAgICAgICAg
ICAgICAgc2FtcGxlRHVyYXRpb25JbmRleCArPSBzYW1wbGVzSW5SZWNvcmQ7CisgICAgICAgICAg
ICAgICAgdGhpcy5fYWN0aXZlUmVjb3JkaW5nLmluaXRpYWxpemVDYWxsaW5nQ29udGV4dFRyZWVz
KHN0YWNrVHJhY2VzLCBzYW1wbGVEdXJhdGlvbnMpOworCisgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFRoaXMgdHJhbnNmb3JtYXRpb24gc2hvdWxkIG5vdCBiZSBuZWVkZWQgYWZ0ZXIgaW50cm9k
dWNpbmcgUHJvZmlsZVZpZXcuCisgICAgICAgICAgICAgICAgLy8gT25jZSB3ZSBlbGltaW5hdGUg
UHJvZmlsZU5vZGVUcmVlRWxlbWVudHMgYW5kIFByb2ZpbGVOb2RlRGF0YUdyaWROb2Rlcy4KKyAg
ICAgICAgICAgICAgICAvLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTU0OTczPiBXZWIgSW5zcGVj
dG9yOiBUaW1lbGluZXMgVUkgcmVkZXNpZ246IFJlbW92ZSBUaW1lbGluZVNpZGViYXJQYW5lbAor
ICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fc2NyaXB0UHJvZmlsZXJS
ZWNvcmRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCByZWNvcmQgPSB0
aGlzLl9zY3JpcHRQcm9maWxlclJlY29yZHNbaV07CisgICAgICAgICAgICAgICAgICAgIHJlY29y
ZC5wcm9maWxlUGF5bG9hZCA9IHRvcERvd25DYWxsaW5nQ29udGV4dFRyZWUudG9DUFVQcm9maWxl
UGF5bG9hZChyZWNvcmQuc3RhcnRUaW1lLCByZWNvcmQuZW5kVGltZSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBVc2UgYSBkZWZhdWx0IGR1cmF0
aW9uIGZvciB0aW1lc3RhbXBzIHJlY29yZGVkIG91dHNpZGUgb2YgU2NyaXB0UHJvZmlsZXIgZXZl
bnRzLgotICAgICAgICAgICAgaWYgKHRpbWVzdGFtcEluZGV4IDwgdGltZXN0YW1wQ291bnQpCi0g
ICAgICAgICAgICAgICAgc2FtcGxlRHVyYXRpb25zLmZpbGwoZGVmYXVsdER1cmF0aW9uLCBzYW1w
bGVEdXJhdGlvbkluZGV4KTsKLQotICAgICAgICAgICAgdGhpcy5fYWN0aXZlUmVjb3JkaW5nLmlu
aXRpYWxpemVDYWxsaW5nQ29udGV4dFRyZWVzKHN0YWNrVHJhY2VzLCBzYW1wbGVEdXJhdGlvbnMp
OwotCi0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB0cmFuc2Zvcm1hdGlvbiBzaG91bGQgbm90
IGJlIG5lZWRlZCBhZnRlciBpbnRyb2R1Y2luZyBQcm9maWxlVmlldy4KLSAgICAgICAgICAgIC8v
IE9uY2Ugd2UgZWxpbWluYXRlIFByb2ZpbGVOb2RlVHJlZUVsZW1lbnRzIGFuZCBQcm9maWxlTm9k
ZURhdGFHcmlkTm9kZXMuCi0gICAgICAgICAgICAvLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTU0
OTczPiBXZWIgSW5zcGVjdG9yOiBUaW1lbGluZXMgVUkgcmVkZXNpZ246IFJlbW92ZSBUaW1lbGlu
ZVNpZGViYXJQYW5lbAotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9zY3Jp
cHRQcm9maWxlclJlY29yZHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVj
b3JkID0gdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzW2ldOwotICAgICAgICAgICAgICAgIHJl
Y29yZC5wcm9maWxlUGF5bG9hZCA9IHRvcERvd25DYWxsaW5nQ29udGV4dFRyZWUudG9DUFVQcm9m
aWxlUGF5bG9hZChyZWNvcmQuc3RhcnRUaW1lLCByZWNvcmQuZW5kVGltZSk7CisgICAgICAgICAg
ICAvLyBBc3NvY2lhdGUgdGhlIFNjcmlwdFByb2ZpbGVyIGNyZWF0ZWQgcmVjb3JkcyB3aXRoIFdl
YiBUaW1lbGluZSByZWNvcmRzLgorICAgICAgICAgICAgLy8gRmlsdGVyIG91dCB0aGUgYWxyZWFk
eSBhZGRlZCBTY3JpcHRQcm9maWxlciBldmVudHMgd2hpY2ggc2hvdWxkIG5vdCBoYXZlIGJlZW4g
d3JhcHBlZC4KKyAgICAgICAgICAgIGlmIChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgIT09
IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9z
Y3JpcHRQcm9maWxlclJlY29yZHMgPSB0aGlzLl9zY3JpcHRQcm9maWxlclJlY29yZHMuZmlsdGVy
KCh4KSA9PiB4Ll9fc2NyaXB0UHJvZmlsZXJUeXBlID09PSBTY3JpcHRQcm9maWxlckFnZW50LkV2
ZW50VHlwZS5PdGhlcik7CisgICAgICAgICAgICAgICAgdGhpcy5fbWVyZ2VTY3JpcHRQcm9maWxl
UmVjb3JkcygpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9zY3JpcHRQcm9m
aWxlclJlY29yZHMgPSBudWxsOworCisgICAgICAgICAgICBsZXQgdGltZWxpbmUgPSB0aGlzLl9h
Y3RpdmVSZWNvcmRpbmcudGltZWxpbmVGb3JSZWNvcmRUeXBlKFdJLlRpbWVsaW5lUmVjb3JkLlR5
cGUuU2NyaXB0KTsKKyAgICAgICAgICAgIHRpbWVsaW5lLnJlZnJlc2goKTsKICAgICAgICAgfQog
Ci0gICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgU2NyaXB0UHJvZmlsZXIgY3JlYXRlZCByZWNvcmRz
IHdpdGggV2ViIFRpbWVsaW5lIHJlY29yZHMuCi0gICAgICAgIC8vIEZpbHRlciBvdXQgdGhlIGFs
cmVhZHkgYWRkZWQgU2NyaXB0UHJvZmlsZXIgZXZlbnRzIHdoaWNoIHNob3VsZCBub3QgaGF2ZSBi
ZWVuIHdyYXBwZWQuCi0gICAgICAgIGlmIChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgIT09
IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpIHsKLSAgICAgICAgICAgIHRoaXMuX3Njcmlw
dFByb2ZpbGVyUmVjb3JkcyA9IHRoaXMuX3NjcmlwdFByb2ZpbGVyUmVjb3Jkcy5maWx0ZXIoKHgp
ID0+IHguX19zY3JpcHRQcm9maWxlclR5cGUgPT09IFNjcmlwdFByb2ZpbGVyQWdlbnQuRXZlbnRU
eXBlLk90aGVyKTsKLSAgICAgICAgICAgIHRoaXMuX21lcmdlU2NyaXB0UHJvZmlsZVJlY29yZHMo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3NjcmlwdFByb2ZpbGVyUmVjb3JkcyA9IG51
bGw7Ci0KLSAgICAgICAgbGV0IHRpbWVsaW5lID0gdGhpcy5fYWN0aXZlUmVjb3JkaW5nLnRpbWVs
aW5lRm9yUmVjb3JkVHlwZShXSS5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdCk7Ci0gICAgICAg
IHRpbWVsaW5lLnJlZnJlc2goKTsKLQogICAgICAgICB0aGlzLmNhcHR1cmluZ1N0b3BwZWQodGlt
ZXN0YW1wKTsKICAgICB9CiAKQEAgLTEyMDYsNiArMTI5Miw4IEBAIFdJLlRpbWVsaW5lTWFuYWdl
ciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX3VwZGF0
ZUF1dG9DYXB0dXJlSW5zdHJ1bWVudHModGFyZ2V0cykKICAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAgIGxldCBlbmFibGVkVGltZWxpbmVUeXBl
cyA9IHRoaXMuZW5hYmxlZFRpbWVsaW5lVHlwZXM7CiAKICAgICAgICAgZm9yIChsZXQgdGFyZ2V0
IG9mIHRhcmdldHMpIHsKQEAgLTEyNDQsNiArMTMzMiw5IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9
IGNsYXNzIFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX2hhbmRsZURP
TU5vZGVEaWRGaXJlRXZlbnQoZXZlbnQpCiAgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJs
ZWQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgbGV0IHtkb21FdmVudH0gPSBldmVu
dC5kYXRhOwogCiAgICAgICAgIHRoaXMuX2FkZFJlY29yZChuZXcgV0kuTWVkaWFUaW1lbGluZVJl
Y29yZChXSS5NZWRpYVRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5ET01FdmVudCwgZG9tRXZlbnQu
dGltZXN0YW1wLCB7CkBAIC0xMjU0LDYgKzEzNDUsOSBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBj
bGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9oYW5kbGVET01O
b2RlUG93ZXJFZmZpY2llbnRQbGF5YmFja1N0YXRlQ2hhbmdlZChldmVudCkKICAgICB7CisgICAg
ICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBs
ZXQge3RpbWVzdGFtcCwgaXNQb3dlckVmZmljaWVudH0gPSBldmVudC5kYXRhOwogCiAgICAgICAg
IHRoaXMuX2FkZFJlY29yZChuZXcgV0kuTWVkaWFUaW1lbGluZVJlY29yZChXSS5NZWRpYVRpbWVs
aW5lUmVjb3JkLkV2ZW50VHlwZS5Qb3dlckVmZmljaWVudFBsYXliYWNrU3RhdGVDaGFuZ2VkLCB0
aW1lc3RhbXAsIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9IZWFwQWxsb2NhdGlvbnNJbnN0cnVtZW50LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0hlYXBBbGxvY2F0aW9uc0luc3RydW1lbnQuanMK
aW5kZXggMDkwOTA2NTc4YmQ2NDFkMDA3MWQ3ZmE1MTc2N2VmNGQ2Y2MwODRmZi4uOGM1OTNjMDJi
YjY3YzlhY2E5MjM0ODc3YzRiNWI5ZmUwN2VhODE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0hlYXBBbGxvY2F0aW9uc0luc3RydW1lbnQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0hlYXBB
bGxvY2F0aW9uc0luc3RydW1lbnQuanMKQEAgLTc1LDcgKzc1LDcgQEAgV0kuSGVhcEFsbG9jYXRp
b25zSW5zdHJ1bWVudCA9IGNsYXNzIEhlYXBBbGxvY2F0aW9uc0luc3RydW1lbnQgZXh0ZW5kcyBX
SS5JbnN0cnUKIAogICAgIF90YWtlSGVhcFNuYXBzaG90KCkKICAgICB7Ci0gICAgICAgIEhlYXBB
Z2VudC5zbmFwc2hvdChmdW5jdGlvbihlcnJvciwgdGltZXN0YW1wLCBzbmFwc2hvdFN0cmluZ0Rh
dGEpIHsKKyAgICAgICAgV0kuaGVhcE1hbmFnZXIuc25hcHNob3QoKGVycm9yLCB0aW1lc3RhbXAs
IHNuYXBzaG90U3RyaW5nRGF0YSkgPT4gewogICAgICAgICAgICAgbGV0IHdvcmtlclByb3h5ID0g
V0kuSGVhcFNuYXBzaG90V29ya2VyUHJveHkuc2luZ2xldG9uKCk7CiAgICAgICAgICAgICB3b3Jr
ZXJQcm94eS5jcmVhdGVTbmFwc2hvdChzbmFwc2hvdFN0cmluZ0RhdGEsICh7b2JqZWN0SWQsIHNu
YXBzaG90OiBzZXJpYWxpemVkU25hcHNob3R9KSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IHNu
YXBzaG90ID0gV0kuSGVhcFNuYXBzaG90UHJveHkuZGVzZXJpYWxpemUob2JqZWN0SWQsIHNlcmlh
bGl6ZWRTbmFwc2hvdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvSW5zdHJ1bWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9JbnN0cnVtZW50LmpzCmluZGV4IDRjMTJkMzYwMWRiOGIwZjIyNjNh
MjA0NzIzY2FlODBmYjBkMDFiNzguLjUwZmNmM2FhN2YzZjE0NGVhNDJkYTI1M2VjYTJmNzdiYWM0
YzEwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9JbnN0cnVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9JbnN0cnVtZW50LmpzCkBAIC01NCw2ICs1NCw3IEBAIFdJLkluc3RydW1lbnQg
PSBjbGFzcyBJbnN0cnVtZW50CiAKICAgICBzdGF0aWMgc3RhcnRMZWdhY3lUaW1lbGluZUFnZW50
KGluaXRpYXRlZEJ5QmFja2VuZCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFdJLnRp
bWVsaW5lTWFuYWdlci5fZW5hYmxlZCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHdpbmRvdy5U
aW1lbGluZUFnZW50LCAiQXR0ZW1wdGVkIHRvIHN0YXJ0IGxlZ2FjeSB0aW1lbGluZSBhZ2VudCB3
aXRob3V0IFRpbWVsaW5lQWdlbnQuIik7CiAKICAgICAgICAgaWYgKFdJLkluc3RydW1lbnQuX2xl
Z2FjeVRpbWVsaW5lQWdlbnRTdGFydGVkKQpAQCAtNjksNiArNzAsOSBAQCBXSS5JbnN0cnVtZW50
ID0gY2xhc3MgSW5zdHJ1bWVudAogCiAgICAgc3RhdGljIHN0b3BMZWdhY3lUaW1lbGluZUFnZW50
KGluaXRpYXRlZEJ5QmFja2VuZCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFdJLnRp
bWVsaW5lTWFuYWdlci5fZW5hYmxlZCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHdpbmRvdy5U
aW1lbGluZUFnZW50LCAiQXR0ZW1wdGVkIHRvIHN0b3AgbGVnYWN5IHRpbWVsaW5lIGFnZW50IHdp
dGhvdXQgVGltZWxpbmVBZ2VudC4iKTsKKwogICAgICAgICBpZiAoIVdJLkluc3RydW1lbnQuX2xl
Z2FjeVRpbWVsaW5lQWdlbnRTdGFydGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKaW5kZXggNTA1
NGY0ZDAyMzBkYjk3ZjFkZWFjODgzZDAzYWExOTdhMmZlZmJiMy4uMTcxMDg2YWFlMzJlNjhjZjkw
Y2Y3ZGZiYmY4MzU5N2YwNTYzZjAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qcwpAQCAtMTI4LDYgKzEyOCw5IEBAIFdJLmNvbnRlbnRM
b2FkZWQgPSBmdW5jdGlvbigpCiB7CiAgICAgLy8gVGhpbmdzIHRoYXQgd291bGQgbm9ybWFsbHkg
Z2V0IGNhbGxlZCBieSB0aGUgVUksIHRoYXQgd2Ugc3RpbGwgd2FudCB0byBkbyBpbiB0ZXN0cy4K
ICAgICBXSS5jYW52YXNNYW5hZ2VyLmVuYWJsZSgpOworICAgIFdJLmhlYXBNYW5hZ2VyLmVuYWJs
ZSgpOworICAgIFdJLm1lbW9yeU1hbmFnZXIuZW5hYmxlKCk7CisgICAgV0kudGltZWxpbmVNYW5h
Z2VyLmVuYWJsZSgpOwogCiAgICAgLy8gU2lnbmFsIHRoYXQgdGhlIGZyb250ZW5kIGlzIG5vdyBy
ZWFkeSB0byByZWNlaXZlIG1lc3NhZ2VzLgogICAgIEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRD
b21wbGV0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0hlYXBBbGxvY2F0aW9uc1RpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hlYXBBbGxvY2F0aW9uc1RpbWVsaW5lVmlldy5q
cwppbmRleCAzMjMzOTVmYTVmNGYyYzYyN2ZhMGE1NTc2ODYyMWQ1ZWVkZTE0YjUxLi41YTUxZDQy
ZDM3NGQ2ZTIyZTczZTEwZmU1Mjk5NTVjZjAxMWE0NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGVh
cEFsbG9jYXRpb25zVGltZWxpbmVWaWV3LmpzCkBAIC00MDUsNyArNDA1LDcgQEAgV0kuSGVhcEFs
bG9jYXRpb25zVGltZWxpbmVWaWV3ID0gY2xhc3MgSGVhcEFsbG9jYXRpb25zVGltZWxpbmVWaWV3
IGV4dGVuZHMgV0kuVGkKIAogICAgIF90YWtlSGVhcFNuYXBzaG90Q2xpY2tlZCgpCiAgICAgewot
ICAgICAgICBIZWFwQWdlbnQuc25hcHNob3QoKGVycm9yLCB0aW1lc3RhbXAsIHNuYXBzaG90U3Ry
aW5nRGF0YSkgPT4geworICAgICAgICBXSS5oZWFwTWFuYWdlci5zbmFwc2hvdCgoZXJyb3IsIHRp
bWVzdGFtcCwgc25hcHNob3RTdHJpbmdEYXRhKSA9PiB7CiAgICAgICAgICAgICBsZXQgd29ya2Vy
UHJveHkgPSBXSS5IZWFwU25hcHNob3RXb3JrZXJQcm94eS5zaW5nbGV0b24oKTsKICAgICAgICAg
ICAgIHdvcmtlclByb3h5LmNyZWF0ZVNuYXBzaG90KHNuYXBzaG90U3RyaW5nRGF0YSwgKHtvYmpl
Y3RJZCwgc25hcHNob3Q6IHNlcmlhbGl6ZWRTbmFwc2hvdH0pID0+IHsKICAgICAgICAgICAgICAg
ICBsZXQgc25hcHNob3QgPSBXSS5IZWFwU25hcHNob3RQcm94eS5kZXNlcmlhbGl6ZShvYmplY3RJ
ZCwgc2VyaWFsaXplZFNuYXBzaG90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hlYXBTbmFwc2hvdEluc3RhbmNlRGF0YUdyaWROb2RlLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGVhcFNuYXBzaG90
SW5zdGFuY2VEYXRhR3JpZE5vZGUuanMKaW5kZXggNTQ4NDZmNTAyYmVjZjMzYjk3MTNkYzNlNDBl
NmI1NWFkMWY4OTZmNy4uZmMxMWM5N2RmNmU2ZDA0YjdlNWY0NWEwNDc0MzAxYzJkOWMyZGJmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGVh
cFNuYXBzaG90SW5zdGFuY2VEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGVhcFNuYXBzaG90SW5zdGFuY2VEYXRhR3JpZE5vZGUu
anMKQEAgLTgxLDEyICs4MSwxMiBAQCBXSS5IZWFwU25hcHNob3RJbnN0YW5jZURhdGFHcmlkTm9k
ZSA9IGNsYXNzIEhlYXBTbmFwc2hvdEluc3RhbmNlRGF0YUdyaWROb2RlIGV4dAogICAgICAgICAg
ICAgY29uc3Qgc2hvdWxkUmV2ZWFsQ29uc29sZSA9IHRydWU7CiAKICAgICAgICAgICAgIGlmIChu
b2RlLmNsYXNzTmFtZSA9PT0gInN0cmluZyIpIHsKLSAgICAgICAgICAgICAgICBIZWFwQWdlbnQu
Z2V0UHJldmlldyhub2RlLmlkLCBmdW5jdGlvbihlcnJvciwgc3RyaW5nLCBmdW5jdGlvbkRldGFp
bHMsIG9iamVjdFByZXZpZXdQYXlsb2FkKSB7CisgICAgICAgICAgICAgICAgV0kuaGVhcE1hbmFn
ZXIuZ2V0UHJldmlldyhub2RlLCBmdW5jdGlvbihlcnJvciwgc3RyaW5nLCBmdW5jdGlvbkRldGFp
bHMsIG9iamVjdFByZXZpZXdQYXlsb2FkKSB7CiAgICAgICAgICAgICAgICAgICAgIGxldCByZW1v
dGVPYmplY3QgPSBlcnJvciA/IFdJLlJlbW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUodW5k
ZWZpbmVkKSA6IFdJLlJlbW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUoc3RyaW5nKTsKICAg
ICAgICAgICAgICAgICAgICAgV0kuY29uc29sZUxvZ1ZpZXdDb250cm9sbGVyLmFwcGVuZEltbWVk
aWF0ZUV4ZWN1dGlvbldpdGhSZXN1bHQodGV4dCwgcmVtb3RlT2JqZWN0LCBhZGRTcGVjaWFsVXNl
ckxvZ0NsYXNzLCBzaG91bGRSZXZlYWxDb25zb2xlKTsKICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgSGVhcEFnZW50LmdldFJlbW90ZU9i
amVjdChub2RlLmlkLCBXSS5SdW50aW1lTWFuYWdlci5Db25zb2xlT2JqZWN0R3JvdXAsIGZ1bmN0
aW9uKGVycm9yLCByZW1vdGVPYmplY3RQYXlsb2FkKSB7CisgICAgICAgICAgICAgICAgV0kuaGVh
cE1hbmFnZXIuZ2V0UmVtb3RlT2JqZWN0KG5vZGUsIFdJLlJ1bnRpbWVNYW5hZ2VyLkNvbnNvbGVP
YmplY3RHcm91cCwgZnVuY3Rpb24oZXJyb3IsIHJlbW90ZU9iamVjdFBheWxvYWQpIHsKICAgICAg
ICAgICAgICAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IGVycm9yID8gV0kuUmVtb3RlT2JqZWN0
LmZyb21QcmltaXRpdmVWYWx1ZSh1bmRlZmluZWQpIDogV0kuUmVtb3RlT2JqZWN0LmZyb21QYXls
b2FkKHJlbW90ZU9iamVjdFBheWxvYWQsIFdJLmFzc3VtaW5nTWFpblRhcmdldCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgV0kuY29uc29sZUxvZ1ZpZXdDb250cm9sbGVyLmFwcGVuZEltbWVkaWF0
ZUV4ZWN1dGlvbldpdGhSZXN1bHQodGV4dCwgcmVtb3RlT2JqZWN0LCBhZGRTcGVjaWFsVXNlckxv
Z0NsYXNzLCBzaG91bGRSZXZlYWxDb25zb2xlKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTI2
NSw3ICsyNjUsOCBAQCBXSS5IZWFwU25hcHNob3RJbnN0YW5jZURhdGFHcmlkTm9kZSA9IGNsYXNz
IEhlYXBTbmFwc2hvdEluc3RhbmNlRGF0YUdyaWROb2RlIGV4dAogCiAgICAgX3BvcHVsYXRlV2lu
ZG93UHJldmlldyhjb250YWluZXJFbGVtZW50KQogICAgIHsKLSAgICAgICAgSGVhcEFnZW50Lmdl
dFJlbW90ZU9iamVjdCh0aGlzLl9ub2RlLmlkLCAoZXJyb3IsIHJlbW90ZU9iamVjdFBheWxvYWQp
ID0+IHsKKyAgICAgICAgY29uc3Qgb2JqZWN0R3JvdXAgPSB1bmRlZmluZWQ7CisgICAgICAgIFdJ
LmhlYXBNYW5hZ2VyLmdldFJlbW90ZU9iamVjdCh0aGlzLl9ub2RlLCBvYmplY3RHcm91cCwgKGVy
cm9yLCByZW1vdGVPYmplY3RQYXlsb2FkKSA9PiB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsK
ICAgICAgICAgICAgICAgICB0aGlzLl9wb3B1bGF0ZUVycm9yKGNvbnRhaW5lckVsZW1lbnQpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI5MSw3ICsyOTIsNyBAQCBXSS5IZWFwU25hcHNo
b3RJbnN0YW5jZURhdGFHcmlkTm9kZSA9IGNsYXNzIEhlYXBTbmFwc2hvdEluc3RhbmNlRGF0YUdy
aWROb2RlIGV4dAogCiAgICAgX3BvcHVsYXRlUHJldmlldyhjb250YWluZXJFbGVtZW50KQogICAg
IHsKLSAgICAgICAgSGVhcEFnZW50LmdldFByZXZpZXcodGhpcy5fbm9kZS5pZCwgKGVycm9yLCBz
dHJpbmcsIGZ1bmN0aW9uRGV0YWlscywgb2JqZWN0UHJldmlld1BheWxvYWQpID0+IHsKKyAgICAg
ICAgV0kuaGVhcE1hbmFnZXIuZ2V0UHJldmlldyh0aGlzLl9ub2RlLCAoZXJyb3IsIHN0cmluZywg
ZnVuY3Rpb25EZXRhaWxzLCBvYmplY3RQcmV2aWV3UGF5bG9hZCkgPT4gewogICAgICAgICAgICAg
aWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVFcnJvcihjb250YWlu
ZXJFbGVtZW50KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC00MjgsNyArNDI5LDcgQEAg
V0kuSGVhcFNuYXBzaG90SW5zdGFuY2VEYXRhR3JpZE5vZGUgPSBjbGFzcyBIZWFwU25hcHNob3RJ
bnN0YW5jZURhdGFHcmlkTm9kZSBleHQKICAgICAgICAgICAgICAgICBsZXQgZ29Ub0Fycm93UGxh
Y2VIb2xkZXJFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIikpOwogICAgICAgICAgICAgICAgIGdvVG9BcnJvd1BsYWNlSG9s
ZGVyRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gImlubGluZS1ibG9jayI7CiAgICAgICAgICAgICAg
ICAgZ29Ub0Fycm93UGxhY2VIb2xkZXJFbGVtZW50LnN0eWxlLndpZHRoID0gIjEwcHgiOwotICAg
ICAgICAgICAgICAgIEhlYXBBZ2VudC5nZXRQcmV2aWV3KG5vZGUuaWQsIGZ1bmN0aW9uKGVycm9y
LCBzdHJpbmcsIGZ1bmN0aW9uRGV0YWlscywgb2JqZWN0UHJldmlld1BheWxvYWQpIHsKKyAgICAg
ICAgICAgICAgICBXSS5oZWFwTWFuYWdlci5nZXRQcmV2aWV3KG5vZGUsIGZ1bmN0aW9uKGVycm9y
LCBzdHJpbmcsIGZ1bmN0aW9uRGV0YWlscywgb2JqZWN0UHJldmlld1BheWxvYWQpIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uRGV0YWlscykgewogICAgICAgICAgICAgICAgICAg
ICAgICAgbGV0IGxvY2F0aW9uID0gZnVuY3Rpb25EZXRhaWxzLmxvY2F0aW9uOwogICAgICAgICAg
ICAgICAgICAgICAgICAgbGV0IHNvdXJjZUNvZGUgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuc2NyaXB0
Rm9ySWRlbnRpZmllcihsb2NhdGlvbi5zY3JpcHRJZCwgV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGltZWxpbmVUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMKaW5kZXggM2QzOTNlN2RlNDFk
ZTJjNDcxOTUwZGUwMzg0NTM2MGIyY2E4M2VmMC4uYWVmYmJhOTI3YmJlYTFmN2Y1MTliMWFkNDU4
M2U5ZTM2ODViNzgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmpzCkBA
IC05MSw2ICs5MSwxMCBAQCBXSS5UaW1lbGluZVRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgVGltZWxp
bmVUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93cwogCiAgICAgICAgIC8vIEV4
cGxpY2l0bHkgdXBkYXRlIHRoZSBwYXRoIGZvciB0aGUgbmF2aWdhdGlvbiBiYXIgdG8gcHJldmVu
dCBpdCBmcm9tIHNob3dpbmcgdXAgYXMgYmxhbmsuCiAgICAgICAgIHRoaXMuY29udGVudEJyb3dz
ZXIudXBkYXRlSGllcmFyY2hpY2FsUGF0aEZvckN1cnJlbnRDb250ZW50VmlldygpOworCisgICAg
ICAgIFdJLmhlYXBNYW5hZ2VyLmVuYWJsZSgpOworICAgICAgICBXSS5tZW1vcnlNYW5hZ2VyLmVu
YWJsZSgpOworICAgICAgICBXSS50aW1lbGluZU1hbmFnZXIuZW5hYmxlKCk7CiAgICAgfQogCiAg
ICAgLy8gU3RhdGljCkBAIC0zMjcsMTMgKzMzMSwxNyBAQCBXSS5UaW1lbGluZVRhYkNvbnRlbnRW
aWV3ID0gY2xhc3MgVGltZWxpbmVUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93
cwogCiAgICAgY2xvc2VkKCkKICAgICB7Ci0gICAgICAgIHN1cGVyLmNsb3NlZCgpOworICAgICAg
ICBXSS50aW1lbGluZU1hbmFnZXIuZGlzYWJsZSgpOworICAgICAgICBXSS5tZW1vcnlNYW5hZ2Vy
LmRpc2FibGUoKTsKKyAgICAgICAgV0kuaGVhcE1hbmFnZXIuZGlzYWJsZSgpOwogCiAgICAgICAg
IGlmIChXSS5GUFNJbnN0cnVtZW50LnN1cHBvcnRlZCgpKQogICAgICAgICAgICAgdGhpcy5jb250
ZW50QnJvd3Nlci5uYXZpZ2F0aW9uQmFyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwg
dGhpcyk7CiAKICAgICAgICAgV0kudGltZWxpbmVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIo
bnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLm5vdGlmaWNhdGlvbnMucmVtb3ZlRXZlbnRM
aXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKworICAgICAgICBzdXBlci5jbG9zZWQoKTsKICAg
ICB9CiAKICAgICBjYW5TaG93UmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMDcyMDg3MWEyMDZlNGMzMDMyYzAyOThmZjFmZTU2OTM4YTYzZDhkYy4uMTUxZDk4N2I4
ZTE4YTg4ODkwYjQwMmRhYTFkZTk4MmRiNWZlNWVkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDE5LTA4LTAxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBUaW1lbGluZXM6IGRpc2FibGUgcmVsYXRlZCBhZ2VudHMgd2hlbiB0aGUg
dGFiIGlzIGNsb3NlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAwMTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvdGltZWxpbmUvc2V0SW5zdHJ1bWVudHMtZXJyb3JzLmh0bWw6CisgICAgICAgICog
aW5zcGVjdG9yL3RpbWVsaW5lL3NldEluc3RydW1lbnRzLXByb2dyYW1tYXRpYy1jYXB0dXJlLmh0
bWw6CisKIDIwMTktMDgtMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IHNob3VsZCBub3Qg
dXNlIGF1ZGlvK3ZpZGVvIGRlbmllZCByZXF1ZXN0cyB0byBkZW55IGF1ZGlvLW9ubHkgb3Igdmlk
ZW8tb25seSByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVs
aW5lL2xpbmUtY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGlu
ZS1jb2x1bW4uaHRtbAppbmRleCA1NWM1YzU3ZGE5MWE0NWU1OGEzM2MxZmIyNTVlNzlhM2RlYTUz
MDhkLi41NmYzZGI3ZDNiMmMyMmRmN2Y4NTlhNWVmMTQ1NWM0Mjg3Yjc5MTcxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbApAQCAtMzMsMTIg
KzMzLDEyIEBAIGZ1bmN0aW9uIHdpbGxFdmFsdWF0ZVNjcmlwdFRlc3QoKSB7CiAgICAgY29uc29s
ZS5wcm9maWxlRW5kKCk7CiB9CiAKLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgUHJvdG9jb2xUZXN0
LmRlYnVnKCk7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBQcm90b2NvbFRl
c3QuY3JlYXRlQXN5bmNTdWl0ZSgiVGltZWxpbmUuTGluZUNvbHVtbiIpOwogCiAgICAgSW5zcGVj
dG9yUHJvdG9jb2wuc2VuZENvbW1hbmQoIlBhZ2UuZW5hYmxlIik7Ci0KLSAgICBsZXQgc3VpdGUg
PSBQcm90b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiVGltZWxpbmUuTGluZUNvbHVtbiIpOwor
ICAgIEluc3BlY3RvclByb3RvY29sLnNlbmRDb21tYW5kKCJUaW1lbGluZS5lbmFibGUiKTsKIAog
ICAgIGZ1bmN0aW9uIHJlcGxhY2VyKGtleSwgdmFsdWUpIHsKICAgICAgICAgaWYgKGtleSA9PT0g
InN0YXJ0VGltZSIgfHwga2V5ID09PSAiZW5kVGltZSIgfHwga2V5ID09PSAic2NyaXB0SWQiIHx8
IGtleSA9PT0gImZyYW1lSWQiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lL3NldEluc3RydW1lbnRzLWVycm9ycy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lL3NldEluc3RydW1lbnRzLWVycm9ycy5odG1sCmluZGV4IGZhOWZhYWJhY2I2MTkx
ZmExY2JmMzhlNjhhZWNjNTdmNmNjYTFlOWYuLjBlMmE5NWIyZWY1NGE4MDE4NGQyZDdjMDMwYjQw
MzhlZGU2NmU2MTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9z
ZXRJbnN0cnVtZW50cy1lcnJvcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGlt
ZWxpbmUvc2V0SW5zdHJ1bWVudHMtZXJyb3JzLmh0bWwKQEAgLTcsNiArNywxMCBAQCBmdW5jdGlv
biB0ZXN0KCkKIHsKICAgICBsZXQgc3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0
ZSgiVGltZWxpbmUuc2V0SW5zdHJ1bWVudHMuZXJyb3JzIik7CiAKKyAgICBJbnNwZWN0b3JQcm90
b2NvbC5zZW5kQ29tbWFuZCgiSGVhcC5lbmFibGUiKTsKKyAgICBJbnNwZWN0b3JQcm90b2NvbC5z
ZW5kQ29tbWFuZCgiTWVtb3J5LmVuYWJsZSIpOworICAgIEluc3BlY3RvclByb3RvY29sLnNlbmRD
b21tYW5kKCJUaW1lbGluZS5lbmFibGUiKTsKKwogICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKICAg
ICAgICAgbmFtZTogIk1pc3NpbmdSZXF1aXJlZEFyZ3VtZW50IiwKICAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGlu
ZS9zZXRJbnN0cnVtZW50cy1wcm9ncmFtbWF0aWMtY2FwdHVyZS5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3RpbWVsaW5lL3NldEluc3RydW1lbnRzLXByb2dyYW1tYXRpYy1jYXB0dXJlLmh0
bWwKaW5kZXggMDVmYTdhZDZiNGVjN2I1MzY3NjNhMDFiOWEwYjBjMDcyMjIxMGIyNi4uZTFjZmM5
OWMzYjhkMWNjMzRlMTE2ZDBjZGQ4NTU5Mjc0OTY0YzU3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3RpbWVsaW5lL3NldEluc3RydW1lbnRzLXByb2dyYW1tYXRpYy1jYXB0dXJl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3NldEluc3RydW1lbnRz
LXByb2dyYW1tYXRpYy1jYXB0dXJlLmh0bWwKQEAgLTE3LDYgKzE3LDcgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgbGV0IGNhcHR1cmVTdG9wcGVkID0gbnVsbDsKIAogICAgIEluc3BlY3RvclByb3Rv
Y29sLnNlbmRDb21tYW5kKCJIZWFwLmVuYWJsZSIpOworICAgIEluc3BlY3RvclByb3RvY29sLnNl
bmRDb21tYW5kKCJUaW1lbGluZS5lbmFibGUiKTsKIAogICAgIEluc3BlY3RvclByb3RvY29sLmV2
ZW50SGFuZGxlclsiVGltZWxpbmUucmVjb3JkaW5nU3RhcnRlZCJdID0gKCkgPT4gewogICAgICAg
ICBQcm90b2NvbFRlc3QucGFzcygiVGltZWxpbmUucmVjb3JkaW5nU3RhcnRlZCIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375455</attachid>
            <date>2019-08-02 14:18:14 -0700</date>
            <delta_ts>2019-08-05 19:22:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200118-20190802141813.patch</filename>
            <type>text/plain</type>
            <size>80461</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDE4ZDFhMzE2YmY4ODBkMTg5MzFkYTA2NjJmN2Uz
MDgzYzcwNmQyYzkuLmRlODllODEyNDYwMmM0OWNiOWEwNzMwNGMzNDU0YjZlMTU4YWQ2MTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTA4LTAyICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBU
aW1lbGluZXM6IGRpc2FibGUgcmVsYXRlZCBhZ2VudHMgd2hlbiB0aGUgdGFiIGlzIGNsb3NlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTE4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV3b3JrIGhv
dyBgZW5hYmxlYC9gZGlzYWJsZWAgaXMgdXNlZCBmb3IgdGltZWxpbmUtcmVsYXRlZCBhZ2VudHMg
c28gdGhhdCBldmVudHMgYXJlIG5vdCBzZW50CisgICAgICAgIGFuZCBkYXRhIGlzbid0IGtlcHQg
YWxpdmUgd2hlbiB0aGUgVGltZWxpbmVzIHRhYiBpc24ndCBlbmFibGVkLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL1RpbWVsaW5lLmpzb246CisgICAgICAgIEFkZCBgZW5hYmxlYC9g
ZGlzYWJsZWAgY29tbWFuZHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JIZWFwQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rvckhl
YXBBZ2VudDo6ZGlzYWJsZSk6CisKIDIwMTktMDgtMDIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN0b3JhZ2U6IGRpc2FibGUgcmVs
YXRlZCBhZ2VudHMgd2hlbiB0aGUgdGFiIGlzIGNsb3NlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgzNTEyODkx
YjkwNjUxNmQyN2ViOTI0ZTE1M2FiNjM0NTNkNGU3NTkuLmMwMzVjOGQwYWI3ZGQyMTJmYmI1ZWY5
OTM5NjZmNjZjNDQ4MTViMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBAQAorMjAxOS0wOC0w
MiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogVGltZWxpbmVzOiBkaXNhYmxlIHJlbGF0ZWQgYWdlbnRzIHdoZW4gdGhlIHRhYiBpcyBj
bG9zZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDExOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
d29yayBob3cgYGVuYWJsZWAvYGRpc2FibGVgIGlzIHVzZWQgZm9yIHRpbWVsaW5lLXJlbGF0ZWQg
YWdlbnRzIHNvIHRoYXQgZXZlbnRzIGFyZSBub3Qgc2VudAorICAgICAgICBhbmQgZGF0YSBpc24n
dCBrZXB0IGFsaXZlIHdoZW4gdGhlIFRpbWVsaW5lcyB0YWIgaXNuJ3QgZW5hYmxlZC4KKworICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3Rv
cCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFs
U3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydEZy
b21Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0
b3BGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjptYWluRnJhbWVTdGFydGVkTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpzdGFydFByb2dyYW1tYXRpY0NhcHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcFByb2dyYW1tYXRpY0NhcHR1cmUpOgorICAg
ICAgICBSZW5hbWUgYG1fZW5hYmxlZCpgIHRvIGBtX3RyYWNraW5nKmAgdG8gbWF0Y2ggb3RoZXIg
dGltZWxpbmUtcmVsYXRlZCBhZ2VudHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck1lbW9yeUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck1lbW9yeUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck1lbW9yeUFnZW50OjpkaWRIYW5kbGVNZW1vcnlQcmVzc3VyZSk6CisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5z
dHJ1bWVudGluZ0FnZW50czo6dHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjpzZXRUcmFja2luZ0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRp
bmdBZ2VudHM6OnBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjpzZXRQZXJzaXN0ZW50SW5zcGVjdG9y
VGltZWxpbmVBZ2VudCk6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnN0cnVtZW50aW5n
QWdlbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHM6OnJlc2V0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lckltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1l
ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
Q2FsbEZ1bmN0aW9uSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxEaXNwYXRjaEV2ZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxG
aXJlVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkSW52YWxpZGF0ZUxheW91dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDb21wb3NpdGVJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tcG9zaXRlSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQYWludEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxh
dGVTdHlsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbkltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lU3RhcnRlZExvYWRpbmdJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25z
b2xlVGltaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnN0b3BDb25zb2xlVGltaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmNvbnNvbGVUaW1lU3RhbXBJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRQcm9maWxpbmdJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcFByb2ZpbGluZ0ltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp0aW1lbGluZUFnZW50
VHJhY2tpbmcpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lSW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlQW5pbWF0
aW9uRnJhbWVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbEZpcmVPYnNlcnZlckNhbGxiYWNrSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlVGltZWxpbmVBZ2VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnRpbWVsaW5lQWdlbnRFbmFibGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZUluc3RydW1lbnRhdGlv
bi5oOgorICAgICAgICAoV2ViQ29yZTo6SlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbklu
dGVybmFsKToKKyAgICAgICAgUmVuYW1lIGZvciBjbGFyaXR5L2NvcnJlY3RuZXNzOgorICAgICAg
ICAgLSBgaW5zcGVjdG9yVGltZWxpbmVBZ2VudGAgPT4gYHRyYWNraW5nSW5zcGVjdG9yVGltZWxp
bmVBZ2VudGAKKyAgICAgICAgIC0gYHBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50YCA9
PiBgaW5zcGVjdG9yVGltZWxpbmVBZ2VudGAKKwogMjAxOS0wOC0wMiAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU3RvcmFnZTogZGlz
YWJsZSByZWxhdGVkIGFnZW50cyB3aGVuIHRoZSB0YWIgaXMgY2xvc2VkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZwppbmRleCBjZjk2ZDE0N2E0YmFiZjI2ZjIzYTM2YTBkMzM0OWVlYmU2OWU2NWVlLi5j
ZmIwNTJiNWQ1ZmRhOGZjNTczMTg1Y2Q0MGNkYTM5MDA2MjZhYjNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw5MSBAQAorMjAxOS0wOC0wMiAgRGV2aW4gUm91c3NvICA8ZHJv
dXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVGltZWxpbmVzOiBkaXNh
YmxlIHJlbGF0ZWQgYWdlbnRzIHdoZW4gdGhlIHRhYiBpcyBjbG9zZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDExOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJld29yayBob3cgYGVuYWJsZWAvYGRp
c2FibGVgIGlzIHVzZWQgZm9yIHRpbWVsaW5lLXJlbGF0ZWQgYWdlbnRzIHNvIHRoYXQgZXZlbnRz
IGFyZSBub3Qgc2VudAorICAgICAgICBhbmQgZGF0YSBpc24ndCBrZXB0IGFsaXZlIHdoZW4gdGhl
IFRpbWVsaW5lcyB0YWIgaXNuJ3QgZW5hYmxlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5h
Z2VyKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuZ2V0IGRvbWFpbnMp
OiBBZGRlZC4KKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuYWN0aXZhdGVF
eHRyYURvbWFpbik6IEFkZGVkLgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlw
ZS5pbml0aWFsaXplVGFyZ2V0KToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5
cGUucmVzZXQpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5zZXQgYXV0
b0NhcHR1cmVPblBhZ2VMb2FkKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5
cGUuZW5hYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBl
LmRpc2FibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUu
c3RhcnRDYXB0dXJpbmcpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5z
dG9wQ2FwdHVyaW5nKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuYXN5
bmMgcHJvY2Vzc0pTT04pOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5j
YXB0dXJpbmdTdGFydGVkKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUu
Y2FwdHVyaW5nU3RvcHBlZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBl
LmF1dG9DYXB0dXJlU3RhcnRlZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90
eXBlLmV2ZW50UmVjb3JkZWQpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlw
ZS5wYWdlRE9NQ29udGVudExvYWRlZEV2ZW50RmlyZWQpOgorICAgICAgICAoV0kuVGltZWxpbmVN
YW5hZ2VyLnByb3RvdHlwZS5wYWdlTG9hZEV2ZW50RmlyZWQpOgorICAgICAgICAoV0kuVGltZWxp
bmVNYW5hZ2VyLnByb3RvdHlwZS5jcHVQcm9maWxlclRyYWNraW5nVXBkYXRlZCk6CisgICAgICAg
IChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLm1lbW9yeVRyYWNraW5nVXBkYXRlZCk6Cisg
ICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmhlYXBUcmFja2luZ1N0YXJ0ZWQp
OgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5oZWFwVHJhY2tpbmdDb21w
bGV0ZWQpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5oZWFwU25hcHNo
b3RBZGRlZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLl9sb2FkTmV3
UmVjb3JkaW5nKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX2xlZ2Fj
eUF0dGVtcHRTdGFydEF1dG9DYXB0dXJpbmdGb3JGcmFtZSk6CisgICAgICAgIChXSS5UaW1lbGlu
ZU1hbmFnZXIucHJvdG90eXBlLl9wcm92aXNpb25hbExvYWRTdGFydGVkKToKKyAgICAgICAgKFdJ
LlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX21haW5SZXNvdXJjZURpZENoYW5nZSk6CisgICAg
ICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLl9yZXNvdXJjZVdhc0FkZGVkKToKKyAg
ICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX2dhcmJhZ2VDb2xsZWN0ZWQpOgor
ICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5fbWVtb3J5UHJlc3N1cmUpOgor
ICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5zY3JpcHRQcm9maWxlclRyYWNr
aW5nVXBkYXRlZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLnNjcmlw
dFByb2ZpbGVyVHJhY2tpbmdDb21wbGV0ZWQpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2Vy
LnByb3RvdHlwZS5fdXBkYXRlQXV0b0NhcHR1cmVJbnN0cnVtZW50cyk6CisgICAgICAgIChXSS5U
aW1lbGluZU1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVET01Ob2RlRGlkRmlyZUV2ZW50KToKKyAg
ICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZURPTU5vZGVQb3dlckVm
ZmljaWVudFBsYXliYWNrU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01v
ZGVscy9JbnN0cnVtZW50LmpzOgorICAgICAgICAoV0kuSW5zdHJ1bWVudC5zdGFydExlZ2FjeVRp
bWVsaW5lQWdlbnQpOgorICAgICAgICAoV0kuSW5zdHJ1bWVudC5zdG9wTGVnYWN5VGltZWxpbmVB
Z2VudCk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0hlYXBNYW5hZ2Vy
LmpzOgorICAgICAgICAoV0kuSGVhcE1hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKFdJLkhlYXBN
YW5hZ2VyLnByb3RvdHlwZS5nZXQgZG9tYWlucyk6IEFkZGVkLgorICAgICAgICAoV0kuSGVhcE1h
bmFnZXIucHJvdG90eXBlLmFjdGl2YXRlRXh0cmFEb21haW4pOiBBZGRlZC4KKyAgICAgICAgKFdJ
LkhlYXBNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplVGFyZ2V0KToKKyAgICAgICAgKFdJLkhl
YXBNYW5hZ2VyLnByb3RvdHlwZS5lbmFibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkhlYXBNYW5h
Z2VyLnByb3RvdHlwZS5kaXNhYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5IZWFwTWFuYWdlci5w
cm90b3R5cGUuc25hcHNob3QpOiBBZGRlZC4KKyAgICAgICAgKFdJLkhlYXBNYW5hZ2VyLnByb3Rv
dHlwZS5nZXRQcmV2aWV3KTogQWRkZWQuCisgICAgICAgIChXSS5IZWFwTWFuYWdlci5wcm90b3R5
cGUuZ2V0UmVtb3RlT2JqZWN0KTogQWRkZWQuCisgICAgICAgIChXSS5IZWFwTWFuYWdlci5wcm90
b3R5cGUuZ2FyYmFnZUNvbGxlY3RlZCk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL01lbW9yeU1hbmFnZXIuanM6CisgICAgICAgIChXSS5NZW1vcnlNYW5hZ2VyKTogQWRk
ZWQuCisgICAgICAgIChXSS5NZW1vcnlNYW5hZ2VyLnByb3RvdHlwZS5nZXQgZG9tYWlucyk6IEFk
ZGVkLgorICAgICAgICAoV0kuTWVtb3J5TWFuYWdlci5wcm90b3R5cGUuYWN0aXZhdGVFeHRyYURv
bWFpbik6IEFkZGVkLgorICAgICAgICAoV0kuTWVtb3J5TWFuYWdlci5wcm90b3R5cGUuaW5pdGlh
bGl6ZVRhcmdldCk6CisgICAgICAgIChXSS5NZW1vcnlNYW5hZ2VyLnByb3RvdHlwZS5lbmFibGUp
OiBBZGRlZC4KKyAgICAgICAgKFdJLk1lbW9yeU1hbmFnZXIucHJvdG90eXBlLmRpc2FibGUpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLk1lbW9yeU1hbmFnZXIucHJvdG90eXBlLm1lbW9yeVByZXNzdXJl
KToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmll
dy5qczoKKyAgICAgICAgKFdJLlRpbWVsaW5lVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV0ku
VGltZWxpbmVUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2VkKToKKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTW9kZWxzL0hlYXBBbGxvY2F0aW9uc0luc3RydW1lbnQuanM6CisgICAgICAg
IChXSS5IZWFwQWxsb2NhdGlvbnNJbnN0cnVtZW50KToKKyAgICAgICAgKFdJLkhlYXBBbGxvY2F0
aW9uc0luc3RydW1lbnQucHJvdG90eXBlLl90YWtlSGVhcFNuYXBzaG90KToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0hlYXBBbGxvY2F0aW9uc1RpbWVsaW5lVmlldy5qczoKKyAgICAg
ICAgKFdJLkhlYXBBbGxvY2F0aW9uc1RpbWVsaW5lVmlldy5wcm90b3R5cGUuX3Rha2VIZWFwU25h
cHNob3RDbGlja2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0hlYXBTbmFwc2hv
dEluc3RhbmNlRGF0YUdyaWROb2RlLmpzOgorICAgICAgICAoV0kuSGVhcFNuYXBzaG90SW5zdGFu
Y2VEYXRhR3JpZE5vZGUubG9nSGVhcFNuYXBzaG90Tm9kZSk6CisgICAgICAgIChXSS5IZWFwU25h
cHNob3RJbnN0YW5jZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3BvcHVsYXRlUHJldmlldyk6Cisg
ICAgICAgIChXSS5IZWFwU25hcHNob3RJbnN0YW5jZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX21v
dXNlb3ZlckhhbmRsZXIuYXBwZW5kUGF0aFJvdyk6CisgICAgICAgIEdvIHRocm91Z2ggdGhlIGBI
ZWFwTWFuYWdlcmAgZm9yIGBIZWFwQWdlbnRgIGNvbW1hbmRzIHNvIGl0IGNhbiBiZXR0ZXIgbWFu
YWdlIHN0YXRlLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanM6CisgICAg
ICAgIChXSS5jb250ZW50TG9hZGVkKToKKwogMjAxOS0wOC0wMiAgRGV2aW4gUm91c3NvICA8ZHJv
dXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ29uc29sZTogYWxsIG5h
dmlnYXRpb24gaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIHRoZSBzcGxpdCBjb25zb2xlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JI
ZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCA5MDhiYzBlYzBkYzg1YzNlYzUwNTkxMzk2YjE2Mzcx
NzJiZjk2MWVlLi5iNTM1ZmY2MTkyYWFjZWZjNzliNGY2Y2Q5M2RmMTIwMWEzNzE0OGFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JI
ZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTU0LDI5ICs1NCwzMSBAQCB2b2lkIEluc3BlY3Rv
ckhlYXBBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwg
QmFja2VuZERpcwogCiB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICAvLyBTdG9wIHRyYWNraW5nIHdp
dGhvdXQgdGFraW5nIGEgc25hcHNob3QuCi0gICAgbV90cmFja2luZyA9IGZhbHNlOwotCiAgICAg
RXJyb3JTdHJpbmcgaWdub3JlZDsKICAgICBkaXNhYmxlKGlnbm9yZWQpOwogfQogCi12b2lkIElu
c3BlY3RvckhlYXBBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJikKK3ZvaWQgSW5zcGVjdG9ySGVh
cEFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIGlmIChtX2Vu
YWJsZWQpCisgICAgaWYgKG1fZW5hYmxlZCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJIZWFw
QWdlbnQgYWxyZWFkeSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAg
bV9lbmFibGVkID0gdHJ1ZTsKIAogICAgIG1fZW52aXJvbm1lbnQudm0oKS5oZWFwLmFkZE9ic2Vy
dmVyKHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6ZGlzYWJsZShFcnJvclN0
cmluZyYpCit2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2VuYWJsZWQpCisgICAgaWYgKCFtX2VuYWJsZWQpIHsK
KyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSGVhcEFnZW50IGFscmVhZHkgZGlzYWJsZWQiX3M7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKKyAgICBtX3Ry
YWNraW5nID0gZmFsc2U7CiAKICAgICBtX2Vudmlyb25tZW50LnZtKCkuaGVhcC5yZW1vdmVPYnNl
cnZlcih0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9UaW1lbGluZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9UaW1lbGluZS5qc29uCmluZGV4IDk4ODAwMzJlYzgxNGM2NTk4ZmI2OWZmZDNk
NDhkMjU5MDAxOTk3MTIuLjhjNzE2ODI4ZDY5YmI4MGI4OWU0MGZhZjlhNzA2ODgyM2VlMGZhZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGlt
ZWxpbmUuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29s
L1RpbWVsaW5lLmpzb24KQEAgLTU2LDYgKzU2LDE0IEBACiAgICAgICAgIH0KICAgICBdLAogICAg
ICJjb21tYW5kcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZW5hYmxlIiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbmFibGVzIFRpbWVsaW5lIGRvbWFpbiBldmVu
dHMuIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJkaXNhYmxl
IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyBUaW1lbGluZSBkb21haW4g
ZXZlbnRzLiIKKyAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAic3Rh
cnQiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN0YXJ0cyBjYXB0dXJpbmcgaW5zdHJ1
bWVudGF0aW9uIGV2ZW50cy4iLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFeGVjU3RhdGVJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXhlY1N0YXRlSW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNTUzZGMzZGFjOTUyODQ4NjRm
ODA2M2Q3M2QyZTE3NDg4ZWY5ZDhiMS4uMWY5NTJkMWIzMjI5M2MxNjI1YjE4MjljYzI2MWMwNzE4
YWE0NGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3Rh
dGVJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4
ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGUsIFR5cGUganNUeXBlLCBjbGFzcyBEYXRhVHlw
ZT4KIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSlNFeGVjU3RhdGU6Omlu
c3RydW1lbnRGdW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFR5cGUgY2FsbFR5cGUsIGNvbnN0IERhdGFUeXBlJiBjYWxsRGF0YSkKIHsKLSAgICBpZiAoIUlu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dGltZWxpbmVBZ2VudEVuYWJsZWQoY29udGV4dCkpCisg
ICAgaWYgKCFJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnRpbWVsaW5lQWdlbnRUcmFja2luZyhj
b250ZXh0KSkKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgp
OwogICAgIFN0cmluZyByZXNvdXJjZU5hbWU7CiAgICAgaW50IGxpbmVOdW1iZXIgPSAxOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcAppbmRleCBhOTA0YzAzZGI5ODkzYjRlODBhNTQ2M2JkOTRhNGVjYzk5NTMyYjRjLi4xMDc0
ZTc1ZWFmNDlhMmQ1NDJmNDc3NDMwMTYzNWU3ZWZhMDY1NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzE2
LDcgKzMxNiw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnN0YWxsVGlt
ZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lCiAgICAgaWYgKEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgZGVidWdnZXJBZ2VudC0+ZGlkU2NoZWR1bGVBc3lu
Y0NhbGwoY29udGV4dC5leGVjU3RhdGUoKSwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6QXN5bmND
YWxsVHlwZTo6RE9NVGltZXIsIHRpbWVySWQsIHNpbmdsZVNob3QpOwogCi0gICAgaWYgKEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1l
bGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEluc3RhbGxUaW1lcih0aW1l
cklkLCB0aW1lb3V0LCBzaW5nbGVTaG90LCBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
Y29udGV4dCkpOwogfQogCkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlbW92ZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW4KIHsKICAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpKQogICAgICAgICBkZWJ1
Z2dlckFnZW50LT5kaWRDYW5jZWxBc3luY0NhbGwoSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6QXN5
bmNDYWxsVHlwZTo6RE9NVGltZXIsIHRpbWVySWQpOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1l
bGluZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgp
KQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZW1vdmVUaW1lcih0aW1lcklkLCBmcmFtZUZv
clNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwogfQogCkBAIC0zNzgsNyArMzc4LDcg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoUG9zdE1lc3NhZ2VJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGkKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb25JbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFt
ZSwgaW50IHNjcmlwdExpbmUsIGludCBzY3JpcHRDb2x1bW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCiB7CiAgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgaWYgKElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgeworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQoKSkgewogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsQ2FsbEZ1bmN0
aW9uKHNjcmlwdE5hbWUsIHNjcmlwdExpbmUsIHNjcmlwdENvbHVtbiwgZnJhbWVGb3JTY3JpcHRF
eGVjdXRpb25Db250ZXh0KGNvbnRleHQpKTsKICAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGlt
ZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9CkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbkltcGwoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW8KIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVu
dCwgYm9vbCBoYXNFdmVudExpc3RlbmVycykKIHsKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0g
MDsKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CisgICAgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCk7CiAgICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYgaGFzRXZlbnRM
aXN0ZW5lcnMpIHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbERpc3BhdGNoRXZlbnQoZXZl
bnQsIGRvY3VtZW50LmZyYW1lKCkpOwogICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGlu
ZUFnZW50LT5pZCgpOwpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
CiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyYgd2luZG93KQog
ewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwotICAgIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5l
QWdlbnQoKTsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKICAgICBp
ZiAodGltZWxpbmVBZ2VudCAmJiB3aW5kb3cuaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnQudHlwZSgp
KSkgewogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCwgd2lu
ZG93LmZyYW1lKCkpOwogICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5p
ZCgpOwpAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpl
dmVudERpZFJlc2V0QWZ0ZXJEaXNwYXRjaEltcGwoSW5zdHJ1bWVudGluZ0FnZW50CiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZh
bHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyKQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwotICAgIGlmIChJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkpIHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbEV2YWx1YXRlU2Ny
aXB0KHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBmcmFtZSk7CiAgICAgICAgIHRpbWVs
aW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQpAQCAtNDc2LDcgKzQ3Niw3
IEBAIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxGaXJlVGltZXJJbXBsKEluc3RyCiAgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndp
bGxGaXJlVGltZXIob25lU2hvdCk7CiAKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CisgICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5n
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxG
aXJlVGltZXIodGltZXJJZCwgZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQp
KTsKICAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9
CkBAIC00OTMsMTQgKzQ5MywxNCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmlyZVRpbWVySW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25DbwogCiB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1lKQogewotICAgIGlm
IChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRJbnZhbGlkYXRl
TGF5b3V0KGZyYW1lKTsKIH0KIAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1lKQogewogICAgIGludCB0aW1lbGluZUFn
ZW50SWQgPSAwOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKKyAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKICAgICAgICAgdGltZWxp
bmVBZ2VudC0+d2lsbExheW91dChmcmFtZSk7CiAgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRp
bWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQpAQCAtNTE4LDI1ICs1MTgsMjUgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2kKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDb21w
b3NpdGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1l
JiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlm
IChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVB
Z2VudC0+d2lsbENvbXBvc2l0ZShmcmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDb21wb3NpdGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5l
QWdlbnQtPmRpZENvbXBvc2l0ZSgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFBhaW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQog
ICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUGFpbnQocmVuZGVyZXIuZnJhbWUoKSk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29u
c3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAg
ICAgdGltZWxpbmVBZ2VudC0+ZGlkUGFpbnQocmVuZGVyZXIsIHJlY3QpOwogCiAgICAgaWYgKElu
c3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JQYWdlQWdlbnQoKSkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUGFpbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
ZwogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBpbnQgdGltZWxpbmVBZ2Vu
dElkID0gMDsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CisgICAgaWYg
KEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CiAgICAgICAgIHRpbWVsaW5l
QWdlbnQtPndpbGxSZWNhbGN1bGF0ZVN0eWxlKGRvY3VtZW50LmZyYW1lKCkpOwogICAgICAgICB0
aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KQEAgLTU3Miw3ICs1
NzIsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHls
ZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudAogCiB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb25JbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkU2NoZWR1bGVT
dHlsZVJlY2FsY3VsYXRpb24oZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKEluc3BlY3Rvck5l
dHdvcmtBZ2VudCogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JO
ZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRTY2hlZHVsZVN0eWxlUmVj
YWxjdWxhdGlvbihkb2N1bWVudCk7CkBAIC03NTQsNyArNzU0LDcgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnQKICAgICAgICAgcGFnZUFnZW50LT5mcmFtZU5hdmlnYXRlZChmcmFtZSk7CiAKICAg
ICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgewotICAgICAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpKQorICAgICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkpCiAgICAgICAgICAgICB0aW1lbGluZUFnZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQoKTsK
ICAgICB9CiB9CkBAIC03NzksNyArNzc5LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmZyYW1lU3RhcnRlZExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3QKICAg
ICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgewogICAgICAgICBpZiAoUGFnZURlYnVnZ2VyQWdl
bnQqIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wYWdlRGVidWdnZXJB
Z2VudCgpKQogICAgICAgICAgICAgcGFnZURlYnVnZ2VyQWdlbnQtPm1haW5GcmFtZVN0YXJ0ZWRM
b2FkaW5nKCk7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpKQorICAgICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICAg
ICAgdGltZWxpbmVBZ2VudC0+bWFpbkZyYW1lU3RhcnRlZExvYWRpbmcoKTsKICAgICB9CiAKQEAg
LTg3NCw3ICs4NzQsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25z
b2xlVGltaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cgogICAgIGlmICghaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoYXV0
byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPnRpbWUoZnJhbWUsIGxhYmVs
KTsKICAgICBpZiAoYXV0byogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJD
b25zb2xlQWdlbnQoKSkKICAgICAgICAgY29uc29sZUFnZW50LT5zdGFydFRpbWluZyhleGVjLCBs
YWJlbCk7CkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnN0b3BDb25zb2xlVGltaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnUKIAogICAg
IGlmIChhdXRvKiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVB
Z2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPnN0b3BUaW1pbmcoZXhlYywgbGFiZWwpOwot
ICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0
aW1lbGluZUFnZW50LT50aW1lRW5kKGZyYW1lLCBsYWJlbCk7CiB9CiAKQEAgLTkyMCw3ICs5MjAs
NyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmdJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y29uc29sZVRpbWVTdGFtcEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgRnJhbWUmIGZyYW1lLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50
cykKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CisgICAgaWYgKElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CiAgICAgICAgIFN0cmluZyBtZXNz
YWdlOwogICAgICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdl
KTsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkVGltZVN0YW1wKGZyYW1lLCBtZXNzYWdlKTsK
QEAgLTkyOSwxMyArOTI5LDEzIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25z
b2xlVGltZVN0YW1wSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAKIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydFByb2ZpbGluZ0ltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0
cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5l
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGlt
ZWxpbmVBZ2VudC0+c3RhcnRGcm9tQ29uc29sZShleGVjLCB0aXRsZSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wUHJvZmlsaW5nSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiB0aXRsZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdl
bnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1l
bGluZUFnZW50LT5zdG9wRnJvbUNvbnNvbGUoZXhlYywgdGl0bGUpOwogfQogCkBAIC0xMTEyLDEx
ICsxMTEyLDExIEBAIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQWdlbnRF
bmFibGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dGltZWxpbmVBZ2VudEVuYWJsZWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK2Jvb2wgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp0aW1lbGluZUFnZW50VHJhY2tpbmcoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFMoZmFsc2UpOwogICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkp
Ci0gICAgICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCk7CisgICAgICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzLT50cmFja2luZ0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTExMjQsNyAr
MTEyNCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmCiB7CiAgICAgaWYgKFBhZ2VEZWJ1Z2dl
ckFnZW50KiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGFnZURlYnVn
Z2VyQWdlbnQoKSkKICAgICAgICAgcGFnZURlYnVnZ2VyQWdlbnQtPmRpZFJlcXVlc3RBbmltYXRp
b25GcmFtZShjYWxsYmFja0lkLCBkb2N1bWVudCk7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkp
CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFj
a0lkLCBkb2N1bWVudC5mcmFtZSgpKTsKIH0KIApAQCAtMTEzMiw3ICsxMTMyLDcgQEAgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJgogewogICAgIGlmIChQYWdlRGVidWdnZXJBZ2VudCogcGFnZURlYnVn
Z2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VEZWJ1Z2dlckFnZW50KCkpCiAgICAg
ICAgIHBhZ2VEZWJ1Z2dlckFnZW50LT5kaWRDYW5jZWxBbmltYXRpb25GcmFtZShjYWxsYmFja0lk
KTsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0
b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFj
a2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlk
Q2FuY2VsQW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCwgZG9jdW1lbnQuZnJhbWUoKSk7CiB9CiAK
QEAgLTExNDUsNyArMTE0NSw3IEBAIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlQW5pbWF0aW9uRnJhbWVJCiAgICAgICAgIGRv
bURlYnVnZ2VyQWdlbnQtPndpbGxGaXJlQW5pbWF0aW9uRnJhbWUoKTsKIAogICAgIGludCB0aW1l
bGluZUFnZW50SWQgPSAwOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsK
KyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKICAgICAgICAg
dGltZWxpbmVBZ2VudC0+d2lsbEZpcmVBbmltYXRpb25GcmFtZShjYWxsYmFja0lkLCBkb2N1bWVu
dC5mcmFtZSgpKTsKICAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQo
KTsKICAgICB9CkBAIC0xMTYzLDcgKzExNjMsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmlyZUFuaW1hdGlvbkZyYW1lSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZQog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEZpcmVPYnNlcnZlckNhbGxiYWNrSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBjb25zdCBTdHJpbmcmIGNhbGxiYWNrVHlwZSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkKIHsKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CisgICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxGaXJl
T2JzZXJ2ZXJDYWxsYmFjayhjYWxsYmFja1R5cGUsIGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgmY29udGV4dCkpOwogICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50
LT5pZCgpOwogICAgIH0KQEAgLTEyMDEsNyArMTIwMSw3IEBAIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFnZW50KGNvbnN0
IEluCiAgICAgaWYgKCFjb29raWUuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBjb29raWUuaW5z
dHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CisgICAgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGNvb2tpZS5pbnN0cnVtZW50aW5nQWdl
bnRzKCktPnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwogICAgIGlmICh0aW1lbGlu
ZUFnZW50ICYmIGNvb2tpZS5oYXNNYXRjaGluZ1RpbWVsaW5lQWdlbnRJZCh0aW1lbGluZUFnZW50
LT5pZCgpKSkKICAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQ7CiAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKaW5kZXggOWNhZGZiMWU4YzFmNmY5MzhiNGQwNTYwYjQzMmJmMTQ2ZjM3MTJjMS4u
MWZkNDE5ZDJlOGFhOGY0YmU2OWU5N2M3NmNmOTQwYzdjOWRkYjdiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMjk0
LDcgKzI5NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBsYXN0RnJvbnRlbmREZWxldGVk
KCk7CiAKICAgICBzdGF0aWMgYm9vbCBjb25zb2xlQWdlbnRFbmFibGVkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKLSAgICBzdGF0aWMgYm9vbCB0aW1lbGluZUFnZW50RW5hYmxlZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIGJvb2wgdGltZWxpbmVBZ2VudFRyYWNraW5n
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShQYWdlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcAppbmRleCBhMGVhZTRiMTdi
N2JjNjMyZDUwOTc2ZmIwYmZlMTQ4ZGI4Mjg4NzEwLi41ZjdlNmM4MDNlNzhmY2NmNjE2ZGQ2MDVj
N2EyZWZkM2U4NWIzNTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
dHJ1bWVudGluZ0FnZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Ry
dW1lbnRpbmdBZ2VudHMuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgSW5zdHJ1bWVudGluZ0Fn
ZW50czo6cmVzZXQoKQogICAgIG1fcGFnZVJ1bnRpbWVBZ2VudCA9IG51bGxwdHI7CiAgICAgbV9p
bnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50ID0gbnVsbHB0cjsKICAgICBtX2luc3BlY3RvclRp
bWVsaW5lQWdlbnQgPSBudWxscHRyOwotICAgIG1fcGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5l
QWdlbnQgPSBudWxscHRyOworICAgIG1fdHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50ID0g
bnVsbHB0cjsKICAgICBtX2luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA9IG51bGxwdHI7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX1VTQUdFKQogICAgIG1faW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudCA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2Vu
dHMuaAppbmRleCA5YTljZTZjZTJjOWY3MThjZDYxNzJjMDRjYzllNmI4OTcyZmM0MzM1Li44NTk3
YjFlMDZkZWRjZTFhYzk0NzZmNjEyZGI1ZmI0NTkzYmFlNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKQEAgLTEwOSw4ICsxMDksOCBAQCBw
dWJsaWM6CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogaW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yVGltZWxpbmVBZ2VudDsgfQogICAgIHZvaWQg
c2V0SW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBhZ2VudCkg
eyBtX2luc3BlY3RvclRpbWVsaW5lQWdlbnQgPSBhZ2VudDsgfQogCi0gICAgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogcGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdCB7IHJl
dHVybiBtX3BlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50OyB9Ci0gICAgdm9pZCBzZXRQ
ZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBh
Z2VudCkgeyBtX3BlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50ID0gYWdlbnQ7IH0KKyAg
ICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSBjb25zdCB7IHJldHVybiBtX3RyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudDsgfQorICAg
IHZvaWQgc2V0VHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIGFnZW50KSB7IG1fdHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50ID0gYWdlbnQ7
IH0KIAogICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogaW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ7IH0KICAgICB2
b2lkIHNldEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQq
IGFnZW50KSB7IG1faW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50ID0gYWdlbnQ7IH0KQEAgLTE2Myw3
ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIFBhZ2VSdW50aW1lQWdlbnQqIG1fcGFnZVJ1bnRpbWVB
Z2VudCB7IG51bGxwdHIgfTsKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVy
QWdlbnQqIG1faW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudCB7IG51bGxwdHIgfTsKICAgICBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiBtX2luc3BlY3RvclRpbWVsaW5lQWdlbnQgeyBudWxscHRy
IH07Ci0gICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogbV9wZXJzaXN0ZW50SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCB7IG51bGxwdHIgfTsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBtX3Ry
YWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCB7IG51bGxwdHIgfTsKICAgICBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQqIG1faW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50IHsgbnVsbHB0ciB9Owog
I2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKICAgICBJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50
KiBtX2luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
CmluZGV4IDIyZDQ3ZjU3ZjQ1ZTIwOWI3MzUyZGZhMGQ1M2MyMmYwMjA5OWE1OGUuLjI5Yzc2ZDBj
N2ZlYTkyMmMyYTNkOTk0MTRjOTg2ZWE4ZDI4ZDc3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00
NywyNiArNDcsMzYgQEAgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50
KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAKIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNw
YXRjaGVyKikKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yTWVtb3J5
QWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLnNldEluc3BlY3Rvck1lbW9yeUFnZW50KG51bGxwdHIpOwotCiAgICAgRXJyb3JT
dHJpbmcgaWdub3JlZDsKLSAgICBzdG9wVHJhY2tpbmcoaWdub3JlZCk7CiAgICAgZGlzYWJsZShp
Z25vcmVkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6ZW5hYmxlKEVycm9yU3Ry
aW5nJikKK3ZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcpCiB7Ci0gICAgbV9lbmFibGVkID0gdHJ1ZTsKKyAgICBpZiAobV9pbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3Rvck1lbW9yeUFnZW50KCkgPT0gdGhpcykgeworICAgICAgICBlcnJv
clN0cmluZyA9ICJNZW1vcnlBZ2VudCBhbHJlYWR5IGVuYWJsZWQiX3M7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yTWVtb3J5
QWdlbnQodGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRpc2FibGUoRXJy
b3JTdHJpbmcmKQordm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcpCiB7Ci0gICAgbV9lbmFibGVkID0gZmFsc2U7CisgICAgaWYgKG1faW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JNZW1vcnlBZ2VudCgpICE9IHRoaXMpIHsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiTWVtb3J5QWdlbnQgYWxyZWFkeSBkaXNhYmxlZCJfczsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0
b3JNZW1vcnlBZ2VudChudWxscHRyKTsKKworICAgIG1fdHJhY2tpbmcgPSBmYWxzZTsKKworICAg
IFJlc291cmNlVXNhZ2VUaHJlYWQ6OnJlbW92ZU9ic2VydmVyKHRoaXMpOwogfQogCiB2b2lkIElu
c3BlY3Rvck1lbW9yeUFnZW50OjpzdGFydFRyYWNraW5nKEVycm9yU3RyaW5nJikKQEAgLTk3LDkg
KzEwNyw2IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OnN0b3BUcmFja2luZyhFcnJvclN0
cmluZyYpCiAKIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRpZEhhbmRsZU1lbW9yeVByZXNz
dXJlKENyaXRpY2FsIGNyaXRpY2FsKQogewotICAgIGlmICghbV9lbmFibGVkKQotICAgICAgICBy
ZXR1cm47Ci0KICAgICBNZW1vcnlGcm9udGVuZERpc3BhdGNoZXI6OlNldmVyaXR5IHNldmVyaXR5
ID0gY3JpdGljYWwgPT0gQ3JpdGljYWw6OlllcyA/IE1lbW9yeUZyb250ZW5kRGlzcGF0Y2hlcjo6
U2V2ZXJpdHk6OkNyaXRpY2FsIDogTWVtb3J5RnJvbnRlbmREaXNwYXRjaGVyOjpTZXZlcml0eTo6
Tm9uQ3JpdGljYWw7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPm1lbW9yeVByZXNzdXJlKG1f
ZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lKCkuc2Vjb25kcygp
LCBzZXZlcml0eSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggZTU5MThhY2M2ZTFmYWNlZWEwNmFlNWVh
YmZlNjRkOGIxMTFhZjlkNy4uNWMxNDcxMTE1NDBlNWNmNDM1MWJiOGVkZTQwMGU3ZTg0NmVhNDY1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuaApAQCAtNjEsNyArNjEsNiBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6TWVtb3J5RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5k
RGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpNZW1vcnlCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3RyYWNraW5nIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmlu
ZGV4IDNkMjllMmNkZGQ2MmY3ZWY1Yjk3NmZhZDc3ZmUwYTlmN2UyZThhNjIuLmRlMjI0NjBhZDdi
ODlkNjM3MzViZDJmYTRjZGMwMjU2MzIzZGMzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAt
OTYsMTIgKzk2LDMwIEBAIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNl
dFBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0UGVy
c2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQobnVsbHB0cik7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKK3sKKyAg
ICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSA9PSB0
aGlzKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlRpbWVsaW5lQWdlbnQgYWxyZWFkeSBlbmFi
bGVkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLnNldEluc3BlY3RvclRpbWVsaW5lQWdlbnQodGhpcyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCit7CisgICAg
aWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgIT0gdGhp
cykgeworICAgICAgICBlcnJvclN0cmluZyA9ICJUaW1lbGluZUFnZW50IGFscmVhZHkgZGlzYWJs
ZWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuc2V0SW5zcGVjdG9yVGltZWxpbmVBZ2VudChudWxscHRyKTsKIAogICAgIEVycm9yU3RyaW5n
IHVudXNlZDsKICAgICBzdG9wKHVudXNlZCk7CkBAIC0xMTIsNyArMTMwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkRpc2Nvbm5lY3QKIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydChFcnJv
clN0cmluZyYsIGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiB7Ci0gICAgbV9lbmFibGVk
RnJvbUZyb250ZW5kID0gdHJ1ZTsKKyAgICBtX3RyYWNraW5nRnJvbUZyb250ZW5kID0gdHJ1ZTsK
IAogICAgIGludGVybmFsU3RhcnQobWF4Q2FsbFN0YWNrRGVwdGgpOwogfQpAQCAtMTIxLDcgKzEz
OSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcChFcnJvclN0cmluZyYpCiB7
CiAgICAgaW50ZXJuYWxTdG9wKCk7CiAKLSAgICBtX2VuYWJsZWRGcm9tRnJvbnRlbmQgPSBmYWxz
ZTsKKyAgICBtX3RyYWNraW5nRnJvbUZyb250ZW5kID0gZmFsc2U7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6c2V0QXV0b0NhcHR1cmVFbmFibGVkKEVycm9yU3RyaW5nJiwgYm9v
bCBlbmFibGVkKQpAQCAtMTU1LDcgKzE3Myw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6c2V0SW5zdHJ1bWVudHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OCiAK
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1h
eENhbGxTdGFja0RlcHRoKQogewotICAgIGlmIChtX2VuYWJsZWQpCisgICAgaWYgKG1fdHJhY2tp
bmcpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtYXhDYWxsU3RhY2tEZXB0aCAmJiAqbWF4
Q2FsbFN0YWNrRGVwdGggPiAwKQpAQCAtMTYzLDE3ICsxODEsMTcgQEAgdm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgp
CiAgICAgZWxzZQogICAgICAgICBtX21heENhbGxTdGFja0RlcHRoID0gNTsKIAotICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOworICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5zZXRUcmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQodGhp
cyk7CiAKICAgICBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuYWRkTGlzdGVuZXIo
dGhpcyk7CiAKLSAgICBtX2VuYWJsZWQgPSB0cnVlOworICAgIG1fdHJhY2tpbmcgPSB0cnVlOwog
CiAgICAgLy8gRklYTUU6IEFic3RyYWN0IGF3YXkgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBvbmNl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3NDggaXMgZml4ZWQu
CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBtX2ZyYW1lU3RhcnRPYnNlcnZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29w
T2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lQmVnaW4pLCBb
dGhpc10oKSB7Ci0gICAgICAgIGlmICghbV9lbmFibGVkIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0
RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgpKQorICAgICAgICBpZiAoIW1fdHJhY2tpbmcgfHwgbV9l
bnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgaWYgKCFtX3J1bkxvb3BOZXN0aW5nTGV2ZWwpCkBAIC0xODIsNyAr
MjAwLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0
IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAgICAgfSk7CiAKICAgICBtX2ZyYW1lU3RvcE9ic2Vy
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5k
ZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJh
bWVFbmQpLCBbdGhpc10oKSB7Ci0gICAgICAgIGlmICghbV9lbmFibGVkIHx8IG1fZW52aXJvbm1l
bnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgpKQorICAgICAgICBpZiAoIW1fdHJhY2tp
bmcgfHwgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgQVNTRVJUKG1fcnVuTG9vcE5lc3RpbmdMZXZlbCA+
IDApOwpAQCAtMjE0LDEwICsyMzIsMTAgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpp
bnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAKIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9wKCkKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCkK
KyAgICBpZiAoIW1fdHJhY2tpbmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KG51bGxwdHIpOworICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRUcmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQobnVsbHB0
cik7CiAKICAgICBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlTGlzdGVu
ZXIodGhpcywgdHJ1ZSk7CiAKQEAgLTIzMyw3ICsyNTEsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmludGVybmFsU3RvcCgpCiAKICAgICBjbGVhclJlY29yZFN0YWNrKCk7CiAKLSAg
ICBtX2VuYWJsZWQgPSBmYWxzZTsKKyAgICBtX3RyYWNraW5nID0gZmFsc2U7CiAgICAgbV9zdGFy
dGVkQ29tcG9zaXRlID0gZmFsc2U7CiAgICAgbV9hdXRvQ2FwdHVyZVBoYXNlID0gQXV0b0NhcHR1
cmVQaGFzZTo6Tm9uZTsKIApAQCAtMjY2LDcgKzI4NCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIW1fZW5hYmxlZCAmJiBtX3BlbmRpbmdD
b25zb2xlUHJvZmlsZVJlY29yZHMuaXNFbXB0eSgpKQorICAgIGlmICghbV90cmFja2luZyAmJiBt
X3BlbmRpbmdDb25zb2xlUHJvZmlsZVJlY29yZHMuaXNFbXB0eSgpKQogICAgICAgICBzdGFydFBy
b2dyYW1tYXRpY0NhcHR1cmUoKTsKIAogICAgIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jk
cy5hcHBlbmQoY3JlYXRlUmVjb3JkRW50cnkoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVD
b25zb2xlUHJvZmlsZURhdGEodGl0bGUpLCBUaW1lbGluZVJlY29yZFR5cGU6OkNvbnNvbGVQcm9m
aWxlLCB0cnVlLCBmcmFtZUZyb21FeGVjU3RhdGUoZXhlYykpKTsKQEAgLTI4NSw3ICszMDMsNyBA
QCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3BGcm9tQ29uc29sZShKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bAogICAgICAgICAgICAgZGlkQ29tcGxldGVSZWNvcmRF
bnRyeShyZWNvcmQpOwogICAgICAgICAgICAgbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRz
LnJlbW92ZShpKTsKIAotICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWRGcm9tRnJvbnRlbmQgJiYg
bV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGlm
ICghbV90cmFja2luZ0Zyb21Gcm9udGVuZCAmJiBtX3BlbmRpbmdDb25zb2xlUHJvZmlsZVJlY29y
ZHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHN0b3BQcm9ncmFtbWF0aWNDYXB0dXJlKCk7
CiAKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQzOSw3ICs0NTcsNyBAQCB2b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OnRpbWVFbmQoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6bWFpbkZyYW1lU3RhcnRlZExvYWRp
bmcoKQogewotICAgIGlmIChtX2VuYWJsZWQpCisgICAgaWYgKG1fdHJhY2tpbmcpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghbV9hdXRvQ2FwdHVyZUVuYWJsZWQpCkBAIC00NzMsNyArNDkx
LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjptYWluRnJhbWVOYXZpZ2F0ZWQoKQog
CiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0UHJvZ3JhbW1hdGljQ2FwdHVyZSgp
CiB7Ci0gICAgQVNTRVJUKCFtX2VuYWJsZWQpOworICAgIEFTU0VSVCghbV90cmFja2luZyk7CiAK
ICAgICAvLyBEaXNhYmxlIGJyZWFrcG9pbnRzIGR1cmluZyBwcm9ncmFtbWF0aWMgY2FwdHVyZS4K
ICAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1faW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpIHsKQEAgLTQ5Miw4ICs1MTAs
OCBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0UHJvZ3JhbW1hdGljQ2FwdHVy
ZSgpCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcFByb2dyYW1tYXRpY0NhcHR1
cmUoKQogewotICAgIEFTU0VSVChtX2VuYWJsZWQpOwotICAgIEFTU0VSVCghbV9lbmFibGVkRnJv
bUZyb250ZW5kKTsKKyAgICBBU1NFUlQobV90cmFja2luZyk7CisgICAgQVNTRVJUKCFtX3RyYWNr
aW5nRnJvbUZyb250ZW5kKTsKIAogICAgIHRvZ2dsZUluc3RydW1lbnRzKEluc3RydW1lbnRTdGF0
ZTo6U3RvcCk7CiAgICAgdG9nZ2xlVGltZWxpbmVJbnN0cnVtZW50KEluc3RydW1lbnRTdGF0ZTo6
U3RvcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IGYyMmNlYmJlMjVjOGE5YTVlNDRhNDlhOTRiMWE0
NmMzNTNiODM5MGIuLmY3OWJlOGIzMmQ1YWJmNDRhMjMxNTVlOWQ2MTMzM2ZlNWNjNzJkZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5oCkBAIC05NCw2ICs5NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIGZpbmFsOwogICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBmaW5hbDsKIAorICAg
IC8vIFRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgdm9pZCBlbmFibGUoRXJy
b3JTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBmaW5hbDsK
ICAgICB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0
aCA9IG51bGxwdHIpIGZpbmFsOwogICAgIHZvaWQgc3RvcChFcnJvclN0cmluZyYpIGZpbmFsOwog
ICAgIHZvaWQgc2V0QXV0b0NhcHR1cmVFbmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCkgZmluYWw7
CkBAIC0yMTQsOCArMjE3LDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV9pZCB7IDEgfTsKICAgICBp
bnQgbV9tYXhDYWxsU3RhY2tEZXB0aCB7IDUgfTsKIAotICAgIGJvb2wgbV9lbmFibGVkIHsgZmFs
c2UgfTsKLSAgICBib29sIG1fZW5hYmxlZEZyb21Gcm9udGVuZCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX3RyYWNraW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdHJhY2tpbmdGcm9tRnJvbnRlbmQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9wcm9ncmFtbWF0aWNDYXB0dXJlUmVzdG9yZUJyZWFrcG9p
bnRBY3RpdmVWYWx1ZSB7IGZhbHNlIH07CiAKICAgICBib29sIG1fYXV0b0NhcHR1cmVFbmFibGVk
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0hlYXBNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSGVhcE1hbmFnZXIuanMKaW5kZXggMzYxZTA0YjhmNDJj
NmYyOGNiZjU5OTQxMWQ2MjNiNjY2ZjIyZjVhMS4uZjU0MDI1Njk3MGFjMDAzMDFmYjY5OWVkYjU3
N2UyYzUwZjBkZDEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvSGVhcE1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSGVhcE1hbmFnZXIuanMKQEAgLTIzLDIxICsy
MywxMDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisvLyBG
SVhNRTogSGVhcE1hbmFnZXIgbGFja3MgYWR2YW5jZWQgbXVsdGktdGFyZ2V0IHN1cHBvcnQuIChJ
bnN0cnVtZW50cy9Qcm9maWxlcnMgcGVyLXRhcmdldCkKKwogV0kuSGVhcE1hbmFnZXIgPSBjbGFz
cyBIZWFwTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogeworICAgIGNvbnN0cnVjdG9yKCkKKyAg
ICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlOwor
ICAgIH0KKworICAgIC8vIEFnZW50CisKKyAgICBnZXQgZG9tYWlucygpIHsgcmV0dXJuIFsiSGVh
cCJdOyB9CisKKyAgICBhY3RpdmF0ZUV4dHJhRG9tYWluKGRvbWFpbikKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGRvbWFpbiA9PT0gIkhlYXAiKTsKKworICAgICAgICBmb3IgKGxldCB0
YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRhcmdldCh0
YXJnZXQpOworICAgIH0KKwogICAgIC8vIFRhcmdldAogCiAgICAgaW5pdGlhbGl6ZVRhcmdldCh0
YXJnZXQpCiAgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICBy
ZXR1cm47CisKICAgICAgICAgaWYgKHRhcmdldC5IZWFwQWdlbnQpCiAgICAgICAgICAgICB0YXJn
ZXQuSGVhcEFnZW50LmVuYWJsZSgpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwogCisgICAgZW5h
YmxlKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSB0cnVlOworCisgICAgICAgIGZvciAobGV0
IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVGFyZ2V0
KHRhcmdldCk7CisgICAgfQorCisgICAgZGlzYWJsZSgpCisgICAgeworICAgICAgICBpZiAoIXRo
aXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChsZXQgdGFy
Z2V0IG9mIFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQuSGVhcEFnZW50KQor
ICAgICAgICAgICAgICAgIHRhcmdldC5IZWFwQWdlbnQuZGlzYWJsZSgpOworICAgICAgICB9CisK
KyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlOworICAgIH0KKworICAgIHNuYXBzaG90KGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHdpbmRvdy5IZWFwQWdlbnQpOworICAgICAgICBIZWFwQWdl
bnQuc25hcHNob3QoKGVycm9yLCB0aW1lc3RhbXAsIHNuYXBzaG90U3RyaW5nRGF0YSkgPT4gewor
ICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFs
RXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IsIHRpbWVzdGFtcCwgc25h
cHNob3RTdHJpbmdEYXRhKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZ2V0UHJldmlldyhu
b2RlLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJs
ZWQpOworICAgICAgICBjb25zb2xlLmFzc2VydCh3aW5kb3cuSGVhcEFnZW50KTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQobm9kZSBpbnN0YW5jZW9mIFdJLkhlYXBTbmFwc2hvdE5vZGVQcm94eSk7
CisgICAgICAgIEhlYXBBZ2VudC5nZXRQcmV2aWV3KG5vZGUuaWQsIChlcnJvciwgc3RyaW5nLCBm
dW5jdGlvbkRldGFpbHMsIHByZXZpZXcpID0+IHsKKyAgICAgICAgICAgIGlmIChlcnJvcikKKyAg
ICAgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKGVycm9yKTsKKyAgICAgICAgICAg
IGNhbGxiYWNrKGVycm9yLCBzdHJpbmcsIGZ1bmN0aW9uRGV0YWlscywgcHJldmlldyk7CisgICAg
ICAgIH0pOworICAgIH0KKworICAgIGdldFJlbW90ZU9iamVjdChub2RlLCBvYmplY3RHcm91cCwg
Y2FsbGJhY2spCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQod2luZG93LkhlYXBBZ2VudCk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KG5vZGUgaW5zdGFuY2VvZiBXSS5IZWFwU25hcHNob3ROb2RlUHJveHkpOworICAg
ICAgICBIZWFwQWdlbnQuZ2V0UmVtb3RlT2JqZWN0KG5vZGUuaWQsIG9iamVjdEdyb3VwLCAoZXJy
b3IsIHJlc3VsdCkgPT4geworICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAg
IFdJLnJlcG9ydEludGVybmFsRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY2FsbGJhY2soZXJy
b3IsIHJlc3VsdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIC8vIEhlYXBPYnNlcnZlcgor
CiAgICAgZ2FyYmFnZUNvbGxlY3RlZCh0YXJnZXQsIHBheWxvYWQpCiAgICAgewotICAgICAgICAv
LyBDYWxsZWQgZnJvbSBXSS5IZWFwT2JzZXJ2ZXIuCisgICAgICAgIGlmICghdGhpcy5fZW5hYmxl
ZCkKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzE2NzMyMz4gV2ViIEluc3BlY3RvcjogRW5hYmxlIE1lbW9yeSBwcm9maWxpbmcg
aW4gV29ya2VycwogICAgICAgICBpZiAodGFyZ2V0ICE9PSBXSS5tYWluVGFyZ2V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTWVt
b3J5TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL01lbW9yeU1hbmFnZXIuanMKaW5kZXggNzZlNjdhNmRlNjdmNTBkNjkwMWRlOTlhMGQ3
Y2M2MDhhNGQ4ZjY0ZS4uYTg0ODUwZTc2YzczYmQxMjlhYTIyNjY1MTQ5N2UwZjhlODE3NzRiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvTWVtb3J5TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9NZW1vcnlNYW5hZ2VyLmpzCkBAIC0yNSwxOSArMjUsNjggQEAKIAog
V0kuTWVtb3J5TWFuYWdlciA9IGNsYXNzIE1lbW9yeU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
IHsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAg
IHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBBZ2VudAorCisgICAgZ2V0
IGRvbWFpbnMoKSB7IHJldHVybiBbIk1lbW9yeSJdOyB9CisKKyAgICBhY3RpdmF0ZUV4dHJhRG9t
YWluKGRvbWFpbikKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbWFpbiA9PT0gIk1l
bW9yeSIpOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAg
ICAgICAgdGhpcy5pbml0aWFsaXplVGFyZ2V0KHRhcmdldCk7CisgICAgfQorCiAgICAgLy8gVGFy
Z2V0CiAKICAgICBpbml0aWFsaXplVGFyZ2V0KHRhcmdldCkKICAgICB7CisgICAgICAgIGlmICgh
dGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAodGFyZ2V0
Lk1lbW9yeUFnZW50KQogICAgICAgICAgICAgdGFyZ2V0Lk1lbW9yeUFnZW50LmVuYWJsZSgpOwog
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCisgICAgZW5hYmxlKCkKKyAgICB7CisgICAgICAgIGlm
ICh0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2Vu
YWJsZWQgPSB0cnVlOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQor
ICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVGFyZ2V0KHRhcmdldCk7CisgICAgfQorCisgICAg
ZGlzYWJsZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXQuTWVtb3J5QWdlbnQpCisgICAgICAgICAgICAgICAgdGFyZ2V0
Lk1lbW9yeUFnZW50LmRpc2FibGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2VuYWJs
ZWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBNZW1vcnlPYnNlcnZlcgorCiAgICAgbWVtb3J5
UHJlc3N1cmUodGltZXN0YW1wLCBwcm90b2NvbFNldmVyaXR5KQogICAgIHsKLSAgICAgICAgLy8g
Q2FsbGVkIGZyb20gV0kuTWVtb3J5T2JzZXJ2ZXIuCisgICAgICAgIGlmICghdGhpcy5fZW5hYmxl
ZCkKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBsZXQgbWVtb3J5UHJlc3N1cmVFdmVu
dCA9IFdJLk1lbW9yeVByZXNzdXJlRXZlbnQuZnJvbVBheWxvYWQodGltZXN0YW1wLCBwcm90b2Nv
bFNldmVyaXR5KTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuTWVt
b3J5TWFuYWdlci5FdmVudC5NZW1vcnlQcmVzc3VyZSwge21lbW9yeVByZXNzdXJlRXZlbnR9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL1RpbWVsaW5lTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwppbmRleCBiMTYxYTY1OTY1YzU5ODVj
OTU5OWQ1Zjk0NjA3ZmM2YjA0MTdjYTBjLi45Yzc4YmY3ZTc4Nzk2MmRmYjhkY2JlMjM4OTA5NDk0
ZGY3NzBhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCkBAIC0zMSw2
ICszMSw4IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAorICAgICAgICB0aGlzLl9l
bmFibGVkID0gZmFsc2U7CisKICAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5G
cmFtZS5FdmVudC5Qcm92aXNpb25hbExvYWRTdGFydGVkLCB0aGlzLl9wcm92aXNpb25hbExvYWRT
dGFydGVkLCB0aGlzKTsKICAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFt
ZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5n
ZSwgdGhpcyk7CiAKQEAgLTYxLDExICs2MywzMCBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFz
cyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5yZXNldCgp
OwogICAgIH0KIAorICAgIC8vIEFnZW50CisKKyAgICBnZXQgZG9tYWlucygpIHsgcmV0dXJuIFsi
VGltZWxpbmUiXTsgfQorCisgICAgYWN0aXZhdGVFeHRyYURvbWFpbihkb21haW4pCisgICAgewor
ICAgICAgICBjb25zb2xlLmFzc2VydChkb21haW4gPT09ICJUaW1lbGluZSIpOworCisgICAgICAg
IGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5pbml0aWFs
aXplVGFyZ2V0KHRhcmdldCk7CisgICAgfQorCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0aWFs
aXplVGFyZ2V0KHRhcmdldCkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAodGFyZ2V0LlRpbWVsaW5lQWdlbnQpIHsK
KyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4xKTogVGltZWxpbmUuZW5hYmxl
IGRpZCBub3QgZXhpc3QuCisgICAgICAgICAgICBpZiAodGFyZ2V0LlRpbWVsaW5lQWdlbnQuZW5h
YmxlKQorICAgICAgICAgICAgICAgIHRhcmdldC5UaW1lbGluZUFnZW50LmVuYWJsZSgpOworCiAg
ICAgICAgICAgICB0aGlzLl91cGRhdGVBdXRvQ2FwdHVyZUluc3RydW1lbnRzKFt0YXJnZXRdKTsK
IAogICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDkpOiBUaW1lbGluZS5zZXRBdXRv
Q2FwdHVyZUVuYWJsZWQgZGlkIG5vdCBleGlzdC4KQEAgLTE1NCw3ICsxNzUsNyBAQCBXSS5UaW1l
bGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAog
ICAgIHJlc2V0KCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmlzQ2FwdHVyaW5nKCkpCisgICAg
ICAgIGlmICh0aGlzLl9jYXB0dXJpbmdTdGF0ZSA9PT0gVGltZWxpbmVNYW5hZ2VyLkNhcHR1cmlu
Z1N0YXRlLlN0YXJ0aW5nIHx8IHRoaXMuX2NhcHR1cmluZ1N0YXRlID09PSBUaW1lbGluZU1hbmFn
ZXIuQ2FwdHVyaW5nU3RhdGUuQWN0aXZlKQogICAgICAgICAgICAgdGhpcy5zdG9wQ2FwdHVyaW5n
KCk7CiAKICAgICAgICAgdGhpcy5fcmVjb3JkaW5ncyA9IFtdOwpAQCAtMTgzLDYgKzIwNCw4IEBA
IFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogCiAgICAgc2V0IGF1dG9DYXB0dXJlT25QYWdlTG9hZChhdXRvQ2FwdHVyZSkKICAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAgIGF1dG9D
YXB0dXJlID0gISFhdXRvQ2FwdHVyZTsKIAogICAgICAgICBpZiAodGhpcy5fYXV0b0NhcHR1cmVP
blBhZ2VMb2FkID09PSBhdXRvQ2FwdHVyZSkKQEAgLTIzNyw4ICsyNjAsMzkgQEAgV0kuVGltZWxp
bmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICBlbmFibGUoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2Vu
YWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IHRy
dWU7CisKKyAgICAgICAgdGhpcy5yZXNldCgpOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBv
ZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVGFyZ2V0KHRhcmdldCk7
CisgICAgfQorCisgICAgZGlzYWJsZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJs
ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5yZXNldCgpOworCisgICAg
ICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKSB7CisgICAgICAgICAgICAvLyBDT01Q
QVRJQklMSVRZIChpT1MgMTMuMSk6IFRpbWVsaW5lLmRpc2FibGUgZGlkIG5vdCBleGlzdC4KKyAg
ICAgICAgICAgIGlmICh0YXJnZXQuVGltZWxpbmVBZ2VudCAmJiB0YXJnZXQuVGltZWxpbmVBZ2Vu
dC5kaXNhYmxlKQorICAgICAgICAgICAgICAgIHRhcmdldC5UaW1lbGluZUFnZW50LmRpc2FibGUo
KTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsKKyAgICB9CisK
ICAgICBzdGFydENhcHR1cmluZyhzaG91bGRDcmVhdGVSZWNvcmRpbmcpCiAgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKwogICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl9jYXB0dXJpbmdTdGF0ZSA9PT0gVGltZWxpbmVNYW5hZ2VyLkNhcHR1cmluZ1N0YXRl
LlN0b3BwaW5nIHx8IHRoaXMuX2NhcHR1cmluZ1N0YXRlID09PSBUaW1lbGluZU1hbmFnZXIuQ2Fw
dHVyaW5nU3RhdGUuSW5hY3RpdmUsICJUaW1lbGluZU1hbmFnZXIgaXMgYWxyZWFkeSBjYXB0dXJp
bmcuIik7CiAgICAgICAgIGlmICh0aGlzLl9jYXB0dXJpbmdTdGF0ZSAhPT0gVGltZWxpbmVNYW5h
Z2VyLkNhcHR1cmluZ1N0YXRlLlN0b3BwaW5nICYmIHRoaXMuX2NhcHR1cmluZ1N0YXRlICE9PSBU
aW1lbGluZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuSW5hY3RpdmUpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0yNTQsNiArMzA4LDggQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxp
bmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBzdG9wQ2FwdHVyaW5nKCkKICAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX2NhcHR1cmluZ1N0YXRlID09PSBUaW1lbGluZU1hbmFnZXIuQ2FwdHVy
aW5nU3RhdGUuU3RhcnRpbmcgfHwgdGhpcy5fY2FwdHVyaW5nU3RhdGUgPT09IFRpbWVsaW5lTWFu
YWdlci5DYXB0dXJpbmdTdGF0ZS5BY3RpdmUsICJUaW1lbGluZU1hbmFnZXIgaXMgbm90IGNhcHR1
cmluZy4iKTsKICAgICAgICAgaWYgKHRoaXMuX2NhcHR1cmluZ1N0YXRlICE9PSBUaW1lbGluZU1h
bmFnZXIuQ2FwdHVyaW5nU3RhdGUuU3RhcnRpbmcgJiYgdGhpcy5fY2FwdHVyaW5nU3RhdGUgIT09
IFRpbWVsaW5lTWFuYWdlci5DYXB0dXJpbmdTdGF0ZS5BY3RpdmUpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0yOTUsNyArMzUxLDcgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxp
bmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LlJlY29yZGluZ0NyZWF0ZWQsIHty
ZWNvcmRpbmc6IG5ld1JlY29yZGluZ30pOwogCi0gICAgICAgIGlmICh0aGlzLmlzQ2FwdHVyaW5n
KCkpCisgICAgICAgIGlmICh0aGlzLl9jYXB0dXJpbmdTdGF0ZSA9PT0gVGltZWxpbmVNYW5hZ2Vy
LkNhcHR1cmluZ1N0YXRlLlN0YXJ0aW5nIHx8IHRoaXMuX2NhcHR1cmluZ1N0YXRlID09PSBUaW1l
bGluZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuQWN0aXZlKQogICAgICAgICAgICAgdGhpcy5zdG9w
Q2FwdHVyaW5nKCk7CiAKICAgICAgICAgbGV0IG9sZFJlY29yZGluZyA9IHRoaXMuX2FjdGl2ZVJl
Y29yZGluZzsKQEAgLTMyMywxMiArMzc5LDE4IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNz
IFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICByZXR1cm4gdGhpcy5f
c2NyaXB0UHJvZmlsZXJSZWNvcmRzICE9PSBudWxsOwogICAgIH0KIAotICAgIC8vIFByb3RlY3Rl
ZAorICAgIGhlYXBTbmFwc2hvdEFkZGVkKHRpbWVzdGFtcCwgc25hcHNob3QpCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dGhpcy5fYWRkUmVjb3JkKG5ldyBXSS5IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVJlY29yZCh0aW1l
c3RhbXAsIHNuYXBzaG90KSk7CisgICAgfQorCisgICAgLy8gVGltZWxpbmVPYnNlcnZlcgogCiAg
ICAgY2FwdHVyaW5nU3RhcnRlZChzdGFydFRpbWUpCiAgICAgewotICAgICAgICAvLyBDYWxsZWQg
ZnJvbSBXSS5UaW1lbGluZU9ic2VydmVyLgotCiAgICAgICAgIC8vIFRoZSBmcm9udGVuZCBkaWRu
J3Qgc3RhcnQgY2FwdHVyaW5nLCBzbyB0aGlzIHdhcyBhIHByb2dyYW1tYXRpYyBzdGFydC4KICAg
ICAgICAgaWYgKHRoaXMuX2NhcHR1cmluZ1N0YXRlID09PSBUaW1lbGluZU1hbmFnZXIuQ2FwdHVy
aW5nU3RhdGUuSW5hY3RpdmUpIHsKICAgICAgICAgICAgIHRoaXMuX2luaXRpYXRlZEJ5QmFja2Vu
ZFN0YXJ0ID0gdHJ1ZTsKQEAgLTM3NCw4ICs0MzYsNiBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBj
bGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGNhcHR1cmluZ1N0
b3BwZWQoZW5kVGltZSkKICAgICB7Ci0gICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLlRpbWVsaW5l
T2JzZXJ2ZXIuCi0KICAgICAgICAgLy8gVGhlIGZyb250ZW5kIGRpZG4ndCBzdG9wIGNhcHR1cmlu
Zywgc28gdGhpcyB3YXMgYSBwcm9ncmFtbWF0aWMgc3RvcC4KICAgICAgICAgaWYgKHRoaXMuX2Nh
cHR1cmluZ1N0YXRlID09PSBUaW1lbGluZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuQWN0aXZlKSB7
CiAgICAgICAgICAgICB0aGlzLl9pbml0aWF0ZWRCeUJhY2tlbmRTdG9wID0gdHJ1ZTsKQEAgLTQx
NywxMSArNDc3LDExIEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgYXV0b0NhcHR1cmVTdGFydGVkKCkKICAgICB7Ci0g
ICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLlRpbWVsaW5lT2JzZXJ2ZXIuCisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOwogCiAgICAgICAgIGxldCB3YWl0aW5nRm9yQ2FwdHVy
aW5nU3RhcnRlZEV2ZW50ID0gdGhpcy5fY2FwdHVyaW5nU3RhdGUgPT09IFRpbWVsaW5lTWFuYWdl
ci5DYXB0dXJpbmdTdGF0ZS5TdGFydGluZzsKIAotICAgICAgICBpZiAodGhpcy5pc0NhcHR1cmlu
ZygpKQorICAgICAgICBpZiAodGhpcy5fY2FwdHVyaW5nU3RhdGUgPT09IFRpbWVsaW5lTWFuYWdl
ci5DYXB0dXJpbmdTdGF0ZS5TdGFydGluZyB8fCB0aGlzLl9jYXB0dXJpbmdTdGF0ZSA9PT0gVGlt
ZWxpbmVNYW5hZ2VyLkNhcHR1cmluZ1N0YXRlLkFjdGl2ZSkKICAgICAgICAgICAgIHRoaXMuc3Rv
cENhcHR1cmluZygpOwogCiAgICAgICAgIHRoaXMuX2luaXRpYXRlZEJ5QmFja2VuZFN0YXJ0ID0g
dHJ1ZTsKQEAgLTQzOSw3ICs0OTksOCBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1l
bGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGV2ZW50UmVjb3JkZWQocmVjb3Jk
UGF5bG9hZCkKICAgICB7Ci0gICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLlRpbWVsaW5lT2JzZXJ2
ZXIuCisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmlzQ2FwdHVyaW5nKCkpOwogICAgICAgICBpZiAo
IXRoaXMuaXNDYXB0dXJpbmcoKSkKQEAgLTQ4Miw5ICs1NDMsMTIgQEAgV0kuVGltZWxpbmVNYW5h
Z2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICAvLyBQYWdlT2JzZXJ2ZXIKKwogICAgIHBhZ2VET01Db250ZW50TG9hZGVk
RXZlbnRGaXJlZCh0aW1lc3RhbXApCiAgICAgewotICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5Q
YWdlT2JzZXJ2ZXIuCisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9hY3RpdmVSZWNvcmRpbmcpOwog
ICAgICAgICBjb25zb2xlLmFzc2VydChpc05hTihXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUu
ZG9tQ29udGVudFJlYWR5RXZlbnRUaW1lc3RhbXApKTsKQEAgLTQ5OSw3ICs1NjMsOCBAQCBXSS5U
aW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
IAogICAgIHBhZ2VMb2FkRXZlbnRGaXJlZCh0aW1lc3RhbXApCiAgICAgewotICAgICAgICAvLyBD
YWxsZWQgZnJvbSBXSS5QYWdlT2JzZXJ2ZXIuCisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkK
KyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9hY3Rp
dmVSZWNvcmRpbmcpOwogICAgICAgICBjb25zb2xlLmFzc2VydChpc05hTihXSS5uZXR3b3JrTWFu
YWdlci5tYWluRnJhbWUubG9hZEV2ZW50VGltZXN0YW1wKSk7CkBAIC01MTQsMTYgKzU3OSwxNyBA
QCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgdGhpcy5fc3RvcEF1dG9SZWNvcmRpbmdTb29uKCk7CiAgICAgfQogCisg
ICAgLy8gQ1BVUHJvZmlsZXJPYnNlcnZlcgorCiAgICAgY3B1UHJvZmlsZXJUcmFja2luZ1N0YXJ0
ZWQodGltZXN0YW1wKQogICAgIHsKLSAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuQ1BVUHJvZmls
ZXJPYnNlcnZlci4KLQogICAgICAgICB0aGlzLmNhcHR1cmluZ1N0YXJ0ZWQodGltZXN0YW1wKTsK
ICAgICB9CiAKICAgICBjcHVQcm9maWxlclRyYWNraW5nVXBkYXRlZChldmVudCkKICAgICB7Ci0g
ICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkNQVVByb2ZpbGVyT2JzZXJ2ZXIuCisgICAgICAgIGlm
ICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLmlzQ2FwdHVyaW5nKCkpOwogICAgICAgICBpZiAoIXRoaXMuaXNDYXB0dXJp
bmcoKSkKQEAgLTUzNCwyMSArNjAwLDIwIEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRp
bWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgY3B1UHJvZmlsZXJUcmFja2lu
Z0NvbXBsZXRlZCh0aW1lc3RhbXApCiAgICAgewotICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5D
UFVQcm9maWxlck9ic2VydmVyLgotCiAgICAgICAgIHRoaXMuY2FwdHVyaW5nU3RvcHBlZCh0aW1l
c3RhbXApOwogICAgIH0KIAorICAgIC8vIE1lbW9yeU9ic2VydmVyCisKICAgICBtZW1vcnlUcmFj
a2luZ1N0YXJ0ZWQodGltZXN0YW1wKQogICAgIHsKLSAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0ku
TWVtb3J5T2JzZXJ2ZXIuCi0KICAgICAgICAgdGhpcy5jYXB0dXJpbmdTdGFydGVkKHRpbWVzdGFt
cCk7CiAgICAgfQogCiAgICAgbWVtb3J5VHJhY2tpbmdVcGRhdGVkKGV2ZW50KQogICAgIHsKLSAg
ICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuTWVtb3J5T2JzZXJ2ZXIuCisgICAgICAgIGlmICghdGhp
cy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLmlzQ2FwdHVyaW5nKCkpOwogICAgICAgICBpZiAoIXRoaXMuaXNDYXB0dXJpbmcoKSkK
QEAgLTU1OSwzNiArNjI0LDI3IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5l
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgbWVtb3J5VHJhY2tpbmdDb21wbGV0ZWQo
dGltZXN0YW1wKQogICAgIHsKLSAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuTWVtb3J5T2JzZXJ2
ZXIuCi0KICAgICAgICAgdGhpcy5jYXB0dXJpbmdTdG9wcGVkKHRpbWVzdGFtcCk7CiAgICAgfQog
CisgICAgLy8gSGVhcE9ic2VydmVyCisKICAgICBoZWFwVHJhY2tpbmdTdGFydGVkKHRpbWVzdGFt
cCwgc25hcHNob3QpCiAgICAgewotICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5IZWFwT2JzZXJ2
ZXIuCi0KICAgICAgICAgdGhpcy5jYXB0dXJpbmdTdGFydGVkKHRpbWVzdGFtcCk7CiAKLSAgICAg
ICAgdGhpcy5fYWRkUmVjb3JkKG5ldyBXSS5IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVJlY29yZCh0
aW1lc3RhbXAsIHNuYXBzaG90KSk7CisgICAgICAgIGlmICh0aGlzLl9lbmFibGVkKQorICAgICAg
ICAgICAgdGhpcy5fYWRkUmVjb3JkKG5ldyBXSS5IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVJlY29y
ZCh0aW1lc3RhbXAsIHNuYXBzaG90KSk7CiAgICAgfQogCiAgICAgaGVhcFRyYWNraW5nQ29tcGxl
dGVkKHRpbWVzdGFtcCwgc25hcHNob3QpCiAgICAgewotICAgICAgICAvLyBDYWxsZWQgZnJvbSBX
SS5IZWFwT2JzZXJ2ZXIuCi0KLSAgICAgICAgdGhpcy5fYWRkUmVjb3JkKG5ldyBXSS5IZWFwQWxs
b2NhdGlvbnNUaW1lbGluZVJlY29yZCh0aW1lc3RhbXAsIHNuYXBzaG90KSk7CisgICAgICAgIGlm
ICh0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgdGhpcy5fYWRkUmVjb3JkKG5ldyBXSS5IZWFw
QWxsb2NhdGlvbnNUaW1lbGluZVJlY29yZCh0aW1lc3RhbXAsIHNuYXBzaG90KSk7CiAKICAgICAg
ICAgdGhpcy5jYXB0dXJpbmdTdG9wcGVkKCk7CiAgICAgfQogCi0gICAgaGVhcFNuYXBzaG90QWRk
ZWQodGltZXN0YW1wLCBzbmFwc2hvdCkKLSAgICB7Ci0gICAgICAgIC8vIENhbGxlZCBmcm9tIFdJ
LkhlYXBBbGxvY2F0aW9uc0luc3RydW1lbnQuCi0KLSAgICAgICAgdGhpcy5fYWRkUmVjb3JkKG5l
dyBXSS5IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVJlY29yZCh0aW1lc3RhbXAsIHNuYXBzaG90KSk7
Ci0gICAgfQotCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX3VwZGF0ZUNhcHR1cmluZ1N0YXRlKHN0
YXRlLCBkYXRhID0ge30pCkBAIC04MjcsNyArODgzLDcgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0g
Y2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3Jl
Y29yZGluZ3MucHVzaChuZXdSZWNvcmRpbmcpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5UaW1lbGluZU1hbmFnZXIuRXZlbnQuUmVjb3JkaW5nQ3JlYXRlZCwge3Jl
Y29yZGluZzogbmV3UmVjb3JkaW5nfSk7CiAKLSAgICAgICAgaWYgKHRoaXMuaXNDYXB0dXJpbmco
KSkKKyAgICAgICAgaWYgKHRoaXMuX2NhcHR1cmluZ1N0YXRlID09PSBUaW1lbGluZU1hbmFnZXIu
Q2FwdHVyaW5nU3RhdGUuU3RhcnRpbmcgfHwgdGhpcy5fY2FwdHVyaW5nU3RhdGUgPT09IFRpbWVs
aW5lTWFuYWdlci5DYXB0dXJpbmdTdGF0ZS5BY3RpdmUpCiAgICAgICAgICAgICB0aGlzLnN0b3BD
YXB0dXJpbmcoKTsKIAogICAgICAgICB2YXIgb2xkUmVjb3JkaW5nID0gdGhpcy5fYWN0aXZlUmVj
b3JkaW5nOwpAQCAtOTE3LDcgKzk3Myw3IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRp
bWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBsZXQgb2xkTWFpblJlc291
cmNlID0gZnJhbWUubWFpblJlc291cmNlIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX2lzQ2FwdHVy
aW5nUGFnZVJlbG9hZCA9IG9sZE1haW5SZXNvdXJjZSAhPT0gbnVsbCAmJiBvbGRNYWluUmVzb3Vy
Y2UudXJsID09PSBtYWluUmVzb3VyY2UudXJsOwogCi0gICAgICAgIGlmICh0aGlzLmlzQ2FwdHVy
aW5nKCkpCisgICAgICAgIGlmICh0aGlzLl9jYXB0dXJpbmdTdGF0ZSA9PT0gVGltZWxpbmVNYW5h
Z2VyLkNhcHR1cmluZ1N0YXRlLlN0YXJ0aW5nIHx8IHRoaXMuX2NhcHR1cmluZ1N0YXRlID09PSBU
aW1lbGluZU1hbmFnZXIuQ2FwdHVyaW5nU3RhdGUuQWN0aXZlKQogICAgICAgICAgICAgdGhpcy5z
dG9wQ2FwdHVyaW5nKCk7CiAKICAgICAgICAgdGhpcy5fbWFpblJlc291cmNlRm9yQXV0b0NhcHR1
cmluZyA9IG1haW5SZXNvdXJjZTsKQEAgLTk3OSwxMSArMTAzNSwxNyBAQCBXSS5UaW1lbGluZU1h
bmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9w
cm92aXNpb25hbExvYWRTdGFydGVkKGV2ZW50KQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9l
bmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIHRoaXMuX2F0dGVtcHRBdXRv
Q2FwdHVyaW5nRm9yRnJhbWUoZXZlbnQudGFyZ2V0KTsKICAgICB9CiAKICAgICBfbWFpblJlc291
cmNlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQor
ICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIC8vIElnbm9yZSByZXNvdXJjZSBldmVudHMg
d2hlbiB0aGVyZSBpc24ndCBhIG1haW4gZnJhbWUgeWV0LiBUaG9zZSBldmVudHMgYXJlIHRyaWdn
ZXJlZCBieQogICAgICAgICAvLyBsb2FkaW5nIHRoZSBjYWNoZWQgcmVzb3VyY2VzIHdoZW4gdGhl
IGluc3BlY3RvciBvcGVucywgYW5kIHRoZXkgZG8gbm90IGhhdmUgdGltaW5nIGluZm9ybWF0aW9u
LgogICAgICAgICBpZiAoIVdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSkKQEAgLTEwMTYsNiAr
MTA3OCw5IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogCiAgICAgX3Jlc291cmNlV2FzQWRkZWQoZXZlbnQpCiAgICAgeworICAg
ICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAg
Ly8gSWdub3JlIHJlc291cmNlIGV2ZW50cyB3aGVuIHRoZXJlIGlzbid0IGEgbWFpbiBmcmFtZSB5
ZXQuIFRob3NlIGV2ZW50cyBhcmUgdHJpZ2dlcmVkIGJ5CiAgICAgICAgIC8vIGxvYWRpbmcgdGhl
IGNhY2hlZCByZXNvdXJjZXMgd2hlbiB0aGUgaW5zcGVjdG9yIG9wZW5zLCBhbmQgdGhleSBkbyBu
b3QgaGF2ZSB0aW1pbmcgaW5mb3JtYXRpb24uCiAgICAgICAgIGlmICghV0kubmV0d29ya01hbmFn
ZXIubWFpbkZyYW1lKQpAQCAtMTAyNiwxMiArMTA5MSwxOCBAQCBXSS5UaW1lbGluZU1hbmFnZXIg
PSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9nYXJiYWdl
Q29sbGVjdGVkKGV2ZW50KQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQorICAg
ICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGxldCB7Y29sbGVjdGlvbn0gPSBldmVudC5kYXRh
OwogICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdJLlNjcmlwdFRpbWVsaW5lUmVjb3JkKFdJ
LlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5HYXJiYWdlQ29sbGVjdGVkLCBjb2xsZWN0
aW9uLnN0YXJ0VGltZSwgY29sbGVjdGlvbi5lbmRUaW1lLCBudWxsLCBudWxsLCBjb2xsZWN0aW9u
KSk7CiAgICAgfQogCiAgICAgX21lbW9yeVByZXNzdXJlKGV2ZW50KQogICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIHRoaXMu
X2FjdGl2ZVJlY29yZGluZy5hZGRNZW1vcnlQcmVzc3VyZUV2ZW50KGV2ZW50LmRhdGEubWVtb3J5
UHJlc3N1cmVFdmVudCk7CiAgICAgfQogCkBAIC0xMDY4LDYgKzExMzksOSBAQCBXSS5UaW1lbGlu
ZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAg
IHNjcmlwdFByb2ZpbGVyVHJhY2tpbmdVcGRhdGVkKGV2ZW50KQogICAgIHsKKyAgICAgICAgaWYg
KCF0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGxldCB7c3Rh
cnRUaW1lLCBlbmRUaW1lLCB0eXBlfSA9IGV2ZW50OwogICAgICAgICBsZXQgc2NyaXB0UmVjb3Jk
VHlwZSA9IHRoaXMuX3NjcmlwdFByb2ZpbGVyVHlwZVRvU2NyaXB0VGltZWxpbmVSZWNvcmRUeXBl
KHR5cGUpOwogICAgICAgICBsZXQgcmVjb3JkID0gbmV3IFdJLlNjcmlwdFRpbWVsaW5lUmVjb3Jk
KHNjcmlwdFJlY29yZFR5cGUsIHN0YXJ0VGltZSwgZW5kVGltZSwgbnVsbCwgbnVsbCwgbnVsbCwg
bnVsbCk7CkBAIC0xMDg0LDY3ICsxMTU4LDY5IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNz
IFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgc2NyaXB0UHJvZmlsZXJU
cmFja2luZ0NvbXBsZXRlZCh0aW1lc3RhbXAsIHNhbXBsZXMpCiAgICAgewotICAgICAgICBjb25z
b2xlLmFzc2VydCghdGhpcy5fd2ViVGltZWxpbmVTY3JpcHRSZWNvcmRzRXhwZWN0aW5nU2NyaXB0
UHJvZmlsZXJFdmVudHMgfHwgdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzLmxlbmd0aCA+PSB0
aGlzLl93ZWJUaW1lbGluZVNjcmlwdFJlY29yZHNFeHBlY3RpbmdTY3JpcHRQcm9maWxlckV2ZW50
cy5sZW5ndGgpOworICAgICAgICBpZiAodGhpcy5fZW5hYmxlZCkgeworICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQoIXRoaXMuX3dlYlRpbWVsaW5lU2NyaXB0UmVjb3Jkc0V4cGVjdGluZ1Njcmlw
dFByb2ZpbGVyRXZlbnRzIHx8IHRoaXMuX3NjcmlwdFByb2ZpbGVyUmVjb3Jkcy5sZW5ndGggPj0g
dGhpcy5fd2ViVGltZWxpbmVTY3JpcHRSZWNvcmRzRXhwZWN0aW5nU2NyaXB0UHJvZmlsZXJFdmVu
dHMubGVuZ3RoKTsKIAotICAgICAgICBpZiAoc2FtcGxlcykgewotICAgICAgICAgICAgbGV0IHtz
dGFja1RyYWNlc30gPSBzYW1wbGVzOwotICAgICAgICAgICAgbGV0IHRvcERvd25DYWxsaW5nQ29u
dGV4dFRyZWUgPSB0aGlzLl9hY3RpdmVSZWNvcmRpbmcudG9wRG93bkNhbGxpbmdDb250ZXh0VHJl
ZTsKKyAgICAgICAgICAgIGlmIChzYW1wbGVzKSB7CisgICAgICAgICAgICAgICAgbGV0IHtzdGFj
a1RyYWNlc30gPSBzYW1wbGVzOworICAgICAgICAgICAgICAgIGxldCB0b3BEb3duQ2FsbGluZ0Nv
bnRleHRUcmVlID0gdGhpcy5fYWN0aXZlUmVjb3JkaW5nLnRvcERvd25DYWxsaW5nQ29udGV4dFRy
ZWU7CiAKLSAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBhIHBlci1zYW1wbGUgZHVyYXRpb24uCi0g
ICAgICAgICAgICBsZXQgdGltZXN0YW1wSW5kZXggPSAwOwotICAgICAgICAgICAgbGV0IHRpbWVz
dGFtcENvdW50ID0gc3RhY2tUcmFjZXMubGVuZ3RoOwotICAgICAgICAgICAgbGV0IHNhbXBsZUR1
cmF0aW9ucyA9IG5ldyBBcnJheSh0aW1lc3RhbXBDb3VudCk7Ci0gICAgICAgICAgICBsZXQgc2Ft
cGxlRHVyYXRpb25JbmRleCA9IDA7Ci0gICAgICAgICAgICBjb25zdCBkZWZhdWx0RHVyYXRpb24g
PSAxIC8gMTAwMDsgLy8gMW1zLgotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlz
Ll9zY3JpcHRQcm9maWxlclJlY29yZHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBs
ZXQgcmVjb3JkID0gdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzW2ldOworICAgICAgICAgICAg
ICAgIC8vIENhbGN1bGF0ZSBhIHBlci1zYW1wbGUgZHVyYXRpb24uCisgICAgICAgICAgICAgICAg
bGV0IHRpbWVzdGFtcEluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICBsZXQgdGltZXN0YW1wQ291
bnQgPSBzdGFja1RyYWNlcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgbGV0IHNhbXBsZUR1cmF0
aW9ucyA9IG5ldyBBcnJheSh0aW1lc3RhbXBDb3VudCk7CisgICAgICAgICAgICAgICAgbGV0IHNh
bXBsZUR1cmF0aW9uSW5kZXggPSAwOworICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHREdXJh
dGlvbiA9IDEgLyAxMDAwOyAvLyAxbXMuCisgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCB0aGlzLl9zY3JpcHRQcm9maWxlclJlY29yZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbGV0IHJlY29yZCA9IHRoaXMuX3NjcmlwdFByb2ZpbGVyUmVjb3Jkc1tpXTsK
KworICAgICAgICAgICAgICAgICAgICAvLyBVc2UgYSBkZWZhdWx0IGR1cmF0aW9uIGZvciB0aW1l
c3RhbXBzIHJlY29yZGVkIG91dHNpZGUgb2YgU2NyaXB0UHJvZmlsZXIgZXZlbnRzLgorICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAodGltZXN0YW1wSW5kZXggPCB0aW1lc3RhbXBDb3VudCAmJiBz
dGFja1RyYWNlc1t0aW1lc3RhbXBJbmRleF0udGltZXN0YW1wIDwgcmVjb3JkLnN0YXJ0VGltZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlRHVyYXRpb25zW3NhbXBsZUR1cmF0aW9u
SW5kZXgrK10gPSBkZWZhdWx0RHVyYXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
c3RhbXBJbmRleCsrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgLy8gQXZlcmFnZSB0aGUgZHVyYXRpb24gcGVyIHNhbXBsZSBhY3Jvc3MgYWxsIHNhbXBsZXMg
ZHVyaW5nIHRoZSByZWNvcmQuCisgICAgICAgICAgICAgICAgICAgIGxldCBzYW1wbGVzSW5SZWNv
cmQgPSAwOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAodGltZXN0YW1wSW5kZXggPCB0aW1l
c3RhbXBDb3VudCAmJiBzdGFja1RyYWNlc1t0aW1lc3RhbXBJbmRleF0udGltZXN0YW1wIDwgcmVj
b3JkLmVuZFRpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcEluZGV4Kys7
CisgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzSW5SZWNvcmQrKzsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoc2FtcGxlc0luUmVjb3JkKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXZlcmFnZUR1cmF0aW9uID0gKHJlY29yZC5lbmRU
aW1lIC0gcmVjb3JkLnN0YXJ0VGltZSkgLyBzYW1wbGVzSW5SZWNvcmQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzYW1wbGVEdXJhdGlvbnMuZmlsbChhdmVyYWdlRHVyYXRpb24sIHNhbXBsZUR1
cmF0aW9uSW5kZXgsIHNhbXBsZUR1cmF0aW9uSW5kZXggKyBzYW1wbGVzSW5SZWNvcmQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc2FtcGxlRHVyYXRpb25JbmRleCArPSBzYW1wbGVzSW5SZWNv
cmQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICAvLyBVc2UgYSBkZWZhdWx0IGR1cmF0aW9uIGZvciB0aW1lc3RhbXBzIHJlY29yZGVk
IG91dHNpZGUgb2YgU2NyaXB0UHJvZmlsZXIgZXZlbnRzLgotICAgICAgICAgICAgICAgIHdoaWxl
ICh0aW1lc3RhbXBJbmRleCA8IHRpbWVzdGFtcENvdW50ICYmIHN0YWNrVHJhY2VzW3RpbWVzdGFt
cEluZGV4XS50aW1lc3RhbXAgPCByZWNvcmQuc3RhcnRUaW1lKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHNhbXBsZUR1cmF0aW9uc1tzYW1wbGVEdXJhdGlvbkluZGV4KytdID0gZGVmYXVsdER1cmF0
aW9uOwotICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXBJbmRleCsrOwotICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGltZXN0YW1wSW5kZXggPCB0aW1lc3RhbXBDb3Vu
dCkKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlRHVyYXRpb25zLmZpbGwoZGVmYXVsdER1cmF0
aW9uLCBzYW1wbGVEdXJhdGlvbkluZGV4KTsKIAotICAgICAgICAgICAgICAgIC8vIEF2ZXJhZ2Ug
dGhlIGR1cmF0aW9uIHBlciBzYW1wbGUgYWNyb3NzIGFsbCBzYW1wbGVzIGR1cmluZyB0aGUgcmVj
b3JkLgotICAgICAgICAgICAgICAgIGxldCBzYW1wbGVzSW5SZWNvcmQgPSAwOwotICAgICAgICAg
ICAgICAgIHdoaWxlICh0aW1lc3RhbXBJbmRleCA8IHRpbWVzdGFtcENvdW50ICYmIHN0YWNrVHJh
Y2VzW3RpbWVzdGFtcEluZGV4XS50aW1lc3RhbXAgPCByZWNvcmQuZW5kVGltZSkgewotICAgICAg
ICAgICAgICAgICAgICB0aW1lc3RhbXBJbmRleCsrOwotICAgICAgICAgICAgICAgICAgICBzYW1w
bGVzSW5SZWNvcmQrKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHNh
bXBsZXNJblJlY29yZCkgewotICAgICAgICAgICAgICAgICAgICBsZXQgYXZlcmFnZUR1cmF0aW9u
ID0gKHJlY29yZC5lbmRUaW1lIC0gcmVjb3JkLnN0YXJ0VGltZSkgLyBzYW1wbGVzSW5SZWNvcmQ7
Ci0gICAgICAgICAgICAgICAgICAgIHNhbXBsZUR1cmF0aW9ucy5maWxsKGF2ZXJhZ2VEdXJhdGlv
biwgc2FtcGxlRHVyYXRpb25JbmRleCwgc2FtcGxlRHVyYXRpb25JbmRleCArIHNhbXBsZXNJblJl
Y29yZCk7Ci0gICAgICAgICAgICAgICAgICAgIHNhbXBsZUR1cmF0aW9uSW5kZXggKz0gc2FtcGxl
c0luUmVjb3JkOworICAgICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVJlY29yZGluZy5pbml0aWFs
aXplQ2FsbGluZ0NvbnRleHRUcmVlcyhzdGFja1RyYWNlcywgc2FtcGxlRHVyYXRpb25zKTsKKwor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHRyYW5zZm9ybWF0aW9uIHNob3VsZCBub3Qg
YmUgbmVlZGVkIGFmdGVyIGludHJvZHVjaW5nIFByb2ZpbGVWaWV3LgorICAgICAgICAgICAgICAg
IC8vIE9uY2Ugd2UgZWxpbWluYXRlIFByb2ZpbGVOb2RlVHJlZUVsZW1lbnRzIGFuZCBQcm9maWxl
Tm9kZURhdGFHcmlkTm9kZXMuCisgICAgICAgICAgICAgICAgLy8gPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE1NDk3Mz4gV2ViIEluc3BlY3RvcjogVGltZWxpbmVzIFVJIHJlZGVzaWduOiBSZW1vdmUg
VGltZWxpbmVTaWRlYmFyUGFuZWwKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IHRoaXMuX3NjcmlwdFByb2ZpbGVyUmVjb3Jkcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
ICAgICAgICBsZXQgcmVjb3JkID0gdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzW2ldOworICAg
ICAgICAgICAgICAgICAgICByZWNvcmQucHJvZmlsZVBheWxvYWQgPSB0b3BEb3duQ2FsbGluZ0Nv
bnRleHRUcmVlLnRvQ1BVUHJvZmlsZVBheWxvYWQocmVjb3JkLnN0YXJ0VGltZSwgcmVjb3JkLmVu
ZFRpbWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
Ly8gVXNlIGEgZGVmYXVsdCBkdXJhdGlvbiBmb3IgdGltZXN0YW1wcyByZWNvcmRlZCBvdXRzaWRl
IG9mIFNjcmlwdFByb2ZpbGVyIGV2ZW50cy4KLSAgICAgICAgICAgIGlmICh0aW1lc3RhbXBJbmRl
eCA8IHRpbWVzdGFtcENvdW50KQotICAgICAgICAgICAgICAgIHNhbXBsZUR1cmF0aW9ucy5maWxs
KGRlZmF1bHREdXJhdGlvbiwgc2FtcGxlRHVyYXRpb25JbmRleCk7Ci0KLSAgICAgICAgICAgIHRo
aXMuX2FjdGl2ZVJlY29yZGluZy5pbml0aWFsaXplQ2FsbGluZ0NvbnRleHRUcmVlcyhzdGFja1Ry
YWNlcywgc2FtcGxlRHVyYXRpb25zKTsKLQotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgdHJh
bnNmb3JtYXRpb24gc2hvdWxkIG5vdCBiZSBuZWVkZWQgYWZ0ZXIgaW50cm9kdWNpbmcgUHJvZmls
ZVZpZXcuCi0gICAgICAgICAgICAvLyBPbmNlIHdlIGVsaW1pbmF0ZSBQcm9maWxlTm9kZVRyZWVF
bGVtZW50cyBhbmQgUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGVzLgotICAgICAgICAgICAgLy8gPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzE1NDk3Mz4gV2ViIEluc3BlY3RvcjogVGltZWxpbmVzIFVJIHJl
ZGVzaWduOiBSZW1vdmUgVGltZWxpbmVTaWRlYmFyUGFuZWwKLSAgICAgICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgbGV0IHJlY29yZCA9IHRoaXMuX3NjcmlwdFByb2ZpbGVyUmVjb3Jkc1tp
XTsKLSAgICAgICAgICAgICAgICByZWNvcmQucHJvZmlsZVBheWxvYWQgPSB0b3BEb3duQ2FsbGlu
Z0NvbnRleHRUcmVlLnRvQ1BVUHJvZmlsZVBheWxvYWQocmVjb3JkLnN0YXJ0VGltZSwgcmVjb3Jk
LmVuZFRpbWUpOworICAgICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBTY3JpcHRQcm9maWxlciBj
cmVhdGVkIHJlY29yZHMgd2l0aCBXZWIgVGltZWxpbmUgcmVjb3Jkcy4KKyAgICAgICAgICAgIC8v
IEZpbHRlciBvdXQgdGhlIGFscmVhZHkgYWRkZWQgU2NyaXB0UHJvZmlsZXIgZXZlbnRzIHdoaWNo
IHNob3VsZCBub3QgaGF2ZSBiZWVuIHdyYXBwZWQuCisgICAgICAgICAgICBpZiAoV0kuc2hhcmVk
QXBwLmRlYnVnZ2FibGVUeXBlICE9PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KSB7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzID0gdGhpcy5fc2NyaXB0
UHJvZmlsZXJSZWNvcmRzLmZpbHRlcigoeCkgPT4geC5fX3NjcmlwdFByb2ZpbGVyVHlwZSA9PT0g
U2NyaXB0UHJvZmlsZXJBZ2VudC5FdmVudFR5cGUuT3RoZXIpOworICAgICAgICAgICAgICAgIHRo
aXMuX21lcmdlU2NyaXB0UHJvZmlsZVJlY29yZHMoKTsKICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdGhpcy5fc2NyaXB0UHJvZmlsZXJSZWNvcmRzID0gbnVsbDsKKworICAgICAgICAgICAg
bGV0IHRpbWVsaW5lID0gdGhpcy5fYWN0aXZlUmVjb3JkaW5nLnRpbWVsaW5lRm9yUmVjb3JkVHlw
ZShXSS5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdCk7CisgICAgICAgICAgICB0aW1lbGluZS5y
ZWZyZXNoKCk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIFNjcmlwdFBy
b2ZpbGVyIGNyZWF0ZWQgcmVjb3JkcyB3aXRoIFdlYiBUaW1lbGluZSByZWNvcmRzLgotICAgICAg
ICAvLyBGaWx0ZXIgb3V0IHRoZSBhbHJlYWR5IGFkZGVkIFNjcmlwdFByb2ZpbGVyIGV2ZW50cyB3
aGljaCBzaG91bGQgbm90IGhhdmUgYmVlbiB3cmFwcGVkLgotICAgICAgICBpZiAoV0kuc2hhcmVk
QXBwLmRlYnVnZ2FibGVUeXBlICE9PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KSB7Ci0g
ICAgICAgICAgICB0aGlzLl9zY3JpcHRQcm9maWxlclJlY29yZHMgPSB0aGlzLl9zY3JpcHRQcm9m
aWxlclJlY29yZHMuZmlsdGVyKCh4KSA9PiB4Ll9fc2NyaXB0UHJvZmlsZXJUeXBlID09PSBTY3Jp
cHRQcm9maWxlckFnZW50LkV2ZW50VHlwZS5PdGhlcik7Ci0gICAgICAgICAgICB0aGlzLl9tZXJn
ZVNjcmlwdFByb2ZpbGVSZWNvcmRzKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9zY3Jp
cHRQcm9maWxlclJlY29yZHMgPSBudWxsOwotCi0gICAgICAgIGxldCB0aW1lbGluZSA9IHRoaXMu
X2FjdGl2ZVJlY29yZGluZy50aW1lbGluZUZvclJlY29yZFR5cGUoV0kuVGltZWxpbmVSZWNvcmQu
VHlwZS5TY3JpcHQpOwotICAgICAgICB0aW1lbGluZS5yZWZyZXNoKCk7Ci0KICAgICAgICAgdGhp
cy5jYXB0dXJpbmdTdG9wcGVkKHRpbWVzdGFtcCk7CiAgICAgfQogCkBAIC0xMjA2LDYgKzEyODIs
OCBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKIAogICAgIF91cGRhdGVBdXRvQ2FwdHVyZUluc3RydW1lbnRzKHRhcmdldHMpCiAg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKwogICAgICAgICBs
ZXQgZW5hYmxlZFRpbWVsaW5lVHlwZXMgPSB0aGlzLmVuYWJsZWRUaW1lbGluZVR5cGVzOwogCiAg
ICAgICAgIGZvciAobGV0IHRhcmdldCBvZiB0YXJnZXRzKSB7CkBAIC0xMjQ0LDYgKzEzMjIsOSBA
QCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKIAogICAgIF9oYW5kbGVET01Ob2RlRGlkRmlyZUV2ZW50KGV2ZW50KQogICAgIHsKKyAg
ICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAg
IGxldCB7ZG9tRXZlbnR9ID0gZXZlbnQuZGF0YTsKIAogICAgICAgICB0aGlzLl9hZGRSZWNvcmQo
bmV3IFdJLk1lZGlhVGltZWxpbmVSZWNvcmQoV0kuTWVkaWFUaW1lbGluZVJlY29yZC5FdmVudFR5
cGUuRE9NRXZlbnQsIGRvbUV2ZW50LnRpbWVzdGFtcCwgewpAQCAtMTI1NCw2ICsxMzM1LDkgQEAg
V0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAKICAgICBfaGFuZGxlRE9NTm9kZVBvd2VyRWZmaWNpZW50UGxheWJhY2tTdGF0ZUNoYW5n
ZWQoZXZlbnQpCiAgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgbGV0IHt0aW1lc3RhbXAsIGlzUG93ZXJFZmZpY2llbnR9ID0g
ZXZlbnQuZGF0YTsKIAogICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdJLk1lZGlhVGltZWxp
bmVSZWNvcmQoV0kuTWVkaWFUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuUG93ZXJFZmZpY2llbnRQ
bGF5YmFja1N0YXRlQ2hhbmdlZCwgdGltZXN0YW1wLCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcEFsbG9jYXRpb25zSW5zdHJ1bWVu
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9IZWFwQWxs
b2NhdGlvbnNJbnN0cnVtZW50LmpzCmluZGV4IDA5MDkwNjU3OGJkNjQxZDAwNzFkN2ZhNTE3Njdl
ZjRkNmNjMDg0ZmYuLjhjNTkzYzAyYmI2N2M5YWNhOTIzNDg3N2M0YjViOWZlMDdlYTgxNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9IZWFw
QWxsb2NhdGlvbnNJbnN0cnVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9IZWFwQWxsb2NhdGlvbnNJbnN0cnVtZW50LmpzCkBAIC03NSw3ICs3
NSw3IEBAIFdJLkhlYXBBbGxvY2F0aW9uc0luc3RydW1lbnQgPSBjbGFzcyBIZWFwQWxsb2NhdGlv
bnNJbnN0cnVtZW50IGV4dGVuZHMgV0kuSW5zdHJ1CiAKICAgICBfdGFrZUhlYXBTbmFwc2hvdCgp
CiAgICAgewotICAgICAgICBIZWFwQWdlbnQuc25hcHNob3QoZnVuY3Rpb24oZXJyb3IsIHRpbWVz
dGFtcCwgc25hcHNob3RTdHJpbmdEYXRhKSB7CisgICAgICAgIFdJLmhlYXBNYW5hZ2VyLnNuYXBz
aG90KChlcnJvciwgdGltZXN0YW1wLCBzbmFwc2hvdFN0cmluZ0RhdGEpID0+IHsKICAgICAgICAg
ICAgIGxldCB3b3JrZXJQcm94eSA9IFdJLkhlYXBTbmFwc2hvdFdvcmtlclByb3h5LnNpbmdsZXRv
bigpOwogICAgICAgICAgICAgd29ya2VyUHJveHkuY3JlYXRlU25hcHNob3Qoc25hcHNob3RTdHJp
bmdEYXRhLCAoe29iamVjdElkLCBzbmFwc2hvdDogc2VyaWFsaXplZFNuYXBzaG90fSkgPT4gewog
ICAgICAgICAgICAgICAgIGxldCBzbmFwc2hvdCA9IFdJLkhlYXBTbmFwc2hvdFByb3h5LmRlc2Vy
aWFsaXplKG9iamVjdElkLCBzZXJpYWxpemVkU25hcHNob3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0luc3RydW1lbnQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSW5zdHJ1bWVudC5qcwppbmRl
eCA0YzEyZDM2MDFkYjhiMGYyMjYzYTIwNDcyM2NhZTgwZmIwZDAxYjc4Li41MGZjZjNhYTdmM2Yx
NDRlYTQyZGEyNTNlY2EyZjc3YmFjNGMxMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSW5zdHJ1bWVudC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSW5zdHJ1bWVudC5qcwpAQCAtNTQsNiAr
NTQsNyBAQCBXSS5JbnN0cnVtZW50ID0gY2xhc3MgSW5zdHJ1bWVudAogCiAgICAgc3RhdGljIHN0
YXJ0TGVnYWN5VGltZWxpbmVBZ2VudChpbml0aWF0ZWRCeUJhY2tlbmQpCiAgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydChXSS50aW1lbGluZU1hbmFnZXIuX2VuYWJsZWQpOwogICAgICAgICBj
b25zb2xlLmFzc2VydCh3aW5kb3cuVGltZWxpbmVBZ2VudCwgIkF0dGVtcHRlZCB0byBzdGFydCBs
ZWdhY3kgdGltZWxpbmUgYWdlbnQgd2l0aG91dCBUaW1lbGluZUFnZW50LiIpOwogCiAgICAgICAg
IGlmIChXSS5JbnN0cnVtZW50Ll9sZWdhY3lUaW1lbGluZUFnZW50U3RhcnRlZCkKQEAgLTY5LDYg
KzcwLDkgQEAgV0kuSW5zdHJ1bWVudCA9IGNsYXNzIEluc3RydW1lbnQKIAogICAgIHN0YXRpYyBz
dG9wTGVnYWN5VGltZWxpbmVBZ2VudChpbml0aWF0ZWRCeUJhY2tlbmQpCiAgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydChXSS50aW1lbGluZU1hbmFnZXIuX2VuYWJsZWQpOworICAgICAgICBj
b25zb2xlLmFzc2VydCh3aW5kb3cuVGltZWxpbmVBZ2VudCwgIkF0dGVtcHRlZCB0byBzdG9wIGxl
Z2FjeSB0aW1lbGluZSBhZ2VudCB3aXRob3V0IFRpbWVsaW5lQWdlbnQuIik7CisKICAgICAgICAg
aWYgKCFXSS5JbnN0cnVtZW50Ll9sZWdhY3lUaW1lbGluZUFnZW50U3RhcnRlZCkKICAgICAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVGVzdC9UZXN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
VGVzdC9UZXN0LmpzCmluZGV4IGRhNTRkYWY5Y2Q0OWMwMjRhN2MyMTFhZTEyYzQ5MGJjYTc5MjJk
MTMuLjY1ODJmZjc0MmRjNmRiOGM5NzRhY2NlZTA2NGU0NWI2YTY0NmY2YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKQEAgLTEzNCw5
ICsxMzQsMTIgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAvLyBUaGluZ3Mg
dGhhdCB3b3VsZCBub3JtYWxseSBnZXQgY2FsbGVkIGJ5IHRoZSBVSSwgdGhhdCB3ZSBzdGlsbCB3
YW50IHRvIGRvIGluIHRlc3RzLgogICAgIFdJLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmVuYWJs
ZSgpOwogICAgIFdJLmNhbnZhc01hbmFnZXIuZW5hYmxlKCk7Ci0gICAgV0kuZG9tU3RvcmFnZU1h
bmFnZXIuZW5hYmxlKCk7CiAgICAgV0kuZGF0YWJhc2VNYW5hZ2VyLmVuYWJsZSgpOworICAgIFdJ
LmRvbVN0b3JhZ2VNYW5hZ2VyLmVuYWJsZSgpOworICAgIFdJLmhlYXBNYW5hZ2VyLmVuYWJsZSgp
OwogICAgIFdJLmluZGV4ZWREQk1hbmFnZXIuZW5hYmxlKCk7CisgICAgV0kubWVtb3J5TWFuYWdl
ci5lbmFibGUoKTsKKyAgICBXSS50aW1lbGluZU1hbmFnZXIuZW5hYmxlKCk7CiAKICAgICAvLyBT
aWduYWwgdGhhdCB0aGUgZnJvbnRlbmQgaXMgbm93IHJlYWR5IHRvIHJlY2VpdmUgbWVzc2FnZXMu
CiAgICAgSW5zcGVjdG9yRnJvbnRlbmRBUEkubG9hZENvbXBsZXRlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGVhcEFsbG9jYXRpb25z
VGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvSGVhcEFsbG9jYXRpb25zVGltZWxpbmVWaWV3LmpzCmluZGV4IDMyMzM5NWZhNWY0ZjJjNjI3
ZmEwYTU1NzY4NjIxZDVlZWRlMTRiNTEuLjVhNTFkNDJkMzc0ZDZlMjJlNzNlMTBmZTUyOTk1NWNm
MDExYTQ0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0hlYXBBbGxvY2F0aW9uc1RpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVZpZXcu
anMKQEAgLTQwNSw3ICs0MDUsNyBAQCBXSS5IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVZpZXcgPSBj
bGFzcyBIZWFwQWxsb2NhdGlvbnNUaW1lbGluZVZpZXcgZXh0ZW5kcyBXSS5UaQogCiAgICAgX3Rh
a2VIZWFwU25hcHNob3RDbGlja2VkKCkKICAgICB7Ci0gICAgICAgIEhlYXBBZ2VudC5zbmFwc2hv
dCgoZXJyb3IsIHRpbWVzdGFtcCwgc25hcHNob3RTdHJpbmdEYXRhKSA9PiB7CisgICAgICAgIFdJ
LmhlYXBNYW5hZ2VyLnNuYXBzaG90KChlcnJvciwgdGltZXN0YW1wLCBzbmFwc2hvdFN0cmluZ0Rh
dGEpID0+IHsKICAgICAgICAgICAgIGxldCB3b3JrZXJQcm94eSA9IFdJLkhlYXBTbmFwc2hvdFdv
cmtlclByb3h5LnNpbmdsZXRvbigpOwogICAgICAgICAgICAgd29ya2VyUHJveHkuY3JlYXRlU25h
cHNob3Qoc25hcHNob3RTdHJpbmdEYXRhLCAoe29iamVjdElkLCBzbmFwc2hvdDogc2VyaWFsaXpl
ZFNuYXBzaG90fSkgPT4gewogICAgICAgICAgICAgICAgIGxldCBzbmFwc2hvdCA9IFdJLkhlYXBT
bmFwc2hvdFByb3h5LmRlc2VyaWFsaXplKG9iamVjdElkLCBzZXJpYWxpemVkU25hcHNob3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGVh
cFNuYXBzaG90SW5zdGFuY2VEYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9IZWFwU25hcHNob3RJbnN0YW5jZURhdGFHcmlkTm9kZS5qcwpp
bmRleCA1NDg0NmY1MDJiZWNmMzNiOTcxM2RjM2U0MGU2YjU1YWQxZjg5NmY3Li5mYzExYzk3ZGY2
ZTZkMDRiN2U1ZjQ1YTA0NzQzMDFjMmQ5YzJkYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IZWFwU25hcHNob3RJbnN0YW5jZURhdGFHcmlk
Tm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9I
ZWFwU25hcHNob3RJbnN0YW5jZURhdGFHcmlkTm9kZS5qcwpAQCAtODEsMTIgKzgxLDEyIEBAIFdJ
LkhlYXBTbmFwc2hvdEluc3RhbmNlRGF0YUdyaWROb2RlID0gY2xhc3MgSGVhcFNuYXBzaG90SW5z
dGFuY2VEYXRhR3JpZE5vZGUgZXh0CiAgICAgICAgICAgICBjb25zdCBzaG91bGRSZXZlYWxDb25z
b2xlID0gdHJ1ZTsKIAogICAgICAgICAgICAgaWYgKG5vZGUuY2xhc3NOYW1lID09PSAic3RyaW5n
IikgewotICAgICAgICAgICAgICAgIEhlYXBBZ2VudC5nZXRQcmV2aWV3KG5vZGUuaWQsIGZ1bmN0
aW9uKGVycm9yLCBzdHJpbmcsIGZ1bmN0aW9uRGV0YWlscywgb2JqZWN0UHJldmlld1BheWxvYWQp
IHsKKyAgICAgICAgICAgICAgICBXSS5oZWFwTWFuYWdlci5nZXRQcmV2aWV3KG5vZGUsIGZ1bmN0
aW9uKGVycm9yLCBzdHJpbmcsIGZ1bmN0aW9uRGV0YWlscywgb2JqZWN0UHJldmlld1BheWxvYWQp
IHsKICAgICAgICAgICAgICAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IGVycm9yID8gV0kuUmVt
b3RlT2JqZWN0LmZyb21QcmltaXRpdmVWYWx1ZSh1bmRlZmluZWQpIDogV0kuUmVtb3RlT2JqZWN0
LmZyb21QcmltaXRpdmVWYWx1ZShzdHJpbmcpOwogICAgICAgICAgICAgICAgICAgICBXSS5jb25z
b2xlTG9nVmlld0NvbnRyb2xsZXIuYXBwZW5kSW1tZWRpYXRlRXhlY3V0aW9uV2l0aFJlc3VsdCh0
ZXh0LCByZW1vdGVPYmplY3QsIGFkZFNwZWNpYWxVc2VyTG9nQ2xhc3MsIHNob3VsZFJldmVhbENv
bnNvbGUpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBIZWFwQWdlbnQuZ2V0UmVtb3RlT2JqZWN0KG5vZGUuaWQsIFdJLlJ1bnRpbWVN
YW5hZ2VyLkNvbnNvbGVPYmplY3RHcm91cCwgZnVuY3Rpb24oZXJyb3IsIHJlbW90ZU9iamVjdFBh
eWxvYWQpIHsKKyAgICAgICAgICAgICAgICBXSS5oZWFwTWFuYWdlci5nZXRSZW1vdGVPYmplY3Qo
bm9kZSwgV0kuUnVudGltZU1hbmFnZXIuQ29uc29sZU9iamVjdEdyb3VwLCBmdW5jdGlvbihlcnJv
ciwgcmVtb3RlT2JqZWN0UGF5bG9hZCkgewogICAgICAgICAgICAgICAgICAgICBsZXQgcmVtb3Rl
T2JqZWN0ID0gZXJyb3IgPyBXSS5SZW1vdGVPYmplY3QuZnJvbVByaW1pdGl2ZVZhbHVlKHVuZGVm
aW5lZCkgOiBXSS5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVtb3RlT2JqZWN0UGF5bG9hZCwg
V0kuYXNzdW1pbmdNYWluVGFyZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBXSS5jb25zb2xl
TG9nVmlld0NvbnRyb2xsZXIuYXBwZW5kSW1tZWRpYXRlRXhlY3V0aW9uV2l0aFJlc3VsdCh0ZXh0
LCByZW1vdGVPYmplY3QsIGFkZFNwZWNpYWxVc2VyTG9nQ2xhc3MsIHNob3VsZFJldmVhbENvbnNv
bGUpOwogICAgICAgICAgICAgICAgIH0pOwpAQCAtMjY1LDcgKzI2NSw4IEBAIFdJLkhlYXBTbmFw
c2hvdEluc3RhbmNlRGF0YUdyaWROb2RlID0gY2xhc3MgSGVhcFNuYXBzaG90SW5zdGFuY2VEYXRh
R3JpZE5vZGUgZXh0CiAKICAgICBfcG9wdWxhdGVXaW5kb3dQcmV2aWV3KGNvbnRhaW5lckVsZW1l
bnQpCiAgICAgewotICAgICAgICBIZWFwQWdlbnQuZ2V0UmVtb3RlT2JqZWN0KHRoaXMuX25vZGUu
aWQsIChlcnJvciwgcmVtb3RlT2JqZWN0UGF5bG9hZCkgPT4geworICAgICAgICBjb25zdCBvYmpl
Y3RHcm91cCA9IHVuZGVmaW5lZDsKKyAgICAgICAgV0kuaGVhcE1hbmFnZXIuZ2V0UmVtb3RlT2Jq
ZWN0KHRoaXMuX25vZGUsIG9iamVjdEdyb3VwLCAoZXJyb3IsIHJlbW90ZU9iamVjdFBheWxvYWQp
ID0+IHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgIHRoaXMuX3Bv
cHVsYXRlRXJyb3IoY29udGFpbmVyRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMjkxLDcgKzI5Miw3IEBAIFdJLkhlYXBTbmFwc2hvdEluc3RhbmNlRGF0YUdyaWROb2RlID0g
Y2xhc3MgSGVhcFNuYXBzaG90SW5zdGFuY2VEYXRhR3JpZE5vZGUgZXh0CiAKICAgICBfcG9wdWxh
dGVQcmV2aWV3KGNvbnRhaW5lckVsZW1lbnQpCiAgICAgewotICAgICAgICBIZWFwQWdlbnQuZ2V0
UHJldmlldyh0aGlzLl9ub2RlLmlkLCAoZXJyb3IsIHN0cmluZywgZnVuY3Rpb25EZXRhaWxzLCBv
YmplY3RQcmV2aWV3UGF5bG9hZCkgPT4geworICAgICAgICBXSS5oZWFwTWFuYWdlci5nZXRQcmV2
aWV3KHRoaXMuX25vZGUsIChlcnJvciwgc3RyaW5nLCBmdW5jdGlvbkRldGFpbHMsIG9iamVjdFBy
ZXZpZXdQYXlsb2FkKSA9PiB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAg
ICAgICB0aGlzLl9wb3B1bGF0ZUVycm9yKGNvbnRhaW5lckVsZW1lbnQpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTQyOCw3ICs0MjksNyBAQCBXSS5IZWFwU25hcHNob3RJbnN0YW5jZURh
dGFHcmlkTm9kZSA9IGNsYXNzIEhlYXBTbmFwc2hvdEluc3RhbmNlRGF0YUdyaWROb2RlIGV4dAog
ICAgICAgICAgICAgICAgIGxldCBnb1RvQXJyb3dQbGFjZUhvbGRlckVsZW1lbnQgPSBjb250YWlu
ZXJFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7CiAg
ICAgICAgICAgICAgICAgZ29Ub0Fycm93UGxhY2VIb2xkZXJFbGVtZW50LnN0eWxlLmRpc3BsYXkg
PSAiaW5saW5lLWJsb2NrIjsKICAgICAgICAgICAgICAgICBnb1RvQXJyb3dQbGFjZUhvbGRlckVs
ZW1lbnQuc3R5bGUud2lkdGggPSAiMTBweCI7Ci0gICAgICAgICAgICAgICAgSGVhcEFnZW50Lmdl
dFByZXZpZXcobm9kZS5pZCwgZnVuY3Rpb24oZXJyb3IsIHN0cmluZywgZnVuY3Rpb25EZXRhaWxz
LCBvYmplY3RQcmV2aWV3UGF5bG9hZCkgeworICAgICAgICAgICAgICAgIFdJLmhlYXBNYW5hZ2Vy
LmdldFByZXZpZXcobm9kZSwgZnVuY3Rpb24oZXJyb3IsIHN0cmluZywgZnVuY3Rpb25EZXRhaWxz
LCBvYmplY3RQcmV2aWV3UGF5bG9hZCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoZnVuY3Rp
b25EZXRhaWxzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jYXRpb24gPSBmdW5j
dGlvbkRldGFpbHMubG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc291cmNl
Q29kZSA9IFdJLmRlYnVnZ2VyTWFuYWdlci5zY3JpcHRGb3JJZGVudGlmaWVyKGxvY2F0aW9uLnNj
cmlwdElkLCBXSS5hc3N1bWluZ01haW5UYXJnZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVUYWJD
b250ZW50Vmlldy5qcwppbmRleCAzZDM5M2U3ZGU0MWRlMmM0NzE5NTBkZTAzODQ1MzYwYjJjYTgz
ZWYwLi5hZWZiYmE5MjdiYmVhMWY3ZjUxOWIxYWQ0NTgzZTllMzY4NWI3ODMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVRhYkNv
bnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMKQEAgLTkxLDYgKzkxLDEwIEBAIFdJLlRpbWVs
aW5lVGFiQ29udGVudFZpZXcgPSBjbGFzcyBUaW1lbGluZVRhYkNvbnRlbnRWaWV3IGV4dGVuZHMg
V0kuQ29udGVudEJyb3dzCiAKICAgICAgICAgLy8gRXhwbGljaXRseSB1cGRhdGUgdGhlIHBhdGgg
Zm9yIHRoZSBuYXZpZ2F0aW9uIGJhciB0byBwcmV2ZW50IGl0IGZyb20gc2hvd2luZyB1cCBhcyBi
bGFuay4KICAgICAgICAgdGhpcy5jb250ZW50QnJvd3Nlci51cGRhdGVIaWVyYXJjaGljYWxQYXRo
Rm9yQ3VycmVudENvbnRlbnRWaWV3KCk7CisKKyAgICAgICAgV0kuaGVhcE1hbmFnZXIuZW5hYmxl
KCk7CisgICAgICAgIFdJLm1lbW9yeU1hbmFnZXIuZW5hYmxlKCk7CisgICAgICAgIFdJLnRpbWVs
aW5lTWFuYWdlci5lbmFibGUoKTsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKQEAgLTMyNywxMyAr
MzMxLDE3IEBAIFdJLlRpbWVsaW5lVGFiQ29udGVudFZpZXcgPSBjbGFzcyBUaW1lbGluZVRhYkNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzCiAKICAgICBjbG9zZWQoKQogICAgIHsK
LSAgICAgICAgc3VwZXIuY2xvc2VkKCk7CisgICAgICAgIFdJLnRpbWVsaW5lTWFuYWdlci5kaXNh
YmxlKCk7CisgICAgICAgIFdJLm1lbW9yeU1hbmFnZXIuZGlzYWJsZSgpOworICAgICAgICBXSS5o
ZWFwTWFuYWdlci5kaXNhYmxlKCk7CiAKICAgICAgICAgaWYgKFdJLkZQU0luc3RydW1lbnQuc3Vw
cG9ydGVkKCkpCiAgICAgICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyLm5hdmlnYXRpb25CYXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKIAogICAgICAgICBXSS50aW1l
bGluZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAg
ICAgV0kubm90aWZpY2F0aW9ucy5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMp
OworCisgICAgICAgIHN1cGVyLmNsb3NlZCgpOwogICAgIH0KIAogICAgIGNhblNob3dSZXByZXNl
bnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZGM4YjlhNDBhY2E0ZGI3ZTU4
MWY2NWQ5NmYwYTE0MjBiZjE2ZDg4Li4wMmQ5YjEzOTAwMjgyYzllNzcxNTk4MGExNWIwNzIxNDA2
YWYzODY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDgtMDIgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRpbWVsaW5lczog
ZGlzYWJsZSByZWxhdGVkIGFnZW50cyB3aGVuIHRoZSB0YWIgaXMgY2xvc2VkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAxMTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci90aW1lbGlu
ZS9saW5lLWNvbHVtbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS9zZXRJbnN0
cnVtZW50cy1lcnJvcnMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUvc2V0SW5z
dHJ1bWVudHMtcHJvZ3JhbW1hdGljLWNhcHR1cmUuaHRtbDoKKwogMjAxOS0wOC0wMiAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDcmFzaCB3aGVuIGludGVyYWN0aW5nIHdpdGggVGVtcGxhdGUgQ29udGVudCBpbiBDb25zb2xl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4u
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCmlu
ZGV4IDU1YzVjNTdkYTkxYTQ1ZTU4YTMzYzFmYjI1NWU3OWEzZGVhNTMwOGQuLjU2ZjNkYjdkM2Iy
YzIyZGY3Zjg1OWE1ZWYxNDU1YzQyODdiNzkxNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCkBAIC0zMywxMiArMzMsMTIgQEAgZnVuY3Rp
b24gd2lsbEV2YWx1YXRlU2NyaXB0VGVzdCgpIHsKICAgICBjb25zb2xlLnByb2ZpbGVFbmQoKTsK
IH0KIAotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBQcm90b2NvbFRlc3QuZGVidWcoKTsKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVBc3luY1N1
aXRlKCJUaW1lbGluZS5MaW5lQ29sdW1uIik7CiAKICAgICBJbnNwZWN0b3JQcm90b2NvbC5zZW5k
Q29tbWFuZCgiUGFnZS5lbmFibGUiKTsKLQotICAgIGxldCBzdWl0ZSA9IFByb3RvY29sVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJUaW1lbGluZS5MaW5lQ29sdW1uIik7CisgICAgSW5zcGVjdG9yUHJv
dG9jb2wuc2VuZENvbW1hbmQoIlRpbWVsaW5lLmVuYWJsZSIpOwogCiAgICAgZnVuY3Rpb24gcmVw
bGFjZXIoa2V5LCB2YWx1ZSkgewogICAgICAgICBpZiAoa2V5ID09PSAic3RhcnRUaW1lIiB8fCBr
ZXkgPT09ICJlbmRUaW1lIiB8fCBrZXkgPT09ICJzY3JpcHRJZCIgfHwga2V5ID09PSAiZnJhbWVJ
ZCIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvc2V0SW5zdHJ1
bWVudHMtZXJyb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvc2V0SW5z
dHJ1bWVudHMtZXJyb3JzLmh0bWwKaW5kZXggZmE5ZmFhYmFjYjYxOTFmYTFjYmYzOGU2OGFlY2M1
N2Y2Y2NhMWU5Zi4uMGUyYTk1YjJlZjU0YTgwMTg0ZDJkN2MwMzBiNDAzOGVkZTY2ZTYxNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3NldEluc3RydW1lbnRzLWVy
cm9ycy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9zZXRJbnN0cnVt
ZW50cy1lcnJvcnMuaHRtbApAQCAtNyw2ICs3LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAg
IGxldCBzdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJUaW1lbGluZS5zZXRJ
bnN0cnVtZW50cy5lcnJvcnMiKTsKIAorICAgIEluc3BlY3RvclByb3RvY29sLnNlbmRDb21tYW5k
KCJIZWFwLmVuYWJsZSIpOworICAgIEluc3BlY3RvclByb3RvY29sLnNlbmRDb21tYW5kKCJNZW1v
cnkuZW5hYmxlIik7CisgICAgSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQoIlRpbWVsaW5l
LmVuYWJsZSIpOworCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiTWlz
c2luZ1JlcXVpcmVkQXJndW1lbnQiLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3NldEluc3RydW1lbnRz
LXByb2dyYW1tYXRpYy1jYXB0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUvc2V0SW5zdHJ1bWVudHMtcHJvZ3JhbW1hdGljLWNhcHR1cmUuaHRtbAppbmRleCAwNWZhN2Fk
NmI0ZWM3YjUzNjc2M2EwMWI5YTBiMGMwNzIyMjEwYjI2Li5lMWNmYzk5YzNiOGQxY2MzNGUxMTZk
MGNkZDg1NTkyNzQ5NjRjNTcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGlt
ZWxpbmUvc2V0SW5zdHJ1bWVudHMtcHJvZ3JhbW1hdGljLWNhcHR1cmUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvc2V0SW5zdHJ1bWVudHMtcHJvZ3JhbW1hdGljLWNh
cHR1cmUuaHRtbApAQCAtMTcsNiArMTcsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBsZXQgY2Fw
dHVyZVN0b3BwZWQgPSBudWxsOwogCiAgICAgSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQo
IkhlYXAuZW5hYmxlIik7CisgICAgSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQoIlRpbWVs
aW5lLmVuYWJsZSIpOwogCiAgICAgSW5zcGVjdG9yUHJvdG9jb2wuZXZlbnRIYW5kbGVyWyJUaW1l
bGluZS5yZWNvcmRpbmdTdGFydGVkIl0gPSAoKSA9PiB7CiAgICAgICAgIFByb3RvY29sVGVzdC5w
YXNzKCJUaW1lbGluZS5yZWNvcmRpbmdTdGFydGVkIik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>