<?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>168750</bug_id>
          
          <creation_ts>2017-02-22 15:41:03 -0800</creation_ts>
          <short_desc>Add tests for InteractiveTimeSeriesChart and adopt actions</short_desc>
          <delta_ts>2017-02-23 13:41:42 -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>Perf Dashboard</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1280084</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-02-22 15:41:03 -0800</bug_when>
    <thetext>Add tests for InteractiveTimeSeriesChart.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280123</commentid>
    <comment_count>1</comment_count>
      <attachid>302469</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-02-22 17:20:27 -0800</bug_when>
    <thetext>Created attachment 302469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280467</commentid>
    <comment_count>2</comment_count>
      <attachid>302469</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-23 13:37:50 -0800</bug_when>
    <thetext>Comment on attachment 302469
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:10
&gt; +        Also replaced selection.ononchange, selection.onzoom, indicator.onchange, annotations.onclick callbacks

typo: selection.ononchange -&gt; selection.onchange</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280470</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-02-23 13:41:42 -0800</bug_when>
    <thetext>Committed r212923: &lt;http://trac.webkit.org/changeset/212923&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302469</attachid>
            <date>2017-02-22 17:20:27 -0800</date>
            <delta_ts>2017-02-23 13:37:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168750-20170222171739.patch</filename>
            <type>text/plain</type>
            <size>72440</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMjEyODU4KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDgwIEBACisyMDE3LTAyLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEFkZCB0ZXN0cyBmb3IgSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQgYW5kIGFk
