<?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>125950</bug_id>
          
          <creation_ts>2013-12-18 14:07:27 -0800</creation_ts>
          <short_desc>REGRESSION(r157480): ~8% on Dromaeo/jslib-style-prototype and ~3% on jslib-modify-prototype</short_desc>
          <delta_ts>2014-01-21 20:51:10 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>961095</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-12-18 14:07:27 -0800</bug_when>
    <thetext>https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-lion%22%2C%22Dromaeo%2Fjslib-modify-prototype%3ARuns%22%5D%2C%5B%22mac-mountainlion%22%2C%22Dromaeo%2Fjslib-modify-prototype%3ARuns%22%5D%5D&amp;days=168&amp;zoom=%5B1381602895786.1099%2C1382081401306.1758%5D

WebKit: http://trac.webkit.org/log/?rev=157480&amp;stop_rev=157479&amp;verbose=on</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961111</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-12-18 14:23:03 -0800</bug_when>
    <thetext>Also regressed jslib-style-prototype by 7-11%:

https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mountainlion%22%2C%22Dromaeo%2Fjslib-style-prototype%3ARuns%22%5D%2C%5B%22mac-lion%22%2C%22Dromaeo%2Fjslib-style-prototype%3ARuns%22%5D%5D&amp;days=227&amp;zoom=%5B1381603911466.8372%2C1382407158427.6333%5D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962018</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-12-20 13:12:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/15711021&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962188</commentid>
    <comment_count>3</comment_count>
      <attachid>219833</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-12-20 19:58:07 -0800</bug_when>
    <thetext>Created attachment 219833
A/B test result</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962189</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-12-20 20:01:19 -0800</bug_when>
    <thetext>This regression is caused by http://trac.webkit.org/changeset/157480.

Maybe we can improve elsewhere to compensate the effect?  It seems unfortunate not being able to share the code between baseline JIT and DFG JIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962194</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-20 20:07:23 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; This regression is caused by http://trac.webkit.org/changeset/157480.

Oh!  That&apos;s great news!

Previously we had two completely separate implementations of inline caching (IC): the baseline JIT version and the DFG version.  In many ways, the DFG version was better (cleaner implementation, somewhat more complete) but in other ways the baseline version was more complete (it had more performance hacks).

This patch killed the baseline version because we all sort of agreed that it was no longer maintainable.

This regression tells us that there were some performance hacks in the baseline JIT IC that apparently the DFG IC doesn&apos;t yet have.  We know that there was a finite set of things that the baseline JIT IC did that the DFG JIT IC didn&apos;t do, so we can either:

- Go through that set of optimizations and implement each of them in the DFG JIT IC.

- Check out r157479 and selectively turn off different baseline JIT IC optimizations to figure out which one these benchmarks love so much.

&gt; 
&gt; Maybe we can improve elsewhere to compensate the effect?

We can probably do that, but we could also just add whatever performance hack the Baseline JIT IC had that to the DFG JIT IC.

&gt; It seems unfortunate not being able to share the code between baseline JIT and DFG JIT.

There&apos;s no fundamental problem with the DFG JIT IC - it&apos;s just newer code that doesn&apos;t have all of the same optimization hacks that the 5-year-old baseline JIT IC had.  We thought that the DFG JIT IC had enough hacks to perform well on benchmarks but I guess we were wrong.  Now it&apos;s just a matter of figuring out which gnarly path through the baseline JIT IC code was so beneficial to these benchmarks.  Then it&apos;ll probably take no more than a 10KB patch to add that same stuff to the DFG JIT IC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970554</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-01-21 20:51:10 -0800</bug_when>
    <thetext>This appears to be also affecting DoYouEvenBench by ~1%.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>219833</attachid>
            <date>2013-12-20 19:58:07 -0800</date>
            <delta_ts>2013-12-20 19:58:07 -0800</delta_ts>
            <desc>A/B test result</desc>
            <filename>jslib-style-modify-prototype.html</filename>
            <type>text/html</type>
            <size>26374</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gJ1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9yZXNvdXJjZXMv
