<?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>168499</bug_id>
          
          <creation_ts>2017-02-17 00:30:19 -0800</creation_ts>
          <short_desc>Add tests for the time series chart and fix bugs I found along the way</short_desc>
          <delta_ts>2017-02-23 18:04:03 -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>
          
          <blocked>168812</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1278161</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-02-17 00:30:19 -0800</bug_when>
    <thetext>Add tests for the time series chart, which is probably the most important component in the perf dashboard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278169</commentid>
    <comment_count>1</comment_count>
      <attachid>301900</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-02-17 01:11:14 -0800</bug_when>
    <thetext>Created attachment 301900
Adds tests with some bug fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278173</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-02-17 01:17:36 -0800</bug_when>
    <thetext>Committed r212542: &lt;http://trac.webkit.org/changeset/212542&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301900</attachid>
            <date>2017-02-17 01:11:14 -0800</date>
            <delta_ts>2017-02-17 01:14:49 -0800</delta_ts>
            <desc>Adds tests with some bug fixes</desc>
            <filename>bug-168499-20170217010839.patch</filename>
            <type>text/plain</type>
            <size>68981</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMjEyNTQwKQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU4IEBACisyMDE3LTAyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEFkZCB0ZXN0cyBmb3IgdGhlIHRpbWUgc2VyaWVzIGNoYXJ0IGFuZCBmaXggYnVn
