<?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>122330</bug_id>
          
          <creation_ts>2013-10-04 10:33:45 -0700</creation_ts>
          <short_desc>Remove Qt leftovers from Tools/Scripts</short_desc>
          <delta_ts>2013-10-04 10:47:15 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>122312</dup_id>
          
          <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="Hugo Parente Lima">hugo.lima</reporter>
          <assigned_to name="Hugo Parente Lima">hugo.lima</assigned_to>
          <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>936234</commentid>
    <comment_count>0</comment_count>
    <who name="Hugo Parente Lima">hugo.lima</who>
    <bug_when>2013-10-04 10:33:45 -0700</bug_when>
    <thetext>Remove Qt leftovers from Tools/Scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936236</commentid>
    <comment_count>1</comment_count>
      <attachid>213374</attachid>
    <who name="Hugo Parente Lima">hugo.lima</who>
    <bug_when>2013-10-04 10:40:20 -0700</bug_when>
    <thetext>Created attachment 213374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936238</commentid>
    <comment_count>2</comment_count>
    <who name="Hugo Parente Lima">hugo.lima</who>
    <bug_when>2013-10-04 10:43:53 -0700</bug_when>
    <thetext>Duplicated :-) 122330, too much people helping on the same funeral :-/

*** This bug has been marked as a duplicate of bug 122312 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213374</attachid>
            <date>2013-10-04 10:40:20 -0700</date>
            <delta_ts>2013-10-04 10:47:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122330-20131004144232.patch</filename>
            <type>text/plain</type>
            <size>76623</size>
            <attacher name="Hugo Parente Lima">hugo.lima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2ODkzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWM1YmE0YTFjZDFjM2Y0Mjc1MjI4ZmJmZDVhY2NmY2Rj