ZHJvbWFlby93ZWIvbGliL2pxdWVyeS0xLjYuNC5qcyc7CiAgICB2YXIgcGx1Z2lucyA9IFsnUGVy
Zm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LmZsb3QubWluLmpzJywgJ1BlcmZvcm1hbmNl
VGVzdHMvcmVzb3VyY2VzL2pxdWVyeS50YWJsZXNvcnRlci5taW4uanMnLAogICAgICAgICdQZXJm
b3JtYW5jZVRlc3RzL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzJ107CiAgICB2YXIgbG9jYWxQYXRo
ID0gJy9Wb2x1bWVzL0RhdGEvd2Via2l0Myc7CiAgICB2YXIgcmVtb3RlUGF0aCA9ICdodHRwczov
L3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rJzsKICAgIHZhciBudW1iZXJP
ZkZhaWx1cmVzID0gMDsKICAgIHZhciBzdGFydGVkTG9hZGluZ1BsdWdpbnMgPSBmYWxzZTsKICAg
IHZhciBudW1iZXJPZkxvYWRlZFBsdWdpbnMgPSAwOwoKICAgIGZ1bmN0aW9uIGxvYWRTY3JpcHQo
c3JjLCBsb2FkZWQsIGZhaWxlZCkgewogICAgICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlOwogICAgICAg
IHNjcmlwdC5zcmMgPSBzcmM7CiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGxvYWRlZDsKICAgICAg
ICBpZiAoZmFpbGVkKQogICAgICAgICAgICBzY3JpcHQub25lcnJvciA9IGZhaWxlZDsKICAgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7CiAgICB9CgogICAgZnVuY3Rpb24g
bG9hZFBsdWdpbnModHJ1bmtQYXRoKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbHVn
aW5zLmxlbmd0aDsgaSsrKQogICAgICAgICAgICBsb2FkU2NyaXB0KHRydW5rUGF0aCArICcvJyAr
IHBsdWdpbnNbaV0sIGxvYWRlZFBsdWdpbiwgY3JlYXRlRmFpbGVkVG9Mb2FkUGx1Z2luKHBsdWdp
bnNbaV0pKTsKICAgIH0KCiAgICBmdW5jdGlvbiBsb2FkZWRQbHVnaW4oKSB7CiAgICAgICAgbnVt
YmVyT2ZMb2FkZWRQbHVnaW5zKys7CiAgICAgICAgaWYgKG51bWJlck9mTG9hZGVkUGx1Z2lucyA9
PSBwbHVnaW5zLmxlbmd0aCkKICAgICAgICAgICAgc2V0VGltZW91dChpbml0LCAwKTsgICAgICAg
ICAgICAKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVGYWlsZWRUb0xvYWRQbHVnaW4ocGx1Z2lu
KSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgYWxlcnQoIkZhaWxlZCB0byBsb2FkICIg
KyBwbHVnaW4pOyB9CiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlTG9hZGVkSlF1ZXJ5KHRydW5r
UGF0aCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGxvYWRQbHVnaW5zKHRydW5rUGF0
aCk7IH0KICAgIH0KCiAgICBsb2FkU2NyaXB0KGxvY2FsUGF0aCArICcvJyArIGpRdWVyeSwKICAg
ICAgICBjcmVhdGVMb2FkZWRKUXVlcnkobG9jYWxQYXRoKSwKICAgICAgICBmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgIGxvYWRTY3JpcHQocmVtb3RlUGF0aCArICcvJyArIGpRdWVyeSwKICAgICAg
ICAgICAgICAgIGNyZWF0ZUxvYWRlZEpRdWVyeShyZW1vdGVQYXRoKSwKICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsgYWxlcnQoIkZhaWxlZCB0byBsb2FkIGpRdWVyeS4iKTsgfSk7CiAgICAg
ICAgfSk7Cn0pKCk7CgpmdW5jdGlvbiBUZXN0UmVzdWx0KG1ldHJpYywgdmFsdWVzLCBhc3NvY2lh
dGVkUnVuKSB7CiAgICBpZiAodmFsdWVzWzBdIGluc3RhbmNlb2YgQXJyYXkpIHsKICAgICAgICB2
YXIgZmxhdHRlbmVkVmFsdWVzID0gW107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1
ZXMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgIGZsYXR0ZW5lZFZhbHVlcyA9IGZsYXR0ZW5lZFZh
bHVlcy5jb25jYXQodmFsdWVzW2ldKTsKICAgICAgICB2YWx1ZXMgPSBmbGF0dGVuZWRWYWx1ZXM7
CiAgICB9CgogICAgdGhpcy50ZXN0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbWV0cmljOyB9CiAg
ICB0aGlzLnZhbHVlcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHZhbHVlcy5tYXAoZnVuY3Rpb24g
KHZhbHVlKSB7IHJldHVybiBtZXRyaWMuc2NhbGluZ0ZhY3RvcigpICogdmFsdWU7IH0pOyB9CiAg
ICB0aGlzLnVuc2NhbGVkTWVhbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFN0YXRpc3RpY3Muc3Vt
KHZhbHVlcykgLyB2YWx1ZXMubGVuZ3RoOyB9CiAgICB0aGlzLm1lYW4gPSBmdW5jdGlvbiAoKSB7
IHJldHVybiBtZXRyaWMuc2NhbGluZ0ZhY3RvcigpICogdGhpcy51bnNjYWxlZE1lYW4oKTsgfQog
ICAgdGhpcy5taW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBtZXRyaWMuc2NhbGluZ0ZhY3Rvcigp
ICogU3RhdGlzdGljcy5taW4odmFsdWVzKTsgfQogICAgdGhpcy5tYXggPSBmdW5jdGlvbiAoKSB7
IHJldHVybiBtZXRyaWMuc2NhbGluZ0ZhY3RvcigpICogU3RhdGlzdGljcy5tYXgodmFsdWVzKTsg
fQogICAgdGhpcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSA9IGZ1bmN0aW9uICgpIHsKICAgICAg
ICByZXR1cm4gbWV0cmljLnNjYWxpbmdGYWN0b3IoKSAqIFN0YXRpc3RpY3MuY29uZmlkZW5jZUlu
dGVydmFsRGVsdGEoMC45NSwgdmFsdWVzLmxlbmd0aCwKICAgICAgICAgICAgU3RhdGlzdGljcy5z
dW0odmFsdWVzKSwgU3RhdGlzdGljcy5zcXVhcmVTdW0odmFsdWVzKSk7CiAgICB9CiAgICB0aGlz
LmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhUmF0aW8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlz
LmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKCkgLyB0aGlzLm1lYW4oKTsgfQogICAgdGhpcy5wZXJj
ZW50RGlmZmVyZW5jZSA9IGZ1bmN0aW9uKG90aGVyKSB7IHJldHVybiAob3RoZXIudW5zY2FsZWRN
ZWFuKCkgLSB0aGlzLnVuc2NhbGVkTWVhbigpKSAvIHRoaXMudW5zY2FsZWRNZWFuKCk7IH0KICAg
IHRoaXMuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQgPSBmdW5jdGlvbiAob3RoZXIpIHsKICAg
ICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKG90aGVyLm1lYW4oKSAtIHRoaXMubWVhbigpKTsKICAg
ICAgICByZXR1cm4gZGlmZiA+IHRoaXMuY29uZmlkZW5jZUludGVydmFsRGVsdGEoKSAmJiBkaWZm
ID4gb3RoZXIuY29uZmlkZW5jZUludGVydmFsRGVsdGEoKTsKICAgIH0KICAgIHRoaXMucnVuID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNzb2NpYXRlZFJ1bjsgfQp9CgpmdW5jdGlvbiBUZXN0UnVu
KGVudHJ5KSB7CiAgICB0aGlzLmRlc2NyaXB0aW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50
cnlbJ2Rlc2NyaXB0aW9uJ107IH0KICAgIHRoaXMud2Via2l0UmV2aXNpb24gPSBmdW5jdGlvbiAo
KSB7IHJldHVybiBlbnRyeVsncmV2aXNpb25zJ11bJ1dlYktpdCddWydyZXZpc2lvbiddOyB9CiAg
ICB0aGlzLmxhYmVsID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsYWJlbCA9ICdyJyArIHRo
aXMud2Via2l0UmV2aXNpb24oKTsKICAgICAgICBpZiAodGhpcy5kZXNjcmlwdGlvbigpKQogICAg
ICAgICAgICBsYWJlbCArPSAnICZkYXNoOyAnICsgdGhpcy5kZXNjcmlwdGlvbigpOwogICAgICAg
IHJldHVybiBsYWJlbDsKICAgIH0KfQoKZnVuY3Rpb24gUGVyZlRlc3RNZXRyaWMobmFtZSwgbWV0
cmljKSB7CiAgICB2YXIgdGVzdFJlc3VsdHMgPSBbXTsKICAgIHZhciBjYWNoZWRVbml0ID0gbnVs
bDsKICAgIHZhciBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKICAgIHZhciB1bml0ID0geydG
cmFtZVJhdGUnOiAnZnBzJywgJ1J1bnMnOiAncnVucy9zJywgJ1RpbWUnOiAnbXMnLCAnTWFsbG9j
JzogJ2J5dGVzJywgJ0pTSGVhcCc6ICdieXRlcyd9W21ldHJpY107CgogICAgLy8gV2UgY2FuJ3Qg
ZG8gdGhpcyBpbiBUZXN0UmVzdWx0IGJlY2F1c2UgYWxsIHJlc3VsdHMgZm9yIGVhY2ggdGVzdCBu
ZWVkIHRvIHNoYXJlIHRoZSBzYW1lIHVuaXQgYW5kIHRoZSBzYW1lIHNjYWxpbmcgZmFjdG9yLgog
ICAgZnVuY3Rpb24gY29tcHV0ZVNjYWxpbmdGYWN0b3JJZk5lZWRlZCgpIHsKICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkbid0IGJlIGFkanVzdGluZyB1bml0cyBvbiBldmVyeSB0ZXN0IHJlc3Vs
dC4KICAgICAgICAvLyBXZSBjYW4gb25seSBkbyB0aGlzIG9uIHRoZSBmaXJzdCB0ZXN0LgogICAg
ICAgIGlmICghdGVzdFJlc3VsdHMubGVuZ3RoIHx8IGNhY2hlZFVuaXQpCiAgICAgICAgICAgIHJl
dHVybjsKCiAgICAgICAgdmFyIG1lYW4gPSB0ZXN0UmVzdWx0c1swXS51bnNjYWxlZE1lYW4oKTsg
Ly8gRklYTUU6IFdlIHNob3VsZCBsb29rIGF0IGFsbCB2YWx1ZXMuCiAgICAgICAgdmFyIGtpbG8g
PSB1bml0ID09ICdieXRlcycgPyAxMDI0IDogMTAwMDsKICAgICAgICBpZiAobWVhbiA+IDEwICog
a2lsbyAqIGtpbG8gJiYgdW5pdCAhPSAnbXMnKSB7CiAgICAgICAgICAgIGNhY2hlZFNjYWxpbmdG
YWN0b3IgPSAxIC8ga2lsbyAvIGtpbG87CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSAnTSAnICsg
dW5pdDsKICAgICAgICB9IGVsc2UgaWYgKG1lYW4gPiAxMCAqIGtpbG8pIHsKICAgICAgICAgICAg
Y2FjaGVkU2NhbGluZ0ZhY3RvciA9IDEgLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0ID0g
dW5pdCA9PSAnbXMnID8gJ3MnIDogKCdLICcgKyB1bml0KTsKICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gMTsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9
IHVuaXQ7CiAgICAgICAgfQogICAgfQoKICAgIHRoaXMubmFtZSA9IGZ1bmN0aW9uICgpIHsgcmV0
dXJuIG5hbWUgKyAnOicgKyBtZXRyaWM7IH0KICAgIHRoaXMuaXNNZW1vcnlUZXN0ID0gZnVuY3Rp
b24gKCkgeyByZXR1cm4gbWV0cmljID09ICdKU0hlYXAnIHx8IG1ldHJpYyA9PSAnTWFsbG9jJzsg
fQogICAgdGhpcy5hZGRSZXN1bHQgPSBmdW5jdGlvbiAobmV3UmVzdWx0KSB7CiAgICAgICAgdGVz
dFJlc3VsdHMucHVzaChuZXdSZXN1bHQpOwogICAgICAgIGNhY2hlZFVuaXQgPSBudWxsOwogICAg
ICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSBudWxsOwogICAgfQogICAgdGhpcy5yZXN1bHRzID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGVzdFJlc3VsdHM7IH0KICAgIHRoaXMuc2NhbGluZ0ZhY3Rv
ciA9IGZ1bmN0aW9uKCkgewogICAgICAgIGNvbXB1dGVTY2FsaW5nRmFjdG9ySWZOZWVkZWQoKTsK
ICAgICAgICByZXR1cm4gY2FjaGVkU2NhbGluZ0ZhY3RvcjsKICAgIH0KICAgIHRoaXMudW5pdCA9
IGZ1bmN0aW9uICgpIHsKICAgICAgICBjb21wdXRlU2NhbGluZ0ZhY3RvcklmTmVlZGVkKCk7CiAg
ICAgICAgcmV0dXJuIGNhY2hlZFVuaXQ7CiAgICB9CiAgICB0aGlzLnNtYWxsZXJJc0JldHRlciA9
IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuaXQgPT0gJ21zJyB8fCB1bml0ID09ICdieXRlcyc7IH0K
fQoKdmFyIHBsb3RDb2xvciA9ICdyZ2IoMjMwLDUwLDUwKSc7CnZhciBzdWJwb2ludHNQbG90T3B0
aW9ucyA9IHsKICAgIGxpbmVzOiB7c2hvdzp0cnVlLCBsaW5lV2lkdGg6IDB9LAogICAgY29sb3I6
IHBsb3RDb2xvciwKICAgIHBvaW50czoge3Nob3c6IHRydWUsIHJhZGl1czogMX0sCiAgICBiYXJz
OiB7c2hvdzogZmFsc2V9fTsKCnZhciBtYWluUGxvdE9wdGlvbnMgPSB7CiAgICB4YXhpczogewog
ICAgICAgIG1pbjogLTAuNSwKICAgICAgICB0aWNrU2l6ZTogMSwKICAgIH0sCiAgICBjcm9zc2hh
aXI6IHsgbW9kZTogJ3knIH0sCiAgICBzZXJpZXM6IHsgc2hhZG93U2l6ZTogMCB9LAogICAgYmFy
czoge3Nob3c6IHRydWUsIGFsaWduOiAnY2VudGVyJywgYmFyV2lkdGg6IDAuNX0sCiAgICBsaW5l
czogeyBzaG93OiBmYWxzZSB9LAogICAgcG9pbnRzOiB7IHNob3c6IHRydWUgfSwKICAgIGdyaWQ6
IHsKICAgICAgICBib3JkZXJXaWR0aDogMSwKICAgICAgICBib3JkZXJDb2xvcjogJyNjY2MnLAog
ICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLAogICAgICAgIGhvdmVyYWJsZTogdHJ1ZSwK
ICAgICAgICBhdXRvSGlnaGxpZ2h0OiBmYWxzZSwKICAgIH0KfTsKCnZhciB0aW1lUGxvdE9wdGlv
bnMgPSB7CiAgICB5YXhpczogeyBzaG93OiBmYWxzZSB9LAogICAgeGF4aXM6IHsgc2hvdzogZmFs
c2UgfSwKICAgIGxpbmVzOiB7IHNob3c6IHRydWUgfSwKICAgIGdyaWQ6IHsgYm9yZGVyV2lkdGg6
IDEsIGJvcmRlckNvbG9yOiAnI2NjYycgfSwKICAgIGNvbG9yczogWyBwbG90Q29sb3IgXQp9OwoK
ZnVuY3Rpb24gY3JlYXRlUGxvdChjb250YWluZXIsIHRlc3QpIHsKICAgIHZhciBzZWN0aW9uID0g
JCgnPHNlY3Rpb24+PGRpdiBjbGFzcz0icGxvdCI+PC9kaXY+PGRpdiBjbGFzcz0idGltZS1wbG90
cyI+PC9kaXY+JwogICAgICAgICsgJzxzcGFuIGNsYXNzPSJ0b29sdGlwIj48L3NwYW4+PC9zZWN0
aW9uPicpOwogICAgc2VjdGlvbi5jaGlsZHJlbignLnBsb3QnKS5jc3Moeyd3aWR0aCc6ICgxMDAg
KiB0ZXN0LnJlc3VsdHMoKS5sZW5ndGggKyAyNSkgKyAncHgnLCAnaGVpZ2h0JzogJzMwMHB4J30p
OwogICAgJChjb250YWluZXIpLmFwcGVuZChzZWN0aW9uKTsKCiAgICB2YXIgcGxvdENvbnRhaW5l
ciA9IHNlY3Rpb24uY2hpbGRyZW4oJy5wbG90Jyk7CiAgICB2YXIgbWluSXNaZXJvID0gdHJ1ZTsK
ICAgIGF0dGFjaFBsb3QodGVzdCwgcGxvdENvbnRhaW5lciwgbWluSXNaZXJvKTsKCiAgICBhdHRh
Y2hUaW1lUGxvdHModGVzdCwgc2VjdGlvbi5jaGlsZHJlbignLnRpbWUtcGxvdHMnKSk7CgogICAg
dmFyIHRvb2x0aXAgPSBzZWN0aW9uLmNoaWxkcmVuKCcudG9vbHRpcCcpOwogICAgcGxvdENvbnRh
aW5lci5iaW5kKCdwbG90aG92ZXInLCBmdW5jdGlvbiAoZXZlbnQsIHBvc2l0aW9uLCBpdGVtKSB7
CiAgICAgICAgaWYgKGl0ZW0pIHsKICAgICAgICAgICAgdmFyIHBvc3RmaXggPSBpdGVtLnNlcmll
cy5pZCA/ICcgKCcgKyBpdGVtLnNlcmllcy5pZCArICcpJyA6ICcnOwogICAgICAgICAgICB0b29s
dGlwLmh0bWwoaXRlbS5kYXRhcG9pbnRbMV0udG9QcmVjaXNpb24oNCkgKyBwb3N0Zml4KTsKICAg
ICAgICAgICAgdmFyIHNlY3Rpb25PZmZzZXQgPSAkKHNlY3Rpb24pLm9mZnNldCgpOwogICAgICAg
ICAgICB0b29sdGlwLmNzcyh7bGVmdDogaXRlbS5wYWdlWCAtIHNlY3Rpb25PZmZzZXQubGVmdCAt
IHRvb2x0aXAub3V0ZXJXaWR0aCgpIC8gMiwgdG9wOiBpdGVtLnBhZ2VZIC0gc2VjdGlvbk9mZnNl
dC50b3AgKyAxMH0pOwogICAgICAgICAgICB0b29sdGlwLmZhZGVJbigyMDApOwogICAgICAgIH0g
ZWxzZQogICAgICAgICAgICB0b29sdGlwLmhpZGUoKTsKICAgIH0pOwogICAgcGxvdENvbnRhaW5l
ci5tb3VzZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgdG9vbHRpcC5oaWRlKCk7CiAgICB9KTsK
ICAgIHBsb3RDb250YWluZXIuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKICAgICAgICBtaW5Jc1plcm8gPSAhbWluSXNaZXJvOwogICAgICAg
IGF0dGFjaFBsb3QodGVzdCwgcGxvdENvbnRhaW5lciwgbWluSXNaZXJvKTsKICAgIH0pOwoKICAg
IHJldHVybiBzZWN0aW9uOwp9CgpmdW5jdGlvbiBhdHRhY2hUaW1lUGxvdHModGVzdCwgY29udGFp
bmVyKSB7CiAgICB2YXIgcmVzdWx0cyA9IHRlc3QucmVzdWx0cygpOwogICAgdmFyIGF0dGFjaGVk
UGxvdCA9IGZhbHNlOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsr
KSB7CiAgICAgICAgY29udGFpbmVyLmFwcGVuZCgnPGRpdj48L2Rpdj4nKTsKICAgICAgICB2YXIg
dmFsdWVzID0gcmVzdWx0c1tpXS52YWx1ZXMoKTsKICAgICAgICBpZiAoIXZhbHVlcykKICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgYXR0YWNoZWRQbG90ID0gdHJ1ZTsKCiAgICAgICAgJC5w
bG90KGNvbnRhaW5lci5jaGlsZHJlbigpLmxhc3QoKSwgW3ZhbHVlcy5tYXAoZnVuY3Rpb24gKHZh
bHVlLCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCB2YWx1ZV07IH0pXSwKICAgICAgICAgICAgJC5l
eHRlbmQodHJ1ZSwge30sIHRpbWVQbG90T3B0aW9ucywge3lheGlzOiB7bWluOiBNYXRoLm1pbi5h
cHBseShNYXRoLCB2YWx1ZXMpICogMC45LCBtYXg6IE1hdGgubWF4LmFwcGx5KE1hdGgsIHZhbHVl
cykgKiAxLjF9LAogICAgICAgICAgICAgICAgeGF4aXM6IHttaW46IC0wLjUsIG1heDogdmFsdWVz
Lmxlbmd0aCAtIDAuNX19KSk7CiAgICB9CiAgICBpZiAoIWF0dGFjaGVkUGxvdCkKICAgICAgICBj
b250YWluZXIuY2hpbGRyZW4oKS5yZW1vdmUoKTsKfQoKZnVuY3Rpb24gYXR0YWNoUGxvdCh0ZXN0
LCBwbG90Q29udGFpbmVyLCBtaW5Jc1plcm8pIHsKICAgIHZhciByZXN1bHRzID0gdGVzdC5yZXN1
bHRzKCk7CgogICAgdmFyIHZhbHVlcyA9IHJlc3VsdHMucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZXMs
IHJlc3VsdCwgaW5kZXgpIHsKICAgICAgICB2YXIgbmV3VmFsdWVzID0gcmVzdWx0LnZhbHVlcygp
OwogICAgICAgIHJldHVybiBuZXdWYWx1ZXMgPyB2YWx1ZXMuY29uY2F0KG5ld1ZhbHVlcy5tYXAo
ZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBbaW5kZXgsIHZhbHVlXTsgfSkpIDogdmFsdWVzOwog
ICAgfSwgW10pOwoKICAgIHZhciBwbG90RGF0YSA9IFskLmV4dGVuZCh0cnVlLCB7fSwgc3VicG9p
bnRzUGxvdE9wdGlvbnMsIHtkYXRhOiB2YWx1ZXN9KV07CiAgICBwbG90RGF0YS5wdXNoKHtpZDog
JyZtdTsnLCBkYXRhOiByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1
cm4gW2luZGV4LCByZXN1bHQubWVhbigpXTsgfSksIGNvbG9yOiBwbG90Q29sb3J9KTsKCiAgICB2
YXIgb3ZlcmFsbE1heCA9IFN0YXRpc3RpY3MubWF4KHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1
bHQsIGluZGV4KSB7IHJldHVybiByZXN1bHQubWF4KCk7IH0pKTsKICAgIHZhciBvdmVyYWxsTWlu
ID0gU3RhdGlzdGljcy5taW4ocmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsg
cmV0dXJuIHJlc3VsdC5taW4oKTsgfSkpOwogICAgdmFyIG1hcmdpbiA9IChvdmVyYWxsTWF4IC0g
b3ZlcmFsbE1pbikgKiAwLjE7CiAgICB2YXIgY3VycmVudFBsb3RPcHRpb25zID0gJC5leHRlbmQo
dHJ1ZSwge30sIG1haW5QbG90T3B0aW9ucywge3lheGlzOiB7CiAgICAgICAgbWluOiBtaW5Jc1pl
cm8gPyAwIDogb3ZlcmFsbE1pbiAtIG1hcmdpbiwKICAgICAgICBtYXg6IG1pbklzWmVybyA/IG92
ZXJhbGxNYXggKiAxLjEgOiBvdmVyYWxsTWF4ICsgbWFyZ2lufX0pOwoKICAgIGN1cnJlbnRQbG90
T3B0aW9ucy54YXhpcy5tYXggPSByZXN1bHRzLmxlbmd0aCAtIDAuNTsKICAgIGN1cnJlbnRQbG90
T3B0aW9ucy54YXhpcy50aWNrcyA9IHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4
KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5ydW4oKS5sYWJlbCgpXTsgfSk7CgogICAgJC5wbG90
KHBsb3RDb250YWluZXIsIHBsb3REYXRhLCBjdXJyZW50UGxvdE9wdGlvbnMpOwp9CgpmdW5jdGlv
biB0b0ZpeGVkV2lkdGhQcmVjaXNpb24odmFsdWUpIHsKICAgIHZhciBkZWNpbWFsID0gdmFsdWUu
dG9GaXhlZCgyKTsKICAgIHJldHVybiBkZWNpbWFsOwp9CgpmdW5jdGlvbiBmb3JtYXRQZXJjZW50
YWdlKGZyYWN0aW9uKSB7CiAgICB2YXIgcGVyY2VudGFnZSA9IGZyYWN0aW9uICogMTAwOwogICAg
cmV0dXJuIChmcmFjdGlvbiAqIDEwMCkudG9GaXhlZCgyKSArICclJzsKfQoKZnVuY3Rpb24gY3Jl
YXRlVGFibGUodGVzdHMsIHJ1bnMsIHNob3VsZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNlSW5kZXgp
IHsKICAgICQoJyNjb250YWluZXInKS5odG1sKCc8dGhlYWQ+PHRyPjx0aD5UZXN0PC90aD48dGg+
VW5pdDwvdGg+JyArIHJ1bnMubWFwKGZ1bmN0aW9uIChydW4sIGluZGV4KSB7CiAgICAgICAgcmV0
dXJuICc8dGggY29sc3Bhbj0iJyArIChpbmRleCA9PSByZWZlcmVuY2VJbmRleCA/IDIgOiAzKSAr
ICciIGNsYXNzPSJ7c29ydGVyOiBcJ2NvbXBhcmlzb25cJ30iPicgKyBydW4ubGFiZWwoKSArICc8
L3RoPic7CiAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKG1hcmt1cCwgY2VsbCkgeyByZXR1cm4gbWFy
a3VwICsgY2VsbDsgfSwgJycpICsgJzwvdHI+PC9oZWFkPjx0Ym9keT48L3Rib2R5PicpOwoKICAg
IHZhciB0ZXN0TmFtZXMgPSBbXTsKICAgIGZvciAodGVzdE5hbWUgaW4gdGVzdHMpCiAgICAgICAg
dGVzdE5hbWVzLnB1c2godGVzdE5hbWUpOwoKICAgIHRlc3ROYW1lcy5zb3J0KCkubWFwKGZ1bmN0
aW9uICh0ZXN0TmFtZSkgewogICAgICAgIHZhciB0ZXN0ID0gdGVzdHNbdGVzdE5hbWVdOwogICAg
ICAgIGlmICh0ZXN0LmlzTWVtb3J5VGVzdCgpICE9IHNob3VsZElnbm9yZU1lbW9yeSkKICAgICAg
ICAgICAgY3JlYXRlVGFibGVSb3cocnVucywgdGVzdCwgcmVmZXJlbmNlSW5kZXgpOwogICAgfSk7
CgogICAgJCgnI2NvbnRhaW5lcicpLnRhYmxlc29ydGVyKHt3aWRnZXRzOiBbJ3plYnJhJ119KTsK
fQoKZnVuY3Rpb24gbGluZWFyUmVncmVzc2lvbihwb2ludHMpIHsKICAgIC8vIEltcGxlbWVudCBo
dHRwOi8vd3d3LmVhc3ljYWxjdWxhdGlvbi5jb20vc3RhdGlzdGljcy9sZWFybi1jb3JyZWxhdGlv
bi5waHAuCiAgICAvLyB4ID0gbWFnbml0dWRlCiAgICAvLyB5ID0gaXRlcmF0aW9ucwogICAgdmFy
IHN1bVggPSAwOwogICAgdmFyIHN1bVkgPSAwOwogICAgdmFyIHN1bVhTcXVhcmVkID0gMDsKICAg
IHZhciBzdW1ZU3F1YXJlZCA9IDA7CiAgICB2YXIgc3VtWFRpbWVzWSA9IDA7CgogICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgeCA9IGk7CiAg
ICAgICAgdmFyIHkgPSBwb2ludHNbaV07CiAgICAgICAgc3VtWCArPSB4OwogICAgICAgIHN1bVkg
Kz0geTsKICAgICAgICBzdW1YU3F1YXJlZCArPSB4ICogeDsKICAgICAgICBzdW1ZU3F1YXJlZCAr
PSB5ICogeTsKICAgICAgICBzdW1YVGltZXNZICs9IHggKiB5OwogICAgfQoKICAgIHZhciByID0g
KHBvaW50cy5sZW5ndGggKiBzdW1YVGltZXNZIC0gc3VtWCAqIHN1bVkpIC8KICAgICAgICBNYXRo
LnNxcnQoKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAtIHN1bVggKiBzdW1YKSAqCiAgICAg
ICAgICAgICAgICAgIChwb2ludHMubGVuZ3RoICogc3VtWVNxdWFyZWQgLSBzdW1ZICogc3VtWSkp
OwoKICAgIGlmIChpc05hTihyKSB8fCByID09IE1hdGguSW5maW5pdHkpCiAgICAgICAgciA9IDA7
CgogICAgdmFyIHNsb3BlID0gKHBvaW50cy5sZW5ndGggKiBzdW1YVGltZXNZIC0gc3VtWCAqIHN1
bVkpIC8gKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAtIHN1bVggKiBzdW1YKTsKICAgIHZh
ciBpbnRlcmNlcHQgPSBzdW1ZIC8gcG9pbnRzLmxlbmd0aCAtIHNsb3BlICogc3VtWCAvIHBvaW50
cy5sZW5ndGg7CiAgICByZXR1cm4ge3Nsb3BlOiBzbG9wZSwgaW50ZXJjZXB0OiBpbnRlcmNlcHQs
IHJTcXVhcmVkOiByICogcn07Cn0KCnZhciB3YXJuaW5nU2lnbiA9ICc8c3ZnIHZpZXdCb3g9IjAg
MCAxMDAgMTAwIiBzdHlsZT0id2lkdGg6IDE4cHg7IGhlaWdodDogMThweDsgdmVydGljYWwtYWxp
Z246IGJvdHRvbTsiIHZlcnNpb249IjEuMSI+JwogICAgKyAnPHBvbHlnb24gZmlsbD0icmVkIiBw
b2ludHM9IjUwLDEwIDkwLDgwIDEwLDgwIDUwLDEwIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4nCiAgICArICc8cG9seWdvbiBmaWxsPSJ3
aGl0ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwgNTAsIDI4LjcsIDUyLDI5IDUzLDMwIDUwLDYwIiBz
dHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAv
PicKICAgICsgJzxjaXJjbGUgY3g9IjUwIiBjeT0iNzMiIHI9IjYiIGZpbGw9IndoaXRlIiAvPicK
ICAgICsgJzwvc3ZnPic7CgpmdW5jdGlvbiBjcmVhdGVUYWJsZVJvdyhydW5zLCB0ZXN0LCByZWZl
cmVuY2VJbmRleCkgewogICAgdmFyIHRhYmxlUm93ID0gJCgnPHRyPjx0ZCBjbGFzcz0idGVzdCI+
JyArIHRlc3QubmFtZSgpICsgJzwvdGQ+PHRkIGNsYXNzPSJ1bml0Ij4nICsgdGVzdC51bml0KCkg
KyAnPC90ZD48L3RyPicpOwoKICAgIGZ1bmN0aW9uIG1hcmt1cEZvclJ1bihyZXN1bHQsIHJlZmVy
ZW5jZVJlc3VsdCkgewogICAgICAgIHZhciBjb21wYXJpc29uQ2VsbCA9ICcnOwogICAgICAgIHZh
ciBoaWRkZW5WYWx1ZSA9ICcnOwogICAgICAgIHZhciBzaG91bGRDb21wYXJlID0gcmVzdWx0ICE9
PSByZWZlcmVuY2VSZXN1bHQ7CiAgICAgICAgaWYgKHNob3VsZENvbXBhcmUgJiYgcmVmZXJlbmNl
UmVzdWx0KSB7CiAgICAgICAgICAgIHZhciBwZXJjZW50RGlmZmVyZW5jZSA9IHJlZmVyZW5jZVJl
c3VsdC5wZXJjZW50RGlmZmVyZW5jZShyZXN1bHQpOwogICAgICAgICAgICB2YXIgYmV0dGVyID0g
dGVzdC5zbWFsbGVySXNCZXR0ZXIoKSA/IHBlcmNlbnREaWZmZXJlbmNlIDwgMCA6IHBlcmNlbnRE
aWZmZXJlbmNlID4gMDsKICAgICAgICAgICAgdmFyIGNvbXBhcmlzb24gPSAnJzsKICAgICAgICAg
ICAgdmFyIGNsYXNzTmFtZSA9ICdjb21wYXJpc29uJzsKICAgICAgICAgICAgaWYgKHJlZmVyZW5j
ZVJlc3VsdC5pc1N0YXRpc3RpY2FsbHlTaWduaWZpY2FudChyZXN1bHQpKSB7CiAgICAgICAgICAg
ICAgICBjb21wYXJpc29uID0gZm9ybWF0UGVyY2VudGFnZShNYXRoLmFicyhwZXJjZW50RGlmZmVy
ZW5jZSkpICsgKGJldHRlciA/ICcgQmV0dGVyJyA6ICcgV29yc2UmbmJzcDsnKTsKICAgICAgICAg
ICAgICAgIGNsYXNzTmFtZSArPSBiZXR0ZXIgPyAnIGJldHRlcicgOiAnIHdvcnNlJzsKICAgICAg
ICAgICAgfQogICAgICAgICAgICBoaWRkZW5WYWx1ZSA9ICc8c3BhbiBzdHlsZT0iZGlzcGxheTog
bm9uZSI+fCcgKyBjb21wYXJpc29uICsgJzwvc3Bhbj4nOwogICAgICAgICAgICBjb21wYXJpc29u
Q2VsbCA9ICc8dGQgY2xhc3M9IicgKyBjbGFzc05hbWUgKyAnIj4nICsgY29tcGFyaXNvbiArICc8
L3RkPic7CiAgICAgICAgfSBlbHNlIGlmIChzaG91bGRDb21wYXJlKQogICAgICAgICAgICBjb21w
YXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+JzsKCiAgICAgICAgdmFy
IHZhbHVlcyA9IHJlc3VsdC52YWx1ZXMoKTsKICAgICAgICB2YXIgd2FybmluZyA9ICcnOwogICAg
ICAgIHZhciByZWdyZXNzaW9uQW5hbHlzaXMgPSAnJzsKICAgICAgICBpZiAodmFsdWVzICYmIHZh
bHVlcy5sZW5ndGggPiAzKSB7CiAgICAgICAgICAgIHJlZ3Jlc3Npb25SZXN1bHQgPSBsaW5lYXJS
ZWdyZXNzaW9uKHZhbHVlcyk7CiAgICAgICAgICAgIHJlZ3Jlc3Npb25BbmFseXNpcyA9ICdzbG9w
ZT0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlZ3Jlc3Npb25SZXN1bHQuc2xvcGUpCiAgICAg
ICAgICAgICAgICArICcsIFJeMj0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlZ3Jlc3Npb25S
ZXN1bHQuclNxdWFyZWQpOwogICAgICAgICAgICBpZiAocmVncmVzc2lvblJlc3VsdC5yU3F1YXJl
ZCA+IDAuNiAmJiBNYXRoLmFicyhyZWdyZXNzaW9uUmVzdWx0LnNsb3BlKSA+IDAuMDEpIHsKICAg
ICAgICAgICAgICAgIHdhcm5pbmcgPSAnIDxzcGFuIGNsYXNzPSJyZWdyZXNzaW9uLXdhcm5pbmci
IHRpdGxlPSJEZXRlY3RlZCBhIHRpbWUgZGVwZW5kZW5jeSB3aXRoICcgKyByZWdyZXNzaW9uQW5h
bHlzaXMgKyAnIj4nICsgd2FybmluZ1NpZ24gKyAnIDwvc3Bhbj4nOwogICAgICAgICAgICB9CiAg
ICAgICAgfQoKICAgICAgICB2YXIgc3RhdGlzdGljcyA9ICcmc2lnbWE7PScgKyB0b0ZpeGVkV2lk
dGhQcmVjaXNpb24ocmVzdWx0LmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKCkpICsgJywgbWluPScg
KyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1pbigpKQogICAgICAgICAgICArICcsIG1h
eD0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5tYXgoKSkgKyAnXG4nICsgcmVncmVz
c2lvbkFuYWx5c2lzOwoKICAgICAgICAvLyBUYWJsZXNvcnRlciBkb2Vzbid0IGtub3cgYWJvdXQg
dGhlIHNlY29uZCBjZWxsIHNvIHB1dCB0aGUgY29tcGFyaXNvbiBpbiB0aGUgaW52aXNpYmxlIGVs
ZW1lbnQuCiAgICAgICAgcmV0dXJuICc8dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9IicgKyBzdGF0
aXN0aWNzICsgJyI+JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWVhbigpKSArIGhp
ZGRlblZhbHVlCiAgICAgICAgICAgICsgJzwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2
YWxEZWx0YSIgdGl0bGU9IicgKyBzdGF0aXN0aWNzICsgJyI+JnBsdXNtbjsgJwogICAgICAgICAg
ICArIGZvcm1hdFBlcmNlbnRhZ2UocmVzdWx0LmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhUmF0aW8o
KSkgKyB3YXJuaW5nICsgJzwvdGQ+JyArIGNvbXBhcmlzb25DZWxsOwogICAgfQoKICAgIGZ1bmN0
aW9uIG1hcmt1cEZvck1pc3NpbmdSdW4oaXNSZWZlcmVuY2UpIHsKICAgICAgICByZXR1cm4gJzx0
ZCBjb2xzcGFuPSInICsgKGlzUmVmZXJlbmNlID8gMiA6IDMpICsgJyIgY2xhc3M9Im1pc3Npbmci
Pk1pc3Npbmc8L3RkPic7CiAgICB9CgogICAgdmFyIHJ1bkluZGV4ID0gMDsKICAgIHZhciByZXN1
bHRzID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgcmVmZXJlbmNlUmVzdWx0ID0gdW5kZWZpbmVk
OwogICAgdmFyIHJlc3VsdEluZGV4TWFwID0ge307CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJl
c3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB3aGlsZSAocnVuc1tydW5JbmRleF0gIT09IHJl
c3VsdHNbaV0ucnVuKCkpCiAgICAgICAgICAgIHJ1bkluZGV4Kys7CiAgICAgICAgaWYgKHJ1bklu
ZGV4ID09IHJlZmVyZW5jZUluZGV4KQogICAgICAgICAgICByZWZlcmVuY2VSZXN1bHQgPSByZXN1
bHRzW2ldOwogICAgICAgIHJlc3VsdEluZGV4TWFwW3J1bkluZGV4XSA9IGk7CiAgICB9CiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHJ1bnMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgcmVzdWx0
SW5kZXggPSByZXN1bHRJbmRleE1hcFtpXTsKICAgICAgICBpZiAocmVzdWx0SW5kZXggPT0gdW5k
ZWZpbmVkKQogICAgICAgICAgICB0YWJsZVJvdy5hcHBlbmQobWFya3VwRm9yTWlzc2luZ1J1bihp
ID09IHJlZmVyZW5jZUluZGV4KSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICB0YWJsZVJvdy5h
cHBlbmQobWFya3VwRm9yUnVuKHJlc3VsdHNbcmVzdWx0SW5kZXhdLCByZWZlcmVuY2VSZXN1bHQp
KTsKICAgIH0KCiAgICAkKCcjY29udGFpbmVyJykuY2hpbGRyZW4oJ3Rib2R5JykubGFzdCgpLmFw
cGVuZCh0YWJsZVJvdyk7CgogICAgdGFibGVSb3cuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7CiAg
ICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPSB0YWJsZVJvd1swXSAmJiBldmVudC50YXJnZXQucGFy
ZW50Tm9kZSAhPSB0YWJsZVJvd1swXSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICB2YXIgZmlyc3RDZWxsID0gdGFibGVSb3cuY2hp
bGRyZW4oJ3RkJykuZmlyc3QoKTsKICAgICAgICBpZiAoZmlyc3RDZWxsLmNoaWxkcmVuKCdzZWN0
aW9uJykubGVuZ3RoKSB7CiAgICAgICAgICAgIGZpcnN0Q2VsbC5jaGlsZHJlbignc2VjdGlvbicp
LnJlbW92ZSgpOwogICAgICAgICAgICB0YWJsZVJvdy5jaGlsZHJlbigndGQnKS5jc3MoeydwYWRk
aW5nLWJvdHRvbSc6ICcnfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIHBsb3Qg
PSBjcmVhdGVQbG90KGZpcnN0Q2VsbCwgdGVzdCk7CiAgICAgICAgICAgIHBsb3QuY3NzKHsncG9z
aXRpb24nOiAnYWJzb2x1dGUnLCAnei1pbmRleCc6IDJ9KTsKICAgICAgICAgICAgdmFyIG9mZnNl
dCA9IHRhYmxlUm93Lm9mZnNldCgpOwogICAgICAgICAgICBvZmZzZXQubGVmdCArPSAxOwogICAg
ICAgICAgICBvZmZzZXQudG9wICs9IHRhYmxlUm93Lm91dGVySGVpZ2h0KCk7CiAgICAgICAgICAg
IHBsb3Qub2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAgIHRhYmxlUm93LmNoaWxkcmVuKCd0ZCcp
LmNzcyh7J3BhZGRpbmctYm90dG9tJzogcGxvdC5vdXRlckhlaWdodCgpICsgNX0pOwogICAgICAg
IH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Cn0KCmZ1bmN0aW9uIGluaXQoKSB7CiAg
ICAkLnRhYmxlc29ydGVyLmFkZFBhcnNlcih7CiAgICAgICAgaWQ6ICdjb21wYXJpc29uJywKICAg
ICAgICBpczogZnVuY3Rpb24ocykgewogICAgICAgICAgICByZXR1cm4gcy5pbmRleE9mKCd8Jykg
Pj0gMDsKICAgICAgICB9LAogICAgICAgIGZvcm1hdDogZnVuY3Rpb24ocykgewogICAgICAgICAg
ICB2YXIgcGFyc2VkID0gcGFyc2VGbG9hdChzLnN1YnN0cmluZyhzLmluZGV4T2YoJ3wnKSArIDEp
KTsKICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNlZCkgPyAwIDogcGFyc2VkOwogICAgICAg
IH0sCiAgICAgICAgdHlwZTogJ251bWVyaWMnLAogICAgfSk7CgogICAgdmFyIHJ1bnMgPSBbXTsK
ICAgIHZhciBtZXRyaWNzID0ge307CiAgICAkLmVhY2goSlNPTi5wYXJzZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnanNvbicpLnRleHRDb250ZW50KSwgZnVuY3Rpb24gKGluZGV4LCBlbnRyeSkg
ewogICAgICAgIHZhciBydW4gPSBuZXcgVGVzdFJ1bihlbnRyeSk7CiAgICAgICAgcnVucy5wdXNo
KHJ1bik7CgogICAgICAgIGZ1bmN0aW9uIGFkZFRlc3RzKHRlc3RzLCBwYXJlbnRGdWxsTmFtZSkg
ewogICAgICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiB0ZXN0cykgewogICAgICAgICAgICAg
ICAgdmFyIGZ1bGxUZXN0TmFtZSA9IHBhcmVudEZ1bGxOYW1lICsgJy8nICsgdGVzdE5hbWU7CiAg
ICAgICAgICAgICAgICB2YXIgcmF3TWV0cmljcyA9IHRlc3RzW3Rlc3ROYW1lXS5tZXRyaWNzOwoK
ICAgICAgICAgICAgICAgIGZvciAodmFyIG1ldHJpY05hbWUgaW4gcmF3TWV0cmljcykgewogICAg
ICAgICAgICAgICAgICAgIHZhciBmdWxsTWV0cmljTmFtZSA9IGZ1bGxUZXN0TmFtZSArICc6JyAr
IG1ldHJpY05hbWU7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1ldHJpYyA9IG1ldHJpY3NbZnVs
bE1ldHJpY05hbWVdOwogICAgICAgICAgICAgICAgICAgIGlmICghbWV0cmljKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIG1ldHJpYyA9IG5ldyBQZXJmVGVzdE1ldHJpYyhmdWxsVGVzdE5hbWUs
IG1ldHJpY05hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzW2Z1bGxNZXRyaWNO
YW1lXSA9IG1ldHJpYzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
bWV0cmljLmFkZFJlc3VsdChuZXcgVGVzdFJlc3VsdChtZXRyaWMsIHJhd01ldHJpY3NbbWV0cmlj
TmFtZV0uY3VycmVudCwgcnVuKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
aWYgKHRlc3RzW3Rlc3ROYW1lXS50ZXN0cykKICAgICAgICAgICAgICAgICAgICBhZGRUZXN0cyh0
ZXN0c1t0ZXN0TmFtZV0udGVzdHMsIGZ1bGxUZXN0TmFtZSk7CiAgICAgICAgICAgIH0KICAgICAg
ICB9CgogICAgICAgIGFkZFRlc3RzKGVudHJ5LnRlc3RzLCAnJyk7CiAgICB9KTsKCiAgICB2YXIg
c2hvdWxkSWdub3JlTWVtb3J5PSB0cnVlOwogICAgdmFyIHJlZmVyZW5jZUluZGV4ID0gMDsKCiAg
ICBjcmVhdGVUYWJsZShtZXRyaWNzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5j
ZUluZGV4KTsKCiAgICAkKCcjdGltZS1tZW1vcnknKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAo
ZXZlbnQsIGNoZWNrZWRFbGVtZW50KSB7CiAgICAgICAgc2hvdWxkSWdub3JlTWVtb3J5ID0gY2hl
Y2tlZEVsZW1lbnQudGV4dENvbnRlbnQgPT0gJ1RpbWUnOwogICAgICAgIGNyZWF0ZVRhYmxlKG1l
dHJpY3MsIHJ1bnMsIHNob3VsZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNlSW5kZXgpOwogICAgfSk7
CgogICAgcnVucy5tYXAoZnVuY3Rpb24gKHJ1biwgaW5kZXgpIHsKICAgICAgICAkKCcjcmVmZXJl
bmNlJykuYXBwZW5kKCc8c3BhbiB2YWx1ZT0iJyArIGluZGV4ICsgJyInICsgKGluZGV4ID09IHJl
ZmVyZW5jZUluZGV4ID8gJyBjbGFzcz0iY2hlY2tlZCInIDogJycpICsgJz4nICsgcnVuLmxhYmVs
KCkgKyAnPC9zcGFuPicpOwogICAgfSkKCiAgICAkKCcjcmVmZXJlbmNlJykuYmluZCgnY2hhbmdl
JywgZnVuY3Rpb24gKGV2ZW50LCBjaGVja2VkRWxlbWVudCkgewogICAgICAgIHJlZmVyZW5jZUlu
ZGV4ID0gcGFyc2VJbnQoY2hlY2tlZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpKTsKICAg
ICAgICBjcmVhdGVUYWJsZShtZXRyaWNzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVy
ZW5jZUluZGV4KTsKICAgIH0pOwoKICAgICQoJy5jaGVja2JveCcpLmVhY2goZnVuY3Rpb24gKGlu
ZGV4LCBjaGVja2JveCkgewogICAgICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFuJykuY2xp
Y2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0NsYXNzKCdj
aGVja2VkJykpCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICQoY2hlY2tib3gp
LmNoaWxkcmVuKCdzcGFuJykucmVtb3ZlQ2xhc3MoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJCh0
aGlzKS5hZGRDbGFzcygnY2hlY2tlZCcpOwogICAgICAgICAgICAkKGNoZWNrYm94KS50cmlnZ2Vy
KCdjaGFuZ2UnLCAkKHRoaXMpKTsKICAgICAgICB9KTsKICAgIH0pOwp9Cgo8L3NjcmlwdD4KPHNj
cmlwdCBpZD0ianNvbiIgdHlwZT0iYXBwbGljYXRpb24vanNvbiI+W3sidGVzdHMiOiB7IkRyb21h
ZW8iOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9y
bWFuY2VUZXN0cy9Ecm9tYWVvIiwgInRlc3RzIjogeyJqc2xpYi1tb2RpZnktcHJvdG90eXBlIjog
eyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNl
VGVzdHMvRHJvbWFlby9qc2xpYi1tb2RpZnktcHJvdG90eXBlLmh0bWwiLCAibWV0cmljcyI6IHsi
UnVucyI6IHsiY3VycmVudCI6IFtbOTMuOTI3NjU1NTQxMTU2NzQsIDk0LjYyODY2ODE1MTI5NDMz
LCA5NC43OTMwODQ2NDk4NjY4MywgOTQuOTI1NDM0MTAyODYxNDcsIDk1LjY2MzM5MDQ1NzA4MDM3
XSwgWzk0LjkyMDYwMTk3NDc2MDk2LCA5NS40MzY4OTg3NDc5NTM0NiwgOTUuNTYyNjE5MjA5OTIy
MDksIDk1LjY0MDI4ODU4MTkwMjk1LCA5NS44MjczNjU4Mzg3NDk2Nl0sIFs5My45MzI0MTE4ODMy
MDczNywgOTQuNDk1NzY0NjIwNjA5NTMsIDk0LjY2MjQzOTkxMTEwNjEyLCA5NS4wMjQyOTI2MTMz
MzcyMSwgOTUuMjg5MTYwNTY5NDE3NThdLCBbOTguMTY5ODMwNjExNzAxODUsIDk5LjQxMDA3MzIy
MzQ3NDE0LCA5OS41NzEwMTU5MTAxMTA4LCA5OS43NDkxMTcxMTk3OTI2NiwgMTAwLjAxNjcxMjE0
NDE3ODcxXV19fX0sICJqc2xpYi1zdHlsZS1wcm90b3R5cGUiOiB7InVybCI6ICJodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2pzbGli
LXN0eWxlLXByb3RvdHlwZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBb
Wzk4LjQ2MTE0MzkxODk0ODU0LCA5OS40ODU0ODM4NTg5ODc1NCwgOTkuNjk1NDY2MDMwNDg4NCwg
MTAwLjE1MDEyNzg3NDMyNjgxLCAxMDAuMzc2MDU4MDkxNTY3OTFdLCBbOTguODUwNTExMTM2NTEz
NCwgMTAwLjA2Nzc4MjAyODU5ODQyLCAxMDAuMTkzNDY5MTQ0ODEzOTksIDEwMC4zMjk2Mjc5MjIy
NzczNSwgMTAwLjU4ODIwNzIzODI5MjMxXSwgWzEwMC41NDM1ODAxODIwNDQwNSwgMTAxLjU5NjM1
MDU1NDc1ODUyLCAxMDEuOTI5OTM4ODc1MzM4NSwgMTAyLjA0ODA0NDEzOTUxNjU2LCAxMDIuMjk5
NzM1MzM1OTIxNzhdLCBbOTguMzk2NTI0ODcxMzUyMDQsIDk5LjY4Njc0MjgxNjc1NTMzLCA5OS44
Mzg2NTkzOTgxNDk5LCA5OS45Njk0OTYzNjAzMzI4OCwgMTAwLjEyNjk1NTE3NDUxNjQ0XV19fX19
fX0sICJidWlsZFRpbWUiOiAiMjAxMy0xMi0yMVQwMzozNjozNy4yMTYzNTYiLCAicmV2aXNpb25z
IjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6ICIyMDEzLTEwLTE2VDAwOjM0OjUzLjE5NzA2MFoi
LCAicmV2aXNpb24iOiAiMTU3NDc5In19fSwKeyJ0ZXN0cyI6IHsiRHJvbWFlbyI6IHsidXJsIjog
Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ry
b21hZW8iLCAidGVzdHMiOiB7ImpzbGliLW1vZGlmeS1wcm90b3R5cGUiOiB7InVybCI6ICJodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVv
L2pzbGliLW1vZGlmeS1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJy
ZW50IjogW1s5Mi45NDI4Nzk0OTA1NjgyLCA5My4yMzcxNDg0MzMwMDQ1NiwgOTMuNTY5NjA1Mzc0
NjIwMjUsIDkzLjg5NDIyODYyNzU0NDI3LCA5NC40OTY4NDk0OTgyMTU4N10sIFs5Mi4wOTQzNzgy
OTEwMzM4OCwgOTIuNTkwOTE5MzYzMTE0ODgsIDkyLjgyODk3OTk1MDg5NTk2LCA5My44OTAxODAx
MzM2NjY1OSwgOTQuMTk0MjkwMzQ2MDM0XSwgWzkxLjc1ODA0MzY3NTk2MjM3LCA5Mi44MzU5MDk1
NzgwMTY2NCwgOTMuNjk4MzAzNDE5OTA1NzYsIDk0LjA2MTU4MTUwMjk2NjE2LCA5NC40ODgyODcw
NDU4NjQxNF0sIFs5MS40MjMwNTEzNTk0MTg4NSwgOTEuOTkxNTYwMTU4MzAxNzcsIDkyLjY1MDE4
MDM5NTQ5MTI2LCA5My4wMTMzMzY3MzMzNzg3NSwgOTMuMjkxODEzNjk0NTgzODhdXX19fSwgImpz
bGliLXN0eWxlLXByb3RvdHlwZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJv
d3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItc3R5bGUtcHJvdG90eXBl
Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbOTAuMTc2ODU0NjA5NzU5
NTQsIDkxLjI0NTc1MzAzMTczODc2LCA5MS4zNzcxNDk1NjUwMzcxNCwgOTEuNTUwNzA0OTc1NzY2
OTgsIDkxLjcyNTU4NTgzODI0NTM4XSwgWzkyLjUxMDcwMjU4NDgxMjkyLCA5My42MTc4NDUxMTM3
NTkxOSwgOTMuODA1MTU3NzgxNjgxNSwgOTQuMDM3MjM2ODQ0NzI2OTMsIDk0LjE3MTk4MjUxODgw
NzQzXSwgWzg3LjEwNzExMDc5NDYzNzc4LCA4OC4wMzc1MjMxMzE3NTAyNSwgODguMzE0NzE0NDE5
ODU1MzMsIDg4LjQ1MzA2NDkwNzM5NDU2LCA4OC41ODM0MzIyNzg3NzgyNV0sIFs5MC45Njg4ODEz
NjMxNDA0MywgOTIuMDA1Njk1Nzk4NzAzMDIsIDkyLjM0Nzc0Mjk5NDA4NTkyLCA5Mi40Mzg5Mjgz
MzI0MjQ5OCwgOTIuNjA2NzMxMDIyMzkxMTldXX19fX19fSwgImJ1aWxkVGltZSI6ICIyMDEzLTEy
LTIxVDAzOjA5OjE4LjA5MzQ3MiIsICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1w
IjogIjIwMTMtMTAtMTZUMDI6MTk6MjAuNzg5OTg0WiIsICJyZXZpc2lvbiI6ICIxNTc0ODAifX19
LAp7InRlc3RzIjogeyJEcm9tYWVvIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9i
cm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlbyIsICJ0ZXN0cyI6IHsianNsaWIt
bW9kaWZ5LXByb3RvdHlwZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nl
ci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItbW9kaWZ5LXByb3RvdHlwZS5o
dG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzk1LjA1MTYzODU1MTgxOTIx
LCA5NS44MTE3NDgzMTkyNTc2LCA5Ni4yNjA0NTc5ODg0OTc3LCA5Ny4xNTc1MjQxNTEwNzk0LCA5
OC41NTUwNDU5MDAzODQ0M10sIFs5My4yMzQxODk1MTE3MTkyNCwgOTMuNjM0NTI1Njk1MzE1OTcs
IDkzLjkxMTM5NTEzNDI4MDQzLCA5NC4zOTIwODgxNTkwMTA0NiwgOTQuNTcxMjI3NjgxMTU1N10s
IFs5NC45NDM4Nzk5NDEyNDYwNCwgOTUuMjE4NzI4MjM2MTA1NDksIDk1LjY4OTY5MjI0MTc5NzI1
LCA5Ni4yNjc5MzY1NzEyNjczLCA5Ny4xNjA5MDk1ODU5ODgxNV0sIFs5Ni4wNzU1NDQzNDE4NDYw
MywgOTYuMjUwNTE0NzE2NTA5NiwgOTYuODk0ODEyNDc3ODY4MjMsIDk3LjA1NjgwNTEzNTAwMjc2
LCA5Ny4zODQyMDI1NzUyOTAzMl1dfX19LCAianNsaWItc3R5bGUtcHJvdG90eXBlIjogeyJ1cmwi
OiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMv
RHJvbWFlby9qc2xpYi1zdHlsZS1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjog
eyJjdXJyZW50IjogW1sxMDAuMTgzNzQ5MDc1NzIxMzUsIDEwMS4zNjQzMjk1MjI4NDQzMywgMTAx
LjYyMDUzMzM0MTQxODksIDEwMS44MTAzMzE2NzY4Mjk3MiwgMTAyLjA2MjUxNzYxNzg2MjI2XSwg
WzEwMC4zOTAwMzU2OTQyNzgyOCwgMTAxLjE4NDQyNTU0Njk0NzEyLCAxMDEuNDEwOTQzMDU3MDc2
NjEsIDEwMS41NTc1NTUzMTEyNjQyOCwgMTAxLjg4MTgzNTk2MDg1NDA2XSwgWzk1LjU5MTY4ODU0
NTQ3NjA2LCA5Ni43NDQ1ODc5NjM4MDAwNiwgOTYuOTgyOTI1OTkwNDQ5NzcsIDk3LjIyODIxODIy
NjM0MjU5LCA5Ny41MTYyNzE3MTc1OTU2M10sIFs5Ny42ODYwOTYxMTQxNTk3LCA5OC43OTEwNzY0
ODgwNDEwNiwgOTkuMTA2MDU2NjUyNDI3MjcsIDk5LjE5MTI2NDUyNjcyMDI3LCA5OS41NTU4NDAw
NDE1MjU2OF1dfX19fX19LCAiYnVpbGRUaW1lIjogIjIwMTMtMTItMjFUMDM6NDk6MjEuODg0MzU4
IiwgInJldmlzaW9ucyI6IHsiV2ViS2l0IjogeyJ0aW1lc3RhbXAiOiAiMjAxMy0xMC0xNlQwMDoz
NDo1My4xOTcwNjBaIiwgInJldmlzaW9uIjogIjE1NzQ3OSJ9fX0sCnsidGVzdHMiOiB7IkRyb21h
ZW8iOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9y
bWFuY2VUZXN0cy9Ecm9tYWVvIiwgInRlc3RzIjogeyJqc2xpYi1tb2RpZnktcHJvdG90eXBlIjog
eyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNl
VGVzdHMvRHJvbWFlby9qc2xpYi1tb2RpZnktcHJvdG90eXBlLmh0bWwiLCAibWV0cmljcyI6IHsi
UnVucyI6IHsiY3VycmVudCI6IFtbOTMuOTczMTIxNTQ4MDM5MzcsIDk0LjQ0MzIyNTA3MzgwMDc5
LCA5NC43MTczMDg3NzY0NTI2MSwgOTQuODQ4MDEyNDIwNzcwMjcsIDk1LjYxMTkwMzE5ODQwNzQz
XSwgWzkyLjc4NTc2Mjk1MjMzMDI2LCA5My4zMDExMzY5NTQxNDU5MiwgOTMuNzM4MjI1MzE2MTQw
MSwgOTQuNDU5OTE1ODYxMDE5ODEsIDk0LjcyMDc5MDQzMDUwOTY1XSwgWzkxLjUwMzc3NjM5Mzg0
OTkzLCA5Mi4yMDgwNzc4MDE4MDM5MSwgOTIuNzA2MDAyMTYyOTYwNDQsIDkzLjA4NzA1Njk0NTcx
Nzg1LCA5My4yMjU1MjgxODk0MDY5XSwgWzkxLjU0NTUyMDg5OTk4NzA1LCA5Mi4xMzc0MTQ0NTg1
Mzg3NywgOTIuNzA4MDA4MTY1MTc1MDMsIDkzLjA1NDAyOTU1MTAwMTk1LCA5My4zMzIyNTIxMTU0
NzMzN11dfX19LCAianNsaWItc3R5bGUtcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1z
dHlsZS1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s4
OC4yNjcwODY2Mjk4MDc5OCwgODkuMzgzNDM2Njg2OTU2OTUsIDg5LjYzMjk1NTgxNTMyNzA3LCA4
OS43OTU2MTczOTUzMjg1OSwgODkuOTYxMTY3MzIxMzQ2NjRdLCBbODkuNDU0Mzg3MzUwNDU5MDYs
IDkwLjIzMDA3NjM0NTI0NzI2LCA5MC43MTE4OTU4OTA2OTA0NiwgOTAuODA3NDcyNzQyNDA3MTks
IDkxLjI3OTU0OTQzMzE3MzcxXSwgWzg5LjA1NTc0NTQ2Nzg1ODkzLCA5MC4wNzk2NjM3MDQyMTMx
MiwgOTAuMzE4MzA2OTE5MjU5OTQsIDkwLjU1NDQ4NTg2MDY1ODI1LCA5MC44ODI3Mzc0MDM4MjU5
OF0sIFs5NC40MTQxNTg1NjIyODM3NywgOTUuMjcwMDIwMDc4ODAxNjksIDk1LjgzOTY5NTc5NzE5
ODAyLCA5Ni4wMjAxNzA5NzM2ODI3NywgOTYuMjExMDcxODM1NjQxXV19fX19fX0sICJidWlsZFRp
bWUiOiAiMjAxMy0xMi0yMVQwMzo0Mjo1NC4wNzYzMTEiLCAicmV2aXNpb25zIjogeyJXZWJLaXQi
OiB7InRpbWVzdGFtcCI6ICIyMDEzLTEwLTE2VDAyOjE5OjIwLjc4OTk4NFoiLCAicmV2aXNpb24i
OiAiMTU3NDgwIn19fV08L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>