b3B0IGFjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2ODc1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIHRlc3RzIGZvciBJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydC4KKworICAgICAg
ICBBbHNvIHJlcGxhY2VkIHNlbGVjdGlvbi5vbm9uY2hhbmdlLCBzZWxlY3Rpb24ub256b29tLCBp
bmRpY2F0b3Iub25jaGFuZ2UsIGFubm90YXRpb25zLm9uY2xpY2sgY2FsbGJhY2tzCisgICAgICAg
IGJ5ICJzZWxlY3Rpb25DaGFuZ2UiLCAiem9vbSIsICJpbmRpY2F0b3JDaGFuZ2UiLCBhbmQgImFu
bm90YXRpb25DbGljayIgYWN0aW9ucyByZXNwZWN0aXZlbHkuCisKKyAgICAgICAgQWxzbyBmaXhl
ZCB2YXJpb3VzIGJ1Z3MgYW5kIGJhZCBjb2RlIEkgZW5jb3VudGVyZWQgd2hpbGUgd3JpdGluZyB0
aGVzZSB0ZXN0cy4KKworICAgICAgICAqIGJyb3dzZXItdGVzdHMvaW5kZXguaHRtbDoKKyAgICAg
ICAgKHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIpOiBEZWxheSB0aGUgY2FsbCB0byBlbnF1ZXVl
VG9SZW5kZXIgdW50aWwgdGhlIG5leHQgcnVuIGxvb3AgYmVjYXVzZSB0aGVyZQorICAgICAgICBt
aWdodCBiZSBvdXRzdGFuZGluZyBwcm9taXNlcyB0aGF0IGp1c3QgZ290IHJlc29sdmVkLiBlLmcu
IGZvciBmZXRjaGluZyBtZWFzdXJlbWVudCBzZXRzIEpTT05zLiBMZXQKKyAgICAgICAgYWxsIHRo
b3NlIHByb21pc2VzIGdldCByZXNvbHZlZCBmaXJzdC4gT3RoZXJ3aXNlLCBzb21lIHRlc3RzIGJl
Y29tZSByYWN5LgorICAgICAgICAoY2FudmFzSW1hZ2VEYXRhKTogRXh0cmFjdGVkIGZyb20gdGlt
ZS1zZXJpZXMtY2hhcnQtdGVzdHMuanMuCisgICAgICAgIChjYW52YXNSZWZUZXN0KTogRGl0dG8u
CisgICAgICAgIChDYW52YXNUZXN0KTogRGl0dG8uCisgICAgICAgIChDYW52YXNUZXN0LmZpbGxD
YW52YXNCZWZvcmVSZWRyYXdDaGVjayk6IERpdHRvLgorICAgICAgICAoQ2FudmFzVGVzdC5oYXND
YW52YXNCZWVuUmVkcmF3bik6IERpdHRvLgorICAgICAgICAoQ2FudmFzVGVzdC5jYW52YXNJbWFn
ZURhdGEpOiBEaXR0by4KKyAgICAgICAgKENhbnZhc1Rlc3QuZXhwZWN0Q2FudmFzZXNNYXRjaCk6
IERpdHRvLgorICAgICAgICAoQ2FudmFzVGVzdC5leHBlY3RDYW52YXNlc01pc21hdGNoKTogRGl0
dG8uCisKKyAgICAgICAgKiBicm93c2VyLXRlc3RzL3RpbWUtc2VyaWVzLWNoYXJ0LXRlc3RzLmpz
OiBGaXhlZCBzb21lIHRlc3QgY2FzZXMgd2hlcmUgZHByIG11bHRpcGxlciB3YXMgbm90IGRvaW5n
CisgICAgICAgIHRoZSByaWdodCB0aGluZyBhbnltb3JlIGluIFNhZmFyaSB1bmRlciBhIGhpZ2gg
RFBJIHNjcmVlbi4gQWxzbyBhZGRlZCBhIGxvdCBvZiB0ZXN0IGNhc2VzIGZvciBpbnRlcmFjdGl2
ZQorICAgICAgICB0aW1lIHNlcmllcyBjaGFydCBhbmQgb25lIGZvciByZW5kZXJpbmcgYW5ub3Rh
dGlvbnMuCisgICAgICAgIChzY3JpcHRzKTogTW92ZWQuCisgICAgICAgIChwb3NpeFRpbWUpOiBB
ZGRlZC4gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIHNhbXBsZUNsdXN0ZXIuCisgICAgICAgIChkYXlJ
bk1pbGxpc2Vjb25kcyk6IERpdHRvLgorICAgICAgICAoc2FtcGxlQ2x1c3Rlcik6IE1vdmVkIGhl
cmUuIE1hZGUgdGhlIHNhbWUgY2x1c3RlciBtb3JlIGFydGlmaWNhbCBmb3IgYW4gZWFzaWVyIHRl
c3RpbmcuCisgICAgICAgIChjcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKTogTW92ZWQgb3V0
IG9mIG9uZSBvZiB0aGUgdGVzdHMuCisgICAgICAgIChyZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIp
OiBEaXR0by4KKworICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFz
ZS5qczoKKyAgICAgICAgKENoYXJ0UGFuZUJhc2UucHJvdG90eXBlLmNvbmZpZ3VyZSk6IEFkb3B0
ZWQgbmV3IGFjdGlvbnMgaW4gSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQuCisKKyAgICAgICAg
KiBwdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1zdGF0dXMtdmlldy5qczoKKyAgICAgICAgKENo
YXJ0U3RhdHVzVmlldy5wcm90b3R5cGUudXBkYXRlU3RhdHVzSWZOZWVkZWQpOiBSZW1vdmVkIGEg
c3VwZXJmbG91cyBjb25zb2xlLmxvZy4KKworICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRz
L2NoYXJ0LXN0eWxlcy5qczoKKyAgICAgICAgKENoYXJ0U3R5bGVzLm1haW5DaGFydE9wdGlvbnMp
OiBTZXQgem9vbUJ1dHRvbiB0byB0cnVlLiBJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCB1c2Vk
IHRvIGRldGVybWluZQorICAgICAgICB3aGV0aGVyIHRvIHNob3cgdGhlIHpvb20gYnV0dG9uIG9y
IG5vdCBiYXNlZCBvbiB0aGUgcHJlY2Vuc2Ugb2YgdGhlIHpvb20gY2FsbGJhY2suIFdlIG1hZGUg
aXQgZXhwbGljaXQuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9pbnRlcmFjdGl2
ZS10aW1lLXNlcmllcy1jaGFydC5qczoKKyAgICAgICAgKEludGVyYWN0aXZlVGltZVNlcmllc0No
YXJ0LnByb3RvdHlwZS5zZXRJbmRpY2F0b3IpOiBFeHBsaWNpdGx5IGNhbGwgX25vdGlmeVNlbGVj
dGlvbkNoYW5nZWQgd2l0aCBmYWxzZQorICAgICAgICBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gdW5k
ZWZpbmVkIHRvIGJlIHRyZWF0ZWQgYXMgZmFsc2V5LgorICAgICAgICAoSW50ZXJhY3RpdmVUaW1l
U2VyaWVzQ2hhcnQucHJvdG90eXBlLl9jcmVhdGVDYW52YXMpOiBVc2UgaWQgaW5zdGVhZCBvZiBz
ZWxlY3RvciB0byBmaW5kIGVsZW1lbnRzLgorICAgICAgICAoSW50ZXJhY3RpdmVUaW1lU2VyaWVz
Q2hhcnQuaHRtbFRlbXBsYXRlKToKKyAgICAgICAgKEludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0
LmNzc1RlbXBsYXRlKToKKyAgICAgICAgKEludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0LnByb3Rv
dHlwZS5fbW91c2VNb3ZlKTogRXhwbGljaXRseSBjYWxsIF9zdGFydE9yQ29udGludWVEcmFnZ2lu
ZyB3aXRoIGZhbHNlCisgICAgICAgIGluc3RlYWQgb2YgcmVseWluZyBvbiB1bmRlZmluZWQgdHJl
YXRlZCBhcyBmYWxzZXkuIEFsc28gYWRkZWQgdGhlIG1pc3NpbmcgY2FsbCB0byBlbnF1ZXVlVG9S
ZW5kZXIgZm91bmQKKyAgICAgICAgYnkgbmV3IHRlc3RzLiBUaGlzIHdhcyB3b3JraW5nIGZpbmUg
b24gdGhlIGRhc2hib2FyZCBkdWUgdG8gb3RoZXIgY29tcG9uZW50cyBpbnZva2luZyBlbnF1ZXVl
VG9SZW5kZXIKKyAgICAgICAgYnV0IHdvbid0IHdvcmsgaW4gYSBzdGFuZGFsb25lIGluc3RhbmNl
IG9mIEludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0LgorICAgICAgICAoSW50ZXJhY3RpdmVUaW1l
U2VyaWVzQ2hhcnQucHJvdG90eXBlLl9tb3VzZUxlYXZlKTogRGl0dG8sIGFkZGluZyB0aGUgbWlz
c2luZyBjYWxsIHRvIGVucXVldWVUb1JlbmRlci4KKyAgICAgICAgKEludGVyYWN0aXZlVGltZVNl
cmllc0NoYXJ0LnByb3RvdHlwZS5fY2xpY2spOiBSZW1vdmVkIHRoZSBhc3NpZ25tZW50IHRvIF9m
b3JjZVJlbmRlciB3aGVuIGNhbGxpbmcKKyAgICAgICAgX21vdXNlTW92ZSBpbiBhbiBlYXJseSBl
eGlzdCwgd2hpY2ggZG9lcyBzZXQgdGhpcyBmbGFnIGFuZCBpbnZva2VzIGVucXVldWVUb1JlbmRl
ciwgYW5kIGFkZGVkIHRoZSBtaXNzaW5nCisgICAgICAgIGNhbGwgdG8gZW5xdWV1ZVRvUmVuZGVy
IGluIHRoZSBvdGhlciBjb2RlIHBhdGguCisgICAgICAgIChJbnRlcmFjdGl2ZVRpbWVTZXJpZXND
aGFydC5wcm90b3R5cGUuX3N0YXJ0T3JDb250aW51ZURyYWdnaW5nKTogUmVwbGFjZWQgYW5ub3Rh
dGlvbnMub25jbGljayBjYWxsYmFjaworICAgICAgICBieSB0aGUgbmV3bHkgYWRkZWQgImFubm90
YXRpb25DbGljayIgYWN0aW9uLCBhbmQgYWRkZWQgdGhlIG1pc3NpbmcgY2FsbCB0byBlbnF1ZXVl
VG9SZW5kZXIuCisgICAgICAgIChJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydC5wcm90b3R5cGUu
X2VuZERyYWdnaW5nKTogVXNlIGFycm93IGZ1bmN0aW9uLgorICAgICAgICAoSW50ZXJhY3RpdmVU
aW1lU2VyaWVzQ2hhcnQucHJvdG90eXBlLl9ub3RpZnlJbmRpY2F0b3JDaGFuZ2VkKTogUmVwbGFj
ZWQgaW5kaWNhdG9yLm9uY2hhbmdlIGNhbGxiYWNrIGJ5CisgICAgICAgIHRoZSBuZXdseSBhZGRl
ZCAiaW5kaWNhdG9yQ2hhbmdlIiBhY3Rpb24uCisgICAgICAgIChJbnRlcmFjdGl2ZVRpbWVTZXJp
ZXNDaGFydC5wcm90b3R5cGUuX25vdGlmeVNlbGVjdGlvbkNoYW5nZWQpOiBSZXBsYWNlZCBzZWxl
Y3Rpb24ub25jaGFuZ2UgY2FsbGJhY2sgYnkKKyAgICAgICAgdGhlIG5ld2x5IGFkZGVkICJzZWxl
Y3Rpb25DaGFuZ2UiIGFjdGlvbi4KKyAgICAgICAgKEludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0
LnByb3RvdHlwZS5fcmVuZGVyQ2hhcnRDb250ZW50KTogU2hvdyB0aGUgem9vbSBidXR0b24gd2hl
biBvcHRpb25zLnpvb21CdXR0b24KKyAgICAgICAgaXMgc2V0IGluc3RlYWQgb2YgcmVseWluZyBv
biB0aGUgcHJlc2VuY2Ugb2Ygc2VsZWN0aW9uLm9uem9vbSBlc3BlY2lhbGx5IG5vdyB0aGF0IHRo
ZSBjYWxsYmFjayBoYXMgYmVlbgorICAgICAgICByZXBsYWNlZCBieSB0aGUgInpvb20iIGFjdGlv
bi4KKworICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL3RpbWUtc2VyaWVzLWNoYXJ0Lmpz
OgorICAgICAgICAoVGltZVNlcmllc0NoYXJ0LnByb3RvdHlwZS5zZXRBbm5vdGF0aW9ucyk6IEFk
ZGVkIHRoZSBtaXNzaW5nIGNhbGwgdG8gZW5xdWV1ZVRvUmVuZGVyLgorCisgICAgICAgICogcHVi
bGljL3YzL21haW4uanM6CisKIDIwMTctMDItMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTWFrZSBzYW1wbGluZyBhbGdvcml0aG0gbW9yZSBzdGFibGUgYW5k
IGludHJvZHVjZSBhbiBhYnN0cmFjdGlvbiBmb3Igc2FtcGxlZCBkYXRhCkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9pbmRleC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwJKHJldmlz
aW9uIDIxMjg1NykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2lu
ZGV4Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsOSBAQCBmdW5jdGlvbiB3YWl0
Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRlCiAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNv
bHZlKSA9PiB7CiAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IGNvbnRleHQuX2R1bW15Q29t
cG9uZW50KHJlc29sdmUpOwogICAgICAgICBjb250ZXh0LmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaW5zdGFuY2UuZWxlbWVudCgpKTsKLSAgICAgICAgaW5zdGFuY2UuZW5xdWV1ZVRvUmVuZGVy
KCk7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgaW5zdGFuY2UuZW5x
dWV1ZVRvUmVuZGVyKCk7CisgICAgICAgIH0sIDApOwogICAgIH0pOwogfQogCkBAIC0xMTIsOCAr
MTE0LDYxIEBAIGZ1bmN0aW9uIHdhaXQobWlsbGlzZWNvbmRzKQogICAgIH0pOwogfQogCitmdW5j
dGlvbiBjYW52YXNJbWFnZURhdGEoY2FudmFzKQoreworICAgIHJldHVybiBjYW52YXMuZ2V0Q29u
dGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0
KTsKK30KKworZnVuY3Rpb24gY2FudmFzUmVmVGVzdChjYW52YXMxLCBjYW52YXMyLCBzaG91bGRN
YXRjaCkKK3sKKyAgICBleHBlY3QoY2FudmFzMS5vZmZzZXRXaWR0aCkudG8uYmUoY2FudmFzMi5v
ZmZzZXRXaWR0aCk7CisgICAgZXhwZWN0KGNhbnZhczIub2Zmc2V0SGVpZ2h0KS50by5iZShjYW52
YXMyLm9mZnNldEhlaWdodCk7CisgICAgY29uc3QgZGF0YTEgPSBjYW52YXNJbWFnZURhdGEoY2Fu
dmFzMSkuZGF0YTsKKyAgICBjb25zdCBkYXRhMiA9IGNhbnZhc0ltYWdlRGF0YShjYW52YXMyKS5k
YXRhOworICAgIGV4cGVjdChkYXRhMS5sZW5ndGgpLnRvLmJlLmEoJ251bWJlcicpOworICAgIGV4
cGVjdChkYXRhMS5sZW5ndGgpLnRvLmJlKGRhdGEyLmxlbmd0aCk7CisKKyAgICBsZXQgbWF0Y2gg
PSB0cnVlOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YTEubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgaWYgKGRhdGExW2ldICE9IGRhdGEyW2ldKSB7CisgICAgICAgICAgICBtYXRjaCA9IGZh
bHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobWF0
Y2ggPT0gc2hvdWxkTWF0Y2gpCisgICAgICAgIHJldHVybjsKKworICAgIFtjYW52YXMxLCBjYW52
YXMyXS5mb3JFYWNoKChjYW52YXMpID0+IHsKKyAgICAgICAgbGV0IGltYWdlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnaW1nJyk7CisgICAgICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFV
UkwoKTsKKyAgICAgICAgaW1hZ2Uuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CisgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UpOworICAgIH0pOworCisgICAgdGhyb3cgbmV3
IEVycm9yKHNob3VsZE1hdGNoID8gJ0NhbnZhcyBjb250ZW50cyB3ZXJlIGRpZmZlcmVudCcgOiAn
Q2FudmFzIGNvbnRlbnRzIHdlcmUgaWRlbnRpY2FsJyk7Cit9CisKK2NvbnN0IENhbnZhc1Rlc3Qg
PSB7CisgICAgZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcykKKyAgICB7CisgICAg
ICAgIGNvbnN0IGNhbnZhc0NvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKyAgICAg
ICAgY2FudmFzQ29udGV4dC5maWxsU3R5bGUgPSAnd2hpdGUnOworICAgICAgICBjYW52YXNDb250
ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgfSwK
KworICAgIGhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykKKyAgICB7CisgICAgICAgIHJldHVy
biBjYW52YXNJbWFnZURhdGEoY2FudmFzKS5kYXRhLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZSAhPSAy
NTUpOworICAgIH0sCisKKyAgICBjYW52YXNJbWFnZURhdGEoY2FudmFzKSB7IHJldHVybiBjYW52
YXNJbWFnZURhdGEoY2FudmFzKTsgfSwKKyAgICBleHBlY3RDYW52YXNlc01hdGNoKGNhbnZhczEs
IGNhbnZhczIpIHsgcmV0dXJuIGNhbnZhc1JlZlRlc3QoY2FudmFzMSwgY2FudmFzMiwgdHJ1ZSk7
IH0sCisgICAgZXhwZWN0Q2FudmFzZXNNaXNtYXRjaChjYW52YXMxLCBjYW52YXMyKSB7IHJldHVy
biBjYW52YXNSZWZUZXN0KGNhbnZhczEsIGNhbnZhczIsIGZhbHNlKTsgfSwKK30KKwogbW9jaGEu
Y2hlY2tMZWFrcygpOwotbW9jaGEuZ2xvYmFscyhbJ2V4cGVjdCcsICdCcm93c2luZ0NvbnRleHQn
LCAnd2FpdCcsICd3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyJ10pOworbW9jaGEuZ2xvYmFscyhb
J2V4cGVjdCcsICdCcm93c2luZ0NvbnRleHQnLCAnQ2FudmFzVGVzdCcsICd3YWl0JywgJ3dhaXRG
b3JDb21wb25lbnRzVG9SZW5kZXInXSk7CiBtb2NoYS5ydW4oKTsKIAogPC9zY3JpcHQ+CkluZGV4
OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy90aW1lLXNlcmllcy1jaGFy
dC10ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nl
ci10ZXN0cy90aW1lLXNlcmllcy1jaGFydC10ZXN0cy5qcwkocmV2aXNpb24gMjEyODU3KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvdGltZS1zZXJpZXMtY2hhcnQt
dGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYgKzEsMTAyIEBACitjb25zdCBzY3JpcHRz
ID0gWworICAgICcuLi9zaGFyZWQvc3RhdGlzdGljcy5qcycsCisgICAgJ2luc3RydW1lbnRhdGlv
bi5qcycsCisgICAgJ21vZGVscy9kYXRhLW1vZGVsLmpzJywKKyAgICAnbW9kZWxzL21ldHJpYy5q
cycsCisgICAgJ21vZGVscy90aW1lLXNlcmllcy5qcycsCisgICAgJ21vZGVscy9tZWFzdXJlbWVu
dC1zZXQuanMnLAorICAgICdtb2RlbHMvbWVhc3VyZW1lbnQtY2x1c3Rlci5qcycsCisgICAgJ21v
ZGVscy9tZWFzdXJlbWVudC1hZGFwdG9yLmpzJywKKyAgICAnY29tcG9uZW50cy9iYXNlLmpzJywK
KyAgICAnY29tcG9uZW50cy90aW1lLXNlcmllcy1jaGFydC5qcycsCisgICAgJ2NvbXBvbmVudHMv
aW50ZXJhY3RpdmUtdGltZS1zZXJpZXMtY2hhcnQuanMnXTsKKworZnVuY3Rpb24gcG9zaXhUaW1l
KHN0cmluZykgeyByZXR1cm4gK25ldyBEYXRlKHN0cmluZyk7IH0KKworY29uc3QgZGF5SW5NaWxs
aXNlY29uZHMgPSAyNCAqIDM2MDAgKiAxMDAwOworCitjb25zdCBzYW1wbGVDbHVzdGVyID0gewor
ICAgICJjbHVzdGVyU3RhcnQiOiBwb3NpeFRpbWUoJzIwMTYtMDEtMDFUMDA6MDA6MDBaJyksCisg
ICAgImNsdXN0ZXJTaXplIjogNyAqIGRheUluTWlsbGlzZWNvbmRzLAorICAgICJzdGFydFRpbWUi
OiBwb3NpeFRpbWUoJzIwMTYtMDEtMDFUMDA6MDA6MDBaJyksCisgICAgImVuZFRpbWUiOiBwb3Np
eFRpbWUoJzIwMTYtMDEtMDhUMDA6MDA6MDBaJyksCisgICAgImxhc3RNb2RpZmllZCI6IHBvc2l4
VGltZSgnMjAxNi0wMS0xOFQwMDowMDowMFonKSwKKyAgICAiY2x1c3RlckNvdW50IjogMSwKKyAg
ICAic3RhdHVzIjogIk9LIiwKKyAgICAiZm9ybWF0TWFwIjogWworICAgICAgICAiaWQiLCAibWVh
biIsICJpdGVyYXRpb25Db3VudCIsICJzdW0iLCAic3F1YXJlU3VtIiwgIm1hcmtlZE91dGxpZXIi
LAorICAgICAgICAicmV2aXNpb25zIiwKKyAgICAgICAgImNvbW1pdFRpbWUiLCAiYnVpbGQiLCAi
YnVpbGRUaW1lIiwgImJ1aWxkTnVtYmVyIiwgImJ1aWxkZXIiCisgICAgXSwKKyAgICAiY29uZmln
dXJhdGlvbnMiOiB7CisgICAgICAgICJjdXJyZW50IjogWworICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgIDEwMDAsIDEwMCwgMSwgMTAwLCAxMDAsIGZhbHNlLAorICAgICAgICAgICAgICAg
IFsgWyAyMDAwLCAxLCAiNDAwMCIsIHBvc2l4VGltZSgnMjAxNi0wMS0wNVQxNzozNTowMFonKV0g
XSwKKyAgICAgICAgICAgICAgICBwb3NpeFRpbWUoJzIwMTYtMDEtMDVUMTc6MzU6MDBaJyksIDUw
MDAsIHBvc2l4VGltZSgnMjAxNi0wMS0wNVQxOToyMzowMFonKSwgIjEwIiwgNworICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAxMDAxLCAxMzEsIDEsIDEzMSwg
MTMxLCB0cnVlLAorICAgICAgICAgICAgICAgIFsgWyAyMDAxLCAxLCAiNDAwMSIsIHBvc2l4VGlt
ZSgnMjAxNi0wMS0wNVQxODo0MzowMVonKV0gXSwKKyAgICAgICAgICAgICAgICBwb3NpeFRpbWUo
JzIwMTYtMDEtMDVUMTg6NDM6MDFaJyksIDUwMDEsIHBvc2l4VGltZSgnMjAxNi0wMS0wNVQyMDo1
ODowMVonKSwgIjExIiwgNworICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAxMDAyLCAxMjIsIDEsIDEyMiwgMTIyLCBmYWxzZSwKKyAgICAgICAgICAgICAgICBb
IFsgMjAwMiwgMSwgIjQwMDIiLCBwb3NpeFRpbWUoJzIwMTYtMDEtMDVUMjA6MDE6MDJaJykgXSBd
LAorICAgICAgICAgICAgICAgIHBvc2l4VGltZSgnMjAxNi0wMS0wNVQyMDowMTowMlonKSwgNTAw
MiwgcG9zaXhUaW1lKCcyMDE2LTAxLTA1VDIyOjM3OjAyWicpLCAiMTIiLCA3CisgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIDEwMDMsIDExMywgMSwgMTEzLCAx
MTMsIGZhbHNlLAorICAgICAgICAgICAgICAgIFsgWyAyMDAzLCAxLCAiNDAwMyIsIHBvc2l4VGlt
ZSgnMjAxNi0wMS0wNVQyMzoxOTowM1onKSBdIF0sCisgICAgICAgICAgICAgICAgcG9zaXhUaW1l
KCcyMDE2LTAxLTA1VDIzOjE5OjAzWicpLCA1MDAzLCBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMjM6
MTk6MDNaJyksICIxMyIsIDcKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgMTAwNCwgMTI0LCAxLCAxMjQsIDEyNCwgZmFsc2UsCisgICAgICAgICAgICAgICAg
WyBbIDIwMDQsIDEsICI0MDA0IiwgcG9zaXhUaW1lKCcyMDE2LTAxLTA2VDAxOjUyOjA0WicpIF0g
XSwKKyAgICAgICAgICAgICAgICBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDE6NTI6MDRaJyksIDUw
MDQsIHBvc2l4VGltZSgnMjAxNi0wMS0wNlQwMjo0MjowNFonKSwgIjE0IiwgNworICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAxMDA1LCAxMTUsIDEsIDExNSwg
MTE1LCB0cnVlLAorICAgICAgICAgICAgICAgIFsgWyAyMDA1LCAxLCAiNDAwNSIsIHBvc2l4VGlt
ZSgnMjAxNi0wMS0wNlQwMzoyMjowNVonKSBdIF0sCisgICAgICAgICAgICAgICAgcG9zaXhUaW1l
KCcyMDE2LTAxLTA2VDAzOjIyOjA1WicpLCA1MDA1LCBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDY6
MDE6MDVaJyksICIxNSIsIDcKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgMTAwNiwgMTE2LCAxLCAxMTYsIDExNiwgZmFsc2UsCisgICAgICAgICAgICAgICAg
WyBbIDIwMDYsIDEsICI0MDA2IiwgcG9zaXhUaW1lKCcyMDE2LTAxLTA2VDA1OjU5OjA2WicpIF0g
XSwKKyAgICAgICAgICAgICAgICBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDU6NTk6MDZaJyksIDUw
MDYsIHBvc2l4VGltZSgnMjAxNi0wMS0wNlQwODozNDowNlonKSwgIjE2IiwgNworICAgICAgICAg
ICAgXQorICAgICAgICBdCisgICAgfSwKK307CisKK2Z1bmN0aW9uIGNyZWF0ZUNoYXJ0V2l0aFNh
bXBsZUNsdXN0ZXIoY29udGV4dCwgY2hhcnRPcHRpb25zID0ge30sIG9wdGlvbnMgPSB7fSkKK3sK
KyAgICBjb25zdCBUaW1lU2VyaWVzQ2hhcnQgPSBjb250ZXh0LnN5bWJvbHNbb3B0aW9ucy5pbnRl
cmFjdGl2ZUNoYXJ0ID8gJ0ludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0JyA6ICdUaW1lU2VyaWVz
Q2hhcnQnXTsKKyAgICBjb25zdCBNZWFzdXJlbWVudFNldCA9IGNvbnRleHQuc3ltYm9scy5NZWFz
dXJlbWVudFNldDsKKworICAgIGNvbnN0IGNoYXJ0ID0gbmV3IFRpbWVTZXJpZXNDaGFydChbCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHR5cGU6ICdjdXJyZW50JywKKyAgICAgICAgICAgIG1lYXN1
cmVtZW50U2V0OiBNZWFzdXJlbWVudFNldC5maW5kU2V0KDEsIDEsIDApLAorICAgICAgICAgICAg
aW50ZXJhY3RpdmU6IG9wdGlvbnMuaW50ZXJhY3RpdmUgfHwgZmFsc2UsCisgICAgICAgICAgICBp
bmNsdWRlT3V0bGllcnM6IG9wdGlvbnMuaW5jbHVkZU91dGxpZXJzIHx8IGZhbHNlCisgICAgICAg
IH1dLCBjaGFydE9wdGlvbnMpOworICAgIGNvbnN0IGVsZW1lbnQgPSBjaGFydC5lbGVtZW50KCk7
CisgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IG9wdGlvbnMud2lkdGggfHwgJzMwMHB4JzsKKyAg
ICBlbGVtZW50LnN0eWxlLmhlaWdodCA9IG9wdGlvbnMuaGVpZ2h0IHx8ICcxMDBweCc7CisgICAg
Y29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworCisgICAgcmV0dXJu
IGNoYXJ0OworfQorCitmdW5jdGlvbiByZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIocmVxdWVzdCkK
K3sKKyAgICBleHBlY3QocmVxdWVzdC51cmwpLnRvLmJlKCcuLi9kYXRhL21lYXN1cmVtZW50LXNl
dC0xLTEuanNvbicpOworICAgIGV4cGVjdChyZXF1ZXN0Lm1ldGhvZCkudG8uYmUoJ0dFVCcpOwor
ICAgIHJlcXVlc3QucmVzb2x2ZShzYW1wbGVDbHVzdGVyKTsKK30KIAogZGVzY3JpYmUoJ1RpbWVT
ZXJpZXNDaGFydCcsICgpID0+IHsKLSAgICBjb25zdCBzY3JpcHRzID0gWwotICAgICAgICAnLi4v
c2hhcmVkL3N0YXRpc3RpY3MuanMnLAotICAgICAgICAnaW5zdHJ1bWVudGF0aW9uLmpzJywKLSAg
ICAgICAgJ21vZGVscy9kYXRhLW1vZGVsLmpzJywKLSAgICAgICAgJ21vZGVscy9tZXRyaWMuanMn
LAotICAgICAgICAnbW9kZWxzL3RpbWUtc2VyaWVzLmpzJywKLSAgICAgICAgJ21vZGVscy9tZWFz
dXJlbWVudC1zZXQuanMnLAotICAgICAgICAnbW9kZWxzL21lYXN1cmVtZW50LWNsdXN0ZXIuanMn
LAotICAgICAgICAnbW9kZWxzL21lYXN1cmVtZW50LWFkYXB0b3IuanMnLAotICAgICAgICAnY29t
cG9uZW50cy9iYXNlLmpzJywKLSAgICAgICAgJ2NvbXBvbmVudHMvdGltZS1zZXJpZXMtY2hhcnQu
anMnXTsKIAogICAgIGl0KCdzaG91bGQgYmUgY29uc3RydWN0aWJsZSB3aXRoIGFuIGVtcHR5IHNv
dXJlYyBsaXN0IGFuZCBhbiBlbXB0eSBvcHRpb25zJywgKCkgPT4gewogICAgICAgICByZXR1cm4g
bmV3IEJyb3dzaW5nQ29udGV4dCgpLmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ1RpbWVTZXJpZXND
aGFydCcpLnRoZW4oKFRpbWVTZXJpZXNDaGFydCkgPT4gewpAQCAtMzgxLDgzICs0NjcsNiBAQCBk
ZXNjcmliZSgnVGltZVNlcmllc0NoYXJ0JywgKCkgPT4gewogCiAgICAgfSk7CiAKLSAgICAvLyBE
YXRhIGZyb20gaHR0cHM6Ly9wZXJmLndlYmtpdC5vcmcvdjMvIy9jaGFydHM/cGFuZUxpc3Q9KCgx
NS03NjkpKSZzaW5jZT0xNDc2NDI2NDg4NDY1Ci0gICAgY29uc3Qgc2FtcGxlQ2x1c3RlciA9IHsK
LSAgICAgICAgImNsdXN0ZXJTdGFydCI6IDk0NjY4NDgwMDAwMCwKLSAgICAgICAgImNsdXN0ZXJT
aXplIjogNTE4NDAwMDAwMCwKLSAgICAgICAgImNvbmZpZ3VyYXRpb25zIjogewotICAgICAgICAg
ICAgImN1cnJlbnQiOiBbCi0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAy
NjUzMDAzMSwgMTM1LjI2Mzc1LCA4MCwgMTA4MjEuMSwgMTQ4MTYyOC4xMywgZmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgIFsgWzI3MTczLCAxLCAiMjEwMDk2IiwgMTQ4MjM5ODU2Mjk1MF0gXSwK
LSAgICAgICAgICAgICAgICAgICAgMTQ4MjM5ODU2Mjk1MCwgNTI5OTksIDE0ODI0MTMyMjIzMTEs
ICIxMDg3NyIsIDcKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICAgICAgMjY1MzA3NzksIDE1My4yNjc1LCA4MCwgMTIyNjEuNCwgMTk5MTk4Ny40
LCB0cnVlLCAvLyBjaGFuZ2VkIHRvIHRydWUuCi0gICAgICAgICAgICAgICAgICAgIFsgWzI3MTc0
LDEsIjIxMDA5NyIsMTQ4MjQyNDg3MDcyOV0gXSwKLSAgICAgICAgICAgICAgICAgICAgMTQ4MjQy
NDg3MDcyOSwgNTMwMDAsIDE0ODI0MjQ5OTI3MzUsICIxMDg3OCIsIDcKLSAgICAgICAgICAgICAg
ICBdLAotICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgMjY1MzIyNzUsIDEz
NC4yNzI1LCA4MCwgMTA3NDEuOCwgMTQ1ODMxMS44OCwgZmFsc2UsCi0gICAgICAgICAgICAgICAg
ICAgIFsgWyAyNzE3NiwgMSwgIjIxMDEwMiIsIDE0ODI0MzE0NjQzNzEgXSBdLAotICAgICAgICAg
ICAgICAgICAgICAxNDgyNDMxNDY0MzcxLCA1MzAwMiwgMTQ4MjQzNjA0MTg2NSwgIjEwODc5Iiwg
NwotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICAgICAyNjU0NzIyNiwgMTUwLjk2MjUsIDgwLCAxMjA3NywgMTkwODYxNC45NCwgZmFsc2UsCi0g
ICAgICAgICAgICAgICAgICAgIFsgWyAyNzE5NSwgMSwgIjIxMDE2OCIsIDE0ODI4NTI0MTI3MzUg
XSBdLAotICAgICAgICAgICAgICAgICAgICAxNDgyODUyNDEyNzM1LCA1MzAyMiwgMTQ4Mjg1MjQ1
MjE0MywgIjEwOTAyIiwgNwotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgICAgICAyNjU1OTkxNSwgMTQxLjcyLCA4MCwgMTEzMzcuNiwgMTYzMzEy
Ni44LCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgWyBbIDI3MjExLCAxLCAiMjEwMjIyIiwg
MTQ4MzM0NzczMjA1MSBdIF0sCi0gICAgICAgICAgICAgICAgICAgIDE0ODMzNDc3MzIwNTEsIDUz
MDM5LCAxNDgzMzQ3OTI2NDI5LCAiMTA5MjQiLCA3Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgIDI2NTY0Mzg4LCAxMzguMTMxMjUsIDgw
LCAxMTA1MC41LCAxNTUxMTU3LjkzLCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgWyBbIDI3
MjE3LCAxLCAiMjEwMjMxIiwgMTQ4MzQxMjE3MTUzMSBdIF0sCi0gICAgICAgICAgICAgICAgICAg
IDE0ODM0MTIxNzE1MzEsIDUzMDQ1LCAxNDgzNDE1NDI2MDQ5LCAiMTA5MzAiLCA3Ci0gICAgICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgIDI2NTY4
ODY3LCAxNDQuMTYsIDgwLCAxMTUzMi44LCAxNjk0OTQxLjEsIGZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICBbIFsgMjcyMjIsIDEsICIyMTAyNDAiLCAxNDgzNDY5NTg0MzQ3IF0gXSwKLSAgICAg
ICAgICAgICAgICAgICAgMTQ4MzQ2OTU4NDM0NywgNTMwNTEsIDE0ODM0Njk2NDI5OTMsICIxMDkz
NSIsIDcKLSAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICBdCi0gICAgICAgIH0sCi0gICAg
ICAgICJmb3JtYXRNYXAiOiBbCi0gICAgICAgICAgICAiaWQiLCAibWVhbiIsICJpdGVyYXRpb25D
b3VudCIsICJzdW0iLCAic3F1YXJlU3VtIiwgIm1hcmtlZE91dGxpZXIiLAotICAgICAgICAgICAg
InJldmlzaW9ucyIsCi0gICAgICAgICAgICAiY29tbWl0VGltZSIsICJidWlsZCIsICJidWlsZFRp
bWUiLCAiYnVpbGROdW1iZXIiLCAiYnVpbGRlciIKLSAgICAgICAgXSwKLSAgICAgICAgInN0YXJ0
VGltZSI6IDE0ODA2MzY4MDAwMDAsCi0gICAgICAgICJlbmRUaW1lIjogMTQ4NTgyMDgwMDAwMCwK
LSAgICAgICAgImxhc3RNb2RpZmllZCI6IDE0ODQxMDU3Mzg3MzYsCi0gICAgICAgICJjbHVzdGVy
Q291bnQiOiAxLAotICAgICAgICAiZWxhcHNlZFRpbWUiOiA1Ni40MjE5OTUxNjI5NjQsCi0gICAg
ICAgICJzdGF0dXMiOiAiT0siCi0gICAgfTsKLQotICAgIGZ1bmN0aW9uIGNyZWF0ZUNoYXJ0V2l0
aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwgY2hhcnRPcHRpb25zID0ge30sIG9wdGlvbnMgPSB7d2lk
dGg6ICc1MDBweCcsIGhlaWdodDogJzE1MHB4J30pCi0gICAgewotICAgICAgICBjb25zdCBUaW1l
U2VyaWVzQ2hhcnQgPSBjb250ZXh0LnN5bWJvbHMuVGltZVNlcmllc0NoYXJ0OwotICAgICAgICBj
b25zdCBNZWFzdXJlbWVudFNldCA9IGNvbnRleHQuc3ltYm9scy5NZWFzdXJlbWVudFNldDsKLQot
ICAgICAgICBjb25zdCBjaGFydCA9IG5ldyBUaW1lU2VyaWVzQ2hhcnQoW3t0eXBlOiAnY3VycmVu
dCcsIG1lYXN1cmVtZW50U2V0OiBNZWFzdXJlbWVudFNldC5maW5kU2V0KDEsIDEsIDApfV0sIGNo
YXJ0T3B0aW9ucyk7Ci0gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBjaGFydC5lbGVtZW50KCk7Ci0g
ICAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSBvcHRpb25zLndpZHRoOwotICAgICAgICBlbGVt
ZW50LnN0eWxlLmhlaWdodCA9IG9wdGlvbnMuaGVpZ2h0OwotICAgICAgICBjb250ZXh0LmRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Ci0KLSAgICAgICAgcmV0dXJuIGNoYXJ0Owot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIHJlc3BvbmRXaXRoU2FtcGxlQ2x1c3RlcihyZXF1ZXN0KQot
ICAgIHsKLSAgICAgICAgZXhwZWN0KHJlcXVlc3QudXJsKS50by5iZSgnLi4vZGF0YS9tZWFzdXJl
bWVudC1zZXQtMS0xLmpzb24nKTsKLSAgICAgICAgZXhwZWN0KHJlcXVlc3QubWV0aG9kKS50by5i
ZSgnR0VUJyk7Ci0gICAgICAgIHJlcXVlc3QucmVzb2x2ZShzYW1wbGVDbHVzdGVyKTsKLSAgICB9
Ci0KICAgICBkZXNjcmliZSgnZmV0Y2hNZWFzdXJlbWVudFNldHMnLCAoKSA9PiB7CiAKICAgICAg
ICAgaXQoJ3Nob3VsZCBmZXRjaCB0aGUgbWVhc3VyZW1lbnQgc2V0IGFuZCBjcmVhdGUgYSBjYW52
YXMgZWxlbWVudCB1cG9uIHJlY2VpdmluZyB0aGUgZGF0YScsICgpID0+IHsKQEAgLTQ3NCw2ICs0
ODMsNyBAQCBkZXNjcmliZSgnVGltZVNlcmllc0NoYXJ0JywgKCkgPT4gewogCiAgICAgICAgICAg
ICAgICAgZXhwZWN0KGNoYXJ0LmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKSkudG8u
YmUobnVsbCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5k
ZXIoY29udGV4dCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9n
KCdkb25lJykKICAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmNvbnRlbnQoKS5xdWVy
eVNlbGVjdG9yKCdjYW52YXMnKSkudG8ubm90LmJlKG51bGwpOwogICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgfSk7CkBAIC01MzAsNTcgKzU0MCw5NCBAQCBkZXNjcmliZSgnVGltZVNl
cmllc0NoYXJ0JywgKCkgPT4gewogICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGZ1bmN0aW9u
IGZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpCi0gICAgewotICAgICAgICBjb25z
dCBjYW52YXNDb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0gICAgICAgIGNhbnZh
c0NvbnRleHQuZmlsbFN0eWxlID0gJ3doaXRlJzsKLSAgICAgICAgY2FudmFzQ29udGV4dC5maWxs
UmVjdCgwLCAwLCBjYW52YXMub2Zmc2V0V2lkdGgsIGNhbnZhcy5vZmZzZXRIZWlnaHQpOwotICAg
IH0KLQotICAgIGZ1bmN0aW9uIGhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBjYW52YXNJbWFnZURhdGEoY2FudmFzKS5kYXRhLnNvbWUoKHZhbHVlKSA9
PiB2YWx1ZSAhPSAyNTUpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNhbnZhc0ltYWdlRGF0YShj
YW52YXMpCi0gICAgewotICAgICAgICByZXR1cm4gY2FudmFzLmdldENvbnRleHQoJzJkJykuZ2V0
SW1hZ2VEYXRhKDAsIDAsIGNhbnZhcy5vZmZzZXRXaWR0aCwgY2FudmFzLm9mZnNldEhlaWdodCk7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2FudmFzUmVmVGVzdChjYW52YXMxLCBjYW52YXMyLCBz
aG91bGRNYXRjaCkKLSAgICB7Ci0gICAgICAgIGV4cGVjdChjYW52YXMxLm9mZnNldFdpZHRoKS50
by5iZShjYW52YXMyLm9mZnNldFdpZHRoKTsKLSAgICAgICAgZXhwZWN0KGNhbnZhczIub2Zmc2V0
SGVpZ2h0KS50by5iZShjYW52YXMyLm9mZnNldEhlaWdodCk7Ci0gICAgICAgIGNvbnN0IGRhdGEx
ID0gY2FudmFzSW1hZ2VEYXRhKGNhbnZhczEpLmRhdGE7Ci0gICAgICAgIGNvbnN0IGRhdGEyID0g
Y2FudmFzSW1hZ2VEYXRhKGNhbnZhczIpLmRhdGE7Ci0gICAgICAgIGV4cGVjdChkYXRhMS5sZW5n
dGgpLnRvLmJlLmEoJ251bWJlcicpOwotICAgICAgICBleHBlY3QoZGF0YTEubGVuZ3RoKS50by5i
ZShkYXRhMi5sZW5ndGgpOwotCi0gICAgICAgIGxldCBtYXRjaCA9IHRydWU7Ci0gICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgZGF0YTEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChk
YXRhMVtpXSAhPSBkYXRhMltpXSkgewotICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBkZXNj
cmliZSgnc2FtcGxlZFRpbWVTZXJpZXNEYXRhJywgKCkgPT4geworICAgICAgICBpdCgnc2hvdWxk
IG5vdCBjb250YWluIGFuIG91dGxpZXIgd2hlbiBpbmNsdWRlT3V0bGllcnMgaXMgZmFsc2UnLCAo
KSA9PiB7CisgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgp
OworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnQ29t
cG9uZW50QmFzZScsICdUaW1lU2VyaWVzQ2hhcnQnLCAnTWVhc3VyZW1lbnRTZXQnLCAnTW9ja1Jl
bW90ZUFQSScpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gY3Jl
YXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCB7fSwge2luY2x1ZGVPdXRsaWVyczog
ZmFsc2V9KTsKIAotICAgICAgICBpZiAobWF0Y2ggPT0gc2hvdWxkTWF0Y2gpCi0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKHNhbXBsZUNsdXN0ZXIu
c3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAgICAgICAgIGNoYXJ0
LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7CisgICAgICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1w
bGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdKTsKIAot
ICAgICAgICBbY2FudmFzMSwgY2FudmFzMl0uZm9yRWFjaCgoY2FudmFzKSA9PiB7Ci0gICAgICAg
ICAgICBsZXQgaW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKLSAgICAgICAg
ICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoKTsKLSAgICAgICAgICAgIGltYWdlLnN0
eWxlLmRpc3BsYXkgPSAnYmxvY2snOwotICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChpbWFnZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9S
ZW5kZXIoY29udGV4dCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZp
ZXcgPSBjaGFydC5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1cnJlbnQnKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0KHZpZXcubGVuZ3RoKCkpLnRvLmJlKDUpOworICAgICAgICAgICAgICAg
ICAgICBmb3IgKGxldCBwb2ludCBvZiB2aWV3KQorICAgICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0KHBvaW50Lm1hcmtlZE91dGxpZXIpLnRvLmJlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIAotICAgICAgICB0aHJvdyBuZXcgRXJy
b3Ioc2hvdWxkTWF0Y2ggPyAnQ2FudmFzIGNvbnRlbnRzIHdlcmUgZGlmZmVyZW50JyA6ICdDYW52
YXMgY29udGVudHMgd2VyZSBpZGVudGljYWwnKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gZXhwZWN0
Q2FudmFzZXNNYXRjaChjYW52YXMxLCBjYW52YXMyKSB7IHJldHVybiBjYW52YXNSZWZUZXN0KGNh
bnZhczEsIGNhbnZhczIsIHRydWUpOyB9Ci0gICAgZnVuY3Rpb24gZXhwZWN0Q2FudmFzZXNNaXNt
YXRjaChjYW52YXMxLCBjYW52YXMyKSB7IHJldHVybiBjYW52YXNSZWZUZXN0KGNhbnZhczEsIGNh
bnZhczIsIGZhbHNlKTsgfQorICAgICAgICBpdCgnc2hvdWxkIGNvbnRhaW4gZXZlcnkgb3V0bGll
ciB3aGVuIGluY2x1ZGVPdXRsaWVycyBpcyB0cnVlJywgKCkgPT4geworICAgICAgICAgICAgY29u
c3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgICAgIHJldHVybiBj
b250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2UnLCAnVGltZVNlcmll
c0NoYXJ0JywgJ01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1vdGVBUEknKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICBjb25zdCBjaGFydCA9IGNyZWF0ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0
ZXIoY29udGV4dCwge30sIHtpbmNsdWRlT3V0bGllcnM6IHRydWV9KTsKIAotICAgIGRlc2NyaWJl
KCdyZW5kZXInLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKHNhbXBs
ZUNsdXN0ZXIuc3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAgICAg
ICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7CisgICAgICAgICAgICAgICAgcmVzcG9u
ZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzBdKTsKKworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVy
KGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3ID0g
Y2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50Jyk7CisgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdCh2aWV3Lmxlbmd0aCgpKS50by5iZSg3KTsKKyAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0KHZpZXcuZmluZFBvaW50QnlJbmRleCgxKS5tYXJrZWRPdXRsaWVyKS50by5iZSh0cnVl
KTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXcuZmluZFBvaW50QnlJbmRleCg1KS5t
YXJrZWRPdXRsaWVyKS50by5iZSh0cnVlKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG9ubHkgY29udGFpbiBk
YXRhIHBvaW50cyBpbiB0aGUgZG9tYWluIGFuZCBvbmUgcHJlY2VkaW5nIHBvaW50IHdoZW4gdGhl
cmUgYXJlIG5vIHN1Y2NlZWRpbmcgcG9pbnRzJywgKCkgPT4geworICAgICAgICAgICAgY29uc3Qg
Y29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgICAgIHJldHVybiBjb250
ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2UnLCAnVGltZVNlcmllc0No
YXJ0JywgJ01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1vdGVBUEknKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBjaGFydCA9IGNyZWF0ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIo
Y29udGV4dCwge30sIHtpbmNsdWRlT3V0bGllcnM6IHRydWV9KTsKKworICAgICAgICAgICAgICAg
IGNoYXJ0LnNldERvbWFpbihwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDA6MDA6MDBaJyksIHBvc2l4
VGltZSgnMjAxNi0wMS0wN1QwMDowMDowMFonKSk7CisgICAgICAgICAgICAgICAgY2hhcnQuZmV0
Y2hNZWFzdXJlbWVudFNldHMoKTsKKyAgICAgICAgICAgICAgICByZXNwb25kV2l0aFNhbXBsZUNs
dXN0ZXIoY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0pOworCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZpZXcgPSBjaGFydC5zYW1wbGVk
VGltZVNlcmllc0RhdGEoJ2N1cnJlbnQnKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KFsu
Li52aWV3XS5tYXAoKHBvaW50KSA9PiBwb2ludC5pZCkpLnRvLmJlLmVxbChbMTAwMywgMTAwNCwg
MTAwNSwgMTAwNl0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgb25seSBjb250YWluIGRhdGEgcG9pbnRzIGlu
IHRoZSBkb21haW4gYW5kIG9uZSBzdWNjZWVkaW5nIHBvaW50IHdoZW4gdGhlcmUgYXJlIG5vIHBy
ZWNlZGluZyBwb2ludHMnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3
IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuaW1wb3J0U2Ny
aXB0cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScsICdUaW1lU2VyaWVzQ2hhcnQnLCAnTWVhc3Vy
ZW1lbnRTZXQnLCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXJ0ID0gY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCB7fSwg
e2luY2x1ZGVPdXRsaWVyczogdHJ1ZX0pOworCisgICAgICAgICAgICAgICAgY2hhcnQuc2V0RG9t
YWluKHBvc2l4VGltZSgnMjAxNi0wMS0wNVQwMDowMDowMFonKSwgcG9zaXhUaW1lKCcyMDE2LTAx
LTA2VDAwOjAwOjAwWicpKTsKKyAgICAgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50
U2V0cygpOworICAgICAgICAgICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7Cisg
ICAgICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5N
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdKTsKKworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0
Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2aWV3ID0gY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50
Jyk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChbLi4udmlld10ubWFwKChwb2ludCkgPT4g
cG9pbnQuaWQpKS50by5iZS5lcWwoWzEwMDAsIDEwMDEsIDEwMDIsIDEwMDMsIDEwMDRdKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAg
ICBpdCgnc2hvdWxkIG9ubHkgY29udGFpbiBkYXRhIHBvaW50cyBpbiB0aGUgZG9tYWluIGFuZCBv
bmUgcHJlY2VkaW5nIHBvaW50IGFuZCBvbmUgc3VjY2VlZGluZyBwb2ludCcsICgpID0+IHsKKyAg
ICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7CisgICAgICAg
ICAgICByZXR1cm4gY29udGV4dC5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdDb21wb25lbnRCYXNl
JywgJ1RpbWVTZXJpZXNDaGFydCcsICdNZWFzdXJlbWVudFNldCcsICdNb2NrUmVtb3RlQVBJJyku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhcnQgPSBjcmVhdGVDaGFydFdp
dGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIHt9LCB7aW5jbHVkZU91dGxpZXJzOiB0cnVlfSk7CisK
KyAgICAgICAgICAgICAgICBjaGFydC5zZXREb21haW4ocG9zaXhUaW1lKCcyMDE2LTAxLTA1VDIx
OjAwOjAwWicpLCBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDI6MDA6MDBaJykpOworICAgICAgICAg
ICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7CisgICAgICAgICAgICAgICAgcmVz
cG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzBdKTsKKworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVu
ZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3
ID0gY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50Jyk7CisgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdChbLi4udmlld10ubWFwKChwb2ludCkgPT4gcG9pbnQuaWQpKS50by5iZS5l
cWwoWzEwMDIsIDEwMDMsIDEwMDQsIDEwMDVdKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKIAorICAgIGRlc2NyaWJlKCdyZW5kZXIn
LCAoKSA9PiB7CiAgICAgICAgIGl0KCdzaG91bGQgdXBkYXRlIHRoZSBjYW52YXMgc2l6ZSBhbmQg
aXRzIGNvbnRlbnQgYWZ0ZXIgdGhlIHdpbmRvdyBoYXMgYmVlbiByZXNpemVkJywgKCkgPT4gewog
ICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKICAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJh
c2UnLCAnVGltZVNlcmllc0NoYXJ0JywgJ01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1vdGVBUEkn
KS50aGVuKCgpID0+IHsKQEAgLTYwMiw3ICs2NDksNiBAQCBkZXNjcmliZSgnVGltZVNlcmllc0No
YXJ0JywgKCkgPT4gewogICAgICAgICAgICAgICAgIGxldCBjYW52YXM7CiAgICAgICAgICAgICAg
ICAgbGV0IG9yaWdpbmFsV2lkdGg7CiAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbmFsSGVpZ2h0
OwotICAgICAgICAgICAgICAgIGNvbnN0IGRwciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8
IDE7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29u
dGV4dCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIGV4cGVjdChkYXRhQ2hhbmdl
Q291bnQpLnRvLmJlKDEpOwogICAgICAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuc2FtcGxl
ZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50JykpLnRvLm5vdC5iZShudWxsKTsKQEAgLTYxMSwxMCAr
NjU3LDEwIEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7CiAKICAgICAgICAg
ICAgICAgICAgICAgb3JpZ2luYWxXaWR0aCA9IGNhbnZhcy5vZmZzZXRXaWR0aDsKICAgICAgICAg
ICAgICAgICAgICAgb3JpZ2luYWxIZWlnaHQgPSBjYW52YXMub2Zmc2V0SGVpZ2h0OwotICAgICAg
ICAgICAgICAgICAgICBleHBlY3Qob3JpZ2luYWxXaWR0aCkudG8uYmUoZHByICogY29udGV4dC5k
b2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KG9y
aWdpbmFsSGVpZ2h0KS50by5iZShkcHIgKiBjb250ZXh0LmRvY3VtZW50LmJvZHkub2Zmc2V0SGVp
Z2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KG9yaWdpbmFsV2lkdGgpLnRvLmJlKGNv
bnRleHQuZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCk7CisgICAgICAgICAgICAgICAgICAgIGV4
cGVjdChvcmlnaW5hbEhlaWdodCkudG8uYmUoY29udGV4dC5kb2N1bWVudC5ib2R5Lm9mZnNldEhl
aWdodCk7CiAKLSAgICAgICAgICAgICAgICAgICAgZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNr
KGNhbnZhcyk7CisgICAgICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9y
ZVJlZHJhd0NoZWNrKGNhbnZhcyk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaWZyYW1l
LnN0eWxlLndpZHRoID0gY29udGV4dC5pZnJhbWUub2Zmc2V0V2lkdGggKiAyICsgJ3B4JzsKICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQo
J3Jlc2l6ZScpKTsKIApAQCAtNjI1LDkgKzY3MSw5IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hh
cnQnLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdChkYXRhQ2hhbmdlQ291bnQpLnRvLmJlKDIpOwogICAgICAgICAgICAg
ICAgICAgICBleHBlY3QoY2FudmFzLm9mZnNldFdpZHRoKS50by5iZS5ncmVhdGVyVGhhbihvcmln
aW5hbFdpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGNhbnZhcy5vZmZzZXRXaWR0
aCkudG8uYmUoZHByICogY29udGV4dC5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKTsKKyAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0KGNhbnZhcy5vZmZzZXRXaWR0aCkudG8uYmUoY29udGV4dC5k
b2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKTsKICAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGNh
bnZhcy5vZmZzZXRIZWlnaHQpLnRvLmJlKG9yaWdpbmFsSGVpZ2h0KTsKLSAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0KGhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRydWUpOwor
ICAgICAgICAgICAgICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3
bihjYW52YXMpKS50by5iZSh0cnVlKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9KTsKQEAgLTY1MCw3ICs2OTYsNiBAQCBkZXNjcmliZSgnVGltZVNlcmll
c0NoYXJ0JywgKCkgPT4gewogCiAgICAgICAgICAgICAgICAgbGV0IGNhbnZhczsKICAgICAgICAg
ICAgICAgICBsZXQgZGF0YTsKLSAgICAgICAgICAgICAgICBjb25zdCBkcHIgPSB3aW5kb3cuZGV2
aWNlUGl4ZWxSYXRpbyB8fCAxOwogICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9u
ZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgICAgICBl
eHBlY3QoZGF0YUNoYW5nZUNvdW50KS50by5iZSgxKTsKICAgICAgICAgICAgICAgICAgICAgZGF0
YSA9IGNoYXJ0LnNhbXBsZWRUaW1lU2VyaWVzRGF0YSgnY3VycmVudCcpOwpAQCAtNjU4LDIzICs3
MDMsMjMgQEAgZGVzY3JpYmUoJ1RpbWVTZXJpZXNDaGFydCcsICgpID0+IHsKICAgICAgICAgICAg
ICAgICAgICAgY2FudmFzID0gY2hhcnQuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycp
OwogICAgICAgICAgICAgICAgICAgICBleHBlY3QoY2FudmFzKS50by5ub3QuYmUobnVsbCk7CiAK
LSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGNhbnZhcy5vZmZzZXRXaWR0aCkudG8uYmUoZHBy
ICogMTAwKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGNhbnZhcy5vZmZzZXRIZWlnaHQp
LnRvLmJlKGRwciAqIDEwMCk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChjYW52YXMub2Zm
c2V0V2lkdGgpLnRvLmJlKDEwMCk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChjYW52YXMu
b2Zmc2V0SGVpZ2h0KS50by5iZSgxMDApOwogCi0gICAgICAgICAgICAgICAgICAgIGZpbGxDYW52
YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOworICAgICAgICAgICAgICAgICAgICBDYW52YXNU
ZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOwogICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmlmcmFtZS5zdHlsZS53aWR0aCA9IGNvbnRleHQuaWZyYW1lLm9mZnNldFdp
ZHRoICogMiArICdweCc7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZ2xvYmFsLmRpc3Bh
dGNoRXZlbnQobmV3IEV2ZW50KCdyZXNpemUnKSk7CiAKLSAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0KGNhbnZhcy5vZmZzZXRXaWR0aCkudG8uYmUoZHByICogMTAwKTsKLSAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0KGNhbnZhcy5vZmZzZXRIZWlnaHQpLnRvLmJlKGRwciAqIDEwMCk7CisgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdChjYW52YXMub2Zmc2V0V2lkdGgpLnRvLmJlKDEwMCk7Cisg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdChjYW52YXMub2Zmc2V0SGVpZ2h0KS50by5iZSgxMDAp
OwogCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVy
KGNvbnRleHQpOwogICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAg
ICAgICAgICBleHBlY3QoZGF0YUNoYW5nZUNvdW50KS50by5iZSgxKTsKICAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0KGNoYXJ0LnNhbXBsZWRUaW1lU2VyaWVzRGF0YSgnY3VycmVudCcpKS50by5i
ZShkYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGNhbnZhcy5vZmZzZXRXaWR0aCku
dG8uYmUoZHByICogMTAwKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGNhbnZhcy5vZmZz
ZXRIZWlnaHQpLnRvLmJlKGRwciAqIDEwMCk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdCho
YXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZShmYWxzZSk7CisgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdChjYW52YXMub2Zmc2V0V2lkdGgpLnRvLmJlKDEwMCk7CisgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdChjYW52YXMub2Zmc2V0SGVpZ2h0KS50by5iZSgxMDApOworICAgICAg
ICAgICAgICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52
YXMpKS50by5iZShmYWxzZSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSk7CkBAIC03MjEsMTEgKzc2NiwxMSBAQCBkZXNjcmliZSgnVGltZVNlcmllc0No
YXJ0JywgKCkgPT4gewogICAgICAgICAgICAgICAgICAgICBsZXQgY2FudmFzV2l0aG91dFlBeGlz
ID0gY2hhcnRXaXRob3V0WUF4aXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOwog
ICAgICAgICAgICAgICAgICAgICBsZXQgY2FudmFzV2l0aFlBeGlzMSA9IGNoYXJ0V2l0aFlBeGlz
MS5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFzJyk7CiAgICAgICAgICAgICAgICAgICAg
IGxldCBjYW52YXNXaXRoWUF4aXMyID0gY2hhcnRXaXRoWUF4aXMyLmNvbnRlbnQoKS5xdWVyeVNl
bGVjdG9yKCdjYW52YXMnKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0Q2FudmFzZXNNaXNt
YXRjaChjYW52YXNXaXRob3V0WUF4aXMsIGNhbnZhc1dpdGhZQXhpczEpOwotICAgICAgICAgICAg
ICAgICAgICBleHBlY3RDYW52YXNlc01pc21hdGNoKGNhbnZhc1dpdGhvdXRZQXhpcywgY2FudmFz
V2l0aFlBeGlzMSk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdENhbnZhc2VzTWlzbWF0Y2go
Y2FudmFzV2l0aFlBeGlzMSwgY2FudmFzV2l0aFlBeGlzMik7CisgICAgICAgICAgICAgICAgICAg
IENhbnZhc1Rlc3QuZXhwZWN0Q2FudmFzZXNNaXNtYXRjaChjYW52YXNXaXRob3V0WUF4aXMsIGNh
bnZhc1dpdGhZQXhpczEpOworICAgICAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmV4cGVjdENh
bnZhc2VzTWlzbWF0Y2goY2FudmFzV2l0aG91dFlBeGlzLCBjYW52YXNXaXRoWUF4aXMxKTsKKyAg
ICAgICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5leHBlY3RDYW52YXNlc01pc21hdGNoKGNhbnZh
c1dpdGhZQXhpczEsIGNhbnZhc1dpdGhZQXhpczIpOwogCi0gICAgICAgICAgICAgICAgICAgIGxl
dCBjb250ZW50MSA9IGNhbnZhc0ltYWdlRGF0YShjYW52YXNXaXRoWUF4aXMxKTsKKyAgICAgICAg
ICAgICAgICAgICAgbGV0IGNvbnRlbnQxID0gQ2FudmFzVGVzdC5jYW52YXNJbWFnZURhdGEoY2Fu
dmFzV2l0aFlBeGlzMSk7CiAgICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZEdyaWRMaW5lID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHkgPSAwOyB5IDwgY29udGVudDEu
aGVpZ2h0OyB5KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbmRPZlkgPSBjb250
ZW50MS53aWR0aCAqIDQgKiB5OwpAQCAtNzQxLDcgKzc4Niw1ODcgQEAgZGVzY3JpYmUoJ1RpbWVT
ZXJpZXNDaGFydCcsICgpID0+IHsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJlbmRlciBhbm5vdGF0aW9ucycs
ICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0
KCk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdD
b21wb25lbnRCYXNlJywgJ1RpbWVTZXJpZXNDaGFydCcsICdJbnRlcmFjdGl2ZVRpbWVTZXJpZXND
aGFydCcsICdNZWFzdXJlbWVudFNldCcsICdNb2NrUmVtb3RlQVBJJykudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHthbm5vdGF0aW9uczogeworICAgICAgICAg
ICAgICAgICAgICB0ZXh0U3R5bGU6ICcjMDAwJywKKyAgICAgICAgICAgICAgICAgICAgdGV4dEJh
Y2tncm91bmQ6ICcjZmZmJywKKyAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IDMsCisgICAg
ICAgICAgICAgICAgICAgIGJhckhlaWdodDogNywKKyAgICAgICAgICAgICAgICAgICAgYmFyU3Bh
Y2luZzogMn19OworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0V2l0aG91dEFubm90YXRpb25z
ID0gY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBvcHRpb25zKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBjaGFydFdpdGhBbm5vdGF0aW9ucyA9IGNyZWF0ZUNoYXJ0V2l0aFNh
bXBsZUNsdXN0ZXIoY29udGV4dCwgb3B0aW9ucyk7CisKKyAgICAgICAgICAgICAgICBjaGFydFdp
dGhvdXRBbm5vdGF0aW9ucy5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIHNhbXBs
ZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICAgICAgY2hhcnRXaXRob3V0QW5ub3RhdGlv
bnMuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKKyAgICAgICAgICAgICAgICByZXNwb25kV2l0aFNh
bXBsZUNsdXN0ZXIoY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0pOwor
CisgICAgICAgICAgICAgICAgY2hhcnRXaXRoQW5ub3RhdGlvbnMuc2V0RG9tYWluKHNhbXBsZUNs
dXN0ZXIuc3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAgICAgICAg
IGNoYXJ0V2l0aEFubm90YXRpb25zLmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7CisKKyAgICAgICAg
ICAgICAgICBsZXQgY2FudmFzV2l0aEFubm90YXRpb25zOworICAgICAgICAgICAgICAgIHJldHVy
biB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgICAgICAgICBjb25zdCBkaWZmID0gc2FtcGxlQ2x1c3Rlci5lbmRUaW1lIC0gc2FtcGxl
Q2x1c3Rlci5zdGFydFRpbWU7CisgICAgICAgICAgICAgICAgICAgIGNoYXJ0V2l0aEFubm90YXRp
b25zLnNldEFubm90YXRpb25zKFt7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWU6
IHNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lICsgZGlmZiAvIDQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBlbmRUaW1lOiBzYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSArIGRpZmYgLyAyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgbGFiZWw6ICdoZWxsbywgd29ybGQnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZmlsbFN0eWxlOiAncmdiKDAsIDAsIDI1NSknLAorICAgICAgICAgICAgICAgICAg
ICB9XSk7CisKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzV2l0aEFubm90YXRpb25zID0gY2hh
cnRXaXRoQW5ub3RhdGlvbnMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOworICAg
ICAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhj
YW52YXNXaXRoQW5ub3RhdGlvbnMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZv
ckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgICAgICAgICB9KS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVl
blJlZHJhd24oY2FudmFzV2l0aEFubm90YXRpb25zKSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbnZhc1dpdGhvdXRBbm5vdGF0aW9u
cyA9IGNoYXJ0V2l0aG91dEFubm90YXRpb25zLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdjYW52
YXMnKTsKKyAgICAgICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5leHBlY3RDYW52YXNlc01pc21h
dGNoKGNhbnZhc1dpdGhBbm5vdGF0aW9ucywgY2FudmFzV2l0aG91dEFubm90YXRpb25zKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKICAgICB9KTsK
IAogfSk7CiAKK2Rlc2NyaWJlKCdJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCcsICgpID0+IHsK
KworICAgIGl0KCdzaG91bGQgY2hhbmdlIHRoZSBpbmRpY2F0b3IgdG8gdGhlIHBvaW50IGNsb3Nl
c3QgdG8gdGhlIGxhc3QgbW91c2UgbW92ZSBwb3NpdGlvbicsICgpID0+IHsKKyAgICAgICAgY29u
c3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScsICdUaW1lU2VyaWVzQ2hh
cnQnLCAnSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQnLCAnTWVhc3VyZW1lbnRTZXQnLCAnTW9j
a1JlbW90ZUFQSScpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgY29uc3QgY2hhcnQgPSBjcmVh
dGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIHt9LCB7aW50ZXJhY3RpdmVDaGFydDog
dHJ1ZSwgaW50ZXJhY3RpdmU6IHRydWV9KTsKKworICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWlu
KHNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAg
ICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKKyAgICAgICAgICAgIHJlc3BvbmRX
aXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sw
XSk7CisKKyAgICAgICAgICAgIGNvbnN0IGluZGljYXRvckNoYW5nZUNhbGxzID0gW107CisgICAg
ICAgICAgICBjaGFydC5saXN0ZW5Ub0FjdGlvbignaW5kaWNhdG9yQ2hhbmdlJywgKC4uLmFyZ3Mp
ID0+IGluZGljYXRvckNoYW5nZUNhbGxzLnB1c2goYXJncykpOworCisgICAgICAgICAgICBsZXQg
c2VsZWN0aW9uQ2hhbmdlQ291bnQgPSAwOworICAgICAgICAgICAgY2hhcnQubGlzdGVuVG9BY3Rp
b24oJ3NlbGVjdGlvbkNoYW5nZScsICgpID0+IHNlbGVjdGlvbkNoYW5nZUNvdW50KyspOworCisg
ICAgICAgICAgICBsZXQgY2FudmFzOworICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25l
bnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0
KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAg
ZXhwZWN0KGNoYXJ0LmN1cnJlbnRQb2ludCgpKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAg
ICBleHBlY3QoY2hhcnQubG9ja2VkSW5kaWNhdG9yKCkpLnRvLmJlKG51bGwpOworICAgICAgICAg
ICAgICAgIGV4cGVjdChpbmRpY2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtdKTsKKworICAg
ICAgICAgICAgICAgIGNhbnZhcyA9IGNoYXJ0LmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdjYW52
YXMnKTsKKyAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gY2FudmFzLmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpOworICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3Vz
ZUV2ZW50KCdtb3VzZW1vdmUnLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHJlY3QucmlnaHQg
LSAxLCBjbGllbnRZOiByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMiwgY29tcG9zZWQ6IHRydWUs
IGJ1YmJsZXM6IHRydWV9KSk7CisKKyAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52
YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0
Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJlZHJh
d24oY2FudmFzKSkudG8uYmUodHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQu
Y3VycmVudFNlbGVjdGlvbigpKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
Y2hhcnQuY3VycmVudFBvaW50KCkpLnRvLm5vdC5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBl
eHBlY3QoY2hhcnQubG9ja2VkSW5kaWNhdG9yKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAg
ICAgIGNvbnN0IGxhc3RQb2ludCA9IGNoYXJ0LnNhbXBsZWRUaW1lU2VyaWVzRGF0YSgnY3VycmVu
dCcpLmxhc3RQb2ludCgpOworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50UG9p
bnQoKSkudG8uYmUobGFzdFBvaW50KTsKKyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9y
Q2hhbmdlQ2FsbHMpLnRvLmJlLmVxbChbW2xhc3RQb2ludC5pZCwgZmFsc2VdXSk7CisKKyAgICAg
ICAgICAgICAgICBleHBlY3Qoc2VsZWN0aW9uQ2hhbmdlQ291bnQpLnRvLmJlKDApOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBsb2NrIHRo
ZSBpbmRpY2F0b3IgdG8gdGhlIHBvaW50IGNsb3Nlc3QgdG8gdGhlIGNsaWNrZWQgcG9zaXRpb24n
LCAoKSA9PiB7CisgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVu
dEJhc2UnLCAnVGltZVNlcmllc0NoYXJ0JywgJ0ludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0Jywg
J01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1vdGVBUEknKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgIGNvbnN0IGNoYXJ0ID0gY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCB7
fSwge2ludGVyYWN0aXZlQ2hhcnQ6IHRydWUsIGludGVyYWN0aXZlOiB0cnVlfSk7CisKKyAgICAg
ICAgICAgIGNoYXJ0LnNldERvbWFpbihzYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgc2FtcGxlQ2x1
c3Rlci5lbmRUaW1lKTsKKyAgICAgICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7
CisgICAgICAgICAgICByZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dC5zeW1ib2xzLk1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbMF0pOworCisgICAgICAgICAgICBjb25zdCBpbmRpY2F0b3JD
aGFuZ2VDYWxscyA9IFtdOworICAgICAgICAgICAgY2hhcnQubGlzdGVuVG9BY3Rpb24oJ2luZGlj
YXRvckNoYW5nZScsICguLi5hcmdzKSA9PiBpbmRpY2F0b3JDaGFuZ2VDYWxscy5wdXNoKGFyZ3Mp
KTsKKworICAgICAgICAgICAgbGV0IHNlbGVjdGlvbkNoYW5nZUNvdW50ID0gMDsKKyAgICAgICAg
ICAgIGNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdzZWxlY3Rpb25DaGFuZ2UnLCAoKSA9PiBzZWxlY3Rp
b25DaGFuZ2VDb3VudCsrKTsKKworICAgICAgICAgICAgbGV0IGNhbnZhczsKKyAgICAgICAgICAg
IHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpLnRvLmJlKG51
bGwpOworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50UG9pbnQoKSkudG8uYmUo
bnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmxvY2tlZEluZGljYXRvcigpKS50
by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ2FsbHMp
LnRvLmJlLmVxbChbXSk7CisgICAgICAgICAgICAgICAgY2FudmFzID0gY2hhcnQuY29udGVudCgp
LnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOworICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBj
YW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCB4
ID0gcmVjdC5yaWdodCAtIDE7CisgICAgICAgICAgICAgICAgY29uc3QgeSA9IHJlY3QudG9wICsg
cmVjdC5oZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5l
dyBNb3VzZUV2ZW50KCdtb3VzZW1vdmUnLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHgsIGNs
aWVudFk6IHksIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOworICAgICAgICAgICAg
ICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nLCB7dGFy
Z2V0OiBjYW52YXMsIGNsaWVudFg6IHgsIGNsaWVudFk6IHksIGNvbXBvc2VkOiB0cnVlLCBidWJi
bGVzOiB0cnVlfSkpOworICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBN
b3VzZUV2ZW50KCdtb3VzZW1vdmUnLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHggLSAwLjUs
IGNsaWVudFk6IHkgKyAwLjUsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOworICAg
ICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZXVw
Jywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiB4IC0gMC41LCBjbGllbnRZOiB5ICsgMC41LCBj
b21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKKyAgICAgICAgICAgICAgICBjYW52YXMu
ZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7dGFyZ2V0OiBjYW52YXMsIGNs
aWVudFg6IHggLSAwLjUsIGNsaWVudFk6IHkgKyAwLjUsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVz
OiB0cnVlfSkpOworCisgICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3Jl
UmVkcmF3Q2hlY2soY2FudmFzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBv
bmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZh
cykpLnRvLmJlKHRydWUpOworCisgICAgICAgICAgICAgICAgY29uc3QgbGFzdFBvaW50ID0gY2hh
cnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50JykubGFzdFBvaW50KCk7CisgICAgICAg
ICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSkudG8uYmUobnVsbCk7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRQb2ludCgpKS50by5iZShsYXN0UG9p
bnQpOworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5sb2NrZWRJbmRpY2F0b3IoKSkudG8u
YmUobGFzdFBvaW50KTsKKyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ2Fs
bHMpLnRvLmJlLmVxbChbW2xhc3RQb2ludC5pZCwgZmFsc2VdLCBbbGFzdFBvaW50LmlkLCB0cnVl
XV0pOworCisgICAgICAgICAgICAgICAgZXhwZWN0KHNlbGVjdGlvbkNoYW5nZUNvdW50KS50by5i
ZSgwKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdz
aG91bGQgY2xlYXIgdGhlIHVubG9ja2VkIGluZGljYXRvciB3aGVuIHRoZSBtb3VzZSBjdXJzb3Ig
ZXhpdHMgdGhlIGNoYXJ0JywgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJy
b3dzaW5nQ29udGV4dCgpOworICAgICAgICByZXR1cm4gY29udGV4dC5pbXBvcnRTY3JpcHRzKHNj
cmlwdHMsICdDb21wb25lbnRCYXNlJywgJ1RpbWVTZXJpZXNDaGFydCcsICdJbnRlcmFjdGl2ZVRp
bWVTZXJpZXNDaGFydCcsICdNZWFzdXJlbWVudFNldCcsICdNb2NrUmVtb3RlQVBJJykudGhlbigo
KSA9PiB7CisgICAgICAgICAgICBjb25zdCBjaGFydCA9IGNyZWF0ZUNoYXJ0V2l0aFNhbXBsZUNs
dXN0ZXIoY29udGV4dCwge30sIHtpbnRlcmFjdGl2ZUNoYXJ0OiB0cnVlLCBpbnRlcmFjdGl2ZTog
dHJ1ZX0pOworCisgICAgICAgICAgICBjaGFydC5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFy
dFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICBjaGFydC5mZXRjaE1l
YXN1cmVtZW50U2V0cygpOworICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNv
bnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdKTsKKworICAgICAgICAgICAg
Y29uc3QgaW5kaWNhdG9yQ2hhbmdlQ2FsbHMgPSBbXTsKKyAgICAgICAgICAgIGNoYXJ0Lmxpc3Rl
blRvQWN0aW9uKCdpbmRpY2F0b3JDaGFuZ2UnLCAoLi4uYXJncykgPT4gaW5kaWNhdG9yQ2hhbmdl
Q2FsbHMucHVzaChhcmdzKSk7CisKKyAgICAgICAgICAgIGxldCBzZWxlY3Rpb25DaGFuZ2VDb3Vu
dCA9IDA7CisgICAgICAgICAgICBjaGFydC5saXN0ZW5Ub0FjdGlvbignc2VsZWN0aW9uQ2hhbmdl
JywgKCkgPT4gc2VsZWN0aW9uQ2hhbmdlQ291bnQrKyk7CisKKyAgICAgICAgICAgIGxldCBjYW52
YXM7CisgICAgICAgICAgICBsZXQgcmVjdDsKKyAgICAgICAgICAgIGxldCBsYXN0UG9pbnQ7Cisg
ICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVjdGlvbigp
KS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFBvaW50
KCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5sb2NrZWRJbmRp
Y2F0b3IoKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvckNo
YW5nZUNhbGxzKS50by5iZS5lcWwoW10pOworCisgICAgICAgICAgICAgICAgY2FudmFzID0gY2hh
cnQuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOworICAgICAgICAgICAgICAgIHJl
Y3QgPSBjYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgICAgICAgICAgY2Fu
dmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlbW92ZScsIHt0YXJnZXQ6IGNh
bnZhcywgY2xpZW50WDogcmVjdC5yaWdodCAtIDEsIGNsaWVudFk6IHJlY3QudG9wICsgcmVjdC5o
ZWlnaHQgLyAyLCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKKworICAgICAgICAg
ICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7
CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoQ2Fu
dmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZSh0cnVlKTsKKworICAg
ICAgICAgICAgICAgIGxhc3RQb2ludCA9IGNoYXJ0LnNhbXBsZWRUaW1lU2VyaWVzRGF0YSgnY3Vy
cmVudCcpLmxhc3RQb2ludCgpOworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50
U2VsZWN0aW9uKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5j
dXJyZW50UG9pbnQoKSkudG8uYmUobGFzdFBvaW50KTsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
Y2hhcnQubG9ja2VkSW5kaWNhdG9yKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4
cGVjdChpbmRpY2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtbbGFzdFBvaW50LmlkLCBmYWxz
ZV1dKTsKKworICAgICAgICAgICAgICAgIGNhbnZhcy5wYXJlbnROb2RlLmRpc3BhdGNoRXZlbnQo
bmV3IE1vdXNlRXZlbnQoJ21vdXNlbW92ZScsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVj
dC5yaWdodCArIDUwLCBjbGllbnRZOiByZWN0LmJvdHRvbSArIDUwLCBjb21wb3NlZDogdHJ1ZSwg
YnViYmxlczogdHJ1ZX0pKTsKKyAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChu
ZXcgTW91c2VFdmVudCgnbW91c2VsZWF2ZScsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVj
dC5yaWdodCArIDUwLCBjbGllbnRZOiByZWN0LmJvdHRvbSArIDUwLCBjb21wb3NlZDogdHJ1ZSwg
YnViYmxlczogdHJ1ZX0pKTsKKworICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZh
c0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRG
b3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3
bihjYW52YXMpKS50by5iZSh0cnVlKTsKKworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5j
dXJyZW50U2VsZWN0aW9uKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVjdChj
aGFydC5jdXJyZW50UG9pbnQoKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0
KGNoYXJ0LmxvY2tlZEluZGljYXRvcigpKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBl
eHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ2FsbHMpLnRvLmJlLmVxbChbW2xhc3RQb2ludC5pZCwgZmFs
c2VdLCBbbnVsbCwgZmFsc2VdXSk7CisKKyAgICAgICAgICAgICAgICBleHBlY3Qoc2VsZWN0aW9u
Q2hhbmdlQ291bnQpLnRvLmJlKDApOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAg
IH0pOworCisgICAgaXQoJ3Nob3VsZCBub3QgY2xlYXIgdGhlIGxvY2tlZCBpbmRpY2F0b3Igd2hl
biB0aGUgbW91c2UgY3Vyc29yIGV4aXRzIHRoZSBjaGFydCcsICgpID0+IHsKKyAgICAgICAgY29u
c3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScsICdUaW1lU2VyaWVzQ2hh
cnQnLCAnSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQnLCAnTWVhc3VyZW1lbnRTZXQnLCAnTW9j
a1JlbW90ZUFQSScpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgY29uc3QgY2hhcnQgPSBjcmVh
dGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIHt9LCB7aW50ZXJhY3RpdmVDaGFydDog
dHJ1ZSwgaW50ZXJhY3RpdmU6IHRydWV9KTsKKworICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWlu
KHNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAg
ICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKKyAgICAgICAgICAgIHJlc3BvbmRX
aXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sw
XSk7CisKKyAgICAgICAgICAgIGNvbnN0IGluZGljYXRvckNoYW5nZUNhbGxzID0gW107CisgICAg
ICAgICAgICBjaGFydC5saXN0ZW5Ub0FjdGlvbignaW5kaWNhdG9yQ2hhbmdlJywgKC4uLmFyZ3Mp
ID0+IGluZGljYXRvckNoYW5nZUNhbGxzLnB1c2goYXJncykpOworCisgICAgICAgICAgICBsZXQg
c2VsZWN0aW9uQ2hhbmdlQ291bnQgPSAwOworICAgICAgICAgICAgY2hhcnQubGlzdGVuVG9BY3Rp
b24oJ3NlbGVjdGlvbkNoYW5nZScsICgpID0+IHNlbGVjdGlvbkNoYW5nZUNvdW50KyspOworCisg
ICAgICAgICAgICBsZXQgY2FudmFzOworICAgICAgICAgICAgbGV0IHJlY3Q7CisgICAgICAgICAg
ICBsZXQgbGFzdFBvaW50OworICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9S
ZW5kZXIoY29udGV4dCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0
LmN1cnJlbnRTZWxlY3Rpb24oKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0
KGNoYXJ0LmN1cnJlbnRQb2ludCgpKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBl
Y3QoY2hhcnQubG9ja2VkSW5kaWNhdG9yKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAg
IGV4cGVjdChpbmRpY2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtdKTsKKworICAgICAgICAg
ICAgICAgIGNhbnZhcyA9IGNoYXJ0LmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKTsK
KyAgICAgICAgICAgICAgICByZWN0ID0gY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwor
ICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdjbGlj
aycsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5yaWdodCAtIDEsIGNsaWVudFk6IHJl
Y3QudG9wICsgcmVjdC5oZWlnaHQgLyAyLCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0p
KTsKKworICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0No
ZWNrKGNhbnZhcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9S
ZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5i
ZSh0cnVlKTsKKworICAgICAgICAgICAgICAgIGxhc3RQb2ludCA9IGNoYXJ0LnNhbXBsZWRUaW1l
U2VyaWVzRGF0YSgnY3VycmVudCcpLmxhc3RQb2ludCgpOworICAgICAgICAgICAgICAgIGV4cGVj
dChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAg
IGV4cGVjdChjaGFydC5jdXJyZW50UG9pbnQoKSkudG8uYmUobGFzdFBvaW50KTsKKyAgICAgICAg
ICAgICAgICBleHBlY3QoY2hhcnQubG9ja2VkSW5kaWNhdG9yKCkpLnRvLmJlKGxhc3RQb2ludCk7
CisgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvckNoYW5nZUNhbGxzKS50by5iZS5lcWwo
W1tsYXN0UG9pbnQuaWQsIHRydWVdXSk7CisKKyAgICAgICAgICAgICAgICBjYW52YXMucGFyZW50
Tm9kZS5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZW1vdmUnLCB7dGFyZ2V0OiBj
YW52YXMsIGNsaWVudFg6IHJlY3QucmlnaHQgKyA1MCwgY2xpZW50WTogcmVjdC5ib3R0b20gKyA1
MCwgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7CisgICAgICAgICAgICAgICAgY2Fu
dmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlbGVhdmUnLCB7dGFyZ2V0OiBj
YW52YXMsIGNsaWVudFg6IHJlY3QucmlnaHQgKyA1MCwgY2xpZW50WTogcmVjdC5ib3R0b20gKyA1
MCwgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7CisKKyAgICAgICAgICAgICAgICBD
YW52YXNUZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOworICAgICAgICAg
ICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAg
ICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3Qu
aGFzQ2FudmFzQmVlblJlZHJhd24oY2FudmFzKSkudG8uYmUoZmFsc2UpOworCisgICAgICAgICAg
ICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSkudG8uYmUobnVsbCk7CisgICAg
ICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRQb2ludCgpKS50by5iZShsYXN0UG9pbnQp
OworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5sb2NrZWRJbmRpY2F0b3IoKSkudG8uYmUo
bGFzdFBvaW50KTsKKyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ2FsbHMp
LnRvLmJlLmVxbChbW2xhc3RQb2ludC5pZCwgdHJ1ZV1dKTsKKworICAgICAgICAgICAgICAgIGV4
cGVjdChzZWxlY3Rpb25DaGFuZ2VDb3VudCkudG8uYmUoMCk7CisgICAgICAgICAgICB9KQorICAg
ICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgY2xlYXIgdGhlIGxvY2tlZCBpbmRp
Y2F0b3Igd2hlbiBjbGlja2VkJywgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3
IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICByZXR1cm4gY29udGV4dC5pbXBvcnRTY3JpcHRz
KHNjcmlwdHMsICdDb21wb25lbnRCYXNlJywgJ1RpbWVTZXJpZXNDaGFydCcsICdJbnRlcmFjdGl2
ZVRpbWVTZXJpZXNDaGFydCcsICdNZWFzdXJlbWVudFNldCcsICdNb2NrUmVtb3RlQVBJJykudGhl
bigoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjaGFydCA9IGNyZWF0ZUNoYXJ0V2l0aFNhbXBs
ZUNsdXN0ZXIoY29udGV4dCwge30sIHtpbnRlcmFjdGl2ZUNoYXJ0OiB0cnVlLCBpbnRlcmFjdGl2
ZTogdHJ1ZX0pOworCisgICAgICAgICAgICBjaGFydC5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5z
dGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICBjaGFydC5mZXRj
aE1lYXN1cmVtZW50U2V0cygpOworICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVy
KGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdKTsKKworICAgICAgICAg
ICAgY29uc3QgaW5kaWNhdG9yQ2hhbmdlQ2FsbHMgPSBbXTsKKyAgICAgICAgICAgIGNoYXJ0Lmxp
c3RlblRvQWN0aW9uKCdpbmRpY2F0b3JDaGFuZ2UnLCAoLi4uYXJncykgPT4gaW5kaWNhdG9yQ2hh
bmdlQ2FsbHMucHVzaChhcmdzKSk7CisKKyAgICAgICAgICAgIGxldCBzZWxlY3Rpb25DaGFuZ2VD
b3VudCA9IDA7CisgICAgICAgICAgICBjaGFydC5saXN0ZW5Ub0FjdGlvbignc2VsZWN0aW9uQ2hh
bmdlJywgKCkgPT4gc2VsZWN0aW9uQ2hhbmdlQ291bnQrKyk7CisKKyAgICAgICAgICAgIGxldCBj
YW52YXM7CisgICAgICAgICAgICBsZXQgcmVjdDsKKyAgICAgICAgICAgIGxldCB5OworICAgICAg
ICAgICAgbGV0IGxhc3RQb2ludDsKKyAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50
c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChj
aGFydC5jdXJyZW50U2VsZWN0aW9uKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4
cGVjdChjaGFydC5jdXJyZW50UG9pbnQoKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAg
ZXhwZWN0KGNoYXJ0LmxvY2tlZEluZGljYXRvcigpKS50by5iZShudWxsKTsKKyAgICAgICAgICAg
ICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ2FsbHMpLnRvLmJlLmVxbChbXSk7CisKKyAgICAg
ICAgICAgICAgICBjYW52YXMgPSBjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFz
Jyk7CisgICAgICAgICAgICAgICAgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KTsKKyAgICAgICAgICAgICAgICB5ID0gcmVjdC50b3AgKyByZWN0LmhlaWdodCAvIDI7CisgICAg
ICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ2NsaWNrJywg
e3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LnJpZ2h0IC0gMSwgY2xpZW50WTogeSwgY29t
cG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7CisKKyAgICAgICAgICAgICAgICBDYW52YXNU
ZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOworICAgICAgICAgICAgICAg
IHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAg
fSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2Fu
dmFzQmVlblJlZHJhd24oY2FudmFzKSkudG8uYmUodHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBs
YXN0UG9pbnQgPSBjaGFydC5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1cnJlbnQnKS5sYXN0UG9p
bnQoKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVjdGlvbigpKS50
by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFBvaW50KCkp
LnRvLmJlKGxhc3RQb2ludCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmxvY2tlZElu
ZGljYXRvcigpKS50by5iZShsYXN0UG9pbnQpOworICAgICAgICAgICAgICAgIGV4cGVjdChpbmRp
Y2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtbbGFzdFBvaW50LmlkLCB0cnVlXV0pOworCisg
ICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ2NsaWNr
Jywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LmxlZnQgKyAxLCBjbGllbnRZOiB5LCBj
b21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKKworICAgICAgICAgICAgICAgIENhbnZh
c1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXND
YW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZSh0cnVlKTsKKworICAgICAgICAgICAgICAg
IGV4cGVjdChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpLnRvLmJlKG51bGwpOworICAgICAgICAg
ICAgICAgIGNvbnN0IGZpcnN0UG9pbnQgPSBjaGFydC5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1
cnJlbnQnKS5maXJzdFBvaW50KCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJl
bnRQb2ludCgpKS50by5iZShmaXJzdFBvaW50KTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hh
cnQubG9ja2VkSW5kaWNhdG9yKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVj
dChpbmRpY2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtbbGFzdFBvaW50LmlkLCB0cnVlXSwg
W2ZpcnN0UG9pbnQuaWQsIGZhbHNlXV0pOworCisgICAgICAgICAgICAgICAgZXhwZWN0KHNlbGVj
dGlvbkNoYW5nZUNvdW50KS50by5iZSgwKTsKKyAgICAgICAgICAgIH0pCisgICAgICAgIH0pOwor
ICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBjaGFuZ2UgdGhlIHNlbGVjdGlvbiB3aGVuIHRoZSBt
b3VzZSBjdXJzb3IgaXMgZHJhZ2dlZCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgY29udGV4dCA9
IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaW1wb3J0U2Ny
aXB0cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScsICdUaW1lU2VyaWVzQ2hhcnQnLCAnSW50ZXJh
Y3RpdmVUaW1lU2VyaWVzQ2hhcnQnLCAnTWVhc3VyZW1lbnRTZXQnLCAnTW9ja1JlbW90ZUFQSScp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgY29uc3QgY2hhcnQgPSBjcmVhdGVDaGFydFdpdGhT
YW1wbGVDbHVzdGVyKGNvbnRleHQsCisgICAgICAgICAgICAgICAge3NlbGVjdGlvbjoge2xpbmVT
dHlsZTogJyNmOTMnLCBsaW5lV2lkdGg6IDIsIGZpbGxTdHlsZTogJyNjY2MnfX0sCisgICAgICAg
ICAgICAgICAge2ludGVyYWN0aXZlQ2hhcnQ6IHRydWUsIGludGVyYWN0aXZlOiB0cnVlfSk7CisK
KyAgICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihzYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgc2Ft
cGxlQ2x1c3Rlci5lbmRUaW1lKTsKKyAgICAgICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRT
ZXRzKCk7CisgICAgICAgICAgICByZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dC5zeW1i
b2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0pOworCisgICAgICAgICAgICBjb25zdCBpbmRp
Y2F0b3JDaGFuZ2VDYWxscyA9IFtdOworICAgICAgICAgICAgY2hhcnQubGlzdGVuVG9BY3Rpb24o
J2luZGljYXRvckNoYW5nZScsICguLi5hcmdzKSA9PiBpbmRpY2F0b3JDaGFuZ2VDYWxscy5wdXNo
KGFyZ3MpKTsKKworICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uQ2hhbmdlQ2FsbHMgPSBbXTsK
KyAgICAgICAgICAgIGNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdzZWxlY3Rpb25DaGFuZ2UnLCAoLi4u
YXJncykgPT4gc2VsZWN0aW9uQ2hhbmdlQ2FsbHMucHVzaChhcmdzKSk7CisKKyAgICAgICAgICAg
IGNvbnN0IHpvb21CdXR0b24gPSBjaGFydC5jb250ZW50KCd6b29tLWJ1dHRvbicpOworCisgICAg
ICAgICAgICBsZXQgY2FudmFzOworICAgICAgICAgICAgbGV0IHJlY3Q7CisgICAgICAgICAgICBs
ZXQgeTsKKyAgICAgICAgICAgIGxldCBmaXJzdFBvaW50OworICAgICAgICAgICAgbGV0IG9sZFJh
bmdlOworICAgICAgICAgICAgbGV0IG5ld1JhbmdlOworICAgICAgICAgICAgcmV0dXJuIHdhaXRG
b3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSkudG8uYmUobnVsbCk7CisgICAgICAg
ICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRQb2ludCgpKS50by5iZShudWxsKTsKKyAgICAg
ICAgICAgICAgICBleHBlY3QoY2hhcnQubG9ja2VkSW5kaWNhdG9yKCkpLnRvLmJlKG51bGwpOwor
ICAgICAgICAgICAgICAgIGV4cGVjdChzZWxlY3Rpb25DaGFuZ2VDYWxscykudG8uYmUuZXFsKFtd
KTsKKworICAgICAgICAgICAgICAgIGNhbnZhcyA9IGNoYXJ0LmNvbnRlbnQoKS5xdWVyeVNlbGVj
dG9yKCdjYW52YXMnKTsKKyAgICAgICAgICAgICAgICByZWN0ID0gY2FudmFzLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpOworICAgICAgICAgICAgICAgIHkgPSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0
IC8gMjsKKyAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVu
dCgnbW91c2Vtb3ZlJywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LmxlZnQgKyA1LCBj
bGllbnRZOiB5LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKKworICAgICAgICAg
ICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7
CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoQ2Fu
dmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZSh0cnVlKTsKKworICAg
ICAgICAgICAgICAgIGZpcnN0UG9pbnQgPSBjaGFydC5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1
cnJlbnQnKS5maXJzdFBvaW50KCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJl
bnRTZWxlY3Rpb24oKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0
LmN1cnJlbnRQb2ludCgpKS50by5iZShmaXJzdFBvaW50KTsKKyAgICAgICAgICAgICAgICBleHBl
Y3QoY2hhcnQubG9ja2VkSW5kaWNhdG9yKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAg
IGV4cGVjdChpbmRpY2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtbZmlyc3RQb2ludC5pZCwg
ZmFsc2VdXSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHpvb21CdXR0b24ub2Zmc2V0SGVpZ2h0
KS50by5iZSgwKTsKKworICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBN
b3VzZUV2ZW50KCdtb3VzZWRvd24nLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHJlY3QubGVm
dCArIDUsIGNsaWVudFk6IHksIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOworCisg
ICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2Fu
dmFzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihj
b250ZXh0KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGV4
cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKGZhbHNl
KTsKKworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpLnRv
LmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50UG9pbnQoKSku
dG8uYmUoZmlyc3RQb2ludCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmxvY2tlZElu
ZGljYXRvcigpKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc2VsZWN0aW9u
Q2hhbmdlQ2FsbHMpLnRvLmJlLmVxbChbXSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGluZGlj
YXRvckNoYW5nZUNhbGxzKS50by5iZS5lcWwoW1tmaXJzdFBvaW50LmlkLCBmYWxzZV1dKTsKKyAg
ICAgICAgICAgICAgICBleHBlY3Qoem9vbUJ1dHRvbi5vZmZzZXRIZWlnaHQpLnRvLmJlKDApOwor
CisgICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21v
dXNlbW92ZScsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5sZWZ0ICsgMTUsIGNsaWVu
dFk6IHkgKyA1LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKKworICAgICAgICAg
ICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7
CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoQ2Fu
dmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZSh0cnVlKTsKKworICAg
ICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpLnRvLm5vdC5iZShu
dWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFBvaW50KCkpLnRvLmJl
KG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5sb2NrZWRJbmRpY2F0b3IoKSku
dG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHNlbGVjdGlvbkNoYW5nZUNhbGxz
Lmxlbmd0aCkudG8uYmUoMSk7CisgICAgICAgICAgICAgICAgb2xkUmFuZ2UgPSBzZWxlY3Rpb25D
aGFuZ2VDYWxsc1swXVswXTsKKyAgICAgICAgICAgICAgICBleHBlY3Qob2xkUmFuZ2UpLnRvLmJl
LmVxbChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpOworICAgICAgICAgICAgICAgIGV4cGVjdChz
ZWxlY3Rpb25DaGFuZ2VDYWxsc1swXVsxXSkudG8uYmUoZmFsc2UpOworICAgICAgICAgICAgICAg
IGV4cGVjdChpbmRpY2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtbZmlyc3RQb2ludC5pZCwg
ZmFsc2VdLCBbbnVsbCwgZmFsc2VdXSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHpvb21CdXR0
b24ub2Zmc2V0SGVpZ2h0KS50by5iZSgwKTsKKworICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNw
YXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZW1vdmUnLCB7dGFyZ2V0OiBjYW52YXMsIGNs
aWVudFg6IHJlY3QucmlnaHQgLSA1LCBjbGllbnRZOiB5ICsgNSwgY29tcG9zZWQ6IHRydWUsIGJ1
YmJsZXM6IHRydWV9KSk7CisKKyAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNC
ZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9y
Q29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJlZHJhd24o
Y2FudmFzKSkudG8uYmUodHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3Vy
cmVudFNlbGVjdGlvbigpKS50by5ub3QuYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0
KGNoYXJ0LmN1cnJlbnRQb2ludCgpKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBl
Y3QoY2hhcnQubG9ja2VkSW5kaWNhdG9yKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAg
IGV4cGVjdChzZWxlY3Rpb25DaGFuZ2VDYWxscy5sZW5ndGgpLnRvLmJlKDIpOworICAgICAgICAg
ICAgICAgIG5ld1JhbmdlID0gc2VsZWN0aW9uQ2hhbmdlQ2FsbHNbMV1bMF07CisgICAgICAgICAg
ICAgICAgZXhwZWN0KG5ld1JhbmdlKS50by5iZS5lcWwoY2hhcnQuY3VycmVudFNlbGVjdGlvbigp
KTsKKyAgICAgICAgICAgICAgICBleHBlY3QobmV3UmFuZ2VbMF0pLnRvLmJlKG9sZFJhbmdlWzBd
KTsKKyAgICAgICAgICAgICAgICBleHBlY3QobmV3UmFuZ2VbMV0pLnRvLmJlLmdyZWF0ZXJUaGFu
KG9sZFJhbmdlWzFdKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc2VsZWN0aW9uQ2hhbmdlQ2Fs
bHNbMV1bMV0pLnRvLmJlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoem9vbUJ1dHRv
bi5vZmZzZXRIZWlnaHQpLnRvLmJlKDApOworCisgICAgICAgICAgICAgICAgY2FudmFzLmRpc3Bh
dGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNldXAnLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVu
dFg6IHJlY3QucmlnaHQgLSA1LCBjbGllbnRZOiB5ICsgNSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJs
ZXM6IHRydWV9KSk7CisgICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1v
dXNlRXZlbnQoJ2NsaWNrJywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LnJpZ2h0IC0g
NSwgY2xpZW50WTogeSArIDUsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOworCisg
ICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2Fu
dmFzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihj
b250ZXh0KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGV4
cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRydWUp
OworCisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSkudG8u
YmUuZXFsKG5ld1JhbmdlKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFBv
aW50KCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5sb2NrZWRJ
bmRpY2F0b3IoKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHNlbGVjdGlv
bkNoYW5nZUNhbGxzLmxlbmd0aCkudG8uYmUoMyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHNl
bGVjdGlvbkNoYW5nZUNhbGxzWzJdWzBdKS50by5iZS5lcWwobmV3UmFuZ2UpOworICAgICAgICAg
ICAgICAgIGV4cGVjdChzZWxlY3Rpb25DaGFuZ2VDYWxsc1syXVsxXSkudG8uYmUodHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0KHpvb21CdXR0b24ub2Zmc2V0SGVpZ2h0KS50by5iZSgwKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQg
ZGlzcGF0Y2ggdGhlICJ6b29tIiBhY3Rpb24gd2hlbiB0aGUgem9vbSBidXR0b24gaXMgY2xpY2tl
ZCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQo
KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnQ29tcG9u
ZW50QmFzZScsICdUaW1lU2VyaWVzQ2hhcnQnLCAnSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQn
LCAnTWVhc3VyZW1lbnRTZXQnLCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgY29uc3QgY2hhcnQgPSBjcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQs
CisgICAgICAgICAgICAgICAge3NlbGVjdGlvbjoge2xpbmVTdHlsZTogJyNmOTMnLCBsaW5lV2lk
dGg6IDIsIGZpbGxTdHlsZTogJyNjY2MnfSwgem9vbUJ1dHRvbjogdHJ1ZX0sCisgICAgICAgICAg
ICAgICAge2ludGVyYWN0aXZlQ2hhcnQ6IHRydWUsIGludGVyYWN0aXZlOiB0cnVlfSk7CisKKyAg
ICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihzYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgc2FtcGxl
Q2x1c3Rlci5lbmRUaW1lKTsKKyAgICAgICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRz
KCk7CisgICAgICAgICAgICByZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dC5zeW1ib2xz
Lk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0pOworCisgICAgICAgICAgICBjb25zdCB6b29tQ2Fs
bHMgPSBbXTsKKyAgICAgICAgICAgIGNoYXJ0Lmxpc3RlblRvQWN0aW9uKCd6b29tJywgKC4uLmFy
Z3MpID0+IHpvb21DYWxscy5wdXNoKGFyZ3MpKTsKKyAgICAgICAgICAgIGNvbnN0IHpvb21CdXR0
b24gPSBjaGFydC5jb250ZW50KCd6b29tLWJ1dHRvbicpOworCisgICAgICAgICAgICBsZXQgc2Vs
ZWN0aW9uOworICAgICAgICAgICAgbGV0IGNhbnZhczsKKyAgICAgICAgICAgIHJldHVybiB3YWl0
Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
ICAgIGV4cGVjdCh6b29tQnV0dG9uLm9mZnNldEhlaWdodCkudG8uYmUoMCk7CisgICAgICAgICAg
ICAgICAgY2FudmFzID0gY2hhcnQuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBjYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCk7CisgICAgICAgICAgICAgICAgY29uc3QgeSA9IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAy
OworICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdt
b3VzZW1vdmUnLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHJlY3QubGVmdCArIDUsIGNsaWVu
dFk6IHksIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOworICAgICAgICAgICAgICAg
IGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nLCB7dGFyZ2V0
OiBjYW52YXMsIGNsaWVudFg6IHJlY3QubGVmdCArIDUsIGNsaWVudFk6IHksIGNvbXBvc2VkOiB0
cnVlLCBidWJibGVzOiB0cnVlfSkpOworICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2
ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZW1vdmUnLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6
IHJlY3QucmlnaHQgLSAxMCwgY2xpZW50WTogeSArIDUsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVz
OiB0cnVlfSkpOworICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3Vz
ZUV2ZW50KCdtb3VzZXVwJywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LnJpZ2h0IC0g
MTAsIGNsaWVudFk6IHkgKyA1LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKKwor
ICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNh
bnZhcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIo
Y29udGV4dCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBl
eHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZSh0cnVl
KTsKKworICAgICAgICAgICAgICAgIHNlbGVjdGlvbiA9IGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24o
KTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc2VsZWN0aW9uKS50by5ub3QuYmUobnVsbCk7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRQb2ludCgpKS50by5iZShudWxsKTsK
KyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQubG9ja2VkSW5kaWNhdG9yKCkpLnRvLmJlKG51
bGwpOworICAgICAgICAgICAgICAgIGV4cGVjdCh6b29tQnV0dG9uLm9mZnNldEhlaWdodCkudG8u
bm90LmJlKDApOworICAgICAgICAgICAgICAgIGV4cGVjdCh6b29tQ2FsbHMpLnRvLmJlLmVxbChb
XSk7CisgICAgICAgICAgICAgICAgem9vbUJ1dHRvbi5jbGljaygpOworICAgICAgICAgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KHpvb21DYWxscykudG8uYmUuZXFs
KFtbc2VsZWN0aW9uXV0pOworCisgICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFz
QmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZv
ckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXdu
KGNhbnZhcykpLnRvLmJlKGZhbHNlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGl0KCdzaG91bGQgY2xlYXIgdGhlIHNlbGVjdGlvbiB3aGVuIGNsaWNrZWQn
LCAoKSA9PiB7CisgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVu
dEJhc2UnLCAnVGltZVNlcmllc0NoYXJ0JywgJ0ludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0Jywg
J01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1vdGVBUEknKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgIGNvbnN0IGNoYXJ0ID0gY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LAor
ICAgICAgICAgICAgICAgIHtzZWxlY3Rpb246IHtsaW5lU3R5bGU6ICcjZjkzJywgbGluZVdpZHRo
OiAyLCBmaWxsU3R5bGU6ICcjY2NjJ319LAorICAgICAgICAgICAgICAgIHtpbnRlcmFjdGl2ZUNo
YXJ0OiB0cnVlLCBpbnRlcmFjdGl2ZTogdHJ1ZX0pOworCisgICAgICAgICAgICBjaGFydC5zZXRE
b21haW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7Cisg
ICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOworICAgICAgICAgICAgcmVz
cG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzBdKTsKKworICAgICAgICAgICAgbGV0IGNhbnZhczsKKyAgICAgICAgICAgIGxldCByZWN0
OworICAgICAgICAgICAgbGV0IHk7CisgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVu
dHNUb1JlbmRlcihjb250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBjYW52YXMg
PSBjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFzJyk7CisgICAgICAgICAgICAg
ICAgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgICAgICAg
ICB5ID0gcmVjdC50b3AgKyByZWN0LmhlaWdodCAvIDI7CisgICAgICAgICAgICAgICAgY2FudmFz
LmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlbW92ZScsIHt0YXJnZXQ6IGNhbnZh
cywgY2xpZW50WDogcmVjdC5sZWZ0ICsgNSwgY2xpZW50WTogeSwgY29tcG9zZWQ6IHRydWUsIGJ1
YmJsZXM6IHRydWV9KSk7CisgICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3
IE1vdXNlRXZlbnQoJ21vdXNlZG93bicsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5s
ZWZ0ICsgNSwgY2xpZW50WTogeSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7Cisg
ICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNl
bW92ZScsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5yaWdodCAtIDEwLCBjbGllbnRZ
OiB5ICsgNSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7CisgICAgICAgICAgICAg
ICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNldXAnLCB7dGFyZ2V0
OiBjYW52YXMsIGNsaWVudFg6IHJlY3QucmlnaHQgLSAxMCwgY2xpZW50WTogeSArIDUsIGNvbXBv
c2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOworICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNw
YXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdjbGljaycsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50
WDogcmVjdC5yaWdodCAtIDEwLCBjbGllbnRZOiB5ICsgNSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJs
ZXM6IHRydWV9KSk7CisKKyAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNCZWZv
cmVSZWRyYXdDaGVjayhjYW52YXMpOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29t
cG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJlZHJhd24oY2Fu
dmFzKSkudG8uYmUodHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVu
dFNlbGVjdGlvbigpKS50by5ub3QuYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNo
YXJ0LmN1cnJlbnRQb2ludCgpKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
Y2hhcnQubG9ja2VkSW5kaWNhdG9yKCkpLnRvLmJlKG51bGwpOworCisgICAgICAgICAgICAgICAg
Y2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ2NsaWNrJywge3RhcmdldDogY2Fu
dmFzLCBjbGllbnRYOiByZWN0LmxlZnQgKyAxLCBjbGllbnRZOiB5ICsgNSwgY29tcG9zZWQ6IHRy
dWUsIGJ1YmJsZXM6IHRydWV9KSk7CisKKyAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxD
YW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOworICAgICAgICAgICAgICAgIHJldHVybiB3
YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJl
ZHJhd24oY2FudmFzKSkudG8uYmUodHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hh
cnQuY3VycmVudFNlbGVjdGlvbigpKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBl
Y3QoY2hhcnQuY3VycmVudFBvaW50KCkpLnRvLmJlKGNoYXJ0LnNhbXBsZWRUaW1lU2VyaWVzRGF0
YSgnY3VycmVudCcpLmZpcnN0UG9pbnQoKSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0
LmxvY2tlZEluZGljYXRvcigpKS50by5iZShudWxsKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgZGlzcGF0Y2ggImFubm90YXRpb25DbGlj
ayIgYWN0aW9uIHdoZW4gYW4gYW5ub3RhdGlvbiBpcyBjbGlja2VkJywgKCkgPT4geworICAgICAg
ICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICByZXR1cm4g
Y29udGV4dC5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdDb21wb25lbnRCYXNlJywgJ1RpbWVTZXJp
ZXNDaGFydCcsICdJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCcsICdNZWFzdXJlbWVudFNldCcs
ICdNb2NrUmVtb3RlQVBJJykudGhlbigoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBvcHRpb25z
ID0ge2Fubm90YXRpb25zOiB7CisgICAgICAgICAgICAgICAgdGV4dFN0eWxlOiAnIzAwMCcsCisg
ICAgICAgICAgICAgICAgdGV4dEJhY2tncm91bmQ6ICcjZmZmJywKKyAgICAgICAgICAgICAgICBt
aW5XaWR0aDogMywKKyAgICAgICAgICAgICAgICBiYXJIZWlnaHQ6IDEwLAorICAgICAgICAgICAg
ICAgIGJhclNwYWNpbmc6IDF9fTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gY3JlYXRlQ2hh
cnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBvcHRpb25zLCB7aW50ZXJhY3RpdmVDaGFydDog
dHJ1ZX0pOworCisgICAgICAgICAgICBjaGFydC5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFy
dFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICBjaGFydC5mZXRjaE1l
YXN1cmVtZW50U2V0cygpOworICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNv
bnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdKTsKKworICAgICAgICAgICAg
Y29uc3QgZGlmZiA9IHNhbXBsZUNsdXN0ZXIuZW5kVGltZSAtIHNhbXBsZUNsdXN0ZXIuc3RhcnRU
aW1lOworICAgICAgICAgICAgY29uc3QgYW5ub3RhdGlvbnMgPSBbeworICAgICAgICAgICAgICAg
IHN0YXJ0VGltZTogc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUgKyBkaWZmIC8gMiwKKyAgICAgICAg
ICAgICAgICBlbmRUaW1lOiBzYW1wbGVDbHVzdGVyLmVuZFRpbWUgLSBkaWZmIC8gNCwKKyAgICAg
ICAgICAgICAgICBsYWJlbDogJ2hlbGxvLCB3b3JsZCcsCisgICAgICAgICAgICAgICAgZmlsbFN0
eWxlOiAncmdiKDAsIDAsIDI1NSknLAorICAgICAgICAgICAgfV0KKyAgICAgICAgICAgIGNoYXJ0
LnNldEFubm90YXRpb25zKGFubm90YXRpb25zKTsKKworICAgICAgICAgICAgY29uc3QgYW5ub3Rh
dGlvbkNsaWNrQ2FsbHMgPSBbXTsKKyAgICAgICAgICAgIGNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdh
bm5vdGF0aW9uQ2xpY2snLCAoLi4uYXJncykgPT4gYW5ub3RhdGlvbkNsaWNrQ2FsbHMucHVzaChh
cmdzKSk7CisKKyAgICAgICAgICAgIGxldCBjYW52YXM7CisgICAgICAgICAgICBsZXQgaW5pdDsK
KyAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChhbm5vdGF0aW9uQ2xpY2tDYWxscyku
dG8uYmUuZXFsKFtdKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY29udGVudCgnYW5u
b3RhdGlvbi1sYWJlbCcpLnRleHRDb250ZW50KS50by5ub3QuY29udGFpbignaGVsbG8sIHdvcmxk
Jyk7CisKKyAgICAgICAgICAgICAgICBjYW52YXMgPSBjaGFydC5jb250ZW50KCkucXVlcnlTZWxl
Y3RvcignY2FudmFzJyk7CisgICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgICAgICAgICBpbml0ID0ge3RhcmdldDogY2Fu
dmFzLCBjbGllbnRYOiByZWN0LnJpZ2h0IC0gcmVjdC53aWR0aCAvIDQsIGNsaWVudFk6IHJlY3Qu
Ym90dG9tIC0gNSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9OworICAgICAgICAgICAg
ICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZW1vdmUnLCBpbml0
KSk7CisKKyAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdD
aGVjayhjYW52YXMpOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1Rv
UmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJlZHJhd24oY2FudmFzKSkudG8u
YmUodHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY29udGVudCgnYW5ub3Rh
dGlvbi1sYWJlbCcpLnRleHRDb250ZW50KS50by5jb250YWluKCdoZWxsbywgd29ybGQnKTsKKyAg
ICAgICAgICAgICAgICBleHBlY3QoYW5ub3RhdGlvbkNsaWNrQ2FsbHMpLnRvLmJlLmVxbChbXSk7
CisgICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21v
dXNlZG93bicsIGluaXQpKTsKKyAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChu
ZXcgTW91c2VFdmVudCgnbW91c2V1cCcsIGluaXQpKTsKKyAgICAgICAgICAgICAgICBjYW52YXMu
ZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnY2xpY2snLCBpbml0KSk7CisKKyAgICAgICAg
ICAgICAgICBleHBlY3QoYW5ub3RhdGlvbkNsaWNrQ2FsbHMpLnRvLmJlLmVxbChbW2Fubm90YXRp
b25zWzBdXV0pOworCisgICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3Jl
UmVkcmF3Q2hlY2soY2FudmFzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBv
bmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZh
cykpLnRvLmJlKGZhbHNlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsK
KworfSk7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVu
dHMvY2hhcnQtcGFuZS1iYXNlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1wYW5lLWJhc2UuanMJKHJldmlzaW9uIDIx
Mjg1NykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9j
aGFydC1wYW5lLWJhc2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTQwLDIwICs0MCwxNyBAQCBjbGFz
cyBDaGFydFBhbmVCYXNlIGV4dGVuZHMgQ29tcG9uZW50QmFzCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgdmFyIGZvcm1hdHRlciA9IHJlc3VsdC5tZXRyaWMubWFrZUZvcm1hdHRlcig0
KTsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogCi0gICAgICAgIHZhciBvdmVydmlld09wdGlv
bnMgPSBDaGFydFN0eWxlcy5vdmVydmlld0NoYXJ0T3B0aW9ucyhmb3JtYXR0ZXIpOwotICAgICAg
ICBvdmVydmlld09wdGlvbnMuc2VsZWN0aW9uLm9uY2hhbmdlID0gdGhpcy5fb3ZlcnZpZXdTZWxl
Y3Rpb25EaWRDaGFuZ2UuYmluZCh0aGlzKTsKLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdDaGFydCA9
IG5ldyBJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCh0aGlzLl9jcmVhdGVTb3VyY2VMaXN0KGZh
bHNlKSwgb3ZlcnZpZXdPcHRpb25zKTsKKyAgICAgICAgdGhpcy5fb3ZlcnZpZXdDaGFydCA9IG5l
dyBJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCh0aGlzLl9jcmVhdGVTb3VyY2VMaXN0KGZhbHNl
KSwgQ2hhcnRTdHlsZXMub3ZlcnZpZXdDaGFydE9wdGlvbnMoZm9ybWF0dGVyKSk7CisgICAgICAg
IHRoaXMuX292ZXJ2aWV3Q2hhcnQubGlzdGVuVG9BY3Rpb24oJ3NlbGVjdGlvbkNoYW5nZScsIHRo
aXMuX292ZXJ2aWV3U2VsZWN0aW9uRGlkQ2hhbmdlLmJpbmQodGhpcykpOwogICAgICAgICB0aGlz
LnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmNoYXJ0LXBhbmUt
b3ZlcnZpZXcnKSwgdGhpcy5fb3ZlcnZpZXdDaGFydCk7CiAKLSAgICAgICAgdmFyIG1haW5PcHRp
b25zID0gQ2hhcnRTdHlsZXMubWFpbkNoYXJ0T3B0aW9ucyhmb3JtYXR0ZXIpOwotICAgICAgICBt
YWluT3B0aW9ucy5pbmRpY2F0b3Iub25jaGFuZ2UgPSB0aGlzLl9pbmRpY2F0b3JEaWRDaGFuZ2Uu
YmluZCh0aGlzKTsKLSAgICAgICAgbWFpbk9wdGlvbnMuc2VsZWN0aW9uLm9uY2hhbmdlID0gdGhp
cy5fbWFpblNlbGVjdGlvbkRpZENoYW5nZS5iaW5kKHRoaXMpOwotICAgICAgICBtYWluT3B0aW9u
cy5zZWxlY3Rpb24ub256b29tID0gdGhpcy5fbWFpblNlbGVjdGlvbkRpZFpvb20uYmluZCh0aGlz
KTsKLSAgICAgICAgbWFpbk9wdGlvbnMuYW5ub3RhdGlvbnMub25jbGljayA9IHRoaXMuX29wZW5B
bmFseXNpc1Rhc2suYmluZCh0aGlzKTsKLSAgICAgICAgdGhpcy5fbWFpbkNoYXJ0ID0gbmV3IElu
dGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0KHRoaXMuX2NyZWF0ZVNvdXJjZUxpc3QodHJ1ZSksIG1h
aW5PcHRpb25zKTsKLSAgICAgICAgdGhpcy5fbWFpbkNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdkYXRh
Q2hhbmdlJywgKCkgPT4gdGhpcy5fZGlkRmV0Y2hEYXRhKCkpCisgICAgICAgIHRoaXMuX21haW5D
aGFydCA9IG5ldyBJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCh0aGlzLl9jcmVhdGVTb3VyY2VM
aXN0KHRydWUpLCBDaGFydFN0eWxlcy5tYWluQ2hhcnRPcHRpb25zKGZvcm1hdHRlcikpOworICAg
ICAgICB0aGlzLl9tYWluQ2hhcnQubGlzdGVuVG9BY3Rpb24oJ2RhdGFDaGFuZ2UnLCAoKSA9PiB0
aGlzLl9kaWRGZXRjaERhdGEoKSk7CisgICAgICAgIHRoaXMuX21haW5DaGFydC5saXN0ZW5Ub0Fj
dGlvbignaW5kaWNhdG9yQ2hhbmdlJywgdGhpcy5faW5kaWNhdG9yRGlkQ2hhbmdlLmJpbmQodGhp
cykpOworICAgICAgICB0aGlzLl9tYWluQ2hhcnQubGlzdGVuVG9BY3Rpb24oJ3NlbGVjdGlvbkNo
YW5nZScsIHRoaXMuX21haW5TZWxlY3Rpb25EaWRDaGFuZ2UuYmluZCh0aGlzKSk7CisgICAgICAg
IHRoaXMuX21haW5DaGFydC5saXN0ZW5Ub0FjdGlvbignem9vbScsIHRoaXMuX21haW5TZWxlY3Rp
b25EaWRab29tLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9tYWluQ2hhcnQubGlzdGVuVG9B
Y3Rpb24oJ2Fubm90YXRpb25DbGljaycsIHRoaXMuX29wZW5BbmFseXNpc1Rhc2suYmluZCh0aGlz
KSk7CiAgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVj
dG9yKCcuY2hhcnQtcGFuZS1tYWluJyksIHRoaXMuX21haW5DaGFydCk7CiAKICAgICAgICAgdGhp
cy5fbWFpbkNoYXJ0U3RhdHVzID0gbmV3IENoYXJ0UGFuZVN0YXR1c1ZpZXcocmVzdWx0Lm1ldHJp
YywgdGhpcy5fbWFpbkNoYXJ0LCB0aGlzLl9yZXF1ZXN0T3BlbmluZ0NvbW1pdFZpZXdlci5iaW5k
KHRoaXMpKTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9u
ZW50cy9jaGFydC1zdGF0dXMtdmlldy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY2hhcnQtc3RhdHVzLXZpZXcuanMJKHJldmlz
aW9uIDIxMjg1NykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9u
ZW50cy9jaGFydC1zdGF0dXMtdmlldy5qcwkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBA
QCBjbGFzcyBDaGFydFN0YXR1c1ZpZXcgZXh0ZW5kcyBDb21wb25lbnRCCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgICAgIGlmICh2aWV3ICYmIHZpZXcu
bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHZpZXcubGVu
Z3RoKCksIHZpZXcuZmlyc3RQb2ludCgpLCB2aWV3Lmxhc3RQb2ludCgpKQogICAgICAgICAgICAg
ICAgICAgICB0aGlzLl91c2VkU2VsZWN0aW9uID0gc2VsZWN0aW9uOwogICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50UG9pbnQgPSB2aWV3Lmxhc3RQb2ludCgpOwogICAgICAgICAgICAgICAgICAg
ICBwcmV2aW91c1BvaW50ID0gdmlldy5maXJzdFBvaW50KCk7CkluZGV4OiBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY2hhcnQtc3R5bGVzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFy
dC1zdHlsZXMuanMJKHJldmlzaW9uIDIxMjg1NykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1zdHlsZXMuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEyOSw2ICsxMjksNyBAQCBjbGFzcyBDaGFydFN0eWxlcyB7CiAgICAgICAgIHZhciBvcHRpb25z
ID0gdGhpcy5kYXNoYm9hcmRPcHRpb25zKHZhbHVlRm9ybWF0dGVyKTsKICAgICAgICAgb3B0aW9u
cy5heGlzLnhBeGlzRW5kUGFkZGluZyA9IDU7CiAgICAgICAgIG9wdGlvbnMuYXhpcy55QXhpc1dp
ZHRoID0gNTsKKyAgICAgICAgb3B0aW9ucy56b29tQnV0dG9uID0gdHJ1ZTsKICAgICAgICAgb3B0
aW9ucy5zZWxlY3Rpb24gPSB7CiAgICAgICAgICAgICBsaW5lU3R5bGU6ICcjZjkzJywKICAgICAg
ICAgICAgIGxpbmVXaWR0aDogMiwKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvY29tcG9uZW50cy9pbnRlcmFjdGl2ZS10aW1lLXNlcmllcy1jaGFydC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvaW50
ZXJhY3RpdmUtdGltZS1zZXJpZXMtY2hhcnQuanMJKHJldmlzaW9uIDIxMjg1NykKKysrIFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9pbnRlcmFjdGl2ZS10aW1l
LXNlcmllcy1jaGFydC5qcwkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNiBAQCBjbGFzcyBJ
bnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCBleHRlbmRzCiAKICAgICBsb2NrZWRJbmRpY2F0b3Io
KSB7IHJldHVybiB0aGlzLl9pbmRpY2F0b3JJc0xvY2tlZCA/IHRoaXMuY3VycmVudFBvaW50KCkg
OiBudWxsOyB9CiAKLQogICAgIHNldEluZGljYXRvcihpZCwgc2hvdWxkTG9jaykKICAgICB7CiAg
ICAgICAgIHZhciBzZWxlY3Rpb25EaWRDaGFuZ2UgPSAhIXRoaXMuX3NhbXBsZWRUaW1lU2VyaWVz
RGF0YTsKQEAgLTc3LDcgKzc2LDcgQEAgY2xhc3MgSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQg
ZXh0ZW5kcwogICAgICAgICB0aGlzLl9mb3JjZVJlbmRlciA9IHRydWU7CiAKICAgICAgICAgaWYg
KHNlbGVjdGlvbkRpZENoYW5nZSkKLSAgICAgICAgICAgIHRoaXMuX25vdGlmeVNlbGVjdGlvbkNo
YW5nZWQoKTsKKyAgICAgICAgICAgIHRoaXMuX25vdGlmeVNlbGVjdGlvbkNoYW5nZWQoZmFsc2Up
OwogICAgIH0KIAogICAgIG1vdmVMb2NrZWRJbmRpY2F0b3JXaXRoTm90aWZpY2F0aW9uKGZvcndh
cmQpCkBAIC0xMjEsMTQgKzEyMCwxMiBAQCBjbGFzcyBJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFy
dCBleHRlbmRzCiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhp
cy5fbW91c2VVcC5iaW5kKHRoaXMpKTsKICAgICAgICAgY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIo
J2NsaWNrJywgdGhpcy5fY2xpY2suYmluZCh0aGlzKSk7CiAKLSAgICAgICAgdGhpcy5fYW5ub3Rh
dGlvbkxhYmVsID0gdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLnRpbWUtc2VyaWVzLWNo
YXJ0LWFubm90YXRpb24tbGFiZWwnKTsKLSAgICAgICAgdGhpcy5fem9vbUJ1dHRvbiA9IHRoaXMu
Y29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy50aW1lLXNlcmllcy1jaGFydC16b29tLWJ1dHRvbicp
OworICAgICAgICB0aGlzLl9hbm5vdGF0aW9uTGFiZWwgPSB0aGlzLmNvbnRlbnQoJ2Fubm90YXRp
b24tbGFiZWwnKTsKKyAgICAgICAgdGhpcy5fem9vbUJ1dHRvbiA9IHRoaXMuY29udGVudCgnem9v
bS1idXR0b24nKTsKIAotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHRoaXMuX3pv
b21CdXR0b24ub25jbGljayA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICB0aGlzLl96b29t
QnV0dG9uLm9uY2xpY2sgPSAoZXZlbnQpID0+IHsKICAgICAgICAgICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7Ci0gICAgICAgICAgICBpZiAoc2VsZi5fb3B0aW9ucy5zZWxlY3Rpb24gJiYgc2Vs
Zi5fb3B0aW9ucy5zZWxlY3Rpb24ub256b29tKQotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMuc2VsZWN0aW9uLm9uem9vbShzZWxmLl9zZWxlY3Rpb25UaW1lUmFuZ2UpOworICAgICAgICAg
ICAgdGhpcy5kaXNwYXRjaEFjdGlvbignem9vbScsIHRoaXMuX3NlbGVjdGlvblRpbWVSYW5nZSk7
CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gY2FudmFzOwpAQCAtMTM3LDcgKzEzNCw3IEBA
IGNsYXNzIEludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0IGV4dGVuZHMKICAgICBzdGF0aWMgaHRt
bFRlbXBsYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBgCi0gICAgICAgICAgICA8YSBocmVm
PSIjIiB0aXRsZT0iWm9vbSIgY2xhc3M9InRpbWUtc2VyaWVzLWNoYXJ0LXpvb20tYnV0dG9uIiBz
dHlsZT0iZGlzcGxheTpub25lOyI+CisgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWm9v
bSIgaWQ9Inpvb20tYnV0dG9uIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgICAgICAgICAgICAg
ICAgPHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+CiAgICAgICAgICAgICAgICAgICAgIDxnIHN0
cm9rZS13aWR0aD0iMCIgc3Ryb2tlPSJub25lIj4KICAgICAgICAgICAgICAgICAgICAgICAgIDxw
b2x5Z29uIHBvaW50cz0iMjUsMjUgNSw1MCAyNSw3NSIvPgpAQCAtMTQ2LDE0ICsxNDMsMTQgQEAg
Y2xhc3MgSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQgZXh0ZW5kcwogICAgICAgICAgICAgICAg
ICAgICA8bGluZSB4MT0iMjAiIHkxPSI1MCIgeDI9IjgwIiB5Mj0iNTAiIHN0cm9rZS13aWR0aD0i
MTAiPjwvbGluZT4KICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgIDwvYT4KLSAg
ICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0aW1lLXNlcmllcy1jaGFydC1hbm5vdGF0aW9uLWxhYmVs
IiBzdHlsZT0iZGlzcGxheTpub25lOyI+PC9zcGFuPgorICAgICAgICAgICAgPHNwYW4gaWQ9ImFu
bm90YXRpb24tbGFiZWwiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48L3NwYW4+CiAgICAgICAgIGA7
CiAgICAgfQogCiAgICAgc3RhdGljIGNzc1RlbXBsYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBUaW1lU2VyaWVzQ2hhcnQuY3NzVGVtcGxhdGUoKSArIGAKLSAgICAgICAgICAgIC50aW1lLXNl
cmllcy1jaGFydC16b29tLWJ1dHRvbiB7CisgICAgICAgICAgICAjem9vbS1idXR0b24gewogICAg
ICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgICAgICBsZWZ0OiAw
OwogICAgICAgICAgICAgICAgIHRvcDogMDsKQEAgLTE2OSw3ICsxNjYsNyBAQCBjbGFzcyBJbnRl
cmFjdGl2ZVRpbWVTZXJpZXNDaGFydCBleHRlbmRzCiAgICAgICAgICAgICAgICAgei1pbmRleDog
MjA7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC50aW1lLXNlcmllcy1jaGFydC1hbm5v
dGF0aW9uLWxhYmVsIHsKKyAgICAgICAgICAgICNhbm5vdGF0aW9uLWxhYmVsIHsKICAgICAgICAg
ICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgICAgICAgbGVmdDogMDsKICAg
ICAgICAgICAgICAgICB0b3A6IDA7CkBAIC0xOTIsNyArMTg5LDcgQEAgY2xhc3MgSW50ZXJhY3Rp
dmVUaW1lU2VyaWVzQ2hhcnQgZXh0ZW5kcwogICAgIF9tb3VzZU1vdmUoZXZlbnQpCiAgICAgewog
ICAgICAgICB2YXIgY3Vyc29yTG9jYXRpb24gPSB7eDogZXZlbnQub2Zmc2V0WCwgeTogZXZlbnQu
b2Zmc2V0WX07Ci0gICAgICAgIGlmICh0aGlzLl9zdGFydE9yQ29udGludWVEcmFnZ2luZyhjdXJz
b3JMb2NhdGlvbikgfHwgdGhpcy5fc2VsZWN0aW9uVGltZVJhbmdlKQorICAgICAgICBpZiAodGhp
cy5fc3RhcnRPckNvbnRpbnVlRHJhZ2dpbmcoY3Vyc29yTG9jYXRpb24sIGZhbHNlKSB8fCB0aGlz
Ll9zZWxlY3Rpb25UaW1lUmFuZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYg
KHRoaXMuX2luZGljYXRvcklzTG9ja2VkKQpAQCAtMjA4LDYgKzIwNSw3IEBAIGNsYXNzIEludGVy
YWN0aXZlVGltZVNlcmllc0NoYXJ0IGV4dGVuZHMKICAgICAgICAgICAgIG5ld0luZGljYXRvcklE
ID0gdGhpcy5fZmluZENsb3Nlc3RQb2ludChjdXJzb3JMb2NhdGlvbik7CiAKICAgICAgICAgdGhp
cy5fZm9yY2VSZW5kZXIgPSB0cnVlOworICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwog
CiAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50QW5ub3RhdGlvbiA9PSBuZXdBbm5vdGF0aW9uICYm
IHRoaXMuX2luZGljYXRvcklEID09IG5ld0luZGljYXRvcklEKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMjI1LDYgKzIyMyw3IEBAIGNsYXNzIEludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0IGV4
dGVuZHMKIAogICAgICAgICB0aGlzLl9pbmRpY2F0b3JJRCA9IG51bGw7CiAgICAgICAgIHRoaXMu
X2ZvcmNlUmVuZGVyID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAg
ICAgICAgdGhpcy5fbm90aWZ5SW5kaWNhdG9yQ2hhbmdlZCgpOwogICAgIH0KIApAQCAtMjQ1LDcg
KzI0NCw2IEBAIGNsYXNzIEludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0IGV4dGVuZHMKICAgICAg
ICAgICAgIGlmICghdGhpcy5fZGlkRW5kRHJhZykgewogICAgICAgICAgICAgICAgIHRoaXMuX2xh
c3RNb3VzZURvd25Mb2NhdGlvbiA9IG51bGw7CiAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0
aW9uVGltZVJhbmdlID0gbnVsbDsKLSAgICAgICAgICAgICAgICB0aGlzLl9mb3JjZVJlbmRlciA9
IHRydWU7CiAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZ5U2VsZWN0aW9uQ2hhbmdlZCh0cnVl
KTsKICAgICAgICAgICAgICAgICB0aGlzLl9tb3VzZU1vdmUoZXZlbnQpOwogICAgICAgICAgICAg
fQpAQCAtMjU3LDE0ICsyNTUsMTQgQEAgY2xhc3MgSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQg
ZXh0ZW5kcwogICAgICAgICB2YXIgY3Vyc29yTG9jYXRpb24gPSB7eDogZXZlbnQub2Zmc2V0WCwg
eTogZXZlbnQub2Zmc2V0WX07CiAgICAgICAgIHZhciBhbm5vdGF0aW9uID0gdGhpcy5fZmluZEFu
bm90YXRpb24oY3Vyc29yTG9jYXRpb24pOwogICAgICAgICBpZiAoYW5ub3RhdGlvbikgewotICAg
ICAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMuYW5ub3RhdGlvbnMub25jbGljaykKLSAgICAgICAg
ICAgICAgICB0aGlzLl9vcHRpb25zLmFubm90YXRpb25zLm9uY2xpY2soYW5ub3RhdGlvbik7Cisg
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhbm5vdGF0aW9uQ2xpY2snLCBhbm5vdGF0
aW9uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2lu
ZGljYXRvcklzTG9ja2VkID0gIXRoaXMuX2luZGljYXRvcklzTG9ja2VkOwogICAgICAgICB0aGlz
Ll9pbmRpY2F0b3JJRCA9IHRoaXMuX2ZpbmRDbG9zZXN0UG9pbnQoY3Vyc29yTG9jYXRpb24pOwog
ICAgICAgICB0aGlzLl9mb3JjZVJlbmRlciA9IHRydWU7CisgICAgICAgIHRoaXMuZW5xdWV1ZVRv
UmVuZGVyKCk7CiAKICAgICAgICAgdGhpcy5fbm90aWZ5SW5kaWNhdG9yQ2hhbmdlZCgpOwogICAg
IH0KQEAgLTI5NCw2ICsyOTIsNyBAQCBjbGFzcyBJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCBl
eHRlbmRzCiAgICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25UaW1lUmFuZ2UgPSBbbWV0cmljcy54
VG9UaW1lKHNlbGVjdGlvblN0YXJ0KSwgbWV0cmljcy54VG9UaW1lKHNlbGVjdGlvbkVuZCldOwog
ICAgICAgICB9CiAgICAgICAgIHRoaXMuX2ZvcmNlUmVuZGVyID0gdHJ1ZTsKKyAgICAgICAgdGhp
cy5lbnF1ZXVlVG9SZW5kZXIoKTsKIAogICAgICAgICBpZiAoaW5kaWNhdG9yRGlkQ2hhbmdlKQog
ICAgICAgICAgICAgdGhpcy5fbm90aWZ5SW5kaWNhdG9yQ2hhbmdlZCgpOwpAQCAtMzEzLDIwICsz
MTIsMTcgQEAgY2xhc3MgSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQgZXh0ZW5kcwogICAgICAg
ICB0aGlzLl9kcmFnU3RhcnRlZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9sYXN0TW91c2VEb3du
TG9jYXRpb24gPSBudWxsOwogICAgICAgICB0aGlzLl9kaWRFbmREcmFnID0gdHJ1ZTsKLSAgICAg
ICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgc2Vs
Zi5fZGlkRW5kRHJhZyA9IGZhbHNlOyB9LCAwKTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0
aGlzLl9kaWRFbmREcmFnID0gZmFsc2UsIDApOwogICAgIH0KIAogICAgIF9ub3RpZnlJbmRpY2F0
b3JDaGFuZ2VkKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9vcHRpb25zLmluZGljYXRvciAm
JiB0aGlzLl9vcHRpb25zLmluZGljYXRvci5vbmNoYW5nZSkKLSAgICAgICAgICAgIHRoaXMuX29w
dGlvbnMuaW5kaWNhdG9yLm9uY2hhbmdlKHRoaXMuX2luZGljYXRvcklELCB0aGlzLl9pbmRpY2F0
b3JJc0xvY2tlZCk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2luZGljYXRvckNoYW5n
ZScsIHRoaXMuX2luZGljYXRvcklELCB0aGlzLl9pbmRpY2F0b3JJc0xvY2tlZCk7CiAgICAgfQog
CiAgICAgX25vdGlmeVNlbGVjdGlvbkNoYW5nZWQoZGlkRW5kRHJhZykKICAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl9vcHRpb25zLnNlbGVjdGlvbiAmJiB0aGlzLl9vcHRpb25zLnNlbGVjdGlvbi5v
bmNoYW5nZSkKLSAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuc2VsZWN0aW9uLm9uY2hhbmdlKHRo
aXMuX3NlbGVjdGlvblRpbWVSYW5nZSwgZGlkRW5kRHJhZyk7CisgICAgICAgIHRoaXMuZGlzcGF0
Y2hBY3Rpb24oJ3NlbGVjdGlvbkNoYW5nZScsIHRoaXMuX3NlbGVjdGlvblRpbWVSYW5nZSwgZGlk
RW5kRHJhZyk7CiAgICAgfQogCiAgICAgX2ZpbmRBbm5vdGF0aW9uKGN1cnNvckxvY2F0aW9uKQpA
QCAtNDY3LDEwICs0NjMsMTAgQEAgY2xhc3MgSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQgZXh0
ZW5kcwogICAgICAgICAgICAgY29udGV4dC5maWxsKCk7CiAgICAgICAgICAgICBjb250ZXh0LnN0
cm9rZSgpOwogICAgICAgICB9Ci0gICAgCisKICAgICAgICAgaWYgKHRoaXMuX3JlbmRlcmVkU2Vs
ZWN0aW9uICE9IHNlbGVjdGlvblgyKSB7CiAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlZFNlbGVj
dGlvbiA9IHNlbGVjdGlvblgyOwotICAgICAgICAgICAgaWYgKHRoaXMuX3JlbmRlcmVkU2VsZWN0
aW9uICYmIHNlbGVjdGlvbk9wdGlvbnMgJiYgc2VsZWN0aW9uT3B0aW9ucy5vbnpvb20KKyAgICAg
ICAgICAgIGlmICh0aGlzLl9yZW5kZXJlZFNlbGVjdGlvbiAmJiB0aGlzLl9vcHRpb25zLnpvb21C
dXR0b24KICAgICAgICAgICAgICAgICAmJiBzZWxlY3Rpb25YMiA+IDAgJiYgc2VsZWN0aW9uWDIg
PCBtZXRyaWNzLmNoYXJ0WCArIG1ldHJpY3MuY2hhcnRXaWR0aCkgewogICAgICAgICAgICAgICAg
IGlmICh0aGlzLl96b29tQnV0dG9uLnN0eWxlLmRpc3BsYXkpCiAgICAgICAgICAgICAgICAgICAg
IHRoaXMuX3pvb21CdXR0b24uc3R5bGUuZGlzcGxheSA9IG51bGw7CkluZGV4OiBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGltZS1zZXJpZXMtY2hhcnQuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25l
bnRzL3RpbWUtc2VyaWVzLWNoYXJ0LmpzCShyZXZpc2lvbiAyMTI4NTcpCisrKyBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGltZS1zZXJpZXMtY2hhcnQuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNSw2ICsxMzUsOCBAQCBjbGFzcyBUaW1lU2VyaWVzQ2hhcnQg
ZXh0ZW5kcyBDb21wb25lbnRCCiAgICAgewogICAgICAgICB0aGlzLl9hbm5vdGF0aW9ucyA9IGFu
bm90YXRpb25zOwogICAgICAgICB0aGlzLl9hbm5vdGF0aW9uUm93cyA9IG51bGw7CisKKyAgICAg
ICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICB9CiAKICAgICByZW5kZXIoKQo=
</data>
<flag name="review"
          id="324206"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>