YTQ1NmVlYi4uOGJlYzYzZjdiYTI1ZmMxNjJiOWY2ZDBiYjgwODVhNDVkZDBiNDdmNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEzLTEwLTA0ICBIdWdvIFBhcmVudGUgTGltYSAgPGh1Z28ubGltYUBvcGVuYm9zc2Eu
b3JnPgorCisgICAgICAgIFJlbW92ZSBRdCBsZWZ0b3ZlcnMgZnJvbSBUb29scy9TY3JpcHRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzMzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMv
YnVpbGQtZHVtcHJlbmRlcnRyZWU6CisgICAgICAgICogU2NyaXB0cy9idWlsZC1qc2M6CisgICAg
ICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJr
aXR0ZXN0cnVubmVyOgorICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtcXQtaW5zcGVjdG9yLXJl
c291cmNlOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHM6
CisgICAgICAgIChvcGVuRHVtcFRvb2wpOgorICAgICAgICAqIFNjcmlwdHMvcnVuLWxhdW5jaGVy
OgorICAgICAgICAqIFNjcmlwdHMvcnVuLXF0d2Via2l0LXRlc3RzOiBSZW1vdmVkLgorICAgICAg
ICAqIFNjcmlwdHMvcnVuLXdlYmtpdC10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRzL3VwZGF0ZS13
ZWJraXQ6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOgorICAgICAgICAoYXJndW1l
bnRzRm9yQ29uZmlndXJhdGlvbik6CisgICAgICAgIChqc2NQcm9kdWN0RGlyKToKKyAgICAgICAg
KGJ1aWx0RHlsaWJQYXRoRm9yTmFtZSk6CisgICAgICAgIChpc0FwcGxlV2ViS2l0KToKKyAgICAg
ICAgKGxhdW5jaGVyUGF0aCk6CisgICAgICAgIChsYXVuY2hlck5hbWUpOgorICAgICAgICAoY2hl
Y2tSZXF1aXJlZFN5c3RlbUNvbmZpZyk6CisgICAgICAgIChjb3B5SW5zcGVjdG9yRnJvbnRlbmRG
aWxlcyk6CisgICAgICAgIChzZXRQYXRoRm9yUnVubmluZ1dlYktpdEFwcCk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L3F0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC9xdF91bml0dGVzdC5weTogUmVtb3ZlZC4KKwogMjAxMy0xMC0wMyAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQuIEFkZCBteXNlbGYgdG8gc29tZSB3YXRjaGxpc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy9idWlsZC1kdW1wcmVuZGVydHJlZSBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRl
cnRyZWUKaW5kZXggMWZmNzVmN2QzYmMwOGZiYWFhN2YzNWY4OTY5M2RhOWQ4MjYzNzVlNS4uNDlh
MjZmMTJhOTA0MGE3YjJkYWFjYWUwNDVmYmQwNTYxZDQxZDU3YyAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy9idWlsZC1kdW1wcmVuZGVydHJlZQorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLWR1
bXByZW5kZXJ0cmVlCkBAIC00Myw3ICs0Myw2IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlv
bnNdIFtvcHRpb25zIHRvIHBhc3MgdG8gYnVpbGQgc3lzdGVtXQogICAtLWhlbHAgICAgICAgIFNo
b3cgdGhpcyBoZWxwIG1lc3NhZ2UKICAgLS1jbGVhbiAgICAgICBDbGVhbiB1cCB0aGUgYnVpbGQg
ZGlyZWN0b3J5CiAgIC0tZ3RrICAgICAgICAgQnVpbGQgdGhlIEdUSysgcG9ydAotICAtLXF0ICAg
ICAgICAgIEJ1aWxkIHRoZSBRdCBwb3J0CiAgIC0tZWZsICAgICAgICAgQnVpbGQgdGhlIEVGTCBw
b3J0CiBFT0YKIApAQCAtNzAsOCArNjksOCBAQCBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CiB9
IGVsc2lmIChpc0FwcGxlV2luV2ViS2l0KCkpIHsKICAgICBteSAkZHJ0U29sdXRpb25QYXRoID0g
IkR1bXBSZW5kZXJUcmVlLnZjeHByb2ovRHVtcFJlbmRlclRyZWUuc2xuIjsKICAgICAkcmVzdWx0
ID0gYnVpbGRWaXN1YWxTdHVkaW9Qcm9qZWN0KCRkcnRTb2x1dGlvblBhdGgsICRjbGVhbik7Ci19
IGVsc2lmIChpc1F0KCkgfHwgaXNHdGsoKSB8fCBpc0VmbCgpKSB7Ci0gICAgIyBRdCwgR3RrIGFu
ZCBFRkwgYnVpbGQgZXZlcnl0aGluZyBpbiBvbmUgc2hvdC4gTm8gbmVlZCB0byBidWlsZCBhbnl0
aGluZyBoZXJlLgorfSBlbHNpZiAoaXNHdGsoKSB8fCBpc0VmbCgpKSB7CisgICAgIyBHdGsgYW5k
IEVGTCBidWlsZCBldmVyeXRoaW5nIGluIG9uZSBzaG90LiBObyBuZWVkIHRvIGJ1aWxkIGFueXRo
aW5nIGhlcmUuCiAgICAgJHJlc3VsdCA9IDA7CiB9IGVsc2UgewogICAgIGRpZSAiQnVpbGRpbmcg
bm90IGRlZmluZWQgZm9yIHRoaXMgcGxhdGZvcm0hXG4iOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy9idWlsZC1qc2MgYi9Ub29scy9TY3JpcHRzL2J1aWxkLWpzYwppbmRleCBkODQ4ZDg1Zjcy
YjQzZGY4OTllNDIzNDc5ZWY1YTRmNzMwYWExM2RjLi44YTBkNWY0ZTdiMzAyY2YwMzdmZDNiMGVk
OTI1N2Y4MDMzYzQzYjFkIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLWpzYworKysg
Yi9Ub29scy9TY3JpcHRzL2J1aWxkLWpzYwpAQCAtNjQsMTUgKzY0LDcgQEAgY2hkaXJXZWJLaXQo
KTsKIG15IEBvcHRpb25zID0gWGNvZGVPcHRpb25zKCk7CiBteSBAY292ZXJhZ2VTdXBwb3J0T3B0
aW9ucyA9ICgkY292ZXJhZ2VTdXBwb3J0KSA/IFhjb2RlQ292ZXJhZ2VTdXBwb3J0T3B0aW9ucygp
IDogKCk7CiAKLWlmIChpc1F0KCkpIHsKLSAgICBjaGVja0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJv
bUFSR1YoIi0tcXQiKTsKLSAgICBteSBAcHJvamVjdHMgPSAoIldURiIsICJKYXZhU2NyaXB0Q29y
ZSIpOwotICAgICMgUGljayB1cCB0aGUgLS1uby13ZWJraXQyIG9wdGlvbiBmcm9tIEJVSUxEX1dF
QktJVF9BUkdTIGlmIGl0IGlzIG5lZWRlZAotICAgIHB1c2ggQEFSR1YsIHNwbGl0KC8gLywgJEVO
VnsnQlVJTERfV0VCS0lUX0FSR1MnfSkgaWYgKCRFTlZ7J0JVSUxEX1dFQktJVF9BUkdTJ30pOwot
ICAgIHB1c2ggQEFSR1YsICJXRUJLSVRfQ09ORklHLT1idWlsZF93ZWJraXQyIiBpZiBjaGVja0Zv
ckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFSR1YoIi0tbm8td2Via2l0MiIpOwotICAgIG15ICRyZXN1
bHQgPSBidWlsZFFNYWtlUHJvamVjdHMoXEBwcm9qZWN0cywgMCwgQEFSR1YpOwotICAgIGV4aXQg
ZXhpdFN0YXR1cygkcmVzdWx0KTsKLX0gZWxzaWYgKGNtYWtlQmFzZWRQb3J0TmFtZSgpKSB7Citp
ZiAoY21ha2VCYXNlZFBvcnROYW1lKCkpIHsKICAgICBidWlsZENNYWtlUHJvamVjdE9yRXhpdCgw
LCBjbWFrZUJhc2VkUG9ydE5hbWUoKSwgdW5kZWYsICJqc2MiLCBjbWFrZUJhc2VkUG9ydEFyZ3Vt
ZW50cygpKTsgIyBUaGlzIGNhbGwgb25seSByZXR1cm5zIGlmIG5vdGhpbmcgd3JvbmcgaGFwcGVu
ZWQKICAgICBleGl0IGV4aXRTdGF0dXMoMCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L2J1aWxkLXdlYmtpdCBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CmluZGV4IDVkMmY4NDBi
MDMzNzc0MmI2ZTkyNThkZWRiOGJjNzgyMDYxZGNiZTIuLmIwMGRiZTc3NTRjY2U0YzlmZGFlNmEz
ZTY5ODgyMGFmNGI5NTkyNTcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0
CisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CkBAIC01Miw4ICs1Miw2IEBAIGNoZGly
V2ViS2l0KCk7CiBteSAkc2hvd0hlbHAgPSAwOwogbXkgJGNsZWFuID0gMDsKIG15ICRtaW5pbWFs
ID0gMDsKLW15ICRpbnN0YWxsSGVhZGVyczsKLW15ICRpbnN0YWxsTGliczsKIG15ICRwcmVmaXhQ
YXRoOwogbXkgJG1ha2VBcmdzID0gIiI7CiBteSAkY21ha2VBcmdzID0gIiI7CkBAIC02NSwyOCAr
NjMsNiBAQCBteSAkc3RhcnRUaW1lID0gdGltZSgpOwogCiBteSBAZmVhdHVyZXMgPSBnZXRGZWF0
dXJlT3B0aW9uTGlzdCgpOwogCi0jIFVwZGF0ZSBkZWZhdWx0cyBmcm9tIFF0J3MgcHJvamVjdCBm
aWxlCi1pZiAoaXNRdCgpKSB7Ci0gICAgIyBUYWtlIGEgc25lZWsgcGVlayBhdCB0aGUgYXJndW1l
bnRzLCBzaW5jZSB3ZSB3aWxsIG5lZWQgdGhlIHFtYWtlIGJpbmFyeSBlYXJseQotICAgICMgb24g
dG8gZG8gcHJvZmlsZSBwYXJzaW5nLiBXZSBhbHNvIG5lZWQgdG8ga25vdyBpZiB3ZSdyZSBzaG93
aW5nIHRoZSBoZWxwLXRleHQuCi0gICAgZm9yZWFjaCAoQEFSR1YpIHsKLSAgICAgICAgaWYgKC9e
LS1xbWFrZT0oLiopLykgewotICAgICAgICAgICAgc2V0UW1ha2VCaW5hcnlQYXRoKCQxKTsKLSAg
ICAgICAgfSBlbHNpZiAoL14tLWhlbHAkLykgewotICAgICAgICAgICAgJHNob3dIZWxwID0gMTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIG15ICVxdERlZmF1bHRzOwotICAgIGlmICgkc2hvd0hl
bHApIHsKLSAgICAgICAgJXF0RGVmYXVsdHMgPSBxdEZlYXR1cmVEZWZhdWx0cygpOwotICAgIH0K
LQotICAgIGZvcmVhY2ggKEBmZWF0dXJlcykgewotICAgICAgICAkXy0+e2RlZmF1bHR9ID0gKCVx
dERlZmF1bHRzID8gJHF0RGVmYXVsdHN7JF8tPntkZWZpbmV9fSB8fCAwIDogLTEpOwotICAgIH0K
LX0KLQogIyBBZGRpdGlvbmFsIGVudmlyb25tZW50IHBhcmFtZXRlcnMKIHB1c2ggQEFSR1YsIHNw
bGl0KC8gLywgJEVOVnsnQlVJTERfV0VCS0lUX0FSR1MnfSkgaWYgKCRFTlZ7J0JVSUxEX1dFQktJ
VF9BUkdTJ30pOwogCkBAIC0xMTcsMjQgKzkzLDE5IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29w
dGlvbnNdIFtvcHRpb25zIHRvIHBhc3MgdG8gYnVpbGQgc3lzdGVtXQogICAtLWJsYWNrYmVycnkg
ICAgICAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIEJsYWNrQmVycnkgcG9ydCBvbiBNYWMvTGlu
dXgKICAgLS1lZmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIHRoZSBFRkwgcG9y
dAogICAtLWd0ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIEdUSysgcG9y
dAotICAtLXF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIFF0IHBvcnQK
ICAgLS13aW5jYWlybyAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIHVzaW5nIENhaXJvIChy
YXRoZXIgdGhhbiBDb3JlR3JhcGhpY3MpIG9uIFdpbmRvd3MKICAgLS13aW5jZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJ1aWxkIHRoZSBXaW5DRSBwb3J0CiAKICAgLS1pbnNwZWN0b3ItZnJv
bnRlbmQgICAgICAgICAgICAgIENvcHkgY2hhbmdlcyB0byB0aGUgaW5zcGVjdG9yIGZyb250LWVu
ZCBmaWxlcyB0byB0aGUgYnVpbGQgZGlyZWN0b3J5CiAKLSAgLS1pbnN0YWxsLWhlYWRlcnM9PHBh
dGg+ICAgICAgICAgIFNldCBpbnN0YWxsYXRpb24gcGF0aCBmb3IgdGhlIGhlYWRlcnMgKFF0IG9u
bHkpCi0gIC0taW5zdGFsbC1saWJzPTxwYXRoPiAgICAgICAgICAgICBTZXQgaW5zdGFsbGF0aW9u
IHBhdGggZm9yIHRoZSBsaWJyYXJpZXMgKFF0IG9ubHkpCi0KICAgLS1wcmVmaXg9PHBhdGg+ICAg
ICAgICAgICAgICAgICAgIFNldCBpbnN0YWxsYXRpb24gcHJlZml4IHRvIHRoZSBnaXZlbiBwYXRo
IChHdGsvRWZsL0JsYWNrQmVycnkgb25seSkKICAgLS1tYWtlYXJncz08YXJndW1lbnRzPiAgICAg
ICAgICAgIE9wdGlvbmFsIE1ha2VmaWxlIGZsYWdzCi0gIC0tcW1ha2Vhcmc9PGFyZ3VtZW50cz4g
ICAgICAgICAgICBPcHRpb25hbCBxbWFrZSBmbGFncyAoUXQgb25seSwgZS5nLiAtLXFtYWtlYXJn
PSJDT05GSUcrPXdlYmtpdDIiIHRvIGJ1aWxkIFdlYktpdDIpCiAgIC0tY21ha2VhcmdzPTxhcmd1
bWVudHM+ICAgICAgICAgICBPcHRpb25hbCBDTWFrZSBmbGFncyAoZS5nLiAtLWNtYWtlYXJncz0i
LURGT089YmFyIC1EQ01BS0VfUFJFRklYX1BBVEg9L3Vzci9sb2NhbCIpCiAKICAgLS1taW5pbWFs
ICAgICAgICAgICAgICAgICAgICAgICAgIE5vIG9wdGlvbmFsIGZlYXR1cmVzLCB1bmxlc3MgZXhw
bGljaXRseSBlbmFibGVkCiAKICAgLS1vbmx5LXdlYmtpdCAgICAgICAgICAgICAgICAgICAgIEJ1
aWxkIG9ubHkgdGhlIFdlYktpdCBwcm9qZWN0Ci0gIC0tbm8td2Via2l0MSAgICAgICAgICAgICAg
ICAgICAgICBPbWl0IFdlYktpdDEgY29kZSBmcm9tIHRoZSBidWlsZCAoUXQvRUZML0dUSyBvbmx5
KQorICAtLW5vLXdlYmtpdDEgICAgICAgICAgICAgICAgICAgICAgT21pdCBXZWJLaXQxIGNvZGUg
ZnJvbSB0aGUgYnVpbGQgKEVGTC9HVEsgb25seSkKICAgLS1uby13ZWJraXQyICAgICAgICAgICAg
ICAgICAgICAgIE9taXQgV2ViS2l0MiBjb2RlIGZyb20gdGhlIGJ1aWxkCiAKIEVPRgpAQCAtMTQy
LDggKzExMyw2IEBAIEVPRgogbXkgJW9wdGlvbnMgPSAoCiAgICAgJ2hlbHAnID0+IFwkc2hvd0hl
bHAsCiAgICAgJ2NsZWFuJyA9PiBcJGNsZWFuLAotICAgICdpbnN0YWxsLWhlYWRlcnM9cycgPT4g
XCRpbnN0YWxsSGVhZGVycywKLSAgICAnaW5zdGFsbC1saWJzPXMnID0+IFwkaW5zdGFsbExpYnMs
CiAgICAgJ3ByZWZpeD1zJyA9PiBcJHByZWZpeFBhdGgsCiAgICAgJ21ha2VhcmdzPXMnID0+IFwk
bWFrZUFyZ3MsCiAgICAgJ2NtYWtlYXJncz1zJyA9PiBcJGNtYWtlQXJncywKQEAgLTE3Myw5ICsx
NDIsNiBAQCBzZXRDb25maWd1cmF0aW9uKCk7CiAKIG15ICRwcm9kdWN0RGlyID0gcHJvZHVjdERp
cigpOwogCi0jIFJlbW92ZSAwIGJ5dGUgc2l6ZWQgZmlsZXMgZnJvbSBwcm9kdWN0RGlyIGFmdGVy
IHNsYXZlIGxvc3QgZm9yIFF0IGJ1aWxkYm90cy4KLUZpbGU6OkZpbmQ6OmZpbmQoXCZ1bmxpbmta
ZXJvRmlsZXMsICRwcm9kdWN0RGlyKSBpZiAoaXNRdCgpICYmIC1lICRwcm9kdWN0RGlyKTsKLQog
c3ViIHVubGlua1plcm9GaWxlcygpCiB7CiAgICAgbXkgJGZpbGUgPSAkRmlsZTo6RmluZDo6bmFt
ZTsKQEAgLTIwMCwxMCArMTY2LDYgQEAgZm9yIG15ICRkaXIgKEBwcm9qZWN0cykgewogICAgIH0K
IH0KIAotaWYgKCFpc1F0KCkgJiYgIS1kICJXZWJLaXRMaWJyYXJpZXMiKSB7Ci0gICAgZGllICJF
cnJvcjogTm8gV2ViS2l0TGlicmFyaWVzIGRpcmVjdG9yeSBmb3VuZC4gUGxlYXNlIGRvIGEgZnJl
c2ggY2hlY2tvdXQuXG4iOwotfQotCiBteSBAb3B0aW9ucyA9ICgpOwogbXkgJGhhc0ZUTEpJVCA9
IDA7CiAKQEAgLTI0MywyNiArMjA1LDYgQEAgaWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewogICAg
ICMgQ29weSBXZWJLaXRTdXBwb3J0TGlicmFyeSB0byB0aGUgY29ycmVjdCBsb2NhdGlvbiBpbiBX
ZWJLaXRMaWJyYXJpZXMgc28gaXQgY2FuIGJlIGZvdW5kLgogICAgICMgV2lsbCBmYWlsIGlmIFdl
YktpdFN1cHBvcnRMaWJyYXJ5LnppcCBpcyBub3QgaW4gc291cmNlIHJvb3QuCiAgICAgKHN5c3Rl
bSgicGVybCBUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQtc3VwcG9ydC1saWJzIikgPT0gMCkg
b3IgZGllOwotfSBlbHNpZiAoaXNRdCgpKSB7Ci0gICAgcHVzaCBAb3B0aW9ucywgIi0taW5zdGFs
bC1oZWFkZXJzPSIgLiAkaW5zdGFsbEhlYWRlcnMgaWYgZGVmaW5lZCgkaW5zdGFsbEhlYWRlcnMp
OwotICAgIHB1c2ggQG9wdGlvbnMsICItLWluc3RhbGwtbGlicz0iIC4gJGluc3RhbGxMaWJzIGlm
IGRlZmluZWQoJGluc3RhbGxMaWJzKTsKLSAgICBwdXNoIEBvcHRpb25zLCAiLS1tYWtlYXJncz0i
IC4gJG1ha2VBcmdzIGlmICRtYWtlQXJnczsKLSAgICBwdXNoIEBvcHRpb25zLCAiV0VCS0lUX0NP
TkZJRy09YnVpbGRfd2Via2l0MSIgaWYgJG5vV2ViS2l0MTsKLSAgICBwdXNoIEBvcHRpb25zLCAi
V0VCS0lUX0NPTkZJRy09YnVpbGRfd2Via2l0MiIgaWYgJG5vV2ViS2l0MjsKLQotICAgIGlmIChj
aGVja0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFSR1YoIi0yIikpIHsKLSAgICAgICAgcHJpbnQg
Ik5vdGU6IFdlYktpdDIgaXMgbm93IGJ1aWx0IGJ5IGRlZmF1bHQsIHlvdSBkb24ndCBuZWVkIHRv
IHBhc3MgLTIuIERpc2FibGUgdXNpbmcgLS1uby13ZWJraXQyXG4iOwotICAgIH0KLQotICAgIEBv
cHRpb25zID0gKEBBUkdWLCBAb3B0aW9ucyk7Ci0KLSAgICBmb3JlYWNoIChAZmVhdHVyZXMpIHsK
LSAgICAgICAgaWYgKCRfLT57ZGVmaW5lfSAmJiAkeyRfLT57dmFsdWV9fSAhPSAkXy0+e2RlZmF1
bHR9KSB7Ci0gICAgICAgICAgICBteSAkZGVmaW5lID0gbGMoJF8tPntkZWZpbmV9KTsKLSAgICAg
ICAgICAgICRkZWZpbmUgPX4gcy9eZW5hYmxlXy8vOwotICAgICAgICAgICAgcHVzaCBAb3B0aW9u
cywgIldFQktJVF9DT05GSUciIC4gKCR7JF8tPnt2YWx1ZX19ID09IDEgPyAiKyIgOiAiLSIpIC4g
Ij0iIC4gJGRlZmluZTsKLSAgICAgICAgfQotICAgIH0KIH0KIAogIyBJZiBhc2tlZCB0byBidWls
ZCBqdXN0IHRoZSBXZWJLaXQgcHJvamVjdCwgb3ZlcndyaXRlIHRoZSBwcm9qZWN0cwpAQCAtMzA3
LDEyICsyNDksNiBAQCBpZiAoaXNCbGFja0JlcnJ5KCkpIHsKICAgICBidWlsZENNYWtlUHJvamVj
dE9yRXhpdCgkY2xlYW4sICJCbGFja0JlcnJ5IiwgJHByZWZpeFBhdGgsICRtYWtlQXJncywgKGNt
YWtlQmFzZWRQb3J0QXJndW1lbnRzKCksIGNNYWtlQXJnc0Zyb21GZWF0dXJlcygpKSwgJGNtYWtl
QXJncyk7CiB9CiAKLWlmIChpc1F0KCkpIHsKLSAgICBAcHJvamVjdHMgPSAoKTsgIyBBbiBlbXB0
eSBwcm9qZWN0cyBsaXN0IHdpbGwgYnVpbGQgdGhlIGRlZmF1bHQgcHJvamVjdHMKLSAgICAkcmVz
dWx0ID0gYnVpbGRRTWFrZVByb2plY3RzKFxAcHJvamVjdHMsICRjbGVhbiwgQG9wdGlvbnMpOwot
ICAgIGV4aXQgZXhpdFN0YXR1cygkcmVzdWx0KSBpZiBleGl0U3RhdHVzKCRyZXN1bHQpOwotfQot
CiAjIEJ1aWxkLCBhbmQgYWJvcnQgaWYgdGhlIGJ1aWxkIGZhaWxzLgogZm9yIG15ICRkaXIgKEBw
cm9qZWN0cykgewogICAgIGNoZGlyICRkaXIgb3IgZGllOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0
ZXN0cnVubmVyCmluZGV4IGU1YjIzNTQ1Yjc3ZTZlNzhiNGNlNDE2OWY0Mjg3YTg1YzRiYjVjMjku
LjY4MDUyYzYyNWE0NTI5NjQ5Nzg2M2FlNWUzYTI1MzA2YzhhZTMyNzkgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcgorKysgYi9Ub29scy9TY3JpcHRzL2J1
aWxkLXdlYmtpdHRlc3RydW5uZXIKQEAgLTYzLDggKzYzLDggQEAgaWYgKGlzQXBwbGVNYWNXZWJL
aXQoKSkgewogICAgICRyZXN1bHQgPSBidWlsZFhDb2RlUHJvamVjdCgiV2ViS2l0VGVzdFJ1bm5l
ciIsICRjbGVhbiwgWGNvZGVPcHRpb25zKCksIEBBUkdWKTsKIH0gZWxzaWYgKGlzQXBwbGVXaW5X
ZWJLaXQoKSkgewogICAgICRyZXN1bHQgPSBidWlsZFZpc3VhbFN0dWRpb1Byb2plY3QoIldlYktp
dFRlc3RSdW5uZXIuc2xuIiwgJGNsZWFuKTsKLX0gZWxzaWYgKGlzUXQoKSB8fCBpc0d0aygpIHx8
IGlzRWZsKCkpIHsKLSAgICAjIFF0IGFuZCBHVEsrIGJ1aWxkIGV2ZXJ5dGhpbmcgaW4gb25lIHNo
b3QuIE5vIG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaGVyZS4KK30gZWxzaWYgKGlzR3RrKCkgfHwg
aXNFZmwoKSkgeworICAgICMgRWZsIGFuZCBHVEsrIGJ1aWxkIGV2ZXJ5dGhpbmcgaW4gb25lIHNo
b3QuIE5vIG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaGVyZS4KICAgICAkcmVzdWx0ID0gMDsKIH0g
ZWxzZSB7CiAgICAgZGllICJXZWJLaXRUZXN0UnVubmVyIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhp
cyBwbGF0Zm9ybS5cbiI7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLXF0LWlu
c3BlY3Rvci1yZXNvdXJjZSBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtcXQtaW5zcGVjdG9yLXJl
c291cmNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwYTgzMDFiM2EwYTg3YjI0NjQ0
NmJlYTRhMTMzMTZmZjU3NDFiNzMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtcXQtaW5zcGVjdG9yLXJlc291cmNl
CisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsCi0jCi0jIENv
cHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAK
LSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMg
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKLSMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSMgICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0jIFJlZ2VuZXJhdGUgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmMgZnJvbSB0aGUgY29udGVudCBvZiBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvCi0KLXN1YiBhZGRGaWxlcyhAKQotewotICAgIG15IEBmaWxlcyA9IEBfOwotCi0gICAgZm9y
ZWFjaCAkZmlsZSAoQGZpbGVzKSB7Ci0gICAgICAgICRmaWxlID1+IHMsU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC8sLDsKLSAgICAgICAgcHJpbnQgV0VCS0lUX1FSQyAiICAgIDxm
aWxlPiIuJGZpbGUgLiAiPC9maWxlPlxuIjsKLSAgICB9Ci19Ci0KLSMgU2V0dXAKLW9wZW4oV0VC
S0lUX1FSQywgIj5Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMi
KSBvciBkaWU7Ci1wcmludCBXRUJLSVRfUVJDICc8IURPQ1RZUEUgUkNDPjxSQ0MgdmVyc2lvbj0i
MS4wIj4nLiJcbiI7Ci1wcmludCBXRUJLSVRfUVJDICc8cXJlc291cmNlIHByZWZpeD0iL3dlYmtp
dC9pbnNwZWN0b3IiPicuIlxuIjsKLQotCi0jIERpcmVjdG9yeSB3aXRoIGh0bWwgYW5kIGpzIGZp
bGVzIGFuZCB0aGUgaW1hZ2VzCi1hZGRGaWxlcyg8U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC8qLnsqaHRtbCxqcyxjc3Msc3ZnfT4pOwotYWRkRmlsZXMoPFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzLyo+KTsKLQotcHJpbnQgV0VCS0lUX1FSQyAiPC9x
cmVzb3VyY2U+XG4iOwotcHJpbnQgV0VCS0lUX1FSQyAiPC9SQ0M+XG4iOwotY2xvc2UoV0VCS0lU
X1FSQyk7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL29sZC1ydW4td2Via2l0LXRlc3RzIGIv
VG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwppbmRleCA1NjA1NDE0Y2ZhNTU5OGU3
ZmUwOGEwNTUxZDRjNTYwYzdiNDMxNTQ3Li5iYWJjMjQ0ZDUzZWE5YzU3ZmE1YWI0NDI4MjAxMjhi
ODBmNDYxNDU5IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL29sZC1ydW4td2Via2l0LXRlc3Rz
CisrKyBiL1Rvb2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMKQEAgLTIzMCw4ICsyMzAs
NiBAQCBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CiAgICAgfSBlbHNlIHsKICAgICAgICAgJHBs
YXRmb3JtID0gIm1hYyI7CiAgICAgfQotfSBlbHNpZiAoaXNRdCgpKSB7Ci0gICAgJHBsYXRmb3Jt
ID0gInF0IjsKIH0gZWxzaWYgKGlzR3RrKCkpIHsKICAgICAkcGxhdGZvcm0gPSAiZ3RrIjsKIH0g
ZWxzaWYgKGlzV2luQ2Fpcm8oKSkgewpAQCAtMjQ4LDcgKzI0Niw3IEBAIGlmIChpc0FwcGxlTWFj
V2ViS2l0KCkpIHsKICAgICB9CiB9CiAKLWlmIChpc1F0KCkgfHwgaXNBcHBsZVdpbldlYktpdCgp
KSB7CitpZiAoaXNBcHBsZVdpbldlYktpdCgpKSB7CiAgICAgbXkgJHRlc3Rmb250UGF0aCA9ICRF
TlZ7IldFQktJVF9URVNURk9OVFMifTsKICAgICBpZiAoISR0ZXN0Zm9udFBhdGggfHwgIS1kICIk
dGVzdGZvbnRQYXRoIikgewogICAgICAgICBwcmludCAiVGhlIFdFQktJVF9URVNURk9OVFMgZW52
aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGRlZmluZWQgb3Igbm90IHNldCBwcm9wZXJseVxuIjsK
QEAgLTM4OSw5ICszODcsNiBAQCBpZiAoJHVzZVdlYktpdFRlc3RSdW5uZXIpIHsKICAgICAgICAg
JHN0cmlwRWRpdGluZ0NhbGxiYWNrcyA9IDAgdW5sZXNzIGRlZmluZWQgJHN0cmlwRWRpdGluZ0Nh
bGxiYWNrczsKICAgICAgICAgJHJlYWxQbGF0Zm9ybSA9ICRwbGF0Zm9ybTsKICAgICAgICAgJHBs
YXRmb3JtID0gIndpbi13azIiOwotICAgIH0gZWxzaWYgKGlzUXQoKSkgewotICAgICAgICAkcmVh
bFBsYXRmb3JtID0gJHBsYXRmb3JtOwotICAgICAgICAkcGxhdGZvcm0gPSAicXQtNS4wLXdrMiI7
CiAgICAgfSBlbHNpZiAoaXNHdGsoKSkgewogICAgICAgICAkcmVhbFBsYXRmb3JtID0gJHBsYXRm
b3JtOwogICAgICAgICAkcGxhdGZvcm0gPSAiZ3RrLXdrMiI7CkBAIC00MjAsNyArNDE1LDYgQEAg
JHVzZVJlbW90ZUxpbmtzVG9UZXN0cyA9IDAgaWYgaXNHdGsoKTsKIAogc2V0Q29uZmlndXJhdGlv
blByb2R1Y3REaXIoQ3dkOjphYnNfcGF0aCgkcm9vdCkpIGlmIChkZWZpbmVkKCRyb290KSk7CiBt
eSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKLSRwcm9kdWN0RGlyIC49ICIvYmluIiBpZiBp
c1F0KCk7CiAkcHJvZHVjdERpciAuPSAiL1Byb2dyYW1zIiBpZiBpc0d0aygpOwogCiAjIFNhdmUg
dGhlIGN1cnJlbnQgZGlyZWN0b3J5IGJlZm9yZSBjaGFnaW5nIGl0IHZpYSBjaGRpcldlYktpdApA
QCAtMTIwNywxNyArMTIwMSw2IEBAIG15IEBjb25maWd1cmF0aW9uQXJncyA9IGFyZ3VtZW50c0Zv
ckNvbmZpZ3VyYXRpb24oKTsKIGlmIChpc0d0aygpKSB7CiAgIHB1c2goQGNvbmZpZ3VyYXRpb25B
cmdzLCAnLTInKSBpZiAkdXNlV2ViS2l0VGVzdFJ1bm5lcjsKICAgc3lzdGVtICJUb29scy9TY3Jp
cHRzL3J1bi1sYXVuY2hlciIsIEBjb25maWd1cmF0aW9uQXJncywgImZpbGU6Ly8iLiR0ZXN0UmVz
dWx0cyBpZiAkbGF1bmNoU2FmYXJpOwotfSBlbHNpZiAoaXNRdCgpKSB7Ci0gIGlmIChnZXRRdFZl
cnNpb24oKSBsdCAiNS4wIikgewotICAgIHVuc2hpZnQgQGNvbmZpZ3VyYXRpb25BcmdzLCBxdygt
c3R5bGUgd2luZG93cyk7Ci0gICAgdW5zaGlmdCBAY29uZmlndXJhdGlvbkFyZ3MsIHF3KC1ncmFw
aGljc3N5c3RlbSByYXN0ZXIpOwotICB9Ci0gIGlmIChpc0N5Z3dpbigpKSB7Ci0gICAgJHRlc3RS
ZXN1bHRzID0gIi8iIC4gdG9XaW5kb3dzUGF0aCgkdGVzdFJlc3VsdHMpOwotICAgICR0ZXN0UmVz
dWx0cyA9fiBzL1xcL1wvL2c7Ci0gIH0KLSAgcHVzaChAY29uZmlndXJhdGlvbkFyZ3MsICctMicp
IGlmICR1c2VXZWJLaXRUZXN0UnVubmVyOwotICBzeXN0ZW0gIlRvb2xzL1NjcmlwdHMvcnVuLWxh
dW5jaGVyIiwgQGNvbmZpZ3VyYXRpb25BcmdzLCAiZmlsZTovLyIuJHRlc3RSZXN1bHRzIGlmICRs
YXVuY2hTYWZhcmk7CiB9IGVsc2lmIChpc0N5Z3dpbigpKSB7CiAgIHN5c3RlbSAiY3lnc3RhcnQi
LCAkdGVzdFJlc3VsdHMgaWYgJGxhdW5jaFNhZmFyaTsKIH0gZWxzaWYgKGlzV2luZG93cygpKSB7
CkBAIC0xNTE0LDExICsxNDk3LDYgQEAgc3ViIG9wZW5EdW1wVG9vbCgpCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAoaXNRdCgpKSB7Ci0gICAgICAgICRDTEVBTl9FTlZ7UVRXRUJLSVRfUExV
R0lOX1BBVEh9ID0gcHJvZHVjdERpcigpIC4gIi9saWIvcGx1Z2lucyI7Ci0gICAgICAgICRDTEVB
Tl9FTlZ7UVRfRFJUX1dFQlZJRVdfTU9ERX0gPSAkRU5WeyJRVF9EUlRfV0VCVklFV19NT0RFIn07
Ci0gICAgfQotICAgIAogICAgIG15IEBhcmdzID0gKCRkdW1wVG9vbCwgQHRvb2xBcmdzKTsKICAg
ICBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7IAogICAgICAgICB1bnNoaWZ0IEBhcmdzLCAiYXJj
aCIsICItIiAuIGFyY2hpdGVjdHVyZSgpOyAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvcnVuLWxhdW5jaGVyIGIvVG9vbHMvU2NyaXB0cy9ydW4tbGF1bmNoZXIKaW5kZXgg
NjY4ODZmZTBiMTk3NGIyMzE5Mzg0MWRjN2M5N2UzODE5OGI4OTljNy4uMTk4ZWNhOTYzNTk1ZTI5
Njk3YjE3YzdmYmZhNTY3ODQzNTRkMzE0MCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4t
bGF1bmNoZXIKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tbGF1bmNoZXIKQEAgLTQ0LDQ3ICs0NCwy
NSBAQCBteSAkbGF1bmNoZXJQYXRoID0gcHJvZHVjdERpcigpOwogY2hlY2tGcmFtZXdvcmtzKCk7
CiAKICMgU2V0IHBhdGhzIGFjY29yZGluZyB0byB0aGUgYnVpbGQgc3lzdGVtIHVzZWQKLWlmIChp
c1F0KCkpIHsKLSAgICBteSAkbGliRGlyID0gY2F0ZGlyKHByb2R1Y3REaXIoKSwgJ2xpYicpOwor
aWYgKGlzR3RrKCkpIHsKICAgICBpZiAoaXNXSzIoKSkgewotICAgICAgICAkbGF1bmNoZXJQYXRo
ID0gY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJiaW4iLCAiTWluaUJyb3dzZXIiKTsKKyAgICAgICAg
dW5zaGlmdChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJQcm9ncmFtcyIsICJNaW5pQnJv
d3NlciIpKTsKICAgICB9IGVsc2UgewotICAgICAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGlyKCRs
YXVuY2hlclBhdGgsICJiaW4iLCAiUXRUZXN0QnJvd3NlciIpOworICAgICAgICB1bnNoaWZ0KEBB
UkdWLCBjYXRkaXIoJGxhdW5jaGVyUGF0aCwgIlByb2dyYW1zIiwgIkd0a0xhdW5jaGVyIikpOwog
ICAgIH0KLQotICAgICRFTlZ7UVRXRUJLSVRfUExVR0lOX1BBVEh9ID0gY2F0ZGlyKCRsaWJEaXIs
ICdwbHVnaW5zJyk7Ci0KLSAgICBwcmludCAiU3RhcnRpbmcgd2Via2l0IGxhdW5jaGVyLCBydW5u
aW5nIGFnYWluc3QgdGhlIGJ1aWx0IFdlYktpdCBpbiAkbGliRGlyLi4uXG4iOwotICAgIGlmIChp
c0RhcndpbigpKSB7Ci0gICAgICAgICRFTlZ7RFlMRF9MSUJSQVJZX1BBVEh9ID0gJEVOVntEWUxE
X0xJQlJBUllfUEFUSH0gPyAiJGxpYkRpcjokRU5We0RZTERfTElCUkFSWV9QQVRIfSIgOiAkbGli
RGlyOwotICAgICAgICAkRU5We0RZTERfRlJBTUVXT1JLX1BBVEh9ID0gJEVOVntEWUxEX0ZSQU1F
V09SS19QQVRIfSA/ICIkbGliRGlyOiRFTlZ7RFlMRF9GUkFNRVdPUktfUEFUSH0iIDogJGxpYkRp
cjsKKyAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGlyKHNvdXJjZURpcigpLCAiVG9vbHMiLCAiamhi
dWlsZCIsICJqaGJ1aWxkLXdyYXBwZXIiKTsKKyAgICB1bnNoaWZ0KEBBUkdWLCAoIi0tZ3RrIiwg
InJ1biIpKTsKK30gZWxzaWYgKGlzRWZsKCkpIHsKKyAgICBpZiAoaXNXSzIoKSkgeworICAgICAg
ICB1bnNoaWZ0KEBBUkdWLCBjYXRkaXIoJGxhdW5jaGVyUGF0aCwgImJpbiIsICJNaW5pQnJvd3Nl
ciIpKTsKICAgICB9IGVsc2UgewotICAgICAgICAkRU5We0xEX0xJQlJBUllfUEFUSH0gPSAkRU5W
e0xEX0xJQlJBUllfUEFUSH0gPyAiJGxpYkRpcjokRU5We0xEX0xJQlJBUllfUEFUSH0iIDogJGxp
YkRpcjsKLSAgICB9Ci19IGVsc2UgewotCi0gICAgaWYgKGlzR3RrKCkpIHsKLSAgICAgICAgaWYg
KGlzV0syKCkpIHsKLSAgICAgICAgICAgIHVuc2hpZnQoQEFSR1YsIGNhdGRpcigkbGF1bmNoZXJQ
YXRoLCAiUHJvZ3JhbXMiLCAiTWluaUJyb3dzZXIiKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICB1bnNoaWZ0KEBBUkdWLCBjYXRkaXIoJGxhdW5jaGVyUGF0aCwgIlByb2dyYW1zIiwg
Ikd0a0xhdW5jaGVyIikpOwotICAgICAgICB9Ci0gICAgICAgICRsYXVuY2hlclBhdGggPSBjYXRk
aXIoc291cmNlRGlyKCksICJUb29scyIsICJqaGJ1aWxkIiwgImpoYnVpbGQtd3JhcHBlciIpOwot
ICAgICAgICB1bnNoaWZ0KEBBUkdWLCAoIi0tZ3RrIiwgInJ1biIpKTsKKyAgICAgICAgdW5zaGlm
dChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJiaW4iLCAiRVdlYkxhdW5jaGVyIikpOwog
ICAgIH0KLQotICAgIGlmIChpc0VmbCgpKSB7Ci0gICAgICAgIGlmIChpc1dLMigpKSB7Ci0gICAg
ICAgICAgICB1bnNoaWZ0KEBBUkdWLCBjYXRkaXIoJGxhdW5jaGVyUGF0aCwgImJpbiIsICJNaW5p
QnJvd3NlciIpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHVuc2hpZnQoQEFSR1Ys
IGNhdGRpcigkbGF1bmNoZXJQYXRoLCAiYmluIiwgIkVXZWJMYXVuY2hlciIpKTsKLSAgICAgICAg
fQotICAgICAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGlyKHNvdXJjZURpcigpLCAiVG9vbHMiLCAi
amhidWlsZCIsICJqaGJ1aWxkLXdyYXBwZXIiKTsKLSAgICAgICAgdW5zaGlmdChAQVJHViwgKCIt
LWVmbCIsICJydW4iKSk7Ci0gICAgfQotCi0gICAgcHJpbnQgIlN0YXJ0aW5nIHdlYmtpdCBsYXVu
Y2hlci5cbiI7CisgICAgJGxhdW5jaGVyUGF0aCA9IGNhdGRpcihzb3VyY2VEaXIoKSwgIlRvb2xz
IiwgImpoYnVpbGQiLCAiamhidWlsZC13cmFwcGVyIik7CisgICAgdW5zaGlmdChAQVJHViwgKCIt
LWVmbCIsICJydW4iKSk7CiB9CiAKK3ByaW50ICJTdGFydGluZyB3ZWJraXQgbGF1bmNoZXIuXG4i
OworCiBleGVjICRsYXVuY2hlclBhdGgsIEBBUkdWIG9yIGRpZTsKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy9ydW4tcXR3ZWJraXQtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1xdHdlYmtp
dC10ZXN0cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZWE4ZDQwOTNjMTA3ZDI3ZGUw
MzJjMzQxYzEwNWI1MDQ2ZjIzMTg0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1xdHdlYmtpdC10ZXN0cworKysgL2Rldi9u
dWxsCkBAIC0xLDQzNyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgLSotIGNvZGlu
ZzogdXRmLTggLSotCi0KLSNDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSNUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSNMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSN2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0K
LSNUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSNidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotI01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0jTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSNZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSN0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotI0Jvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotCi1mcm9tIF9fZnV0
dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1w
b3J0IHJlCi1pbXBvcnQgbG9nZ2luZwotZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQ
RSwgU1RET1VUCi1mcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKLQotCi1jbGFzcyBM
b2cob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHNlbGYu
X2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKG5hbWUpCi0gICAgICAgIHNlbGYuZGVidWcgPSBzZWxm
Ll9sb2cuZGVidWcKLSAgICAgICAgc2VsZi53YXJuID0gc2VsZi5fbG9nLndhcm4KLSAgICAgICAg
c2VsZi5lcnJvciA9IHNlbGYuX2xvZy5lcnJvcgotICAgICAgICBzZWxmLmV4Y2VwdGlvbiA9IHNl
bGYuX2xvZy5leGNlcHRpb24KLSAgICAgICAgc2VsZi5pbmZvID0gc2VsZi5fbG9nLmluZm8KLQot
Ci1jbGFzcyBPcHRpb25zKExvZyk6Ci0gICAgIiIiIE9wdGlvbiBtYW5hZ2VyLiBJdCBwYXJzZXMg
YW5kIGNoZWNrcyBzY3JpcHQncyBwYXJhbWV0ZXJzLCBzZXRzIGFuIGludGVybmFsIHZhcmlhYmxl
LiAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzKToKLSAgICAgICAgTG9nLl9faW5p
dF9fKHNlbGYsICJPcHRpb25zIikKLSAgICAgICAgbG9nID0gc2VsZi5fbG9nCi0gICAgICAgIG9w
dCA9IE9wdGlvblBhcnNlcigiJXByb2cgW29wdGlvbnNdIFtQYXRoVG9TZWFyY2hdLlxuVHJ5IC1o
IG9yIC0taGVscC4iKQotICAgICAgICBvcHQuYWRkX29wdGlvbigiLWoiLCAiLS1wYXJhbGxlbC1s
ZXZlbCIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJpbnQiLAotICAgICAgICAgICAgICBkZXN0PSJw
YXJhbGxlbF9sZXZlbCIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgaGVscD0iTnVtYmVy
IG9mIHBhcmFsbGVsIHByb2Nlc3NlcyBleGVjdXRpbmcgdGhlIFF0J3MgdGVzdHMuIERlZmF1bHQ6
IGNwdSBjb3VudC4iKQotICAgICAgICBvcHQuYWRkX29wdGlvbigiLXYiLCAiLS12ZXJib3NlIiwg
YWN0aW9uPSJzdG9yZSIsIHR5cGU9ImludCIsCi0gICAgICAgICAgICAgIGRlc3Q9InZlcmJvc2Ui
LCBkZWZhdWx0PTIsCi0gICAgICAgICAgICAgIGhlbHA9IlZlcmJvc2UgbGV2ZWwgKDAgLSBxdWll
dCwgMSAtIGVycm9ycyBvbmx5LCAyIC0gaW5mb3MgYW5kIHdhcm5pbmdzLCAzIC0gZGVidWcgaW5m
b3JtYXRpb24pLiBEZWZhdWx0OiAlZGVmYXVsdC4iKQotICAgICAgICBvcHQuYWRkX29wdGlvbigi
IiwgIi0tdGVzdHMtb3B0aW9ucyIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmciLAotICAg
ICAgICAgICAgICBkZXN0PSJ0ZXN0c19vcHRpb25zIiwgZGVmYXVsdD0iIiwKLSAgICAgICAgICAg
ICAgaGVscD0iUGFyYW1ldGVycyBwYXNzZWQgdG8gUXQncyB0ZXN0cyAoZm9yIGV4YW1wbGUgJy1l
dmVudGRlbGF5IDEyMycpLiIpCi0gICAgICAgIG9wdC5hZGRfb3B0aW9uKCItbyIsICItLW91dHB1
dC1maWxlIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmluZyIsCi0gICAgICAgICAgICAgIGRl
c3Q9Im91dHB1dF9maWxlIiwgZGVmYXVsdD0iL3RtcC9xdHdlYmtpdHRlc3RzLmh0bWwiLAotICAg
ICAgICAgICAgICBoZWxwPSJGaWxlIHdoZXJlIHJlc3VsdHMgd2lsbCBiZSBzdG9yZWQuIFRoZSBm
aWxlIHdpbGwgYmUgb3ZlcndyaXR0ZW4uIERlZmF1bHQ6ICVkZWZhdWx0LiIpCi0gICAgICAgIG9w
dC5hZGRfb3B0aW9uKCItYiIsICItLWJyb3dzZXIiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iYnJv
d3NlciIsCi0gICAgICAgICAgICAgIGRlZmF1bHQ9InhkZy1vcGVuIiwKLSAgICAgICAgICAgICAg
aGVscD0iQnJvd3NlciBpbiB3aGljaCByZXN1bHRzIHdpbGwgYmUgb3BlbmVkLiBEZWZhdWx0ICVk
ZWZhdWx0LiIpCi0gICAgICAgIG9wdC5hZGRfb3B0aW9uKCIiLCAiLS1kby1ub3Qtb3Blbi1yZXN1
bHRzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsCi0gICAgICAgICAgICAgIGRlc3Q9Im9wZW5fcmVz
dWx0cyIsIGRlZmF1bHQ9VHJ1ZSwKLSAgICAgICAgICAgICAgaGVscD0iVGhlIHJlc3VsdHMgc2hv
dWxkbid0IHBvcC11cCBpbiBhIGJyb3dzZXIgYXV0b21hdGljYWxseSIpCi0gICAgICAgIG9wdC5h
ZGRfb3B0aW9uKCItZCIsICItLWRldmVsb3Blci1tb2RlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwK
LSAgICAgICAgICAgICAgZGVzdD0iZGV2ZWxvcGVyIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAg
ICAgICAgaGVscD0iU3BlY2lhbCBtb2RlIGZvciBkZWJ1Z2dpbmcuIEluIGdlbmVyYWwgaXQgc2lt
dWxhdGVzIGh1bWFuIGJlaGF2aW9yLCBydW5uaW5nIGFsbCBhdXRvdGVzdHMuIEluIHRoZSBtb2Rl
IGV2ZXJ5dGhpbmcgaXMgZXhlY3V0ZWQgc3luY2hyb25vdXNseSwgbm8gaHRtbCBvdXRwdXQgd2ls
bCBiZSBnZW5lcmF0ZWQsIG5vIGNoYW5nZXMgb3IgdHJhbnNmb3JtYXRpb24gd2lsbCBiZSBhcHBs
aWVkIHRvIHN0ZGVyciBvciBzdGRvdXQuIEluIHRoaXMgbW9kZSBvcHRpb25zOyBwYXJhbGxlbC1s
ZXZlbCwgb3V0cHV0LWZpbGUsIGJyb3dzZXIgYW5kIGRvLW5vdC1vcGVuLXJlc3VsdHMgd2lsbCBi
ZSBpZ25vcmVkLiIpCi0gICAgICAgIG9wdC5hZGRfb3B0aW9uKCItdCIsICItLXRpbWVvdXQiLCBh
Y3Rpb249InN0b3JlIiwgdHlwZT0iaW50IiwKLSAgICAgICAgICAgICAgZGVzdD0idGltZW91dCIs
IGRlZmF1bHQ9MCwKLSAgICAgICAgICAgICAgaGVscD0iVGltZW91dCBpbiBzZWNvbmRzIGZvciBl
YWNoIHRlc3RzdWl0ZS4gWmVybyB2YWx1ZSBtZWFucyB0aGF0IHRoZXJlIGlzIG5vdCB0aW1lb3V0
LiBEZWZhdWx0OiAlZGVmYXVsdC4iKQotICAgICAgICBvcHQuYWRkX29wdGlvbigiLS1yZWxlYXNl
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0icmVsZWFzZSIsIGRlZmF1bHQ9VHJ1ZSwKLSAg
ICAgICAgICAgICAgaGVscD0iUnVuIEFQSSB0ZXN0cyBpbiBXZWJLaXRCdWlsZC9SZWxlYXNlLy4u
LiBkaXJlY3RvcnkuIEl0IGlzIGlnbm9yZWQgaWYgUGF0aFRvU2VhcmNoIGlzIHBhc3NlZC4iKQot
ICAgICAgICBvcHQuYWRkX29wdGlvbigiLS1kZWJ1ZyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBk
ZXN0PSJyZWxlYXNlIiwKLSAgICAgICAgICAgICAgaGVscD0iUnVuIEFQSSB0ZXN0cyBpbiBXZWJL
aXRCdWlsZC9EZWJ1Zy8uLi4gZGlyZWN0b3J5LiBJdCBpcyBpZ25vcmVkIGlmIFBhdGhUb1NlYXJj
aCBpcyBwYXNzZWQuIikKLSAgICAgICAgb3B0LmFkZF9vcHRpb24oIi0yIiwgIi0td2Via2l0MiIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9IndlYmtpdDIiLCBkZWZhdWx0PUZhbHNlLAotICAg
ICAgICAgICAgICBoZWxwPSJSdW4gV2ViS2l0MiBBUEkgdGVzdHMuIERlZmF1bHQ6IFJ1biBXZWJL
aXQxIEFQSSB0ZXN0cy4gSXQgaXMgaWdub3JlZCBpZiBQYXRoVG9TZWFyY2ggaXMgcGFzc2VkLiIp
Ci0KLSAgICAgICAgc2VsZi5fbywgc2VsZi5fYSA9IG9wdC5wYXJzZV9hcmdzKGFyZ3MpCi0gICAg
ICAgIHZlcmJvc2UgPSBzZWxmLl9vLnZlcmJvc2UKLSAgICAgICAgaWYgdmVyYm9zZSA9PSAwOgot
ICAgICAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLkNSSVRJQ0FMLCkK
LSAgICAgICAgZWxpZiB2ZXJib3NlID09IDE6Ci0gICAgICAgICAgICBsb2dnaW5nLmJhc2ljQ29u
ZmlnKGxldmVsPWxvZ2dpbmcuRVJST1IsKQotICAgICAgICBlbGlmIHZlcmJvc2UgPT0gMjoKLSAg
ICAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5JTkZPLCkKLSAgICAg
ICAgZWxpZiB2ZXJib3NlID09IDM6Ci0gICAgICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxl
dmVsPWxvZ2dpbmcuREVCVUcsKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2luZy5i
YXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLklORk8sKQotICAgICAgICAgICAgbG9nLndhcm4oIkJh
ZCB2ZXJib3NlIGxldmVsLCBzd2l0Y2hpbmcgdG8gZGVmYXVsdC4iKQotCi0gICAgICAgIGlmIHNl
bGYuX28ucmVsZWFzZToKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSAiRGVidWciCi0KLSAgICAg
ICAgaWYgc2VsZi5fby53ZWJraXQyOgotICAgICAgICAgICAgdGVzdF9kaXJlY3RvcnkgPSAiV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzLyIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHRlc3RfZGlyZWN0b3J5ID0gIldlYktpdC9xdC90ZXN0cy8iCi0KLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgaWYgbGVuKHNlbGYuX2EpID09IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fby5w
YXRoID0gIldlYktpdEJ1aWxkLyVzL1NvdXJjZS8lcyIgJSAoY29uZmlndXJhdGlvbiwgdGVzdF9k
aXJlY3RvcnkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIGxlbihzZWxm
Ll9hKSA+IDE6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoIk9ubHkgb25l
IGRpcmVjdG9yeSBzaG91bGQgYmUgcHJvdmlkZWQuIikKLSAgICAgICAgICAgICAgICBzZWxmLl9v
LnBhdGggPSBzZWxmLl9hWzBdCi0KLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhz
ZWxmLl9vLnBhdGgpOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiR2l2ZW4gcGF0
aCBkb2Vzbid0IGV4aXN0LiIpCi0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAg
ICAgbG9nLmVycm9yKCJCYWQgdXNhZ2UuIFBsZWFzZSB0cnkgLWggb3IgLS1oZWxwLiIpCi0gICAg
ICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAg
ICAgbG9nLmVycm9yKCJQYXRoICclcycgZG9lc24ndCBleGlzdCIsIHNlbGYuX28ucGF0aCkKLSAg
ICAgICAgICAgIHN5cy5leGl0KDIpCi0KLSAgICAgICAgaWYgc2VsZi5fby5kZXZlbG9wZXI6Ci0g
ICAgICAgICAgICBpZiBub3Qgc2VsZi5fby5wYXJhbGxlbF9sZXZlbCBpcyBOb25lOgotICAgICAg
ICAgICAgICAgIGxvZy53YXJuKCJEZXZlbG9wZXIgbW9kZSBzZXRzIHBhcmFsbGVsLWxldmVsIG9w
dGlvbiB0byBvbmUuIikKLSAgICAgICAgICAgIHNlbGYuX28ucGFyYWxsZWxfbGV2ZWwgPSAxCi0g
ICAgICAgICAgICBzZWxmLl9vLm9wZW5fcmVzdWx0cyA9IEZhbHNlCi0KLSAgICBkZWYgX19nZXRh
dHRyX18oc2VsZiwgYXR0cik6Ci0gICAgICAgICIiIiBNYXBzIGFsbCBvcHRpb25zIHByb3BlcnRp
ZXMgaW50byB0aGlzIG9iamVjdCAocmVtb3ZlIG9uZSBsZXZlbCBvZiBpbmRpcmVjdGlvbikuICIi
IgotICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLl9vLCBhdHRyKQotCi0KLWRlZiBydW5fdGVz
dChhcmdzKToKLSAgICAiIiIgUnVucyBvbmUgZ2l2ZW4gdGVzdC4KLSAgICBhcmdzIHNob3VsZCBj
b250YWluIGEgdHVwbGUgd2l0aCAzIGVsZW1lbnRzOwotICAgICAgVGVzdFN1aXRlUmVzdWx0IGNv
bnRhaW5pbmcgZnVsbCBmaWxlIG5hbWUgb2YgYW4gYXV0b3Rlc3QgZXhlY3V0YWJsZS4KLSAgICAg
IHN0ciB3aXRoIG9wdGlvbnMgdGhhdCBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBhdXRvdGVzdCBl
eGVjdXRhYmxlCi0gICAgICBib29sIGlmIHRydWUgdGhlbiB0aGUgc3Rkb3V0IHdpbGwgYmUgYnVm
ZmVyZWQgYW5kIHNlcGFyYXRlZCBmcm9tIHRoZSBzdGRlcnIsIGlmIGl0IGlzIGZhbHNlCi0gICAg
ICAgIHRoZW4gdGhlIHN0ZG91dCBhbmQgdGhlIHN0ZGVyciB3aWxsIGJlIG1lcmdlZCB0b2dldGhl
ciBhbmQgbGVmdCB1bmJ1ZmZlcmVkICh0aGUgVGVzdFN1aXRlUmVzdWx0IG91dHB1dCB3aWxsIGJl
IE5vbmUpLgotICAgICAgaW50IHRpbWUgYWZ0ZXIgd2hpY2ggdGhlIGF1dG90ZXN0IGV4ZWN1dGFi
bGUgd291bGQgYmUga2lsbGVkCi0gICAgIiIiCi0gICAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
IkV4ZWMiKQotICAgIHRlc3Rfc3VpdGUsIG9wdGlvbnMsIGJ1ZmZlcmVkLCB0aW1lb3V0ID0gYXJn
cwotICAgIHRpbWVyID0gTm9uZQotICAgIHRyeToKLSAgICAgICAgbG9nLmluZm8oIlJ1bm5pbmcu
Li4gJXMiLCB0ZXN0X3N1aXRlLnRlc3RfZmlsZV9uYW1lKCkpCi0gICAgICAgIGlmIGJ1ZmZlcmVk
OgotICAgICAgICAgICAgdHN0ID0gUG9wZW4oW3Rlc3Rfc3VpdGUudGVzdF9maWxlX25hbWUoKV0g
KyBvcHRpb25zLnNwbGl0KCksIHN0ZG91dD1QSVBFLCBzdGRlcnI9Tm9uZSkKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHRzdCA9IFBvcGVuKFt0ZXN0X3N1aXRlLnRlc3RfZmlsZV9uYW1lKCld
ICsgb3B0aW9ucy5zcGxpdCgpLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPVNURE9VVCkKLSAgICAgICAg
aWYgdGltZW91dDoKLSAgICAgICAgICAgIGZyb20gdGhyZWFkaW5nIGltcG9ydCBUaW1lcgotICAg
ICAgICAgICAgbG9nLmRlYnVnKCJTZXR0aW5nIHRpbWVvdXQgdGltZXIgJWkgc2VjIG9uICVzIChw
cm9jZXNzICVzKSIsIHRpbWVvdXQsIHRlc3Rfc3VpdGUudGVzdF9maWxlX25hbWUoKSwgdHN0LnBp
ZCkKLSAgICAgICAgICAgIGRlZiBwcm9jZXNzX2tpbGxlcigpOgotICAgICAgICAgICAgICAgIHRy
eToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgdHN0
LnRlcm1pbmF0ZSgpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoK
LSAgICAgICAgICAgICAgICAgICAgICAgICMgV29ya2Fyb3VuZCBmb3IgcHl0aG9uIHZlcnNpb24g
PCAyLjYgaXQgY2FuIGJlIHJlbW92ZWQgYXMgc29vbiBhcyB3ZSBkcm9wIHN1cHBvcnQgZm9yIHB5
dGhvbjIuNQotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGltcG9ydCBjdHlwZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9D
RVNTX1RFUk1JTkFURSA9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBj
dHlwZXMud2luZGxsLmtlcm5lbDMyLk9wZW5Qcm9jZXNzKFBST0NFU1NfVEVSTUlOQVRFLCBGYWxz
ZSwgdHN0LnBpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHlwZXMud2luZGxsLmtl
cm5lbDMyLlRlcm1pbmF0ZVByb2Nlc3MoaGFuZGxlLCAtMSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjdHlwZXMud2luZGxsLmtlcm5lbDMyLkNsb3NlSGFuZGxlKGhhbmRsZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjIHdpbmRsbCBpcyBub3QgYWNjZXNzaWJsZSBzbyB3ZSBhcmUgb24gKm5p
eCBsaWtlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCBzaWduYWwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5raWxsKHRzdC5waWQsIHNpZ25hbC5TSUdU
RVJNKQotICAgICAgICAgICAgICAgICAgICBsb2cuZXJyb3IoIlRpbWVvdXQsIHByb2Nlc3MgJyVz
JyAoJWkpIHdhcyB0ZXJtaW5hdGVkIiwgdGVzdF9zdWl0ZS50ZXN0X2ZpbGVfbmFtZSgpLCB0c3Qu
cGlkKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgotICAgICAgICAgICAgICAg
ICAgICAjIHRoZSBwcm9jZXNzIHdhcyBmaW5pc2hlZCBiZWZvcmUgZ290IGtpbGxlZAotICAgICAg
ICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICB0aW1lciA9IFRpbWVyKHRpbWVvdXQsIHBy
b2Nlc3Nfa2lsbGVyKQotICAgICAgICAgICAgdGltZXIuc3RhcnQoKQotICAgIGV4Y2VwdCBPU0Vy
cm9yLCBlOgotICAgICAgICBsb2cuZXhjZXB0aW9uKCJDYW4ndCBvcGVuIGFuIGF1dG90ZXN0IGZp
bGU6ICclcycuIFNraXBwaW5nIHRoZSB0ZXN0Li4uIiwgZS5maWxlbmFtZSkKLSAgICBlbHNlOgot
ICAgICAgICB0ZXN0X3N1aXRlLnNldF9vdXRwdXQodHN0LmNvbW11bmljYXRlKClbMF0pICAjIHRh
a2VzIHN0ZG91dCBvbmx5LCBpbiBkZXZlbG9wZXIgbW9kZSBpdCB3b3VsZCBiZSBOb25lLgotICAg
IGxvZy5pbmZvKCJGaW5pc2hlZCAlcyIsIHRlc3Rfc3VpdGUudGVzdF9maWxlX25hbWUoKSkKLSAg
ICBpZiB0aW1lb3V0OgotICAgICAgICB0aW1lci5jYW5jZWwoKQotICAgIHJldHVybiB0ZXN0X3N1
aXRlCi0KLQotY2xhc3MgVGVzdFN1aXRlUmVzdWx0KG9iamVjdCk6Ci0gICAgIiIiIEtlZXBzIGlu
Zm9ybWF0aW9uIGFib3V0IGEgdGVzdC4gIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0g
ICAgICAgIHNlbGYuX291dHB1dCA9IE5vbmUKLSAgICAgICAgc2VsZi5fdGVzdF9maWxlX25hbWUg
PSBOb25lCi0KLSAgICBkZWYgc2V0X291dHB1dChzZWxmLCB4bWwpOgotICAgICAgICBpZiB4bWw6
Ci0gICAgICAgICAgICBzZWxmLl9vdXRwdXQgPSB4bWwuc3RyaXAoKQotCi0gICAgZGVmIG91dHB1
dChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX291dHB1dAotCi0gICAgZGVmIHNldF90ZXN0
X2ZpbGVfbmFtZShzZWxmLCBmaWxlX25hbWUpOgotICAgICAgICBzZWxmLl90ZXN0X2ZpbGVfbmFt
ZSA9IGZpbGVfbmFtZQotCi0gICAgZGVmIHRlc3RfZmlsZV9uYW1lKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5fdGVzdF9maWxlX25hbWUKLQotCi1jbGFzcyBNYWluKExvZyk6Ci0gICAgIiIi
IFRoZSBtYWluIHNjcmlwdC4gQWxsIHJlYWwgd29yayBpcyBkb25lIGluIHJ1bigpIG1ldGhvZC4g
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0gICAgICAgIExvZy5fX2lu
aXRfXyhzZWxmLCAiTWFpbiIpCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAg
ICAgIGlmIG9wdGlvbnMucGFyYWxsZWxfbGV2ZWwgPiAxIG9yIG9wdGlvbnMucGFyYWxsZWxfbGV2
ZWwgaXMgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmcm9tIG11bHRp
cHJvY2Vzc2luZyBpbXBvcnQgUG9vbAotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgot
ICAgICAgICAgICAgICAgIHNlbGYud2FybigiSW1wb3J0IEVycm9yOiB0aGUgbXVsdGlwcm9jZXNz
aW5nIG1vZHVsZSBjb3VsZG4ndCBiZSBsb2FkZWQgKG1heSBiZSBsYWNrIG9mIHB5dGhvbi1tdWx0
aXByb2Nlc3NpbmcgcGFja2FnZT8pLiBUaGUgUXQgYXV0b3Rlc3RzIHdpbGwgYmUgZXhlY3V0ZWQg
b25lIGJ5IG9uZS4iKQotICAgICAgICAgICAgICAgIG9wdGlvbnMucGFyYWxsZWxfbGV2ZWwgPSAx
Ci0gICAgICAgIGlmIG9wdGlvbnMucGFyYWxsZWxfbGV2ZWwgPT0gMToKLQotICAgICAgICAgICAg
Y2xhc3MgUG9vbChvYmplY3QpOgotICAgICAgICAgICAgICAgICIiIiBBIGhhY2ssIGNyZWF0ZWQg
dG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlLCB0aGlzIGNsYXNz
IGlzIHNpbmdsZSB0aHJlYWQgcmVwbGFjZW1lbnQgZm9yIHRoZSBtdWx0aXByb2Nlc3NpbmcuUG9v
bCBjbGFzcy4gIiIiCi0gICAgICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb2Nlc3Nl
cyk6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAgICAgICAgIGRlZiBpbWFw
X3Vub3JkZXJlZChzZWxmLCBmdW5jLCBmaWxlcyk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBtYXAoZnVuYywgZmlsZXMpCi0KLSAgICAgICAgICAgICAgICBkZWYgbWFwKHNlbGYsIGZ1bmMs
IGZpbGVzKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hcChmdW5jLCBmaWxlcykKLQot
ICAgICAgICBzZWxmLl9Qb29sID0gUG9vbAotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAg
IiIiIEZpbmQgJiYgZXhlY3V0ZSAmJiBwdWJsaXNoIHJlc3VsdHMgb2YgYWxsIHRlc3QuICJBbGwg
aW4gb25lIiBmdW5jdGlvbi4gIiIiCi0gICAgICAgICMgVGhpcyBpcyBuZWVkZWQgZm9yIFF0IGZp
bmRpbmcgb3VyIFFNTCBtb2R1bGVzLiBUaGUgY3VycmVudCBjb2RlIG1ha2VzIG91cgotICAgICAg
ICAjIHR3byBleGlzdGluZyBBUEkgdGVzdHMgKFdLMSBBUEkgYW5kIFdLMiBVSSBwcm9jZXNzIEFQ
SSkgd29yayBjb3JyZWN0bHkuCi0gICAgICAgIHFtbF9pbXBvcnRfcGF0aCA9IHNlbGYuX29wdGlv
bnMucGF0aCArICIuLi8uLi8uLi8uLi9pbXBvcnRzIgotICAgICAgICBxbWxfaW1wb3J0X3BhdGgg
Kz0gIjoiICsgc2VsZi5fb3B0aW9ucy5wYXRoICsgIi4uLy4uLy4uLy4uLy4uLy4uL2ltcG9ydHMi
Ci0gICAgICAgIG9zLnB1dGVudigiUU1MX0lNUE9SVF9QQVRIIiwgcW1sX2ltcG9ydF9wYXRoKQot
ICAgICAgICBwYXRoID0gb3MuZ2V0ZW52KCJQQVRIIikKLSAgICAgICAgcGF0aCArPSAiOiIgKyBz
ZWxmLl9vcHRpb25zLnBhdGggKyAiLi4vLi4vLi4vLi4vLi4vLi4vYmluIgotICAgICAgICBvcy5w
dXRlbnYoIlBBVEgiLCBwYXRoKQotICAgICAgICBzZWxmLmRlYnVnKCJTZWFyY2hpbmcgZXhlY3V0
YWJsZXMuLi4iKQotICAgICAgICB0ZXN0c19leGVjdXRhYmxlcyA9IHNlbGYuZmluZF90ZXN0c19w
YXRocyhzZWxmLl9vcHRpb25zLnBhdGgpCi0gICAgICAgIHNlbGYuZGVidWcoIkZvdW5kOiAlcyIs
IGxlbih0ZXN0c19leGVjdXRhYmxlcykpCi0gICAgICAgIHNlbGYuZGVidWcoIkV4ZWN1dGluZyB0
ZXN0cy4uLiIpCi0gICAgICAgIHJlc3VsdHMgPSBzZWxmLnJ1bl90ZXN0cyh0ZXN0c19leGVjdXRh
YmxlcykKLSAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZGV2ZWxvcGVyOgotICAgICAgICAg
ICAgc2VsZi5kZWJ1ZygiVHJhbnNmb3JtaW5nLi4uIikKLSAgICAgICAgICAgIHRyYW5zZm9ybWVk
X3Jlc3VsdHMgPSBzZWxmLnRyYW5zZm9ybShyZXN1bHRzKQotICAgICAgICAgICAgc2VsZi5kZWJ1
ZygiUHVibGlzaGluZy4uLiIpCi0gICAgICAgICAgICBzZWxmLmFubm91bmNlX3Jlc3VsdHModHJh
bnNmb3JtZWRfcmVzdWx0cykKLQotICAgIGRlZiBmaW5kX3Rlc3RzX3BhdGhzKHNlbGYsIHBhdGgp
OgotICAgICAgICAiIiIgRmluZHMgYWxsIHRlc3RzIGV4ZWN1dGFibGVzIGluc2lkZSB0aGUgZ2l2
ZW4gcGF0aC4gIiIiCi0gICAgICAgIGV4ZWN1dGFibGVzID0gW10KLSAgICAgICAgZm9yIHJvb3Qs
IGRpcnMsIGZpbGVzIGluIG9zLndhbGsocGF0aCk6Ci0gICAgICAgICAgICAjIENoZWNrIG9ubHkg
Zm9yIGEgZmlsZSB0aGF0IG5hbWUgc3RhcnRzIGZyb20gJ3RzdF8nIGFuZCB0aGF0IHdlIGNhbiBl
eGVjdXRlLgotICAgICAgICAgICAgZmlsdGVyZWRfcGF0aCA9IGZpbHRlcihsYW1iZGEgdzogdy5z
dGFydHN3aXRoKCd0c3RfJykgYW5kIG9zLmFjY2Vzcyhvcy5wYXRoLmpvaW4ocm9vdCwgdyksIG9z
LlhfT0spLCBmaWxlcykKLSAgICAgICAgICAgIGZpbHRlcmVkX3BhdGggPSBtYXAobGFtYmRhIHc6
IG9zLnBhdGguam9pbihyb290LCB3KSwgZmlsdGVyZWRfcGF0aCkKLSAgICAgICAgICAgIGZvciBm
aWxlX25hbWUgaW4gZmlsdGVyZWRfcGF0aDoKLSAgICAgICAgICAgICAgICByID0gVGVzdFN1aXRl
UmVzdWx0KCkKLSAgICAgICAgICAgICAgICByLnNldF90ZXN0X2ZpbGVfbmFtZShmaWxlX25hbWUp
Ci0gICAgICAgICAgICAgICAgZXhlY3V0YWJsZXMuYXBwZW5kKHIpCi0gICAgICAgIHJldHVybiBl
eGVjdXRhYmxlcwotCi0gICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCBmaWxlcyk6Ci0gICAgICAgICIi
IiBFeGVjdXRlcyBnaXZlbiBmaWxlcyBieSB1c2luZyBhIHBvb2wgb2Ygd29ya2Vycy4gIiIiCi0g
ICAgICAgIHdvcmtlcnMgPSBzZWxmLl9Qb29sKHByb2Nlc3Nlcz1zZWxmLl9vcHRpb25zLnBhcmFs
bGVsX2xldmVsKQotICAgICAgICAjIHRvIGVhY2ggZmlsZSBhZGQgb3B0aW9ucy4KLSAgICAgICAg
c2VsZi5kZWJ1ZygiVXNpbmcgJXMgdGhlIHdvcmtlcnMgcG9vbCwgbnVtYmVyIG9mIHdvcmtlcnMg
JWkiLCByZXByKHdvcmtlcnMpLCBzZWxmLl9vcHRpb25zLnBhcmFsbGVsX2xldmVsKQotICAgICAg
ICBwYWNrYWdlID0gbWFwKGxhbWJkYSB3OiBbdywgc2VsZi5fb3B0aW9ucy50ZXN0c19vcHRpb25z
LCBub3Qgc2VsZi5fb3B0aW9ucy5kZXZlbG9wZXIsIHNlbGYuX29wdGlvbnMudGltZW91dF0sIGZp
bGVzKQotICAgICAgICBzZWxmLmRlYnVnKCJHZW5lcmF0ZWQgcGFja2FnZXMgZm9yIHdvcmtlcnM6
ICVzIiwgcmVwcihwYWNrYWdlKSkKLSAgICAgICAgcmVzdWx0cyA9IHdvcmtlcnMubWFwKHJ1bl90
ZXN0LCBwYWNrYWdlKSAgIyBDb2xsZWN0cyByZXN1bHRzLgotICAgICAgICByZXR1cm4gcmVzdWx0
cwotCi0gICAgZGVmIHRyYW5zZm9ybShzZWxmLCByZXN1bHRzKToKLSAgICAgICAgIiIiIFRyYW5z
Zm9ybXMgbGlzdCBvZiB0aGUgcmVzdWx0cyB0byBzcGVjaWFsaXplZCB2ZXJzaW9ucy4gIiIiCi0g
ICAgICAgIHN0ZG91dCA9IHNlbGYuY29udmVydF90b19zdGRvdXQocmVzdWx0cykKLSAgICAgICAg
aHRtbCA9IHNlbGYuY29udmVydF90b19odG1sKHJlc3VsdHMpCi0gICAgICAgIHJldHVybiB7InN0
ZG91dCI6IHN0ZG91dCwgImh0bWwiOiBodG1sfQotCi0gICAgZGVmIGFubm91bmNlX3Jlc3VsdHMo
c2VsZiwgcmVzdWx0cyk6Ci0gICAgICAgICIiIiBTaG93cyB0aGUgcmVzdWx0cy4gIiIiCi0gICAg
ICAgIHNlbGYuYW5ub3VuY2VfcmVzdWx0c19zdGRvdXQocmVzdWx0c1snc3Rkb3V0J10pCi0gICAg
ICAgIHNlbGYuYW5ub3VuY2VfcmVzdWx0c19odG1sKHJlc3VsdHNbJ2h0bWwnXSkKLQotICAgIGRl
ZiBhbm5vdW5jZV9yZXN1bHRzX3N0ZG91dChzZWxmLCByZXN1bHRzKToKLSAgICAgICAgIiIiIFNo
b3cgdGhlIHJlc3VsdHMgYnkgcHJpbnRpbmcgdG8gdGhlIHN0ZG91dC4iIiIKLSAgICAgICAgcHJp
bnQocmVzdWx0cykKLQotICAgIGRlZiBhbm5vdW5jZV9yZXN1bHRzX2h0bWwoc2VsZiwgcmVzdWx0
cyk6Ci0gICAgICAgICIiIiBTaG93cyB0aGUgcmVzdWx0IGJ5IGNyZWF0aW5nIGEgaHRtbCBmaWxl
IGFuZCBjYWxsaW5nIGEgd2ViIGJyb3dzZXIgdG8gcmVuZGVyIGl0LiAiIiIKLSAgICAgICAgd2l0
aCBmaWxlKHNlbGYuX29wdGlvbnMub3V0cHV0X2ZpbGUsICd3JykgYXMgZjoKLSAgICAgICAgICAg
IGYud3JpdGUocmVzdWx0cykKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5vcGVuX3Jlc3VsdHM6
Ci0gICAgICAgICAgICBQb3BlbihzZWxmLl9vcHRpb25zLmJyb3dzZXIgKyAiICIgKyBzZWxmLl9v
cHRpb25zLm91dHB1dF9maWxlLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPVRydWUp
Ci0KLSAgICBkZWYgY2hlY2tfY3Jhc2hfb2NjdXJlbmNlcyhzZWxmLCByZXN1bHRzKToKLSAgICAg
ICAgIiIiIENoZWNrcyBpZiBhbnkgdGVzdCBjcmFzaGVzIGFuZCBpdCBzdW1zIHRoZW0gICIiIgot
ICAgICAgICB0b3RhbHMgPSBbMCwwLDBdCi0gICAgICAgIGNyYXNoX2NvdW50ID0gMAotICAgICAg
ICB0eHQgPSBbXQotICAgICAgICAjY29sbGVjdGluZyByZXN1bHRzIGludG8gb25lIGNvbnRhaW5l
ciB3aXRoIGNoZWNraW5nIGNyYXNoCi0gICAgICAgIGZvciByZXN1bHQgaW4gcmVzdWx0czoKLSAg
ICAgICAgICAgIGZvdW5kID0gTm9uZQotICAgICAgICAgICAgaWYgcmVzdWx0Lm91dHB1dCgpOgot
ICAgICAgICAgICAgICAgIHR4dC5hcHBlbmQocmVzdWx0Lm91dHB1dCgpKQotICAgICAgICAgICAg
ICAgIGZvdW5kID0gcmUuc2VhcmNoKHIiKFswLTldKykgcGFzc2VkLCAoWzAtOV0rKSBmYWlsZWQs
IChbMC05XSspIHNraXBwZWQiLCByZXN1bHQub3V0cHV0KCkpCi0KLSAgICAgICAgICAgIGlmIGZv
dW5kOgotICAgICAgICAgICAgICAgIHRvdGFscyA9IHJlZHVjZShsYW1iZGEgeCwgeTogKGludCh4
WzBdKSArIGludCh5WzBdKSwgaW50KHhbMV0pICsgaW50KHlbMV0pLCBpbnQoeFsyXSkgKyBpbnQo
eVsyXSkpLCAodG90YWxzLCBmb3VuZC5ncm91cHMoKSkpCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIHR4dC5hcHBlbmQoJ0NSQVNIRUQ6ICVzJyAlIHJlc3VsdC50ZXN0X2ZpbGVf
bmFtZSgpKQotICAgICAgICAgICAgICAgIGNyYXNoX2NvdW50ICs9IDEKLSAgICAgICAgICAgICAg
ICBzZWxmLndhcm4oIk1pc3Npbmcgc3ViLXN1bW1hcnk6ICVzIiAlIHJlc3VsdC50ZXN0X2ZpbGVf
bmFtZSgpKQotCi0gICAgICAgIHR4dD0nXG5cbicuam9pbih0eHQpCi0KLSAgICAgICAgdG90YWxz
ID0gbGlzdCh0b3RhbHMpCi0gICAgICAgIHRvdGFscy5hcHBlbmQoY3Jhc2hfY291bnQpCi0gICAg
ICAgIHRvdGFscyA9IG1hcChzdHIsIHRvdGFscykKLSAgICAgICAgcmV0dXJuIHR4dCwgdG90YWxz
Ci0KLSAgICBkZWYgY29udmVydF90b19zdGRvdXQoc2VsZiwgcmVzdWx0cyk6Ci0gICAgICAgICIi
IiBDb252ZXJ0cyByZXN1bHRzLCB0aGF0IHRoZXkgY291bGQgYmUgbmljZWx5IHByZXNlbnRlZCBp
biB0aGUgc3Rkb3V0LiAiIiIKLSAgICAgICAgdHh0LCB0b3RhbHMgPSBzZWxmLmNoZWNrX2NyYXNo
X29jY3VyZW5jZXMocmVzdWx0cykKLQotICAgICAgICB0b3RhbHMgPSAiJXMgcGFzc2VkLCAlcyBm
YWlsZWQsICVzIHNraXBwZWQsICVzIGNyYXNoZWQiICUgKHRvdGFsc1swXSwgdG90YWxzWzFdLCB0
b3RhbHNbMl0sIHRvdGFsc1szXSkKLQotICAgICAgICB0eHQgKz0gJ1xuJyArICcqJyAqIDcwCi0g
ICAgICAgIHR4dCArPSAiXG4qKiIgKyAoIlRPVEFMUzogIiArIHRvdGFscykuY2VudGVyKDY2KSAr
ICcqKicKLSAgICAgICAgdHh0ICs9ICdcbicgKyAnKicgKiA3MCArICdcbicKLSAgICAgICAgcmV0
dXJuIHR4dAotCi0gICAgZGVmIGNvbnZlcnRfdG9faHRtbChzZWxmLCByZXN1bHRzKToKLSAgICAg
ICAgIiIiIENvbnZlcnRzIHJlc3VsdHMsIHRoYXQgdGhleSBjb3VsZCBzaG93ZWQgYXMgYSBodG1s
IHBhZ2UuICIiIgotICAgICAgICB0eHQsIHRvdGFscyA9IHNlbGYuY2hlY2tfY3Jhc2hfb2NjdXJl
bmNlcyhyZXN1bHRzKQotICAgICAgICB0eHQgPSB0eHQucmVwbGFjZSgnJicsICcmYW1wOycpLnJl
cGxhY2UoJzwnLCAiJmx0OyIpLnJlcGxhY2UoJz4nLCAiJmd0OyIpCi0gICAgICAgICMgQWRkIGEg
Y29sb3IgYW5kIGEgc3R5bGUuCi0gICAgICAgIHR4dCA9IHJlLnN1YihyIihbKiBdKyhGaW5pc2hl
ZClbIGEtel9BLVowLTldK1sqXSspIiwKLSAgICAgICAgICAgIGxhbWJkYSB3OiByIiIsCi0gICAg
ICAgICAgICB0eHQpCi0gICAgICAgIHR4dCA9IHJlLnN1YihyIihbKl0rWyBhLXpfQS1aMC05XStb
Kl0rKSIsCi0gICAgICAgICAgICBsYW1iZGEgdzogIjxjYXNlIGNsYXNzPSdnb29kJz48YnI+PGJy
PjxiPiIgKyB3Lmdyb3VwKDApICsgciI8L2I+PC9jYXNlPiIsCi0gICAgICAgICAgICB0eHQpCi0g
ICAgICAgIHR4dCA9IHJlLnN1YihyIihDb25maWc6IFVzaW5nIFFUZXN0IGxpYnJhcnkpKCguKSsp
IiwKLSAgICAgICAgICAgIGxhbWJkYSB3OiAiXG48Y2FzZSBjbGFzcz0nZ29vZCc+PGJyPjxpPiIg
KyB3Lmdyb3VwKDApICsgciI8L2k+ICAiLAotICAgICAgICAgICAgdHh0KQotICAgICAgICB0eHQg
PSByZS5zdWIociJcbihQQVNTKSgoLikrKSIsCi0gICAgICAgICAgICBsYW1iZGEgdzogIjwvY2Fz
ZT5cbjxjYXNlIGNsYXNzPSdnb29kJz48YnI+PHN0YXR1cyBjbGFzcz0ncGFzcyc+IiArIHcuZ3Jv
dXAoMSkgKyByIjwvc3RhdHVzPiIgKyB3Lmdyb3VwKDIpLAotICAgICAgICAgICAgdHh0KQotICAg
ICAgICB0eHQgPSByZS5zdWIociJcbihGQUlMISkoKC4pKykiLAotICAgICAgICAgICAgbGFtYmRh
IHc6ICI8L2Nhc2U+XG48Y2FzZSBjbGFzcz0nYmFkJz48YnI+PHN0YXR1cyBjbGFzcz0nZmFpbCc+
IiArIHcuZ3JvdXAoMSkgKyByIjwvc3RhdHVzPiIgKyB3Lmdyb3VwKDIpLAotICAgICAgICAgICAg
dHh0KQotICAgICAgICB0eHQgPSByZS5zdWIociJcbihYUEFTUykoKC4pKykiLAotICAgICAgICAg
ICAgbGFtYmRhIHc6ICI8L2Nhc2U+XG48Y2FzZSBjbGFzcz0nYmFkJz48YnI+PHN0YXR1cyBjbGFz
cz0neHBhc3MnPiIgKyB3Lmdyb3VwKDEpICsgciI8L3N0YXR1cz4iICsgdy5ncm91cCgyKSwKLSAg
ICAgICAgICAgIHR4dCkKLSAgICAgICAgdHh0ID0gcmUuc3ViKHIiXG4oWEZBSUwpKCguKSspIiwK
LSAgICAgICAgICAgIGxhbWJkYSB3OiAiPC9jYXNlPlxuPGNhc2UgY2xhc3M9J2dvb2QnPjxicj48
c3RhdHVzIGNsYXNzPSd4ZmFpbCc+IiArIHcuZ3JvdXAoMSkgKyByIjwvc3RhdHVzPiIgKyB3Lmdy
b3VwKDIpLAotICAgICAgICAgICAgdHh0KQotICAgICAgICB0eHQgPSByZS5zdWIociJcbihTS0lQ
KSgoLikrKSIsCi0gICAgICAgICAgICBsYW1iZGEgdzogIjwvY2FzZT5cbjxjYXNlIGNsYXNzPSdn
b29kJz48YnI+PHN0YXR1cyBjbGFzcz0neGZhaWwnPiIgKyB3Lmdyb3VwKDEpICsgciI8L3N0YXR1
cz4iICsgdy5ncm91cCgyKSwKLSAgICAgICAgICAgIHR4dCkKLSAgICAgICAgdHh0ID0gcmUuc3Vi
KHIiXG4oUVdBUk4pKCguKSspIiwKLSAgICAgICAgICAgIGxhbWJkYSB3OiAiPC9jYXNlPlxuPGNh
c2UgY2xhc3M9J2JhZCc+PGJyPjxzdGF0dXMgY2xhc3M9J3dhcm4nPiIgKyB3Lmdyb3VwKDEpICsg
ciI8L3N0YXR1cz4iICsgdy5ncm91cCgyKSwKLSAgICAgICAgICAgIHR4dCkKLSAgICAgICAgdHh0
ID0gcmUuc3ViKHIiXG4oUkVTVUxUKSgoLikrKSIsCi0gICAgICAgICAgICBsYW1iZGEgdzogIjwv
Y2FzZT5cbjxjYXNlIGNsYXNzPSdnb29kJz48YnI+PHN0YXR1cyBjbGFzcz0nYmVuY2htYXJrJz4i
ICsgdy5ncm91cCgxKSArIHIiPC9zdGF0dXM+IiArIHcuZ3JvdXAoMiksCi0gICAgICAgICAgICB0
eHQpCi0gICAgICAgIHR4dCA9IHJlLnN1YihyIlxuKFFGQVRBTHxDUkFTSEVEKSgoLikrKSIsCi0g
ICAgICAgICAgICBsYW1iZGEgdzogIjwvY2FzZT5cbjxjYXNlIGNsYXNzPSdiYWQnPjxicj48c3Rh
dHVzIGNsYXNzPSdjcmFzaCc+IiArIHcuZ3JvdXAoMSkgKyByIjwvc3RhdHVzPiIgKyB3Lmdyb3Vw
KDIpLAotICAgICAgICAgICAgdHh0KQotICAgICAgICB0eHQgPSByZS5zdWIociJcbihUb3RhbHM6
KShbMC05JywgYS16XSopIiwKLSAgICAgICAgICAgIGxhbWJkYSB3OiAiPC9jYXNlPlxuPGNhc2Ug
Y2xhc3M9J2dvb2QnPjxicj48Yj4iICsgdy5ncm91cCgxKSArIHIiPC9iPiIgKyB3Lmdyb3VwKDIp
ICsgIjwvY2FzZT4iLAotICAgICAgICAgICAgdHh0KQotICAgICAgICAjIEZpbmQgdG90YWwgY291
bnQgb2YgZmFpbGVkLCBza2lwcGVkLCBwYXNzZWQgYW5kIGNyYXNoZWQgdGVzdHMuCi0gICAgICAg
IHRvdGFscyA9ICIlcyBwYXNzZWQsICVzIGZhaWxlZCwgJXMgc2tpcHBlZCwgJXMgY3Jhc2hlZC4i
ICUgKHRvdGFsc1swXSwgdG90YWxzWzFdLCB0b3RhbHNbMl0sIHRvdGFsc1szXSkKLSAgICAgICAg
IyBDcmVhdGUgYSBoZWFkZXIgb2YgdGhlIGh0bWwgc291cmNlLgotICAgICAgICB0eHQgPSAiIiIK
LSAgICAgICAgPGh0bWw+Ci0gICAgICAgIDxoZWFkPgotICAgICAgICAgIDxzY3JpcHQ+Ci0gICAg
ICAgICAgZnVuY3Rpb24gaW5pdCgpIHsKLSAgICAgICAgICAgICAgLy8gVHJ5IHRvIGZpbmQgdGhl
IHJpZ2h0IHN0eWxlU2hlZXQgKHRoaXMgZG9jdW1lbnQgY291bGQgYmUgZW1iZWRkZWQgaW4gYW4g
b3RoZXIgaHRtbCBkb2MpCi0gICAgICAgICAgICAgIGZvciAoaSA9IGRvY3VtZW50LnN0eWxlU2hl
ZXRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICAgICAgICBpZiAoZG9j
dW1lbnQuc3R5bGVTaGVldHNbaV0uY3NzUnVsZXNbMF0uc2VsZWN0b3JUZXh0ID09ICJjYXNlLmdv
b2QiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3R5bGVTaGVldCA9IGk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgIC8vIFRoZSBzdHlsZVNoZWV0IGhhc24ndCBiZWVuIGZvdW5k
LCBidXQgaXQgc2hvdWxkIGJlIHRoZSBsYXN0IG9uZS4KLSAgICAgICAgICAgICAgcmVzdWx0U3R5
bGVTaGVldCA9IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aCAtIDE7Ci0gICAgICAgICAgfQot
Ci0gICAgICAgICAgZnVuY3Rpb24gaGlkZSgpIHsKLSAgICAgICAgICAgICAgZG9jdW1lbnQuc3R5
bGVTaGVldHNbcmVzdWx0U3R5bGVTaGVldF0uY3NzUnVsZXNbMF0uc3R5bGUuZGlzcGxheT0nbm9u
ZSc7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgZnVuY3Rpb24gc2hvdygpIHsKLSAgICAgICAg
ICAgICAgZG9jdW1lbnQuc3R5bGVTaGVldHNbcmVzdWx0U3R5bGVTaGVldF0uY3NzUnVsZXNbMF0u
c3R5bGUuZGlzcGxheT0nJzsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICA8L3NjcmlwdD4KLSAg
ICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgotICAgICAgICAgICAgY2FzZS5nb29kIHtj
b2xvcjpibGFja30KLSAgICAgICAgICAgIGNhc2UuYmFkIHtjb2xvcjpibGFja30KLSAgICAgICAg
ICAgIHN0YXR1cy5wYXNzIHtjb2xvcjpncmVlbn0KLSAgICAgICAgICAgIHN0YXR1cy5jcmFzaCB7
Y29sb3I6cmVkfQotICAgICAgICAgICAgc3RhdHVzLmZhaWwge2NvbG9yOnJlZH0KLSAgICAgICAg
ICAgIHN0YXR1cy54cGFzcyB7Y29sb3I6NjYzMzAwfQotICAgICAgICAgICAgc3RhdHVzLnhmYWls
IHtjb2xvcjowMDQ1MDB9Ci0gICAgICAgICAgICBzdGF0dXMuYmVuY2htYXJrIHtjb2xvcjowMDAw
ODh9Ci0gICAgICAgICAgICBzdGF0dXMud2FybiB7Y29sb3I6b3JhbmdlfQotICAgICAgICAgICAg
c3RhdHVzLmNyYXNoIHtjb2xvcjpyZWQ7IHRleHQtZGVjb3JhdGlvbjpibGluazsgYmFja2dyb3Vu
ZC1jb2xvcjpibGFja30KLSAgICAgICAgICA8L3N0eWxlPgotICAgICAgICA8L2hlYWQ+Ci0gICAg
ICAgIDxib2R5IG9ubG9hZD0iaW5pdCgpIj4KLSAgICAgICAgPGNlbnRlcj4KLSAgICAgICAgICA8
aDE+UXQncyBhdXRvdGVzdHMgcmVzdWx0czwvaDE+JSh0b3RhbHMpczxicj4KLSAgICAgICAgICA8
aHI+Ci0gICAgICAgICAgPGZvcm0+Ci0gICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2
YWx1ZT0iU2hvdyBmYWlsdXJlcyBvbmx5IiBvbmNsaWNrPSJoaWRlKCkiLz4KLSAgICAgICAgICAg
ICZuYnNwOwotICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlNob3cgYWxs
IiBvbmNsaWNrPSJzaG93KCkiLz4KLSAgICAgICAgICA8L2Zvcm0+Ci0gICAgICAgIDwvY2VudGVy
PgotICAgICAgICA8aHI+Ci0gICAgICAgICUocmVzdWx0cylzCi0gICAgICAgIDwvYm9keT4KLSAg
ICAgICAgPC9odG1sPiIiIiAlIHsidG90YWxzIjogdG90YWxzLCAicmVzdWx0cyI6IHR4dH0KLSAg
ICAgICAgcmV0dXJuIHR4dAotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgb3B0
aW9ucyA9IE9wdGlvbnMoc3lzLmFyZ3ZbMTpdKQotICAgIG1haW4gPSBNYWluKG9wdGlvbnMpCi0g
ICAgbWFpbi5ydW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3Rz
IGIvVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCmluZGV4IGZkNTA3ZTQ5YTlhZTNhNzYz
NTczYjdkMDA0NDk4Mzk4YTQ1YzE4YTYuLmIwYTRjOTM2ZGQ2YzEwYzdhMjFiZjM3YTRkMTgyOTg4
MGQxMmQ1MzkgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cworKysg
Yi9Ub29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKQEAgLTU1LDM4ICs1NSwxNiBAQCBzdWIg
cnVubmluZ09uQnVpbGRCb3QoKQogICAgIHJldHVybiAkaXNCdWlsZEJvdFVzZXJ7JEVOVnsiVVNF
UiJ9fTsKIH0KIAotc3ViIHVzZU5ld1J1bldlYktpdFRlc3RzKCkKLXsKLSAgICAjIE5SV1QgZG9l
cyBub3Qgc3VwcG9ydCBxdC1hcm06IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NDA4NgotICAgIHJldHVybiAwIGlmIGlzUXQoKSBhbmQgaXNBUk0oKTsKLSAgICAjIEFs
bCBvdGhlciBwbGF0Zm9ybXMgc2hvdWxkIHVzZSBOUldUIGJ5IGRlZmF1bHQuCi0gICAgcmV0dXJu
IDE7Ci19Ci0KLW15ICRzY3JpcHQgPSAicGVybCI7Ci1teSAkaGFybmVzc05hbWUgPSAib2xkLXJ1
bi13ZWJraXQtdGVzdHMiOwotCi1pZiAodXNlTmV3UnVuV2ViS2l0VGVzdHMoKSkgewotICAgICRz
Y3JpcHQgPSAicHl0aG9uIjsKLSAgICAkaGFybmVzc05hbWUgPSAibmV3LXJ1bi13ZWJraXQtdGVz
dHMiOworbXkgJHNjcmlwdCA9ICJweXRob24iOworbXkgJGhhcm5lc3NOYW1lID0gIm5ldy1ydW4t
d2Via2l0LXRlc3RzIjsKIAotICAgIGlmIChydW5uaW5nT25CdWlsZEJvdCgpKSB7Ci0gICAgICAg
IHB1c2goQEFSR1YsICItLWRlYnVnLXJ3dC1sb2dnaW5nIik7Ci0gICAgfQoraWYgKHJ1bm5pbmdP
bkJ1aWxkQm90KCkpIHsKKyAgICBwdXNoKEBBUkdWLCAiLS1kZWJ1Zy1yd3QtbG9nZ2luZyIpOwog
fQogCi0jIHdlYmtpdGRpcnMucG0gc3RyaXBzIC0tcXQgYW5kIC0tZ3RrIGZyb20gQEFSR1Ygd2hl
biB3ZSBjYWxsIGlzUXQvaXNHdGsuCisjIHdlYmtpdGRpcnMucG0gc3RyaXBzIC0tZWZsIGFuZCAt
LWd0ayBmcm9tIEBBUkdWIHdoZW4gd2UgY2FsbCBpc0VmbC9pc0d0ay4KICMgV2UgaGF2ZSB0byBh
ZGQgYmFjayBhbnkgLS1QT1JUIGFyZ3VtZW50cyB3aGljaCBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQg
YnkgaXNQb3J0KCkgY2hlY2tzIGFib3ZlLgotaWYgKGlzUXQoKSkgewotICAgIG15ICRpc1BsYXRm
b3JtU2V0ID0gMDsKLSAgICBmb3IgKEBBUkdWKXsKLSAgICAgICAgIyBQYXNzIC0tcXQgaWYgcGxh
dGZvcm0gaXNuJ3QgcGFzc2VkIGV4cGxpY2l0bHkgKGVnLiBxdC01LjAsIHF0LXdrMiwgLi4uKQot
ICAgICAgICBpZigvXi0tcGxhdGZvcm0uKi8pewotICAgICAgICAgICAgJGlzUGxhdGZvcm1TZXQg
PSAxOwotICAgICAgICB9Ci0gICAgfQotICAgIHB1c2goQEFSR1YsICItLXF0IikgaWYoISRpc1Bs
YXRmb3JtU2V0KTsKLX0gZWxzaWYgKGlzR3RrKCkpIHsKK2lmIChpc0d0aygpKSB7CiAgICAgcHVz
aChAQVJHViwgIi0tZ3RrIik7CiB9IGVsc2lmIChpc0VmbCgpKSB7CiAgICAgcHVzaChAQVJHViwg
Ii0tZWZsIik7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQgYi9Ub29s
cy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQKaW5kZXggNDg1ZWI3NDhiM2RkY2NjZjI3Y2NlZmY4NzNl
YzBjYmQ1NTAyNzdhOS4uMzQ1YzY2ODdiODIyMjdiZjg3NmI5ZTU1ZTI4Y2ViNTg2NWQzM2UyMyAx
MDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0CisrKyBiL1Rvb2xzL1Njcmlw
dHMvdXBkYXRlLXdlYmtpdApAQCAtNDYsNyArNDYsNiBAQCBzdWIgcnVuR2l0VXBkYXRlKCk7CiBt
eSAkcXVpZXQgPSAnJzsKIG15ICRzaG93SGVscDsKIAotZGV0ZXJtaW5lSXNRdCgpOwogZGV0ZXJt
aW5lSXNXaW5DYWlybygpOwogCiBjaGRpcldlYktpdCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRkaXJzLnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCmluZGV4IDAz
MWZlYTExMGE5MTEzODNmMGExOWU3OTQ3MWFkNjA5ZTQ0MzEyZWMuLjczODk3ZWVhNDAzNGJmMTI3
ZGNmNjYxYWNlNDkwYmM3NDc4NmRiMGQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
ZGlycy5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KQEAgLTg5LDggKzg5LDYg
QEAgbXkgJGRlYnVnZ2VyOwogbXkgJG5tUGF0aDsKIG15ICRvc1hWZXJzaW9uOwogbXkgJGdlbmVy
YXRlRHN5bTsKLW15ICRpc1F0OwotbXkgJHFtYWtlYmluID0gInFtYWtlIjsgIyBBbGxvdyBvdmVy
cmlkZSBvZiB0aGUgcW1ha2UgYmluYXJ5IGZyb20gJFBBVEgKIG15ICRpc0d0azsKIG15ICRpc1dp
bkNFOwogbXkgJGlzV2luQ2Fpcm87CkBAIC0xNDMsMTEgKzE0MSw2IEBAIHN1YiBjdXJyZW50UGVy
bFBhdGgoKQogICAgIHJldHVybiAkdGhpc1Blcmw7CiB9CiAKLXN1YiBzZXRRbWFrZUJpbmFyeVBh
dGgoJCkKLXsKLSAgICAoJHFtYWtlYmluKSA9IEBfOwotfQotCiAjIHVzZWQgZm9yIHNjcmlwdHMg
d2hpY2ggYXJlIHN0b3JlZCBpbiBhIG5vbi1zdGFuZGFyZCBsb2NhdGlvbgogc3ViIHNldFNvdXJj
ZURpcigkKQogewpAQCAtMzgwLDcgKzM3Myw2IEBAIHN1YiBhcmd1bWVudHNGb3JDb25maWd1cmF0
aW9uKCkKICAgICBwdXNoKEBhcmdzLCAnLS1kZWJ1ZycpIGlmICRjb25maWd1cmF0aW9uIGVxICJE
ZWJ1ZyI7CiAgICAgcHVzaChAYXJncywgJy0tcmVsZWFzZScpIGlmICRjb25maWd1cmF0aW9uIGVx
ICJSZWxlYXNlIjsKICAgICBwdXNoKEBhcmdzLCAnLS0zMi1iaXQnKSBpZiAkYXJjaGl0ZWN0dXJl
IG5lICJ4ODZfNjQiOwotICAgIHB1c2goQGFyZ3MsICctLXF0JykgaWYgaXNRdCgpOwogICAgIHB1
c2goQGFyZ3MsICctLWd0aycpIGlmIGlzR3RrKCk7CiAgICAgcHVzaChAYXJncywgJy0tZWZsJykg
aWYgaXNFZmwoKTsKICAgICBwdXNoKEBhcmdzLCAnLS13aW5jYWlybycpIGlmIGlzV2luQ2Fpcm8o
KTsKQEAgLTUzNyw3ICs1MjksNyBAQCBzdWIgcHJvZHVjdERpcgogc3ViIGpzY1Byb2R1Y3REaXIK
IHsKICAgICBteSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKLSAgICAkcHJvZHVjdERpciAu
PSAiL2JpbiIgaWYgKGlzUXQoKSB8fCBpc0VmbCgpKTsKKyAgICAkcHJvZHVjdERpciAuPSAiL2Jp
biIgaWYgaXNFZmwoKTsKICAgICAkcHJvZHVjdERpciAuPSAiL1Byb2dyYW1zIiBpZiBpc0d0aygp
OwogCiAgICAgcmV0dXJuICRwcm9kdWN0RGlyOwpAQCAtNzk3LDQ4ICs3ODksNiBAQCBzdWIgYnVp
bHREeWxpYlBhdGhGb3JOYW1lCiAgICAgICAgIG15ICRsaWJyYXJ5RXh0ZW5zaW9uID0gJGxpYnJh
cnlOYW1lID1+IC9eV2ViS2l0JC9pID8gIi5zbyIgOiAiLmEiOwogICAgICAgICByZXR1cm4gIiRj
b25maWd1cmF0aW9uUHJvZHVjdERpci8kbGlicmFyeU5hbWUvbGliIiAuIGxjKCRsaWJyYXJ5TmFt
ZSkgLiAkbGlicmFyeUV4dGVuc2lvbjsKICAgICB9Ci0gICAgaWYgKGlzUXQoKSkgewotICAgICAg
ICBteSAkaXNTZWFyY2hpbmdGb3JXZWJDb3JlID0gJGxpYnJhcnlOYW1lID1+ICJXZWJDb3JlIjsK
LSAgICAgICAgaWYgKGlzRGFyd2luKCkpIHsKLSAgICAgICAgICAgICRsaWJyYXJ5TmFtZSA9ICJR
dFdlYktpdFdpZGdldHMiOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJGxpYnJhcnlO
YW1lID0gIlF0NVdlYktpdFdpZGdldHMiOwotICAgICAgICB9Ci0gICAgICAgIG15ICRyZXN1bHQ7
Ci0gICAgICAgIGlmIChpc0RhcndpbigpIGFuZCAtZCAiJGNvbmZpZ3VyYXRpb25Qcm9kdWN0RGly
L2xpYi8kbGlicmFyeU5hbWUuZnJhbWV3b3JrIikgewotICAgICAgICAgICAgJHJlc3VsdCA9ICIk
Y29uZmlndXJhdGlvblByb2R1Y3REaXIvbGliLyRsaWJyYXJ5TmFtZS5mcmFtZXdvcmsvJGxpYnJh
cnlOYW1lIjsKLSAgICAgICAgfSBlbHNpZiAoaXNEYXJ3aW4oKSBhbmQgLWQgIiRjb25maWd1cmF0
aW9uUHJvZHVjdERpci9saWIiKSB7Ci0gICAgICAgICAgICAkcmVzdWx0ID0gIiRjb25maWd1cmF0
aW9uUHJvZHVjdERpci9saWIvbGliJGxpYnJhcnlOYW1lLmR5bGliIjsKLSAgICAgICAgfSBlbHNp
ZiAoaXNXaW5kb3dzKCkpIHsKLSAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uKCkgZXEgIkRl
YnVnIikgewotICAgICAgICAgICAgICAgICMgT24gV2luZG93cywgdGhlcmUgaXMgYSAiZCIgc3Vm
Zml4IHRvIHRoZSBsaWJyYXJ5IG5hbWUuIFNlZSA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvNTM5MjQvPi4KLSAgICAgICAgICAgICAgICAkbGlicmFyeU5hbWUgLj0gImQiOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBjaG9tcChteSAkbWtzcGVjID0gYCRxbWFrZWJpbiAt
cXVlcnkgUVRfSE9TVF9EQVRBYCk7Ci0gICAgICAgICAgICAkbWtzcGVjIC49ICIvbWtzcGVjcyI7
Ci0gICAgICAgICAgICBteSAkcXRNYWpvclZlcnNpb24gPSByZXRyaWV2ZVFNYWtlc3BlY1Zhcigi
JG1rc3BlYy9xY29uZmlnLnByaSIsICJRVF9NQUpPUl9WRVJTSU9OIik7Ci0gICAgICAgICAgICBp
ZiAobm90ICRxdE1ham9yVmVyc2lvbikgewotICAgICAgICAgICAgICAgICRxdE1ham9yVmVyc2lv
biA9ICIiOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAkcmVzdWx0ID0gIiRjb25maWd1
cmF0aW9uUHJvZHVjdERpci9saWIvJGxpYnJhcnlOYW1lJHF0TWFqb3JWZXJzaW9uLmRsbCI7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkcmVzdWx0ID0gIiRjb25maWd1cmF0aW9uUHJv
ZHVjdERpci9saWIvbGliJGxpYnJhcnlOYW1lLnNvIjsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICgkaXNTZWFyY2hpbmdGb3JXZWJDb3JlKSB7Ci0gICAgICAgICAgICAjIFdpdGggQ09ORklHKz1m
b3JjZV9zdGF0aWNfbGlic19hc19zaGFyZWQgd2UgaGF2ZSBhIHNoYXJlZCBsaWJyYXJ5IGZvciBl
YWNoIHN1YmRpci4KLSAgICAgICAgICAgICMgRm9yIGZlYXR1cmUgZGV0ZWN0aW9uIHRvIHdvcmsg
aXQgaXMgbmVjZXNzYXJ5IHRvIHJldHVybiB0aGUgcGF0aCBvZiB0aGUgV2ViQ29yZSBsaWJyYXJ5
IGhlcmUuCi0gICAgICAgICAgICBteSAkcmVwbGFjZWRXaXRoV2ViQ29yZSA9ICRyZXN1bHQ7Ci0g
ICAgICAgICAgICAkcmVwbGFjZWRXaXRoV2ViQ29yZSA9fiBzLyRsaWJyYXJ5TmFtZS9XZWJDb3Jl
L2c7Ci0gICAgICAgICAgICBpZiAoLWUgJHJlcGxhY2VkV2l0aFdlYkNvcmUpIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gJHJlcGxhY2VkV2l0aFdlYkNvcmU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gJHJlc3VsdDsKLSAgICB9CiAgICAgaWYgKGlzR3RrKCkp
IHsKICAgICAgICAgIyBXZWJLaXRHVEsrIGZvciBHVEsyLCBXZWJLaXRHVEsrIGZvciBHVEszLCBh
bmQgV2ViS2l0MiByZXNwZWN0aXZlbHkuCiAgICAgICAgIG15IEBsaWJyYXJpZXMgPSAoImxpYndl
YmtpdGd0ay0xLjAiLCAibGlid2Via2l0Z3RrLTMuMCIsICJsaWJ3ZWJraXQyZ3RrLTMuMCIpOwpA
QCAtOTAwLDU2ICs4NTAsNiBAQCBzdWIgZGV0ZXJtaW5lSXNJbnNwZWN0b3JGcm9udGVuZCgpCiAg
ICAgJGlzSW5zcGVjdG9yRnJvbnRlbmQgPSBjaGVja0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFS
R1YoIi0taW5zcGVjdG9yLWZyb250ZW5kIik7CiB9CiAKLXN1YiBpc1F0KCkKLXsKLSAgICBkZXRl
cm1pbmVJc1F0KCk7Ci0gICAgcmV0dXJuICRpc1F0OwotfQotCi1zdWIgZ2V0UXRWZXJzaW9uKCkK
LXsKLSAgICBteSAkcXRWZXJzaW9uID0gYCRxbWFrZWJpbiAtLXZlcnNpb25gOwotICAgICRxdFZl
cnNpb24gPX4gcy9eKC4qKVF0IHZlcnNpb24gKFxkXC5cZCkoLiopLyQyL3MgOwotICAgIHJldHVy
biAkcXRWZXJzaW9uOwotfQotCi1zdWIgcXRGZWF0dXJlRGVmYXVsdHMKLXsKLSAgICBkaWUgIkVS
Uk9SOiBxbWFrZSBtaXNzaW5nIGJ1dCByZXF1aXJlZCB0byBidWlsZCBXZWJLaXQuXG4iIGlmIG5v
dCBjb21tYW5kRXhpc3RzKCRxbWFrZWJpbik7Ci0KLSAgICBteSAkb2xkUW1ha2VFdmFsID0gJEVO
VntRTUFLRV9DQUNIRV9FVkFMfTsKLSAgICAkRU5We1FNQUtFX0NBQ0hFX0VWQUx9ID0gIkNPTkZJ
Rys9cHJpbnRfZGVmYXVsdHMiOwotCi0gICAgbXkgJG9yaWdpbmFsQ3dkID0gZ2V0Y3dkKCk7Ci0g
ICAgbXkgJHFtYWtlcGF0aCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoc291cmNlRGlyKCksICJUb29s
cyIsICJxbWFrZSIpOwotICAgIGNoZGlyICRxbWFrZXBhdGggb3IgZGllICJGYWlsZWQgdG8gY2Qg
aW50byAiIC4gJHFtYWtlcGF0aCAuICJcbiI7Ci0KLSAgICBteSAkZmlsZSA9IEZpbGU6OlNwZWMt
PmNhdGZpbGUoc291cmNlRGlyKCksICJXZWJLaXQucHJvIik7Ci0KLSAgICBteSBAYnVpbGRBcmdz
OwotICAgIEBidWlsZEFyZ3MgPSAoQGJ1aWxkQXJncywgQHskX1swXX0pIGlmIChAXyk7Ci0KLSAg
ICBteSBAZGVmYXVsdHMgPSBgJHFtYWtlYmluIEBidWlsZEFyZ3MgJGZpbGUgMj4mMWA7Ci0KLSAg
ICBteSAlcXRGZWF0dXJlRGVmYXVsdHM7Ci0gICAgZm9yIChAZGVmYXVsdHMpIHsKLSAgICAgICAg
aWYgKC9ERUZJTkVTOiAvKSB7Ci0gICAgICAgICAgICB3aGlsZSAoLyhcUys/KT0oXFMrPykvZ2kp
IHsKLSAgICAgICAgICAgICAgICAkcXRGZWF0dXJlRGVmYXVsdHN7JDF9PSQyOwotICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2lmICgvRG9uZSBjb21wdXRpbmcgZGVmYXVsdHMvKSB7Ci0gICAg
ICAgICAgICBsYXN0OwotICAgICAgICB9IGVsc2lmIChAXykgewotICAgICAgICAgICAgcHJpbnQg
JF87Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjaGRpciAkb3JpZ2luYWxDd2Q7Ci0gICAgJEVO
VntRTUFLRV9DQUNIRV9FVkFMfSA9ICRvbGRRbWFrZUV2YWw7Ci0KLSAgICByZXR1cm4gJXF0RmVh
dHVyZURlZmF1bHRzOwotfQotCiBzdWIgY29tbWFuZEV4aXN0cygkKQogewogICAgIG15ICRjb21t
YW5kID0gc2hpZnQ7CkBAIC05OTIsMjUgKzg5Miw2IEBAIHN1YiBpc1dLMigpCiAgICAgcmV0dXJu
ICRpc1dLMjsKIH0KIAotc3ViIGRldGVybWluZUlzUXQoKQotewotICAgIHJldHVybiBpZiBkZWZp
bmVkKCRpc1F0KTsKLQotICAgICMgQWxsb3cgb3ZlcnJpZGUgaW4gY2FzZSBRVERJUiBpcyBub3Qg
c2V0LgotICAgIGlmIChjaGVja0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFSR1YoIi0tcXQiKSkg
ewotICAgICAgICAkaXNRdCA9IDE7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAjIFRo
ZSBwcmVzZW5jZSBvZiBRVERJUiBvbmx5IG1lYW5zIFF0IGlmIC0tZ3RrIG9yIC0tZWZsIG9yIC0t
YmxhY2tiZXJyeSBvciAtLXdpbmNhaXJvIGFyZSBub3Qgb24gdGhlIGNvbW1hbmQtbGluZQotICAg
IGlmIChpc0d0aygpIHx8IGlzRWZsKCkgfHwgaXNCbGFja0JlcnJ5KCkgfHwgaXNXaW5DYWlybygp
KSB7Ci0gICAgICAgICRpc1F0ID0gMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgICRp
c1F0ID0gZGVmaW5lZCgkRU5WeydRVERJUid9KTsKLX0KLQogc3ViIGlzQmxhY2tCZXJyeSgpCiB7
CiAgICAgZGV0ZXJtaW5lSXNCbGFja0JlcnJ5KCk7CkBAIC0xMzA0LDcgKzExODUsNyBAQCBzdWIg
aXNDcm9zc0NvbXBpbGF0aW9uKCkKIAogc3ViIGlzQXBwbGVXZWJLaXQoKQogewotICAgIHJldHVy
biAhKGlzUXQoKSBvciBpc0d0aygpIG9yIGlzRWZsKCkgb3IgaXNXaW5DRSgpIG9yIGlzQmxhY2tC
ZXJyeSgpKTsKKyAgICByZXR1cm4gIShpc0d0aygpIG9yIGlzRWZsKCkgb3IgaXNXaW5DRSgpIG9y
IGlzQmxhY2tCZXJyeSgpKTsKIH0KIAogc3ViIGlzQXBwbGVNYWNXZWJLaXQoKQpAQCAtMTQ5NSw3
ICsxMzc2LDcgQEAgc3ViIHJlbGF0aXZlU2NyaXB0c0RpcigpCiBzdWIgbGF1bmNoZXJQYXRoKCkK
IHsKICAgICBteSAkcmVsYXRpdmVTY3JpcHRzUGF0aCA9IHJlbGF0aXZlU2NyaXB0c0RpcigpOwot
ICAgIGlmIChpc0d0aygpIHx8IGlzUXQoKSB8fCBpc0VmbCgpIHx8IGlzV2luQ0UoKSkgeworICAg
IGlmIChpc0d0aygpIHx8IGlzRWZsKCkgfHwgaXNXaW5DRSgpKSB7CiAgICAgICAgIHJldHVybiAi
JHJlbGF0aXZlU2NyaXB0c1BhdGgvcnVuLWxhdW5jaGVyIjsKICAgICB9IGVsc2lmIChpc0FwcGxl
V2ViS2l0KCkpIHsKICAgICAgICAgcmV0dXJuICIkcmVsYXRpdmVTY3JpcHRzUGF0aC9ydW4tc2Fm
YXJpIjsKQEAgLTE1MDYsOCArMTM4Nyw2IEBAIHN1YiBsYXVuY2hlck5hbWUoKQogewogICAgIGlm
IChpc0d0aygpKSB7CiAgICAgICAgIHJldHVybiAiR3RrTGF1bmNoZXIiOwotICAgIH0gZWxzaWYg
KGlzUXQoKSkgewotICAgICAgICByZXR1cm4gIlF0VGVzdEJyb3dzZXIiOwogICAgIH0gZWxzaWYg
KGlzQXBwbGVXZWJLaXQoKSkgewogICAgICAgICByZXR1cm4gIlNhZmFyaSI7CiAgICAgfSBlbHNp
ZiAoaXNFZmwoKSkgewpAQCAtMTUzNiwyMiArMTQxNSwxMSBAQCBzdWIgY2hlY2tSZXF1aXJlZFN5
c3RlbUNvbmZpZwogICAgICAgICAgICAgcHJpbnQgIm1vc3QgbGlrZWx5IGZhaWwuIFRoZSBsYXRl
c3QgWGNvZGUgaXMgYXZhaWxhYmxlIGZyb20gdGhlIEFwcCBTdG9yZS5cbiI7CiAgICAgICAgICAg
ICBwcmludCAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKlxuIjsKICAgICAgICAgfQotICAgIH0gZWxzaWYgKGlzR3RrKCkgb3IgaXNR
dCgpIG9yIGlzRWZsKCkpIHsKKyAgICB9IGVsc2lmIChpc0d0aygpIG9yIGlzRWZsKCkpIHsKICAg
ICAgICAgbXkgQGNtZHMgPSBxdyhiaXNvbiBncGVyZik7Ci0gICAgICAgIGlmIChpc1F0KCkgYW5k
IGlzV2luZG93cygpKSB7Ci0gICAgICAgICAgICBwdXNoIEBjbWRzLCAid2luX2ZsZXgiOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaCBAY21kcywgImZsZXgiOwotICAgICAgICB9
CisgICAgICAgIHB1c2ggQGNtZHMsICJmbGV4IjsKICAgICAgICAgbXkgQG1pc3NpbmcgPSAoKTsK
ICAgICAgICAgbXkgJG9sZFBhdGggPSAkRU5We1BBVEh9OwotICAgICAgICBpZiAoaXNRdCgpIGFu
ZCBpc1dpbmRvd3MoKSkgewotICAgICAgICAgICAgY2hvbXAobXkgJGdudVdpbjMyRGlyID0gYCRx
bWFrZWJpbiAtcXVlcnkgUVRfSE9TVF9EQVRBYCk7Ci0gICAgICAgICAgICAkZ251V2luMzJEaXIg
PSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRnbnVXaW4zMkRpciwgIi4uIiwgImdudXdpbjMyIiwgImJp
biIpOwotICAgICAgICAgICAgaWYgKC1kICIkZ251V2luMzJEaXIiKSB7Ci0gICAgICAgICAgICAg
ICAgJEVOVntQQVRIfSA9ICRnbnVXaW4zMkRpciAuICI7IiAuICRFTlZ7UEFUSH07Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KICAgICAgICAgZm9yZWFjaCBteSAkY21kIChAY21kcykgewogICAg
ICAgICAgICAgcHVzaCBAbWlzc2luZywgJGNtZCBpZiBub3QgY29tbWFuZEV4aXN0cygkY21kKTsK
ICAgICAgICAgfQpAQCAtMTU2MCw5ICsxNDI4LDYgQEAgc3ViIGNoZWNrUmVxdWlyZWRTeXN0ZW1D
b25maWcKICAgICAgICAgICAgIG15ICRsaXN0ID0gam9pbiAiLCAiLCBAbWlzc2luZzsKICAgICAg
ICAgICAgIGRpZSAiRVJST1I6ICRsaXN0IG1pc3NpbmcgYnV0IHJlcXVpcmVkIHRvIGJ1aWxkIFdl
YktpdC5cbiI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzUXQoKSBhbmQgaXNXaW5kb3dzKCkp
IHsKLSAgICAgICAgICAgICRFTlZ7UEFUSH0gPSAkb2xkUGF0aDsKLSAgICAgICAgfQogICAgIH0K
ICAgICAjIFdpbjMyIGFuZCBvdGhlciBwbGF0Zm9ybXMgbWF5IHdhbnQgdG8gY2hlY2sgZm9yIG1p
bmltdW0gY29uZmlnCiB9CkBAIC0xNzM1LDcgKzE2MDAsNyBAQCBzdWIgY29weUluc3BlY3RvckZy
b250ZW5kRmlsZXMKICAgICAgICAgfQogICAgIH0gZWxzaWYgKGlzQXBwbGVXaW5XZWJLaXQoKSkg
ewogICAgICAgICAkaW5zcGVjdG9yUmVzb3VyY2VzRGlyUGF0aCA9ICRwcm9kdWN0RGlyIC4gIi9X
ZWJLaXQucmVzb3VyY2VzL2luc3BlY3RvciI7Ci0gICAgfSBlbHNpZiAoaXNRdCgpIHx8IGlzR3Rr
KCkpIHsKKyAgICB9IGVsc2lmIChpc0d0aygpKSB7CiAgICAgICAgIG15ICRwcmVmaXggPSAkRU5W
eyJXZWJLaXRJbnN0YWxsYXRpb25QcmVmaXgifTsKICAgICAgICAgJGluc3BlY3RvclJlc291cmNl
c0RpclBhdGggPSAoZGVmaW5lZCgkcHJlZml4KSA/ICRwcmVmaXggOiAiL3Vzci9zaGFyZSIpIC4g
Ii93ZWJraXQtMS4wL3dlYmluc3BlY3RvciI7CiAgICAgfSBlbHNpZiAoaXNFZmwoKSkgewpAQCAt
MTc2NSw3ICsxNjMwLDcgQEAgc3ViIGNvcHlJbnNwZWN0b3JGcm9udGVuZEZpbGVzCiAgICAgICAg
IHN5c3RlbSAiZGl0dG8iLCAkc291cmNlTG9jYWxpemVkU3RyaW5ncywgJGRlc3RpbmF0aW9uTG9j
YWxpemVkU3RyaW5nczsKICAgICB9CiAKLSAgICBteSAkZXhpdFN0YXR1cyA9IHN5c3RlbSAicnN5
bmMiLCAiLWF1dCIsICItLWV4Y2x1ZGU9Ly5EU19TdG9yZSIsICItLWV4Y2x1ZGU9Ki5yZTJqcyIs
ICItLWV4Y2x1ZGU9LnN2bi8iLCAhaXNRdCgpID8gIi0tZXhjbHVkZT0vV2ViS2l0LnFyYyIgOiAi
IiwgJHNvdXJjZUluc3BlY3RvclBhdGgsICRpbnNwZWN0b3JSZXNvdXJjZXNEaXJQYXRoOworICAg
IG15ICRleGl0U3RhdHVzID0gc3lzdGVtICJyc3luYyIsICItYXV0IiwgIi0tZXhjbHVkZT0vLkRT
X1N0b3JlIiwgIi0tZXhjbHVkZT0qLnJlMmpzIiwgIi0tZXhjbHVkZT0uc3ZuLyIsICRzb3VyY2VJ
bnNwZWN0b3JQYXRoLCAkaW5zcGVjdG9yUmVzb3VyY2VzRGlyUGF0aDsKICAgICByZXR1cm4gJGV4
aXRTdGF0dXMgaWYgJGV4aXRTdGF0dXM7CiAKICAgICBpZiAoaXNJT1NXZWJLaXQoKSkgewpAQCAt
MTgxNiw1NSArMTY4MSw2IEBAIHN1YiBidWlsZFZpc3VhbFN0dWRpb1Byb2plY3QKICAgICByZXR1
cm4gc3lzdGVtIEBjb21tYW5kOwogfQogCi1zdWIgcmV0cmlldmVRTWFrZXNwZWNWYXIKLXsKLSAg
ICBteSAkbWtzcGVjID0gJF9bMF07Ci0gICAgbXkgJHZhcm5hbWUgPSAkX1sxXTsKLQotICAgIG15
ICR2YXJ2YWx1ZSA9IHVuZGVmOwotICAgICNwcmludCAicmV0cmlldmVNYWtlc3BlY1ZhciAiIC4g
JG1rc3BlYyAuICIsICIgLiAkdmFybmFtZSAuICJcbiI7Ci0KLSAgICBsb2NhbCAqU1BFQzsKLSAg
ICBvcGVuIFNQRUMsICI8JG1rc3BlYyIgb3IgcmV0dXJuICR2YXJ2YWx1ZTsKLSAgICB3aGlsZSAo
PFNQRUM+KSB7Ci0gICAgICAgIGlmICgkXyA9fiAvXHMqaW5jbHVkZVwoKC4rKVwpLykgewotICAg
ICAgICAgICAgIyBvcGVuIHRoZSBpbmNsdWRlZCBta3NwZWMKLSAgICAgICAgICAgIG15ICRvbGRj
d2QgPSBnZXRjd2QoKTsKLSAgICAgICAgICAgIChteSAkdm9sdW1lLCBteSAkZGlyZWN0b3JpZXMs
IG15ICRmaWxlKSA9IEZpbGU6OlNwZWMtPnNwbGl0cGF0aCgkbWtzcGVjKTsKLSAgICAgICAgICAg
IG15ICRuZXdjd2QgPSAiJHZvbHVtZSRkaXJlY3RvcmllcyI7Ci0gICAgICAgICAgICBjaGRpciAk
bmV3Y3dkIGlmICRuZXdjd2Q7Ci0gICAgICAgICAgICAkdmFydmFsdWUgPSByZXRyaWV2ZVFNYWtl
c3BlY1ZhcigkMSwgJHZhcm5hbWUpOwotICAgICAgICAgICAgY2hkaXIgJG9sZGN3ZDsKLSAgICAg
ICAgfSBlbHNpZiAoJF8gPX4gLyR2YXJuYW1lXHMqPVxzKihbXlxzXSspLykgewotICAgICAgICAg
ICAgJHZhcnZhbHVlID0gJDE7Ci0gICAgICAgICAgICBsYXN0OwotICAgICAgICB9Ci0gICAgfQot
ICAgIGNsb3NlIFNQRUM7Ci0gICAgcmV0dXJuICR2YXJ2YWx1ZTsKLX0KLQotc3ViIHF0TWFrZUNv
bW1hbmQoJCkKLXsKLSAgICBteSAoJHFtYWtlYmluKSA9IEBfOwotICAgIGNob21wKG15ICRob3N0
RGF0YVBhdGggPSBgJHFtYWtlYmluIC1xdWVyeSBRVF9IT1NUX0RBVEFgKTsKLSAgICBteSAkbWtz
cGVjUGF0aCA9ICRob3N0RGF0YVBhdGggLiAiL21rc3BlY3MvZGVmYXVsdC9xbWFrZS5jb25mIjsK
LSAgICBpZiAoISAtZSAkbWtzcGVjUGF0aCkgewotICAgICAgICBjaG9tcChteSAkbWtzcGVjPSBg
JHFtYWtlYmluIC1xdWVyeSBRTUFLRV9YU1BFQ2ApOwotICAgICAgICAkbWtzcGVjUGF0aCA9ICRo
b3N0RGF0YVBhdGggLiAiL21rc3BlY3MvIiAuICRta3NwZWMgLiAiL3FtYWtlLmNvbmYiOwotICAg
IH0KLSAgICBteSAkY29tcGlsZXIgPSByZXRyaWV2ZVFNYWtlc3BlY1ZhcigkbWtzcGVjUGF0aCwg
IlFNQUtFX0NDIik7Ci0KLSAgICAjcHJpbnQgImRlZmF1bHQgc3BlYzogIiAuICRta3NwZWMgLiAi
XG4iOwotICAgICNwcmludCAiY29tcGlsZXIgZm91bmQ6ICIgLiAkY29tcGlsZXIgLiAiXG4iOwot
Ci0gICAgaWYgKCRjb21waWxlciAmJiAkY29tcGlsZXIgZXEgImNsIikgewotICAgICAgICByZXR1
cm4gIm5tYWtlIjsKLSAgICB9Ci0KLSAgICByZXR1cm4gIm1ha2UiOwotfQotCiBzdWIgYXV0b3Rv
b2xzRmxhZygkJCkKIHsKICAgICBteSAoJGZsYWcsICRmZWF0dXJlKSA9IEBfOwpAQCAtMjIyNiwx
OTkgKzIwNDIsNiBAQCBzdWIgcHJvbXB0VXNlcgogICAgIHJldHVybiAkaW5wdXQgPyAkaW5wdXQg
OiAkZGVmYXVsdDsKIH0KIAotc3ViIGJ1aWxkUU1ha2VQcm9qZWN0cwotewotICAgIG15ICgkcHJv
amVjdHMsICRjbGVhbiwgQGJ1aWxkUGFyYW1zKSA9IEBfOwotCi0gICAgbXkgQGJ1aWxkQXJncyA9
ICgpOwotICAgIG15ICRxY29uZmlncyA9ICIiOwotCi0gICAgbXkgJG1ha2UgPSBxdE1ha2VDb21t
YW5kKCRxbWFrZWJpbik7Ci0gICAgbXkgJG1ha2VhcmdzID0gIiI7Ci0gICAgbXkgJGNvbW1hbmQ7
Ci0gICAgbXkgJGluc3RhbGxIZWFkZXJzOwotICAgIG15ICRpbnN0YWxsTGliczsKLSAgICBmb3Ig
bXkgJGkgKDAgLi4gJCNidWlsZFBhcmFtcykgewotICAgICAgICBteSAkb3B0ID0gJGJ1aWxkUGFy
YW1zWyRpXTsKLSAgICAgICAgaWYgKCRvcHQgPX4gL14tLXFtYWtlPSguKikvaSApIHsKLSAgICAg
ICAgICAgICRxbWFrZWJpbiA9ICQxOwotICAgICAgICB9IGVsc2lmICgkb3B0ID1+IC9eLS1xbWFr
ZWFyZz0oLiopL2kgKSB7Ci0gICAgICAgICAgICBwdXNoIEBidWlsZEFyZ3MsICQxOwotICAgICAg
ICB9IGVsc2lmICgkb3B0ID1+IC9eLS1tYWtlYXJncz0oLiopL2kgKSB7Ci0gICAgICAgICAgICAk
bWFrZWFyZ3MgPSAkMTsKLSAgICAgICAgfSBlbHNpZiAoJG9wdCA9fiAvXi0taW5zdGFsbC1oZWFk
ZXJzPSguKikvaSApIHsKLSAgICAgICAgICAgICRpbnN0YWxsSGVhZGVycyA9ICQxOwotICAgICAg
ICB9IGVsc2lmICgkb3B0ID1+IC9eLS1pbnN0YWxsLWxpYnM9KC4qKS9pICkgewotICAgICAgICAg
ICAgJGluc3RhbGxMaWJzID0gJDE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNo
IEBidWlsZEFyZ3MsICRvcHQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAjIEF1dG9tYXRpY2Fs
bHkgZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgQ1BVcyBmb3IgbWFrZSBvbmx5IGlmIHRoaXMgbWFr
ZSBhcmd1bWVudCBoYXZlbid0IGFscmVhZHkgYmVlbiBzcGVjaWZpZWQuCi0gICAgaWYgKCRtYWtl
IGVxICJtYWtlIiAmJiAkbWFrZWFyZ3MgIX4gLy1bXlxzXSo/alxzKlxkKy9pICYmICghZGVmaW5l
ZCAkRU5WeyJNQUtFRkxBR1MifSB8fCAoJEVOVnsiTUFLRUZMQUdTIn0gIX4gLy1bXlxzXSo/alxz
KlxkKy9pICkpKSB7Ci0gICAgICAgICRtYWtlYXJncyAuPSAiIC1qIiAuIG51bWJlck9mQ1BVcygp
OwotICAgIH0KLQotICAgICRtYWtlID0gIiRtYWtlICRtYWtlYXJncyI7Ci0gICAgJG1ha2UgPX4g
cy9ccyskLy87Ci0KLSAgICBteSAkb3JpZ2luYWxDd2QgPSBnZXRjd2QoKTsKLSAgICBteSAkZGly
ID0gRmlsZTo6U3BlYy0+Y2Fub25wYXRoKHByb2R1Y3REaXIoKSk7Ci0gICAgRmlsZTo6UGF0aDo6
bWtwYXRoKCRkaXIpOwotICAgIGNoZGlyICRkaXIgb3IgZGllICJGYWlsZWQgdG8gY2QgaW50byAi
IC4gJGRpciAuICJcbiI7Ci0KLSAgICBpZiAoJGNsZWFuKSB7Ci0gICAgICAgICRjb21tYW5kID0g
IiRtYWtlIGRpc3RjbGVhbiI7Ci0gICAgICAgIHByaW50ICJcbkNhbGxpbmcgJyRjb21tYW5kJyBp
biAiIC4gJGRpciAuICJcblxuIjsKLSAgICAgICAgcmV0dXJuIHN5c3RlbSAkY29tbWFuZDsKLSAg
ICB9Ci0KLSAgICBteSAkcW1ha2VwYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZShzb3VyY2VEaXIo
KSwgIlRvb2xzIiwgInFtYWtlIik7Ci0gICAgbXkgJHFtYWtlY29tbWFuZCA9ICRxbWFrZWJpbjsK
LQotICAgIG15ICRjb25maWcgPSBjb25maWd1cmF0aW9uKCk7Ci0gICAgcHVzaCBAYnVpbGRBcmdz
LCAiSU5TVEFMTF9IRUFERVJTPSIgLiAkaW5zdGFsbEhlYWRlcnMgaWYgZGVmaW5lZCgkaW5zdGFs
bEhlYWRlcnMpOwotICAgIHB1c2ggQGJ1aWxkQXJncywgIklOU1RBTExfTElCUz0iIC4gJGluc3Rh
bGxMaWJzIGlmIGRlZmluZWQoJGluc3RhbGxMaWJzKTsKLQotICAgIG15ICRwYXNzZWRDb25maWcg
PSBwYXNzZWRDb25maWd1cmF0aW9uKCkgfHwgIiI7Ci0gICAgaWYgKCRwYXNzZWRDb25maWcgPX4g
bS9kZWJ1Zy9pKSB7Ci0gICAgICAgIHB1c2ggQGJ1aWxkQXJncywgIkNPTkZJRy09cmVsZWFzZSI7
Ci0gICAgICAgIHB1c2ggQGJ1aWxkQXJncywgIkNPTkZJRys9ZGVidWciOwotICAgIH0gZWxzaWYg
KCRwYXNzZWRDb25maWcgPX4gbS9yZWxlYXNlL2kpIHsKLSAgICAgICAgcHVzaCBAYnVpbGRBcmdz
LCAiQ09ORklHKz1yZWxlYXNlIjsKLSAgICAgICAgcHVzaCBAYnVpbGRBcmdzLCAiQ09ORklHLT1k
ZWJ1ZyI7Ci0gICAgfSBlbHNpZiAoJHBhc3NlZENvbmZpZykgewotICAgICAgICBkaWUgIkJ1aWxk
IHR5cGUgJHBhc3NlZENvbmZpZyBpcyBub3Qgc3VwcG9ydGVkIHdpdGggLS1xdC5cbiI7Ci0gICAg
fQotCi0gICAgIyBVc2luZyBidWlsZC13ZWJraXQgdG8gYnVpbGQgYXNzdW1lcyB5b3Ugd2FudCBh
IGRldmVsb3Blci1idWlsZAotICAgIHB1c2ggQGJ1aWxkQXJncywgIkNPTkZJRy09cHJvZHVjdGlv
bl9idWlsZCI7Ci0KLSAgICBteSAkc3ZuUmV2aXNpb24gPSBjdXJyZW50U1ZOUmV2aXNpb24oKTsK
LSAgICBteSAkcHJldmlvdXNTdm5SZXZpc2lvbiA9ICJ1bmtub3duIjsKLQotICAgIG15ICRidWls
ZEhpbnQgPSAiIjsKLQotICAgIG15ICRwYXRoVG9CdWlsdFJldmlzaW9ucyA9IEZpbGU6OlNwZWMt
PmNhdGZpbGUoJGRpciwgIi5idWlsdFJldmlzaW9ucy5jYWNoZSIpOwotICAgIGlmICgtZSAkcGF0
aFRvQnVpbHRSZXZpc2lvbnMgJiYgb3BlbihCVUlMVFJFVklTSU9OUywgJHBhdGhUb0J1aWx0UmV2
aXNpb25zKSkgewotICAgICAgICB3aGlsZSAoPEJVSUxUUkVWSVNJT05TPikgewotICAgICAgICAg
ICAgaWYgKCRfID1+IG0vXlNWTl9SRVZJU0lPTlxzPVxzKFxkKykkLykgewotICAgICAgICAgICAg
ICAgICRwcmV2aW91c1N2blJldmlzaW9uID0gJDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgY2xvc2UoQlVJTFRSRVZJU0lPTlMpOwotICAgIH0KLQotICAgIG15ICRyZXN1bHQg
PSAwOwotCi0gICAgIyBSdW4gcW1ha2UsIHJlZ2FkbGVzcyBvZiBoYXZpbmcgYSBtYWtlZmlsZSBv
ciBub3QsIHNvIHRoYXQgcW1ha2UgY2FuCi0gICAgIyBkZXRlY3QgY2hhbmdlcyB0byB0aGUgY29u
ZmlndXJhdGlvbi4KLQotICAgIHB1c2ggQGJ1aWxkQXJncywgIi1hZnRlciBPVkVSUklERV9TVUJE
SVJTPVwiQHskcHJvamVjdHN9XCIiIGlmIEB7JHByb2plY3RzfTsKLSAgICB1bnNoaWZ0IEBidWls
ZEFyZ3MsIEZpbGU6OlNwZWMtPmNhdGZpbGUoc291cmNlRGlyKCksICJXZWJLaXQucHJvIik7Ci0g
ICAgJGNvbW1hbmQgPSAiJHFtYWtlY29tbWFuZCBAYnVpbGRBcmdzIjsKLSAgICBwcmludCAiQ2Fs
bGluZyAnJGNvbW1hbmQnIGluICIgLiAkZGlyIC4gIlxuXG4iOwotICAgIHByaW50ICJJbnN0YWxs
YXRpb24gaGVhZGVycyBkaXJlY3Rvcnk6ICRpbnN0YWxsSGVhZGVyc1xuIiBpZihkZWZpbmVkKCRp
bnN0YWxsSGVhZGVycykpOwotICAgIHByaW50ICJJbnN0YWxsYXRpb24gbGlicmFyaWVzIGRpcmVj
dG9yeTogJGluc3RhbGxMaWJzXG4iIGlmKGRlZmluZWQoJGluc3RhbGxMaWJzKSk7Ci0KLSAgICBt
eSAkY29uZmlnQ2hhbmdlZCA9IDA7Ci0gICAgb3BlbihRTUFLRSwgIiRjb21tYW5kIDI+JjEgfCIp
IHx8IGRpZSAiQ291bGQgbm90IGV4ZWN1dGUgcW1ha2UiOwotICAgIHdoaWxlICg8UU1BS0U+KSB7
Ci0gICAgICAgICRjb25maWdDaGFuZ2VkID0gMSBpZiAkXyA9fiBtL1RoZSBjb25maWd1cmF0aW9u
IHdhcyBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IGJ1aWxkLzsKLSAgICAgICAgcHJpbnQgJF87Ci0g
ICAgfQotCi0gICAgY2xvc2UoUU1BS0UpOwotICAgICRyZXN1bHQgPSAkPzsKLQotICAgIGlmICgk
cmVzdWx0IG5lIDApIHsKLSAgICAgICBkaWUgIlxuRmFpbGVkIHRvIHNldCB1cCBidWlsZCBlbnZp
cm9ubWVudCB1c2luZyAkcW1ha2ViaW4hXG4iOwotICAgIH0KLQotICAgIG15ICRtYXliZU5lZWRz
Q2xlYW5CdWlsZCA9IDA7Ci0gICAgbXkgJG5lZWRzSW5jcmVtZW50YWxCdWlsZCA9IDA7Ci0KLSAg
ICAjIEZ1bGwgaW5jcmVtZW50YWwgYnVpbGQgKHJ1biBxbWFrZSkgbmVlZGVkIG9uIGJ1aWxkYm90
cyBhbmQgRVdTIGJvdHMgYWx3YXlzLgotICAgIGlmIChncmVwKC9DT05GSUdcKz1idWlsZGJvdC8s
QGJ1aWxkUGFyYW1zKSkgewotICAgICAgICAkbmVlZHNJbmNyZW1lbnRhbEJ1aWxkID0gMTsKLSAg
ICB9Ci0KLSAgICBpZiAoJHN2blJldmlzaW9uIG5lICRwcmV2aW91c1N2blJldmlzaW9uKSB7Ci0g
ICAgICAgIHByaW50ICJMYXN0IGJ1aWx0IHJldmlzaW9uIHdhcyAiIC4gJHByZXZpb3VzU3ZuUmV2
aXNpb24gLgotICAgICAgICAgICAgIiwgbm93IGF0IHJldmlzaW9uICRzdm5SZXZpc2lvbi4gRnVs
bCBpbmNyZW1lbnRhbCBidWlsZCBuZWVkZWQuXG4iOwotICAgICAgICAkbmVlZHNJbmNyZW1lbnRh
bEJ1aWxkID0gMTsKLQotICAgICAgICBteSBAZmlsZUxpc3QgPSBsaXN0T2ZDaGFuZ2VkRmlsZXNC
ZXR3ZWVuUmV2aXNpb25zKHNvdXJjZURpcigpLCAkcHJldmlvdXNTdm5SZXZpc2lvbiwgJHN2blJl
dmlzaW9uKTsKLQotICAgICAgICBmb3JlYWNoIChAZmlsZUxpc3QpIHsKLSAgICAgICAgICAgIGlm
IChtL1wucHJbb2lmXSQvIG9yCi0gICAgICAgICAgICAgICAgbS9cLnFtYWtlLmNvbmYkLyBvcgot
ICAgICAgICAgICAgICAgIG0vXlRvb2xzXC9xbWFrZVwvLwotICAgICAgICAgICAgICAgKSB7Ci0g
ICAgICAgICAgICAgICAgcHJpbnQgIkNoYW5nZSB0byAkXyBkZXRlY3RlZCwgY2xlYW4gYnVpbGQg
bWF5IGJlIG5lZWRlZC5cbiI7Ci0gICAgICAgICAgICAgICAgJG1heWJlTmVlZHNDbGVhbkJ1aWxk
ID0gMTsKLSAgICAgICAgICAgICAgICBsYXN0OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgaWYgKCRjb25maWdDaGFuZ2VkKSB7Ci0gICAgICAgIHByaW50ICJDYWxsaW5n
ICckbWFrZSB3aXBlY2xlYW4nIGluICIgLiAkZGlyIC4gIlxuXG4iOwotICAgICAgICAkcmVzdWx0
ID0gc3lzdGVtICIkbWFrZSB3aXBlY2xlYW4iOwotICAgIH0KLQotICAgICRjb21tYW5kID0gIiRt
YWtlIjsKLSAgICBpZiAoJG5lZWRzSW5jcmVtZW50YWxCdWlsZCkgewotICAgICAgICAkY29tbWFu
ZCAuPSAiIGluY3JlbWVudGFsIjsKLSAgICB9Ci0KLSAgICBwcmludCAiXG5DYWxsaW5nICckY29t
bWFuZCcgaW4gIiAuICRkaXIgLiAiXG5cbiI7Ci0gICAgJHJlc3VsdCA9IHN5c3RlbSAkY29tbWFu
ZDsKLQotICAgIGNoZGlyICIuLiIgb3IgZGllOwotCi0gICAgaWYgKCRyZXN1bHQgZXEgMCkgewot
ICAgICAgICAjIE5vdyB0aGF0IHRoZSBidWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IHdlIGNh
biBzYXZlIHRoZSBTVk4gcmV2aXNpb24KLSAgICAgICAgb3BlbihCVUlMVFJFVklTSU9OUywgIj4+
JHBhdGhUb0J1aWx0UmV2aXNpb25zIik7Ci0gICAgICAgIHByaW50IEJVSUxUUkVWSVNJT05TICJT
Vk5fUkVWSVNJT04gPSAkc3ZuUmV2aXNpb25cbiI7Ci0gICAgICAgIGNsb3NlKEJVSUxUUkVWSVNJ
T05TKTsKLSAgICB9IGVsc2lmICghJGNvbW1hbmQgPX4gL2luY3JlbWVudGFsLyAmJiBleGl0U3Rh
dHVzKCRyZXN1bHQpKSB7Ci0gICAgICAgIG15ICRleGl0Q29kZSA9IGV4aXRTdGF0dXMoJHJlc3Vs
dCk7Ci0gICAgICAgIG15ICRmYWlsTWVzc2FnZSA9IDw8RU9GOwotCi09PT09PSBCVUlMRCBGQUlM
RUQgPT09PT09Ci0KLVRoZSBidWlsZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJGV4aXRDb2RlLiBU
aGlzIG1heSBoYXZlIGJlZW4gYmVjYXVzZSB5b3UKLQotICAtIGFkZGVkIGFuICNpbmNsdWRlIHRv
IGEgc291cmNlL2hlYWRlcgotICAtIGFkZGVkIGEgUV9PQkpFQ1QgbWFjcm8gdG8gYSBjbGFzcwot
ICAtIGFkZGVkIGEgbmV3IHJlc291cmNlIHRvIGEgcXJjIGZpbGUKLQotYXMgZGVwZW5kZW5jaWVz
IGFyZSBub3QgYXV0b21hdGljYWxseSByZS1jb21wdXRlZCBmb3IgbG9jYWwgZGV2ZWxvcGVyIGJ1
aWxkcy4KLVlvdSBtYXkgdHJ5IGNvbXB1dGluZyBkZXBlbmRlbmNpZXMgbWFudWFsbHkgYnkgcnVu
bmluZyAnbWFrZSBxbWFrZV9hbGwnIGluOgotCi0gICRkaXIKLQotb3IgcGFzc2luZyAtLW1ha2Vh
cmdzPSJxbWFrZV9hbGwiIHRvIGJ1aWxkLXdlYmtpdC4KLQotPT09PT09PT09PT09PT09PT09PT09
PT09PQotCi1FT0YKLSAgICAgICAgcHJpbnQgIiRmYWlsTWVzc2FnZSI7Ci0gICAgfSBlbHNpZiAo
JG1heWJlTmVlZHNDbGVhbkJ1aWxkKSB7Ci0gICAgICAgIHByaW50ICJcbkluY3JlbWVudGFsIGJ1
aWxkIGZhaWxlZCwgY2xlYW4gYnVpbGQgbmVlZGVkLiBcbiI7Ci0gICAgICAgIHByaW50ICJDYWxs
aW5nICckbWFrZSB3aXBlY2xlYW4nIGluICIgLiAkZGlyIC4gIlxuXG4iOwotICAgICAgICBjaGRp
ciAkZGlyIG9yIGRpZTsKLSAgICAgICAgc3lzdGVtICIkbWFrZSB3aXBlY2xlYW4iOwotCi0gICAg
ICAgIHByaW50ICJcbkNhbGxpbmcgJyRtYWtlJyBpbiAiIC4gJGRpciAuICJcblxuIjsKLSAgICAg
ICAgJHJlc3VsdCA9IHN5c3RlbSAkbWFrZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gJHJlc3VsdDsK
LX0KLQogc3ViIGJ1aWxkR3RrUHJvamVjdAogewogICAgIG15ICgkcHJvamVjdCwgJGNsZWFuLCAk
cHJlZml4LCAkbWFrZUFyZ3MsICRub1dlYktpdDEsICRub1dlYktpdDIsIEBmZWF0dXJlcykgPSBA
XzsKQEAgLTI0NDgsMTAgKzIwNzEsNiBAQCBzdWIgc2V0UGF0aEZvclJ1bm5pbmdXZWJLaXRBcHAK
IAogICAgIGlmIChpc0FwcGxlV2luV2ViS2l0KCkpIHsKICAgICAgICAgJGVudi0+e1BBVEh9ID0g
am9pbignOicsIHByb2R1Y3REaXIoKSwgZGlybmFtZShpbnN0YWxsZWRTYWZhcmlQYXRoKCkpLCBh
cHBsZUFwcGxpY2F0aW9uU3VwcG9ydFBhdGgoKSwgJGVudi0+e1BBVEh9IHx8ICIiKTsKLSAgICB9
IGVsc2lmIChpc1F0KCkpIHsKLSAgICAgICAgbXkgJHF0TGlicyA9IGAkcW1ha2ViaW4gLXF1ZXJ5
IFFUX0lOU1RBTExfTElCU2A7Ci0gICAgICAgICRxdExpYnMgPX4gcy9bXG58XHJdJC8vZzsKLSAg
ICAgICAgJGVudi0+e1BBVEh9ID0gam9pbignOycsICRxdExpYnMsIHByb2R1Y3REaXIoKSAuICIv
bGliIiwgJGVudi0+e1BBVEh9IHx8ICIiKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9xdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9xdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzIyZGM2MTdmMDA0NmYxYWQx
NWQ3OWNlMTBlMjc0ZDE0MzMxNTkzNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXQucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwyMDkgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgR29vZ2xlIG5hbWUg
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJRdFdlYktpdCBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCi0KLWltcG9ydCBnbG9iCi1pbXBvcnQgbG9n
Z2luZwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKLWltcG9ydCBwbGF0Zm9ybQot
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKLWZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RD
b25maWd1cmF0aW9uCi1mcm9tIHdlYmtpdHB5LnBvcnQuYmFzZSBpbXBvcnQgUG9ydAotZnJvbSB3
ZWJraXRweS5wb3J0Lnh2ZmJkcml2ZXIgaW1wb3J0IFh2ZmJEcml2ZXIKLWZyb20gd2Via2l0cHku
cG9ydC5saW51eF9nZXRfY3Jhc2hfbG9nIGltcG9ydCBHREJDcmFzaExvZ0dlbmVyYXRvcgotCi1f
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotY2xhc3MgUXRQb3J0KFBvcnQp
OgotICAgIEFMTF9WRVJTSU9OUyA9IFsnbGludXgnLCAnd2luJywgJ21hYyddCi0gICAgcG9ydF9u
YW1lID0gInF0IgotCi0gICAgZGVmIF93azJfcG9ydF9uYW1lKHNlbGYpOgotICAgICAgICByZXR1
cm4gInF0LXdrMiIKLQotICAgIGRlZiBfcG9ydF9mbGFnX2Zvcl9zY3JpcHRzKHNlbGYpOgotICAg
ICAgICByZXR1cm4gIi0tcXQiCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZGV0ZXJtaW5l
X2Z1bGxfcG9ydF9uYW1lKGNscywgaG9zdCwgb3B0aW9ucywgcG9ydF9uYW1lKToKLSAgICAgICAg
aWYgcG9ydF9uYW1lIGFuZCBwb3J0X25hbWUgIT0gY2xzLnBvcnRfbmFtZToKLSAgICAgICAgICAg
IHJldHVybiBwb3J0X25hbWUKLSAgICAgICAgcmV0dXJuIHBvcnRfbmFtZSArICctJyArIGhvc3Qu
cGxhdGZvcm0ub3NfbmFtZQotCi0gICAgIyBzeXNfcGxhdGZvcm0gZXhpc3RzIG9ubHkgZm9yIHVu
aXQgdGVzdGluZy4KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3
YXJncyk6Ci0gICAgICAgIHN1cGVyKFF0UG9ydCwgc2VsZikuX19pbml0X18oaG9zdCwgcG9ydF9u
YW1lLCAqKmt3YXJncykKLQotICAgICAgICBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0gcG9ydF9u
YW1lLnJlcGxhY2UoJ3F0LScsICcnKQotCi0gICAgICAgICMgRklYTUU6IFdoeSBpcyB0aGlzIGJl
aW5nIHNldCBhdCBhbGw/Ci0gICAgICAgIHNlbGYuX3ZlcnNpb24gPSBzZWxmLm9wZXJhdGluZ19z
eXN0ZW0oKQotCi0gICAgZGVmIF9nZW5lcmF0ZV9hbGxfdGVzdF9jb25maWd1cmF0aW9ucyhzZWxm
KToKLSAgICAgICAgY29uZmlndXJhdGlvbnMgPSBbXQotICAgICAgICBmb3IgdmVyc2lvbiBpbiBz
ZWxmLkFMTF9WRVJTSU9OUzoKLSAgICAgICAgICAgIGZvciBidWlsZF90eXBlIGluIHNlbGYuQUxM
X0JVSUxEX1RZUEVTOgotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLmFwcGVuZChUZXN0
Q29uZmlndXJhdGlvbih2ZXJzaW9uPXZlcnNpb24sIGFyY2hpdGVjdHVyZT0neDg2JywgYnVpbGRf
dHlwZT1idWlsZF90eXBlKSkKLSAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb25zCi0KLSAgICBk
ZWYgX2J1aWxkX2RyaXZlcihzZWxmKToKLSAgICAgICAgIyBUaGUgUXQgcG9ydCBidWlsZHMgRFJU
IGFzIHBhcnQgb2YgdGhlIG1haW4gYnVpbGQgc3RlcAotICAgICAgICByZXR1cm4gVHJ1ZQotCi0g
ICAgZGVmIHN1cHBvcnRzX3Blcl90ZXN0X3RpbWVvdXQoc2VsZik6Ci0gICAgICAgIHJldHVybiBU
cnVlCi0KLSAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYpOgotICAgICAgICByZXR1cm4gc2Vs
Zi5fYnVpbGRfcGF0aCgnYmluLyVzJyAlIHNlbGYuZHJpdmVyX25hbWUoKSkKLQotICAgIGRlZiBf
cGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0
aCgnYmluL0ltYWdlRGlmZicpCi0KLSAgICBkZWYgX3BhdGhfdG9fd2ViY29yZV9saWJyYXJ5KHNl
bGYpOgotICAgICAgICBpZiBzZWxmLm9wZXJhdGluZ19zeXN0ZW0oKSA9PSAnbWFjJzoKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdsaWIvUXRXZWJLaXRXaWRnZXRzLmZyYW1l
d29yay9RdFdlYktpdFdpZGdldHMnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJu
IHNlbGYuX2J1aWxkX3BhdGgoJ2xpYi9saWJRdDVXZWJLaXRXaWRnZXRzLnNvJykKLQotICAgIGRl
ZiBfbW9kdWxlc190b19zZWFyY2hfZm9yX3N5bWJvbHMoc2VsZik6Ci0gICAgICAgICMgV2Ugc2Vh
cmNoIGluIGV2ZXJ5IGxpYnJhcnkgdG8gYmUgcmVsaWFibGUgaW4gdGhlIGNhc2Ugb2YgYnVpbGRp
bmcgd2l0aCBDT05GSUcrPWZvcmNlX3N0YXRpY19saWJzX2FzX3NoYXJlZC4KLSAgICAgICAgaWYg
c2VsZi5vcGVyYXRpbmdfc3lzdGVtKCkgPT0gJ21hYyc6Ci0gICAgICAgICAgICBmcmFtZXdvcmtz
ID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLl9idWlsZF9wYXRoKCdsaWInKSwgJyouZnJh
bWV3b3JrJykpCi0gICAgICAgICAgICByZXR1cm4gW29zLnBhdGguam9pbihmcmFtZXdvcmssIG9z
LnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShmcmFtZXdvcmspKVswXSkgZm9yIGZyYW1l
d29yayBpbiBmcmFtZXdvcmtzXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3VmZml4ID0g
J2RsbCcgaWYgc2VsZi5vcGVyYXRpbmdfc3lzdGVtKCkgPT0gJ3dpbicgZWxzZSAnc28nCi0gICAg
ICAgICAgICByZXR1cm4gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLl9idWlsZF9wYXRoKCds
aWInKSwgJ2xpYiouJyArIHN1ZmZpeCkpCi0KLSAgICBAbWVtb2l6ZWQKLSAgICBkZWYgcXRfdmVy
c2lvbihzZWxmKToKLSAgICAgICAgdmVyc2lvbiA9ICcnCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIGZvciBsaW5lIGluIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ3FtYWtlJywgJy12
J10pLnNwbGl0KCdcbicpOgotICAgICAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCdRdFxz
dmVyc2lvblxzKD9QPHZlcnNpb24+XGRcLlxkKScsIGxpbmUpCi0gICAgICAgICAgICAgICAgaWYg
bWF0Y2g6Ci0gICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSBtYXRjaC5ncm91cCgndmVyc2lv
bicpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgot
ICAgICAgICAgICAgdmVyc2lvbiA9ICc1LjAnCi0gICAgICAgIHJldHVybiB2ZXJzaW9uCi0KLSAg
ICBkZWYgX3NlYXJjaF9wYXRocyhzZWxmKToKLSAgICAgICAgIyAgICAgICAgICAgICAgICAgcXQt
bWFjLXdrMgotICAgICAgICAjICAgICAgICAgICAgICAgIC8KLSAgICAgICAgIyAgICAgICBxdC13
azEgIHF0LXdrMgotICAgICAgICAjICAgICAgICAgICAgIFwvCi0gICAgICAgICMgICAgICAgICAg
IHF0LTUueAotICAgICAgICAjICAgICAgICAgICAgICAgXAotICAgICAgICAjICAgIChxdC1saW51
eHxxdC1tYWN8cXQtd2luKQotICAgICAgICAjICAgICAgICAgICAgICAgIHwKLSAgICAgICAgIyAg
ICAgICAgICAgICAgIHF0Ci0gICAgICAgIHNlYXJjaF9wYXRocyA9IFtdCi0gICAgICAgIGlmIHNl
bGYuZ2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJyk6Ci0gICAgICAgICAgICBpZiBzZWxm
Lm9wZXJhdGluZ19zeXN0ZW0oKSA9PSAnbWFjJzoKLSAgICAgICAgICAgICAgICBzZWFyY2hfcGF0
aHMuYXBwZW5kKCdxdC1tYWMtd2syJykKLSAgICAgICAgICAgIHNlYXJjaF9wYXRocy5hcHBlbmQo
J3F0LXdrMicpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWFyY2hfcGF0aHMuYXBwZW5k
KCdxdC13azEnKQotCi0gICAgICAgIHNlYXJjaF9wYXRocy5hcHBlbmQoJ3F0LScgKyBzZWxmLnF0
X3ZlcnNpb24oKSkKLQotICAgICAgICBzZWFyY2hfcGF0aHMuYXBwZW5kKHNlbGYucG9ydF9uYW1l
ICsgJy0nICsgc2VsZi5vcGVyYXRpbmdfc3lzdGVtKCkpCi0gICAgICAgIHNlYXJjaF9wYXRocy5h
cHBlbmQoc2VsZi5wb3J0X25hbWUpCi0gICAgICAgIHJldHVybiBzZWFyY2hfcGF0aHMKLQotICAg
IGRlZiBkZWZhdWx0X2Jhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpOgotICAgICAgICByZXR1cm4g
bWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBzZWxmLl9zZWFyY2hfcGF0aHMoKSkKLQot
ICAgIGRlZiBfcG9ydF9zcGVjaWZpY19leHBlY3RhdGlvbnNfZmlsZXMoc2VsZik6Ci0gICAgICAg
IHBhdGhzID0gc2VsZi5fc2VhcmNoX3BhdGhzKCkKLSAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9u
KCd3ZWJraXRfdGVzdF9ydW5uZXInKToKLSAgICAgICAgICAgIHBhdGhzLmFwcGVuZCgnd2syJykK
LQotICAgICAgICAjIGV4cGVjdGF0aW9uc19maWxlcygpIHVzZXMgdGhlIGRpcmVjdG9yaWVzIGxp
c3RlZCBpbiBfc2VhcmNoX3BhdGhzIHJldmVyc2VkLgotICAgICAgICAjIGUuZy4gcXQgLT4gcXQt
bGludXggLT4gcXQtNS54IC0+IHF0LXdrMQotICAgICAgICByZXR1cm4gbGlzdChyZXZlcnNlZChb
c2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHApLCAnVGVz
dEV4cGVjdGF0aW9ucycpIGZvciBwIGluIHBhdGhzXSkpCi0KLSAgICBkZWYgc2V0dXBfZW52aXJv
bl9mb3Jfc2VydmVyKHNlbGYsIHNlcnZlcl9uYW1lPU5vbmUpOgotICAgICAgICBjbGVhbl9lbnYg
PSBzdXBlcihRdFBvcnQsIHNlbGYpLnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZXJ2ZXJfbmFt
ZSkKLSAgICAgICAgY2xlYW5fZW52WydRVFdFQktJVF9QTFVHSU5fUEFUSCddID0gc2VsZi5fYnVp
bGRfcGF0aCgnbGliL3BsdWdpbnMnKQotICAgICAgICBzZWxmLl9jb3B5X3ZhbHVlX2Zyb21fZW52
aXJvbl9pZl9zZXQoY2xlYW5fZW52LCAnUVRfRFJUX1dFQlZJRVdfTU9ERScpCi0gICAgICAgIHNl
bGYuX2NvcHlfdmFsdWVfZnJvbV9lbnZpcm9uX2lmX3NldChjbGVhbl9lbnYsICdEWUxEX0lNQUdF
X1NVRkZJWCcpCi0gICAgICAgIHNlbGYuX2NvcHlfdmFsdWVfZnJvbV9lbnZpcm9uX2lmX3NldChj
bGVhbl9lbnYsICdRVF9XRUJLSVRfTE9HJykKLSAgICAgICAgc2VsZi5fY29weV92YWx1ZV9mcm9t
X2Vudmlyb25faWZfc2V0KGNsZWFuX2VudiwgJ0RJU0FCTEVfTklfV0FSTklORycpCi0gICAgICAg
IHNlbGYuX2NvcHlfdmFsdWVfZnJvbV9lbnZpcm9uX2lmX3NldChjbGVhbl9lbnYsICdRVF9XRUJL
SVRfUEFVU0VfVUlfUFJPQ0VTUycpCi0gICAgICAgIHNlbGYuX2NvcHlfdmFsdWVfZnJvbV9lbnZp
cm9uX2lmX3NldChjbGVhbl9lbnYsICdRVF9RUEFfUExBVEZPUk1fUExVR0lOX1BBVEgnKQotICAg
ICAgICBzZWxmLl9jb3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9pZl9zZXQoY2xlYW5fZW52LCAnUVRf
V0VCS0lUX0RJU0FCTEVfVUlQUk9DRVNTX0RVTVBQSVhFTFMnKQotICAgICAgICByZXR1cm4gY2xl
YW5fZW52Ci0KLSAgICAjIEZJWE1FOiBXZSBzaG91bGQgZmluZCBhIHdheSB0byBzaGFyZSB0aGlz
IGltcGxtZW50YXRpb24gd2l0aCBHdGssCi0gICAgIyBvciB0ZWFjaCBydW4tbGF1bmNoZXIgaG93
IHRvIGNhbGwgcnVuLXNhZmFyaSBhbmQgbW92ZSB0aGlzIGRvd24gdG8gUG9ydC4KLSAgICBkZWYg
c2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmLCByZXN1bHRzX2ZpbGVuYW1lKToKLSAgICAgICAg
cnVuX2xhdW5jaGVyX2FyZ3MgPSBbXQotICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3dlYmtp
dF90ZXN0X3J1bm5lcicpOgotICAgICAgICAgICAgcnVuX2xhdW5jaGVyX2FyZ3MuYXBwZW5kKCct
MicpCi0gICAgICAgIHJ1bl9sYXVuY2hlcl9hcmdzLmFwcGVuZCgiZmlsZTovLyVzIiAlIHJlc3Vs
dHNfZmlsZW5hbWUpCi0gICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoInJ1bi1sYXVuY2hlciIsIHJ1
bl9sYXVuY2hlcl9hcmdzKQotCi0gICAgZGVmIG9wZXJhdGluZ19zeXN0ZW0oc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtCi0KLSAgICBkZWYgY2hlY2tfc3lzX2Rl
cHMoc2VsZiwgbmVlZHNfaHR0cCk6Ci0gICAgICAgIHJlc3VsdCA9IHN1cGVyKFF0UG9ydCwgc2Vs
ZikuY2hlY2tfc3lzX2RlcHMobmVlZHNfaHR0cCkKLSAgICAgICAgaWYgbm90ICdXRUJLSVRfVEVT
VEZPTlRTJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgX2xvZy5lcnJvcignXG5UaGUgV0VC
S0lUX1RFU1RGT05UUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZGVmaW5lZCBvciBub3Qg
c2V0IHByb3Blcmx5LicpCi0gICAgICAgICAgICBfbG9nLmVycm9yKCdZb3UgbXVzdCBzZXQgaXQg
YmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3RzLicpCi0gICAgICAgICAgICBfbG9nLmVycm9yKCdVc2Ug
Z2l0IHRvIGdyYWIgdGhlIGFjdHVhbCBmb250cyBmcm9tIGh0dHA6Ly9naXRvcmlvdXMub3JnL3F0
d2Via2l0L3Rlc3Rmb250cycpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0
dXJuIHJlc3VsdAotCi0gICAgIyBRdCBwb3J0IGlzIG5vdCByZWFkeSBmb3IgcGFyYWxsZWwgdGVz
dGluZywgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzczMCBm
b3IgZGV0YWlscy4KLSAgICBkZWYgZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoc2VsZik6Ci0gICAg
ICAgIHJldHVybiAxCi0KLSAgICBkZWYgYnVpbGRfd2Via2l0X2NvbW1hbmQoc2VsZiwgYnVpbGRf
c3R5bGU9Tm9uZSk6Ci0gICAgICAgIGNvbW1hbmQgPSBzdXBlcihRdFBvcnQsIHNlbGYpLmJ1aWxk
X3dlYmtpdF9jb21tYW5kKGJ1aWxkX3N0eWxlKQotICAgICAgICBjb21tYW5kLmFwcGVuZCgiLS1x
dCIpCi0gICAgICAgIGlmIG5vdCBzZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicp
OgotICAgICAgICAgICAgY29tbWFuZC5hcHBlbmQoIi0tbm8td2Via2l0MiIpCi0gICAgICAgIGNv
bW1hbmQuYXBwZW5kKHN1cGVyKFF0UG9ydCwgc2VsZikubWFrZV9hcmdzKCkpCi0gICAgICAgIHJl
dHVybiBjb21tYW5kCi0KLSAgICBkZWYgcnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKHNlbGYpOgot
ICAgICAgICBjb21tYW5kID0gc3VwZXIoUXRQb3J0LCBzZWxmKS5ydW5fd2Via2l0X3Rlc3RzX2Nv
bW1hbmQoKQotICAgICAgICBjb21tYW5kLmFwcGVuZCgiLS1xdCIpCi0gICAgICAgIGlmIHNlbGYu
Z2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJyk6Ci0gICAgICAgICAgICBjb21tYW5kLmFw
cGVuZCgiLTIiKQotICAgICAgICByZXR1cm4gY29tbWFuZAotCi0gICAgZGVmIF9nZXRfY3Jhc2hf
bG9nKHNlbGYsIG5hbWUsIHBpZCwgc3Rkb3V0LCBzdGRlcnIsIG5ld2VyX3RoYW4pOgotICAgICAg
ICByZXR1cm4gR0RCQ3Jhc2hMb2dHZW5lcmF0b3IobmFtZSwgcGlkLCBuZXdlcl90aGFuLCBzZWxm
Ll9maWxlc3lzdGVtLCBzZWxmLl9wYXRoX3RvX2RyaXZlcikuZ2VuZXJhdGVfY3Jhc2hfbG9nKHN0
ZG91dCwgc3RkZXJyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3F0
X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3F0X3VuaXR0ZXN0LnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjRjZWZjNWM5MTU0ODdlMzg0MzllOTJj
ZjM1ZTQ0NTk1MTQyOWQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9xdF91bml0dGVzdC5weQorKysgL2Rl
di9udWxsCkBAIC0xLDE1OCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHVuaXR0ZXN0
MiBhcyB1bml0dGVzdAotaW1wb3J0IG9zCi1mcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5Ci0KLWZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1
dGl2ZSwgTW9ja0V4ZWN1dGl2ZTIKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRj
YXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
c3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAotZnJvbSB3ZWJraXRweS5wb3J0
IGltcG9ydCBwb3J0X3Rlc3RjYXNlCi1mcm9tIHdlYmtpdHB5LnBvcnQuYmFzZSBpbXBvcnQgUG9y
dAotZnJvbSB3ZWJraXRweS5wb3J0LnF0IGltcG9ydCBRdFBvcnQKLWZyb20gd2Via2l0cHkudG9v
bC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKLQotCi1jbGFzcyBRdFBvcnRUZXN0KHBvcnRf
dGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKLSAgICBwb3J0X25hbWUgPSAncXQtbWFjJwotICAgIHBv
cnRfbWFrZXIgPSBRdFBvcnQKLSAgICBzZWFyY2hfcGF0aHNfY2FzZXMgPSBbCi0gICAgICAgIHsn
c2VhcmNoX3BhdGhzJzpbJ3F0LW1hYy13azInLCAncXQtd2syJywgJ3F0LTUuMCcsICdxdC1tYWMn
LCAncXQnXSwgJ29zX25hbWUnOidtYWMnLCAndXNlX3dlYmtpdDInOlRydWUsICdxdF92ZXJzaW9u
JzonNS4wJ30sCi0gICAgICAgIHsnc2VhcmNoX3BhdGhzJzpbJ3F0LXdrMicsICdxdC01LjAnLCAn
cXQtd2luJywgJ3F0J10sICdvc19uYW1lJzond2luJywgJ3VzZV93ZWJraXQyJzpUcnVlLCAncXRf
dmVyc2lvbic6JzUuMCd9LAotICAgICAgICB7J3NlYXJjaF9wYXRocyc6WydxdC13azInLCAncXQt
NS4wJywgJ3F0LWxpbnV4JywgJ3F0J10sICdvc19uYW1lJzonbGludXgnLCAndXNlX3dlYmtpdDIn
OlRydWUsICdxdF92ZXJzaW9uJzonNS4wJ30sCi0KLSAgICAgICAgeydzZWFyY2hfcGF0aHMnOlsn
cXQtd2sxJywgJ3F0LTUuMCcsICdxdC1tYWMnLCAncXQnXSwgJ29zX25hbWUnOidtYWMnLCAndXNl
X3dlYmtpdDInOkZhbHNlLCAncXRfdmVyc2lvbic6JzUuMCd9LAotICAgICAgICB7J3NlYXJjaF9w
YXRocyc6WydxdC13azEnLCAncXQtNS4wJywgJ3F0LXdpbicsICdxdCddLCAnb3NfbmFtZSc6J3dp
bicsICd1c2Vfd2Via2l0Mic6RmFsc2UsICdxdF92ZXJzaW9uJzonNS4wJ30sCi0gICAgICAgIHsn
c2VhcmNoX3BhdGhzJzpbJ3F0LXdrMScsICdxdC01LjAnLCAncXQtbGludXgnLCAncXQnXSwgJ29z
X25hbWUnOidsaW51eCcsICd1c2Vfd2Via2l0Mic6RmFsc2UsICdxdF92ZXJzaW9uJzonNS4wJ30s
Ci0gICAgICAgIHsnc2VhcmNoX3BhdGhzJzpbJ3F0LXdrMScsICdxdC01LjEnLCAncXQtbGludXgn
LCAncXQnXSwgJ29zX25hbWUnOidsaW51eCcsICd1c2Vfd2Via2l0Mic6RmFsc2UsICdxdF92ZXJz
aW9uJzonNS4xJ30sCi0gICAgXQotCi0gICAgZGVmIF9hc3NlcnRfc2VhcmNoX3BhdGgoc2VsZiwg
c2VhcmNoX3BhdGhzLCBvc19uYW1lLCB1c2Vfd2Via2l0Mj1GYWxzZSwgcXRfdmVyc2lvbj0nNS4w
Jyk6Ci0gICAgICAgICMgRklYTUU6IFBvcnQgY29uc3RydWN0b3JzIHNob3VsZCBub3QgInBhcnNl
IiB0aGUgcG9ydCBuYW1lLCBidXQKLSAgICAgICAgIyByYXRoZXIgYmUgcGFzc2VkIGNvbXBvbmVu
dHMgKGRpcmVjdGx5IG9yIHZpYSBzZXR0ZXJzKS4gIE9uY2UKLSAgICAgICAgIyB3ZSBmaXggdGhh
dCwgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIGEgcmUtd3JpdGUuCi0gICAgICAgIGhvc3QgPSBNb2Nr
U3lzdGVtSG9zdChvc19uYW1lPW9zX25hbWUpCi0gICAgICAgIGhvc3QuZXhlY3V0aXZlID0gTW9j
a0V4ZWN1dGl2ZTIoc2VsZi5fcXRfdmVyc2lvbihxdF92ZXJzaW9uKSkKLSAgICAgICAgcG9ydF9u
YW1lID0gJ3F0LScgKyBvc19uYW1lCi0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChob3N0
PWhvc3QsIHF0X3ZlcnNpb249cXRfdmVyc2lvbiwgcG9ydF9uYW1lPXBvcnRfbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9TW9ja09wdGlvbnMod2Via2l0X3Rlc3Rf
cnVubmVyPXVzZV93ZWJraXQyLCBwbGF0Zm9ybT0ncXQnKSkKLSAgICAgICAgYWJzb2x1dGVfc2Vh
cmNoX3BhdGhzID0gbWFwKHBvcnQuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBzZWFyY2hfcGF0aHMp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCgpLCBh
YnNvbHV0ZV9zZWFyY2hfcGF0aHMpCi0KLSAgICBkZWYgX2Fzc2VydF9leHBlY3RhdGlvbnNfZmls
ZXMoc2VsZiwgc2VhcmNoX3BhdGhzLCBvc19uYW1lLCB1c2Vfd2Via2l0Mj1GYWxzZSwgcXRfdmVy
c2lvbj0nNS4wJyk6Ci0gICAgICAgICMgRklYTUU6IFBvcnQgY29uc3RydWN0b3JzIHNob3VsZCBu
b3QgInBhcnNlIiB0aGUgcG9ydCBuYW1lLCBidXQKLSAgICAgICAgIyByYXRoZXIgYmUgcGFzc2Vk
IGNvbXBvbmVudHMgKGRpcmVjdGx5IG9yIHZpYSBzZXR0ZXJzKS4gIE9uY2UKLSAgICAgICAgIyB3
ZSBmaXggdGhhdCwgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIGEgcmUtd3JpdGUuCi0gICAgICAgIGhv
c3QgPSBNb2NrU3lzdGVtSG9zdChvc19uYW1lPW9zX25hbWUpCi0gICAgICAgIGhvc3QuZXhlY3V0
aXZlID0gTW9ja0V4ZWN1dGl2ZTIoc2VsZi5fcXRfdmVyc2lvbihxdF92ZXJzaW9uKSkKLSAgICAg
ICAgcG9ydF9uYW1lID0gJ3F0LScgKyBvc19uYW1lCi0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2Vf
cG9ydChob3N0PWhvc3QsIHF0X3ZlcnNpb249cXRfdmVyc2lvbiwgcG9ydF9uYW1lPXBvcnRfbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9TW9ja09wdGlvbnMod2Vi
a2l0X3Rlc3RfcnVubmVyPXVzZV93ZWJraXQyLCBwbGF0Zm9ybT0ncXQnKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwb3J0LmV4cGVjdGF0aW9uc19maWxlcygpLCBzZWFyY2hfcGF0aHMpCi0K
LSAgICBkZWYgX3F0X3ZlcnNpb24oc2VsZiwgcXRfdmVyc2lvbik6Ci0gICAgICAgIGlmIHF0X3Zl
cnNpb24gaW4gJzUuMCc6Ci0gICAgICAgICAgICByZXR1cm4gJ1FNYWtlIHZlcnNpb24gMi4wMWFc
blVzaW5nIFF0IHZlcnNpb24gNS4wLjAgaW4gL3Vzci9sb2NhbC9Ucm9sbHRlY2gvUXQtNS4wLjAv
bGliJwotICAgICAgICBpZiBxdF92ZXJzaW9uIGluICc1LjEnOgotICAgICAgICAgICAgcmV0dXJu
ICdRTWFrZSB2ZXJzaW9uIDMuMFxuVXNpbmcgUXQgdmVyc2lvbiA1LjEuMSBpbiAvdXNyL2xvY2Fs
L1F0LTUuMS9saWInCi0KLSAgICBkZWYgdGVzdF9iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToK
LSAgICAgICAgZm9yIGNhc2UgaW4gc2VsZi5zZWFyY2hfcGF0aHNfY2FzZXM6Ci0gICAgICAgICAg
ICBzZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgoKipjYXNlKQotCi0gICAgZGVmIHRlc3RfZXhwZWN0
YXRpb25zX2ZpbGVzKHNlbGYpOgotICAgICAgICBmb3IgY2FzZSBpbiBzZWxmLnNlYXJjaF9wYXRo
c19jYXNlczoKLSAgICAgICAgICAgIGV4cGVjdGF0aW9uc19jYXNlID0gZGVlcGNvcHkoY2FzZSkK
LSAgICAgICAgICAgIGlmIGV4cGVjdGF0aW9uc19jYXNlWyd1c2Vfd2Via2l0MiddOgotICAgICAg
ICAgICAgICAgIGV4cGVjdGF0aW9uc19jYXNlWydzZWFyY2hfcGF0aHMnXS5hcHBlbmQoIndrMiIp
Ci0gICAgICAgICAgICBleHBlY3RhdGlvbnNfY2FzZVsnc2VhcmNoX3BhdGhzJ10uYXBwZW5kKCcn
KQotICAgICAgICAgICAgZXhwZWN0YXRpb25zX2Nhc2VbJ3NlYXJjaF9wYXRocyddLnJldmVyc2Uo
KQotICAgICAgICAgICAgZXhwZWN0YXRpb25zX2Nhc2VbJ3NlYXJjaF9wYXRocyddID0gbWFwKGxh
bWJkYSBwYXRoOiAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucycg
aWYgbm90IHBhdGggZWxzZSAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vJXMv
VGVzdEV4cGVjdGF0aW9ucycgJSAocGF0aCksIGV4cGVjdGF0aW9uc19jYXNlWydzZWFyY2hfcGF0
aHMnXSkKLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9leHBlY3RhdGlvbnNfZmlsZXMoKipleHBl
Y3RhdGlvbnNfY2FzZSkKLQotICAgIGRlZiB0ZXN0X3Nob3dfcmVzdWx0c19odG1sX2ZpbGUoc2Vs
Zik6Ci0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCi0gICAgICAgIHBvcnQuX2V4ZWN1
dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlKQotICAgICAgICBleHBlY3RlZF9s
b2dzID0gIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9ydW4tbGF1bmNoZXInLCAn
LS1yZWxlYXNlJywgJy0tcXQnLCAnZmlsZTovL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tv
dXRcbiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQu
c2hvd19yZXN1bHRzX2h0bWxfZmlsZSwgWyJ0ZXN0Lmh0bWwiXSwgZXhwZWN0ZWRfbG9ncz1leHBl
Y3RlZF9sb2dzKQotCi0gICAgZGVmIHRlc3Rfc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlbGYp
OgotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQotICAgICAgICBlbnYgPSBwb3J0LnNl
dHVwX2Vudmlyb25fZm9yX3NlcnZlcihwb3J0LmRyaXZlcl9uYW1lKCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZW52WydRVFdFQktJVF9QTFVHSU5fUEFUSCddLCAnL21vY2stYnVpbGQvbGli
L3BsdWdpbnMnKQotCi0gICAgZGVmIHRlc3Rfb3BlcmF0aW5nX3N5c3RlbShzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnbGludXgnLCBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J3F0
LWxpbnV4Jywgb3NfbmFtZT0nbGludXgnKS5vcGVyYXRpbmdfc3lzdGVtKCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ21hYycsIHNlbGYubWFrZV9wb3J0KG9zX25hbWU9J21hYycpLm9wZXJh
dGluZ19zeXN0ZW0oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnd2luJywgc2VsZi5tYWtl
X3BvcnQocG9ydF9uYW1lPSdxdC13aW4nLCBvc19uYW1lPSd3aW4nKS5vcGVyYXRpbmdfc3lzdGVt
KCkpCi0KLSAgICBkZWYgdGVzdF9jaGVja19zeXNfZGVwcyhzZWxmKToKLSAgICAgICAgcG9ydCA9
IHNlbGYubWFrZV9wb3J0KCkKLQotICAgICAgICAjIFN1Y2Nlc3MKLSAgICAgICAgb3MuZW52aXJv
blsnV0VCS0lUX1RFU1RGT05UUyddID0gJy90bXAvZm9vJwotICAgICAgICBwb3J0Ll9leGVjdXRp
dmUgPSBNb2NrRXhlY3V0aXZlMihleGl0X2NvZGU9MCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHBvcnQuY2hlY2tfc3lzX2RlcHMobmVlZHNfaHR0cD1GYWxzZSkpCi0KLSAgICAgICAgIyBGYWls
dXJlCi0gICAgICAgIGRlbCBvcy5lbnZpcm9uWydXRUJLSVRfVEVTVEZPTlRTJ10KLSAgICAgICAg
cG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIoZXhpdF9jb2RlPTEsCi0gICAgICAgICAg
ICBvdXRwdXQ9J3Rlc3Rpbmcgb3V0cHV0IGZhaWx1cmUnKQotICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKHBvcnQuY2hlY2tfc3lzX2RlcHMobmVlZHNfaHR0cD1GYWxzZSkpCi0KLSAgICBkZWYgdGVz
dF9jb21tYW5kcyhzZWxmKToKLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFt
ZT0icXQiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQudG9vbGluZ19mbGFnKCksICIt
LXBvcnQ9cXQiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQudXBkYXRlX3dlYmtpdF9j
b21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInVwZGF0ZS13ZWJraXQiKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmNoZWNrX3dlYmtpdF9zdHlsZV9jb21tYW5kKCks
IFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoImNoZWNrLXdlYmtpdC1zdHlsZSIpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucHJlcGFyZV9jaGFuZ2Vsb2dfY29tbWFuZCgpLCBQb3J0
LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJwcmVwYXJlLUNoYW5nZUxvZyIpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBvcnQuYnVpbGRfd2Via2l0X2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hl
bGxfY29tbWFuZCgiYnVpbGQtd2Via2l0IikgKyBbIi0tcXQiLCAiLS1uby13ZWJraXQyIiwgcG9y
dC5tYWtlX2FyZ3MoKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5famF2YXNj
cmlwdGNvcmVfdGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4t
amF2YXNjcmlwdGNvcmUtdGVzdHMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1
bl93ZWJraXRfdW5pdF90ZXN0c19jb21tYW5kKCksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocG9ydC5ydW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxf
Y29tbWFuZCgicnVuLXdlYmtpdC10ZXN0cyIpICsgWyItLXF0Il0pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocG9ydC5ydW5fcHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0
X3NoZWxsX2NvbW1hbmQoInRlc3Qtd2Via2l0cHkiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwb3J0LnJ1bl9wZXJsX3VuaXR0ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2Nv
bW1hbmQoInRlc3Qtd2Via2l0cGVybCIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQu
cnVuX2JpbmRpbmdzX3Rlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgi
cnVuLWJpbmRpbmdzLXRlc3RzIikpCi0KLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBv
cnRfbmFtZT0icXQiLCBvcHRpb25zPU1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj1UcnVl
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnRvb2xpbmdfZmxhZygpLCAiLS1wb3J0
PXF0LXdrMiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC51cGRhdGVfd2Via2l0X2Nv
bW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidXBkYXRlLXdlYmtpdCIpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoKSwg
UG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgiY2hlY2std2Via2l0LXN0eWxlIikpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wcmVwYXJlX2NoYW5nZWxvZ19jb21tYW5kKCksIFBvcnQu
c2NyaXB0X3NoZWxsX2NvbW1hbmQoInByZXBhcmUtQ2hhbmdlTG9nIikpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocG9ydC5idWlsZF93ZWJraXRfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVs
bF9jb21tYW5kKCJidWlsZC13ZWJraXQiKSArIFsiLS1xdCIsIHBvcnQubWFrZV9hcmdzKCldKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX2phdmFzY3JpcHRjb3JlX3Rlc3RzX2Nv
bW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLWphdmFzY3JpcHRjb3JlLXRl
c3RzIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fd2Via2l0X3VuaXRfdGVz
dHNfY29tbWFuZCgpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3dl
YmtpdF90ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi13ZWJr
aXQtdGVzdHMiKSArIFsiLS1xdCIsICItMiJdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQucnVuX3B5dGhvbl91bml0dGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21t
YW5kKCJ0ZXN0LXdlYmtpdHB5IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5f
cGVybF91bml0dGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJ0ZXN0
LXdlYmtpdHBlcmwiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9iaW5kaW5n
c190ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi1iaW5kaW5n
cy10ZXN0cyIpKQotCi0gICAgZGVmIHRlc3RfZ2V0X2NyYXNoX2xvZyhzZWxmKToKLSAgICAgICAg
IyBUaGlzIGZ1bmN0aW9uIHRlc3RlZCBpbiBsaW51eF9nZXRfY3Jhc2hfbG9nX3VuaXR0ZXN0LnB5
Ci0gICAgICAgIHBhc3MK
</data>

          </attachment>
      

    </bug>

</bugzilla>