<?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>127899</bug_id>
          
          <creation_ts>2014-01-30 02:30:50 -0800</creation_ts>
          <short_desc>Web Inspector: Add the model objects for the new profile data</short_desc>
          <delta_ts>2014-01-30 17:31:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>973661</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-01-30 02:30:50 -0800</bug_when>
    <thetext>Add proper model objects for the profile data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973662</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-01-30 02:31:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/15944957&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973663</commentid>
    <comment_count>2</comment_count>
      <attachid>222649</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-01-30 02:33:48 -0800</bug_when>
    <thetext>Created attachment 222649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973833</commentid>
    <comment_count>3</comment_count>
      <attachid>222649</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-30 11:05:50 -0800</bug_when>
    <thetext>Comment on attachment 222649
Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/ProfileNode.js:148
&gt; +        rangeStartTime = !isNaN(rangeStartTime) ? rangeStartTime : 0;
&gt; +        rangeEndTime = !isNaN(rangeEndTime) ? rangeEndTime : Infinity;

This reads strange to me. I&apos;d prefer a positive condition &quot;isNaN(foo) ? 0 : foo&quot;.

Or the longer but more straightforward:

if (isNaN(foo))
  foo = ..;

&gt; Source/WebInspectorUI/UserInterface/ProfileNode.js:207
&gt; +        cookie[WebInspector.ProfileNode.SourceCodeURLCookieKey] = this._sourceCodeLocation ? this._sourceCodeLocation.sourceCode.url ? this._sourceCodeLocation.sourceCode.url.hash : null : null;

Ew! Replace:

    a ? a.b ? a.b.c : null : null;

With:

    a &amp;&amp; a.b ? a.b.c : null

&gt; Source/WebInspectorUI/UserInterface/ProfileNodeCall.js:30
&gt; +    console.assert(startTime);

So, startTime cannot be 0? Should this be a type check, or is 0 not allowed?

    console.assert(typeof startTime === &quot;number&quot;);

&gt; Source/WebInspectorUI/UserInterface/TimelineManager.js:375
&gt; +        // Iterate over the node tree using a stack. Doing this recursively can easily cause a stack overflow.
&gt; +        // We traverse the profile in post-order and convert the payloads in place until we get back to the root.

This is so wild. I feel like there must be a better way. But I can&apos;t find any logic issues with it.

&gt; Source/WebInspectorUI/UserInterface/TimelineManager.js:396
&gt; +        return new WebInspector.Profile(rootNodes, payload.idleTime);

Assert &quot;idleTime&quot; in payload near the function entry?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974134</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-01-30 17:31:41 -0800</bug_when>
    <thetext>https://trac.webkit.org/r163141</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222649</attachid>
            <date>2014-01-30 02:33:48 -0800</date>
            <delta_ts>2014-01-30 11:05:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127899-20140130023348.patch</filename>
            <type>text/plain</type>
            <size>25151</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyOTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
