<?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>123311</bug_id>
          
          <creation_ts>2013-10-24 18:38:44 -0700</creation_ts>
          <short_desc>Showing lists of flaky tests for a builder takes too long</short_desc>
          <delta_ts>2013-10-25 11:14:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Website</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ap</cc>
    
    <cc>lforschler</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>943397</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-24 18:38:44 -0700</bug_when>
    <thetext>Showing tests that are failing, flaky, or have wrong test expectations take multiple seconds to load even on my local machine.
We need to make it orders of magnitude faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943399</commentid>
    <comment_count>1</comment_count>
      <attachid>215132</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-24 18:40:40 -0700</bug_when>
    <thetext>Created attachment 215132
Addresses the problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943408</commentid>
    <comment_count>2</comment_count>
      <attachid>215135</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-24 19:02:16 -0700</bug_when>
    <thetext>Created attachment 215135
Fixed the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943417</commentid>
    <comment_count>3</comment_count>
      <attachid>215137</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-24 19:38:28 -0700</bug_when>
    <thetext>Created attachment 215137
Another attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943418</commentid>
    <comment_count>4</comment_count>
      <attachid>215138</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-24 19:39:45 -0700</bug_when>
    <thetext>Created attachment 215138
Fixed paths</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943666</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-25 11:06:24 -0700</bug_when>
    <thetext>Landed in &lt;http://trac.webkit.org/changeset/157988&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943670</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-25 11:14:53 -0700</bug_when>
    <thetext>Yes!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215132</attachid>
            <date>2013-10-24 18:40:40 -0700</date>
            <delta_ts>2013-10-24 19:02:14 -0700</delta_ts>
            <desc>Addresses the problem</desc>
            <filename>fix123311</filename>
            <type>text/plain</type>
            <size>24442</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
