<?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>100991</bug_id>
          
          <creation_ts>2012-11-01 14:49:17 -0700</creation_ts>
          <short_desc>Refactor ReplayPerfTest and PageLoadingPerfTest</short_desc>
          <delta_ts>2013-02-27 18:24:28 -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>Tools / Tests</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>111027</dependson>
          <blocked>77037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Horvath">zoltan</reporter>
          <assigned_to name="Zoltan Horvath">zoltan</assigned_to>
          <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>756640</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-11-01 14:49:17 -0700</bug_when>
    <thetext>Since we removed the PageLoadingPerfTest conception we don&apos;t need that class, but ReplayPerfTest uses it, so it&apos;s time to do some cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756672</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-01 15:16:24 -0700</bug_when>
    <thetext>I think we can change ReplayPerfTest to use the same iframe approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756701</commentid>
    <comment_count>2</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-11-01 16:05:22 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; I think we can change ReplayPerfTest to use the same iframe approach.

Good point and it makes sense, since it would be really interesting to measure the memory usage after a page loads. I&apos;ll do it with this in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760455</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-07 01:08:41 -0800</bug_when>
    <thetext>I think we can make ReplayPerfTest inherit from PerfTest and use the same iframe approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760456</commentid>
    <comment_count>4</comment_count>
      <attachid>172732</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-07 01:09:52 -0800</bug_when>
    <thetext>Created attachment 172732
Work in progress

Here&apos;s a snippet of code that turns replay tests into an iframe-based tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760457</commentid>
    <comment_count>5</comment_count>
      <attachid>172733</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-07 01:12:38 -0800</bug_when>
    <thetext>Created attachment 172733
Demonstrates interesting cache-dependent behavior

For some reason, immediately changing iframe&apos;s src makes subsequent page loads really fast. Delaying it with 50ms or so will make the results more uniform across iterations. I&apos;m not sure whether this behavior is caused by WebCore or web-page-replay.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172732</attachid>
            <date>2012-11-07 01:09:52 -0800</date>
            <delta_ts>2012-11-07 01:09:52 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>wip100991</filename>
            <type>text/plain</type>
            <size>7171</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW0JKHJldmlzaW9uIDEzMzcxMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY2LDEwICsxNjYsMTAgQEAK