ODk1YzJmYzE5NGQ2OTdkYmQ4MjEzYzFiZDg4ZjlmNGExZGIyOWU3Li5kNDJmZGZmYmFjMTZjODVh
NTUzY2YzYzI2OTJkM2Y5NjA2NTMwODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxNC0wMS0zMCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIHRoZSBtb2RlbCBvYmplY3RzIGZvciB0aGUgbmV3IFdlYiBJbnNw
ZWN0b3IgcHJvZmlsZSBkYXRhLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjc4OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvUHJvZmlsZS5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmls
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZS5wcm90b3R5cGUuZ2V0IGlkbGVUaW1l
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlLnByb3RvdHlwZS5nZXQgdG9wRG93blJv
b3ROb2Rlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZS5wcm90b3R5cGUuZ2V0IGJv
dHRvbVVwUm9vdE5vZGVzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb2ZpbGVOb2RlLmpz
OiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUucHJvdG90eXBlLmdldCBpZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUHJvZmlsZU5vZGUucHJvdG90eXBlLmdldCB0eXBlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Qcm9maWxlTm9kZS5wcm90b3R5cGUuZ2V0IGZ1bmN0aW9uTmFtZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUucHJvdG90eXBlLmdldCBzb3VyY2VDb2RlTG9jYXRp
b24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLnByb3RvdHlwZS5nZXQgc3Rh
cnRUaW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5wcm90b3R5cGUuZ2V0
IGVuZFRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLnByb3RvdHlwZS5n
ZXQgc2VsZlRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLnByb3RvdHlw
ZS5nZXQgdG90YWxUaW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5wcm90
b3R5cGUuZ2V0IGNhbGxzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5wcm90
b3R5cGUuZ2V0IHByZXZpb3VzU2libGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmls
ZU5vZGUucHJvdG90eXBlLmdldCBuZXh0U2libGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UHJvZmlsZU5vZGUucHJvdG90eXBlLmdldCBwYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Qcm9maWxlTm9kZS5wcm90b3R5cGUuZ2V0IGNoaWxkTm9kZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVOb2RlLnByb3RvdHlwZS50b3RhbFRpbWVJblJhbmdlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5wcm90b3R5cGUuY29tcHV0ZUNhbGxJbmZvRm9y
VGltZVJhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5wcm90b3R5cGUu
dHJhdmVyc2VOZXh0UHJvZmlsZU5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVO
b2RlLnByb3RvdHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJvZmlsZU5vZGUucHJvdG90eXBlLmVzdGFibGlzaFJlbGF0aW9uc2hpcHMpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvUHJvZmlsZU5vZGVDYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Qcm9maWxlTm9kZUNhbGwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2Zp
bGVOb2RlQ2FsbC5wcm90b3R5cGUuZ2V0IHN0YXJ0VGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJvZmlsZU5vZGVDYWxsLnByb3RvdHlwZS5nZXQgdG90YWxUaW1lKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Qcm9maWxlTm9kZUNhbGwucHJvdG90eXBlLmdldCBlbmRUaW1lKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZUNhbGwucHJvdG90eXBlLmVzdGFibGlzaFJlbGF0
aW9uc2hpcHMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGltZWxpbmVNYW5hZ2VyLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuZXZlbnRSZWNv
cmRlZC5wcm9jZXNzUmVjb3JkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFn
ZXIucHJvdG90eXBlLmV2ZW50UmVjb3JkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTWFuYWdlci5wcm90b3R5cGUuX3Byb2ZpbGVGcm9tUGF5bG9hZC5wcm9maWxlTm9kZUZyb21Q
YXlsb2FkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBl
Ll9wcm9maWxlRnJvbVBheWxvYWQucHJvZmlsZU5vZGVDYWxsRnJvbVBheWxvYWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX3Byb2ZpbGVGcm9tUGF5
bG9hZCk6CisKIDIwMTQtMDEtMjYgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29t
PgogCiAgICAgICAgIFByZWZpeCBleGlzdGluZyBXZWIgSW5zcGVjdG9yIHByb2ZpbGVyIGNsYXNz
ZXMgd2l0aCAiTGVnYWN5Ii4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbAppbmRleCA2OGQ4ZDY5MmM0NTE3ZjJkNmExNjdmNGE3NjNkMDE1YjUyMGYxMWJk
Li4yM2Q4ZTIxOTQyMDNjYjA0MzVlZDgyOGJlNzdkYzdiNDUyMzg3MzJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0yMDEsNiArMjAxLDkg
QEAKICAgICA8c2NyaXB0IHNyYz0iVGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJUaW1lbGluZU1hcmtlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlJlc291cmNlVGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJQ
cm9maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iUHJvZmlsZU5vZGUuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJQcm9maWxlTm9kZUNhbGwuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJGcmFtZVJlc291cmNlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Iklzc3VlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlJ1bnRpbWVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm9maWxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjZmIwYTk1YjliNDA4OWQ2ZDg3
YTI3ZTJiMDk1ZjRjN2ZmYWM0YjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm9maWxlLmpzCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitXZWJJbnNwZWN0b3IuUHJvZmlsZSA9IGZ1bmN0aW9uKHRvcERvd25Sb290Tm9kZXMsIGlk
bGVUaW1lKQoreworICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKworICAgIHRv
cERvd25Sb290Tm9kZXMgPSB0b3BEb3duUm9vdE5vZGVzIHx8IFtdOworCisgICAgY29uc29sZS5h
c3NlcnQodG9wRG93blJvb3ROb2RlcyBpbnN0YW5jZW9mIEFycmF5KTsKKyAgICBjb25zb2xlLmFz
c2VydCh0b3BEb3duUm9vdE5vZGVzLnJlZHVjZShmdW5jdGlvbihwcmV2aW91c1ZhbHVlLCBub2Rl
KSB7IHJldHVybiBwcmV2aW91c1ZhbHVlICYmIG5vZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UHJvZmlsZU5vZGU7IH0sIHRydWUpKTsKKworICAgIHRoaXMuX3RvcERvd25Sb290Tm9kZXMgPSB0
b3BEb3duUm9vdE5vZGVzOworICAgIHRoaXMuX2lkbGVUaW1lID0gaWRsZVRpbWUgfHwgMDsKK307
CisKK1dlYkluc3BlY3Rvci5Qcm9maWxlLnByb3RvdHlwZSA9IHsKKyAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLlByb2ZpbGUsCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZSwKKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGlkbGVUaW1lKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9pZGxlVGltZTsKKyAgICB9LAorCisgICAgZ2V0IHRvcERv
d25Sb290Tm9kZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RvcERvd25Sb290Tm9k
ZXM7CisgICAgfSwKKworICAgIGdldCBib3R0b21VcFJvb3ROb2RlcygpCisgICAgeworICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgICAgICByZXR1cm4gW107CisgICAgfQorfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVOb2Rl
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZU5vZGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDJlYjJhNDJmM2VkM2VlMDIwNTE4ZDIzMWNhNzc5NTc0MTdkMTc5YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2Zp
bGVOb2RlLmpzCkBAIC0wLDAgKzEsMjIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlBy
b2ZpbGVOb2RlID0gZnVuY3Rpb24oaWQsIHR5cGUsIGZ1bmN0aW9uTmFtZSwgc291cmNlQ29kZUxv
Y2F0aW9uLCBjYWxscywgY2hpbGROb2RlcykKK3sKKyAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNh
bGwodGhpcyk7CisKKyAgICBjaGlsZE5vZGVzID0gY2hpbGROb2RlcyB8fCBbXTsKKworICAgIGNv
bnNvbGUuYXNzZXJ0KGlkKTsKKyAgICBjb25zb2xlLmFzc2VydChjYWxscyBpbnN0YW5jZW9mIEFy
cmF5KTsKKyAgICBjb25zb2xlLmFzc2VydChjYWxscy5sZW5ndGggPj0gMSk7CisgICAgY29uc29s
ZS5hc3NlcnQoY2FsbHMucmVkdWNlKGZ1bmN0aW9uKHByZXZpb3VzVmFsdWUsIGNhbGwpIHsgcmV0
dXJuIHByZXZpb3VzVmFsdWUgJiYgY2FsbCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9maWxl
Tm9kZUNhbGw7IH0sIHRydWUpKTsKKyAgICBjb25zb2xlLmFzc2VydChjaGlsZE5vZGVzIGluc3Rh
bmNlb2YgQXJyYXkpOworICAgIGNvbnNvbGUuYXNzZXJ0KGNoaWxkTm9kZXMucmVkdWNlKGZ1bmN0
aW9uKHByZXZpb3VzVmFsdWUsIG5vZGUpIHsgcmV0dXJuIHByZXZpb3VzVmFsdWUgJiYgbm9kZSBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZTsgfSwgdHJ1ZSkpOworCisgICAgdGhp
cy5faWQgPSBpZDsKKyAgICB0aGlzLl90eXBlID0gdHlwZSB8fCBXZWJJbnNwZWN0b3IuUHJvZmls
ZU5vZGUuVHlwZS5GdW5jdGlvbjsKKyAgICB0aGlzLl9mdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5h
bWUgfHwgbnVsbDsKKyAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlTG9j
YXRpb24gfHwgbnVsbDsKKyAgICB0aGlzLl9jYWxscyA9IGNhbGxzOworICAgIHRoaXMuX2NoaWxk
Tm9kZXMgPSBjaGlsZE5vZGVzOworICAgIHRoaXMuX3BhcmVudE5vZGUgPSBudWxsOworICAgIHRo
aXMuX3ByZXZpb3VzU2libGluZyA9IG51bGw7CisgICAgdGhpcy5fbmV4dFNpYmxpbmcgPSBudWxs
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jaGlsZE5vZGVzLmxlbmd0aDsgKytp
KQorICAgICAgICB0aGlzLl9jaGlsZE5vZGVzW2ldLmVzdGFibGlzaFJlbGF0aW9uc2hpcHModGhp
cywgdGhpcy5fY2hpbGROb2Rlc1tpIC0gMV0sIHRoaXMuX2NoaWxkTm9kZXNbaSArIDFdKTsKKwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY2FsbHMubGVuZ3RoOyArK2kpCisgICAgICAg
IHRoaXMuX2NhbGxzW2ldLmVzdGFibGlzaFJlbGF0aW9uc2hpcHModGhpcywgdGhpcy5fY2FsbHNb
aSAtIDFdLCB0aGlzLl9jYWxsc1tpICsgMV0pOworCisgICAgdmFyIGluZm8gPSB0aGlzLmNvbXB1
dGVDYWxsSW5mb0ZvclRpbWVSYW5nZSgwLCBJbmZpbml0eSk7CisgICAgdGhpcy5fc3RhcnRUaW1l
ID0gaW5mby5zdGFydFRpbWU7CisgICAgdGhpcy5fZW5kVGltZSA9IGluZm8uZW5kVGltZTsKKyAg
ICB0aGlzLl9zZWxmVGltZSA9IGluZm8uc2VsZlRpbWU7CisgICAgdGhpcy5fdG90YWxUaW1lID0g
aW5mby50b3RhbFRpbWU7Cit9OworCitXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZSA9IHsK
KyAgICBGdW5jdGlvbjogInByb2ZpbGUtbm9kZS10eXBlLWZ1bmN0aW9uIiwKKyAgICBQcm9ncmFt
OiAicHJvZmlsZS1ub2RlLXR5cGUtcHJvZ3JhbSIKK307CisKK1dlYkluc3BlY3Rvci5Qcm9maWxl
Tm9kZS5UeXBlSWRlbnRpZmllciA9ICJwcm9maWxlLW5vZGUiOworV2ViSW5zcGVjdG9yLlByb2Zp
bGVOb2RlLlR5cGVDb29raWVLZXkgPSAicHJvZmlsZS1ub2RlLXR5cGUiOworV2ViSW5zcGVjdG9y
LlByb2ZpbGVOb2RlLkZ1bmN0aW9uTmFtZUNvb2tpZUtleSA9ICJwcm9maWxlLW5vZGUtZnVuY3Rp
b24tbmFtZSI7CitXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuU291cmNlQ29kZVVSTENvb2tpZUtl
eSA9ICJwcm9maWxlLW5vZGUtc291cmNlLWNvZGUtdXJsIjsKK1dlYkluc3BlY3Rvci5Qcm9maWxl
Tm9kZS5Tb3VyY2VDb2RlTG9jYXRpb25MaW5lQ29va2llS2V5ID0gInByb2ZpbGUtbm9kZS1zb3Vy
Y2UtY29kZS1sb2NhdGlvbi1saW5lIjsKK1dlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5Tb3VyY2VD
b2RlTG9jYXRpb25Db2x1bW5Db29raWVLZXkgPSAicHJvZmlsZS1ub2RlLXNvdXJjZS1jb2RlLWxv
Y2F0aW9uLWNvbHVtbiI7CisKK1dlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5wcm90b3R5cGUgPSB7
CisgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZSwKKyAgICBfX3Byb3Rv
X186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorCisgICAgLy8gUHVibGljCisKKyAg
ICBnZXQgaWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lkOworICAgIH0sCisKKyAg
ICBnZXQgdHlwZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKKyAgICB9LAor
CisgICAgZ2V0IGZ1bmN0aW9uTmFtZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZnVu
Y3Rpb25OYW1lOworICAgIH0sCisKKyAgICBnZXQgc291cmNlQ29kZUxvY2F0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb247CisgICAgfSwKKworICAg
IGdldCBzdGFydFRpbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0VGltZTsK
KyAgICB9LAorCisgICAgZ2V0IGVuZFRpbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2VuZFRpbWU7CisgICAgfSwKKworICAgIGdldCBzZWxmVGltZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fc2VsZlRpbWU7CisgICAgfSwKKworICAgIGdldCB0b3RhbFRpbWUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RvdGFsVGltZTsKKyAgICB9LAorCisgICAgZ2V0IGNh
bGxzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jYWxsczsKKyAgICB9LAorCisgICAg
Z2V0IHByZXZpb3VzU2libGluZygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcHJldmlv
dXNTaWJsaW5nOworICAgIH0sCisKKyAgICBnZXQgbmV4dFNpYmxpbmcoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX25leHRTaWJsaW5nOworICAgIH0sCisKKyAgICBnZXQgcGFyZW50Tm9k
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50Tm9kZTsKKyAgICB9LAorCisg
ICAgZ2V0IGNoaWxkTm9kZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkTm9k
ZXM7CisgICAgfSwKKworICAgIGNvbXB1dGVDYWxsSW5mb0ZvclRpbWVSYW5nZTogZnVuY3Rpb24o
cmFuZ2VTdGFydFRpbWUsIHJhbmdlRW5kVGltZSkKKyAgICB7CisgICAgICAgIHJhbmdlU3RhcnRU
aW1lID0gIWlzTmFOKHJhbmdlU3RhcnRUaW1lKSA/IHJhbmdlU3RhcnRUaW1lIDogMDsKKyAgICAg
ICAgcmFuZ2VFbmRUaW1lID0gIWlzTmFOKHJhbmdlRW5kVGltZSkgPyByYW5nZUVuZFRpbWUgOiBJ
bmZpbml0eTsKKworICAgICAgICB2YXIgcmVjb3JkQ2FsbENvdW50ID0gdHJ1ZTsKKyAgICAgICAg
dmFyIGNhbGxDb3VudCA9IDA7CisKKyAgICAgICAgZnVuY3Rpb24gdG90YWxUaW1lSW5SYW5nZShw
cmV2aW91c1ZhbHVlLCBjYWxsKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocmFuZ2VTdGFy
dFRpbWUgPiBjYWxsLmVuZFRpbWUgfHwgcmFuZ2VFbmRUaW1lIDwgY2FsbC5zdGFydFRpbWUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVmFsdWU7CisKKyAgICAgICAgICAgIGlmIChy
ZWNvcmRDYWxsQ291bnQpCisgICAgICAgICAgICAgICAgKytjYWxsQ291bnQ7CisKKyAgICAgICAg
ICAgIHJldHVybiBwcmV2aW91c1ZhbHVlICsgTWF0aC5taW4oY2FsbC5lbmRUaW1lLCByYW5nZUVu
ZFRpbWUpIC0gTWF0aC5tYXgocmFuZ2VTdGFydFRpbWUsIGNhbGwuc3RhcnRUaW1lKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHZhciBzdGFydFRpbWUgPSBNYXRoLm1heChyYW5nZVN0YXJ0VGltZSwg
dGhpcy5fY2FsbHNbMF0uc3RhcnRUaW1lKTsKKyAgICAgICAgdmFyIGVuZFRpbWUgPSBNYXRoLm1p
bih0aGlzLl9jYWxscy5sYXN0VmFsdWUuZW5kVGltZSwgcmFuZ2VFbmRUaW1lKTsKKyAgICAgICAg
dmFyIHRvdGFsVGltZSA9IHRoaXMuX2NhbGxzLnJlZHVjZSh0b3RhbFRpbWVJblJhbmdlLCAwKTsK
KworICAgICAgICByZWNvcmRDYWxsQ291bnQgPSBmYWxzZTsKKworICAgICAgICB2YXIgY2hpbGRO
b2Rlc1RvdGFsVGltZSA9IDA7CisgICAgICAgIGZvciAodmFyIGNoaWxkTm9kZSBvZiB0aGlzLl9j
aGlsZE5vZGVzKQorICAgICAgICAgICAgY2hpbGROb2Rlc1RvdGFsVGltZSArPSBjaGlsZE5vZGUu
Y2FsbHMucmVkdWNlKHRvdGFsVGltZUluUmFuZ2UsIDApOworCisgICAgICAgIHZhciBzZWxmVGlt
ZSA9IHRvdGFsVGltZSAtIGNoaWxkTm9kZXNUb3RhbFRpbWU7CisgICAgICAgIHZhciBhdmVyYWdl
VGltZSA9IHNlbGZUaW1lIC8gY2FsbENvdW50OworCisgICAgICAgIHJldHVybiB7c3RhcnRUaW1l
OiBzdGFydFRpbWUsIGVuZFRpbWU6IGVuZFRpbWUsIHRvdGFsVGltZTogdG90YWxUaW1lLCBzZWxm
VGltZTogc2VsZlRpbWUsIGNhbGxDb3VudDogY2FsbENvdW50LCBhdmVyYWdlVGltZTogYXZlcmFn
ZVRpbWV9OworICAgIH0sCisKKyAgICB0cmF2ZXJzZU5leHRQcm9maWxlTm9kZTogZnVuY3Rpb24o
c3RheVdpdGhpbikKKyAgICB7CisgICAgICAgIHZhciBwcm9maWxlTm9kZSA9IHRoaXMuX2NoaWxk
Tm9kZXNbMF07CisgICAgICAgIGlmIChwcm9maWxlTm9kZSkKKyAgICAgICAgICAgIHJldHVybiBw
cm9maWxlTm9kZTsKKworICAgICAgICBpZiAodGhpcyA9PT0gc3RheVdpdGhpbikKKyAgICAgICAg
ICAgIHJldHVybiBudWxsOworCisgICAgICAgIHByb2ZpbGVOb2RlID0gdGhpcy5fbmV4dFNpYmxp
bmc7CisgICAgICAgIGlmIChwcm9maWxlTm9kZSkKKyAgICAgICAgICAgIHJldHVybiBwcm9maWxl
Tm9kZTsKKworICAgICAgICBwcm9maWxlTm9kZSA9IHRoaXM7CisgICAgICAgIHdoaWxlIChwcm9m
aWxlTm9kZSAmJiAhcHJvZmlsZU5vZGUubmV4dFNpYmxpbmcgJiYgcHJvZmlsZU5vZGUucGFyZW50
Tm9kZSAhPT0gc3RheVdpdGhpbikKKyAgICAgICAgICAgIHByb2ZpbGVOb2RlID0gcHJvZmlsZU5v
ZGUucGFyZW50Tm9kZTsKKworICAgICAgICBpZiAoIXByb2ZpbGVOb2RlKQorICAgICAgICAgICAg
cmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHByb2ZpbGVOb2RlLm5leHRTaWJsaW5nOwor
ICAgIH0sCisKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAg
IHsKKyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlQ29va2llS2V5
XSA9IHRoaXMuX3R5cGUgfHwgbnVsbDsKKyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5Qcm9m
aWxlTm9kZS5GdW5jdGlvbk5hbWVDb29raWVLZXldID0gdGhpcy5fZnVuY3Rpb25OYW1lIHx8IG51
bGw7CisgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuU291cmNlQ29kZVVS
TENvb2tpZUtleV0gPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24gPyB0aGlzLl9zb3VyY2VDb2Rl
TG9jYXRpb24uc291cmNlQ29kZS51cmwgPyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uc291cmNl
Q29kZS51cmwuaGFzaCA6IG51bGwgOiBudWxsOworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9y
LlByb2ZpbGVOb2RlLlNvdXJjZUNvZGVMb2NhdGlvbkxpbmVDb29raWVLZXldID0gdGhpcy5fc291
cmNlQ29kZUxvY2F0aW9uID8gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIgOiBu
dWxsOworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlNvdXJjZUNvZGVM
b2NhdGlvbkNvbHVtbkNvb2tpZUtleV0gPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24gPyB0aGlz
Ll9zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVyIDogbnVsbDsKKyAgICB9LAorCisgICAg
Ly8gUHJvdGVjdGVkCisKKyAgICBlc3RhYmxpc2hSZWxhdGlvbnNoaXBzOiBmdW5jdGlvbihwYXJl
bnROb2RlLCBwcmV2aW91c1NpYmxpbmcsIG5leHRTaWJsaW5nKQorICAgIHsKKyAgICAgICAgdGhp
cy5fcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5fcHJldmlv
dXNTaWJsaW5nID0gcHJldmlvdXNTaWJsaW5nIHx8IG51bGw7CisgICAgICAgIHRoaXMuX25leHRT
aWJsaW5nID0gbmV4dFNpYmxpbmcgfHwgbnVsbDsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZU5vZGVDYWxsLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZU5vZGVDYWxsLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjNjBlYTk4M2I3NzA4OTc4ZjE1MzI4ZGFmOGFmMTliYWM0NjRmMmQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm9maWxlTm9k
ZUNhbGwuanMKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5Qcm9m
aWxlTm9kZUNhbGwgPSBmdW5jdGlvbihzdGFydFRpbWUsIHRvdGFsVGltZSkKK3sKKyAgICBXZWJJ
bnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisKKyAgICBjb25zb2xlLmFzc2VydChzdGFydFRp
bWUpOworCisgICAgdGhpcy5fc3RhcnRUaW1lID0gc3RhcnRUaW1lOworICAgIHRoaXMuX3RvdGFs
VGltZSA9IHRvdGFsVGltZSB8fCAwOworICAgIHRoaXMuX3BhcmVudE5vZGUgPSBudWxsOworICAg
IHRoaXMuX3ByZXZpb3VzU2libGluZyA9IG51bGw7CisgICAgdGhpcy5fbmV4dFNpYmxpbmcgPSBu
dWxsOworfTsKKworV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlQ2FsbC5wcm90b3R5cGUgPSB7Cisg
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZUNhbGwsCisgICAgX19wcm90
b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKworICAgIC8vIFB1YmxpYworCisg
ICAgZ2V0IHN0YXJ0VGltZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1l
OworICAgIH0sCisKKyAgICBnZXQgdG90YWxUaW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl90b3RhbFRpbWU7CisgICAgfSwKKworICAgIGdldCBlbmRUaW1lKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9zdGFydFRpbWUgKyB0aGlzLl90b3RhbFRpbWU7CisgICAgfSwKKwor
ICAgIC8vIFByb3RlY3RlZAorCisgICAgZXN0YWJsaXNoUmVsYXRpb25zaGlwczogZnVuY3Rpb24o
cGFyZW50Tm9kZSwgcHJldmlvdXNTaWJsaW5nLCBuZXh0U2libGluZykKKyAgICB7CisgICAgICAg
IHRoaXMuX3BhcmVudE5vZGUgPSBwYXJlbnROb2RlIHx8IG51bGw7CisgICAgICAgIHRoaXMuX3By
ZXZpb3VzU2libGluZyA9IHByZXZpb3VzU2libGluZyB8fCBudWxsOworICAgICAgICB0aGlzLl9u
ZXh0U2libGluZyA9IG5leHRTaWJsaW5nIHx8IG51bGw7CisgICAgfQorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5lTWFuYWdlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5lTWFuYWdlci5qcwpp
bmRleCAwYmVhMGM3ZjgyNGUzOGVkM2M0M2RhNzg2YjgxYTQwZWJjNWRlZDY3Li5kZWE3M2ZjMTQ2
M2RhN2FhYjllMjliNzQ1MGY4NDJmM2UwYmE3MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVNYW5hZ2VyLmpzCkBAIC0yMDcsMTIg
KzIwNywxNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAg
IHZhciBwcm9maWxlID0gbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAocmVjb3JkUGF5bG9hZC5k
YXRhLnByb2ZpbGUpCisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUgPSB0aGlzLl9wcm9maWxl
RnJvbVBheWxvYWQocmVjb3JkUGF5bG9hZC5kYXRhLnByb2ZpbGUpOworCiAgICAgICAgICAgICAg
ICAgc3dpdGNoIChwYXJlbnRSZWNvcmRQYXlsb2FkICYmIHBhcmVudFJlY29yZFBheWxvYWQudHlw
ZSkgewogICAgICAgICAgICAgICAgIGNhc2UgVGltZWxpbmVBZ2VudC5FdmVudFR5cGUuVGltZXJG
aXJlOgotICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdlYkluc3BlY3Rv
ci5TY3JpcHRUaW1lbGluZVJlY29yZChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQu
RXZlbnRUeXBlLlRpbWVyRmlyZWQsIHN0YXJ0VGltZSwgZW5kVGltZSwgY2FsbEZyYW1lcywgc291
cmNlQ29kZUxvY2F0aW9uLCBwYXJlbnRSZWNvcmRQYXlsb2FkLmRhdGEudGltZXJJZCkpOworICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdlYkluc3BlY3Rvci5TY3JpcHRU
aW1lbGluZVJlY29yZChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBl
LlRpbWVyRmlyZWQsIHN0YXJ0VGltZSwgZW5kVGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxv
Y2F0aW9uLCBwYXJlbnRSZWNvcmRQYXlsb2FkLmRhdGEudGltZXJJZCwgcHJvZmlsZSkpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1l
bGluZVJlY29yZChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlNj
cmlwdEV2YWx1YXRlZCwgc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VDb2Rl
TG9jYXRpb24sIG51bGwpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkUmVjb3JkKG5l
dyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQoV2ViSW5zcGVjdG9yLlNjcmlwdFRp
bWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5TY3JpcHRFdmFsdWF0ZWQsIHN0YXJ0VGltZSwgZW5kVGlt
ZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCBudWxsLCBwcm9maWxlKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMjI5LDYgKzIz
MywxMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgICAgICBpZiAoIXBhcmVudFJlY29yZFBheWxvYWQpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogCisgICAgICAgICAgICAgICAgdmFyIHByb2ZpbGUgPSBudWxsOworICAgICAgICAg
ICAgICAgIGlmIChyZWNvcmRQYXlsb2FkLmRhdGEucHJvZmlsZSkKKyAgICAgICAgICAgICAgICAg
ICAgcHJvZmlsZSA9IHRoaXMuX3Byb2ZpbGVGcm9tUGF5bG9hZChyZWNvcmRQYXlsb2FkLmRhdGEu
cHJvZmlsZSk7CisKICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZUNvZGVMb2NhdGlvbikgewog
ICAgICAgICAgICAgICAgICAgICB2YXIgbWFpbkZyYW1lID0gV2ViSW5zcGVjdG9yLmZyYW1lUmVz
b3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKICAgICAgICAgICAgICAgICAgICAgdmFyIHNjcmlwdFJl
c291cmNlID0gbWFpbkZyYW1lLnVybCA9PT0gcmVjb3JkUGF5bG9hZC5kYXRhLnNjcmlwdE5hbWUg
PyBtYWluRnJhbWUubWFpblJlc291cmNlIDogbWFpbkZyYW1lLnJlc291cmNlRm9yVVJMKHJlY29y
ZFBheWxvYWQuZGF0YS5zY3JpcHROYW1lLCB0cnVlKTsKQEAgLTI0MywxOSArMjUxLDE5IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICAg
ICAgc3dpdGNoIChwYXJlbnRSZWNvcmRQYXlsb2FkLnR5cGUpIHsKICAgICAgICAgICAgICAgICBj
YXNlIFRpbWVsaW5lQWdlbnQuRXZlbnRUeXBlLlRpbWVyRmlyZToKLSAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fYWRkUmVjb3JkKG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQo
V2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5UaW1lckZpcmVkLCBz
dGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbiwgcGFyZW50
UmVjb3JkUGF5bG9hZC5kYXRhLnRpbWVySWQpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5f
YWRkUmVjb3JkKG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQoV2ViSW5zcGVj
dG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5UaW1lckZpcmVkLCBzdGFydFRpbWUs
IGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbiwgcGFyZW50UmVjb3JkUGF5
bG9hZC5kYXRhLnRpbWVySWQsIHByb2ZpbGUpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgY2FzZSBUaW1lbGluZUFnZW50LkV2ZW50VHlwZS5FdmVudERpc3Bh
dGNoOgotICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdlYkluc3BlY3Rv
ci5TY3JpcHRUaW1lbGluZVJlY29yZChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQu
RXZlbnRUeXBlLkV2ZW50RGlzcGF0Y2hlZCwgc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsRnJhbWVz
LCBzb3VyY2VDb2RlTG9jYXRpb24sIHBhcmVudFJlY29yZFBheWxvYWQuZGF0YS50eXBlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZFJlY29yZChuZXcgV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lUmVjb3JkKFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5
cGUuRXZlbnREaXNwYXRjaGVkLCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJj
ZUNvZGVMb2NhdGlvbiwgcGFyZW50UmVjb3JkUGF5bG9hZC5kYXRhLnR5cGUsIHByb2ZpbGUpKTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBUaW1lbGlu
ZUFnZW50LkV2ZW50VHlwZS5YSFJMb2FkOgotICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRS
ZWNvcmQobmV3IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZChXZWJJbnNwZWN0b3Iu
U2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkV2ZW50RGlzcGF0Y2hlZCwgc3RhcnRUaW1l
LCBlbmRUaW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VDb2RlTG9jYXRpb24sICJsb2FkIikpOworICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdlYkluc3BlY3Rvci5TY3JpcHRU
aW1lbGluZVJlY29yZChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBl
LkV2ZW50RGlzcGF0Y2hlZCwgc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VD
b2RlTG9jYXRpb24sICJsb2FkIiwgcHJvZmlsZSkpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICBjYXNlIFRpbWVsaW5lQWdlbnQuRXZlbnRUeXBlLlhIUlJlYWR5
U3RhdGVDaGFuZ2U6Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZFJlY29yZChuZXcgV2Vi
SW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkKFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGlu
ZVJlY29yZC5FdmVudFR5cGUuRXZlbnREaXNwYXRjaGVkLCBzdGFydFRpbWUsIGVuZFRpbWUsIGNh
bGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbiwgInJlYWR5c3RhdGVjaGFuZ2UiKSk7CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuX2FkZFJlY29yZChuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdFRp
bWVsaW5lUmVjb3JkKFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUu
RXZlbnREaXNwYXRjaGVkLCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNv
ZGVMb2NhdGlvbiwgInJlYWR5c3RhdGVjaGFuZ2UiLCBwcm9maWxlKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgVGltZWxpbmVBZ2VudC5FdmVudFR5
cGUuRmlyZUFuaW1hdGlvbkZyYW1lOgotICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZWNv
cmQobmV3IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZChXZWJJbnNwZWN0b3IuU2Ny
aXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkFuaW1hdGlvbkZyYW1lRmlyZWQsIHN0YXJ0VGlt
ZSwgZW5kVGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCBwYXJlbnRSZWNvcmRQ
YXlsb2FkLmRhdGEuaWQpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkUmVjb3JkKG5l
dyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQoV2ViSW5zcGVjdG9yLlNjcmlwdFRp
bWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5BbmltYXRpb25GcmFtZUZpcmVkLCBzdGFydFRpbWUsIGVu
ZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbiwgcGFyZW50UmVjb3JkUGF5bG9h
ZC5kYXRhLmlkLCBwcm9maWxlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KIApAQCAtMzIwLDYgKzMyOCw3NCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVN
YW5hZ2VyLnByb3RvdHlwZSA9IHsKIAogICAgIC8vIFByaXZhdGUKIAorICAgIF9wcm9maWxlRnJv
bVBheWxvYWQ6IGZ1bmN0aW9uKHBheWxvYWQpCisgICAgeworICAgICAgICBpZiAoIXBheWxvYWQp
CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBjb25zb2xlLmFzc2VydChwYXls
b2FkLnJvb3ROb2RlcyBpbnN0YW5jZW9mIEFycmF5KTsKKworICAgICAgICBmdW5jdGlvbiBwcm9m
aWxlTm9kZUZyb21QYXlsb2FkKG5vZGVQYXlsb2FkKQorICAgICAgICB7CisgICAgICAgICAgICBj
b25zb2xlLmFzc2VydCgiaWQiIGluIG5vZGVQYXlsb2FkKTsKKyAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KG5vZGVQYXlsb2FkLmNhbGxzIGluc3RhbmNlb2YgQXJyYXkpOworCisgICAgICAgICAg
ICBpZiAobm9kZVBheWxvYWQudXJsKSB7CisgICAgICAgICAgICAgICAgdmFyIHNvdXJjZUNvZGUg
PSBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwobm9kZVBh
eWxvYWQudXJsKTsKKyAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZUNvZGUpCisgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZUNvZGUgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnNjcmlw
dHNGb3JVUkwobm9kZVBheWxvYWQudXJsKVswXTsKKworICAgICAgICAgICAgICAgIC8vIFRoZSBs
aW5lTnVtYmVyIGlzIDEtYmFzZWQsIGJ1dCB3ZSBleHBlY3QgMC1iYXNlZC4KKyAgICAgICAgICAg
ICAgICB2YXIgbGluZU51bWJlciA9IG5vZGVQYXlsb2FkLmxpbmVOdW1iZXIgLSAxOworCisgICAg
ICAgICAgICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGUgPyBzb3VyY2VD
b2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbihsaW5lTnVtYmVyLCBub2RlUGF5bG9hZC5jb2x1
bW5OdW1iZXIpIDogbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGlzUHJv
Z3JhbUNvZGUgPSBub2RlUGF5bG9hZC5mdW5jdGlvbk5hbWUgPT09ICIocHJvZ3JhbSkiOworICAg
ICAgICAgICAgdmFyIGlzQW5vbnltb3VzRnVuY3Rpb24gPSBub2RlUGF5bG9hZC5mdW5jdGlvbk5h
bWUgPT09ICIoYW5vbnltb3VzIGZ1bmN0aW9uKSI7CisKKyAgICAgICAgICAgIHZhciB0eXBlID0g
aXNQcm9ncmFtQ29kZSA/IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlLlByb2dyYW0gOiBX
ZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZS5GdW5jdGlvbjsKKyAgICAgICAgICAgIHZhciBm
dW5jdGlvbk5hbWUgPSAhaXNQcm9ncmFtQ29kZSAmJiAhaXNBbm9ueW1vdXNGdW5jdGlvbiAmJiBu
b2RlUGF5bG9hZC5mdW5jdGlvbk5hbWUgIT09ICIodW5rbm93bikiID8gbm9kZVBheWxvYWQuZnVu
Y3Rpb25OYW1lIDogbnVsbDsKKyAgICAgICAgICAgIHZhciBjYWxscyA9IG5vZGVQYXlsb2FkLmNh
bGxzLm1hcChwcm9maWxlTm9kZUNhbGxGcm9tUGF5bG9hZCk7CisKKyAgICAgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlKG5vZGVQYXlsb2FkLmlkLCB0eXBlLCBmdW5j
dGlvbk5hbWUsIHNvdXJjZUNvZGVMb2NhdGlvbiwgY2FsbHMsIG5vZGVQYXlsb2FkLmNoaWxkcmVu
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVOb2RlQ2FsbEZyb21QYXls
b2FkKG5vZGVDYWxsUGF5bG9hZCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoInN0YXJ0VGltZSIgaW4gbm9kZUNhbGxQYXlsb2FkKTsKKyAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCJ0b3RhbFRpbWUiIGluIG5vZGVDYWxsUGF5bG9hZCk7CisKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlQ2FsbChub2RlQ2FsbFBheWxvYWQuc3Rh
cnRUaW1lLCBub2RlQ2FsbFBheWxvYWQudG90YWxUaW1lKTsKKyAgICAgICAgfQorCisgICAgICAg
IHZhciByb290Tm9kZXMgPSBwYXlsb2FkLnJvb3ROb2RlczsKKworICAgICAgICAvLyBJdGVyYXRl
IG92ZXIgdGhlIG5vZGUgdHJlZSB1c2luZyBhIHN0YWNrLiBEb2luZyB0aGlzIHJlY3Vyc2l2ZWx5
IGNhbiBlYXNpbHkgY2F1c2UgYSBzdGFjayBvdmVyZmxvdy4KKyAgICAgICAgLy8gV2UgdHJhdmVy
c2UgdGhlIHByb2ZpbGUgaW4gcG9zdC1vcmRlciBhbmQgY29udmVydCB0aGUgcGF5bG9hZHMgaW4g
cGxhY2UgdW50aWwgd2UgZ2V0IGJhY2sgdG8gdGhlIHJvb3QuCisgICAgICAgIHZhciBzdGFjayA9
IFt7cGFyZW50OiB7Y2hpbGRyZW46IHJvb3ROb2Rlc30sIGluZGV4OiAwLCByb290OiB0cnVlfV07
CisgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBlbnRyeSA9
IHN0YWNrLmxhc3RWYWx1ZTsKKworICAgICAgICAgICAgaWYgKGVudHJ5LmluZGV4IDwgZW50cnku
cGFyZW50LmNoaWxkcmVuLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVQ
YXlsb2FkID0gZW50cnkucGFyZW50LmNoaWxkcmVuW2VudHJ5LmluZGV4XTsKKyAgICAgICAgICAg
ICAgICBpZiAoY2hpbGROb2RlUGF5bG9hZC5jaGlsZHJlbiAmJiBjaGlsZE5vZGVQYXlsb2FkLmNo
aWxkcmVuLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh7cGFyZW50OiBj
aGlsZE5vZGVQYXlsb2FkLCBpbmRleDogMH0pOworCisgICAgICAgICAgICAgICAgKytlbnRyeS5p
bmRleDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFlbnRyeS5y
b290KQorICAgICAgICAgICAgICAgICAgICBlbnRyeS5wYXJlbnQuY2hpbGRyZW4gPSBlbnRyeS5w
YXJlbnQuY2hpbGRyZW4ubWFwKHByb2ZpbGVOb2RlRnJvbVBheWxvYWQpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcm9vdE5vZGVzID0gcm9vdE5vZGVzLm1hcChw
cm9maWxlTm9kZUZyb21QYXlsb2FkKTsKKworICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuUHJvZmlsZShyb290Tm9kZXMsIHBheWxvYWQuaWRsZVRpbWUpOworICAgIH0sCisKICAgICBf
Y2FsbEZyYW1lc0Zyb21QYXlsb2FkOiBmdW5jdGlvbihwYXlsb2FkKQogICAgIHsKICAgICAgICAg
aWYgKCFwYXlsb2FkKQo=
</data>
<flag name="review"
          id="246661"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="246662"
          type_id="3"
          status="-"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>