c2l0ZXMvdGVzdC1yZXN1bHRzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3OTczKQorKysgV2Vic2l0
ZXMvdGVzdC1yZXN1bHRzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDEzLTEwLTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IFNob3dpbmcgbGlzdHMgb2YgZmxha3kgdGVzdHMgZm9yIGEgYnVpbGRlciB0YWtlcyB0b28gbG9u
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJh
dGUgSlNPTnMgZm9yIHRlc3RzIGZhaWxpbmcsIGZsYWt5LCBvciB3aXRoIHdyb25nIGV4cGVjdGF0
aW9uIGF0IHRoZSB0aW1lIGEgYnVpbGRlciByZXBvcnRzIHJlc3VsdHMKKyAgICAgICAgaW5zdGVh
ZCB3aGVuIHRoZSBmcm9udGVuZCByZXF1ZXN0cyB0byB0aG9zZSB0aG9zZSByZXN1bHRzIHNpbmNl
IGl0IHRha2VzIG11bHRpcGxlIHNlY29uZHMgb3IgbWludXRlcyB0bworICAgICAgICBnZW5lcmF0
ZSB0aG9zZSBKU09OIGZpbGVzLgorCisgICAgICAgICogYWRtaW4vZ2VuZXJhdGUtZmFpbGluZy10
ZXN0cy5waHA6IENvcGllZCBmcm9tIGFwaS9mYWlsaW5nLXRlc3RzLnBocC4KKyAgICAgICAgKG1h
aW4pOiBNb3ZlZCBhbmQgcmVuYW1lZCB0byBtYW51YWxseSBnZW5lcmF0ZSBhbGwgSlNPTiBmaWxl
cyBmb3IgYSBnaXZlbiBidWlsZGVyLgorCisgICAgICAgICogYXBpL2ZhaWxpbmctdGVzdHMucGhw
OiBSZW1vdmVkLgorCisgICAgICAgICogYXBpL3JlcG9ydC5waHA6IE1hbnVhbGx5IGZsdXNoIGFu
ZCBlbmQgdGhlIHJlcXVlc3QgKHRvIGF2b2lkIGJsb2NraW5nIHJ1bi13ZWJraXQtdGVzdHMgb24g
dGhlIG90aGVyIHNpZGUKKyAgICAgICAgZm9yIG1pbnV0ZXMpLCB0aGVuIGdlbmVyYXRlIEpTT05z
IGZvciB0ZXN0cyB0aGF0IGFyZSBmYWlsaW5nLCBhcmUgZmxha3ksIGFuZCBoYXZlIHdyb25nIGV4
cGVjdGF0aW9ucy4KKworICAgICAgICAqIGFwaS9yZXN1bHRzLnBocDogTWVyZ2UgZm9ybWF0X3Jl
c3VsdF9yb3dzIGhlcmUgc2luY2UgaXQncyBub3QgdXNlZCBhbnl3aGVyZSBlbHNlLgorCisgICAg
ICAgICogaW5jbHVkZS9jb25maWcuanNvbjogQWRkZWQgdGhlIHBhdGggdG8gdGhlIGRhdGEgZGly
ZWN0b3J5IGludG8gd2hpY2ggSlNPTiBmaWxlcyBhcmUgZ2VuZXJhdGVkLgorCisgICAgICAgICog
aW5jbHVkZS9kYi5waHA6CisgICAgICAgIChjb25maWdQYXRoKTogVGFrZXMgYSByZWxhdGl2ZSBw
YXRoIHZhbHVlIGZyb20gY29uZmlnLmpzb24sIGFuZCByZXNvbHZlcyBpdC4KKworICAgICAgICAq
IGluY2x1ZGUvanNvbi1zaGFyZWQucGhwOgorICAgICAgICAoZWNob19zdWNjZXNzKTogRXh0cmFj
dGVkIGZyb20gZXhpdF93aXRoX3N1Y2Nlc3MuCisgICAgICAgIChleGl0X3dpdGhfc3VjY2Vzcyk6
CisKKyAgICAgICAgKiBpbmNsdWRlL3Rlc3QtcmVzdWx0cy5waHA6CisgICAgICAgIChhZGRfYnVp
bGRlcik6IEV4dHJhY3RlZCBmcm9tIGFkZF9idWlsZC4KKyAgICAgICAgKGFkZF9idWlsZCk6Cisg
ICAgICAgIChSZXN1bHRzSlNPTldyaXRlcik6IEV4dHJhY3RlZCBmcm9tIGFwaS9mYWlsaW5nLXRl
c3RzLnBocC4KKyAgICAgICAgKFJlc3VsdHNKU09OV3JpdGVyLl9fY29uc3RydWN0KToKKyAgICAg
ICAgKFJlc3VsdHNKU09OV3JpdGVyLnN0YXJ0KToKKyAgICAgICAgKFJlc3VsdHNKU09OV3JpdGVy
LmVuZCk6CisgICAgICAgIChSZXN1bHRzSlNPTldyaXRlci5hZGRfcmVzdWx0c19mb3JfdGVzdF9p
Zl9tYXRjaGVzKToKKyAgICAgICAgKFJlc3VsdHNKU09OV3JpdGVyLnBhc3NfZm9yX2ZhaWx1cmVf
dHlwZSk6CisgICAgICAgIChGYWlsaW5nUmVzdWx0c0pTT05Xcml0ZXIpOiBFeHRyYWN0ZWQgZnJv
bSBpbmRleC5odG1sJ3MgVGVzdFJlc3VsdHNWaWV3Ll9tYXRjaGVzRmFpbHVyZVR5cGUuCisgICAg
ICAgIChGYWlsaW5nUmVzdWx0c0pTT05Xcml0ZXIuX19jb25zdHJ1Y3QpOgorICAgICAgICAoRmFp
bGluZ1Jlc3VsdHNKU09OV3JpdGVyLnBhc3NfZm9yX2ZhaWx1cmVfdHlwZSk6CisgICAgICAgIChG
bGFreVJlc3VsdHNKU09OV3JpdGVyKTogRGl0dG8uCisgICAgICAgIChGbGFreVJlc3VsdHNKU09O
V3JpdGVyLl9fY29uc3RydWN0KToKKyAgICAgICAgKEZsYWt5UmVzdWx0c0pTT05Xcml0ZXIucGFz
c19mb3JfZmFpbHVyZV90eXBlKToKKyAgICAgICAgKFdyb25nRXhwZWN0YXRpb25zUmVzdWx0c0pT
T05Xcml0ZXIpOiBEaXR0by4KKyAgICAgICAgKFdyb25nRXhwZWN0YXRpb25zUmVzdWx0c0pTT05X
cml0ZXIuX19jb25zdHJ1Y3QpOgorICAgICAgICAoV3JvbmdFeHBlY3RhdGlvbnNSZXN1bHRzSlNP
TldyaXRlci5wYXNzX2Zvcl9mYWlsdXJlX3R5cGUpOgorICAgICAgICAoUmVzdWx0c0pTT05HZW5l
cmF0b3IpOiBEaXR0by4KKyAgICAgICAgKFJlc3VsdHNKU09OR2VuZXJhdG9yLl9fY29uc3RydWN0
KToKKyAgICAgICAgKFJlc3VsdHNKU09OR2VuZXJhdG9yLmdlbmVyYXRlKToKKyAgICAgICAgKFJl
c3VsdHNKU09OR2VuZXJhdG9yLm9wZW5fanNvbl9mb3JfZmFpbHVyZV90eXBlKToKKyAgICAgICAg
KFJlc3VsdHNKU09OR2VuZXJhdG9yLndyaXRlX2pzb25zKToKKworICAgICAgICAqIGluZGV4Lmh0
bWw6CisgICAgICAgIChUZXN0UmVzdWx0c1ZpZXcpOgorICAgICAgICAoVGVzdFJlc3VsdHNWaWV3
LnNldEJ1aWxkZXJzKToKKyAgICAgICAgKFRlc3RSZXN1bHRzVmlldy5fY3JlYXRlUmVzdWx0Q2Vs
bCk6IEFkZCBhIGh5cGVybGluayB0byByZXN1bHRzLmh0bWwgaW4gdGhlIHRvb2x0aXAuCisgICAg
ICAgIChUZXN0UmVzdWx0c1ZpZXcuZmV0Y2hGYWlsaW5nVGVzdHNGb3JCdWlsZGVyKTogRmV0Y2gg
dGhlIGdlbmVyYXRlZCBKU09OIGZpbGVzLgorCiAyMDEzLTEwLTIzICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydGVkIGVycm9uZW91c2x5IGNvbW1pdHRl
ZCBjaGFuZ2VzIGZyb20gdGhlIHByZXZpb3VzIGNvbW1pdC4KSW5kZXg6IFdlYnNpdGVzL3Rlc3Qt
cmVzdWx0cy9hZG1pbi9nZW5lcmF0ZS1mYWlsaW5nLXRlc3RzLnBocAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJzaXRlcy90ZXN0LXJlc3VsdHMvYWRtaW4vZ2VuZXJhdGUtZmFpbGluZy10ZXN0cy5waHAJKHdv
cmtpbmcgY29weSkKKysrIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9hZG1pbi9nZW5lcmF0ZS1mYWls
aW5nLXRlc3RzLnBocAkod29ya2luZyBjb3B5KQpAQCAtMyw0OCArMywyNCBAQAogcmVxdWlyZV9v
bmNlKCcuLi9pbmNsdWRlL2pzb24tc2hhcmVkLnBocCcpOwogcmVxdWlyZV9vbmNlKCcuLi9pbmNs
dWRlL3Rlc3QtcmVzdWx0cy5waHAnKTsKIAotJGRiID0gY29ubmVjdCgpOworZnVuY3Rpb24gbWFp
bigpIHsKKyAgICByZXF1aXJlX2V4aXN0ZW5jZV9vZigkX0dFVCwgYXJyYXkoJ2J1aWxkZXInID0+
ICcvXltBLVphLXowLTkgXChcKVwtX10rJC8nKSk7CisgICAgJGJ1aWxkZXJfbmFtZSA9ICRfR0VU
WydidWlsZGVyJ107CiAKLXJlcXVpcmVfZXhpc3RlbmNlX29mKCRfR0VULCBhcnJheSgnYnVpbGRl
cicgPT4gJy9eW0EtWmEtejAtOSBcKFwpXC1fXSskLycpKTsKLSRidWlsZGVyX25hbWUgPSAkX0dF
VFsnYnVpbGRlciddOwotJG51bWJlcl9vZl9kYXlzID0gYXJyYXlfZ2V0KCRfR0VULCAnZGF5cycp
OwotaWYgKCRudW1iZXJfb2ZfZGF5cykgewotICAgIHJlcXVpcmVfZm9ybWF0KCdudW1iZXJfb2Zf
ZGF5cycsICRudW1iZXJfb2ZfZGF5cywgJy9eWzAtOV0rJC8nKTsKLSAgICAkbnVtYmVyX29mX2Rh
eXMgPSBpbnR2YWwoJG51bWJlcl9vZl9kYXlzKTsKLX0gZWxzZQotICAgICRudW1iZXJfb2ZfZGF5
cyA9IDM7CisgICAgJGRiID0gY29ubmVjdCgpOworICAgICRidWlsZGVyX3JvdyA9ICRkYi0+c2Vs
ZWN0X2ZpcnN0X3JvdygnYnVpbGRlcnMnLCBOVUxMLCBhcnJheSgnbmFtZScgPT4gJGJ1aWxkZXJf
bmFtZSkpOworICAgIGlmICghJGJ1aWxkZXJfcm93KQorICAgICAgICBleGl0X3dpdGhfZXJyb3Io
J0J1aWxkZXJOb3RGb3VuZCcpOworICAgICRidWlsZGVyX2lkID0gJGJ1aWxkZXJfcm93WydpZCdd
OwogCi0kYnVpbGRlcl9yb3cgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2J1aWxkZXJzJywgTlVM
TCwgYXJyYXkoJ25hbWUnID0+ICRidWlsZGVyX25hbWUpKTsKLWlmICghJGJ1aWxkZXJfcm93KQot
ICAgIGV4aXRfd2l0aF9lcnJvcignQnVpbGRlck5vdEZvdW5kJyk7Ci0kYnVpbGRlcl9pZCA9ICRi
dWlsZGVyX3Jvd1snaWQnXTsKKyAgICAkZ2VuZXJhdG9yID0gbmV3IFJlc3VsdHNKU09OR2VuZXJh
dG9yKCRkYiwgJGJ1aWxkZXJfaWQpOwogCi0kYWxsX3Jlc3VsdHMgPSAkZGItPnF1ZXJ5KAotIlNF
TEVDVCByZXN1bHRzLiosIGJ1aWxkcy4qLCBhcnJheV9hZ2coKGJ1aWxkX3JldmlzaW9ucy5yZXBv
c2l0b3J5LCBidWlsZF9yZXZpc2lvbnMudmFsdWUsIGJ1aWxkX3JldmlzaW9ucy50aW1lKSkgQVMg
cmV2aXNpb25zCi0gICAgRlJPTSByZXN1bHRzLCBidWlsZHMsIGJ1aWxkX3JldmlzaW9ucwotICAg
IFdIRVJFIGJ1aWxkX3JldmlzaW9ucy5idWlsZCA9IGJ1aWxkcy5pZCBBTkQgcmVzdWx0cy5idWls
ZCA9IGJ1aWxkcy5pZCBBTkQgYnVpbGRzLmJ1aWxkZXIgPSAkMQotICAgIEFORCBidWlsZHMuc3Rh
cnRfdGltZSA+IG5vdygpIC0gaW50ZXJ2YWwgJyRudW1iZXJfb2ZfZGF5cyBkYXlzJwotICAgIEdS
T1VQIEJZIHJlc3VsdHMuaWQsIGJ1aWxkcy5pZCBPUkRFUiBCWSByZXN1bHRzLnRlc3QsIG1heChi
dWlsZF9yZXZpc2lvbnMudGltZSkgREVTQyIsIGFycmF5KCRidWlsZGVyX2lkKSk7CisgICAgaWYg
KCRnZW5lcmF0b3ItPmdlbmVyYXRlKCkpCisgICAgICAgIGV4aXRfd2l0aF9zdWNjZXNzKCk7Cisg
ICAgZWxzZQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ1Jlc3VsdHNOb3RGb3VuZCcpOworfQog
Ci1pZiAoISRhbGxfcmVzdWx0cykKLSAgICBleGl0X3dpdGhfZXJyb3IoJ1Jlc3VsdHNOb3RGb3Vu
ZCcpOworbWFpbigpOwogCi0vLyBUbyBjb25zZXJ2ZSBtZW1vcnksIHdlIHNlcmlhbGl6ZSB0ZXN0
cyBhdCBhIHRpbWUuCi1lY2hvICJ7XCJzdGF0dXNcIjogXCJPS1wiLCBcImJ1aWxkZXJzXCI6IHtc
IiRidWlsZGVyX2lkXCI6eyI7Ci0kY3VycmVudFRlc3QgPSBOVUxMOwotJGkgPSAwOwotd2hpbGUg
KCRyZXN1bHQgPSAkZGItPmZldGNoX25leHRfcm93KCRhbGxfcmVzdWx0cykpIHsKLSAgICBpZiAo
JHJlc3VsdFsndGVzdCddICE9ICRjdXJyZW50VGVzdCkgewotICAgICAgICBpZiAoJGN1cnJlbnRU
ZXN0KQotICAgICAgICAgICAgZWNobyAnXSwnOwotICAgICAgICAkY3VycmVudFRlc3QgPSAkcmVz
dWx0Wyd0ZXN0J107Ci0gICAgICAgIGVjaG8gIlwiJGN1cnJlbnRUZXN0XCI6IFsiOwotICAgIH0g
ZWxzZQotICAgICAgICBlY2hvICcsJzsKLSAgICBlY2hvIGpzb25fZW5jb2RlKGZvcm1hdF9yZXN1
bHQoJHJlc3VsdCksIHRydWUpOwotfQotaWYgKCRjdXJyZW50VGVzdCkKLSAgICBlY2hvICddJzsK
LWVjaG8gJ319fSc7Ci0KID8+CkluZGV4OiBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvYXBpL2ZhaWxp
bmctdGVzdHMucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9hcGkvZmFp
bGluZy10ZXN0cy5waHAJKHJldmlzaW9uIDE1Nzg4MCkKKysrIFdlYnNpdGVzL3Rlc3QtcmVzdWx0
cy9hcGkvZmFpbGluZy10ZXN0cy5waHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTAgKzAsMCBAQAot
PD9waHAKLQotcmVxdWlyZV9vbmNlKCcuLi9pbmNsdWRlL2pzb24tc2hhcmVkLnBocCcpOwotcmVx
dWlyZV9vbmNlKCcuLi9pbmNsdWRlL3Rlc3QtcmVzdWx0cy5waHAnKTsKLQotJGRiID0gY29ubmVj
dCgpOwotCi1yZXF1aXJlX2V4aXN0ZW5jZV9vZigkX0dFVCwgYXJyYXkoJ2J1aWxkZXInID0+ICcv
XltBLVphLXowLTkgXChcKVwtX10rJC8nKSk7Ci0kYnVpbGRlcl9uYW1lID0gJF9HRVRbJ2J1aWxk
ZXInXTsKLSRudW1iZXJfb2ZfZGF5cyA9IGFycmF5X2dldCgkX0dFVCwgJ2RheXMnKTsKLWlmICgk
bnVtYmVyX29mX2RheXMpIHsKLSAgICByZXF1aXJlX2Zvcm1hdCgnbnVtYmVyX29mX2RheXMnLCAk
bnVtYmVyX29mX2RheXMsICcvXlswLTldKyQvJyk7Ci0gICAgJG51bWJlcl9vZl9kYXlzID0gaW50
dmFsKCRudW1iZXJfb2ZfZGF5cyk7Ci19IGVsc2UKLSAgICAkbnVtYmVyX29mX2RheXMgPSAzOwot
Ci0kYnVpbGRlcl9yb3cgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2J1aWxkZXJzJywgTlVMTCwg
YXJyYXkoJ25hbWUnID0+ICRidWlsZGVyX25hbWUpKTsKLWlmICghJGJ1aWxkZXJfcm93KQotICAg
IGV4aXRfd2l0aF9lcnJvcignQnVpbGRlck5vdEZvdW5kJyk7Ci0kYnVpbGRlcl9pZCA9ICRidWls
ZGVyX3Jvd1snaWQnXTsKLQotJGFsbF9yZXN1bHRzID0gJGRiLT5xdWVyeSgKLSJTRUxFQ1QgcmVz
dWx0cy4qLCBidWlsZHMuKiwgYXJyYXlfYWdnKChidWlsZF9yZXZpc2lvbnMucmVwb3NpdG9yeSwg
YnVpbGRfcmV2aXNpb25zLnZhbHVlLCBidWlsZF9yZXZpc2lvbnMudGltZSkpIEFTIHJldmlzaW9u
cwotICAgIEZST00gcmVzdWx0cywgYnVpbGRzLCBidWlsZF9yZXZpc2lvbnMKLSAgICBXSEVSRSBi
dWlsZF9yZXZpc2lvbnMuYnVpbGQgPSBidWlsZHMuaWQgQU5EIHJlc3VsdHMuYnVpbGQgPSBidWls
ZHMuaWQgQU5EIGJ1aWxkcy5idWlsZGVyID0gJDEKLSAgICBBTkQgYnVpbGRzLnN0YXJ0X3RpbWUg
PiBub3coKSAtIGludGVydmFsICckbnVtYmVyX29mX2RheXMgZGF5cycKLSAgICBHUk9VUCBCWSBy
ZXN1bHRzLmlkLCBidWlsZHMuaWQgT1JERVIgQlkgcmVzdWx0cy50ZXN0LCBtYXgoYnVpbGRfcmV2
aXNpb25zLnRpbWUpIERFU0MiLCBhcnJheSgkYnVpbGRlcl9pZCkpOwotCi1pZiAoISRhbGxfcmVz
dWx0cykKLSAgICBleGl0X3dpdGhfZXJyb3IoJ1Jlc3VsdHNOb3RGb3VuZCcpOwotCi0vLyBUbyBj
b25zZXJ2ZSBtZW1vcnksIHdlIHNlcmlhbGl6ZSB0ZXN0cyBhdCBhIHRpbWUuCi1lY2hvICJ7XCJz
dGF0dXNcIjogXCJPS1wiLCBcImJ1aWxkZXJzXCI6IHtcIiRidWlsZGVyX2lkXCI6eyI7Ci0kY3Vy
cmVudFRlc3QgPSBOVUxMOwotJGkgPSAwOwotd2hpbGUgKCRyZXN1bHQgPSAkZGItPmZldGNoX25l
eHRfcm93KCRhbGxfcmVzdWx0cykpIHsKLSAgICBpZiAoJHJlc3VsdFsndGVzdCddICE9ICRjdXJy
ZW50VGVzdCkgewotICAgICAgICBpZiAoJGN1cnJlbnRUZXN0KQotICAgICAgICAgICAgZWNobyAn
XSwnOwotICAgICAgICAkY3VycmVudFRlc3QgPSAkcmVzdWx0Wyd0ZXN0J107Ci0gICAgICAgIGVj
aG8gIlwiJGN1cnJlbnRUZXN0XCI6IFsiOwotICAgIH0gZWxzZQotICAgICAgICBlY2hvICcsJzsK
LSAgICBlY2hvIGpzb25fZW5jb2RlKGZvcm1hdF9yZXN1bHQoJHJlc3VsdCksIHRydWUpOwotfQot
aWYgKCRjdXJyZW50VGVzdCkKLSAgICBlY2hvICddJzsKLWVjaG8gJ319fSc7Ci0KLT8+CkluZGV4
OiBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvYXBpL3JlcG9ydC5waHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
c2l0ZXMvdGVzdC1yZXN1bHRzL2FwaS9yZXBvcnQucGhwCShyZXZpc2lvbiAxNTc4ODApCisrKyBX
ZWJzaXRlcy90ZXN0LXJlc3VsdHMvYXBpL3JlcG9ydC5waHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
LDYgKzEzLDkgQEAKICAgICAncmV2aXNpb25zJyA9PiAnL14uKz8kLycsCiAgICAgJ3N0YXJ0X3Rp
bWUnID0+ICcvXlswLTldKyhcLlswLTldKyk/JC8nLAogICAgICdlbmRfdGltZScgPT4gJy9eWzAt
OV0rKFwuWzAtOV0rKT8kLycpKTsKKyRtYXN0ZXIgPSAkX1BPU1RbJ21hc3RlciddOworJGJ1aWxk
ZXJfbmFtZSA9ICRfUE9TVFsnYnVpbGRlcl9uYW1lJ107CiskYnVpbGRfbnVtYmVyID0gaW50dmFs
KCRfUE9TVFsnYnVpbGRfbnVtYmVyJ10pOwogCiBpZiAoIWFycmF5X2tleV9leGlzdHMoJ2ZpbGUn
LCAkX0ZJTEVTKSBvciAhYXJyYXlfa2V5X2V4aXN0cygndG1wX25hbWUnLCAkX0ZJTEVTWydmaWxl
J10pIG9yIGNvdW50KCRfRklMRVNbJ2ZpbGUnXVsndG1wX25hbWUnXSkgPD0gMCkKICAgICBleGl0
X3dpdGhfZXJyb3IoJ1Jlc3VsdHNKU09OTm90SW5jbHVkZWQnKTsKQEAgLTMzLDkgKzM2LDEzIEBA
CiAkc3RhcnRfdGltZSA9IGZsb2F0X3RvX3RpbWUoJF9QT1NUWydzdGFydF90aW1lJ10pOwogJGVu
ZF90aW1lID0gZmxvYXRfdG9fdGltZSgkX1BPU1RbJ2VuZF90aW1lJ10pOwogCi0kYnVpbGRfaWQg
PSBhZGRfYnVpbGQoJGRiLCAkX1BPU1RbJ21hc3RlciddLCAkX1BPU1RbJ2J1aWxkZXJfbmFtZSdd
LCBpbnR2YWwoJF9QT1NUWydidWlsZF9udW1iZXInXSkpOworJGJ1aWxkZXJfaWQgPSBhZGRfYnVp
bGRlcigkZGIsICRtYXN0ZXIsICRidWlsZGVyX25hbWUpOworaWYgKCEkYnVpbGRlcl9pZCkKKyAg
ICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvSW5zZXJ0QnVpbGRlcicsIGFycmF5KCdtYXN0ZXIn
ID0+ICRtYXN0ZXIsICdidWlsZGVyTmFtZScgPT4gJGJ1aWxkZXJfbmFtZSkpOworCiskYnVpbGRf
aWQgPSBhZGRfYnVpbGQoJGRiLCAkYnVpbGRlcl9pZCwgJGJ1aWxkX251bWJlcik7CiBpZiAoISRi
dWlsZF9pZCkKLSAgICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvSW5zZXJ0QnVpbGQnLCBhcnJh
eSgnbWFzdGVyJyA9PiAkX1BPU1RbJ21hc3RlciddLCAnYnVpbGRlck5hbWUnID0+ICRfUE9TVFsn
YnVpbGRlcl9uYW1lJ10sICdidWlsZE51bWJlcicgPT4gJF9QT1NUWydidWlsZF9udW1iZXInXSkp
OworICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9JbnNlcnRCdWlsZCcsIGFycmF5KCdidWls
ZGVySWQnID0+ICRidWlsZGVyX2lkLCAnYnVpbGROdW1iZXInID0+ICRidWlsZF9udW1iZXIpKTsK
IAogZm9yZWFjaCAoJHJldmlzaW9ucyBhcyAkcmVwb3NpdG9yeV9uYW1lID0+ICRyZXZpc2lvbl9k
YXRhKSB7CiAgICAgJHJlcG9zaXRvcnlfaWQgPSAkZGItPnNlbGVjdF9vcl9pbnNlcnRfcm93KCdy
ZXBvc2l0b3JpZXMnLCBOVUxMLCBhcnJheSgnbmFtZScgPT4gJHJlcG9zaXRvcnlfbmFtZSkpOwpA
QCAtNTUsNiArNjIsMTQgQEAKIGlmICghc3RvcmVfdGVzdF9yZXN1bHRzKCRkYiwgJHRlc3RfcmVz
dWx0cywgJGJ1aWxkX2lkLCAkc3RhcnRfdGltZSwgJGVuZF90aW1lLCAkc2xhdmVfaWQpKQogICAg
IGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9TdG9yZVJlc3VsdHMnLCBhcnJheSgnYnVpbGRJZCcg
PT4gJGJ1aWxkX2lkKSk7CiAKLWV4aXRfd2l0aF9zdWNjZXNzKCk7CitlY2hvX3N1Y2Nlc3MoKTsK
IAorb2JfZW5kX2ZsdXNoKCk7CitmbHVzaCgpOworaWYgKGZ1bmN0aW9uX2V4aXN0cygnZmFzdGNn
aV9maW5pc2hfcmVxdWVzdCcpKQorICAgIGZhc3RjZ2lfZmluaXNoX3JlcXVlc3QoKTsKKworJGdl
bmVyYXRvciA9IG5ldyBSZXN1bHRzSlNPTkdlbmVyYXRvcigkZGIsICRidWlsZGVyX2lkKTsKKyRn
ZW5lcmF0b3ItPmdlbmVyYXRlKCk7CisKID8+CkluZGV4OiBXZWJzaXRlcy90ZXN0LXJlc3VsdHMv
YXBpL3Jlc3VsdHMucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9hcGkv
cmVzdWx0cy5waHAJKHJldmlzaW9uIDE1Nzg4MCkKKysrIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9h
cGkvcmVzdWx0cy5waHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDYgKzE5LDEwIEBACiBpZiAoISRy
ZXN1bHRfcm93cykKICAgICBleGl0X3dpdGhfZXJyb3IoJ1Jlc3VsdHNOb3RGb3VuZCcpOwogCi1l
eGl0X3dpdGhfc3VjY2Vzcyhmb3JtYXRfcmVzdWx0X3Jvd3MoJHJlc3VsdF9yb3dzKSk7CiskYnVp
bGRlcnMgPSBhcnJheSgpOworZm9yZWFjaCAoJHJlc3VsdF9yb3dzIGFzICRyZXN1bHQpCisgICAg
YXJyYXlfcHVzaChhcnJheV9lbnN1cmVfaXRlbV9oYXNfYXJyYXkoJGJ1aWxkZXJzLCAkcmVzdWx0
WydidWlsZGVyJ10pLCBmb3JtYXRfcmVzdWx0KCRyZXN1bHQpKTsKIAorZXhpdF93aXRoX3N1Y2Nl
c3MoYXJyYXkoJ2J1aWxkZXJzJyA9PiAkYnVpbGRlcnMpKTsKKwogPz4KSW5kZXg6IFdlYnNpdGVz
L3Rlc3QtcmVzdWx0cy9pbmNsdWRlL2NvbmZpZy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVz
L3Rlc3QtcmVzdWx0cy9pbmNsdWRlL2NvbmZpZy5qc29uCShyZXZpc2lvbiAxNTc4ODApCisrKyBX
ZWJzaXRlcy90ZXN0LXJlc3VsdHMvaW5jbHVkZS9jb25maWcuanNvbgkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDcgQEAKIHsKICAgICAiZGVidWciOiB0cnVlLAogICAgICJqc29uQ2FjaGVNYXhB
Z2UiOiA2MDAsCisgICAgImRhdGFEaXJlY3RvcnkiOiAiLi4vZGF0YSIsCiAgICAgImRhdGFiYXNl
IjogewogICAgICAgICAiaG9zdCI6ICJsb2NhbGhvc3QiLAogICAgICAgICAicG9ydCI6ICI1NDMy
IiwKSW5kZXg6IFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9pbmNsdWRlL2RiLnBocAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvaW5jbHVkZS9kYi5waHAJKHJldmlzaW9uIDE1Nzg4
MCkKKysrIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9pbmNsdWRlL2RiLnBocAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsMTUgQEAKICAgICByZXR1cm4gJF9jb25maWdbJGtleV07CiB9CiAKK2Z1
bmN0aW9uIGNvbmZpZ1BhdGgoJGtleSwgJGFkZGl0aW9uYWxfcGF0aCA9ICcnKSB7CisgICAgJHJl
bGF0aXZlX3BhdGggPSBjb25maWcoJGtleSk7CisgICAgaWYgKCEkcmVsYXRpdmVfcGF0aCkKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCRhZGRpdGlvbmFsX3BhdGgpCisgICAgICAgICRh
ZGRpdGlvbmFsX3BhdGggPSAnLycgLiAkYWRkaXRpb25hbF9wYXRoOworICAgIHJldHVybiByZWFs
cGF0aChkaXJuYW1lKF9fRklMRV9fKSAuICIvJHJlbGF0aXZlX3BhdGgiKSAuICRhZGRpdGlvbmFs
X3BhdGg7Cit9CisKIGlmIChjb25maWcoJ2RlYnVnJykpCiAgICAgaW5pX3NldCgnZGlzcGxheV9l
cnJvcnMnLCAnT24nKTsKIApJbmRleDogV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luY2x1ZGUvanNv
bi1zaGFyZWQucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9pbmNsdWRl
L2pzb24tc2hhcmVkLnBocAkocmV2aXNpb24gMTU3ODgwKQorKysgV2Vic2l0ZXMvdGVzdC1yZXN1
bHRzL2luY2x1ZGUvanNvbi1zaGFyZWQucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw5ICsxMywx
MyBAQAogICAgIGV4aXQoMSk7CiB9CiAKLWZ1bmN0aW9uIGV4aXRfd2l0aF9zdWNjZXNzKCRkZXRh
aWxzID0gYXJyYXkoKSkgeworZnVuY3Rpb24gZWNob19zdWNjZXNzKCRkZXRhaWxzID0gYXJyYXko
KSkgewogICAgICRkZXRhaWxzWydzdGF0dXMnXSA9ICdPSyc7CiAgICAgZWNobyBqc29uX2VuY29k
ZSgkZGV0YWlscyk7Cit9CisKK2Z1bmN0aW9uIGV4aXRfd2l0aF9zdWNjZXNzKCRkZXRhaWxzID0g
YXJyYXkoKSkgeworICAgIGVjaG9fc3VjY2VzcygkZGV0YWlscyk7CiAgICAgZXhpdCgwKTsKIH0K
IApJbmRleDogV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luY2x1ZGUvdGVzdC1yZXN1bHRzLnBocAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvaW5jbHVkZS90ZXN0LXJlc3VsdHMu
cGhwCShyZXZpc2lvbiAxNTc4ODApCisrKyBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvaW5jbHVkZS90
ZXN0LXJlc3VsdHMucGhwCSh3b3JraW5nIGNvcHkpCkBAIC04LDE0ICs4LDE0IEBACiAgICAgcmV0
dXJuICR0aW1lOwogfQogCi1mdW5jdGlvbiBhZGRfYnVpbGQoJGRiLCAkbWFzdGVyLCAkYnVpbGRl
cl9uYW1lLCAkYnVpbGRfbnVtYmVyKSB7CitmdW5jdGlvbiBhZGRfYnVpbGRlcigkZGIsICRtYXN0
ZXIsICRidWlsZGVyX25hbWUpIHsKICAgICBpZiAoIWluX2FycmF5KCRtYXN0ZXIsIGNvbmZpZygn
bWFzdGVycycpKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAkYnVpbGRlcl9pZCA9ICRk
Yi0+c2VsZWN0X29yX2luc2VydF9yb3coJ2J1aWxkZXJzJywgTlVMTCwgYXJyYXkoJ21hc3Rlcicg
PT4gJG1hc3RlciwgJ25hbWUnID0+ICRidWlsZGVyX25hbWUpKTsKLSAgICBpZiAoISRidWlsZGVy
X2lkKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gJGRiLT5zZWxlY3Rfb3JfaW5z
ZXJ0X3JvdygnYnVpbGRlcnMnLCBOVUxMLCBhcnJheSgnbWFzdGVyJyA9PiAkbWFzdGVyLCAnbmFt
ZScgPT4gJGJ1aWxkZXJfbmFtZSkpOworfQogCitmdW5jdGlvbiBhZGRfYnVpbGQoJGRiLCAkYnVp
bGRlcl9pZCwgJGJ1aWxkX251bWJlcikgewogICAgIHJldHVybiAkZGItPnNlbGVjdF9vcl9pbnNl
cnRfcm93KCdidWlsZHMnLCBOVUxMLCBhcnJheSgnYnVpbGRlcicgPT4gJGJ1aWxkZXJfaWQsICdu
dW1iZXInID0+ICRidWlsZF9udW1iZXIpKTsKIH0KIApAQCAtMTA1LDEzICsxMDUsMTY1IEBACiAg
ICAgICAgICdtb2RpZmllcnMnID0+ICRyZXN1bHRbJ21vZGlmaWVycyddKTsKIH0KIAotZnVuY3Rp
b24gZm9ybWF0X3Jlc3VsdF9yb3dzKCRyZXN1bHRfcm93cykgewotICAgICRidWlsZGVycyA9IGFy
cmF5KCk7Ci0gICAgZm9yZWFjaCAoJHJlc3VsdF9yb3dzIGFzICRyZXN1bHQpIHsKLSAgICAgICAg
YXJyYXlfcHVzaChhcnJheV9lbnN1cmVfaXRlbV9oYXNfYXJyYXkoYXJyYXlfZW5zdXJlX2l0ZW1f
aGFzX2FycmF5KCRidWlsZGVycywgJHJlc3VsdFsnYnVpbGRlciddKSwgJHJlc3VsdFsndGVzdCdd
KSwKLSAgICAgICAgICAgIGZvcm1hdF9yZXN1bHQoJHJlc3VsdCkpOworYWJzdHJhY3QgY2xhc3Mg
UmVzdWx0c0pTT05Xcml0ZXIgeworICAgIHByaXZhdGUgJGZwOworICAgIHByaXZhdGUgJGVtaXR0
ZWRfcmVzdWx0czsKKworICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZnApIHsKKyAg
ICAgICAgJHRoaXMtPmZwID0gJGZwOworICAgICAgICAkdGhpcy0+ZW1pdHRlZF9yZXN1bHRzID0g
RkFMU0U7CiAgICAgfQotICAgIHJldHVybiBhcnJheSgnYnVpbGRlcnMnID0+ICRidWlsZGVycyk7
CisKKyAgICBwdWJsaWMgZnVuY3Rpb24gc3RhcnQoJGJ1aWxkZXJfaWQpIHsKKyAgICAgICAgZndy
aXRlKCR0aGlzLT5mcCwgIntcInN0YXR1c1wiOiBcIk9LXCIsIFwiYnVpbGRlcnNcIjoge1wiJGJ1
aWxkZXJfaWRcIjp7Iik7CisgICAgfQorCisgICAgcHVibGljIGZ1bmN0aW9uIGVuZCgkdG90YWxf
dGltZSkgeworICAgICAgICBmd3JpdGUoJHRoaXMtPmZwLCAifX0sIFwidG90YWxHZW5lcmF0aW9u
VGltZVwiOiAkdG90YWxfdGltZX0iKTsKKyAgICB9CisKKyAgICBwdWJsaWMgZnVuY3Rpb24gYWRk
X3Jlc3VsdHNfZm9yX3Rlc3RfaWZfbWF0Y2hlcygkY3VycmVudF90ZXN0LCAkY3VycmVudF9yZXN1
bHRzKSB7CisgICAgICAgIGlmICghY291bnQoJGN1cnJlbnRfcmVzdWx0cykgfHwgJHRoaXMtPnBh
c3NfZm9yX2ZhaWx1cmVfdHlwZSgkY3VycmVudF9yZXN1bHRzKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgLy8gRklYTUU6IFdoeSBkbyB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBjb3VudD8K
KworICAgICAgICAkcHJlZml4ID0gJHRoaXMtPmVtaXR0ZWRfcmVzdWx0cyA/ICIsXG4iIDogIiI7
CisgICAgICAgIGZ3cml0ZSgkdGhpcy0+ZnAsICIkcHJlZml4XCIkY3VycmVudF90ZXN0XCI6Iik7
CisgICAgICAgIGZ3cml0ZSgkdGhpcy0+ZnAsIGpzb25fZW5jb2RlKCRjdXJyZW50X3Jlc3VsdHMs
IHRydWUpKTsKKworICAgICAgICAkdGhpcy0+ZW1pdHRlZF9yZXN1bHRzID0gVFJVRTsKKyAgICB9
CisKKyAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gcGFzc19mb3JfZmFpbHVyZV90eXBl
KCYkcmVzdWx0cyk7CiB9CiAKK2NsYXNzIEZhaWxpbmdSZXN1bHRzSlNPTldyaXRlciBleHRlbmRz
IFJlc3VsdHNKU09OV3JpdGVyIHsKKyAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGZw
KSB7IHBhcmVudDo6X19jb25zdHJ1Y3QoJGZwKTsgfQorICAgIHByb3RlY3RlZCBmdW5jdGlvbiBw
YXNzX2Zvcl9mYWlsdXJlX3R5cGUoJiRyZXN1bHRzKSB7CisgICAgICAgIHJldHVybiAkcmVzdWx0
c1swXVsnYWN0dWFsJ10gPT0gJ1BBU1MnOworICAgIH0KK30KKworY2xhc3MgRmxha3lSZXN1bHRz
SlNPTldyaXRlciBleHRlbmRzIFJlc3VsdHNKU09OV3JpdGVyIHsKKyAgICBwdWJsaWMgZnVuY3Rp
b24gX19jb25zdHJ1Y3QoJGZwKSB7IHBhcmVudDo6X19jb25zdHJ1Y3QoJGZwKTsgfQorICAgIHBy
b3RlY3RlZCBmdW5jdGlvbiBwYXNzX2Zvcl9mYWlsdXJlX3R5cGUoJiRyZXN1bHRzKSB7CisgICAg
ICAgICRsYXN0X2luZGV4ID0gY291bnQoJHJlc3VsdHMpIC0gMTsKKyAgICAgICAgZm9yICgkaSA9
IDE7ICRpIDwgJGxhc3RfaW5kZXg7ICRpKyspIHsKKyAgICAgICAgICAgICRwcmV2aW91c19hY3R1
YWwgPSAkcmVzdWx0c1skaSAtIDFdWydhY3R1YWwnXTsKKyAgICAgICAgICAgICRuZXh0X2FjdHVh
bCA9ICRyZXN1bHRzWyRpICsgMV1bJ2FjdHVhbCddOworICAgICAgICAgICAgaWYgKCRwcmV2aW91
c19hY3R1YWwgPT0gJG5leHRfYWN0dWFsICYmICRyZXN1bHRzWyRpXVsnYWN0dWFsJ10gIT0gJHBy
ZXZpb3VzX2FjdHVhbCkgeworICAgICAgICAgICAgICAgICRyZXN1bHRzWyRpXVsnb25lT2ZmQ2hh
bmdlJ10gPSBUUlVFOworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9Cit9CisKK2NsYXNzIFdy
b25nRXhwZWN0YXRpb25zUmVzdWx0c0pTT05Xcml0ZXIgZXh0ZW5kcyBSZXN1bHRzSlNPTldyaXRl
ciB7CisgICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRmcCkgeyBwYXJlbnQ6Ol9fY29u
c3RydWN0KCRmcCk7IH0KKyAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcGFzc19mb3JfZmFpbHVyZV90
eXBlKCYkcmVzdWx0cykgeworICAgICAgICAkbGF0ZXN0X2V4cGVjdGVkX3Jlc3VsdCA9ICRyZXN1
bHRzWzBdWydleHBlY3RlZCddOworICAgICAgICAkbGF0ZXN0X2FjdHVhbF9yZXN1bHQgPSAkcmVz
dWx0c1swXVsnYWN0dWFsJ107CisKKyAgICAgICAgaWYgKCRsYXRlc3RfZXhwZWN0ZWRfcmVzdWx0
ID09ICRsYXRlc3RfYWN0dWFsX3Jlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworCisg
ICAgICAgICR0b2tlbnMgPSBleHBsb2RlKCcgJywgJGxhdGVzdF9leHBlY3RlZF9yZXN1bHQpOwor
ICAgICAgICByZXR1cm4gYXJyYXlfc2VhcmNoKCRsYXRlc3RfYWN0dWFsX3Jlc3VsdCwgJHRva2Vu
cykgIT09IEZBTFNFCisgICAgICAgICAgICB8fCAoKCRsYXRlc3RfYWN0dWFsX3Jlc3VsdCA9PSAn
VEVYVCcgfHwgJGxhdGVzdF9hY3R1YWxfcmVzdWx0ID09ICdURVhUK0lNQUdFJykgJiYgYXJyYXlf
c2VhcmNoKCdGQUlMJywgJHRva2VucykgIT09IEZBTFNFKTsKKyAgICB9Cit9CisKK2NsYXNzIFJl
c3VsdHNKU09OR2VuZXJhdG9yIHsKKyAgICBwcml2YXRlICRkYjsKKyAgICBwcml2YXRlICRidWls
ZGVyX2lkOworCisgICAgY29uc3QgTUFYSU1VTV9OVU1CRVJfT0ZfREFZUyA9IDMwOworCisgICAg
cHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRkYiwgJGJ1aWxkZXJfaWQpCisgICAgeworICAg
ICAgICAkdGhpcy0+ZGIgPSAkZGI7CisgICAgICAgICR0aGlzLT5idWlsZGVyX2lkID0gJGJ1aWxk
ZXJfaWQ7CisgICAgfQorCisgICAgcHVibGljIGZ1bmN0aW9uIGdlbmVyYXRlKCkKKyAgICB7Cisg
ICAgICAgICRzdGFydF90aW1lID0gbWljcm90aW1lKHRydWUpOworCisgICAgICAgIGlmICghJHRo
aXMtPmJ1aWxkZXJfaWQpCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgJG51
bWJlcl9vZl9kYXlzID0gc2VsZjo6TUFYSU1VTV9OVU1CRVJfT0ZfREFZUzsKKyAgICAgICAgJGFs
bF9yZXN1bHRzID0gJHRoaXMtPmRiLT5xdWVyeSgKKyAgICAgICAgIlNFTEVDVCByZXN1bHRzLios
IGJ1aWxkcy4qIEZST00gcmVzdWx0cworICAgICAgICAgICAgSk9JTiAoU0VMRUNUIGJ1aWxkcy4q
LCBhcnJheV9hZ2coKGJ1aWxkX3JldmlzaW9ucy5yZXBvc2l0b3J5LCBidWlsZF9yZXZpc2lvbnMu
dmFsdWUsIGJ1aWxkX3JldmlzaW9ucy50aW1lKSkgQVMgcmV2aXNpb25zCisgICAgICAgICAgICAg
ICAgICAgIEZST00gYnVpbGRzLCBidWlsZF9yZXZpc2lvbnMKKyAgICAgICAgICAgICAgICAgICAg
V0hFUkUgYnVpbGRfcmV2aXNpb25zLmJ1aWxkID0gYnVpbGRzLmlkIEFORCBidWlsZHMuYnVpbGRl
ciA9ICQxIEFORCBidWlsZHMuc3RhcnRfdGltZSA+IG5vdygpIC0gaW50ZXJ2YWwgJyRudW1iZXJf
b2ZfZGF5cyBkYXlzJworICAgICAgICAgICAgICAgICAgICBHUk9VUCBCWSBidWlsZHMuaWQKKyAg
ICAgICAgICAgICAgICAgICAgT1JERVIgQlkgbWF4KGJ1aWxkX3JldmlzaW9ucy50aW1lKSBERVND
KSBhcyBidWlsZHMgT04gcmVzdWx0cy5idWlsZCA9IGJ1aWxkcy5pZAorICAgICAgICAgICAgT1JE
RVIgQlkgcmVzdWx0cy50ZXN0IiwgYXJyYXkoJHRoaXMtPmJ1aWxkZXJfaWQpKTsKKyAgICAgICAg
aWYgKCEkYWxsX3Jlc3VsdHMpCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAgICAg
JGZhaWxpbmdfanNvbl9mcCA9ICR0aGlzLT5vcGVuX2pzb25fZm9yX2ZhaWx1cmVfdHlwZSgnZmFp
bGluZycpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgJGZsYWt5X2pzb25fZnAgPSAkdGhp
cy0+b3Blbl9qc29uX2Zvcl9mYWlsdXJlX3R5cGUoJ2ZsYWt5Jyk7CisgICAgICAgICAgICB0cnkg
eworICAgICAgICAgICAgICAgICR3cm9uZ2V4cGVjdGF0aW9uc19qc29uX2ZwID0gJHRoaXMtPm9w
ZW5fanNvbl9mb3JfZmFpbHVyZV90eXBlKCd3cm9uZ2V4cGVjdGF0aW9ucycpOworICAgICAgICAg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d3JpdGVfanNv
bnMoJGFsbF9yZXN1bHRzLCBhcnJheSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGYWls
aW5nUmVzdWx0c0pTT05Xcml0ZXIoJGZhaWxpbmdfanNvbl9mcCksCisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcgRmxha3lSZXN1bHRzSlNPTldyaXRlcigkZmxha3lfanNvbl9mcCksCisgICAg
ICAgICAgICAgICAgICAgICAgICBuZXcgV3JvbmdFeHBlY3RhdGlvbnNSZXN1bHRzSlNPTldyaXRl
cigkd3JvbmdleHBlY3RhdGlvbnNfanNvbl9mcCkpLCAkc3RhcnRfdGltZSk7CisgICAgICAgICAg
ICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAg
ICAgZmNsb3NlKCR3cm9uZ2V4cGVjdGF0aW9uc19qc29uX2ZwKTsKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgJGV4Y2VwdGlvbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNh
dGNoIChFeGNlcHRpb24gJGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgIGZjbG9zZSgkZmxh
a3lfanNvbl9mcCk7CisgICAgICAgICAgICAgICAgdGhyb3cgJGV4Y2VwdGlvbjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRleGNlcHRpb24pIHsKKyAgICAgICAg
ICAgIGZjbG9zZSgkZmFpbGluZ19qc29uX2ZwKTsKKyAgICAgICAgICAgIHRocm93ICRleGNlcHRp
b247CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHByaXZh
dGUgZnVuY3Rpb24gb3Blbl9qc29uX2Zvcl9mYWlsdXJlX3R5cGUoJGZhaWx1cmVfdHlwZSkgewor
ICAgICAgICAkZmFpbGluZ19qc29uX3BhdGggPSBjb25maWdQYXRoKCdkYXRhRGlyZWN0b3J5Jywg
JHRoaXMtPmJ1aWxkZXJfaWQgLiAiLSRmYWlsdXJlX3R5cGUuanNvbiIpOworICAgICAgICBpZiAo
ISRmYWlsaW5nX2pzb25fcGF0aCkKKyAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVk
VG9EZXRlcm1pbmVSZXN1bHRzSlNPTlBhdGgnLCBhcnJheSgnYnVpbGRlcklkJyA9PiAkdGhpcy0+
YnVpbGRlcl9pZCwgJ2ZhaWx1cmVUeXBlJyA9PiAkZmFpbHVyZV90eXBlKSk7CisgICAgICAgICRm
cCA9IGZvcGVuKCRmYWlsaW5nX2pzb25fcGF0aCwgJ3cnKTsKKyAgICAgICAgaWYgKCEkZnApCisg
ICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvT3BlblJlc3VsdHNKU09OJywgYXJy
YXkoJ2J1aWxkZXJJZCcgPT4gJHRoaXMtPmJ1aWxkZXJfaWQsICdmYWlsdXJlVHlwZScgPT4gJGZh
aWx1cmVfdHlwZSkpOworICAgICAgICByZXR1cm4gJGZwOworICAgIH0KKworICAgIHByaXZhdGUg
ZnVuY3Rpb24gd3JpdGVfanNvbnMoJGFsbF9yZXN1bHRzLCAkd3JpdGVycywgJHN0YXJ0X3RpbWUp
IHsKKyAgICAgICAgZm9yZWFjaCAoJHdyaXRlcnMgYXMgJHdyaXRlcikKKyAgICAgICAgICAgICR3
cml0ZXItPnN0YXJ0KCR0aGlzLT5idWlsZGVyX2lkKTsKKyAgICAgICAgJGN1cnJlbnRfdGVzdCA9
IE5VTEw7CisgICAgICAgICRjdXJyZW50X3Jlc3VsdHMgPSBhcnJheSgpOworICAgICAgICB3aGls
ZSAoJHJlc3VsdCA9ICR0aGlzLT5kYi0+ZmV0Y2hfbmV4dF9yb3coJGFsbF9yZXN1bHRzKSkgewor
ICAgICAgICAgICAgaWYgKCRyZXN1bHRbJ3Rlc3QnXSAhPSAkY3VycmVudF90ZXN0KSB7CisgICAg
ICAgICAgICAgICAgaWYgKCRjdXJyZW50X3Rlc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9y
ZWFjaCAoJHdyaXRlcnMgYXMgJHdyaXRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICR3cml0
ZXItPmFkZF9yZXN1bHRzX2Zvcl90ZXN0X2lmX21hdGNoZXMoJGN1cnJlbnRfdGVzdCwgJGN1cnJl
bnRfcmVzdWx0cyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICRjdXJyZW50
X3Jlc3VsdHMgPSBhcnJheSgpOworICAgICAgICAgICAgICAgICRjdXJyZW50X3Rlc3QgPSAkcmVz
dWx0Wyd0ZXN0J107CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhcnJheV9wdXNoKCRjdXJy
ZW50X3Jlc3VsdHMsIGZvcm1hdF9yZXN1bHQoJHJlc3VsdCkpOworICAgICAgICB9CisKKyAgICAg
ICAgJHRvdGFsX3RpbWUgPSBtaWNyb3RpbWUodHJ1ZSkgLSAkc3RhcnRfdGltZTsKKyAgICAgICAg
Zm9yZWFjaCAoJHdyaXRlcnMgYXMgJHdyaXRlcikKKyAgICAgICAgICAgICR3cml0ZXItPmVuZCgk
dG90YWxfdGltZSk7CisKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorfQorCiA/PgpJbmRl
eDogV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0
ZXMvdGVzdC1yZXN1bHRzL2luZGV4Lmh0bWwJKHJldmlzaW9uIDE1Nzg4MSkKKysrIFdlYnNpdGVz
L3Rlc3QtcmVzdWx0cy9pbmRleC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxMCBA
QAogPGRpdiBpZD0iYnVpbGRlcnNWaWV3Ij4KIDxmb3JtPgogU2hvdwotPGxhYmVsPnRlc3RzIDxz
ZWxlY3QgaWQ9ImJ1aWxkZXJGYWlsdXJlVHlwZVZpZXciPjxvcHRpb24+ZmFpbGluZzwvb3B0aW9u
PjxvcHRpb24+Zmxha3k8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJ3cm9uZ2V4cGVjdGF0aW9ucyI+
aGFzIHdyb25nIGV4cGVjdGF0aW9uczwvb3B0aW9uPjwvc2VsZWN0PjwvbGFiZWw+Cis8bGFiZWw+
YWxsIHRlc3RzIDxzZWxlY3QgaWQ9ImJ1aWxkZXJGYWlsdXJlVHlwZVZpZXciPjxvcHRpb24+ZmFp
bGluZzwvb3B0aW9uPjxvcHRpb24+Zmxha3k8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJ3cm9uZ2V4
cGVjdGF0aW9ucyI+aGFzIHdyb25nIGV4cGVjdGF0aW9uczwvb3B0aW9uPjwvc2VsZWN0PjwvbGFi
ZWw+CiA8bGFiZWw+b24gPHNlbGVjdCBpZD0iYnVpbGRlckxpc3RWaWV3Ij48b3B0aW9uIHZhbHVl
PSIiPlNlbGVjdCBidWlsZGVyPC9vcHRpb24+PC9zZWxlY3Q+PC9sYWJlbD4KLTxsYWJlbCBmb3I9
ImJ1aWxkZXJEYXlzVmlldyI+aW4gdGhlIGxhc3QgPHNlbGVjdCBpZD0iYnVpbGRlckRheXNWaWV3
Ij48b3B0aW9uPjU8L29wdGlvbj48b3B0aW9uPjE1PC9vcHRpb24+PG9wdGlvbj4zMDwvb3B0aW9u
Pjwvc2VsZWN0PiBkYXlzPC9sYWJlbD4KKzxsYWJlbCBmb3I9ImJ1aWxkZXJEYXlzVmlldyI+Zm9y
Cis8c2VsZWN0IGlkPSJidWlsZGVyRGF5c1ZpZXciIGRpc2FibGVkPjxvcHRpb24+NTwvb3B0aW9u
PjxvcHRpb24+MTU8L29wdGlvbj48b3B0aW9uIHNlbGVjdGVkPjMwPC9vcHRpb24+PC9zZWxlY3Q+
IGRheXM8L2xhYmVsPgogPC9mb3JtPgogPGRpdiBpZD0iYnVpbGRlckZhaWxpbmdUZXN0c1ZpZXci
PjwvZGl2PgogPC9kaXY+CkBAIC02MCw2ICs2MSw3IEBACiAgICAgdGhpcy5fY3VycmVudEJ1aWxk
ZXJEYXlzID0gbnVsbDsKICAgICB0aGlzLl9vbGRIYXNoID0gbnVsbDsKICAgICB0aGlzLl9idWls
ZGVycyA9IHt9OworICAgIHRoaXMuX2J1aWxkZXJCeU5hbWUgPSB7fTsKICAgICB0aGlzLl9zbGF2
ZXMgPSB7fTsKICAgICB0aGlzLl9yZXBvc2l0b3JpZXMgPSB7fTsKICAgICB0aGlzLl90ZXN0Q2F0
ZWdvcmllcyA9IHt9OwpAQCAtNzEsNiArNzMsMTAgQEAKIAogVGVzdFJlc3VsdHNWaWV3LnNldEJ1
aWxkZXJzID0gZnVuY3Rpb24gKGJ1aWxkZXJzKSB7CiAgICAgdGhpcy5fYnVpbGRlcnMgPSBidWls
ZGVyczsKKyAgICBmb3IgKHZhciBidWlsZGVySWQgaW4gYnVpbGRlcnMpIHsKKyAgICAgICAgdmFy
IGJ1aWxkZXIgPSBidWlsZGVyc1tidWlsZGVySWRdOworICAgICAgICB0aGlzLl9idWlsZGVyQnlO
YW1lW2J1aWxkZXIubmFtZV0gPSBidWlsZGVyOworICAgIH0KIH0KIAogVGVzdFJlc3VsdHNWaWV3
LnNldFNsYXZlcyA9IGZ1bmN0aW9uIChzbGF2ZXMpIHsKQEAgLTE0MSw3ICsxNDcsOCBAQAogICAg
ICAgICAgICAgZWxlbWVudCgndWwnLCBbCiAgICAgICAgICAgICAgICAgZWxlbWVudCgnbGknLCBb
J0J1aWxkIFRpbWU6ICcgKyByZXN1bHQuYnVpbGQuZm9ybWF0dGVkQnVpbGRUaW1lKCldKSwKICAg
ICAgICAgICAgICAgICBlbGVtZW50KCdsaScsIFsnUmV2aXNpb246ICddLmNvbmNhdChyZXZpc2lv
bkRlc2NyaXB0aW9uKSksCi0gICAgICAgICAgICAgICAgZWxlbWVudCgnbGknLCBbJ0J1aWxkOiAn
LCBlbGVtZW50KCdhJywgeydocmVmJzogcmVzdWx0LmJ1aWxkLmJ1aWxkVXJsKCl9LCBbYnVpbGRO
dW1iZXJdKV0pLAorICAgICAgICAgICAgICAgIGVsZW1lbnQoJ2xpJywgWydCdWlsZDogJywgZWxl
bWVudCgnYScsIHsnaHJlZic6IHJlc3VsdC5idWlsZC5idWlsZFVybCgpfSwgW2J1aWxkTnVtYmVy
XSksICcgKCcsCisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ2EnLCB7J2hyZWYnOiByZXN1
bHRzUGFnZX0sIFsncmVzdWx0cyddKSwgJyknXSksCiAgICAgICAgICAgICAgICAgZWxlbWVudCgn
bGknLCBbJ0FjdHVhbDogJyArIGFjdHVhbF0pLAogICAgICAgICAgICAgICAgIGVsZW1lbnQoJ2xp
JywgWydFeHBlY3RlZDogJyArIGV4cGVjdGVkXSksCiAgICAgICAgICAgICBdKQpAQCAtMzM3LDM3
ICszNDQsNiBAQAogICAgICAgICB0aGlzLnVwZGF0ZUxvY2F0aW9uSGFzaCgpOwogfQogCi1UZXN0
UmVzdWx0c1ZpZXcuX21hdGNoZXNGYWlsdXJlVHlwZSA9IGZ1bmN0aW9uIChyZXN1bHRzLCBmYWls
dXJlVHlwZSwgdG4pIHsKLSAgICBpZiAoIXJlc3VsdHMubGVuZ3RoKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgdmFyIGxhdGVzdEFjdHVhbFJlc3VsdCA9IHJlc3VsdHNbMF0uYWN0dWFsOwot
ICAgIHZhciBsYXRlc3RFeHBlY3RlZFJlc3VsdCA9IHJlc3VsdHNbMF0uZXhwZWN0ZWQ7Ci0gICAg
c3dpdGNoIChmYWlsdXJlVHlwZSkgewotICAgIGNhc2UgJ2ZhaWxpbmcnOgotICAgICAgICByZXR1
cm4gcmVzdWx0c1swXS5hY3R1YWwgIT0gJ1BBU1MnOwotICAgIGNhc2UgJ2ZsYWt5JzoKLSAgICAg
ICAgdmFyIG9mZk9uZUNoYW5nZUNvdW50ID0gMDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkg
KyAxIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIHByZXZpb3VzQWN0
dWFsID0gcmVzdWx0c1tpIC0gMV0uYWN0dWFsOwotICAgICAgICAgICAgdmFyIG5leHRBY3R1YWwg
PSByZXN1bHRzW2kgKyAxXS5hY3R1YWw7Ci0gICAgICAgICAgICBpZiAocHJldmlvdXNBY3R1YWwg
PT0gbmV4dEFjdHVhbCAmJiByZXN1bHRzW2ldLmFjdHVhbCAhPSBwcmV2aW91c0FjdHVhbCkKLSAg
ICAgICAgICAgICAgICBvZmZPbmVDaGFuZ2VDb3VudCsrOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBvZmZPbmVDaGFuZ2VDb3VudDsgLy8gSGV1cmlzdGljcy4KLSAgICBjYXNlICd3cm9uZ2V4
cGVjdGF0aW9ucyc6Ci0gICAgICAgIGlmIChsYXRlc3RFeHBlY3RlZFJlc3VsdCA9PSBsYXRlc3RB
Y3R1YWxSZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHZhciBleHBl
Y3RlZFRva2VucyA9IGxhdGVzdEV4cGVjdGVkUmVzdWx0LnNwbGl0KCcgJyk7Ci0gICAgICAgIGlm
IChleHBlY3RlZFRva2Vucy5pbmRleE9mKGxhdGVzdEFjdHVhbFJlc3VsdCkgPj0gMCkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGxhdGVzdEFjdHVhbFJlc3VsdCA9PSAn
VEVYVCcgfHwgbGF0ZXN0QWN0dWFsUmVzdWx0ID09ICdURVhUK0lNQUdFJyAmJiBleHBlY3RlZFRv
a2Vucy5pbmRleE9mKCdGQUlMJykgPj0gMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBUZXN0
UmVzdWx0c1ZpZXcuX3BvcHVsYXRlQnVpbGRlclBhbmUgPSBmdW5jdGlvbihidWlsZGVyTmFtZSwg
ZmFpbHVyZVR5cGUsIHJlc3VsdHMsIHNlY3Rpb24pIHsKICAgICB2YXIgdGFibGUgPSBlbGVtZW50
KCd0YWJsZScsIHsnY2xhc3MnOiAncmVzdWx0c1RhYmxlIHRhYmxlc29ydGVyJ30sIFtlbGVtZW50
KCdjYXB0aW9uJywgW2J1aWxkZXJOYW1lXSldKTsKICAgICB2YXIgcmVzdWx0c0J5QnVpbGRlciA9
IHJlc3VsdHNbJ2J1aWxkZXJzJ107CkBAIC0zODcsNyArMzYzLDcgQEAKICAgICB2YXIgc2VsZiA9
IHRoaXM7CiAgICAgZm9yICh2YXIgdGVzdElkIGluIHJlc3VsdHNCeVRlc3RzKSB7CiAgICAgICAg
IHZhciByZXN1bHRzID0gcmVzdWx0c0J5VGVzdHNbdGVzdElkXTsKLSAgICAgICAgaWYgKCFyZXN1
bHRzLmxlbmd0aCB8fCAhdGhpcy5fbWF0Y2hlc0ZhaWx1cmVUeXBlKHJlc3VsdHMsIGZhaWx1cmVU
eXBlLCB0aGlzLl9hdmFpbGFibGVUZXN0c1t0ZXN0SWRdLm5hbWUpKQorICAgICAgICBpZiAoIXJl
c3VsdHMubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHRoaXMuX2NyZWF0
ZUJ1aWxkc0FuZENvbXB1dGVTbG93bmVzc09mUmVzdWx0cyhidWlsZGVySWQsIHJlc3VsdHNCeVRl
c3RzW3Rlc3RJZF0pOwogICAgICAgICB2YXIgdGVzdCA9IHRoaXMuX2F2YWlsYWJsZVRlc3RzW3Rl
c3RJZF07CkBAIC00MTYsOCArMzkyLDEzIEBACiAKICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAg
dmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAgIHhoci5vcGVuKCJHRVQiLCAnYXBp
L2ZhaWxpbmctdGVzdHMucGhwP2J1aWxkZXI9JyArIGVzY2FwZShidWlsZGVyTmFtZSkgKyAnJmRh
eXM9JyArIG51bWJlck9mRGF5cywgdHJ1ZSk7ICAKKyAgICB2YXIgYnVpbGRlcklkID0gdGhpcy5f
YnVpbGRlckJ5TmFtZVtidWlsZGVyTmFtZV0uaWQ7CisgICAgeGhyLm9wZW4oJ0dFVCcsICdkYXRh
LycgKyBidWlsZGVySWQgKyAnLScgKyBmYWlsdXJlVHlwZSArICcuanNvbicsIHRydWUpOyAgCiAg
ICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGlmICh4aHIuc3RhdHVz
ICE9IDIwMCkgeworICAgICAgICAgICAgc2VjdGlvbi5hcHBlbmRDaGlsZCh0ZXh0KCdGYWlsZWQg
dG8gbG9hZCByZXN1bHRzIGZvciAnICsgYnVpbGRlck5hbWUgKyAnOiAnICsgeGhyLnN0YXR1cykp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHZhciByZXNwb25zZSA9
IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlKTsKICAgICAgICAgc2VjdGlvbi5pbm5lckhUTUwgPSAn
JzsKICAgICAgICAgaWYgKHJlc3BvbnNlWydzdGF0dXMnXSAhPSAnT0snKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215135</attachid>
            <date>2013-10-24 19:02:16 -0700</date>
            <delta_ts>2013-10-24 19:38:26 -0700</delta_ts>
            <desc>Fixed the patch</desc>
            <filename>bug-123311-20131024190215.patch</filename>
            <type>text/plain</type>
            <size>25519</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbWFuYWdlci5weQkocmV2aXNpb24gMTU3NjY4KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjI4LDcgKzIyOCw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAg
ICAgc3VtbWFyaXplZF9yZXN1bHRzID0gdGVzdF9ydW5fcmVzdWx0cy5zdW1tYXJpemVfcmVzdWx0
cyhzZWxmLl9wb3J0LCBzZWxmLl9leHBlY3RhdGlvbnMsIGluaXRpYWxfcmVzdWx0cywgcmV0cnlf
cmVzdWx0cywgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSkKICAgICAgICAgcmVzdWx0c19p
bmNsdWRpbmdfcGFzc2VzID0gTm9uZQogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJlc3VsdHNf
c2VydmVyX2hvc3Q6Ci0gICAgICAgICAgICByZXN1bHRzX2luY2x1ZGluZ19wYXNzZXMgPSB0ZXN0
X3J1bl9yZXN1bHRzLnN1bW1hcml6ZV9yZXN1bHRzKHNlbGYuX3BvcnQsIHNlbGYuX2V4cGVjdGF0
aW9ucywgaW5pdGlhbF9yZXN1bHRzLCByZXRyeV9yZXN1bHRzLCBlbmFibGVkX3BpeGVsX3Rlc3Rz
X2luX3JldHJ5LCBpbmNsdWRlX3Bhc3Nlcz1UcnVlKQorICAgICAgICAgICAgcmVzdWx0c19pbmNs
dWRpbmdfcGFzc2VzID0gdGVzdF9ydW5fcmVzdWx0cy5zdW1tYXJpemVfcmVzdWx0cyhzZWxmLl9w
b3J0LCBzZWxmLl9leHBlY3RhdGlvbnMsIGluaXRpYWxfcmVzdWx0cywgcmV0cnlfcmVzdWx0cywg
ZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSwgaW5jbHVkZV9wYXNzZXM9VHJ1ZSwgaW5jbHVk
ZV90aW1lX2FuZF9tb2RpZmllcnM9VHJ1ZSkKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9y
ZXN1bHRzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwgaW5pdGlhbF9yZXN1bHRzLCBzdW1tYXJpemVk
X3Jlc3VsdHMpCiAKICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1
bHRzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5CShyZXZpc2lvbiAxNTc2NjgpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVzdWx0cy5weQko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIGRlZiBfaW50ZXJwcmV0X3Rlc3RfZmFp
bHVyZXMoZmFpbHVyZXMpOgogICAgIHJldHVybiB0ZXN0X2RpY3QKIAogCi1kZWYgc3VtbWFyaXpl
X3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywgaW5pdGlhbF9yZXN1bHRzLCByZXRyeV9y
ZXN1bHRzLCBlbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5LCBpbmNsdWRlX3Bhc3Nlcz1GYWxz
ZSk6CitkZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywgaW5pdGlh
bF9yZXN1bHRzLCByZXRyeV9yZXN1bHRzLCBlbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5LCBp
bmNsdWRlX3Bhc3Nlcz1GYWxzZSwgaW5jbHVkZV90aW1lX2FuZF9tb2RpZmllcnM9RmFsc2UpOgog
ICAgICIiIlJldHVybnMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYSBzdW1tYXJ5IG9mIHRoZSB0
ZXN0IHJ1bnMsIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZHM6CiAgICAgICAgICd2ZXJzaW9uJzog
YSB2ZXJzaW9uIGluZGljYXRvcgogICAgICAgICAnZml4YWJsZSc6IFRoZSBudW1iZXIgb2YgZml4
YWJsZSB0ZXN0cyAoTk9XIC0gUEFTUykKQEAgLTIwMSw2ICsyMDEsMTAgQEAgZGVmIHN1bW1hcml6
ZV9yZXN1bHRzKHBvcnRfb2JqLCBleHBlY3RhdAogCiAgICAgICAgIHRlc3RfZGljdFsnZXhwZWN0
ZWQnXSA9IGV4cGVjdGVkCiAgICAgICAgIHRlc3RfZGljdFsnYWN0dWFsJ10gPSAiICIuam9pbihh
Y3R1YWwpCisgICAgICAgIGlmIGluY2x1ZGVfdGltZV9hbmRfbW9kaWZpZXJzOgorICAgICAgICAg
ICAgdGVzdF9kaWN0Wyd0aW1lJ10gPSByb3VuZCgxMDAwICogcmVzdWx0LnRlc3RfcnVuX3RpbWUp
CisgICAgICAgICAgICAjIEZJWE1FOiBGaXggZ2V0X21vZGlmaWVycyB0byByZXR1cm4gbW9kaWZp
ZXJzIGluIG5ldyBmb3JtYXQuCisgICAgICAgICAgICB0ZXN0X2RpY3RbJ21vZGlmaWVycyddID0g
JyAnLmpvaW4oZXhwZWN0YXRpb25zLmdldF9tb2RpZmllcnModGVzdF9uYW1lKSkucmVwbGFjZSgn
QlVHV0snLCAnd2Via2l0Lm9yZy9iLycpCiAKICAgICAgICAgdGVzdF9kaWN0LnVwZGF0ZShfaW50
ZXJwcmV0X3Rlc3RfZmFpbHVyZXMocmVzdWx0LmZhaWx1cmVzKSkKIApJbmRleDogV2Vic2l0ZXMv
dGVzdC1yZXN1bHRzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy90ZXN0LXJlc3Vs
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTc5ODQpCisrKyBXZWJzaXRlcy90ZXN0LXJlc3VsdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTMtMTAtMjQgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2hvd2luZyBsaXN0cyBv
ZiBmbGFreSB0ZXN0cyBmb3IgYSBidWlsZGVyIHRha2VzIHRvbyBsb25nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMzMTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW5lcmF0ZSBKU09OcyBmb3IgdGVz
dHMgZmFpbGluZywgZmxha3ksIG9yIHdpdGggd3JvbmcgZXhwZWN0YXRpb24gYXQgdGhlIHRpbWUg
YSBidWlsZGVyIHJlcG9ydHMgcmVzdWx0cworICAgICAgICBpbnN0ZWFkIHdoZW4gdGhlIGZyb250
ZW5kIHJlcXVlc3RzIHRvIHRob3NlIHRob3NlIHJlc3VsdHMgc2luY2UgaXQgdGFrZXMgbXVsdGlw
bGUgc2Vjb25kcyBvciBtaW51dGVzIHRvCisgICAgICAgIGdlbmVyYXRlIHRob3NlIEpTT04gZmls
ZXMuCisKKyAgICAgICAgKiBhZG1pbi9nZW5lcmF0ZS1mYWlsaW5nLXRlc3RzLnBocDogQ29waWVk
IGZyb20gYXBpL2ZhaWxpbmctdGVzdHMucGhwLgorICAgICAgICAobWFpbik6IE1vdmVkIGFuZCBy
ZW5hbWVkIHRvIG1hbnVhbGx5IGdlbmVyYXRlIGFsbCBKU09OIGZpbGVzIGZvciBhIGdpdmVuIGJ1
aWxkZXIuCisKKyAgICAgICAgKiBhcGkvZmFpbGluZy10ZXN0cy5waHA6IFJlbW92ZWQuCisKKyAg
ICAgICAgKiBhcGkvcmVwb3J0LnBocDogTWFudWFsbHkgZmx1c2ggYW5kIGVuZCB0aGUgcmVxdWVz
dCAodG8gYXZvaWQgYmxvY2tpbmcgcnVuLXdlYmtpdC10ZXN0cyBvbiB0aGUgb3RoZXIgc2lkZQor
ICAgICAgICBmb3IgbWludXRlcyksIHRoZW4gZ2VuZXJhdGUgSlNPTnMgZm9yIHRlc3RzIHRoYXQg
YXJlIGZhaWxpbmcsIGFyZSBmbGFreSwgYW5kIGhhdmUgd3JvbmcgZXhwZWN0YXRpb25zLgorCisg
ICAgICAgICogYXBpL3Jlc3VsdHMucGhwOiBNZXJnZSBmb3JtYXRfcmVzdWx0X3Jvd3MgaGVyZSBz
aW5jZSBpdCdzIG5vdCB1c2VkIGFueXdoZXJlIGVsc2UuCisKKyAgICAgICAgKiBpbmNsdWRlL2Nv
bmZpZy5qc29uOiBBZGRlZCB0aGUgcGF0aCB0byB0aGUgZGF0YSBkaXJlY3RvcnkgaW50byB3aGlj
aCBKU09OIGZpbGVzIGFyZSBnZW5lcmF0ZWQuCisKKyAgICAgICAgKiBpbmNsdWRlL2RiLnBocDoK
KyAgICAgICAgKGNvbmZpZ1BhdGgpOiBUYWtlcyBhIHJlbGF0aXZlIHBhdGggdmFsdWUgZnJvbSBj
b25maWcuanNvbiwgYW5kIHJlc29sdmVzIGl0LgorCisgICAgICAgICogaW5jbHVkZS9qc29uLXNo
YXJlZC5waHA6CisgICAgICAgIChlY2hvX3N1Y2Nlc3MpOiBFeHRyYWN0ZWQgZnJvbSBleGl0X3dp
dGhfc3VjY2Vzcy4KKyAgICAgICAgKGV4aXRfd2l0aF9zdWNjZXNzKToKKworICAgICAgICAqIGlu
Y2x1ZGUvdGVzdC1yZXN1bHRzLnBocDoKKyAgICAgICAgKGFkZF9idWlsZGVyKTogRXh0cmFjdGVk
IGZyb20gYWRkX2J1aWxkLgorICAgICAgICAoYWRkX2J1aWxkKToKKyAgICAgICAgKFJlc3VsdHNK
U09OV3JpdGVyKTogRXh0cmFjdGVkIGZyb20gYXBpL2ZhaWxpbmctdGVzdHMucGhwLgorICAgICAg
ICAoUmVzdWx0c0pTT05Xcml0ZXIuX19jb25zdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0c0pTT05X
cml0ZXIuc3RhcnQpOgorICAgICAgICAoUmVzdWx0c0pTT05Xcml0ZXIuZW5kKToKKyAgICAgICAg
KFJlc3VsdHNKU09OV3JpdGVyLmFkZF9yZXN1bHRzX2Zvcl90ZXN0X2lmX21hdGNoZXMpOgorICAg
ICAgICAoUmVzdWx0c0pTT05Xcml0ZXIucGFzc19mb3JfZmFpbHVyZV90eXBlKToKKyAgICAgICAg
KEZhaWxpbmdSZXN1bHRzSlNPTldyaXRlcik6IEV4dHJhY3RlZCBmcm9tIGluZGV4Lmh0bWwncyBU
ZXN0UmVzdWx0c1ZpZXcuX21hdGNoZXNGYWlsdXJlVHlwZS4KKyAgICAgICAgKEZhaWxpbmdSZXN1
bHRzSlNPTldyaXRlci5fX2NvbnN0cnVjdCk6CisgICAgICAgIChGYWlsaW5nUmVzdWx0c0pTT05X
cml0ZXIucGFzc19mb3JfZmFpbHVyZV90eXBlKToKKyAgICAgICAgKEZsYWt5UmVzdWx0c0pTT05X
cml0ZXIpOiBEaXR0by4KKyAgICAgICAgKEZsYWt5UmVzdWx0c0pTT05Xcml0ZXIuX19jb25zdHJ1
Y3QpOgorICAgICAgICAoRmxha3lSZXN1bHRzSlNPTldyaXRlci5wYXNzX2Zvcl9mYWlsdXJlX3R5
cGUpOgorICAgICAgICAoV3JvbmdFeHBlY3RhdGlvbnNSZXN1bHRzSlNPTldyaXRlcik6IERpdHRv
LgorICAgICAgICAoV3JvbmdFeHBlY3RhdGlvbnNSZXN1bHRzSlNPTldyaXRlci5fX2NvbnN0cnVj
dCk6CisgICAgICAgIChXcm9uZ0V4cGVjdGF0aW9uc1Jlc3VsdHNKU09OV3JpdGVyLnBhc3NfZm9y
X2ZhaWx1cmVfdHlwZSk6CisgICAgICAgIChSZXN1bHRzSlNPTkdlbmVyYXRvcik6IERpdHRvLgor
ICAgICAgICAoUmVzdWx0c0pTT05HZW5lcmF0b3IuX19jb25zdHJ1Y3QpOgorICAgICAgICAoUmVz
dWx0c0pTT05HZW5lcmF0b3IuZ2VuZXJhdGUpOgorICAgICAgICAoUmVzdWx0c0pTT05HZW5lcmF0
b3Iub3Blbl9qc29uX2Zvcl9mYWlsdXJlX3R5cGUpOgorICAgICAgICAoUmVzdWx0c0pTT05HZW5l
cmF0b3Iud3JpdGVfanNvbnMpOgorCisgICAgICAgICogaW5kZXguaHRtbDoKKyAgICAgICAgKFRl
c3RSZXN1bHRzVmlldyk6CisgICAgICAgIChUZXN0UmVzdWx0c1ZpZXcuc2V0QnVpbGRlcnMpOgor
ICAgICAgICAoVGVzdFJlc3VsdHNWaWV3Ll9jcmVhdGVSZXN1bHRDZWxsKTogQWRkIGEgaHlwZXJs
aW5rIHRvIHJlc3VsdHMuaHRtbCBpbiB0aGUgdG9vbHRpcC4KKyAgICAgICAgKFRlc3RSZXN1bHRz
Vmlldy5mZXRjaEZhaWxpbmdUZXN0c0ZvckJ1aWxkZXIpOiBGZXRjaCB0aGUgZ2VuZXJhdGVkIEpT
T04gZmlsZXMuCisKIDIwMTMtMTAtMjMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2ZXJ0ZWQgZXJyb25lb3VzbHkgY29tbWl0dGVkIGNoYW5nZXMgZnJvbSB0
aGUgcHJldmlvdXMgY29tbWl0LgpJbmRleDogV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luZGV4Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luZGV4Lmh0bWwJKHJldmlz
aW9uIDE1Nzk4NCkKKysrIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9pbmRleC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw5ICsyOSwxMCBAQAogPGRpdiBpZD0iYnVpbGRlcnNWaWV3Ij4KIDxmb3Jt
PgogU2hvdwotPGxhYmVsPnRlc3RzIDxzZWxlY3QgaWQ9ImJ1aWxkZXJGYWlsdXJlVHlwZVZpZXci
PjxvcHRpb24+ZmFpbGluZzwvb3B0aW9uPjxvcHRpb24+Zmxha3k8L29wdGlvbj48b3B0aW9uIHZh
bHVlPSJ3cm9uZ2V4cGVjdGF0aW9ucyI+aGFzIHdyb25nIGV4cGVjdGF0aW9uczwvb3B0aW9uPjwv
c2VsZWN0PjwvbGFiZWw+Cis8bGFiZWw+YWxsIHRlc3RzIDxzZWxlY3QgaWQ9ImJ1aWxkZXJGYWls
dXJlVHlwZVZpZXciPjxvcHRpb24+ZmFpbGluZzwvb3B0aW9uPjxvcHRpb24+Zmxha3k8L29wdGlv
bj48b3B0aW9uIHZhbHVlPSJ3cm9uZ2V4cGVjdGF0aW9ucyI+aGFzIHdyb25nIGV4cGVjdGF0aW9u
czwvb3B0aW9uPjwvc2VsZWN0PjwvbGFiZWw+CiA8bGFiZWw+b24gPHNlbGVjdCBpZD0iYnVpbGRl
ckxpc3RWaWV3Ij48b3B0aW9uIHZhbHVlPSIiPlNlbGVjdCBidWlsZGVyPC9vcHRpb24+PC9zZWxl
Y3Q+PC9sYWJlbD4KLTxsYWJlbCBmb3I9ImJ1aWxkZXJEYXlzVmlldyI+aW4gdGhlIGxhc3QgPHNl
bGVjdCBpZD0iYnVpbGRlckRheXNWaWV3Ij48b3B0aW9uPjU8L29wdGlvbj48b3B0aW9uPjE1PC9v
cHRpb24+PG9wdGlvbj4zMDwvb3B0aW9uPjwvc2VsZWN0PiBkYXlzPC9sYWJlbD4KKzxsYWJlbCBm
b3I9ImJ1aWxkZXJEYXlzVmlldyI+Zm9yCis8c2VsZWN0IGlkPSJidWlsZGVyRGF5c1ZpZXciIGRp
c2FibGVkPjxvcHRpb24+NTwvb3B0aW9uPjxvcHRpb24+MTU8L29wdGlvbj48b3B0aW9uIHNlbGVj
dGVkPjMwPC9vcHRpb24+PC9zZWxlY3Q+IGRheXM8L2xhYmVsPgogPC9mb3JtPgogPGRpdiBpZD0i
YnVpbGRlckZhaWxpbmdUZXN0c1ZpZXciPjwvZGl2PgogPC9kaXY+CkBAIC02MCw2ICs2MSw3IEBA
IHZhciBUZXN0UmVzdWx0c1ZpZXcgPSBuZXcgKGZ1bmN0aW9uICgpIHsKICAgICB0aGlzLl9jdXJy
ZW50QnVpbGRlckRheXMgPSBudWxsOwogICAgIHRoaXMuX29sZEhhc2ggPSBudWxsOwogICAgIHRo
aXMuX2J1aWxkZXJzID0ge307CisgICAgdGhpcy5fYnVpbGRlckJ5TmFtZSA9IHt9OwogICAgIHRo
aXMuX3NsYXZlcyA9IHt9OwogICAgIHRoaXMuX3JlcG9zaXRvcmllcyA9IHt9OwogICAgIHRoaXMu
X3Rlc3RDYXRlZ29yaWVzID0ge307CkBAIC03MSw2ICs3MywxMCBAQCBUZXN0UmVzdWx0c1ZpZXcu
c2V0QXZhaWxhYmxlVGVzdHMgPSBmdW5jCiAKIFRlc3RSZXN1bHRzVmlldy5zZXRCdWlsZGVycyA9
IGZ1bmN0aW9uIChidWlsZGVycykgewogICAgIHRoaXMuX2J1aWxkZXJzID0gYnVpbGRlcnM7Cisg
ICAgZm9yICh2YXIgYnVpbGRlcklkIGluIGJ1aWxkZXJzKSB7CisgICAgICAgIHZhciBidWlsZGVy
ID0gYnVpbGRlcnNbYnVpbGRlcklkXTsKKyAgICAgICAgdGhpcy5fYnVpbGRlckJ5TmFtZVtidWls
ZGVyLm5hbWVdID0gYnVpbGRlcjsKKyAgICB9CiB9CiAKIFRlc3RSZXN1bHRzVmlldy5zZXRTbGF2
ZXMgPSBmdW5jdGlvbiAoc2xhdmVzKSB7CkBAIC0xNDEsNyArMTQ3LDggQEAgVGVzdFJlc3VsdHNW
aWV3Ll9jcmVhdGVSZXN1bHRDZWxsID0gZnVuYwogICAgICAgICAgICAgZWxlbWVudCgndWwnLCBb
CiAgICAgICAgICAgICAgICAgZWxlbWVudCgnbGknLCBbJ0J1aWxkIFRpbWU6ICcgKyByZXN1bHQu
YnVpbGQuZm9ybWF0dGVkQnVpbGRUaW1lKCldKSwKICAgICAgICAgICAgICAgICBlbGVtZW50KCds
aScsIFsnUmV2aXNpb246ICddLmNvbmNhdChyZXZpc2lvbkRlc2NyaXB0aW9uKSksCi0gICAgICAg
ICAgICAgICAgZWxlbWVudCgnbGknLCBbJ0J1aWxkOiAnLCBlbGVtZW50KCdhJywgeydocmVmJzog
cmVzdWx0LmJ1aWxkLmJ1aWxkVXJsKCl9LCBbYnVpbGROdW1iZXJdKV0pLAorICAgICAgICAgICAg
ICAgIGVsZW1lbnQoJ2xpJywgWydCdWlsZDogJywgZWxlbWVudCgnYScsIHsnaHJlZic6IHJlc3Vs
dC5idWlsZC5idWlsZFVybCgpfSwgW2J1aWxkTnVtYmVyXSksICcgKCcsCisgICAgICAgICAgICAg
ICAgICAgIGVsZW1lbnQoJ2EnLCB7J2hyZWYnOiByZXN1bHRzUGFnZX0sIFsncmVzdWx0cyddKSwg
JyknXSksCiAgICAgICAgICAgICAgICAgZWxlbWVudCgnbGknLCBbJ0FjdHVhbDogJyArIGFjdHVh
bF0pLAogICAgICAgICAgICAgICAgIGVsZW1lbnQoJ2xpJywgWydFeHBlY3RlZDogJyArIGV4cGVj
dGVkXSksCiAgICAgICAgICAgICBdKQpAQCAtMzM3LDM3ICszNDQsNiBAQCBUZXN0UmVzdWx0c1Zp
ZXcuZmV0Y2hUZXN0cyA9IGZ1bmN0aW9uICh0CiAgICAgICAgIHRoaXMudXBkYXRlTG9jYXRpb25I
YXNoKCk7CiB9CiAKLVRlc3RSZXN1bHRzVmlldy5fbWF0Y2hlc0ZhaWx1cmVUeXBlID0gZnVuY3Rp
b24gKHJlc3VsdHMsIGZhaWx1cmVUeXBlLCB0bikgewotICAgIGlmICghcmVzdWx0cy5sZW5ndGgp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2YXIgbGF0ZXN0QWN0dWFsUmVzdWx0ID0gcmVz
dWx0c1swXS5hY3R1YWw7Ci0gICAgdmFyIGxhdGVzdEV4cGVjdGVkUmVzdWx0ID0gcmVzdWx0c1sw
XS5leHBlY3RlZDsKLSAgICBzd2l0Y2ggKGZhaWx1cmVUeXBlKSB7Ci0gICAgY2FzZSAnZmFpbGlu
Zyc6Ci0gICAgICAgIHJldHVybiByZXN1bHRzWzBdLmFjdHVhbCAhPSAnUEFTUyc7Ci0gICAgY2Fz
ZSAnZmxha3knOgotICAgICAgICB2YXIgb2ZmT25lQ2hhbmdlQ291bnQgPSAwOwotICAgICAgICBm
b3IgKHZhciBpID0gMTsgaSArIDEgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAg
ICB2YXIgcHJldmlvdXNBY3R1YWwgPSByZXN1bHRzW2kgLSAxXS5hY3R1YWw7Ci0gICAgICAgICAg
ICB2YXIgbmV4dEFjdHVhbCA9IHJlc3VsdHNbaSArIDFdLmFjdHVhbDsKLSAgICAgICAgICAgIGlm
IChwcmV2aW91c0FjdHVhbCA9PSBuZXh0QWN0dWFsICYmIHJlc3VsdHNbaV0uYWN0dWFsICE9IHBy
ZXZpb3VzQWN0dWFsKQotICAgICAgICAgICAgICAgIG9mZk9uZUNoYW5nZUNvdW50Kys7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG9mZk9uZUNoYW5nZUNvdW50OyAvLyBIZXVyaXN0aWNzLgot
ICAgIGNhc2UgJ3dyb25nZXhwZWN0YXRpb25zJzoKLSAgICAgICAgaWYgKGxhdGVzdEV4cGVjdGVk
UmVzdWx0ID09IGxhdGVzdEFjdHVhbFJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgdmFyIGV4cGVjdGVkVG9rZW5zID0gbGF0ZXN0RXhwZWN0ZWRSZXN1bHQuc3BsaXQo
JyAnKTsKLSAgICAgICAgaWYgKGV4cGVjdGVkVG9rZW5zLmluZGV4T2YobGF0ZXN0QWN0dWFsUmVz
dWx0KSA+PSAwKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAobGF0ZXN0
QWN0dWFsUmVzdWx0ID09ICdURVhUJyB8fCBsYXRlc3RBY3R1YWxSZXN1bHQgPT0gJ1RFWFQrSU1B
R0UnICYmIGV4cGVjdGVkVG9rZW5zLmluZGV4T2YoJ0ZBSUwnKSA+PSAwKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KIFRlc3RSZXN1bHRzVmlldy5fcG9wdWxhdGVCdWlsZGVyUGFuZSA9IGZ1bmN0
aW9uKGJ1aWxkZXJOYW1lLCBmYWlsdXJlVHlwZSwgcmVzdWx0cywgc2VjdGlvbikgewogICAgIHZh
ciB0YWJsZSA9IGVsZW1lbnQoJ3RhYmxlJywgeydjbGFzcyc6ICdyZXN1bHRzVGFibGUgdGFibGVz
b3J0ZXInfSwgW2VsZW1lbnQoJ2NhcHRpb24nLCBbYnVpbGRlck5hbWVdKV0pOwogICAgIHZhciBy
ZXN1bHRzQnlCdWlsZGVyID0gcmVzdWx0c1snYnVpbGRlcnMnXTsKQEAgLTM4Nyw3ICszNjMsNyBA
QCBUZXN0UmVzdWx0c1ZpZXcuX3BvcHVsYXRlQnVpbGRlclBhbmUgPSBmCiAgICAgdmFyIHNlbGYg
PSB0aGlzOwogICAgIGZvciAodmFyIHRlc3RJZCBpbiByZXN1bHRzQnlUZXN0cykgewogICAgICAg
ICB2YXIgcmVzdWx0cyA9IHJlc3VsdHNCeVRlc3RzW3Rlc3RJZF07Ci0gICAgICAgIGlmICghcmVz
dWx0cy5sZW5ndGggfHwgIXRoaXMuX21hdGNoZXNGYWlsdXJlVHlwZShyZXN1bHRzLCBmYWlsdXJl
VHlwZSwgdGhpcy5fYXZhaWxhYmxlVGVzdHNbdGVzdElkXS5uYW1lKSkKKyAgICAgICAgaWYgKCFy
ZXN1bHRzLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB0aGlzLl9jcmVh
dGVCdWlsZHNBbmRDb21wdXRlU2xvd25lc3NPZlJlc3VsdHMoYnVpbGRlcklkLCByZXN1bHRzQnlU
ZXN0c1t0ZXN0SWRdKTsKICAgICAgICAgdmFyIHRlc3QgPSB0aGlzLl9hdmFpbGFibGVUZXN0c1t0
ZXN0SWRdOwpAQCAtNDE2LDggKzM5MiwxMyBAQCBUZXN0UmVzdWx0c1ZpZXcuZmV0Y2hGYWlsaW5n
VGVzdHNGb3JCdWlsCiAKICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgdmFyIHhociA9IG5ldyBY
TUxIdHRwUmVxdWVzdCgpOwotICAgIHhoci5vcGVuKCJHRVQiLCAnYXBpL2ZhaWxpbmctdGVzdHMu
cGhwP2J1aWxkZXI9JyArIGVzY2FwZShidWlsZGVyTmFtZSkgKyAnJmRheXM9JyArIG51bWJlck9m
RGF5cywgdHJ1ZSk7ICAKKyAgICB2YXIgYnVpbGRlcklkID0gdGhpcy5fYnVpbGRlckJ5TmFtZVti
dWlsZGVyTmFtZV0uaWQ7CisgICAgeGhyLm9wZW4oJ0dFVCcsICdkYXRhLycgKyBidWlsZGVySWQg
KyAnLScgKyBmYWlsdXJlVHlwZSArICcuanNvbicsIHRydWUpOyAgCiAgICAgeGhyLm9ubG9hZCA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGlmICh4aHIuc3RhdHVzICE9IDIwMCkgeworICAg
ICAgICAgICAgc2VjdGlvbi5hcHBlbmRDaGlsZCh0ZXh0KCdGYWlsZWQgdG8gbG9hZCByZXN1bHRz
IGZvciAnICsgYnVpbGRlck5hbWUgKyAnOiAnICsgeGhyLnN0YXR1cykpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHZhciByZXNwb25zZSA9IEpTT04ucGFyc2UoeGhy
LnJlc3BvbnNlKTsKICAgICAgICAgc2VjdGlvbi5pbm5lckhUTUwgPSAnJzsKICAgICAgICAgaWYg
KHJlc3BvbnNlWydzdGF0dXMnXSAhPSAnT0snKSB7CkluZGV4OiBXZWJzaXRlcy90ZXN0LXJlc3Vs
dHMvYXBpL2ZhaWxpbmctdGVzdHMucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Rlc3QtcmVz
dWx0cy9hcGkvZmFpbGluZy10ZXN0cy5waHAJKHJldmlzaW9uIDE1Nzk4NCkKKysrIFdlYnNpdGVz
L3Rlc3QtcmVzdWx0cy9hcGkvZmFpbGluZy10ZXN0cy5waHAJKHdvcmtpbmcgY29weSkKQEAgLTMs
NDggKzMsMjQgQEAKIHJlcXVpcmVfb25jZSgnLi4vaW5jbHVkZS9qc29uLXNoYXJlZC5waHAnKTsK
IHJlcXVpcmVfb25jZSgnLi4vaW5jbHVkZS90ZXN0LXJlc3VsdHMucGhwJyk7CiAKLSRkYiA9IGNv
bm5lY3QoKTsKLQotcmVxdWlyZV9leGlzdGVuY2Vfb2YoJF9HRVQsIGFycmF5KCdidWlsZGVyJyA9
PiAnL15bQS1aYS16MC05IFwoXClcLV9dKyQvJykpOwotJGJ1aWxkZXJfbmFtZSA9ICRfR0VUWydi
dWlsZGVyJ107Ci0kbnVtYmVyX29mX2RheXMgPSBhcnJheV9nZXQoJF9HRVQsICdkYXlzJyk7Ci1p
ZiAoJG51bWJlcl9vZl9kYXlzKSB7Ci0gICAgcmVxdWlyZV9mb3JtYXQoJ251bWJlcl9vZl9kYXlz
JywgJG51bWJlcl9vZl9kYXlzLCAnL15bMC05XSskLycpOwotICAgICRudW1iZXJfb2ZfZGF5cyA9
IGludHZhbCgkbnVtYmVyX29mX2RheXMpOwotfSBlbHNlCi0gICAgJG51bWJlcl9vZl9kYXlzID0g
MzsKLQotJGJ1aWxkZXJfcm93ID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdidWlsZGVycycsIE5V
TEwsIGFycmF5KCduYW1lJyA9PiAkYnVpbGRlcl9uYW1lKSk7Ci1pZiAoISRidWlsZGVyX3JvdykK
LSAgICBleGl0X3dpdGhfZXJyb3IoJ0J1aWxkZXJOb3RGb3VuZCcpOwotJGJ1aWxkZXJfaWQgPSAk
YnVpbGRlcl9yb3dbJ2lkJ107Ci0KLSRhbGxfcmVzdWx0cyA9ICRkYi0+cXVlcnkoCi0iU0VMRUNU
IHJlc3VsdHMuKiwgYnVpbGRzLiosIGFycmF5X2FnZygoYnVpbGRfcmV2aXNpb25zLnJlcG9zaXRv
cnksIGJ1aWxkX3JldmlzaW9ucy52YWx1ZSwgYnVpbGRfcmV2aXNpb25zLnRpbWUpKSBBUyByZXZp
c2lvbnMKLSAgICBGUk9NIHJlc3VsdHMsIGJ1aWxkcywgYnVpbGRfcmV2aXNpb25zCi0gICAgV0hF
UkUgYnVpbGRfcmV2aXNpb25zLmJ1aWxkID0gYnVpbGRzLmlkIEFORCByZXN1bHRzLmJ1aWxkID0g
YnVpbGRzLmlkIEFORCBidWlsZHMuYnVpbGRlciA9ICQxCi0gICAgQU5EIGJ1aWxkcy5zdGFydF90
aW1lID4gbm93KCkgLSBpbnRlcnZhbCAnJG51bWJlcl9vZl9kYXlzIGRheXMnCi0gICAgR1JPVVAg
QlkgcmVzdWx0cy5pZCwgYnVpbGRzLmlkIE9SREVSIEJZIHJlc3VsdHMudGVzdCwgbWF4KGJ1aWxk
X3JldmlzaW9ucy50aW1lKSBERVNDIiwgYXJyYXkoJGJ1aWxkZXJfaWQpKTsKLQotaWYgKCEkYWxs
X3Jlc3VsdHMpCi0gICAgZXhpdF93aXRoX2Vycm9yKCdSZXN1bHRzTm90Rm91bmQnKTsKLQotLy8g
VG8gY29uc2VydmUgbWVtb3J5LCB3ZSBzZXJpYWxpemUgdGVzdHMgYXQgYSB0aW1lLgotZWNobyAi
e1wic3RhdHVzXCI6IFwiT0tcIiwgXCJidWlsZGVyc1wiOiB7XCIkYnVpbGRlcl9pZFwiOnsiOwot
JGN1cnJlbnRUZXN0ID0gTlVMTDsKLSRpID0gMDsKLXdoaWxlICgkcmVzdWx0ID0gJGRiLT5mZXRj
aF9uZXh0X3JvdygkYWxsX3Jlc3VsdHMpKSB7Ci0gICAgaWYgKCRyZXN1bHRbJ3Rlc3QnXSAhPSAk
Y3VycmVudFRlc3QpIHsKLSAgICAgICAgaWYgKCRjdXJyZW50VGVzdCkKLSAgICAgICAgICAgIGVj
aG8gJ10sJzsKLSAgICAgICAgJGN1cnJlbnRUZXN0ID0gJHJlc3VsdFsndGVzdCddOwotICAgICAg
ICBlY2hvICJcIiRjdXJyZW50VGVzdFwiOiBbIjsKLSAgICB9IGVsc2UKLSAgICAgICAgZWNobyAn
LCc7Ci0gICAgZWNobyBqc29uX2VuY29kZShmb3JtYXRfcmVzdWx0KCRyZXN1bHQpLCB0cnVlKTsK
K2Z1bmN0aW9uIG1haW4oKSB7CisgICAgcmVxdWlyZV9leGlzdGVuY2Vfb2YoJF9HRVQsIGFycmF5
KCdidWlsZGVyJyA9PiAnL15bQS1aYS16MC05IFwoXClcLV9dKyQvJykpOworICAgICRidWlsZGVy
X25hbWUgPSAkX0dFVFsnYnVpbGRlciddOworCisgICAgJGRiID0gY29ubmVjdCgpOworICAgICRi
dWlsZGVyX3JvdyA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygnYnVpbGRlcnMnLCBOVUxMLCBhcnJh
eSgnbmFtZScgPT4gJGJ1aWxkZXJfbmFtZSkpOworICAgIGlmICghJGJ1aWxkZXJfcm93KQorICAg
ICAgICBleGl0X3dpdGhfZXJyb3IoJ0J1aWxkZXJOb3RGb3VuZCcpOworICAgICRidWlsZGVyX2lk
ID0gJGJ1aWxkZXJfcm93WydpZCddOworCisgICAgJGdlbmVyYXRvciA9IG5ldyBSZXN1bHRzSlNP
TkdlbmVyYXRvcigkZGIsICRidWlsZGVyX2lkKTsKKworICAgIGlmICgkZ2VuZXJhdG9yLT5nZW5l
cmF0ZSgpKQorICAgICAgICBleGl0X3dpdGhfc3VjY2VzcygpOworICAgIGVsc2UKKyAgICAgICAg
ZXhpdF93aXRoX2Vycm9yKCdSZXN1bHRzTm90Rm91bmQnKTsKIH0KLWlmICgkY3VycmVudFRlc3Qp
Ci0gICAgZWNobyAnXSc7Ci1lY2hvICd9fX0nOworCittYWluKCk7CiAKID8+CkluZGV4OiBXZWJz
aXRlcy90ZXN0LXJlc3VsdHMvYXBpL3JlcG9ydC5waHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMv
dGVzdC1yZXN1bHRzL2FwaS9yZXBvcnQucGhwCShyZXZpc2lvbiAxNTc5ODQpCisrKyBXZWJzaXRl
cy90ZXN0LXJlc3VsdHMvYXBpL3JlcG9ydC5waHAJKHdvcmtpbmcgY29weSkKQEAgLTEzLDYgKzEz
LDkgQEAgcmVxdWlyZV9leGlzdGVuY2Vfb2YoJF9QT1NULCBhcnJheSgKICAgICAncmV2aXNpb25z
JyA9PiAnL14uKz8kLycsCiAgICAgJ3N0YXJ0X3RpbWUnID0+ICcvXlswLTldKyhcLlswLTldKyk/
JC8nLAogICAgICdlbmRfdGltZScgPT4gJy9eWzAtOV0rKFwuWzAtOV0rKT8kLycpKTsKKyRtYXN0
ZXIgPSAkX1BPU1RbJ21hc3RlciddOworJGJ1aWxkZXJfbmFtZSA9ICRfUE9TVFsnYnVpbGRlcl9u
YW1lJ107CiskYnVpbGRfbnVtYmVyID0gaW50dmFsKCRfUE9TVFsnYnVpbGRfbnVtYmVyJ10pOwog
CiBpZiAoIWFycmF5X2tleV9leGlzdHMoJ2ZpbGUnLCAkX0ZJTEVTKSBvciAhYXJyYXlfa2V5X2V4
aXN0cygndG1wX25hbWUnLCAkX0ZJTEVTWydmaWxlJ10pIG9yIGNvdW50KCRfRklMRVNbJ2ZpbGUn
XVsndG1wX25hbWUnXSkgPD0gMCkKICAgICBleGl0X3dpdGhfZXJyb3IoJ1Jlc3VsdHNKU09OTm90
SW5jbHVkZWQnKTsKQEAgLTMzLDkgKzM2LDEzIEBAIGlmICghJHRlc3RfcmVzdWx0cykKICRzdGFy
dF90aW1lID0gZmxvYXRfdG9fdGltZSgkX1BPU1RbJ3N0YXJ0X3RpbWUnXSk7CiAkZW5kX3RpbWUg
PSBmbG9hdF90b190aW1lKCRfUE9TVFsnZW5kX3RpbWUnXSk7CiAKLSRidWlsZF9pZCA9IGFkZF9i
dWlsZCgkZGIsICRfUE9TVFsnbWFzdGVyJ10sICRfUE9TVFsnYnVpbGRlcl9uYW1lJ10sIGludHZh
bCgkX1BPU1RbJ2J1aWxkX251bWJlciddKSk7CiskYnVpbGRlcl9pZCA9IGFkZF9idWlsZGVyKCRk
YiwgJG1hc3RlciwgJGJ1aWxkZXJfbmFtZSk7CitpZiAoISRidWlsZGVyX2lkKQorICAgIGV4aXRf
d2l0aF9lcnJvcignRmFpbGVkVG9JbnNlcnRCdWlsZGVyJywgYXJyYXkoJ21hc3RlcicgPT4gJG1h
c3RlciwgJ2J1aWxkZXJOYW1lJyA9PiAkYnVpbGRlcl9uYW1lKSk7CisKKyRidWlsZF9pZCA9IGFk
ZF9idWlsZCgkZGIsICRidWlsZGVyX2lkLCAkYnVpbGRfbnVtYmVyKTsKIGlmICghJGJ1aWxkX2lk
KQotICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9JbnNlcnRCdWlsZCcsIGFycmF5KCdtYXN0
ZXInID0+ICRfUE9TVFsnbWFzdGVyJ10sICdidWlsZGVyTmFtZScgPT4gJF9QT1NUWydidWlsZGVy
X25hbWUnXSwgJ2J1aWxkTnVtYmVyJyA9PiAkX1BPU1RbJ2J1aWxkX251bWJlciddKSk7CisgICAg
ZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0luc2VydEJ1aWxkJywgYXJyYXkoJ2J1aWxkZXJJZCcg
PT4gJGJ1aWxkZXJfaWQsICdidWlsZE51bWJlcicgPT4gJGJ1aWxkX251bWJlcikpOwogCiBmb3Jl
YWNoICgkcmV2aXNpb25zIGFzICRyZXBvc2l0b3J5X25hbWUgPT4gJHJldmlzaW9uX2RhdGEpIHsK
ICAgICAkcmVwb3NpdG9yeV9pZCA9ICRkYi0+c2VsZWN0X29yX2luc2VydF9yb3coJ3JlcG9zaXRv
cmllcycsIE5VTEwsIGFycmF5KCduYW1lJyA9PiAkcmVwb3NpdG9yeV9uYW1lKSk7CkBAIC01NSw2
ICs2MiwxNCBAQCAkc2xhdmVfaWQgPSBhZGRfc2xhdmUoJGRiLCAkX1BPU1RbJ2J1aWxkCiBpZiAo
IXN0b3JlX3Rlc3RfcmVzdWx0cygkZGIsICR0ZXN0X3Jlc3VsdHMsICRidWlsZF9pZCwgJHN0YXJ0
X3RpbWUsICRlbmRfdGltZSwgJHNsYXZlX2lkKSkKICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxl
ZFRvU3RvcmVSZXN1bHRzJywgYXJyYXkoJ2J1aWxkSWQnID0+ICRidWlsZF9pZCkpOwogCi1leGl0
X3dpdGhfc3VjY2VzcygpOworZWNob19zdWNjZXNzKCk7CisKK29iX2VuZF9mbHVzaCgpOworZmx1
c2goKTsKK2lmIChmdW5jdGlvbl9leGlzdHMoJ2Zhc3RjZ2lfZmluaXNoX3JlcXVlc3QnKSkKKyAg
ICBmYXN0Y2dpX2ZpbmlzaF9yZXF1ZXN0KCk7CisKKyRnZW5lcmF0b3IgPSBuZXcgUmVzdWx0c0pT
T05HZW5lcmF0b3IoJGRiLCAkYnVpbGRlcl9pZCk7CiskZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwog
CiA/PgpJbmRleDogV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2FwaS9yZXN1bHRzLnBocAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvYXBpL3Jlc3VsdHMucGhwCShyZXZpc2lvbiAx
NTc5ODQpCisrKyBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvYXBpL3Jlc3VsdHMucGhwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOSw2ICsxOSwxMCBAQCAkcmVzdWx0X3Jvd3MgPSAkZGItPnF1ZXJ5X2FuZF9m
ZXRjaF9hbGwoCiBpZiAoISRyZXN1bHRfcm93cykKICAgICBleGl0X3dpdGhfZXJyb3IoJ1Jlc3Vs
dHNOb3RGb3VuZCcpOwogCi1leGl0X3dpdGhfc3VjY2Vzcyhmb3JtYXRfcmVzdWx0X3Jvd3MoJHJl
c3VsdF9yb3dzKSk7CiskYnVpbGRlcnMgPSBhcnJheSgpOworZm9yZWFjaCAoJHJlc3VsdF9yb3dz
IGFzICRyZXN1bHQpCisgICAgYXJyYXlfcHVzaChhcnJheV9lbnN1cmVfaXRlbV9oYXNfYXJyYXko
JGJ1aWxkZXJzLCAkcmVzdWx0WydidWlsZGVyJ10pLCBmb3JtYXRfcmVzdWx0KCRyZXN1bHQpKTsK
KworZXhpdF93aXRoX3N1Y2Nlc3MoYXJyYXkoJ2J1aWxkZXJzJyA9PiAkYnVpbGRlcnMpKTsKIAog
Pz4KSW5kZXg6IFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9pbmNsdWRlL2NvbmZpZy5qc29uCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9pbmNsdWRlL2NvbmZpZy5qc29uCShyZXZp
c2lvbiAxNTc5ODQpCisrKyBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvaW5jbHVkZS9jb25maWcuanNv
bgkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIHsKICAgICAiZGVidWciOiB0cnVlLAog
ICAgICJqc29uQ2FjaGVNYXhBZ2UiOiA2MDAsCisgICAgImRhdGFEaXJlY3RvcnkiOiAiLi4vZGF0
YSIsCiAgICAgImRhdGFiYXNlIjogewogICAgICAgICAiaG9zdCI6ICJsb2NhbGhvc3QiLAogICAg
ICAgICAicG9ydCI6ICI1NDMyIiwKSW5kZXg6IFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9pbmNsdWRl
L2RiLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvaW5jbHVkZS9kYi5w
aHAJKHJldmlzaW9uIDE1Nzk4NCkKKysrIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9pbmNsdWRlL2Ri
LnBocAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTUgQEAgZnVuY3Rpb24gY29uZmlnKCRr
ZXkpIHsKICAgICByZXR1cm4gJF9jb25maWdbJGtleV07CiB9CiAKK2Z1bmN0aW9uIGNvbmZpZ1Bh
dGgoJGtleSwgJGFkZGl0aW9uYWxfcGF0aCA9ICcnKSB7CisgICAgJHJlbGF0aXZlX3BhdGggPSBj
b25maWcoJGtleSk7CisgICAgaWYgKCEkcmVsYXRpdmVfcGF0aCkKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgaWYgKCRhZGRpdGlvbmFsX3BhdGgpCisgICAgICAgICRhZGRpdGlvbmFsX3BhdGgg
PSAnLycgLiAkYWRkaXRpb25hbF9wYXRoOworICAgIHJldHVybiByZWFscGF0aChkaXJuYW1lKF9f
RklMRV9fKSAuICIvJHJlbGF0aXZlX3BhdGgiKSAuICRhZGRpdGlvbmFsX3BhdGg7Cit9CisKIGlm
IChjb25maWcoJ2RlYnVnJykpCiAgICAgaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAnT24nKTsK
IApJbmRleDogV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luY2x1ZGUvanNvbi1zaGFyZWQucGhwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9pbmNsdWRlL2pzb24tc2hhcmVkLnBo
cAkocmV2aXNpb24gMTU3OTg0KQorKysgV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luY2x1ZGUvanNv
bi1zaGFyZWQucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw5ICsxMywxMyBAQCBmdW5jdGlvbiBl
eGl0X3dpdGhfZXJyb3IoJHN0YXR1cywgJGRldGFpCiAgICAgZXhpdCgxKTsKIH0KIAotZnVuY3Rp
b24gZXhpdF93aXRoX3N1Y2Nlc3MoJGRldGFpbHMgPSBhcnJheSgpKSB7CitmdW5jdGlvbiBlY2hv
X3N1Y2Nlc3MoJGRldGFpbHMgPSBhcnJheSgpKSB7CiAgICAgJGRldGFpbHNbJ3N0YXR1cyddID0g
J09LJzsKICAgICBlY2hvIGpzb25fZW5jb2RlKCRkZXRhaWxzKTsKK30KKworZnVuY3Rpb24gZXhp
dF93aXRoX3N1Y2Nlc3MoJGRldGFpbHMgPSBhcnJheSgpKSB7CisgICAgZWNob19zdWNjZXNzKCRk
ZXRhaWxzKTsKICAgICBleGl0KDApOwogfQogCkluZGV4OiBXZWJzaXRlcy90ZXN0LXJlc3VsdHMv
aW5jbHVkZS90ZXN0LXJlc3VsdHMucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Rlc3QtcmVz
dWx0cy9pbmNsdWRlL3Rlc3QtcmVzdWx0cy5waHAJKHJldmlzaW9uIDE1Nzk4NCkKKysrIFdlYnNp
dGVzL3Rlc3QtcmVzdWx0cy9pbmNsdWRlL3Rlc3QtcmVzdWx0cy5waHAJKHdvcmtpbmcgY29weSkK
QEAgLTgsMTQgKzgsMTQgQEAgZnVuY3Rpb24gZmxvYXRfdG9fdGltZSgkdGltZV9pbl9mbG9hdCkg
ewogICAgIHJldHVybiAkdGltZTsKIH0KIAotZnVuY3Rpb24gYWRkX2J1aWxkKCRkYiwgJG1hc3Rl
ciwgJGJ1aWxkZXJfbmFtZSwgJGJ1aWxkX251bWJlcikgeworZnVuY3Rpb24gYWRkX2J1aWxkZXIo
JGRiLCAkbWFzdGVyLCAkYnVpbGRlcl9uYW1lKSB7CiAgICAgaWYgKCFpbl9hcnJheSgkbWFzdGVy
LCBjb25maWcoJ21hc3RlcnMnKSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgJGJ1aWxk
ZXJfaWQgPSAkZGItPnNlbGVjdF9vcl9pbnNlcnRfcm93KCdidWlsZGVycycsIE5VTEwsIGFycmF5
KCdtYXN0ZXInID0+ICRtYXN0ZXIsICduYW1lJyA9PiAkYnVpbGRlcl9uYW1lKSk7Ci0gICAgaWYg
KCEkYnVpbGRlcl9pZCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuICRkYi0+c2Vs
ZWN0X29yX2luc2VydF9yb3coJ2J1aWxkZXJzJywgTlVMTCwgYXJyYXkoJ21hc3RlcicgPT4gJG1h
c3RlciwgJ25hbWUnID0+ICRidWlsZGVyX25hbWUpKTsKK30KIAorZnVuY3Rpb24gYWRkX2J1aWxk
KCRkYiwgJGJ1aWxkZXJfaWQsICRidWlsZF9udW1iZXIpIHsKICAgICByZXR1cm4gJGRiLT5zZWxl
Y3Rfb3JfaW5zZXJ0X3JvdygnYnVpbGRzJywgTlVMTCwgYXJyYXkoJ2J1aWxkZXInID0+ICRidWls
ZGVyX2lkLCAnbnVtYmVyJyA9PiAkYnVpbGRfbnVtYmVyKSk7CiB9CiAKQEAgLTEwNSwxMyArMTA1
LDE2NSBAQCBmdW5jdGlvbiBmb3JtYXRfcmVzdWx0KCRyZXN1bHQpIHsKICAgICAgICAgJ21vZGlm
aWVycycgPT4gJHJlc3VsdFsnbW9kaWZpZXJzJ10pOwogfQogCi1mdW5jdGlvbiBmb3JtYXRfcmVz
dWx0X3Jvd3MoJHJlc3VsdF9yb3dzKSB7Ci0gICAgJGJ1aWxkZXJzID0gYXJyYXkoKTsKLSAgICBm
b3JlYWNoICgkcmVzdWx0X3Jvd3MgYXMgJHJlc3VsdCkgewotICAgICAgICBhcnJheV9wdXNoKGFy
cmF5X2Vuc3VyZV9pdGVtX2hhc19hcnJheShhcnJheV9lbnN1cmVfaXRlbV9oYXNfYXJyYXkoJGJ1
aWxkZXJzLCAkcmVzdWx0WydidWlsZGVyJ10pLCAkcmVzdWx0Wyd0ZXN0J10pLAotICAgICAgICAg
ICAgZm9ybWF0X3Jlc3VsdCgkcmVzdWx0KSk7CithYnN0cmFjdCBjbGFzcyBSZXN1bHRzSlNPTldy
aXRlciB7CisgICAgcHJpdmF0ZSAkZnA7CisgICAgcHJpdmF0ZSAkZW1pdHRlZF9yZXN1bHRzOwor
CisgICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRmcCkgeworICAgICAgICAkdGhpcy0+
ZnAgPSAkZnA7CisgICAgICAgICR0aGlzLT5lbWl0dGVkX3Jlc3VsdHMgPSBGQUxTRTsKKyAgICB9
CisKKyAgICBwdWJsaWMgZnVuY3Rpb24gc3RhcnQoJGJ1aWxkZXJfaWQpIHsKKyAgICAgICAgZndy
aXRlKCR0aGlzLT5mcCwgIntcInN0YXR1c1wiOiBcIk9LXCIsIFwiYnVpbGRlcnNcIjoge1wiJGJ1
aWxkZXJfaWRcIjp7Iik7CisgICAgfQorCisgICAgcHVibGljIGZ1bmN0aW9uIGVuZCgkdG90YWxf
dGltZSkgeworICAgICAgICBmd3JpdGUoJHRoaXMtPmZwLCAifX0sIFwidG90YWxHZW5lcmF0aW9u
VGltZVwiOiAkdG90YWxfdGltZX0iKTsKKyAgICB9CisKKyAgICBwdWJsaWMgZnVuY3Rpb24gYWRk
X3Jlc3VsdHNfZm9yX3Rlc3RfaWZfbWF0Y2hlcygkY3VycmVudF90ZXN0LCAkY3VycmVudF9yZXN1
bHRzKSB7CisgICAgICAgIGlmICghY291bnQoJGN1cnJlbnRfcmVzdWx0cykgfHwgJHRoaXMtPnBh
c3NfZm9yX2ZhaWx1cmVfdHlwZSgkY3VycmVudF9yZXN1bHRzKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgLy8gRklYTUU6IFdoeSBkbyB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBjb3VudD8K
KworICAgICAgICAkcHJlZml4ID0gJHRoaXMtPmVtaXR0ZWRfcmVzdWx0cyA/ICIsXG4iIDogIiI7
CisgICAgICAgIGZ3cml0ZSgkdGhpcy0+ZnAsICIkcHJlZml4XCIkY3VycmVudF90ZXN0XCI6Iik7
CisgICAgICAgIGZ3cml0ZSgkdGhpcy0+ZnAsIGpzb25fZW5jb2RlKCRjdXJyZW50X3Jlc3VsdHMs
IHRydWUpKTsKKworICAgICAgICAkdGhpcy0+ZW1pdHRlZF9yZXN1bHRzID0gVFJVRTsKKyAgICB9
CisKKyAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gcGFzc19mb3JfZmFpbHVyZV90eXBl
KCYkcmVzdWx0cyk7Cit9CisKK2NsYXNzIEZhaWxpbmdSZXN1bHRzSlNPTldyaXRlciBleHRlbmRz
IFJlc3VsdHNKU09OV3JpdGVyIHsKKyAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGZw
KSB7IHBhcmVudDo6X19jb25zdHJ1Y3QoJGZwKTsgfQorICAgIHByb3RlY3RlZCBmdW5jdGlvbiBw
YXNzX2Zvcl9mYWlsdXJlX3R5cGUoJiRyZXN1bHRzKSB7CisgICAgICAgIHJldHVybiAkcmVzdWx0
c1swXVsnYWN0dWFsJ10gPT0gJ1BBU1MnOworICAgIH0KK30KKworY2xhc3MgRmxha3lSZXN1bHRz
SlNPTldyaXRlciBleHRlbmRzIFJlc3VsdHNKU09OV3JpdGVyIHsKKyAgICBwdWJsaWMgZnVuY3Rp
b24gX19jb25zdHJ1Y3QoJGZwKSB7IHBhcmVudDo6X19jb25zdHJ1Y3QoJGZwKTsgfQorICAgIHBy
b3RlY3RlZCBmdW5jdGlvbiBwYXNzX2Zvcl9mYWlsdXJlX3R5cGUoJiRyZXN1bHRzKSB7CisgICAg
ICAgICRsYXN0X2luZGV4ID0gY291bnQoJHJlc3VsdHMpIC0gMTsKKyAgICAgICAgZm9yICgkaSA9
IDE7ICRpIDwgJGxhc3RfaW5kZXg7ICRpKyspIHsKKyAgICAgICAgICAgICRwcmV2aW91c19hY3R1
YWwgPSAkcmVzdWx0c1skaSAtIDFdWydhY3R1YWwnXTsKKyAgICAgICAgICAgICRuZXh0X2FjdHVh
bCA9ICRyZXN1bHRzWyRpICsgMV1bJ2FjdHVhbCddOworICAgICAgICAgICAgaWYgKCRwcmV2aW91
c19hY3R1YWwgPT0gJG5leHRfYWN0dWFsICYmICRyZXN1bHRzWyRpXVsnYWN0dWFsJ10gIT0gJHBy
ZXZpb3VzX2FjdHVhbCkgeworICAgICAgICAgICAgICAgICRyZXN1bHRzWyRpXVsnb25lT2ZmQ2hh
bmdlJ10gPSBUUlVFOworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9Cit9CisKK2NsYXNzIFdy
b25nRXhwZWN0YXRpb25zUmVzdWx0c0pTT05Xcml0ZXIgZXh0ZW5kcyBSZXN1bHRzSlNPTldyaXRl
ciB7CisgICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRmcCkgeyBwYXJlbnQ6Ol9fY29u
c3RydWN0KCRmcCk7IH0KKyAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcGFzc19mb3JfZmFpbHVyZV90
eXBlKCYkcmVzdWx0cykgeworICAgICAgICAkbGF0ZXN0X2V4cGVjdGVkX3Jlc3VsdCA9ICRyZXN1
bHRzWzBdWydleHBlY3RlZCddOworICAgICAgICAkbGF0ZXN0X2FjdHVhbF9yZXN1bHQgPSAkcmVz
dWx0c1swXVsnYWN0dWFsJ107CisKKyAgICAgICAgaWYgKCRsYXRlc3RfZXhwZWN0ZWRfcmVzdWx0
ID09ICRsYXRlc3RfYWN0dWFsX3Jlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworCisg
ICAgICAgICR0b2tlbnMgPSBleHBsb2RlKCcgJywgJGxhdGVzdF9leHBlY3RlZF9yZXN1bHQpOwor
ICAgICAgICByZXR1cm4gYXJyYXlfc2VhcmNoKCRsYXRlc3RfYWN0dWFsX3Jlc3VsdCwgJHRva2Vu
cykgIT09IEZBTFNFCisgICAgICAgICAgICB8fCAoKCRsYXRlc3RfYWN0dWFsX3Jlc3VsdCA9PSAn
VEVYVCcgfHwgJGxhdGVzdF9hY3R1YWxfcmVzdWx0ID09ICdURVhUK0lNQUdFJykgJiYgYXJyYXlf
c2VhcmNoKCdGQUlMJywgJHRva2VucykgIT09IEZBTFNFKTsKKyAgICB9Cit9CisKK2NsYXNzIFJl
c3VsdHNKU09OR2VuZXJhdG9yIHsKKyAgICBwcml2YXRlICRkYjsKKyAgICBwcml2YXRlICRidWls
ZGVyX2lkOworCisgICAgY29uc3QgTUFYSU1VTV9OVU1CRVJfT0ZfREFZUyA9IDMwOworCisgICAg
cHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRkYiwgJGJ1aWxkZXJfaWQpCisgICAgeworICAg
ICAgICAkdGhpcy0+ZGIgPSAkZGI7CisgICAgICAgICR0aGlzLT5idWlsZGVyX2lkID0gJGJ1aWxk
ZXJfaWQ7CisgICAgfQorCisgICAgcHVibGljIGZ1bmN0aW9uIGdlbmVyYXRlKCkKKyAgICB7Cisg
ICAgICAgICRzdGFydF90aW1lID0gbWljcm90aW1lKHRydWUpOworCisgICAgICAgIGlmICghJHRo
aXMtPmJ1aWxkZXJfaWQpCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgJG51
bWJlcl9vZl9kYXlzID0gc2VsZjo6TUFYSU1VTV9OVU1CRVJfT0ZfREFZUzsKKyAgICAgICAgJGFs
bF9yZXN1bHRzID0gJHRoaXMtPmRiLT5xdWVyeSgKKyAgICAgICAgIlNFTEVDVCByZXN1bHRzLios
IGJ1aWxkcy4qIEZST00gcmVzdWx0cworICAgICAgICAgICAgSk9JTiAoU0VMRUNUIGJ1aWxkcy4q
LCBhcnJheV9hZ2coKGJ1aWxkX3JldmlzaW9ucy5yZXBvc2l0b3J5LCBidWlsZF9yZXZpc2lvbnMu
dmFsdWUsIGJ1aWxkX3JldmlzaW9ucy50aW1lKSkgQVMgcmV2aXNpb25zCisgICAgICAgICAgICAg
ICAgICAgIEZST00gYnVpbGRzLCBidWlsZF9yZXZpc2lvbnMKKyAgICAgICAgICAgICAgICAgICAg
V0hFUkUgYnVpbGRfcmV2aXNpb25zLmJ1aWxkID0gYnVpbGRzLmlkIEFORCBidWlsZHMuYnVpbGRl
ciA9ICQxIEFORCBidWlsZHMuc3RhcnRfdGltZSA+IG5vdygpIC0gaW50ZXJ2YWwgJyRudW1iZXJf
b2ZfZGF5cyBkYXlzJworICAgICAgICAgICAgICAgICAgICBHUk9VUCBCWSBidWlsZHMuaWQKKyAg
ICAgICAgICAgICAgICAgICAgT1JERVIgQlkgbWF4KGJ1aWxkX3JldmlzaW9ucy50aW1lKSBERVND
KSBhcyBidWlsZHMgT04gcmVzdWx0cy5idWlsZCA9IGJ1aWxkcy5pZAorICAgICAgICAgICAgT1JE
RVIgQlkgcmVzdWx0cy50ZXN0IiwgYXJyYXkoJHRoaXMtPmJ1aWxkZXJfaWQpKTsKKyAgICAgICAg
aWYgKCEkYWxsX3Jlc3VsdHMpCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAgICAg
JGZhaWxpbmdfanNvbl9mcCA9ICR0aGlzLT5vcGVuX2pzb25fZm9yX2ZhaWx1cmVfdHlwZSgnZmFp
bGluZycpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgJGZsYWt5X2pzb25fZnAgPSAkdGhp
cy0+b3Blbl9qc29uX2Zvcl9mYWlsdXJlX3R5cGUoJ2ZsYWt5Jyk7CisgICAgICAgICAgICB0cnkg
eworICAgICAgICAgICAgICAgICR3cm9uZ2V4cGVjdGF0aW9uc19qc29uX2ZwID0gJHRoaXMtPm9w
ZW5fanNvbl9mb3JfZmFpbHVyZV90eXBlKCd3cm9uZ2V4cGVjdGF0aW9ucycpOworICAgICAgICAg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d3JpdGVfanNv
bnMoJGFsbF9yZXN1bHRzLCBhcnJheSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGYWls
aW5nUmVzdWx0c0pTT05Xcml0ZXIoJGZhaWxpbmdfanNvbl9mcCksCisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcgRmxha3lSZXN1bHRzSlNPTldyaXRlcigkZmxha3lfanNvbl9mcCksCisgICAg
ICAgICAgICAgICAgICAgICAgICBuZXcgV3JvbmdFeHBlY3RhdGlvbnNSZXN1bHRzSlNPTldyaXRl
cigkd3JvbmdleHBlY3RhdGlvbnNfanNvbl9mcCkpLCAkc3RhcnRfdGltZSk7CisgICAgICAgICAg
ICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAg
ICAgZmNsb3NlKCR3cm9uZ2V4cGVjdGF0aW9uc19qc29uX2ZwKTsKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgJGV4Y2VwdGlvbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNh
dGNoIChFeGNlcHRpb24gJGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgIGZjbG9zZSgkZmxh
a3lfanNvbl9mcCk7CisgICAgICAgICAgICAgICAgdGhyb3cgJGV4Y2VwdGlvbjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRleGNlcHRpb24pIHsKKyAgICAgICAg
ICAgIGZjbG9zZSgkZmFpbGluZ19qc29uX2ZwKTsKKyAgICAgICAgICAgIHRocm93ICRleGNlcHRp
b247CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHByaXZh
dGUgZnVuY3Rpb24gb3Blbl9qc29uX2Zvcl9mYWlsdXJlX3R5cGUoJGZhaWx1cmVfdHlwZSkgewor
ICAgICAgICAkZmFpbGluZ19qc29uX3BhdGggPSBjb25maWdQYXRoKCdkYXRhRGlyZWN0b3J5Jywg
JHRoaXMtPmJ1aWxkZXJfaWQgLiAiLSRmYWlsdXJlX3R5cGUuanNvbiIpOworICAgICAgICBpZiAo
ISRmYWlsaW5nX2pzb25fcGF0aCkKKyAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVk
VG9EZXRlcm1pbmVSZXN1bHRzSlNPTlBhdGgnLCBhcnJheSgnYnVpbGRlcklkJyA9PiAkdGhpcy0+
YnVpbGRlcl9pZCwgJ2ZhaWx1cmVUeXBlJyA9PiAkZmFpbHVyZV90eXBlKSk7CisgICAgICAgICRm
cCA9IGZvcGVuKCRmYWlsaW5nX2pzb25fcGF0aCwgJ3cnKTsKKyAgICAgICAgaWYgKCEkZnApCisg
ICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvT3BlblJlc3VsdHNKU09OJywgYXJy
YXkoJ2J1aWxkZXJJZCcgPT4gJHRoaXMtPmJ1aWxkZXJfaWQsICdmYWlsdXJlVHlwZScgPT4gJGZh
aWx1cmVfdHlwZSkpOworICAgICAgICByZXR1cm4gJGZwOworICAgIH0KKworICAgIHByaXZhdGUg
ZnVuY3Rpb24gd3JpdGVfanNvbnMoJGFsbF9yZXN1bHRzLCAkd3JpdGVycywgJHN0YXJ0X3RpbWUp
IHsKKyAgICAgICAgZm9yZWFjaCAoJHdyaXRlcnMgYXMgJHdyaXRlcikKKyAgICAgICAgICAgICR3
cml0ZXItPnN0YXJ0KCR0aGlzLT5idWlsZGVyX2lkKTsKKyAgICAgICAgJGN1cnJlbnRfdGVzdCA9
IE5VTEw7CisgICAgICAgICRjdXJyZW50X3Jlc3VsdHMgPSBhcnJheSgpOworICAgICAgICB3aGls
ZSAoJHJlc3VsdCA9ICR0aGlzLT5kYi0+ZmV0Y2hfbmV4dF9yb3coJGFsbF9yZXN1bHRzKSkgewor
ICAgICAgICAgICAgaWYgKCRyZXN1bHRbJ3Rlc3QnXSAhPSAkY3VycmVudF90ZXN0KSB7CisgICAg
ICAgICAgICAgICAgaWYgKCRjdXJyZW50X3Rlc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9y
ZWFjaCAoJHdyaXRlcnMgYXMgJHdyaXRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICR3cml0
ZXItPmFkZF9yZXN1bHRzX2Zvcl90ZXN0X2lmX21hdGNoZXMoJGN1cnJlbnRfdGVzdCwgJGN1cnJl
bnRfcmVzdWx0cyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICRjdXJyZW50
X3Jlc3VsdHMgPSBhcnJheSgpOworICAgICAgICAgICAgICAgICRjdXJyZW50X3Rlc3QgPSAkcmVz
dWx0Wyd0ZXN0J107CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhcnJheV9wdXNoKCRjdXJy
ZW50X3Jlc3VsdHMsIGZvcm1hdF9yZXN1bHQoJHJlc3VsdCkpOworICAgICAgICB9CisKKyAgICAg
ICAgJHRvdGFsX3RpbWUgPSBtaWNyb3RpbWUodHJ1ZSkgLSAkc3RhcnRfdGltZTsKKyAgICAgICAg
Zm9yZWFjaCAoJHdyaXRlcnMgYXMgJHdyaXRlcikKKyAgICAgICAgICAgICR3cml0ZXItPmVuZCgk
dG90YWxfdGltZSk7CisKKyAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQotICAgIHJldHVybiBh
cnJheSgnYnVpbGRlcnMnID0+ICRidWlsZGVycyk7CiB9CiAKID8+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215137</attachid>
            <date>2013-10-24 19:38:28 -0700</date>
            <delta_ts>2013-10-24 19:38:57 -0700</delta_ts>
            <desc>Another attempt</desc>
            <filename>bug-123311-20131024193827.patch</filename>
            <type>text/plain</type>
            <size>25428</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbWFuYWdlci5weQkocmV2aXNpb24gMTU3NjY4KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjI4LDcgKzIyOCw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAg
