<?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>80364</bug_id>
          
          <creation_ts>2012-03-05 18:57:11 -0800</creation_ts>
          <short_desc>Turn Runs class into a proper model to implement incremental JSON update</short_desc>
          <delta_ts>2012-03-07 20:27:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>79898</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>morrita</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>571357</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-05 18:57:11 -0800</bug_when>
    <thetext>Turn Runs class into a proper model to implement incremental JSON update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571360</commentid>
    <comment_count>1</comment_count>
      <attachid>130266</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-05 19:01:50 -0800</bug_when>
    <thetext>Created attachment 130266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571362</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-05 19:04:27 -0800</bug_when>
    <thetext>Once this patch is landed, there will be exactly two PersistentCaches left (I&apos;m going to delete the rest once the transition is complete).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573541</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-07 20:27:25 -0800</bug_when>
    <thetext>Committed r110142: &lt;http://trac.webkit.org/changeset/110142&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130266</attachid>
            <date>2012-03-05 19:01:50 -0800</date>
            <delta_ts>2012-03-07 20:02:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80364-20120305190149.patch</filename>
            <type>text/plain</type>
            <size>37269</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTgz
NSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTAz
LTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFR1cm4gUnVu
cyBjbGFzcyBpbnRvIGEgcHJvcGVyIG1vZGVsIHRvIGltcGxlbWVudCBpbmNyZW1lbnRhbCBKU09O
IHVwZGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODAzNjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
b3ZlIFJ1bnMgZnJvbSBqc29uX2dlbmVyYXRvcnMucHkgdG8gbW9kZWxzLnB5IGFuZCB0dXJuIGl0
IGludG8gYSBwcm9wZXIgTW9kZWwuCisKKyAgICAgICAgTm93IG1vc3QgSlNPTiByZXNwb25zZXMg
YXJlIGhlbGQgYnkgUnVucyBvYmplY3RzIGluc3RlYWQgb2YgUGVyc2lzdGVudENhY2hlLgorICAg
ICAgICBBZGRlZCBzb21lIHRlc3RzIGFyb3VuZCB1cGRhdGVfb3JfaW5zZXJ0IGFuZCBqc29uX2J5
X2lkcyB0byB0ZXN0IFBlcnNpc3RlbnRDYWNoZS1saWtlCisgICAgICAgIGJlaGF2aW9yIGJ1dCB0
aGVyZSBzaG91bGQgYmUgbm8gdXNlci12aXNpYmxlIGJlaGF2aW9yYWwgZGlmZmVyZW5jZXMuCisK
KyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9jb250cm9sbGVyLnB5
OgorICAgICAgICAoUnVuc1VwZGF0ZUhhbmRsZXIucG9zdCk6CisgICAgICAgIChDYWNoZWRSdW5z
SGFuZGxlci5nZXQpOgorICAgICAgICAoUnVuc0NoYXJ0SGFuZGxlci5wb3N0KToKKyAgICAgICAg
KiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9qc29uX2dlbmVyYXRvcnMucHk6Cisg
ICAgICAgIChNYW5pZmVzdEpTT05HZW5lcmF0b3IudmFsdWUpOgorICAgICAgICAqIFdlYnNpdGVz
L3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2pzb25fZ2VuZXJhdG9yc191bml0dGVzdC5weToKKyAg
ICAgICAgKE1hbmlmZXN0SlNPTkdlbmVyYXRvclRlc3QudGVzdF92YWx1ZV90d29fdGVzdHMpOgor
ICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL21vZGVscy5weToKKyAg
ICAgICAgKFRlc3QpOgorICAgICAgICAoUnVucyk6CisgICAgICAgIChSdW5zLl9nZW5lcmF0ZV9y
dW5zKToKKyAgICAgICAgKFJ1bnMuX2VudHJ5X2Zyb21fYnVpbGRfYW5kX3Jlc3VsdCk6CisgICAg
ICAgIChSdW5zLl9rZXlfbmFtZSk6CisgICAgICAgIChSdW5zLnVwZGF0ZV9vcl9pbnNlcnQpOgor
ICAgICAgICAoUnVucy5qc29uX2J5X2lkcyk6CisgICAgICAgIChSdW5zLnRvX2pzb24pOgorICAg
ICAgICAoUnVucy5jaGFydF9wYXJhbXMpOgorICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJm
LmFwcHNwb3QuY29tL21vZGVsc191bml0dGVzdC5weToKKyAgICAgICAgKFJ1bnNUZXN0KToKKyAg
ICAgICAgKFJ1bnNUZXN0LnNldFVwKToKKyAgICAgICAgKFJ1bnNUZXN0Ll9jcmVhdGVfcmVzdWx0
cyk6CisgICAgICAgIChSdW5zVGVzdC50ZXN0X2dlbmVyYXRlX3J1bnMpOgorICAgICAgICAoUnVu
c1Rlc3QudGVzdF91cGRhdGVfb3JfaW5zZXJ0KToKKyAgICAgICAgKFJ1bnNUZXN0LnRlc3RfanNv
bl9ieV9pZHMpOgorICAgICAgICAoUnVuc1Rlc3QudGVzdF90b19qc29uX3dpdGhvdXRfcmVzdWx0
cyk6CisgICAgICAgIChSdW5zVGVzdC50ZXN0X3RvX2pzb25fd2l0aF9yZXN1bHRzKToKKyAgICAg
ICAgKFJ1bnNUZXN0Ll9hc3NlcnRfZW50cnkpOgorICAgICAgICAoUnVuc1Rlc3QudGVzdF9ydW5f
ZnJvbV9idWlsZF9hbmRfcmVzdWx0KToKKyAgICAgICAgKFJ1bnNUZXN0LnRlc3RfcnVuX2Zyb21f
YnVpbGRfYW5kX3Jlc3VsdC5jcmVhdGVfYnVpbGQpOgorICAgICAgICAoUnVuc1Rlc3QudGVzdF9j
aGFydF9wYXJhbXNfd2l0aF92YWx1ZSk6CisgICAgICAgIChSdW5zVGVzdC50ZXN0X2NoYXJ0X3Bh
cmFtc193aXRoX3ZhbHVlLnNwbGl0X2FzX2ludCk6CisKIDIwMTItMDMtMDUgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGVyZi1vLW1hdGljIHNob3VsZCBtZW1j
YWNoZSBkYXNoYm9hcmQgaW1hZ2VzCkluZGV4OiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90
LmNvbS9jb250cm9sbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFw
cHNwb3QuY29tL2NvbnRyb2xsZXIucHkJKHJldmlzaW9uIDEwOTgyMSkKKysrIFdlYnNpdGVzL3dl
YmtpdC1wZXJmLmFwcHNwb3QuY29tL2NvbnRyb2xsZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDEyICszNCwxMiBAQCBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCBkYgogCiBmcm9t
IGpzb25fZ2VuZXJhdG9ycyBpbXBvcnQgRGFzaGJvYXJkSlNPTkdlbmVyYXRvcgogZnJvbSBqc29u
X2dlbmVyYXRvcnMgaW1wb3J0IE1hbmlmZXN0SlNPTkdlbmVyYXRvcgotZnJvbSBqc29uX2dlbmVy
YXRvcnMgaW1wb3J0IFJ1bnMKIGZyb20gbW9kZWxzIGltcG9ydCBCcmFuY2gKIGZyb20gbW9kZWxz
IGltcG9ydCBEYXNoYm9hcmRJbWFnZQorZnJvbSBtb2RlbHMgaW1wb3J0IFBlcnNpc3RlbnRDYWNo
ZQogZnJvbSBtb2RlbHMgaW1wb3J0IFBsYXRmb3JtCitmcm9tIG1vZGVscyBpbXBvcnQgUnVucwog
ZnJvbSBtb2RlbHMgaW1wb3J0IFRlc3QKLWZyb20gbW9kZWxzIGltcG9ydCBQZXJzaXN0ZW50Q2Fj
aGUKIGZyb20gbW9kZWxzIGltcG9ydCBtb2RlbF9mcm9tX251bWVyaWNfaWQKIAogCkBAIC0xMTYs
NyArMTE2LDcgQEAgY2xhc3MgUnVuc1VwZGF0ZUhhbmRsZXIod2ViYXBwMi5SZXF1ZXN0SAogICAg
ICAgICBhc3NlcnQgcGxhdGZvcm0KICAgICAgICAgYXNzZXJ0IHRlc3QKIAotICAgICAgICBQZXJz
aXN0ZW50Q2FjaGUuc2V0X2NhY2hlKFRlc3QuY2FjaGVfa2V5KHRlc3RfaWQsIGJyYW5jaF9pZCwg
cGxhdGZvcm1faWQpLCBSdW5zKGJyYW5jaCwgcGxhdGZvcm0sIHRlc3QubmFtZSkudG9fanNvbigp
KQorICAgICAgICBSdW5zLnVwZGF0ZV9vcl9pbnNlcnQoYnJhbmNoLCBwbGF0Zm9ybSwgdGVzdCkK
ICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUoJ09LJykKIAogCkBAIC0xMjUsMTAgKzEy
NSwxMCBAQCBjbGFzcyBDYWNoZWRSdW5zSGFuZGxlcih3ZWJhcHAyLlJlcXVlc3RICiAgICAgICAg
IHNlbGYucmVzcG9uc2UuaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24vanNv
bicKIAogICAgICAgICB0ZXN0X2lkLCBicmFuY2hfaWQsIHBsYXRmb3JtX2lkID0gX2dldF90ZXN0
X2JyYW5jaF9wbGF0Zm9ybV9pZHMoc2VsZikKLSAgICAgICAgcnVucyA9IFBlcnNpc3RlbnRDYWNo
ZS5nZXRfY2FjaGUoVGVzdC5jYWNoZV9rZXkodGVzdF9pZCwgYnJhbmNoX2lkLCBwbGF0Zm9ybV9p
ZCkpCisgICAgICAgIHJ1bnMgPSBSdW5zLmpzb25fYnlfaWRzKGJyYW5jaF9pZCwgcGxhdGZvcm1f
aWQsIHRlc3RfaWQpCiAgICAgICAgIGlmIHJ1bnM6CiAgICAgICAgICAgICBzZWxmLnJlc3BvbnNl
Lm91dC53cml0ZShydW5zKQotICAgICAgICBlbHNlOgorICAgICAgICBlbGlmIG1vZGVsX2Zyb21f
bnVtZXJpY19pZChicmFuY2hfaWQsIEJyYW5jaCkgYW5kIG1vZGVsX2Zyb21fbnVtZXJpY19pZChw
bGF0Zm9ybV9pZCwgUGxhdGZvcm0pIGFuZCBtb2RlbF9mcm9tX251bWVyaWNfaWQodGVzdF9pZCwg
VGVzdCk6CiAgICAgICAgICAgICBzY2hlZHVsZV9ydW5zX3VwZGF0ZSh0ZXN0X2lkLCBicmFuY2hf
aWQsIHBsYXRmb3JtX2lkKQogCiAKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBSdW5zQ2hhcnRI
YW5kbGVyKHdlYmFwcDIuUmVxdWVzdEhhCiAgICAgICAgIGFzc2VydCBwbGF0Zm9ybQogICAgICAg
ICBhc3NlcnQgdGVzdAogCi0gICAgICAgIHBhcmFtcyA9IFJ1bnMoYnJhbmNoLCBwbGF0Zm9ybSwg
dGVzdC5uYW1lKS5jaGFydF9wYXJhbXMoZGlzcGxheV9kYXlzKQorICAgICAgICBwYXJhbXMgPSBS
dW5zLnVwZGF0ZV9vcl9pbnNlcnQoYnJhbmNoLCBwbGF0Zm9ybSwgdGVzdCkuY2hhcnRfcGFyYW1z
KGRpc3BsYXlfZGF5cykKICAgICAgICAgZGFzaGJvYXJkX2NoYXJ0X2ZpbGUgPSB1cmxsaWIudXJs
b3BlbignaHR0cDovL2NoYXJ0Lmdvb2dsZWFwaXMuY29tL2NoYXJ0JywgdXJsbGliLnVybGVuY29k
ZShwYXJhbXMpKQogCiAgICAgICAgIERhc2hib2FyZEltYWdlLmNyZWF0ZShicmFuY2guaWQsIHBs
YXRmb3JtLmlkLCB0ZXN0LmlkLCBkaXNwbGF5X2RheXMsIGRhc2hib2FyZF9jaGFydF9maWxlLnJl
YWQoKSkKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2pzb25fZ2VuZXJh
dG9ycy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9q
c29uX2dlbmVyYXRvcnMucHkJKHJldmlzaW9uIDEwOTgyMSkKKysrIFdlYnNpdGVzL3dlYmtpdC1w
ZXJmLmFwcHNwb3QuY29tL2pzb25fZ2VuZXJhdG9ycy5weQkod29ya2luZyBjb3B5KQpAQCAtMTE4
LDEwMCArMTE4LDMgQEAgY2xhc3MgTWFuaWZlc3RKU09OR2VuZXJhdG9yKEpTT05HZW5lcmF0bwog
CiAgICAgZGVmIHZhbHVlKHNlbGYpOgogICAgICAgICByZXR1cm4geydicmFuY2hNYXAnOiBzZWxm
Ll9icmFuY2hfbWFwLCAncGxhdGZvcm1NYXAnOiBzZWxmLl9wbGF0Zm9ybV9tYXAsICd0ZXN0TWFw
Jzogc2VsZi5fdGVzdF9tYXB9Ci0KLQotIyBGSVhNRTogVGhpcyBpc24ndCBhIEpTT04gZ2VuZXJh
dG9yIGFueW1vcmUuIFdlIHNob3VsZCBtb3ZlIGl0IGVsc2V3aGVyZSBvciByZW5hbWUgdGhlIGZp
bGUuCi1jbGFzcyBSdW5zKEpTT05HZW5lcmF0b3JCYXNlKToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgYnJhbmNoLCBwbGF0Zm9ybSwgdGVzdF9uYW1lKToKLSAgICAgICAgc2VsZi5fYnJhbmNoID0g
YnJhbmNoCi0gICAgICAgIHNlbGYuX3BsYXRmb3JtID0gcGxhdGZvcm0KLSAgICAgICAgc2VsZi5f
dGVzdF9uYW1lID0gdGVzdF9uYW1lCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9nZW5l
cmF0ZV9ydW5zKGJyYW5jaCwgcGxhdGZvcm0sIHRlc3RfbmFtZSk6Ci0gICAgICAgIGJ1aWxkcyA9
IEJ1aWxkLmFsbCgpCi0gICAgICAgIGJ1aWxkcy5maWx0ZXIoJ2JyYW5jaCA9JywgYnJhbmNoKQot
ICAgICAgICBidWlsZHMuZmlsdGVyKCdwbGF0Zm9ybSA9JywgcGxhdGZvcm0pCi0KLSAgICAgICAg
Zm9yIGJ1aWxkIGluIGJ1aWxkczoKLSAgICAgICAgICAgIHJlc3VsdHMgPSBUZXN0UmVzdWx0LmFs
bCgpCi0gICAgICAgICAgICByZXN1bHRzLmZpbHRlcignbmFtZSA9JywgdGVzdF9uYW1lKQotICAg
ICAgICAgICAgcmVzdWx0cy5maWx0ZXIoJ2J1aWxkID0nLCBidWlsZCkKLSAgICAgICAgICAgIGZv
ciByZXN1bHQgaW4gcmVzdWx0czoKLSAgICAgICAgICAgICAgICB5aWVsZCBidWlsZCwgcmVzdWx0
Ci0gICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBk
ZWYgX2VudHJ5X2Zyb21fYnVpbGRfYW5kX3Jlc3VsdChidWlsZCwgcmVzdWx0KToKLSAgICAgICAg
YnVpbGRlcl9pZCA9IGJ1aWxkLmJ1aWxkZXIua2V5KCkuaWQoKQotICAgICAgICB0aW1lc3RhbXAg
PSBta3RpbWUoYnVpbGQudGltZXN0YW1wLnRpbWV0dXBsZSgpKQotICAgICAgICBzdGF0aXN0aWNz
ID0gTm9uZQotICAgICAgICBzdXBwbGVtZW50YXJ5X3JldmlzaW9ucyA9IE5vbmUKLQotICAgICAg
ICBpZiByZXN1bHQudmFsdWVTdGRldiAhPSBOb25lIGFuZCByZXN1bHQudmFsdWVNaW4gIT0gTm9u
ZSBhbmQgcmVzdWx0LnZhbHVlTWF4ICE9IE5vbmU6Ci0gICAgICAgICAgICBzdGF0aXN0aWNzID0g
eydzdGRldic6IHJlc3VsdC52YWx1ZVN0ZGV2LCAnbWluJzogcmVzdWx0LnZhbHVlTWluLCAnbWF4
JzogcmVzdWx0LnZhbHVlTWF4fQotCi0gICAgICAgIGlmIGJ1aWxkLmNocm9taXVtUmV2aXNpb24g
IT0gTm9uZToKLSAgICAgICAgICAgIHN1cHBsZW1lbnRhcnlfcmV2aXNpb25zID0geydDaHJvbWl1
bSc6IGJ1aWxkLmNocm9taXVtUmV2aXNpb259Ci0KLSAgICAgICAgcmV0dXJuIFtyZXN1bHQua2V5
KCkuaWQoKSwKLSAgICAgICAgICAgIFtidWlsZC5rZXkoKS5pZCgpLCBidWlsZC5idWlsZE51bWJl
ciwgYnVpbGQucmV2aXNpb24sIHN1cHBsZW1lbnRhcnlfcmV2aXNpb25zXSwKLSAgICAgICAgICAg
IHRpbWVzdGFtcCwgcmVzdWx0LnZhbHVlLCAwLCAgIyBydW5OdW1iZXIKLSAgICAgICAgICAgIFtd
LCAgIyBhbm5vdGF0aW9ucwotICAgICAgICAgICAgYnVpbGRlcl9pZCwgc3RhdGlzdGljc10KLQot
ICAgIGRlZiB2YWx1ZShzZWxmKToKLSAgICAgICAgX3Rlc3RfcnVucyA9IFtdCi0gICAgICAgIF9h
dmVyYWdlcyA9IHt9Ci0gICAgICAgIHZhbHVlcyA9IFtdCi0KLSAgICAgICAgZm9yIGJ1aWxkLCBy
ZXN1bHQgaW4gUnVucy5fZ2VuZXJhdGVfcnVucyhzZWxmLl9icmFuY2gsIHNlbGYuX3BsYXRmb3Jt
LCBzZWxmLl90ZXN0X25hbWUpOgotICAgICAgICAgICAgX3Rlc3RfcnVucy5hcHBlbmQoUnVucy5f
ZW50cnlfZnJvbV9idWlsZF9hbmRfcmVzdWx0KGJ1aWxkLCByZXN1bHQpKQotICAgICAgICAgICAg
IyBGSVhNRTogQ2FsY3VsYXRlIHRoZSBhdmVyYWdlLiBJbiBwcmFjdGljZSwgd2Ugd291bGRuJ3Qg
aGF2ZSBtb3JlIHRoYW4gb25lIHZhbHVlIGZvciBhIGdpdmVuIHJldmlzaW9uLgotICAgICAgICAg
ICAgX2F2ZXJhZ2VzW2J1aWxkLnJldmlzaW9uXSA9IHJlc3VsdC52YWx1ZQotICAgICAgICAgICAg
dmFsdWVzLmFwcGVuZChyZXN1bHQudmFsdWUpCi0KLSAgICAgICAgX21pbiA9IG1pbih2YWx1ZXMp
IGlmIHZhbHVlcyBlbHNlIE5vbmUKLSAgICAgICAgX21heCA9IG1heCh2YWx1ZXMpIGlmIHZhbHVl
cyBlbHNlIE5vbmUKLQotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgJ3Rlc3RfcnVucyc6
IF90ZXN0X3J1bnMsCi0gICAgICAgICAgICAnYXZlcmFnZXMnOiBfYXZlcmFnZXMsCi0gICAgICAg
ICAgICAnbWluJzogX21pbiwKLSAgICAgICAgICAgICdtYXgnOiBfbWF4LAotICAgICAgICAgICAg
J2RhdGVfcmFuZ2UnOiBOb25lLCAgIyBOZXZlciB1c2VkIGJ5IGNvbW1vbi5qcy4KLSAgICAgICAg
ICAgICdzdGF0JzogJ29rJ30KLQotICAgIGRlZiBjaGFydF9wYXJhbXMoc2VsZiwgZGlzcGxheV9k
YXlzLCBub3c9ZGF0ZXRpbWUubm93KCkucmVwbGFjZShob3VyPTEyLCBtaW51dGU9MCwgc2Vjb25k
PTAsIG1pY3Jvc2Vjb25kPTApKToKLSAgICAgICAgY2hhcnRfZGF0YV94ID0gW10KLSAgICAgICAg
Y2hhcnRfZGF0YV95ID0gW10KLSAgICAgICAgZW5kX3RpbWUgPSBub3cKLSAgICAgICAgc3RhcnRf
dGltZXN0YW1wID0gbWt0aW1lKChlbmRfdGltZSAtIHRpbWVkZWx0YShkaXNwbGF5X2RheXMpKS50
aW1ldHVwbGUoKSkKLSAgICAgICAgZW5kX3RpbWVzdGFtcCA9IG1rdGltZShlbmRfdGltZS50aW1l
dHVwbGUoKSkKLQotICAgICAgICBmb3IgYnVpbGQsIHJlc3VsdCBpbiBzZWxmLl9nZW5lcmF0ZV9y
dW5zKHNlbGYuX2JyYW5jaCwgc2VsZi5fcGxhdGZvcm0sIHNlbGYuX3Rlc3RfbmFtZSk6Ci0gICAg
ICAgICAgICB0aW1lc3RhbXAgPSBta3RpbWUoYnVpbGQudGltZXN0YW1wLnRpbWV0dXBsZSgpKQot
ICAgICAgICAgICAgaWYgdGltZXN0YW1wIDwgc3RhcnRfdGltZXN0YW1wIG9yIHRpbWVzdGFtcCA+
IGVuZF90aW1lc3RhbXA6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGNo
YXJ0X2RhdGFfeC5hcHBlbmQodGltZXN0YW1wKQotICAgICAgICAgICAgY2hhcnRfZGF0YV95LmFw
cGVuZChyZXN1bHQudmFsdWUpCi0KLSAgICAgICAgZGF0ZXMgPSBbZW5kX3RpbWUgLSB0aW1lZGVs
dGEoZGlzcGxheV9kYXlzIC8gNy4wICogKDcgLSBpKSkgZm9yIGkgaW4gcmFuZ2UoMCwgOCldCi0K
LSAgICAgICAgeV9tYXggPSBtYXgoY2hhcnRfZGF0YV95KSAqIDEuMQotICAgICAgICB5X2F4aXNf
bGFiZWxfc3RlcCA9IGludCh5X21heCAvIDUgKyAwLjUpICAjIFRoaXMgd29uJ3Qgd29yayBmb3Ig
ZGVjaW1hbCBudW1iZXJzCi0KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICdjaHQnOiAn
bHh5JywgICMgU3BlY2lmeSB3aXRoIFggYW5kIFkgY29vcmRpbmF0ZXMKLSAgICAgICAgICAgICdj
aHh0JzogJ3gseScsICAjIERpc3BsYXkgYm90aCBYIGFuZCBZIGF4aWVzCi0gICAgICAgICAgICAn
Y2h4bCc6ICcwOnwnICsgJ3wnLmpvaW4oW2RhdGUuc3RyZnRpbWUoJyViICVkJykgZm9yIGRhdGUg
aW4gZGF0ZXNdKSwgICMgWC1heGlzIGxhYmVscwotICAgICAgICAgICAgJ2NoeHInOiAnMSwwLCVm
LCVmJyAlIChpbnQoeV9tYXggKyAwLjUpLCB5X2F4aXNfbGFiZWxfc3RlcCksICAjIFktYXhpcyBy
YW5nZTogbWluPTAsIG1heCwgc3RlcAotICAgICAgICAgICAgJ2NoZHMnOiAnJWYsJWYsJWYsJWYn
ICUgKHN0YXJ0X3RpbWVzdGFtcCwgZW5kX3RpbWVzdGFtcCwgMCwgeV9tYXgpLCAgIyBYLCBZIGRh
dGEgcmFuZ2UKLSAgICAgICAgICAgICdjaHhzJzogJzEsNjc2NzY3LDExLjE2NywwLGwsNjc2NzY3
JywgICMgWS1heGlzIGxhYmVsOiAxLGNvbG9yLGZvbnQtc2l6ZSxjZW50ZXJkIG9uIHRpY2ssYXhp
cyBsaW5lL25vIHRpY2tzLCB0aWNrIGNvbG9yCi0gICAgICAgICAgICAnY2hzJzogJzM2MHgyNDAn
LCAgIyBJbWFnZSBzaXplOiAzNjBweCBieSAyNDBweAotICAgICAgICAgICAgJ2NoY28nOiAnZmYw
MDAwJywgICMgUGxvdCBsaW5lIGNvbG9yCi0gICAgICAgICAgICAnY2hnJzogJyVmLDIwLDAsMCcg
JSAoMTAwIC8gKGxlbihkYXRlcykgLSAxKSksICAjIFgsIFkgZ3JpZCBsaW5lIHN0ZXAgc2l6ZXMg
LSBtYXggaXMgMTAwLgotICAgICAgICAgICAgJ2NobHMnOiAnMycsICAjIExpbmUgdGhpY2tuZXNz
Ci0gICAgICAgICAgICAnY2hmJzogJ2JnLHMsZWZmNmZkJywgICMgVHJhbnNwYXJlbnQgYmFja2dy
b3VuZAotICAgICAgICAgICAgJ2NoZCc6ICd0OicgKyAnLCcuam9pbihbc3RyKHgpIGZvciB4IGlu
IGNoYXJ0X2RhdGFfeF0pICsgJ3wnICsgJywnLmpvaW4oW3N0cih5KSBmb3IgeSBpbiBjaGFydF9k
YXRhX3ldKSwgICMgWCwgWSBkYXRhCi0gICAgICAgIH0KSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1w
ZXJmLmFwcHNwb3QuY29tL2pzb25fZ2VuZXJhdG9yc191bml0dGVzdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9qc29uX2dlbmVyYXRvcnNfdW5pdHRl
c3QucHkJKHJldmlzaW9uIDEwOTgyMSkKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3Qu
Y29tL2pzb25fZ2VuZXJhdG9yc191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNiBAQCBmcm9tIGRhdGV0aW1lIGltcG9ydCB0aW1lZGVsdGEKIGZyb20ganNvbl9nZW5lcmF0
b3JzIGltcG9ydCBKU09OR2VuZXJhdG9yQmFzZQogZnJvbSBqc29uX2dlbmVyYXRvcnMgaW1wb3J0
IERhc2hib2FyZEpTT05HZW5lcmF0b3IKIGZyb20ganNvbl9nZW5lcmF0b3JzIGltcG9ydCBNYW5p
ZmVzdEpTT05HZW5lcmF0b3IKLWZyb20ganNvbl9nZW5lcmF0b3JzIGltcG9ydCBSdW5zCiBmcm9t
IG1vZGVsc191bml0dGVzdCBpbXBvcnQgRGF0YVN0b3JlVGVzdHNCYXNlCiBmcm9tIG1vZGVscyBp
bXBvcnQgQnJhbmNoCiBmcm9tIG1vZGVscyBpbXBvcnQgQnVpbGQKQEAgLTE4NiwxNjIgKzE4NSw1
IEBAIGNsYXNzIE1hbmlmZXN0SlNPTkdlbmVyYXRvclRlc3QoRGF0YVN0b3IKICAgICAgICAgICAg
IG90aGVyX3Rlc3QuaWQ6IHsnbmFtZSc6IG90aGVyX3Rlc3QubmFtZSwgJ2JyYW5jaElkcyc6IFtz
b21lX2JyYW5jaC5pZF0sICdwbGF0Zm9ybUlkcyc6IFtzb21lX3BsYXRmb3JtLmlkXX19KQogCiAK
LWNsYXNzIFJ1bnNUZXN0KERhdGFTdG9yZVRlc3RzQmFzZSk6Ci0gICAgZGVmIF9jcmVhdGVfcmVz
dWx0cyhzZWxmLCBicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyLCB0ZXN0X25hbWUsIHZhbHVlcywg
dGltZXN0YW1wcz1Ob25lKToKLSAgICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICAgIGZvciBpLCB2
YWx1ZSBpbiBlbnVtZXJhdGUodmFsdWVzKToKLSAgICAgICAgICAgIGJ1aWxkID0gQnVpbGQoYnJh
bmNoPWJyYW5jaCwgcGxhdGZvcm09cGxhdGZvcm0sIGJ1aWxkZXI9YnVpbGRlciwKLSAgICAgICAg
ICAgICAgICBidWlsZE51bWJlcj1pLCByZXZpc2lvbj0xMDAgKyBpLCB0aW1lc3RhbXA9dGltZXN0
YW1wc1tpXSBpZiB0aW1lc3RhbXBzIGVsc2UgZGF0ZXRpbWUubm93KCkpCi0gICAgICAgICAgICBi
dWlsZC5wdXQoKQotICAgICAgICAgICAgcmVzdWx0ID0gVGVzdFJlc3VsdChuYW1lPXRlc3RfbmFt
ZSwgYnVpbGQ9YnVpbGQsIHZhbHVlPXZhbHVlKQotICAgICAgICAgICAgcmVzdWx0LnB1dCgpCi0g
ICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHRz
Ci0KLSAgICBkZWYgdGVzdF9nZW5lcmF0ZV9ydW5zKHNlbGYpOgotICAgICAgICBzb21lX2JyYW5j
aCA9IEJyYW5jaC5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtYnJhbmNoJywgJ1NvbWUgQnJhbmNo
JykKLSAgICAgICAgc29tZV9wbGF0Zm9ybSA9IFBsYXRmb3JtLmNyZWF0ZV9pZl9wb3NzaWJsZSgn
c29tZS1wbGF0Zm9ybScsICdTb21lIFBsYXRmb3JtJykKLSAgICAgICAgc29tZV9idWlsZGVyID0g
QnVpbGRlci5nZXQoQnVpbGRlci5jcmVhdGUoJ3NvbWUtYnVpbGRlcicsICdTb21lIEJ1aWxkZXIn
KSkKLQotICAgICAgICByZXN1bHRzID0gc2VsZi5fY3JlYXRlX3Jlc3VsdHMoc29tZV9icmFuY2gs
IHNvbWVfcGxhdGZvcm0sIHNvbWVfYnVpbGRlciwgJ3NvbWUtdGVzdCcsIFs1MC4wLCA1MS4wLCA1
Mi4wLCA0OS4wLCA0OC4wXSkKLSAgICAgICAgbGFzdF9pID0gMAotICAgICAgICBmb3IgaSwgKGJ1
aWxkLCByZXN1bHQpIGluIGVudW1lcmF0ZShSdW5zLl9nZW5lcmF0ZV9ydW5zKHNvbWVfYnJhbmNo
LCBzb21lX3BsYXRmb3JtLCAic29tZS10ZXN0IikpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWlsZC5idWlsZE51bWJlciwgaSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YnVpbGQucmV2aXNpb24sIDEwMCArIGkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3VsdC5uYW1lLCAnc29tZS10ZXN0JykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
dWx0LnZhbHVlLCByZXN1bHRzW2ldLnZhbHVlKQotICAgICAgICAgICAgbGFzdF9pID0gaQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUobGFzdF9pICsgMSwgbGVuKHJlc3VsdHMpKQotCi0gICAgZGVm
IHRlc3RfdmFsdWVfd2l0aG91dF9yZXN1bHRzKHNlbGYpOgotICAgICAgICBzb21lX2JyYW5jaCA9
IEJyYW5jaC5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtYnJhbmNoJywgJ1NvbWUgQnJhbmNoJykK
LSAgICAgICAgc29tZV9wbGF0Zm9ybSA9IFBsYXRmb3JtLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29t
ZS1wbGF0Zm9ybScsICdTb21lIFBsYXRmb3JtJykKLSAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlz
Tm9JbnN0YW5jZU9mKFRlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VP
ZihUZXN0UmVzdWx0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFJ1bnMoc29tZV9icmFuY2gs
IHNvbWVfcGxhdGZvcm0sICdzb21lLXRlc3QnKS52YWx1ZSgpLCB7Ci0gICAgICAgICAgICAndGVz
dF9ydW5zJzogW10sCi0gICAgICAgICAgICAnYXZlcmFnZXMnOiB7fSwKLSAgICAgICAgICAgICdt
aW4nOiBOb25lLAotICAgICAgICAgICAgJ21heCc6IE5vbmUsCi0gICAgICAgICAgICAnZGF0ZV9y
YW5nZSc6IE5vbmUsCi0gICAgICAgICAgICAnc3RhdCc6ICdvayd9KQotCi0gICAgZGVmIHRlc3Rf
dmFsdWVfd2l0aF9yZXN1bHRzKHNlbGYpOgotICAgICAgICBzb21lX2JyYW5jaCA9IEJyYW5jaC5j
cmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtYnJhbmNoJywgJ1NvbWUgQnJhbmNoJykKLSAgICAgICAg
c29tZV9wbGF0Zm9ybSA9IFBsYXRmb3JtLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1wbGF0Zm9y
bScsICdTb21lIFBsYXRmb3JtJykKLSAgICAgICAgc29tZV9idWlsZGVyID0gQnVpbGRlci5nZXQo
QnVpbGRlci5jcmVhdGUoJ3NvbWUtYnVpbGRlcicsICdTb21lIEJ1aWxkZXInKSkKLSAgICAgICAg
cmVzdWx0cyA9IHNlbGYuX2NyZWF0ZV9yZXN1bHRzKHNvbWVfYnJhbmNoLCBzb21lX3BsYXRmb3Jt
LCBzb21lX2J1aWxkZXIsICdzb21lLXRlc3QnLCBbNTAuMCwgNTEuMCwgNTIuMCwgNDkuMCwgNDgu
MF0pCi0KLSAgICAgICAgdmFsdWUgPSBSdW5zKHNvbWVfYnJhbmNoLCBzb21lX3BsYXRmb3JtLCAn
c29tZS10ZXN0JykudmFsdWUoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsVW5vcmRlcmVkTGlz
dCh2YWx1ZS5rZXlzKCksIFsndGVzdF9ydW5zJywgJ2F2ZXJhZ2VzJywgJ21pbicsICdtYXgnLCAn
ZGF0ZV9yYW5nZScsICdzdGF0J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVbJ3N0
YXQnXSwgJ29rJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZVsnbWluJ10sIDQ4LjAp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVbJ21heCddLCA1Mi4wKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHZhbHVlWydkYXRlX3JhbmdlJ10sIE5vbmUpICAjIGRhdGVfcmFuZ2Ug
aXMgbmV2ZXIgZ2l2ZW4KLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2YWx1ZVsndGVz
dF9ydW5zJ10pLCBsZW4ocmVzdWx0cykpCi0gICAgICAgIGZvciBpLCBydW4gaW4gZW51bWVyYXRl
KHZhbHVlWyd0ZXN0X3J1bnMnXSk6Ci0gICAgICAgICAgICByZXN1bHQgPSByZXN1bHRzW2ldCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1blswXSwgcmVzdWx0LmtleSgpLmlkKCkpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1blsxXVsxXSwgaSkgICMgQnVpbGQgbnVtYmVy
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1blsxXVsyXSwgMTAwICsgaSkgICMgUmV2
aXNpb24KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuWzFdWzNdLCBOb25lKSAgIyBT
dXBwbGVtZW50YXJ5IHJldmlzaW9uCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1blsz
XSwgcmVzdWx0LnZhbHVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5bNl0sIHNv
bWVfYnVpbGRlci5rZXkoKS5pZCgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5b
N10sIE5vbmUpICAjIFN0YXRpc3RpY3MKLQotICAgIGRlZiBfYXNzZXJ0X2VudHJ5KHNlbGYsIGVu
dHJ5LCBidWlsZCwgcmVzdWx0LCB2YWx1ZSwgc3RhdGlzdGljcz1Ob25lLCBzdXBwbGVtZW50YXJ5
X3JldmlzaW9ucz1Ob25lKToKLSAgICAgICAgZW50cnkgPSBlbnRyeVs6XQotICAgICAgICBlbnRy
eVsyXSA9IE5vbmUgICMgdGltZXN0YW1wCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnks
IFtyZXN1bHQua2V5KCkuaWQoKSwgW2J1aWxkLmtleSgpLmlkKCksIGJ1aWxkLmJ1aWxkTnVtYmVy
LCBidWlsZC5yZXZpc2lvbiwgc3VwcGxlbWVudGFyeV9yZXZpc2lvbnNdLAotICAgICAgICAgICAg
Tm9uZSwgICMgdGltZXN0YW1wCi0gICAgICAgICAgICB2YWx1ZSwgMCwgICMgcnVuTnVtYmVyCi0g
ICAgICAgICAgICBbXSwgICMgYW5ub3RhdGlvbnMKLSAgICAgICAgICAgIGJ1aWxkLmJ1aWxkZXIu
a2V5KCkuaWQoKSwgc3RhdGlzdGljc10pCi0KLSAgICBkZWYgdGVzdF9ydW5fZnJvbV9idWlsZF9h
bmRfcmVzdWx0KHNlbGYpOgotICAgICAgICBicmFuY2ggPSBCcmFuY2guY3JlYXRlX2lmX3Bvc3Np
YmxlKCdzb21lLWJyYW5jaCcsICdTb21lIEJyYW5jaCcpCi0gICAgICAgIHBsYXRmb3JtID0gUGxh
dGZvcm0uY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLXBsYXRmb3JtJywgJ1NvbWUgUGxhdGZvcm0n
KQotICAgICAgICBidWlsZGVyID0gQnVpbGRlci5nZXQoQnVpbGRlci5jcmVhdGUoJ3NvbWUtYnVp
bGRlcicsICdTb21lIEJ1aWxkZXInKSkKLSAgICAgICAgdGVzdF9uYW1lID0gJyBzb21lLXRlc3Qn
Ci0KLSAgICAgICAgZGVmIGNyZWF0ZV9idWlsZChidWlsZF9udW1iZXIsIHJldmlzaW9uKToKLSAg
ICAgICAgICAgIHRpbWVzdGFtcCA9IGRhdGV0aW1lLm5vdygpLnJlcGxhY2UobWljcm9zZWNvbmQ9
MCkKLSAgICAgICAgICAgIGJ1aWxkID0gQnVpbGQoYnJhbmNoPWJyYW5jaCwgcGxhdGZvcm09cGxh
dGZvcm0sIGJ1aWxkZXI9YnVpbGRlciwgYnVpbGROdW1iZXI9YnVpbGRfbnVtYmVyLAotICAgICAg
ICAgICAgICAgIHJldmlzaW9uPXJldmlzaW9uLCB0aW1lc3RhbXA9dGltZXN0YW1wKQotICAgICAg
ICAgICAgYnVpbGQucHV0KCkKLSAgICAgICAgICAgIHJldHVybiBidWlsZAotCi0gICAgICAgIGJ1
aWxkID0gY3JlYXRlX2J1aWxkKDEsIDEwMSkKLSAgICAgICAgcmVzdWx0ID0gVGVzdFJlc3VsdChu
YW1lPXRlc3RfbmFtZSwgdmFsdWU9MTIzLjAsIGJ1aWxkPWJ1aWxkKQotICAgICAgICByZXN1bHQu
cHV0KCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2VudHJ5KFJ1bnMuX2VudHJ5X2Zyb21fYnVpbGRf
YW5kX3Jlc3VsdChidWlsZCwgcmVzdWx0KSwgYnVpbGQsIHJlc3VsdCwgMTIzLjApCi0KLSAgICAg
ICAgYnVpbGQgPSBjcmVhdGVfYnVpbGQoMiwgMTAyKQotICAgICAgICByZXN1bHQgPSBUZXN0UmVz
dWx0KG5hbWU9dGVzdF9uYW1lLCB2YWx1ZT00NTYuMCwgdmFsdWVNZWRpYW49Nzg5LjAsIGJ1aWxk
PWJ1aWxkKQotICAgICAgICByZXN1bHQucHV0KCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2VudHJ5
KFJ1bnMuX2VudHJ5X2Zyb21fYnVpbGRfYW5kX3Jlc3VsdChidWlsZCwgcmVzdWx0KSwgYnVpbGQs
IHJlc3VsdCwgNDU2LjApCi0KLSAgICAgICAgcmVzdWx0LnZhbHVlU3RkZXYgPSA3LjAKLSAgICAg
ICAgcmVzdWx0LnB1dCgpCi0gICAgICAgIHNlbGYuX2Fzc2VydF9lbnRyeShSdW5zLl9lbnRyeV9m
cm9tX2J1aWxkX2FuZF9yZXN1bHQoYnVpbGQsIHJlc3VsdCksIGJ1aWxkLCByZXN1bHQsIDQ1Ni4w
KQotCi0gICAgICAgIHJlc3VsdC52YWx1ZVN0ZGV2ID0gTm9uZQotICAgICAgICByZXN1bHQudmFs
dWVNaW4gPSAxMjMuMAotICAgICAgICByZXN1bHQudmFsdWVNYXggPSA3ODkuMAotICAgICAgICBy
ZXN1bHQucHV0KCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2VudHJ5KFJ1bnMuX2VudHJ5X2Zyb21f
YnVpbGRfYW5kX3Jlc3VsdChidWlsZCwgcmVzdWx0KSwgYnVpbGQsIHJlc3VsdCwgNDU2LjApCi0K
LSAgICAgICAgcmVzdWx0LnZhbHVlU3RkZXYgPSA4LjAKLSAgICAgICAgcmVzdWx0LnZhbHVlTWlu
ID0gMTIzLjAKLSAgICAgICAgcmVzdWx0LnZhbHVlTWF4ID0gNzg5LjAKLSAgICAgICAgcmVzdWx0
LnB1dCgpCi0gICAgICAgIHNlbGYuX2Fzc2VydF9lbnRyeShSdW5zLl9lbnRyeV9mcm9tX2J1aWxk
X2FuZF9yZXN1bHQoYnVpbGQsIHJlc3VsdCksIGJ1aWxkLCByZXN1bHQsIDQ1Ni4wLAotICAgICAg
ICAgICAgc3RhdGlzdGljcz17J3N0ZGV2JzogOC4wLCAnbWluJzogMTIzLjAsICdtYXgnOiA3ODku
MH0pCi0KLSAgICAgICAgcmVzdWx0LnZhbHVlTWVkaWFuID0gMzQ1LjAgICMgTWVkaWFuIGlzIG5l
dmVyIHVzZWQgYnkgdGhlIGZyb250ZW5kLgotICAgICAgICByZXN1bHQudmFsdWVTdGRldiA9IDgu
MAotICAgICAgICByZXN1bHQudmFsdWVNaW4gPSAxMjMuMAotICAgICAgICByZXN1bHQudmFsdWVN
YXggPSA3ODkuMAotICAgICAgICByZXN1bHQucHV0KCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2Vu
dHJ5KFJ1bnMuX2VudHJ5X2Zyb21fYnVpbGRfYW5kX3Jlc3VsdChidWlsZCwgcmVzdWx0KSwgYnVp
bGQsIHJlc3VsdCwgNDU2LjAsCi0gICAgICAgICAgICBzdGF0aXN0aWNzPXsnc3RkZXYnOiA4LjAs
ICdtaW4nOiAxMjMuMCwgJ21heCc6IDc4OS4wfSkKLQotICAgIGRlZiB0ZXN0X2NoYXJ0X3BhcmFt
c193aXRoX3ZhbHVlKHNlbGYpOgotICAgICAgICBzb21lX2JyYW5jaCA9IEJyYW5jaC5jcmVhdGVf
aWZfcG9zc2libGUoJ3NvbWUtYnJhbmNoJywgJ1NvbWUgQnJhbmNoJykKLSAgICAgICAgc29tZV9w
bGF0Zm9ybSA9IFBsYXRmb3JtLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1wbGF0Zm9ybScsICdT
b21lIFBsYXRmb3JtJykKLSAgICAgICAgc29tZV9idWlsZGVyID0gQnVpbGRlci5nZXQoQnVpbGRl
ci5jcmVhdGUoJ3NvbWUtYnVpbGRlcicsICdTb21lIEJ1aWxkZXInKSkKLQotICAgICAgICBzdGFy
dF90aW1lID0gZGF0ZXRpbWUoMjAxMSwgMiwgMjEsIDEyLCAwLCAwKQotICAgICAgICBlbmRfdGlt
ZSA9IGRhdGV0aW1lKDIwMTEsIDIsIDI4LCAxMiwgMCwgMCkKLSAgICAgICAgcmVzdWx0cyA9IHNl
bGYuX2NyZWF0ZV9yZXN1bHRzKHNvbWVfYnJhbmNoLCBzb21lX3BsYXRmb3JtLCBzb21lX2J1aWxk
ZXIsICdzb21lLXRlc3QnLAotICAgICAgICAgICAgWzUwLjAsIDUxLjAsIDUyLjAsIDQ5LjAsIDQ4
LjAsIDUxLjksIDUwLjcsIDUxLjFdLAotICAgICAgICAgICAgW3N0YXJ0X3RpbWUgKyB0aW1lZGVs
dGEoZGF5KSBmb3IgZGF5IGluIHJhbmdlKDAsIDgpXSkKLQotICAgICAgICAjIFVzZSBpbnQgZGVz
cGl0ZSBvZiBpdHMgaW1wcmVjaXNlbmVzcyBzaW5jZSB0ZXN0cyBtYXkgZmFpbCBkdWUgdG8gcm91
bmRpbmcgZXJyb3JzIG90aGVyd2lzZS4KLSAgICAgICAgZGVmIHNwbGl0X2FzX2ludChzdHJpbmcp
OgotICAgICAgICAgICAgcmV0dXJuIFtpbnQoZmxvYXQodmFsdWUpKSBmb3IgdmFsdWUgaW4gc3Ry
aW5nLnNwbGl0KCcsJyldCi0KLSAgICAgICAgcGFyYW1zID0gUnVucyhzb21lX2JyYW5jaCwgc29t
ZV9wbGF0Zm9ybSwgJ3NvbWUtdGVzdCcpLmNoYXJ0X3BhcmFtcyg3LCBlbmRfdGltZSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbXNbJ2NoeGwnXSwgJzA6fEZlYiAyMXxGZWIgMjJ8RmVi
IDIzfEZlYiAyNHxGZWIgMjV8RmViIDI2fEZlYiAyN3xGZWIgMjgnKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNwbGl0X2FzX2ludChwYXJhbXNbJ2NoeHInXSksIFsxLCAwLCA1NywgaW50KDUy
ICogMS4xIC8gNSArIDAuNSldKQotICAgICAgICB4X21pbiwgeF9tYXgsIHlfbWluLCB5X21heCA9
IHNwbGl0X2FzX2ludChwYXJhbXNbJ2NoZHMnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
YXRldGltZS5mcm9tdGltZXN0YW1wKHhfbWluKSwgc3RhcnRfdGltZSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkYXRldGltZS5mcm9tdGltZXN0YW1wKHhfbWF4KSwgZW5kX3RpbWUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoeV9taW4sIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
eV9tYXgsIGludCg1MiAqIDEuMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BsaXRfYXNf
aW50KHBhcmFtc1snY2hnJ10pLCBbaW50KDEwMCAvIDcpLCAyMCwgMCwgMF0pCi0KLSAgICAgICAg
cGFyYW1zID0gUnVucyhzb21lX2JyYW5jaCwgc29tZV9wbGF0Zm9ybSwgJ3NvbWUtdGVzdCcpLmNo
YXJ0X3BhcmFtcygxNCwgZW5kX3RpbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1z
WydjaHhsJ10sICcwOnxGZWIgMTR8RmViIDE2fEZlYiAxOHxGZWIgMjB8RmViIDIyfEZlYiAyNHxG
ZWIgMjZ8RmViIDI4JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGxpdF9hc19pbnQocGFy
YW1zWydjaHhyJ10pLCBbMSwgMCwgNTcsIGludCg1MiAqIDEuMSAvIDUgKyAwLjUpXSkKLSAgICAg
ICAgeF9taW4sIHhfbWF4LCB5X21pbiwgeV9tYXggPSBzcGxpdF9hc19pbnQocGFyYW1zWydjaGRz
J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCh4X21p
biksIGRhdGV0aW1lKDIwMTEsIDIsIDE0LCAxMiwgMCwgMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCh4X21heCksIGVuZF90aW1lKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHlfbWluLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHlfbWF4
LCBpbnQoNTIgKiAxLjEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwbGl0X2FzX2ludChw
YXJhbXNbJ2NoZyddKSwgW2ludCgxMDAgLyA3KSwgMjAsIDAsIDBdKQotCi0KIGlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCkluZGV4OiBXZWJzaXRlcy93ZWJr
aXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Vi
a2l0LXBlcmYuYXBwc3BvdC5jb20vbW9kZWxzLnB5CShyZXZpc2lvbiAxMDk4MjEpCisrKyBXZWJz
aXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHMucHkJKHdvcmtpbmcgY29weSkKQEAg
LTE1MCwxMCArMTUwLDYgQEAgY2xhc3MgVGVzdChkYi5Nb2RlbCk6CiAgICAgcGxhdGZvcm1zID0g
ZGIuTGlzdFByb3BlcnR5KGRiLktleSkKIAogICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgY2Fj
aGVfa2V5KHRlc3RfaWQsIGJyYW5jaF9pZCwgcGxhdGZvcm1faWQpOgotICAgICAgICByZXR1cm4g
J3J1bnM6JWQsJWQsJWQnICUgKHRlc3RfaWQsIGJyYW5jaF9pZCwgcGxhdGZvcm1faWQpCi0KLSAg
ICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHVwZGF0ZV9vcl9pbnNlcnQodGVzdF9uYW1lLCBicmFu
Y2gsIHBsYXRmb3JtKToKICAgICAgICAgZXhpc3RpbmdfdGVzdCA9IFtOb25lXQogCkBAIC0zMTcs
NiArMzEzLDEyNyBAQCBjbGFzcyBQZXJzaXN0ZW50Q2FjaGUoZGIuTW9kZWwpOgogICAgICAgICBy
ZXR1cm4gY2FjaGUudmFsdWUKIAogCitjbGFzcyBSdW5zKGRiLk1vZGVsKToKKyAgICBicmFuY2gg
PSBkYi5SZWZlcmVuY2VQcm9wZXJ0eShCcmFuY2gsIHJlcXVpcmVkPVRydWUsIGNvbGxlY3Rpb25f
bmFtZT0ncnVuc19icmFuY2gnKQorICAgIHBsYXRmb3JtID0gZGIuUmVmZXJlbmNlUHJvcGVydHko
UGxhdGZvcm0sIHJlcXVpcmVkPVRydWUsIGNvbGxlY3Rpb25fbmFtZT0ncnVuc19wbGF0Zm9ybScp
CisgICAgdGVzdCA9IGRiLlJlZmVyZW5jZVByb3BlcnR5KFRlc3QsIHJlcXVpcmVkPVRydWUsIGNv
bGxlY3Rpb25fbmFtZT0ncnVuc190ZXN0JykKKyAgICBqc29uX3J1bnMgPSBkYi5UZXh0UHJvcGVy
dHkoKQorICAgIGpzb25fYXZlcmFnZXMgPSBkYi5UZXh0UHJvcGVydHkoKQorICAgIGpzb25fbWlu
ID0gZGIuRmxvYXRQcm9wZXJ0eSgpCisgICAganNvbl9tYXggPSBkYi5GbG9hdFByb3BlcnR5KCkK
KworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2dlbmVyYXRlX3J1bnMoYnJhbmNoLCBwbGF0
Zm9ybSwgdGVzdF9uYW1lKToKKyAgICAgICAgYnVpbGRzID0gQnVpbGQuYWxsKCkKKyAgICAgICAg
YnVpbGRzLmZpbHRlcignYnJhbmNoID0nLCBicmFuY2gpCisgICAgICAgIGJ1aWxkcy5maWx0ZXIo
J3BsYXRmb3JtID0nLCBwbGF0Zm9ybSkKKworICAgICAgICBmb3IgYnVpbGQgaW4gYnVpbGRzOgor
ICAgICAgICAgICAgcmVzdWx0cyA9IFRlc3RSZXN1bHQuYWxsKCkKKyAgICAgICAgICAgIHJlc3Vs
dHMuZmlsdGVyKCduYW1lID0nLCB0ZXN0X25hbWUpCisgICAgICAgICAgICByZXN1bHRzLmZpbHRl
cignYnVpbGQgPScsIGJ1aWxkKQorICAgICAgICAgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgor
ICAgICAgICAgICAgICAgIHlpZWxkIGJ1aWxkLCByZXN1bHQKKyAgICAgICAgcmFpc2UgU3RvcEl0
ZXJhdGlvbgorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZW50cnlfZnJvbV9idWlsZF9h
bmRfcmVzdWx0KGJ1aWxkLCByZXN1bHQpOgorICAgICAgICBidWlsZGVyX2lkID0gYnVpbGQuYnVp
bGRlci5rZXkoKS5pZCgpCisgICAgICAgIHRpbWVzdGFtcCA9IG1rdGltZShidWlsZC50aW1lc3Rh
bXAudGltZXR1cGxlKCkpCisgICAgICAgIHN0YXRpc3RpY3MgPSBOb25lCisgICAgICAgIHN1cHBs
ZW1lbnRhcnlfcmV2aXNpb25zID0gTm9uZQorCisgICAgICAgIGlmIHJlc3VsdC52YWx1ZVN0ZGV2
ICE9IE5vbmUgYW5kIHJlc3VsdC52YWx1ZU1pbiAhPSBOb25lIGFuZCByZXN1bHQudmFsdWVNYXgg
IT0gTm9uZToKKyAgICAgICAgICAgIHN0YXRpc3RpY3MgPSB7J3N0ZGV2JzogcmVzdWx0LnZhbHVl
U3RkZXYsICdtaW4nOiByZXN1bHQudmFsdWVNaW4sICdtYXgnOiByZXN1bHQudmFsdWVNYXh9CisK
KyAgICAgICAgaWYgYnVpbGQuY2hyb21pdW1SZXZpc2lvbiAhPSBOb25lOgorICAgICAgICAgICAg
c3VwcGxlbWVudGFyeV9yZXZpc2lvbnMgPSB7J0Nocm9taXVtJzogYnVpbGQuY2hyb21pdW1SZXZp
c2lvbn0KKworICAgICAgICByZXR1cm4gW3Jlc3VsdC5rZXkoKS5pZCgpLAorICAgICAgICAgICAg
W2J1aWxkLmtleSgpLmlkKCksIGJ1aWxkLmJ1aWxkTnVtYmVyLCBidWlsZC5yZXZpc2lvbiwgc3Vw
cGxlbWVudGFyeV9yZXZpc2lvbnNdLAorICAgICAgICAgICAgdGltZXN0YW1wLCByZXN1bHQudmFs
dWUsIDAsICAjIHJ1bk51bWJlcgorICAgICAgICAgICAgW10sICAjIGFubm90YXRpb25zCisgICAg
ICAgICAgICBidWlsZGVyX2lkLCBzdGF0aXN0aWNzXQorCisgICAgQHN0YXRpY21ldGhvZAorICAg
IGRlZiBfa2V5X25hbWUoYnJhbmNoX2lkLCBwbGF0Zm9ybV9pZCwgdGVzdF9pZCk6CisgICAgICAg
IHJldHVybiAncnVuczolZCwlZCwlZCcgJSAodGVzdF9pZCwgYnJhbmNoX2lkLCBwbGF0Zm9ybV9p
ZCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB1cGRhdGVfb3JfaW5zZXJ0KGNscywgYnJh
bmNoLCBwbGF0Zm9ybSwgdGVzdCk6CisgICAgICAgIHRlc3RfcnVucyA9IFtdCisgICAgICAgIGF2
ZXJhZ2VzID0ge30KKyAgICAgICAgdmFsdWVzID0gW10KKworICAgICAgICBmb3IgYnVpbGQsIHJl
c3VsdCBpbiBjbHMuX2dlbmVyYXRlX3J1bnMoYnJhbmNoLCBwbGF0Zm9ybSwgdGVzdC5uYW1lKToK
KyAgICAgICAgICAgIHRlc3RfcnVucy5hcHBlbmQoY2xzLl9lbnRyeV9mcm9tX2J1aWxkX2FuZF9y
ZXN1bHQoYnVpbGQsIHJlc3VsdCkpCisgICAgICAgICAgICAjIEZJWE1FOiBDYWxjdWxhdGUgdGhl
IGF2ZXJhZ2UuIEluIHByYWN0aWNlLCB3ZSB3b3VsZG4ndCBoYXZlIG1vcmUgdGhhbiBvbmUgdmFs
dWUgZm9yIGEgZ2l2ZW4gcmV2aXNpb24uCisgICAgICAgICAgICBhdmVyYWdlc1tidWlsZC5yZXZp
c2lvbl0gPSByZXN1bHQudmFsdWUKKyAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQocmVzdWx0LnZh
bHVlKQorCisgICAgICAgIG1pbl92YWx1ZSA9IG1pbih2YWx1ZXMpIGlmIHZhbHVlcyBlbHNlIE5v
bmUKKyAgICAgICAgbWF4X3ZhbHVlID0gbWF4KHZhbHVlcykgaWYgdmFsdWVzIGVsc2UgTm9uZQor
CisgICAgICAgIGtleV9uYW1lID0gY2xzLl9rZXlfbmFtZShicmFuY2guaWQsIHBsYXRmb3JtLmlk
LCB0ZXN0LmlkKQorICAgICAgICBydW5zID0gUnVucyhrZXlfbmFtZT1rZXlfbmFtZSwgYnJhbmNo
PWJyYW5jaCwgcGxhdGZvcm09cGxhdGZvcm0sIHRlc3Q9dGVzdCwKKyAgICAgICAgICAgIGpzb25f
cnVucz1qc29uLmR1bXBzKHRlc3RfcnVucylbMTotMV0sIGpzb25fYXZlcmFnZXM9anNvbi5kdW1w
cyhhdmVyYWdlcylbMTotMV0sIGpzb25fbWluPW1pbl92YWx1ZSwganNvbl9tYXg9bWF4X3ZhbHVl
KQorICAgICAgICBydW5zLnB1dCgpCisgICAgICAgIG1lbWNhY2hlLnNldChrZXlfbmFtZSwgcnVu
cy50b19qc29uKCkpCisgICAgICAgIHJldHVybiBydW5zCisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYganNvbl9ieV9pZHMoY2xzLCBicmFuY2hfaWQsIHBsYXRmb3JtX2lkLCB0ZXN0X2lkKToK
KyAgICAgICAga2V5X25hbWUgPSBjbHMuX2tleV9uYW1lKGJyYW5jaF9pZCwgcGxhdGZvcm1faWQs
IHRlc3RfaWQpCisgICAgICAgIHJ1bnNfanNvbiA9IG1lbWNhY2hlLmdldChrZXlfbmFtZSkKKyAg
ICAgICAgaWYgbm90IHJ1bnNfanNvbjoKKyAgICAgICAgICAgIHJ1bnMgPSBjbHMuZ2V0X2J5X2tl
eV9uYW1lKGtleV9uYW1lKQorICAgICAgICAgICAgaWYgbm90IHJ1bnM6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHJ1bnNfanNvbiA9IHJ1bnMudG9fanNvbigpCisg
ICAgICAgICAgICBtZW1jYWNoZS5zZXQoa2V5X25hbWUsIHJ1bnNfanNvbikKKyAgICAgICAgcmV0
dXJuIHJ1bnNfanNvbgorCisgICAgZGVmIHRvX2pzb24oc2VsZik6CisgICAgICAgICMgZGF0ZV9y
YW5nZSBpcyBuZXZlciB1c2VkIGJ5IGNvbW1vbi5qcy4KKyAgICAgICAgcmV0dXJuICd7InRlc3Rf
cnVucyI6IFslc10sICJhdmVyYWdlcyI6IHslc30sICJtaW4iOiAlcywgIm1heCI6ICVzLCAiZGF0
ZV9yYW5nZSI6IG51bGwsICJzdGF0IjogIm9rIn0nICUgKHNlbGYuanNvbl9ydW5zLAorICAgICAg
ICAgICAgc2VsZi5qc29uX2F2ZXJhZ2VzLCBzdHIoc2VsZi5qc29uX21pbikgaWYgc2VsZi5qc29u
X21pbiBlbHNlICdudWxsJywgc3RyKHNlbGYuanNvbl9tYXgpIGlmIHNlbGYuanNvbl9tYXggZWxz
ZSAnbnVsbCcpCisKKyAgICAjIEZJWE1FOiBVc2UgZGF0YSBpbiBKU09OIHRvIGNvbXB1dGUgdmFs
dWVzIHRvIGF2b2lkIGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBkYXRhc3RvcmUuCisgICAgZGVmIGNo
YXJ0X3BhcmFtcyhzZWxmLCBkaXNwbGF5X2RheXMsIG5vdz1kYXRldGltZS5ub3coKS5yZXBsYWNl
KGhvdXI9MTIsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCkpOgorICAgICAgICBj
aGFydF9kYXRhX3ggPSBbXQorICAgICAgICBjaGFydF9kYXRhX3kgPSBbXQorICAgICAgICBlbmRf
dGltZSA9IG5vdworICAgICAgICBzdGFydF90aW1lc3RhbXAgPSBta3RpbWUoKGVuZF90aW1lIC0g
dGltZWRlbHRhKGRpc3BsYXlfZGF5cykpLnRpbWV0dXBsZSgpKQorICAgICAgICBlbmRfdGltZXN0
YW1wID0gbWt0aW1lKGVuZF90aW1lLnRpbWV0dXBsZSgpKQorCisgICAgICAgIGZvciBidWlsZCwg
cmVzdWx0IGluIHNlbGYuX2dlbmVyYXRlX3J1bnMoc2VsZi5icmFuY2gsIHNlbGYucGxhdGZvcm0s
IHNlbGYudGVzdC5uYW1lKToKKyAgICAgICAgICAgIHRpbWVzdGFtcCA9IG1rdGltZShidWlsZC50
aW1lc3RhbXAudGltZXR1cGxlKCkpCisgICAgICAgICAgICBpZiB0aW1lc3RhbXAgPCBzdGFydF90
aW1lc3RhbXAgb3IgdGltZXN0YW1wID4gZW5kX3RpbWVzdGFtcDoKKyAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgY2hhcnRfZGF0YV94LmFwcGVuZCh0aW1lc3RhbXApCisgICAg
ICAgICAgICBjaGFydF9kYXRhX3kuYXBwZW5kKHJlc3VsdC52YWx1ZSkKKworICAgICAgICBkYXRl
cyA9IFtlbmRfdGltZSAtIHRpbWVkZWx0YShkaXNwbGF5X2RheXMgLyA3LjAgKiAoNyAtIGkpKSBm
b3IgaSBpbiByYW5nZSgwLCA4KV0KKworICAgICAgICB5X21heCA9IG1heChjaGFydF9kYXRhX3kp
ICogMS4xCisgICAgICAgIHlfYXhpc19sYWJlbF9zdGVwID0gaW50KHlfbWF4IC8gNSArIDAuNSkg
ICMgVGhpcyB3b24ndCB3b3JrIGZvciBkZWNpbWFsIG51bWJlcnMKKworICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAgJ2NodCc6ICdseHknLCAgIyBTcGVjaWZ5IHdpdGggWCBhbmQgWSBjb29y
ZGluYXRlcworICAgICAgICAgICAgJ2NoeHQnOiAneCx5JywgICMgRGlzcGxheSBib3RoIFggYW5k
IFkgYXhpZXMKKyAgICAgICAgICAgICdjaHhsJzogJzA6fCcgKyAnfCcuam9pbihbZGF0ZS5zdHJm
dGltZSgnJWIgJWQnKSBmb3IgZGF0ZSBpbiBkYXRlc10pLCAgIyBYLWF4aXMgbGFiZWxzCisgICAg
ICAgICAgICAnY2h4cic6ICcxLDAsJWYsJWYnICUgKGludCh5X21heCArIDAuNSksIHlfYXhpc19s
YWJlbF9zdGVwKSwgICMgWS1heGlzIHJhbmdlOiBtaW49MCwgbWF4LCBzdGVwCisgICAgICAgICAg
ICAnY2hkcyc6ICclZiwlZiwlZiwlZicgJSAoc3RhcnRfdGltZXN0YW1wLCBlbmRfdGltZXN0YW1w
LCAwLCB5X21heCksICAjIFgsIFkgZGF0YSByYW5nZQorICAgICAgICAgICAgJ2NoeHMnOiAnMSw2
NzY3NjcsMTEuMTY3LDAsbCw2NzY3NjcnLCAgIyBZLWF4aXMgbGFiZWw6IDEsY29sb3IsZm9udC1z
aXplLGNlbnRlcmQgb24gdGljayxheGlzIGxpbmUvbm8gdGlja3MsIHRpY2sgY29sb3IKKyAgICAg
ICAgICAgICdjaHMnOiAnMzYweDI0MCcsICAjIEltYWdlIHNpemU6IDM2MHB4IGJ5IDI0MHB4Cisg
ICAgICAgICAgICAnY2hjbyc6ICdmZjAwMDAnLCAgIyBQbG90IGxpbmUgY29sb3IKKyAgICAgICAg
ICAgICdjaGcnOiAnJWYsMjAsMCwwJyAlICgxMDAgLyAobGVuKGRhdGVzKSAtIDEpKSwgICMgWCwg
WSBncmlkIGxpbmUgc3RlcCBzaXplcyAtIG1heCBpcyAxMDAuCisgICAgICAgICAgICAnY2hscyc6
ICczJywgICMgTGluZSB0aGlja25lc3MKKyAgICAgICAgICAgICdjaGYnOiAnYmcscyxlZmY2ZmQn
LCAgIyBUcmFuc3BhcmVudCBiYWNrZ3JvdW5kCisgICAgICAgICAgICAnY2hkJzogJ3Q6JyArICcs
Jy5qb2luKFtzdHIoeCkgZm9yIHggaW4gY2hhcnRfZGF0YV94XSkgKyAnfCcgKyAnLCcuam9pbihb
c3RyKHkpIGZvciB5IGluIGNoYXJ0X2RhdGFfeV0pLCAgIyBYLCBZIGRhdGEKKyAgICAgICAgfQor
CisKIGNsYXNzIERhc2hib2FyZEltYWdlKGRiLk1vZGVsKToKICAgICBpbWFnZSA9IGRiLkJsb2JQ
cm9wZXJ0eShyZXF1aXJlZD1UcnVlKQogICAgIGNyZWF0ZWRBdCA9IGRiLkRhdGVUaW1lUHJvcGVy
dHkocmVxdWlyZWQ9VHJ1ZSwgYXV0b19ub3c9VHJ1ZSkKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1w
ZXJmLmFwcHNwb3QuY29tL21vZGVsc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRl
cy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDEw
OTgyMSkKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL21vZGVsc191bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAoraW1wb3J0IGpzb24KIGltcG9ydCBtb2RlbHMKIGltcG9ydCB1bml0dGVz
dAogCkBAIC00NSw2ICs0Niw3IEBAIGZyb20gbW9kZWxzIGltcG9ydCBUZXN0CiBmcm9tIG1vZGVs
cyBpbXBvcnQgVGVzdFJlc3VsdAogZnJvbSBtb2RlbHMgaW1wb3J0IFJlcG9ydExvZwogZnJvbSBt
b2RlbHMgaW1wb3J0IFBlcnNpc3RlbnRDYWNoZQorZnJvbSBtb2RlbHMgaW1wb3J0IFJ1bnMKIGZy
b20gbW9kZWxzIGltcG9ydCBEYXNoYm9hcmRJbWFnZQogZnJvbSBtb2RlbHMgaW1wb3J0IGNyZWF0
ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVyaWNfaWRfaG9sZGVyCiBmcm9tIG1vZGVscyBpbXBv
cnQgZGVsZXRlX21vZGVsX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIKQEAgLTUyMCw2ICs1MjIsMjIw
IEBAIGNsYXNzIFBlcnNpc3RlbnRDYWNoZVRlc3RzKERhdGFTdG9yZVRlc3QKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChQZXJzaXN0ZW50Q2FjaGUuZ2V0X2NhY2hlKCdzb21lLWNhY2hlJyksICdz
b21lIGRhdGEnKQogCiAKK2NsYXNzIFJ1bnNUZXN0KERhdGFTdG9yZVRlc3RzQmFzZSk6CisgICAg
ZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihSdW5zVGVzdCwgc2VsZikuc2V0VXAoKQor
ICAgICAgICBzZWxmLnRlc3RiZWQuaW5pdF9tZW1jYWNoZV9zdHViKCkKKworICAgIGRlZiBfY3Jl
YXRlX3Jlc3VsdHMoc2VsZiwgYnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRlciwgdGVzdF9uYW1lLCB2
YWx1ZXMsIHRpbWVzdGFtcHM9Tm9uZSk6CisgICAgICAgIHJlc3VsdHMgPSBbXQorICAgICAgICBm
b3IgaSwgdmFsdWUgaW4gZW51bWVyYXRlKHZhbHVlcyk6CisgICAgICAgICAgICBidWlsZCA9IEJ1
aWxkKGJyYW5jaD1icmFuY2gsIHBsYXRmb3JtPXBsYXRmb3JtLCBidWlsZGVyPWJ1aWxkZXIsCisg
ICAgICAgICAgICAgICAgYnVpbGROdW1iZXI9aSwgcmV2aXNpb249MTAwICsgaSwgdGltZXN0YW1w
PXRpbWVzdGFtcHNbaV0gaWYgdGltZXN0YW1wcyBlbHNlIGRhdGV0aW1lLm5vdygpKQorICAgICAg
ICAgICAgYnVpbGQucHV0KCkKKyAgICAgICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHQobmFtZT10
ZXN0X25hbWUsIGJ1aWxkPWJ1aWxkLCB2YWx1ZT12YWx1ZSkKKyAgICAgICAgICAgIHJlc3VsdC5w
dXQoKQorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KQorICAgICAgICByZXR1cm4g
cmVzdWx0cworCisgICAgZGVmIHRlc3RfZ2VuZXJhdGVfcnVucyhzZWxmKToKKyAgICAgICAgc29t
ZV9icmFuY2ggPSBCcmFuY2guY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLWJyYW5jaCcsICdTb21l
IEJyYW5jaCcpCisgICAgICAgIHNvbWVfcGxhdGZvcm0gPSBQbGF0Zm9ybS5jcmVhdGVfaWZfcG9z
c2libGUoJ3NvbWUtcGxhdGZvcm0nLCAnU29tZSBQbGF0Zm9ybScpCisgICAgICAgIHNvbWVfYnVp
bGRlciA9IEJ1aWxkZXIuZ2V0KEJ1aWxkZXIuY3JlYXRlKCdzb21lLWJ1aWxkZXInLCAnU29tZSBC
dWlsZGVyJykpCisgICAgICAgIHNvbWVfdGVzdCA9IFRlc3QudXBkYXRlX29yX2luc2VydCgnc29t
ZS10ZXN0Jywgc29tZV9icmFuY2gsIHNvbWVfcGxhdGZvcm0pCisKKyAgICAgICAgcmVzdWx0cyA9
IHNlbGYuX2NyZWF0ZV9yZXN1bHRzKHNvbWVfYnJhbmNoLCBzb21lX3BsYXRmb3JtLCBzb21lX2J1
aWxkZXIsICdzb21lLXRlc3QnLCBbNTAuMCwgNTEuMCwgNTIuMCwgNDkuMCwgNDguMF0pCisgICAg
ICAgIGxhc3RfaSA9IDAKKyAgICAgICAgZm9yIGksIChidWlsZCwgcmVzdWx0KSBpbiBlbnVtZXJh
dGUoUnVucy5fZ2VuZXJhdGVfcnVucyhzb21lX2JyYW5jaCwgc29tZV9wbGF0Zm9ybSwgc29tZV90
ZXN0KSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkLmJ1aWxkTnVtYmVyLCBp
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZC5yZXZpc2lvbiwgMTAwICsgaSkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm5hbWUsICdzb21lLXRlc3QnKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQudmFsdWUsIHJlc3VsdHNbaV0udmFs
dWUpCisgICAgICAgICAgICBsYXN0X2kgPSBpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsYXN0
X2kgKyAxLCBsZW4ocmVzdWx0cykpCisKKyAgICBkZWYgdGVzdF91cGRhdGVfb3JfaW5zZXJ0KHNl
bGYpOgorICAgICAgICBzb21lX2JyYW5jaCA9IEJyYW5jaC5jcmVhdGVfaWZfcG9zc2libGUoJ3Nv
bWUtYnJhbmNoJywgJ1NvbWUgQnJhbmNoJykKKyAgICAgICAgc29tZV9wbGF0Zm9ybSA9IFBsYXRm
b3JtLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1wbGF0Zm9ybScsICdTb21lIFBsYXRmb3JtJykK
KyAgICAgICAgc29tZV9idWlsZGVyID0gQnVpbGRlci5nZXQoQnVpbGRlci5jcmVhdGUoJ3NvbWUt
YnVpbGRlcicsICdTb21lIEJ1aWxkZXInKSkKKyAgICAgICAgc29tZV90ZXN0ID0gVGVzdC51cGRh
dGVfb3JfaW5zZXJ0KCdzb21lLXRlc3QnLCBzb21lX2JyYW5jaCwgc29tZV9wbGF0Zm9ybSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKFJ1bnMpCisKKyAgICAgICAgcnVu
cyA9IFJ1bnMudXBkYXRlX29yX2luc2VydChzb21lX2JyYW5jaCwgc29tZV9wbGF0Zm9ybSwgc29t
ZV90ZXN0KQorICAgICAgICBzZWxmLmFzc2VydE9ubHlJbnN0YW5jZShydW5zKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJ1bnMuanNvbl9ydW5zLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChydW5zLmpzb25fYXZlcmFnZXMsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1
bnMuanNvbl9taW4sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVucy5qc29uX21h
eCwgTm9uZSkKKyAgICAgICAgb2xkX21lbWNhY2hlX3ZhbHVlID0gbWVtY2FjaGUuZ2V0KFJ1bnMu
X2tleV9uYW1lKHNvbWVfYnJhbmNoLmlkLCBzb21lX3BsYXRmb3JtLmlkLCBzb21lX3Rlc3QuaWQp
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUob2xkX21lbWNhY2hlX3ZhbHVlKQorCisgICAgICAg
IHJ1bnMuZGVsZXRlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKFJ1
bnMpCisKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYuX2NyZWF0ZV9yZXN1bHRzKHNvbWVfYnJhbmNo
LCBzb21lX3BsYXRmb3JtLCBzb21lX2J1aWxkZXIsICdzb21lLXRlc3QnLCBbNTAuMF0pCisgICAg
ICAgIHJ1bnMgPSBSdW5zLnVwZGF0ZV9vcl9pbnNlcnQoc29tZV9icmFuY2gsIHNvbWVfcGxhdGZv
cm0sIHNvbWVfdGVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2UocnVucykKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHJ1bnMuanNvbl9ydW5zLnN0YXJ0c3dpdGgoJ1s1LCBbNCwg
MCwgMTAwLCBudWxsXSwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5zLmpzb25fYXZl
cmFnZXMsICciMTAwIjogNTAuMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVucy5qc29u
X21pbiwgNTAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5zLmpzb25fbWF4LCA1MC4w
KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG1lbWNhY2hlLmdldChSdW5zLl9rZXlfbmFt
ZShzb21lX2JyYW5jaC5pZCwgc29tZV9wbGF0Zm9ybS5pZCwgc29tZV90ZXN0LmlkKSksIG9sZF9t
ZW1jYWNoZV92YWx1ZSkKKworICAgIGRlZiB0ZXN0X2pzb25fYnlfaWRzKHNlbGYpOgorICAgICAg
ICBzb21lX2JyYW5jaCA9IEJyYW5jaC5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtYnJhbmNoJywg
J1NvbWUgQnJhbmNoJykKKyAgICAgICAgc29tZV9wbGF0Zm9ybSA9IFBsYXRmb3JtLmNyZWF0ZV9p
Zl9wb3NzaWJsZSgnc29tZS1wbGF0Zm9ybScsICdTb21lIFBsYXRmb3JtJykKKyAgICAgICAgc29t
ZV9idWlsZGVyID0gQnVpbGRlci5nZXQoQnVpbGRlci5jcmVhdGUoJ3NvbWUtYnVpbGRlcicsICdT
b21lIEJ1aWxkZXInKSkKKyAgICAgICAgc29tZV90ZXN0ID0gVGVzdC51cGRhdGVfb3JfaW5zZXJ0
KCdzb21lLXRlc3QnLCBzb21lX2JyYW5jaCwgc29tZV9wbGF0Zm9ybSkKKworICAgICAgICBzZWxm
Ll9jcmVhdGVfcmVzdWx0cyhzb21lX2JyYW5jaCwgc29tZV9wbGF0Zm9ybSwgc29tZV9idWlsZGVy
LCAnc29tZS10ZXN0JywgWzUwLjBdKQorICAgICAgICBydW5zID0gUnVucy51cGRhdGVfb3JfaW5z
ZXJ0KHNvbWVfYnJhbmNoLCBzb21lX3BsYXRmb3JtLCBzb21lX3Rlc3QpCisgICAgICAgIHJ1bnNf
anNvbiA9IHJ1bnMudG9fanNvbigpCisKKyAgICAgICAga2V5X25hbWUgPSBSdW5zLl9rZXlfbmFt
ZShzb21lX2JyYW5jaC5pZCwgc29tZV9wbGF0Zm9ybS5pZCwgc29tZV90ZXN0LmlkKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFJ1bnMuanNvbl9ieV9pZHMoc29tZV9icmFuY2guaWQsIHNvbWVf
cGxhdGZvcm0uaWQsIHNvbWVfdGVzdC5pZCksIHJ1bnNfanNvbikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChtZW1jYWNoZS5nZXQoa2V5X25hbWUpLCBydW5zX2pzb24pCisKKyAgICAgICAgbWVt
Y2FjaGUuc2V0KGtleV9uYW1lLCAnYmxhaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUnVu
cy5qc29uX2J5X2lkcyhzb21lX2JyYW5jaC5pZCwgc29tZV9wbGF0Zm9ybS5pZCwgc29tZV90ZXN0
LmlkKSwgJ2JsYWgnKQorCisgICAgICAgIG1lbWNhY2hlLmRlbGV0ZShrZXlfbmFtZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChSdW5zLmpzb25fYnlfaWRzKHNvbWVfYnJhbmNoLmlkLCBzb21l
X3BsYXRmb3JtLmlkLCBzb21lX3Rlc3QuaWQpLCBydW5zX2pzb24pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobWVtY2FjaGUuZ2V0KGtleV9uYW1lKSwgcnVuc19qc29uKQorCisgICAgZGVmIHRl
c3RfdG9fanNvbl93aXRob3V0X3Jlc3VsdHMoc2VsZik6CisgICAgICAgIHNvbWVfYnJhbmNoID0g
QnJhbmNoLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1icmFuY2gnLCAnU29tZSBCcmFuY2gnKQor
ICAgICAgICBzb21lX3BsYXRmb3JtID0gUGxhdGZvcm0uY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21l
LXBsYXRmb3JtJywgJ1NvbWUgUGxhdGZvcm0nKQorICAgICAgICBzb21lX3Rlc3QgPSBUZXN0LnVw
ZGF0ZV9vcl9pbnNlcnQoJ3NvbWUtdGVzdCcsIHNvbWVfYnJhbmNoLCBzb21lX3BsYXRmb3JtKQor
ICAgICAgICBzZWxmLmFzc2VydE9ubHlJbnN0YW5jZShzb21lX3Rlc3QpCisgICAgICAgIHNlbGYu
YXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihUZXN0UmVzdWx0KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGpzb24ubG9hZHMoUnVucy51cGRhdGVfb3JfaW5zZXJ0KHNvbWVfYnJhbmNoLCBzb21l
X3BsYXRmb3JtLCBzb21lX3Rlc3QpLnRvX2pzb24oKSksIHsKKyAgICAgICAgICAgICd0ZXN0X3J1
bnMnOiBbXSwKKyAgICAgICAgICAgICdhdmVyYWdlcyc6IHt9LAorICAgICAgICAgICAgJ21pbic6
IE5vbmUsCisgICAgICAgICAgICAnbWF4JzogTm9uZSwKKyAgICAgICAgICAgICdkYXRlX3Jhbmdl
JzogTm9uZSwKKyAgICAgICAgICAgICdzdGF0JzogJ29rJ30pCisKKyAgICBkZWYgdGVzdF90b19q
c29uX3dpdGhfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgc29tZV9icmFuY2ggPSBCcmFuY2guY3Jl
YXRlX2lmX3Bvc3NpYmxlKCdzb21lLWJyYW5jaCcsICdTb21lIEJyYW5jaCcpCisgICAgICAgIHNv
bWVfcGxhdGZvcm0gPSBQbGF0Zm9ybS5jcmVhdGVfaWZfcG9zc2libGUoJ3NvbWUtcGxhdGZvcm0n
LCAnU29tZSBQbGF0Zm9ybScpCisgICAgICAgIHNvbWVfYnVpbGRlciA9IEJ1aWxkZXIuZ2V0KEJ1
aWxkZXIuY3JlYXRlKCdzb21lLWJ1aWxkZXInLCAnU29tZSBCdWlsZGVyJykpCisgICAgICAgIHNv
bWVfdGVzdCA9IFRlc3QudXBkYXRlX29yX2luc2VydCgnc29tZS10ZXN0Jywgc29tZV9icmFuY2gs
IHNvbWVfcGxhdGZvcm0pCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLl9jcmVhdGVfcmVzdWx0cyhz
b21lX2JyYW5jaCwgc29tZV9wbGF0Zm9ybSwgc29tZV9idWlsZGVyLCAnc29tZS10ZXN0JywgWzUw
LjAsIDUxLjAsIDUyLjAsIDQ5LjAsIDQ4LjBdKQorCisgICAgICAgIHZhbHVlID0ganNvbi5sb2Fk
cyhSdW5zLnVwZGF0ZV9vcl9pbnNlcnQoc29tZV9icmFuY2gsIHNvbWVfcGxhdGZvcm0sIHNvbWVf
dGVzdCkudG9fanNvbigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsVW5vcmRlcmVkTGlzdCh2
YWx1ZS5rZXlzKCksIFsndGVzdF9ydW5zJywgJ2F2ZXJhZ2VzJywgJ21pbicsICdtYXgnLCAnZGF0
ZV9yYW5nZScsICdzdGF0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVbJ3N0YXQn
XSwgJ29rJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZVsnbWluJ10sIDQ4LjApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVbJ21heCddLCA1Mi4wKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHZhbHVlWydkYXRlX3JhbmdlJ10sIE5vbmUpICAjIGRhdGVfcmFuZ2UgaXMg
bmV2ZXIgZ2l2ZW4KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2YWx1ZVsndGVzdF9y
dW5zJ10pLCBsZW4ocmVzdWx0cykpCisgICAgICAgIGZvciBpLCBydW4gaW4gZW51bWVyYXRlKHZh
bHVlWyd0ZXN0X3J1bnMnXSk6CisgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRzW2ldCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1blswXSwgcmVzdWx0LmtleSgpLmlkKCkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1blsxXVsxXSwgaSkgICMgQnVpbGQgbnVtYmVyCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1blsxXVsyXSwgMTAwICsgaSkgICMgUmV2aXNp
b24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuWzFdWzNdLCBOb25lKSAgIyBTdXBw
bGVtZW50YXJ5IHJldmlzaW9uCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1blszXSwg
cmVzdWx0LnZhbHVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5bNl0sIHNvbWVf
YnVpbGRlci5rZXkoKS5pZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5bN10s
IE5vbmUpICAjIFN0YXRpc3RpY3MKKworICAgIGRlZiBfYXNzZXJ0X2VudHJ5KHNlbGYsIGVudHJ5
LCBidWlsZCwgcmVzdWx0LCB2YWx1ZSwgc3RhdGlzdGljcz1Ob25lLCBzdXBwbGVtZW50YXJ5X3Jl
dmlzaW9ucz1Ob25lKToKKyAgICAgICAgZW50cnkgPSBlbnRyeVs6XQorICAgICAgICBlbnRyeVsy
XSA9IE5vbmUgICMgdGltZXN0YW1wCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnksIFty
ZXN1bHQua2V5KCkuaWQoKSwgW2J1aWxkLmtleSgpLmlkKCksIGJ1aWxkLmJ1aWxkTnVtYmVyLCBi
dWlsZC5yZXZpc2lvbiwgc3VwcGxlbWVudGFyeV9yZXZpc2lvbnNdLAorICAgICAgICAgICAgTm9u
ZSwgICMgdGltZXN0YW1wCisgICAgICAgICAgICB2YWx1ZSwgMCwgICMgcnVuTnVtYmVyCisgICAg
ICAgICAgICBbXSwgICMgYW5ub3RhdGlvbnMKKyAgICAgICAgICAgIGJ1aWxkLmJ1aWxkZXIua2V5
KCkuaWQoKSwgc3RhdGlzdGljc10pCisKKyAgICBkZWYgdGVzdF9ydW5fZnJvbV9idWlsZF9hbmRf
cmVzdWx0KHNlbGYpOgorICAgICAgICBicmFuY2ggPSBCcmFuY2guY3JlYXRlX2lmX3Bvc3NpYmxl
KCdzb21lLWJyYW5jaCcsICdTb21lIEJyYW5jaCcpCisgICAgICAgIHBsYXRmb3JtID0gUGxhdGZv
cm0uY3JlYXRlX2lmX3Bvc3NpYmxlKCdzb21lLXBsYXRmb3JtJywgJ1NvbWUgUGxhdGZvcm0nKQor
ICAgICAgICBidWlsZGVyID0gQnVpbGRlci5nZXQoQnVpbGRlci5jcmVhdGUoJ3NvbWUtYnVpbGRl
cicsICdTb21lIEJ1aWxkZXInKSkKKyAgICAgICAgdGVzdF9uYW1lID0gJyBzb21lLXRlc3QnCisK
KyAgICAgICAgZGVmIGNyZWF0ZV9idWlsZChidWlsZF9udW1iZXIsIHJldmlzaW9uKToKKyAgICAg
ICAgICAgIHRpbWVzdGFtcCA9IGRhdGV0aW1lLm5vdygpLnJlcGxhY2UobWljcm9zZWNvbmQ9MCkK
KyAgICAgICAgICAgIGJ1aWxkID0gQnVpbGQoYnJhbmNoPWJyYW5jaCwgcGxhdGZvcm09cGxhdGZv
cm0sIGJ1aWxkZXI9YnVpbGRlciwgYnVpbGROdW1iZXI9YnVpbGRfbnVtYmVyLAorICAgICAgICAg
ICAgICAgIHJldmlzaW9uPXJldmlzaW9uLCB0aW1lc3RhbXA9dGltZXN0YW1wKQorICAgICAgICAg
ICAgYnVpbGQucHV0KCkKKyAgICAgICAgICAgIHJldHVybiBidWlsZAorCisgICAgICAgIGJ1aWxk
ID0gY3JlYXRlX2J1aWxkKDEsIDEwMSkKKyAgICAgICAgcmVzdWx0ID0gVGVzdFJlc3VsdChuYW1l
PXRlc3RfbmFtZSwgdmFsdWU9MTIzLjAsIGJ1aWxkPWJ1aWxkKQorICAgICAgICByZXN1bHQucHV0
KCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2VudHJ5KFJ1bnMuX2VudHJ5X2Zyb21fYnVpbGRfYW5k
X3Jlc3VsdChidWlsZCwgcmVzdWx0KSwgYnVpbGQsIHJlc3VsdCwgMTIzLjApCisKKyAgICAgICAg
YnVpbGQgPSBjcmVhdGVfYnVpbGQoMiwgMTAyKQorICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0
KG5hbWU9dGVzdF9uYW1lLCB2YWx1ZT00NTYuMCwgdmFsdWVNZWRpYW49Nzg5LjAsIGJ1aWxkPWJ1
aWxkKQorICAgICAgICByZXN1bHQucHV0KCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2VudHJ5KFJ1
bnMuX2VudHJ5X2Zyb21fYnVpbGRfYW5kX3Jlc3VsdChidWlsZCwgcmVzdWx0KSwgYnVpbGQsIHJl
c3VsdCwgNDU2LjApCisKKyAgICAgICAgcmVzdWx0LnZhbHVlU3RkZXYgPSA3LjAKKyAgICAgICAg
cmVzdWx0LnB1dCgpCisgICAgICAgIHNlbGYuX2Fzc2VydF9lbnRyeShSdW5zLl9lbnRyeV9mcm9t
X2J1aWxkX2FuZF9yZXN1bHQoYnVpbGQsIHJlc3VsdCksIGJ1aWxkLCByZXN1bHQsIDQ1Ni4wKQor
CisgICAgICAgIHJlc3VsdC52YWx1ZVN0ZGV2ID0gTm9uZQorICAgICAgICByZXN1bHQudmFsdWVN
aW4gPSAxMjMuMAorICAgICAgICByZXN1bHQudmFsdWVNYXggPSA3ODkuMAorICAgICAgICByZXN1
bHQucHV0KCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2VudHJ5KFJ1bnMuX2VudHJ5X2Zyb21fYnVp
bGRfYW5kX3Jlc3VsdChidWlsZCwgcmVzdWx0KSwgYnVpbGQsIHJlc3VsdCwgNDU2LjApCisKKyAg
ICAgICAgcmVzdWx0LnZhbHVlU3RkZXYgPSA4LjAKKyAgICAgICAgcmVzdWx0LnZhbHVlTWluID0g
MTIzLjAKKyAgICAgICAgcmVzdWx0LnZhbHVlTWF4ID0gNzg5LjAKKyAgICAgICAgcmVzdWx0LnB1
dCgpCisgICAgICAgIHNlbGYuX2Fzc2VydF9lbnRyeShSdW5zLl9lbnRyeV9mcm9tX2J1aWxkX2Fu
ZF9yZXN1bHQoYnVpbGQsIHJlc3VsdCksIGJ1aWxkLCByZXN1bHQsIDQ1Ni4wLAorICAgICAgICAg
ICAgc3RhdGlzdGljcz17J3N0ZGV2JzogOC4wLCAnbWluJzogMTIzLjAsICdtYXgnOiA3ODkuMH0p
CisKKyAgICAgICAgcmVzdWx0LnZhbHVlTWVkaWFuID0gMzQ1LjAgICMgTWVkaWFuIGlzIG5ldmVy
IHVzZWQgYnkgdGhlIGZyb250ZW5kLgorICAgICAgICByZXN1bHQudmFsdWVTdGRldiA9IDguMAor
ICAgICAgICByZXN1bHQudmFsdWVNaW4gPSAxMjMuMAorICAgICAgICByZXN1bHQudmFsdWVNYXgg
PSA3ODkuMAorICAgICAgICByZXN1bHQucHV0KCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2VudHJ5
KFJ1bnMuX2VudHJ5X2Zyb21fYnVpbGRfYW5kX3Jlc3VsdChidWlsZCwgcmVzdWx0KSwgYnVpbGQs
IHJlc3VsdCwgNDU2LjAsCisgICAgICAgICAgICBzdGF0aXN0aWNzPXsnc3RkZXYnOiA4LjAsICdt
aW4nOiAxMjMuMCwgJ21heCc6IDc4OS4wfSkKKworICAgIGRlZiB0ZXN0X2NoYXJ0X3BhcmFtc193
aXRoX3ZhbHVlKHNlbGYpOgorICAgICAgICBzb21lX2JyYW5jaCA9IEJyYW5jaC5jcmVhdGVfaWZf
cG9zc2libGUoJ3NvbWUtYnJhbmNoJywgJ1NvbWUgQnJhbmNoJykKKyAgICAgICAgc29tZV9wbGF0
Zm9ybSA9IFBsYXRmb3JtLmNyZWF0ZV9pZl9wb3NzaWJsZSgnc29tZS1wbGF0Zm9ybScsICdTb21l
IFBsYXRmb3JtJykKKyAgICAgICAgc29tZV9idWlsZGVyID0gQnVpbGRlci5nZXQoQnVpbGRlci5j
cmVhdGUoJ3NvbWUtYnVpbGRlcicsICdTb21lIEJ1aWxkZXInKSkKKyAgICAgICAgc29tZV90ZXN0
ID0gVGVzdC51cGRhdGVfb3JfaW5zZXJ0KCdzb21lLXRlc3QnLCBzb21lX2JyYW5jaCwgc29tZV9w
bGF0Zm9ybSkKKworICAgICAgICBzdGFydF90aW1lID0gZGF0ZXRpbWUoMjAxMSwgMiwgMjEsIDEy
LCAwLCAwKQorICAgICAgICBlbmRfdGltZSA9IGRhdGV0aW1lKDIwMTEsIDIsIDI4LCAxMiwgMCwg
MCkKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYuX2NyZWF0ZV9yZXN1bHRzKHNvbWVfYnJhbmNoLCBz
b21lX3BsYXRmb3JtLCBzb21lX2J1aWxkZXIsICdzb21lLXRlc3QnLAorICAgICAgICAgICAgWzUw
LjAsIDUxLjAsIDUyLjAsIDQ5LjAsIDQ4LjAsIDUxLjksIDUwLjcsIDUxLjFdLAorICAgICAgICAg
ICAgW3N0YXJ0X3RpbWUgKyB0aW1lZGVsdGEoZGF5KSBmb3IgZGF5IGluIHJhbmdlKDAsIDgpXSkK
KworICAgICAgICAjIFVzZSBpbnQgZGVzcGl0ZSBvZiBpdHMgaW1wcmVjaXNlbmVzcyBzaW5jZSB0
ZXN0cyBtYXkgZmFpbCBkdWUgdG8gcm91bmRpbmcgZXJyb3JzIG90aGVyd2lzZS4KKyAgICAgICAg
ZGVmIHNwbGl0X2FzX2ludChzdHJpbmcpOgorICAgICAgICAgICAgcmV0dXJuIFtpbnQoZmxvYXQo
dmFsdWUpKSBmb3IgdmFsdWUgaW4gc3RyaW5nLnNwbGl0KCcsJyldCisKKyAgICAgICAgcGFyYW1z
ID0gUnVucy51cGRhdGVfb3JfaW5zZXJ0KHNvbWVfYnJhbmNoLCBzb21lX3BsYXRmb3JtLCBzb21l
X3Rlc3QpLmNoYXJ0X3BhcmFtcyg3LCBlbmRfdGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwYXJhbXNbJ2NoeGwnXSwgJzA6fEZlYiAyMXxGZWIgMjJ8RmViIDIzfEZlYiAyNHxGZWIgMjV8
RmViIDI2fEZlYiAyN3xGZWIgMjgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwbGl0X2Fz
X2ludChwYXJhbXNbJ2NoeHInXSksIFsxLCAwLCA1NywgaW50KDUyICogMS4xIC8gNSArIDAuNSld
KQorICAgICAgICB4X21pbiwgeF9tYXgsIHlfbWluLCB5X21heCA9IHNwbGl0X2FzX2ludChwYXJh
bXNbJ2NoZHMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRldGltZS5mcm9tdGltZXN0
YW1wKHhfbWluKSwgc3RhcnRfdGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRldGlt
ZS5mcm9tdGltZXN0YW1wKHhfbWF4KSwgZW5kX3RpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoeV9taW4sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeV9tYXgsIGludCg1MiAqIDEu
MSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BsaXRfYXNfaW50KHBhcmFtc1snY2hnJ10p
LCBbaW50KDEwMCAvIDcpLCAyMCwgMCwgMF0pCisKKyAgICAgICAgcGFyYW1zID0gUnVucy51cGRh
dGVfb3JfaW5zZXJ0KHNvbWVfYnJhbmNoLCBzb21lX3BsYXRmb3JtLCBzb21lX3Rlc3QpLmNoYXJ0
X3BhcmFtcygxNCwgZW5kX3RpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zWydj
aHhsJ10sICcwOnxGZWIgMTR8RmViIDE2fEZlYiAxOHxGZWIgMjB8RmViIDIyfEZlYiAyNHxGZWIg
MjZ8RmViIDI4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGxpdF9hc19pbnQocGFyYW1z
WydjaHhyJ10pLCBbMSwgMCwgNTcsIGludCg1MiAqIDEuMSAvIDUgKyAwLjUpXSkKKyAgICAgICAg
eF9taW4sIHhfbWF4LCB5X21pbiwgeV9tYXggPSBzcGxpdF9hc19pbnQocGFyYW1zWydjaGRzJ10p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCh4X21pbiks
IGRhdGV0aW1lKDIwMTEsIDIsIDE0LCAxMiwgMCwgMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCh4X21heCksIGVuZF90aW1lKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHlfbWluLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHlfbWF4LCBp
bnQoNTIgKiAxLjEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwbGl0X2FzX2ludChwYXJh
bXNbJ2NoZyddKSwgW2ludCgxMDAgLyA3KSwgMjAsIDAsIDBdKQorCisKIGNsYXNzIERhc2hib2Fy
ZEltYWdlVGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAg
ICAgICAgIHN1cGVyKERhc2hib2FyZEltYWdlVGVzdHMsIHNlbGYpLnNldFVwKCkK
</data>
<flag name="review"
          id="133221"
          type_id="1"
          status="+"
          setter="morrita"
    />
          </attachment>
      

    </bug>

</bugzilla>