cyBJIGZvdW5kIGFsb25nIHRoZSB3YXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2ODQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBiYXNpYyB0ZXN0cyBmb3IgdGhlIHRpbWUgc2VyaWVzIGNoYXJ0
LgorCisgICAgICAgIFJlcGxhY2VkIHRoZSAib25kYXRhIiBjYWxsYmFjayBzZXQgaW4gdGhlIG9w
dGlvbnMgYnkgImRhdGFDaGFuZ2UiIGFjdGlvbiBub3cgdGhhdCBDb21wb25lbnRCYXNlIHByb3Zp
ZGVzCisgICAgICAgIGEgZmFjaWxpdHkgZm9yIGRlZmluaW5nIGV2ZW50LWxpa2UgYWN0aW9ucy4K
KworICAgICAgICBBbHNvIGZpeGVkIGJ1Z3MgSSBlbmNvdW50ZXJlZCB3aGlsZSB3cml0aW5nIHRo
ZXNlIHRlc3RzIHNlZSBiZWxvdyBmb3IgZGVzY3JpcHRpb25zLgorCisgICAgICAgICogYnJvd3Nl
ci10ZXN0cy9lZGl0YWJsZS10ZXh0LXRlc3RzLmpzOgorICAgICAgICAod2FpdFRvUmVuZGVyKTog
TW92ZWQgdG8gaW5kZXguaHRtbAorICAgICAgICAqIGJyb3dzZXItdGVzdHMvaW5kZXguaHRtbDoK
KyAgICAgICAgKHdhaXRUb1JlbmRlcik6IE1vdmVkIGZyb20gZWRpdGFibGUtdGV4dC10ZXN0cy5q
cy4KKyAgICAgICAgKHdhaXQpOiBBZGRlZC4KKyAgICAgICAgKiBicm93c2VyLXRlc3RzL3RpbWUt
c2VyaWVzLWNoYXJ0LXRlc3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9u
ZW50cy9jaGFydC1wYW5lLWJhc2UuanM6CisgICAgICAgIChDaGFydFBhbmVCYXNlLnByb3RvdHlw
ZS5jb25maWd1cmUpOgorICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL3RpbWUtc2VyaWVz
LWNoYXJ0LmpzOgorICAgICAgICAoVGltZVNlcmllc0NoYXJ0KTogUmVtb3ZlZCB0aGUgY29kZSB0
byBzZXQgZGlzcGxheSBhbmQgcG9zaXRpb24gaW5saW5lIHByb3BlcnRpZXMuIFRoaXMgaXMgbm93
IGRvbmUgaW5zaWRlCisgICAgICAgIGNzc1RlbXBsYXRlIHdpdGggOmhvc3QgcHNldWRvIGNsYXNz
LgorICAgICAgICAoVGltZVNlcmllc0NoYXJ0LnByb3RvdHlwZS5fZW5zdXJlQ2FudmFzKTogRG9u
J3Qgc3RyZWNoIHRoZSBjYW52YXMgdG8gMTAwJSBvZiB3aWR0aCBhbmQgaGVpZ2h0LiBUaGlzIHdh
cworICAgICAgICBjYXVzaW5nIGEgZmx1c2ggb2YgY29udGVudHMgd2hlcmUgdGhlIGNhbnZhcyBp
cyBtb21lbnRhcmlseSBzdHJlY2hlZCBieSB0aGUgYnJvd3NlciBhbmQgdGhlIHNjcmlwdCBsYXRl
cgorICAgICAgICB1cGRhdGVzIHdpdGggdGhlIGNvbnRlbnQgd2l0aCB0aGUgY29ycmVjdCBhc3Bl
Y3QgcmF0aW8uCisgICAgICAgIChUaW1lU2VyaWVzQ2hhcnQuY3NzVGVtcGxhdGUpOiBBZGRlZCA6
aG9zdCBydWxlIHRvIHNldCBkaXNwbGF5OiBibG9jayBhbmQgcG9zaXRpb246IHJlbGF0aXZlLgor
ICAgICAgICAoVGltZVNlcmllc0NoYXJ0Ll91cGRhdGVBbGxDaGFydHMpOiBEZWxldGVkLgorICAg
ICAgICAoVGltZVNlcmllc0NoYXJ0LnByb3RvdHlwZS5yZW5kZXIpOiBPbmx5IHJ1biB0aGUgY29k
ZSBmb3IgYXhpcyB3aGVuIG9wdGlvbnMuYXhpcyBpcyBkZWZpbmVkLiBBbHNvLCBhdm9pZAorICAg
ICAgICBzZXR0aW5nIHRoZSBmaWxsIHN0eWxlIGJlY2F1c2Ugd2UgbmV2ZXIgZmlsbCBmb3IgYXhp
cyBkcmF3aW5nLgorICAgICAgICAoVGltZVNlcmllc0NoYXJ0LnByb3RvdHlwZS5fY29tcHV0ZUhv
cml6b250YWxSZW5kZXJpbmdNZXRyaWNzKTogRGl0dG8uIEZhbGxiYWNrIHRvIHNlbnNpYmxlIHZh
bHVlcyB3aGVuCisgICAgICAgIG9wdGlvbnMuYXhpcyBpcyBub3QgZGVmaW5lZC4KKyAgICAgICAg
KFRpbWVTZXJpZXNDaGFydC5wcm90b3R5cGUuX3JlbmRlcllBeGlzKTogTm93IGNvbXB1dGVWYWx1
ZUdyaWQgZ2VuZXJhdGVzIGEgc2VxdWVuY2Ugb2Yge3RpbWUsIGxhYmVsfS4KKyAgICAgICAgKFRp
bWVTZXJpZXNDaGFydC5wcm90b3R5cGUuX3JlbmRlclRpbWVTZXJpZXMpOiBEb24ndCBkcmF3IHRo
ZSBzaGFkZXMgZm9yIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIHVubGVzcyBpdHMKKyAgICAgICAgZmls
bCBzdHlsZSBpcyBkZWZpbmVkLiBPdGhlcndpc2UsIHdlJ2QgZW5kIHVwIGRyYXdpbmcgYmxhY2sg
c2hhZGUgYW5kIG1hc2sgdGhlIGFjdHVhbCBkYXRhIHBvaW50cy4KKyAgICAgICAgKFRpbWVTZXJp
ZXNDaGFydC5wcm90b3R5cGUuX2Vuc3VyZVNhbXBsZWRUaW1lU2VyaWVzKTogRGlzcGF0Y2ggbmV3
bHkgYWRkZWQgImRhdGFDaGFuZ2UiIGFjdGlvbiBpbnN0ZWFkIG9mCisgICAgICAgIGNhbGxpbmcg
Im9uZGF0YSIgY2FsbGJhY2sgaW4gb3B0aW9ucyBkaWN0aW9uYXJ5LgorICAgICAgICAoVGltZVNl
cmllc0NoYXJ0LmNvbXB1dGVUaW1lR3JpZCk6IE1vZGVybml6ZWQgdG8gdXNlIGNvbnN0L2xldC4g
QWxzbyBmaXhlZCB0aGUgYnVnIHRoYXQgd2Ugd2VyZSBlbWl0dGluZworICAgICAgICB0aGUgZGF0
ZSBldmVuIHdoZW4gdGhlIGVudGlyZSB0aW1lIHJhbmdlIGZpdCB3aXRoaW4gYSAyNC1ob3VyIGlu
dGVydmFsLgorICAgICAgICAoVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVWYWx1ZUdyaWQpOiBSZXdy
aXR0ZW4gdG8gbWFrZSBNQi9HQiB1c2UgYSBuaWNlIHJvdW5kIG51bWJlciBpbnN0ZWFkIG9mIDAu
OThHQi4KKyAgICAgICAgV2Ugd2VyZSB1c2luZyBhIHBvd2VyIG9mIDEwIHRvIHJvdW5kIHVwIHRo
ZSBzdGVwcGluZyB2YWx1ZSBidXQgdGhlIHZhbHVlIGZvcm1hdHRlciB1c2VkIGEgcG93ZXIgb2Yg
MTAyNAorICAgICAgICB0byBkaXZpZGUgYnl0ZSBtZWFzdXJlbWVudHMgKGUuZy4gZm9yIG1lbW9y
eSkuIFVzZSBmb3JtYXR0ZXIuZGl2aXNvciB0byBmaW5kIHRoZSByaWdodCBzY2FsaW5nIGZhY3Rv
ciBmb3IKKyAgICAgICAgZWFjaCBraW5kLgorICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvbWV0
cmljLmpzOgorICAgICAgICAoTWV0cmljLnByb3RvdHlwZS5tYWtlRm9ybWF0dGVyKToKKyAgICAg
ICAgKE1ldHJpYy5tYWtlRm9ybWF0dGVyKTogRXh0cmFjdGVkIGZyb20gdGhlIG9uZSBvbiB0aGUg
cHJvdG90eXBlIHNvIHRoYXQgdGVzdHMgZG9uJ3QgbmVlZCBhIG1ldHJpYyBvYmplY3QKKyAgICAg
ICAganVzdCB0byB0ZXN0IFRpbWVTZXJpZXNDaGFydC4gQWRkZWQgdGhlIHNlY29uZCBhcmd1bWVu
dCB3aGljaCBzcGVjaWZpZXMgdGhlIG1heGltdW0gYWJzb2x1dGUgdmFsdWUgb2YgdGhlCisgICAg
ICAgIHJhbmdlIHdlJ3JlIGZvcm1hdHRpbmcuIFRoaXMgaXMgbmVlZGVkIHRvIHVzZSB0aGUgc2Ft
ZSBudW1iZXIgb2YgZGVjaW1hbCBwb2ludHMgd2hlbiB0aGUgbW9zdCBzaWduaWZpY2FudAorICAg
ICAgICBkaWdpdCBvZiBzb21lIHZhbHVlIGlzIHNtYWxsZXIgdGhhbiB0aGF0IG9mIHRoZSBiaWdn
ZXN0IG9uZS4gRm9yIGV4YW1wbGUsIHdlIHdlcmUgZW1pdHRpbmcgMC41MEdCIGluc3RlYWQKKyAg
ICAgICAgb2YgMC41RyBhbG9uZyB3aXRoIDIuMEdCLiBUaGUgImFkanVzdG1lbnQiIHJlZHVjZXMg
dGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBmaWd1cmVzIGluIHRoZXNlIGNhc2VzLgorICAgICAg
ICAqIHB1YmxpYy92My9wYWdlcy9kYXNoYm9hcmQtcGFnZS5qczoKKyAgICAgICAgKERhc2hib2Fy
ZFBhZ2UucHJvdG90eXBlLl9jcmVhdGVDaGFydEZvckNlbGwpOgorCiAyMDE3LTAyLTE2ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBleHBlY3QuanMgaW5z
dGVhZCBvZiBleHBlY3QgaW4gYnJvd3NlciB0ZXN0cwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL2Jyb3dzZXItdGVzdHMvZWRpdGFibGUtdGV4dC10ZXN0cy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9lZGl0YWJsZS10ZXh0LXRl
c3RzLmpzCShyZXZpc2lvbiAyMTI1MzMpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJv
d3Nlci10ZXN0cy9lZGl0YWJsZS10ZXh0LXRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yLDI3
ICsyLDYgQEAKIGRlc2NyaWJlKCdFZGl0YWJsZVRleHQnLCAoKSA9PiB7CiAgICAgY29uc3Qgc2Ny
aXB0cyA9IFsnaW5zdHJ1bWVudGF0aW9uLmpzJywgJ2NvbXBvbmVudHMvYmFzZS5qcycsICdjb21w
b25lbnRzL2VkaXRhYmxlLXRleHQuanMnXTsKIAotICAgIGZ1bmN0aW9uIHdhaXRUb1JlbmRlcihj
b250ZXh0KQotICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0Ll9kdW1teUNvbXBvbmVudCkgewot
ICAgICAgICAgICAgY29uc3QgQ29tcG9uZW50QmFzZSA9IGNvbnRleHQuc3ltYm9scy5Db21wb25l
bnRCYXNlOwotICAgICAgICAgICAgY29udGV4dC5fZHVtbXlDb21wb25lbnQgPSBjbGFzcyBTb21l
Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7Ci0gICAgICAgICAgICAgICAgY29uc3Ry
dWN0b3IocmVzb2x2ZSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN1
cGVyKCk7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc29sdmUgPSByZXNvbHZlOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZW5kZXIoKSB7IHNldFRpbWVvdXQodGhp
cy5fcmVzb2x2ZSwgMCk7IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIENvbXBvbmVudEJh
c2UuZGVmaW5lRWxlbWVudCgnZHVtbXktY29tcG9uZW50JywgY29udGV4dC5fZHVtbXlDb21wb25l
bnQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4g
ewotICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgY29udGV4dC5fZHVtbXlDb21wb25l
bnQocmVzb2x2ZSk7Ci0gICAgICAgICAgICBjb250ZXh0LmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaW5zdGFuY2UuZWxlbWVudCgpKTsKLSAgICAgICAgICAgIGluc3RhbmNlLmVucXVldWVUb1Jl
bmRlcigpOwotICAgICAgICB9KTsKLSAgICB9Ci0KICAgICBpdCgnc2hvdyB0aGUgc2V0IHRleHQn
LCAoKSA9PiB7CiAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7
CiAgICAgICAgIGxldCBlZGl0YWJsZVRleHQ7CkBAIC0xODUsNyArMTY0LDcgQEAgZGVzY3JpYmUo
J0VkaXRhYmxlVGV4dCcsICgpID0+IHsKICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9u
ZW50c1RvUmVuZGVyKGNvbnRleHQpOwogICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAg
ICAgIGVkaXRhYmxlVGV4dC5jb250ZW50KCdhY3Rpb24tYnV0dG9uJykuZGlzcGF0Y2hFdmVudChu
ZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJykpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDApKTsKKyAgICAgICAgICAgIHJl
dHVybiB3YWl0KDApOwogICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIGVkaXRh
YmxlVGV4dC5jb250ZW50KCd0ZXh0LWZpZWxkJykuYmx1cigpOwogICAgICAgICAgICAgZWRpdGFi
bGVUZXh0LmNvbnRlbnQoJ2FjdGlvbi1idXR0b24nKS5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2
ZW50KCdtb3VzZXVwJykpOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXIt
dGVzdHMvaW5kZXguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
YnJvd3Nlci10ZXN0cy9pbmRleC5odG1sCShyZXZpc2lvbiAyMTI1MzMpCisrKyBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9pbmRleC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xMCwxMiArMTAsMTQgQEAKIG1vY2hhLnNldHVwKCdiZGQnKTsKIAogPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vdW5pdC10ZXN0cy9yZXNvdXJjZXMvbW9jay1yZW1vdGUtYXBpLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgogPGRpdiBpZD0ibW9jaGEiPjwvZGl2PgogPHNjcmlwdCBz
cmM9ImNvbXBvbmVudC1iYXNlLXRlc3RzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJjbG9z
ZS1idXR0b24tdGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImVkaXRhYmxlLXRleHQt
dGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InRpbWUtc2VyaWVzLWNoYXJ0LXRlc3Rz
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIGFmdGVyRWFjaCgoKSA9PiB7CkBAIC0zMywyOSAr
MzUsMzIgQEAgY2xhc3MgQnJvd3NpbmdDb250ZXh0IHsKICAgICAgICAgaWZyYW1lLnN0eWxlLnRv
cCA9ICcwcHgnOwogICAgICAgICBCcm93c2luZ0NvbnRleHQuX2lmcmFtZXMucHVzaChpZnJhbWUp
OwogCi0gICAgICAgIHRoaXMuX2lmcmFtZSA9IGlmcmFtZTsKKyAgICAgICAgdGhpcy5pZnJhbWUg
PSBpZnJhbWU7CiAgICAgICAgIHRoaXMuc3ltYm9scyA9IHt9OwotICAgICAgICB0aGlzLmdsb2Jh
bCA9IHRoaXMuX2lmcmFtZS5jb250ZW50V2luZG93OwotICAgICAgICB0aGlzLmRvY3VtZW50ID0g
dGhpcy5faWZyYW1lLmNvbnRlbnREb2N1bWVudDsKKyAgICAgICAgdGhpcy5nbG9iYWwgPSB0aGlz
LmlmcmFtZS5jb250ZW50V2luZG93OworICAgICAgICB0aGlzLmRvY3VtZW50ID0gdGhpcy5pZnJh
bWUuY29udGVudERvY3VtZW50OwogICAgIH0KIAogICAgIGltcG9ydFNjcmlwdHMocGF0aExpc3Qs
IC4uLnN5bWJvbExpc3QpCiAgICAgewotICAgICAgICBjb25zdCBkb2MgPSB0aGlzLl9pZnJhbWUu
Y29udGVudERvY3VtZW50OwotICAgICAgICBjb25zdCBnbG9iYWwgPSB0aGlzLl9pZnJhbWUuY29u
dGVudFdpbmRvdzsKKyAgICAgICAgY29uc3QgZG9jID0gdGhpcy5pZnJhbWUuY29udGVudERvY3Vt
ZW50OworICAgICAgICBjb25zdCBnbG9iYWwgPSB0aGlzLmlmcmFtZS5jb250ZW50V2luZG93Owog
Ci0gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwYXRoTGlzdC5tYXAoKHBhdGgpID0+IHsKKyAg
ICAgICAgcGF0aExpc3QgPSBwYXRoTGlzdC5tYXAoKHBhdGgpID0+IGAuLi9wdWJsaWMvdjMvJHtw
YXRofWApOworCisgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbJy4uL3VuaXQtdGVzdHMvcmVz
b3VyY2VzL21vY2stcmVtb3RlLWFwaS5qcycsIC4uLnBhdGhMaXN0XS5tYXAoKHBhdGgpID0+IHsK
ICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAg
ICAgICAgICAgICAgICAgbGV0IHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsK
ICAgICAgICAgICAgICAgICBzY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJlc29sdmUp
OwogICAgICAgICAgICAgICAgIHNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHJlamVj
dCk7Ci0gICAgICAgICAgICAgICAgc2NyaXB0LnNyYyA9ICcuLi9wdWJsaWMvdjMvJyArIHBhdGg7
CisgICAgICAgICAgICAgICAgc2NyaXB0LnNyYyA9IHBhdGg7CiAgICAgICAgICAgICAgICAgc2Ny
aXB0LmFzeW5jID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQo
c2NyaXB0KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KSkudGhlbigoKSA9PiB7CiAgICAg
ICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAg
ICAgICAgICBzY3JpcHQudGV4dENvbnRlbnQgPSBgd2luZG93LmltcG9ydGVkU3ltYm9scyA9IFsk
e3N5bWJvbExpc3Quam9pbignLCAnKX1dO2A7CisgICAgICAgICAgICBnbG9iYWwuUmVtb3RlQVBJ
ID0gZ2xvYmFsLk1vY2tSZW1vdGVBUEk7CiAgICAgICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGls
ZChzY3JpcHQpOwogCiAgICAgICAgICAgICBjb25zdCBpbXBvcnRlZFN5bWJvbHMgPSBnbG9iYWwu
aW1wb3J0ZWRTeW1ib2xzOwpAQCAtNzksOCArODQsMzYgQEAgY2xhc3MgQnJvd3NpbmdDb250ZXh0
IHsKIH0KIEJyb3dzaW5nQ29udGV4dC5faWZyYW1lcyA9IFtdOwogCitmdW5jdGlvbiB3YWl0Rm9y
Q29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpCit7CisgICAgaWYgKCFjb250ZXh0Ll9kdW1teUNv
bXBvbmVudCkgeworICAgICAgICBjb25zdCBDb21wb25lbnRCYXNlID0gY29udGV4dC5zeW1ib2xz
LkNvbXBvbmVudEJhc2U7CisgICAgICAgIGNvbnRleHQuX2R1bW15Q29tcG9uZW50ID0gY2xhc3Mg
U29tZUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEJhc2UgeworICAgICAgICAgICAgY29uc3Ry
dWN0b3IocmVzb2x2ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdXBlcigpOwor
ICAgICAgICAgICAgICAgIHRoaXMuX3Jlc29sdmUgPSByZXNvbHZlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmVuZGVyKCkgeyBzZXRUaW1lb3V0KHRoaXMuX3Jlc29sdmUsIDApOyB9Cisg
ICAgICAgIH0KKyAgICAgICAgQ29tcG9uZW50QmFzZS5kZWZpbmVFbGVtZW50KCdkdW1teS1jb21w
b25lbnQnLCBjb250ZXh0Ll9kdW1teUNvbXBvbmVudCk7CisgICAgfQorICAgIHJldHVybiBuZXcg
UHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBjb250
ZXh0Ll9kdW1teUNvbXBvbmVudChyZXNvbHZlKTsKKyAgICAgICAgY29udGV4dC5kb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGluc3RhbmNlLmVsZW1lbnQoKSk7CisgICAgICAgIGluc3RhbmNlLmVu
cXVldWVUb1JlbmRlcigpOworICAgIH0pOworfQorCitmdW5jdGlvbiB3YWl0KG1pbGxpc2Vjb25k
cykKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgc2V0
VGltZW91dChyZXNvbHZlLCBtaWxsaXNlY29uZHMpOworICAgIH0pOworfQorCiBtb2NoYS5jaGVj
a0xlYWtzKCk7Ci1tb2NoYS5nbG9iYWxzKFsnZXhwZWN0JywgJ0Jyb3dzaW5nQ29udGV4dCddKTsK
K21vY2hhLmdsb2JhbHMoWydleHBlY3QnLCAnQnJvd3NpbmdDb250ZXh0JywgJ3dhaXQnLCAnd2Fp
dEZvckNvbXBvbmVudHNUb1JlbmRlciddKTsKIG1vY2hhLnJ1bigpOwogCiA8L3NjcmlwdD4KSW5k
ZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL3RpbWUtc2VyaWVzLWNo
YXJ0LXRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93
c2VyLXRlc3RzL3RpbWUtc2VyaWVzLWNoYXJ0LXRlc3RzLmpzCShub25leGlzdGVudCkKKysrIFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL3RpbWUtc2VyaWVzLWNoYXJ0LXRl
c3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQ3IEBACisKK2Rlc2NyaWJlKCdUaW1l
U2VyaWVzQ2hhcnQnLCAoKSA9PiB7CisgICAgY29uc3Qgc2NyaXB0cyA9IFsKKyAgICAgICAgJy4u
L3NoYXJlZC9zdGF0aXN0aWNzLmpzJywKKyAgICAgICAgJ2luc3RydW1lbnRhdGlvbi5qcycsCisg
ICAgICAgICdtb2RlbHMvZGF0YS1tb2RlbC5qcycsCisgICAgICAgICdtb2RlbHMvbWV0cmljLmpz
JywKKyAgICAgICAgJ21vZGVscy90aW1lLXNlcmllcy5qcycsCisgICAgICAgICdtb2RlbHMvbWVh
c3VyZW1lbnQtc2V0LmpzJywKKyAgICAgICAgJ21vZGVscy9tZWFzdXJlbWVudC1jbHVzdGVyLmpz
JywKKyAgICAgICAgJ21vZGVscy9tZWFzdXJlbWVudC1hZGFwdG9yLmpzJywKKyAgICAgICAgJ2Nv
bXBvbmVudHMvYmFzZS5qcycsCisgICAgICAgICdjb21wb25lbnRzL3RpbWUtc2VyaWVzLWNoYXJ0
LmpzJ107CisKKyAgICBpdCgnc2hvdWxkIGJlIGNvbnN0cnVjdGlibGUgd2l0aCBhbiBlbXB0eSBz
b3VyZWMgbGlzdCBhbmQgYW4gZW1wdHkgb3B0aW9ucycsICgpID0+IHsKKyAgICAgICAgcmV0dXJu
IG5ldyBCcm93c2luZ0NvbnRleHQoKS5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVz
Q2hhcnQnKS50aGVuKChUaW1lU2VyaWVzQ2hhcnQpID0+IHsKKyAgICAgICAgICAgIG5ldyBUaW1l
U2VyaWVzQ2hhcnQoW10sIHt9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmli
ZSgnY29tcHV0ZVRpbWVHcmlkJywgKCkgPT4geworICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBh
biBlbXB0eSBhcnJheSB3aGVuIHRoZSBzdGFydCBhbmQgdGhlIGVuZCB0aW1lcyBhcmUgaWRlbnRp
Y2FsJywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5p
bXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnKS50aGVuKChUaW1lU2VyaWVz
Q2hhcnQpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBzb21lVGltZSA9IERhdGUubm93KCk7
CisgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVU
aW1lR3JpZChzb21lVGltZSwgc29tZVRpbWUsIDApOworICAgICAgICAgICAgICAgIGV4cGVjdChs
YWJlbHMpLnRvLmJlLmEoJ2FycmF5Jyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGxhYmVscy5s
ZW5ndGgpLnRvLmJlKDApOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAg
IGNvbnN0IG1pbGxpc2Vjb25kc1BlckhvdXIgPSAzNjAwICogMTAwMDsKKyAgICAgICAgY29uc3Qg
bWlsbGlzZWNvbmRzUGVyRGF5ID0gMjQgKiBtaWxsaXNlY29uZHNQZXJIb3VyOworCisgICAgICAg
IGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGFycmF5IHdoZW4gbWF4TGFiZWxzIGlzIDAnLCAo
KSA9PiB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEJyb3dzaW5nQ29udGV4dCgpLmltcG9ydFNj
cmlwdHMoc2NyaXB0cywgJ1RpbWVTZXJpZXNDaGFydCcpLnRoZW4oKFRpbWVTZXJpZXNDaGFydCkg
PT4geworICAgICAgICAgICAgICAgIGNvbnN0IGVuZFRpbWUgPSBEYXRlLm5vdygpOworICAgICAg
ICAgICAgICAgIGNvbnN0IGxhYmVscyA9IFRpbWVTZXJpZXNDaGFydC5jb21wdXRlVGltZUdyaWQo
ZW5kVGltZSAtIG1pbGxpc2Vjb25kc1BlckRheSwgZW5kVGltZSwgMCk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KGxhYmVscykudG8uYmUuYSgnYXJyYXknKTsKKyAgICAgICAgICAgICAgICBleHBl
Y3QobGFiZWxzLmxlbmd0aCkudG8uYmUoMCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgYXJyYXkgd2hlbiBtYXhMYWJl
bHMgaXMgMCBldmVuIHdoZW4gdGhlIGludGVydmFsIHNwYW5zIG11bHRpcGxlIG1vbnRocycsICgp
ID0+IHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQnJvd3NpbmdDb250ZXh0KCkuaW1wb3J0U2Ny
aXB0cyhzY3JpcHRzLCAnVGltZVNlcmllc0NoYXJ0JykudGhlbigoVGltZVNlcmllc0NoYXJ0KSA9
PiB7CisgICAgICAgICAgICAgICAgY29uc3QgZW5kVGltZSA9IERhdGUubm93KCk7CisgICAgICAg
ICAgICAgICAgY29uc3QgbGFiZWxzID0gVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVUaW1lR3JpZChl
bmRUaW1lIC0gMTIwICogbWlsbGlzZWNvbmRzUGVyRGF5LCBlbmRUaW1lLCAwKTsKKyAgICAgICAg
ICAgICAgICBleHBlY3QobGFiZWxzKS50by5iZS5hKCdhcnJheScpOworICAgICAgICAgICAgICAg
IGV4cGVjdChsYWJlbHMubGVuZ3RoKS50by5iZSgwKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKworICAgICAgICBmdW5jdGlvbiBjaGVja0dyaWRJdGVtKGl0ZW0sIGxhYmVsLCBleHBl
Y3RlZERhdGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGV4cGVjdChpdGVtLmxhYmVsKS50by5i
ZShsYWJlbCk7CisgICAgICAgICAgICBleHBlY3QoaXRlbS50aW1lLl9fcHJvdG9fXy5jb25zdHJ1
Y3Rvci5uYW1lKS50by5iZSgnRGF0ZScpOworICAgICAgICAgICAgZXhwZWN0KCtpdGVtLnRpbWUp
LnRvLmJlKCtuZXcgRGF0ZShleHBlY3RlZERhdGUpKTsKKyAgICAgICAgfQorCisgICAgICAgIGl0
KCdzaG91bGQgZ2VuZXJhdGUgb25lIGhvdXIgbGFiZWwgd2l0aCBqdXN0IGRheSBmb3IgdHdvIGhv
dXIgaW50ZXJ2YWwgd2hlbiBtYXhMYWJlbHMgaXMgMScsICgpID0+IHsKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgQnJvd3NpbmdDb250ZXh0KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnVGltZVNl
cmllc0NoYXJ0JykudGhlbigoVGltZVNlcmllc0NoYXJ0KSA9PiB7CisgICAgICAgICAgICAgICAg
Y29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKCcyMDE3LTAxLTE1VDA3OjUzOjAwWicpOworICAgICAg
ICAgICAgICAgIGNvbnN0IGxhYmVscyA9IFRpbWVTZXJpZXNDaGFydC5jb21wdXRlVGltZUdyaWQo
ZW5kVGltZSAtIDIgKiBtaWxsaXNlY29uZHNQZXJIb3VyLCArZW5kVGltZSwgMSk7CisgICAgICAg
ICAgICAgICAgZXhwZWN0KGxhYmVscykudG8uYmUuYSgnYXJyYXknKTsKKyAgICAgICAgICAgICAg
ICBleHBlY3QobGFiZWxzLmxlbmd0aCkudG8uYmUoMSk7CisgICAgICAgICAgICAgICAgY2hlY2tH
cmlkSXRlbShsYWJlbHNbMF0sICc2QU0nLCAnMjAxNy0wMS0xNVQwNjowMDowMFonKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIHR3
byB0d28taG91ciBsYWJlbHMgZm9yIGZvdXIgaG91ciBpbnRlcnZhbCB3aGVuIG1heExhYmVscyBp
cyAyJywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5p
bXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnKS50aGVuKChUaW1lU2VyaWVz
Q2hhcnQpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gbmV3IERhdGUoJzIw
MTctMDEtMTVUMDc6NTM6MDBaJyk7CisgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gVGlt
ZVNlcmllc0NoYXJ0LmNvbXB1dGVUaW1lR3JpZChlbmRUaW1lIC0gNCAqIG1pbGxpc2Vjb25kc1Bl
ckhvdXIsICtlbmRUaW1lLCAyKTsKKyAgICAgICAgICAgICAgICBleHBlY3QobGFiZWxzKS50by5i
ZS5hKCdhcnJheScpOworICAgICAgICAgICAgICAgIGV4cGVjdChsYWJlbHMubGVuZ3RoKS50by5i
ZSgyKTsKKyAgICAgICAgICAgICAgICBjaGVja0dyaWRJdGVtKGxhYmVsc1swXSwgJzRBTScsICcy
MDE3LTAxLTE1VDA0OjAwOjAwWicpOworICAgICAgICAgICAgICAgIGNoZWNrR3JpZEl0ZW0obGFi
ZWxzWzFdLCAnNkFNJywgJzIwMTctMDEtMTVUMDY6MDA6MDBaJyk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBzaXggdHdvLWhvdXIg
bGFiZWxzIGZvciB0d2VsdmUgaG91ciBpbnRlcnZhbCB3aGVuIG1heExhYmVscyBpcyA2JywgKCkg
PT4geworICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5pbXBvcnRTY3Jp
cHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnKS50aGVuKChUaW1lU2VyaWVzQ2hhcnQpID0+
IHsKKyAgICAgICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gbmV3IERhdGUoJzIwMTctMDEtMTVU
MDc6NTM6MDBaJyk7CisgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gVGltZVNlcmllc0No
YXJ0LmNvbXB1dGVUaW1lR3JpZCgrZW5kVGltZSwgK2VuZFRpbWUgKyAxMiAqIG1pbGxpc2Vjb25k
c1BlckhvdXIsIDYpOworICAgICAgICAgICAgICAgIGV4cGVjdChsYWJlbHMpLnRvLmJlLmEoJ2Fy
cmF5Jyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGxhYmVscy5sZW5ndGgpLnRvLmJlKDYpOwor
ICAgICAgICAgICAgICAgIGNoZWNrR3JpZEl0ZW0obGFiZWxzWzBdLCAnOEFNJywgJzIwMTctMDEt
MTVUMDg6MDA6MDBaJyk7CisgICAgICAgICAgICAgICAgY2hlY2tHcmlkSXRlbShsYWJlbHNbMV0s
ICcxMEFNJywgJzIwMTctMDEtMTVUMTA6MDA6MDBaJyk7CisgICAgICAgICAgICAgICAgY2hlY2tH
cmlkSXRlbShsYWJlbHNbMl0sICcxMlBNJywgJzIwMTctMDEtMTVUMTI6MDA6MDBaJyk7CisgICAg
ICAgICAgICAgICAgY2hlY2tHcmlkSXRlbShsYWJlbHNbM10sICcyUE0nLCAnMjAxNy0wMS0xNVQx
NDowMDowMFonKTsKKyAgICAgICAgICAgICAgICBjaGVja0dyaWRJdGVtKGxhYmVsc1s0XSwgJzRQ
TScsICcyMDE3LTAxLTE1VDE2OjAwOjAwWicpOworICAgICAgICAgICAgICAgIGNoZWNrR3JpZEl0
ZW0obGFiZWxzWzVdLCAnNlBNJywgJzIwMTctMDEtMTVUMTg6MDA6MDBaJyk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBzaXggdHdv
LWhvdXIgbGFiZWxzIHdpdGggb25lIGRhdGUgbGFiZWwgZm9yIHR3ZWx2ZSBob3VyIGludGVydmFs
IHRoYXQgY3Jvc3MgYSBkYXkgd2hlbiBtYXhMYWJlbHMgaXMgNicsICgpID0+IHsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgQnJvd3NpbmdDb250ZXh0KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAn
VGltZVNlcmllc0NoYXJ0JykudGhlbigoVGltZVNlcmllc0NoYXJ0KSA9PiB7CisgICAgICAgICAg
ICAgICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKCcyMDE3LTAxLTE1VDE2OjEyOjAwWicpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVscyA9IFRpbWVTZXJpZXNDaGFydC5jb21wdXRlVGlt
ZUdyaWQoK2VuZFRpbWUsICtlbmRUaW1lICsgMTIgKiBtaWxsaXNlY29uZHNQZXJIb3VyLCA2KTsK
KyAgICAgICAgICAgICAgICBleHBlY3QobGFiZWxzKS50by5iZS5hKCdhcnJheScpOworICAgICAg
ICAgICAgICAgIGV4cGVjdChsYWJlbHMubGVuZ3RoKS50by5iZSg2KTsKKyAgICAgICAgICAgICAg
ICBjaGVja0dyaWRJdGVtKGxhYmVsc1swXSwgJzZQTScsICcyMDE3LTAxLTE1VDE4OjAwOjAwWicp
OworICAgICAgICAgICAgICAgIGNoZWNrR3JpZEl0ZW0obGFiZWxzWzFdLCAnOFBNJywgJzIwMTct
MDEtMTVUMjA6MDA6MDBaJyk7CisgICAgICAgICAgICAgICAgY2hlY2tHcmlkSXRlbShsYWJlbHNb
Ml0sICcxMFBNJywgJzIwMTctMDEtMTVUMjI6MDA6MDBaJyk7CisgICAgICAgICAgICAgICAgY2hl
Y2tHcmlkSXRlbShsYWJlbHNbM10sICcxLzE2JywgJzIwMTctMDEtMTZUMDA6MDA6MDBaJyk7Cisg
ICAgICAgICAgICAgICAgY2hlY2tHcmlkSXRlbShsYWJlbHNbNF0sICcyQU0nLCAnMjAxNy0wMS0x
NlQwMjowMDowMFonKTsKKyAgICAgICAgICAgICAgICBjaGVja0dyaWRJdGVtKGxhYmVsc1s1XSwg
JzRBTScsICcyMDE3LTAxLTE2VDA0OjAwOjAwWicpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworCisgICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgdGhyZWUgdHdvLWhvdXIgbGFiZWxz
IGZvciBzaXggaG91ciBpbnRlcnZhbCB0aGF0IGNyb3NzIGEgeWVhciB3aGVuIG1heExhYmVscyBp
cyA1JywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5p
bXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnKS50aGVuKChUaW1lU2VyaWVz
Q2hhcnQpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gbmV3IERhdGUoJzIw
MTYtMTItMzFUMjE6Mzc6MDBaJyk7CisgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gVGlt
ZVNlcmllc0NoYXJ0LmNvbXB1dGVUaW1lR3JpZCgrZW5kVGltZSwgK2VuZFRpbWUgKyA2ICogbWls
bGlzZWNvbmRzUGVySG91ciwgNSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGxhYmVscykudG8u
YmUuYSgnYXJyYXknKTsKKyAgICAgICAgICAgICAgICBleHBlY3QobGFiZWxzLmxlbmd0aCkudG8u
YmUoMyk7CisgICAgICAgICAgICAgICAgY2hlY2tHcmlkSXRlbShsYWJlbHNbMF0sICcxMFBNJywg
JzIwMTYtMTItMzFUMjI6MDA6MDBaJyk7CisgICAgICAgICAgICAgICAgY2hlY2tHcmlkSXRlbShs
YWJlbHNbMV0sICcxLzEnLCAnMjAxNy0wMS0wMVQwMDowMDowMFonKTsKKyAgICAgICAgICAgICAg
ICBjaGVja0dyaWRJdGVtKGxhYmVsc1syXSwgJzJBTScsICcyMDE3LTAxLTAxVDAyOjAwOjAwWicp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgZ2Vu
ZXJhdGUgb25lIG9uZS1kYXkgbGFiZWwgZm9yIG9uZSBkYXkgaW50ZXJ2YWwgd2hlbiBtYXhMYWJl
bHMgaXMgMScsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQnJvd3NpbmdDb250ZXh0
KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnVGltZVNlcmllc0NoYXJ0JykudGhlbigoVGltZVNl
cmllc0NoYXJ0KSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRl
KCcyMDE3LTAxLTE1VDA3OjUzOjAwWicpOworICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVscyA9
IFRpbWVTZXJpZXNDaGFydC5jb21wdXRlVGltZUdyaWQoZW5kVGltZSAtIG1pbGxpc2Vjb25kc1Bl
ckRheSwgK2VuZFRpbWUsIDEpOworICAgICAgICAgICAgICAgIGV4cGVjdChsYWJlbHMpLnRvLmJl
LmEoJ2FycmF5Jyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGxhYmVscy5sZW5ndGgpLnRvLmJl
KDEpOworICAgICAgICAgICAgICAgIGNoZWNrR3JpZEl0ZW0obGFiZWxzWzBdLCAnMS8xNScsICcy
MDE3LTAxLTE1VDAwOjAwOjAwWicpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgdHdvIG9uZS1kYXkgbGFiZWxzIGZvciBvbmUgZGF5
IGludGVydmFsIHdoZW4gbWF4TGFiZWxzIGlzIDInLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1
cm4gbmV3IEJyb3dzaW5nQ29udGV4dCgpLmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ1RpbWVTZXJp
ZXNDaGFydCcpLnRoZW4oKFRpbWVTZXJpZXNDaGFydCkgPT4geworICAgICAgICAgICAgICAgIGNv
bnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgnMjAxNy0wMS0xNVQwNzo1MzowMFonKTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBsYWJlbHMgPSBUaW1lU2VyaWVzQ2hhcnQuY29tcHV0ZVRpbWVHcmlkKGVu
ZFRpbWUgLSBtaWxsaXNlY29uZHNQZXJEYXksICtlbmRUaW1lLCAyKTsKKyAgICAgICAgICAgICAg
ICBleHBlY3QobGFiZWxzKS50by5iZS5hKCdhcnJheScpOworICAgICAgICAgICAgICAgIGV4cGVj
dChsYWJlbHMubGVuZ3RoKS50by5iZSgyKTsKKyAgICAgICAgICAgICAgICBjaGVja0dyaWRJdGVt
KGxhYmVsc1swXSwgJzEvMTQgMTJQTScsICcyMDE3LTAxLTE0VDEyOjAwOjAwWicpOworICAgICAg
ICAgICAgICAgIGNoZWNrR3JpZEl0ZW0obGFiZWxzWzFdLCAnMS8xNScsICcyMDE3LTAxLTE1VDAw
OjAwOjAwWicpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdz
aG91bGQgZ2VuZXJhdGUgZm91ciBoYWxmLWRheSBsYWJlbHMgZm9yIHR3byBkYXkgaW50ZXJ2YWwg
d2hlbiBtYXhMYWJlbHMgaXMgNScsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQnJv
d3NpbmdDb250ZXh0KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnVGltZVNlcmllc0NoYXJ0Jyku
dGhlbigoVGltZVNlcmllc0NoYXJ0KSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgZW5kVGlt
ZSA9IG5ldyBEYXRlKCcyMDE3LTAxLTE1VDE2OjEyOjAwWicpOworICAgICAgICAgICAgICAgIGNv
bnN0IGxhYmVscyA9IFRpbWVTZXJpZXNDaGFydC5jb21wdXRlVGltZUdyaWQoK2VuZFRpbWUsICtl
bmRUaW1lICsgMiAqIG1pbGxpc2Vjb25kc1BlckRheSwgNSk7CisgICAgICAgICAgICAgICAgZXhw
ZWN0KGxhYmVscykudG8uYmUuYSgnYXJyYXknKTsKKyAgICAgICAgICAgICAgICBleHBlY3QobGFi
ZWxzLmxlbmd0aCkudG8uYmUoNCk7CisgICAgICAgICAgICAgICAgY2hlY2tHcmlkSXRlbShsYWJl
bHNbMF0sICcxLzE2JywgJzIwMTctMDEtMTZUMDA6MDA6MDBaJyk7CisgICAgICAgICAgICAgICAg
Y2hlY2tHcmlkSXRlbShsYWJlbHNbMV0sICcxMlBNJywgJzIwMTctMDEtMTZUMTI6MDA6MDBaJyk7
CisgICAgICAgICAgICAgICAgY2hlY2tHcmlkSXRlbShsYWJlbHNbMl0sICcxLzE3JywgJzIwMTct
MDEtMTdUMDA6MDA6MDBaJyk7CisgICAgICAgICAgICAgICAgY2hlY2tHcmlkSXRlbShsYWJlbHNb
M10sICcxMlBNJywgJzIwMTctMDEtMTdUMTI6MDA6MDBaJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBmb3VyIGhhbGYtZGF5IGxh
YmVscyBmb3IgdHdvIGRheSBpbnRlcnZhbCB0aGF0IGNyb3NzIGEgeWVhciB3aGVuIG1heExhYmVs
cyBpcyA1JywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQo
KS5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnKS50aGVuKChUaW1lU2Vy
aWVzQ2hhcnQpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gbmV3IERhdGUo
JzIwMTYtMTItMzFUMDk6MTI6MDBaJyk7CisgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxzID0g
VGltZVNlcmllc0NoYXJ0LmNvbXB1dGVUaW1lR3JpZCgrZW5kVGltZSwgK2VuZFRpbWUgKyAyICog
bWlsbGlzZWNvbmRzUGVyRGF5LCA1KTsKKyAgICAgICAgICAgICAgICBleHBlY3QobGFiZWxzKS50
by5iZS5hKCdhcnJheScpOworICAgICAgICAgICAgICAgIGV4cGVjdChsYWJlbHMubGVuZ3RoKS50
by5iZSg0KTsKKyAgICAgICAgICAgICAgICBjaGVja0dyaWRJdGVtKGxhYmVsc1swXSwgJzEyLzMx
IDEyUE0nLCAnMjAxNi0xMi0zMVQxMjowMDowMFonKTsKKyAgICAgICAgICAgICAgICBjaGVja0dy
aWRJdGVtKGxhYmVsc1sxXSwgJzEvMScsICcyMDE3LTAxLTAxVDAwOjAwOjAwWicpOworICAgICAg
ICAgICAgICAgIGNoZWNrR3JpZEl0ZW0obGFiZWxzWzJdLCAnMTJQTScsICcyMDE3LTAxLTAxVDEy
OjAwOjAwWicpOworICAgICAgICAgICAgICAgIGNoZWNrR3JpZEl0ZW0obGFiZWxzWzNdLCAnMS8y
JywgJzIwMTctMDEtMDJUMDA6MDA6MDBaJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBzZXZlbiBwZXItZGF5IGxhYmVscyBmb3Ig
b25lIHdlZWsgaW50ZXJ2YWwgd2hlbiBtYXhMYWJlbHMgaXMgMTAnLCAoKSA9PiB7CisgICAgICAg
ICAgICByZXR1cm4gbmV3IEJyb3dzaW5nQ29udGV4dCgpLmltcG9ydFNjcmlwdHMoc2NyaXB0cywg
J1RpbWVTZXJpZXNDaGFydCcpLnRoZW4oKFRpbWVTZXJpZXNDaGFydCkgPT4geworICAgICAgICAg
ICAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgnMjAxNy0wMS0xNVQwNzo1MzowMFonKTsK
KyAgICAgICAgICAgICAgICBjb25zdCBsYWJlbHMgPSBUaW1lU2VyaWVzQ2hhcnQuY29tcHV0ZVRp
bWVHcmlkKGVuZFRpbWUgLSA3ICogbWlsbGlzZWNvbmRzUGVyRGF5LCBlbmRUaW1lLCAxMCk7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0KGxhYmVscykudG8uYmUuYSgnYXJyYXknKTsKKyAgICAgICAg
ICAgICAgICBleHBlY3QobGFiZWxzLmxlbmd0aCkudG8uYmUoNyk7CisgICAgICAgICAgICAgICAg
Y2hlY2tHcmlkSXRlbShsYWJlbHNbMF0sICcxLzknLCAnMjAxNy0wMS0wOVQwMDowMDowMFonKTsK
KyAgICAgICAgICAgICAgICBjaGVja0dyaWRJdGVtKGxhYmVsc1sxXSwgJzEvMTAnLCAnMjAxNy0w
MS0xMFQwMDowMDowMFonKTsKKyAgICAgICAgICAgICAgICBjaGVja0dyaWRJdGVtKGxhYmVsc1sy
XSwgJzEvMTEnLCAnMjAxNy0wMS0xMVQwMDowMDowMFonKTsKKyAgICAgICAgICAgICAgICBjaGVj
a0dyaWRJdGVtKGxhYmVsc1szXSwgJzEvMTInLCAnMjAxNy0wMS0xMlQwMDowMDowMFonKTsKKyAg
ICAgICAgICAgICAgICBjaGVja0dyaWRJdGVtKGxhYmVsc1s0XSwgJzEvMTMnLCAnMjAxNy0wMS0x
M1QwMDowMDowMFonKTsKKyAgICAgICAgICAgICAgICBjaGVja0dyaWRJdGVtKGxhYmVsc1s1XSwg
JzEvMTQnLCAnMjAxNy0wMS0xNFQwMDowMDowMFonKTsKKyAgICAgICAgICAgICAgICBjaGVja0dy
aWRJdGVtKGxhYmVsc1s2XSwgJzEvMTUnLCAnMjAxNy0wMS0xNVQwMDowMDowMFonKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIHRo
cmVlIHR3by1kYXkgbGFiZWxzIGZvciBvbmUgd2VlayBpbnRlcnZhbCB3aGVuIG1heExhYmVscyBp
cyA0JywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5p
bXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnKS50aGVuKChUaW1lU2VyaWVz
Q2hhcnQpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gbmV3IERhdGUoJzIw
MTctMDEtMTVUMDc6NTM6MDBaJyk7CisgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gVGlt
ZVNlcmllc0NoYXJ0LmNvbXB1dGVUaW1lR3JpZChlbmRUaW1lIC0gNyAqIG1pbGxpc2Vjb25kc1Bl
ckRheSwgZW5kVGltZSwgNCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGxhYmVscykudG8uYmUu
YSgnYXJyYXknKTsKKyAgICAgICAgICAgICAgICBleHBlY3QobGFiZWxzLmxlbmd0aCkudG8uYmUo
Myk7CisgICAgICAgICAgICAgICAgY2hlY2tHcmlkSXRlbShsYWJlbHNbMF0sICcxLzEwJywgJzIw
MTctMDEtMTBUMDA6MDA6MDBaJyk7CisgICAgICAgICAgICAgICAgY2hlY2tHcmlkSXRlbShsYWJl
bHNbMV0sICcxLzEyJywgJzIwMTctMDEtMTJUMDA6MDA6MDBaJyk7CisgICAgICAgICAgICAgICAg
Y2hlY2tHcmlkSXRlbShsYWJlbHNbMl0sICcxLzE0JywgJzIwMTctMDEtMTRUMDA6MDA6MDBaJyk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBnZW5l
cmF0ZSBzZXZlbiBvbmUtZGF5IGxhYmVscyBmb3IgdHdvIHdlZWsgaW50ZXJ2YWwgd2hlbiBtYXhM
YWJlbHMgaXMgOCcsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQnJvd3NpbmdDb250
ZXh0KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnVGltZVNlcmllc0NoYXJ0JykudGhlbigoVGlt
ZVNlcmllc0NoYXJ0KSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgZW5kVGltZSA9IG5ldyBE
YXRlKCcyMDE3LTAxLTE1VDE4OjUzOjAwWicpOworICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVs
cyA9IFRpbWVTZXJpZXNDaGFydC5jb21wdXRlVGltZUdyaWQoK2VuZFRpbWUsICtlbmRUaW1lICsg
MTQgKiBtaWxsaXNlY29uZHNQZXJEYXksIDgpOworICAgICAgICAgICAgICAgIGV4cGVjdChsYWJl
bHMpLnRvLmJlLmEoJ2FycmF5Jyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGxhYmVscy5sZW5n
dGgpLnRvLmJlKDcpOworICAgICAgICAgICAgICAgIGNoZWNrR3JpZEl0ZW0obGFiZWxzWzBdLCAn
MS8xNycsICcyMDE3LTAxLTE3VDAwOjAwOjAwWicpOworICAgICAgICAgICAgICAgIGNoZWNrR3Jp
ZEl0ZW0obGFiZWxzWzFdLCAnMS8xOScsICcyMDE3LTAxLTE5VDAwOjAwOjAwWicpOworICAgICAg
ICAgICAgICAgIGNoZWNrR3JpZEl0ZW0obGFiZWxzWzJdLCAnMS8yMScsICcyMDE3LTAxLTIxVDAw
OjAwOjAwWicpOworICAgICAgICAgICAgICAgIGNoZWNrR3JpZEl0ZW0obGFiZWxzWzNdLCAnMS8y
MycsICcyMDE3LTAxLTIzVDAwOjAwOjAwWicpOworICAgICAgICAgICAgICAgIGNoZWNrR3JpZEl0
ZW0obGFiZWxzWzRdLCAnMS8yNScsICcyMDE3LTAxLTI1VDAwOjAwOjAwWicpOworICAgICAgICAg
ICAgICAgIGNoZWNrR3JpZEl0ZW0obGFiZWxzWzVdLCAnMS8yNycsICcyMDE3LTAxLTI3VDAwOjAw
OjAwWicpOworICAgICAgICAgICAgICAgIGNoZWNrR3JpZEl0ZW0obGFiZWxzWzZdLCAnMS8yOScs
ICcyMDE3LTAxLTI5VDAwOjAwOjAwWicpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgdHdvIG9uZS13ZWVrIGxhYmVscyBmb3IgdHdv
IHdlZWsgaW50ZXJ2YWwgd2hlbiBtYXhMYWJlbHMgaXMgMycsICgpID0+IHsKKyAgICAgICAgICAg
IHJldHVybiBuZXcgQnJvd3NpbmdDb250ZXh0KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnVGlt
ZVNlcmllc0NoYXJ0JykudGhlbigoVGltZVNlcmllc0NoYXJ0KSA9PiB7CisgICAgICAgICAgICAg
ICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKCcyMDE3LTAxLTE1VDE4OjUzOjAwWicpOworICAg
ICAgICAgICAgICAgIGNvbnN0IGxhYmVscyA9IFRpbWVTZXJpZXNDaGFydC5jb21wdXRlVGltZUdy
aWQoK2VuZFRpbWUsICtlbmRUaW1lICsgMTQgKiBtaWxsaXNlY29uZHNQZXJEYXksIDMpOworICAg
ICAgICAgICAgICAgIGV4cGVjdChsYWJlbHMpLnRvLmJlLmEoJ2FycmF5Jyk7CisgICAgICAgICAg
ICAgICAgZXhwZWN0KGxhYmVscy5sZW5ndGgpLnRvLmJlKDIpOworICAgICAgICAgICAgICAgIGNo
ZWNrR3JpZEl0ZW0obGFiZWxzWzBdLCAnMS8yMicsICcyMDE3LTAxLTIyVDAwOjAwOjAwWicpOwor
ICAgICAgICAgICAgICAgIGNoZWNrR3JpZEl0ZW0obGFiZWxzWzFdLCAnMS8yOScsICcyMDE3LTAx
LTI5VDAwOjAwOjAwWicpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwor
CisgICAgZGVzY3JpYmUoJ2NvbXB1dGVWYWx1ZUdyaWQnLCAoKSA9PiB7CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tWYWx1ZUdyaWQoYWN0dWFsLCBleHBlY3RlZCkgeworICAgICAgICAgICAgZXhw
ZWN0KGFjdHVhbCkudG8uYmUuYSgnYXJyYXknKTsKKyAgICAgICAgICAgIGV4cGVjdChKU09OLnN0
cmluZ2lmeShhY3R1YWwpKS50by5iZShKU09OLnN0cmluZ2lmeShleHBlY3RlZCkpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gYXBwcm94aW1hdGUobnVtYmVyKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChudW1iZXIgKiAxMDAwMDAwMDApIC8gMTAwMDAw
MDAwOworICAgICAgICB9CisKKyAgICAgICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBbMC41LCAxLjAs
IDEuNSwgMi4wXSBmb3IgWzAuMywgMi4zXSB3aGVuIG1heExhYmVscyBpcyA1JywgKCkgPT4gewor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5pbXBvcnRTY3JpcHRzKHNj
cmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnLCAnTWV0cmljJykudGhlbigoc3ltYm9scykgPT4gewor
ICAgICAgICAgICAgICAgIGNvbnN0IFtUaW1lU2VyaWVzQ2hhcnQsIE1ldHJpY10gPSBzeW1ib2xz
OworICAgICAgICAgICAgICAgIGNvbnN0IGdyaWQgPSBUaW1lU2VyaWVzQ2hhcnQuY29tcHV0ZVZh
bHVlR3JpZCgwLjMsIDIuMywgNSwgTWV0cmljLm1ha2VGb3JtYXR0ZXIoJ3B0JywgMikpOworICAg
ICAgICAgICAgICAgIGV4cGVjdChncmlkLm1hcCgoaXRlbSkgPT4gYXBwcm94aW1hdGUoaXRlbS52
YWx1ZSkpKS50by5lcWwoWzAuNSwgMS4wLCAxLjUsIDIuMF0pOworICAgICAgICAgICAgICAgIGV4
cGVjdChncmlkLm1hcCgoaXRlbSkgPT4gaXRlbS5sYWJlbCkpLnRvLmVxbChbJzAuNSBwdCcsICcx
LjAgcHQnLCAnMS41IHB0JywgJzIuMCBwdCddKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKworICAgICAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIFswLjQsIDAuNiwgMC44LCAxLCAxLjIs
IDEuNCwgMS42LCAxLjgsIDIsIDIuMl0gZm9yIFswLjMsIDIuM10gd2hlbiBtYXhMYWJlbHMgaXMg
MTAnLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEJyb3dzaW5nQ29udGV4dCgpLmlt
cG9ydFNjcmlwdHMoc2NyaXB0cywgJ1RpbWVTZXJpZXNDaGFydCcsICdNZXRyaWMnKS50aGVuKChz
eW1ib2xzKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgW1RpbWVTZXJpZXNDaGFydCwgTWV0
cmljXSA9IHN5bWJvbHM7CisgICAgICAgICAgICAgICAgY29uc3QgZ3JpZCA9IFRpbWVTZXJpZXND
aGFydC5jb21wdXRlVmFsdWVHcmlkKDAuMywgMi4zLCAxMCwgTWV0cmljLm1ha2VGb3JtYXR0ZXIo
J3B0JywgMikpOworICAgICAgICAgICAgICAgIGV4cGVjdChncmlkLm1hcCgoaXRlbSkgPT4gYXBw
cm94aW1hdGUoaXRlbS52YWx1ZSkpKS50by5lcWwoWzAuNCwgMC42LCAwLjgsIDEsIDEuMiwgMS40
LCAxLjYsIDEuOCwgMiwgMi4yXSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGdyaWQubWFwKChp
dGVtKSA9PiBpdGVtLmxhYmVsKSkudG8uZXFsKFsnMC40IHB0JywgJzAuNiBwdCcsICcwLjggcHQn
LCAnMS4wIHB0JywgJzEuMiBwdCcsICcxLjQgcHQnLCAnMS42IHB0JywgJzEuOCBwdCcsICcyLjAg
cHQnLCAnMi4yIHB0J10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAg
IGl0KCdzaG91bGQgZ2VuZXJhdGUgWzEsIDJdIGZvciBbMC4zLCAyLjNdIHdoZW4gbWF4TGFiZWxz
IGlzIDInLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEJyb3dzaW5nQ29udGV4dCgp
LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ1RpbWVTZXJpZXNDaGFydCcsICdNZXRyaWMnKS50aGVu
KChzeW1ib2xzKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgW1RpbWVTZXJpZXNDaGFydCwg
TWV0cmljXSA9IHN5bWJvbHM7CisgICAgICAgICAgICAgICAgY29uc3QgZ3JpZCA9IFRpbWVTZXJp
ZXNDaGFydC5jb21wdXRlVmFsdWVHcmlkKDAuMywgMi4zLCAyLCBNZXRyaWMubWFrZUZvcm1hdHRl
cigncHQnLCAyKSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGdyaWQubWFwKChpdGVtKSA9PiBp
dGVtLnZhbHVlKSkudG8uZXFsKFsxLCAyXSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGdyaWQu
bWFwKChpdGVtKSA9PiBpdGVtLmxhYmVsKSkudG8uZXFsKFsnMS4wIHB0JywgJzIuMCBwdCddKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGdlbmVy
YXRlIFswLjQsIDAuNiwgMC44LCAxLjAsIDEuMl0gZm9yIFswLjMsIDEuM10gd2hlbiBtYXhMYWJl
bHMgaXMgNScsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQnJvd3NpbmdDb250ZXh0
KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnVGltZVNlcmllc0NoYXJ0JywgJ01ldHJpYycpLnRo
ZW4oKHN5bWJvbHMpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBbVGltZVNlcmllc0NoYXJ0
LCBNZXRyaWNdID0gc3ltYm9sczsKKyAgICAgICAgICAgICAgICBjb25zdCBncmlkID0gVGltZVNl
cmllc0NoYXJ0LmNvbXB1dGVWYWx1ZUdyaWQoMC4zLCAxLjMsIDUsIE1ldHJpYy5tYWtlRm9ybWF0
dGVyKCdwdCcsIDIpKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoZ3JpZC5tYXAoKGl0ZW0pID0+
IGFwcHJveGltYXRlKGl0ZW0udmFsdWUpKSkudG8uZXFsKFswLjQsIDAuNiwgMC44LCAxLjAsIDEu
Ml0pOworICAgICAgICAgICAgICAgIGV4cGVjdChncmlkLm1hcCgoaXRlbSkgPT4gaXRlbS5sYWJl
bCkpLnRvLmVxbChbJzAuNCBwdCcsICcwLjYgcHQnLCAnMC44IHB0JywgJzEuMCBwdCcsICcxLjIg
cHQnXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3Vs
ZCBnZW5lcmF0ZSBbMC4yLCAwLjQsIDAuNiwgMC44LCAxLCAxLjJdIGZvciBbMC4yLCAxLjNdIHdo
ZW4gbWF4TGFiZWxzIGlzIDEwJywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93
c2luZ0NvbnRleHQoKS5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnLCAn
TWV0cmljJykudGhlbigoc3ltYm9scykgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IFtUaW1l
U2VyaWVzQ2hhcnQsIE1ldHJpY10gPSBzeW1ib2xzOworICAgICAgICAgICAgICAgIGNvbnN0IGdy
aWQgPSBUaW1lU2VyaWVzQ2hhcnQuY29tcHV0ZVZhbHVlR3JpZCgwLjIsIDEuMywgMTAsIE1ldHJp
Yy5tYWtlRm9ybWF0dGVyKCdwdCcsIDIpKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoZ3JpZC5t
YXAoKGl0ZW0pID0+IGFwcHJveGltYXRlKGl0ZW0udmFsdWUpKSkudG8uZXFsKFswLjIsIDAuNCwg
MC42LCAwLjgsIDEsIDEuMl0pOworICAgICAgICAgICAgICAgIGV4cGVjdChncmlkLm1hcCgoaXRl
bSkgPT4gaXRlbS5sYWJlbCkpLnRvLmVxbChbJzAuMiBwdCcsICcwLjQgcHQnLCAnMC42IHB0Jywg
JzAuOCBwdCcsICcxLjAgcHQnLCAnMS4yIHB0J10pOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworCisgICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgWzAuNSwgMS4wXSBmb3IgWzAuMywg
MS4zXSB3aGVuIG1heExhYmVscyBpcyA0JywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIG5l
dyBCcm93c2luZ0NvbnRleHQoKS5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hh
cnQnLCAnTWV0cmljJykudGhlbigoc3ltYm9scykgPT4geworICAgICAgICAgICAgICAgIGNvbnN0
IFtUaW1lU2VyaWVzQ2hhcnQsIE1ldHJpY10gPSBzeW1ib2xzOworICAgICAgICAgICAgICAgIGNv
bnN0IGdyaWQgPSBUaW1lU2VyaWVzQ2hhcnQuY29tcHV0ZVZhbHVlR3JpZCgwLjMsIDEuMywgNCwg
TWV0cmljLm1ha2VGb3JtYXR0ZXIoJ3B0JywgMikpOworICAgICAgICAgICAgICAgIGV4cGVjdChn
cmlkLm1hcCgoaXRlbSkgPT4gYXBwcm94aW1hdGUoaXRlbS52YWx1ZSkpKS50by5lcWwoWzAuNSwg
MS4wXSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGdyaWQubWFwKChpdGVtKSA9PiBpdGVtLmxh
YmVsKSkudG8uZXFsKFsnMC41IHB0JywgJzEuMCBwdCddKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIFsxMCwgMjAsIDMwXSBmb3Ig
WzQsIDM1XSB3aGVuIG1heExhYmVscyBpcyA0JywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJu
IG5ldyBCcm93c2luZ0NvbnRleHQoKS5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVz
Q2hhcnQnLCAnTWV0cmljJykudGhlbigoc3ltYm9scykgPT4geworICAgICAgICAgICAgICAgIGNv
bnN0IFtUaW1lU2VyaWVzQ2hhcnQsIE1ldHJpY10gPSBzeW1ib2xzOworICAgICAgICAgICAgICAg
IGNvbnN0IGdyaWQgPSBUaW1lU2VyaWVzQ2hhcnQuY29tcHV0ZVZhbHVlR3JpZCg0LCAzNSwgNCwg
TWV0cmljLm1ha2VGb3JtYXR0ZXIoJ3B0JywgMikpOworICAgICAgICAgICAgICAgIGV4cGVjdChn
cmlkLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSkpLnRvLmVxbChbMTAsIDIwLCAzMF0pOworICAg
ICAgICAgICAgICAgIGV4cGVjdChncmlkLm1hcCgoaXRlbSkgPT4gaXRlbS5sYWJlbCkpLnRvLmVx
bChbJzEwIHB0JywgJzIwIHB0JywgJzMwIHB0J10pOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworCisgICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgWzEwLCAyMCwgMzBdIGZvciBbNCwg
MzVdIHdoZW4gbWF4TGFiZWxzIGlzIDYnLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gbmV3
IEJyb3dzaW5nQ29udGV4dCgpLmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ1RpbWVTZXJpZXNDaGFy
dCcsICdNZXRyaWMnKS50aGVuKChzeW1ib2xzKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3Qg
W1RpbWVTZXJpZXNDaGFydCwgTWV0cmljXSA9IHN5bWJvbHM7CisgICAgICAgICAgICAgICAgY29u
c3QgZ3JpZCA9IFRpbWVTZXJpZXNDaGFydC5jb21wdXRlVmFsdWVHcmlkKDQsIDM1LCA2LCBNZXRy
aWMubWFrZUZvcm1hdHRlcigncHQnLCAyKSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGdyaWQu
bWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKSkudG8uZXFsKFsxMCwgMjAsIDMwXSk7CisgICAgICAg
ICAgICAgICAgZXhwZWN0KGdyaWQubWFwKChpdGVtKSA9PiBpdGVtLmxhYmVsKSkudG8uZXFsKFsn
MTAgcHQnLCAnMjAgcHQnLCAnMzAgcHQnXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBbMTAsIDE1LCAyMCwgMjUsIDMwLCAzNV0g
Zm9yIFs2LCAzNV0gd2hlbiBtYXhMYWJlbHMgaXMgNicsICgpID0+IHsKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgQnJvd3NpbmdDb250ZXh0KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnVGltZVNl
cmllc0NoYXJ0JywgJ01ldHJpYycpLnRoZW4oKHN5bWJvbHMpID0+IHsKKyAgICAgICAgICAgICAg
ICBjb25zdCBbVGltZVNlcmllc0NoYXJ0LCBNZXRyaWNdID0gc3ltYm9sczsKKyAgICAgICAgICAg
ICAgICBjb25zdCBncmlkID0gVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVWYWx1ZUdyaWQoNiwgMzUs
IDYsIE1ldHJpYy5tYWtlRm9ybWF0dGVyKCdwdCcsIDIpKTsKKyAgICAgICAgICAgICAgICBleHBl
Y3QoZ3JpZC5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpKS50by5lcWwoWzEwLCAxNSwgMjAsIDI1
LCAzMCwgMzVdKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoZ3JpZC5tYXAoKGl0ZW0pID0+IGl0
ZW0ubGFiZWwpKS50by5lcWwoWycxMCBwdCcsICcxNSBwdCcsICcyMCBwdCcsICcyNSBwdCcsICcz
MCBwdCcsICczNSBwdCddKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAg
ICBpdCgnc2hvdWxkIGdlbmVyYXRlIFsxMTAsIDExNSwgMTIwLCAxMjUsIDEzMF0gZm9yIFsxMDcs
IDEzNF0gd2hlbiBtYXhMYWJlbHMgaXMgNicsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBu
ZXcgQnJvd3NpbmdDb250ZXh0KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnVGltZVNlcmllc0No
YXJ0JywgJ01ldHJpYycpLnRoZW4oKHN5bWJvbHMpID0+IHsKKyAgICAgICAgICAgICAgICBjb25z
dCBbVGltZVNlcmllc0NoYXJ0LCBNZXRyaWNdID0gc3ltYm9sczsKKyAgICAgICAgICAgICAgICBj
b25zdCBncmlkID0gVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVWYWx1ZUdyaWQoMTA3LCAxMzQsIDYs
IE1ldHJpYy5tYWtlRm9ybWF0dGVyKCdwdCcsIDMpKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
Z3JpZC5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpKS50by5lcWwoWzExMCwgMTE1LCAxMjAsIDEy
NSwgMTMwXSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGdyaWQubWFwKChpdGVtKSA9PiBpdGVt
LmxhYmVsKSkudG8uZXFsKFsnMTEwIHB0JywgJzExNSBwdCcsICcxMjAgcHQnLCAnMTI1IHB0Jywg
JzEzMCBwdCddKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgn
c2hvdWxkIGdlbmVyYXRlIFs1ZTcsIDEwZTddIGZvciBbMWU3LCAxZThdIHdoZW4gbWF4TGFiZWxz
IGlzIDQnLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEJyb3dzaW5nQ29udGV4dCgp
LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ1RpbWVTZXJpZXNDaGFydCcsICdNZXRyaWMnKS50aGVu
KChzeW1ib2xzKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgW1RpbWVTZXJpZXNDaGFydCwg
TWV0cmljXSA9IHN5bWJvbHM7CisgICAgICAgICAgICAgICAgY29uc3QgZ3JpZCA9IFRpbWVTZXJp
ZXNDaGFydC5jb21wdXRlVmFsdWVHcmlkKDFlNywgMWU4LCA0LCBNZXRyaWMubWFrZUZvcm1hdHRl
cigncHQnLCAzKSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGdyaWQubWFwKChpdGVtKSA9PiBp
dGVtLnZhbHVlKSkudG8uZXFsKFs1ZTcsIDEwZTddKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
Z3JpZC5tYXAoKGl0ZW0pID0+IGl0ZW0ubGFiZWwpKS50by5lcWwoWyc1MC4wIE1wdCcsICcxMDAg
TXB0J10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91
bGQgZ2VuZXJhdGUgWzJlNywgNGU3LCA2ZTcsIDhlNywgMTBlN10gZm9yIFsxZTcsIDFlOF0gd2hl
biBtYXhMYWJlbHMgaXMgNScsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQnJvd3Np
bmdDb250ZXh0KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnVGltZVNlcmllc0NoYXJ0JywgJ01l
dHJpYycpLnRoZW4oKHN5bWJvbHMpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBbVGltZVNl
cmllc0NoYXJ0LCBNZXRyaWNdID0gc3ltYm9sczsKKyAgICAgICAgICAgICAgICBjb25zdCBncmlk
ID0gVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVWYWx1ZUdyaWQoMWU3LCAxZTgsIDUsIE1ldHJpYy5t
YWtlRm9ybWF0dGVyKCdwdCcsIDMpKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoZ3JpZC5tYXAo
KGl0ZW0pID0+IGl0ZW0udmFsdWUpKS50by5lcWwoWzJlNywgNGU3LCA2ZTcsIDhlNywgMTBlN10p
OworICAgICAgICAgICAgICAgIGV4cGVjdChncmlkLm1hcCgoaXRlbSkgPT4gaXRlbS5sYWJlbCkp
LnRvLmVxbChbJzIwLjAgTXB0JywgJzQwLjAgTXB0JywgJzYwLjAgTXB0JywgJzgwLjAgTXB0Jywg
JzEwMCBNcHQnXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQo
J3Nob3VsZCBnZW5lcmF0ZSBbLTEuNSwgLTEuMCwgLTAuNSwgMC4wLCAwLjVdIGZvciBbLTEuOCwg
MC43XSB3aGVuIG1heExhYmVscyBpcyA1JywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIG5l
dyBCcm93c2luZ0NvbnRleHQoKS5pbXBvcnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hh
cnQnLCAnTWV0cmljJykudGhlbigoc3ltYm9scykgPT4geworICAgICAgICAgICAgICAgIGNvbnN0
IFtUaW1lU2VyaWVzQ2hhcnQsIE1ldHJpY10gPSBzeW1ib2xzOworICAgICAgICAgICAgICAgIGNv
bnN0IGdyaWQgPSBUaW1lU2VyaWVzQ2hhcnQuY29tcHV0ZVZhbHVlR3JpZCgtMS44LCAwLjcsIDUs
IE1ldHJpYy5tYWtlRm9ybWF0dGVyKCdwdCcsIDIpKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
Z3JpZC5tYXAoKGl0ZW0pID0+IGFwcHJveGltYXRlKGl0ZW0udmFsdWUpKSkudG8uZXFsKFstMS41
LCAtMS4wLCAtMC41LCAwLjAsIDAuNV0pOworICAgICAgICAgICAgICAgIGV4cGVjdChncmlkLm1h
cCgoaXRlbSkgPT4gaXRlbS5sYWJlbCkpLnRvLmVxbChbJy0xLjUgcHQnLCAnLTEuMCBwdCcsICct
MC41IHB0JywgJzAuMCBwdCcsICcwLjUgcHQnXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBbMjAwbXMsIDQwMG1zLCA2MDBtcywg
ODAwbXMsIDEuMDBzLCAxLjIwc10gZm9yIFswLjIsIDEuM10gd2hlbiBtYXhMYWJlbHMgaXMgMTAg
YW5kIHVuaXQgaXMgc2Vjb25kcycsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQnJv
d3NpbmdDb250ZXh0KCkuaW1wb3J0U2NyaXB0cyhzY3JpcHRzLCAnVGltZVNlcmllc0NoYXJ0Jywg
J01ldHJpYycpLnRoZW4oKHN5bWJvbHMpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBbVGlt
ZVNlcmllc0NoYXJ0LCBNZXRyaWNdID0gc3ltYm9sczsKKyAgICAgICAgICAgICAgICBjb25zdCBn
cmlkID0gVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVWYWx1ZUdyaWQoMC4yLCAxLjMsIDEwLCBNZXRy
aWMubWFrZUZvcm1hdHRlcigncycsIDMpKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoZ3JpZC5t
YXAoKGl0ZW0pID0+IGFwcHJveGltYXRlKGl0ZW0udmFsdWUpKSkudG8uZXFsKFswLjIsIDAuNCwg
MC42LCAwLjgsIDEsIDEuMl0pOworICAgICAgICAgICAgICAgIGV4cGVjdChncmlkLm1hcCgoaXRl
bSkgPT4gaXRlbS5sYWJlbCkpLnRvLmVxbChbJzIwMCBtcycsICc0MDAgbXMnLCAnNjAwIG1zJywg
JzgwMCBtcycsICcxLjAwIHMnLCAnMS4yMCBzJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworCisgICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgWzIuMEdCLCA0LjBHQiwgNi4wR0Jd
IGZvciBbMS4yR0IsIDcuMkdCXSB3aGVuIG1heExhYmVscyBpcyA0IGFuZCB1bml0IGlzIGJ5dGVz
JywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5pbXBv
cnRTY3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnLCAnTWV0cmljJykudGhlbigoc3lt
Ym9scykgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IFtUaW1lU2VyaWVzQ2hhcnQsIE1ldHJp
Y10gPSBzeW1ib2xzOworICAgICAgICAgICAgICAgIGNvbnN0IGdpZ2FieXRlcyA9IE1hdGgucG93
KDEwMjQsIDMpOworICAgICAgICAgICAgICAgIGNvbnN0IGdyaWQgPSBUaW1lU2VyaWVzQ2hhcnQu
Y29tcHV0ZVZhbHVlR3JpZCgxLjIgKiBnaWdhYnl0ZXMsIDcuMiAqIGdpZ2FieXRlcywgNCwgTWV0
cmljLm1ha2VGb3JtYXR0ZXIoJ0InLCAyKSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGdyaWQu
bWFwKChpdGVtKSA9PiBhcHByb3hpbWF0ZShpdGVtLnZhbHVlKSkpLnRvLmVxbChbMiAqIGdpZ2Fi
eXRlcywgNCAqIGdpZ2FieXRlcywgNiAqIGdpZ2FieXRlc10pOworICAgICAgICAgICAgICAgIGV4
cGVjdChncmlkLm1hcCgoaXRlbSkgPT4gaXRlbS5sYWJlbCkpLnRvLmVxbChbJzIuMCBHQicsICc0
LjAgR0InLCAnNi4wIEdCJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgWzAuNkdCLCAwLjhHQiwgMS4wR0IsIDEuMkdCXSBmb3Ig
WzAuNTNHQiwgMS4yM0dCXSB3aGVuIG1heExhYmVscyBpcyA0IGFuZCB1bml0IGlzIGJ5dGVzJywg
KCkgPT4geworICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm93c2luZ0NvbnRleHQoKS5pbXBvcnRT
Y3JpcHRzKHNjcmlwdHMsICdUaW1lU2VyaWVzQ2hhcnQnLCAnTWV0cmljJykudGhlbigoc3ltYm9s
cykgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IFtUaW1lU2VyaWVzQ2hhcnQsIE1ldHJpY10g
PSBzeW1ib2xzOworICAgICAgICAgICAgICAgIGNvbnN0IGdpZ2FieXRlcyA9IE1hdGgucG93KDEw
MjQsIDMpOworICAgICAgICAgICAgICAgIGNvbnN0IGdyaWQgPSBUaW1lU2VyaWVzQ2hhcnQuY29t
cHV0ZVZhbHVlR3JpZCgwLjUzICogZ2lnYWJ5dGVzLCAxLjIzICogZ2lnYWJ5dGVzLCA0LCBNZXRy
aWMubWFrZUZvcm1hdHRlcignQicsIDIpKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoZ3JpZC5t
YXAoKGl0ZW0pID0+IGl0ZW0ubGFiZWwpKS50by5lcWwoWycwLjYgR0InLCAnMC44IEdCJywgJzEu
MCBHQicsICcxLjIgR0InXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICB9
KTsKKworICAgIC8vIERhdGEgZnJvbSBodHRwczovL3BlcmYud2Via2l0Lm9yZy92My8jL2NoYXJ0
cz9wYW5lTGlzdD0oKDE1LTc2OSkpJnNpbmNlPTE0NzY0MjY0ODg0NjUKKyAgICBjb25zdCBzYW1w
bGVDbHVzdGVyID0geworICAgICAgICAiY2x1c3RlclN0YXJ0IjogOTQ2Njg0ODAwMDAwLAorICAg
ICAgICAiY2x1c3RlclNpemUiOiA1MTg0MDAwMDAwLAorICAgICAgICAiY29uZmlndXJhdGlvbnMi
OiB7CisgICAgICAgICAgICAiY3VycmVudCI6IFsKKyAgICAgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgICAgIDI2NTMwMDMxLCAxMzUuMjYzNzUsIDgwLCAxMDgyMS4xLCAxNDgxNjI4LjEz
LCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgWyBbMjcxNzMsIDEsICIyMTAwOTYiLCAxNDgy
Mzk4NTYyOTUwXSBdLAorICAgICAgICAgICAgICAgICAgICAxNDgyMzk4NTYyOTUwLCA1Mjk5OSwg
MTQ4MjQxMzIyMjMxMSwgIjEwODc3IiwgNworICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgICAyNjUzMDc3OSwgMTUzLjI2NzUsIDgwLCAxMjI2
MS40LCAxOTkxOTg3LjQsIHRydWUsIC8vIGNoYW5nZWQgdG8gdHJ1ZS4KKyAgICAgICAgICAgICAg
ICAgICAgWyBbMjcxNzQsMSwiMjEwMDk3IiwxNDgyNDI0ODcwNzI5XSBdLAorICAgICAgICAgICAg
ICAgICAgICAxNDgyNDI0ODcwNzI5LCA1MzAwMCwgMTQ4MjQyNDk5MjczNSwgIjEwODc4IiwgNwor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAg
ICAyNjUzMjI3NSwgMTM0LjI3MjUsIDgwLCAxMDc0MS44LCAxNDU4MzExLjg4LCBmYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgWyBbIDI3MTc2LCAxLCAiMjEwMTAyIiwgMTQ4MjQzMTQ2NDM3MSBd
IF0sCisgICAgICAgICAgICAgICAgICAgIDE0ODI0MzE0NjQzNzEsIDUzMDAyLCAxNDgyNDM2MDQx
ODY1LCAiMTA4NzkiLCA3CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgIDI2NTQ3MjI2LCAxNTAuOTYyNSwgODAsIDEyMDc3LCAxOTA4NjE0
Ljk0LCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgWyBbIDI3MTk1LCAxLCAiMjEwMTY4Iiwg
MTQ4Mjg1MjQxMjczNSBdIF0sCisgICAgICAgICAgICAgICAgICAgIDE0ODI4NTI0MTI3MzUsIDUz
MDIyLCAxNDgyODUyNDUyMTQzLCAiMTA5MDIiLCA3CisgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIDI2NTU5OTE1LCAxNDEuNzIsIDgwLCAx
MTMzNy42LCAxNjMzMTI2LjgsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBbIFsgMjcyMTEs
IDEsICIyMTAyMjIiLCAxNDgzMzQ3NzMyMDUxIF0gXSwKKyAgICAgICAgICAgICAgICAgICAgMTQ4
MzM0NzczMjA1MSwgNTMwMzksIDE0ODMzNDc5MjY0MjksICIxMDkyNCIsIDcKKyAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgMjY1NjQzODgs
IDEzOC4xMzEyNSwgODAsIDExMDUwLjUsIDE1NTExNTcuOTMsIGZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICBbIFsgMjcyMTcsIDEsICIyMTAyMzEiLCAxNDgzNDEyMTcxNTMxIF0gXSwKKyAgICAg
ICAgICAgICAgICAgICAgMTQ4MzQxMjE3MTUzMSwgNTMwNDUsIDE0ODM0MTU0MjYwNDksICIxMDkz
MCIsIDcKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAgICAgMjY1Njg4NjcsIDE0NC4xNiwgODAsIDExNTMyLjgsIDE2OTQ5NDEuMSwgZmFsc2Us
CisgICAgICAgICAgICAgICAgICAgIFsgWyAyNzIyMiwgMSwgIjIxMDI0MCIsIDE0ODM0Njk1ODQz
NDcgXSBdLAorICAgICAgICAgICAgICAgICAgICAxNDgzNDY5NTg0MzQ3LCA1MzA1MSwgMTQ4MzQ2
OTY0Mjk5MywgIjEwOTM1IiwgNworICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0KKyAg
ICAgICAgfSwKKyAgICAgICAgImZvcm1hdE1hcCI6IFsKKyAgICAgICAgICAgICJpZCIsICJtZWFu
IiwgIml0ZXJhdGlvbkNvdW50IiwgInN1bSIsICJzcXVhcmVTdW0iLCAibWFya2VkT3V0bGllciIs
CisgICAgICAgICAgICAicmV2aXNpb25zIiwKKyAgICAgICAgICAgICJjb21taXRUaW1lIiwgImJ1
aWxkIiwgImJ1aWxkVGltZSIsICJidWlsZE51bWJlciIsICJidWlsZGVyIgorICAgICAgICBdLAor
ICAgICAgICAic3RhcnRUaW1lIjogMTQ4MDYzNjgwMDAwMCwKKyAgICAgICAgImVuZFRpbWUiOiAx
NDg1ODIwODAwMDAwLAorICAgICAgICAibGFzdE1vZGlmaWVkIjogMTQ4NDEwNTczODczNiwKKyAg
ICAgICAgImNsdXN0ZXJDb3VudCI6IDEsCisgICAgICAgICJlbGFwc2VkVGltZSI6IDU2LjQyMTk5
NTE2Mjk2NCwKKyAgICAgICAgInN0YXR1cyI6ICJPSyIKKyAgICB9OworCisgICAgZnVuY3Rpb24g
Y3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBjaGFydE9wdGlvbnMgPSB7fSwg
b3B0aW9ucyA9IHt3aWR0aDogJzUwMHB4JywgaGVpZ2h0OiAnMTUwcHgnfSkKKyAgICB7CisgICAg
ICAgIGNvbnN0IFRpbWVTZXJpZXNDaGFydCA9IGNvbnRleHQuc3ltYm9scy5UaW1lU2VyaWVzQ2hh
cnQ7CisgICAgICAgIGNvbnN0IE1lYXN1cmVtZW50U2V0ID0gY29udGV4dC5zeW1ib2xzLk1lYXN1
cmVtZW50U2V0OworCisgICAgICAgIGNvbnN0IGNoYXJ0ID0gbmV3IFRpbWVTZXJpZXNDaGFydChb
e3R5cGU6ICdjdXJyZW50JywgbWVhc3VyZW1lbnRTZXQ6IE1lYXN1cmVtZW50U2V0LmZpbmRTZXQo
MSwgMSwgMCl9XSwgY2hhcnRPcHRpb25zKTsKKyAgICAgICAgY29uc3QgZWxlbWVudCA9IGNoYXJ0
LmVsZW1lbnQoKTsKKyAgICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IG9wdGlvbnMud2lkdGg7
CisgICAgICAgIGVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gb3B0aW9ucy5oZWlnaHQ7CisgICAgICAg
IGNvbnRleHQuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKworICAgICAgICBy
ZXR1cm4gY2hhcnQ7CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVzcG9uZFdpdGhTYW1wbGVDbHVz
dGVyKHJlcXVlc3QpCisgICAgeworICAgICAgICBleHBlY3QocmVxdWVzdC51cmwpLnRvLmJlKCcu
Li9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEuanNvbicpOworICAgICAgICBleHBlY3QocmVxdWVz
dC5tZXRob2QpLnRvLmJlKCdHRVQnKTsKKyAgICAgICAgcmVxdWVzdC5yZXNvbHZlKHNhbXBsZUNs
dXN0ZXIpOworICAgIH0KKworICAgIGRlc2NyaWJlKCdmZXRjaE1lYXN1cmVtZW50U2V0cycsICgp
ID0+IHsKKworICAgICAgICBpdCgnc2hvdWxkIGZldGNoIHRoZSBtZWFzdXJlbWVudCBzZXQgYW5k
IGNyZWF0ZSBhIGNhbnZhcyBlbGVtZW50IHVwb24gcmVjZWl2aW5nIHRoZSBkYXRhJywgKCkgPT4g
eworICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVu
dEJhc2UnLCAnVGltZVNlcmllc0NoYXJ0JywgJ01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1vdGVB
UEknKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFydCA9IGNyZWF0ZUNo
YXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCk7CisKKyAgICAgICAgICAgICAgICBjaGFydC5z
ZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7
CisgICAgICAgICAgICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKKworICAgICAg
ICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEku
cmVxdWVzdHM7CisgICAgICAgICAgICAgICAgZXhwZWN0KHJlcXVlc3RzLmxlbmd0aCkudG8uYmUo
MSk7CisgICAgICAgICAgICAgICAgcmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKHJlcXVlc3RzWzBd
KTsKKworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3Rv
cignY2FudmFzJykpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9y
Q29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
ICAgICBleHBlY3QoY2hhcnQuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpKS50by5u
b3QuYmUobnVsbCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBpbW1lZGlhdGVseSBlbnF1ZXVlIHRvIHJlbmRl
ciB3aGVuIHRoZSBtZWFzdXJlbWVudCBzZXQgaGFkIGFscmVhZHkgYmVlbiBmZXRjaGVkJywgKCkg
PT4geworICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsK
KyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBv
bmVudEJhc2UnLCAnVGltZVNlcmllc0NoYXJ0JywgJ01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1v
dGVBUEknKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFydCA9IGNyZWF0
ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCk7CisKKyAgICAgICAgICAgICAgICBsZXQg
c2V0ID0gY29udGV4dC5zeW1ib2xzLk1lYXN1cmVtZW50U2V0LmZpbmRTZXQoMSwgMSwgMCk7Cisg
ICAgICAgICAgICAgICAgbGV0IHByb21pc2UgPSBzZXQuZmV0Y2hCZXR3ZWVuKHNhbXBsZUNsdXN0
ZXIuc3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworCisgICAgICAgICAgICAgICAg
Y29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsK
KyAgICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgxKTsKKyAgICAg
ICAgICAgICAgICByZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIocmVxdWVzdHNbMF0pOworCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHByb21pc2UudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdChjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFzJykpLnRvLmJl
KG51bGwpOworICAgICAgICAgICAgICAgICAgICBjaGFydC5zZXREb21haW4oc2FtcGxlQ2x1c3Rl
ci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICAgICAgICAg
IGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgICAgIH0p
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3Ro
KS50by5iZSgxKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LmNvbnRlbnQoKS5x
dWVyeVNlbGVjdG9yKCdjYW52YXMnKSkudG8ubm90LmJlKG51bGwpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQg
ZGlzcGF0Y2ggImRhdGFDaGFuZ2UiIGFjdGlvbiBvbmNlIHRoZSBmZXRjaGVkIGRhdGEgYmVjb21l
cyBhdmFpbGFibGUnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJy
b3dzaW5nQ29udGV4dCgpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuaW1wb3J0U2NyaXB0
cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScsICdUaW1lU2VyaWVzQ2hhcnQnLCAnTWVhc3VyZW1l
bnRTZXQnLCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXJ0ID0gY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0KTsKKworICAg
ICAgICAgICAgICAgIGxldCBkYXRhQ2hhbmdlQ291bnQgPSAwOworICAgICAgICAgICAgICAgIGNo
YXJ0Lmxpc3RlblRvQWN0aW9uKCdkYXRhQ2hhbmdlJywgKCkgPT4gZGF0YUNoYW5nZUNvdW50Kysp
OworCisgICAgICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKHNhbXBsZUNsdXN0ZXIuc3RhcnRU
aW1lLCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAgICAgICAgIGNoYXJ0LmZldGNo
TWVhc3VyZW1lbnRTZXRzKCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGNv
bnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzOworICAgICAgICAgICAgICAgIGV4
cGVjdChyZXF1ZXN0cy5sZW5ndGgpLnRvLmJlKDEpOworICAgICAgICAgICAgICAgIHJlc3BvbmRX
aXRoU2FtcGxlQ2x1c3RlcihyZXF1ZXN0c1swXSk7CisKKyAgICAgICAgICAgICAgICBleHBlY3Qo
ZGF0YUNoYW5nZUNvdW50KS50by5iZSgwKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQu
c2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50JykpLnRvLmJlKG51bGwpOworICAgICAgICAg
ICAgICAgIGV4cGVjdChjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFzJykpLnRv
LmJlKG51bGwpOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVu
ZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBleHBlY3QoZGF0
YUNoYW5nZUNvdW50KS50by5iZSgxKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0
LnNhbXBsZWRUaW1lU2VyaWVzRGF0YSgnY3VycmVudCcpKS50by5ub3QuYmUobnVsbCk7CisgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2Fu
dmFzJykpLnRvLm5vdC5iZShudWxsKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGZ1bmN0aW9uIGZpbGxDYW52YXNCZWZv
cmVSZWRyYXdDaGVjayhjYW52YXMpCisgICAgeworICAgICAgICBjb25zdCBjYW52YXNDb250ZXh0
ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CisgICAgICAgIGNhbnZhc0NvbnRleHQuZmlsbFN0
eWxlID0gJ3doaXRlJzsKKyAgICAgICAgY2FudmFzQ29udGV4dC5maWxsUmVjdCgwLCAwLCBjYW52
YXMub2Zmc2V0V2lkdGgsIGNhbnZhcy5vZmZzZXRIZWlnaHQpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGhhc0NhbnZhc0JlZW5SZWRyYXduKGNhbnZhcykKKyAgICB7CisgICAgICAgIHJldHVybiBj
YW52YXNJbWFnZURhdGEoY2FudmFzKS5kYXRhLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZSAhPSAyNTUp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNhbnZhc0ltYWdlRGF0YShjYW52YXMpCisgICAgewor
ICAgICAgICByZXR1cm4gY2FudmFzLmdldENvbnRleHQoJzJkJykuZ2V0SW1hZ2VEYXRhKDAsIDAs
IGNhbnZhcy5vZmZzZXRXaWR0aCwgY2FudmFzLm9mZnNldEhlaWdodCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY2FudmFzUmVmVGVzdChjYW52YXMxLCBjYW52YXMyLCBzaG91bGRNYXRjaCkKKyAg
ICB7CisgICAgICAgIGV4cGVjdChjYW52YXMxLm9mZnNldFdpZHRoKS50by5iZShjYW52YXMyLm9m
ZnNldFdpZHRoKTsKKyAgICAgICAgZXhwZWN0KGNhbnZhczIub2Zmc2V0SGVpZ2h0KS50by5iZShj
YW52YXMyLm9mZnNldEhlaWdodCk7CisgICAgICAgIGNvbnN0IGRhdGExID0gY2FudmFzSW1hZ2VE
YXRhKGNhbnZhczEpLmRhdGE7CisgICAgICAgIGNvbnN0IGRhdGEyID0gY2FudmFzSW1hZ2VEYXRh
KGNhbnZhczIpLmRhdGE7CisgICAgICAgIGV4cGVjdChkYXRhMS5sZW5ndGgpLnRvLmJlLmEoJ251
bWJlcicpOworICAgICAgICBleHBlY3QoZGF0YTEubGVuZ3RoKS50by5iZShkYXRhMi5sZW5ndGgp
OworCisgICAgICAgIGxldCBtYXRjaCA9IHRydWU7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgZGF0YTEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChkYXRhMVtpXSAhPSBkYXRh
MltpXSkgeworICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobWF0Y2ggPT0g
c2hvdWxkTWF0Y2gpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW2NhbnZhczEsIGNh
bnZhczJdLmZvckVhY2goKGNhbnZhcykgPT4geworICAgICAgICAgICAgbGV0IGltYWdlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7CisgICAgICAgICAgICBpbWFnZS5zcmMgPSBjYW52
YXMudG9EYXRhVVJMKCk7CisgICAgICAgICAgICBpbWFnZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2Nr
JzsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UpOworICAgICAg
ICB9KTsKKworICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc2hvdWxkTWF0Y2ggPyAnQ2FudmFzIGNv
bnRlbnRzIHdlcmUgZGlmZmVyZW50JyA6ICdDYW52YXMgY29udGVudHMgd2VyZSBpZGVudGljYWwn
KTsKKyAgICB9CisgICAgZnVuY3Rpb24gZXhwZWN0Q2FudmFzZXNNYXRjaChjYW52YXMxLCBjYW52
YXMyKSB7IHJldHVybiBjYW52YXNSZWZUZXN0KGNhbnZhczEsIGNhbnZhczIsIHRydWUpOyB9Cisg
ICAgZnVuY3Rpb24gZXhwZWN0Q2FudmFzZXNNaXNtYXRjaChjYW52YXMxLCBjYW52YXMyKSB7IHJl
dHVybiBjYW52YXNSZWZUZXN0KGNhbnZhczEsIGNhbnZhczIsIGZhbHNlKTsgfQorCisgICAgZGVz
Y3JpYmUoJ3JlbmRlcicsICgpID0+IHsKKworICAgICAgICBpdCgnc2hvdWxkIHVwZGF0ZSB0aGUg
Y2FudmFzIHNpemUgYW5kIGl0cyBjb250ZW50IGFmdGVyIHRoZSB3aW5kb3cgaGFzIGJlZW4gcmVz
aXplZCcsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdD
b250ZXh0KCk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5pbXBvcnRTY3JpcHRzKHNjcmlw
dHMsICdDb21wb25lbnRCYXNlJywgJ1RpbWVTZXJpZXNDaGFydCcsICdNZWFzdXJlbWVudFNldCcs
ICdNb2NrUmVtb3RlQVBJJykudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgY2hh
cnQgPSBjcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIHt9LCB7d2lkdGg6ICcx
MDAlJywgaGVpZ2h0OiAnMTAwJSd9KTsKKworICAgICAgICAgICAgICAgIGxldCBkYXRhQ2hhbmdl
Q291bnQgPSAwOworICAgICAgICAgICAgICAgIGNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdkYXRhQ2hh
bmdlJywgKCkgPT4gZGF0YUNoYW5nZUNvdW50KyspOworCisgICAgICAgICAgICAgICAgY2hhcnQu
c2V0RG9tYWluKHNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVuZFRpbWUp
OworICAgICAgICAgICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7CisKKyAgICAg
ICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzOworICAgICAgICAgICAgICAgIGV4cGVjdChyZXF1ZXN0cy5sZW5ndGgpLnRvLmJl
KDEpOworICAgICAgICAgICAgICAgIHJlc3BvbmRXaXRoU2FtcGxlQ2x1c3RlcihyZXF1ZXN0c1sw
XSk7CisKKyAgICAgICAgICAgICAgICBleHBlY3QoZGF0YUNoYW5nZUNvdW50KS50by5iZSgwKTsK
KyAgICAgICAgICAgICAgICBleHBlY3QoY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJy
ZW50JykpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVjdChjaGFydC5jb250ZW50
KCkucXVlcnlTZWxlY3RvcignY2FudmFzJykpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAg
IGxldCBjYW52YXM7CisgICAgICAgICAgICAgICAgbGV0IG9yaWdpbmFsV2lkdGg7CisgICAgICAg
ICAgICAgICAgbGV0IG9yaWdpbmFsSGVpZ2h0OworICAgICAgICAgICAgICAgIGNvbnN0IGRwciA9
IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdh
aXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdChkYXRhQ2hhbmdlQ291bnQpLnRvLmJlKDEpOworICAgICAgICAgICAg
ICAgICAgICBleHBlY3QoY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50JykpLnRv
Lm5vdC5iZShudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzID0gY2hhcnQuY29udGVu
dCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOworICAgICAgICAgICAgICAgICAgICBleHBlY3Qo
Y2FudmFzKS50by5ub3QuYmUobnVsbCk7CisKKyAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxX
aWR0aCA9IGNhbnZhcy5vZmZzZXRXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxI
ZWlnaHQgPSBjYW52YXMub2Zmc2V0SGVpZ2h0OworICAgICAgICAgICAgICAgICAgICBleHBlY3Qo
b3JpZ2luYWxXaWR0aCkudG8uYmUoZHByICogY29udGV4dC5kb2N1bWVudC5ib2R5Lm9mZnNldFdp
ZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KG9yaWdpbmFsSGVpZ2h0KS50by5iZShk
cHIgKiBjb250ZXh0LmRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0KTsKKworICAgICAgICAgICAg
ICAgICAgICBmaWxsQ2FudmFzQmVmb3JlUmVkcmF3Q2hlY2soY2FudmFzKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5pZnJhbWUuc3R5bGUud2lkdGggPSBjb250ZXh0LmlmcmFtZS5vZmZz
ZXRXaWR0aCAqIDIgKyAncHgnOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lmdsb2JhbC5k
aXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpOworCisgICAgICAgICAgICAgICAgICAg
IGV4cGVjdChjYW52YXMub2Zmc2V0V2lkdGgpLnRvLmJlKG9yaWdpbmFsV2lkdGgpOworICAgICAg
ICAgICAgICAgICAgICBleHBlY3QoY2FudmFzLm9mZnNldEhlaWdodCkudG8uYmUob3JpZ2luYWxI
ZWlnaHQpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1Rv
UmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgICAgICAgICBleHBlY3QoZGF0YUNoYW5nZUNvdW50KS50by5iZSgyKTsKKyAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0KGNhbnZhcy5vZmZzZXRXaWR0aCkudG8uYmUuZ3JlYXRlclRoYW4o
b3JpZ2luYWxXaWR0aCk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChjYW52YXMub2Zmc2V0
V2lkdGgpLnRvLmJlKGRwciAqIGNvbnRleHQuZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCk7Cisg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdChjYW52YXMub2Zmc2V0SGVpZ2h0KS50by5iZShvcmln
aW5hbEhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChoYXNDYW52YXNCZWVuUmVk
cmF3bihjYW52YXMpKS50by5iZSh0cnVlKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCB1cGRhdGUgdXBk
YXRlIHRoZSBjYW52YXMgd2hlbiB0aGUgd2luZG93IGhhcyBiZWVuIHJlc2l6ZWQgYnV0IGl0cyBk
aW1lbnNpb25zIHN0YXlzIHRoZSBzYW1lJywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY29u
dGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0
LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2UnLCAnVGltZVNlcmllc0NoYXJ0
JywgJ01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1vdGVBUEknKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICBjb25zdCBjaGFydCA9IGNyZWF0ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29u
dGV4dCwge30sIHt3aWR0aDogJzEwMHB4JywgaGVpZ2h0OiAnMTAwcHgnfSk7CisKKyAgICAgICAg
ICAgICAgICBsZXQgZGF0YUNoYW5nZUNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICBjaGFydC5s
aXN0ZW5Ub0FjdGlvbignZGF0YUNoYW5nZScsICgpID0+IGRhdGFDaGFuZ2VDb3VudCsrKTsKKwor
ICAgICAgICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihzYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwg
c2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKKyAgICAgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1
cmVtZW50U2V0cygpOworCisgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0
LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
cmVxdWVzdHMubGVuZ3RoKS50by5iZSgxKTsKKyAgICAgICAgICAgICAgICByZXNwb25kV2l0aFNh
bXBsZUNsdXN0ZXIocmVxdWVzdHNbMF0pOworICAgICAgICAgICAgICAgIGV4cGVjdChkYXRhQ2hh
bmdlQ291bnQpLnRvLmJlKDApOworCisgICAgICAgICAgICAgICAgbGV0IGNhbnZhczsKKyAgICAg
ICAgICAgICAgICBsZXQgZGF0YTsKKyAgICAgICAgICAgICAgICBjb25zdCBkcHIgPSB3aW5kb3cu
ZGV2aWNlUGl4ZWxSYXRpbyB8fCAxOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29t
cG9uZW50c1RvUmVuZGVyKGNvbnRleHQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAg
ICBleHBlY3QoZGF0YUNoYW5nZUNvdW50KS50by5iZSgxKTsKKyAgICAgICAgICAgICAgICAgICAg
ZGF0YSA9IGNoYXJ0LnNhbXBsZWRUaW1lU2VyaWVzRGF0YSgnY3VycmVudCcpOworICAgICAgICAg
ICAgICAgICAgICBleHBlY3QoZGF0YSkudG8ubm90LmJlKG51bGwpOworICAgICAgICAgICAgICAg
ICAgICBjYW52YXMgPSBjaGFydC5jb250ZW50KCkucXVlcnlTZWxlY3RvcignY2FudmFzJyk7Cisg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdChjYW52YXMpLnRvLm5vdC5iZShudWxsKTsKKworICAg
ICAgICAgICAgICAgICAgICBleHBlY3QoY2FudmFzLm9mZnNldFdpZHRoKS50by5iZShkcHIgKiAx
MDApOworICAgICAgICAgICAgICAgICAgICBleHBlY3QoY2FudmFzLm9mZnNldEhlaWdodCkudG8u
YmUoZHByICogMTAwKTsKKworICAgICAgICAgICAgICAgICAgICBmaWxsQ2FudmFzQmVmb3JlUmVk
cmF3Q2hlY2soY2FudmFzKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5pZnJhbWUuc3R5
bGUud2lkdGggPSBjb250ZXh0LmlmcmFtZS5vZmZzZXRXaWR0aCAqIDIgKyAncHgnOworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0Lmdsb2JhbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVz
aXplJykpOworCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChjYW52YXMub2Zmc2V0V2lkdGgp
LnRvLmJlKGRwciAqIDEwMCk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChjYW52YXMub2Zm
c2V0SGVpZ2h0KS50by5iZShkcHIgKiAxMDApOworCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgICAgIH0p
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBleHBlY3QoZGF0YUNoYW5nZUNvdW50
KS50by5iZSgxKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGNoYXJ0LnNhbXBsZWRUaW1l
U2VyaWVzRGF0YSgnY3VycmVudCcpKS50by5iZShkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0KGNhbnZhcy5vZmZzZXRXaWR0aCkudG8uYmUoZHByICogMTAwKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0KGNhbnZhcy5vZmZzZXRIZWlnaHQpLnRvLmJlKGRwciAqIDEwMCk7Cisg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdChoYXNDYW52YXNCZWVuUmVkcmF3bihjYW52YXMpKS50
by5iZShmYWxzZSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCByZW5kZXIgWS1heGlzJywgKCkgPT4geworICAg
ICAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBjb250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2Un
LCAnVGltZVNlcmllc0NoYXJ0JywgJ01lYXN1cmVtZW50U2V0JywgJ01vY2tSZW1vdGVBUEknLCAn
TWV0cmljJykudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhcnRXaXRob3V0
WUF4aXMgPSBjcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIHtheGlzOgorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBncmlkU3R5bGU6ICcj
Y2NjJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IGNvbnRleHQuc3ltYm9scy5NZXRyaWMubWFrZUZv
cm1hdHRlcignbXMnLCAzKSwKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0V2l0aFlBeGlzMSA9IGNyZWF0ZUNoYXJ0
V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwge2F4aXM6CisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHlBeGlzV2lkdGg6IDQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBncmlkU3R5bGU6ICcjY2NjJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRT
aXplOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IGNvbnRleHQu
c3ltYm9scy5NZXRyaWMubWFrZUZvcm1hdHRlcignbXMnLCAzKSwKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0V2l0
aFlBeGlzMiA9IGNyZWF0ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwge2F4aXM6Cisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHlBeGlzV2lkdGg6
IDQsCisgICAgICAgICAgICAgICAgICAgICAgICBncmlkU3R5bGU6ICcjY2NjJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgdmFs
dWVGb3JtYXR0ZXI6IGNvbnRleHQuc3ltYm9scy5NZXRyaWMubWFrZUZvcm1hdHRlcignQicsIDMp
LAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICBjaGFydFdpdGhvdXRZQXhpcy5zZXREb21haW4oc2FtcGxlQ2x1c3Rlci5zdGFydFRp
bWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICAgICAgY2hhcnRXaXRob3V0
WUF4aXMuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKKyAgICAgICAgICAgICAgICBjaGFydFdpdGhZ
QXhpczEuc2V0RG9tYWluKHNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBzYW1wbGVDbHVzdGVyLmVu
ZFRpbWUpOworICAgICAgICAgICAgICAgIGNoYXJ0V2l0aFlBeGlzMS5mZXRjaE1lYXN1cmVtZW50
U2V0cygpOworICAgICAgICAgICAgICAgIGNoYXJ0V2l0aFlBeGlzMi5zZXREb21haW4oc2FtcGxl
Q2x1c3Rlci5zdGFydFRpbWUsIHNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICAg
ICAgY2hhcnRXaXRoWUF4aXMyLmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7CisKKyAgICAgICAgICAg
ICAgICBjb25zdCByZXF1ZXN0cyA9IGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVl
c3RzOworICAgICAgICAgICAgICAgIGV4cGVjdChyZXF1ZXN0cy5sZW5ndGgpLnRvLmJlKDEpOwor
ICAgICAgICAgICAgICAgIHJlc3BvbmRXaXRoU2FtcGxlQ2x1c3RlcihyZXF1ZXN0c1swXSk7CisK
KyAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGNhbnZhc1dpdGhvdXRZQXhp
cyA9IGNoYXJ0V2l0aG91dFlBeGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKTsK
KyAgICAgICAgICAgICAgICAgICAgbGV0IGNhbnZhc1dpdGhZQXhpczEgPSBjaGFydFdpdGhZQXhp
czEuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOworICAgICAgICAgICAgICAgICAg
ICBsZXQgY2FudmFzV2l0aFlBeGlzMiA9IGNoYXJ0V2l0aFlBeGlzMi5jb250ZW50KCkucXVlcnlT
ZWxlY3RvcignY2FudmFzJyk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdENhbnZhc2VzTWlz
bWF0Y2goY2FudmFzV2l0aG91dFlBeGlzLCBjYW52YXNXaXRoWUF4aXMxKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0Q2FudmFzZXNNaXNtYXRjaChjYW52YXNXaXRob3V0WUF4aXMsIGNhbnZh
c1dpdGhZQXhpczEpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RDYW52YXNlc01pc21hdGNo
KGNhbnZhc1dpdGhZQXhpczEsIGNhbnZhc1dpdGhZQXhpczIpOworCisgICAgICAgICAgICAgICAg
ICAgIGxldCBjb250ZW50MSA9IGNhbnZhc0ltYWdlRGF0YShjYW52YXNXaXRoWUF4aXMxKTsKKyAg
ICAgICAgICAgICAgICAgICAgbGV0IGZvdW5kR3JpZExpbmUgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCBjb250ZW50MS5oZWlnaHQ7IHkrKykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgbGV0IGVuZE9mWSA9IGNvbnRlbnQxLndpZHRoICogNCAqIHk7
CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgciA9IGNvbnRlbnQxLmRhdGFbZW5kT2ZZIC0g
NF07CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZyA9IGNvbnRlbnQxLmRhdGFbZW5kT2ZZ
IC0gM107CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IGNvbnRlbnQxLmRhdGFbZW5k
T2ZZIC0gMl07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PSAyMDQgJiYgZyA9PSAy
MDQgJiYgYiA9PSAyMDQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEdyaWRM
aW5lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBleHBlY3QoZm91bmRHcmlkTGluZSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKK30pOworCkluZGV4
OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY2hhcnQtcGFu
ZS1iYXNlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvY29tcG9uZW50cy9jaGFydC1wYW5lLWJhc2UuanMJKHJldmlzaW9uIDIxMjUzMikKKysrIFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1wYW5lLWJh
c2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDggQEAgY2xhc3MgQ2hhcnRQYW5lQmFz
ZSBleHRlbmRzIENvbXBvbmVudEJhcwogICAgICAgICBtYWluT3B0aW9ucy5zZWxlY3Rpb24ub25j
aGFuZ2UgPSB0aGlzLl9tYWluU2VsZWN0aW9uRGlkQ2hhbmdlLmJpbmQodGhpcyk7CiAgICAgICAg
IG1haW5PcHRpb25zLnNlbGVjdGlvbi5vbnpvb20gPSB0aGlzLl9tYWluU2VsZWN0aW9uRGlkWm9v
bS5iaW5kKHRoaXMpOwogICAgICAgICBtYWluT3B0aW9ucy5hbm5vdGF0aW9ucy5vbmNsaWNrID0g
dGhpcy5fb3BlbkFuYWx5c2lzVGFzay5iaW5kKHRoaXMpOwotICAgICAgICBtYWluT3B0aW9ucy5v
bmRhdGEgPSB0aGlzLl9kaWRGZXRjaERhdGEuYmluZCh0aGlzKTsKICAgICAgICAgdGhpcy5fbWFp
bkNoYXJ0ID0gbmV3IEludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0KHRoaXMuX2NyZWF0ZVNvdXJj
ZUxpc3QodHJ1ZSksIG1haW5PcHRpb25zKTsKKyAgICAgICAgdGhpcy5fbWFpbkNoYXJ0Lmxpc3Rl
blRvQWN0aW9uKCdkYXRhQ2hhbmdlJywgKCkgPT4gdGhpcy5fZGlkRmV0Y2hEYXRhKCkpCiAgICAg
ICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY2hh
cnQtcGFuZS1tYWluJyksIHRoaXMuX21haW5DaGFydCk7CiAKICAgICAgICAgdGhpcy5fbWFpbkNo
YXJ0U3RhdHVzID0gbmV3IENoYXJ0UGFuZVN0YXR1c1ZpZXcocmVzdWx0Lm1ldHJpYywgdGhpcy5f
bWFpbkNoYXJ0LCB0aGlzLl9yZXF1ZXN0T3BlbmluZ0NvbW1pdFZpZXdlci5iaW5kKHRoaXMpKTsK
SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90aW1l
LXNlcmllcy1jaGFydC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL2NvbXBvbmVudHMvdGltZS1zZXJpZXMtY2hhcnQuanMJKHJldmlzaW9uIDIxMjUz
MikKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90aW1l
LXNlcmllcy1jaGFydC5qcwkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDYgQEAgY2xhc3MgVGlt
ZVNlcmllc0NoYXJ0IGV4dGVuZHMgQ29tcG9uZW50QgogICAgIGNvbnN0cnVjdG9yKHNvdXJjZUxp
c3QsIG9wdGlvbnMpCiAgICAgewogICAgICAgICBzdXBlcigpOwotICAgICAgICB0aGlzLmVsZW1l
bnQoKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKLSAgICAgICAgdGhpcy5lbGVtZW50KCkuc3R5
bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOwogICAgICAgICB0aGlzLl9jYW52YXMgPSBudWxsOwog
ICAgICAgICB0aGlzLl9zb3VyY2VMaXN0ID0gc291cmNlTGlzdDsKICAgICAgICAgdGhpcy5fdHJl
bmRMaW5lcyA9IG51bGw7CkBAIC0zMiwxNCArMzAsMjMgQEAgY2xhc3MgVGltZVNlcmllc0NoYXJ0
IGV4dGVuZHMgQ29tcG9uZW50QgogICAgICAgICAgICAgdGhpcy5fY2FudmFzLnN0eWxlLnBvc2l0
aW9uID0gJ2Fic29sdXRlJzsKICAgICAgICAgICAgIHRoaXMuX2NhbnZhcy5zdHlsZS5sZWZ0ID0g
JzBweCc7CiAgICAgICAgICAgICB0aGlzLl9jYW52YXMuc3R5bGUudG9wID0gJzBweCc7Ci0gICAg
ICAgICAgICB0aGlzLl9jYW52YXMuc3R5bGUud2lkdGggPSAnMTAwJSc7Ci0gICAgICAgICAgICB0
aGlzLl9jYW52YXMuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnOwogICAgICAgICAgICAgdGhpcy5jb250
ZW50KCkuYXBwZW5kQ2hpbGQodGhpcy5fY2FudmFzKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gdGhpcy5fY2FudmFzOwogICAgIH0KIAotICAgIHN0YXRpYyBjc3NUZW1wbGF0ZSgpIHsgcmV0
dXJuICcnOyB9CisgICAgc3RhdGljIGNzc1RlbXBsYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBgCisKKyAgICAgICAgOmhvc3QgeworICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9y
dGFudDsKKyAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OworICAgICAg
ICB9CisKKyAgICAgICAgYDsKKyAgICB9CisKICAgICBzdGF0aWMgZ2V0IGVucXVldWVUb1JlbmRl
ck9uUmVzaXplKCkgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgX2NyZWF0ZUNhbnZhcygpCkBAIC00
NywxMSArNTQsNiBAQCBjbGFzcyBUaW1lU2VyaWVzQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRCCiAg
ICAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgX3VwZGF0ZUFsbENoYXJ0cygpCi0gICAgewotICAgICAgICBUaW1lU2VyaWVz
Q2hhcnQuX2NoYXJ0TGlzdC5tYXAoZnVuY3Rpb24gKGNoYXJ0KSB7IGNoYXJ0LnJlbmRlcigpOyB9
KTsKLSAgICB9Ci0KICAgICBzZXREb21haW4oc3RhcnRUaW1lLCBlbmRUaW1lKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQoc3RhcnRUaW1lIDwgZW5kVGltZSwgJ3N0YXJ0VGltZSBtdXN0
IGJlIGJlZm9yZSBlbmRUaW1lJyk7CkBAIC0xNTYsNyArMTU4LDYgQEAgY2xhc3MgVGltZVNlcmll
c0NoYXJ0IGV4dGVuZHMgQ29tcG9uZW50QgogICAgICAgICBpZiAoIXRoaXMuX3N0YXJ0VGltZSB8
fCAhdGhpcy5fZW5kVGltZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAvLyBGSVhN
RTogQWxzbyBkZXRlY3QgaG9yaXpvbnRhbCBzY3JvbGxpbmcuCiAgICAgICAgIHZhciBjYW52YXMg
PSB0aGlzLl9lbnN1cmVDYW52YXMoKTsKIAogICAgICAgICB2YXIgbWV0cmljcyA9IHRoaXMuX2xh
eW91dCgpOwpAQCAtMTcxLDEyICsxNzIsMTMgQEAgY2xhc3MgVGltZVNlcmllc0NoYXJ0IGV4dGVu
ZHMgQ29tcG9uZW50QgogICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl93aWR0
aCwgdGhpcy5faGVpZ2h0KTsKIAogICAgICAgICBjb250ZXh0LmZvbnQgPSBtZXRyaWNzLmZvbnRT
aXplICsgJ3B4IHNhbnMtc2VyaWYnOwotICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHRoaXMu
X29wdGlvbnMuYXhpcy5maWxsU3R5bGU7Ci0gICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSB0
aGlzLl9vcHRpb25zLmF4aXMuZ3JpZFN0eWxlOwotICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9
IDEgLyB0aGlzLl9jb250ZXh0U2NhbGVZOwotCi0gICAgICAgIHRoaXMuX3JlbmRlclhBeGlzKGNv
bnRleHQsIG1ldHJpY3MsIHRoaXMuX3N0YXJ0VGltZSwgdGhpcy5fZW5kVGltZSk7Ci0gICAgICAg
IHRoaXMuX3JlbmRlcllBeGlzKGNvbnRleHQsIG1ldHJpY3MsIHRoaXMuX3ZhbHVlUmFuZ2VDYWNo
ZVswXSwgdGhpcy5fdmFsdWVSYW5nZUNhY2hlWzFdKTsKKyAgICAgICAgY29uc3QgYXhpcyA9IHRo
aXMuX29wdGlvbnMuYXhpczsKKyAgICAgICAgaWYgKGF4aXMpIHsKKyAgICAgICAgICAgIGNvbnRl
eHQuc3Ryb2tlU3R5bGUgPSBheGlzLmdyaWRTdHlsZTsKKyAgICAgICAgICAgIGNvbnRleHQubGlu
ZVdpZHRoID0gMSAvIHRoaXMuX2NvbnRleHRTY2FsZVk7CisgICAgICAgICAgICB0aGlzLl9yZW5k
ZXJYQXhpcyhjb250ZXh0LCBtZXRyaWNzLCB0aGlzLl9zdGFydFRpbWUsIHRoaXMuX2VuZFRpbWUp
OworICAgICAgICAgICAgdGhpcy5fcmVuZGVyWUF4aXMoY29udGV4dCwgbWV0cmljcywgdGhpcy5f
dmFsdWVSYW5nZUNhY2hlWzBdLCB0aGlzLl92YWx1ZVJhbmdlQ2FjaGVbMV0pOworICAgICAgICB9
CiAKICAgICAgICAgY29udGV4dC5zYXZlKCk7CiAKQEAgLTIxNywxNCArMjE5LDE1IEBAIGNsYXNz
IFRpbWVTZXJpZXNDaGFydCBleHRlbmRzIENvbXBvbmVudEIKICAgICAgICAgdmFyIHRpbWVEaWZm
ID0gdGhpcy5fZW5kVGltZSAtIHRoaXMuX3N0YXJ0VGltZTsKICAgICAgICAgdmFyIHN0YXJ0VGlt
ZSA9IHRoaXMuX3N0YXJ0VGltZTsKIAotICAgICAgICB2YXIgZm9udFNpemUgPSB0aGlzLl9vcHRp
b25zLmF4aXMuZm9udFNpemUgKiB0aGlzLl9yZW07Ci0gICAgICAgIHZhciBjaGFydFggPSB0aGlz
Ll9vcHRpb25zLmF4aXMueUF4aXNXaWR0aCAqIGZvbnRTaXplOworICAgICAgICBjb25zdCBheGlz
ID0gdGhpcy5fb3B0aW9ucy5heGlzIHx8IHt9OworICAgICAgICBjb25zdCBmb250U2l6ZSA9IChh
eGlzLmZvbnRTaXplIHx8IDEpICogdGhpcy5fcmVtOworICAgICAgICBjb25zdCBjaGFydFggPSAo
YXhpcy55QXhpc1dpZHRoIHx8IDApICogZm9udFNpemU7CiAgICAgICAgIHZhciBjaGFydFkgPSAw
OwogICAgICAgICB2YXIgY2hhcnRXaWR0aCA9IHRoaXMuX3dpZHRoIC0gY2hhcnRYOwotICAgICAg
ICB2YXIgY2hhcnRIZWlnaHQgPSB0aGlzLl9oZWlnaHQgLSB0aGlzLl9vcHRpb25zLmF4aXMueEF4
aXNIZWlnaHQgKiBmb250U2l6ZTsKKyAgICAgICAgdmFyIGNoYXJ0SGVpZ2h0ID0gdGhpcy5faGVp
Z2h0IC0gKGF4aXMueEF4aXNIZWlnaHQgfHwgMCkgKiBmb250U2l6ZTsKIAotICAgICAgICBpZiAo
dGhpcy5fb3B0aW9ucy5heGlzLnhBeGlzRW5kUGFkZGluZykKLSAgICAgICAgICAgIHRpbWVEaWZm
ICs9IHRoaXMuX29wdGlvbnMuYXhpcy54QXhpc0VuZFBhZGRpbmcgLyAoY2hhcnRXaWR0aCAvIHRp
bWVEaWZmKTsKKyAgICAgICAgaWYgKGF4aXMueEF4aXNFbmRQYWRkaW5nKQorICAgICAgICAgICAg
dGltZURpZmYgKz0gYXhpcy54QXhpc0VuZFBhZGRpbmcgLyAoY2hhcnRXaWR0aCAvIHRpbWVEaWZm
KTsKIAogICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgeFRvVGltZTogZnVuY3Rpb24gKHgp
CkBAIC0zNTYsMTIgKzM1OSwxMiBAQCBjbGFzcyBUaW1lU2VyaWVzQ2hhcnQgZXh0ZW5kcyBDb21w
b25lbnRCCiAKICAgICBfcmVuZGVyWUF4aXMoY29udGV4dCwgbWV0cmljcywgbWluVmFsdWUsIG1h
eFZhbHVlKQogICAgIHsKLSAgICAgICAgdmFyIG1heFlBeGlzTGFiZWxzID0gTWF0aC5mbG9vciht
ZXRyaWNzLmNoYXJ0SGVpZ2h0IC8gbWV0cmljcy5mb250U2l6ZSAvIDIpOwotICAgICAgICB2YXIg
eUF4aXNHcmlkID0gVGltZVNlcmllc0NoYXJ0LmNvbXB1dGVWYWx1ZUdyaWQobWluVmFsdWUsIG1h
eFZhbHVlLCBtYXhZQXhpc0xhYmVscyk7CisgICAgICAgIGNvbnN0IG1heFlBeGlzTGFiZWxzID0g
TWF0aC5mbG9vcihtZXRyaWNzLmNoYXJ0SGVpZ2h0IC8gbWV0cmljcy5mb250U2l6ZSAvIDIpOwor
ICAgICAgICBjb25zdCB5QXhpc0dyaWQgPSBUaW1lU2VyaWVzQ2hhcnQuY29tcHV0ZVZhbHVlR3Jp
ZChtaW5WYWx1ZSwgbWF4VmFsdWUsIG1heFlBeGlzTGFiZWxzLCB0aGlzLl9vcHRpb25zLmF4aXMu
dmFsdWVGb3JtYXR0ZXIpOwogCi0gICAgICAgIGZvciAodmFyIHZhbHVlIG9mIHlBeGlzR3JpZCkg
eworICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHlBeGlzR3JpZCkgewogICAgICAgICAgICAgY29u
dGV4dC5iZWdpblBhdGgoKTsKLSAgICAgICAgICAgIHZhciB5ID0gbWV0cmljcy52YWx1ZVRvWSh2
YWx1ZSk7CisgICAgICAgICAgICBjb25zdCB5ID0gbWV0cmljcy52YWx1ZVRvWShpdGVtLnZhbHVl
KTsKICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKG1ldHJpY3MuY2hhcnRYLCB5KTsKICAgICAg
ICAgICAgIGNvbnRleHQubGluZVRvKG1ldHJpY3MuY2hhcnRYICsgbWV0cmljcy5jaGFydFdpZHRo
LCB5KTsKICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7CkBAIC0zNzAsMTUgKzM3MywxNCBA
QCBjbGFzcyBUaW1lU2VyaWVzQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRCCiAgICAgICAgIGlmICgh
dGhpcy5fb3B0aW9ucy5heGlzLnlBeGlzV2lkdGgpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgZm9yICh2YXIgdmFsdWUgb2YgeUF4aXNHcmlkKSB7Ci0gICAgICAgICAgICB2YXIgbGFi
ZWwgPSB0aGlzLl9vcHRpb25zLmF4aXMudmFsdWVGb3JtYXR0ZXIodmFsdWUpOwotICAgICAgICAg
ICAgdmFyIHggPSAobWV0cmljcy5jaGFydFggLSBjb250ZXh0Lm1lYXN1cmVUZXh0KGxhYmVsKS53
aWR0aCkgLyAyOworICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHlBeGlzR3JpZCkgeworICAgICAg
ICAgICAgY29uc3QgeCA9IChtZXRyaWNzLmNoYXJ0WCAtIGNvbnRleHQubWVhc3VyZVRleHQoaXRl
bS5sYWJlbCkud2lkdGgpIC8gMjsKIAotICAgICAgICAgICAgdmFyIHkgPSBtZXRyaWNzLnZhbHVl
VG9ZKHZhbHVlKSArIG1ldHJpY3MuZm9udFNpemUgLyAyLjU7CisgICAgICAgICAgICBsZXQgeSA9
IG1ldHJpY3MudmFsdWVUb1koaXRlbS52YWx1ZSkgKyBtZXRyaWNzLmZvbnRTaXplIC8gMi41Owog
ICAgICAgICAgICAgaWYgKHkgPCBtZXRyaWNzLmZvbnRTaXplKQogICAgICAgICAgICAgICAgIHkg
PSBtZXRyaWNzLmZvbnRTaXplOwogCi0gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KGxhYmVs
LCB4LCB5KTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoaXRlbS5sYWJlbCwgeCwgeSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQxOSwyNyArNDIxLDI5IEBAIGNsYXNzIFRpbWVTZXJp
ZXNDaGFydCBleHRlbmRzIENvbXBvbmVudEIKICAgICAgICAgICAgIHBvaW50LnkgPSBtZXRyaWNz
LnZhbHVlVG9ZKHBvaW50LnZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnRleHQuc3Ry
b2tlU3R5bGUgPSBzb3VyY2UuaW50ZXJ2YWxTdHlsZTsKLSAgICAgICAgY29udGV4dC5maWxsU3R5
bGUgPSBzb3VyY2UuaW50ZXJ2YWxTdHlsZTsKLSAgICAgICAgY29udGV4dC5saW5lV2lkdGggPSBz
b3VyY2UuaW50ZXJ2YWxXaWR0aDsKKyAgICAgICAgaWYgKHNvdXJjZS5pbnRlcnZhbFN0eWxlKSB7
CisgICAgICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gc291cmNlLmludGVydmFsU3R5bGU7
CisgICAgICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHNvdXJjZS5pbnRlcnZhbFN0eWxlOwor
ICAgICAgICAgICAgY29udGV4dC5saW5lV2lkdGggPSBzb3VyY2UuaW50ZXJ2YWxXaWR0aDsKIAot
ICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOwotICAgICAgICB2YXIgd2lkdGggPSAxOwotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykgewotICAgICAgICAg
ICAgdmFyIHBvaW50ID0gc2VyaWVzW2ldOwotICAgICAgICAgICAgdmFyIGludGVydmFsID0gcG9p
bnQuaW50ZXJ2YWw7Ci0gICAgICAgICAgICB2YXIgdmFsdWUgPSBpbnRlcnZhbCA/IGludGVydmFs
WzBdIDogcG9pbnQudmFsdWU7Ci0gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhwb2ludC54IC0g
d2lkdGgsIG1ldHJpY3MudmFsdWVUb1kodmFsdWUpKTsKLSAgICAgICAgICAgIGNvbnRleHQubGlu
ZVRvKHBvaW50LnggKyB3aWR0aCwgbWV0cmljcy52YWx1ZVRvWSh2YWx1ZSkpOwotICAgICAgICB9
Ci0gICAgICAgIGZvciAodmFyIGkgPSBzZXJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsK
LSAgICAgICAgICAgIHZhciBwb2ludCA9IHNlcmllc1tpXTsKLSAgICAgICAgICAgIHZhciBpbnRl
cnZhbCA9IHBvaW50LmludGVydmFsOwotICAgICAgICAgICAgdmFyIHZhbHVlID0gaW50ZXJ2YWwg
PyBpbnRlcnZhbFsxXSA6IHBvaW50LnZhbHVlOwotICAgICAgICAgICAgY29udGV4dC5saW5lVG8o
cG9pbnQueCArIHdpZHRoLCBtZXRyaWNzLnZhbHVlVG9ZKHZhbHVlKSk7Ci0gICAgICAgICAgICBj
b250ZXh0LmxpbmVUbyhwb2ludC54IC0gd2lkdGgsIG1ldHJpY3MudmFsdWVUb1kodmFsdWUpKTsK
KyAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgICAgICAgICB2YXIgd2lkdGgg
PSAxOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgICAgICAgICB2YXIgcG9pbnQgPSBzZXJpZXNbaV07CisgICAgICAgICAgICAg
ICAgdmFyIGludGVydmFsID0gcG9pbnQuaW50ZXJ2YWw7CisgICAgICAgICAgICAgICAgdmFyIHZh
bHVlID0gaW50ZXJ2YWwgPyBpbnRlcnZhbFswXSA6IHBvaW50LnZhbHVlOworICAgICAgICAgICAg
ICAgIGNvbnRleHQubGluZVRvKHBvaW50LnggLSB3aWR0aCwgbWV0cmljcy52YWx1ZVRvWSh2YWx1
ZSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHBvaW50LnggKyB3aWR0aCwgbWV0
cmljcy52YWx1ZVRvWSh2YWx1ZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yICh2
YXIgaSA9IHNlcmllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgICAg
IHZhciBwb2ludCA9IHNlcmllc1tpXTsKKyAgICAgICAgICAgICAgICB2YXIgaW50ZXJ2YWwgPSBw
b2ludC5pbnRlcnZhbDsKKyAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBpbnRlcnZhbCA/IGlu
dGVydmFsWzFdIDogcG9pbnQudmFsdWU7CisgICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8o
cG9pbnQueCArIHdpZHRoLCBtZXRyaWNzLnZhbHVlVG9ZKHZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgY29udGV4dC5saW5lVG8ocG9pbnQueCAtIHdpZHRoLCBtZXRyaWNzLnZhbHVlVG9ZKHZhbHVl
KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb250ZXh0LmZpbGwoKTsKICAgICAgICAg
fQotICAgICAgICBjb250ZXh0LmZpbGwoKTsKIAogICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxl
ID0gdGhpcy5fc291cmNlT3B0aW9uV2l0aEZhbGxiYWNrKHNvdXJjZSwgbGF5ZXJOYW1lICsgJ0xp
bmVTdHlsZScsICdsaW5lU3R5bGUnKTsKICAgICAgICAgY29udGV4dC5saW5lV2lkdGggPSB0aGlz
Ll9zb3VyY2VPcHRpb25XaXRoRmFsbGJhY2soc291cmNlLCBsYXllck5hbWUgKyAnTGluZVdpZHRo
JywgJ2xpbmVXaWR0aCcpOwpAQCAtNTE0LDE0ICs1MTgsMTMgQEAgY2xhc3MgVGltZVNlcmllc0No
YXJ0IGV4dGVuZHMgQ29tcG9uZW50QgogICAgICAgICAgICAgdmFyIGZpbHRlcmVkRGF0YSA9IHRp
bWVTZXJpZXMuZGF0YUJldHdlZW5Qb2ludHMocG9pbnRCZWZvcmVTdGFydCwgcG9pbnRBZnRlckVu
ZCk7CiAgICAgICAgICAgICBpZiAoIXNvdXJjZS5zYW1wbGVEYXRhKQogICAgICAgICAgICAgICAg
IHJldHVybiBmaWx0ZXJlZERhdGE7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHNlbGYuX3NhbXBsZVRpbWVTZXJpZXMoZmlsdGVyZWREYXRhLCBtYXhpbXVtTnVtYmVy
T2ZQb2ludHMsIGZpbHRlcmVkRGF0YS5zbGljZSgtMSkubWFwKGZ1bmN0aW9uIChwb2ludCkgeyBy
ZXR1cm4gcG9pbnQuaWQ7IH0pKTsKKworICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NhbXBsZVRp
bWVTZXJpZXMoZmlsdGVyZWREYXRhLCBtYXhpbXVtTnVtYmVyT2ZQb2ludHMsIGZpbHRlcmVkRGF0
YS5zbGljZSgtMSkubWFwKGZ1bmN0aW9uIChwb2ludCkgeyByZXR1cm4gcG9pbnQuaWQ7IH0pKTsK
ICAgICAgICAgfSk7CiAKICAgICAgICAgSW5zdHJ1bWVudGF0aW9uLmVuZE1lYXN1cmluZ1RpbWUo
J1RpbWVTZXJpZXNDaGFydCcsICdlbnN1cmVTYW1wbGVkVGltZVNlcmllcycpOwogCi0gICAgICAg
IGlmICh0aGlzLl9vcHRpb25zLm9uZGF0YSkKLSAgICAgICAgICAgIHRoaXMuX29wdGlvbnMub25k
YXRhKCk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2RhdGFDaGFuZ2UnKTsKIAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC02MzMsNDEgKzYzNiw0MyBAQCBjbGFzcyBUaW1l
U2VyaWVzQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRCCiAKICAgICBzdGF0aWMgY29tcHV0ZVRpbWVH
cmlkKG1pbiwgbWF4LCBtYXhMYWJlbHMpCiAgICAgewotICAgICAgICB2YXIgZGlmZlBlckxhYmVs
ID0gKG1heCAtIG1pbikgLyBtYXhMYWJlbHM7CisgICAgICAgIGNvbnN0IGRpZmZQZXJMYWJlbCA9
IChtYXggLSBtaW4pIC8gbWF4TGFiZWxzOwogCi0gICAgICAgIHZhciBpdGVyYXRvcjsKKyAgICAg
ICAgbGV0IGl0ZXJhdG9yOwogICAgICAgICBmb3IgKGl0ZXJhdG9yIG9mIHRoaXMuX3RpbWVJdGVy
YXRvcnMoKSkgewotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmRpZmYgPiBkaWZmUGVyTGFiZWwp
CisgICAgICAgICAgICBpZiAoaXRlcmF0b3IuZGlmZiA+PSBkaWZmUGVyTGFiZWwpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY29uc29sZS5hc3NlcnQoaXRlcmF0
b3IpOwogCi0gICAgICAgIHZhciBjdXJyZW50VGltZSA9IG5ldyBEYXRlKG1pbik7CisgICAgICAg
IGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUobWluKTsKICAgICAgICAgY3VycmVudFRpbWUu
c2V0VVRDTWlsbGlzZWNvbmRzKDApOwogICAgICAgICBjdXJyZW50VGltZS5zZXRVVENTZWNvbmRz
KDApOwogICAgICAgICBjdXJyZW50VGltZS5zZXRVVENNaW51dGVzKDApOwogICAgICAgICBpdGVy
YXRvci5uZXh0KGN1cnJlbnRUaW1lKTsKIAotICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAg
ICAgIGNvbnN0IGZpdHNJbk9uZURheSA9IG1heCAtIG1pbiA8IDI0ICogMzYwMCAqIDEwMDA7CisK
KyAgICAgICAgbGV0IHJlc3VsdCA9IFtdOwogCi0gICAgICAgIHZhciBwcmV2aW91c0RhdGUgPSBu
dWxsOwotICAgICAgICB2YXIgcHJldmlvdXNNb250aCA9IG51bGw7Ci0gICAgICAgIHZhciBwcmV2
aW91c0hvdXIgPSBudWxsOwotICAgICAgICB3aGlsZSAoY3VycmVudFRpbWUgPD0gbWF4KSB7Ci0g
ICAgICAgICAgICB2YXIgdGltZSA9IG5ldyBEYXRlKGN1cnJlbnRUaW1lKTsKLSAgICAgICAgICAg
IHZhciBtb250aCA9ICh0aW1lLmdldFVUQ01vbnRoKCkgKyAxKTsKLSAgICAgICAgICAgIHZhciBk
YXRlID0gdGltZS5nZXRVVENEYXRlKCk7Ci0gICAgICAgICAgICB2YXIgaG91ciA9IHRpbWUuZ2V0
VVRDSG91cnMoKTsKLSAgICAgICAgICAgIHZhciBob3VyTGFiZWwgPSAoaG91ciA+IDEyID8gaG91
ciAtIDEyIDogaG91cikgKyAoaG91ciA+PSAxMiA/ICdQTScgOiAnQU0nKTsKKyAgICAgICAgbGV0
IHByZXZpb3VzRGF0ZSA9IG51bGw7CisgICAgICAgIGxldCBwcmV2aW91c01vbnRoID0gbnVsbDsK
KyAgICAgICAgd2hpbGUgKGN1cnJlbnRUaW1lIDw9IG1heCAmJiByZXN1bHQubGVuZ3RoIDwgbWF4
TGFiZWxzKSB7CisgICAgICAgICAgICBjb25zdCB0aW1lID0gbmV3IERhdGUoY3VycmVudFRpbWUp
OworICAgICAgICAgICAgY29uc3QgbW9udGggPSB0aW1lLmdldFVUQ01vbnRoKCkgKyAxOworICAg
ICAgICAgICAgY29uc3QgZGF0ZSA9IHRpbWUuZ2V0VVRDRGF0ZSgpOworICAgICAgICAgICAgY29u
c3QgaG91ciA9IHRpbWUuZ2V0VVRDSG91cnMoKTsKKyAgICAgICAgICAgIGNvbnN0IGhvdXJMYWJl
bCA9ICgoaG91ciAlIDEyKSB8fCAxMikgKyAoaG91ciA+PSAxMiA/ICdQTScgOiAnQU0nKTsKIAog
ICAgICAgICAgICAgaXRlcmF0b3IubmV4dChjdXJyZW50VGltZSk7CiAKLSAgICAgICAgICAgIHZh
ciBsYWJlbDsKLSAgICAgICAgICAgIGlmIChkYXRlID09IHByZXZpb3VzRGF0ZSAmJiBtb250aCA9
PSBwcmV2aW91c01vbnRoKQorICAgICAgICAgICAgbGV0IGxhYmVsOworICAgICAgICAgICAgY29u
c3QgaXNNaWRuaWdodCA9ICFob3VyOworICAgICAgICAgICAgaWYgKChkYXRlID09IHByZXZpb3Vz
RGF0ZSAmJiBtb250aCA9PSBwcmV2aW91c01vbnRoKSB8fCAoKCFpc01pZG5pZ2h0IHx8IHByZXZp
b3VzRGF0ZSA9PSBudWxsKSAmJiBmaXRzSW5PbmVEYXkpKQogICAgICAgICAgICAgICAgIGxhYmVs
ID0gaG91ckxhYmVsOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbGFiZWwg
PSBgJHttb250aH0vJHtkYXRlfWA7Ci0gICAgICAgICAgICAgICAgaWYgKGhvdXIgJiYgY3VycmVu
dFRpbWUuZ2V0VVRDRGF0ZSgpICE9IGRhdGUpCisgICAgICAgICAgICAgICAgaWYgKCFpc01pZG5p
Z2h0ICYmIGN1cnJlbnRUaW1lLmdldFVUQ0RhdGUoKSAhPSBkYXRlKQogICAgICAgICAgICAgICAg
ICAgICBsYWJlbCArPSAnICcgKyBob3VyTGFiZWw7CiAgICAgICAgICAgICB9CiAKQEAgLTY3NSw5
ICs2ODAsOCBAQCBjbGFzcyBUaW1lU2VyaWVzQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRCCiAKICAg
ICAgICAgICAgIHByZXZpb3VzRGF0ZSA9IGRhdGU7CiAgICAgICAgICAgICBwcmV2aW91c01vbnRo
ID0gbW9udGg7Ci0gICAgICAgICAgICBwcmV2aW91c0hvdXIgPSBob3VyOwogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc3VsdC5sZW5ndGggPD0gbWF4TGFi
ZWxzKTsKIAogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzUzLDMzICs3NTcsNDQgQEAgY2xh
c3MgVGltZVNlcmllc0NoYXJ0IGV4dGVuZHMgQ29tcG9uZW50QgogICAgICAgICBdOwogICAgIH0K
IAotICAgIHN0YXRpYyBjb21wdXRlVmFsdWVHcmlkKG1pbiwgbWF4LCBtYXhMYWJlbHMpCisgICAg
c3RhdGljIGNvbXB1dGVWYWx1ZUdyaWQobWluLCBtYXgsIG1heExhYmVscywgZm9ybWF0dGVyKQog
ICAgIHsKLSAgICAgICAgdmFyIGRpZmYgPSBtYXggLSBtaW47Ci0gICAgICAgIHZhciBzY2FsaW5n
RmFjdG9yID0gMTsKLSAgICAgICAgdmFyIGRpZmZQZXJMYWJlbCA9IGRpZmYgLyBtYXhMYWJlbHM7
Ci0gICAgICAgIGlmIChkaWZmUGVyTGFiZWwgPCAxKSB7Ci0gICAgICAgICAgICBzY2FsaW5nRmFj
dG9yID0gTWF0aC5wb3coMTAsIE1hdGguY2VpbCgtTWF0aC5sb2coZGlmZlBlckxhYmVsKSAvIE1h
dGgubG9nKDEwKSkpOwotICAgICAgICAgICAgbWluICo9IHNjYWxpbmdGYWN0b3I7Ci0gICAgICAg
ICAgICBtYXggKj0gc2NhbGluZ0ZhY3RvcjsKLSAgICAgICAgICAgIGRpZmYgKj0gc2NhbGluZ0Zh
Y3RvcjsKLSAgICAgICAgICAgIGRpZmZQZXJMYWJlbCAqPSBzY2FsaW5nRmFjdG9yOwotICAgICAg
ICB9Ci0gICAgICAgIGRpZmZQZXJMYWJlbCA9IE1hdGguY2VpbChkaWZmUGVyTGFiZWwpOwotICAg
ICAgICB2YXIgbnVtYmVyT2ZEaWdpdHNUb0lnbm9yZSA9IE1hdGguY2VpbChNYXRoLmxvZyhkaWZm
UGVyTGFiZWwpIC8gTWF0aC5sb2coMTApKTsKLSAgICAgICAgdmFyIHN0ZXAgPSBNYXRoLnBvdygx
MCwgbnVtYmVyT2ZEaWdpdHNUb0lnbm9yZSk7Ci0KLSAgICAgICAgaWYgKGRpZmYgLyAoc3RlcCAv
IDUpIDwgbWF4TGFiZWxzKSAvLyAwLjIsIDAuNCwgZXRjLi4uCi0gICAgICAgICAgICBzdGVwIC89
IDU7Ci0gICAgICAgIGVsc2UgaWYgKGRpZmYgLyAoc3RlcCAvIDIpIDwgbWF4TGFiZWxzKSAvLyAw
LjUsIDEsIDEuNSwgZXRjLi4uCi0gICAgICAgICAgICBzdGVwIC89IDI7CisgICAgICAgIGNvbnN0
IGRpZmYgPSBtYXggLSBtaW47CisgICAgICAgIGlmICghZGlmZikKKyAgICAgICAgICAgIHJldHVy
biBbXTsKKworICAgICAgICBjb25zdCBkaWZmUGVyTGFiZWwgPSBkaWZmIC8gbWF4TGFiZWxzOwor
CisgICAgICAgIC8vIEZpcnN0LCByZWR1Y2UgdGhlIGRpZmYgYmV0d2VlbiAxIGFuZCAxMDAwIHVz
aW5nIGEgcG93ZXIgb2YgMTAwMCBvciAxMDI0LgorICAgICAgICAvLyBGSVhNRTogU2hhcmUgdGhp
cyBjb2RlIHdpdGggTWV0cmljLm1ha2VGb3JtYXR0ZXIuCisgICAgICAgIGNvbnN0IG1heEFic1Zh
bHVlID0gTWF0aC5tYXgoTWF0aC5hYnMobWluKSwgTWF0aC5hYnMobWF4KSk7CisgICAgICAgIGxl
dCBzY2FsaW5nRmFjdG9yID0gMTsKKyAgICAgICAgY29uc3QgZGl2aXNvciA9IGZvcm1hdHRlci5k
aXZpc29yOworICAgICAgICB3aGlsZSAobWF4QWJzVmFsdWUgKiBzY2FsaW5nRmFjdG9yIDwgMSkK
KyAgICAgICAgICAgIHNjYWxpbmdGYWN0b3IgKj0gZm9ybWF0dGVyLmRpdmlzb3I7CisgICAgICAg
IHdoaWxlIChtYXhBYnNWYWx1ZSAqIHNjYWxpbmdGYWN0b3IgPiBkaXZpc29yKQorICAgICAgICAg
ICAgc2NhbGluZ0ZhY3RvciAvPSBmb3JtYXR0ZXIuZGl2aXNvcjsKKyAgICAgICAgY29uc3Qgc2Nh
bGVkRGlmZiA9IGRpZmZQZXJMYWJlbCAqIHNjYWxpbmdGYWN0b3I7CisKKyAgICAgICAgLy8gU2Vj
b25kLCBjb21wdXRlIHRoZSBzbWFsbGVzdCBudW1iZXIgZ3JlYXRlciB0aGFuIHRoZSBzY2FsZWQg
ZGlmZgorICAgICAgICAvLyB3aGljaCBpcyBhIHByb2R1Y3Qgb2YgYSBwb3dlciBvZiAxMCwgMiwg
YW5kIDUuCisgICAgICAgIC8vIFRoZXNlIG51bWJlcnMgYXJlIGFsbCBmYWN0b3JzIG9mIHRoZSBk
ZWNpbWFsIG51bWVyYWwgc3lzdGVtLCAxMC4KKyAgICAgICAgY29uc3QgZGlnaXRzSW5TY2FsZWRE
aWZmID0gTWF0aC5jZWlsKE1hdGgubG9nKHNjYWxlZERpZmYpIC8gTWF0aC5sb2coMTApKTsKKyAg
ICAgICAgbGV0IHN0ZXAgPSBNYXRoLnBvdygxMCwgZGlnaXRzSW5TY2FsZWREaWZmKTsKKyAgICAg
ICAgaWYgKHN0ZXAgLyA1ID49IHNjYWxlZERpZmYpCisgICAgICAgICAgICBzdGVwIC89IDU7IC8v
IFRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IGlzIDIKKyAgICAgICAgZWxzZSBpZiAoc3RlcCAv
IDIgPj0gc2NhbGVkRGlmZikKKyAgICAgICAgICAgIHN0ZXAgLz0gMiAvLyBUaGUgbW9zdCBzaWdu
aWZpY2FudCBkaWdpdCBpcyA1CisgICAgICAgIHN0ZXAgLz0gc2NhbGluZ0ZhY3RvcjsKIAotICAg
ICAgICB2YXIgZ3JpZFZhbHVlcyA9IFtdOwotICAgICAgICB2YXIgY3VycmVudFZhbHVlID0gTWF0
aC5jZWlsKG1pbiAvIHN0ZXApICogc3RlcDsKKyAgICAgICAgY29uc3QgZ3JpZFZhbHVlcyA9IFtd
OworICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gTWF0aC5jZWlsKG1pbiAvIHN0ZXApICogc3Rl
cDsKICAgICAgICAgd2hpbGUgKGN1cnJlbnRWYWx1ZSA8PSBtYXgpIHsKLSAgICAgICAgICAgIGdy
aWRWYWx1ZXMucHVzaChjdXJyZW50VmFsdWUgLyBzY2FsaW5nRmFjdG9yKTsKKyAgICAgICAgICAg
IGxldCB1bnNjYWxlZFZhbHVlID0gY3VycmVudFZhbHVlOworICAgICAgICAgICAgZ3JpZFZhbHVl
cy5wdXNoKHt2YWx1ZTogdW5zY2FsZWRWYWx1ZSwgbGFiZWw6IGZvcm1hdHRlcih1bnNjYWxlZFZh
bHVlLCBtYXhBYnNWYWx1ZSl9KTsKICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZSArPSBzdGVwOwog
ICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIGdyaWRWYWx1ZXM7CiAgICAgfQogfQpJbmRleDog
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWV0cmljLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21ldHJp
Yy5qcwkocmV2aXNpb24gMjEyNTMyKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvbWV0cmljLmpzCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxMCArNjAsMTEgQEAg
Y2xhc3MgTWV0cmljIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgdW5pdCgpIHsgcmV0dXJu
IFJ1bnNEYXRhLnVuaXRGcm9tTWV0cmljTmFtZSh0aGlzLm5hbWUoKSk7IH0KICAgICBpc1NtYWxs
ZXJCZXR0ZXIoKSB7IHJldHVybiBSdW5zRGF0YS5pc1NtYWxsZXJCZXR0ZXIodGhpcy51bml0KCkp
OyB9CiAKLSAgICBtYWtlRm9ybWF0dGVyKHNpZ0ZpZywgYWx3YXlzU2hvd1NpZ24pCisgICAgbWFr
ZUZvcm1hdHRlcihzaWdGaWcsIGFsd2F5c1Nob3dTaWduKSB7IHJldHVybiBNZXRyaWMubWFrZUZv
cm1hdHRlcih0aGlzLnVuaXQoKSwgc2lnRmlnLCBhbHdheXNTaG93U2lnbik7IH0KKworICAgIHN0
YXRpYyBtYWtlRm9ybWF0dGVyKHVuaXQsIHNpZ0ZpZyA9IDIsIGFsd2F5c1Nob3dTaWduKQogICAg
IHsKLSAgICAgICAgdmFyIHVuaXQgPSB0aGlzLnVuaXQoKTsKLSAgICAgICAgdmFyIGlzTWlsaXNl
Y29uZHMgPSBmYWxzZTsKKyAgICAgICAgbGV0IGlzTWlsaXNlY29uZHMgPSBmYWxzZTsKICAgICAg
ICAgaWYgKHVuaXQgPT0gJ21zJykgewogICAgICAgICAgICAgaXNNaWxpc2Vjb25kcyA9IHRydWU7
CiAgICAgICAgICAgICB1bml0ID0gJ3MnOwpAQCAtNzUsMTYgKzc2LDMwIEBAIGNsYXNzIE1ldHJp
YyBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB2YXIgZGl2aXNvciA9IHVuaXQgPT0g
J0InID8gMTAyNCA6IDEwMDA7CiAgICAgICAgIHZhciBzdWZmaXggPSBbJ1x1MDNCQycsICdtJywg
JycsICdLJywgJ00nLCAnRycsICdUJywgJ1AnLCAnRSddOwogICAgICAgICB2YXIgdGhyZXNob2xk
ID0gc2lnRmlnID49IDMgPyBkaXZpc29yIDogKGRpdmlzb3IgLyAxMCk7Ci0gICAgICAgIHJldHVy
biBmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgbGV0IGZvcm1hdHRlciA9IGZ1bmN0aW9uICh2
YWx1ZSwgbWF4QWJzVmFsdWUgPSAwKSB7CiAgICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAg
IHZhciBzaWduID0gdmFsdWUgPj0gMCA/IChhbHdheXNTaG93U2lnbiA/ICcrJyA6ICcnKSA6ICct
JzsKICAgICAgICAgICAgIHZhbHVlID0gTWF0aC5hYnModmFsdWUpOwotICAgICAgICAgICAgZm9y
IChpID0gaXNNaWxpc2Vjb25kcyA/IDEgOiAyOyB2YWx1ZSA8IDEgJiYgaSA+IDA7IGktLSkKKyAg
ICAgICAgICAgIGxldCBzaWdGaWdGb3JWYWx1ZSA9IHNpZ0ZpZzsKKworICAgICAgICAgICAgLy8g
VGhlIG51bWJlciBvZiBzaWctZmlncyB0byByZWR1Y2UgaW4gb3JkZXIgdG8gbWF0Y2ggdGhhdCBv
ZiBtYXhBYnNWYWx1ZQorICAgICAgICAgICAgLy8gZS5nLiAwLjUgaW5zdGVhZCBvZiAwLjUwIHdo
ZW4gbWF4QWJzVmFsdWUgaXMgMi4KKyAgICAgICAgICAgIGxldCBhZGp1c3RtZW50ID0gMDsKKyAg
ICAgICAgICAgIGlmIChtYXhBYnNWYWx1ZSAmJiB2YWx1ZSkKKyAgICAgICAgICAgICAgICBhZGp1
c3RtZW50ID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihNYXRoLmxvZyhtYXhBYnNWYWx1ZSkgLyBN
YXRoLmxvZygxMCkpIC0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLmxvZygxMCkp
KTsKKworICAgICAgICAgICAgZm9yIChpID0gaXNNaWxpc2Vjb25kcyA/IDEgOiAyOyB2YWx1ZSAm
JiB2YWx1ZSA8IDEgJiYgaSA+IDA7IGktLSkKICAgICAgICAgICAgICAgICB2YWx1ZSAqPSBkaXZp
c29yOwogICAgICAgICAgICAgZm9yICg7IHZhbHVlID49IHRocmVzaG9sZDsgaSsrKQogICAgICAg
ICAgICAgICAgIHZhbHVlIC89IGRpdmlzb3I7Ci0gICAgICAgICAgICByZXR1cm4gc2lnbiArIHZh
bHVlLnRvUHJlY2lzaW9uKE1hdGgubWF4KDIsIHNpZ0ZpZykpICsgJyAnICsgc3VmZml4W2ldICsg
KHVuaXQgfHwgJycpOworCisgICAgICAgICAgICBpZiAoYWRqdXN0bWVudCkgLy8gTWFrZSB0aGUg
YWRqdXN0bWVudCBvbmx5IGZvciBkZWNpbWFsIHBvc2l0aW9ucyBiZWxvdyAxLgorICAgICAgICAg
ICAgICAgIGFkanVzdG1lbnQgPSBNYXRoLm1pbihhZGp1c3RtZW50LCBNYXRoLm1heCgwLCAtTWF0
aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLmxvZygxMCkpKSk7CisKKyAgICAgICAgICAg
IHJldHVybiBzaWduICsgdmFsdWUudG9QcmVjaXNpb24oc2lnRmlnIC0gYWRqdXN0bWVudCkgKyAn
ICcgKyBzdWZmaXhbaV0gKyAodW5pdCB8fCAnJyk7CiAgICAgICAgIH0KKyAgICAgICAgZm9ybWF0
dGVyLmRpdmlzb3IgPSBkaXZpc29yOworICAgICAgICByZXR1cm4gZm9ybWF0dGVyOwogICAgIH07
CiB9CiAKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvZGFz
aGJvYXJkLXBhZ2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9wYWdlcy9kYXNoYm9hcmQtcGFnZS5qcwkocmV2aXNpb24gMjEyNTMyKQorKysgV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9kYXNoYm9hcmQtcGFnZS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMTMzLDggKzEzMyw4IEBAIGNsYXNzIERhc2hib2FyZFBhZ2UgZXh0
ZW5kcyBQYWdlV2l0aEhlYWQKICAgICAgICAgICAgIHJldHVybiByZXN1bHQuZXJyb3I7CiAKICAg
ICAgICAgdmFyIG9wdGlvbnMgPSBDaGFydFN0eWxlcy5kYXNoYm9hcmRPcHRpb25zKHJlc3VsdC5t
ZXRyaWMubWFrZUZvcm1hdHRlcigzKSk7Ci0gICAgICAgIG9wdGlvbnMub25kYXRhID0gdGhpcy5f
ZmV0Y2hlZERhdGEuYmluZCh0aGlzKTsKLSAgICAgICAgdmFyIGNoYXJ0ID0gbmV3IFRpbWVTZXJp
ZXNDaGFydChDaGFydFN0eWxlcy5jcmVhdGVTb3VyY2VMaXN0KHJlc3VsdC5wbGF0Zm9ybSwgcmVz
dWx0Lm1ldHJpYywgZmFsc2UsIGZhbHNlLCB0cnVlKSwgb3B0aW9ucyk7CisgICAgICAgIGxldCBj
aGFydCA9IG5ldyBUaW1lU2VyaWVzQ2hhcnQoQ2hhcnRTdHlsZXMuY3JlYXRlU291cmNlTGlzdChy
ZXN1bHQucGxhdGZvcm0sIHJlc3VsdC5tZXRyaWMsIGZhbHNlLCBmYWxzZSwgdHJ1ZSksIG9wdGlv
bnMpOworICAgICAgICBjaGFydC5saXN0ZW5Ub0FjdGlvbignZGF0YUNoYW5nZScsICgpID0+IHRo
aXMuX2ZldGNoZWREYXRhKCkpCiAgICAgICAgIHRoaXMuX2NoYXJ0cy5wdXNoKGNoYXJ0KTsKIAog
ICAgICAgICB2YXIgc3RhdHVzVmlldyA9IG5ldyBDaGFydFN0YXR1c1ZpZXcocmVzdWx0Lm1ldHJp
YywgY2hhcnQpOwo=
</data>
<flag name="review"
          id="323646"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>