ICAgc3VtbWFyaXplZF9yZXN1bHRzID0gdGVzdF9ydW5fcmVzdWx0cy5zdW1tYXJpemVfcmVzdWx0
cyhzZWxmLl9wb3J0LCBzZWxmLl9leHBlY3RhdGlvbnMsIGluaXRpYWxfcmVzdWx0cywgcmV0cnlf
cmVzdWx0cywgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSkKICAgICAgICAgcmVzdWx0c19p
bmNsdWRpbmdfcGFzc2VzID0gTm9uZQogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJlc3VsdHNf
c2VydmVyX2hvc3Q6Ci0gICAgICAgICAgICByZXN1bHRzX2luY2x1ZGluZ19wYXNzZXMgPSB0ZXN0
X3J1bl9yZXN1bHRzLnN1bW1hcml6ZV9yZXN1bHRzKHNlbGYuX3BvcnQsIHNlbGYuX2V4cGVjdGF0
aW9ucywgaW5pdGlhbF9yZXN1bHRzLCByZXRyeV9yZXN1bHRzLCBlbmFibGVkX3BpeGVsX3Rlc3Rz
X2luX3JldHJ5LCBpbmNsdWRlX3Bhc3Nlcz1UcnVlKQorICAgICAgICAgICAgcmVzdWx0c19pbmNs
dWRpbmdfcGFzc2VzID0gdGVzdF9ydW5fcmVzdWx0cy5zdW1tYXJpemVfcmVzdWx0cyhzZWxmLl9w
b3J0LCBzZWxmLl9leHBlY3RhdGlvbnMsIGluaXRpYWxfcmVzdWx0cywgcmV0cnlfcmVzdWx0cywg
ZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSwgaW5jbHVkZV9wYXNzZXM9VHJ1ZSwgaW5jbHVk
ZV90aW1lX2FuZF9tb2RpZmllcnM9VHJ1ZSkKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9y
ZXN1bHRzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwgaW5pdGlhbF9yZXN1bHRzLCBzdW1tYXJpemVk
X3Jlc3VsdHMpCiAKICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1
bHRzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5CShyZXZpc2lvbiAxNTc2NjgpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVzdWx0cy5weQko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIGRlZiBfaW50ZXJwcmV0X3Rlc3RfZmFp
bHVyZXMoZmFpbHVyZXMpOgogICAgIHJldHVybiB0ZXN0X2RpY3QKIAogCi1kZWYgc3VtbWFyaXpl
X3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywgaW5pdGlhbF9yZXN1bHRzLCByZXRyeV9y
ZXN1bHRzLCBlbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5LCBpbmNsdWRlX3Bhc3Nlcz1GYWxz
ZSk6CitkZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywgaW5pdGlh
bF9yZXN1bHRzLCByZXRyeV9yZXN1bHRzLCBlbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5LCBp
bmNsdWRlX3Bhc3Nlcz1GYWxzZSwgaW5jbHVkZV90aW1lX2FuZF9tb2RpZmllcnM9RmFsc2UpOgog
ICAgICIiIlJldHVybnMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYSBzdW1tYXJ5IG9mIHRoZSB0
ZXN0IHJ1bnMsIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZHM6CiAgICAgICAgICd2ZXJzaW9uJzog
YSB2ZXJzaW9uIGluZGljYXRvcgogICAgICAgICAnZml4YWJsZSc6IFRoZSBudW1iZXIgb2YgZml4
YWJsZSB0ZXN0cyAoTk9XIC0gUEFTUykKQEAgLTIwMSw2ICsyMDEsMTAgQEAgZGVmIHN1bW1hcml6
ZV9yZXN1bHRzKHBvcnRfb2JqLCBleHBlY3RhdAogCiAgICAgICAgIHRlc3RfZGljdFsnZXhwZWN0
ZWQnXSA9IGV4cGVjdGVkCiAgICAgICAgIHRlc3RfZGljdFsnYWN0dWFsJ10gPSAiICIuam9pbihh
Y3R1YWwpCisgICAgICAgIGlmIGluY2x1ZGVfdGltZV9hbmRfbW9kaWZpZXJzOgorICAgICAgICAg
ICAgdGVzdF9kaWN0Wyd0aW1lJ10gPSByb3VuZCgxMDAwICogcmVzdWx0LnRlc3RfcnVuX3RpbWUp
CisgICAgICAgICAgICAjIEZJWE1FOiBGaXggZ2V0X21vZGlmaWVycyB0byByZXR1cm4gbW9kaWZp
ZXJzIGluIG5ldyBmb3JtYXQuCisgICAgICAgICAgICB0ZXN0X2RpY3RbJ21vZGlmaWVycyddID0g
JyAnLmpvaW4oZXhwZWN0YXRpb25zLmdldF9tb2RpZmllcnModGVzdF9uYW1lKSkucmVwbGFjZSgn
QlVHV0snLCAnd2Via2l0Lm9yZy9iLycpCiAKICAgICAgICAgdGVzdF9kaWN0LnVwZGF0ZShfaW50
ZXJwcmV0X3Rlc3RfZmFpbHVyZXMocmVzdWx0LmZhaWx1cmVzKSkKIApJbmRleDogV2Vic2l0ZXMv
dGVzdC1yZXN1bHRzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy90ZXN0LXJlc3Vs
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTc5ODUpCisrKyBXZWJzaXRlcy90ZXN0LXJlc3VsdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTMtMTAtMjQgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2hvd2luZyBsaXN0cyBv
ZiBmbGFreSB0ZXN0cyBmb3IgYSBidWlsZGVyIHRha2VzIHRvbyBsb25nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMzMTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW5lcmF0ZSBKU09OcyBmb3IgdGVz
dHMgZmFpbGluZywgZmxha3ksIG9yIHdpdGggd3JvbmcgZXhwZWN0YXRpb24gYXQgdGhlIHRpbWUg
YSBidWlsZGVyIHJlcG9ydHMgcmVzdWx0cworICAgICAgICBpbnN0ZWFkIHdoZW4gdGhlIGZyb250
ZW5kIHJlcXVlc3RzIHRvIHRob3NlIHRob3NlIHJlc3VsdHMgc2luY2UgaXQgdGFrZXMgbXVsdGlw
bGUgc2Vjb25kcyBvciBtaW51dGVzIHRvCisgICAgICAgIGdlbmVyYXRlIHRob3NlIEpTT04gZmls
ZXMuCisKKyAgICAgICAgKiBhcGkvZmFpbGluZy10ZXN0cy5waHA6IE1vdmVkIGFuZCByZW5hbWVk
IHRvIG1hbnVhbGx5IGdlbmVyYXRlIGFsbCBKU09OIGZpbGVzIGZvciBhIGdpdmVuIGJ1aWxkZXIu
CisgICAgICAgIChtYWluKToKKworICAgICAgICAqIGFwaS9yZXBvcnQucGhwOiBNYW51YWxseSBm
bHVzaCBhbmQgZW5kIHRoZSByZXF1ZXN0ICh0byBhdm9pZCBibG9ja2luZyBydW4td2Via2l0LXRl
c3RzIG9uIHRoZSBvdGhlciBzaWRlCisgICAgICAgIGZvciBtaW51dGVzKSwgdGhlbiBnZW5lcmF0
ZSBKU09OcyBmb3IgdGVzdHMgdGhhdCBhcmUgZmFpbGluZywgYXJlIGZsYWt5LCBhbmQgaGF2ZSB3
cm9uZyBleHBlY3RhdGlvbnMuCisKKyAgICAgICAgKiBhcGkvcmVzdWx0cy5waHA6IE1lcmdlIGZv
cm1hdF9yZXN1bHRfcm93cyBoZXJlIHNpbmNlIGl0J3Mgbm90IHVzZWQgYW55d2hlcmUgZWxzZS4K
KworICAgICAgICAqIGluY2x1ZGUvY29uZmlnLmpzb246IEFkZGVkIHRoZSBwYXRoIHRvIHRoZSBk
YXRhIGRpcmVjdG9yeSBpbnRvIHdoaWNoIEpTT04gZmlsZXMgYXJlIGdlbmVyYXRlZC4KKworICAg
ICAgICAqIGluY2x1ZGUvZGIucGhwOgorICAgICAgICAoY29uZmlnUGF0aCk6IFRha2VzIGEgcmVs
YXRpdmUgcGF0aCB2YWx1ZSBmcm9tIGNvbmZpZy5qc29uLCBhbmQgcmVzb2x2ZXMgaXQuCisKKyAg
ICAgICAgKiBpbmNsdWRlL2pzb24tc2hhcmVkLnBocDoKKyAgICAgICAgKGVjaG9fc3VjY2Vzcyk6
IEV4dHJhY3RlZCBmcm9tIGV4aXRfd2l0aF9zdWNjZXNzLgorICAgICAgICAoZXhpdF93aXRoX3N1
Y2Nlc3MpOgorCisgICAgICAgICogaW5jbHVkZS90ZXN0LXJlc3VsdHMucGhwOgorICAgICAgICAo
YWRkX2J1aWxkZXIpOiBFeHRyYWN0ZWQgZnJvbSBhZGRfYnVpbGQuCisgICAgICAgIChhZGRfYnVp
bGQpOgorICAgICAgICAoUmVzdWx0c0pTT05Xcml0ZXIpOiBFeHRyYWN0ZWQgZnJvbSBhcGkvZmFp
bGluZy10ZXN0cy5waHAuCisgICAgICAgIChSZXN1bHRzSlNPTldyaXRlci5fX2NvbnN0cnVjdCk6
CisgICAgICAgIChSZXN1bHRzSlNPTldyaXRlci5zdGFydCk6CisgICAgICAgIChSZXN1bHRzSlNP
TldyaXRlci5lbmQpOgorICAgICAgICAoUmVzdWx0c0pTT05Xcml0ZXIuYWRkX3Jlc3VsdHNfZm9y
X3Rlc3RfaWZfbWF0Y2hlcyk6CisgICAgICAgIChSZXN1bHRzSlNPTldyaXRlci5wYXNzX2Zvcl9m
YWlsdXJlX3R5cGUpOgorICAgICAgICAoRmFpbGluZ1Jlc3VsdHNKU09OV3JpdGVyKTogRXh0cmFj
dGVkIGZyb20gaW5kZXguaHRtbCdzIFRlc3RSZXN1bHRzVmlldy5fbWF0Y2hlc0ZhaWx1cmVUeXBl
LgorICAgICAgICAoRmFpbGluZ1Jlc3VsdHNKU09OV3JpdGVyLl9fY29uc3RydWN0KToKKyAgICAg
ICAgKEZhaWxpbmdSZXN1bHRzSlNPTldyaXRlci5wYXNzX2Zvcl9mYWlsdXJlX3R5cGUpOgorICAg
ICAgICAoRmxha3lSZXN1bHRzSlNPTldyaXRlcik6IERpdHRvLgorICAgICAgICAoRmxha3lSZXN1
bHRzSlNPTldyaXRlci5fX2NvbnN0cnVjdCk6CisgICAgICAgIChGbGFreVJlc3VsdHNKU09OV3Jp
dGVyLnBhc3NfZm9yX2ZhaWx1cmVfdHlwZSk6CisgICAgICAgIChXcm9uZ0V4cGVjdGF0aW9uc1Jl
c3VsdHNKU09OV3JpdGVyKTogRGl0dG8uCisgICAgICAgIChXcm9uZ0V4cGVjdGF0aW9uc1Jlc3Vs
dHNKU09OV3JpdGVyLl9fY29uc3RydWN0KToKKyAgICAgICAgKFdyb25nRXhwZWN0YXRpb25zUmVz
dWx0c0pTT05Xcml0ZXIucGFzc19mb3JfZmFpbHVyZV90eXBlKToKKyAgICAgICAgKFJlc3VsdHNK
U09OR2VuZXJhdG9yKTogRGl0dG8uCisgICAgICAgIChSZXN1bHRzSlNPTkdlbmVyYXRvci5fX2Nv
bnN0cnVjdCk6CisgICAgICAgIChSZXN1bHRzSlNPTkdlbmVyYXRvci5nZW5lcmF0ZSk6CisgICAg
ICAgIChSZXN1bHRzSlNPTkdlbmVyYXRvci5vcGVuX2pzb25fZm9yX2ZhaWx1cmVfdHlwZSk6Cisg
ICAgICAgIChSZXN1bHRzSlNPTkdlbmVyYXRvci53cml0ZV9qc29ucyk6CisKKyAgICAgICAgKiBp
bmRleC5odG1sOgorICAgICAgICAoVGVzdFJlc3VsdHNWaWV3KToKKyAgICAgICAgKFRlc3RSZXN1
bHRzVmlldy5zZXRCdWlsZGVycyk6CisgICAgICAgIChUZXN0UmVzdWx0c1ZpZXcuX2NyZWF0ZVJl
c3VsdENlbGwpOiBBZGQgYSBoeXBlcmxpbmsgdG8gcmVzdWx0cy5odG1sIGluIHRoZSB0b29sdGlw
LgorICAgICAgICAoVGVzdFJlc3VsdHNWaWV3LmZldGNoRmFpbGluZ1Rlc3RzRm9yQnVpbGRlcik6
IEZldGNoIHRoZSBnZW5lcmF0ZWQgSlNPTiBmaWxlcy4KKwogMjAxMy0xMC0yMyAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZlcnRlZCBlcnJvbmVvdXNseSBj
b21taXR0ZWQgY2hhbmdlcyBmcm9tIHRoZSBwcmV2aW91cyBjb21taXQuCkluZGV4OiBXZWJzaXRl
cy90ZXN0LXJlc3VsdHMvaW5kZXguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy90ZXN0LXJl
c3VsdHMvaW5kZXguaHRtbAkocmV2aXNpb24gMTU3OTg1KQorKysgV2Vic2l0ZXMvdGVzdC1yZXN1
bHRzL2luZGV4Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDEwIEBACiA8ZGl2IGlk
PSJidWlsZGVyc1ZpZXciPgogPGZvcm0+CiBTaG93Ci08bGFiZWw+dGVzdHMgPHNlbGVjdCBpZD0i
YnVpbGRlckZhaWx1cmVUeXBlVmlldyI+PG9wdGlvbj5mYWlsaW5nPC9vcHRpb24+PG9wdGlvbj5m
bGFreTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Indyb25nZXhwZWN0YXRpb25zIj5oYXMgd3Jvbmcg
ZXhwZWN0YXRpb25zPC9vcHRpb24+PC9zZWxlY3Q+PC9sYWJlbD4KKzxsYWJlbD5hbGwgdGVzdHMg
PHNlbGVjdCBpZD0iYnVpbGRlckZhaWx1cmVUeXBlVmlldyI+PG9wdGlvbj5mYWlsaW5nPC9vcHRp
b24+PG9wdGlvbj5mbGFreTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Indyb25nZXhwZWN0YXRpb25z
Ij5oYXMgd3JvbmcgZXhwZWN0YXRpb25zPC9vcHRpb24+PC9zZWxlY3Q+PC9sYWJlbD4KIDxsYWJl
bD5vbiA8c2VsZWN0IGlkPSJidWlsZGVyTGlzdFZpZXciPjxvcHRpb24gdmFsdWU9IiI+U2VsZWN0
IGJ1aWxkZXI8L29wdGlvbj48L3NlbGVjdD48L2xhYmVsPgotPGxhYmVsIGZvcj0iYnVpbGRlckRh
eXNWaWV3Ij5pbiB0aGUgbGFzdCA8c2VsZWN0IGlkPSJidWlsZGVyRGF5c1ZpZXciPjxvcHRpb24+
NTwvb3B0aW9uPjxvcHRpb24+MTU8L29wdGlvbj48b3B0aW9uPjMwPC9vcHRpb24+PC9zZWxlY3Q+
IGRheXM8L2xhYmVsPgorPGxhYmVsIGZvcj0iYnVpbGRlckRheXNWaWV3Ij5mb3IKKzxzZWxlY3Qg
aWQ9ImJ1aWxkZXJEYXlzVmlldyIgZGlzYWJsZWQ+PG9wdGlvbj41PC9vcHRpb24+PG9wdGlvbj4x
NTwvb3B0aW9uPjxvcHRpb24gc2VsZWN0ZWQ+MzA8L29wdGlvbj48L3NlbGVjdD4gZGF5czwvbGFi
ZWw+CiA8L2Zvcm0+CiA8ZGl2IGlkPSJidWlsZGVyRmFpbGluZ1Rlc3RzVmlldyI+PC9kaXY+CiA8
L2Rpdj4KQEAgLTYwLDYgKzYxLDcgQEAgdmFyIFRlc3RSZXN1bHRzVmlldyA9IG5ldyAoZnVuY3Rp
b24gKCkgewogICAgIHRoaXMuX2N1cnJlbnRCdWlsZGVyRGF5cyA9IG51bGw7CiAgICAgdGhpcy5f
b2xkSGFzaCA9IG51bGw7CiAgICAgdGhpcy5fYnVpbGRlcnMgPSB7fTsKKyAgICB0aGlzLl9idWls
ZGVyQnlOYW1lID0ge307CiAgICAgdGhpcy5fc2xhdmVzID0ge307CiAgICAgdGhpcy5fcmVwb3Np
dG9yaWVzID0ge307CiAgICAgdGhpcy5fdGVzdENhdGVnb3JpZXMgPSB7fTsKQEAgLTcxLDYgKzcz
LDEwIEBAIFRlc3RSZXN1bHRzVmlldy5zZXRBdmFpbGFibGVUZXN0cyA9IGZ1bmMKIAogVGVzdFJl
c3VsdHNWaWV3LnNldEJ1aWxkZXJzID0gZnVuY3Rpb24gKGJ1aWxkZXJzKSB7CiAgICAgdGhpcy5f
YnVpbGRlcnMgPSBidWlsZGVyczsKKyAgICBmb3IgKHZhciBidWlsZGVySWQgaW4gYnVpbGRlcnMp
IHsKKyAgICAgICAgdmFyIGJ1aWxkZXIgPSBidWlsZGVyc1tidWlsZGVySWRdOworICAgICAgICB0
aGlzLl9idWlsZGVyQnlOYW1lW2J1aWxkZXIubmFtZV0gPSBidWlsZGVyOworICAgIH0KIH0KIAog
VGVzdFJlc3VsdHNWaWV3LnNldFNsYXZlcyA9IGZ1bmN0aW9uIChzbGF2ZXMpIHsKQEAgLTE0MSw3
ICsxNDcsOCBAQCBUZXN0UmVzdWx0c1ZpZXcuX2NyZWF0ZVJlc3VsdENlbGwgPSBmdW5jCiAgICAg
ICAgICAgICBlbGVtZW50KCd1bCcsIFsKICAgICAgICAgICAgICAgICBlbGVtZW50KCdsaScsIFsn
QnVpbGQgVGltZTogJyArIHJlc3VsdC5idWlsZC5mb3JtYXR0ZWRCdWlsZFRpbWUoKV0pLAogICAg
ICAgICAgICAgICAgIGVsZW1lbnQoJ2xpJywgWydSZXZpc2lvbjogJ10uY29uY2F0KHJldmlzaW9u
RGVzY3JpcHRpb24pKSwKLSAgICAgICAgICAgICAgICBlbGVtZW50KCdsaScsIFsnQnVpbGQ6ICcs
IGVsZW1lbnQoJ2EnLCB7J2hyZWYnOiByZXN1bHQuYnVpbGQuYnVpbGRVcmwoKX0sIFtidWlsZE51
bWJlcl0pXSksCisgICAgICAgICAgICAgICAgZWxlbWVudCgnbGknLCBbJ0J1aWxkOiAnLCBlbGVt
ZW50KCdhJywgeydocmVmJzogcmVzdWx0LmJ1aWxkLmJ1aWxkVXJsKCl9LCBbYnVpbGROdW1iZXJd
KSwgJyAoJywKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudCgnYScsIHsnaHJlZic6IHJlc3Vs
dHNQYWdlfSwgWydyZXN1bHRzJ10pLCAnKSddKSwKICAgICAgICAgICAgICAgICBlbGVtZW50KCds
aScsIFsnQWN0dWFsOiAnICsgYWN0dWFsXSksCiAgICAgICAgICAgICAgICAgZWxlbWVudCgnbGkn
LCBbJ0V4cGVjdGVkOiAnICsgZXhwZWN0ZWRdKSwKICAgICAgICAgICAgIF0pCkBAIC0zMzcsMzcg
KzM0NCw2IEBAIFRlc3RSZXN1bHRzVmlldy5mZXRjaFRlc3RzID0gZnVuY3Rpb24gKHQKICAgICAg
ICAgdGhpcy51cGRhdGVMb2NhdGlvbkhhc2goKTsKIH0KIAotVGVzdFJlc3VsdHNWaWV3Ll9tYXRj
aGVzRmFpbHVyZVR5cGUgPSBmdW5jdGlvbiAocmVzdWx0cywgZmFpbHVyZVR5cGUsIHRuKSB7Ci0g
ICAgaWYgKCFyZXN1bHRzLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHZhciBs
YXRlc3RBY3R1YWxSZXN1bHQgPSByZXN1bHRzWzBdLmFjdHVhbDsKLSAgICB2YXIgbGF0ZXN0RXhw
ZWN0ZWRSZXN1bHQgPSByZXN1bHRzWzBdLmV4cGVjdGVkOwotICAgIHN3aXRjaCAoZmFpbHVyZVR5
cGUpIHsKLSAgICBjYXNlICdmYWlsaW5nJzoKLSAgICAgICAgcmV0dXJuIHJlc3VsdHNbMF0uYWN0
dWFsICE9ICdQQVNTJzsKLSAgICBjYXNlICdmbGFreSc6Ci0gICAgICAgIHZhciBvZmZPbmVDaGFu
Z2VDb3VudCA9IDA7Ci0gICAgICAgIGZvciAodmFyIGkgPSAxOyBpICsgMSA8IHJlc3VsdHMubGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgICAgIHZhciBwcmV2aW91c0FjdHVhbCA9IHJlc3VsdHNbaSAt
IDFdLmFjdHVhbDsKLSAgICAgICAgICAgIHZhciBuZXh0QWN0dWFsID0gcmVzdWx0c1tpICsgMV0u
YWN0dWFsOwotICAgICAgICAgICAgaWYgKHByZXZpb3VzQWN0dWFsID09IG5leHRBY3R1YWwgJiYg
cmVzdWx0c1tpXS5hY3R1YWwgIT0gcHJldmlvdXNBY3R1YWwpCi0gICAgICAgICAgICAgICAgb2Zm
T25lQ2hhbmdlQ291bnQrKzsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gb2ZmT25lQ2hhbmdl
Q291bnQ7IC8vIEhldXJpc3RpY3MuCi0gICAgY2FzZSAnd3JvbmdleHBlY3RhdGlvbnMnOgotICAg
ICAgICBpZiAobGF0ZXN0RXhwZWN0ZWRSZXN1bHQgPT0gbGF0ZXN0QWN0dWFsUmVzdWx0KQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2YXIgZXhwZWN0ZWRUb2tlbnMgPSBsYXRl
c3RFeHBlY3RlZFJlc3VsdC5zcGxpdCgnICcpOwotICAgICAgICBpZiAoZXhwZWN0ZWRUb2tlbnMu
aW5kZXhPZihsYXRlc3RBY3R1YWxSZXN1bHQpID49IDApCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGlmIChsYXRlc3RBY3R1YWxSZXN1bHQgPT0gJ1RFWFQnIHx8IGxhdGVzdEFj
dHVhbFJlc3VsdCA9PSAnVEVYVCtJTUFHRScgJiYgZXhwZWN0ZWRUb2tlbnMuaW5kZXhPZignRkFJ
TCcpID49IDApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogVGVzdFJlc3VsdHNWaWV3Ll9wb3B1
bGF0ZUJ1aWxkZXJQYW5lID0gZnVuY3Rpb24oYnVpbGRlck5hbWUsIGZhaWx1cmVUeXBlLCByZXN1
bHRzLCBzZWN0aW9uKSB7CiAgICAgdmFyIHRhYmxlID0gZWxlbWVudCgndGFibGUnLCB7J2NsYXNz
JzogJ3Jlc3VsdHNUYWJsZSB0YWJsZXNvcnRlcid9LCBbZWxlbWVudCgnY2FwdGlvbicsIFtidWls
ZGVyTmFtZV0pXSk7CiAgICAgdmFyIHJlc3VsdHNCeUJ1aWxkZXIgPSByZXN1bHRzWydidWlsZGVy
cyddOwpAQCAtMzg3LDcgKzM2Myw3IEBAIFRlc3RSZXN1bHRzVmlldy5fcG9wdWxhdGVCdWlsZGVy
UGFuZSA9IGYKICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgZm9yICh2YXIgdGVzdElkIGluIHJl
c3VsdHNCeVRlc3RzKSB7CiAgICAgICAgIHZhciByZXN1bHRzID0gcmVzdWx0c0J5VGVzdHNbdGVz
dElkXTsKLSAgICAgICAgaWYgKCFyZXN1bHRzLmxlbmd0aCB8fCAhdGhpcy5fbWF0Y2hlc0ZhaWx1
cmVUeXBlKHJlc3VsdHMsIGZhaWx1cmVUeXBlLCB0aGlzLl9hdmFpbGFibGVUZXN0c1t0ZXN0SWRd
Lm5hbWUpKQorICAgICAgICBpZiAoIXJlc3VsdHMubGVuZ3RoKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIHRoaXMuX2NyZWF0ZUJ1aWxkc0FuZENvbXB1dGVTbG93bmVzc09mUmVzdWx0
cyhidWlsZGVySWQsIHJlc3VsdHNCeVRlc3RzW3Rlc3RJZF0pOwogICAgICAgICB2YXIgdGVzdCA9
IHRoaXMuX2F2YWlsYWJsZVRlc3RzW3Rlc3RJZF07CkBAIC00MTYsOCArMzkyLDEzIEBAIFRlc3RS
ZXN1bHRzVmlldy5mZXRjaEZhaWxpbmdUZXN0c0ZvckJ1aWwKIAogICAgIHZhciBzZWxmID0gdGhp
czsKICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgeGhyLm9wZW4oIkdF
VCIsICdhcGkvZmFpbGluZy10ZXN0cy5waHA/YnVpbGRlcj0nICsgZXNjYXBlKGJ1aWxkZXJOYW1l
KSArICcmZGF5cz0nICsgbnVtYmVyT2ZEYXlzLCB0cnVlKTsgIAorICAgIHZhciBidWlsZGVySWQg
PSB0aGlzLl9idWlsZGVyQnlOYW1lW2J1aWxkZXJOYW1lXS5pZDsKKyAgICB4aHIub3BlbignR0VU
JywgJ2RhdGEvJyArIGJ1aWxkZXJJZCArICctJyArIGZhaWx1cmVUeXBlICsgJy5qc29uJywgdHJ1
ZSk7ICAKICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgaWYgKHho
ci5zdGF0dXMgIT0gMjAwKSB7CisgICAgICAgICAgICBzZWN0aW9uLmFwcGVuZENoaWxkKHRleHQo
J0ZhaWxlZCB0byBsb2FkIHJlc3VsdHMgZm9yICcgKyBidWlsZGVyTmFtZSArICc6ICcgKyB4aHIu
c3RhdHVzKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgdmFyIHJl
c3BvbnNlID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2UpOwogICAgICAgICBzZWN0aW9uLmlubmVy
SFRNTCA9ICcnOwogICAgICAgICBpZiAocmVzcG9uc2VbJ3N0YXR1cyddICE9ICdPSycpIHsKSW5k
ZXg6IFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9hcGkvZmFpbGluZy10ZXN0cy5waHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2FwaS9mYWlsaW5nLXRlc3RzLnBocAkocmV2aXNp
b24gMTU3OTg1KQorKysgV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2FwaS9mYWlsaW5nLXRlc3RzLnBo
cAkod29ya2luZyBjb3B5KQpAQCAtMyw0OCArMywyNCBAQAogcmVxdWlyZV9vbmNlKCcuLi9pbmNs
dWRlL2pzb24tc2hhcmVkLnBocCcpOwogcmVxdWlyZV9vbmNlKCcuLi9pbmNsdWRlL3Rlc3QtcmVz
dWx0cy5waHAnKTsKIAotJGRiID0gY29ubmVjdCgpOwotCi1yZXF1aXJlX2V4aXN0ZW5jZV9vZigk
X0dFVCwgYXJyYXkoJ2J1aWxkZXInID0+ICcvXltBLVphLXowLTkgXChcKVwtX10rJC8nKSk7Ci0k
YnVpbGRlcl9uYW1lID0gJF9HRVRbJ2J1aWxkZXInXTsKLSRudW1iZXJfb2ZfZGF5cyA9IGFycmF5
X2dldCgkX0dFVCwgJ2RheXMnKTsKLWlmICgkbnVtYmVyX29mX2RheXMpIHsKLSAgICByZXF1aXJl
X2Zvcm1hdCgnbnVtYmVyX29mX2RheXMnLCAkbnVtYmVyX29mX2RheXMsICcvXlswLTldKyQvJyk7
Ci0gICAgJG51bWJlcl9vZl9kYXlzID0gaW50dmFsKCRudW1iZXJfb2ZfZGF5cyk7Ci19IGVsc2UK
LSAgICAkbnVtYmVyX29mX2RheXMgPSAzOwotCi0kYnVpbGRlcl9yb3cgPSAkZGItPnNlbGVjdF9m
aXJzdF9yb3coJ2J1aWxkZXJzJywgTlVMTCwgYXJyYXkoJ25hbWUnID0+ICRidWlsZGVyX25hbWUp
KTsKLWlmICghJGJ1aWxkZXJfcm93KQotICAgIGV4aXRfd2l0aF9lcnJvcignQnVpbGRlck5vdEZv
dW5kJyk7Ci0kYnVpbGRlcl9pZCA9ICRidWlsZGVyX3Jvd1snaWQnXTsKLQotJGFsbF9yZXN1bHRz
ID0gJGRiLT5xdWVyeSgKLSJTRUxFQ1QgcmVzdWx0cy4qLCBidWlsZHMuKiwgYXJyYXlfYWdnKChi
dWlsZF9yZXZpc2lvbnMucmVwb3NpdG9yeSwgYnVpbGRfcmV2aXNpb25zLnZhbHVlLCBidWlsZF9y
ZXZpc2lvbnMudGltZSkpIEFTIHJldmlzaW9ucwotICAgIEZST00gcmVzdWx0cywgYnVpbGRzLCBi
dWlsZF9yZXZpc2lvbnMKLSAgICBXSEVSRSBidWlsZF9yZXZpc2lvbnMuYnVpbGQgPSBidWlsZHMu
aWQgQU5EIHJlc3VsdHMuYnVpbGQgPSBidWlsZHMuaWQgQU5EIGJ1aWxkcy5idWlsZGVyID0gJDEK
LSAgICBBTkQgYnVpbGRzLnN0YXJ0X3RpbWUgPiBub3coKSAtIGludGVydmFsICckbnVtYmVyX29m
X2RheXMgZGF5cycKLSAgICBHUk9VUCBCWSByZXN1bHRzLmlkLCBidWlsZHMuaWQgT1JERVIgQlkg
cmVzdWx0cy50ZXN0LCBtYXgoYnVpbGRfcmV2aXNpb25zLnRpbWUpIERFU0MiLCBhcnJheSgkYnVp
bGRlcl9pZCkpOwotCi1pZiAoISRhbGxfcmVzdWx0cykKLSAgICBleGl0X3dpdGhfZXJyb3IoJ1Jl
c3VsdHNOb3RGb3VuZCcpOwotCi0vLyBUbyBjb25zZXJ2ZSBtZW1vcnksIHdlIHNlcmlhbGl6ZSB0
ZXN0cyBhdCBhIHRpbWUuCi1lY2hvICJ7XCJzdGF0dXNcIjogXCJPS1wiLCBcImJ1aWxkZXJzXCI6
IHtcIiRidWlsZGVyX2lkXCI6eyI7Ci0kY3VycmVudFRlc3QgPSBOVUxMOwotJGkgPSAwOwotd2hp
bGUgKCRyZXN1bHQgPSAkZGItPmZldGNoX25leHRfcm93KCRhbGxfcmVzdWx0cykpIHsKLSAgICBp
ZiAoJHJlc3VsdFsndGVzdCddICE9ICRjdXJyZW50VGVzdCkgewotICAgICAgICBpZiAoJGN1cnJl
bnRUZXN0KQotICAgICAgICAgICAgZWNobyAnXSwnOwotICAgICAgICAkY3VycmVudFRlc3QgPSAk
cmVzdWx0Wyd0ZXN0J107Ci0gICAgICAgIGVjaG8gIlwiJGN1cnJlbnRUZXN0XCI6IFsiOwotICAg
IH0gZWxzZQotICAgICAgICBlY2hvICcsJzsKLSAgICBlY2hvIGpzb25fZW5jb2RlKGZvcm1hdF9y
ZXN1bHQoJHJlc3VsdCksIHRydWUpOworZnVuY3Rpb24gbWFpbigpIHsKKyAgICByZXF1aXJlX2V4
aXN0ZW5jZV9vZigkX0dFVCwgYXJyYXkoJ2J1aWxkZXInID0+ICcvXltBLVphLXowLTkgXChcKVwt
X10rJC8nKSk7CisgICAgJGJ1aWxkZXJfbmFtZSA9ICRfR0VUWydidWlsZGVyJ107CisKKyAgICAk
ZGIgPSBjb25uZWN0KCk7CisgICAgJGJ1aWxkZXJfcm93ID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93
KCdidWlsZGVycycsIE5VTEwsIGFycmF5KCduYW1lJyA9PiAkYnVpbGRlcl9uYW1lKSk7CisgICAg
aWYgKCEkYnVpbGRlcl9yb3cpCisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignQnVpbGRlck5vdEZv
dW5kJyk7CisgICAgJGJ1aWxkZXJfaWQgPSAkYnVpbGRlcl9yb3dbJ2lkJ107CisKKyAgICAkZ2Vu
ZXJhdG9yID0gbmV3IFJlc3VsdHNKU09OR2VuZXJhdG9yKCRkYiwgJGJ1aWxkZXJfaWQpOworCisg
ICAgaWYgKCRnZW5lcmF0b3ItPmdlbmVyYXRlKCkpCisgICAgICAgIGV4aXRfd2l0aF9zdWNjZXNz
KCk7CisgICAgZWxzZQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ1Jlc3VsdHNOb3RGb3VuZCcp
OwogfQotaWYgKCRjdXJyZW50VGVzdCkKLSAgICBlY2hvICddJzsKLWVjaG8gJ319fSc7CisKK21h
aW4oKTsKIAogPz4KSW5kZXg6IFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9hcGkvcmVwb3J0LnBocAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvYXBpL3JlcG9ydC5waHAJKHJldmlz
aW9uIDE1Nzk4NSkKKysrIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9hcGkvcmVwb3J0LnBocAkod29y
a2luZyBjb3B5KQpAQCAtMTMsNiArMTMsOSBAQCByZXF1aXJlX2V4aXN0ZW5jZV9vZigkX1BPU1Qs
IGFycmF5KAogICAgICdyZXZpc2lvbnMnID0+ICcvXi4rPyQvJywKICAgICAnc3RhcnRfdGltZScg
PT4gJy9eWzAtOV0rKFwuWzAtOV0rKT8kLycsCiAgICAgJ2VuZF90aW1lJyA9PiAnL15bMC05XSso
XC5bMC05XSspPyQvJykpOworJG1hc3RlciA9ICRfUE9TVFsnbWFzdGVyJ107CiskYnVpbGRlcl9u
YW1lID0gJF9QT1NUWydidWlsZGVyX25hbWUnXTsKKyRidWlsZF9udW1iZXIgPSBpbnR2YWwoJF9Q
T1NUWydidWlsZF9udW1iZXInXSk7CiAKIGlmICghYXJyYXlfa2V5X2V4aXN0cygnZmlsZScsICRf
RklMRVMpIG9yICFhcnJheV9rZXlfZXhpc3RzKCd0bXBfbmFtZScsICRfRklMRVNbJ2ZpbGUnXSkg
b3IgY291bnQoJF9GSUxFU1snZmlsZSddWyd0bXBfbmFtZSddKSA8PSAwKQogICAgIGV4aXRfd2l0
aF9lcnJvcignUmVzdWx0c0pTT05Ob3RJbmNsdWRlZCcpOwpAQCAtMzMsOSArMzYsMTMgQEAgaWYg
KCEkdGVzdF9yZXN1bHRzKQogJHN0YXJ0X3RpbWUgPSBmbG9hdF90b190aW1lKCRfUE9TVFsnc3Rh
cnRfdGltZSddKTsKICRlbmRfdGltZSA9IGZsb2F0X3RvX3RpbWUoJF9QT1NUWydlbmRfdGltZSdd
KTsKIAotJGJ1aWxkX2lkID0gYWRkX2J1aWxkKCRkYiwgJF9QT1NUWydtYXN0ZXInXSwgJF9QT1NU
WydidWlsZGVyX25hbWUnXSwgaW50dmFsKCRfUE9TVFsnYnVpbGRfbnVtYmVyJ10pKTsKKyRidWls
ZGVyX2lkID0gYWRkX2J1aWxkZXIoJGRiLCAkbWFzdGVyLCAkYnVpbGRlcl9uYW1lKTsKK2lmICgh
JGJ1aWxkZXJfaWQpCisgICAgZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0luc2VydEJ1aWxkZXIn
LCBhcnJheSgnbWFzdGVyJyA9PiAkbWFzdGVyLCAnYnVpbGRlck5hbWUnID0+ICRidWlsZGVyX25h
bWUpKTsKKworJGJ1aWxkX2lkID0gYWRkX2J1aWxkKCRkYiwgJGJ1aWxkZXJfaWQsICRidWlsZF9u
dW1iZXIpOwogaWYgKCEkYnVpbGRfaWQpCi0gICAgZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0lu
c2VydEJ1aWxkJywgYXJyYXkoJ21hc3RlcicgPT4gJF9QT1NUWydtYXN0ZXInXSwgJ2J1aWxkZXJO
YW1lJyA9PiAkX1BPU1RbJ2J1aWxkZXJfbmFtZSddLCAnYnVpbGROdW1iZXInID0+ICRfUE9TVFsn
YnVpbGRfbnVtYmVyJ10pKTsKKyAgICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvSW5zZXJ0QnVp
bGQnLCBhcnJheSgnYnVpbGRlcklkJyA9PiAkYnVpbGRlcl9pZCwgJ2J1aWxkTnVtYmVyJyA9PiAk
YnVpbGRfbnVtYmVyKSk7CiAKIGZvcmVhY2ggKCRyZXZpc2lvbnMgYXMgJHJlcG9zaXRvcnlfbmFt
ZSA9PiAkcmV2aXNpb25fZGF0YSkgewogICAgICRyZXBvc2l0b3J5X2lkID0gJGRiLT5zZWxlY3Rf
b3JfaW5zZXJ0X3JvdygncmVwb3NpdG9yaWVzJywgTlVMTCwgYXJyYXkoJ25hbWUnID0+ICRyZXBv
c2l0b3J5X25hbWUpKTsKQEAgLTU1LDYgKzYyLDE0IEBAICRzbGF2ZV9pZCA9IGFkZF9zbGF2ZSgk
ZGIsICRfUE9TVFsnYnVpbGQKIGlmICghc3RvcmVfdGVzdF9yZXN1bHRzKCRkYiwgJHRlc3RfcmVz
dWx0cywgJGJ1aWxkX2lkLCAkc3RhcnRfdGltZSwgJGVuZF90aW1lLCAkc2xhdmVfaWQpKQogICAg
IGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9TdG9yZVJlc3VsdHMnLCBhcnJheSgnYnVpbGRJZCcg
PT4gJGJ1aWxkX2lkKSk7CiAKLWV4aXRfd2l0aF9zdWNjZXNzKCk7CitlY2hvX3N1Y2Nlc3MoKTsK
Kworb2JfZW5kX2ZsdXNoKCk7CitmbHVzaCgpOworaWYgKGZ1bmN0aW9uX2V4aXN0cygnZmFzdGNn
aV9maW5pc2hfcmVxdWVzdCcpKQorICAgIGZhc3RjZ2lfZmluaXNoX3JlcXVlc3QoKTsKKworJGdl
bmVyYXRvciA9IG5ldyBSZXN1bHRzSlNPTkdlbmVyYXRvcigkZGIsICRidWlsZGVyX2lkKTsKKyRn
ZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAKID8+CkluZGV4OiBXZWJzaXRlcy90ZXN0LXJlc3VsdHMv
YXBpL3Jlc3VsdHMucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9hcGkv
cmVzdWx0cy5waHAJKHJldmlzaW9uIDE1Nzk4NSkKKysrIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9h
cGkvcmVzdWx0cy5waHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDYgKzE5LDEwIEBAICRyZXN1bHRf
cm93cyA9ICRkYi0+cXVlcnlfYW5kX2ZldGNoX2FsbCgKIGlmICghJHJlc3VsdF9yb3dzKQogICAg
IGV4aXRfd2l0aF9lcnJvcignUmVzdWx0c05vdEZvdW5kJyk7CiAKLWV4aXRfd2l0aF9zdWNjZXNz
KGZvcm1hdF9yZXN1bHRfcm93cygkcmVzdWx0X3Jvd3MpKTsKKyRidWlsZGVycyA9IGFycmF5KCk7
Citmb3JlYWNoICgkcmVzdWx0X3Jvd3MgYXMgJHJlc3VsdCkKKyAgICBhcnJheV9wdXNoKGFycmF5
X2Vuc3VyZV9pdGVtX2hhc19hcnJheSgkYnVpbGRlcnMsICRyZXN1bHRbJ2J1aWxkZXInXSksIGZv
cm1hdF9yZXN1bHQoJHJlc3VsdCkpOworCitleGl0X3dpdGhfc3VjY2VzcyhhcnJheSgnYnVpbGRl
cnMnID0+ICRidWlsZGVycykpOwogCiA/PgpJbmRleDogV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2lu
Y2x1ZGUvY29uZmlnLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2lu
Y2x1ZGUvY29uZmlnLmpzb24JKHJldmlzaW9uIDE1Nzk4NSkKKysrIFdlYnNpdGVzL3Rlc3QtcmVz
dWx0cy9pbmNsdWRlL2NvbmZpZy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAog
ewogICAgICJkZWJ1ZyI6IHRydWUsCiAgICAgImpzb25DYWNoZU1heEFnZSI6IDYwMCwKKyAgICAi
ZGF0YURpcmVjdG9yeSI6ICIuLi9kYXRhIiwKICAgICAiZGF0YWJhc2UiOiB7CiAgICAgICAgICJo
b3N0IjogImxvY2FsaG9zdCIsCiAgICAgICAgICJwb3J0IjogIjU0MzIiLApJbmRleDogV2Vic2l0
ZXMvdGVzdC1yZXN1bHRzL2luY2x1ZGUvZGIucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Rl
c3QtcmVzdWx0cy9pbmNsdWRlL2RiLnBocAkocmV2aXNpb24gMTU3OTg1KQorKysgV2Vic2l0ZXMv
dGVzdC1yZXN1bHRzL2luY2x1ZGUvZGIucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywx
NSBAQCBmdW5jdGlvbiBjb25maWcoJGtleSkgewogICAgIHJldHVybiAkX2NvbmZpZ1ska2V5XTsK
IH0KIAorZnVuY3Rpb24gY29uZmlnUGF0aCgka2V5LCAkYWRkaXRpb25hbF9wYXRoID0gJycpIHsK
KyAgICAkcmVsYXRpdmVfcGF0aCA9IGNvbmZpZygka2V5KTsKKyAgICBpZiAoISRyZWxhdGl2ZV9w
YXRoKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoJGFkZGl0aW9uYWxfcGF0aCkKKyAg
ICAgICAgJGFkZGl0aW9uYWxfcGF0aCA9ICcvJyAuICRhZGRpdGlvbmFsX3BhdGg7CisgICAgcmV0
dXJuIHJlYWxwYXRoKGRpcm5hbWUoX19GSUxFX18pIC4gIi8kcmVsYXRpdmVfcGF0aCIpIC4gJGFk
ZGl0aW9uYWxfcGF0aDsKK30KKwogaWYgKGNvbmZpZygnZGVidWcnKSkKICAgICBpbmlfc2V0KCdk
aXNwbGF5X2Vycm9ycycsICdPbicpOwogCkluZGV4OiBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvaW5j
bHVkZS9qc29uLXNoYXJlZC5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvdGVzdC1yZXN1bHRz
L2luY2x1ZGUvanNvbi1zaGFyZWQucGhwCShyZXZpc2lvbiAxNTc5ODUpCisrKyBXZWJzaXRlcy90
ZXN0LXJlc3VsdHMvaW5jbHVkZS9qc29uLXNoYXJlZC5waHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
LDkgKzEzLDEzIEBAIGZ1bmN0aW9uIGV4aXRfd2l0aF9lcnJvcigkc3RhdHVzLCAkZGV0YWkKICAg
ICBleGl0KDEpOwogfQogCi1mdW5jdGlvbiBleGl0X3dpdGhfc3VjY2VzcygkZGV0YWlscyA9IGFy
cmF5KCkpIHsKK2Z1bmN0aW9uIGVjaG9fc3VjY2VzcygkZGV0YWlscyA9IGFycmF5KCkpIHsKICAg
ICAkZGV0YWlsc1snc3RhdHVzJ10gPSAnT0snOwogICAgIGVjaG8ganNvbl9lbmNvZGUoJGRldGFp
bHMpOworfQorCitmdW5jdGlvbiBleGl0X3dpdGhfc3VjY2VzcygkZGV0YWlscyA9IGFycmF5KCkp
IHsKKyAgICBlY2hvX3N1Y2Nlc3MoJGRldGFpbHMpOwogICAgIGV4aXQoMCk7CiB9CiAKSW5kZXg6
IFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9pbmNsdWRlL3Rlc3QtcmVzdWx0cy5waHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luY2x1ZGUvdGVzdC1yZXN1bHRzLnBocAkocmV2
aXNpb24gMTU3OTg1KQorKysgV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luY2x1ZGUvdGVzdC1yZXN1
bHRzLnBocAkod29ya2luZyBjb3B5KQpAQCAtOCwxNCArOCwxNCBAQCBmdW5jdGlvbiBmbG9hdF90
b190aW1lKCR0aW1lX2luX2Zsb2F0KSB7CiAgICAgcmV0dXJuICR0aW1lOwogfQogCi1mdW5jdGlv
biBhZGRfYnVpbGQoJGRiLCAkbWFzdGVyLCAkYnVpbGRlcl9uYW1lLCAkYnVpbGRfbnVtYmVyKSB7
CitmdW5jdGlvbiBhZGRfYnVpbGRlcigkZGIsICRtYXN0ZXIsICRidWlsZGVyX25hbWUpIHsKICAg
ICBpZiAoIWluX2FycmF5KCRtYXN0ZXIsIGNvbmZpZygnbWFzdGVycycpKSkKICAgICAgICAgcmV0
dXJuIE5VTEw7CiAKLSAgICAkYnVpbGRlcl9pZCA9ICRkYi0+c2VsZWN0X29yX2luc2VydF9yb3co
J2J1aWxkZXJzJywgTlVMTCwgYXJyYXkoJ21hc3RlcicgPT4gJG1hc3RlciwgJ25hbWUnID0+ICRi
dWlsZGVyX25hbWUpKTsKLSAgICBpZiAoISRidWlsZGVyX2lkKQotICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICByZXR1cm4gJGRiLT5zZWxlY3Rfb3JfaW5zZXJ0X3JvdygnYnVpbGRlcnMnLCBOVUxM
LCBhcnJheSgnbWFzdGVyJyA9PiAkbWFzdGVyLCAnbmFtZScgPT4gJGJ1aWxkZXJfbmFtZSkpOwor
fQogCitmdW5jdGlvbiBhZGRfYnVpbGQoJGRiLCAkYnVpbGRlcl9pZCwgJGJ1aWxkX251bWJlcikg
ewogICAgIHJldHVybiAkZGItPnNlbGVjdF9vcl9pbnNlcnRfcm93KCdidWlsZHMnLCBOVUxMLCBh
cnJheSgnYnVpbGRlcicgPT4gJGJ1aWxkZXJfaWQsICdudW1iZXInID0+ICRidWlsZF9udW1iZXIp
KTsKIH0KIApAQCAtMTA1LDEzICsxMDUsMTY1IEBAIGZ1bmN0aW9uIGZvcm1hdF9yZXN1bHQoJHJl
c3VsdCkgewogICAgICAgICAnbW9kaWZpZXJzJyA9PiAkcmVzdWx0Wydtb2RpZmllcnMnXSk7CiB9
CiAKLWZ1bmN0aW9uIGZvcm1hdF9yZXN1bHRfcm93cygkcmVzdWx0X3Jvd3MpIHsKLSAgICAkYnVp
bGRlcnMgPSBhcnJheSgpOwotICAgIGZvcmVhY2ggKCRyZXN1bHRfcm93cyBhcyAkcmVzdWx0KSB7
Ci0gICAgICAgIGFycmF5X3B1c2goYXJyYXlfZW5zdXJlX2l0ZW1faGFzX2FycmF5KGFycmF5X2Vu
c3VyZV9pdGVtX2hhc19hcnJheSgkYnVpbGRlcnMsICRyZXN1bHRbJ2J1aWxkZXInXSksICRyZXN1
bHRbJ3Rlc3QnXSksCi0gICAgICAgICAgICBmb3JtYXRfcmVzdWx0KCRyZXN1bHQpKTsKK2Fic3Ry
YWN0IGNsYXNzIFJlc3VsdHNKU09OV3JpdGVyIHsKKyAgICBwcml2YXRlICRmcDsKKyAgICBwcml2
YXRlICRlbWl0dGVkX3Jlc3VsdHM7CisKKyAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qo
JGZwKSB7CisgICAgICAgICR0aGlzLT5mcCA9ICRmcDsKKyAgICAgICAgJHRoaXMtPmVtaXR0ZWRf
cmVzdWx0cyA9IEZBTFNFOworICAgIH0KKworICAgIHB1YmxpYyBmdW5jdGlvbiBzdGFydCgkYnVp
bGRlcl9pZCkgeworICAgICAgICBmd3JpdGUoJHRoaXMtPmZwLCAie1wic3RhdHVzXCI6IFwiT0tc
IiwgXCJidWlsZGVyc1wiOiB7XCIkYnVpbGRlcl9pZFwiOnsiKTsKKyAgICB9CisKKyAgICBwdWJs
aWMgZnVuY3Rpb24gZW5kKCR0b3RhbF90aW1lKSB7CisgICAgICAgIGZ3cml0ZSgkdGhpcy0+ZnAs
ICJ9fSwgXCJ0b3RhbEdlbmVyYXRpb25UaW1lXCI6ICR0b3RhbF90aW1lfSIpOworICAgIH0KKwor
ICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRfcmVzdWx0c19mb3JfdGVzdF9pZl9tYXRjaGVzKCRjdXJy
ZW50X3Rlc3QsICRjdXJyZW50X3Jlc3VsdHMpIHsKKyAgICAgICAgaWYgKCFjb3VudCgkY3VycmVu
dF9yZXN1bHRzKSB8fCAkdGhpcy0+cGFzc19mb3JfZmFpbHVyZV90eXBlKCRjdXJyZW50X3Jlc3Vs
dHMpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBGSVhNRTogV2h5IGRvIHdlIG5l
ZWQgdG8gY2hlY2sgdGhlIGNvdW50PworCisgICAgICAgICRwcmVmaXggPSAkdGhpcy0+ZW1pdHRl
ZF9yZXN1bHRzID8gIixcbiIgOiAiIjsKKyAgICAgICAgZndyaXRlKCR0aGlzLT5mcCwgIiRwcmVm
aXhcIiRjdXJyZW50X3Rlc3RcIjoiKTsKKyAgICAgICAgZndyaXRlKCR0aGlzLT5mcCwganNvbl9l
bmNvZGUoJGN1cnJlbnRfcmVzdWx0cywgdHJ1ZSkpOworCisgICAgICAgICR0aGlzLT5lbWl0dGVk
X3Jlc3VsdHMgPSBUUlVFOworICAgIH0KKworICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlv
biBwYXNzX2Zvcl9mYWlsdXJlX3R5cGUoJiRyZXN1bHRzKTsKK30KKworY2xhc3MgRmFpbGluZ1Jl
c3VsdHNKU09OV3JpdGVyIGV4dGVuZHMgUmVzdWx0c0pTT05Xcml0ZXIgeworICAgIHB1YmxpYyBm
dW5jdGlvbiBfX2NvbnN0cnVjdCgkZnApIHsgcGFyZW50OjpfX2NvbnN0cnVjdCgkZnApOyB9Cisg
ICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHBhc3NfZm9yX2ZhaWx1cmVfdHlwZSgmJHJlc3VsdHMpIHsK
KyAgICAgICAgcmV0dXJuICRyZXN1bHRzWzBdWydhY3R1YWwnXSA9PSAnUEFTUyc7CisgICAgfQor
fQorCitjbGFzcyBGbGFreVJlc3VsdHNKU09OV3JpdGVyIGV4dGVuZHMgUmVzdWx0c0pTT05Xcml0
ZXIgeworICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZnApIHsgcGFyZW50OjpfX2Nv
bnN0cnVjdCgkZnApOyB9CisgICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHBhc3NfZm9yX2ZhaWx1cmVf
dHlwZSgmJHJlc3VsdHMpIHsKKyAgICAgICAgJGxhc3RfaW5kZXggPSBjb3VudCgkcmVzdWx0cykg
LSAxOworICAgICAgICBmb3IgKCRpID0gMTsgJGkgPCAkbGFzdF9pbmRleDsgJGkrKykgeworICAg
ICAgICAgICAgJHByZXZpb3VzX2FjdHVhbCA9ICRyZXN1bHRzWyRpIC0gMV1bJ2FjdHVhbCddOwor
ICAgICAgICAgICAgJG5leHRfYWN0dWFsID0gJHJlc3VsdHNbJGkgKyAxXVsnYWN0dWFsJ107Cisg
ICAgICAgICAgICBpZiAoJHByZXZpb3VzX2FjdHVhbCA9PSAkbmV4dF9hY3R1YWwgJiYgJHJlc3Vs
dHNbJGldWydhY3R1YWwnXSAhPSAkcHJldmlvdXNfYWN0dWFsKSB7CisgICAgICAgICAgICAgICAg
JHJlc3VsdHNbJGldWydvbmVPZmZDaGFuZ2UnXSA9IFRSVUU7CisgICAgICAgICAgICAgICAgcmV0
dXJuIEZBTFNFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBUUlVF
OworICAgIH0KK30KKworY2xhc3MgV3JvbmdFeHBlY3RhdGlvbnNSZXN1bHRzSlNPTldyaXRlciBl
eHRlbmRzIFJlc3VsdHNKU09OV3JpdGVyIHsKKyAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1
Y3QoJGZwKSB7IHBhcmVudDo6X19jb25zdHJ1Y3QoJGZwKTsgfQorICAgIHByb3RlY3RlZCBmdW5j
dGlvbiBwYXNzX2Zvcl9mYWlsdXJlX3R5cGUoJiRyZXN1bHRzKSB7CisgICAgICAgICRsYXRlc3Rf
ZXhwZWN0ZWRfcmVzdWx0ID0gJHJlc3VsdHNbMF1bJ2V4cGVjdGVkJ107CisgICAgICAgICRsYXRl
c3RfYWN0dWFsX3Jlc3VsdCA9ICRyZXN1bHRzWzBdWydhY3R1YWwnXTsKKworICAgICAgICBpZiAo
JGxhdGVzdF9leHBlY3RlZF9yZXN1bHQgPT0gJGxhdGVzdF9hY3R1YWxfcmVzdWx0KQorICAgICAg
ICAgICAgcmV0dXJuIFRSVUU7CisKKyAgICAgICAgJHRva2VucyA9IGV4cGxvZGUoJyAnLCAkbGF0
ZXN0X2V4cGVjdGVkX3Jlc3VsdCk7CisgICAgICAgIHJldHVybiBhcnJheV9zZWFyY2goJGxhdGVz
dF9hY3R1YWxfcmVzdWx0LCAkdG9rZW5zKSAhPT0gRkFMU0UKKyAgICAgICAgICAgIHx8ICgoJGxh
dGVzdF9hY3R1YWxfcmVzdWx0ID09ICdURVhUJyB8fCAkbGF0ZXN0X2FjdHVhbF9yZXN1bHQgPT0g
J1RFWFQrSU1BR0UnKSAmJiBhcnJheV9zZWFyY2goJ0ZBSUwnLCAkdG9rZW5zKSAhPT0gRkFMU0Up
OworICAgIH0KK30KKworY2xhc3MgUmVzdWx0c0pTT05HZW5lcmF0b3IgeworICAgIHByaXZhdGUg
JGRiOworICAgIHByaXZhdGUgJGJ1aWxkZXJfaWQ7CisKKyAgICBjb25zdCBNQVhJTVVNX05VTUJF
Ul9PRl9EQVlTID0gMzA7CisKKyAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGRiLCAk
YnVpbGRlcl9pZCkKKyAgICB7CisgICAgICAgICR0aGlzLT5kYiA9ICRkYjsKKyAgICAgICAgJHRo
aXMtPmJ1aWxkZXJfaWQgPSAkYnVpbGRlcl9pZDsKKyAgICB9CisKKyAgICBwdWJsaWMgZnVuY3Rp
b24gZ2VuZXJhdGUoKQorICAgIHsKKyAgICAgICAgJHN0YXJ0X3RpbWUgPSBtaWNyb3RpbWUodHJ1
ZSk7CisKKyAgICAgICAgaWYgKCEkdGhpcy0+YnVpbGRlcl9pZCkKKyAgICAgICAgICAgIHJldHVy
biBGQUxTRTsKKworICAgICAgICAkbnVtYmVyX29mX2RheXMgPSBzZWxmOjpNQVhJTVVNX05VTUJF
Ul9PRl9EQVlTOworICAgICAgICAkYWxsX3Jlc3VsdHMgPSAkdGhpcy0+ZGItPnF1ZXJ5KAorICAg
ICAgICAiU0VMRUNUIHJlc3VsdHMuKiwgYnVpbGRzLiogRlJPTSByZXN1bHRzCisgICAgICAgICAg
ICBKT0lOIChTRUxFQ1QgYnVpbGRzLiosIGFycmF5X2FnZygoYnVpbGRfcmV2aXNpb25zLnJlcG9z
aXRvcnksIGJ1aWxkX3JldmlzaW9ucy52YWx1ZSwgYnVpbGRfcmV2aXNpb25zLnRpbWUpKSBBUyBy
ZXZpc2lvbnMKKyAgICAgICAgICAgICAgICAgICAgRlJPTSBidWlsZHMsIGJ1aWxkX3JldmlzaW9u
cworICAgICAgICAgICAgICAgICAgICBXSEVSRSBidWlsZF9yZXZpc2lvbnMuYnVpbGQgPSBidWls
ZHMuaWQgQU5EIGJ1aWxkcy5idWlsZGVyID0gJDEgQU5EIGJ1aWxkcy5zdGFydF90aW1lID4gbm93
KCkgLSBpbnRlcnZhbCAnJG51bWJlcl9vZl9kYXlzIGRheXMnCisgICAgICAgICAgICAgICAgICAg
IEdST1VQIEJZIGJ1aWxkcy5pZAorICAgICAgICAgICAgICAgICAgICBPUkRFUiBCWSBtYXgoYnVp
bGRfcmV2aXNpb25zLnRpbWUpIERFU0MpIGFzIGJ1aWxkcyBPTiByZXN1bHRzLmJ1aWxkID0gYnVp
bGRzLmlkCisgICAgICAgICAgICBPUkRFUiBCWSByZXN1bHRzLnRlc3QiLCBhcnJheSgkdGhpcy0+
YnVpbGRlcl9pZCkpOworICAgICAgICBpZiAoISRhbGxfcmVzdWx0cykKKyAgICAgICAgICAgIHJl
dHVybiBGQUxTRTsKKworICAgICAgICAkZmFpbGluZ19qc29uX2ZwID0gJHRoaXMtPm9wZW5fanNv
bl9mb3JfZmFpbHVyZV90eXBlKCdmYWlsaW5nJyk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICAkZmxha3lfanNvbl9mcCA9ICR0aGlzLT5vcGVuX2pzb25fZm9yX2ZhaWx1cmVfdHlwZSgnZmxh
a3knKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgJHdyb25nZXhwZWN0YXRp
b25zX2pzb25fZnAgPSAkdGhpcy0+b3Blbl9qc29uX2Zvcl9mYWlsdXJlX3R5cGUoJ3dyb25nZXhw
ZWN0YXRpb25zJyk7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICR0aGlzLT53cml0ZV9qc29ucygkYWxsX3Jlc3VsdHMsIGFycmF5KAorICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3IEZhaWxpbmdSZXN1bHRzSlNPTldyaXRlcigkZmFpbGluZ19qc29u
X2ZwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGbGFreVJlc3VsdHNKU09OV3JpdGVy
KCRmbGFreV9qc29uX2ZwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXcm9uZ0V4cGVj
dGF0aW9uc1Jlc3VsdHNKU09OV3JpdGVyKCR3cm9uZ2V4cGVjdGF0aW9uc19qc29uX2ZwKSksICRz
dGFydF90aW1lKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGV4Y2VwdGlv
bikgeworICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJHdyb25nZXhwZWN0YXRpb25zX2pzb25f
ZnApOworICAgICAgICAgICAgICAgICAgICB0aHJvdyAkZXhjZXB0aW9uOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZXhjZXB0aW9uKSB7CisgICAg
ICAgICAgICAgICAgZmNsb3NlKCRmbGFreV9qc29uX2ZwKTsKKyAgICAgICAgICAgICAgICB0aHJv
dyAkZXhjZXB0aW9uOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24g
JGV4Y2VwdGlvbikgeworICAgICAgICAgICAgZmNsb3NlKCRmYWlsaW5nX2pzb25fZnApOworICAg
ICAgICAgICAgdGhyb3cgJGV4Y2VwdGlvbjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gRkFM
U0U7CisgICAgfQorCisgICAgcHJpdmF0ZSBmdW5jdGlvbiBvcGVuX2pzb25fZm9yX2ZhaWx1cmVf
dHlwZSgkZmFpbHVyZV90eXBlKSB7CisgICAgICAgICRmYWlsaW5nX2pzb25fcGF0aCA9IGNvbmZp
Z1BhdGgoJ2RhdGFEaXJlY3RvcnknLCAkdGhpcy0+YnVpbGRlcl9pZCAuICItJGZhaWx1cmVfdHlw
ZS5qc29uIik7CisgICAgICAgIGlmICghJGZhaWxpbmdfanNvbl9wYXRoKQorICAgICAgICAgICAg
ZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0RldGVybWluZVJlc3VsdHNKU09OUGF0aCcsIGFycmF5
KCdidWlsZGVySWQnID0+ICR0aGlzLT5idWlsZGVyX2lkLCAnZmFpbHVyZVR5cGUnID0+ICRmYWls
dXJlX3R5cGUpKTsKKyAgICAgICAgJGZwID0gZm9wZW4oJGZhaWxpbmdfanNvbl9wYXRoLCAndycp
OworICAgICAgICBpZiAoISRmcCkKKyAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVk
VG9PcGVuUmVzdWx0c0pTT04nLCBhcnJheSgnYnVpbGRlcklkJyA9PiAkdGhpcy0+YnVpbGRlcl9p
ZCwgJ2ZhaWx1cmVUeXBlJyA9PiAkZmFpbHVyZV90eXBlKSk7CisgICAgICAgIHJldHVybiAkZnA7
CisgICAgfQorCisgICAgcHJpdmF0ZSBmdW5jdGlvbiB3cml0ZV9qc29ucygkYWxsX3Jlc3VsdHMs
ICR3cml0ZXJzLCAkc3RhcnRfdGltZSkgeworICAgICAgICBmb3JlYWNoICgkd3JpdGVycyBhcyAk
d3JpdGVyKQorICAgICAgICAgICAgJHdyaXRlci0+c3RhcnQoJHRoaXMtPmJ1aWxkZXJfaWQpOwor
ICAgICAgICAkY3VycmVudF90ZXN0ID0gTlVMTDsKKyAgICAgICAgJGN1cnJlbnRfcmVzdWx0cyA9
IGFycmF5KCk7CisgICAgICAgIHdoaWxlICgkcmVzdWx0ID0gJHRoaXMtPmRiLT5mZXRjaF9uZXh0
X3JvdygkYWxsX3Jlc3VsdHMpKSB7CisgICAgICAgICAgICBpZiAoJHJlc3VsdFsndGVzdCddICE9
ICRjdXJyZW50X3Rlc3QpIHsKKyAgICAgICAgICAgICAgICBpZiAoJGN1cnJlbnRfdGVzdCkgewor
ICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkd3JpdGVycyBhcyAkd3JpdGVyKQorICAgICAg
ICAgICAgICAgICAgICAgICAgJHdyaXRlci0+YWRkX3Jlc3VsdHNfZm9yX3Rlc3RfaWZfbWF0Y2hl
cygkY3VycmVudF90ZXN0LCAkY3VycmVudF9yZXN1bHRzKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgJGN1cnJlbnRfcmVzdWx0cyA9IGFycmF5KCk7CisgICAgICAgICAgICAg
ICAgJGN1cnJlbnRfdGVzdCA9ICRyZXN1bHRbJ3Rlc3QnXTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGFycmF5X3B1c2goJGN1cnJlbnRfcmVzdWx0cywgZm9ybWF0X3Jlc3VsdCgkcmVzdWx0
KSk7CisgICAgICAgIH0KKworICAgICAgICAkdG90YWxfdGltZSA9IG1pY3JvdGltZSh0cnVlKSAt
ICRzdGFydF90aW1lOworICAgICAgICBmb3JlYWNoICgkd3JpdGVycyBhcyAkd3JpdGVyKQorICAg
ICAgICAgICAgJHdyaXRlci0+ZW5kKCR0b3RhbF90aW1lKTsKKworICAgICAgICByZXR1cm4gVFJV
RTsKICAgICB9Ci0gICAgcmV0dXJuIGFycmF5KCdidWlsZGVycycgPT4gJGJ1aWxkZXJzKTsKIH0K
IAogPz4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215138</attachid>
            <date>2013-10-24 19:39:45 -0700</date>
            <delta_ts>2013-10-24 20:46:08 -0700</delta_ts>
            <desc>Fixed paths</desc>
            <filename>fix123311d</filename>
            <type>text/plain</type>
            <size>22350</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
