<?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>168960</bug_id>
          
          <creation_ts>2017-02-27 20:41:18 -0800</creation_ts>
          <short_desc>Split tests for InteractiveTimeSeriesChart into a separate test file.</short_desc>
          <delta_ts>2017-02-27 20:50:27 -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>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1281702</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-02-27 20:41:18 -0800</bug_when>
    <thetext>time-series-chart-tests.js has gotten really big.
Split the tests for interactive charts into a separate file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281704</commentid>
    <comment_count>1</comment_count>
      <attachid>302919</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-02-27 20:47:20 -0800</bug_when>
    <thetext>Created attachment 302919
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281705</commentid>
    <comment_count>2</comment_count>
      <attachid>302919</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-02-27 20:48:58 -0800</bug_when>
    <thetext>Comment on attachment 302919
Cleanup

rs=me, just modifying tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281708</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-02-27 20:50:27 -0800</bug_when>
    <thetext>Committed r213119: &lt;http://trac.webkit.org/changeset/213119&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302919</attachid>
            <date>2017-02-27 20:47:20 -0800</date>
            <delta_ts>2017-02-27 20:48:58 -0800</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-168960-20170227204425.patch</filename>
            <type>text/plain</type>
            <size>142277</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzMTE3KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMzIEBACisyMDE3LTAyLTI3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIFNwbGl0IHRlc3RzIGZvciBJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCBpbnRv
IGEgc2VwYXJhdGUgdGVzdCBmaWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY4OTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXh0cmFjdGVkIHRoZSB0ZXN0IGNhc2VzIGZvciBJbnRlcmFjdGl2ZVRp
bWVTZXJpZXNDaGFydCBjaGFydHMgZnJvbSB0aW1lLXNlcmllcy1jaGFydC10ZXN0cy5qcworICAg
ICAgICBpbnRvIGludGVyYWN0aXZlLXRpbWUtc2VyaWVzLWNoYXJ0LXRlc3RzLmpzIG5vdyB0aGF0
IHRoZSBmb3JtZXIgZmlsZSBoYXMgZ290dGVuIHJlYWxseSBiaWcgb3ZlciB0aW1lLgorCisgICAg
ICAgIEFsc28gZXh0cmFjdGVkIGEgYnVuY2ggb2YgaGVscGVyIGZ1bmN0aW9ucyB0aW1lLXNlcmll
cy1jaGFydC10ZXN0cy5qcyBhcyBDaGFydFRlc3QgaW4gaW5kZXguaHRtbC4KKyAgICAgICAgQW55
IHRlc3Qgd2hpY2ggaW5zdGFudGlhdGVzIGEgdGltZSBzZXJpZXMgY2hhcnQgY2FuIHVzZSB0aGlz
IGhlbHBlciBjbGFzcy4KKworICAgICAgICAqIGJyb3dzZXItdGVzdHMvaW5kZXguaHRtbDoKKyAg
ICAgICAgKENoYXJ0VGVzdC5pbXBvcnRDaGFydFNjcmlwdHMpOiBEaXR0by4KKyAgICAgICAgKENo
YXJ0VGVzdC5wb3NpeFRpbWUpOiBNb3ZlZCBmcm9tIHRpbWUtc2VyaWVzLWNoYXJ0LXRlc3RzLmpz
LgorICAgICAgICAoQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIpOiBEaXR0by4KKyAgICAgICAgKENo
YXJ0VGVzdC5jcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKTogRGl0dG8uCisgICAgICAgIChD
aGFydFRlc3QuY3JlYXRlSW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKTogRGl0dG8u
CisgICAgICAgIChDaGFydFRlc3QucmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKToKKyAgICAgICAg
KiBicm93c2VyLXRlc3RzL2ludGVyYWN0aXZlLXRpbWUtc2VyaWVzLWNoYXJ0LXRlc3RzLmpzOiBF
eHRyYWN0ZWQgZnJvbSB0aW1lLXNlcmllcy1jaGFydC10ZXN0cy5qcy4KKyAgICAgICAgKiBicm93
c2VyLXRlc3RzL3RpbWUtc2VyaWVzLWNoYXJ0LXRlc3RzLmpzOgorICAgICAgICAocG9zaXhUaW1l
KTogTW92ZWQuCisgICAgICAgIChkYXlJbk1pbGxpc2Vjb25kcyk6IE1vdmVkLgorICAgICAgICAo
c2FtcGxlQ2x1c3Rlcik6IE1vdmVkLgorICAgICAgICAoY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1
c3Rlcik6IE1vdmVkLgorICAgICAgICAoY3JlYXRlSW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVD
bHVzdGVyKTogTW92ZWQuCisgICAgICAgIChyZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIpOiBNb3Zl
ZC4KKyAgICAgICAgKiB1bml0LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanM6IEZpeGVkIGEg
dHlwby4gcy9hZG9wdGVyL2FkYXB0ZXIvLgorCiAyMDE3LTAyLTI3ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIENhbGxpbmcgYnVpbGQoKSBvbiBhIGJhc2VsaW5l
IHBvaW50IHJlc3VsdHMgaW4gYW4gZXhjZXB0aW9uCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvYnJvd3Nlci10ZXN0cy9pbmRleC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwJKHJldmlzaW9uIDIxMzExNykK
KysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTE4LDYgKzE4LDcgQEAgbW9jaGEuc2V0dXAoJ2JkZCcpOwogPHNjcmlw
dCBzcmM9ImNsb3NlLWJ1dHRvbi10ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iZWRp
dGFibGUtdGV4dC10ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0idGltZS1zZXJpZXMt
Y2hhcnQtdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImludGVyYWN0aXZlLXRpbWUt
c2VyaWVzLWNoYXJ0LXRlc3RzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIGFmdGVyRWFjaCgo
KSA9PiB7CkBAIC0xODQsOCArMTg1LDEyNyBAQCBjb25zdCBDYW52YXNUZXN0ID0gewogICAgIGV4
cGVjdENhbnZhc2VzTWlzbWF0Y2goY2FudmFzMSwgY2FudmFzMikgeyByZXR1cm4gY2FudmFzUmVm
VGVzdChjYW52YXMxLCBjYW52YXMyLCBmYWxzZSk7IH0sCiB9CiAKK2NvbnN0IGRheUluTWlsbGlz
ZWNvbmRzID0gMjQgKiAzNjAwICogMTAwMDsKKworZnVuY3Rpb24gcG9zaXhUaW1lKHN0cmluZykg
eyByZXR1cm4gK25ldyBEYXRlKHN0cmluZyk7IH0KKworY29uc3QgQ2hhcnRUZXN0ID0geworICAg
IGltcG9ydENoYXJ0U2NyaXB0cyhjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQuaW1wb3J0U2NyaXB0cyhbCisgICAgICAgICAgICAnLi4vc2hhcmVkL3N0YXRpc3RpY3MuanMn
LAorICAgICAgICAgICAgJ2luc3RydW1lbnRhdGlvbi5qcycsCisgICAgICAgICAgICAnbW9kZWxz
L2RhdGEtbW9kZWwuanMnLAorICAgICAgICAgICAgJ21vZGVscy9tZXRyaWMuanMnLAorICAgICAg
ICAgICAgJ21vZGVscy90aW1lLXNlcmllcy5qcycsCisgICAgICAgICAgICAnbW9kZWxzL21lYXN1
cmVtZW50LXNldC5qcycsCisgICAgICAgICAgICAnbW9kZWxzL21lYXN1cmVtZW50LWNsdXN0ZXIu
anMnLAorICAgICAgICAgICAgJ21vZGVscy9tZWFzdXJlbWVudC1hZGFwdG9yLmpzJywKKyAgICAg
ICAgICAgICdjb21wb25lbnRzL2Jhc2UuanMnLAorICAgICAgICAgICAgJ2NvbXBvbmVudHMvdGlt
ZS1zZXJpZXMtY2hhcnQuanMnLAorICAgICAgICAgICAgJ2NvbXBvbmVudHMvaW50ZXJhY3RpdmUt
dGltZS1zZXJpZXMtY2hhcnQuanMnXSwKKyAgICAgICAgICAgICdDb21wb25lbnRCYXNlJywgJ1Rp
bWVTZXJpZXNDaGFydCcsICdJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCcsICdNZXRyaWMnLCAn
TWVhc3VyZW1lbnRTZXQnLCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4geworICAgICAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LnN5bWJvbHMuVGltZVNlcmllc0NoYXJ0OworICAgICAgICAg
ICAgfSkKKyAgICB9LAorCisgICAgcG9zaXhUaW1lOiBwb3NpeFRpbWUsCisKKyAgICBzYW1wbGVD
bHVzdGVyOiB7CisgICAgICAgICJjbHVzdGVyU3RhcnQiOiBwb3NpeFRpbWUoJzIwMTYtMDEtMDFU
MDA6MDA6MDBaJyksCisgICAgICAgICJjbHVzdGVyU2l6ZSI6IDcgKiBkYXlJbk1pbGxpc2Vjb25k
cywKKyAgICAgICAgInN0YXJ0VGltZSI6IHBvc2l4VGltZSgnMjAxNi0wMS0wMVQwMDowMDowMFon
KSwKKyAgICAgICAgImVuZFRpbWUiOiBwb3NpeFRpbWUoJzIwMTYtMDEtMDhUMDA6MDA6MDBaJyks
CisgICAgICAgICJsYXN0TW9kaWZpZWQiOiBwb3NpeFRpbWUoJzIwMTYtMDEtMThUMDA6MDA6MDBa
JyksCisgICAgICAgICJjbHVzdGVyQ291bnQiOiAxLAorICAgICAgICAic3RhdHVzIjogIk9LIiwK
KyAgICAgICAgImZvcm1hdE1hcCI6IFsKKyAgICAgICAgICAgICJpZCIsICJtZWFuIiwgIml0ZXJh
dGlvbkNvdW50IiwgInN1bSIsICJzcXVhcmVTdW0iLCAibWFya2VkT3V0bGllciIsCisgICAgICAg
ICAgICAicmV2aXNpb25zIiwKKyAgICAgICAgICAgICJjb21taXRUaW1lIiwgImJ1aWxkIiwgImJ1
aWxkVGltZSIsICJidWlsZE51bWJlciIsICJidWlsZGVyIgorICAgICAgICBdLAorICAgICAgICAi
Y29uZmlndXJhdGlvbnMiOiB7CisgICAgICAgICAgICAiY3VycmVudCI6IFsKKyAgICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgICAgIDEwMDAsIDEwMCwgMSwgMTAwLCAxMDAgKiAxMDAs
IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBbIFsgMjAwMCwgMSwgIjQwMDAiLCBwb3NpeFRp
bWUoJzIwMTYtMDEtMDVUMTc6MzU6MDBaJyldIF0sCisgICAgICAgICAgICAgICAgICAgIHBvc2l4
VGltZSgnMjAxNi0wMS0wNVQxNzozNTowMFonKSwgNTAwMCwgcG9zaXhUaW1lKCcyMDE2LTAxLTA1
VDE5OjIzOjAwWicpLCAiMTAiLCA3CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgICAgIDEwMDEsIDEzMSwgMSwgMTMxLCAxMzEgKiAxMzEsIHRy
dWUsCisgICAgICAgICAgICAgICAgICAgIFsgWyAyMDAxLCAxLCAiNDAwMSIsIHBvc2l4VGltZSgn
MjAxNi0wMS0wNVQxODo0MzowMVonKV0gXSwKKyAgICAgICAgICAgICAgICAgICAgcG9zaXhUaW1l
KCcyMDE2LTAxLTA1VDE4OjQzOjAxWicpLCA1MDAxLCBwb3NpeFRpbWUoJzIwMTYtMDEtMDVUMjA6
NTg6MDFaJyksICIxMSIsIDcKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgMTAwMiwgMTIyLCAxLCAxMjIsIDEyMiAqIDEyMiwgZmFsc2Us
CisgICAgICAgICAgICAgICAgICAgIFsgWyAyMDAyLCAxLCAiNDAwMiIsIHBvc2l4VGltZSgnMjAx
Ni0wMS0wNVQyMDowMTowMlonKSBdIF0sCisgICAgICAgICAgICAgICAgICAgIHBvc2l4VGltZSgn
MjAxNi0wMS0wNVQyMDowMTowMlonKSwgNTAwMiwgcG9zaXhUaW1lKCcyMDE2LTAxLTA1VDIyOjM3
OjAyWicpLCAiMTIiLCA3CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgIDEwMDMsIDExMywgMSwgMTEzLCAxMTMgKiAxMTMsIGZhbHNlLAor
ICAgICAgICAgICAgICAgICAgICBbIFsgMjAwMywgMSwgIjQwMDMiLCBwb3NpeFRpbWUoJzIwMTYt
MDEtMDVUMjM6MTk6MDNaJykgXSBdLAorICAgICAgICAgICAgICAgICAgICBwb3NpeFRpbWUoJzIw
MTYtMDEtMDVUMjM6MTk6MDNaJyksIDUwMDMsIHBvc2l4VGltZSgnMjAxNi0wMS0wNlQyMzoxOTow
M1onKSwgIjEzIiwgNworICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICAxMDA0LCAxMjQsIDEsIDEyNCwgMTI0ICogMTI0LCBmYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgWyBbIDIwMDQsIDEsICI0MDA0IiwgcG9zaXhUaW1lKCcyMDE2LTAx
LTA2VDAxOjUyOjA0WicpIF0gXSwKKyAgICAgICAgICAgICAgICAgICAgcG9zaXhUaW1lKCcyMDE2
LTAxLTA2VDAxOjUyOjA0WicpLCA1MDA0LCBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDI6NDI6MDRa
JyksICIxNCIsIDcKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAgICAgMTAwNSwgMTE1LCAxLCAxMTUsIDExNSAqIDExNSwgdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgWyBbIDIwMDUsIDEsICI0MDA1IiwgcG9zaXhUaW1lKCcyMDE2LTAxLTA2
VDAzOjIyOjA1WicpIF0gXSwKKyAgICAgICAgICAgICAgICAgICAgcG9zaXhUaW1lKCcyMDE2LTAx
LTA2VDAzOjIyOjA1WicpLCA1MDA1LCBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDY6MDE6MDVaJyks
ICIxNSIsIDcKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgMTAwNiwgMTE2LCAxLCAxMTYsIDExNiAqIDExNiwgZmFsc2UsCisgICAgICAg
ICAgICAgICAgICAgIFsgWyAyMDA2LCAxLCAiNDAwNiIsIHBvc2l4VGltZSgnMjAxNi0wMS0wNlQw
NTo1OTowNlonKSBdIF0sCisgICAgICAgICAgICAgICAgICAgIHBvc2l4VGltZSgnMjAxNi0wMS0w
NlQwNTo1OTowNlonKSwgNTAwNiwgcG9zaXhUaW1lKCcyMDE2LTAxLTA2VDA4OjM0OjA2WicpLCAi
MTYiLCA3CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAg
IH0sCisKKyAgICBjcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIHNvdXJjZUxp
c3QgPSBudWxsLCBjaGFydE9wdGlvbnMgPSB7fSwgY2xhc3NOYW1lID0gJ1RpbWVTZXJpZXNDaGFy
dCcpCisgICAgeworICAgICAgICBjb25zdCBUaW1lU2VyaWVzQ2hhcnQgPSBjb250ZXh0LnN5bWJv
bHNbY2xhc3NOYW1lXTsKKyAgICAgICAgY29uc3QgTWVhc3VyZW1lbnRTZXQgPSBjb250ZXh0LnN5
bWJvbHMuTWVhc3VyZW1lbnRTZXQ7CisKKyAgICAgICAgaWYgKHNvdXJjZUxpc3QgPT0gbnVsbCkK
KyAgICAgICAgICAgIHNvdXJjZUxpc3QgPSBbe3R5cGU6ICdjdXJyZW50J31dOworCisgICAgICAg
IGNvbnN0IHNhbXBsZUNsdXN0ZXIgPSBNZWFzdXJlbWVudFNldC5maW5kU2V0KDEsIDEsIDApOwor
ICAgICAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNlTGlzdCkgeworICAgICAgICAgICAgaWYg
KCFzb3VyY2UudHlwZSkKKyAgICAgICAgICAgICAgICBzb3VyY2UudHlwZSA9ICdjdXJyZW50JzsK
KyAgICAgICAgICAgIHNvdXJjZS5tZWFzdXJlbWVudFNldCA9IHNhbXBsZUNsdXN0ZXI7CisgICAg
ICAgIH0KKworICAgICAgICBjb25zdCBjaGFydCA9IG5ldyBUaW1lU2VyaWVzQ2hhcnQoc291cmNl
TGlzdCwgY2hhcnRPcHRpb25zKTsKKyAgICAgICAgY29uc3QgZWxlbWVudCA9IGNoYXJ0LmVsZW1l
bnQoKTsKKyAgICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IGNoYXJ0T3B0aW9ucy53aWR0aCB8
fCAnMzAwcHgnOworICAgICAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9IGNoYXJ0T3B0aW9ucy5o
ZWlnaHQgfHwgJzEwMHB4JzsKKyAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGVsZW1lbnQpOworCisgICAgICAgIHJldHVybiBjaGFydDsKKyAgICB9LAorCisgICAgY3Jl
YXRlSW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIHNvdXJjZUxpc3Qg
PSBudWxsLCBjaGFydE9wdGlvbnMgPSB7fSkKKyAgICB7CisgICAgICAgIGlmIChzb3VyY2VMaXN0
ID09IG51bGwpCisgICAgICAgICAgICBzb3VyY2VMaXN0ID0gW3t0eXBlOiAnY3VycmVudCcsIGlu
dGVyYWN0aXZlOiB0cnVlfV07CisgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoYXJ0V2l0aFNh
bXBsZUNsdXN0ZXIoY29udGV4dCwgc291cmNlTGlzdCwgY2hhcnRPcHRpb25zLCAnSW50ZXJhY3Rp
dmVUaW1lU2VyaWVzQ2hhcnQnKTsKKyAgICB9LAorCisgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVz
dGVyKHJlcXVlc3QpCisgICAgeworICAgICAgICBleHBlY3QocmVxdWVzdC51cmwpLnRvLmJlKCcu
Li9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEuanNvbicpOworICAgICAgICBleHBlY3QocmVxdWVz
dC5tZXRob2QpLnRvLmJlKCdHRVQnKTsKKyAgICAgICAgcmVxdWVzdC5yZXNvbHZlKHRoaXMuc2Ft
cGxlQ2x1c3Rlcik7CisgICAgfSwKK307CisKIG1vY2hhLmNoZWNrTGVha3MoKTsKLW1vY2hhLmds
b2JhbHMoWydleHBlY3QnLCAnQnJvd3NpbmdDb250ZXh0JywgJ0NhbnZhc1Rlc3QnLCAnd2FpdCcs
ICd3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyJ10pOworbW9jaGEuZ2xvYmFscyhbJ2V4cGVjdCcs
ICdCcm93c2luZ0NvbnRleHQnLCAnQ2FudmFzVGVzdCcsICdDaGFydFRlc3QnLCAnd2FpdCcsICd3
YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyJ10pOwogbW9jaGEucnVuKCk7CiAKIDwvc2NyaXB0PgpJ
bmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvaW50ZXJhY3RpdmUt
dGltZS1zZXJpZXMtY2hhcnQtdGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvaW50ZXJhY3RpdmUtdGltZS1zZXJpZXMtY2hhcnQtdGVz
dHMuanMJKG5vbmV4aXN0ZW50KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXIt
dGVzdHMvaW50ZXJhY3RpdmUtdGltZS1zZXJpZXMtY2hhcnQtdGVzdHMuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw4NDQgQEAKKworZGVzY3JpYmUoJ0ludGVyYWN0aXZlVGltZVNlcmllc0No
YXJ0JywgKCkgPT4geworCisgICAgaXQoJ3Nob3VsZCBjaGFuZ2UgdGhlIHVubG9ja2VkIGluZGlj
YXRvciB0byB0aGUgcG9pbnQgY2xvc2VzdCB0byB0aGUgbGFzdCBtb3VzZSBtb3ZlIHBvc2l0aW9u
JywgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgp
OworICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9ydENoYXJ0U2NyaXB0cyhjb250ZXh0KS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gQ2hhcnRUZXN0LmNyZWF0ZUlu
dGVyYWN0aXZlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0KTsKKworICAgICAgICAgICAg
Y2hhcnQuc2V0RG9tYWluKENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRU
ZXN0LnNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1
cmVtZW50U2V0cygpOworICAgICAgICAgICAgQ2hhcnRUZXN0LnJlc3BvbmRXaXRoU2FtcGxlQ2x1
c3Rlcihjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSk7CisKKyAgICAg
ICAgICAgIGNvbnN0IGluZGljYXRvckNoYW5nZUNhbGxzID0gW107CisgICAgICAgICAgICBjaGFy
dC5saXN0ZW5Ub0FjdGlvbignaW5kaWNhdG9yQ2hhbmdlJywgKC4uLmFyZ3MpID0+IGluZGljYXRv
ckNoYW5nZUNhbGxzLnB1c2goYXJncykpOworCisgICAgICAgICAgICBsZXQgc2VsZWN0aW9uQ2hh
bmdlQ291bnQgPSAwOworICAgICAgICAgICAgY2hhcnQubGlzdGVuVG9BY3Rpb24oJ3NlbGVjdGlv
bkNoYW5nZScsICgpID0+IHNlbGVjdGlvbkNoYW5nZUNvdW50KyspOworCisgICAgICAgICAgICBs
ZXQgY2FudmFzOworICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIo
Y29udGV4dCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJl
bnRTZWxlY3Rpb24oKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0
LmN1cnJlbnRJbmRpY2F0b3IoKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0
KGluZGljYXRvckNoYW5nZUNhbGxzKS50by5iZS5lcWwoW10pOworCisgICAgICAgICAgICAgICAg
Y2FudmFzID0gY2hhcnQuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOworICAgICAg
ICAgICAgICAgIGNvbnN0IHJlY3QgPSBjYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Cisg
ICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNl
bW92ZScsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5yaWdodCAtIDEsIGNsaWVudFk6
IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyLCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1
ZX0pKTsKKworICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJh
d0NoZWNrKGNhbnZhcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRz
VG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50
by5iZSh0cnVlKTsKKworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50U2VsZWN0
aW9uKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGNvbnN0IGluZGljYXRvciA9IGNo
YXJ0LmN1cnJlbnRJbmRpY2F0b3IoKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9y
KS50by5ub3QuYmUobnVsbCk7CisgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFZpZXcgPSBj
aGFydC5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1cnJlbnQnKTsKKyAgICAgICAgICAgICAgICBj
b25zdCBsYXN0UG9pbnQgPSBjdXJyZW50Vmlldy5sYXN0UG9pbnQoKTsKKyAgICAgICAgICAgICAg
ICBleHBlY3QoaW5kaWNhdG9yLnZpZXcpLnRvLmJlKGN1cnJlbnRWaWV3KTsKKyAgICAgICAgICAg
ICAgICBleHBlY3QoaW5kaWNhdG9yLnBvaW50KS50by5iZShsYXN0UG9pbnQpOworICAgICAgICAg
ICAgICAgIGV4cGVjdChpbmRpY2F0b3IuaXNMb2NrZWQpLnRvLmJlKGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ2FsbHMpLnRvLmJlLmVxbChbW2xhc3RQb2lu
dC5pZCwgZmFsc2VdXSk7CisKKyAgICAgICAgICAgICAgICBleHBlY3Qoc2VsZWN0aW9uQ2hhbmdl
Q291bnQpLnRvLmJlKDApOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwor
CisgICAgaXQoJ3Nob3VsZCBsb2NrIHRoZSBpbmRpY2F0b3IgdG8gdGhlIHBvaW50IGNsb3Nlc3Qg
dG8gdGhlIGNsaWNrZWQgcG9zaXRpb24nLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IGNvbnRleHQg
PSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7CisgICAgICAgIHJldHVybiBDaGFydFRlc3QuaW1wb3J0
Q2hhcnRTY3JpcHRzKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgY29uc3QgY2hh
cnQgPSBDaGFydFRlc3QuY3JlYXRlSW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNv
bnRleHQpOworCisgICAgICAgICAgICBjaGFydC5zZXREb21haW4oQ2hhcnRUZXN0LnNhbXBsZUNs
dXN0ZXIuc3RhcnRUaW1lLCBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKKyAgICAg
ICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7CisgICAgICAgICAgICBDaGFydFRl
c3QucmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzBdKTsKKworICAgICAgICAgICAgY29uc3QgaW5kaWNhdG9yQ2hhbmdlQ2FsbHMg
PSBbXTsKKyAgICAgICAgICAgIGNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdpbmRpY2F0b3JDaGFuZ2Un
LCAoLi4uYXJncykgPT4gaW5kaWNhdG9yQ2hhbmdlQ2FsbHMucHVzaChhcmdzKSk7CisKKyAgICAg
ICAgICAgIGxldCBzZWxlY3Rpb25DaGFuZ2VDb3VudCA9IDA7CisgICAgICAgICAgICBjaGFydC5s
aXN0ZW5Ub0FjdGlvbignc2VsZWN0aW9uQ2hhbmdlJywgKCkgPT4gc2VsZWN0aW9uQ2hhbmdlQ291
bnQrKyk7CisKKyAgICAgICAgICAgIGxldCBjYW52YXM7CisgICAgICAgICAgICByZXR1cm4gd2Fp
dEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVjdGlvbigpKS50by5iZShudWxsKTsKKyAgICAg
ICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudEluZGljYXRvcigpKS50by5iZShudWxsKTsK
KyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ2FsbHMpLnRvLmJlLmVxbChb
XSk7CisgICAgICAgICAgICAgICAgY2FudmFzID0gY2hhcnQuY29udGVudCgpLnF1ZXJ5U2VsZWN0
b3IoJ2NhbnZhcycpOworICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBjYW52YXMuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCB4ID0gcmVjdC5yaWdo
dCAtIDE7CisgICAgICAgICAgICAgICAgY29uc3QgeSA9IHJlY3QudG9wICsgcmVjdC5oZWlnaHQg
LyAyOworICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50
KCdtb3VzZW1vdmUnLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHgsIGNsaWVudFk6IHksIGNv
bXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOworICAgICAgICAgICAgICAgIGNhbnZhcy5k
aXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nLCB7dGFyZ2V0OiBjYW52YXMs
IGNsaWVudFg6IHgsIGNsaWVudFk6IHksIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkp
OworICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdt
b3VzZW1vdmUnLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHggLSAwLjUsIGNsaWVudFk6IHkg
KyAwLjUsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOworICAgICAgICAgICAgICAg
IGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZXVwJywge3RhcmdldDog
Y2FudmFzLCBjbGllbnRYOiB4IC0gMC41LCBjbGllbnRZOiB5ICsgMC41LCBjb21wb3NlZDogdHJ1
ZSwgYnViYmxlczogdHJ1ZX0pKTsKKyAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVu
dChuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHggLSAw
LjUsIGNsaWVudFk6IHkgKyAwLjUsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOwor
CisgICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2so
Y2FudmFzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRl
cihjb250ZXh0KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRy
dWUpOworCisgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFZpZXcgPSBjaGFydC5zYW1wbGVk
VGltZVNlcmllc0RhdGEoJ2N1cnJlbnQnKTsKKyAgICAgICAgICAgICAgICBjb25zdCBsYXN0UG9p
bnQgPSBjdXJyZW50Vmlldy5sYXN0UG9pbnQoKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hh
cnQuY3VycmVudFNlbGVjdGlvbigpKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBjb25z
dCBpbmRpY2F0b3IgPSBjaGFydC5jdXJyZW50SW5kaWNhdG9yKCk7CisgICAgICAgICAgICAgICAg
ZXhwZWN0KGluZGljYXRvci52aWV3KS50by5iZShjdXJyZW50Vmlldyk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KGluZGljYXRvci5wb2ludCkudG8uYmUobGFzdFBvaW50KTsKKyAgICAgICAgICAg
ICAgICBleHBlY3QoaW5kaWNhdG9yLmlzTG9ja2VkKS50by5iZSh0cnVlKTsKKyAgICAgICAgICAg
ICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ2FsbHMpLnRvLmJlLmVxbChbW2xhc3RQb2ludC5p
ZCwgZmFsc2VdLCBbbGFzdFBvaW50LmlkLCB0cnVlXV0pOworCisgICAgICAgICAgICAgICAgZXhw
ZWN0KHNlbGVjdGlvbkNoYW5nZUNvdW50KS50by5iZSgwKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgY2xlYXIgdGhlIHVubG9ja2VkIGlu
ZGljYXRvciB3aGVuIHRoZSBtb3VzZSBjdXJzb3IgZXhpdHMgdGhlIGNoYXJ0JywgKCkgPT4gewor
ICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICBy
ZXR1cm4gQ2hhcnRUZXN0LmltcG9ydENoYXJ0U2NyaXB0cyhjb250ZXh0KS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gQ2hhcnRUZXN0LmNyZWF0ZUludGVyYWN0aXZlQ2hh
cnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0KTsKKworICAgICAgICAgICAgY2hhcnQuc2V0RG9t
YWluKENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNhbXBsZUNs
dXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygp
OworICAgICAgICAgICAgQ2hhcnRUZXN0LnJlc3BvbmRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0
LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSk7CisKKyAgICAgICAgICAgIGNvbnN0
IGluZGljYXRvckNoYW5nZUNhbGxzID0gW107CisgICAgICAgICAgICBjaGFydC5saXN0ZW5Ub0Fj
dGlvbignaW5kaWNhdG9yQ2hhbmdlJywgKC4uLmFyZ3MpID0+IGluZGljYXRvckNoYW5nZUNhbGxz
LnB1c2goYXJncykpOworCisgICAgICAgICAgICBsZXQgc2VsZWN0aW9uQ2hhbmdlQ291bnQgPSAw
OworICAgICAgICAgICAgY2hhcnQubGlzdGVuVG9BY3Rpb24oJ3NlbGVjdGlvbkNoYW5nZScsICgp
ID0+IHNlbGVjdGlvbkNoYW5nZUNvdW50KyspOworCisgICAgICAgICAgICBsZXQgY2FudmFzOwor
ICAgICAgICAgICAgbGV0IHJlY3Q7CisgICAgICAgICAgICBsZXQgbGFzdFBvaW50OworICAgICAg
ICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSkudG8u
YmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRJbmRpY2F0b3Io
KSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvckNoYW5nZUNh
bGxzKS50by5iZS5lcWwoW10pOworCisgICAgICAgICAgICAgICAgY2FudmFzID0gY2hhcnQuY29u
dGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOworICAgICAgICAgICAgICAgIHJlY3QgPSBj
YW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgICAgICAgICAgY2FudmFzLmRp
c3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlbW92ZScsIHt0YXJnZXQ6IGNhbnZhcywg
Y2xpZW50WDogcmVjdC5yaWdodCAtIDEsIGNsaWVudFk6IHJlY3QudG9wICsgcmVjdC5oZWlnaHQg
LyAyLCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKKworICAgICAgICAgICAgICAg
IENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAg
ICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoQ2FudmFzVGVz
dC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZSh0cnVlKTsKKworICAgICAgICAg
ICAgICAgIGNvbnN0IGN1cnJlbnRWaWV3ID0gY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdj
dXJyZW50Jyk7CisgICAgICAgICAgICAgICAgbGFzdFBvaW50ID0gY3VycmVudFZpZXcubGFzdFBv
aW50KCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSku
dG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgY29uc3QgaW5kaWNhdG9yID0gY2hhcnQuY3Vy
cmVudEluZGljYXRvcigpOworICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3Iudmlldyku
dG8uYmUoY3VycmVudFZpZXcpOworICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IucG9p
bnQpLnRvLmJlKGxhc3RQb2ludCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci5p
c0xvY2tlZCkudG8uYmUoZmFsc2UpOworICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3JD
aGFuZ2VDYWxscykudG8uYmUuZXFsKFtbbGFzdFBvaW50LmlkLCBmYWxzZV1dKTsKKworICAgICAg
ICAgICAgICAgIGNhbnZhcy5wYXJlbnROb2RlLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQo
J21vdXNlbW92ZScsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5yaWdodCArIDUwLCBj
bGllbnRZOiByZWN0LmJvdHRvbSArIDUwLCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0p
KTsKKyAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgn
bW91c2VsZWF2ZScsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5yaWdodCArIDUwLCBj
bGllbnRZOiByZWN0LmJvdHRvbSArIDUwLCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0p
KTsKKworICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0No
ZWNrKGNhbnZhcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9S
ZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5i
ZSh0cnVlKTsKKworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50U2VsZWN0aW9u
KCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50SW5k
aWNhdG9yKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3JD
aGFuZ2VDYWxscykudG8uYmUuZXFsKFtbbGFzdFBvaW50LmlkLCBmYWxzZV0sIFtudWxsLCBmYWxz
ZV1dKTsKKworICAgICAgICAgICAgICAgIGV4cGVjdChzZWxlY3Rpb25DaGFuZ2VDb3VudCkudG8u
YmUoMCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgn
c2hvdWxkIG5vdCBjbGVhciB0aGUgbG9ja2VkIGluZGljYXRvciB3aGVuIHRoZSBtb3VzZSBjdXJz
b3IgZXhpdHMgdGhlIGNoYXJ0JywgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3
IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9ydENoYXJ0
U2NyaXB0cyhjb250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0g
Q2hhcnRUZXN0LmNyZWF0ZUludGVyYWN0aXZlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0
KTsKKworICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVy
LnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAg
ICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOworICAgICAgICAgICAgQ2hhcnRUZXN0LnJl
c3BvbmRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1swXSk7CisKKyAgICAgICAgICAgIGNvbnN0IGluZGljYXRvckNoYW5nZUNhbGxzID0gW107
CisgICAgICAgICAgICBjaGFydC5saXN0ZW5Ub0FjdGlvbignaW5kaWNhdG9yQ2hhbmdlJywgKC4u
LmFyZ3MpID0+IGluZGljYXRvckNoYW5nZUNhbGxzLnB1c2goYXJncykpOworCisgICAgICAgICAg
ICBsZXQgc2VsZWN0aW9uQ2hhbmdlQ291bnQgPSAwOworICAgICAgICAgICAgY2hhcnQubGlzdGVu
VG9BY3Rpb24oJ3NlbGVjdGlvbkNoYW5nZScsICgpID0+IHNlbGVjdGlvbkNoYW5nZUNvdW50Kysp
OworCisgICAgICAgICAgICBsZXQgY2FudmFzOworICAgICAgICAgICAgbGV0IHJlY3Q7CisgICAg
ICAgICAgICBsZXQgY3VycmVudFZpZXc7CisgICAgICAgICAgICBsZXQgbGFzdFBvaW50OworICAg
ICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSku
dG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRJbmRpY2F0
b3IoKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvckNoYW5n
ZUNhbGxzKS50by5iZS5lcWwoW10pOworCisgICAgICAgICAgICAgICAgY2FudmFzID0gY2hhcnQu
Y29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOworICAgICAgICAgICAgICAgIHJlY3Qg
PSBjYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgICAgICAgICAgY2FudmFz
LmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ2NsaWNrJywge3RhcmdldDogY2FudmFzLCBj
bGllbnRYOiByZWN0LnJpZ2h0IC0gMSwgY2xpZW50WTogcmVjdC50b3AgKyByZWN0LmhlaWdodCAv
IDIsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOworCisgICAgICAgICAgICAgICAg
Q2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAg
ICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNUZXN0
Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRydWUpOworCisgICAgICAgICAg
ICAgICAgY3VycmVudFZpZXcgPSBjaGFydC5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1cnJlbnQn
KTsKKyAgICAgICAgICAgICAgICBsYXN0UG9pbnQgPSBjdXJyZW50Vmlldy5sYXN0UG9pbnQoKTsK
KyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVjdGlvbigpKS50by5iZShu
dWxsKTsKKyAgICAgICAgICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSBjaGFydC5jdXJyZW50SW5k
aWNhdG9yKCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci52aWV3KS50by5iZShj
dXJyZW50Vmlldyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci5wb2ludCkudG8u
YmUobGFzdFBvaW50KTsKKyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLmlzTG9ja2Vk
KS50by5iZSh0cnVlKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ2Fs
bHMpLnRvLmJlLmVxbChbW2xhc3RQb2ludC5pZCwgdHJ1ZV1dKTsKKworICAgICAgICAgICAgICAg
IGNhbnZhcy5wYXJlbnROb2RlLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlbW92
ZScsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5yaWdodCArIDUwLCBjbGllbnRZOiBy
ZWN0LmJvdHRvbSArIDUwLCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKKyAgICAg
ICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91c2VsZWF2
ZScsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5yaWdodCArIDUwLCBjbGllbnRZOiBy
ZWN0LmJvdHRvbSArIDUwLCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKKworICAg
ICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZh
cyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29u
dGV4dCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBl
Y3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZShmYWxzZSk7
CisKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVjdGlvbigpKS50by5i
ZShudWxsKTsKKyAgICAgICAgICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSBjaGFydC5jdXJyZW50
SW5kaWNhdG9yKCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci52aWV3KS50by5i
ZShjdXJyZW50Vmlldyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci5wb2ludCku
dG8uYmUobGFzdFBvaW50KTsKKyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLmlzTG9j
a2VkKS50by5iZSh0cnVlKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdl
Q2FsbHMpLnRvLmJlLmVxbChbW2xhc3RQb2ludC5pZCwgdHJ1ZV1dKTsKKworICAgICAgICAgICAg
ICAgIGV4cGVjdChzZWxlY3Rpb25DaGFuZ2VDb3VudCkudG8uYmUoMCk7CisgICAgICAgICAgICB9
KQorICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgY2xlYXIgdGhlIGxvY2tl
ZCBpbmRpY2F0b3Igd2hlbiBjbGlja2VkJywgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0
ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9y
dENoYXJ0U2NyaXB0cyhjb250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNo
YXJ0ID0gQ2hhcnRUZXN0LmNyZWF0ZUludGVyYWN0aXZlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihj
b250ZXh0KTsKKworICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKENoYXJ0VGVzdC5zYW1wbGVD
bHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAg
ICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOworICAgICAgICAgICAgQ2hhcnRU
ZXN0LnJlc3BvbmRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1swXSk7CisKKyAgICAgICAgICAgIGNvbnN0IGluZGljYXRvckNoYW5nZUNhbGxz
ID0gW107CisgICAgICAgICAgICBjaGFydC5saXN0ZW5Ub0FjdGlvbignaW5kaWNhdG9yQ2hhbmdl
JywgKC4uLmFyZ3MpID0+IGluZGljYXRvckNoYW5nZUNhbGxzLnB1c2goYXJncykpOworCisgICAg
ICAgICAgICBsZXQgc2VsZWN0aW9uQ2hhbmdlQ291bnQgPSAwOworICAgICAgICAgICAgY2hhcnQu
bGlzdGVuVG9BY3Rpb24oJ3NlbGVjdGlvbkNoYW5nZScsICgpID0+IHNlbGVjdGlvbkNoYW5nZUNv
dW50KyspOworCisgICAgICAgICAgICBsZXQgY2FudmFzOworICAgICAgICAgICAgbGV0IHJlY3Q7
CisgICAgICAgICAgICBsZXQgeTsKKyAgICAgICAgICAgIGxldCBjdXJyZW50VmlldzsKKyAgICAg
ICAgICAgIGxldCBsYXN0UG9pbnQ7CisgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVu
dHNUb1JlbmRlcihjb250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
Y2hhcnQuY3VycmVudFNlbGVjdGlvbigpKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBl
eHBlY3QoY2hhcnQuY3VycmVudEluZGljYXRvcigpKS50by5iZShudWxsKTsKKyAgICAgICAgICAg
ICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ2FsbHMpLnRvLmJlLmVxbChbXSk7CisKKyAgICAg
ICAgICAgICAgICBjYW52YXMgPSBjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFz
Jyk7CisgICAgICAgICAgICAgICAgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KTsKKyAgICAgICAgICAgICAgICB5ID0gcmVjdC50b3AgKyByZWN0LmhlaWdodCAvIDI7CisgICAg
ICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ2NsaWNrJywg
e3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LnJpZ2h0IC0gMSwgY2xpZW50WTogeSwgY29t
cG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7CisKKyAgICAgICAgICAgICAgICBDYW52YXNU
ZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOworICAgICAgICAgICAgICAg
IHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAg
fSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2Fu
dmFzQmVlblJlZHJhd24oY2FudmFzKSkudG8uYmUodHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBj
dXJyZW50VmlldyA9IGNoYXJ0LnNhbXBsZWRUaW1lU2VyaWVzRGF0YSgnY3VycmVudCcpOworICAg
ICAgICAgICAgICAgIGxhc3RQb2ludCA9IGN1cnJlbnRWaWV3Lmxhc3RQb2ludCgpOworICAgICAg
ICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpLnRvLmJlKG51bGwpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IGluZGljYXRvciA9IGNoYXJ0LmN1cnJlbnRJbmRpY2F0b3Io
KTsKKyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLnZpZXcpLnRvLmJlKGN1cnJlbnRW
aWV3KTsKKyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLnBvaW50KS50by5iZShsYXN0
UG9pbnQpOworICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IuaXNMb2NrZWQpLnRvLmJl
KHRydWUpOworICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3JDaGFuZ2VDYWxscykudG8u
YmUuZXFsKFtbbGFzdFBvaW50LmlkLCB0cnVlXV0pOworCisgICAgICAgICAgICAgICAgY2FudmFz
LmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ2NsaWNrJywge3RhcmdldDogY2FudmFzLCBj
bGllbnRYOiByZWN0LmxlZnQgKyAxLCBjbGllbnRZOiB5LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxl
czogdHJ1ZX0pKTsKKworICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9y
ZVJlZHJhd0NoZWNrKGNhbnZhcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21w
b25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52
YXMpKS50by5iZSh0cnVlKTsKKworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50
U2VsZWN0aW9uKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0UG9p
bnQgPSBjdXJyZW50Vmlldy5maXJzdFBvaW50KCk7CisgICAgICAgICAgICAgICAgY29uc3QgaW5k
aWNhdG9yID0gY2hhcnQuY3VycmVudEluZGljYXRvcigpOworICAgICAgICAgICAgICAgIGV4cGVj
dChpbmRpY2F0b3IudmlldykudG8uYmUoY3VycmVudFZpZXcpOworICAgICAgICAgICAgICAgIGV4
cGVjdChpbmRpY2F0b3IucG9pbnQpLnRvLmJlKGZpcnN0UG9pbnQpOworICAgICAgICAgICAgICAg
IGV4cGVjdChpbmRpY2F0b3IuaXNMb2NrZWQpLnRvLmJlKGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ2FsbHMpLnRvLmJlLmVxbChbW2xhc3RQb2ludC5pZCwg
dHJ1ZV0sIFtmaXJzdFBvaW50LmlkLCBmYWxzZV1dKTsKKworICAgICAgICAgICAgICAgIGV4cGVj
dChzZWxlY3Rpb25DaGFuZ2VDb3VudCkudG8uYmUoMCk7CisgICAgICAgICAgICB9KQorICAgICAg
ICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgY2hhbmdlIHRoZSBzZWxlY3Rpb24gd2hl
biB0aGUgbW91c2UgY3Vyc29yIGlzIGRyYWdnZWQnLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IGNv
bnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7CisgICAgICAgIHJldHVybiBDaGFydFRlc3Qu
aW1wb3J0Q2hhcnRTY3JpcHRzKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgY29u
c3QgY2hhcnQgPSBDaGFydFRlc3QuY3JlYXRlSW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVDbHVz
dGVyKGNvbnRleHQsIG51bGwsIHtzZWxlY3Rpb246IHtsaW5lU3R5bGU6ICcjZjkzJywgbGluZVdp
ZHRoOiAyLCBmaWxsU3R5bGU6ICcjY2NjJ319KTsKKworICAgICAgICAgICAgY2hhcnQuc2V0RG9t
YWluKENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNhbXBsZUNs
dXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygp
OworICAgICAgICAgICAgQ2hhcnRUZXN0LnJlc3BvbmRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0
LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSk7CisKKyAgICAgICAgICAgIGNvbnN0
IGluZGljYXRvckNoYW5nZUNhbGxzID0gW107CisgICAgICAgICAgICBjaGFydC5saXN0ZW5Ub0Fj
dGlvbignaW5kaWNhdG9yQ2hhbmdlJywgKC4uLmFyZ3MpID0+IGluZGljYXRvckNoYW5nZUNhbGxz
LnB1c2goYXJncykpOworCisgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb25DaGFuZ2VDYWxscyA9
IFtdOworICAgICAgICAgICAgY2hhcnQubGlzdGVuVG9BY3Rpb24oJ3NlbGVjdGlvbkNoYW5nZScs
ICguLi5hcmdzKSA9PiBzZWxlY3Rpb25DaGFuZ2VDYWxscy5wdXNoKGFyZ3MpKTsKKworICAgICAg
ICAgICAgY29uc3Qgem9vbUJ1dHRvbiA9IGNoYXJ0LmNvbnRlbnQoJ3pvb20tYnV0dG9uJyk7CisK
KyAgICAgICAgICAgIGxldCBjYW52YXM7CisgICAgICAgICAgICBsZXQgcmVjdDsKKyAgICAgICAg
ICAgIGxldCB5OworICAgICAgICAgICAgbGV0IGN1cnJlbnRWaWV3OworICAgICAgICAgICAgbGV0
IGZpcnN0UG9pbnQ7CisgICAgICAgICAgICBsZXQgb2xkUmFuZ2U7CisgICAgICAgICAgICBsZXQg
bmV3UmFuZ2U7CisgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihj
b250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVu
dFNlbGVjdGlvbigpKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQu
Y3VycmVudEluZGljYXRvcigpKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
c2VsZWN0aW9uQ2hhbmdlQ2FsbHMpLnRvLmJlLmVxbChbXSk7CisKKyAgICAgICAgICAgICAgICBj
YW52YXMgPSBjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFzJyk7CisgICAgICAg
ICAgICAgICAgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAg
ICAgICAgICB5ID0gcmVjdC50b3AgKyByZWN0LmhlaWdodCAvIDI7CisgICAgICAgICAgICAgICAg
Y2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlbW92ZScsIHt0YXJnZXQ6
IGNhbnZhcywgY2xpZW50WDogcmVjdC5sZWZ0ICsgNSwgY2xpZW50WTogeSwgY29tcG9zZWQ6IHRy
dWUsIGJ1YmJsZXM6IHRydWV9KSk7CisKKyAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxD
YW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOworICAgICAgICAgICAgICAgIHJldHVybiB3
YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJl
ZHJhd24oY2FudmFzKSkudG8uYmUodHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBjdXJyZW50Vmll
dyA9IGNoYXJ0LnNhbXBsZWRUaW1lU2VyaWVzRGF0YSgnY3VycmVudCcpOworICAgICAgICAgICAg
ICAgIGZpcnN0UG9pbnQgPSBjdXJyZW50Vmlldy5maXJzdFBvaW50KCk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSkudG8uYmUobnVsbCk7CisgICAgICAg
ICAgICAgICAgbGV0IGluZGljYXRvciA9IGNoYXJ0LmN1cnJlbnRJbmRpY2F0b3IoKTsKKyAgICAg
ICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLnZpZXcpLnRvLmJlKGN1cnJlbnRWaWV3KTsKKyAg
ICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLnBvaW50KS50by5iZShmaXJzdFBvaW50KTsK
KyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLmlzTG9ja2VkKS50by5iZShmYWxzZSk7
CisgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvckNoYW5nZUNhbGxzKS50by5iZS5lcWwo
W1tmaXJzdFBvaW50LmlkLCBmYWxzZV1dKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoem9vbUJ1
dHRvbi5vZmZzZXRIZWlnaHQpLnRvLmJlKDApOworCisgICAgICAgICAgICAgICAgY2FudmFzLmRp
c3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicsIHt0YXJnZXQ6IGNhbnZhcywg
Y2xpZW50WDogcmVjdC5sZWZ0ICsgNSwgY2xpZW50WTogeSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJs
ZXM6IHRydWV9KSk7CisKKyAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNCZWZv
cmVSZWRyYXdDaGVjayhjYW52YXMpOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29t
cG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJlZHJhd24oY2Fu
dmFzKSkudG8uYmUoZmFsc2UpOworCisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJl
bnRTZWxlY3Rpb24oKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgbGV0IGluZGljYXRv
ciA9IGNoYXJ0LmN1cnJlbnRJbmRpY2F0b3IoKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoaW5k
aWNhdG9yLnZpZXcpLnRvLmJlKGN1cnJlbnRWaWV3KTsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
aW5kaWNhdG9yLnBvaW50KS50by5iZShmaXJzdFBvaW50KTsKKyAgICAgICAgICAgICAgICBleHBl
Y3QoaW5kaWNhdG9yLmlzTG9ja2VkKS50by5iZShmYWxzZSk7CisgICAgICAgICAgICAgICAgZXhw
ZWN0KHNlbGVjdGlvbkNoYW5nZUNhbGxzKS50by5iZS5lcWwoW10pOworICAgICAgICAgICAgICAg
IGV4cGVjdChpbmRpY2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtbZmlyc3RQb2ludC5pZCwg
ZmFsc2VdXSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHpvb21CdXR0b24ub2Zmc2V0SGVpZ2h0
KS50by5iZSgwKTsKKworICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBN
b3VzZUV2ZW50KCdtb3VzZW1vdmUnLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHJlY3QubGVm
dCArIDE1LCBjbGllbnRZOiB5ICsgNSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7
CisKKyAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVj
ayhjYW52YXMpOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVu
ZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJlZHJhd24oY2FudmFzKSkudG8uYmUo
dHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVjdGlvbigp
KS50by5ub3QuYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRJ
bmRpY2F0b3IoKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHNlbGVjdGlv
bkNoYW5nZUNhbGxzLmxlbmd0aCkudG8uYmUoMSk7CisgICAgICAgICAgICAgICAgb2xkUmFuZ2Ug
PSBzZWxlY3Rpb25DaGFuZ2VDYWxsc1swXVswXTsKKyAgICAgICAgICAgICAgICBleHBlY3Qob2xk
UmFuZ2UpLnRvLmJlLmVxbChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpOworICAgICAgICAgICAg
ICAgIGV4cGVjdChzZWxlY3Rpb25DaGFuZ2VDYWxsc1swXVsxXSkudG8uYmUoZmFsc2UpOworICAg
ICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtbZmly
c3RQb2ludC5pZCwgZmFsc2VdLCBbbnVsbCwgZmFsc2VdXSk7CisgICAgICAgICAgICAgICAgZXhw
ZWN0KHpvb21CdXR0b24ub2Zmc2V0SGVpZ2h0KS50by5iZSgwKTsKKworICAgICAgICAgICAgICAg
IGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZW1vdmUnLCB7dGFyZ2V0
OiBjYW52YXMsIGNsaWVudFg6IHJlY3QucmlnaHQgLSA1LCBjbGllbnRZOiB5ICsgNSwgY29tcG9z
ZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7CisKKyAgICAgICAgICAgICAgICBDYW52YXNUZXN0
LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOworICAgICAgICAgICAgICAgIHJl
dHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFz
QmVlblJlZHJhd24oY2FudmFzKSkudG8uYmUodHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBleHBl
Y3QoY2hhcnQuY3VycmVudFNlbGVjdGlvbigpKS50by5ub3QuYmUobnVsbCk7CisgICAgICAgICAg
ICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRJbmRpY2F0b3IoKSkudG8uYmUobnVsbCk7CisgICAg
ICAgICAgICAgICAgZXhwZWN0KHNlbGVjdGlvbkNoYW5nZUNhbGxzLmxlbmd0aCkudG8uYmUoMik7
CisgICAgICAgICAgICAgICAgbmV3UmFuZ2UgPSBzZWxlY3Rpb25DaGFuZ2VDYWxsc1sxXVswXTsK
KyAgICAgICAgICAgICAgICBleHBlY3QobmV3UmFuZ2UpLnRvLmJlLmVxbChjaGFydC5jdXJyZW50
U2VsZWN0aW9uKCkpOworICAgICAgICAgICAgICAgIGV4cGVjdChuZXdSYW5nZVswXSkudG8uYmUo
b2xkUmFuZ2VbMF0pOworICAgICAgICAgICAgICAgIGV4cGVjdChuZXdSYW5nZVsxXSkudG8uYmUu
Z3JlYXRlclRoYW4ob2xkUmFuZ2VbMV0pOworICAgICAgICAgICAgICAgIGV4cGVjdChzZWxlY3Rp
b25DaGFuZ2VDYWxsc1sxXVsxXSkudG8uYmUoZmFsc2UpOworICAgICAgICAgICAgICAgIGV4cGVj
dCh6b29tQnV0dG9uLm9mZnNldEhlaWdodCkudG8uYmUoMCk7CisKKyAgICAgICAgICAgICAgICBj
YW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91c2V1cCcsIHt0YXJnZXQ6IGNh
bnZhcywgY2xpZW50WDogcmVjdC5yaWdodCAtIDUsIGNsaWVudFk6IHkgKyA1LCBjb21wb3NlZDog
dHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKKyAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hF
dmVudChuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHJl
Y3QucmlnaHQgLSA1LCBjbGllbnRZOiB5ICsgNSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRy
dWV9KSk7CisKKyAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRy
YXdDaGVjayhjYW52YXMpOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50
c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJlZHJhd24oY2FudmFzKSku
dG8uYmUodHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVj
dGlvbigpKS50by5iZS5lcWwobmV3UmFuZ2UpOworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFy
dC5jdXJyZW50SW5kaWNhdG9yKCkpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVj
dChzZWxlY3Rpb25DaGFuZ2VDYWxscy5sZW5ndGgpLnRvLmJlKDMpOworICAgICAgICAgICAgICAg
IGV4cGVjdChzZWxlY3Rpb25DaGFuZ2VDYWxsc1syXVswXSkudG8uYmUuZXFsKG5ld1JhbmdlKTsK
KyAgICAgICAgICAgICAgICBleHBlY3Qoc2VsZWN0aW9uQ2hhbmdlQ2FsbHNbMl1bMV0pLnRvLmJl
KHRydWUpOworICAgICAgICAgICAgICAgIGV4cGVjdCh6b29tQnV0dG9uLm9mZnNldEhlaWdodCku
dG8uYmUoMCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBp
dCgnc2hvdWxkIGRpc3BhdGNoIHRoZSAiem9vbSIgYWN0aW9uIHdoZW4gdGhlIHpvb20gYnV0dG9u
IGlzIGNsaWNrZWQnLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3Np
bmdDb250ZXh0KCk7CisgICAgICAgIHJldHVybiBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRz
KGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgY29uc3QgY2hhcnQgPSBDaGFydFRl
c3QuY3JlYXRlSW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIG51bGws
IHtzZWxlY3Rpb246IHtsaW5lU3R5bGU6ICcjZjkzJywgbGluZVdpZHRoOiAyLCBmaWxsU3R5bGU6
ICcjY2NjJ30sIHpvb21CdXR0b246IHRydWV9KTsKKworICAgICAgICAgICAgY2hhcnQuc2V0RG9t
YWluKENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNhbXBsZUNs
dXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygp
OworICAgICAgICAgICAgQ2hhcnRUZXN0LnJlc3BvbmRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0
LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSk7CisKKyAgICAgICAgICAgIGNvbnN0
IHpvb21DYWxscyA9IFtdOworICAgICAgICAgICAgY2hhcnQubGlzdGVuVG9BY3Rpb24oJ3pvb20n
LCAoLi4uYXJncykgPT4gem9vbUNhbGxzLnB1c2goYXJncykpOworICAgICAgICAgICAgY29uc3Qg
em9vbUJ1dHRvbiA9IGNoYXJ0LmNvbnRlbnQoJ3pvb20tYnV0dG9uJyk7CisKKyAgICAgICAgICAg
IGxldCBzZWxlY3Rpb247CisgICAgICAgICAgICBsZXQgY2FudmFzOworICAgICAgICAgICAgcmV0
dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgZXhwZWN0KHpvb21CdXR0b24ub2Zmc2V0SGVpZ2h0KS50by5iZSgwKTsKKyAg
ICAgICAgICAgICAgICBjYW52YXMgPSBjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2Fu
dmFzJyk7CisgICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKTsKKyAgICAgICAgICAgICAgICBjb25zdCB5ID0gcmVjdC50b3AgKyByZWN0Lmhl
aWdodCAvIDI7CisgICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNl
RXZlbnQoJ21vdXNlbW92ZScsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5sZWZ0ICsg
NSwgY2xpZW50WTogeSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7CisgICAgICAg
ICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bics
IHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5sZWZ0ICsgNSwgY2xpZW50WTogeSwgY29t
cG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7CisgICAgICAgICAgICAgICAgY2FudmFzLmRp
c3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlbW92ZScsIHt0YXJnZXQ6IGNhbnZhcywg
Y2xpZW50WDogcmVjdC5yaWdodCAtIDEwLCBjbGllbnRZOiB5ICsgNSwgY29tcG9zZWQ6IHRydWUs
IGJ1YmJsZXM6IHRydWV9KSk7CisgICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQo
bmV3IE1vdXNlRXZlbnQoJ21vdXNldXAnLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHJlY3Qu
cmlnaHQgLSAxMCwgY2xpZW50WTogeSArIDUsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVl
fSkpOworCisgICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3
Q2hlY2soY2FudmFzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNU
b1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAg
ICAgICAgIGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRv
LmJlKHRydWUpOworCisgICAgICAgICAgICAgICAgc2VsZWN0aW9uID0gY2hhcnQuY3VycmVudFNl
bGVjdGlvbigpOworICAgICAgICAgICAgICAgIGV4cGVjdChzZWxlY3Rpb24pLnRvLm5vdC5iZShu
dWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudEluZGljYXRvcigpKS50
by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoem9vbUJ1dHRvbi5vZmZzZXRIZWln
aHQpLnRvLm5vdC5iZSgwKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoem9vbUNhbGxzKS50by5i
ZS5lcWwoW10pOworICAgICAgICAgICAgICAgIHpvb21CdXR0b24uY2xpY2soKTsKKyAgICAgICAg
ICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdCh6b29tQ2FsbHMpLnRv
LmJlLmVxbChbW3NlbGVjdGlvbl1dKTsKKworICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmls
bENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVu
UmVkcmF3bihjYW52YXMpKS50by5iZShmYWxzZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGNsZWFyIHRoZSBzZWxlY3Rpb24gd2hlbiBj
bGlja2VkJywgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29u
dGV4dCgpOworICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9ydENoYXJ0U2NyaXB0cyhjb250
ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gQ2hhcnRUZXN0LmNy
ZWF0ZUludGVyYWN0aXZlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBudWxsLCB7c2Vs
ZWN0aW9uOiB7bGluZVN0eWxlOiAnI2Y5MycsIGxpbmVXaWR0aDogMiwgZmlsbFN0eWxlOiAnI2Nj
Yyd9fSk7CisKKyAgICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihDaGFydFRlc3Quc2FtcGxlQ2x1
c3Rlci5zdGFydFRpbWUsIENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAg
ICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKKyAgICAgICAgICAgIENoYXJ0VGVz
dC5yZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbMF0pOworCisgICAgICAgICAgICBsZXQgY2FudmFzOworICAgICAgICAgICAgbGV0
IHJlY3Q7CisgICAgICAgICAgICBsZXQgeTsKKyAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29t
cG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNh
bnZhcyA9IGNoYXJ0LmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKTsKKyAgICAgICAg
ICAgICAgICByZWN0ID0gY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICAg
ICAgICAgIHkgPSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMjsKKyAgICAgICAgICAgICAgICBj
YW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91c2Vtb3ZlJywge3RhcmdldDog
Y2FudmFzLCBjbGllbnRYOiByZWN0LmxlZnQgKyA1LCBjbGllbnRZOiB5LCBjb21wb3NlZDogdHJ1
ZSwgYnViYmxlczogdHJ1ZX0pKTsKKyAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVu
dChuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiBy
ZWN0LmxlZnQgKyA1LCBjbGllbnRZOiB5LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0p
KTsKKyAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgn
bW91c2Vtb3ZlJywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LnJpZ2h0IC0gMTAsIGNs
aWVudFk6IHkgKyA1LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKKyAgICAgICAg
ICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91c2V1cCcsIHt0
YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5yaWdodCAtIDEwLCBjbGllbnRZOiB5ICsgNSwg
Y29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7CisgICAgICAgICAgICAgICAgY2FudmFz
LmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ2NsaWNrJywge3RhcmdldDogY2FudmFzLCBj
bGllbnRYOiByZWN0LnJpZ2h0IC0gMTAsIGNsaWVudFk6IHkgKyA1LCBjb21wb3NlZDogdHJ1ZSwg
YnViYmxlczogdHJ1ZX0pKTsKKworICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZh
c0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRG
b3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3
bihjYW52YXMpKS50by5iZSh0cnVlKTsKKworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5j
dXJyZW50U2VsZWN0aW9uKCkpLnRvLm5vdC5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBl
Y3QoY2hhcnQuY3VycmVudEluZGljYXRvcigpKS50by5iZShudWxsKTsKKworICAgICAgICAgICAg
ICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdjbGljaycsIHt0YXJnZXQ6
IGNhbnZhcywgY2xpZW50WDogcmVjdC5sZWZ0ICsgMSwgY2xpZW50WTogeSArIDUsIGNvbXBvc2Vk
OiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOworCisgICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5m
aWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgICAgIH0pLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0Jl
ZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRydWUpOworCisgICAgICAgICAgICAgICAgZXhwZWN0
KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAg
Y29uc3QgY3VycmVudFZpZXcgPSBjaGFydC5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1cnJlbnQn
KTsKKyAgICAgICAgICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSBjaGFydC5jdXJyZW50SW5kaWNh
dG9yKCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci52aWV3KS50by5iZShjdXJy
ZW50Vmlldyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci5wb2ludCkudG8uYmUo
Y3VycmVudFZpZXcuZmlyc3RQb2ludCgpKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNh
dG9yLmlzTG9ja2VkKS50by5iZShmYWxzZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGRpc3BhdGNoICJhbm5vdGF0aW9uQ2xpY2siIGFj
dGlvbiB3aGVuIGFuIGFubm90YXRpb24gaXMgY2xpY2tlZCcsICgpID0+IHsKKyAgICAgICAgY29u
c3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgcmV0dXJuIENoYXJ0
VGVzdC5pbXBvcnRDaGFydFNjcmlwdHMoY29udGV4dCkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICBjb25zdCBjaGFydCA9IENoYXJ0VGVzdC5jcmVhdGVJbnRlcmFjdGl2ZUNoYXJ0V2l0aFNhbXBs
ZUNsdXN0ZXIoY29udGV4dCwgbnVsbCwKKyAgICAgICAgICAgICAgICB7YW5ub3RhdGlvbnM6IHsg
dGV4dFN0eWxlOiAnIzAwMCcsIHRleHRCYWNrZ3JvdW5kOiAnI2ZmZicsIG1pbldpZHRoOiAzLCBi
YXJIZWlnaHQ6IDEwLCBiYXJTcGFjaW5nOiAxfX0pOworCisgICAgICAgICAgICBjaGFydC5zZXRE
b21haW4oQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBDaGFydFRlc3Quc2FtcGxl
Q2x1c3Rlci5lbmRUaW1lKTsKKyAgICAgICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRz
KCk7CisgICAgICAgICAgICBDaGFydFRlc3QucmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRl
eHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdKTsKKworICAgICAgICAgICAgY29u
c3QgZGlmZiA9IENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRpbWUgLSBDaGFydFRlc3Quc2Ft
cGxlQ2x1c3Rlci5zdGFydFRpbWU7CisgICAgICAgICAgICBjb25zdCBhbm5vdGF0aW9ucyA9IFt7
CisgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5zdGFy
dFRpbWUgKyBkaWZmIC8gMiwKKyAgICAgICAgICAgICAgICBlbmRUaW1lOiBDaGFydFRlc3Quc2Ft
cGxlQ2x1c3Rlci5lbmRUaW1lIC0gZGlmZiAvIDQsCisgICAgICAgICAgICAgICAgbGFiZWw6ICdo
ZWxsbywgd29ybGQnLAorICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3JnYigwLCAwLCAyNTUp
JywKKyAgICAgICAgICAgIH1dCisgICAgICAgICAgICBjaGFydC5zZXRBbm5vdGF0aW9ucyhhbm5v
dGF0aW9ucyk7CisKKyAgICAgICAgICAgIGNvbnN0IGFubm90YXRpb25DbGlja0NhbGxzID0gW107
CisgICAgICAgICAgICBjaGFydC5saXN0ZW5Ub0FjdGlvbignYW5ub3RhdGlvbkNsaWNrJywgKC4u
LmFyZ3MpID0+IGFubm90YXRpb25DbGlja0NhbGxzLnB1c2goYXJncykpOworCisgICAgICAgICAg
ICBsZXQgY2FudmFzOworICAgICAgICAgICAgbGV0IGluaXQ7CisgICAgICAgICAgICByZXR1cm4g
d2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICBleHBlY3QoYW5ub3RhdGlvbkNsaWNrQ2FsbHMpLnRvLmJlLmVxbChbXSk7CisgICAg
ICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmNvbnRlbnQoJ2Fubm90YXRpb24tbGFiZWwnKS50ZXh0
Q29udGVudCkudG8ubm90LmNvbnRhaW4oJ2hlbGxvLCB3b3JsZCcpOworCisgICAgICAgICAgICAg
ICAgY2FudmFzID0gY2hhcnQuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOworICAg
ICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBjYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7
CisgICAgICAgICAgICAgICAgaW5pdCA9IHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5y
aWdodCAtIHJlY3Qud2lkdGggLyA0LCBjbGllbnRZOiByZWN0LmJvdHRvbSAtIDUsIGNvbXBvc2Vk
OiB0cnVlLCBidWJibGVzOiB0cnVlfTsKKyAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hF
dmVudChuZXcgTW91c2VFdmVudCgnbW91c2Vtb3ZlJywgaW5pdCkpOworCisgICAgICAgICAgICAg
ICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNU
ZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRydWUpOworCisgICAgICAg
ICAgICAgICAgZXhwZWN0KGNoYXJ0LmNvbnRlbnQoJ2Fubm90YXRpb24tbGFiZWwnKS50ZXh0Q29u
dGVudCkudG8uY29udGFpbignaGVsbG8sIHdvcmxkJyk7CisgICAgICAgICAgICAgICAgZXhwZWN0
KGFubm90YXRpb25DbGlja0NhbGxzKS50by5iZS5lcWwoW10pOworICAgICAgICAgICAgICAgIGNh
bnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nLCBpbml0KSk7Cisg
ICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNl
dXAnLCBpbml0KSk7CisgICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1v
dXNlRXZlbnQoJ2NsaWNrJywgaW5pdCkpOworCisgICAgICAgICAgICAgICAgZXhwZWN0KGFubm90
YXRpb25DbGlja0NhbGxzKS50by5iZS5lcWwoW1thbm5vdGF0aW9uc1swXV1dKTsKKworICAgICAg
ICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4
dCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
Q2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZShmYWxzZSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgncmVu
ZGVyJywgKCkgPT4geworICAgICAgICBpdCgnc2hvdWxkIHJlbmRlciB0aGUgdW5sb2NrZWQgaW5k
aWNhdG9yIHdoZW4gb3B0aW9ucy5pbmRpY2F0b3IgaXMgc3BlY2lmaWVkJywgKCkgPT4geworICAg
ICAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRzKGNvbnRleHQpLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0V2l0aG91dEluZGljYXRvciA9IENoYXJ0
VGVzdC5jcmVhdGVJbnRlcmFjdGl2ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCk7Cisg
ICAgICAgICAgICAgICAgY29uc3QgY2hhcnRXaXRoSW5kaWNhdG9yID0gQ2hhcnRUZXN0LmNyZWF0
ZUludGVyYWN0aXZlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBudWxsLAorICAgICAg
ICAgICAgICAgICAgICB7aW5kaWNhdG9yOiB7bGluZVN0eWxlOiAncmdiKDUxLCAyMDQsIDI1NSkn
LCBsaW5lV2lkdGg6IDIsIHBvaW50UmFkaXVzOiAyfSwgaW50ZXJhY3RpdmVDaGFydDogdHJ1ZX0p
OworICAgICAgICAgICAgICAgIGNvbnN0IGluZGljYXRvckNvbG9yID0ge3I6IDUxLCBnOiAyMDQs
IGI6IDI1NX07CisKKyAgICAgICAgICAgICAgICBjaGFydFdpdGhvdXRJbmRpY2F0b3Iuc2V0RG9t
YWluKENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNhbXBsZUNs
dXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICAgICAgY2hhcnRXaXRob3V0SW5kaWNhdG9yLmZl
dGNoTWVhc3VyZW1lbnRTZXRzKCk7CisgICAgICAgICAgICAgICAgQ2hhcnRUZXN0LnJlc3BvbmRX
aXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sw
XSk7CisKKyAgICAgICAgICAgICAgICBjaGFydFdpdGhJbmRpY2F0b3Iuc2V0RG9tYWluKENoYXJ0
VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuZW5k
VGltZSk7CisgICAgICAgICAgICAgICAgY2hhcnRXaXRoSW5kaWNhdG9yLmZldGNoTWVhc3VyZW1l
bnRTZXRzKCk7CisKKyAgICAgICAgICAgICAgICBsZXQgY2FudmFzV2l0aG91dEluZGljYXRvcjsK
KyAgICAgICAgICAgICAgICBsZXQgY2FudmFzV2l0aEluZGljYXRvcjsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgY2FudmFzV2l0aG91dEluZGljYXRvciA9IGNoYXJ0V2l0aG91
dEluZGljYXRvci5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFzJyk7CisgICAgICAgICAg
ICAgICAgICAgIGNhbnZhc1dpdGhJbmRpY2F0b3IgPSBjaGFydFdpdGhJbmRpY2F0b3IuY29udGVu
dCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOworCisgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHJlY3QgPSBjYW52YXNXaXRoSW5kaWNhdG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAg
ICAgICAgICAgICAgICAgICBjb25zdCB4ID0gcmVjdC5yaWdodCAtIDE7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHkgPSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMjsKKyAgICAgICAgICAg
ICAgICAgICAgY2FudmFzV2l0aEluZGljYXRvci5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50
KCdtb3VzZW1vdmUnLCB7dGFyZ2V0OiBjYW52YXNXaXRoSW5kaWNhdG9yLCBjbGllbnRYOiB4LCBj
bGllbnRZOiB5LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKKworICAgICAgICAg
ICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXNX
aXRoSW5kaWNhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25l
bnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXdu
KGNhbnZhc1dpdGhJbmRpY2F0b3IpKS50by5iZSh0cnVlKTsKKworICAgICAgICAgICAgICAgICAg
ICBjb25zdCBpbmRpY2F0b3IgPSBjaGFydFdpdGhJbmRpY2F0b3IuY3VycmVudEluZGljYXRvcigp
OworICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmlldyA9IGNoYXJ0V2l0aEluZGlj
YXRvci5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1cnJlbnQnKTsKKyAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0KGluZGljYXRvci52aWV3KS50by5iZShjdXJyZW50Vmlldyk7CisgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IucG9pbnQpLnRvLmJlKGN1cnJlbnRWaWV3Lmxhc3RQ
b2ludCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci5pc0xvY2tlZCku
dG8uYmUoZmFsc2UpOworCisgICAgICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZXhwZWN0Q2Fu
dmFzZXNNaXNtYXRjaChjYW52YXNXaXRob3V0SW5kaWNhdG9yLCBjYW52YXNXaXRoSW5kaWNhdG9y
KTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuY2FudmFzQ29udGFpbnND
b2xvcihjYW52YXNXaXRob3V0SW5kaWNhdG9yLCBpbmRpY2F0b3JDb2xvcikpLnRvLmJlKGZhbHNl
KTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuY2FudmFzQ29udGFpbnND
b2xvcihjYW52YXNXaXRoSW5kaWNhdG9yLCBpbmRpY2F0b3JDb2xvcikpLnRvLmJlKHRydWUpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGl0KCdzaG91bGQgcmVuZGVyIHRoZSBsb2NrZWQgaW5kaWNhdG9yIGRpZmZlcmVudGx5IGZy
b20gdGhlIHVubG9ja2VkIGluZGljYXRvciB3aGVuIG9wdGlvbnMubG9ja2VkSW5kaWNhdG9yIGlz
IHNwZWNpZmllZCcsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJv
d3NpbmdDb250ZXh0KCk7CisgICAgICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9ydENoYXJ0
U2NyaXB0cyhjb250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFy
dE9wdGlvbnMgPSB7CisgICAgICAgICAgICAgICAgICAgIGluZGljYXRvcjoge2xpbmVTdHlsZTog
J3JnYig1MSwgMjA0LCAyNTUpJywgbGluZVdpZHRoOiAyLCBwb2ludFJhZGl1czogM30sCisgICAg
ICAgICAgICAgICAgICAgIGxvY2tlZEluZGljYXRvcjoge2xpbmVTdHlsZTogJ3JnYig1MSwgMTAy
LCAyMDQpJywgZmlsbFN0eWxlOiAncmdiKDI1MCwgMjUwLCAyNTApJywgbGluZVdpZHRoOiAyLCBw
b2ludFJhZGl1czogM30KKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGNvbnN0
IHVubG9ja2VkQ29sb3IgPSB7cjogNTEsIGc6IDIwNCwgYjogMjU1fTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBsb2NrZWRDb2xvciA9IHtyOiA1MSwgZzogMTAyLCBiOiAyMDR9OworICAgICAgICAg
ICAgICAgIGNvbnN0IGxvY2tlZEZpbGxDb2xvciA9IHtyOiAyNTAsIGc6IDI1MCwgYjogMjUwfTsK
KyAgICAgICAgICAgICAgICBjb25zdCBjaGFydFdpdGhVbmxvY2tlZEluZGljYXRvciA9IENoYXJ0
VGVzdC5jcmVhdGVJbnRlcmFjdGl2ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwgbnVs
bCwgY2hhcnRPcHRpb25zKTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFydFdpdGhMb2NrZWRJ
bmRpY2F0b3IgPSBDaGFydFRlc3QuY3JlYXRlSW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVDbHVz
dGVyKGNvbnRleHQsIG51bGwsIGNoYXJ0T3B0aW9ucyk7CisKKyAgICAgICAgICAgICAgICBjaGFy
dFdpdGhVbmxvY2tlZEluZGljYXRvci5zZXREb21haW4oQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIu
c3RhcnRUaW1lLCBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKKyAgICAgICAgICAg
ICAgICBjaGFydFdpdGhVbmxvY2tlZEluZGljYXRvci5mZXRjaE1lYXN1cmVtZW50U2V0cygpOwor
ICAgICAgICAgICAgICAgIENoYXJ0VGVzdC5yZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4
dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0pOworCisgICAgICAgICAgICAgICAg
Y2hhcnRXaXRoTG9ja2VkSW5kaWNhdG9yLnNldERvbWFpbihDaGFydFRlc3Quc2FtcGxlQ2x1c3Rl
ci5zdGFydFRpbWUsIENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAg
ICAgICAgIGNoYXJ0V2l0aExvY2tlZEluZGljYXRvci5mZXRjaE1lYXN1cmVtZW50U2V0cygpOwor
CisgICAgICAgICAgICAgICAgbGV0IGNhbnZhc1dpdGhVbmxvY2tlZEluZGljYXRvcjsKKyAgICAg
ICAgICAgICAgICBsZXQgY2FudmFzV2l0aExvY2tlZEluZGljYXRvcjsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgY2FudmFzV2l0aFVubG9ja2VkSW5kaWNhdG9yID0gY2hhcnRX
aXRoVW5sb2NrZWRJbmRpY2F0b3IuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOwor
ICAgICAgICAgICAgICAgICAgICBjYW52YXNXaXRoTG9ja2VkSW5kaWNhdG9yID0gY2hhcnRXaXRo
TG9ja2VkSW5kaWNhdG9yLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKTsKKworICAg
ICAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gY2FudmFzV2l0aFVubG9ja2VkSW5kaWNhdG9y
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICAgICAgICAgICAgICBjb25zdCB4ID0g
cmVjdC5yaWdodCAtIDE7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHkgPSByZWN0LnRvcCAr
IHJlY3QuaGVpZ2h0IC8gMjsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzV2l0aFVubG9ja2Vk
SW5kaWNhdG9yLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlbW92ZScsIHt0YXJn
ZXQ6IGNhbnZhc1dpdGhVbmxvY2tlZEluZGljYXRvciwgY2xpZW50WDogeCwgY2xpZW50WTogeSwg
Y29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7CisgICAgICAgICAgICAgICAgICAgIGNh
bnZhc1dpdGhMb2NrZWRJbmRpY2F0b3IuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnY2xp
Y2snLCB7dGFyZ2V0OiBjYW52YXNXaXRoTG9ja2VkSW5kaWNhdG9yLCBjbGllbnRYOiB4LCBjbGll
bnRZOiB5LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKKworICAgICAgICAgICAg
ICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXNXaXRo
VW5sb2NrZWRJbmRpY2F0b3IpOworICAgICAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxD
YW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXNXaXRoTG9ja2VkSW5kaWNhdG9yKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7
CisgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGV4
cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhc1dpdGhVbmxvY2tlZElu
ZGljYXRvcikpLnRvLmJlKHRydWUpOworICAgICAgICAgICAgICAgICAgICBleHBlY3QoQ2FudmFz
VGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXNXaXRoTG9ja2VkSW5kaWNhdG9yKSkudG8u
YmUodHJ1ZSk7CisKKyAgICAgICAgICAgICAgICAgICAgbGV0IGluZGljYXRvciA9IGNoYXJ0V2l0
aFVubG9ja2VkSW5kaWNhdG9yLmN1cnJlbnRJbmRpY2F0b3IoKTsKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IGN1cnJlbnRWaWV3ID0gY2hhcnRXaXRoVW5sb2NrZWRJbmRpY2F0b3Iuc2FtcGxlZFRp
bWVTZXJpZXNEYXRhKCdjdXJyZW50Jyk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRp
Y2F0b3IudmlldykudG8uYmUoY3VycmVudFZpZXcpOworICAgICAgICAgICAgICAgICAgICBleHBl
Y3QoaW5kaWNhdG9yLnBvaW50KS50by5iZShjdXJyZW50Vmlldy5sYXN0UG9pbnQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IuaXNMb2NrZWQpLnRvLmJlKGZhbHNlKTsK
KworICAgICAgICAgICAgICAgICAgICBpbmRpY2F0b3IgPSBjaGFydFdpdGhMb2NrZWRJbmRpY2F0
b3IuY3VycmVudEluZGljYXRvcigpOworICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmlldyA9
IGNoYXJ0V2l0aExvY2tlZEluZGljYXRvci5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1cnJlbnQn
KTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci52aWV3KS50by5iZShjdXJy
ZW50Vmlldyk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IucG9pbnQpLnRv
LmJlKGN1cnJlbnRWaWV3Lmxhc3RQb2ludCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0
KGluZGljYXRvci5pc0xvY2tlZCkudG8uYmUodHJ1ZSk7CisKKyAgICAgICAgICAgICAgICAgICAg
Q2FudmFzVGVzdC5leHBlY3RDYW52YXNlc01pc21hdGNoKGNhbnZhc1dpdGhVbmxvY2tlZEluZGlj
YXRvciwgY2FudmFzV2l0aExvY2tlZEluZGljYXRvcik7CisgICAgICAgICAgICAgICAgICAgIGV4
cGVjdChDYW52YXNUZXN0LmNhbnZhc0NvbnRhaW5zQ29sb3IoY2FudmFzV2l0aFVubG9ja2VkSW5k
aWNhdG9yLCB1bmxvY2tlZENvbG9yKSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAg
IGV4cGVjdChDYW52YXNUZXN0LmNhbnZhc0NvbnRhaW5zQ29sb3IoY2FudmFzV2l0aFVubG9ja2Vk
SW5kaWNhdG9yLCBsb2NrZWRGaWxsQ29sb3IpKS50by5iZShmYWxzZSk7CisgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdChDYW52YXNUZXN0LmNhbnZhc0NvbnRhaW5zQ29sb3IoY2FudmFzV2l0aExv
Y2tlZEluZGljYXRvciwgbG9ja2VkQ29sb3IpKS50by5iZSh0cnVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuY2FudmFzQ29udGFpbnNDb2xvcihjYW52YXNXaXRoTG9j
a2VkSW5kaWNhdG9yLCBsb2NrZWRGaWxsQ29sb3IpKS50by5iZSh0cnVlKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRl
c2NyaWJlKCdtb3ZlTG9ja2VkSW5kaWNhdG9yV2l0aE5vdGlmaWNhdGlvbicsICgpID0+IHsKKyAg
ICAgICAgaXQoJ3Nob3VsZCBtb3ZlIHRoZSBsb2NrZWQgaW5kaWNhdG9yIHRvIHRoZSByaWdodCB3
aGVuIGZvcndhcmQgYm9vbGVhbiBpcyB0cnVlJywgKCkgPT4geworICAgICAgICAgICAgY29uc3Qg
Y29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgICAgIHJldHVybiBDaGFy
dFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRzKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXJ0ID0gQ2hhcnRUZXN0LmNyZWF0ZUludGVyYWN0aXZlQ2hhcnRXaXRo
U2FtcGxlQ2x1c3Rlcihjb250ZXh0KTsKKworICAgICAgICAgICAgICAgIGNoYXJ0LnNldERvbWFp
bihDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIENoYXJ0VGVzdC5zYW1wbGVDbHVz
dGVyLmVuZFRpbWUpOworICAgICAgICAgICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRz
KCk7CisgICAgICAgICAgICAgICAgbGV0IGluZGljYXRvckNoYW5nZUNvdW50ID0gMDsKKyAgICAg
ICAgICAgICAgICBjaGFydC5saXN0ZW5Ub0FjdGlvbignaW5kaWNhdG9yQ2hhbmdlJywgKCkgPT4g
aW5kaWNhdG9yQ2hhbmdlQ291bnQrKyk7CisgICAgICAgICAgICAgICAgQ2hhcnRUZXN0LnJlc3Bv
bmRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1swXSk7CisKKyAgICAgICAgICAgICAgICBsZXQgY2FudmFzOworICAgICAgICAgICAgICAgIHJl
dHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ291bnQpLnRvLmJlKDApOwor
CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcyA9IGNoYXJ0LmNvbnRlbnQoKS5xdWVyeVNlbGVj
dG9yKCdjYW52YXMnKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gY2FudmFz
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICAgICAgICAgICAgICBjb25zdCB4ID0g
cmVjdC5sZWZ0ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgeSA9IHJlY3QudG9wICsg
cmVjdC5oZWlnaHQgLyAyOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVu
dChuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHgsIGNs
aWVudFk6IHksIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOworCisgICAgICAgICAg
ICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNv
bnRleHQpOworICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
ICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5i
ZSh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvckNoYW5nZUNvdW50
KS50by5iZSgxKTsKKworICAgICAgICAgICAgICAgICAgICBsZXQgaW5kaWNhdG9yID0gY2hhcnQu
Y3VycmVudEluZGljYXRvcigpOworICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudFZpZXcg
PSBjaGFydC5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1cnJlbnQnKTsKKyAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0KGluZGljYXRvci52aWV3KS50by5iZShjdXJyZW50Vmlldyk7CisgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IucG9pbnQpLnRvLmJlKGN1cnJlbnRWaWV3LmZp
cnN0UG9pbnQoKSk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IuaXNMb2Nr
ZWQpLnRvLmJlKHRydWUpOworCisgICAgICAgICAgICAgICAgICAgIGNoYXJ0Lm1vdmVMb2NrZWRJ
bmRpY2F0b3JXaXRoTm90aWZpY2F0aW9uKHRydWUpOworCisgICAgICAgICAgICAgICAgICAgIENh
bnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAg
ICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBleHBlY3Qo
Q2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZSh0cnVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvckNoYW5nZUNvdW50KS50by5iZSgyKTsK
KworICAgICAgICAgICAgICAgICAgICBsZXQgaW5kaWNhdG9yID0gY2hhcnQuY3VycmVudEluZGlj
YXRvcigpOworICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudFZpZXcgPSBjaGFydC5zYW1w
bGVkVGltZVNlcmllc0RhdGEoJ2N1cnJlbnQnKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0
KGluZGljYXRvci52aWV3KS50by5iZShjdXJyZW50Vmlldyk7CisgICAgICAgICAgICAgICAgICAg
IGV4cGVjdChpbmRpY2F0b3IucG9pbnQpLnRvLm5vdC5iZShjdXJyZW50Vmlldy5maXJzdFBvaW50
KCkpOworICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLnBvaW50KS50by5iZShj
dXJyZW50Vmlldy5uZXh0UG9pbnQoY3VycmVudFZpZXcuZmlyc3RQb2ludCgpKSk7CisgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdChjdXJyZW50Vmlldy5wcmV2aW91c1BvaW50KGluZGljYXRvci5w
b2ludCkpLnRvLmJlKGN1cnJlbnRWaWV3LmZpcnN0UG9pbnQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdChpbmRpY2F0b3IuaXNMb2NrZWQpLnRvLmJlKHRydWUpOworICAgICAgICAgICAg
ICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ291bnQpLnRvLmJlKDIpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdz
aG91bGQgbW92ZSB0aGUgbG9ja2VkIGluZGljYXRvciB0byB0aGUgbGVmdCB3aGVuIGZvcndhcmQg
Ym9vbGVhbiBpcyBmYWxzZScsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBu
ZXcgQnJvd3NpbmdDb250ZXh0KCk7CisgICAgICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9y
dENoYXJ0U2NyaXB0cyhjb250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25z
dCBjaGFydCA9IENoYXJ0VGVzdC5jcmVhdGVJbnRlcmFjdGl2ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0
ZXIoY29udGV4dCk7CisKKyAgICAgICAgICAgICAgICBjaGFydC5zZXREb21haW4oQ2hhcnRUZXN0
LnNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5lbmRUaW1l
KTsKKyAgICAgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOworICAgICAg
ICAgICAgICAgIGxldCBpbmRpY2F0b3JDaGFuZ2VDb3VudCA9IDA7CisgICAgICAgICAgICAgICAg
Y2hhcnQubGlzdGVuVG9BY3Rpb24oJ2luZGljYXRvckNoYW5nZScsICgpID0+IGluZGljYXRvckNo
YW5nZUNvdW50KyspOworICAgICAgICAgICAgICAgIENoYXJ0VGVzdC5yZXNwb25kV2l0aFNhbXBs
ZUNsdXN0ZXIoY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0pOworCisg
ICAgICAgICAgICAgICAgbGV0IGNhbnZhczsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZv
ckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0KGluZGljYXRvckNoYW5nZUNvdW50KS50by5iZSgwKTsKKworICAgICAgICAg
ICAgICAgICAgICBjYW52YXMgPSBjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFz
Jyk7CisKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgeCA9IHJlY3QucmlnaHQg
LSAxOworICAgICAgICAgICAgICAgICAgICBjb25zdCB5ID0gcmVjdC50b3AgKyByZWN0LmhlaWdo
dCAvIDI7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3Vz
ZUV2ZW50KCdjbGljaycsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogeCwgY2xpZW50WTogeSwg
Y29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7CisKKyAgICAgICAgICAgICAgICAgICAg
Q2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7Cisg
ICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVj
dChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRydWUpOwor
ICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ291bnQpLnRvLmJlKDEp
OworCisgICAgICAgICAgICAgICAgICAgIGxldCBpbmRpY2F0b3IgPSBjaGFydC5jdXJyZW50SW5k
aWNhdG9yKCk7CisgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmlldyA9IGNoYXJ0LnNh
bXBsZWRUaW1lU2VyaWVzRGF0YSgnY3VycmVudCcpOworICAgICAgICAgICAgICAgICAgICBleHBl
Y3QoaW5kaWNhdG9yLnZpZXcpLnRvLmJlKGN1cnJlbnRWaWV3KTsKKyAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0KGluZGljYXRvci5wb2ludCkudG8uYmUoY3VycmVudFZpZXcubGFzdFBvaW50KCkp
OworICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLmlzTG9ja2VkKS50by5iZSh0
cnVlKTsKKworICAgICAgICAgICAgICAgICAgICBjaGFydC5tb3ZlTG9ja2VkSW5kaWNhdG9yV2l0
aE5vdGlmaWNhdGlvbihmYWxzZSk7CisKKyAgICAgICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5m
aWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICAg
ICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNUZXN0
Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRydWUpOworICAgICAgICAgICAg
ICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ291bnQpLnRvLmJlKDIpOworCisgICAgICAg
ICAgICAgICAgICAgIGxldCBpbmRpY2F0b3IgPSBjaGFydC5jdXJyZW50SW5kaWNhdG9yKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmlldyA9IGNoYXJ0LnNhbXBsZWRUaW1lU2Vy
aWVzRGF0YSgnY3VycmVudCcpOworICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9y
LnZpZXcpLnRvLmJlKGN1cnJlbnRWaWV3KTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGlu
ZGljYXRvci5wb2ludCkudG8ubm90LmJlKGN1cnJlbnRWaWV3LmZpcnN0UG9pbnQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IucG9pbnQpLnRvLmJlKGN1cnJlbnRWaWV3
LnByZXZpb3VzUG9pbnQoY3VycmVudFZpZXcubGFzdFBvaW50KCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0KGN1cnJlbnRWaWV3Lm5leHRQb2ludChpbmRpY2F0b3IucG9pbnQpKS50by5i
ZShjdXJyZW50Vmlldy5sYXN0UG9pbnQoKSk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChp
bmRpY2F0b3IuaXNMb2NrZWQpLnRvLmJlKHRydWUpOworICAgICAgICAgICAgICAgICAgICBleHBl
Y3QoaW5kaWNhdG9yQ2hhbmdlQ291bnQpLnRvLmJlKDIpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IG1v
dmUgdGhlIGxvY2tlZCBpbmRpY2F0b3Igd2hlbiB0aGVyZSBhcmUgbm8gcG9pbnRzIHdpdGhpbiB0
aGUgZG9tYWluJywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93
c2luZ0NvbnRleHQoKTsKKyAgICAgICAgICAgIHJldHVybiBDaGFydFRlc3QuaW1wb3J0Q2hhcnRT
Y3JpcHRzKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0
ID0gQ2hhcnRUZXN0LmNyZWF0ZUludGVyYWN0aXZlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250
ZXh0KTsKKworICAgICAgICAgICAgICAgIC8vIFRoZSBkb21haW4gaW5jbHVlcyBwb2ludHMgMiwg
MworICAgICAgICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihwb3NpeFRpbWUoJzIwMTYtMDEtMDVU
MjA6MDA6MDBaJyksIHBvc2l4VGltZSgnMjAxNi0wMS0wNlQwMDowMDowMFonKSk7CisgICAgICAg
ICAgICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKKyAgICAgICAgICAgICAgICBs
ZXQgaW5kaWNhdG9yQ2hhbmdlQ291bnQgPSAwOworICAgICAgICAgICAgICAgIGNoYXJ0Lmxpc3Rl
blRvQWN0aW9uKCdpbmRpY2F0b3JDaGFuZ2UnLCAoKSA9PiBpbmRpY2F0b3JDaGFuZ2VDb3VudCsr
KTsKKyAgICAgICAgICAgICAgICBDaGFydFRlc3QucmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNv
bnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdKTsKKworICAgICAgICAgICAg
ICAgIGxldCBjYW52YXM7CisgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRWaWV3OworICAgICAg
ICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ291bnQp
LnRvLmJlKDApOworCisgICAgICAgICAgICAgICAgICAgIGNhbnZhcyA9IGNoYXJ0LmNvbnRlbnQo
KS5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zdCBy
ZWN0ID0gY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICAgICAgICAgICAg
ICBjb25zdCB4ID0gcmVjdC5yaWdodCAtIDE7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHkg
PSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMjsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFz
LmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ2NsaWNrJywge3RhcmdldDogY2FudmFzLCBj
bGllbnRYOiB4LCBjbGllbnRZOiB5LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsK
KworICAgICAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdD
aGVjayhjYW52YXMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVu
dHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJlZHJhd24o
Y2FudmFzKSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0
b3JDaGFuZ2VDb3VudCkudG8uYmUoMSk7CisKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFZp
ZXcgPSBjaGFydC5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1cnJlbnQnKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0KGN1cnJlbnRWaWV3Lmxlbmd0aCgpKS50by5iZSg0KTsgLy8gcG9pbnRz
IDAgYW5kIDQgYXJlIGFkZGVkIHRvIGRyYXcgbGluZXMgZXh0ZW5kaW5nIGJleW9uZCB0aGUgZG9t
YWluLgorICAgICAgICAgICAgICAgICAgICBleHBlY3QoWy4uLmN1cnJlbnRWaWV3XS5tYXAoKHBv
aW50KSA9PiBwb2ludC5pZCkpLnRvLmJlLmVxbChbMTAwMCwgMTAwMiwgMTAwMywgMTAwNF0pOwor
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGljYXRvciA9IGNoYXJ0LmN1cnJlbnRJbmRp
Y2F0b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci52aWV3KS50by5i
ZShjdXJyZW50Vmlldyk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IucG9p
bnQuaWQpLnRvLmJlKDEwMDMpOworICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9y
LmlzTG9ja2VkKS50by5iZSh0cnVlKTsKKworICAgICAgICAgICAgICAgICAgICBjaGFydC5tb3Zl
TG9ja2VkSW5kaWNhdG9yV2l0aE5vdGlmaWNhdGlvbih0cnVlKTsKKworICAgICAgICAgICAgICAg
ICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0
KTsKKyAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJlZHJhd24oY2FudmFzKSkudG8uYmUoZmFs
c2UpOworCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3JDaGFuZ2VDb3VudCku
dG8uYmUoMSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGljYXRvciA9IGNoYXJ0LmN1
cnJlbnRJbmRpY2F0b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci52
aWV3KS50by5iZShjdXJyZW50Vmlldyk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRp
Y2F0b3IucG9pbnQuaWQpLnRvLmJlKDEwMDMpOworICAgICAgICAgICAgICAgICAgICBleHBlY3Qo
aW5kaWNhdG9yLmlzTG9ja2VkKS50by5iZSh0cnVlKTsKKworICAgICAgICAgICAgICAgICAgICBj
aGFydC5tb3ZlTG9ja2VkSW5kaWNhdG9yV2l0aE5vdGlmaWNhdGlvbihmYWxzZSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2Fu
dmFzKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5k
ZXIoY29udGV4dCk7CisgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykp
LnRvLmJlKHRydWUpOworCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3JDaGFu
Z2VDb3VudCkudG8uYmUoMik7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGljYXRvciA9
IGNoYXJ0LmN1cnJlbnRJbmRpY2F0b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGlu
ZGljYXRvci52aWV3KS50by5iZShjdXJyZW50Vmlldyk7CisgICAgICAgICAgICAgICAgICAgIGV4
cGVjdChpbmRpY2F0b3IucG9pbnQuaWQpLnRvLmJlKDEwMDIpOworICAgICAgICAgICAgICAgICAg
ICBleHBlY3QoaW5kaWNhdG9yLmlzTG9ja2VkKS50by5iZSh0cnVlKTsKKworICAgICAgICAgICAg
ICAgICAgICBjaGFydC5tb3ZlTG9ja2VkSW5kaWNhdG9yV2l0aE5vdGlmaWNhdGlvbihmYWxzZSk7
CisKKyAgICAgICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3
Q2hlY2soY2FudmFzKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25l
bnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXdu
KGNhbnZhcykpLnRvLmJlKGZhbHNlKTsKKworICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5k
aWNhdG9yQ2hhbmdlQ291bnQpLnRvLmJlKDIpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bmRpY2F0b3IgPSBjaGFydC5jdXJyZW50SW5kaWNhdG9yKCk7CisgICAgICAgICAgICAgICAgICAg
IGV4cGVjdChpbmRpY2F0b3IudmlldykudG8uYmUoY3VycmVudFZpZXcpOworICAgICAgICAgICAg
ICAgICAgICBleHBlY3QoaW5kaWNhdG9yLnBvaW50LmlkKS50by5iZSgxMDAyKTsKKyAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci5pc0xvY2tlZCkudG8uYmUodHJ1ZSk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICB9KTsK
K30pOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvdGltZS1z
ZXJpZXMtY2hhcnQtdGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL2Jyb3dzZXItdGVzdHMvdGltZS1zZXJpZXMtY2hhcnQtdGVzdHMuanMJKHJldmlzaW9uIDIx
MzExNykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL3RpbWUtc2Vy
aWVzLWNoYXJ0LXRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsMyBAQAotKCgpID0+
IHsKIAogY29uc3Qgc2NyaXB0cyA9IFsKICAgICAnLi4vc2hhcmVkL3N0YXRpc3RpY3MuanMnLApA
QCAtMTMsMTEzICsxMiwxNyBAQCBjb25zdCBzY3JpcHRzID0gWwogICAgICdjb21wb25lbnRzL3Rp
bWUtc2VyaWVzLWNoYXJ0LmpzJywKICAgICAnY29tcG9uZW50cy9pbnRlcmFjdGl2ZS10aW1lLXNl
cmllcy1jaGFydC5qcyddOwogCi1mdW5jdGlvbiBwb3NpeFRpbWUoc3RyaW5nKSB7IHJldHVybiAr
bmV3IERhdGUoc3RyaW5nKTsgfQotCi1jb25zdCBkYXlJbk1pbGxpc2Vjb25kcyA9IDI0ICogMzYw
MCAqIDEwMDA7Ci0KLWNvbnN0IHNhbXBsZUNsdXN0ZXIgPSB7Ci0gICAgImNsdXN0ZXJTdGFydCI6
IHBvc2l4VGltZSgnMjAxNi0wMS0wMVQwMDowMDowMFonKSwKLSAgICAiY2x1c3RlclNpemUiOiA3
ICogZGF5SW5NaWxsaXNlY29uZHMsCi0gICAgInN0YXJ0VGltZSI6IHBvc2l4VGltZSgnMjAxNi0w
MS0wMVQwMDowMDowMFonKSwKLSAgICAiZW5kVGltZSI6IHBvc2l4VGltZSgnMjAxNi0wMS0wOFQw
MDowMDowMFonKSwKLSAgICAibGFzdE1vZGlmaWVkIjogcG9zaXhUaW1lKCcyMDE2LTAxLTE4VDAw
OjAwOjAwWicpLAotICAgICJjbHVzdGVyQ291bnQiOiAxLAotICAgICJzdGF0dXMiOiAiT0siLAot
ICAgICJmb3JtYXRNYXAiOiBbCi0gICAgICAgICJpZCIsICJtZWFuIiwgIml0ZXJhdGlvbkNvdW50
IiwgInN1bSIsICJzcXVhcmVTdW0iLCAibWFya2VkT3V0bGllciIsCi0gICAgICAgICJyZXZpc2lv
bnMiLAotICAgICAgICAiY29tbWl0VGltZSIsICJidWlsZCIsICJidWlsZFRpbWUiLCAiYnVpbGRO
dW1iZXIiLCAiYnVpbGRlciIKLSAgICBdLAotICAgICJjb25maWd1cmF0aW9ucyI6IHsKLSAgICAg
ICAgImN1cnJlbnQiOiBbCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgMTAwMCwgMTAw
LCAxLCAxMDAsIDEwMCAqIDEwMCwgZmFsc2UsCi0gICAgICAgICAgICAgICAgWyBbIDIwMDAsIDEs
ICI0MDAwIiwgcG9zaXhUaW1lKCcyMDE2LTAxLTA1VDE3OjM1OjAwWicpXSBdLAotICAgICAgICAg
ICAgICAgIHBvc2l4VGltZSgnMjAxNi0wMS0wNVQxNzozNTowMFonKSwgNTAwMCwgcG9zaXhUaW1l
KCcyMDE2LTAxLTA1VDE5OjIzOjAwWicpLCAiMTAiLCA3Ci0gICAgICAgICAgICBdLAotICAgICAg
ICAgICAgWwotICAgICAgICAgICAgICAgIDEwMDEsIDEzMSwgMSwgMTMxLCAxMzEgKiAxMzEsIHRy
dWUsCi0gICAgICAgICAgICAgICAgWyBbIDIwMDEsIDEsICI0MDAxIiwgcG9zaXhUaW1lKCcyMDE2
LTAxLTA1VDE4OjQzOjAxWicpXSBdLAotICAgICAgICAgICAgICAgIHBvc2l4VGltZSgnMjAxNi0w
MS0wNVQxODo0MzowMVonKSwgNTAwMSwgcG9zaXhUaW1lKCcyMDE2LTAxLTA1VDIwOjU4OjAxWicp
LCAiMTEiLCA3Ci0gICAgICAgICAgICBdLAotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
IDEwMDIsIDEyMiwgMSwgMTIyLCAxMjIgKiAxMjIsIGZhbHNlLAotICAgICAgICAgICAgICAgIFsg
WyAyMDAyLCAxLCAiNDAwMiIsIHBvc2l4VGltZSgnMjAxNi0wMS0wNVQyMDowMTowMlonKSBdIF0s
Ci0gICAgICAgICAgICAgICAgcG9zaXhUaW1lKCcyMDE2LTAxLTA1VDIwOjAxOjAyWicpLCA1MDAy
LCBwb3NpeFRpbWUoJzIwMTYtMDEtMDVUMjI6Mzc6MDJaJyksICIxMiIsIDcKLSAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgMTAwMywgMTEzLCAxLCAxMTMsIDEx
MyAqIDExMywgZmFsc2UsCi0gICAgICAgICAgICAgICAgWyBbIDIwMDMsIDEsICI0MDAzIiwgcG9z
aXhUaW1lKCcyMDE2LTAxLTA1VDIzOjE5OjAzWicpIF0gXSwKLSAgICAgICAgICAgICAgICBwb3Np
eFRpbWUoJzIwMTYtMDEtMDVUMjM6MTk6MDNaJyksIDUwMDMsIHBvc2l4VGltZSgnMjAxNi0wMS0w
NlQyMzoxOTowM1onKSwgIjEzIiwgNwotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAxMDA0LCAxMjQsIDEsIDEyNCwgMTI0ICogMTI0LCBmYWxzZSwKLSAgICAg
ICAgICAgICAgICBbIFsgMjAwNCwgMSwgIjQwMDQiLCBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDE6
NTI6MDRaJykgXSBdLAotICAgICAgICAgICAgICAgIHBvc2l4VGltZSgnMjAxNi0wMS0wNlQwMTo1
MjowNFonKSwgNTAwNCwgcG9zaXhUaW1lKCcyMDE2LTAxLTA2VDAyOjQyOjA0WicpLCAiMTQiLCA3
Ci0gICAgICAgICAgICBdLAotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIDEwMDUsIDEx
NSwgMSwgMTE1LCAxMTUgKiAxMTUsIHRydWUsCi0gICAgICAgICAgICAgICAgWyBbIDIwMDUsIDEs
ICI0MDA1IiwgcG9zaXhUaW1lKCcyMDE2LTAxLTA2VDAzOjIyOjA1WicpIF0gXSwKLSAgICAgICAg
ICAgICAgICBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDM6MjI6MDVaJyksIDUwMDUsIHBvc2l4VGlt
ZSgnMjAxNi0wMS0wNlQwNjowMTowNVonKSwgIjE1IiwgNwotICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAxMDA2LCAxMTYsIDEsIDExNiwgMTE2ICogMTE2LCBm
YWxzZSwKLSAgICAgICAgICAgICAgICBbIFsgMjAwNiwgMSwgIjQwMDYiLCBwb3NpeFRpbWUoJzIw
MTYtMDEtMDZUMDU6NTk6MDZaJykgXSBdLAotICAgICAgICAgICAgICAgIHBvc2l4VGltZSgnMjAx
Ni0wMS0wNlQwNTo1OTowNlonKSwgNTAwNiwgcG9zaXhUaW1lKCcyMDE2LTAxLTA2VDA4OjM0OjA2
WicpLCAiMTYiLCA3Ci0gICAgICAgICAgICBdCi0gICAgICAgIF0KLSAgICB9LAotfTsKLQotZnVu
Y3Rpb24gY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBzb3VyY2VMaXN0ID0g
bnVsbCwgY2hhcnRPcHRpb25zID0ge30sIGNsYXNzTmFtZSA9ICdUaW1lU2VyaWVzQ2hhcnQnKQot
ewotICAgIGNvbnN0IFRpbWVTZXJpZXNDaGFydCA9IGNvbnRleHQuc3ltYm9sc1tjbGFzc05hbWVd
OwotICAgIGNvbnN0IE1lYXN1cmVtZW50U2V0ID0gY29udGV4dC5zeW1ib2xzLk1lYXN1cmVtZW50
U2V0OwotCi0gICAgaWYgKHNvdXJjZUxpc3QgPT0gbnVsbCkKLSAgICAgICAgc291cmNlTGlzdCA9
IFt7dHlwZTogJ2N1cnJlbnQnfV07Ci0KLSAgICBjb25zdCBzYW1wbGVDbHVzdGVyID0gTWVhc3Vy
ZW1lbnRTZXQuZmluZFNldCgxLCAxLCAwKTsKLSAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNl
TGlzdCkgewotICAgICAgICBpZiAoIXNvdXJjZS50eXBlKQotICAgICAgICAgICAgc291cmNlLnR5
cGUgPSAnY3VycmVudCc7Ci0gICAgICAgIHNvdXJjZS5tZWFzdXJlbWVudFNldCA9IHNhbXBsZUNs
dXN0ZXI7Ci0gICAgfQotCi0gICAgY29uc3QgY2hhcnQgPSBuZXcgVGltZVNlcmllc0NoYXJ0KHNv
dXJjZUxpc3QsIGNoYXJ0T3B0aW9ucyk7Ci0gICAgY29uc3QgZWxlbWVudCA9IGNoYXJ0LmVsZW1l
bnQoKTsKLSAgICBlbGVtZW50LnN0eWxlLndpZHRoID0gY2hhcnRPcHRpb25zLndpZHRoIHx8ICcz
MDBweCc7Ci0gICAgZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBjaGFydE9wdGlvbnMuaGVpZ2h0IHx8
ICcxMDBweCc7Ci0gICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQp
OwotCi0gICAgcmV0dXJuIGNoYXJ0OwotfQotCi1mdW5jdGlvbiBjcmVhdGVJbnRlcmFjdGl2ZUNo
YXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwgc291cmNlTGlzdCA9IG51bGwsIGNoYXJ0T3B0
aW9ucyA9IHt9KQotewotICAgIGlmIChzb3VyY2VMaXN0ID09IG51bGwpCi0gICAgICAgIHNvdXJj
ZUxpc3QgPSBbe3R5cGU6ICdjdXJyZW50JywgaW50ZXJhY3RpdmU6IHRydWV9XTsKLSAgICByZXR1
cm4gY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBzb3VyY2VMaXN0LCBjaGFy
dE9wdGlvbnMsICdJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCcpOwotfQotCi1mdW5jdGlvbiBy
ZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIocmVxdWVzdCkKLXsKLSAgICBleHBlY3QocmVxdWVzdC51
cmwpLnRvLmJlKCcuLi9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEuanNvbicpOwotICAgIGV4cGVj
dChyZXF1ZXN0Lm1ldGhvZCkudG8uYmUoJ0dFVCcpOwotICAgIHJlcXVlc3QucmVzb2x2ZShzYW1w
bGVDbHVzdGVyKTsKLX0KLQogZGVzY3JpYmUoJ1RpbWVTZXJpZXNDaGFydCcsICgpID0+IHsKIAog
ICAgIGl0KCdzaG91bGQgYmUgY29uc3RydWN0aWJsZSB3aXRoIGFuIGVtcHR5IHNvdXJlYyBsaXN0
IGFuZCBhbiBlbXB0eSBvcHRpb25zJywgKCkgPT4gewotICAgICAgICByZXR1cm4gbmV3IEJyb3dz
aW5nQ29udGV4dCgpLmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ1RpbWVTZXJpZXNDaGFydCcpLnRo
ZW4oKFRpbWVTZXJpZXNDaGFydCkgPT4geworICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9y
dENoYXJ0U2NyaXB0cyhuZXcgQnJvd3NpbmdDb250ZXh0KS50aGVuKChUaW1lU2VyaWVzQ2hhcnQp
ID0+IHsKICAgICAgICAgICAgIG5ldyBUaW1lU2VyaWVzQ2hhcnQoW10sIHt9KTsKICAgICAgICAg
fSk7CiAgICAgfSk7CiAKICAgICBkZXNjcmliZSgnY29tcHV0ZVRpbWVHcmlkJywgKCkgPT4gewog
ICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBlbXB0eSBhcnJheSB3aGVuIHRoZSBzdGFydCBh
bmQgdGhlIGVuZCB0aW1lcyBhcmUgaWRlbnRpY2FsJywgKCkgPT4gewotICAgICAgICAgICAgcmV0
dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2Vy
aWVzQ2hhcnQnKS50aGVuKChUaW1lU2VyaWVzQ2hhcnQpID0+IHsKKyAgICAgICAgICAgIHJldHVy
biBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRzKG5ldyBCcm93c2luZ0NvbnRleHQpLnRoZW4o
KFRpbWVTZXJpZXNDaGFydCkgPT4gewogICAgICAgICAgICAgICAgIGNvbnN0IHNvbWVUaW1lID0g
RGF0ZS5ub3coKTsKICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbHMgPSBUaW1lU2VyaWVzQ2hh
cnQuY29tcHV0ZVRpbWVHcmlkKHNvbWVUaW1lLCBzb21lVGltZSwgMCk7CiAgICAgICAgICAgICAg
ICAgZXhwZWN0KGxhYmVscykudG8uYmUuYSgnYXJyYXknKTsKQEAgLTEzMSw3ICszNCw3IEBAIGRl
c2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7CiAgICAgICAgIGNvbnN0IG1pbGxpc2Vj
b25kc1BlckRheSA9IDI0ICogbWlsbGlzZWNvbmRzUGVySG91cjsKIAogICAgICAgICBpdCgnc2hv
dWxkIHJldHVybiBhbiBlbXB0eSBhcnJheSB3aGVuIG1heExhYmVscyBpcyAwJywgKCkgPT4gewot
ICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5pbXBvcnRTY3JpcHRzKHNj
cmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnKS50aGVuKChUaW1lU2VyaWVzQ2hhcnQpID0+IHsKKyAg
ICAgICAgICAgIHJldHVybiBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRzKG5ldyBCcm93c2lu
Z0NvbnRleHQpLnRoZW4oKFRpbWVTZXJpZXNDaGFydCkgPT4gewogICAgICAgICAgICAgICAgIGNv
bnN0IGVuZFRpbWUgPSBEYXRlLm5vdygpOwogICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVscyA9
IFRpbWVTZXJpZXNDaGFydC5jb21wdXRlVGltZUdyaWQoZW5kVGltZSAtIG1pbGxpc2Vjb25kc1Bl
ckRheSwgZW5kVGltZSwgMCk7CiAgICAgICAgICAgICAgICAgZXhwZWN0KGxhYmVscykudG8uYmUu
YSgnYXJyYXknKTsKQEAgLTE0MCw3ICs0Myw3IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQn
LCAoKSA9PiB7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVt
cHR5IGFycmF5IHdoZW4gbWF4TGFiZWxzIGlzIDAgZXZlbiB3aGVuIHRoZSBpbnRlcnZhbCBzcGFu
cyBtdWx0aXBsZSBtb250aHMnLCAoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IEJyb3dz
aW5nQ29udGV4dCgpLmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ1RpbWVTZXJpZXNDaGFydCcpLnRo
ZW4oKFRpbWVTZXJpZXNDaGFydCkgPT4geworICAgICAgICAgICAgcmV0dXJuIENoYXJ0VGVzdC5p
bXBvcnRDaGFydFNjcmlwdHMobmV3IEJyb3dzaW5nQ29udGV4dCkudGhlbigoVGltZVNlcmllc0No
YXJ0KSA9PiB7CiAgICAgICAgICAgICAgICAgY29uc3QgZW5kVGltZSA9IERhdGUubm93KCk7CiAg
ICAgICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVUaW1l
R3JpZChlbmRUaW1lIC0gMTIwICogbWlsbGlzZWNvbmRzUGVyRGF5LCBlbmRUaW1lLCAwKTsKICAg
ICAgICAgICAgICAgICBleHBlY3QobGFiZWxzKS50by5iZS5hKCdhcnJheScpOwpAQCAtMTU2LDcg
KzU5LDcgQEAgZGVzY3JpYmUoJ1RpbWVTZXJpZXNDaGFydCcsICgpID0+IHsKICAgICAgICAgfQog
CiAgICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgb25lIGhvdXIgbGFiZWwgd2l0aCBqdXN0IGRh
eSBmb3IgdHdvIGhvdXIgaW50ZXJ2YWwgd2hlbiBtYXhMYWJlbHMgaXMgMScsICgpID0+IHsKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgQnJvd3NpbmdDb250ZXh0KCkuaW1wb3J0U2NyaXB0cyhzY3Jp
cHRzLCAnVGltZVNlcmllc0NoYXJ0JykudGhlbigoVGltZVNlcmllc0NoYXJ0KSA9PiB7CisgICAg
ICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9ydENoYXJ0U2NyaXB0cyhuZXcgQnJvd3NpbmdD
b250ZXh0KS50aGVuKChUaW1lU2VyaWVzQ2hhcnQpID0+IHsKICAgICAgICAgICAgICAgICBjb25z
dCBlbmRUaW1lID0gbmV3IERhdGUoJzIwMTctMDEtMTVUMDc6NTM6MDBaJyk7CiAgICAgICAgICAg
ICAgICAgY29uc3QgbGFiZWxzID0gVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVUaW1lR3JpZChlbmRU
aW1lIC0gMiAqIG1pbGxpc2Vjb25kc1BlckhvdXIsICtlbmRUaW1lLCAxKTsKICAgICAgICAgICAg
ICAgICBleHBlY3QobGFiZWxzKS50by5iZS5hKCdhcnJheScpOwpAQCAtMTY2LDcgKzY5LDcgQEAg
ZGVzY3JpYmUoJ1RpbWVTZXJpZXNDaGFydCcsICgpID0+IHsKICAgICAgICAgfSk7CiAKICAgICAg
ICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSB0d28gdHdvLWhvdXIgbGFiZWxzIGZvciBmb3VyIGhvdXIg
aW50ZXJ2YWwgd2hlbiBtYXhMYWJlbHMgaXMgMicsICgpID0+IHsKLSAgICAgICAgICAgIHJldHVy
biBuZXcgQnJvd3NpbmdDb250ZXh0KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnVGltZVNlcmll
c0NoYXJ0JykudGhlbigoVGltZVNlcmllc0NoYXJ0KSA9PiB7CisgICAgICAgICAgICByZXR1cm4g
Q2hhcnRUZXN0LmltcG9ydENoYXJ0U2NyaXB0cyhuZXcgQnJvd3NpbmdDb250ZXh0KS50aGVuKChU
aW1lU2VyaWVzQ2hhcnQpID0+IHsKICAgICAgICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gbmV3
IERhdGUoJzIwMTctMDEtMTVUMDc6NTM6MDBaJyk7CiAgICAgICAgICAgICAgICAgY29uc3QgbGFi
ZWxzID0gVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVUaW1lR3JpZChlbmRUaW1lIC0gNCAqIG1pbGxp
c2Vjb25kc1BlckhvdXIsICtlbmRUaW1lLCAyKTsKICAgICAgICAgICAgICAgICBleHBlY3QobGFi
ZWxzKS50by5iZS5hKCdhcnJheScpOwpAQCAtMTc3LDcgKzgwLDcgQEAgZGVzY3JpYmUoJ1RpbWVT
ZXJpZXNDaGFydCcsICgpID0+IHsKICAgICAgICAgfSk7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBn
ZW5lcmF0ZSBzaXggdHdvLWhvdXIgbGFiZWxzIGZvciB0d2VsdmUgaG91ciBpbnRlcnZhbCB3aGVu
IG1heExhYmVscyBpcyA2JywgKCkgPT4gewotICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2lu
Z0NvbnRleHQoKS5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnKS50aGVu
KChUaW1lU2VyaWVzQ2hhcnQpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBDaGFydFRlc3QuaW1w
b3J0Q2hhcnRTY3JpcHRzKG5ldyBCcm93c2luZ0NvbnRleHQpLnRoZW4oKFRpbWVTZXJpZXNDaGFy
dCkgPT4gewogICAgICAgICAgICAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgnMjAxNy0w
MS0xNVQwNzo1MzowMFonKTsKICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbHMgPSBUaW1lU2Vy
aWVzQ2hhcnQuY29tcHV0ZVRpbWVHcmlkKCtlbmRUaW1lLCArZW5kVGltZSArIDEyICogbWlsbGlz
ZWNvbmRzUGVySG91ciwgNik7CiAgICAgICAgICAgICAgICAgZXhwZWN0KGxhYmVscykudG8uYmUu
YSgnYXJyYXknKTsKQEAgLTE5Miw3ICs5NSw3IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQn
LCAoKSA9PiB7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgc2l4
IHR3by1ob3VyIGxhYmVscyB3aXRoIG9uZSBkYXRlIGxhYmVsIGZvciB0d2VsdmUgaG91ciBpbnRl
cnZhbCB0aGF0IGNyb3NzIGEgZGF5IHdoZW4gbWF4TGFiZWxzIGlzIDYnLCAoKSA9PiB7Ci0gICAg
ICAgICAgICByZXR1cm4gbmV3IEJyb3dzaW5nQ29udGV4dCgpLmltcG9ydFNjcmlwdHMoc2NyaXB0
cywgJ1RpbWVTZXJpZXNDaGFydCcpLnRoZW4oKFRpbWVTZXJpZXNDaGFydCkgPT4geworICAgICAg
ICAgICAgcmV0dXJuIENoYXJ0VGVzdC5pbXBvcnRDaGFydFNjcmlwdHMobmV3IEJyb3dzaW5nQ29u
dGV4dCkudGhlbigoVGltZVNlcmllc0NoYXJ0KSA9PiB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
ZW5kVGltZSA9IG5ldyBEYXRlKCcyMDE3LTAxLTE1VDE2OjEyOjAwWicpOwogICAgICAgICAgICAg
ICAgIGNvbnN0IGxhYmVscyA9IFRpbWVTZXJpZXNDaGFydC5jb21wdXRlVGltZUdyaWQoK2VuZFRp
bWUsICtlbmRUaW1lICsgMTIgKiBtaWxsaXNlY29uZHNQZXJIb3VyLCA2KTsKICAgICAgICAgICAg
ICAgICBleHBlY3QobGFiZWxzKS50by5iZS5hKCdhcnJheScpOwpAQCAtMjA3LDcgKzExMCw3IEBA
IGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7CiAgICAgICAgIH0pOwogCiAgICAg
ICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgdGhyZWUgdHdvLWhvdXIgbGFiZWxzIGZvciBzaXggaG91
ciBpbnRlcnZhbCB0aGF0IGNyb3NzIGEgeWVhciB3aGVuIG1heExhYmVscyBpcyA1JywgKCkgPT4g
ewotICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5pbXBvcnRTY3JpcHRz
KHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnKS50aGVuKChUaW1lU2VyaWVzQ2hhcnQpID0+IHsK
KyAgICAgICAgICAgIHJldHVybiBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRzKG5ldyBCcm93
c2luZ0NvbnRleHQpLnRoZW4oKFRpbWVTZXJpZXNDaGFydCkgPT4gewogICAgICAgICAgICAgICAg
IGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgnMjAxNi0xMi0zMVQyMTozNzowMFonKTsKICAgICAg
ICAgICAgICAgICBjb25zdCBsYWJlbHMgPSBUaW1lU2VyaWVzQ2hhcnQuY29tcHV0ZVRpbWVHcmlk
KCtlbmRUaW1lLCArZW5kVGltZSArIDYgKiBtaWxsaXNlY29uZHNQZXJIb3VyLCA1KTsKICAgICAg
ICAgICAgICAgICBleHBlY3QobGFiZWxzKS50by5iZS5hKCdhcnJheScpOwpAQCAtMjE5LDcgKzEy
Miw3IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7CiAgICAgICAgIH0pOwog
CiAgICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgb25lIG9uZS1kYXkgbGFiZWwgZm9yIG9uZSBk
YXkgaW50ZXJ2YWwgd2hlbiBtYXhMYWJlbHMgaXMgMScsICgpID0+IHsKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgQnJvd3NpbmdDb250ZXh0KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnVGltZVNl
cmllc0NoYXJ0JykudGhlbigoVGltZVNlcmllc0NoYXJ0KSA9PiB7CisgICAgICAgICAgICByZXR1
cm4gQ2hhcnRUZXN0LmltcG9ydENoYXJ0U2NyaXB0cyhuZXcgQnJvd3NpbmdDb250ZXh0KS50aGVu
KChUaW1lU2VyaWVzQ2hhcnQpID0+IHsKICAgICAgICAgICAgICAgICBjb25zdCBlbmRUaW1lID0g
bmV3IERhdGUoJzIwMTctMDEtMTVUMDc6NTM6MDBaJyk7CiAgICAgICAgICAgICAgICAgY29uc3Qg
bGFiZWxzID0gVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVUaW1lR3JpZChlbmRUaW1lIC0gbWlsbGlz
ZWNvbmRzUGVyRGF5LCArZW5kVGltZSwgMSk7CiAgICAgICAgICAgICAgICAgZXhwZWN0KGxhYmVs
cykudG8uYmUuYSgnYXJyYXknKTsKQEAgLTIyOSw3ICsxMzIsNyBAQCBkZXNjcmliZSgnVGltZVNl
cmllc0NoYXJ0JywgKCkgPT4gewogICAgICAgICB9KTsKIAogICAgICAgICBpdCgnc2hvdWxkIGdl
bmVyYXRlIHR3byBvbmUtZGF5IGxhYmVscyBmb3Igb25lIGRheSBpbnRlcnZhbCB3aGVuIG1heExh
YmVscyBpcyAyJywgKCkgPT4gewotICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRl
eHQoKS5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnKS50aGVuKChUaW1l
U2VyaWVzQ2hhcnQpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBDaGFydFRlc3QuaW1wb3J0Q2hh
cnRTY3JpcHRzKG5ldyBCcm93c2luZ0NvbnRleHQpLnRoZW4oKFRpbWVTZXJpZXNDaGFydCkgPT4g
ewogICAgICAgICAgICAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgnMjAxNy0wMS0xNVQw
Nzo1MzowMFonKTsKICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbHMgPSBUaW1lU2VyaWVzQ2hh
cnQuY29tcHV0ZVRpbWVHcmlkKGVuZFRpbWUgLSBtaWxsaXNlY29uZHNQZXJEYXksICtlbmRUaW1l
LCAyKTsKICAgICAgICAgICAgICAgICBleHBlY3QobGFiZWxzKS50by5iZS5hKCdhcnJheScpOwpA
QCAtMjQwLDcgKzE0Myw3IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7CiAg
ICAgICAgIH0pOwogCiAgICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgZm91ciBoYWxmLWRheSBs
YWJlbHMgZm9yIHR3byBkYXkgaW50ZXJ2YWwgd2hlbiBtYXhMYWJlbHMgaXMgNScsICgpID0+IHsK
LSAgICAgICAgICAgIHJldHVybiBuZXcgQnJvd3NpbmdDb250ZXh0KCkuaW1wb3J0U2NyaXB0cyhz
Y3JpcHRzLCAnVGltZVNlcmllc0NoYXJ0JykudGhlbigoVGltZVNlcmllc0NoYXJ0KSA9PiB7Cisg
ICAgICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9ydENoYXJ0U2NyaXB0cyhuZXcgQnJvd3Np
bmdDb250ZXh0KS50aGVuKChUaW1lU2VyaWVzQ2hhcnQpID0+IHsKICAgICAgICAgICAgICAgICBj
b25zdCBlbmRUaW1lID0gbmV3IERhdGUoJzIwMTctMDEtMTVUMTY6MTI6MDBaJyk7CiAgICAgICAg
ICAgICAgICAgY29uc3QgbGFiZWxzID0gVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVUaW1lR3JpZCgr
ZW5kVGltZSwgK2VuZFRpbWUgKyAyICogbWlsbGlzZWNvbmRzUGVyRGF5LCA1KTsKICAgICAgICAg
ICAgICAgICBleHBlY3QobGFiZWxzKS50by5iZS5hKCdhcnJheScpOwpAQCAtMjUzLDcgKzE1Niw3
IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7CiAgICAgICAgIH0pOwogCiAg
ICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgZm91ciBoYWxmLWRheSBsYWJlbHMgZm9yIHR3byBk
YXkgaW50ZXJ2YWwgdGhhdCBjcm9zcyBhIHllYXIgd2hlbiBtYXhMYWJlbHMgaXMgNScsICgpID0+
IHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgQnJvd3NpbmdDb250ZXh0KCkuaW1wb3J0U2NyaXB0
cyhzY3JpcHRzLCAnVGltZVNlcmllc0NoYXJ0JykudGhlbigoVGltZVNlcmllc0NoYXJ0KSA9PiB7
CisgICAgICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9ydENoYXJ0U2NyaXB0cyhuZXcgQnJv
d3NpbmdDb250ZXh0KS50aGVuKChUaW1lU2VyaWVzQ2hhcnQpID0+IHsKICAgICAgICAgICAgICAg
ICBjb25zdCBlbmRUaW1lID0gbmV3IERhdGUoJzIwMTYtMTItMzFUMDk6MTI6MDBaJyk7CiAgICAg
ICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVUaW1lR3Jp
ZCgrZW5kVGltZSwgK2VuZFRpbWUgKyAyICogbWlsbGlzZWNvbmRzUGVyRGF5LCA1KTsKICAgICAg
ICAgICAgICAgICBleHBlY3QobGFiZWxzKS50by5iZS5hKCdhcnJheScpOwpAQCAtMjY2LDcgKzE2
OSw3IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7CiAgICAgICAgIH0pOwog
CiAgICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgc2V2ZW4gcGVyLWRheSBsYWJlbHMgZm9yIG9u
ZSB3ZWVrIGludGVydmFsIHdoZW4gbWF4TGFiZWxzIGlzIDEwJywgKCkgPT4gewotICAgICAgICAg
ICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdU
aW1lU2VyaWVzQ2hhcnQnKS50aGVuKChUaW1lU2VyaWVzQ2hhcnQpID0+IHsKKyAgICAgICAgICAg
IHJldHVybiBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRzKG5ldyBCcm93c2luZ0NvbnRleHQp
LnRoZW4oKFRpbWVTZXJpZXNDaGFydCkgPT4gewogICAgICAgICAgICAgICAgIGNvbnN0IGVuZFRp
bWUgPSBuZXcgRGF0ZSgnMjAxNy0wMS0xNVQwNzo1MzowMFonKTsKICAgICAgICAgICAgICAgICBj
b25zdCBsYWJlbHMgPSBUaW1lU2VyaWVzQ2hhcnQuY29tcHV0ZVRpbWVHcmlkKGVuZFRpbWUgLSA3
ICogbWlsbGlzZWNvbmRzUGVyRGF5LCBlbmRUaW1lLCAxMCk7CiAgICAgICAgICAgICAgICAgZXhw
ZWN0KGxhYmVscykudG8uYmUuYSgnYXJyYXknKTsKQEAgLTI4Miw3ICsxODUsNyBAQCBkZXNjcmli
ZSgnVGltZVNlcmllc0NoYXJ0JywgKCkgPT4gewogICAgICAgICB9KTsKIAogICAgICAgICBpdCgn
c2hvdWxkIGdlbmVyYXRlIHRocmVlIHR3by1kYXkgbGFiZWxzIGZvciBvbmUgd2VlayBpbnRlcnZh
bCB3aGVuIG1heExhYmVscyBpcyA0JywgKCkgPT4gewotICAgICAgICAgICAgcmV0dXJuIG5ldyBC
cm93c2luZ0NvbnRleHQoKS5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQn
KS50aGVuKChUaW1lU2VyaWVzQ2hhcnQpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBDaGFydFRl
c3QuaW1wb3J0Q2hhcnRTY3JpcHRzKG5ldyBCcm93c2luZ0NvbnRleHQpLnRoZW4oKFRpbWVTZXJp
ZXNDaGFydCkgPT4gewogICAgICAgICAgICAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgn
MjAxNy0wMS0xNVQwNzo1MzowMFonKTsKICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbHMgPSBU
aW1lU2VyaWVzQ2hhcnQuY29tcHV0ZVRpbWVHcmlkKGVuZFRpbWUgLSA3ICogbWlsbGlzZWNvbmRz
UGVyRGF5LCBlbmRUaW1lLCA0KTsKICAgICAgICAgICAgICAgICBleHBlY3QobGFiZWxzKS50by5i
ZS5hKCdhcnJheScpOwpAQCAtMjk0LDcgKzE5Nyw3IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hh
cnQnLCAoKSA9PiB7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUg
c2V2ZW4gb25lLWRheSBsYWJlbHMgZm9yIHR3byB3ZWVrIGludGVydmFsIHdoZW4gbWF4TGFiZWxz
IGlzIDgnLCAoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IEJyb3dzaW5nQ29udGV4dCgp
LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ1RpbWVTZXJpZXNDaGFydCcpLnRoZW4oKFRpbWVTZXJp
ZXNDaGFydCkgPT4geworICAgICAgICAgICAgcmV0dXJuIENoYXJ0VGVzdC5pbXBvcnRDaGFydFNj
cmlwdHMobmV3IEJyb3dzaW5nQ29udGV4dCkudGhlbigoVGltZVNlcmllc0NoYXJ0KSA9PiB7CiAg
ICAgICAgICAgICAgICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKCcyMDE3LTAxLTE1VDE4OjUz
OjAwWicpOwogICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVscyA9IFRpbWVTZXJpZXNDaGFydC5j
b21wdXRlVGltZUdyaWQoK2VuZFRpbWUsICtlbmRUaW1lICsgMTQgKiBtaWxsaXNlY29uZHNQZXJE
YXksIDgpOwogICAgICAgICAgICAgICAgIGV4cGVjdChsYWJlbHMpLnRvLmJlLmEoJ2FycmF5Jyk7
CkBAIC0zMTAsNyArMjEzLDcgQEAgZGVzY3JpYmUoJ1RpbWVTZXJpZXNDaGFydCcsICgpID0+IHsK
ICAgICAgICAgfSk7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSB0d28gb25lLXdlZWsg
bGFiZWxzIGZvciB0d28gd2VlayBpbnRlcnZhbCB3aGVuIG1heExhYmVscyBpcyAzJywgKCkgPT4g
ewotICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5pbXBvcnRTY3JpcHRz
KHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnKS50aGVuKChUaW1lU2VyaWVzQ2hhcnQpID0+IHsK
KyAgICAgICAgICAgIHJldHVybiBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRzKG5ldyBCcm93
c2luZ0NvbnRleHQpLnRoZW4oKFRpbWVTZXJpZXNDaGFydCkgPT4gewogICAgICAgICAgICAgICAg
IGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgnMjAxNy0wMS0xNVQxODo1MzowMFonKTsKICAgICAg
ICAgICAgICAgICBjb25zdCBsYWJlbHMgPSBUaW1lU2VyaWVzQ2hhcnQuY29tcHV0ZVRpbWVHcmlk
KCtlbmRUaW1lLCArZW5kVGltZSArIDE0ICogbWlsbGlzZWNvbmRzUGVyRGF5LCAzKTsKICAgICAg
ICAgICAgICAgICBleHBlY3QobGFiZWxzKS50by5iZS5hKCdhcnJheScpOwpAQCAtMzIxLDcgKzIy
NCw3IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7CiAgICAgICAgIH0pOwog
CiAgICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgc2V2ZW4gb25lLW1vbnRoIGxhYmVscyBmb3Ig
c2l4IGFuZCBoYWxmIG1vbnRocyBpbnRlcnZhbCBzdGFydGluZyBiZWZvcmUgMTV0aCB3aGVuIG1h
eExhYmVscyBpcyA3JywgKCkgPT4gewotICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0Nv
bnRleHQoKS5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnKS50aGVuKChU
aW1lU2VyaWVzQ2hhcnQpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBDaGFydFRlc3QuaW1wb3J0
Q2hhcnRTY3JpcHRzKG5ldyBCcm93c2luZ0NvbnRleHQpLnRoZW4oKFRpbWVTZXJpZXNDaGFydCkg
PT4gewogICAgICAgICAgICAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgnMjAxNy0wMS0x
NVQxODo1MzowMFonKTsKICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbHMgPSBUaW1lU2VyaWVz
Q2hhcnQuY29tcHV0ZVRpbWVHcmlkKG5ldyBEYXRlKCcyMDE2LTA3LTEyVDE4OjUzOjAwWicpLCBu
ZXcgRGF0ZSgnMjAxNy0wMS0xOFQwODoxNzo1M1onKSwgNyk7CiAgICAgICAgICAgICAgICAgZXhw
ZWN0KGxhYmVscykudG8uYmUuYSgnYXJyYXknKTsKQEAgLTMzNyw3ICsyNDAsNyBAQCBkZXNjcmli
ZSgnVGltZVNlcmllc0NoYXJ0JywgKCkgPT4gewogICAgICAgICB9KTsKIAogICAgICAgICBpdCgn
c2hvdWxkIGdlbmVyYXRlIHNldmVuIG9uZS1tb250aCBsYWJlbHMgZm9yIHNpeCBtb250aHMgaW50
ZXJ2YWwgc3RhcmluZyBhZnRlciAxNXRoIHdoZW4gbWF4TGFiZWxzIGlzIDcnLCAoKSA9PiB7Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IEJyb3dzaW5nQ29udGV4dCgpLmltcG9ydFNjcmlwdHMoc2Ny
aXB0cywgJ1RpbWVTZXJpZXNDaGFydCcpLnRoZW4oKFRpbWVTZXJpZXNDaGFydCkgPT4geworICAg
ICAgICAgICAgcmV0dXJuIENoYXJ0VGVzdC5pbXBvcnRDaGFydFNjcmlwdHMobmV3IEJyb3dzaW5n
Q29udGV4dCkudGhlbigoVGltZVNlcmllc0NoYXJ0KSA9PiB7CiAgICAgICAgICAgICAgICAgY29u
c3QgZW5kVGltZSA9IG5ldyBEYXRlKCcyMDE3LTAxLTE1VDE4OjUzOjAwWicpOwogICAgICAgICAg
ICAgICAgIGNvbnN0IGxhYmVscyA9IFRpbWVTZXJpZXNDaGFydC5jb21wdXRlVGltZUdyaWQobmV3
IERhdGUoJzIwMTYtMDctMThUMTg6NTM6MDBaJyksIG5ldyBEYXRlKCcyMDE3LTAxLTE4VDA4OjE3
OjUzWicpLCA3KTsKICAgICAgICAgICAgICAgICBleHBlY3QobGFiZWxzKS50by5iZS5hKCdhcnJh
eScpOwpAQCAtMzUxLDcgKzI1NCw3IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9
PiB7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgc2l4IHR3by1t
b250aHMgbGFiZWxzIGZvciBvbmUgeWVhciBpbnRlcnZhbCB3aGVuIG1heExhYmVscyBpcyA3Jywg
KCkgPT4gewotICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5pbXBvcnRT
Y3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnKS50aGVuKChUaW1lU2VyaWVzQ2hhcnQp
ID0+IHsKKyAgICAgICAgICAgIHJldHVybiBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRzKG5l
dyBCcm93c2luZ0NvbnRleHQpLnRoZW4oKFRpbWVTZXJpZXNDaGFydCkgPT4gewogICAgICAgICAg
ICAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgnMjAxNy0wMS0xNVQxODo1MzowMFonKTsK
ICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbHMgPSBUaW1lU2VyaWVzQ2hhcnQuY29tcHV0ZVRp
bWVHcmlkKG5ldyBEYXRlKCcyMDE2LTA3LTExVDE4OjUzOjAwWicpLCBuZXcgRGF0ZSgnMjAxNy0w
Ny0yN1QwODoxNzo1M1onKSwgNyk7CiAgICAgICAgICAgICAgICAgZXhwZWN0KGxhYmVscykudG8u
YmUuYSgnYXJyYXknKTsKQEAgLTM2Niw3ICsyNjksNyBAQCBkZXNjcmliZSgnVGltZVNlcmllc0No
YXJ0JywgKCkgPT4gewogICAgICAgICB9KTsKIAogICAgICAgICBpdCgnc2hvdWxkIGdlbmVyYXRl
IGZvdXIgdGhyZWUtbW9udGhzIGxhYmVscyBmb3Igb25lIHllYXIgaW50ZXJ2YWwgd2hlbiBtYXhM
YWJlbHMgaXMgNScsICgpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgQnJvd3NpbmdDb250
ZXh0KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnVGltZVNlcmllc0NoYXJ0JykudGhlbigoVGlt
ZVNlcmllc0NoYXJ0KSA9PiB7CisgICAgICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9ydENo
YXJ0U2NyaXB0cyhuZXcgQnJvd3NpbmdDb250ZXh0KS50aGVuKChUaW1lU2VyaWVzQ2hhcnQpID0+
IHsKICAgICAgICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gbmV3IERhdGUoJzIwMTctMDEtMTVU
MTg6NTM6MDBaJyk7CiAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gVGltZVNlcmllc0No
YXJ0LmNvbXB1dGVUaW1lR3JpZChuZXcgRGF0ZSgnMjAxNi0wNy0xMVQxODo1MzowMFonKSwgbmV3
IERhdGUoJzIwMTctMDctMjdUMDg6MTc6NTNaJyksIDUpOwogICAgICAgICAgICAgICAgIGV4cGVj
dChsYWJlbHMpLnRvLmJlLmEoJ2FycmF5Jyk7CkBAIC01NDIsMTUgKzQ0NSwxNSBAQCBkZXNjcmli
ZSgnVGltZVNlcmllc0NoYXJ0JywgKCkgPT4gewogCiAgICAgICAgIGl0KCdzaG91bGQgZmV0Y2gg
dGhlIG1lYXN1cmVtZW50IHNldCBhbmQgY3JlYXRlIGEgY2FudmFzIGVsZW1lbnQgdXBvbiByZWNl
aXZpbmcgdGhlIGRhdGEnLCAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3
IEJyb3dzaW5nQ29udGV4dCgpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuaW1wb3J0U2Ny
aXB0cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScsICdUaW1lU2VyaWVzQ2hhcnQnLCAnTWVhc3Vy
ZW1lbnRTZXQnLCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXJ0ID0gY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0KTsKKyAg
ICAgICAgICAgIHJldHVybiBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRzKGNvbnRleHQpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gQ2hhcnRUZXN0LmNyZWF0
ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCk7CiAKLSAgICAgICAgICAgICAgICBjaGFy
dC5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGlt
ZSk7CisgICAgICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKENoYXJ0VGVzdC5zYW1wbGVDbHVz
dGVyLnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CiAgICAgICAg
ICAgICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKIAogICAgICAgICAgICAgICAg
IGNvbnN0IHJlcXVlc3RzID0gY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHM7
CiAgICAgICAgICAgICAgICAgZXhwZWN0KHJlcXVlc3RzLmxlbmd0aCkudG8uYmUoMSk7Ci0gICAg
ICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKHJlcXVlc3RzWzBdKTsKKyAgICAg
ICAgICAgICAgICBDaGFydFRlc3QucmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKHJlcXVlc3RzWzBd
KTsKIAogICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3Rv
cignY2FudmFzJykpLnRvLmJlKG51bGwpOwogICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9y
Q29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4gewpAQCAtNTYxLDE5ICs0NjQs
MTkgQEAgZGVzY3JpYmUoJ1RpbWVTZXJpZXNDaGFydCcsICgpID0+IHsKIAogICAgICAgICBpdCgn
c2hvdWxkIGltbWVkaWF0ZWx5IGVucXVldWUgdG8gcmVuZGVyIHdoZW4gdGhlIG1lYXN1cmVtZW50
IHNldCBoYWQgYWxyZWFkeSBiZWVuIGZldGNoZWQnLCAoKSA9PiB7CiAgICAgICAgICAgICBjb25z
dCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOwotICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScsICdUaW1lU2VyaWVz
Q2hhcnQnLCAnTWVhc3VyZW1lbnRTZXQnLCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4gewot
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rl
cihjb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3Jp
cHRzKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0g
Q2hhcnRUZXN0LmNyZWF0ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCk7CiAKICAgICAg
ICAgICAgICAgICBsZXQgc2V0ID0gY29udGV4dC5zeW1ib2xzLk1lYXN1cmVtZW50U2V0LmZpbmRT
ZXQoMSwgMSwgMCk7Ci0gICAgICAgICAgICAgICAgbGV0IHByb21pc2UgPSBzZXQuZmV0Y2hCZXR3
ZWVuKHNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAg
ICAgICAgICAgICAgIGxldCBwcm9taXNlID0gc2V0LmZldGNoQmV0d2VlbihDaGFydFRlc3Quc2Ft
cGxlQ2x1c3Rlci5zdGFydFRpbWUsIENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRpbWUpOwog
CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5bWJvbHMuTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0czsKICAgICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3Ro
KS50by5iZSgxKTsKLSAgICAgICAgICAgICAgICByZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIocmVx
dWVzdHNbMF0pOworICAgICAgICAgICAgICAgIENoYXJ0VGVzdC5yZXNwb25kV2l0aFNhbXBsZUNs
dXN0ZXIocmVxdWVzdHNbMF0pOwogCiAgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2UudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jb250ZW50KCkucXVl
cnlTZWxlY3RvcignY2FudmFzJykpLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgICAgICBj
aGFydC5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5k
VGltZSk7CisgICAgICAgICAgICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihDaGFydFRlc3Quc2Ft
cGxlQ2x1c3Rlci5zdGFydFRpbWUsIENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRpbWUpOwog
ICAgICAgICAgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsK
ICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKQEAgLTU4NSwxOCArNDg4LDE4IEBAIGRl
c2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBk
aXNwYXRjaCAiZGF0YUNoYW5nZSIgYWN0aW9uIG9uY2UgdGhlIGZldGNoZWQgZGF0YSBiZWNvbWVz
IGF2YWlsYWJsZScsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJv
d3NpbmdDb250ZXh0KCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5pbXBvcnRTY3JpcHRz
KHNjcmlwdHMsICdDb21wb25lbnRCYXNlJywgJ1RpbWVTZXJpZXNDaGFydCcsICdNZWFzdXJlbWVu
dFNldCcsICdNb2NrUmVtb3RlQVBJJykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgY2hhcnQgPSBjcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQpOworICAgICAg
ICAgICAgcmV0dXJuIENoYXJ0VGVzdC5pbXBvcnRDaGFydFNjcmlwdHMoY29udGV4dCkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhcnQgPSBDaGFydFRlc3QuY3JlYXRlQ2hh
cnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0KTsKIAogICAgICAgICAgICAgICAgIGxldCBkYXRh
Q2hhbmdlQ291bnQgPSAwOwogICAgICAgICAgICAgICAgIGNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdk
YXRhQ2hhbmdlJywgKCkgPT4gZGF0YUNoYW5nZUNvdW50KyspOwogCi0gICAgICAgICAgICAgICAg
Y2hhcnQuc2V0RG9tYWluKHNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVu
ZFRpbWUpOworICAgICAgICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihDaGFydFRlc3Quc2FtcGxl
Q2x1c3Rlci5zdGFydFRpbWUsIENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRpbWUpOwogICAg
ICAgICAgICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7CiAKICAgICAgICAgICAg
ICAgICBjb25zdCByZXF1ZXN0cyA9IGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVl
c3RzOwogICAgICAgICAgICAgICAgIGV4cGVjdChyZXF1ZXN0cy5sZW5ndGgpLnRvLmJlKDEpOwot
ICAgICAgICAgICAgICAgIHJlc3BvbmRXaXRoU2FtcGxlQ2x1c3RlcihyZXF1ZXN0c1swXSk7Cisg
ICAgICAgICAgICAgICAgQ2hhcnRUZXN0LnJlc3BvbmRXaXRoU2FtcGxlQ2x1c3RlcihyZXF1ZXN0
c1swXSk7CiAKICAgICAgICAgICAgICAgICBleHBlY3QoZGF0YUNoYW5nZUNvdW50KS50by5iZSgw
KTsKICAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdj
dXJyZW50JykpLnRvLmJlKG51bGwpOwpAQCAtNjEzLDEyICs1MTYsMTIgQEAgZGVzY3JpYmUoJ1Rp
bWVTZXJpZXNDaGFydCcsICgpID0+IHsKICAgICBkZXNjcmliZSgnc2FtcGxlZFRpbWVTZXJpZXNE
YXRhJywgKCkgPT4gewogICAgICAgICBpdCgnc2hvdWxkIG5vdCBjb250YWluIGFuIG91dGxpZXIg
d2hlbiBpbmNsdWRlT3V0bGllcnMgaXMgZmFsc2UnLCAoKSA9PiB7CiAgICAgICAgICAgICBjb25z
dCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOwotICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScsICdUaW1lU2VyaWVz
Q2hhcnQnLCAnTWVhc3VyZW1lbnRTZXQnLCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4gewot
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rl
cihjb250ZXh0LCBbe2luY2x1ZGVPdXRsaWVyczogZmFsc2V9XSkKKyAgICAgICAgICAgIHJldHVy
biBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRzKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gQ2hhcnRUZXN0LmNyZWF0ZUNoYXJ0V2l0aFNhbXBs
ZUNsdXN0ZXIoY29udGV4dCwgW3tpbmNsdWRlT3V0bGllcnM6IGZhbHNlfV0pCiAKLSAgICAgICAg
ICAgICAgICBjaGFydC5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIHNhbXBsZUNs
dXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKENoYXJ0VGVz
dC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuZW5kVGlt
ZSk7CiAgICAgICAgICAgICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKLSAgICAg
ICAgICAgICAgICByZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dC5zeW1ib2xzLk1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbMF0pOworICAgICAgICAgICAgICAgIENoYXJ0VGVzdC5yZXNwb25k
V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
MF0pOwogCiAgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIo
Y29udGV4dCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZpZXcgPSBj
aGFydC5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1cnJlbnQnKTsKQEAgLTYzMSwxMiArNTM0LDEy
IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7CiAKICAgICAgICAgaXQoJ3No
b3VsZCBjb250YWluIGV2ZXJ5IG91dGxpZXIgd2hlbiBpbmNsdWRlT3V0bGllcnMgaXMgdHJ1ZScs
ICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0
KCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdD
b21wb25lbnRCYXNlJywgJ1RpbWVTZXJpZXNDaGFydCcsICdNZWFzdXJlbWVudFNldCcsICdNb2Nr
UmVtb3RlQVBJJykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhcnQgPSBj
cmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIFt7aW5jbHVkZU91dGxpZXJzOiB0
cnVlfV0pCisgICAgICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9ydENoYXJ0U2NyaXB0cyhj
b250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFydCA9IENoYXJ0
VGVzdC5jcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIFt7aW5jbHVkZU91dGxp
ZXJzOiB0cnVlfV0pCiAKLSAgICAgICAgICAgICAgICBjaGFydC5zZXREb21haW4oc2FtcGxlQ2x1
c3Rlci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICAgICAg
Y2hhcnQuc2V0RG9tYWluKENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRU
ZXN0LnNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CiAgICAgICAgICAgICAgICAgY2hhcnQuZmV0Y2hN
ZWFzdXJlbWVudFNldHMoKTsKLSAgICAgICAgICAgICAgICByZXNwb25kV2l0aFNhbXBsZUNsdXN0
ZXIoY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0pOworICAgICAgICAg
ICAgICAgIENoYXJ0VGVzdC5yZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dC5zeW1ib2xz
Lk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0pOwogCiAgICAgICAgICAgICAgICAgcmV0dXJuIHdh
aXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZpZXcgPSBjaGFydC5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1cnJl
bnQnKTsKQEAgLTY0OSwxMiArNTUyLDEyIEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAo
KSA9PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBvbmx5IGNvbnRhaW4gZGF0YSBwb2ludHMgaW4g
dGhlIGRvbWFpbiBhbmQgb25lIHByZWNlZGluZyBwb2ludCB3aGVuIHRoZXJlIGFyZSBubyBzdWNj
ZWVkaW5nIHBvaW50cycsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcg
QnJvd3NpbmdDb250ZXh0KCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5pbXBvcnRTY3Jp
cHRzKHNjcmlwdHMsICdDb21wb25lbnRCYXNlJywgJ1RpbWVTZXJpZXNDaGFydCcsICdNZWFzdXJl
bWVudFNldCcsICdNb2NrUmVtb3RlQVBJJykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
Y29uc3QgY2hhcnQgPSBjcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIFt7aW5j
bHVkZU91dGxpZXJzOiB0cnVlfV0pCisgICAgICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9y
dENoYXJ0U2NyaXB0cyhjb250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25z
dCBjaGFydCA9IENoYXJ0VGVzdC5jcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQs
IFt7aW5jbHVkZU91dGxpZXJzOiB0cnVlfV0pCiAKICAgICAgICAgICAgICAgICBjaGFydC5zZXRE
b21haW4ocG9zaXhUaW1lKCcyMDE2LTAxLTA2VDAwOjAwOjAwWicpLCBwb3NpeFRpbWUoJzIwMTYt
MDEtMDdUMDA6MDA6MDBaJykpOwogICAgICAgICAgICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1l
bnRTZXRzKCk7Ci0gICAgICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRl
eHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdKTsKKyAgICAgICAgICAgICAgICBD
aGFydFRlc3QucmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzBdKTsKIAogICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29t
cG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2aWV3ID0gY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50Jyk7CkBA
IC02NjUsMTMgKzU2OCwxMyBAQCBkZXNjcmliZSgnVGltZVNlcmllc0NoYXJ0JywgKCkgPT4gewog
CiAgICAgICAgIGl0KCdzaG91bGQgb25seSBjb250YWluIGRhdGEgcG9pbnRzIGluIHRoZSBkb21h
aW4gYW5kIG9uZSBzdWNjZWVkaW5nIHBvaW50IHdoZW4gdGhlcmUgYXJlIG5vIHByZWNlZGluZyBw
b2ludHMnLCAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5n
Q29udGV4dCgpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuaW1wb3J0U2NyaXB0cyhzY3Jp
cHRzLCAnQ29tcG9uZW50QmFzZScsICdUaW1lU2VyaWVzQ2hhcnQnLCAnTWVhc3VyZW1lbnRTZXQn
LCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXJ0ID0gY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBbe2luY2x1ZGVPdXRs
aWVyczogdHJ1ZX1dKQorICAgICAgICAgICAgcmV0dXJuIENoYXJ0VGVzdC5pbXBvcnRDaGFydFNj
cmlwdHMoY29udGV4dCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhcnQg
PSBDaGFydFRlc3QuY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBbe2luY2x1
ZGVPdXRsaWVyczogdHJ1ZX1dKQogCiAgICAgICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKHBv
c2l4VGltZSgnMjAxNi0wMS0wNVQwMDowMDowMFonKSwgcG9zaXhUaW1lKCcyMDE2LTAxLTA2VDAw
OjAwOjAwWicpKTsKICAgICAgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygp
OwogICAgICAgICAgICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7Ci0gICAgICAg
ICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzBdKTsKKyAgICAgICAgICAgICAgICBDaGFydFRlc3QucmVzcG9uZFdp
dGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBd
KTsKIAogICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNv
bnRleHQpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3ID0gY2hh
cnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50Jyk7CkBAIC02ODIsMTIgKzU4NSwxMiBA
QCBkZXNjcmliZSgnVGltZVNlcmllc0NoYXJ0JywgKCkgPT4gewogCiAgICAgICAgIGl0KCdzaG91
bGQgb25seSBjb250YWluIGRhdGEgcG9pbnRzIGluIHRoZSBkb21haW4gYW5kIG9uZSBwcmVjZWRp
bmcgcG9pbnQgYW5kIG9uZSBzdWNjZWVkaW5nIHBvaW50JywgKCkgPT4gewogICAgICAgICAgICAg
Y29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKLSAgICAgICAgICAgIHJldHVy
biBjb250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2UnLCAnVGltZVNl
cmllc0NoYXJ0JywgJ01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1vdGVBUEknKS50aGVuKCgpID0+
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFydCA9IGNyZWF0ZUNoYXJ0V2l0aFNhbXBsZUNs
dXN0ZXIoY29udGV4dCwgW3tpbmNsdWRlT3V0bGllcnM6IHRydWV9XSkKKyAgICAgICAgICAgIHJl
dHVybiBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRzKGNvbnRleHQpLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gQ2hhcnRUZXN0LmNyZWF0ZUNoYXJ0V2l0aFNh
bXBsZUNsdXN0ZXIoY29udGV4dCwgW3tpbmNsdWRlT3V0bGllcnM6IHRydWV9XSkKIAogICAgICAg
ICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihwb3NpeFRpbWUoJzIwMTYtMDEtMDVUMjE6MDA6MDBa
JyksIHBvc2l4VGltZSgnMjAxNi0wMS0wNlQwMjowMDowMFonKSk7CiAgICAgICAgICAgICAgICAg
Y2hhcnQuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKLSAgICAgICAgICAgICAgICByZXNwb25kV2l0
aFNhbXBsZUNsdXN0ZXIoY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0p
OworICAgICAgICAgICAgICAgIENoYXJ0VGVzdC5yZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIoY29u
dGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0pOwogCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZpZXcgPSBjaGFydC5zYW1wbGVkVGltZVNlcmll
c0RhdGEoJ2N1cnJlbnQnKTsKQEAgLTcwMCwxOCArNjAzLDE4IEBAIGRlc2NyaWJlKCdUaW1lU2Vy
aWVzQ2hhcnQnLCAoKSA9PiB7CiAgICAgZGVzY3JpYmUoJ3JlbmRlcicsICgpID0+IHsKICAgICAg
ICAgaXQoJ3Nob3VsZCB1cGRhdGUgdGhlIGNhbnZhcyBzaXplIGFuZCBpdHMgY29udGVudCBhZnRl
ciB0aGUgd2luZG93IGhhcyBiZWVuIHJlc2l6ZWQnLCAoKSA9PiB7CiAgICAgICAgICAgICBjb25z
dCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOwotICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScsICdUaW1lU2VyaWVz
Q2hhcnQnLCAnTWVhc3VyZW1lbnRTZXQnLCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4gewot
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rl
cihjb250ZXh0LCBudWxsLCB7d2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJSd9KTsKKyAgICAg
ICAgICAgIHJldHVybiBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRzKGNvbnRleHQpLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gQ2hhcnRUZXN0LmNyZWF0ZUNo
YXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwgbnVsbCwge3dpZHRoOiAnMTAwJScsIGhlaWdo
dDogJzEwMCUnfSk7CiAKICAgICAgICAgICAgICAgICBsZXQgZGF0YUNoYW5nZUNvdW50ID0gMDsK
ICAgICAgICAgICAgICAgICBjaGFydC5saXN0ZW5Ub0FjdGlvbignZGF0YUNoYW5nZScsICgpID0+
IGRhdGFDaGFuZ2VDb3VudCsrKTsKIAotICAgICAgICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihz
YW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKKyAgICAgICAg
ICAgICAgICBjaGFydC5zZXREb21haW4oQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1l
LCBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKICAgICAgICAgICAgICAgICBjaGFy
dC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOwogCiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVz
dHMgPSBjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsKICAgICAgICAgICAg
ICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgxKTsKLSAgICAgICAgICAgICAgICBy
ZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIocmVxdWVzdHNbMF0pOworICAgICAgICAgICAgICAgIENo
YXJ0VGVzdC5yZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIocmVxdWVzdHNbMF0pOwogCiAgICAgICAg
ICAgICAgICAgZXhwZWN0KGRhdGFDaGFuZ2VDb3VudCkudG8uYmUoMCk7CiAgICAgICAgICAgICAg
ICAgZXhwZWN0KGNoYXJ0LnNhbXBsZWRUaW1lU2VyaWVzRGF0YSgnY3VycmVudCcpKS50by5iZShu
dWxsKTsKQEAgLTc1MCwxOCArNjUzLDE4IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAo
KSA9PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBub3QgdXBkYXRlIHVwZGF0ZSB0aGUgY2FudmFz
IHdoZW4gdGhlIHdpbmRvdyBoYXMgYmVlbiByZXNpemVkIGJ1dCBpdHMgZGltZW5zaW9ucyBzdGF5
cyB0aGUgc2FtZScsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJv
d3NpbmdDb250ZXh0KCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5pbXBvcnRTY3JpcHRz
KHNjcmlwdHMsICdDb21wb25lbnRCYXNlJywgJ1RpbWVTZXJpZXNDaGFydCcsICdNZWFzdXJlbWVu
dFNldCcsICdNb2NrUmVtb3RlQVBJJykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgY2hhcnQgPSBjcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIG51bGwsIHt3
aWR0aDogJzEwMHB4JywgaGVpZ2h0OiAnMTAwcHgnfSk7CisgICAgICAgICAgICByZXR1cm4gQ2hh
cnRUZXN0LmltcG9ydENoYXJ0U2NyaXB0cyhjb250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICBjb25zdCBjaGFydCA9IENoYXJ0VGVzdC5jcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVz
dGVyKGNvbnRleHQsIG51bGwsIHt3aWR0aDogJzEwMHB4JywgaGVpZ2h0OiAnMTAwcHgnfSk7CiAK
ICAgICAgICAgICAgICAgICBsZXQgZGF0YUNoYW5nZUNvdW50ID0gMDsKICAgICAgICAgICAgICAg
ICBjaGFydC5saXN0ZW5Ub0FjdGlvbignZGF0YUNoYW5nZScsICgpID0+IGRhdGFDaGFuZ2VDb3Vu
dCsrKTsKIAotICAgICAgICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihzYW1wbGVDbHVzdGVyLnN0
YXJ0VGltZSwgc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKKyAgICAgICAgICAgICAgICBjaGFydC5z
ZXREb21haW4oQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBDaGFydFRlc3Quc2Ft
cGxlQ2x1c3Rlci5lbmRUaW1lKTsKICAgICAgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVt
ZW50U2V0cygpOwogCiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5
bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsKICAgICAgICAgICAgICAgICBleHBlY3QocmVx
dWVzdHMubGVuZ3RoKS50by5iZSgxKTsKLSAgICAgICAgICAgICAgICByZXNwb25kV2l0aFNhbXBs
ZUNsdXN0ZXIocmVxdWVzdHNbMF0pOworICAgICAgICAgICAgICAgIENoYXJ0VGVzdC5yZXNwb25k
V2l0aFNhbXBsZUNsdXN0ZXIocmVxdWVzdHNbMF0pOwogICAgICAgICAgICAgICAgIGV4cGVjdChk
YXRhQ2hhbmdlQ291bnQpLnRvLmJlKDApOwogCiAgICAgICAgICAgICAgICAgbGV0IGNhbnZhczsK
QEAgLTc5NiwxNSArNjk5LDE1IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7
CiAKICAgICAgICAgaXQoJ3Nob3VsZCByZW5kZXIgWS1heGlzJywgKCkgPT4gewogICAgICAgICAg
ICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKLSAgICAgICAgICAgIHJl
dHVybiBjb250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2UnLCAnVGlt
ZVNlcmllc0NoYXJ0JywgJ01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1vdGVBUEknLCAnTWV0cmlj
JykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhcnRXaXRob3V0WUF4aXMg
PSBjcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIG51bGwsIHtheGlzOgorICAg
ICAgICAgICAgcmV0dXJuIENoYXJ0VGVzdC5pbXBvcnRDaGFydFNjcmlwdHMoY29udGV4dCkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhcnRXaXRob3V0WUF4aXMgPSBDaGFy
dFRlc3QuY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBudWxsLCB7YXhpczoK
ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZFN0eWxl
OiAnI2NjYycsCiAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlRm9ybWF0dGVyOiBjb250ZXh0LnN5bWJvbHMuTWV0cmljLm1h
a2VGb3JtYXR0ZXIoJ21zJywgMyksCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFydFdpdGhZQXhpczEgPSBjcmVhdGVD
aGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIG51bGwsIHtheGlzOgorICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXJ0V2l0aFlBeGlzMSA9IENoYXJ0VGVzdC5jcmVhdGVDaGFydFdpdGhTYW1w
bGVDbHVzdGVyKGNvbnRleHQsIG51bGwsIHtheGlzOgogICAgICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB5QXhpc1dpZHRoOiA0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgZ3JpZFN0eWxlOiAnI2NjYycsCkBAIC04MTIsNyArNzE1LDcgQEAgZGVzY3JpYmUoJ1Rp
bWVTZXJpZXNDaGFydCcsICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRm9y
bWF0dGVyOiBjb250ZXh0LnN5bWJvbHMuTWV0cmljLm1ha2VGb3JtYXR0ZXIoJ21zJywgMyksCiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAg
ICBjb25zdCBjaGFydFdpdGhZQXhpczIgPSBjcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNv
bnRleHQsIG51bGwsIHtheGlzOgorICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0V2l0aFlBeGlz
MiA9IENoYXJ0VGVzdC5jcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIG51bGws
IHtheGlzOgogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICB5
QXhpc1dpZHRoOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZFN0eWxlOiAnI2NjYycs
CkBAIC04MjEsMTYgKzcyNCwxNiBAQCBkZXNjcmliZSgnVGltZVNlcmllc0NoYXJ0JywgKCkgPT4g
ewogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSk7CiAKLSAgICAgICAg
ICAgICAgICBjaGFydFdpdGhvdXRZQXhpcy5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRp
bWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICAgICAgY2hhcnRXaXRob3V0
WUF4aXMuc2V0RG9tYWluKENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRU
ZXN0LnNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CiAgICAgICAgICAgICAgICAgY2hhcnRXaXRob3V0
WUF4aXMuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKLSAgICAgICAgICAgICAgICBjaGFydFdpdGhZ
QXhpczEuc2V0RG9tYWluKHNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVu
ZFRpbWUpOworICAgICAgICAgICAgICAgIGNoYXJ0V2l0aFlBeGlzMS5zZXREb21haW4oQ2hhcnRU
ZXN0LnNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5lbmRU
aW1lKTsKICAgICAgICAgICAgICAgICBjaGFydFdpdGhZQXhpczEuZmV0Y2hNZWFzdXJlbWVudFNl
dHMoKTsKLSAgICAgICAgICAgICAgICBjaGFydFdpdGhZQXhpczIuc2V0RG9tYWluKHNhbXBsZUNs
dXN0ZXIuc3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAgICAgICAg
IGNoYXJ0V2l0aFlBeGlzMi5zZXREb21haW4oQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuc3RhcnRU
aW1lLCBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKICAgICAgICAgICAgICAgICBj
aGFydFdpdGhZQXhpczIuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKIAogICAgICAgICAgICAgICAg
IGNvbnN0IHJlcXVlc3RzID0gY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHM7
CiAgICAgICAgICAgICAgICAgZXhwZWN0KHJlcXVlc3RzLmxlbmd0aCkudG8uYmUoMSk7Ci0gICAg
ICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKHJlcXVlc3RzWzBdKTsKKyAgICAg
ICAgICAgICAgICBDaGFydFRlc3QucmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKHJlcXVlc3RzWzBd
KTsKIAogICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNv
bnRleHQpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgICAgICBsZXQgY2FudmFzV2l0aG91
dFlBeGlzID0gY2hhcnRXaXRob3V0WUF4aXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZh
cycpOwpAQCAtODQ4LDE4ICs3NTEsMTggQEAgZGVzY3JpYmUoJ1RpbWVTZXJpZXNDaGFydCcsICgp
ID0+IHsKIAogICAgICAgICBpdCgnc2hvdWxkIHJlbmRlciB0aGUgc2FtcGxlZCB0aW1lIHNlcmll
cycsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250
ZXh0KCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5pbXBvcnRTY3JpcHRzKHNjcmlwdHMs
ICdDb21wb25lbnRCYXNlJywgJ1RpbWVTZXJpZXNDaGFydCcsICdJbnRlcmFjdGl2ZVRpbWVTZXJp
ZXNDaGFydCcsICdNZWFzdXJlbWVudFNldCcsICdNb2NrUmVtb3RlQVBJJykudGhlbigoKSA9PiB7
CisgICAgICAgICAgICByZXR1cm4gQ2hhcnRUZXN0LmltcG9ydENoYXJ0U2NyaXB0cyhjb250ZXh0
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBjb25zdCBsaW5lU3R5bGUgPSAncmdiKDAs
IDEyOCwgMjU1KSc7CiAgICAgICAgICAgICAgICAgY29uc3QgbGluZUNvbG9yID0ge3I6IDAsIGc6
IDEyOCwgYjogMjU1fTsKICAgICAgICAgICAgICAgICBjb25zdCBjaGFydE9wdGlvbnMgPSB7d2lk
dGg6ICcxMDBweCcsIGhlaWdodDogJzEwMHB4J307Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hh
cnRXaXRob3V0U2FtcGxpbmcgPSBjcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQs
IFt7bGluZVN0eWxlLCBzYW1wbGVEYXRhOiBmYWxzZX1dLCBjaGFydE9wdGlvbnMpOwotICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXJ0V2l0aFNhbXBsaW5nID0gY3JlYXRlQ2hhcnRXaXRoU2FtcGxl
Q2x1c3Rlcihjb250ZXh0LCBbe2xpbmVTdHlsZSwgc2FtcGxlRGF0YTogdHJ1ZX1dLCBjaGFydE9w
dGlvbnMpOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0V2l0aG91dFNhbXBsaW5nID0gQ2hh
cnRUZXN0LmNyZWF0ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwgW3tsaW5lU3R5bGUs
IHNhbXBsZURhdGE6IGZhbHNlfV0sIGNoYXJ0T3B0aW9ucyk7CisgICAgICAgICAgICAgICAgY29u
c3QgY2hhcnRXaXRoU2FtcGxpbmcgPSBDaGFydFRlc3QuY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1
c3Rlcihjb250ZXh0LCBbe2xpbmVTdHlsZSwgc2FtcGxlRGF0YTogdHJ1ZX1dLCBjaGFydE9wdGlv
bnMpOwogCi0gICAgICAgICAgICAgICAgY2hhcnRXaXRob3V0U2FtcGxpbmcuc2V0RG9tYWluKHNh
bXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAg
ICAgICAgIGNoYXJ0V2l0aG91dFNhbXBsaW5nLnNldERvbWFpbihDaGFydFRlc3Quc2FtcGxlQ2x1
c3Rlci5zdGFydFRpbWUsIENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRpbWUpOwogICAgICAg
ICAgICAgICAgIGNoYXJ0V2l0aG91dFNhbXBsaW5nLmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7Ci0g
ICAgICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5N
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdKTsKKyAgICAgICAgICAgICAgICBDaGFydFRlc3QucmVz
cG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzBdKTsKIAotICAgICAgICAgICAgICAgIGNoYXJ0V2l0aFNhbXBsaW5nLnNldERvbWFpbihz
YW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKKyAgICAgICAg
ICAgICAgICBjaGFydFdpdGhTYW1wbGluZy5zZXREb21haW4oQ2hhcnRUZXN0LnNhbXBsZUNsdXN0
ZXIuc3RhcnRUaW1lLCBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKICAgICAgICAg
ICAgICAgICBjaGFydFdpdGhTYW1wbGluZy5mZXRjaE1lYXN1cmVtZW50U2V0cygpOwogCiAgICAg
ICAgICAgICAgICAgbGV0IGNhbnZhc1dpdGhTYW1wbGluZzsKQEAgLTg3Miw5ICs3NzUsOSBAQCBk
ZXNjcmliZSgnVGltZVNlcmllc0NoYXJ0JywgKCkgPT4gewogICAgICAgICAgICAgICAgICAgICBl
eHBlY3QoQ2FudmFzVGVzdC5jYW52YXNDb250YWluc0NvbG9yKGNhbnZhc1dpdGhvdXRTYW1wbGlu
ZywgbGluZUNvbG9yKSkudG8uYmUodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGV4cGVjdChD
YW52YXNUZXN0LmNhbnZhc0NvbnRhaW5zQ29sb3IoY2FudmFzV2l0aFNhbXBsaW5nLCBsaW5lQ29s
b3IpKS50by5iZSh0cnVlKTsKIAotICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmID0gc2Ft
cGxlQ2x1c3Rlci5lbmRUaW1lIC0gc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWU7Ci0gICAgICAgICAg
ICAgICAgICAgIGNoYXJ0V2l0aG91dFNhbXBsaW5nLnNldERvbWFpbihzYW1wbGVDbHVzdGVyLnN0
YXJ0VGltZSAtIDIgKiBkaWZmLCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUpOwotICAgICAgICAgICAg
ICAgICAgICBjaGFydFdpdGhTYW1wbGluZy5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRp
bWUgLSAyICogZGlmZiwgc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZGlmZiA9IENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRpbWUgLSBDaGFydFRl
c3Quc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWU7CisgICAgICAgICAgICAgICAgICAgIGNoYXJ0V2l0
aG91dFNhbXBsaW5nLnNldERvbWFpbihDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUg
LSAyICogZGlmZiwgQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAg
ICAgICAgICAgIGNoYXJ0V2l0aFNhbXBsaW5nLnNldERvbWFpbihDaGFydFRlc3Quc2FtcGxlQ2x1
c3Rlci5zdGFydFRpbWUgLSAyICogZGlmZiwgQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuZW5kVGlt
ZSk7CiAKICAgICAgICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVk
cmF3Q2hlY2soY2FudmFzV2l0aG91dFNhbXBsaW5nKTsKICAgICAgICAgICAgICAgICAgICAgQ2Fu
dmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzV2l0aFNhbXBsaW5nKTsK
QEAgLTg5MywyNCArNzk2LDI0IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7
CiAKICAgICAgICAgaXQoJ3Nob3VsZCByZW5kZXIgYW5ub3RhdGlvbnMnLCAoKSA9PiB7CiAgICAg
ICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOwotICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScs
ICdUaW1lU2VyaWVzQ2hhcnQnLCAnSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQnLCAnTWVhc3Vy
ZW1lbnRTZXQnLCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0
dXJuIENoYXJ0VGVzdC5pbXBvcnRDaGFydFNjcmlwdHMoY29udGV4dCkudGhlbigoKSA9PiB7CiAg
ICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHthbm5vdGF0aW9uczogeyB0ZXh0U3R5bGU6
ICcjMDAwJywgdGV4dEJhY2tncm91bmQ6ICcjZmZmJywgbWluV2lkdGg6IDMsIGJhckhlaWdodDog
NywgYmFyU3BhY2luZzogMn19OwotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0V2l0aG91dEFu
bm90YXRpb25zID0gY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBudWxsLCBv
cHRpb25zKTsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFydFdpdGhBbm5vdGF0aW9ucyA9IGNy
ZWF0ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwgbnVsbCwgb3B0aW9ucyk7CisgICAg
ICAgICAgICAgICAgY29uc3QgY2hhcnRXaXRob3V0QW5ub3RhdGlvbnMgPSBDaGFydFRlc3QuY3Jl
YXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBudWxsLCBvcHRpb25zKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBjaGFydFdpdGhBbm5vdGF0aW9ucyA9IENoYXJ0VGVzdC5jcmVhdGVD
aGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIG51bGwsIG9wdGlvbnMpOwogCi0gICAgICAg
ICAgICAgICAgY2hhcnRXaXRob3V0QW5ub3RhdGlvbnMuc2V0RG9tYWluKHNhbXBsZUNsdXN0ZXIu
c3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAgICAgICAgIGNoYXJ0
V2l0aG91dEFubm90YXRpb25zLnNldERvbWFpbihDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5zdGFy
dFRpbWUsIENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRpbWUpOwogICAgICAgICAgICAgICAg
IGNoYXJ0V2l0aG91dEFubm90YXRpb25zLmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7Ci0gICAgICAg
ICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzBdKTsKKyAgICAgICAgICAgICAgICBDaGFydFRlc3QucmVzcG9uZFdp
dGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBd
KTsKIAotICAgICAgICAgICAgICAgIGNoYXJ0V2l0aEFubm90YXRpb25zLnNldERvbWFpbihzYW1w
bGVDbHVzdGVyLnN0YXJ0VGltZSwgc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKKyAgICAgICAgICAg
ICAgICBjaGFydFdpdGhBbm5vdGF0aW9ucy5zZXREb21haW4oQ2hhcnRUZXN0LnNhbXBsZUNsdXN0
ZXIuc3RhcnRUaW1lLCBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKICAgICAgICAg
ICAgICAgICBjaGFydFdpdGhBbm5vdGF0aW9ucy5mZXRjaE1lYXN1cmVtZW50U2V0cygpOwogCiAg
ICAgICAgICAgICAgICAgbGV0IGNhbnZhc1dpdGhBbm5vdGF0aW9uczsKICAgICAgICAgICAgICAg
ICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KS50aGVuKCgpID0+IHsK
LSAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlmZiA9IHNhbXBsZUNsdXN0ZXIuZW5kVGltZSAt
IHNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lOworICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZm
ID0gQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuZW5kVGltZSAtIENoYXJ0VGVzdC5zYW1wbGVDbHVz
dGVyLnN0YXJ0VGltZTsKICAgICAgICAgICAgICAgICAgICAgY2hhcnRXaXRoQW5ub3RhdGlvbnMu
c2V0QW5ub3RhdGlvbnMoW3sKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZTogc2Ft
cGxlQ2x1c3Rlci5zdGFydFRpbWUgKyBkaWZmIC8gNCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGVuZFRpbWU6IHNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lICsgZGlmZiAvIDIsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGFydFRpbWU6IENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGlt
ZSArIGRpZmYgLyA0LAorICAgICAgICAgICAgICAgICAgICAgICAgZW5kVGltZTogQ2hhcnRUZXN0
LnNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lICsgZGlmZiAvIDIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBsYWJlbDogJ2hlbGxvLCB3b3JsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxs
U3R5bGU6ICdyZ2IoMCwgMCwgMjU1KScsCiAgICAgICAgICAgICAgICAgICAgIH1dKTsKQEAgLTky
OSw4NDkgKzgzMiwzIEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7CiAgICAg
fSk7CiAKIH0pOwotCi1kZXNjcmliZSgnSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9
PiB7Ci0KLSAgICBpdCgnc2hvdWxkIGNoYW5nZSB0aGUgdW5sb2NrZWQgaW5kaWNhdG9yIHRvIHRo
ZSBwb2ludCBjbG9zZXN0IHRvIHRoZSBsYXN0IG1vdXNlIG1vdmUgcG9zaXRpb24nLCAoKSA9PiB7
Ci0gICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7Ci0gICAgICAg
IHJldHVybiBjb250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2UnLCAn
VGltZVNlcmllc0NoYXJ0JywgJ0ludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0JywgJ01lYXN1cmVt
ZW50U2V0JywgJ01vY2tSZW1vdGVBUEknKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0
IGNoYXJ0ID0gY3JlYXRlSW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQp
OwotCi0gICAgICAgICAgICBjaGFydC5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUs
IHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7Ci0gICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVt
ZW50U2V0cygpOwotICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQu
c3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdKTsKLQotICAgICAgICAgICAgY29uc3Qg
aW5kaWNhdG9yQ2hhbmdlQ2FsbHMgPSBbXTsKLSAgICAgICAgICAgIGNoYXJ0Lmxpc3RlblRvQWN0
aW9uKCdpbmRpY2F0b3JDaGFuZ2UnLCAoLi4uYXJncykgPT4gaW5kaWNhdG9yQ2hhbmdlQ2FsbHMu
cHVzaChhcmdzKSk7Ci0KLSAgICAgICAgICAgIGxldCBzZWxlY3Rpb25DaGFuZ2VDb3VudCA9IDA7
Ci0gICAgICAgICAgICBjaGFydC5saXN0ZW5Ub0FjdGlvbignc2VsZWN0aW9uQ2hhbmdlJywgKCkg
PT4gc2VsZWN0aW9uQ2hhbmdlQ291bnQrKyk7Ci0KLSAgICAgICAgICAgIGxldCBjYW52YXM7Ci0g
ICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KS50aGVu
KCgpID0+IHsKLSAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVjdGlvbigp
KS50by5iZShudWxsKTsKLSAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudEluZGlj
YXRvcigpKS50by5iZShudWxsKTsKLSAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hh
bmdlQ2FsbHMpLnRvLmJlLmVxbChbXSk7Ci0KLSAgICAgICAgICAgICAgICBjYW52YXMgPSBjaGFy
dC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFzJyk7Ci0gICAgICAgICAgICAgICAgY29u
c3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgICAgICAg
ICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91c2Vtb3ZlJywge3Rhcmdl
dDogY2FudmFzLCBjbGllbnRYOiByZWN0LnJpZ2h0IC0gMSwgY2xpZW50WTogcmVjdC50b3AgKyBy
ZWN0LmhlaWdodCAvIDIsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOwotCi0gICAg
ICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFz
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250
ZXh0KTsKLSAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGV4cGVj
dChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRydWUpOwot
Ci0gICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSkudG8uYmUo
bnVsbCk7Ci0gICAgICAgICAgICAgICAgY29uc3QgaW5kaWNhdG9yID0gY2hhcnQuY3VycmVudElu
ZGljYXRvcigpOwotICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IpLnRvLm5vdC5iZShu
dWxsKTsKLSAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmlldyA9IGNoYXJ0LnNhbXBsZWRU
aW1lU2VyaWVzRGF0YSgnY3VycmVudCcpOwotICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RQb2lu
dCA9IGN1cnJlbnRWaWV3Lmxhc3RQb2ludCgpOwotICAgICAgICAgICAgICAgIGV4cGVjdChpbmRp
Y2F0b3IudmlldykudG8uYmUoY3VycmVudFZpZXcpOwotICAgICAgICAgICAgICAgIGV4cGVjdChp
bmRpY2F0b3IucG9pbnQpLnRvLmJlKGxhc3RQb2ludCk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0
KGluZGljYXRvci5pc0xvY2tlZCkudG8uYmUoZmFsc2UpOwotICAgICAgICAgICAgICAgIGV4cGVj
dChpbmRpY2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtbbGFzdFBvaW50LmlkLCBmYWxzZV1d
KTsKLQotICAgICAgICAgICAgICAgIGV4cGVjdChzZWxlY3Rpb25DaGFuZ2VDb3VudCkudG8uYmUo
MCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hv
dWxkIGxvY2sgdGhlIGluZGljYXRvciB0byB0aGUgcG9pbnQgY2xvc2VzdCB0byB0aGUgY2xpY2tl
ZCBwb3NpdGlvbicsICgpID0+IHsKLSAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2lu
Z0NvbnRleHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuaW1wb3J0U2NyaXB0cyhzY3JpcHRz
LCAnQ29tcG9uZW50QmFzZScsICdUaW1lU2VyaWVzQ2hhcnQnLCAnSW50ZXJhY3RpdmVUaW1lU2Vy
aWVzQ2hhcnQnLCAnTWVhc3VyZW1lbnRTZXQnLCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4g
ewotICAgICAgICAgICAgY29uc3QgY2hhcnQgPSBjcmVhdGVJbnRlcmFjdGl2ZUNoYXJ0V2l0aFNh
bXBsZUNsdXN0ZXIoY29udGV4dCk7Ci0KLSAgICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihzYW1w
bGVDbHVzdGVyLnN0YXJ0VGltZSwgc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKLSAgICAgICAgICAg
IGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7Ci0gICAgICAgICAgICByZXNwb25kV2l0aFNh
bXBsZUNsdXN0ZXIoY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0pOwot
Ci0gICAgICAgICAgICBjb25zdCBpbmRpY2F0b3JDaGFuZ2VDYWxscyA9IFtdOwotICAgICAgICAg
ICAgY2hhcnQubGlzdGVuVG9BY3Rpb24oJ2luZGljYXRvckNoYW5nZScsICguLi5hcmdzKSA9PiBp
bmRpY2F0b3JDaGFuZ2VDYWxscy5wdXNoKGFyZ3MpKTsKLQotICAgICAgICAgICAgbGV0IHNlbGVj
dGlvbkNoYW5nZUNvdW50ID0gMDsKLSAgICAgICAgICAgIGNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdz
ZWxlY3Rpb25DaGFuZ2UnLCAoKSA9PiBzZWxlY3Rpb25DaGFuZ2VDb3VudCsrKTsKLQotICAgICAg
ICAgICAgbGV0IGNhbnZhczsKLSAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1Rv
UmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGV4cGVjdChjaGFy
dC5jdXJyZW50U2VsZWN0aW9uKCkpLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGV4cGVj
dChjaGFydC5jdXJyZW50SW5kaWNhdG9yKCkpLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAg
IGV4cGVjdChpbmRpY2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtdKTsKLSAgICAgICAgICAg
ICAgICBjYW52YXMgPSBjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFzJyk7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KTsKLQotICAgICAgICAgICAgICAgIGNvbnN0IHggPSByZWN0LnJpZ2h0IC0gMTsKLSAgICAgICAg
ICAgICAgICBjb25zdCB5ID0gcmVjdC50b3AgKyByZWN0LmhlaWdodCAvIDI7Ci0gICAgICAgICAg
ICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlbW92ZScsIHt0
YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogeCwgY2xpZW50WTogeSwgY29tcG9zZWQ6IHRydWUsIGJ1
YmJsZXM6IHRydWV9KSk7Ci0gICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3
IE1vdXNlRXZlbnQoJ21vdXNlZG93bicsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogeCwgY2xp
ZW50WTogeSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7Ci0gICAgICAgICAgICAg
ICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlbW92ZScsIHt0YXJn
ZXQ6IGNhbnZhcywgY2xpZW50WDogeCAtIDAuNSwgY2xpZW50WTogeSArIDAuNSwgY29tcG9zZWQ6
IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7Ci0gICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNo
RXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNldXAnLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6
IHggLSAwLjUsIGNsaWVudFk6IHkgKyAwLjUsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVl
fSkpOwotICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50
KCdjbGljaycsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogeCAtIDAuNSwgY2xpZW50WTogeSAr
IDAuNSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7Ci0KLSAgICAgICAgICAgICAg
ICBDYW52YXNUZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOwotICAgICAg
ICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOwotICAg
ICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rl
c3QuaGFzQ2FudmFzQmVlblJlZHJhd24oY2FudmFzKSkudG8uYmUodHJ1ZSk7Ci0KLSAgICAgICAg
ICAgICAgICBjb25zdCBjdXJyZW50VmlldyA9IGNoYXJ0LnNhbXBsZWRUaW1lU2VyaWVzRGF0YSgn
Y3VycmVudCcpOwotICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RQb2ludCA9IGN1cnJlbnRWaWV3
Lmxhc3RQb2ludCgpOwotICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50U2VsZWN0
aW9uKCkpLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGNvbnN0IGluZGljYXRvciA9IGNo
YXJ0LmN1cnJlbnRJbmRpY2F0b3IoKTsKLSAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9y
LnZpZXcpLnRvLmJlKGN1cnJlbnRWaWV3KTsKLSAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNh
dG9yLnBvaW50KS50by5iZShsYXN0UG9pbnQpOwotICAgICAgICAgICAgICAgIGV4cGVjdChpbmRp
Y2F0b3IuaXNMb2NrZWQpLnRvLmJlKHRydWUpOwotICAgICAgICAgICAgICAgIGV4cGVjdChpbmRp
Y2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtbbGFzdFBvaW50LmlkLCBmYWxzZV0sIFtsYXN0
UG9pbnQuaWQsIHRydWVdXSk7Ci0KLSAgICAgICAgICAgICAgICBleHBlY3Qoc2VsZWN0aW9uQ2hh
bmdlQ291bnQpLnRvLmJlKDApOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0p
OwotCi0gICAgaXQoJ3Nob3VsZCBjbGVhciB0aGUgdW5sb2NrZWQgaW5kaWNhdG9yIHdoZW4gdGhl
IG1vdXNlIGN1cnNvciBleGl0cyB0aGUgY2hhcnQnLCAoKSA9PiB7Ci0gICAgICAgIGNvbnN0IGNv
bnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0Lmlt
cG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2UnLCAnVGltZVNlcmllc0NoYXJ0Jywg
J0ludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0JywgJ01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1v
dGVBUEknKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gY3JlYXRlSW50
ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQpOwotCi0gICAgICAgICAgICBj
aGFydC5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5k
VGltZSk7Ci0gICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOwotICAgICAg
ICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzBdKTsKLQotICAgICAgICAgICAgY29uc3QgaW5kaWNhdG9yQ2hhbmdlQ2Fs
bHMgPSBbXTsKLSAgICAgICAgICAgIGNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdpbmRpY2F0b3JDaGFu
Z2UnLCAoLi4uYXJncykgPT4gaW5kaWNhdG9yQ2hhbmdlQ2FsbHMucHVzaChhcmdzKSk7Ci0KLSAg
ICAgICAgICAgIGxldCBzZWxlY3Rpb25DaGFuZ2VDb3VudCA9IDA7Ci0gICAgICAgICAgICBjaGFy
dC5saXN0ZW5Ub0FjdGlvbignc2VsZWN0aW9uQ2hhbmdlJywgKCkgPT4gc2VsZWN0aW9uQ2hhbmdl
Q291bnQrKyk7Ci0KLSAgICAgICAgICAgIGxldCBjYW52YXM7Ci0gICAgICAgICAgICBsZXQgcmVj
dDsKLSAgICAgICAgICAgIGxldCBsYXN0UG9pbnQ7Ci0gICAgICAgICAgICByZXR1cm4gd2FpdEZv
ckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAg
ICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVjdGlvbigpKS50by5iZShudWxsKTsKLSAgICAgICAg
ICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudEluZGljYXRvcigpKS50by5iZShudWxsKTsKLSAg
ICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ2FsbHMpLnRvLmJlLmVxbChbXSk7
Ci0KLSAgICAgICAgICAgICAgICBjYW52YXMgPSBjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3Rv
cignY2FudmFzJyk7Ci0gICAgICAgICAgICAgICAgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKTsKLSAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91
c2VFdmVudCgnbW91c2Vtb3ZlJywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LnJpZ2h0
IC0gMSwgY2xpZW50WTogcmVjdC50b3AgKyByZWN0LmhlaWdodCAvIDIsIGNvbXBvc2VkOiB0cnVl
LCBidWJibGVzOiB0cnVlfSkpOwotCi0gICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2Fu
dmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gd2Fp
dEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKLSAgICAgICAgICAgIH0pLnRoZW4oKCkg
PT4gewotICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRy
YXduKGNhbnZhcykpLnRvLmJlKHRydWUpOwotCi0gICAgICAgICAgICAgICAgY29uc3QgY3VycmVu
dFZpZXcgPSBjaGFydC5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ2N1cnJlbnQnKTsKLSAgICAgICAg
ICAgICAgICBsYXN0UG9pbnQgPSBjdXJyZW50Vmlldy5sYXN0UG9pbnQoKTsKLSAgICAgICAgICAg
ICAgICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVjdGlvbigpKS50by5iZShudWxsKTsKLSAgICAg
ICAgICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSBjaGFydC5jdXJyZW50SW5kaWNhdG9yKCk7Ci0g
ICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci52aWV3KS50by5iZShjdXJyZW50Vmlldyk7
Ci0gICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci5wb2ludCkudG8uYmUobGFzdFBvaW50
KTsKLSAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLmlzTG9ja2VkKS50by5iZShmYWxz
ZSk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvckNoYW5nZUNhbGxzKS50by5iZS5l
cWwoW1tsYXN0UG9pbnQuaWQsIGZhbHNlXV0pOwotCi0gICAgICAgICAgICAgICAgY2FudmFzLnBh
cmVudE5vZGUuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91c2Vtb3ZlJywge3Rhcmdl
dDogY2FudmFzLCBjbGllbnRYOiByZWN0LnJpZ2h0ICsgNTAsIGNsaWVudFk6IHJlY3QuYm90dG9t
ICsgNTAsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOwotICAgICAgICAgICAgICAg
IGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZWxlYXZlJywge3Rhcmdl
dDogY2FudmFzLCBjbGllbnRYOiByZWN0LnJpZ2h0ICsgNTAsIGNsaWVudFk6IHJlY3QuYm90dG9t
ICsgNTAsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOwotCi0gICAgICAgICAgICAg
ICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNU
ZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRydWUpOwotCi0gICAgICAg
ICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSkudG8uYmUobnVsbCk7Ci0g
ICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRJbmRpY2F0b3IoKSkudG8uYmUobnVs
bCk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvckNoYW5nZUNhbGxzKS50by5iZS5l
cWwoW1tsYXN0UG9pbnQuaWQsIGZhbHNlXSwgW251bGwsIGZhbHNlXV0pOwotCi0gICAgICAgICAg
ICAgICAgZXhwZWN0KHNlbGVjdGlvbkNoYW5nZUNvdW50KS50by5iZSgwKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgbm90IGNsZWFyIHRo
ZSBsb2NrZWQgaW5kaWNhdG9yIHdoZW4gdGhlIG1vdXNlIGN1cnNvciBleGl0cyB0aGUgY2hhcnQn
LCAoKSA9PiB7Ci0gICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7
Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVu
dEJhc2UnLCAnVGltZVNlcmllc0NoYXJ0JywgJ0ludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0Jywg
J01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1vdGVBUEknKS50aGVuKCgpID0+IHsKLSAgICAgICAg
ICAgIGNvbnN0IGNoYXJ0ID0gY3JlYXRlSW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVDbHVzdGVy
KGNvbnRleHQpOwotCi0gICAgICAgICAgICBjaGFydC5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5z
dGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7Ci0gICAgICAgICAgICBjaGFydC5mZXRj
aE1lYXN1cmVtZW50U2V0cygpOwotICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVy
KGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdKTsKLQotICAgICAgICAg
ICAgY29uc3QgaW5kaWNhdG9yQ2hhbmdlQ2FsbHMgPSBbXTsKLSAgICAgICAgICAgIGNoYXJ0Lmxp
c3RlblRvQWN0aW9uKCdpbmRpY2F0b3JDaGFuZ2UnLCAoLi4uYXJncykgPT4gaW5kaWNhdG9yQ2hh
bmdlQ2FsbHMucHVzaChhcmdzKSk7Ci0KLSAgICAgICAgICAgIGxldCBzZWxlY3Rpb25DaGFuZ2VD
b3VudCA9IDA7Ci0gICAgICAgICAgICBjaGFydC5saXN0ZW5Ub0FjdGlvbignc2VsZWN0aW9uQ2hh
bmdlJywgKCkgPT4gc2VsZWN0aW9uQ2hhbmdlQ291bnQrKyk7Ci0KLSAgICAgICAgICAgIGxldCBj
YW52YXM7Ci0gICAgICAgICAgICBsZXQgcmVjdDsKLSAgICAgICAgICAgIGxldCBjdXJyZW50Vmll
dzsKLSAgICAgICAgICAgIGxldCBsYXN0UG9pbnQ7Ci0gICAgICAgICAgICByZXR1cm4gd2FpdEZv
ckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAg
ICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVjdGlvbigpKS50by5iZShudWxsKTsKLSAgICAgICAg
ICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudEluZGljYXRvcigpKS50by5iZShudWxsKTsKLSAg
ICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ2FsbHMpLnRvLmJlLmVxbChbXSk7
Ci0KLSAgICAgICAgICAgICAgICBjYW52YXMgPSBjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3Rv
cignY2FudmFzJyk7Ci0gICAgICAgICAgICAgICAgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKTsKLSAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91
c2VFdmVudCgnY2xpY2snLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHJlY3QucmlnaHQgLSAx
LCBjbGllbnRZOiByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMiwgY29tcG9zZWQ6IHRydWUsIGJ1
YmJsZXM6IHRydWV9KSk7Ci0KLSAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNC
ZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOwotICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9y
Q29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7
Ci0gICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJlZHJhd24o
Y2FudmFzKSkudG8uYmUodHJ1ZSk7Ci0KLSAgICAgICAgICAgICAgICBjdXJyZW50VmlldyA9IGNo
YXJ0LnNhbXBsZWRUaW1lU2VyaWVzRGF0YSgnY3VycmVudCcpOwotICAgICAgICAgICAgICAgIGxh
c3RQb2ludCA9IGN1cnJlbnRWaWV3Lmxhc3RQb2ludCgpOwotICAgICAgICAgICAgICAgIGV4cGVj
dChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAg
IGNvbnN0IGluZGljYXRvciA9IGNoYXJ0LmN1cnJlbnRJbmRpY2F0b3IoKTsKLSAgICAgICAgICAg
ICAgICBleHBlY3QoaW5kaWNhdG9yLnZpZXcpLnRvLmJlKGN1cnJlbnRWaWV3KTsKLSAgICAgICAg
ICAgICAgICBleHBlY3QoaW5kaWNhdG9yLnBvaW50KS50by5iZShsYXN0UG9pbnQpOwotICAgICAg
ICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IuaXNMb2NrZWQpLnRvLmJlKHRydWUpOwotICAgICAg
ICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtbbGFzdFBv
aW50LmlkLCB0cnVlXV0pOwotCi0gICAgICAgICAgICAgICAgY2FudmFzLnBhcmVudE5vZGUuZGlz
cGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91c2Vtb3ZlJywge3RhcmdldDogY2FudmFzLCBj
bGllbnRYOiByZWN0LnJpZ2h0ICsgNTAsIGNsaWVudFk6IHJlY3QuYm90dG9tICsgNTAsIGNvbXBv
c2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOwotICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNw
YXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZWxlYXZlJywge3RhcmdldDogY2FudmFzLCBj
bGllbnRYOiByZWN0LnJpZ2h0ICsgNTAsIGNsaWVudFk6IHJlY3QuYm90dG9tICsgNTAsIGNvbXBv
c2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOwotCi0gICAgICAgICAgICAgICAgQ2FudmFzVGVz
dC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKLSAgICAgICAgICAgIH0p
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZh
c0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKGZhbHNlKTsKLQotICAgICAgICAgICAgICAgIGV4
cGVjdChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpLnRvLmJlKG51bGwpOwotICAgICAgICAgICAg
ICAgIGNvbnN0IGluZGljYXRvciA9IGNoYXJ0LmN1cnJlbnRJbmRpY2F0b3IoKTsKLSAgICAgICAg
ICAgICAgICBleHBlY3QoaW5kaWNhdG9yLnZpZXcpLnRvLmJlKGN1cnJlbnRWaWV3KTsKLSAgICAg
ICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLnBvaW50KS50by5iZShsYXN0UG9pbnQpOwotICAg
ICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IuaXNMb2NrZWQpLnRvLmJlKHRydWUpOwotICAg
ICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3JDaGFuZ2VDYWxscykudG8uYmUuZXFsKFtbbGFz
dFBvaW50LmlkLCB0cnVlXV0pOwotCi0gICAgICAgICAgICAgICAgZXhwZWN0KHNlbGVjdGlvbkNo
YW5nZUNvdW50KS50by5iZSgwKTsKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0pOwotICAgIH0p
OwotCi0gICAgaXQoJ3Nob3VsZCBjbGVhciB0aGUgbG9ja2VkIGluZGljYXRvciB3aGVuIGNsaWNr
ZWQnLCAoKSA9PiB7Ci0gICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0
KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBv
bmVudEJhc2UnLCAnVGltZVNlcmllc0NoYXJ0JywgJ0ludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0
JywgJ01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1vdGVBUEknKS50aGVuKCgpID0+IHsKLSAgICAg
ICAgICAgIGNvbnN0IGNoYXJ0ID0gY3JlYXRlSW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVDbHVz
dGVyKGNvbnRleHQpOwotCi0gICAgICAgICAgICBjaGFydC5zZXREb21haW4oc2FtcGxlQ2x1c3Rl
ci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7Ci0gICAgICAgICAgICBjaGFydC5m
ZXRjaE1lYXN1cmVtZW50U2V0cygpOwotICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVz
dGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdKTsKLQotICAgICAg
ICAgICAgY29uc3QgaW5kaWNhdG9yQ2hhbmdlQ2FsbHMgPSBbXTsKLSAgICAgICAgICAgIGNoYXJ0
Lmxpc3RlblRvQWN0aW9uKCdpbmRpY2F0b3JDaGFuZ2UnLCAoLi4uYXJncykgPT4gaW5kaWNhdG9y
Q2hhbmdlQ2FsbHMucHVzaChhcmdzKSk7Ci0KLSAgICAgICAgICAgIGxldCBzZWxlY3Rpb25DaGFu
Z2VDb3VudCA9IDA7Ci0gICAgICAgICAgICBjaGFydC5saXN0ZW5Ub0FjdGlvbignc2VsZWN0aW9u
Q2hhbmdlJywgKCkgPT4gc2VsZWN0aW9uQ2hhbmdlQ291bnQrKyk7Ci0KLSAgICAgICAgICAgIGxl
dCBjYW52YXM7Ci0gICAgICAgICAgICBsZXQgcmVjdDsKLSAgICAgICAgICAgIGxldCB5OwotICAg
ICAgICAgICAgbGV0IGN1cnJlbnRWaWV3OwotICAgICAgICAgICAgbGV0IGxhc3RQb2ludDsKLSAg
ICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4o
KCkgPT4gewotICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkp
LnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50SW5kaWNh
dG9yKCkpLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3JDaGFu
Z2VDYWxscykudG8uYmUuZXFsKFtdKTsKLQotICAgICAgICAgICAgICAgIGNhbnZhcyA9IGNoYXJ0
LmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKTsKLSAgICAgICAgICAgICAgICByZWN0
ID0gY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICAgICAgICAgIHkgPSBy
ZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMjsKLSAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0
Y2hFdmVudChuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6
IHJlY3QucmlnaHQgLSAxLCBjbGllbnRZOiB5LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1
ZX0pKTsKLQotICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJh
d0NoZWNrKGNhbnZhcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRz
VG9SZW5kZXIoY29udGV4dCk7Ci0gICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAg
ICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50
by5iZSh0cnVlKTsKLQotICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3ID0gY2hhcnQuc2FtcGxl
ZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50Jyk7Ci0gICAgICAgICAgICAgICAgbGFzdFBvaW50ID0g
Y3VycmVudFZpZXcubGFzdFBvaW50KCk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1
cnJlbnRTZWxlY3Rpb24oKSkudG8uYmUobnVsbCk7Ci0gICAgICAgICAgICAgICAgY29uc3QgaW5k
aWNhdG9yID0gY2hhcnQuY3VycmVudEluZGljYXRvcigpOwotICAgICAgICAgICAgICAgIGV4cGVj
dChpbmRpY2F0b3IudmlldykudG8uYmUoY3VycmVudFZpZXcpOwotICAgICAgICAgICAgICAgIGV4
cGVjdChpbmRpY2F0b3IucG9pbnQpLnRvLmJlKGxhc3RQb2ludCk7Ci0gICAgICAgICAgICAgICAg
ZXhwZWN0KGluZGljYXRvci5pc0xvY2tlZCkudG8uYmUodHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
ZXhwZWN0KGluZGljYXRvckNoYW5nZUNhbGxzKS50by5iZS5lcWwoW1tsYXN0UG9pbnQuaWQsIHRy
dWVdXSk7Ci0KLSAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VF
dmVudCgnY2xpY2snLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHJlY3QubGVmdCArIDEsIGNs
aWVudFk6IHksIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOwotCi0gICAgICAgICAg
ICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsK
LSAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGV4cGVjdChDYW52
YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRydWUpOwotCi0gICAg
ICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSkudG8uYmUobnVsbCk7
Ci0gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RQb2ludCA9IGN1cnJlbnRWaWV3LmZpcnN0UG9p
bnQoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSBjaGFydC5jdXJyZW50SW5k
aWNhdG9yKCk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci52aWV3KS50by5iZShj
dXJyZW50Vmlldyk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci5wb2ludCkudG8u
YmUoZmlyc3RQb2ludCk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci5pc0xvY2tl
ZCkudG8uYmUoZmFsc2UpOwotICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3JDaGFuZ2VD
YWxscykudG8uYmUuZXFsKFtbbGFzdFBvaW50LmlkLCB0cnVlXSwgW2ZpcnN0UG9pbnQuaWQsIGZh
bHNlXV0pOwotCi0gICAgICAgICAgICAgICAgZXhwZWN0KHNlbGVjdGlvbkNoYW5nZUNvdW50KS50
by5iZSgwKTsKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgaXQo
J3Nob3VsZCBjaGFuZ2UgdGhlIHNlbGVjdGlvbiB3aGVuIHRoZSBtb3VzZSBjdXJzb3IgaXMgZHJh
Z2dlZCcsICgpID0+IHsKLSAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRl
eHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnQ29t
cG9uZW50QmFzZScsICdUaW1lU2VyaWVzQ2hhcnQnLCAnSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hh
cnQnLCAnTWVhc3VyZW1lbnRTZXQnLCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4gewotICAg
ICAgICAgICAgY29uc3QgY2hhcnQgPSBjcmVhdGVJbnRlcmFjdGl2ZUNoYXJ0V2l0aFNhbXBsZUNs
dXN0ZXIoY29udGV4dCwgbnVsbCwge3NlbGVjdGlvbjoge2xpbmVTdHlsZTogJyNmOTMnLCBsaW5l
V2lkdGg6IDIsIGZpbGxTdHlsZTogJyNjY2MnfX0pOwotCi0gICAgICAgICAgICBjaGFydC5zZXRE
b21haW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7Ci0g
ICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOwotICAgICAgICAgICAgcmVz
cG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzBdKTsKLQotICAgICAgICAgICAgY29uc3QgaW5kaWNhdG9yQ2hhbmdlQ2FsbHMgPSBbXTsK
LSAgICAgICAgICAgIGNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdpbmRpY2F0b3JDaGFuZ2UnLCAoLi4u
YXJncykgPT4gaW5kaWNhdG9yQ2hhbmdlQ2FsbHMucHVzaChhcmdzKSk7Ci0KLSAgICAgICAgICAg
IGNvbnN0IHNlbGVjdGlvbkNoYW5nZUNhbGxzID0gW107Ci0gICAgICAgICAgICBjaGFydC5saXN0
ZW5Ub0FjdGlvbignc2VsZWN0aW9uQ2hhbmdlJywgKC4uLmFyZ3MpID0+IHNlbGVjdGlvbkNoYW5n
ZUNhbGxzLnB1c2goYXJncykpOwotCi0gICAgICAgICAgICBjb25zdCB6b29tQnV0dG9uID0gY2hh
cnQuY29udGVudCgnem9vbS1idXR0b24nKTsKLQotICAgICAgICAgICAgbGV0IGNhbnZhczsKLSAg
ICAgICAgICAgIGxldCByZWN0OwotICAgICAgICAgICAgbGV0IHk7Ci0gICAgICAgICAgICBsZXQg
Y3VycmVudFZpZXc7Ci0gICAgICAgICAgICBsZXQgZmlyc3RQb2ludDsKLSAgICAgICAgICAgIGxl
dCBvbGRSYW5nZTsKLSAgICAgICAgICAgIGxldCBuZXdSYW5nZTsKLSAgICAgICAgICAgIHJldHVy
biB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4gewotICAgICAg
ICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpLnRvLmJlKG51bGwpOwot
ICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50SW5kaWNhdG9yKCkpLnRvLmJlKG51
bGwpOwotICAgICAgICAgICAgICAgIGV4cGVjdChzZWxlY3Rpb25DaGFuZ2VDYWxscykudG8uYmUu
ZXFsKFtdKTsKLQotICAgICAgICAgICAgICAgIGNhbnZhcyA9IGNoYXJ0LmNvbnRlbnQoKS5xdWVy
eVNlbGVjdG9yKCdjYW52YXMnKTsKLSAgICAgICAgICAgICAgICByZWN0ID0gY2FudmFzLmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICAgICAgICAgIHkgPSByZWN0LnRvcCArIHJlY3Qu
aGVpZ2h0IC8gMjsKLSAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91
c2VFdmVudCgnbW91c2Vtb3ZlJywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LmxlZnQg
KyA1LCBjbGllbnRZOiB5LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKLQotICAg
ICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZh
cyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29u
dGV4dCk7Ci0gICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBleHBl
Y3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZSh0cnVlKTsK
LQotICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3ID0gY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNE
YXRhKCdjdXJyZW50Jyk7Ci0gICAgICAgICAgICAgICAgZmlyc3RQb2ludCA9IGN1cnJlbnRWaWV3
LmZpcnN0UG9pbnQoKTsKLSAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVj
dGlvbigpKS50by5iZShudWxsKTsKLSAgICAgICAgICAgICAgICBsZXQgaW5kaWNhdG9yID0gY2hh
cnQuY3VycmVudEluZGljYXRvcigpOwotICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3Iu
dmlldykudG8uYmUoY3VycmVudFZpZXcpOwotICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0
b3IucG9pbnQpLnRvLmJlKGZpcnN0UG9pbnQpOwotICAgICAgICAgICAgICAgIGV4cGVjdChpbmRp
Y2F0b3IuaXNMb2NrZWQpLnRvLmJlKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBleHBlY3QoaW5k
aWNhdG9yQ2hhbmdlQ2FsbHMpLnRvLmJlLmVxbChbW2ZpcnN0UG9pbnQuaWQsIGZhbHNlXV0pOwot
ICAgICAgICAgICAgICAgIGV4cGVjdCh6b29tQnV0dG9uLm9mZnNldEhlaWdodCkudG8uYmUoMCk7
Ci0KLSAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgn
bW91c2Vkb3duJywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LmxlZnQgKyA1LCBjbGll
bnRZOiB5LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKLQotICAgICAgICAgICAg
ICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7Ci0g
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBleHBlY3QoQ2FudmFz
VGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZShmYWxzZSk7Ci0KLSAgICAg
ICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVjdGlvbigpKS50by5iZShudWxsKTsK
LSAgICAgICAgICAgICAgICBsZXQgaW5kaWNhdG9yID0gY2hhcnQuY3VycmVudEluZGljYXRvcigp
OwotICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IudmlldykudG8uYmUoY3VycmVudFZp
ZXcpOwotICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IucG9pbnQpLnRvLmJlKGZpcnN0
UG9pbnQpOwotICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IuaXNMb2NrZWQpLnRvLmJl
KGZhbHNlKTsKLSAgICAgICAgICAgICAgICBleHBlY3Qoc2VsZWN0aW9uQ2hhbmdlQ2FsbHMpLnRv
LmJlLmVxbChbXSk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvckNoYW5nZUNhbGxz
KS50by5iZS5lcWwoW1tmaXJzdFBvaW50LmlkLCBmYWxzZV1dKTsKLSAgICAgICAgICAgICAgICBl
eHBlY3Qoem9vbUJ1dHRvbi5vZmZzZXRIZWlnaHQpLnRvLmJlKDApOwotCi0gICAgICAgICAgICAg
ICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlbW92ZScsIHt0YXJn
ZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5sZWZ0ICsgMTUsIGNsaWVudFk6IHkgKyA1LCBjb21w
b3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKLQotICAgICAgICAgICAgICAgIENhbnZhc1Rl
c3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7Ci0gICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52
YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZSh0cnVlKTsKLQotICAgICAgICAgICAgICAgIGV4
cGVjdChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpLnRvLm5vdC5iZShudWxsKTsKLSAgICAgICAg
ICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudEluZGljYXRvcigpKS50by5iZShudWxsKTsKLSAg
ICAgICAgICAgICAgICBleHBlY3Qoc2VsZWN0aW9uQ2hhbmdlQ2FsbHMubGVuZ3RoKS50by5iZSgx
KTsKLSAgICAgICAgICAgICAgICBvbGRSYW5nZSA9IHNlbGVjdGlvbkNoYW5nZUNhbGxzWzBdWzBd
OwotICAgICAgICAgICAgICAgIGV4cGVjdChvbGRSYW5nZSkudG8uYmUuZXFsKGNoYXJ0LmN1cnJl
bnRTZWxlY3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KHNlbGVjdGlvbkNoYW5nZUNh
bGxzWzBdWzFdKS50by5iZShmYWxzZSk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRv
ckNoYW5nZUNhbGxzKS50by5iZS5lcWwoW1tmaXJzdFBvaW50LmlkLCBmYWxzZV0sIFtudWxsLCBm
YWxzZV1dKTsKLSAgICAgICAgICAgICAgICBleHBlY3Qoem9vbUJ1dHRvbi5vZmZzZXRIZWlnaHQp
LnRvLmJlKDApOwotCi0gICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1v
dXNlRXZlbnQoJ21vdXNlbW92ZScsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5yaWdo
dCAtIDUsIGNsaWVudFk6IHkgKyA1LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsK
LQotICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNr
KGNhbnZhcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5k
ZXIoY29udGV4dCk7Ci0gICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAg
ICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZSh0
cnVlKTsKLQotICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkp
LnRvLm5vdC5iZShudWxsKTsKLSAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudElu
ZGljYXRvcigpKS50by5iZShudWxsKTsKLSAgICAgICAgICAgICAgICBleHBlY3Qoc2VsZWN0aW9u
Q2hhbmdlQ2FsbHMubGVuZ3RoKS50by5iZSgyKTsKLSAgICAgICAgICAgICAgICBuZXdSYW5nZSA9
IHNlbGVjdGlvbkNoYW5nZUNhbGxzWzFdWzBdOwotICAgICAgICAgICAgICAgIGV4cGVjdChuZXdS
YW5nZSkudG8uYmUuZXFsKGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSk7Ci0gICAgICAgICAgICAg
ICAgZXhwZWN0KG5ld1JhbmdlWzBdKS50by5iZShvbGRSYW5nZVswXSk7Ci0gICAgICAgICAgICAg
ICAgZXhwZWN0KG5ld1JhbmdlWzFdKS50by5iZS5ncmVhdGVyVGhhbihvbGRSYW5nZVsxXSk7Ci0g
ICAgICAgICAgICAgICAgZXhwZWN0KHNlbGVjdGlvbkNoYW5nZUNhbGxzWzFdWzFdKS50by5iZShm
YWxzZSk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KHpvb21CdXR0b24ub2Zmc2V0SGVpZ2h0KS50
by5iZSgwKTsKLQotICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3Vz
ZUV2ZW50KCdtb3VzZXVwJywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LnJpZ2h0IC0g
NSwgY2xpZW50WTogeSArIDUsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOwotICAg
ICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdjbGljaycs
IHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5yaWdodCAtIDUsIGNsaWVudFk6IHkgKyA1
LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKLQotICAgICAgICAgICAgICAgIENh
bnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7Ci0gICAgICAg
ICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5o
YXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50by5iZSh0cnVlKTsKLQotICAgICAgICAgICAg
ICAgIGV4cGVjdChjaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpLnRvLmJlLmVxbChuZXdSYW5nZSk7
Ci0gICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRJbmRpY2F0b3IoKSkudG8uYmUo
bnVsbCk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KHNlbGVjdGlvbkNoYW5nZUNhbGxzLmxlbmd0
aCkudG8uYmUoMyk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KHNlbGVjdGlvbkNoYW5nZUNhbGxz
WzJdWzBdKS50by5iZS5lcWwobmV3UmFuZ2UpOwotICAgICAgICAgICAgICAgIGV4cGVjdChzZWxl
Y3Rpb25DaGFuZ2VDYWxsc1syXVsxXSkudG8uYmUodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgZXhw
ZWN0KHpvb21CdXR0b24ub2Zmc2V0SGVpZ2h0KS50by5iZSgwKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgZGlzcGF0Y2ggdGhlICJ6b29t
IiBhY3Rpb24gd2hlbiB0aGUgem9vbSBidXR0b24gaXMgY2xpY2tlZCcsICgpID0+IHsKLSAgICAg
ICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKLSAgICAgICAgcmV0dXJu
IGNvbnRleHQuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScsICdUaW1lU2Vy
aWVzQ2hhcnQnLCAnSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQnLCAnTWVhc3VyZW1lbnRTZXQn
LCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgY29uc3QgY2hhcnQg
PSBjcmVhdGVJbnRlcmFjdGl2ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwgbnVsbCwg
e3NlbGVjdGlvbjoge2xpbmVTdHlsZTogJyNmOTMnLCBsaW5lV2lkdGg6IDIsIGZpbGxTdHlsZTog
JyNjY2MnfSwgem9vbUJ1dHRvbjogdHJ1ZX0pOwotCi0gICAgICAgICAgICBjaGFydC5zZXREb21h
aW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7Ci0gICAg
ICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOwotICAgICAgICAgICAgcmVzcG9u
ZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzBdKTsKLQotICAgICAgICAgICAgY29uc3Qgem9vbUNhbGxzID0gW107Ci0gICAgICAgICAgICBj
aGFydC5saXN0ZW5Ub0FjdGlvbignem9vbScsICguLi5hcmdzKSA9PiB6b29tQ2FsbHMucHVzaChh
cmdzKSk7Ci0gICAgICAgICAgICBjb25zdCB6b29tQnV0dG9uID0gY2hhcnQuY29udGVudCgnem9v
bS1idXR0b24nKTsKLQotICAgICAgICAgICAgbGV0IHNlbGVjdGlvbjsKLSAgICAgICAgICAgIGxl
dCBjYW52YXM7Ci0gICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihj
b250ZXh0KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBleHBlY3Qoem9vbUJ1dHRvbi5v
ZmZzZXRIZWlnaHQpLnRvLmJlKDApOwotICAgICAgICAgICAgICAgIGNhbnZhcyA9IGNoYXJ0LmNv
bnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKTsKLSAgICAgICAgICAgICAgICBjb25zdCBy
ZWN0ID0gY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICAgICAgICAgIGNv
bnN0IHkgPSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMjsKLSAgICAgICAgICAgICAgICBjYW52
YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91c2Vtb3ZlJywge3RhcmdldDogY2Fu
dmFzLCBjbGllbnRYOiByZWN0LmxlZnQgKyA1LCBjbGllbnRZOiB5LCBjb21wb3NlZDogdHJ1ZSwg
YnViYmxlczogdHJ1ZX0pKTsKLSAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChu
ZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0
LmxlZnQgKyA1LCBjbGllbnRZOiB5LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsK
LSAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91
c2Vtb3ZlJywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LnJpZ2h0IC0gMTAsIGNsaWVu
dFk6IHkgKyA1LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKLSAgICAgICAgICAg
ICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91c2V1cCcsIHt0YXJn
ZXQ6IGNhbnZhcywgY2xpZW50WDogcmVjdC5yaWdodCAtIDEwLCBjbGllbnRZOiB5ICsgNSwgY29t
cG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7Ci0KLSAgICAgICAgICAgICAgICBDYW52YXNU
ZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOwotICAgICAgICAgICAgICAg
IHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOwotICAgICAgICAgICAg
fSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2Fu
dmFzQmVlblJlZHJhd24oY2FudmFzKSkudG8uYmUodHJ1ZSk7Ci0KLSAgICAgICAgICAgICAgICBz
ZWxlY3Rpb24gPSBjaGFydC5jdXJyZW50U2VsZWN0aW9uKCk7Ci0gICAgICAgICAgICAgICAgZXhw
ZWN0KHNlbGVjdGlvbikudG8ubm90LmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGV4cGVjdChj
aGFydC5jdXJyZW50SW5kaWNhdG9yKCkpLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGV4
cGVjdCh6b29tQnV0dG9uLm9mZnNldEhlaWdodCkudG8ubm90LmJlKDApOwotICAgICAgICAgICAg
ICAgIGV4cGVjdCh6b29tQ2FsbHMpLnRvLmJlLmVxbChbXSk7Ci0gICAgICAgICAgICAgICAgem9v
bUJ1dHRvbi5jbGljaygpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgZXhwZWN0KHpvb21DYWxscykudG8uYmUuZXFsKFtbc2VsZWN0aW9uXV0pOwotCi0gICAg
ICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFz
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250
ZXh0KTsKLSAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGV4cGVj
dChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKGZhbHNlKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQg
Y2xlYXIgdGhlIHNlbGVjdGlvbiB3aGVuIGNsaWNrZWQnLCAoKSA9PiB7Ci0gICAgICAgIGNvbnN0
IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0
LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2UnLCAnVGltZVNlcmllc0NoYXJ0
JywgJ0ludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0JywgJ01lYXN1cmVtZW50U2V0JywgJ01vY2tS
ZW1vdGVBUEknKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gY3JlYXRl
SW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIG51bGwsIHtzZWxlY3Rp
b246IHtsaW5lU3R5bGU6ICcjZjkzJywgbGluZVdpZHRoOiAyLCBmaWxsU3R5bGU6ICcjY2NjJ319
KTsKLQotICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKHNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1l
LCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUpOwotICAgICAgICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJl
bWVudFNldHMoKTsKLSAgICAgICAgICAgIHJlc3BvbmRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0
LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSk7Ci0KLSAgICAgICAgICAgIGxldCBj
YW52YXM7Ci0gICAgICAgICAgICBsZXQgcmVjdDsKLSAgICAgICAgICAgIGxldCB5OwotICAgICAg
ICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigoKSA9
PiB7Ci0gICAgICAgICAgICAgICAgY2FudmFzID0gY2hhcnQuY29udGVudCgpLnF1ZXJ5U2VsZWN0
b3IoJ2NhbnZhcycpOwotICAgICAgICAgICAgICAgIHJlY3QgPSBjYW52YXMuZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCk7Ci0gICAgICAgICAgICAgICAgeSA9IHJlY3QudG9wICsgcmVjdC5oZWlnaHQg
LyAyOwotICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50
KCdtb3VzZW1vdmUnLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHJlY3QubGVmdCArIDUsIGNs
aWVudFk6IHksIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOwotICAgICAgICAgICAg
ICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nLCB7dGFy
Z2V0OiBjYW52YXMsIGNsaWVudFg6IHJlY3QubGVmdCArIDUsIGNsaWVudFk6IHksIGNvbXBvc2Vk
OiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOwotICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRj
aEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZW1vdmUnLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVu
dFg6IHJlY3QucmlnaHQgLSAxMCwgY2xpZW50WTogeSArIDUsIGNvbXBvc2VkOiB0cnVlLCBidWJi
bGVzOiB0cnVlfSkpOwotICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBN
b3VzZUV2ZW50KCdtb3VzZXVwJywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LnJpZ2h0
IC0gMTAsIGNsaWVudFk6IHkgKyA1LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsK
LSAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnY2xp
Y2snLCB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHJlY3QucmlnaHQgLSAxMCwgY2xpZW50WTog
eSArIDUsIGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOwotCi0gICAgICAgICAgICAg
ICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNU
ZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRydWUpOwotCi0gICAgICAg
ICAgICAgICAgZXhwZWN0KGNoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSkudG8ubm90LmJlKG51bGwp
OwotICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jdXJyZW50SW5kaWNhdG9yKCkpLnRvLmJl
KG51bGwpOwotCi0gICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNl
RXZlbnQoJ2NsaWNrJywge3RhcmdldDogY2FudmFzLCBjbGllbnRYOiByZWN0LmxlZnQgKyAxLCBj
bGllbnRZOiB5ICsgNSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7Ci0KLSAgICAg
ICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMp
OwotICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRl
eHQpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgZXhwZWN0
KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJlZHJhd24oY2FudmFzKSkudG8uYmUodHJ1ZSk7Ci0K
LSAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuY3VycmVudFNlbGVjdGlvbigpKS50by5iZShu
dWxsKTsKLSAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmlldyA9IGNoYXJ0LnNhbXBsZWRU
aW1lU2VyaWVzRGF0YSgnY3VycmVudCcpOwotICAgICAgICAgICAgICAgIGNvbnN0IGluZGljYXRv
ciA9IGNoYXJ0LmN1cnJlbnRJbmRpY2F0b3IoKTsKLSAgICAgICAgICAgICAgICBleHBlY3QoaW5k
aWNhdG9yLnZpZXcpLnRvLmJlKGN1cnJlbnRWaWV3KTsKLSAgICAgICAgICAgICAgICBleHBlY3Qo
aW5kaWNhdG9yLnBvaW50KS50by5iZShjdXJyZW50Vmlldy5maXJzdFBvaW50KCkpOwotICAgICAg
ICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IuaXNMb2NrZWQpLnRvLmJlKGZhbHNlKTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgZGlzcGF0
Y2ggImFubm90YXRpb25DbGljayIgYWN0aW9uIHdoZW4gYW4gYW5ub3RhdGlvbiBpcyBjbGlja2Vk
JywgKCkgPT4gewotICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgp
OwotICAgICAgICByZXR1cm4gY29udGV4dC5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdDb21wb25l
bnRCYXNlJywgJ1RpbWVTZXJpZXNDaGFydCcsICdJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCcs
ICdNZWFzdXJlbWVudFNldCcsICdNb2NrUmVtb3RlQVBJJykudGhlbigoKSA9PiB7Ci0gICAgICAg
ICAgICBjb25zdCBjaGFydCA9IGNyZWF0ZUludGVyYWN0aXZlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rl
cihjb250ZXh0LCBudWxsLAotICAgICAgICAgICAgICAgIHthbm5vdGF0aW9uczogeyB0ZXh0U3R5
bGU6ICcjMDAwJywgdGV4dEJhY2tncm91bmQ6ICcjZmZmJywgbWluV2lkdGg6IDMsIGJhckhlaWdo
dDogMTAsIGJhclNwYWNpbmc6IDF9fSk7Ci0KLSAgICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihz
YW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKLSAgICAgICAg
ICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7Ci0gICAgICAgICAgICByZXNwb25kV2l0
aFNhbXBsZUNsdXN0ZXIoY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0p
OwotCi0gICAgICAgICAgICBjb25zdCBkaWZmID0gc2FtcGxlQ2x1c3Rlci5lbmRUaW1lIC0gc2Ft
cGxlQ2x1c3Rlci5zdGFydFRpbWU7Ci0gICAgICAgICAgICBjb25zdCBhbm5vdGF0aW9ucyA9IFt7
Ci0gICAgICAgICAgICAgICAgc3RhcnRUaW1lOiBzYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSArIGRp
ZmYgLyAyLAotICAgICAgICAgICAgICAgIGVuZFRpbWU6IHNhbXBsZUNsdXN0ZXIuZW5kVGltZSAt
IGRpZmYgLyA0LAotICAgICAgICAgICAgICAgIGxhYmVsOiAnaGVsbG8sIHdvcmxkJywKLSAgICAg
ICAgICAgICAgICBmaWxsU3R5bGU6ICdyZ2IoMCwgMCwgMjU1KScsCi0gICAgICAgICAgICB9XQot
ICAgICAgICAgICAgY2hhcnQuc2V0QW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMpOwotCi0gICAgICAg
ICAgICBjb25zdCBhbm5vdGF0aW9uQ2xpY2tDYWxscyA9IFtdOwotICAgICAgICAgICAgY2hhcnQu
bGlzdGVuVG9BY3Rpb24oJ2Fubm90YXRpb25DbGljaycsICguLi5hcmdzKSA9PiBhbm5vdGF0aW9u
Q2xpY2tDYWxscy5wdXNoKGFyZ3MpKTsKLQotICAgICAgICAgICAgbGV0IGNhbnZhczsKLSAgICAg
ICAgICAgIGxldCBpbml0OwotICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9S
ZW5kZXIoY29udGV4dCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KGFubm90
YXRpb25DbGlja0NhbGxzKS50by5iZS5lcWwoW10pOwotICAgICAgICAgICAgICAgIGV4cGVjdChj
aGFydC5jb250ZW50KCdhbm5vdGF0aW9uLWxhYmVsJykudGV4dENvbnRlbnQpLnRvLm5vdC5jb250
YWluKCdoZWxsbywgd29ybGQnKTsKLQotICAgICAgICAgICAgICAgIGNhbnZhcyA9IGNoYXJ0LmNv
bnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKTsKLSAgICAgICAgICAgICAgICBjb25zdCBy
ZWN0ID0gY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICAgICAgICAgIGlu
aXQgPSB7dGFyZ2V0OiBjYW52YXMsIGNsaWVudFg6IHJlY3QucmlnaHQgLSByZWN0LndpZHRoIC8g
NCwgY2xpZW50WTogcmVjdC5ib3R0b20gLSA1LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1
ZX07Ci0gICAgICAgICAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQo
J21vdXNlbW92ZScsIGluaXQpKTsKLQotICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENh
bnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHdh
aXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7Ci0gICAgICAgICAgICB9KS50aGVuKCgp
ID0+IHsKLSAgICAgICAgICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVk
cmF3bihjYW52YXMpKS50by5iZSh0cnVlKTsKLQotICAgICAgICAgICAgICAgIGV4cGVjdChjaGFy
dC5jb250ZW50KCdhbm5vdGF0aW9uLWxhYmVsJykudGV4dENvbnRlbnQpLnRvLmNvbnRhaW4oJ2hl
bGxvLCB3b3JsZCcpOwotICAgICAgICAgICAgICAgIGV4cGVjdChhbm5vdGF0aW9uQ2xpY2tDYWxs
cykudG8uYmUuZXFsKFtdKTsKLSAgICAgICAgICAgICAgICBjYW52YXMuZGlzcGF0Y2hFdmVudChu
ZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJywgaW5pdCkpOwotICAgICAgICAgICAgICAgIGNhbnZh
cy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZXVwJywgaW5pdCkpOwotICAgICAg
ICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdjbGljaycsIGlu
aXQpKTsKLQotICAgICAgICAgICAgICAgIGV4cGVjdChhbm5vdGF0aW9uQ2xpY2tDYWxscykudG8u
YmUuZXFsKFtbYW5ub3RhdGlvbnNbMF1dXSk7Ci0KLSAgICAgICAgICAgICAgICBDYW52YXNUZXN0
LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOwotICAgICAgICAgICAgICAgIHJl
dHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOwotICAgICAgICAgICAgfSku
dGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFz
QmVlblJlZHJhd24oY2FudmFzKSkudG8uYmUoZmFsc2UpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJ3JlbmRlcicsICgpID0+IHsKLSAgICAg
ICAgaXQoJ3Nob3VsZCByZW5kZXIgdGhlIHVubG9ja2VkIGluZGljYXRvciB3aGVuIG9wdGlvbnMu
aW5kaWNhdG9yIGlzIHNwZWNpZmllZCcsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGNvbnRl
eHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5p
bXBvcnRTY3JpcHRzKHNjcmlwdHMsICdDb21wb25lbnRCYXNlJywgJ0ludGVyYWN0aXZlVGltZVNl
cmllc0NoYXJ0JywgJ01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1vdGVBUEknKS50aGVuKCgpID0+
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFydFdpdGhvdXRJbmRpY2F0b3IgPSBjcmVhdGVJ
bnRlcmFjdGl2ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCk7Ci0gICAgICAgICAgICAg
ICAgY29uc3QgY2hhcnRXaXRoSW5kaWNhdG9yID0gY3JlYXRlSW50ZXJhY3RpdmVDaGFydFdpdGhT
YW1wbGVDbHVzdGVyKGNvbnRleHQsIG51bGwsCi0gICAgICAgICAgICAgICAgICAgIHtpbmRpY2F0
b3I6IHtsaW5lU3R5bGU6ICdyZ2IoNTEsIDIwNCwgMjU1KScsIGxpbmVXaWR0aDogMiwgcG9pbnRS
YWRpdXM6IDJ9LCBpbnRlcmFjdGl2ZUNoYXJ0OiB0cnVlfSk7Ci0gICAgICAgICAgICAgICAgY29u
c3QgaW5kaWNhdG9yQ29sb3IgPSB7cjogNTEsIGc6IDIwNCwgYjogMjU1fTsKLQotICAgICAgICAg
ICAgICAgIGNoYXJ0V2l0aG91dEluZGljYXRvci5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFy
dFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7Ci0gICAgICAgICAgICAgICAgY2hhcnRXaXRo
b3V0SW5kaWNhdG9yLmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7Ci0gICAgICAgICAgICAgICAgcmVz
cG9uZFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzBdKTsKLQotICAgICAgICAgICAgICAgIGNoYXJ0V2l0aEluZGljYXRvci5zZXREb21haW4o
c2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7Ci0gICAgICAg
ICAgICAgICAgY2hhcnRXaXRoSW5kaWNhdG9yLmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7Ci0KLSAg
ICAgICAgICAgICAgICBsZXQgY2FudmFzV2l0aG91dEluZGljYXRvcjsKLSAgICAgICAgICAgICAg
ICBsZXQgY2FudmFzV2l0aEluZGljYXRvcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZv
ckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAg
ICAgICAgY2FudmFzV2l0aG91dEluZGljYXRvciA9IGNoYXJ0V2l0aG91dEluZGljYXRvci5jb250
ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFzJyk7Ci0gICAgICAgICAgICAgICAgICAgIGNhbnZh
c1dpdGhJbmRpY2F0b3IgPSBjaGFydFdpdGhJbmRpY2F0b3IuY29udGVudCgpLnF1ZXJ5U2VsZWN0
b3IoJ2NhbnZhcycpOwotCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBjYW52YXNX
aXRoSW5kaWNhdG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICAgICAgICAgICAg
ICBjb25zdCB4ID0gcmVjdC5yaWdodCAtIDE7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHkg
PSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMjsKLSAgICAgICAgICAgICAgICAgICAgY2FudmFz
V2l0aEluZGljYXRvci5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZW1vdmUnLCB7
dGFyZ2V0OiBjYW52YXNXaXRoSW5kaWNhdG9yLCBjbGllbnRYOiB4LCBjbGllbnRZOiB5LCBjb21w
b3NlZDogdHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKLQotICAgICAgICAgICAgICAgICAgICBDYW52
YXNUZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdDaGVjayhjYW52YXNXaXRoSW5kaWNhdG9yKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29u
dGV4dCk7Ci0gICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
ICAgIGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhc1dpdGhJbmRp
Y2F0b3IpKS50by5iZSh0cnVlKTsKLQotICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRpY2F0
b3IgPSBjaGFydFdpdGhJbmRpY2F0b3IuY3VycmVudEluZGljYXRvcigpOwotICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjdXJyZW50VmlldyA9IGNoYXJ0V2l0aEluZGljYXRvci5zYW1wbGVkVGlt
ZVNlcmllc0RhdGEoJ2N1cnJlbnQnKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGluZGlj
YXRvci52aWV3KS50by5iZShjdXJyZW50Vmlldyk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVj
dChpbmRpY2F0b3IucG9pbnQpLnRvLmJlKGN1cnJlbnRWaWV3Lmxhc3RQb2ludCgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci5pc0xvY2tlZCkudG8uYmUoZmFsc2UpOwot
Ci0gICAgICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZXhwZWN0Q2FudmFzZXNNaXNtYXRjaChj
YW52YXNXaXRob3V0SW5kaWNhdG9yLCBjYW52YXNXaXRoSW5kaWNhdG9yKTsKLSAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuY2FudmFzQ29udGFpbnNDb2xvcihjYW52YXNXaXRo
b3V0SW5kaWNhdG9yLCBpbmRpY2F0b3JDb2xvcikpLnRvLmJlKGZhbHNlKTsKLSAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuY2FudmFzQ29udGFpbnNDb2xvcihjYW52YXNXaXRo
SW5kaWNhdG9yLCBpbmRpY2F0b3JDb2xvcikpLnRvLmJlKHRydWUpOwotICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCdzaG91bGQg
cmVuZGVyIHRoZSBsb2NrZWQgaW5kaWNhdG9yIGRpZmZlcmVudGx5IGZyb20gdGhlIHVubG9ja2Vk
IGluZGljYXRvciB3aGVuIG9wdGlvbnMubG9ja2VkSW5kaWNhdG9yIGlzIHNwZWNpZmllZCcsICgp
ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7
Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdDb21w
b25lbnRCYXNlJywgJ0ludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0JywgJ01lYXN1cmVtZW50U2V0
JywgJ01vY2tSZW1vdGVBUEknKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBjb25zdCBj
aGFydE9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZGljYXRvcjoge2xpbmVTdHls
ZTogJ3JnYig1MSwgMjA0LCAyNTUpJywgbGluZVdpZHRoOiAyLCBwb2ludFJhZGl1czogM30sCi0g
ICAgICAgICAgICAgICAgICAgIGxvY2tlZEluZGljYXRvcjoge2xpbmVTdHlsZTogJ3JnYig1MSwg
MTAyLCAyMDQpJywgZmlsbFN0eWxlOiAncmdiKDI1MCwgMjUwLCAyNTApJywgbGluZVdpZHRoOiAy
LCBwb2ludFJhZGl1czogM30KLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGNv
bnN0IHVubG9ja2VkQ29sb3IgPSB7cjogNTEsIGc6IDIwNCwgYjogMjU1fTsKLSAgICAgICAgICAg
ICAgICBjb25zdCBsb2NrZWRDb2xvciA9IHtyOiA1MSwgZzogMTAyLCBiOiAyMDR9OwotICAgICAg
ICAgICAgICAgIGNvbnN0IGxvY2tlZEZpbGxDb2xvciA9IHtyOiAyNTAsIGc6IDI1MCwgYjogMjUw
fTsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFydFdpdGhVbmxvY2tlZEluZGljYXRvciA9IGNy
ZWF0ZUludGVyYWN0aXZlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBudWxsLCBjaGFy
dE9wdGlvbnMpOwotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0V2l0aExvY2tlZEluZGljYXRv
ciA9IGNyZWF0ZUludGVyYWN0aXZlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBudWxs
LCBjaGFydE9wdGlvbnMpOwotCi0gICAgICAgICAgICAgICAgY2hhcnRXaXRoVW5sb2NrZWRJbmRp
Y2F0b3Iuc2V0RG9tYWluKHNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVu
ZFRpbWUpOwotICAgICAgICAgICAgICAgIGNoYXJ0V2l0aFVubG9ja2VkSW5kaWNhdG9yLmZldGNo
TWVhc3VyZW1lbnRTZXRzKCk7Ci0gICAgICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVz
dGVyKGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdKTsKLQotICAgICAg
ICAgICAgICAgIGNoYXJ0V2l0aExvY2tlZEluZGljYXRvci5zZXREb21haW4oc2FtcGxlQ2x1c3Rl
ci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7Ci0gICAgICAgICAgICAgICAgY2hh
cnRXaXRoTG9ja2VkSW5kaWNhdG9yLmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7Ci0KLSAgICAgICAg
ICAgICAgICBsZXQgY2FudmFzV2l0aFVubG9ja2VkSW5kaWNhdG9yOwotICAgICAgICAgICAgICAg
IGxldCBjYW52YXNXaXRoTG9ja2VkSW5kaWNhdG9yOwotICAgICAgICAgICAgICAgIHJldHVybiB3
YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4gewotICAgICAgICAg
ICAgICAgICAgICBjYW52YXNXaXRoVW5sb2NrZWRJbmRpY2F0b3IgPSBjaGFydFdpdGhVbmxvY2tl
ZEluZGljYXRvci5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFzJyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhbnZhc1dpdGhMb2NrZWRJbmRpY2F0b3IgPSBjaGFydFdpdGhMb2NrZWRJbmRp
Y2F0b3IuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOwotCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJlY3QgPSBjYW52YXNXaXRoVW5sb2NrZWRJbmRpY2F0b3IuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHggPSByZWN0LnJpZ2h0
IC0gMTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgeSA9IHJlY3QudG9wICsgcmVjdC5oZWln
aHQgLyAyOwotICAgICAgICAgICAgICAgICAgICBjYW52YXNXaXRoVW5sb2NrZWRJbmRpY2F0b3Iu
ZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91c2Vtb3ZlJywge3RhcmdldDogY2FudmFz
V2l0aFVubG9ja2VkSW5kaWNhdG9yLCBjbGllbnRYOiB4LCBjbGllbnRZOiB5LCBjb21wb3NlZDog
dHJ1ZSwgYnViYmxlczogdHJ1ZX0pKTsKLSAgICAgICAgICAgICAgICAgICAgY2FudmFzV2l0aExv
Y2tlZEluZGljYXRvci5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdjbGljaycsIHt0YXJn
ZXQ6IGNhbnZhc1dpdGhMb2NrZWRJbmRpY2F0b3IsIGNsaWVudFg6IHgsIGNsaWVudFk6IHksIGNv
bXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlfSkpOwotCi0gICAgICAgICAgICAgICAgICAgIENh
bnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNhbnZhc1dpdGhVbmxvY2tlZElu
ZGljYXRvcik7Ci0gICAgICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9y
ZVJlZHJhd0NoZWNrKGNhbnZhc1dpdGhMb2NrZWRJbmRpY2F0b3IpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKLSAgICAgICAg
ICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZh
c1Rlc3QuaGFzQ2FudmFzQmVlblJlZHJhd24oY2FudmFzV2l0aFVubG9ja2VkSW5kaWNhdG9yKSku
dG8uYmUodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNUZXN0Lmhhc0Nh
bnZhc0JlZW5SZWRyYXduKGNhbnZhc1dpdGhMb2NrZWRJbmRpY2F0b3IpKS50by5iZSh0cnVlKTsK
LQotICAgICAgICAgICAgICAgICAgICBsZXQgaW5kaWNhdG9yID0gY2hhcnRXaXRoVW5sb2NrZWRJ
bmRpY2F0b3IuY3VycmVudEluZGljYXRvcigpOwotICAgICAgICAgICAgICAgICAgICBsZXQgY3Vy
cmVudFZpZXcgPSBjaGFydFdpdGhVbmxvY2tlZEluZGljYXRvci5zYW1wbGVkVGltZVNlcmllc0Rh
dGEoJ2N1cnJlbnQnKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci52aWV3
KS50by5iZShjdXJyZW50Vmlldyk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0
b3IucG9pbnQpLnRvLmJlKGN1cnJlbnRWaWV3Lmxhc3RQb2ludCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0KGluZGljYXRvci5pc0xvY2tlZCkudG8uYmUoZmFsc2UpOwotCi0gICAgICAg
ICAgICAgICAgICAgIGluZGljYXRvciA9IGNoYXJ0V2l0aExvY2tlZEluZGljYXRvci5jdXJyZW50
SW5kaWNhdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3ID0gY2hhcnRXaXRo
TG9ja2VkSW5kaWNhdG9yLnNhbXBsZWRUaW1lU2VyaWVzRGF0YSgnY3VycmVudCcpOwotICAgICAg
ICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLnZpZXcpLnRvLmJlKGN1cnJlbnRWaWV3KTsK
LSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvci5wb2ludCkudG8uYmUoY3VycmVu
dFZpZXcubGFzdFBvaW50KCkpOwotICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9y
LmlzTG9ja2VkKS50by5iZSh0cnVlKTsKLQotICAgICAgICAgICAgICAgICAgICBDYW52YXNUZXN0
LmV4cGVjdENhbnZhc2VzTWlzbWF0Y2goY2FudmFzV2l0aFVubG9ja2VkSW5kaWNhdG9yLCBjYW52
YXNXaXRoTG9ja2VkSW5kaWNhdG9yKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZh
c1Rlc3QuY2FudmFzQ29udGFpbnNDb2xvcihjYW52YXNXaXRoVW5sb2NrZWRJbmRpY2F0b3IsIHVu
bG9ja2VkQ29sb3IpKS50by5iZSh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KENh
bnZhc1Rlc3QuY2FudmFzQ29udGFpbnNDb2xvcihjYW52YXNXaXRoVW5sb2NrZWRJbmRpY2F0b3Is
IGxvY2tlZEZpbGxDb2xvcikpLnRvLmJlKGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0KENhbnZhc1Rlc3QuY2FudmFzQ29udGFpbnNDb2xvcihjYW52YXNXaXRoTG9ja2VkSW5kaWNh
dG9yLCBsb2NrZWRDb2xvcikpLnRvLmJlKHRydWUpOwotICAgICAgICAgICAgICAgICAgICBleHBl
Y3QoQ2FudmFzVGVzdC5jYW52YXNDb250YWluc0NvbG9yKGNhbnZhc1dpdGhMb2NrZWRJbmRpY2F0
b3IsIGxvY2tlZEZpbGxDb2xvcikpLnRvLmJlKHRydWUpOwotICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJ21v
dmVMb2NrZWRJbmRpY2F0b3JXaXRoTm90aWZpY2F0aW9uJywgKCkgPT4gewotICAgICAgICBpdCgn
c2hvdWxkIG1vdmUgdGhlIGxvY2tlZCBpbmRpY2F0b3IgdG8gdGhlIHJpZ2h0IHdoZW4gZm9yd2Fy
ZCBib29sZWFuIGlzIHRydWUnLCAoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0g
bmV3IEJyb3dzaW5nQ29udGV4dCgpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuaW1wb3J0
U2NyaXB0cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScsICdJbnRlcmFjdGl2ZVRpbWVTZXJpZXND
aGFydCcsICdNZWFzdXJlbWVudFNldCcsICdNb2NrUmVtb3RlQVBJJykudGhlbigoKSA9PiB7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgY2hhcnQgPSBjcmVhdGVJbnRlcmFjdGl2ZUNoYXJ0V2l0aFNh
bXBsZUNsdXN0ZXIoY29udGV4dCk7Ci0KLSAgICAgICAgICAgICAgICBjaGFydC5zZXREb21haW4o
c2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7Ci0gICAgICAg
ICAgICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKLSAgICAgICAgICAgICAgICBs
ZXQgaW5kaWNhdG9yQ2hhbmdlQ291bnQgPSAwOwotICAgICAgICAgICAgICAgIGNoYXJ0Lmxpc3Rl
blRvQWN0aW9uKCdpbmRpY2F0b3JDaGFuZ2UnLCAoKSA9PiBpbmRpY2F0b3JDaGFuZ2VDb3VudCsr
KTsKLSAgICAgICAgICAgICAgICByZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dC5zeW1i
b2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0pOwotCi0gICAgICAgICAgICAgICAgbGV0IGNh
bnZhczsKLSAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihj
b250ZXh0KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRv
ckNoYW5nZUNvdW50KS50by5iZSgwKTsKLQotICAgICAgICAgICAgICAgICAgICBjYW52YXMgPSBj
aGFydC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFzJyk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAg
ICAgICAgICAgICAgICAgY29uc3QgeCA9IHJlY3QubGVmdCArIDE7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHkgPSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMjsKLSAgICAgICAgICAgICAg
ICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ2NsaWNrJywge3Rhcmdl
dDogY2FudmFzLCBjbGllbnRYOiB4LCBjbGllbnRZOiB5LCBjb21wb3NlZDogdHJ1ZSwgYnViYmxl
czogdHJ1ZX0pKTsKLQotICAgICAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNC
ZWZvcmVSZWRyYXdDaGVjayhjYW52YXMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2Fp
dEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKLSAgICAgICAgICAgICAgICB9KS50aGVu
KCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFz
QmVlblJlZHJhd24oY2FudmFzKSkudG8uYmUodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGV4
cGVjdChpbmRpY2F0b3JDaGFuZ2VDb3VudCkudG8uYmUoMSk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgbGV0IGluZGljYXRvciA9IGNoYXJ0LmN1cnJlbnRJbmRpY2F0b3IoKTsKLSAgICAgICAgICAg
ICAgICAgICAgbGV0IGN1cnJlbnRWaWV3ID0gY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdj
dXJyZW50Jyk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IudmlldykudG8u
YmUoY3VycmVudFZpZXcpOwotICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLnBv
aW50KS50by5iZShjdXJyZW50Vmlldy5maXJzdFBvaW50KCkpOwotICAgICAgICAgICAgICAgICAg
ICBleHBlY3QoaW5kaWNhdG9yLmlzTG9ja2VkKS50by5iZSh0cnVlKTsKLQotICAgICAgICAgICAg
ICAgICAgICBjaGFydC5tb3ZlTG9ja2VkSW5kaWNhdG9yV2l0aE5vdGlmaWNhdGlvbih0cnVlKTsK
LQotICAgICAgICAgICAgICAgICAgICBDYW52YXNUZXN0LmZpbGxDYW52YXNCZWZvcmVSZWRyYXdD
aGVjayhjYW52YXMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVu
dHNUb1JlbmRlcihjb250ZXh0KTsKLSAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0KENhbnZhc1Rlc3QuaGFzQ2FudmFzQmVlblJlZHJhd24o
Y2FudmFzKSkudG8uYmUodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0
b3JDaGFuZ2VDb3VudCkudG8uYmUoMik7Ci0KLSAgICAgICAgICAgICAgICAgICAgbGV0IGluZGlj
YXRvciA9IGNoYXJ0LmN1cnJlbnRJbmRpY2F0b3IoKTsKLSAgICAgICAgICAgICAgICAgICAgbGV0
IGN1cnJlbnRWaWV3ID0gY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50Jyk7Ci0g
ICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IudmlldykudG8uYmUoY3VycmVudFZp
ZXcpOwotICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLnBvaW50KS50by5ub3Qu
YmUoY3VycmVudFZpZXcuZmlyc3RQb2ludCgpKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0
KGluZGljYXRvci5wb2ludCkudG8uYmUoY3VycmVudFZpZXcubmV4dFBvaW50KGN1cnJlbnRWaWV3
LmZpcnN0UG9pbnQoKSkpOwotICAgICAgICAgICAgICAgICAgICBleHBlY3QoY3VycmVudFZpZXcu
cHJldmlvdXNQb2ludChpbmRpY2F0b3IucG9pbnQpKS50by5iZShjdXJyZW50Vmlldy5maXJzdFBv
aW50KCkpOwotICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLmlzTG9ja2VkKS50
by5iZSh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvckNoYW5nZUNv
dW50KS50by5iZSgyKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICB9KTsKLQotICAgICAgICBpdCgnc2hvdWxkIG1vdmUgdGhlIGxvY2tlZCBpbmRpY2F0b3Ig
dG8gdGhlIGxlZnQgd2hlbiBmb3J3YXJkIGJvb2xlYW4gaXMgZmFsc2UnLCAoKSA9PiB7Ci0gICAg
ICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOwotICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScs
ICdJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCcsICdNZWFzdXJlbWVudFNldCcsICdNb2NrUmVt
b3RlQVBJJykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhcnQgPSBjcmVh
dGVJbnRlcmFjdGl2ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCk7Ci0KLSAgICAgICAg
ICAgICAgICBjaGFydC5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIHNhbXBsZUNs
dXN0ZXIuZW5kVGltZSk7Ci0gICAgICAgICAgICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJlbWVudFNl
dHMoKTsKLSAgICAgICAgICAgICAgICBsZXQgaW5kaWNhdG9yQ2hhbmdlQ291bnQgPSAwOwotICAg
ICAgICAgICAgICAgIGNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdpbmRpY2F0b3JDaGFuZ2UnLCAoKSA9
PiBpbmRpY2F0b3JDaGFuZ2VDb3VudCsrKTsKLSAgICAgICAgICAgICAgICByZXNwb25kV2l0aFNh
bXBsZUNsdXN0ZXIoY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0pOwot
Ci0gICAgICAgICAgICAgICAgbGV0IGNhbnZhczsKLSAgICAgICAgICAgICAgICByZXR1cm4gd2Fp
dEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0KGluZGljYXRvckNoYW5nZUNvdW50KS50by5iZSgwKTsKLQotICAgICAg
ICAgICAgICAgICAgICBjYW52YXMgPSBjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2Fu
dmFzJyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgeCA9IHJlY3Qucmln
aHQgLSAxOwotICAgICAgICAgICAgICAgICAgICBjb25zdCB5ID0gcmVjdC50b3AgKyByZWN0Lmhl
aWdodCAvIDI7Ci0gICAgICAgICAgICAgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2ZW50KG5ldyBN
b3VzZUV2ZW50KCdjbGljaycsIHt0YXJnZXQ6IGNhbnZhcywgY2xpZW50WDogeCwgY2xpZW50WTog
eSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7
Ci0gICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGV4
cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRydWUp
OwotICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ291bnQpLnRvLmJl
KDEpOwotCi0gICAgICAgICAgICAgICAgICAgIGxldCBpbmRpY2F0b3IgPSBjaGFydC5jdXJyZW50
SW5kaWNhdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmlldyA9IGNoYXJ0
LnNhbXBsZWRUaW1lU2VyaWVzRGF0YSgnY3VycmVudCcpOwotICAgICAgICAgICAgICAgICAgICBl
eHBlY3QoaW5kaWNhdG9yLnZpZXcpLnRvLmJlKGN1cnJlbnRWaWV3KTsKLSAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0KGluZGljYXRvci5wb2ludCkudG8uYmUoY3VycmVudFZpZXcubGFzdFBvaW50
KCkpOwotICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLmlzTG9ja2VkKS50by5i
ZSh0cnVlKTsKLQotICAgICAgICAgICAgICAgICAgICBjaGFydC5tb3ZlTG9ja2VkSW5kaWNhdG9y
V2l0aE5vdGlmaWNhdGlvbihmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgQ2FudmFzVGVz
dC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7Ci0gICAgICAgICAg
ICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNU
ZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKHRydWUpOwotICAgICAgICAg
ICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ291bnQpLnRvLmJlKDIpOwotCi0gICAg
ICAgICAgICAgICAgICAgIGxldCBpbmRpY2F0b3IgPSBjaGFydC5jdXJyZW50SW5kaWNhdG9yKCk7
Ci0gICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmlldyA9IGNoYXJ0LnNhbXBsZWRUaW1l
U2VyaWVzRGF0YSgnY3VycmVudCcpOwotICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNh
dG9yLnZpZXcpLnRvLmJlKGN1cnJlbnRWaWV3KTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0
KGluZGljYXRvci5wb2ludCkudG8ubm90LmJlKGN1cnJlbnRWaWV3LmZpcnN0UG9pbnQoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IucG9pbnQpLnRvLmJlKGN1cnJlbnRW
aWV3LnByZXZpb3VzUG9pbnQoY3VycmVudFZpZXcubGFzdFBvaW50KCkpKTsKLSAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0KGN1cnJlbnRWaWV3Lm5leHRQb2ludChpbmRpY2F0b3IucG9pbnQpKS50
by5iZShjdXJyZW50Vmlldy5sYXN0UG9pbnQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVj
dChpbmRpY2F0b3IuaXNMb2NrZWQpLnRvLmJlKHRydWUpOwotICAgICAgICAgICAgICAgICAgICBl
eHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ291bnQpLnRvLmJlKDIpOwotICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCdzaG91bGQgbm90
IG1vdmUgdGhlIGxvY2tlZCBpbmRpY2F0b3Igd2hlbiB0aGVyZSBhcmUgbm8gcG9pbnRzIHdpdGhp
biB0aGUgZG9tYWluJywgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBC
cm93c2luZ0NvbnRleHQoKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmltcG9ydFNjcmlw
dHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2UnLCAnSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQn
LCAnTWVhc3VyZW1lbnRTZXQnLCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4gewotICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gY3JlYXRlSW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVD
bHVzdGVyKGNvbnRleHQpOwotCi0gICAgICAgICAgICAgICAgLy8gVGhlIGRvbWFpbiBpbmNsdWVz
IHBvaW50cyAyLCAzCi0gICAgICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKHBvc2l4VGltZSgn
MjAxNi0wMS0wNVQyMDowMDowMFonKSwgcG9zaXhUaW1lKCcyMDE2LTAxLTA2VDAwOjAwOjAwWicp
KTsKLSAgICAgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOwotICAgICAg
ICAgICAgICAgIGxldCBpbmRpY2F0b3JDaGFuZ2VDb3VudCA9IDA7Ci0gICAgICAgICAgICAgICAg
Y2hhcnQubGlzdGVuVG9BY3Rpb24oJ2luZGljYXRvckNoYW5nZScsICgpID0+IGluZGljYXRvckNo
YW5nZUNvdW50KyspOwotICAgICAgICAgICAgICAgIHJlc3BvbmRXaXRoU2FtcGxlQ2x1c3Rlcihj
b250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSk7Ci0KLSAgICAgICAgICAg
ICAgICBsZXQgY2FudmFzOwotICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmlldzsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KS50aGVu
KCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRvckNoYW5nZUNvdW50
KS50by5iZSgwKTsKLQotICAgICAgICAgICAgICAgICAgICBjYW52YXMgPSBjaGFydC5jb250ZW50
KCkucXVlcnlTZWxlY3RvcignY2FudmFzJyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgICAgICAgICAg
ICAgY29uc3QgeCA9IHJlY3QucmlnaHQgLSAxOwotICAgICAgICAgICAgICAgICAgICBjb25zdCB5
ID0gcmVjdC50b3AgKyByZWN0LmhlaWdodCAvIDI7Ci0gICAgICAgICAgICAgICAgICAgIGNhbnZh
cy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdjbGljaycsIHt0YXJnZXQ6IGNhbnZhcywg
Y2xpZW50WDogeCwgY2xpZW50WTogeSwgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWV9KSk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3
Q2hlY2soY2FudmFzKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25l
bnRzVG9SZW5kZXIoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0g
ICAgICAgICAgICAgICAgICAgIGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXdu
KGNhbnZhcykpLnRvLmJlKHRydWUpOwotICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNh
dG9yQ2hhbmdlQ291bnQpLnRvLmJlKDEpOwotCi0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRW
aWV3ID0gY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50Jyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGV4cGVjdChjdXJyZW50Vmlldy5sZW5ndGgoKSkudG8uYmUoNCk7IC8vIHBvaW50
cyAwIGFuZCA0IGFyZSBhZGRlZCB0byBkcmF3IGxpbmVzIGV4dGVuZGluZyBiZXlvbmQgdGhlIGRv
bWFpbi4KLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KFsuLi5jdXJyZW50Vmlld10ubWFwKChw
b2ludCkgPT4gcG9pbnQuaWQpKS50by5iZS5lcWwoWzEwMDAsIDEwMDIsIDEwMDMsIDEwMDRdKTsK
LQotICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSBjaGFydC5jdXJyZW50SW5k
aWNhdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IudmlldykudG8u
YmUoY3VycmVudFZpZXcpOwotICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yLnBv
aW50LmlkKS50by5iZSgxMDAzKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGluZGljYXRv
ci5pc0xvY2tlZCkudG8uYmUodHJ1ZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgY2hhcnQubW92
ZUxvY2tlZEluZGljYXRvcldpdGhOb3RpZmljYXRpb24odHJ1ZSk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgQ2FudmFzVGVzdC5maWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4
dCk7Ci0gICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAg
IGV4cGVjdChDYW52YXNUZXN0Lmhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykpLnRvLmJlKGZh
bHNlKTsKLQotICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hhbmdlQ291bnQp
LnRvLmJlKDEpOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSBjaGFydC5j
dXJyZW50SW5kaWNhdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3Iu
dmlldykudG8uYmUoY3VycmVudFZpZXcpOwotICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5k
aWNhdG9yLnBvaW50LmlkKS50by5iZSgxMDAzKTsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0
KGluZGljYXRvci5pc0xvY2tlZCkudG8uYmUodHJ1ZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
Y2hhcnQubW92ZUxvY2tlZEluZGljYXRvcldpdGhOb3RpZmljYXRpb24oZmFsc2UpOwotCi0gICAg
ICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJhd0NoZWNrKGNh
bnZhcyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVu
ZGVyKGNvbnRleHQpOwotICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAg
ICAgICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMp
KS50by5iZSh0cnVlKTsKLQotICAgICAgICAgICAgICAgICAgICBleHBlY3QoaW5kaWNhdG9yQ2hh
bmdlQ291bnQpLnRvLmJlKDIpOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRpY2F0b3Ig
PSBjaGFydC5jdXJyZW50SW5kaWNhdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdChp
bmRpY2F0b3IudmlldykudG8uYmUoY3VycmVudFZpZXcpOwotICAgICAgICAgICAgICAgICAgICBl
eHBlY3QoaW5kaWNhdG9yLnBvaW50LmlkKS50by5iZSgxMDAyKTsKLSAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0KGluZGljYXRvci5pc0xvY2tlZCkudG8uYmUodHJ1ZSk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgY2hhcnQubW92ZUxvY2tlZEluZGljYXRvcldpdGhOb3RpZmljYXRpb24oZmFsc2Up
OwotCi0gICAgICAgICAgICAgICAgICAgIENhbnZhc1Rlc3QuZmlsbENhbnZhc0JlZm9yZVJlZHJh
d0NoZWNrKGNhbnZhcyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9u
ZW50c1RvUmVuZGVyKGNvbnRleHQpOwotICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewot
ICAgICAgICAgICAgICAgICAgICBleHBlY3QoQ2FudmFzVGVzdC5oYXNDYW52YXNCZWVuUmVkcmF3
bihjYW52YXMpKS50by5iZShmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGlu
ZGljYXRvckNoYW5nZUNvdW50KS50by5iZSgyKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
aW5kaWNhdG9yID0gY2hhcnQuY3VycmVudEluZGljYXRvcigpOwotICAgICAgICAgICAgICAgICAg
ICBleHBlY3QoaW5kaWNhdG9yLnZpZXcpLnRvLmJlKGN1cnJlbnRWaWV3KTsKLSAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0KGluZGljYXRvci5wb2ludC5pZCkudG8uYmUoMTAwMik7Ci0gICAgICAg
ICAgICAgICAgICAgIGV4cGVjdChpbmRpY2F0b3IuaXNMb2NrZWQpLnRvLmJlKHRydWUpOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgfSk7
Ci19KTsKLQotfSkoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5c2lzLXRh
c2stdGVzdHMuanMJKHJldmlzaW9uIDIxMzExNykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy91bml0LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTIw
NCwxMCArMjA0LDEwIEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCBmdW5jdGlvbiAoKSB7CiAg
ICAgICAgIH0pOwogCiAgICAgICAgIGl0KCdzaG91bGQgZmluZCBDb21taXRMb2cgb2JqZWN0cyBm
b3IgYGNhdXNlc2Agd2hlbiBNZWFzdXJlbWVudEFkYXB0b3IgY3JlYXRlZCBtYXRjaGluZyBvYmpl
Y3RzJywgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgICAgIHZhciBhZG9wdG9yID0gbmV3IE1l
YXN1cmVtZW50QWRhcHRvcihtZWFzdXJlbWVudENsdXN0ZXIoKS5mb3JtYXRNYXApOwotICAgICAg
ICAgICAgdmFyIGFkb3B0ZWRNZWFzdXJlbWVudCA9IGFkb3B0b3IuYXBwbHlUbyhtZWFzdXJlbWVu
dENsdXN0ZXIoKS5jb25maWd1cmF0aW9ucy5jdXJyZW50WzBdKTsKLSAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChhZG9wdGVkTWVhc3VyZW1lbnQuaWQsIDM3MTg4MTYxKTsKLSAgICAgICAgICAgIGFz
c2VydC5lcXVhbChhZG9wdGVkTWVhc3VyZW1lbnQucm9vdFNldCgpLmNvbW1pdEZvclJlcG9zaXRv
cnkoTW9ja01vZGVscy53ZWJraXQpLnJldmlzaW9uKCksICcxOTYwNTEnKTsKKyAgICAgICAgICAg
IHZhciBhZGFwdG9yID0gbmV3IE1lYXN1cmVtZW50QWRhcHRvcihtZWFzdXJlbWVudENsdXN0ZXIo
KS5mb3JtYXRNYXApOworICAgICAgICAgICAgdmFyIGFkYXB0ZWRNZWFzdXJlbWVudCA9IGFkYXB0
b3IuYXBwbHlUbyhtZWFzdXJlbWVudENsdXN0ZXIoKS5jb25maWd1cmF0aW9ucy5jdXJyZW50WzBd
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChhZGFwdGVkTWVhc3VyZW1lbnQuaWQsIDM3MTg4
MTYxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChhZGFwdGVkTWVhc3VyZW1lbnQucm9vdFNl
dCgpLmNvbW1pdEZvclJlcG9zaXRvcnkoTW9ja01vZGVscy53ZWJraXQpLnJldmlzaW9uKCksICcx
OTYwNTEnKTsKIAogICAgICAgICAgICAgdmFyIHByb21pc2UgPSBBbmFseXNpc1Rhc2suZmV0Y2hB
bGwoKTsKICAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoc2FtcGxlQW5hbHlzaXNUYXNr
KCkpOwo=
</data>
<flag name="review"
          id="324611"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>