ICAgICAgICAgTlNTdHJpbmcgKnRlc3RIb3N0ID0gMDsKICAgICAgICAgaWYgKFtsb3dlcmNhc2VU
ZXN0UGF0aE9yVVJMIGhhc1ByZWZpeDpAImh0dHA6Il0gfHwgW2xvd2VyY2FzZVRlc3RQYXRoT3JV
UkwgaGFzUHJlZml4OkAiaHR0cHM6Il0pCiAgICAgICAgICAgICB0ZXN0SG9zdCA9IFtbTlNVUkwg
VVJMV2l0aFN0cmluZzp0ZXN0UGF0aE9yVVJMXSBob3N0XTsKLSAgICAgICAgaWYgKCFpc0xvY2Fs
aG9zdChob3N0KSAmJiAhaG9zdElzVXNlZEJ5U29tZVRlc3RzVG9HZW5lcmF0ZUVycm9yKGhvc3Qp
ICYmICghdGVzdEhvc3QgfHwgaXNMb2NhbGhvc3QodGVzdEhvc3QpKSkgeworLyogICAgICAgIGlm
ICghaXNMb2NhbGhvc3QoaG9zdCkgJiYgIWhvc3RJc1VzZWRCeVNvbWVUZXN0c1RvR2VuZXJhdGVF
cnJvcihob3N0KSAmJiAoIXRlc3RIb3N0IHx8IGlzTG9jYWxob3N0KHRlc3RIb3N0KSkpIHsKICAg
ICAgICAgICAgIHByaW50ZigiQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMICVzXG4iLCBb
W3VybCBhYnNvbHV0ZVN0cmluZ10gY1N0cmluZ1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddKTsKICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIH0KKyAgICAgICAgfSov
CiAgICAgfQogCiAgICAgaWYgKGRpc2FsbG93ZWRVUkxzICYmIENGU2V0Q29udGFpbnNWYWx1ZShk
aXNhbGxvd2VkVVJMcywgdXJsKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9y
bWFuY2VfdGVzdHMvcGVyZnRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weQkocmV2aXNpb24gMTMzNzEzKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQAogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAog
ICAgICAgICBzZWxmLl90ZXN0X25hbWUgPSB0ZXN0X25hbWUKICAgICAgICAgc2VsZi5fcGF0aF9v
cl91cmwgPSBwYXRoX29yX3VybAorICAgICAgICBzZWxmLl9pZ25vcmVfYWxsX2NvbnNvbGVfbWVz
c2FnZXMgPSBGYWxzZQogCiAgICAgZGVmIHRlc3RfbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJu
IHNlbGYuX3Rlc3RfbmFtZQpAQCAtODksNiArOTAsOCBAQAogCiAgICAgICAgIGlmIG91dHB1dC5l
cnJvcjoKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ2Vycm9yOiAlc1xuJXMnICUgKHNlbGYudGVz
dF9uYW1lKCksIG91dHB1dC5lcnJvcikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBfbG9n
LmVycm9yKCdlcnJvcjogbm8gdGV4dCBvdXRwdXQnKQogCiAgICAgICAgIHJldHVybiBUcnVlCiAK
QEAgLTEwMyw2ICsxMDYsNyBAQAogICAgICAgICByZS5jb21waWxlKHJlLmVzY2FwZSgiIiJmcmFt
ZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4vPCEtLWZyYW1lMC0tPi0tPiIgLSBoYXMg
MSBvbnVubG9hZCBoYW5kbGVyKHMpIiIiKSksCiAgICAgICAgICMgRm9sbG93aW5nIGlzIGZvciBo
dG1sNS5odG1sCiAgICAgICAgIHJlLmNvbXBpbGUocmUuZXNjYXBlKCIiIkJsb2NrZWQgYWNjZXNz
IHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrLyIiIikpXQorICAgIF9jb25zb2xlX21lc3NhZ2VfbGluZSA9IHJlLmNvbXBpbGUo
cideQ09OU09MRSBNRVNTQUdFOiAuKyQnKQogCiAgICAgZGVmIF9zaG91bGRfaWdub3JlX2xpbmVf
aW5fcGFyc2VyX3Rlc3RfcmVzdWx0KHNlbGYsIGxpbmUpOgogICAgICAgICBpZiBub3QgbGluZToK
QEAgLTExMCw2ICsxMTQsOCBAQAogICAgICAgICBmb3IgcmVnZXggaW4gc2VsZi5fbGluZXNfdG9f
aWdub3JlX2luX3BhcnNlcl9yZXN1bHQ6CiAgICAgICAgICAgICBpZiByZWdleC5zZWFyY2gobGlu
ZSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2VsZi5faWdub3Jl
X2FsbF9jb25zb2xlX21lc3NhZ2VzIGFuZCBzZWxmLl9jb25zb2xlX21lc3NhZ2VfbGluZS5zZWFy
Y2gobGluZSk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UK
IAogICAgIF9kZXNjcmlwdGlvbl9yZWdleCA9IHJlLmNvbXBpbGUocideRGVzY3JpcHRpb246ICg/
UDxkZXNjcmlwdGlvbj4uKikkJywgcmUuSUdOT1JFQ0FTRSkKQEAgLTMwMCw5ICszMDYsMTAgQEAK
ICAgICAgICAgc2VsZi5zdG9wKCkKIAogCi1jbGFzcyBSZXBsYXlQZXJmVGVzdChQYWdlTG9hZGlu
Z1BlcmZUZXN0KToKK2NsYXNzIFJlcGxheVBlcmZUZXN0KFBlcmZUZXN0KToKICAgICBkZWYgX19p
bml0X18oc2VsZiwgcG9ydCwgdGVzdF9uYW1lLCBwYXRoX29yX3VybCk6CiAgICAgICAgIHN1cGVy
KFJlcGxheVBlcmZUZXN0LCBzZWxmKS5fX2luaXRfXyhwb3J0LCB0ZXN0X25hbWUsIHBhdGhfb3Jf
dXJsKQorICAgICAgICBzZWxmLl9pZ25vcmVfYWxsX2NvbnNvbGVfbWVzc2FnZXMgPSBUcnVlCiAK
ICAgICBkZWYgX3N0YXJ0X3JlcGxheV9zZXJ2ZXIoc2VsZiwgYXJjaGl2ZSwgcmVjb3JkKToKICAg
ICAgICAgdHJ5OgpAQCAtMzE4LDEwICszMjUsOCBAQAogICAgICAgICBwYXRoX3dpdGhvdXRfZXh0
ID0gZmlsZXN5c3RlbS5zcGxpdGV4dChzZWxmLnBhdGhfb3JfdXJsKCkpWzBdCiAKICAgICAgICAg
c2VsZi5fYXJjaGl2ZV9wYXRoID0gZmlsZXN5c3RlbS5qb2luKHBhdGhfd2l0aG91dF9leHQgKyAn
LndwcicpCi0gICAgICAgIHNlbGYuX2V4cGVjdGVkX2ltYWdlX3BhdGggPSBmaWxlc3lzdGVtLmpv
aW4ocGF0aF93aXRob3V0X2V4dCArICctZXhwZWN0ZWQucG5nJykKLSAgICAgICAgc2VsZi5fdXJs
ID0gZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShzZWxmLnBhdGhfb3JfdXJsKCkpLnNwbGl0KCdc
bicpWzBdCiAKLSAgICAgICAgaWYgZmlsZXN5c3RlbS5pc2ZpbGUoc2VsZi5fYXJjaGl2ZV9wYXRo
KSBhbmQgZmlsZXN5c3RlbS5pc2ZpbGUoc2VsZi5fZXhwZWN0ZWRfaW1hZ2VfcGF0aCk6CisgICAg
ICAgIGlmIGZpbGVzeXN0ZW0uaXNmaWxlKHNlbGYuX2FyY2hpdmVfcGF0aCk6CiAgICAgICAgICAg
ICBfbG9nLmluZm8oIlJlcGxheSByZWFkeSBmb3IgJXMiICUgc2VsZi5fYXJjaGl2ZV9wYXRoKQog
ICAgICAgICAgICAgcmV0dXJuIFRydWUKIApAQCAtMzU0LDI0ICszNTksMTAgQEAKICAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCJXZWIgcGFnZSBy
ZXBsYXkgc3RhcnRlZC4gTG9hZGluZyB0aGUgcGFnZS4iKQotICAgICAgICAgICAgb3V0cHV0ID0g
c3VwZXIoUmVwbGF5UGVyZlRlc3QsIHNlbGYpLnJ1bl9zaW5nbGUoZHJpdmVyLCBzZWxmLl91cmws
IHRpbWVfb3V0X21zLCBzaG91bGRfcnVuX3BpeGVsX3Rlc3Q9VHJ1ZSkKKyAgICAgICAgICAgIG91
dHB1dCA9IHN1cGVyKFJlcGxheVBlcmZUZXN0LCBzZWxmKS5ydW5fc2luZ2xlKGRyaXZlciwgc2Vs
Zi5wYXRoX29yX3VybCgpLCB0aW1lX291dF9tcywgc2hvdWxkX3J1bl9waXhlbF90ZXN0PVRydWUp
CiAgICAgICAgICAgICBpZiBzZWxmLnJ1bl9mYWlsZWQob3V0cHV0KToKICAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQogCi0gICAgICAgICAgICBpZiBub3Qgb3V0cHV0LmltYWdlOgotICAgICAg
ICAgICAgICAgIF9sb2cuZXJyb3IoIkxvYWRpbmcgdGhlIHBhZ2UgZGlkIG5vdCBnZW5lcmF0ZSBp
bWFnZSByZXN1bHRzIikKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKG91dHB1dC50ZXh0KQot
ICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgIGZpbGVzeXN0ZW0gPSBz
ZWxmLl9wb3J0Lmhvc3QuZmlsZXN5c3RlbQotICAgICAgICAgICAgZGlybmFtZSA9IGZpbGVzeXN0
ZW0uZGlybmFtZShzZWxmLl9hcmNoaXZlX3BhdGgpCi0gICAgICAgICAgICBmaWxlbmFtZSA9IGZp
bGVzeXN0ZW0uc3BsaXQoc2VsZi5fYXJjaGl2ZV9wYXRoKVsxXQotICAgICAgICAgICAgd3JpdGVy
ID0gVGVzdFJlc3VsdFdyaXRlcihmaWxlc3lzdGVtLCBzZWxmLl9wb3J0LCBkaXJuYW1lLCBmaWxl
bmFtZSkKLSAgICAgICAgICAgIGlmIHJlY29yZDoKLSAgICAgICAgICAgICAgICB3cml0ZXIud3Jp
dGVfaW1hZ2VfZmlsZXMoYWN0dWFsX2ltYWdlPU5vbmUsIGV4cGVjdGVkX2ltYWdlPW91dHB1dC5p
bWFnZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlX2lt
YWdlX2ZpbGVzKGFjdHVhbF9pbWFnZT1vdXRwdXQuaW1hZ2UsIGV4cGVjdGVkX2ltYWdlPU5vbmUp
Ci0KICAgICAgICAgICAgIHJldHVybiBvdXRwdXQKICAgICAgICAgZmluYWxseToKICAgICAgICAg
ICAgIHNlcnZlci5zdG9wKCkKQEAgLTM4MSw3ICszNzIsNyBAQAogCiAgICAgX3BhdHRlcm5fbWFw
ID0gWwogICAgICAgICAocmUuY29tcGlsZShyJ15pbnNwZWN0b3IvJyksIENocm9taXVtU3R5bGVQ
ZXJmVGVzdCksCi0gICAgICAgIChyZS5jb21waWxlKHInKC4rKVwucmVwbGF5JCcpLCBSZXBsYXlQ
ZXJmVGVzdCksCisgICAgICAgIChyZS5jb21waWxlKHInXlJlcGxheS8nKSwgUmVwbGF5UGVyZlRl
c3QpLAogICAgIF0KIAogICAgIEBjbGFzc21ldGhvZApJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltYXRpb24vYmFsbHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1h
dGlvbi9iYWxscy5odG1sCShyZXZpc2lvbiAxMzM3MTMpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1hdGlvbi9iYWxscy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDcgQEAKICAg
ICAgICAgICAgIHZhciBmcmFtZVJhdGVWYWwgPSBGUkFNRVNfUEVSX1RJTUVSX1JFQURJTkcgKiAx
MDAwIC8gKChjdXJyVGltZSAtIGZyYW1lVGltZXNbMF0pIC8gKGZyYW1lVGltZXMubGVuZ3RoIC0g
MSkpOwogCiAgICAgICAgICAgICBpZiAoIWlzTmFOKGZyYW1lUmF0ZVZhbCkpCi0gICAgICAgICAg
ICAgICAgUGVyZlRlc3RSdW5uZXIubWVhc3VyZVZhbHVlQXluYyhmcmFtZVJhdGVWYWwpOworICAg
ICAgICAgICAgICAgIFBlcmZUZXN0UnVubmVyLm1lYXN1cmVWYWx1ZUFzeW5jKGZyYW1lUmF0ZVZh
bCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2Vz
L3J1bm5lci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9ydW5u
ZXIuanMJKHJldmlzaW9uIDEzMzcxMykKKysrIFBlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL3J1
bm5lci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjQwLDcgKzI0MCw3IEBACiAgICAgICAgIHN0YXJ0
KHRlc3QpOwogICAgIH0KIAotICAgIFBlcmZUZXN0UnVubmVyLm1lYXN1cmVWYWx1ZUF5bmMgPSBm
dW5jdGlvbiAobWVhc3VyZWRWYWx1ZSkgeworICAgIFBlcmZUZXN0UnVubmVyLm1lYXN1cmVWYWx1
ZUFzeW5jID0gZnVuY3Rpb24gKG1lYXN1cmVkVmFsdWUpIHsKICAgICAgICAgY29tcGxldGVkUnVu
cysrOwogCiAgICAgICAgIHRyeSB7CkBAIC0zNDgsNSArMzQ4LDM1IEBACiAgICAgICAgIFBlcmZU
ZXN0UnVubmVyLm1lYXN1cmVUaW1lKHRlc3QpOwogICAgIH0KIAorICAgIFBlcmZUZXN0UnVubmVy
Lm1lYXN1cmVSZW1vdGVQYWdlTG9hZFRpbWUgPSBmdW5jdGlvbih1cmwpIHsKKyAgICAgICAgdmFy
IGRvbmUgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5wcmVwYXJlVG9NZWFzdXJlVmFsdWVzQXN5bmMo
e3VuaXQ6ICdtcycsIHJ1bkNvdW50OiA1LCBkb25lOiBmdW5jdGlvbiAoKSB7IGRvbmUgPSB0cnVl
OyB9fSk7CisKKyAgICAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlm
cmFtZSIpOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisgICAg
ICAgIGlmcmFtZS5zdHlsZS53aWR0aCA9ICI2MDBweCI7CisgICAgICAgIGlmcmFtZS5zdHlsZS5o
ZWlnaHQgPSAiODAwcHgiOworICAgICAgICB2YXIgc3RhcnQ7CisgICAgICAgIGlmcmFtZS5vbmxv
YWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgdGltZSA9IFBlcmZUZXN0UnVubmVy
Lm5vdygpIC0gc3RhcnQ7CisgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5tZWFzdXJlVmFsdWVB
c3luYyh0aW1lKTsKKyAgICAgICAgICAgIGlmIChkb25lKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgaWZyYW1lLnNyYyA9ICdhYm91dDpibGFuayc7CisgICAgICAgICAg
ICBQZXJmVGVzdFJ1bm5lci5nYygpOworICAgICAgICAgICAgLy8gSW50ZXJlc3RpbmdseSwgc3Ry
dGluZyB0aGUgbmV4dCBpdGVyYXRpb24gaW1tZWRpYXRlbHkgKDBtcyBvciAxbXMgdGltZW91dCkK
KyAgICAgICAgICAgIC8vIG1ha2VzIHRoZSBzdWJzZXF1ZW50IGl0ZXJhdGlvbnMgcnVuIHJlYWxs
eSBmYXN0IGZvciB3aGF0ZXZlciByZWFzb24uCisgICAgICAgICAgICBzZXRUaW1lb3V0KG1lYXN1
cmVSZW1vdGVQYWdlTG9hZE9uY2UsIDUwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IG1lYXN1cmVSZW1vdGVQYWdlTG9hZE9uY2UoKSB7CisgICAgICAgICAgICBpZnJhbWUuc3JjID0g
dXJsOworICAgICAgICAgICAgc3RhcnQgPSBQZXJmVGVzdFJ1bm5lci5ub3coKTsKKyAgICAgICAg
fQorCisgICAgICAgIG1lYXN1cmVSZW1vdGVQYWdlTG9hZE9uY2UoKTsKKyAgICB9CisKICAgICB3
aW5kb3cuUGVyZlRlc3RSdW5uZXIgPSBQZXJmVGVzdFJ1bm5lcjsKIH0pKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>172733</attachid>
            <date>2012-11-07 01:12:38 -0800</date>
            <delta_ts>2012-11-07 01:12:38 -0800</delta_ts>
            <desc>Demonstrates interesting cache-dependent behavior</desc>
            <filename>PerformanceTestsResults.html</filename>
            <type>text/html</type>
            <size>26771</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