c2l0ZXMvdGVzdC1yZXN1bHRzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3OTg1KQorKysgV2Vic2l0
ZXMvdGVzdC1yZXN1bHRzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDEzLTEwLTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IFNob3dpbmcgbGlzdHMgb2YgZmxha3kgdGVzdHMgZm9yIGEgYnVpbGRlciB0YWtlcyB0b28gbG9u
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJh
dGUgSlNPTnMgZm9yIHRlc3RzIGZhaWxpbmcsIGZsYWt5LCBvciB3aXRoIHdyb25nIGV4cGVjdGF0
aW9uIGF0IHRoZSB0aW1lIGEgYnVpbGRlciByZXBvcnRzIHJlc3VsdHMKKyAgICAgICAgaW5zdGVh
ZCB3aGVuIHRoZSBmcm9udGVuZCByZXF1ZXN0cyB0byB0aG9zZSB0aG9zZSByZXN1bHRzIHNpbmNl
IGl0IHRha2VzIG11bHRpcGxlIHNlY29uZHMgb3IgbWludXRlcyB0bworICAgICAgICBnZW5lcmF0
ZSB0aG9zZSBKU09OIGZpbGVzLgorCisgICAgICAgICogYXBpL2ZhaWxpbmctdGVzdHMucGhwOiBN
b3ZlZCBhbmQgcmVuYW1lZCB0byBtYW51YWxseSBnZW5lcmF0ZSBhbGwgSlNPTiBmaWxlcyBmb3Ig
YSBnaXZlbiBidWlsZGVyLgorICAgICAgICAobWFpbik6CisKKyAgICAgICAgKiBhcGkvcmVwb3J0
LnBocDogTWFudWFsbHkgZmx1c2ggYW5kIGVuZCB0aGUgcmVxdWVzdCAodG8gYXZvaWQgYmxvY2tp
bmcgcnVuLXdlYmtpdC10ZXN0cyBvbiB0aGUgb3RoZXIgc2lkZQorICAgICAgICBmb3IgbWludXRl
cyksIHRoZW4gZ2VuZXJhdGUgSlNPTnMgZm9yIHRlc3RzIHRoYXQgYXJlIGZhaWxpbmcsIGFyZSBm
bGFreSwgYW5kIGhhdmUgd3JvbmcgZXhwZWN0YXRpb25zLgorCisgICAgICAgICogYXBpL3Jlc3Vs
dHMucGhwOiBNZXJnZSBmb3JtYXRfcmVzdWx0X3Jvd3MgaGVyZSBzaW5jZSBpdCdzIG5vdCB1c2Vk
IGFueXdoZXJlIGVsc2UuCisKKyAgICAgICAgKiBpbmNsdWRlL2NvbmZpZy5qc29uOiBBZGRlZCB0
aGUgcGF0aCB0byB0aGUgZGF0YSBkaXJlY3RvcnkgaW50byB3aGljaCBKU09OIGZpbGVzIGFyZSBn
ZW5lcmF0ZWQuCisKKyAgICAgICAgKiBpbmNsdWRlL2RiLnBocDoKKyAgICAgICAgKGNvbmZpZ1Bh
dGgpOiBUYWtlcyBhIHJlbGF0aXZlIHBhdGggdmFsdWUgZnJvbSBjb25maWcuanNvbiwgYW5kIHJl
c29sdmVzIGl0LgorCisgICAgICAgICogaW5jbHVkZS9qc29uLXNoYXJlZC5waHA6CisgICAgICAg
IChlY2hvX3N1Y2Nlc3MpOiBFeHRyYWN0ZWQgZnJvbSBleGl0X3dpdGhfc3VjY2Vzcy4KKyAgICAg
ICAgKGV4aXRfd2l0aF9zdWNjZXNzKToKKworICAgICAgICAqIGluY2x1ZGUvdGVzdC1yZXN1bHRz
LnBocDoKKyAgICAgICAgKGFkZF9idWlsZGVyKTogRXh0cmFjdGVkIGZyb20gYWRkX2J1aWxkLgor
ICAgICAgICAoYWRkX2J1aWxkKToKKyAgICAgICAgKFJlc3VsdHNKU09OV3JpdGVyKTogRXh0cmFj
dGVkIGZyb20gYXBpL2ZhaWxpbmctdGVzdHMucGhwLgorICAgICAgICAoUmVzdWx0c0pTT05Xcml0
ZXIuX19jb25zdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0c0pTT05Xcml0ZXIuc3RhcnQpOgorICAg
ICAgICAoUmVzdWx0c0pTT05Xcml0ZXIuZW5kKToKKyAgICAgICAgKFJlc3VsdHNKU09OV3JpdGVy
LmFkZF9yZXN1bHRzX2Zvcl90ZXN0X2lmX21hdGNoZXMpOgorICAgICAgICAoUmVzdWx0c0pTT05X
cml0ZXIucGFzc19mb3JfZmFpbHVyZV90eXBlKToKKyAgICAgICAgKEZhaWxpbmdSZXN1bHRzSlNP
TldyaXRlcik6IEV4dHJhY3RlZCBmcm9tIGluZGV4Lmh0bWwncyBUZXN0UmVzdWx0c1ZpZXcuX21h
dGNoZXNGYWlsdXJlVHlwZS4KKyAgICAgICAgKEZhaWxpbmdSZXN1bHRzSlNPTldyaXRlci5fX2Nv
bnN0cnVjdCk6CisgICAgICAgIChGYWlsaW5nUmVzdWx0c0pTT05Xcml0ZXIucGFzc19mb3JfZmFp
bHVyZV90eXBlKToKKyAgICAgICAgKEZsYWt5UmVzdWx0c0pTT05Xcml0ZXIpOiBEaXR0by4KKyAg
ICAgICAgKEZsYWt5UmVzdWx0c0pTT05Xcml0ZXIuX19jb25zdHJ1Y3QpOgorICAgICAgICAoRmxh
a3lSZXN1bHRzSlNPTldyaXRlci5wYXNzX2Zvcl9mYWlsdXJlX3R5cGUpOgorICAgICAgICAoV3Jv
bmdFeHBlY3RhdGlvbnNSZXN1bHRzSlNPTldyaXRlcik6IERpdHRvLgorICAgICAgICAoV3JvbmdF
eHBlY3RhdGlvbnNSZXN1bHRzSlNPTldyaXRlci5fX2NvbnN0cnVjdCk6CisgICAgICAgIChXcm9u
Z0V4cGVjdGF0aW9uc1Jlc3VsdHNKU09OV3JpdGVyLnBhc3NfZm9yX2ZhaWx1cmVfdHlwZSk6Cisg
ICAgICAgIChSZXN1bHRzSlNPTkdlbmVyYXRvcik6IERpdHRvLgorICAgICAgICAoUmVzdWx0c0pT
T05HZW5lcmF0b3IuX19jb25zdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0c0pTT05HZW5lcmF0b3Iu
Z2VuZXJhdGUpOgorICAgICAgICAoUmVzdWx0c0pTT05HZW5lcmF0b3Iub3Blbl9qc29uX2Zvcl9m
YWlsdXJlX3R5cGUpOgorICAgICAgICAoUmVzdWx0c0pTT05HZW5lcmF0b3Iud3JpdGVfanNvbnMp
OgorCisgICAgICAgICogaW5kZXguaHRtbDoKKyAgICAgICAgKFRlc3RSZXN1bHRzVmlldyk6Cisg
ICAgICAgIChUZXN0UmVzdWx0c1ZpZXcuc2V0QnVpbGRlcnMpOgorICAgICAgICAoVGVzdFJlc3Vs
dHNWaWV3Ll9jcmVhdGVSZXN1bHRDZWxsKTogQWRkIGEgaHlwZXJsaW5rIHRvIHJlc3VsdHMuaHRt
bCBpbiB0aGUgdG9vbHRpcC4KKyAgICAgICAgKFRlc3RSZXN1bHRzVmlldy5mZXRjaEZhaWxpbmdU
ZXN0c0ZvckJ1aWxkZXIpOiBGZXRjaCB0aGUgZ2VuZXJhdGVkIEpTT04gZmlsZXMuCisKIDIwMTMt
MTAtMjMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0
ZWQgZXJyb25lb3VzbHkgY29tbWl0dGVkIGNoYW5nZXMgZnJvbSB0aGUgcHJldmlvdXMgY29tbWl0
LgpJbmRleDogV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2FwaS9mYWlsaW5nLXRlc3RzLnBocAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvYXBpL2ZhaWxpbmctdGVzdHMucGhwCShy
ZXZpc2lvbiAxNTc5ODUpCisrKyBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvYXBpL2ZhaWxpbmctdGVz
dHMucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0zLDQ4ICszLDI0IEBACiByZXF1aXJlX29uY2UoJy4u
L2luY2x1ZGUvanNvbi1zaGFyZWQucGhwJyk7CiByZXF1aXJlX29uY2UoJy4uL2luY2x1ZGUvdGVz
dC1yZXN1bHRzLnBocCcpOwogCi0kZGIgPSBjb25uZWN0KCk7CitmdW5jdGlvbiBtYWluKCkgewor
ICAgIHJlcXVpcmVfZXhpc3RlbmNlX29mKCRfR0VULCBhcnJheSgnYnVpbGRlcicgPT4gJy9eW0Et
WmEtejAtOSBcKFwpXC1fXSskLycpKTsKKyAgICAkYnVpbGRlcl9uYW1lID0gJF9HRVRbJ2J1aWxk
ZXInXTsKIAotcmVxdWlyZV9leGlzdGVuY2Vfb2YoJF9HRVQsIGFycmF5KCdidWlsZGVyJyA9PiAn
L15bQS1aYS16MC05IFwoXClcLV9dKyQvJykpOwotJGJ1aWxkZXJfbmFtZSA9ICRfR0VUWydidWls
ZGVyJ107Ci0kbnVtYmVyX29mX2RheXMgPSBhcnJheV9nZXQoJF9HRVQsICdkYXlzJyk7Ci1pZiAo
JG51bWJlcl9vZl9kYXlzKSB7Ci0gICAgcmVxdWlyZV9mb3JtYXQoJ251bWJlcl9vZl9kYXlzJywg
JG51bWJlcl9vZl9kYXlzLCAnL15bMC05XSskLycpOwotICAgICRudW1iZXJfb2ZfZGF5cyA9IGlu
dHZhbCgkbnVtYmVyX29mX2RheXMpOwotfSBlbHNlCi0gICAgJG51bWJlcl9vZl9kYXlzID0gMzsK
KyAgICAkZGIgPSBjb25uZWN0KCk7CisgICAgJGJ1aWxkZXJfcm93ID0gJGRiLT5zZWxlY3RfZmly
c3Rfcm93KCdidWlsZGVycycsIE5VTEwsIGFycmF5KCduYW1lJyA9PiAkYnVpbGRlcl9uYW1lKSk7
CisgICAgaWYgKCEkYnVpbGRlcl9yb3cpCisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignQnVpbGRl
ck5vdEZvdW5kJyk7CisgICAgJGJ1aWxkZXJfaWQgPSAkYnVpbGRlcl9yb3dbJ2lkJ107CiAKLSRi
dWlsZGVyX3JvdyA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygnYnVpbGRlcnMnLCBOVUxMLCBhcnJh
eSgnbmFtZScgPT4gJGJ1aWxkZXJfbmFtZSkpOwotaWYgKCEkYnVpbGRlcl9yb3cpCi0gICAgZXhp
dF93aXRoX2Vycm9yKCdCdWlsZGVyTm90Rm91bmQnKTsKLSRidWlsZGVyX2lkID0gJGJ1aWxkZXJf
cm93WydpZCddOworICAgICRnZW5lcmF0b3IgPSBuZXcgUmVzdWx0c0pTT05HZW5lcmF0b3IoJGRi
LCAkYnVpbGRlcl9pZCk7CiAKLSRhbGxfcmVzdWx0cyA9ICRkYi0+cXVlcnkoCi0iU0VMRUNUIHJl
c3VsdHMuKiwgYnVpbGRzLiosIGFycmF5X2FnZygoYnVpbGRfcmV2aXNpb25zLnJlcG9zaXRvcnks
IGJ1aWxkX3JldmlzaW9ucy52YWx1ZSwgYnVpbGRfcmV2aXNpb25zLnRpbWUpKSBBUyByZXZpc2lv
bnMKLSAgICBGUk9NIHJlc3VsdHMsIGJ1aWxkcywgYnVpbGRfcmV2aXNpb25zCi0gICAgV0hFUkUg
YnVpbGRfcmV2aXNpb25zLmJ1aWxkID0gYnVpbGRzLmlkIEFORCByZXN1bHRzLmJ1aWxkID0gYnVp
bGRzLmlkIEFORCBidWlsZHMuYnVpbGRlciA9ICQxCi0gICAgQU5EIGJ1aWxkcy5zdGFydF90aW1l
ID4gbm93KCkgLSBpbnRlcnZhbCAnJG51bWJlcl9vZl9kYXlzIGRheXMnCi0gICAgR1JPVVAgQlkg
cmVzdWx0cy5pZCwgYnVpbGRzLmlkIE9SREVSIEJZIHJlc3VsdHMudGVzdCwgbWF4KGJ1aWxkX3Jl
dmlzaW9ucy50aW1lKSBERVNDIiwgYXJyYXkoJGJ1aWxkZXJfaWQpKTsKKyAgICBpZiAoJGdlbmVy
YXRvci0+Z2VuZXJhdGUoKSkKKyAgICAgICAgZXhpdF93aXRoX3N1Y2Nlc3MoKTsKKyAgICBlbHNl
CisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignUmVzdWx0c05vdEZvdW5kJyk7Cit9CiAKLWlmICgh
JGFsbF9yZXN1bHRzKQotICAgIGV4aXRfd2l0aF9lcnJvcignUmVzdWx0c05vdEZvdW5kJyk7Citt
YWluKCk7CiAKLS8vIFRvIGNvbnNlcnZlIG1lbW9yeSwgd2Ugc2VyaWFsaXplIHRlc3RzIGF0IGEg
dGltZS4KLWVjaG8gIntcInN0YXR1c1wiOiBcIk9LXCIsIFwiYnVpbGRlcnNcIjoge1wiJGJ1aWxk
ZXJfaWRcIjp7IjsKLSRjdXJyZW50VGVzdCA9IE5VTEw7Ci0kaSA9IDA7Ci13aGlsZSAoJHJlc3Vs
dCA9ICRkYi0+ZmV0Y2hfbmV4dF9yb3coJGFsbF9yZXN1bHRzKSkgewotICAgIGlmICgkcmVzdWx0
Wyd0ZXN0J10gIT0gJGN1cnJlbnRUZXN0KSB7Ci0gICAgICAgIGlmICgkY3VycmVudFRlc3QpCi0g
ICAgICAgICAgICBlY2hvICddLCc7Ci0gICAgICAgICRjdXJyZW50VGVzdCA9ICRyZXN1bHRbJ3Rl
c3QnXTsKLSAgICAgICAgZWNobyAiXCIkY3VycmVudFRlc3RcIjogWyI7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIGVjaG8gJywnOwotICAgIGVjaG8ganNvbl9lbmNvZGUoZm9ybWF0X3Jlc3VsdCgkcmVz
dWx0KSwgdHJ1ZSk7Ci19Ci1pZiAoJGN1cnJlbnRUZXN0KQotICAgIGVjaG8gJ10nOwotZWNobyAn
fX19JzsKLQogPz4KSW5kZXg6IFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9hcGkvcmVwb3J0LnBocAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvYXBpL3JlcG9ydC5waHAJKHJldmlz
aW9uIDE1Nzk4NSkKKysrIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9hcGkvcmVwb3J0LnBocAkod29y
a2luZyBjb3B5KQpAQCAtMTMsNiArMTMsOSBAQAogICAgICdyZXZpc2lvbnMnID0+ICcvXi4rPyQv
JywKICAgICAnc3RhcnRfdGltZScgPT4gJy9eWzAtOV0rKFwuWzAtOV0rKT8kLycsCiAgICAgJ2Vu
ZF90aW1lJyA9PiAnL15bMC05XSsoXC5bMC05XSspPyQvJykpOworJG1hc3RlciA9ICRfUE9TVFsn
bWFzdGVyJ107CiskYnVpbGRlcl9uYW1lID0gJF9QT1NUWydidWlsZGVyX25hbWUnXTsKKyRidWls
ZF9udW1iZXIgPSBpbnR2YWwoJF9QT1NUWydidWlsZF9udW1iZXInXSk7CiAKIGlmICghYXJyYXlf
a2V5X2V4aXN0cygnZmlsZScsICRfRklMRVMpIG9yICFhcnJheV9rZXlfZXhpc3RzKCd0bXBfbmFt
ZScsICRfRklMRVNbJ2ZpbGUnXSkgb3IgY291bnQoJF9GSUxFU1snZmlsZSddWyd0bXBfbmFtZSdd
KSA8PSAwKQogICAgIGV4aXRfd2l0aF9lcnJvcignUmVzdWx0c0pTT05Ob3RJbmNsdWRlZCcpOwpA
QCAtMzMsOSArMzYsMTMgQEAKICRzdGFydF90aW1lID0gZmxvYXRfdG9fdGltZSgkX1BPU1RbJ3N0
YXJ0X3RpbWUnXSk7CiAkZW5kX3RpbWUgPSBmbG9hdF90b190aW1lKCRfUE9TVFsnZW5kX3RpbWUn
XSk7CiAKLSRidWlsZF9pZCA9IGFkZF9idWlsZCgkZGIsICRfUE9TVFsnbWFzdGVyJ10sICRfUE9T
VFsnYnVpbGRlcl9uYW1lJ10sIGludHZhbCgkX1BPU1RbJ2J1aWxkX251bWJlciddKSk7CiskYnVp
bGRlcl9pZCA9IGFkZF9idWlsZGVyKCRkYiwgJG1hc3RlciwgJGJ1aWxkZXJfbmFtZSk7CitpZiAo
ISRidWlsZGVyX2lkKQorICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9JbnNlcnRCdWlsZGVy
JywgYXJyYXkoJ21hc3RlcicgPT4gJG1hc3RlciwgJ2J1aWxkZXJOYW1lJyA9PiAkYnVpbGRlcl9u
YW1lKSk7CisKKyRidWlsZF9pZCA9IGFkZF9idWlsZCgkZGIsICRidWlsZGVyX2lkLCAkYnVpbGRf
bnVtYmVyKTsKIGlmICghJGJ1aWxkX2lkKQotICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9J
bnNlcnRCdWlsZCcsIGFycmF5KCdtYXN0ZXInID0+ICRfUE9TVFsnbWFzdGVyJ10sICdidWlsZGVy
TmFtZScgPT4gJF9QT1NUWydidWlsZGVyX25hbWUnXSwgJ2J1aWxkTnVtYmVyJyA9PiAkX1BPU1Rb
J2J1aWxkX251bWJlciddKSk7CisgICAgZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0luc2VydEJ1
aWxkJywgYXJyYXkoJ2J1aWxkZXJJZCcgPT4gJGJ1aWxkZXJfaWQsICdidWlsZE51bWJlcicgPT4g
JGJ1aWxkX251bWJlcikpOwogCiBmb3JlYWNoICgkcmV2aXNpb25zIGFzICRyZXBvc2l0b3J5X25h
bWUgPT4gJHJldmlzaW9uX2RhdGEpIHsKICAgICAkcmVwb3NpdG9yeV9pZCA9ICRkYi0+c2VsZWN0
X29yX2luc2VydF9yb3coJ3JlcG9zaXRvcmllcycsIE5VTEwsIGFycmF5KCduYW1lJyA9PiAkcmVw
b3NpdG9yeV9uYW1lKSk7CkBAIC01NSw2ICs2MiwxNCBAQAogaWYgKCFzdG9yZV90ZXN0X3Jlc3Vs
dHMoJGRiLCAkdGVzdF9yZXN1bHRzLCAkYnVpbGRfaWQsICRzdGFydF90aW1lLCAkZW5kX3RpbWUs
ICRzbGF2ZV9pZCkpCiAgICAgZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb1N0b3JlUmVzdWx0cycs
IGFycmF5KCdidWlsZElkJyA9PiAkYnVpbGRfaWQpKTsKIAotZXhpdF93aXRoX3N1Y2Nlc3MoKTsK
K2VjaG9fc3VjY2VzcygpOwogCitvYl9lbmRfZmx1c2goKTsKK2ZsdXNoKCk7CitpZiAoZnVuY3Rp
b25fZXhpc3RzKCdmYXN0Y2dpX2ZpbmlzaF9yZXF1ZXN0JykpCisgICAgZmFzdGNnaV9maW5pc2hf
cmVxdWVzdCgpOworCiskZ2VuZXJhdG9yID0gbmV3IFJlc3VsdHNKU09OR2VuZXJhdG9yKCRkYiwg
JGJ1aWxkZXJfaWQpOworJGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKKwogPz4KSW5kZXg6IFdlYnNp
dGVzL3Rlc3QtcmVzdWx0cy9hcGkvcmVzdWx0cy5waHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMv
dGVzdC1yZXN1bHRzL2FwaS9yZXN1bHRzLnBocAkocmV2aXNpb24gMTU3OTg1KQorKysgV2Vic2l0
ZXMvdGVzdC1yZXN1bHRzL2FwaS9yZXN1bHRzLnBocAkod29ya2luZyBjb3B5KQpAQCAtMTksNiAr
MTksMTAgQEAKIGlmICghJHJlc3VsdF9yb3dzKQogICAgIGV4aXRfd2l0aF9lcnJvcignUmVzdWx0
c05vdEZvdW5kJyk7CiAKLWV4aXRfd2l0aF9zdWNjZXNzKGZvcm1hdF9yZXN1bHRfcm93cygkcmVz
dWx0X3Jvd3MpKTsKKyRidWlsZGVycyA9IGFycmF5KCk7Citmb3JlYWNoICgkcmVzdWx0X3Jvd3Mg
YXMgJHJlc3VsdCkKKyAgICBhcnJheV9wdXNoKGFycmF5X2Vuc3VyZV9pdGVtX2hhc19hcnJheSgk
YnVpbGRlcnMsICRyZXN1bHRbJ2J1aWxkZXInXSksIGZvcm1hdF9yZXN1bHQoJHJlc3VsdCkpOwog
CitleGl0X3dpdGhfc3VjY2VzcyhhcnJheSgnYnVpbGRlcnMnID0+ICRidWlsZGVycykpOworCiA/
PgpJbmRleDogV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luY2x1ZGUvY29uZmlnLmpzb24KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luY2x1ZGUvY29uZmlnLmpzb24JKHJldmlz
aW9uIDE1Nzk4NSkKKysrIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9pbmNsdWRlL2NvbmZpZy5qc29u
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogewogICAgICJkZWJ1ZyI6IHRydWUsCiAg
ICAgImpzb25DYWNoZU1heEFnZSI6IDYwMCwKKyAgICAiZGF0YURpcmVjdG9yeSI6ICIuLi9kYXRh
IiwKICAgICAiZGF0YWJhc2UiOiB7CiAgICAgICAgICJob3N0IjogImxvY2FsaG9zdCIsCiAgICAg
ICAgICJwb3J0IjogIjU0MzIiLApJbmRleDogV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luY2x1ZGUv
ZGIucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9pbmNsdWRlL2RiLnBo
cAkocmV2aXNpb24gMTU3OTg1KQorKysgV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luY2x1ZGUvZGIu
cGhwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxNSBAQAogICAgIHJldHVybiAkX2NvbmZp
Z1ska2V5XTsKIH0KIAorZnVuY3Rpb24gY29uZmlnUGF0aCgka2V5LCAkYWRkaXRpb25hbF9wYXRo
ID0gJycpIHsKKyAgICAkcmVsYXRpdmVfcGF0aCA9IGNvbmZpZygka2V5KTsKKyAgICBpZiAoISRy
ZWxhdGl2ZV9wYXRoKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoJGFkZGl0aW9uYWxf
cGF0aCkKKyAgICAgICAgJGFkZGl0aW9uYWxfcGF0aCA9ICcvJyAuICRhZGRpdGlvbmFsX3BhdGg7
CisgICAgcmV0dXJuIHJlYWxwYXRoKGRpcm5hbWUoX19GSUxFX18pIC4gIi8kcmVsYXRpdmVfcGF0
aCIpIC4gJGFkZGl0aW9uYWxfcGF0aDsKK30KKwogaWYgKGNvbmZpZygnZGVidWcnKSkKICAgICBp
bmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsICdPbicpOwogCkluZGV4OiBXZWJzaXRlcy90ZXN0LXJl
c3VsdHMvaW5jbHVkZS9qc29uLXNoYXJlZC5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvdGVz
dC1yZXN1bHRzL2luY2x1ZGUvanNvbi1zaGFyZWQucGhwCShyZXZpc2lvbiAxNTc5ODUpCisrKyBX
ZWJzaXRlcy90ZXN0LXJlc3VsdHMvaW5jbHVkZS9qc29uLXNoYXJlZC5waHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzLDkgKzEzLDEzIEBACiAgICAgZXhpdCgxKTsKIH0KIAotZnVuY3Rpb24gZXhpdF93
aXRoX3N1Y2Nlc3MoJGRldGFpbHMgPSBhcnJheSgpKSB7CitmdW5jdGlvbiBlY2hvX3N1Y2Nlc3Mo
JGRldGFpbHMgPSBhcnJheSgpKSB7CiAgICAgJGRldGFpbHNbJ3N0YXR1cyddID0gJ09LJzsKICAg
ICBlY2hvIGpzb25fZW5jb2RlKCRkZXRhaWxzKTsKK30KKworZnVuY3Rpb24gZXhpdF93aXRoX3N1
Y2Nlc3MoJGRldGFpbHMgPSBhcnJheSgpKSB7CisgICAgZWNob19zdWNjZXNzKCRkZXRhaWxzKTsK
ICAgICBleGl0KDApOwogfQogCkluZGV4OiBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvaW5jbHVkZS90
ZXN0LXJlc3VsdHMucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Rlc3QtcmVzdWx0cy9pbmNs
dWRlL3Rlc3QtcmVzdWx0cy5waHAJKHJldmlzaW9uIDE1Nzk4NSkKKysrIFdlYnNpdGVzL3Rlc3Qt
cmVzdWx0cy9pbmNsdWRlL3Rlc3QtcmVzdWx0cy5waHAJKHdvcmtpbmcgY29weSkKQEAgLTgsMTQg
KzgsMTQgQEAKICAgICByZXR1cm4gJHRpbWU7CiB9CiAKLWZ1bmN0aW9uIGFkZF9idWlsZCgkZGIs
ICRtYXN0ZXIsICRidWlsZGVyX25hbWUsICRidWlsZF9udW1iZXIpIHsKK2Z1bmN0aW9uIGFkZF9i
dWlsZGVyKCRkYiwgJG1hc3RlciwgJGJ1aWxkZXJfbmFtZSkgewogICAgIGlmICghaW5fYXJyYXko
JG1hc3RlciwgY29uZmlnKCdtYXN0ZXJzJykpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAg
ICRidWlsZGVyX2lkID0gJGRiLT5zZWxlY3Rfb3JfaW5zZXJ0X3JvdygnYnVpbGRlcnMnLCBOVUxM
LCBhcnJheSgnbWFzdGVyJyA9PiAkbWFzdGVyLCAnbmFtZScgPT4gJGJ1aWxkZXJfbmFtZSkpOwot
ICAgIGlmICghJGJ1aWxkZXJfaWQpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAk
ZGItPnNlbGVjdF9vcl9pbnNlcnRfcm93KCdidWlsZGVycycsIE5VTEwsIGFycmF5KCdtYXN0ZXIn
ID0+ICRtYXN0ZXIsICduYW1lJyA9PiAkYnVpbGRlcl9uYW1lKSk7Cit9CiAKK2Z1bmN0aW9uIGFk
ZF9idWlsZCgkZGIsICRidWlsZGVyX2lkLCAkYnVpbGRfbnVtYmVyKSB7CiAgICAgcmV0dXJuICRk
Yi0+c2VsZWN0X29yX2luc2VydF9yb3coJ2J1aWxkcycsIE5VTEwsIGFycmF5KCdidWlsZGVyJyA9
PiAkYnVpbGRlcl9pZCwgJ251bWJlcicgPT4gJGJ1aWxkX251bWJlcikpOwogfQogCkBAIC0xMDUs
MTMgKzEwNSwxNjUgQEAKICAgICAgICAgJ21vZGlmaWVycycgPT4gJHJlc3VsdFsnbW9kaWZpZXJz
J10pOwogfQogCi1mdW5jdGlvbiBmb3JtYXRfcmVzdWx0X3Jvd3MoJHJlc3VsdF9yb3dzKSB7Ci0g
ICAgJGJ1aWxkZXJzID0gYXJyYXkoKTsKLSAgICBmb3JlYWNoICgkcmVzdWx0X3Jvd3MgYXMgJHJl
c3VsdCkgewotICAgICAgICBhcnJheV9wdXNoKGFycmF5X2Vuc3VyZV9pdGVtX2hhc19hcnJheShh
cnJheV9lbnN1cmVfaXRlbV9oYXNfYXJyYXkoJGJ1aWxkZXJzLCAkcmVzdWx0WydidWlsZGVyJ10p
LCAkcmVzdWx0Wyd0ZXN0J10pLAotICAgICAgICAgICAgZm9ybWF0X3Jlc3VsdCgkcmVzdWx0KSk7
CithYnN0cmFjdCBjbGFzcyBSZXN1bHRzSlNPTldyaXRlciB7CisgICAgcHJpdmF0ZSAkZnA7Cisg
ICAgcHJpdmF0ZSAkZW1pdHRlZF9yZXN1bHRzOworCisgICAgcHVibGljIGZ1bmN0aW9uIF9fY29u
c3RydWN0KCRmcCkgeworICAgICAgICAkdGhpcy0+ZnAgPSAkZnA7CisgICAgICAgICR0aGlzLT5l
bWl0dGVkX3Jlc3VsdHMgPSBGQUxTRTsKICAgICB9Ci0gICAgcmV0dXJuIGFycmF5KCdidWlsZGVy
cycgPT4gJGJ1aWxkZXJzKTsKKworICAgIHB1YmxpYyBmdW5jdGlvbiBzdGFydCgkYnVpbGRlcl9p
ZCkgeworICAgICAgICBmd3JpdGUoJHRoaXMtPmZwLCAie1wic3RhdHVzXCI6IFwiT0tcIiwgXCJi
dWlsZGVyc1wiOiB7XCIkYnVpbGRlcl9pZFwiOnsiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgZnVu
Y3Rpb24gZW5kKCR0b3RhbF90aW1lKSB7CisgICAgICAgIGZ3cml0ZSgkdGhpcy0+ZnAsICJ9fSwg
XCJ0b3RhbEdlbmVyYXRpb25UaW1lXCI6ICR0b3RhbF90aW1lfSIpOworICAgIH0KKworICAgIHB1
YmxpYyBmdW5jdGlvbiBhZGRfcmVzdWx0c19mb3JfdGVzdF9pZl9tYXRjaGVzKCRjdXJyZW50X3Rl
c3QsICRjdXJyZW50X3Jlc3VsdHMpIHsKKyAgICAgICAgaWYgKCFjb3VudCgkY3VycmVudF9yZXN1
bHRzKSB8fCAkdGhpcy0+cGFzc19mb3JfZmFpbHVyZV90eXBlKCRjdXJyZW50X3Jlc3VsdHMpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBGSVhNRTogV2h5IGRvIHdlIG5lZWQgdG8g
Y2hlY2sgdGhlIGNvdW50PworCisgICAgICAgICRwcmVmaXggPSAkdGhpcy0+ZW1pdHRlZF9yZXN1
bHRzID8gIixcbiIgOiAiIjsKKyAgICAgICAgZndyaXRlKCR0aGlzLT5mcCwgIiRwcmVmaXhcIiRj
dXJyZW50X3Rlc3RcIjoiKTsKKyAgICAgICAgZndyaXRlKCR0aGlzLT5mcCwganNvbl9lbmNvZGUo
JGN1cnJlbnRfcmVzdWx0cywgdHJ1ZSkpOworCisgICAgICAgICR0aGlzLT5lbWl0dGVkX3Jlc3Vs
dHMgPSBUUlVFOworICAgIH0KKworICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBwYXNz
X2Zvcl9mYWlsdXJlX3R5cGUoJiRyZXN1bHRzKTsKIH0KIAorY2xhc3MgRmFpbGluZ1Jlc3VsdHNK
U09OV3JpdGVyIGV4dGVuZHMgUmVzdWx0c0pTT05Xcml0ZXIgeworICAgIHB1YmxpYyBmdW5jdGlv
biBfX2NvbnN0cnVjdCgkZnApIHsgcGFyZW50OjpfX2NvbnN0cnVjdCgkZnApOyB9CisgICAgcHJv
dGVjdGVkIGZ1bmN0aW9uIHBhc3NfZm9yX2ZhaWx1cmVfdHlwZSgmJHJlc3VsdHMpIHsKKyAgICAg
ICAgcmV0dXJuICRyZXN1bHRzWzBdWydhY3R1YWwnXSA9PSAnUEFTUyc7CisgICAgfQorfQorCitj
bGFzcyBGbGFreVJlc3VsdHNKU09OV3JpdGVyIGV4dGVuZHMgUmVzdWx0c0pTT05Xcml0ZXIgewor
ICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZnApIHsgcGFyZW50OjpfX2NvbnN0cnVj
dCgkZnApOyB9CisgICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHBhc3NfZm9yX2ZhaWx1cmVfdHlwZSgm
JHJlc3VsdHMpIHsKKyAgICAgICAgJGxhc3RfaW5kZXggPSBjb3VudCgkcmVzdWx0cykgLSAxOwor
ICAgICAgICBmb3IgKCRpID0gMTsgJGkgPCAkbGFzdF9pbmRleDsgJGkrKykgeworICAgICAgICAg
ICAgJHByZXZpb3VzX2FjdHVhbCA9ICRyZXN1bHRzWyRpIC0gMV1bJ2FjdHVhbCddOworICAgICAg
ICAgICAgJG5leHRfYWN0dWFsID0gJHJlc3VsdHNbJGkgKyAxXVsnYWN0dWFsJ107CisgICAgICAg
ICAgICBpZiAoJHByZXZpb3VzX2FjdHVhbCA9PSAkbmV4dF9hY3R1YWwgJiYgJHJlc3VsdHNbJGld
WydhY3R1YWwnXSAhPSAkcHJldmlvdXNfYWN0dWFsKSB7CisgICAgICAgICAgICAgICAgJHJlc3Vs
dHNbJGldWydvbmVPZmZDaGFuZ2UnXSA9IFRSVUU7CisgICAgICAgICAgICAgICAgcmV0dXJuIEZB
TFNFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBUUlVFOworICAg
IH0KK30KKworY2xhc3MgV3JvbmdFeHBlY3RhdGlvbnNSZXN1bHRzSlNPTldyaXRlciBleHRlbmRz
IFJlc3VsdHNKU09OV3JpdGVyIHsKKyAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGZw
KSB7IHBhcmVudDo6X19jb25zdHJ1Y3QoJGZwKTsgfQorICAgIHByb3RlY3RlZCBmdW5jdGlvbiBw
YXNzX2Zvcl9mYWlsdXJlX3R5cGUoJiRyZXN1bHRzKSB7CisgICAgICAgICRsYXRlc3RfZXhwZWN0
ZWRfcmVzdWx0ID0gJHJlc3VsdHNbMF1bJ2V4cGVjdGVkJ107CisgICAgICAgICRsYXRlc3RfYWN0
dWFsX3Jlc3VsdCA9ICRyZXN1bHRzWzBdWydhY3R1YWwnXTsKKworICAgICAgICBpZiAoJGxhdGVz
dF9leHBlY3RlZF9yZXN1bHQgPT0gJGxhdGVzdF9hY3R1YWxfcmVzdWx0KQorICAgICAgICAgICAg
cmV0dXJuIFRSVUU7CisKKyAgICAgICAgJHRva2VucyA9IGV4cGxvZGUoJyAnLCAkbGF0ZXN0X2V4
cGVjdGVkX3Jlc3VsdCk7CisgICAgICAgIHJldHVybiBhcnJheV9zZWFyY2goJGxhdGVzdF9hY3R1
YWxfcmVzdWx0LCAkdG9rZW5zKSAhPT0gRkFMU0UKKyAgICAgICAgICAgIHx8ICgoJGxhdGVzdF9h
Y3R1YWxfcmVzdWx0ID09ICdURVhUJyB8fCAkbGF0ZXN0X2FjdHVhbF9yZXN1bHQgPT0gJ1RFWFQr
SU1BR0UnKSAmJiBhcnJheV9zZWFyY2goJ0ZBSUwnLCAkdG9rZW5zKSAhPT0gRkFMU0UpOworICAg
IH0KK30KKworY2xhc3MgUmVzdWx0c0pTT05HZW5lcmF0b3IgeworICAgIHByaXZhdGUgJGRiOwor
ICAgIHByaXZhdGUgJGJ1aWxkZXJfaWQ7CisKKyAgICBjb25zdCBNQVhJTVVNX05VTUJFUl9PRl9E
QVlTID0gMzA7CisKKyAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGRiLCAkYnVpbGRl
cl9pZCkKKyAgICB7CisgICAgICAgICR0aGlzLT5kYiA9ICRkYjsKKyAgICAgICAgJHRoaXMtPmJ1
aWxkZXJfaWQgPSAkYnVpbGRlcl9pZDsKKyAgICB9CisKKyAgICBwdWJsaWMgZnVuY3Rpb24gZ2Vu
ZXJhdGUoKQorICAgIHsKKyAgICAgICAgJHN0YXJ0X3RpbWUgPSBtaWNyb3RpbWUodHJ1ZSk7CisK
KyAgICAgICAgaWYgKCEkdGhpcy0+YnVpbGRlcl9pZCkKKyAgICAgICAgICAgIHJldHVybiBGQUxT
RTsKKworICAgICAgICAkbnVtYmVyX29mX2RheXMgPSBzZWxmOjpNQVhJTVVNX05VTUJFUl9PRl9E
QVlTOworICAgICAgICAkYWxsX3Jlc3VsdHMgPSAkdGhpcy0+ZGItPnF1ZXJ5KAorICAgICAgICAi
U0VMRUNUIHJlc3VsdHMuKiwgYnVpbGRzLiogRlJPTSByZXN1bHRzCisgICAgICAgICAgICBKT0lO
IChTRUxFQ1QgYnVpbGRzLiosIGFycmF5X2FnZygoYnVpbGRfcmV2aXNpb25zLnJlcG9zaXRvcnks
IGJ1aWxkX3JldmlzaW9ucy52YWx1ZSwgYnVpbGRfcmV2aXNpb25zLnRpbWUpKSBBUyByZXZpc2lv
bnMKKyAgICAgICAgICAgICAgICAgICAgRlJPTSBidWlsZHMsIGJ1aWxkX3JldmlzaW9ucworICAg
ICAgICAgICAgICAgICAgICBXSEVSRSBidWlsZF9yZXZpc2lvbnMuYnVpbGQgPSBidWlsZHMuaWQg
QU5EIGJ1aWxkcy5idWlsZGVyID0gJDEgQU5EIGJ1aWxkcy5zdGFydF90aW1lID4gbm93KCkgLSBp
bnRlcnZhbCAnJG51bWJlcl9vZl9kYXlzIGRheXMnCisgICAgICAgICAgICAgICAgICAgIEdST1VQ
IEJZIGJ1aWxkcy5pZAorICAgICAgICAgICAgICAgICAgICBPUkRFUiBCWSBtYXgoYnVpbGRfcmV2
aXNpb25zLnRpbWUpIERFU0MpIGFzIGJ1aWxkcyBPTiByZXN1bHRzLmJ1aWxkID0gYnVpbGRzLmlk
CisgICAgICAgICAgICBPUkRFUiBCWSByZXN1bHRzLnRlc3QiLCBhcnJheSgkdGhpcy0+YnVpbGRl
cl9pZCkpOworICAgICAgICBpZiAoISRhbGxfcmVzdWx0cykKKyAgICAgICAgICAgIHJldHVybiBG
QUxTRTsKKworICAgICAgICAkZmFpbGluZ19qc29uX2ZwID0gJHRoaXMtPm9wZW5fanNvbl9mb3Jf
ZmFpbHVyZV90eXBlKCdmYWlsaW5nJyk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAkZmxh
a3lfanNvbl9mcCA9ICR0aGlzLT5vcGVuX2pzb25fZm9yX2ZhaWx1cmVfdHlwZSgnZmxha3knKTsK
KyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgJHdyb25nZXhwZWN0YXRpb25zX2pz
b25fZnAgPSAkdGhpcy0+b3Blbl9qc29uX2Zvcl9mYWlsdXJlX3R5cGUoJ3dyb25nZXhwZWN0YXRp
b25zJyk7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICR0aGlzLT53cml0ZV9qc29ucygkYWxsX3Jlc3VsdHMsIGFycmF5KAorICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3IEZhaWxpbmdSZXN1bHRzSlNPTldyaXRlcigkZmFpbGluZ19qc29uX2ZwKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGbGFreVJlc3VsdHNKU09OV3JpdGVyKCRmbGFr
eV9qc29uX2ZwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXcm9uZ0V4cGVjdGF0aW9u
c1Jlc3VsdHNKU09OV3JpdGVyKCR3cm9uZ2V4cGVjdGF0aW9uc19qc29uX2ZwKSksICRzdGFydF90
aW1lKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGV4Y2VwdGlvbikgewor
ICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJHdyb25nZXhwZWN0YXRpb25zX2pzb25fZnApOwor
ICAgICAgICAgICAgICAgICAgICB0aHJvdyAkZXhjZXB0aW9uOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZXhjZXB0aW9uKSB7CisgICAgICAgICAg
ICAgICAgZmNsb3NlKCRmbGFreV9qc29uX2ZwKTsKKyAgICAgICAgICAgICAgICB0aHJvdyAkZXhj
ZXB0aW9uOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGV4Y2Vw
dGlvbikgeworICAgICAgICAgICAgZmNsb3NlKCRmYWlsaW5nX2pzb25fZnApOworICAgICAgICAg
ICAgdGhyb3cgJGV4Y2VwdGlvbjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gRkFMU0U7Cisg
ICAgfQorCisgICAgcHJpdmF0ZSBmdW5jdGlvbiBvcGVuX2pzb25fZm9yX2ZhaWx1cmVfdHlwZSgk
ZmFpbHVyZV90eXBlKSB7CisgICAgICAgICRmYWlsaW5nX2pzb25fcGF0aCA9IGNvbmZpZ1BhdGgo
J2RhdGFEaXJlY3RvcnknLCAkdGhpcy0+YnVpbGRlcl9pZCAuICItJGZhaWx1cmVfdHlwZS5qc29u
Iik7CisgICAgICAgIGlmICghJGZhaWxpbmdfanNvbl9wYXRoKQorICAgICAgICAgICAgZXhpdF93
aXRoX2Vycm9yKCdGYWlsZWRUb0RldGVybWluZVJlc3VsdHNKU09OUGF0aCcsIGFycmF5KCdidWls
ZGVySWQnID0+ICR0aGlzLT5idWlsZGVyX2lkLCAnZmFpbHVyZVR5cGUnID0+ICRmYWlsdXJlX3R5
cGUpKTsKKyAgICAgICAgJGZwID0gZm9wZW4oJGZhaWxpbmdfanNvbl9wYXRoLCAndycpOworICAg
ICAgICBpZiAoISRmcCkKKyAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9PcGVu
UmVzdWx0c0pTT04nLCBhcnJheSgnYnVpbGRlcklkJyA9PiAkdGhpcy0+YnVpbGRlcl9pZCwgJ2Zh
aWx1cmVUeXBlJyA9PiAkZmFpbHVyZV90eXBlKSk7CisgICAgICAgIHJldHVybiAkZnA7CisgICAg
fQorCisgICAgcHJpdmF0ZSBmdW5jdGlvbiB3cml0ZV9qc29ucygkYWxsX3Jlc3VsdHMsICR3cml0
ZXJzLCAkc3RhcnRfdGltZSkgeworICAgICAgICBmb3JlYWNoICgkd3JpdGVycyBhcyAkd3JpdGVy
KQorICAgICAgICAgICAgJHdyaXRlci0+c3RhcnQoJHRoaXMtPmJ1aWxkZXJfaWQpOworICAgICAg
ICAkY3VycmVudF90ZXN0ID0gTlVMTDsKKyAgICAgICAgJGN1cnJlbnRfcmVzdWx0cyA9IGFycmF5
KCk7CisgICAgICAgIHdoaWxlICgkcmVzdWx0ID0gJHRoaXMtPmRiLT5mZXRjaF9uZXh0X3Jvdygk
YWxsX3Jlc3VsdHMpKSB7CisgICAgICAgICAgICBpZiAoJHJlc3VsdFsndGVzdCddICE9ICRjdXJy
ZW50X3Rlc3QpIHsKKyAgICAgICAgICAgICAgICBpZiAoJGN1cnJlbnRfdGVzdCkgeworICAgICAg
ICAgICAgICAgICAgICBmb3JlYWNoICgkd3JpdGVycyBhcyAkd3JpdGVyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgJHdyaXRlci0+YWRkX3Jlc3VsdHNfZm9yX3Rlc3RfaWZfbWF0Y2hlcygkY3Vy
cmVudF90ZXN0LCAkY3VycmVudF9yZXN1bHRzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgJGN1cnJlbnRfcmVzdWx0cyA9IGFycmF5KCk7CisgICAgICAgICAgICAgICAgJGN1
cnJlbnRfdGVzdCA9ICRyZXN1bHRbJ3Rlc3QnXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGFycmF5X3B1c2goJGN1cnJlbnRfcmVzdWx0cywgZm9ybWF0X3Jlc3VsdCgkcmVzdWx0KSk7Cisg
ICAgICAgIH0KKworICAgICAgICAkdG90YWxfdGltZSA9IG1pY3JvdGltZSh0cnVlKSAtICRzdGFy
dF90aW1lOworICAgICAgICBmb3JlYWNoICgkd3JpdGVycyBhcyAkd3JpdGVyKQorICAgICAgICAg
ICAgJHdyaXRlci0+ZW5kKCR0b3RhbF90aW1lKTsKKworICAgICAgICByZXR1cm4gVFJVRTsKKyAg
ICB9Cit9CisKID8+CkluZGV4OiBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvaW5kZXguaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy90ZXN0LXJlc3VsdHMvaW5kZXguaHRtbAkocmV2aXNpb24gMTU3
OTg1KQorKysgV2Vic2l0ZXMvdGVzdC1yZXN1bHRzL2luZGV4Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDkgKzI5LDEwIEBACiA8ZGl2IGlkPSJidWlsZGVyc1ZpZXciPgogPGZvcm0+CiBTaG93
Ci08bGFiZWw+dGVzdHMgPHNlbGVjdCBpZD0iYnVpbGRlckZhaWx1cmVUeXBlVmlldyI+PG9wdGlv
bj5mYWlsaW5nPC9vcHRpb24+PG9wdGlvbj5mbGFreTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Indy
b25nZXhwZWN0YXRpb25zIj5oYXMgd3JvbmcgZXhwZWN0YXRpb25zPC9vcHRpb24+PC9zZWxlY3Q+
PC9sYWJlbD4KKzxsYWJlbD5hbGwgdGVzdHMgPHNlbGVjdCBpZD0iYnVpbGRlckZhaWx1cmVUeXBl
VmlldyI+PG9wdGlvbj5mYWlsaW5nPC9vcHRpb24+PG9wdGlvbj5mbGFreTwvb3B0aW9uPjxvcHRp
b24gdmFsdWU9Indyb25nZXhwZWN0YXRpb25zIj5oYXMgd3JvbmcgZXhwZWN0YXRpb25zPC9vcHRp
b24+PC9zZWxlY3Q+PC9sYWJlbD4KIDxsYWJlbD5vbiA8c2VsZWN0IGlkPSJidWlsZGVyTGlzdFZp
ZXciPjxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IGJ1aWxkZXI8L29wdGlvbj48L3NlbGVjdD48L2xh
YmVsPgotPGxhYmVsIGZvcj0iYnVpbGRlckRheXNWaWV3Ij5pbiB0aGUgbGFzdCA8c2VsZWN0IGlk
PSJidWlsZGVyRGF5c1ZpZXciPjxvcHRpb24+NTwvb3B0aW9uPjxvcHRpb24+MTU8L29wdGlvbj48
b3B0aW9uPjMwPC9vcHRpb24+PC9zZWxlY3Q+IGRheXM8L2xhYmVsPgorPGxhYmVsIGZvcj0iYnVp
bGRlckRheXNWaWV3Ij5mb3IKKzxzZWxlY3QgaWQ9ImJ1aWxkZXJEYXlzVmlldyIgZGlzYWJsZWQ+
PG9wdGlvbj41PC9vcHRpb24+PG9wdGlvbj4xNTwvb3B0aW9uPjxvcHRpb24gc2VsZWN0ZWQ+MzA8
L29wdGlvbj48L3NlbGVjdD4gZGF5czwvbGFiZWw+CiA8L2Zvcm0+CiA8ZGl2IGlkPSJidWlsZGVy
RmFpbGluZ1Rlc3RzVmlldyI+PC9kaXY+CiA8L2Rpdj4KQEAgLTYwLDYgKzYxLDcgQEAKICAgICB0
aGlzLl9jdXJyZW50QnVpbGRlckRheXMgPSBudWxsOwogICAgIHRoaXMuX29sZEhhc2ggPSBudWxs
OwogICAgIHRoaXMuX2J1aWxkZXJzID0ge307CisgICAgdGhpcy5fYnVpbGRlckJ5TmFtZSA9IHt9
OwogICAgIHRoaXMuX3NsYXZlcyA9IHt9OwogICAgIHRoaXMuX3JlcG9zaXRvcmllcyA9IHt9Owog
ICAgIHRoaXMuX3Rlc3RDYXRlZ29yaWVzID0ge307CkBAIC03MSw2ICs3MywxMCBAQAogCiBUZXN0
UmVzdWx0c1ZpZXcuc2V0QnVpbGRlcnMgPSBmdW5jdGlvbiAoYnVpbGRlcnMpIHsKICAgICB0aGlz
Ll9idWlsZGVycyA9IGJ1aWxkZXJzOworICAgIGZvciAodmFyIGJ1aWxkZXJJZCBpbiBidWlsZGVy
cykgeworICAgICAgICB2YXIgYnVpbGRlciA9IGJ1aWxkZXJzW2J1aWxkZXJJZF07CisgICAgICAg
IHRoaXMuX2J1aWxkZXJCeU5hbWVbYnVpbGRlci5uYW1lXSA9IGJ1aWxkZXI7CisgICAgfQogfQog
CiBUZXN0UmVzdWx0c1ZpZXcuc2V0U2xhdmVzID0gZnVuY3Rpb24gKHNsYXZlcykgewpAQCAtMTQx
LDcgKzE0Nyw4IEBACiAgICAgICAgICAgICBlbGVtZW50KCd1bCcsIFsKICAgICAgICAgICAgICAg
ICBlbGVtZW50KCdsaScsIFsnQnVpbGQgVGltZTogJyArIHJlc3VsdC5idWlsZC5mb3JtYXR0ZWRC
dWlsZFRpbWUoKV0pLAogICAgICAgICAgICAgICAgIGVsZW1lbnQoJ2xpJywgWydSZXZpc2lvbjog
J10uY29uY2F0KHJldmlzaW9uRGVzY3JpcHRpb24pKSwKLSAgICAgICAgICAgICAgICBlbGVtZW50
KCdsaScsIFsnQnVpbGQ6ICcsIGVsZW1lbnQoJ2EnLCB7J2hyZWYnOiByZXN1bHQuYnVpbGQuYnVp
bGRVcmwoKX0sIFtidWlsZE51bWJlcl0pXSksCisgICAgICAgICAgICAgICAgZWxlbWVudCgnbGkn
LCBbJ0J1aWxkOiAnLCBlbGVtZW50KCdhJywgeydocmVmJzogcmVzdWx0LmJ1aWxkLmJ1aWxkVXJs
KCl9LCBbYnVpbGROdW1iZXJdKSwgJyAoJywKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudCgn
YScsIHsnaHJlZic6IHJlc3VsdHNQYWdlfSwgWydyZXN1bHRzJ10pLCAnKSddKSwKICAgICAgICAg
ICAgICAgICBlbGVtZW50KCdsaScsIFsnQWN0dWFsOiAnICsgYWN0dWFsXSksCiAgICAgICAgICAg
ICAgICAgZWxlbWVudCgnbGknLCBbJ0V4cGVjdGVkOiAnICsgZXhwZWN0ZWRdKSwKICAgICAgICAg
ICAgIF0pCkBAIC0zMzcsMzcgKzM0NCw2IEBACiAgICAgICAgIHRoaXMudXBkYXRlTG9jYXRpb25I
YXNoKCk7CiB9CiAKLVRlc3RSZXN1bHRzVmlldy5fbWF0Y2hlc0ZhaWx1cmVUeXBlID0gZnVuY3Rp
b24gKHJlc3VsdHMsIGZhaWx1cmVUeXBlLCB0bikgewotICAgIGlmICghcmVzdWx0cy5sZW5ndGgp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2YXIgbGF0ZXN0QWN0dWFsUmVzdWx0ID0gcmVz
dWx0c1swXS5hY3R1YWw7Ci0gICAgdmFyIGxhdGVzdEV4cGVjdGVkUmVzdWx0ID0gcmVzdWx0c1sw
XS5leHBlY3RlZDsKLSAgICBzd2l0Y2ggKGZhaWx1cmVUeXBlKSB7Ci0gICAgY2FzZSAnZmFpbGlu
Zyc6Ci0gICAgICAgIHJldHVybiByZXN1bHRzWzBdLmFjdHVhbCAhPSAnUEFTUyc7Ci0gICAgY2Fz
ZSAnZmxha3knOgotICAgICAgICB2YXIgb2ZmT25lQ2hhbmdlQ291bnQgPSAwOwotICAgICAgICBm
b3IgKHZhciBpID0gMTsgaSArIDEgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAg
ICB2YXIgcHJldmlvdXNBY3R1YWwgPSByZXN1bHRzW2kgLSAxXS5hY3R1YWw7Ci0gICAgICAgICAg
ICB2YXIgbmV4dEFjdHVhbCA9IHJlc3VsdHNbaSArIDFdLmFjdHVhbDsKLSAgICAgICAgICAgIGlm
IChwcmV2aW91c0FjdHVhbCA9PSBuZXh0QWN0dWFsICYmIHJlc3VsdHNbaV0uYWN0dWFsICE9IHBy
ZXZpb3VzQWN0dWFsKQotICAgICAgICAgICAgICAgIG9mZk9uZUNoYW5nZUNvdW50Kys7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG9mZk9uZUNoYW5nZUNvdW50OyAvLyBIZXVyaXN0aWNzLgot
ICAgIGNhc2UgJ3dyb25nZXhwZWN0YXRpb25zJzoKLSAgICAgICAgaWYgKGxhdGVzdEV4cGVjdGVk
UmVzdWx0ID09IGxhdGVzdEFjdHVhbFJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgdmFyIGV4cGVjdGVkVG9rZW5zID0gbGF0ZXN0RXhwZWN0ZWRSZXN1bHQuc3BsaXQo
JyAnKTsKLSAgICAgICAgaWYgKGV4cGVjdGVkVG9rZW5zLmluZGV4T2YobGF0ZXN0QWN0dWFsUmVz
dWx0KSA+PSAwKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAobGF0ZXN0
QWN0dWFsUmVzdWx0ID09ICdURVhUJyB8fCBsYXRlc3RBY3R1YWxSZXN1bHQgPT0gJ1RFWFQrSU1B
R0UnICYmIGV4cGVjdGVkVG9rZW5zLmluZGV4T2YoJ0ZBSUwnKSA+PSAwKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KIFRlc3RSZXN1bHRzVmlldy5fcG9wdWxhdGVCdWlsZGVyUGFuZSA9IGZ1bmN0
aW9uKGJ1aWxkZXJOYW1lLCBmYWlsdXJlVHlwZSwgcmVzdWx0cywgc2VjdGlvbikgewogICAgIHZh
ciB0YWJsZSA9IGVsZW1lbnQoJ3RhYmxlJywgeydjbGFzcyc6ICdyZXN1bHRzVGFibGUgdGFibGVz
b3J0ZXInfSwgW2VsZW1lbnQoJ2NhcHRpb24nLCBbYnVpbGRlck5hbWVdKV0pOwogICAgIHZhciBy
ZXN1bHRzQnlCdWlsZGVyID0gcmVzdWx0c1snYnVpbGRlcnMnXTsKQEAgLTM4Nyw3ICszNjMsNyBA
QAogICAgIHZhciBzZWxmID0gdGhpczsKICAgICBmb3IgKHZhciB0ZXN0SWQgaW4gcmVzdWx0c0J5
VGVzdHMpIHsKICAgICAgICAgdmFyIHJlc3VsdHMgPSByZXN1bHRzQnlUZXN0c1t0ZXN0SWRdOwot
ICAgICAgICBpZiAoIXJlc3VsdHMubGVuZ3RoIHx8ICF0aGlzLl9tYXRjaGVzRmFpbHVyZVR5cGUo
cmVzdWx0cywgZmFpbHVyZVR5cGUsIHRoaXMuX2F2YWlsYWJsZVRlc3RzW3Rlc3RJZF0ubmFtZSkp
CisgICAgICAgIGlmICghcmVzdWx0cy5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgdGhpcy5fY3JlYXRlQnVpbGRzQW5kQ29tcHV0ZVNsb3duZXNzT2ZSZXN1bHRzKGJ1aWxk
ZXJJZCwgcmVzdWx0c0J5VGVzdHNbdGVzdElkXSk7CiAgICAgICAgIHZhciB0ZXN0ID0gdGhpcy5f
YXZhaWxhYmxlVGVzdHNbdGVzdElkXTsKQEAgLTQxNiw4ICszOTIsMTMgQEAKIAogICAgIHZhciBz
ZWxmID0gdGhpczsKICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgeGhy
Lm9wZW4oIkdFVCIsICdhcGkvZmFpbGluZy10ZXN0cy5waHA/YnVpbGRlcj0nICsgZXNjYXBlKGJ1
aWxkZXJOYW1lKSArICcmZGF5cz0nICsgbnVtYmVyT2ZEYXlzLCB0cnVlKTsgIAorICAgIHZhciBi
dWlsZGVySWQgPSB0aGlzLl9idWlsZGVyQnlOYW1lW2J1aWxkZXJOYW1lXS5pZDsKKyAgICB4aHIu
b3BlbignR0VUJywgJ2RhdGEvJyArIGJ1aWxkZXJJZCArICctJyArIGZhaWx1cmVUeXBlICsgJy5q
c29uJywgdHJ1ZSk7ICAKICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgaWYgKHhoci5zdGF0dXMgIT0gMjAwKSB7CisgICAgICAgICAgICBzZWN0aW9uLmFwcGVuZENo
aWxkKHRleHQoJ0ZhaWxlZCB0byBsb2FkIHJlc3VsdHMgZm9yICcgKyBidWlsZGVyTmFtZSArICc6
ICcgKyB4aHIuc3RhdHVzKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAg
ICAgdmFyIHJlc3BvbnNlID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2UpOwogICAgICAgICBzZWN0
aW9uLmlubmVySFRNTCA9ICcnOwogICAgICAgICBpZiAocmVzcG9uc2VbJ3N0YXR1cyddICE9ICdP
SycpIHsK
</data>
<flag name="review"
          id="237805"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>