KSB7CiAgICB2YXIgalF1ZXJ5ID0gWydQZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2Vz
L2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42LjQuanMnXTsKICAgIHZhciBwbHVnaW5zID0gWydQ
ZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkuZmxvdC5taW4uanMnLCAnUGVyZm9ybWFu
Y2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LnRhYmxlc29ydGVyLm1pbi5qcyddOwogICAgdmFyIGxv
Y2FsUGF0aCA9ICcvVXNlcnMvcm5pd2Evd2Via2l0JzsKICAgIHZhciByZW1vdGVQYXRoID0gJ2h0
dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsnOwogICAgdmFyIG51
bWJlck9mRmFpbHVyZXMgPSAwOwogICAgdmFyIHN0YXJ0ZWRMb2FkaW5nUGx1Z2lucyA9IGZhbHNl
OwogICAgdmFyIG51bWJlck9mTG9hZGVkUGx1Z2lucyA9IDA7CgogICAgZnVuY3Rpb24gbG9hZFNj
cmlwdChzcmMsIGxvYWRlZCwgZmFpbGVkKSB7CiAgICAgICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7CiAg
ICAgICAgc2NyaXB0LnNyYyA9IHNyYzsKICAgICAgICBzY3JpcHQub25sb2FkID0gbG9hZGVkOwog
ICAgICAgIGlmIChmYWlsZWQpCiAgICAgICAgICAgIHNjcmlwdC5vbmVycm9yID0gZmFpbGVkOwog
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAgIH0KCiAgICBmdW5j
dGlvbiBsb2FkUGx1Z2lucyh0cnVua1BhdGgpIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHBsdWdpbnMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgIGxvYWRTY3JpcHQodHJ1bmtQYXRoICsg
Jy8nICsgcGx1Z2luc1tpXSwgbG9hZGVkUGx1Z2luLCBjcmVhdGVGYWlsZWRUb0xvYWRQbHVnaW4o
cGx1Z2luc1tpXSkpOwogICAgfQoKICAgIGZ1bmN0aW9uIGxvYWRlZFBsdWdpbigpIHsKICAgICAg
ICBudW1iZXJPZkxvYWRlZFBsdWdpbnMrKzsKICAgICAgICBpZiAobnVtYmVyT2ZMb2FkZWRQbHVn
aW5zID09IHBsdWdpbnMubGVuZ3RoKQogICAgICAgICAgICBzZXRUaW1lb3V0KGluaXQsIDApOyAg
ICAgICAgICAgIAogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZUZhaWxlZFRvTG9hZFBsdWdpbihw
bHVnaW4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBhbGVydCgiRmFpbGVkIHRvIGxv
YWQgIiArIHBsdWdpbik7IH0KICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVMb2FkZWRKUXVlcnko
dHJ1bmtQYXRoKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgbG9hZFBsdWdpbnModHJ1
bmtQYXRoKTsgfQogICAgfQoKICAgIGxvYWRTY3JpcHQobG9jYWxQYXRoICsgJy8nICsgalF1ZXJ5
LAogICAgICAgIGNyZWF0ZUxvYWRlZEpRdWVyeShsb2NhbFBhdGgpLAogICAgICAgIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgbG9hZFNjcmlwdChyZW1vdGVQYXRoICsgJy8nICsgalF1ZXJ5LAog
ICAgICAgICAgICAgICAgY3JlYXRlTG9hZGVkSlF1ZXJ5KHJlbW90ZVBhdGgpLAogICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeyBhbGVydCgiRmFpbGVkIHRvIGxvYWQgalF1ZXJ5LiIpOyB9KTsK
ICAgICAgICB9KTsKfSkoKTsKCmZ1bmN0aW9uIFRlc3RSZXN1bHQoYXNzb2NpYXRlZFRlc3QsIHJl
c3VsdCwgYXNzb2NpYXRlZFJ1bikgewogICAgdGhpcy51bml0ID0gZnVuY3Rpb24gKCkgeyByZXR1
cm4gcmVzdWx0LnVuaXQ7IH0KICAgIHRoaXMudGVzdCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFz
c29jaWF0ZWRUZXN0OyB9CiAgICB0aGlzLnZhbHVlcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJl
c3VsdC52YWx1ZXMgPyByZXN1bHQudmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJu
IGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHZhbHVlOyB9KSA6IHVuZGVmaW5lZDsg
fQogICAgdGhpcy51bnNjYWxlZE1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXN1bHQuYXZn
OyB9CiAgICB0aGlzLm1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdC5z
Y2FsaW5nRmFjdG9yKCkgKiByZXN1bHQuYXZnOyB9CiAgICB0aGlzLm1pbiA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJlc3VsdC5taW47IH0K
ICAgIHRoaXMubWF4ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNzb2NpYXRlZFRlc3Quc2NhbGlu
Z0ZhY3RvcigpICogcmVzdWx0Lm1heDsgfQogICAgdGhpcy5zdGRldiA9IGZ1bmN0aW9uICgpIHsg
cmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJlc3VsdC5zdGRldjsgfQog
ICAgdGhpcy5zdGRldlJhdGlvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVzdWx0LnN0ZGV2IC8g
cmVzdWx0LmF2ZzsgfQogICAgdGhpcy5wZXJjZW50RGlmZmVyZW5jZSA9IGZ1bmN0aW9uKG90aGVy
KSB7IHJldHVybiAob3RoZXIubWVhbigpIC0gdGhpcy5tZWFuKCkpIC8gdGhpcy5tZWFuKCk7IH0K
ICAgIHRoaXMuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQgPSBmdW5jdGlvbiAob3RoZXIpIHsK
ICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKG90aGVyLm1lYW4oKSAtIHRoaXMubWVhbigpKTsK
ICAgICAgICByZXR1cm4gZGlmZiA+IHRoaXMuc3RkZXYoKSAmJiBkaWZmID4gb3RoZXIuc3RkZXYo
KTsKICAgIH0KICAgIHRoaXMucnVuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNzb2NpYXRlZFJ1
bjsgfQp9CgpmdW5jdGlvbiBUZXN0UnVuKGVudHJ5KSB7CiAgICB0aGlzLmRlc2NyaXB0aW9uID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ2Rlc2NyaXB0aW9uJ107IH0KICAgIHRoaXMud2Vi
a2l0UmV2aXNpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlbnRyeVsnd2Via2l0LXJldmlzaW9u
J107IH0KICAgIHRoaXMubGFiZWwgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGxhYmVsID0g
J3InICsgdGhpcy53ZWJraXRSZXZpc2lvbigpOwogICAgICAgIGlmICh0aGlzLmRlc2NyaXB0aW9u
KCkpCiAgICAgICAgICAgIGxhYmVsICs9ICcgJmRhc2g7ICcgKyB0aGlzLmRlc2NyaXB0aW9uKCk7
CiAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgfQp9CgpmdW5jdGlvbiBQZXJmVGVzdChuYW1lKSB7
CiAgICB2YXIgdGVzdFJlc3VsdHMgPSBbXTsKICAgIHZhciBjYWNoZWRVbml0ID0gbnVsbDsKICAg
IHZhciBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKCiAgICAvLyBXZSBjYW4ndCBkbyB0aGlz
IGluIFRlc3RSZXN1bHQgYmVjYXVzZSBhbGwgcmVzdWx0cyBmb3IgZWFjaCB0ZXN0IG5lZWQgdG8g
c2hhcmUgdGhlIHNhbWUgdW5pdCBhbmQgdGhlIHNhbWUgc2NhbGluZyBmYWN0b3IuCiAgICBmdW5j
dGlvbiBjb21wdXRlU2NhbGluZ0ZhY3RvcklmTmVlZGVkKCkgewogICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGRuJ3QgYmUgYWRqdXN0aW5nIHVuaXRzIG9uIGV2ZXJ5IHRlc3QgcmVzdWx0LgogICAg
ICAgIC8vIFdlIGNhbiBvbmx5IGRvIHRoaXMgb24gdGhlIGZpcnN0IHRlc3QuCiAgICAgICAgaWYg
KCF0ZXN0UmVzdWx0cy5sZW5ndGggfHwgY2FjaGVkVW5pdCkKICAgICAgICAgICAgcmV0dXJuOwoK
ICAgICAgICB2YXIgdW5pdCA9IHRlc3RSZXN1bHRzWzBdLnVuaXQoKTsgLy8gRklYTUU6IFdlIHNo
b3VsZCB2ZXJpZnkgdGhhdCBhbGwgcmVzdWx0cyBoYXZlIHRoZSBzYW1lIHVuaXQuCiAgICAgICAg
dmFyIG1lYW4gPSB0ZXN0UmVzdWx0c1swXS51bnNjYWxlZE1lYW4oKTsgLy8gRklYTUU6IFdlIHNo
b3VsZCBsb29rIGF0IGFsbCB2YWx1ZXMuCiAgICAgICAgdmFyIGtpbG8gPSB1bml0ID09ICdieXRl
cycgPyAxMDI0IDogMTAwMDsKICAgICAgICBpZiAobWVhbiA+IDEwICoga2lsbyAqIGtpbG8gJiYg
dW5pdCAhPSAnbXMnKSB7CiAgICAgICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSAxIC8ga2ls
byAvIGtpbG87CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSAnTSAnICsgdW5pdDsKICAgICAgICB9
IGVsc2UgaWYgKG1lYW4gPiAxMCAqIGtpbG8pIHsKICAgICAgICAgICAgY2FjaGVkU2NhbGluZ0Zh
Y3RvciA9IDEgLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0ID0gdW5pdCA9PSAnbXMnID8g
J3MnIDogKCdLICcgKyB1bml0KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjYWNoZWRT
Y2FsaW5nRmFjdG9yID0gMTsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9IHVuaXQ7CiAgICAgICAg
fQogICAgfQoKICAgIHRoaXMubmFtZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5hbWU7IH0KICAg
IHRoaXMuaXNNZW1vcnlUZXN0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmFtZS5pbmRleE9mKCc6
JykgPj0gMDsgfQogICAgdGhpcy5hZGRSZXN1bHQgPSBmdW5jdGlvbiAobmV3UmVzdWx0KSB7CiAg
ICAgICAgdGVzdFJlc3VsdHMucHVzaChuZXdSZXN1bHQpOwogICAgICAgIGNhY2hlZFVuaXQgPSBu
dWxsOwogICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSBudWxsOwogICAgfQogICAgdGhpcy5y
ZXN1bHRzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGVzdFJlc3VsdHM7IH0KICAgIHRoaXMuc2Nh
bGluZ0ZhY3RvciA9IGZ1bmN0aW9uKCkgewogICAgICAgIGNvbXB1dGVTY2FsaW5nRmFjdG9ySWZO
ZWVkZWQoKTsKICAgICAgICByZXR1cm4gY2FjaGVkU2NhbGluZ0ZhY3RvcjsKICAgIH0KICAgIHRo
aXMudW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBjb21wdXRlU2NhbGluZ0ZhY3RvcklmTmVl
ZGVkKCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFVuaXQ7CiAgICB9CiAgICB0aGlzLnNtYWxsZXJJ
c0JldHRlciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMudW5pdCgpID09ICdtcycgfHwgdGhp
cy51bml0KCkgPT0gJ2J5dGVzJzsgfQp9Cgp2YXIgcGxvdENvbG9yID0gJ3JnYigyMzAsNTAsNTAp
JzsKdmFyIHN1YnBvaW50c1Bsb3RPcHRpb25zID0gewogICAgbGluZXM6IHtzaG93OnRydWUsIGxp
bmVXaWR0aDogMH0sCiAgICBjb2xvcjogcGxvdENvbG9yLAogICAgcG9pbnRzOiB7c2hvdzogdHJ1
ZSwgcmFkaXVzOiAxfSwKICAgIGJhcnM6IHtzaG93OiBmYWxzZX19OwoKdmFyIG1haW5QbG90T3B0
aW9ucyA9IHsKICAgIHhheGlzOiB7CiAgICAgICAgbWluOiAtMC41LAogICAgICAgIHRpY2tTaXpl
OiAxLAogICAgfSwKICAgIGNyb3NzaGFpcjogeyBtb2RlOiAneScgfSwKICAgIHNlcmllczogeyBz
aGFkb3dTaXplOiAwIH0sCiAgICBiYXJzOiB7c2hvdzogdHJ1ZSwgYWxpZ246ICdjZW50ZXInLCBi
YXJXaWR0aDogMC41fSwKICAgIGxpbmVzOiB7IHNob3c6IGZhbHNlIH0sCiAgICBwb2ludHM6IHsg
c2hvdzogdHJ1ZSB9LAogICAgZ3JpZDogewogICAgICAgIGJvcmRlcldpZHRoOiAxLAogICAgICAg
IGJvcmRlckNvbG9yOiAnI2NjYycsCiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZicsCiAg
ICAgICAgaG92ZXJhYmxlOiB0cnVlLAogICAgICAgIGF1dG9IaWdobGlnaHQ6IGZhbHNlLAogICAg
fQp9OwoKdmFyIHRpbWVQbG90T3B0aW9ucyA9IHsKICAgIHlheGlzOiB7IHNob3c6IGZhbHNlIH0s
CiAgICB4YXhpczogeyBzaG93OiBmYWxzZSB9LAogICAgbGluZXM6IHsgc2hvdzogdHJ1ZSB9LAog
ICAgZ3JpZDogeyBib3JkZXJXaWR0aDogMSwgYm9yZGVyQ29sb3I6ICcjY2NjJyB9LAogICAgY29s
b3JzOiBbIHBsb3RDb2xvciBdCn07CgpmdW5jdGlvbiBjcmVhdGVQbG90KGNvbnRhaW5lciwgdGVz
dCkgewogICAgdmFyIHNlY3Rpb24gPSAkKCc8c2VjdGlvbj48ZGl2IGNsYXNzPSJwbG90Ij48L2Rp
dj48ZGl2IGNsYXNzPSJ0aW1lLXBsb3RzIj48L2Rpdj4nCiAgICAgICAgKyAnPHNwYW4gY2xhc3M9
InRvb2x0aXAiPjwvc3Bhbj48L3NlY3Rpb24+Jyk7CiAgICBzZWN0aW9uLmNoaWxkcmVuKCcucGxv
dCcpLmNzcyh7J3dpZHRoJzogKDEwMCAqIHRlc3QucmVzdWx0cygpLmxlbmd0aCArIDI1KSArICdw
eCcsICdoZWlnaHQnOiAnMzAwcHgnfSk7CiAgICAkKGNvbnRhaW5lcikuYXBwZW5kKHNlY3Rpb24p
OwoKICAgIHZhciBwbG90Q29udGFpbmVyID0gc2VjdGlvbi5jaGlsZHJlbignLnBsb3QnKTsKICAg
IHZhciBtaW5Jc1plcm8gPSB0cnVlOwogICAgYXR0YWNoUGxvdCh0ZXN0LCBwbG90Q29udGFpbmVy
LCBtaW5Jc1plcm8pOwoKICAgIGF0dGFjaFRpbWVQbG90cyh0ZXN0LCBzZWN0aW9uLmNoaWxkcmVu
KCcudGltZS1wbG90cycpKTsKCiAgICB2YXIgdG9vbHRpcCA9IHNlY3Rpb24uY2hpbGRyZW4oJy50
b29sdGlwJyk7CiAgICBwbG90Q29udGFpbmVyLmJpbmQoJ3Bsb3Rob3ZlcicsIGZ1bmN0aW9uIChl
dmVudCwgcG9zaXRpb24sIGl0ZW0pIHsKICAgICAgICBpZiAoaXRlbSkgewogICAgICAgICAgICB2
YXIgcG9zdGZpeCA9IGl0ZW0uc2VyaWVzLmlkID8gJyAoJyArIGl0ZW0uc2VyaWVzLmlkICsgJykn
IDogJyc7CiAgICAgICAgICAgIHRvb2x0aXAuaHRtbChpdGVtLmRhdGFwb2ludFsxXS50b1ByZWNp
c2lvbig0KSArIHBvc3RmaXgpOwogICAgICAgICAgICB2YXIgc2VjdGlvbk9mZnNldCA9ICQoc2Vj
dGlvbikub2Zmc2V0KCk7CiAgICAgICAgICAgIHRvb2x0aXAuY3NzKHtsZWZ0OiBpdGVtLnBhZ2VY
IC0gc2VjdGlvbk9mZnNldC5sZWZ0IC0gdG9vbHRpcC5vdXRlcldpZHRoKCkgLyAyLCB0b3A6IGl0
ZW0ucGFnZVkgLSBzZWN0aW9uT2Zmc2V0LnRvcCArIDEwfSk7CiAgICAgICAgICAgIHRvb2x0aXAu
ZmFkZUluKDIwMCk7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgIHRvb2x0aXAuaGlkZSgpOwog
ICAgfSk7CiAgICBwbG90Q29udGFpbmVyLm1vdXNlb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICB0
b29sdGlwLmhpZGUoKTsKICAgIH0pOwogICAgcGxvdENvbnRhaW5lci5jbGljayhmdW5jdGlvbiAo
ZXZlbnQpIHsKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIG1pbklzWmVy
byA9ICFtaW5Jc1plcm87CiAgICAgICAgYXR0YWNoUGxvdCh0ZXN0LCBwbG90Q29udGFpbmVyLCBt
aW5Jc1plcm8pOwogICAgfSk7CgogICAgcmV0dXJuIHNlY3Rpb247Cn0KCmZ1bmN0aW9uIGF0dGFj
aFRpbWVQbG90cyh0ZXN0LCBjb250YWluZXIpIHsKICAgIHZhciByZXN1bHRzID0gdGVzdC5yZXN1
bHRzKCk7CiAgICB2YXIgYXR0YWNoZWRQbG90ID0gZmFsc2U7CiAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBjb250YWluZXIuYXBwZW5kKCc8ZGl2
PjwvZGl2PicpOwogICAgICAgIHZhciB2YWx1ZXMgPSByZXN1bHRzW2ldLnZhbHVlcygpOwogICAg
ICAgIGlmICghdmFsdWVzKQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICBhdHRhY2hlZFBs
b3QgPSB0cnVlOwoKICAgICAgICAkLnBsb3QoY29udGFpbmVyLmNoaWxkcmVuKCkubGFzdCgpLCBb
dmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHZhbHVl
XTsgfSldLAogICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCB7fSwgdGltZVBsb3RPcHRpb25zLCB7
eWF4aXM6IHttaW46IE1hdGgubWluLmFwcGx5KE1hdGgsIHZhbHVlcykgKiAwLjksIG1heDogTWF0
aC5tYXguYXBwbHkoTWF0aCwgdmFsdWVzKSAqIDEuMX0sCiAgICAgICAgICAgICAgICB4YXhpczog
e21pbjogLTAuNSwgbWF4OiB2YWx1ZXMubGVuZ3RoIC0gMC41fX0pKTsKICAgIH0KICAgIGlmICgh
YXR0YWNoZWRQbG90KQogICAgICAgIGNvbnRhaW5lci5jaGlsZHJlbigpLnJlbW92ZSgpOwp9Cgpm
dW5jdGlvbiBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklzWmVybykgewogICAg
dmFyIHJlc3VsdHMgPSB0ZXN0LnJlc3VsdHMoKTsKCiAgICB2YXIgdmFsdWVzID0gcmVzdWx0cy5y
ZWR1Y2UoZnVuY3Rpb24gKHZhbHVlcywgcmVzdWx0LCBpbmRleCkgewogICAgICAgIHZhciBuZXdW
YWx1ZXMgPSByZXN1bHQudmFsdWVzKCk7CiAgICAgICAgcmV0dXJuIG5ld1ZhbHVlcyA/IHZhbHVl
cy5jb25jYXQobmV3VmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIFtpbmRleCwg
dmFsdWVdOyB9KSkgOiB2YWx1ZXM7CiAgICB9LCBbXSk7CgogICAgdmFyIHBsb3REYXRhID0gW107
CiAgICBpZiAodmFsdWVzLmxlbmd0aCkKICAgICAgICBwbG90RGF0YSA9IFskLmV4dGVuZCh0cnVl
LCB7fSwgc3VicG9pbnRzUGxvdE9wdGlvbnMsIHtkYXRhOiB2YWx1ZXN9KV07CiAgICBlbHNlIHsK
ICAgICAgICBmdW5jdGlvbiBtYWtlU3VicG9pbnRzKGlkLCBjYWxsYmFjaykgeyByZXR1cm4gJC5l
eHRlbmQodHJ1ZSwge30sIHN1YnBvaW50c1Bsb3RPcHRpb25zLCB7aWQ6IGlkLCBkYXRhOiByZXN1
bHRzLm1hcChjYWxsYmFjayl9KTsgfQogICAgICAgIHBsb3REYXRhID0gW21ha2VTdWJwb2ludHMo
J21pbicsIGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5t
aW4oKV07IH0pLAogICAgICAgIG1ha2VTdWJwb2ludHMoJ21heCcsIGZ1bmN0aW9uIChyZXN1bHQs
IGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tYXgoKV07IH0pLAogICAgICAgIG1ha2VT
dWJwb2ludHMoJy0mIzk2MzsnLCBmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2lu
ZGV4LCByZXN1bHQubWVhbigpIC0gcmVzdWx0LnN0ZGV2KCldOyB9KSwKICAgICAgICBtYWtlU3Vi
cG9pbnRzKCcrJiM5NjM7JywgZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsgcmV0dXJuIFtpbmRl
eCwgcmVzdWx0Lm1lYW4oKSArIHJlc3VsdC5zdGRldigpXTsgfSldOwogICAgfQoKICAgIHBsb3RE
YXRhLnB1c2goe2lkOiAnJm11OycsIGRhdGE6IHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQs
IGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tZWFuKCldOyB9KSwgY29sb3I6IHBsb3RD
b2xvcn0pOwoKICAgIHZhciBjdXJyZW50UGxvdE9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwg
bWFpblBsb3RPcHRpb25zLCB7eWF4aXM6IHsKICAgICAgICBtaW46IG1pbklzWmVybyA/IDAgOiBN
YXRoLm1pbi5hcHBseShNYXRoLCByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkg
eyByZXR1cm4gcmVzdWx0Lm1pbigpOyB9KSkgKiAwLjk4LAogICAgICAgIG1heDogTWF0aC5tYXgu
YXBwbHkoTWF0aCwgcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsgcmV0dXJu
IHJlc3VsdC5tYXgoKTsgfSkpICogKG1pbklzWmVybyA/IDEuMSA6IDEuMDEpfX0pOwoKICAgIGN1
cnJlbnRQbG90T3B0aW9ucy54YXhpcy5tYXggPSByZXN1bHRzLmxlbmd0aCAtIDAuNTsKICAgIGN1
cnJlbnRQbG90T3B0aW9ucy54YXhpcy50aWNrcyA9IHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1
bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5ydW4oKS5sYWJlbCgpXTsgfSk7Cgog
ICAgJC5wbG90KHBsb3RDb250YWluZXIsIHBsb3REYXRhLCBjdXJyZW50UGxvdE9wdGlvbnMpOwp9
CgpmdW5jdGlvbiB0b0ZpeGVkV2lkdGhQcmVjaXNpb24odmFsdWUpIHsKICAgIHZhciBkZWNpbWFs
ID0gdmFsdWUudG9GaXhlZCgyKTsKICAgIHJldHVybiBkZWNpbWFsOwp9CgpmdW5jdGlvbiBmb3Jt
YXRQZXJjZW50YWdlKGZyYWN0aW9uKSB7CiAgICB2YXIgcGVyY2VudGFnZSA9IGZyYWN0aW9uICog
MTAwOwogICAgcmV0dXJuIChmcmFjdGlvbiAqIDEwMCkudG9GaXhlZCgyKSArICclJzsKfQoKZnVu
Y3Rpb24gY3JlYXRlVGFibGUodGVzdHMsIHJ1bnMsIHNob3VsZElnbm9yZU1lbW9yeSwgcmVmZXJl
bmNlSW5kZXgpIHsKICAgICQoJyNjb250YWluZXInKS5odG1sKCc8dGhlYWQ+PHRyPjx0aD5UZXN0
PC90aD48dGg+VW5pdDwvdGg+JyArIHJ1bnMubWFwKGZ1bmN0aW9uIChydW4sIGluZGV4KSB7CiAg
ICAgICAgcmV0dXJuICc8dGggY29sc3Bhbj0iJyArIChpbmRleCA9PSByZWZlcmVuY2VJbmRleCA/
IDIgOiAzKSArICciIGNsYXNzPSJ7c29ydGVyOiBcJ2NvbXBhcmlzb25cJ30iPicgKyBydW4ubGFi
ZWwoKSArICc8L3RoPic7CiAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKG1hcmt1cCwgY2VsbCkgeyBy
ZXR1cm4gbWFya3VwICsgY2VsbDsgfSwgJycpICsgJzwvdHI+PC9oZWFkPjx0Ym9keT48L3Rib2R5
PicpOwoKICAgIHZhciB0ZXN0TmFtZXMgPSBbXTsKICAgIGZvciAodGVzdE5hbWUgaW4gdGVzdHMp
CiAgICAgICAgdGVzdE5hbWVzLnB1c2godGVzdE5hbWUpOwoKICAgIHRlc3ROYW1lcy5zb3J0KCku
bWFwKGZ1bmN0aW9uICh0ZXN0TmFtZSkgewogICAgICAgIHZhciB0ZXN0ID0gdGVzdHNbdGVzdE5h
bWVdOwogICAgICAgIGlmICh0ZXN0LmlzTWVtb3J5VGVzdCgpICE9IHNob3VsZElnbm9yZU1lbW9y
eSkKICAgICAgICAgICAgY3JlYXRlVGFibGVSb3cocnVucywgdGVzdCwgcmVmZXJlbmNlSW5kZXgp
OwogICAgfSk7CgogICAgJCgnI2NvbnRhaW5lcicpLnRhYmxlc29ydGVyKHt3aWRnZXRzOiBbJ3pl
YnJhJ119KTsKfQoKZnVuY3Rpb24gbGluZWFyUmVncmVzc2lvbihwb2ludHMpIHsKICAgIC8vIElt
cGxlbWVudCBodHRwOi8vd3d3LmVhc3ljYWxjdWxhdGlvbi5jb20vc3RhdGlzdGljcy9sZWFybi1j
b3JyZWxhdGlvbi5waHAuCiAgICAvLyB4ID0gbWFnbml0dWRlCiAgICAvLyB5ID0gaXRlcmF0aW9u
cwogICAgdmFyIHN1bVggPSAwOwogICAgdmFyIHN1bVkgPSAwOwogICAgdmFyIHN1bVhTcXVhcmVk
ID0gMDsKICAgIHZhciBzdW1ZU3F1YXJlZCA9IDA7CiAgICB2YXIgc3VtWFRpbWVzWSA9IDA7Cgog
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIg
eCA9IGk7CiAgICAgICAgdmFyIHkgPSBwb2ludHNbaV07CiAgICAgICAgc3VtWCArPSB4OwogICAg
ICAgIHN1bVkgKz0geTsKICAgICAgICBzdW1YU3F1YXJlZCArPSB4ICogeDsKICAgICAgICBzdW1Z
U3F1YXJlZCArPSB5ICogeTsKICAgICAgICBzdW1YVGltZXNZICs9IHggKiB5OwogICAgfQoKICAg
IHZhciByID0gKHBvaW50cy5sZW5ndGggKiBzdW1YVGltZXNZIC0gc3VtWCAqIHN1bVkpIC8KICAg
ICAgICBNYXRoLnNxcnQoKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAtIHN1bVggKiBzdW1Y
KSAqCiAgICAgICAgICAgICAgICAgIChwb2ludHMubGVuZ3RoICogc3VtWVNxdWFyZWQgLSBzdW1Z
ICogc3VtWSkpOwoKICAgIGlmIChpc05hTihyKSB8fCByID09IE1hdGguSW5maW5pdHkpCiAgICAg
ICAgciA9IDA7CgogICAgdmFyIHNsb3BlID0gKHBvaW50cy5sZW5ndGggKiBzdW1YVGltZXNZIC0g
c3VtWCAqIHN1bVkpIC8gKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAtIHN1bVggKiBzdW1Y
KTsKICAgIHZhciBpbnRlcmNlcHQgPSBzdW1ZIC8gcG9pbnRzLmxlbmd0aCAtIHNsb3BlICogc3Vt
WCAvIHBvaW50cy5sZW5ndGg7CiAgICByZXR1cm4ge3Nsb3BlOiBzbG9wZSwgaW50ZXJjZXB0OiBp
bnRlcmNlcHQsIHJTcXVhcmVkOiByICogcn07Cn0KCnZhciB3YXJuaW5nU2lnbiA9ICc8c3ZnIHZp
ZXdCb3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0id2lkdGg6IDE4cHg7IGhlaWdodDogMThweDsgdmVy
dGljYWwtYWxpZ246IGJvdHRvbTsiIHZlcnNpb249IjEuMSI+JwogICAgKyAnPHBvbHlnb24gZmls
bD0icmVkIiBwb2ludHM9IjUwLDEwIDkwLDgwIDEwLDgwIDUwLDEwIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4nCiAgICArICc8cG9seWdv
biBmaWxsPSJ3aGl0ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwgNTAsIDI4LjcsIDUyLDI5IDUzLDMw
IDUwLDYwIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2UtbGluZWpvaW49
InJvdW5kIiAvPicKICAgICsgJzxjaXJjbGUgY3g9IjUwIiBjeT0iNzMiIHI9IjYiIGZpbGw9Indo
aXRlIiAvPicKICAgICsgJzwvc3ZnPic7CgpmdW5jdGlvbiBjcmVhdGVUYWJsZVJvdyhydW5zLCB0
ZXN0LCByZWZlcmVuY2VJbmRleCkgewogICAgdmFyIHRhYmxlUm93ID0gJCgnPHRyPjx0ZCBjbGFz
cz0idGVzdCI+JyArIHRlc3QubmFtZSgpICsgJzwvdGQ+PHRkIGNsYXNzPSJ1bml0Ij4nICsgdGVz
dC51bml0KCkgKyAnPC90ZD48L3RyPicpOwoKICAgIGZ1bmN0aW9uIG1hcmt1cEZvclJ1bihyZXN1
bHQsIHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgIHZhciBjb21wYXJpc29uQ2VsbCA9ICcnOwog
ICAgICAgIHZhciBoaWRkZW5WYWx1ZSA9ICcnOwogICAgICAgIHZhciBzaG91bGRDb21wYXJlID0g
cmVzdWx0ICE9PSByZWZlcmVuY2VSZXN1bHQ7CiAgICAgICAgaWYgKHNob3VsZENvbXBhcmUgJiYg
cmVmZXJlbmNlUmVzdWx0KSB7CiAgICAgICAgICAgIHZhciBwZXJjZW50RGlmZmVyZW5jZSA9IHJl
ZmVyZW5jZVJlc3VsdC5wZXJjZW50RGlmZmVyZW5jZShyZXN1bHQpOwogICAgICAgICAgICB2YXIg
YmV0dGVyID0gdGVzdC5zbWFsbGVySXNCZXR0ZXIoKSA/IHBlcmNlbnREaWZmZXJlbmNlIDwgMCA6
IHBlcmNlbnREaWZmZXJlbmNlID4gMDsKICAgICAgICAgICAgdmFyIGNvbXBhcmlzb24gPSAnJzsK
ICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICdjb21wYXJpc29uJzsKICAgICAgICAgICAgaWYg
KHJlZmVyZW5jZVJlc3VsdC5pc1N0YXRpc3RpY2FsbHlTaWduaWZpY2FudChyZXN1bHQpKSB7CiAg
ICAgICAgICAgICAgICBjb21wYXJpc29uID0gZm9ybWF0UGVyY2VudGFnZShNYXRoLmFicyhwZXJj
ZW50RGlmZmVyZW5jZSkpICsgKGJldHRlciA/ICcgQmV0dGVyJyA6ICcgV29yc2UmbmJzcDsnKTsK
ICAgICAgICAgICAgICAgIGNsYXNzTmFtZSArPSBiZXR0ZXIgPyAnIGJldHRlcicgOiAnIHdvcnNl
JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBoaWRkZW5WYWx1ZSA9ICc8c3BhbiBzdHlsZT0i
ZGlzcGxheTogbm9uZSI+fCcgKyBjb21wYXJpc29uICsgJzwvc3Bhbj4nOwogICAgICAgICAgICBj
b21wYXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9IicgKyBjbGFzc05hbWUgKyAnIj4nICsgY29tcGFy
aXNvbiArICc8L3RkPic7CiAgICAgICAgfSBlbHNlIGlmIChzaG91bGRDb21wYXJlKQogICAgICAg
ICAgICBjb21wYXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+JzsKCiAg
ICAgICAgdmFyIHZhbHVlcyA9IHJlc3VsdC52YWx1ZXMoKTsKICAgICAgICB2YXIgd2FybmluZyA9
ICcnOwogICAgICAgIHZhciByZWdyZXNzaW9uQW5hbHlzaXMgPSAnJzsKICAgICAgICBpZiAodmFs
dWVzICYmIHZhbHVlcy5sZW5ndGggPiAzKSB7CiAgICAgICAgICAgIHJlZ3Jlc3Npb25SZXN1bHQg
PSBsaW5lYXJSZWdyZXNzaW9uKHZhbHVlcyk7CiAgICAgICAgICAgIHJlZ3Jlc3Npb25BbmFseXNp
cyA9ICdzbG9wZT0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlZ3Jlc3Npb25SZXN1bHQuc2xv
cGUpCiAgICAgICAgICAgICAgICArICcsIFJeMj0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJl
Z3Jlc3Npb25SZXN1bHQuclNxdWFyZWQpOwogICAgICAgICAgICBpZiAocmVncmVzc2lvblJlc3Vs
dC5yU3F1YXJlZCA+IDAuNiAmJiBNYXRoLmFicyhyZWdyZXNzaW9uUmVzdWx0LnNsb3BlKSA+IDAu
MDEpIHsKICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAnIDxzcGFuIGNsYXNzPSJyZWdyZXNzaW9u
LXdhcm5pbmciIHRpdGxlPSJEZXRlY3RlZCBhIHRpbWUgZGVwZW5kZW5jeSB3aXRoICcgKyByZWdy
ZXNzaW9uQW5hbHlzaXMgKyAnIj4nICsgd2FybmluZ1NpZ24gKyAnIDwvc3Bhbj4nOwogICAgICAg
ICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc3RhdGlzdGljcyA9ICcmc2lnbWE7PScgKyB0
b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0LnN0ZGV2KCkpICsgJywgbWluPScgKyB0b0ZpeGVk
V2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1pbigpKQogICAgICAgICAgICArICcsIG1heD0nICsgdG9G
aXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5tYXgoKSkgKyAnXG4nICsgcmVncmVzc2lvbkFuYWx5
c2lzOwoKICAgICAgICAvLyBUYWJsZXNvcnRlciBkb2Vzbid0IGtub3cgYWJvdXQgdGhlIHNlY29u
ZCBjZWxsIHNvIHB1dCB0aGUgY29tcGFyaXNvbiBpbiB0aGUgaW52aXNpYmxlIGVsZW1lbnQuCiAg
ICAgICAgcmV0dXJuICc8dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9IicgKyBzdGF0aXN0aWNzICsg
JyI+JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWVhbigpKSArIGhpZGRlblZhbHVl
CiAgICAgICAgICAgICsgJzwvdGQ+PHRkIGNsYXNzPSJzdGRldiIgdGl0bGU9IicgKyBzdGF0aXN0
aWNzICsgJyI+JnBsdXNtbjsgJwogICAgICAgICAgICArIGZvcm1hdFBlcmNlbnRhZ2UocmVzdWx0
LnN0ZGV2UmF0aW8oKSkgKyB3YXJuaW5nICsgJzwvdGQ+JyArIGNvbXBhcmlzb25DZWxsOwogICAg
fQoKICAgIGZ1bmN0aW9uIG1hcmt1cEZvck1pc3NpbmdSdW4oaXNSZWZlcmVuY2UpIHsKICAgICAg
ICByZXR1cm4gJzx0ZCBjb2xzcGFuPSInICsgKGlzUmVmZXJlbmNlID8gMiA6IDMpICsgJyIgY2xh
c3M9Im1pc3NpbmciPk1pc3Npbmc8L3RkPic7CiAgICB9CgogICAgdmFyIHJ1bkluZGV4ID0gMDsK
ICAgIHZhciByZXN1bHRzID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgcmVmZXJlbmNlUmVzdWx0
ID0gdW5kZWZpbmVkOwogICAgdmFyIHJlc3VsdEluZGV4TWFwID0ge307CiAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB3aGlsZSAocnVuc1tydW5J
bmRleF0gIT09IHJlc3VsdHNbaV0ucnVuKCkpCiAgICAgICAgICAgIHJ1bkluZGV4Kys7CiAgICAg
ICAgaWYgKHJ1bkluZGV4ID09IHJlZmVyZW5jZUluZGV4KQogICAgICAgICAgICByZWZlcmVuY2VS
ZXN1bHQgPSByZXN1bHRzW2ldOwogICAgICAgIHJlc3VsdEluZGV4TWFwW3J1bkluZGV4XSA9IGk7
CiAgICB9CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bnMubGVuZ3RoOyBpKyspIHsKICAgICAg
ICB2YXIgcmVzdWx0SW5kZXggPSByZXN1bHRJbmRleE1hcFtpXTsKICAgICAgICBpZiAocmVzdWx0
SW5kZXggPT0gdW5kZWZpbmVkKQogICAgICAgICAgICB0YWJsZVJvdy5hcHBlbmQobWFya3VwRm9y
TWlzc2luZ1J1bihpID09IHJlZmVyZW5jZUluZGV4KSk7CiAgICAgICAgZWxzZQogICAgICAgICAg
ICB0YWJsZVJvdy5hcHBlbmQobWFya3VwRm9yUnVuKHJlc3VsdHNbcmVzdWx0SW5kZXhdLCByZWZl
cmVuY2VSZXN1bHQpKTsKICAgIH0KCiAgICAkKCcjY29udGFpbmVyJykuY2hpbGRyZW4oJ3Rib2R5
JykubGFzdCgpLmFwcGVuZCh0YWJsZVJvdyk7CgogICAgdGFibGVSb3cuY2xpY2soZnVuY3Rpb24g
KGV2ZW50KSB7CiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPSB0YWJsZVJvd1swXSAmJiBldmVu
dC50YXJnZXQucGFyZW50Tm9kZSAhPSB0YWJsZVJvd1swXSkKICAgICAgICAgICAgcmV0dXJuOwoK
ICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICB2YXIgZmlyc3RDZWxsID0g
dGFibGVSb3cuY2hpbGRyZW4oJ3RkJykuZmlyc3QoKTsKICAgICAgICBpZiAoZmlyc3RDZWxsLmNo
aWxkcmVuKCdzZWN0aW9uJykubGVuZ3RoKSB7CiAgICAgICAgICAgIGZpcnN0Q2VsbC5jaGlsZHJl
bignc2VjdGlvbicpLnJlbW92ZSgpOwogICAgICAgICAgICB0YWJsZVJvdy5jaGlsZHJlbigndGQn
KS5jc3MoeydwYWRkaW5nLWJvdHRvbSc6ICcnfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgdmFyIHBsb3QgPSBjcmVhdGVQbG90KGZpcnN0Q2VsbCwgdGVzdCk7CiAgICAgICAgICAgIHBs
b3QuY3NzKHsncG9zaXRpb24nOiAnYWJzb2x1dGUnLCAnei1pbmRleCc6IDJ9KTsKICAgICAgICAg
ICAgdmFyIG9mZnNldCA9IHRhYmxlUm93Lm9mZnNldCgpOwogICAgICAgICAgICBvZmZzZXQubGVm
dCArPSAxOwogICAgICAgICAgICBvZmZzZXQudG9wICs9IHRhYmxlUm93Lm91dGVySGVpZ2h0KCk7
CiAgICAgICAgICAgIHBsb3Qub2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAgIHRhYmxlUm93LmNo
aWxkcmVuKCd0ZCcpLmNzcyh7J3BhZGRpbmctYm90dG9tJzogcGxvdC5vdXRlckhlaWdodCgpICsg
NX0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Cn0KCmZ1bmN0aW9u
IGluaXQoKSB7CiAgICAkLnRhYmxlc29ydGVyLmFkZFBhcnNlcih7CiAgICAgICAgaWQ6ICdjb21w
YXJpc29uJywKICAgICAgICBpczogZnVuY3Rpb24ocykgewogICAgICAgICAgICByZXR1cm4gcy5p
bmRleE9mKCd8JykgPj0gMDsKICAgICAgICB9LAogICAgICAgIGZvcm1hdDogZnVuY3Rpb24ocykg
ewogICAgICAgICAgICB2YXIgcGFyc2VkID0gcGFyc2VGbG9hdChzLnN1YnN0cmluZyhzLmluZGV4
T2YoJ3wnKSArIDEpKTsKICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNlZCkgPyAwIDogcGFy
c2VkOwogICAgICAgIH0sCiAgICAgICAgdHlwZTogJ251bWVyaWMnLAogICAgfSk7CgogICAgdmFy
IHJ1bnMgPSBbXTsKICAgIHZhciB0ZXN0cyA9IHt9OwogICAgJC5lYWNoKEpTT04ucGFyc2UoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pzb24nKS50ZXh0Q29udGVudCksIGZ1bmN0aW9uIChpbmRl
eCwgZW50cnkpIHsKICAgICAgICB2YXIgcnVuID0gbmV3IFRlc3RSdW4oZW50cnkpOwogICAgICAg
IHJ1bnMucHVzaChydW4pOwogICAgICAgICQuZWFjaChlbnRyeS5yZXN1bHRzLCBmdW5jdGlvbiAo
dGVzdCwgcmVzdWx0KSB7CiAgICAgICAgICAgIGlmICghdGVzdHNbdGVzdF0pCiAgICAgICAgICAg
ICAgICB0ZXN0c1t0ZXN0XSA9IG5ldyBQZXJmVGVzdCh0ZXN0KTsKICAgICAgICAgICAgdGVzdHNb
dGVzdF0uYWRkUmVzdWx0KG5ldyBUZXN0UmVzdWx0KHRlc3RzW3Rlc3RdLCByZXN1bHQsIHJ1bikp
OwogICAgICAgIH0pOwogICAgfSk7CgogICAgdmFyIHNob3VsZElnbm9yZU1lbW9yeT0gdHJ1ZTsK
ICAgIHZhciByZWZlcmVuY2VJbmRleCA9IDA7CiAgICBjcmVhdGVUYWJsZSh0ZXN0cywgcnVucywg
c2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CgogICAgJCgnI3RpbWUtbWVtb3J5
JykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50LCBjaGVja2VkRWxlbWVudCkgewogICAg
ICAgIHNob3VsZElnbm9yZU1lbW9yeSA9IGNoZWNrZWRFbGVtZW50LnRleHRDb250ZW50ID09ICdU
aW1lJzsKICAgICAgICBjcmVhdGVUYWJsZSh0ZXN0cywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5
LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsKCiAgICBydW5zLm1hcChmdW5jdGlvbiAocnVuLCBp
bmRleCkgewogICAgICAgICQoJyNyZWZlcmVuY2UnKS5hcHBlbmQoJzxzcGFuIHZhbHVlPSInICsg
aW5kZXggKyAnIicgKyAoaW5kZXggPT0gcmVmZXJlbmNlSW5kZXggPyAnIGNsYXNzPSJjaGVja2Vk
IicgOiAnJykgKyAnPicgKyBydW4ubGFiZWwoKSArICc8L3NwYW4+Jyk7CiAgICB9KQoKICAgICQo
JyNyZWZlcmVuY2UnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQsIGNoZWNrZWRFbGVt
ZW50KSB7CiAgICAgICAgcmVmZXJlbmNlSW5kZXggPSBwYXJzZUludChjaGVja2VkRWxlbWVudC5n
ZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpOwogICAgICAgIGNyZWF0ZVRhYmxlKHRlc3RzLCBydW5zLCBz
aG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5jZUluZGV4KTsKICAgIH0pOwoKICAgICQoJy5jaGVj
a2JveCcpLmVhY2goZnVuY3Rpb24gKGluZGV4LCBjaGVja2JveCkgewogICAgICAgICQoY2hlY2ti
b3gpLmNoaWxkcmVuKCdzcGFuJykuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgICAg
IGlmICgkKHRoaXMpLmhhc0NsYXNzKCdjaGVja2VkJykpCiAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFuJykucmVtb3ZlQ2xhc3MoJ2No
ZWNrZWQnKTsKICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnY2hlY2tlZCcpOwogICAgICAg
ICAgICAkKGNoZWNrYm94KS50cmlnZ2VyKCdjaGFuZ2UnLCAkKHRoaXMpKTsKICAgICAgICB9KTsK
ICAgIH0pOwp9Cgo8L3NjcmlwdD4KPHNjcmlwdCBpZD0ianNvbiIgdHlwZT0iYXBwbGljYXRpb24v
anNvbiI+W3sidGltZXN0YW1wIjogMTM1MjI3ODM1MywgInJlc3VsdHMiOiB7IlJlcGxheS93d3cu
Z29vZ2xlLmNvbSI6IHsibWluIjogNjcuMCwgIm1heCI6IDc2LjAsICJtZWRpYW4iOiA3Mi4wLCAi
dmFsdWVzIjogWzY3LjAsIDcwLjAsIDcyLjAsIDc0LjAsIDc2LjBdLCAic3RkZXYiOiAzLjQ5Mjg0
OTgzOTMxNDU5NTcsICJhdmciOiA3MS44LCAidW5pdCI6ICJtcyJ9LCAiUmVwbGF5L3d3dy5nb29n
bGUuY29tOk1hbGxvYyI6IHsibWluIjogMjQ5NTc4NC4wLCAibWF4IjogMzI5NTM1Mi4wLCAibWVk
aWFuIjogMjUyNTMzNi4wLCAidmFsdWVzIjogWzMyOTUzNTIuMCwgMjQ5NTc4NC4wLCAyNTAzODg4
LjAsIDI1MjUzMzYuMCwgMjU0NjgzMi4wXSwgInN0ZGV2IjogMzQ4MjI3LjA5OTQ4MDc4NDI3LCAi
YXZnIjogMjY3MzQzOC40LCAidW5pdCI6ICJieXRlcyJ9LCAiUmVwbGF5L3d3dy5nb29nbGUuY29t
OkpTSGVhcCI6IHsibWluIjogMTA5MzM2LjAsICJtYXgiOiAzMTcxNjguMCwgIm1lZGlhbiI6IDEx
MTY0OC4wLCAidmFsdWVzIjogWzMxNzE2OC4wLCAxMTA0NzIuMCwgMTA5MzM2LjAsIDExMTY0OC4w
LCAxMTM4NzIuMF0sICJzdGRldiI6IDkyMDY3Ljk2Njk5ODI5OTY5LCAiYXZnIjogMTUyNDk5LjIs
ICJ1bml0IjogImJ5dGVzIn19LCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2
aXNpb24iOiAiMTMzNzEzIn0sIHsidGltZXN0YW1wIjogMTM1MjI3ODM5MCwgInJlc3VsdHMiOiB7
IlJlcGxheS93d3cuZ29vZ2xlLmNvbSI6IHsibWluIjogNzAuMCwgIm1heCI6IDc5LjAsICJtZWRp
YW4iOiA3NS4wLCAidmFsdWVzIjogWzcwLjAsIDczLjAsIDc1LjAsIDc3LjAsIDc5LjBdLCAic3Rk
ZXYiOiAzLjQ5Mjg0OTgzOTMxNDU5NTcsICJhdmciOiA3NC44LCAidW5pdCI6ICJtcyJ9LCAiUmVw
bGF5L3d3dy5nb29nbGUuY29tOk1hbGxvYyI6IHsibWluIjogMjQ5OTk3Ni4wLCAibWF4IjogMzI5
NTE5Mi4wLCAibWVkaWFuIjogMjUyOTUyOC4wLCAidmFsdWVzIjogWzMyOTUxOTIuMCwgMjQ5OTk3
Ni4wLCAyNTA4MDgwLjAsIDI1Mjk1MjguMCwgMjU1MTAyNC4wXSwgInN0ZGV2IjogMzQ2Mjg0LjAx
MTc1OTEzMzksICJhdmciOiAyNjc2NzYwLjAsICJ1bml0IjogImJ5dGVzIn0sICJSZXBsYXkvd3d3
Lmdvb2dsZS5jb206SlNIZWFwIjogeyJtaW4iOiAxMDkzMzYuMCwgIm1heCI6IDMxNzE2OC4wLCAi
bWVkaWFuIjogMTExNjQ4LjAsICJ2YWx1ZXMiOiBbMzE3MTY4LjAsIDExMDQ3Mi4wLCAxMDkzMzYu
MCwgMTExNjQ4LjAsIDExMzg3Mi4wXSwgInN0ZGV2IjogOTIwNjcuOTY2OTk4Mjk5NjksICJhdmci
OiAxNTI0OTkuMiwgInVuaXQiOiAiYnl0ZXMifX0sICJkZXNjcmlwdGlvbiI6ICIyMDBtcyB0aW1l
b3V0IiwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAid2Via2l0LXJldmlzaW9uIjogIjEzMzcx
MyJ9LCB7InRpbWVzdGFtcCI6IDEzNTIyNzg0MDYsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTMzNzEz
IiwgImRlc2NyaXB0aW9uIjogIjMwMG1zIHRpbWVvdXQiLCAiYnJhbmNoIjogIndlYmtpdC10cnVu
ayIsICJyZXN1bHRzIjogeyJSZXBsYXkvd3d3Lmdvb2dsZS5jb20iOiB7Im1pbiI6IDY4LjAsICJt
YXgiOiA3Ni4wLCAibWVkaWFuIjogNzMuMCwgInZhbHVlcyI6IFs2OC4wLCA3MS4wLCA3My4wLCA3
NS4wLCA3Ni4wXSwgInN0ZGV2IjogMy4yMDkzNjEzMDcxNzYyNDIsICJhdmciOiA3Mi42LCAidW5p
dCI6ICJtcyJ9LCAiUmVwbGF5L3d3dy5nb29nbGUuY29tOk1hbGxvYyI6IHsibWluIjogMjYwMTY3
Mi4wLCAibWF4IjogMzMzODAyNC4wLCAibWVkaWFuIjogMjYzMDIxNi4wLCAidmFsdWVzIjogWzMz
MzgwMjQuMCwgMjYwMTY3Mi4wLCAyNjA4NzY4LjAsIDI2MzAyMTYuMCwgMjY1MTcxMi4wXSwgInN0
ZGV2IjogMzIwMzI2LjQxOTc4NTgxNzksICJhdmciOiAyNzY2MDc4LjQsICJ1bml0IjogImJ5dGVz
In0sICJSZXBsYXkvd3d3Lmdvb2dsZS5jb206SlNIZWFwIjogeyJtaW4iOiAxMDkzMzYuMCwgIm1h
eCI6IDMwMzY5Ni4wLCAibWVkaWFuIjogMTExNjQ4LjAsICJ2YWx1ZXMiOiBbMzAzNjk2LjAsIDEx
MDQ3Mi4wLCAxMDkzMzYuMCwgMTExNjQ4LjAsIDExMzg3Mi4wXSwgInN0ZGV2IjogODYwNDQuMTc3
NDE2MDIyNzUsICJhdmciOiAxNDk4MDQuOCwgInVuaXQiOiAiYnl0ZXMifX19LCB7InRpbWVzdGFt
cCI6IDEzNTIyNzg0MzQsICJkZXNjcmlwdGlvbiI6ICI0MDBtcyB0aW1lb3V0IiwgInJlc3VsdHMi
OiB7IlJlcGxheS93d3cuZ29vZ2xlLmNvbSI6IHsibWluIjogNjkuMCwgIm1heCI6IDc5LjAsICJt
ZWRpYW4iOiA3NS4wLCAidmFsdWVzIjogWzY5LjAsIDczLjAsIDc1LjAsIDc3LjAsIDc5LjBdLCAi
c3RkZXYiOiAzLjg0NzA3NjgxMjMzNDI3MSwgImF2ZyI6IDc0LjYsICJ1bml0IjogIm1zIn0sICJS
ZXBsYXkvd3d3Lmdvb2dsZS5jb206TWFsbG9jIjogeyJtaW4iOiAyNDk5NjQ4LjAsICJtYXgiOiAz
Mjk5MDU2LjAsICJtZWRpYW4iOiAyNTI5MjAwLjAsICJ2YWx1ZXMiOiBbMzI5OTA1Ni4wLCAyNDk5
NjQ4LjAsIDI1MDc3NTIuMCwgMjUyOTIwMC4wLCAyNTUwNjk2LjBdLCAic3RkZXYiOiAzNDgxNTUu
NjYxODAyMDE2NCwgImF2ZyI6IDI2NzcyNzAuNCwgInVuaXQiOiAiYnl0ZXMifSwgIlJlcGxheS93
d3cuZ29vZ2xlLmNvbTpKU0hlYXAiOiB7Im1pbiI6IDEwOTMzNi4wLCAibWF4IjogMzE3MTY4LjAs
ICJtZWRpYW4iOiAxMTE2NDguMCwgInZhbHVlcyI6IFszMTcxNjguMCwgMTEwNDcyLjAsIDEwOTMz
Ni4wLCAxMTE2NDguMCwgMTEzODcyLjBdLCAic3RkZXYiOiA5MjA2Ny45NjY5OTgyOTk2OSwgImF2
ZyI6IDE1MjQ5OS4yLCAidW5pdCI6ICJieXRlcyJ9fSwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsi
LCAid2Via2l0LXJldmlzaW9uIjogIjEzMzcxMyJ9LCB7InRpbWVzdGFtcCI6IDEzNTIyNzg0NjAs
ICJ3ZWJraXQtcmV2aXNpb24iOiAiMTMzNzEzIiwgInJlc3VsdHMiOiB7IlJlcGxheS93d3cuZ29v
Z2xlLmNvbSI6IHsibWluIjogNjguMCwgIm1heCI6IDc3LjAsICJtZWRpYW4iOiA3My4wLCAidmFs
dWVzIjogWzY4LjAsIDcyLjAsIDczLjAsIDc1LjAsIDc3LjBdLCAic3RkZXYiOiAzLjM5MTE2NDk5
MTU2MjYzNCwgImF2ZyI6IDczLjAsICJ1bml0IjogIm1zIn0sICJSZXBsYXkvd3d3Lmdvb2dsZS5j
b206TWFsbG9jIjogeyJtaW4iOiAyNDkxNTI4LjAsICJtYXgiOiAzMjk1MTkyLjAsICJtZWRpYW4i
OiAyNTIxMzM2LjAsICJ2YWx1ZXMiOiBbMzI5NTE5Mi4wLCAyNDkxNTI4LjAsIDI0OTk4ODguMCwg
MjUyMTMzNi4wLCAyNTQyODMyLjBdLCAic3RkZXYiOiAzNDk5NzQuMjY2NTA5OTgyMDYsICJhdmci
OiAyNjcwMTU1LjIsICJ1bml0IjogImJ5dGVzIn0sICJSZXBsYXkvd3d3Lmdvb2dsZS5jb206SlNI
ZWFwIjogeyJtaW4iOiAxMDkzMzYuMCwgIm1heCI6IDMxNzE2OC4wLCAibWVkaWFuIjogMTExNjQ4
LjAsICJ2YWx1ZXMiOiBbMzE3MTY4LjAsIDExMDQ3Mi4wLCAxMDkzMzYuMCwgMTExNjQ4LjAsIDEx
Mzg3Mi4wXSwgInN0ZGV2IjogOTIwNjcuOTY2OTk4Mjk5NjksICJhdmciOiAxNTI0OTkuMiwgInVu
aXQiOiAiYnl0ZXMifX0sICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgImRlc2NyaXB0aW9uIjog
IjEwMG1zIHRpbWVvdXQifSwgeyJ0aW1lc3RhbXAiOiAxMzUyMjc4NDgwLCAicmVzdWx0cyI6IHsi
UmVwbGF5L3d3dy5nb29nbGUuY29tIjogeyJtaW4iOiA2OC4wLCAibWF4IjogNzYuMCwgIm1lZGlh
biI6IDczLjAsICJ2YWx1ZXMiOiBbNjguMCwgNzEuMCwgNzMuMCwgNzUuMCwgNzYuMF0sICJzdGRl
diI6IDMuMjA5MzYxMzA3MTc2MjQyLCAiYXZnIjogNzIuNiwgInVuaXQiOiAibXMifSwgIlJlcGxh
eS93d3cuZ29vZ2xlLmNvbTpNYWxsb2MiOiB7Im1pbiI6IDI1ODk2NDAuMCwgIm1heCI6IDMzMjIy
NDguMCwgIm1lZGlhbiI6IDI2MTgxODQuMCwgInZhbHVlcyI6IFszMzIyMjQ4LjAsIDI1ODk2NDAu
MCwgMjU5NjczNi4wLCAyNjE4MTg0LjAsIDI2Mzk0MjQuMF0sICJzdGRldiI6IDMxODY3OC4wMzky
NzYwMDY2MywgImF2ZyI6IDI3NTMyNDYuNCwgInVuaXQiOiAiYnl0ZXMifSwgIlJlcGxheS93d3cu
Z29vZ2xlLmNvbTpKU0hlYXAiOiB7Im1pbiI6IDEwOTMzNi4wLCAibWF4IjogMzAzNjk2LjAsICJt
ZWRpYW4iOiAxMTE2NDguMCwgInZhbHVlcyI6IFszMDM2OTYuMCwgMTEwNDcyLjAsIDEwOTMzNi4w
LCAxMTE2NDguMCwgMTEzODcyLjBdLCAic3RkZXYiOiA4NjA0NC4xNzc0MTYwMjI3NSwgImF2ZyI6
IDE0OTgwNC44LCAidW5pdCI6ICJieXRlcyJ9fSwgImRlc2NyaXB0aW9uIjogIjUwbXMgdGltZW91
dCIsICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgIndlYmtpdC1yZXZpc2lvbiI6ICIxMzM3MTMi
fSwgeyJ0aW1lc3RhbXAiOiAxMzUyMjc4NDk1LCAid2Via2l0LXJldmlzaW9uIjogIjEzMzcxMyIs
ICJkZXNjcmlwdGlvbiI6ICIwbXMgdGltZW91dCIsICJicmFuY2giOiAid2Via2l0LXRydW5rIiwg
InJlc3VsdHMiOiB7IlJlcGxheS93d3cuZ29vZ2xlLmNvbSI6IHsibWluIjogMjYuMCwgIm1heCI6
IDY5LjAsICJtZWRpYW4iOiAzOC4wLCAidmFsdWVzIjogWzY5LjAsIDI2LjAsIDMwLjAsIDM4LjAs
IDQ0LjBdLCAic3RkZXYiOiAxNi45MzUxNzA1MDQwMTMyNCwgImF2ZyI6IDQxLjQsICJ1bml0Ijog
Im1zIn0sICJSZXBsYXkvd3d3Lmdvb2dsZS5jb206TWFsbG9jIjogeyJtaW4iOiAzMTk4NjY0LjAs
ICJtYXgiOiAzNTUyMzA0LjAsICJtZWRpYW4iOiAzMjk1MTI4LjAsICJ2YWx1ZXMiOiBbMzI5NTEy
OC4wLCAzNTUxMjQ4LjAsIDMxOTg2NjQuMCwgMzU1MjMwNC4wLCAzMjAzMDY0LjBdLCAic3RkZXYi
OiAxNzkxODAuOTAxNjA3Mjg2MiwgImF2ZyI6IDMzNjAwODEuNiwgInVuaXQiOiAiYnl0ZXMifSwg
IlJlcGxheS93d3cuZ29vZ2xlLmNvbTpKU0hlYXAiOiB7Im1pbiI6IDEyMTg0MC4wLCAibWF4Ijog
MzUyNDQ4LjAsICJtZWRpYW4iOiAzMTcxNjguMCwgInZhbHVlcyI6IFszMTcxNjguMCwgMTIxODQw
LjAsIDMzNzczNi4wLCAxMjUyMTYuMCwgMzUyNDQ4LjBdLCAic3RkZXYiOiAxMTY5MzYuODI1NjY1
ODI2OTIsICJhdmciOiAyNTA4ODEuNiwgInVuaXQiOiAiYnl0ZXMifX19LCB7InRpbWVzdGFtcCI6
IDEzNTIyNzg1MTIsICJkZXNjcmlwdGlvbiI6ICIxbXMgdGltZW91dCIsICJyZXN1bHRzIjogeyJS
ZXBsYXkvd3d3Lmdvb2dsZS5jb20iOiB7Im1pbiI6IDI2LjAsICJtYXgiOiA3MC4wLCAibWVkaWFu
IjogNDIuMCwgInZhbHVlcyI6IFs3MC4wLCAyNi4wLCAzMC4wLCA0Mi4wLCA0Ni4wXSwgInN0ZGV2
IjogMTcuMjk3Mzk4NjQ4MzUxNzI0LCAiYXZnIjogNDIuOCwgInVuaXQiOiAibXMifSwgIlJlcGxh
eS93d3cuZ29vZ2xlLmNvbTpNYWxsb2MiOiB7Im1pbiI6IDMyMDI1MDQuMCwgIm1heCI6IDM1NTkx
ODQuMCwgIm1lZGlhbiI6IDMyOTc3MzYuMCwgInZhbHVlcyI6IFszMjk3NzM2LjAsIDM1NTkxODQu
MCwgMzIwMjUwNC4wLCAzNTQ3ODMyLjAsIDMyMDI3NTIuMF0sICJzdGRldiI6IDE3OTEyNS41MzA5
MDE2NTU3LCAiYXZnIjogMzM2MjAwMS42LCAidW5pdCI6ICJieXRlcyJ9LCAiUmVwbGF5L3d3dy5n
b29nbGUuY29tOkpTSGVhcCI6IHsibWluIjogMTIxODQwLjAsICJtYXgiOiAzNTI0NDguMCwgIm1l
ZGlhbiI6IDMxNjI3Mi4wLCAidmFsdWVzIjogWzMxNjI3Mi4wLCAxMjE4NDAuMCwgMzM3NzM2LjAs
IDEyNTIxNi4wLCAzNTI0NDguMF0sICJzdGRldiI6IDExNjgxMC40NjgwNzg4NDk4NSwgImF2ZyI6
IDI1MDcwMi40LCAidW5pdCI6ICJieXRlcyJ9fSwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAi
d2Via2l0LXJldmlzaW9uIjogIjEzMzcxMyJ9LCB7InRpbWVzdGFtcCI6IDEzNTIyNzg1MjcsICJ3
ZWJraXQtcmV2aXNpb24iOiAiMTMzNzEzIiwgInJlc3VsdHMiOiB7IlJlcGxheS93d3cuZ29vZ2xl
LmNvbSI6IHsibWluIjogNzAuMCwgIm1heCI6IDc5LjAsICJtZWRpYW4iOiA3Ni4wLCAidmFsdWVz
IjogWzcwLjAsIDczLjAsIDc2LjAsIDc4LjAsIDc5LjBdLCAic3RkZXYiOiAzLjcwMTM1MTEwNDY2
NDM0OSwgImF2ZyI6IDc1LjIsICJ1bml0IjogIm1zIn0sICJSZXBsYXkvd3d3Lmdvb2dsZS5jb206
TWFsbG9jIjogeyJtaW4iOiAyNDk1Mjg4LjAsICJtYXgiOiAzMjk4OTg0LjAsICJtZWRpYW4iOiAy
NTI0OTA0LjAsICJ2YWx1ZXMiOiBbMzI5ODk4NC4wLCAyNDk1Mjg4LjAsIDI1MDM0NTYuMCwgMjUy
NDkwNC4wLCAyNTQ2NDAwLjBdLCAic3RkZXYiOiAzNTAwNDkuNzkxMDgyMzU0NSwgImF2ZyI6IDI2
NzM4MDYuNCwgInVuaXQiOiAiYnl0ZXMifSwgIlJlcGxheS93d3cuZ29vZ2xlLmNvbTpKU0hlYXAi
OiB7Im1pbiI6IDEwOTMzNi4wLCAibWF4IjogMzE3MTY4LjAsICJtZWRpYW4iOiAxMTE2NDguMCwg
InZhbHVlcyI6IFszMTcxNjguMCwgMTEwNDcyLjAsIDEwOTMzNi4wLCAxMTE2NDguMCwgMTEzODcy
LjBdLCAic3RkZXYiOiA5MjA2Ny45NjY5OTgyOTk2OSwgImF2ZyI6IDE1MjQ5OS4yLCAidW5pdCI6
ICJieXRlcyJ9fSwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAiZGVzY3JpcHRpb24iOiAiNTBt
cyB0aW1lb3V0In1dPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>