<?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>169737</bug_id>
          
          <creation_ts>2017-03-16 01:51:25 -0700</creation_ts>
          <short_desc>Add the file uploading capability to the perf dashboard.</short_desc>
          <delta_ts>2017-03-16 13:53:37 -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>Perf Dashboard</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1288491</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-16 01:51:25 -0700</bug_when>
    <thetext>For custom roots and try bots, we need to be able to upload files to the perf dashboard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288497</commentid>
    <comment_count>1</comment_count>
      <attachid>304621</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-16 02:13:00 -0700</bug_when>
    <thetext>Created attachment 304621
Adds the feature</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288498</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-03-16 02:13:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/31085256&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288716</commentid>
    <comment_count>3</comment_count>
      <attachid>304621</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-16 13:52:53 -0700</bug_when>
    <thetext>Comment on attachment 304621
Adds the feature

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288717</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-16 13:53:31 -0700</bug_when>
    <thetext>Thanks for the review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288718</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-16 13:53:37 -0700</bug_when>
    <thetext>Committed r214065: &lt;http://trac.webkit.org/changeset/214065&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304621</attachid>
            <date>2017-03-16 02:13:00 -0700</date>
            <delta_ts>2017-03-16 13:52:53 -0700</delta_ts>
            <desc>Adds the feature</desc>
            <filename>bug-169737-20170316021300.patch</filename>
            <type>text/plain</type>
            <size>62101</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0MDM0KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDkzIEBACisyMDE3LTAzLTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEFkZCB0aGUgZmlsZSB1cGxvYWRpbmcgY2FwYWJpbGl0eSB0byB0aGUgcGVyZiBk
YXNoYm9hcmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk3MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCAvcHJpdmlsZWdlZC1hcGkvdXBsb2FkLWZpbGUgdG8gdXBsb2FkIGEgZmlsZSwgYW5k
IC9hcGkvdXBsb2FkZWQtZmlsZS8gdG8gZG93bmxvYWQgdGhlIGZpbGUKKyAgICAgICAgYW5kIHJl
dHJpZXZlIGl0cyBtZXRhIGRhdGEgYmFzZWQgb24gaXRzIFNIQTI1Ni4gV2UgdHJlYXQgdHdvIGZp
bGVzIHdpdGggdGhlIGlkZW50aWNhbCBTSEEyNTYgYXMKKyAgICAgICAgaWRlbnRpY2FsIHNpbmNl
IGFueW9uZSB3aG8gY2FuIHVwbG9hZCBhIGZpbGUgdXNpbmcgdGhpcyBtZWNoYW5pc20gY2FuIGV4
ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgaW4KKyAgICAgICAgb3VyIGJvdHMgYW55d2F5LiBUaGlzIGlz
IGltcG9ydGFudCBmb3IgYXZvaWRpbmcgdXBsb2FkaW5nIGEgbGFyZ2UgZGFyd2ludXAgcm9vdHMg
bXVsdGlwbGUgdGltZXMKKyAgICAgICAgdG8gdGhlIHNlcnZlciwgc2F2aW5nIGJvdGggdXNlcidz
IHRpbWUvYmFuZHdpZHRoIGFuZCBzZXJ2ZXIncyBkaXNrIHNwYWNlLgorCisgICAgICAgICogY29u
ZmlnLmpzb246IEFkZGVkIHVwbG9hZERpcmVjdG9yeSwgdXBsb2FkRmlsZUxpbWl0SW5NQiwgYW5k
IHVwbG9hZFVzZXJRdW90YUluTUIgYXMgb3B0aW9ucy4KKyAgICAgICAgKiBpbml0LWRhdGFiYXNl
LnNxbDogQWRkZWQgdXBsb2FkZWRfZmlsZXMgdGFibGUuCisKKyAgICAgICAgKiBwdWJsaWMvYXBp
L3VwbG9hZGVkLWZpbGUucGhwOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOiAvYXBpL3VwbG9hZGVk
LWZpbGUvTiB3b3VsZCBkb3dubG9hZCB1cGxvYWRlZF9maWxlIHdpdGggaWQ9Ti4gL2FwaS91cGxv
YWRlZC1maWxlLz9zaGEyNTY9WAorICAgICAgICB3b3VsZCByZXR1cm4gdGhlIG1ldGEgZGF0YSBm
b3IgdXBsb2FkZWRfZmlsZSB3aXRoIHNoYTI1Nj1YLgorICAgICAgICAoc3RyZWFtX2ZpbGVfY29u
dGVudCk6IFN0cmVhbXMgdGhlIGZpbGUgY29udGVudCBpbiA2NEtCIGNodW5rcy4gV2Ugc3VwcG9y
dCBSYW5nZSAmIElmLVJhbmdlIEhUVFAKKyAgICAgICAgcmVxdWVzdCBoZWFkZXJzIHNvIHRoYXQg
YnJvd3NlcnMgY2FuIHBhdXNlIGFuZCByZXN1bWUgZG93bmxvYWRpbmcgb2YgYSBsYXJnZSByb290
IGZpbGUuCisgICAgICAgIChwYXJzZV9yYW5nZV9oZWFkZXIpOiBQYXJzZXMgUmFuZ2UgSFRUUCBy
ZXF1ZXN0IGhlYWRlci4KKworICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL2pzb24taGVhZGVyLnBo
cDoKKyAgICAgICAgKHJlbW90ZV91c2VyX25hbWUpOiBVc2UgdGhlIGRlZmF1bHQgYXJndW1lbnQg
b2YgTlVMTC4KKworICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL21hbmlmZXN0LWdlbmVyYXRvci5w
aHA6CisgICAgICAgIChNYW5pZmVzdEdlbmVyYXRvcjo6Z2VuZXJhdGUpOiBJbmNsdWRlIHRoZSBt
YXhpbXVtIHVwbG9hZCBzaXplIGluIHRoZSBtYW5pZmVzdCBmaWxlIHRvIGxldCB0aGUKKyAgICAg
ICAgZnJvbnRlbmQgY29kZSBwcmVlbXB0aXZlbHkgY2hlY2sgdGhlIGZpbGUgc2l6ZSBiZWZvcmUg
YXR0ZW1wdGluZyB0byBzdWJtaXQgYSBmaWxlLgorCisgICAgICAgICogcHVibGljL2luY2x1ZGUv
dXBsb2FkZWQtZmlsZS1oZWxwZXJzLnBocDogQWRkZWQuCisgICAgICAgIChmb3JtYXRfdXBsb2Fk
ZWRfZmlsZSk6CisgICAgICAgICh1cGxvYWRlZF9maWxlX3BhdGhfZm9yX3Jvdyk6CisKKyAgICAg
ICAgKiBwdWJsaWMvcHJpdmlsZWdlZC1hcGkvdXBsb2FkLWZpbGUtZm9ybS5odG1sOiBBZGRlZC4g
Rm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKyAgICAgICAgKGZldGNoQ1NSRmZUb2tlbik6CisgICAg
ICAgICh1cGxvYWQpOgorCisgICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwbG9hZC1m
aWxlLnBocDogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKHF1ZXJ5X3RvdGFsX2Zp
bGVfc2l6ZSk6CisgICAgICAgIChjcmVhdGVfdXBsb2FkZWRfZmlsZV9mcm9tX2Zvcm1fZGF0YSk6
CisKKyAgICAgICAgKiBwdWJsaWMvc2hhcmVkL2NvbW1vbi1yZW1vdGUuanM6CisgICAgICAgIChD
b21tb25SZW1vdGVBUEkucHJvdG90eXBlLnBvc3RGb3JtRGF0YSk6IEFkZGVkLgorICAgICAgICAo
Q29tbW9uUmVtb3RlQVBJLnByb3RvdHlwZS5wb3N0Rm9ybURhdGFXaXRoU3RhdHVzKTogQWRkZWQu
CisgICAgICAgIChDb21tb25SZW1vdGVBUEkucHJvdG90eXBlLnNlbmRIdHRwUmVxdWVzdFdpdGhG
b3JtRGF0YSk6IEFkZGVkLgorICAgICAgICAoQ29tbW9uUmVtb3RlQVBJLnByb3RvdHlwZS5fYXNK
U09OKTogVGhyb3cgYW4gZXhjZXB0aW9uIGluc3RlYWQgb2YgY2FsbGluZyBhIG5vbi1leGlzdGVu
dCByZWplY3QuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL3VwbG9hZGVkLWZpbGUuanM6
IEFkZGVkLgorICAgICAgICAoVXBsb2FkZWRGaWxlKTogQWRkZWQuCisgICAgICAgIChVcGxvYWRl
ZEZpbGUudXBsb2FkRmlsZSk6IEFkZGVkLgorICAgICAgICAoVXBsb2FkZWRGaWxlLmZldGNoVW5s
b2FkZWRGaWxlV2l0aElkZW50aWNhbEhhc2gpOiBBZGRlZC4gRmluZHMgdGhlIGZpbGUgd2l0aCB0
aGUgc2FtZSBTSEEyNTYgaW4KKyAgICAgICAgdGhlIHNlcnZlciB0byBhdm9pZCB1cGxvYWRpbmcg
YSBsYXJnZSBjdXN0b20gcm9vdCBtdWx0aXBsZSB0aW1lcy4KKyAgICAgICAgKFVwbG9hZGVkRmls
ZS5fY29tcHV0ZVNIQTI1Nkhhc2gpOiBBZGRlZC4KKworICAgICAgICAqIHB1YmxpYy92My9wcml2
aWxlZ2VkLWFwaS5qczoKKyAgICAgICAgKFByaXZpbGVnZWRBUEkucHJvdG90eXBlLnNlbmRSZXF1
ZXN0KTogQWRkZWQgdGhlIG9wdGlvbnMgZGljdGlvbmFyeSBhcyBhIHRoaXJkIGFyZ3VtZW50LiBG
b3Igbm93LAorICAgICAgICBvbmx5IHN1cHBvcnQgdXNlRm9ybURhdGEgYm9vbGVhbi4KKworICAg
ICAgICAqIHB1YmxpYy92My9yZW1vdGUuanM6CisgICAgICAgIChCcm93c2VyUmVtb3RlQVBJLnBy
b3RvdHlwZS5zZW5kSHR0cFJlcXVlc3RXaXRoRm9ybURhdGEpOiBBZGRlZC4KKworICAgICAgICAq
IHNlcnZlci10ZXN0cy9hcGktbWFuaWZlc3QuanM6IFVwZGF0ZWQgcGVyIHRoZSBpbmNsdXNpb24g
b2YgZmlsZVVwbG9hZFNpemVMaW1pdCBpbiB0aGUgbWFuaWZlc3QuCisgICAgICAgICogc2VydmVy
LXRlc3RzL2FwaS11cGxvYWRlZC1maWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzZXJ2ZXItdGVz
dHMvcHJpdmlsZWdlZC1hcGktdXBsb2FkLWZpbGUtdGVzdHMuanM6IEFkZGVkLgorCisgICAgICAg
ICogc2VydmVyLXRlc3RzL3Jlc291cmNlcy90ZXN0LXNlcnZlci5jb25mOiBTZXQgdXBsb2FkX21h
eF9maWxlc2l6ZSBhbmQgcG9zdF9tYXhfc2l6ZSBmb3IgdGVzdGluZy4KKyAgICAgICAgKiBzZXJ2
ZXItdGVzdHMvcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpzOgorICAgICAgICAoVGVzdFNlcnZlci5w
cm90b3R5cGUudGVzdENvbmZpZyk6IFVzZSB1cGxvYWRGaWxlTGltaXRJbk1CIGFuZCB1cGxvYWRV
c2VyUXVvdGFJbk1CIG9mIDJNQiBhbmQgNU1CLgorICAgICAgICAoVGVzdFNlcnZlci5wcm90b3R5
cGUuX2Vuc3VyZURhdGFEaXJlY3RvcnkpOiBDcmVhdGUgYSBkaXJlY3RvcnkgdG8gc3RvcmUgdXBs
b2FkZWQgZmlsZXMgaW5zaWRlCisgICAgICAgIHRoZSBkYXRhIGRpcmVjdG9yeS4gSW4gYSBwcm9k
dWN0aW9uIHNlcnZlciwgd2UgY2FuIHBsYWNlIGl0IG91dHNpZGUgU2VydmVyUm9vdCAvIERvY3Vt
ZW50Um9vdC4KKyAgICAgICAgKFRlc3RTZXJ2ZXIucHJvdG90eXBlLmNsZWFuRGF0YURpcmVjdG9y
eSk6IERlbGV0ZSB0aGUgYWZvcmVtZW50aW9uZWQgZGlyZWN0b3J5IGFzIG5lZWRlZC4KKworICAg
ICAgICAqIHRvb2xzL2pzL2RhdGFiYXNlLmpzOgorICAgICAgICAodGFibGVUb1ByZWZpeE1hcCk6
IEFkZGVkIHVwbG9hZGVkX2ZpbGVzLgorCisgICAgICAgICogdG9vbHMvanMvcmVtb3RlLmpzOgor
ICAgICAgICAoTm9kZVJlbW90ZUFQSS5wcm90b3R5cGUuc2VuZEh0dHBSZXF1ZXN0KTogQWRkZWQg
YSBkaWN0aW9uYXJ5IHRvIHNwZWNpZnkgcmVxdWVzdCBoZWFkZXJzIGFuZAorICAgICAgICBhIGNh
bGxiYWNrIHRvIHByb2Nlc3MgdGhlIHJlc3BvbnNlIGFzIGFyZ3VtZW50cy4gRml4ZWQgdGhlIGJ1
ZyB0aGF0IGFueSAyeHggY29kZSBvdGhlciB0aGFuIDIwMAorICAgICAgICB3YXMgcmVzdWx0aW5n
IGluIGEgcmVqZWN0ZWQgcHJvbWlzZS4gQWxzbyBpbmNsdWRlIHRoZSByZXNwb25zZSBoZWFkZXJz
IGluIHRoZSByZXN1bHQgZm9yIHRlc3RzLgorICAgICAgICBGaW5hbGx5LCB3aGVuIGNvbnRlbnQg
aXMgYSBmdW5jdGlvbiwgY2FsbCB0aGF0IGluc3RlYWQgb2Ygd3JpdGluZyB0aGUgY29udGVudCBz
aW5jZSBGb3JtRGF0YQorICAgICAgICByZXF1aXJlcyBhIGN1c3RvbSBsb2dpYy4KKyAgICAgICAg
KE5vZGVSZW1vdGVBUEkucHJvdG90eXBlLnNlbmRIdHRwUmVxdWVzdFdpdGhGb3JtRGF0YSk6IEFk
ZGVkLgorCisgICAgICAgICogdG9vbHMvanMvdjMtbW9kZWxzLmpzOiBJbmNsdWRlIHVwbG9hZGVk
LWZpbGUuanMuCisKKyAgICAgICAgKiB0b29scy9ydW4tdGVzdHMucHk6CisgICAgICAgIChtYWlu
KTogQWRkIGZvcm0tZGF0YSBhcyBhIG5ldyBkZXBlbmRlbmN5LgorCiAyMDE3LTAzLTE1ICBEZXdl
aSBaaHUgIDxkZXdlaV96aHVAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB1bml0IHRlc3QgYW5k
IGJ1ZyBmaXggZm9yICdwdWxsLW9zLXZlcnNpb25zLmpzJyBzY3JpcHQuCkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvY29uZmlnLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL2NvbmZpZy5qc29uCShyZXZpc2lvbiAyMTQwMzQpCisrKyBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvY29uZmlnLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw5IEBA
CiAgICAgImRlYnVnIjogdHJ1ZSwKICAgICAianNvbkNhY2hlTWF4QWdlIjogNjAwLAogICAgICJk
YXRhRGlyZWN0b3J5IjogInB1YmxpYy9kYXRhLyIsCisgICAgInVwbG9hZERpcmVjdG9yeSI6ICJ1
cGxvYWRlZCIsCisgICAgInVwbG9hZEZpbGVMaW1pdEluTUIiOiA4MDAsCisgICAgInVwbG9hZFVz
ZXJRdW90YUluTUIiOiA4MTkyLAogICAgICJkYXRhYmFzZSI6IHsKICAgICAgICAgImhvc3QiOiAi
bG9jYWxob3N0IiwKICAgICAgICAgInBvcnQiOiAiNTQzMiIsCkluZGV4OiBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCShyZXZpc2lvbiAyMTQwMzQpCisrKyBXZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDYgKzI0LDcgQEAgRFJPUCBUWVBFIElGIEVYSVNUUyBhbmFseXNpc190YXNrX3Jlc3VsdAog
RFJPUCBUQUJMRSBJRiBFWElTVFMgYnVpbGRfdHJpZ2dlcmFibGVzIENBU0NBREU7CiBEUk9QIFRB
QkxFIElGIEVYSVNUUyB0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9ucyBDQVNDQURFOwogRFJPUCBU
QUJMRSBJRiBFWElTVFMgdHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVzIENBU0NBREU7CitEUk9QIFRB
QkxFIElGIEVYSVNUUyB1cGxvYWRlZF9maWxlcyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBFWElT
VFMgYnVncyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBFWElTVFMgYW5hbHlzaXNfdGVzdF9ncm91
cHMgQ0FTQ0FERTsKIERST1AgVEFCTEUgSUYgRVhJU1RTIGNvbW1pdF9zZXRzIENBU0NBREU7CkBA
IC0yNDEsNiArMjQyLDE5IEBAIENSRUFURSBUQUJMRSB0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9u
cyAKICAgICB0cmlnY29uZmlnX3RyaWdnZXJhYmxlIGludGVnZXIgUkVGRVJFTkNFUyBidWlsZF90
cmlnZ2VyYWJsZXMgTk9UIE5VTEwsCiAgICAgQ09OU1RSQUlOVCB0cmlnZ2VyYWJsZV9tdXN0X2Jl
X3VuaXF1ZV9mb3JfdGVzdF9hbmRfcGxhdGZvcm0gVU5JUVVFKHRyaWdjb25maWdfdGVzdCwgdHJp
Z2NvbmZpZ19wbGF0Zm9ybSkpOwogCitDUkVBVEUgVEFCTEUgdXBsb2FkZWRfZmlsZXMgKAorICAg
IGZpbGVfaWQgc2VyaWFsIFBSSU1BUlkgS0VZLAorICAgIGZpbGVfY3JlYXRlZF9hdCB0aW1lc3Rh
bXAgTk9UIE5VTEwgREVGQVVMVCAoQ1VSUkVOVF9USU1FU1RBTVAgQVQgVElNRSBaT05FICdVVEMn
KSwKKyAgICBmaWxlX2RlbGV0ZWRfYXQgdGltZXN0YW1wLAorICAgIGZpbGVfbWltZSB2YXJjaGFy
KDY0KSwKKyAgICBmaWxlX2ZpbGVuYW1lIHZhcmNoYXIoMTAyNCkgTk9UIE5VTEwsCisgICAgZmls
ZV9leHRlbnNpb24gdmFyY2hhcigxNiksCisgICAgZmlsZV9hdXRob3IgdmFyY2hhcigyNTYpLAor
ICAgIGZpbGVfc2l6ZSBiaWdpbnQgTk9UIE5VTEwsCisgICAgZmlsZV9zaGEyNTYgY2hhcig2NCkg
Tk9UIE5VTEwpOworQ1JFQVRFIElOREVYIGZpbGVfYXV0aG9yX2luZGV4IE9OIHVwbG9hZGVkX2Zp
bGVzKGZpbGVfYXV0aG9yKTsKK0NSRUFURSBVTklRVUUgSU5ERVggZmlsZV9zaGEyNTZfaW5kZXgg
T04gdXBsb2FkZWRfZmlsZXMoZmlsZV9zaGEyNTYpIFdIRVJFIGZpbGVfZGVsZXRlZF9hdCBpcyBO
VUxMOworCiBDUkVBVEUgVEFCTEUgYW5hbHlzaXNfdGVzdF9ncm91cHMgKAogICAgIHRlc3Rncm91
cF9pZCBzZXJpYWwgUFJJTUFSWSBLRVksCiAgICAgdGVzdGdyb3VwX3Rhc2sgaW50ZWdlciBSRUZF
UkVOQ0VTIGFuYWx5c2lzX3Rhc2tzIE5PVCBOVUxMLApJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9hcGkvdXBsb2FkZWQtZmlsZS5waHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdXBsb2FkZWQtZmlsZS5waHAJKG5vbmV4aXN0
ZW50KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdXBsb2FkZWQtZmls
ZS5waHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjIgQEAKKzw/cGhwCisKK3JlcXVpcmUo
Jy4uL2luY2x1ZGUvanNvbi1oZWFkZXIucGhwJyk7CityZXF1aXJlKCcuLi9pbmNsdWRlL3VwbG9h
ZGVkLWZpbGUtaGVscGVycy5waHAnKTsKKworZnVuY3Rpb24gbWFpbigkcGF0aCkKK3sKKyAgICBp
ZiAoY291bnQoJHBhdGgpID4gMSkKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUmVx
dWVzdCcpOworCisgICAgJGRiID0gY29ubmVjdCgpOworICAgIGlmIChjb3VudCgkcGF0aCkgJiYg
JHBhdGhbMF0pIHsKKyAgICAgICAgJGZpbGVfaWQgPSBpbnR2YWwoJHBhdGhbMF0pOworICAgICAg
ICAkZmlsZV9yb3cgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ3VwbG9hZGVkX2ZpbGVzJywgJ2Zp
bGUnLCBhcnJheSgnaWQnID0+ICRmaWxlX2lkKSk7CisgICAgICAgIGlmICghJGZpbGVfcm93KQor
ICAgICAgICAgICAgZXhpdF93aXRoXzQwNCgpOworICAgICAgICAkZmlsZV9wYXRoID0gdXBsb2Fk
ZWRfZmlsZV9wYXRoX2Zvcl9yb3coJGZpbGVfcm93KTsKKyAgICAgICAgcmV0dXJuIHN0cmVhbV9m
aWxlX2NvbnRlbnQoJGZpbGVfcGF0aCwgJGZpbGVfcm93WydmaWxlX3NoYTI1NiddLCAkZmlsZV9y
b3dbJ2ZpbGVfZmlsZW5hbWUnXSk7CisgICAgfQorCisgICAgJHNoYTI1NiA9IGFycmF5X2dldCgk
X0dFVCwgJ3NoYTI1NicpOworICAgIGlmICgkc2hhMjU2KSB7CisgICAgICAgICRmaWxlX3JvdyA9
ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygndXBsb2FkZWRfZmlsZXMnLCAnZmlsZScsIGFycmF5KCdz
aGEyNTYnID0+ICRzaGEyNTYsICdkZWxldGVkX2F0JyA9PiBudWxsKSk7CisgICAgICAgIGlmICgh
JGZpbGVfcm93KQorICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdOb3RGb3VuZCcpOworICAg
ICAgICBleGl0X3dpdGhfc3VjY2VzcyhhcnJheSgndXBsb2FkZWRGaWxlJyA9PiBmb3JtYXRfdXBs
b2FkZWRfZmlsZSgkZmlsZV9yb3cpKSk7CisgICAgfQorICAgIGV4aXRfd2l0aF9lcnJvcignSW52
YWxpZEFyZ3VtZW50cycpOworfQorCitkZWZpbmUoJ1NUUkVBTV9DSFVOS19TSVpFJywgNjQgKiAx
MDI0KTsKKworZnVuY3Rpb24gc3RyZWFtX2ZpbGVfY29udGVudCgkdXBsb2FkZWRfZmlsZSwgJGV0
YWcsICRkaXNwb3NpdGlvbl9uYW1lKQoreworICAgIGlmICghZmlsZV9leGlzdHMoJHVwbG9hZGVk
X2ZpbGUpKQorICAgICAgICBleGl0X3dpdGhfNDA0KCk7CisKKyAgICAkZmlsZV9zaXplID0gZmls
ZXNpemUoJHVwbG9hZGVkX2ZpbGUpOworICAgICRsYXN0X21vZGlmaWVkID0gZ21kYXRlKCdELCBk
IE0gWSBIOmk6cycsIGZpbGVtdGltZSgkdXBsb2FkZWRfZmlsZSkpIC4gJyBHTVQnOworICAgICRm
aWxlX2hhbmRsZSA9IGZvcGVuKCR1cGxvYWRlZF9maWxlLCAicmIiKTsKKyAgICBpZiAoISRmaWxl
X2hhbmRsZSkKKyAgICAgICAgZXhpdF93aXRoXzQwNCgpOworCisgICAgJGhlYWRlcnMgPSBnZXRh
bGxoZWFkZXJzKCk7CisKKyAgICAvLyBXZSBkb24ndCBzdXBwb3J0IG11bHRpLXBhcnQgcmFuZ2Ug
cmVxdWVzdC4gZS5nLiBieXRlcz0xLTMsNC01CisgICAgJHJhbmdlID0gcGFyc2VfcmFuZ2VfaGVh
ZGVyKGFycmF5X2dldCgkaGVhZGVycywgJ1JhbmdlJyksICRmaWxlX3NpemUpOworICAgIGlmICgk
cmFuZ2UgJiYgKCFhcnJheV9rZXlfZXhpc3RzKCdJZi1SYW5nZScsICRoZWFkZXJzKSB8fCAkaGVh
ZGVyc1snSWYtUmFuZ2UnXSA9PSAkbGFzdF9tb2RpZmllZCB8fCAkaGVhZGVyc1snSWYtUmFuZ2Un
XSA9PSAkZXRhZykpIHsKKyAgICAgICAgYXNzZXJ0KCRyYW5nZVsnc3RhcnQnXSA+PSAwKTsKKyAg
ICAgICAgaWYgKCRyYW5nZVsnc3RhcnQnXSA+ICRyYW5nZVsnZW5kJ10gfHwgJHJhbmdlWydlbmQn
XSA+PSAkZmlsZV9zaXplKSB7CisgICAgICAgICAgICBoZWFkZXIoJ0hUVFAvMS4xIDQxNiBSYW5n
ZSBOb3QgU2F0aXNmaWFibGUnKTsKKyAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC1SYW5nZTog
Ynl0ZXMgKi8kZmlsZV9zaXplIik7CisgICAgICAgICAgICBleGl0KDQxNik7CisgICAgICAgIH0K
KyAgICAgICAgJHN0YXJ0ID0gJHJhbmdlWydzdGFydCddOworICAgICAgICAkZW5kID0gJHJhbmdl
WydlbmQnXTsKKyAgICAgICAgJGNvbnRlbnRfbGVuZ3RoID0gJGVuZCAtICRzdGFydCArIDE7Cisg
ICAgICAgIGhlYWRlcignSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVudCcpOworICAgICAgICBo
ZWFkZXIoIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzICRzdGFydC0kZW5kLyRmaWxlX3NpemUiKTsKKyAg
ICAgICAgZnNlZWsoJGZpbGVfaGFuZGxlLCAkc3RhcnQpOworICAgIH0gZWxzZSB7CisgICAgICAg
ICRjb250ZW50X2xlbmd0aCA9ICRmaWxlX3NpemU7CisgICAgICAgIGhlYWRlcigiQWNjZXB0LVJh
bmdlczogYnl0ZXMiKTsKKyAgICAgICAgaGVhZGVyKCJFVGFnOiAkZXRhZyIpOworICAgIH0KKwor
ICAgICRvdXRwdXRfYnVmZmVyID0gZm9wZW4oJ3BocDovL291dHB1dCcsICd3YicpOworICAgICRl
bmNvZGVkX2ZpbGVuYW1lID0gdXJsZW5jb2RlKCRkaXNwb3NpdGlvbl9uYW1lKTsKKworICAgIGhl
YWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTsKKyAgICBoZWFk
ZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gJGNvbnRlbnRfbGVuZ3RoKTsKKyAgICBoZWFkZXIoIkNv
bnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lKj11dGYtOCcnJGVuY29kZWRf
ZmlsZW5hbWUiKTsKKyAgICBoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6ICRsYXN0X21vZGlmaWVkIik7
CisKKyAgICBzZXRfdGltZV9saW1pdCgwKTsKKyAgICB3aGlsZSAoIWZlb2YoJGZpbGVfaGFuZGxl
KSAmJiAkY29udGVudF9sZW5ndGgpIHsKKyAgICAgICAgJGlzX2VuZCA9ICRjb250ZW50X2xlbmd0
aCA8IFNUUkVBTV9DSFVOS19TSVpFOworICAgICAgICAkY2h1bmtfc2l6ZSA9ICRpc19lbmQgPyAk
Y29udGVudF9sZW5ndGggOiBTVFJFQU1fQ0hVTktfU0laRTsKKyAgICAgICAgJGNodW5rID0gZnJl
YWQoJGZpbGVfaGFuZGxlLCAkY2h1bmtfc2l6ZSk7CisgICAgICAgICRjb250ZW50X2xlbmd0aCAt
PSAkY2h1bmtfc2l6ZTsKKyAgICAgICAgZndyaXRlKCRvdXRwdXRfYnVmZmVyLCAkY2h1bmssICRj
aHVua19zaXplKTsKKyAgICAgICAgZmx1c2goKTsKKyAgICB9CisKKyAgICBleGl0KDApOworfQor
CitmdW5jdGlvbiBwYXJzZV9yYW5nZV9oZWFkZXIoJHJhbmdlX2hlYWRlciwgJGZpbGVfc2l6ZSkK
K3sKKyAgICAvLyBXZSBkb24ndCBzdXBwb3J0IG11bHRpLXBhcnQgcmFuZ2UgcmVxdWVzdC4gZS5n
LiBieXRlcz0xLTMsNC01CisgICAgJG1hdGNoZXMgPSBhcnJheSgpOworICAgICRlbmRfYnl0ZSA9
ICRmaWxlX3NpemU7CisgICAgaWYgKCEkcmFuZ2VfaGVhZGVyIHx8ICFwcmVnX21hdGNoKCcvXlxz
KmJ5dGVzXHMqPVxzKigoXGQrKS0oXGQqKXwtKFxkKykpXHMqJC8nLCAkcmFuZ2VfaGVhZGVyLCAk
bWF0Y2hlcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgJGVuZF9ieXRlID0gJGZpbGVf
c2l6ZSAtIDE7CisgICAgaWYgKCRtYXRjaGVzWzJdKSB7CisgICAgICAgICRzdGFydF9ieXRlID0g
aW50dmFsKCRtYXRjaGVzWzJdKTsKKyAgICAgICAgaWYgKCRtYXRjaGVzWzNdKQorICAgICAgICAg
ICAgJGVuZF9ieXRlID0gaW50dmFsKCRtYXRjaGVzWzNdKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgJGVuZF9ieXRlID0gJGZpbGVfc2l6ZSAtIDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
JHN1ZmZpeF9sZW5ndGggPSBpbnR2YWwoJG1hdGNoZXNbNF0pOworICAgICAgICBpZiAoJGZpbGVf
c2l6ZSA8ICRzdWZmaXhfbGVuZ3RoKQorICAgICAgICAgICAgJHN0YXJ0X2J5dGUgPSAwOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICAkc3RhcnRfYnl0ZSA9ICRmaWxlX3NpemUgLSAkc3VmZml4
X2xlbmd0aDsKKyAgICB9CisKKyAgICByZXR1cm4gYXJyYXkoJ3N0YXJ0JyA9PiAkc3RhcnRfYnl0
ZSwgJ2VuZCcgPT4gJGVuZF9ieXRlKTsKK30KKworZnVuY3Rpb24gZXhpdF93aXRoXzQwNCgpCit7
CisgICAgaGVhZGVyKCRfU0VSVkVSWydTRVJWRVJfUFJPVE9DT0wnXSAuICcgNDA0IE5vdCBGb3Vu
ZCcpOworICAgIGV4aXRfd2l0aF9lcnJvcignTm90Rm91bmQnKTsKK30KKworbWFpbihhcnJheV9r
ZXlfZXhpc3RzKCdQQVRIX0lORk8nLCAkX1NFUlZFUikgPyBleHBsb2RlKCcvJywgdHJpbSgkX1NF
UlZFUlsnUEFUSF9JTkZPJ10sICcvJykpIDogYXJyYXkoKSk7CisKKz8+CkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvanNvbi1oZWFkZXIucGhwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9qc29uLWhlYWRl
ci5waHAJKHJldmlzaW9uIDIxNDAzNCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvaW5jbHVkZS9qc29uLWhlYWRlci5waHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBA
CiA8P3BocAogCiByZXF1aXJlX29uY2UoJ2RiLnBocCcpOworCiByZXF1aXJlX29uY2UoJ3Rlc3Qt
cGF0aC1yZXNvbHZlci5waHAnKTsKIAogaGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9u
L2pzb24nKTsKQEAgLTExNiw4ICsxMTcsOCBAQCBmdW5jdGlvbiBlbnN1cmVfcHJpdmlsZWdlZF9h
cGlfZGF0YV9hbmRfCiAgICAgcmV0dXJuICRkYXRhOwogfQogCi1mdW5jdGlvbiByZW1vdGVfdXNl
cl9uYW1lKCRkYXRhKSB7Ci0gICAgcmV0dXJuIHNob3VsZF9hdXRoZW50aWNhdGVfYXNfc2xhdmUo
JGRhdGEpID8gTlVMTCA6IGFycmF5X2dldCgkX1NFUlZFUiwgJ1JFTU9URV9VU0VSJyk7CitmdW5j
dGlvbiByZW1vdGVfdXNlcl9uYW1lKCRkYXRhID0gTlVMTCkgeworICAgIHJldHVybiAkZGF0YSAm
JiBzaG91bGRfYXV0aGVudGljYXRlX2FzX3NsYXZlKCRkYXRhKSA/IE5VTEwgOiBhcnJheV9nZXQo
JF9TRVJWRVIsICdSRU1PVEVfVVNFUicpOwogfQogCiBmdW5jdGlvbiBzaG91bGRfYXV0aGVudGlj
YXRlX2FzX3NsYXZlKCRkYXRhKSB7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL2luY2x1ZGUvbWFuaWZlc3QtZ2VuZXJhdG9yLnBocAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvbWFuaWZlc3QtZ2VuZXJhdG9yLnBocAko
cmV2aXNpb24gMjE0MDM0KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNs
dWRlL21hbmlmZXN0LWdlbmVyYXRvci5waHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcg
QEAgY2xhc3MgTWFuaWZlc3RHZW5lcmF0b3IgewogICAgICAgICAgICAgJ3RyaWdnZXJhYmxlcyc9
PiAob2JqZWN0KSR0aGlzLT50cmlnZ2VyYWJsZXMoKSwKICAgICAgICAgICAgICdkYXNoYm9hcmRz
JyA9PiAob2JqZWN0KWNvbmZpZygnZGFzaGJvYXJkcycpLAogICAgICAgICAgICAgJ3N1bW1hcnlQ
YWdlcycgPT4gY29uZmlnKCdzdW1tYXJ5UGFnZXMnKSwKKyAgICAgICAgICAgICdmaWxlVXBsb2Fk
U2l6ZUxpbWl0JyA9PiBjb25maWcoJ3VwbG9hZEZpbGVMaW1pdEluTUInLCAwKSAqIDEwMjQgKiAx
MDI0LAogICAgICAgICApOwogCiAgICAgICAgICR0aGlzLT5tYW5pZmVzdFsnZWxhcHNlZFRpbWUn
XSA9IChtaWNyb3RpbWUodHJ1ZSkgLSAkc3RhcnRfdGltZSkgKiAxMDAwOwpJbmRleDogV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL3VwbG9hZGVkLWZpbGUtaGVscGVycy5w
aHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRl
L3VwbG9hZGVkLWZpbGUtaGVscGVycy5waHAJKG5vbmV4aXN0ZW50KQorKysgV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL3VwbG9hZGVkLWZpbGUtaGVscGVycy5waHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyMCBAQAorPD9waHAKKworZnVuY3Rpb24gZm9ybWF0X3Vw
bG9hZGVkX2ZpbGUoJGZpbGVfcm93KQoreworICAgIHJldHVybiBhcnJheSgKKyAgICAgICAgJ2lk
JyA9PiAkZmlsZV9yb3dbJ2ZpbGVfaWQnXSwKKyAgICAgICAgJ3NpemUnID0+ICRmaWxlX3Jvd1sn
ZmlsZV9zaXplJ10sCisgICAgICAgICdjcmVhdGVkQXQnID0+ICRmaWxlX3Jvd1snZmlsZV9jcmVh
dGVkX2F0J10sCisgICAgICAgICdtaW1lJyA9PiAkZmlsZV9yb3dbJ2ZpbGVfbWltZSddLAorICAg
ICAgICAnZmlsZW5hbWUnID0+ICRmaWxlX3Jvd1snZmlsZV9maWxlbmFtZSddLAorICAgICAgICAn
YXV0aG9yJyA9PiAkZmlsZV9yb3dbJ2ZpbGVfYXV0aG9yJ10sCisgICAgICAgICdzaGEyNTYnID0+
ICRmaWxlX3Jvd1snZmlsZV9zaGEyNTYnXSk7Cit9CisKK2Z1bmN0aW9uIHVwbG9hZGVkX2ZpbGVf
cGF0aF9mb3Jfcm93KCRmaWxlX3JvdykKK3sKKyAgICByZXR1cm4gY29uZmlnX3BhdGgoJ3VwbG9h
ZERpcmVjdG9yeScsICRmaWxlX3Jvd1snZmlsZV9pZCddIC4gJGZpbGVfcm93WydmaWxlX2V4dGVu
c2lvbiddKTsKK30KKworPz4KSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
cHJpdmlsZWdlZC1hcGkvdXBsb2FkLWZpbGUtZm9ybS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvdXBsb2FkLWZpbGUtZm9y
bS5odG1sCShub25leGlzdGVudCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
cHJpdmlsZWdlZC1hcGkvdXBsb2FkLWZpbGUtZm9ybS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQ+CisK
K2Z1bmN0aW9uIGZldGNoQ1NSRmZUb2tlbihmaWxlSW5wdXQsIHByb2dyZXNzRWxlbWVudCkgewor
ICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNv
bnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICB4aHIub3BlbignUE9TVCcs
ICdnZW5lcmF0ZS1jc3JmLXRva2VuJywgdHJ1ZSk7CisgICAgICAgIHhoci5vbmxvYWQgPSAoKSA9
PiB7CisgICAgICAgICAgICBsZXQgY29udGVudDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICAgICAgY29udGVudCA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAg
ICAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJy
b3IgKyAnOicgKyB4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChjb250ZW50WydzdGF0dXMnXSAhPSAnT0snKQorICAgICAgICAgICAgICAgIHJlamVjdChj
b250ZW50WydzdGF0dXMnXSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVz
b2x2ZShjb250ZW50Wyd0b2tlbiddKTsKKyAgICAgICAgfQorICAgICAgICB4aHIub25lcnJvciA9
IHJlamVjdDsKKyAgICAgICAgeGhyLnNlbmQoJ3t9Jyk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9u
IHVwbG9hZChmaWxlSW5wdXQsIHByb2dyZXNzRWxlbWVudCkgeworICAgIGZldGNoQ1NSRmZUb2tl
bigpLnRoZW4oKHRva2VuKSA9PiB7CisgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOworICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpOworICAgICAg
ICBmb3JtRGF0YS5hcHBlbmQoJ3Rva2VuJywgdG9rZW4pOworICAgICAgICBmb3JtRGF0YS5hcHBl
bmQoJ25ld0ZpbGUnLCBmaWxlSW5wdXQuZmlsZXNbMF0pOworCisgICAgICAgIHhoci5vcGVuKCdQ
T1NUJywgJ3VwbG9hZC1maWxlJywgdHJ1ZSk7CisgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICBhbGVydCh4aHIucmVzcG9uc2UpOworICAgICAgICB9CisgICAg
ICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYWxlcnQoJ2Vycm9y
OiAnICsgeGhyLnJlc3BvbnNlKTsKKyAgICAgICAgfQorICAgICAgICB4aHIudXBsb2FkLm9ucHJv
Z3Jlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC5sZW5ndGhD
b21wdXRhYmxlKSB7CisgICAgICAgICAgICAgICAgcHJvZ3Jlc3NFbGVtZW50Lm1heCA9IGV2ZW50
LnRvdGFsOworICAgICAgICAgICAgICAgIHByb2dyZXNzRWxlbWVudC52YWx1ZSA9IGV2ZW50Lmxv
YWRlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB4aHIuc2VuZChmb3JtRGF0
YSk7CisgICAgfSwgKGVycm9yKSA9PiB7CisgICAgICAgIGFsZXJ0KGBGYWlsZWQgdG8gZmV0Y2gg
dGhlIENTUkYgdG9rZW46ICR7ZXJyb3J9YCk7CisgICAgfSk7Cit9CisKKzwvc2NyaXB0PgorPHA+
VXBsb2FkIGEgbmV3IGN1c3RvbSByb290LiA8Yj5UaGlzIGlzIGZvciBkZWJ1Z2luZyBwdXJwb3Nl
IG9ubHkuIFRoZSB1cGxvYWRlZCBmaWxlIHdpbGwgYmUgZGVsZXRlZC48L2I+PC9wPgorPGlucHV0
IGlkPWZpbGUgdHlwZT0iZmlsZSI+Cis8YnV0dG9uIG9uY2xpY2s9InVwbG9hZChmaWxlLCBwKSI+
VXBsb2FkPC9idXR0b24+Cis8cHJvZ3Jlc3MgaWQ9cD48L3Byb2dyZXNzPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFw
aS91cGxvYWQtZmlsZS5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGxvYWQtZmlsZS5waHAJKG5vbmV4aXN0ZW50KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGxvYWQtZmls
ZS5waHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OSBAQAorPD9waHAKKworaW5pX3NldCgn
dXBsb2FkX21heF9maWxlc2l6ZScsICcxMDI1TScpOworaW5pX3NldCgncG9zdF9tYXhfc2l6ZScs
ICcxMDI1TScpOworcmVxdWlyZV9vbmNlKCcuLi9pbmNsdWRlL2pzb24taGVhZGVyLnBocCcpOwor
cmVxdWlyZV9vbmNlKCcuLi9pbmNsdWRlL3VwbG9hZGVkLWZpbGUtaGVscGVycy5waHAnKTsKKwor
ZGVmaW5lKCdNRUdBQllURVMnLCAxMDI0ICogMTAyNCk7CisKK2Z1bmN0aW9uIG1haW4oKQorewor
ICAgIGlmIChhcnJheV9nZXQoJF9TRVJWRVIsICdDT05URU5UX0xFTkdUSCcpICYmIGVtcHR5KCRf
UE9TVCkgJiYgZW1wdHkoJF9GSUxFUykpCisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmlsZVNp
emVMaW1pdEV4Y2VlZGVkMicpOworCisgICAgaWYgKCF2ZXJpZnlfdG9rZW4oYXJyYXlfZ2V0KCRf
UE9TVCwgJ3Rva2VuJykpKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRUb2tlbicp
OworCisgICAgaWYgKCFpc19kaXIoY29uZmlnX3BhdGgoJ3VwbG9hZERpcmVjdG9yeScsICcnKSkp
CisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTm90U3VwcG9ydGVkJyk7CisKKyAgICAkaW5wdXRf
ZmlsZSA9IGFycmF5X2dldCgkX0ZJTEVTLCAnbmV3RmlsZScpOworICAgIGlmICghJGlucHV0X2Zp
bGUpCisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTm9GaWxlU3BlY2lmaWVkJyk7CisKKyAgICBp
ZiAoJGlucHV0X2ZpbGVbJ2Vycm9yJ10gIT0gVVBMT0FEX0VSUl9PSykKKyAgICAgICAgZXhpdF93
aXRoX2Vycm9yKCdGYWlsZWRUb1VwbG9hZEZpbGUnLCBhcnJheSgnbmFtZScgPT4gJGlucHV0X2Zp
bGVbJ25hbWUnXSwgJ2Vycm9yJyA9PiAkaW5wdXRfZmlsZVsnZXJyb3InXSkpOworCisgICAgaWYg
KGNvbmZpZygndXBsb2FkRmlsZUxpbWl0SW5NQicpICogTUVHQUJZVEVTIDwgJGlucHV0X2ZpbGVb
J3NpemUnXSkKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdGaWxlU2l6ZUxpbWl0RXhjZWVkZWQn
KTsKKworICAgICR1cGxvYWRlZF9maWxlID0gY3JlYXRlX3VwbG9hZGVkX2ZpbGVfZnJvbV9mb3Jt
X2RhdGEoJGlucHV0X2ZpbGUpOworCisgICAgJGN1cnJlbnRfdXNlciA9IHJlbW90ZV91c2VyX25h
bWUoKTsKKyAgICAkZGIgPSBjb25uZWN0KCk7CisKKyAgICAvLyBGSVhNRTogQ2xlYW51cCBvbGQg
ZmlsZXMuCisKKyAgICBpZiAoY29uZmlnKCd1cGxvYWRVc2VyUXVvdGFJbk1CJykgKiBNRUdBQllU
RVMgLSBxdWVyeV90b3RhbF9maWxlX3NpemUoJGRiLCAkY3VycmVudF91c2VyKSA8ICRpbnB1dF9m
aWxlWydzaXplJ10pCisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmlsZVNpemVRdW90YUV4Y2Vl
ZGVkJyk7CisKKyAgICAkZGItPmJlZ2luX3RyYW5zYWN0aW9uKCk7CisgICAgJGZpbGVfcm93ID0g
JGRiLT5zZWxlY3Rfb3JfaW5zZXJ0X3JvdygndXBsb2FkZWRfZmlsZXMnLCAnZmlsZScsCisgICAg
ICAgIGFycmF5KCdzaGEyNTYnID0+ICR1cGxvYWRlZF9maWxlWydzaGEyNTYnXSwgJ2RlbGV0ZWRf
YXQnID0+IG51bGwpLCAkdXBsb2FkZWRfZmlsZSwgJyonKTsKKyAgICBpZiAoISRmaWxlX3JvdykK
KyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0luc2VydEZpbGVEYXRhJyk7CisKKyAg
ICAvLyBBIGNvbmN1cnJlbnQgc2Vzc2lvbiBtYXkgaGF2ZSBpbnNlcnRlZCBhbm90aGVyIGZpbGUu
CisgICAgaWYgKGNvbmZpZygndXBsb2FkVXNlclF1b3RhSW5NQicpICogTUVHQUJZVEVTIDwgcXVl
cnlfdG90YWxfZmlsZV9zaXplKCRkYiwgJGN1cnJlbnRfdXNlcikpIHsKKyAgICAgICAgJGRiLT5y
b2xsYmFja190cmFuc2FjdGlvbigpOworICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZpbGVTaXpl
UXVvdGFFeGNlZWRlZCcpOworICAgIH0KKworICAgICRuZXdfcGF0aCA9IHVwbG9hZGVkX2ZpbGVf
cGF0aF9mb3Jfcm93KCRmaWxlX3Jvdyk7CisgICAgaWYgKCFtb3ZlX3VwbG9hZGVkX2ZpbGUoJGlu
cHV0X2ZpbGVbJ3RtcF9uYW1lJ10sICRuZXdfcGF0aCkpIHsKKyAgICAgICAgJGRiLT5yb2xsYmFj
a190cmFuc2FjdGlvbigpOworICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvTW92ZVVw
bG9hZGVkRmlsZScpOworICAgIH0KKyAgICAkZGItPmNvbW1pdF90cmFuc2FjdGlvbigpOworCisg
ICAgZXhpdF93aXRoX3N1Y2Nlc3MoYXJyYXkoJ3VwbG9hZGVkRmlsZScgPT4gZm9ybWF0X3VwbG9h
ZGVkX2ZpbGUoJGZpbGVfcm93KSkpOworfQorCitmdW5jdGlvbiBxdWVyeV90b3RhbF9maWxlX3Np
emUoJGRiLCAkdXNlcikKK3sKKyAgICBpZiAoJHVzZXIpCisgICAgICAgICRjb3VudF9yZXN1bHQg
PSAkZGItPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoJ1NFTEVDVCBzdW0oZmlsZV9zaXplKSBhcyAic3Vt
IiBGUk9NIHVwbG9hZGVkX2ZpbGVzIFdIRVJFIGZpbGVfZGVsZXRlZF9hdCBJUyBOVUxMIEFORCBm
aWxlX2F1dGhvciA9ICQxJywgYXJyYXkoJHVzZXIpKTsKKyAgICBlbHNlCisgICAgICAgICRjb3Vu
dF9yZXN1bHQgPSAkZGItPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoJ1NFTEVDVCBzdW0oZmlsZV9zaXpl
KSBhcyAic3VtIiBGUk9NIHVwbG9hZGVkX2ZpbGVzIFdIRVJFIGZpbGVfZGVsZXRlZF9hdCBJUyBO
VUxMIEFORCBmaWxlX2F1dGhvciBJUyBOVUxMJyk7CisgICAgaWYgKCEkY291bnRfcmVzdWx0KQor
ICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgcmV0dXJuIGludHZhbCgkY291bnRfcmVzdWx0WzBd
WyJzdW0iXSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZV91cGxvYWRlZF9maWxlX2Zyb21fZm9ybV9k
YXRhKCRpbnB1dF9maWxlKQoreworICAgICRmaWxlX3NoYTI1NiA9IGhhc2hfZmlsZSgnc2hhMjU2
JywgJGlucHV0X2ZpbGVbJ3RtcF9uYW1lJ10pOworICAgIGlmICghJGZpbGVfc2hhMjU2KQorICAg
ICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvQ29tcHV0ZVNIQTI1NicpOworCisgICAgJG1h
dGNoZXMgPSBhcnJheSgpOworICAgICRmaWxlX2V4dGVuc2lvbiA9IG51bGw7CisgICAgaWYgKHBy
ZWdfbWF0Y2goJy8oXC5bYS16QS1aMC05XXsxLDV9KXsxLDJ9JC8nLCAkaW5wdXRfZmlsZVsnbmFt
ZSddLCAkbWF0Y2hlcykpIHsKKyAgICAgICAgJGZpbGVfZXh0ZW5zaW9uID0gJG1hdGNoZXNbMF07
CisgICAgICAgIGFzc2VydChzdHJsZW4oJGZpbGVfZXh0ZW5zaW9uKSA8PSAxNik7CisgICAgfQor
CisgICAgcmV0dXJuIGFycmF5KAorICAgICAgICAnYXV0aG9yJyA9PiByZW1vdGVfdXNlcl9uYW1l
KCksCisgICAgICAgICdmaWxlbmFtZScgPT4gJGlucHV0X2ZpbGVbJ25hbWUnXSwKKyAgICAgICAg
J2V4dGVuc2lvbicgPT4gJGZpbGVfZXh0ZW5zaW9uLAorICAgICAgICAnbWltZScgPT4gJGlucHV0
X2ZpbGVbJ3R5cGUnXSwgLy8gU2FuaXRpemUgTUlNRSB0eXBlcy4KKyAgICAgICAgJ3NpemUnID0+
ICRpbnB1dF9maWxlWydzaXplJ10sCisgICAgICAgICdzaGEyNTYnID0+ICRmaWxlX3NoYTI1Ngor
ICAgICk7Cit9CisKK21haW4oKTsKKworPz4KSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvc2hhcmVkL2NvbW1vbi1yZW1vdGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvY29tbW9uLXJlbW90ZS5qcwkocmV2aXNpb24g
MjE0MDM0KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvY29tbW9u
LXJlbW90ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsMTkgQEAgY2xhc3MgQ29tbW9u
UmVtb3RlQVBJIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrU3RhdHVzKHRoaXMucG9zdEpT
T04ocGF0aCwgZGF0YSkpOwogICAgIH0KIAorICAgIHBvc3RGb3JtRGF0YShwYXRoLCBkYXRhKQor
ICAgIHsKKyAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTsKKyAgICAgICAg
Zm9yIChsZXQga2V5IGluIGRhdGEpCisgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCBk
YXRhW2tleV0pOworICAgICAgICByZXR1cm4gdGhpcy5fYXNKU09OKHRoaXMuc2VuZEh0dHBSZXF1
ZXN0V2l0aEZvcm1EYXRhKHBhdGgsIGZvcm1EYXRhKSk7CisgICAgfQorCisgICAgcG9zdEZvcm1E
YXRhV2l0aFN0YXR1cyhwYXRoLCBkYXRhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2No
ZWNrU3RhdHVzKHRoaXMucG9zdEZvcm1EYXRhKHBhdGgsIGRhdGEpKTsKKyAgICB9CisKICAgICBn
ZXRKU09OKHBhdGgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYXNKU09OKHRoaXMuc2Vu
ZEh0dHBSZXF1ZXN0KHBhdGgsICdHRVQnLCBudWxsLCBudWxsKSk7CkBAIC0yNiw2ICszOSwxMSBA
QCBjbGFzcyBDb21tb25SZW1vdGVBUEkgewogICAgICAgICB0aHJvdyAnTm90SW1wbGVtZW50ZWQn
OwogICAgIH0KIAorICAgIHNlbmRIdHRwUmVxdWVzdFdpdGhGb3JtRGF0YShwYXRoLCBmb3JtRGF0
YSkKKyAgICB7CisgICAgICAgIHRocm93ICdOb3RJbXBsZW1lbnRlZCc7CisgICAgfQorCiAgICAg
X2FzSlNPTihwcm9taXNlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHByb21pc2UudGhlbigocmVz
dWx0KSA9PiB7CkBAIC0zMyw3ICs1MSw3IEBAIGNsYXNzIENvbW1vblJlbW90ZUFQSSB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVzdWx0LnJlc3BvbnNlVGV4dCk7CiAgICAg
ICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
cmVzdWx0LnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5zdGF0
dXNDb2RlICsgJywgJyArIGVycm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBge3Jlc3VsdC5z
dGF0dXNDb2RlfTogJHtlcnJvcn1gOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9
CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3ByaXZpbGVnZWQtYXBp
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcHJp
dmlsZWdlZC1hcGkuanMJKHJldmlzaW9uIDIxNDAzNCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvcHJpdmlsZWdlZC1hcGkuanMJKHdvcmtpbmcgY29weSkKQEAgLTIsMTQg
KzIsMTYgQEAKIAogY2xhc3MgUHJpdmlsZWdlZEFQSSB7CiAKLSAgICBzdGF0aWMgc2VuZFJlcXVl
c3QocGF0aCwgZGF0YSkKKyAgICBzdGF0aWMgc2VuZFJlcXVlc3QocGF0aCwgZGF0YSwgb3B0aW9u
cyA9IHt1c2VGb3JtRGF0YTogZmFsc2V9KQogICAgIHsKICAgICAgICAgY29uc3QgY2xvbmVkRGF0
YSA9IHt9OwogICAgICAgICBmb3IgKGxldCBrZXkgaW4gZGF0YSkKICAgICAgICAgICAgIGNsb25l
ZERhdGFba2V5XSA9IGRhdGFba2V5XTsKIAogICAgICAgICBjb25zdCBmdWxsUGF0aCA9ICcvcHJp
dmlsZWdlZC1hcGkvJyArIHBhdGg7Ci0gICAgICAgIGNvbnN0IHBvc3QgPSAoKSA9PiBSZW1vdGVB
UEkucG9zdEpTT05XaXRoU3RhdHVzKGZ1bGxQYXRoLCBjbG9uZWREYXRhKTsKKyAgICAgICAgY29u
c3QgcG9zdCA9IG9wdGlvbnMudXNlRm9ybURhdGEKKyAgICAgICAgICAgID8gKCkgPT4gUmVtb3Rl
QVBJLnBvc3RGb3JtRGF0YVdpdGhTdGF0dXMoZnVsbFBhdGgsIGNsb25lZERhdGEpCisgICAgICAg
ICAgICA6ICgpID0+IFJlbW90ZUFQSS5wb3N0SlNPTldpdGhTdGF0dXMoZnVsbFBhdGgsIGNsb25l
ZERhdGEpOwogCiAgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RDU1JGVG9rZW4oKS50aGVuKCh0
b2tlbikgPT4gewogICAgICAgICAgICAgY2xvbmVkRGF0YVsndG9rZW4nXSA9IHRva2VuOwpJbmRl
eDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9yZW1vdGUuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9yZW1vdGUuanMJKHJldmlz
aW9uIDIxNDAzNCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcmVtb3Rl
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMSBAQCBjbGFzcyBCcm93c2VyUmVtb3Rl
QVBJIGV4dGVuZHMgQ29tbW9uUmVtCiAgICAgICAgIH0pOwogICAgIH0KIAorICAgIHNlbmRIdHRw
UmVxdWVzdFdpdGhGb3JtRGF0YShwYXRoLCBmb3JtRGF0YSkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLnNlbmRIdHRwUmVxdWVzdChwYXRoLCAnUE9TVCcsIG51bGwsIGZvcm1EYXRhKTsgLy8g
Q29udGVudC10eXBlIGlzIHNldCBieSB0aGUgYnJvd3Nlci4KKyAgICB9CisKIH0KIAogY29uc3Qg
UmVtb3RlQVBJID0gbmV3IEJyb3dzZXJSZW1vdGVBUEk7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL21vZGVscy91cGxvYWRlZC1maWxlLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3VwbG9hZGVkLWZpbGUu
anMJKG5vbmV4aXN0ZW50KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9t
b2RlbHMvdXBsb2FkZWQtZmlsZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisK
K2NsYXNzIFVwbG9hZGVkRmlsZSBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CisKKyAgICBjb25z
dHJ1Y3RvcihpZCwgb2JqZWN0KQorICAgIHsKKyAgICAgICAgc3VwZXIoaWQsIG9iamVjdCk7Cisg
ICAgICAgIHRoaXMuX2NyZWF0ZWRBdCA9IG5ldyBEYXRlKG9iamVjdC5jcmVhdGVkQXQpOworICAg
ICAgICB0aGlzLl9maWxlbmFtZSA9IG9iamVjdC5maWxlbmFtZTsKKyAgICAgICAgdGhpcy5fYXV0
aG9yID0gb2JqZWN0LmF1dGhvcjsKKyAgICAgICAgdGhpcy5fc2l6ZSA9IG9iamVjdC5zaXplOwor
ICAgICAgICB0aGlzLl9zaGEyNTYgPSBvYmplY3Quc2hhMjU2OworICAgICAgICB0aGlzLmVuc3Vy
ZU5hbWVkU3RhdGljTWFwKCdzaGEyNTYnKVtvYmplY3Quc2hhMjU2XSA9IHRoaXM7CisgICAgfQor
CisgICAgc3RhdGljIHVwbG9hZEZpbGUoZmlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQcml2
aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGxvYWQtZmlsZScsIHsnbmV3RmlsZSc6IGZpbGV9LCB7
dXNlRm9ybURhdGE6IHRydWV9KS50aGVuKChyYXdEYXRhKSA9PiB7CisgICAgICAgICAgICByZXR1
cm4gVXBsb2FkZWRGaWxlLmVuc3VyZVNpbmdsZXRvbihyYXdEYXRhWyd1cGxvYWRlZEZpbGUnXS5p
ZCwgcmF3RGF0YVsndXBsb2FkZWRGaWxlJ10pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBz
dGF0aWMgZmV0Y2hVbmxvYWRlZEZpbGVXaXRoSWRlbnRpY2FsSGFzaChmaWxlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAg
ICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgICAgICAgICByZWFkZXIu
b25sb2FkID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0KTsKKyAgICAgICAgICAgIHJlYWRl
ci5vbmVycm9yID0gKCkgPT4gcmVqZWN0KCk7CisgICAgICAgICAgICByZWFkZXIucmVhZEFzQXJy
YXlCdWZmZXIoZmlsZSk7CisgICAgICAgIH0pLnRoZW4oKGNvbnRlbnQpID0+IHsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9jb21wdXRlU0hBMjU2SGFzaChjb250ZW50KTsKKyAgICAgICAgfSku
dGhlbigoc2hhMjU2KSA9PiB7CisgICAgICAgICAgICBjb25zdCBtYXAgPSB0aGlzLm5hbWVkU3Rh
dGljTWFwKCdzaGEyNTYnKTsKKyAgICAgICAgICAgIGlmIChtYXAgJiYgc2hhMjU2IGluIG1hcCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFwW3NoYTI1Nl07CisgICAgICAgICAgICByZXR1cm4g
UmVtb3RlQVBJLmdldEpTT05XaXRoU3RhdHVzKGAuLi9hcGkvdXBsb2FkZWQtZmlsZT9zaGEyNTY9
JHtzaGEyNTZ9YCkudGhlbigocmF3RGF0YSkgPT4geworICAgICAgICAgICAgICAgIGlmICghcmF3
RGF0YVsndXBsb2FkZWRGaWxlJ10pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwor
ICAgICAgICAgICAgICAgIHJldHVybiBVcGxvYWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKHJhd0Rh
dGFbJ3VwbG9hZGVkRmlsZSddLmlkLCByYXdEYXRhWyd1cGxvYWRlZEZpbGUnXSk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc3RhdGljIF9jb21wdXRlU0hBMjU2
SGFzaChjb250ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0
KCdTSEEtMjU2JywgY29udGVudCkudGhlbigoZGlnZXN0KSA9PiB7CisgICAgICAgICAgICByZXR1
cm4gQXJyYXkuZnJvbShuZXcgVWludDhBcnJheShkaWdlc3QpKS5tYXAoKGJ5dGUpID0+IHsKKyAg
ICAgICAgICAgICAgICBpZiAoYnl0ZSA8IDB4MTApCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAnMCcgKyBieXRlLnRvU3RyaW5nKDE2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnl0ZS50
b1N0cmluZygxNik7CisgICAgICAgICAgICB9KS5qb2luKCcnKTsKKyAgICAgICAgfSk7CisgICAg
fQorCit9CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1t
YW5pZmVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL2FwaS1tYW5pZmVzdC5qcwkocmV2aXNpb24gMjE0MDM0KQorKysgV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktbWFuaWZlc3QuanMJKHdvcmtpbmcgY29weSkK
QEAgLTE0LDcgKzE0LDcgQEAgZGVzY3JpYmUoJy9hcGkvbWFuaWZlc3QnLCBmdW5jdGlvbiAoKSB7
CiAgICAgaXQoInNob3VsZCBnZW5lcmF0ZSBhbiBlbXB0eSBtYW5pZmVzdCB3aGVuIGRhdGFiYXNl
IGlzIGVtcHR5IiwgKCkgPT4gewogICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5nZXRKU09OKCcvYXBpL21hbmlmZXN0JykudGhlbigobWFuaWZlc3QpID0+IHsKICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMobWFuaWZlc3QpLnNvcnQoKSwgWydhbGwn
LCAnYnVnVHJhY2tlcnMnLCAnYnVpbGRlcnMnLCAnZGFzaGJvYXJkJywgJ2Rhc2hib2FyZHMnLAot
ICAgICAgICAgICAgICAgICdlbGFwc2VkVGltZScsICdtZXRyaWNzJywgJ3JlcG9zaXRvcmllcycs
ICdzaXRlVGl0bGUnLCAnc3RhdHVzJywgJ3N1bW1hcnlQYWdlcycsICd0ZXN0cycsICd0cmlnZ2Vy
YWJsZXMnXSk7CisgICAgICAgICAgICAgICAgJ2VsYXBzZWRUaW1lJywgJ2ZpbGVVcGxvYWRTaXpl
TGltaXQnLCAnbWV0cmljcycsICdyZXBvc2l0b3JpZXMnLCAnc2l0ZVRpdGxlJywgJ3N0YXR1cycs
ICdzdW1tYXJ5UGFnZXMnLCAndGVzdHMnLCAndHJpZ2dlcmFibGVzJ10pOwogCiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwodHlwZW9mKG1hbmlmZXN0LmVsYXBzZWRUaW1lKSwgJ251bWJlcicpOwog
ICAgICAgICAgICAgZGVsZXRlIG1hbmlmZXN0LmVsYXBzZWRUaW1lOwpAQCAtMjYsNiArMjYsNyBA
QCBkZXNjcmliZSgnL2FwaS9tYW5pZmVzdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAg
ICBidWlsZGVyczoge30sCiAgICAgICAgICAgICAgICAgZGFzaGJvYXJkOiB7fSwKICAgICAgICAg
ICAgICAgICBkYXNoYm9hcmRzOiB7fSwKKyAgICAgICAgICAgICAgICBmaWxlVXBsb2FkU2l6ZUxp
bWl0OiAyMDk3MTUyLCAvLyAyTUIgZHVyaW5nIHRlc3RpbmcuCiAgICAgICAgICAgICAgICAgbWV0
cmljczoge30sCiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzOiB7fSwKICAgICAgICAgICAg
ICAgICB0ZXN0czoge30sCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL2FwaS11cGxvYWRlZC1maWxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLXVwbG9hZGVkLWZpbGUuanMJKG5vbmV4aXN0ZW50KQor
KysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkZWQtZmls
ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMwOSBAQAorJ3VzZSBzdHJpY3QnOworCity
ZXF1aXJlKCcuLi90b29scy9qcy92My1tb2RlbHMuanMnKTsKKworY29uc3QgYXNzZXJ0ID0gcmVx
dWlyZSgnYXNzZXJ0Jyk7CitnbG9iYWwuRm9ybURhdGEgPSByZXF1aXJlKCdmb3JtLWRhdGEnKTsK
KworY29uc3QgVGVzdFNlcnZlciA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpz
Jyk7Citjb25zdCBUZW1wb3JhcnlGaWxlID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVtcG9yYXJ5
LWZpbGUuanMnKS5UZW1wb3JhcnlGaWxlOworCitkZXNjcmliZSgnL2FwaS91cGxvYWRlZC1maWxl
JywgZnVuY3Rpb24gKCkgeworICAgIHRoaXMudGltZW91dCg1MDAwKTsKKyAgICBUZXN0U2VydmVy
LmluamVjdCgpOworCisgICAgVGVtcG9yYXJ5RmlsZS5pbmplY3QoKTsKKworICAgIGl0KCdzaG91
bGQgcmV0dXJuICJJbnZhbGlkQXJndW1lbnRzIiB3aGVuIG5laXRoZXIgcGF0aCBub3Igc2hhMjU2
IHF1ZXJ5IGlzIHNldCcsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkuZ2V0SlNPTignL2FwaS91cGxvYWRlZC1maWxlJykudGhlbigoY29udGVudCkgPT4gewor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3N0YXR1cyddLCAnSW52YWxpZEFyZ3Vt
ZW50cycpOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNP
TignL2FwaS91cGxvYWRlZC1maWxlLycpOworICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnc3RhdHVzJ10sICdJbnZhbGlkQXJn
dW1lbnRzJyk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZXR1cm4g
NDA0IHdoZW4gdGhlcmUgaXMgbm8gZmlsZSB3aXRoIHRoZSBzcGVjaWZpZWQgSUQnLCAoKSA9PiB7
CisgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvdXBs
b2FkZWQtZmlsZS8xJykudGhlbigoY29udGVudCkgPT4geworICAgICAgICAgICAgYXNzZXJ0KGZh
bHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQnKTsKKyAgICAgICAgfSwgKGVycm9yKSA9PiB7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3IsIDQwNCk7CisgICAgICAgIH0pOworICAg
IH0pOworCisgICAgaXQoJ3Nob3VsZCByZXR1cm4gNDA0IHdoZW4gdGhlIHNwZWNpZmllZCBJRCBp
cyBub3QgYSB2YWxpZCBpbnRlZ2VyJywgKCkgPT4geworICAgICAgICByZXR1cm4gVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3VwbG9hZGVkLWZpbGUvZm9vJykudGhlbigoY29u
dGVudCkgPT4geworICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJl
YWNoZWQnKTsKKyAgICAgICAgfSwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoZXJyb3IsIDQwNCk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBy
ZXR1cm4gdGhlIGZpbGUgY29udGVudCBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIGZpbGUgSUQnLCAo
KSA9PiB7CisgICAgICAgIGxldCB1cGxvYWRlZEZpbGU7CisgICAgICAgIHJldHVybiBUZW1wb3Jh
cnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlKCdzb21lLmRhdCcsICdzb21lIGNvbnRlbnQnKS50aGVu
KChzdHJlYW0pID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBzdHJlYW19LCB7dXNlRm9ybURhdGE6IHRydWV9
KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIHVwbG9hZGVk
RmlsZSA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRIdHRwUmVxdWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7
dXBsb2FkZWRGaWxlWydpZCddfWAsICdHRVQnLCBudWxsLCBudWxsKTsKKyAgICAgICAgfSkudGhl
bigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5yZXNw
b25zZVRleHQsICdzb21lIGNvbnRlbnQnKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBp
dCgnc2hvdWxkIHJldHVybiAiTm90Rm91bmQiIHdoZW4gdGhlIHNwZWNpZmllZCBTSEEyNTYgaXMg
aW52YWxpZCcsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCku
Z2V0SlNPTignL2FwaS91cGxvYWRlZC1maWxlLz9zaGEyNTY9YWJjJykudGhlbigoY29udGVudCkg
PT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3N0YXR1cyddLCAnTm90Rm91
bmQnKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJldHVybiAiTm90
Rm91bmQiIHdoZW4gdGhlcmUgaXMgbm8gZmlsZSBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIFNIQTI1
NiAnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpT
T04oJy9hcGkvdXBsb2FkZWQtZmlsZS8/c2hhMjU2PTUyNTZlYzE4ZjExNjI0MDI1OTA1ZDA1N2Q2
YmVmYjAzZDc3YjI0MzUxMWFjNWY3N2VkNWUwMjIxY2U2ZDg0YjUnKS50aGVuKChjb250ZW50KSA9
PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnc3RhdHVzJ10sICdOb3RGb3Vu
ZCcpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBt
ZXRhIGRhdGEgb2YgdGhlIGZpbGUgd2l0aCB0aGUgc3BlY2lmaWVkIFNIQTI1NicsICgpID0+IHsK
KyAgICAgICAgbGV0IHVwbG9hZGVkRmlsZTsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUu
bWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVudCcpLnRoZW4oKHN0cmVh
bSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3Vw
bG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pOworICAg
ICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgdXBsb2FkZWRGaWxlID0g
cmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCkuZ2V0SlNPTihgL2FwaS91cGxvYWRlZC1maWxlLz9zaGEyNTY9JHt1cGxvYWRl
ZEZpbGVbJ3NoYTI1NiddfWApOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh1cGxvYWRlZEZpbGUsIHJlc3BvbnNlWyd1cGxvYWRl
ZEZpbGUnXSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZXR1cm4g
Ik5vdEZvdW5kIiB3aGVuIHRoZSBmaWxlIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgU0hBMjU2IGhh
ZCBhbHJlYWR5IGJlZW4gZGVsZXRlZCcsICgpID0+IHsKKyAgICAgICAgbGV0IHVwbG9hZGVkRmls
ZTsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUu
ZGF0JywgJ3NvbWUgY29udGVudCcpLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAgICAgcmV0
dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0
cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkg
PT4geworICAgICAgICAgICAgdXBsb2FkZWRGaWxlID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSdd
OworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAg
ICAgICByZXR1cm4gZGIuY29ubmVjdCgpLnRoZW4oKCkgPT4gZGIucXVlcnkoYFVQREFURSB1cGxv
YWRlZF9maWxlcyBTRVQgZmlsZV9kZWxldGVkX2F0ID0gbm93KCkgYXQgdGltZSB6b25lICd1dGMn
YCkpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLmdldEpTT04oYC9hcGkvdXBsb2FkZWQtZmlsZS8/c2hhMjU2PSR7dXBs
b2FkZWRGaWxlWydzaGEyNTYnXX1gKTsKKyAgICAgICAgfSkudGhlbigoY29udGVudCkgPT4gewor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3N0YXR1cyddLCAnTm90Rm91bmQnKTsK
KyAgICAgICAgfSk7CisgICAgfSk7CisKKworICAgIGl0KCdzaG91bGQgcmVzcG9uZCB3aXRoIEVU
YWcsIEFjY2NlcHQtUmFuZ2VzLCBDb250ZW50LURpc3Bvc2l0aW9uLCBDb250ZW50LUxlbmd0aCwg
YW5kIExhc3QtTW9kaWZpZWQgaGVhZGVycycsICgpID0+IHsKKyAgICAgICAgbGV0IHVwbG9hZGVk
RmlsZTsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoJ3Nv
bWUuZGF0JywgJ3NvbWUgY29udGVudCcpLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAgICAg
cmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywge25ld0ZpbGU6
IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pOworICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4geworICAgICAgICAgICAgdXBsb2FkZWRGaWxlID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmls
ZSddOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0dHBS
ZXF1ZXN0KGAvYXBpL3VwbG9hZGVkLWZpbGUvJHt1cGxvYWRlZEZpbGVbJ2lkJ119YCwgJ0dFVCcs
IG51bGwsIG51bGwpOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAg
ICAgY29uc3QgaGVhZGVycyA9IHJlc3BvbnNlLmhlYWRlcnM7CisKKyAgICAgICAgICAgIGFzc2Vy
dChPYmplY3Qua2V5cyhoZWFkZXJzKS5pbmNsdWRlcygnZXRhZycpKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChoZWFkZXJzWydldGFnJ10sIHVwbG9hZGVkRmlsZVsnc2hhMjU2J10pOworCisg
ICAgICAgICAgICBhc3NlcnQoT2JqZWN0LmtleXMoaGVhZGVycykuaW5jbHVkZXMoJ2FjY2VwdC1y
YW5nZXMnKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyc1snYWNjZXB0LXJhbmdl
cyddLCAnYnl0ZXMnKTsKKworICAgICAgICAgICAgYXNzZXJ0KE9iamVjdC5rZXlzKGhlYWRlcnMp
LmluY2x1ZGVzKCdjb250ZW50LWRpc3Bvc2l0aW9uJykpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSwgYGF0dGFjaG1lbnQ7IGZpbGVuYW1l
Kj11dGYtOCcnc29tZS5kYXRgKTsKKworICAgICAgICAgICAgYXNzZXJ0KE9iamVjdC5rZXlzKGhl
YWRlcnMpLmluY2x1ZGVzKCdjb250ZW50LWxlbmd0aCcpKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChoZWFkZXJzWydjb250ZW50LWxlbmd0aCddLCB1cGxvYWRlZEZpbGVbJ3NpemUnXSk7CisK
KyAgICAgICAgICAgIGFzc2VydChPYmplY3Qua2V5cyhoZWFkZXJzKS5pbmNsdWRlcygnbGFzdC1t
b2RpZmllZCcpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlc3Bv
bmQgd2l0aCB0aGUgc2FtZSBMYXN0LU1vZGlmaWVkIGVhY2ggdGltZScsICgpID0+IHsKKyAgICAg
ICAgbGV0IGlkOworICAgICAgICBsZXQgbGFzdE1vZGlmaWVkOworICAgICAgICByZXR1cm4gVGVt
cG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZSgnc29tZS5kYXQnLCAnc29tZSBjb250ZW50Jyku
dGhlbigoc3RyZWFtKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5k
UmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0
cnVlfSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBpZCA9
IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXVsnaWQnXTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRIdHRwUmVxdWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7
aWR9YCwgJ0dFVCcsIG51bGwsIG51bGwpOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4g
eworICAgICAgICAgICAgbGFzdE1vZGlmaWVkID0gcmVzcG9uc2UuaGVhZGVyc1snbGFzdC1tb2Rp
ZmllZCddOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0
dHBSZXF1ZXN0KGAvYXBpL3VwbG9hZGVkLWZpbGUvJHtpZH1gLCAnR0VUJywgbnVsbCwgbnVsbCk7
CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzcG9uc2UuaGVhZGVyc1snbGFzdC1tb2RpZmllZCddLCBsYXN0TW9kaWZpZWQpOworICAg
ICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVzcG9uZCB3aXRoIENvbnRlbnQt
UmFuZ2Ugd2hlbiByZXF1ZXN0ZWQgYWZ0ZXIgWCBieXRlcycsICgpID0+IHsKKyAgICAgICAgcmV0
dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29u
dGVudCcpLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRB
UEkuc2VuZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3Jt
RGF0YTogdHJ1ZX0pOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAg
ICAgY29uc3QgaWQgPSByZXNwb25zZVsndXBsb2FkZWRGaWxlJ11bJ2lkJ107CisgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBs
b2FkZWQtZmlsZS8ke2lkfWAsICdHRVQnLCBudWxsLCBudWxsLCB7J1JhbmdlJzogJ2J5dGVzPTUt
J30pOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgY29uc3Qg
aGVhZGVycyA9IHJlc3BvbnNlLmhlYWRlcnM7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
cG9uc2Uuc3RhdHVzQ29kZSwgMjA2KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXJz
Wydjb250ZW50LXJhbmdlJ10sICdieXRlcyA1LTExLzEyJyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2UucmVzcG9uc2VUZXh0LCAnY29udGVudCcpOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVzcG9uZCB3aXRoIENvbnRlbnQtUmFuZ2Ugd2hlbiBy
ZXF1ZXN0ZWQgYmV0d2VlbiBYLVkgYnl0ZXMnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBUZW1w
b3JhcnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlKCdzb21lLmRhdCcsICdzb21lIGNvbnRlbnQnKS50
aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBzdHJlYW19LCB7dXNlRm9ybURhdGE6IHRy
dWV9KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IGlkID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddWydpZCddOworICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0dHBSZXF1ZXN0KGAvYXBpL3VwbG9hZGVkLWZp
bGUvJHtpZH1gLCAnR0VUJywgbnVsbCwgbnVsbCwgeydSYW5nZSc6ICdieXRlcz00LTknfSk7Cisg
ICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBjb25zdCBoZWFkZXJz
ID0gcmVzcG9uc2UuaGVhZGVyczsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5z
dGF0dXNDb2RlLCAyMDYpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlcnNbJ2NvbnRl
bnQtcmFuZ2UnXSwgJ2J5dGVzIDQtOS8xMicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3BvbnNlLnJlc3BvbnNlVGV4dCwgJyBjb250ZScpOworICAgICAgICB9KTsKKyAgICB9KTsKKwor
ICAgIGl0KCdzaG91bGQgcmVzcG9uZCB3aXRoIENvbnRlbnQtUmFuZ2Ugd2hlbiByZXF1ZXN0ZWQg
Zm9yIHRoZSBsYXN0IFggYnl0ZXMnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBUZW1wb3JhcnlG
aWxlLm1ha2VUZW1wb3JhcnlGaWxlKCdzb21lLmRhdCcsICdzb21lIGNvbnRlbnQnKS50aGVuKChz
dHJlYW0pID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBzdHJlYW19LCB7dXNlRm9ybURhdGE6IHRydWV9KTsK
KyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGlkID0g
cmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddWydpZCddOworICAgICAgICAgICAgcmV0dXJuIFRlc3RT
ZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0dHBSZXF1ZXN0KGAvYXBpL3VwbG9hZGVkLWZpbGUvJHtp
ZH1gLCAnR0VUJywgbnVsbCwgbnVsbCwgeydSYW5nZSc6ICdieXRlcz0tNCd9KTsKKyAgICAgICAg
fSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSByZXNw
b25zZS5oZWFkZXJzOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0Nv
ZGUsIDIwNik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyc1snY29udGVudC1yYW5n
ZSddLCAnYnl0ZXMgOC0xMS8xMicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNl
LnJlc3BvbnNlVGV4dCwgJ3RlbnQnKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgn
c2hvdWxkIHJlc3BvbmQgd2l0aCBDb250ZW50LVJhbmdlIGZvciB0aGUgd2hvbGUgY29udGVudCB3
aGVuIHRoZSBzdWZmaXggbGVuZ3RoIGlzIGxhcmdlciB0aGFuIHRoZSBjb250ZW50JywgKCkgPT4g
eworICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZSgnc29tZS5k
YXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7CisgICAgICAgICAgICByZXR1
cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3RmlsZTogc3Ry
ZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9
PiB7CisgICAgICAgICAgICBjb25zdCBpZCA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXVsnaWQn
XTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRIdHRwUmVx
dWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcsIG51bGwsIG51bGwsIHsnUmFu
Z2UnOiAnYnl0ZXM9LTEwMCd9KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAg
ICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwNik7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoaGVhZGVyc1snY29udGVudC1yYW5nZSddLCAnYnl0ZXMgMC0xMS8xMicpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnJlc3BvbnNlVGV4dCwgJ3NvbWUgY29udGVu
dCcpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0dXJuIDQxNiB3
aGVuIHRoZSBzdGFydGluZyBieXRlIGlzIGFmdGVyIHRoZSBmaWxlIHNpemUnLCAoKSA9PiB7Cisg
ICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlKCdzb21lLmRhdCcs
ICdzb21lIGNvbnRlbnQnKS50aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQ
cml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBzdHJlYW19
LCB7dXNlRm9ybURhdGE6IHRydWV9KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsK
KyAgICAgICAgICAgIGNvbnN0IGlkID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddWydpZCddOwor
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0dHBSZXF1ZXN0
KGAvYXBpL3VwbG9hZGVkLWZpbGUvJHtpZH1gLCAnR0VUJywgbnVsbCwgbnVsbCwgeydSYW5nZSc6
ICdieXRlcz0xMi0nfSkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBhc3NlcnQoZmFsc2Us
ICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpLCAoZXJyb3IpID0+IGFzc2VydC5lcXVhbChlcnJv
ciwgNDE2KSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZXR1cm4g
NDE2IHdoZW4gdGhlIHN0YXJ0aW5nIGJ5dGUgYWZ0ZXIgdGhlIGVuZGluZyBieXRlJywgKCkgPT4g
eworICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZSgnc29tZS5k
YXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7CisgICAgICAgICAgICByZXR1
cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3RmlsZTogc3Ry
ZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9
PiB7CisgICAgICAgICAgICBjb25zdCBpZCA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXVsnaWQn
XTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRIdHRwUmVx
dWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcsIG51bGwsIG51bGwsIHsnUmFu
Z2UnOiAnYnl0ZXM9Mi0xJ30pCisgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gYXNzZXJ0KGZh
bHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQnKSwgKGVycm9yKSA9PiBhc3NlcnQuZXF1YWwo
ZXJyb3IsIDQxNikpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVz
cG9uZCB3aXRoIENvbnRlbnQtUmFuZ2Ugd2hlbiBJZi1SYW5nZSBtYXRjaGVzIHRoZSBsYXN0IG1v
ZGlmaWVkIGRhdGUnLCAoKSA9PiB7CisgICAgICAgIGxldCBpZDsKKyAgICAgICAgcmV0dXJuIFRl
bXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVudCcp
LnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2Vu
ZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTog
dHJ1ZX0pOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgaWQg
PSByZXNwb25zZVsndXBsb2FkZWRGaWxlJ11bJ2lkJ107CisgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmlsZS8k
e2lkfWAsICdHRVQnLCBudWxsLCBudWxsKTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+
IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAyMDApOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnJlc3BvbnNlVGV4dCwgJ3NvbWUgY29u
dGVudCcpOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0
dHBSZXF1ZXN0KGAvYXBpL3VwbG9hZGVkLWZpbGUvJHtpZH1gLCAnR0VUJywgbnVsbCwgbnVsbCwK
KyAgICAgICAgICAgICAgICB7J1JhbmdlJzogJ2J5dGVzID0gOS0xMCcsICdJZi1SYW5nZSc6IHJl
c3BvbnNlLmhlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXX0pOworICAgICAgICB9KS50aGVuKChyZXNw
b25zZSkgPT4geworICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IHJlc3BvbnNlLmhlYWRlcnM7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMjA2KTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXJzWydjb250ZW50LXJhbmdlJ10sICdieXRlcyA5
LTEwLzEyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2UucmVzcG9uc2VUZXh0
LCAnZW4nKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlc3BvbmQg
d2l0aCBDb250ZW50LVJhbmdlIHdoZW4gSWYtUmFuZ2UgbWF0Y2hlcyBFVGFnJywgKCkgPT4gewor
ICAgICAgICBsZXQgaWQ7CisgICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3Jh
cnlGaWxlKCdzb21lLmRhdCcsICdzb21lIGNvbnRlbnQnKS50aGVuKChzdHJlYW0pID0+IHsKKyAg
ICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGxvYWQtZmlsZScs
IHtuZXdGaWxlOiBzdHJlYW19LCB7dXNlRm9ybURhdGE6IHRydWV9KTsKKyAgICAgICAgfSkudGhl
bigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGlkID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmls
ZSddWydpZCddOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2Vu
ZEh0dHBSZXF1ZXN0KGAvYXBpL3VwbG9hZGVkLWZpbGUvJHtpZH1gLCAnR0VUJywgbnVsbCwgbnVs
bCk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMjAwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXNwb25zZS5yZXNwb25zZVRleHQsICdzb21lIGNvbnRlbnQnKTsKKyAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRIdHRwUmVxdWVzdChgL2FwaS91cGxvYWRl
ZC1maWxlLyR7aWR9YCwgJ0dFVCcsIG51bGwsIG51bGwsCisgICAgICAgICAgICAgICAgeydSYW5n
ZSc6ICdieXRlcyA9IDktMTAnLCAnSWYtUmFuZ2UnOiByZXNwb25zZS5oZWFkZXJzWydldGFnJ119
KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGhl
YWRlcnMgPSByZXNwb25zZS5oZWFkZXJzOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3Bv
bnNlLnN0YXR1c0NvZGUsIDIwNik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyc1sn
Y29udGVudC1yYW5nZSddLCAnYnl0ZXMgOS0xMC8xMicpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3BvbnNlLnJlc3BvbnNlVGV4dCwgJ2VuJyk7CisgICAgICAgIH0pOworICAgIH0pOwor
CisgICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGZ1bGwgY29udGVudCB3aGVuIElmLVJhbmdlIGRv
ZXMgbm90IG1hdGNoIHRoZSBsYXN0IG1vZGlmaWVkIGRhdGUgb3IgRVRhZycsICgpID0+IHsKKyAg
ICAgICAgbGV0IGlkOworICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5
RmlsZSgnc29tZS5kYXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7CisgICAg
ICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7
bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7CisgICAgICAgIH0pLnRoZW4o
KHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBpZCA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUn
XVsnaWQnXTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRI
dHRwUmVxdWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcsIG51bGwsIG51bGwp
OworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwMCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzcG9uc2UucmVzcG9uc2VUZXh0LCAnc29tZSBjb250ZW50Jyk7CisgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQt
ZmlsZS8ke2lkfWAsICdHRVQnLCBudWxsLCBudWxsLAorICAgICAgICAgICAgICAgIHsnUmFuZ2Un
OiAnYnl0ZXMgPSA5LTEwJywgJ0lmLVJhbmdlJzogJ2Zvbyd9KTsKKyAgICAgICAgfSkudGhlbigo
cmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXND
b2RlLCAyMDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnJlc3BvbnNlVGV4
dCwgJ3NvbWUgY29udGVudCcpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91
bGQgcmVzcG9uZCB3aXRoIENvbnRlbnQtUmFuZ2UgYWNyb3NzIDY0S0Igc3RyZWFtaW5nIGNodW5r
cycsICgpID0+IHsKKyAgICAgICAgbGV0IGlkOworICAgICAgICBjb25zdCBmaWxlU2l6ZSA9IDI1
NiAqIDEwMjQ7CisgICAgICAgIGNvbnN0IHRva2VucyA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamts
bW5vcHFyc3R1dnd4eXoiOworICAgICAgICBsZXQgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZl
KGZpbGVTaXplKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlU2l6ZTsgaSsrKQor
ICAgICAgICAgICAgYnVmZmVyW2ldID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjU2KTsK
KyAgICAgICAgbGV0IHN0YXJ0Qnl0ZSA9IDYzICogMTAyNDsKKyAgICAgICAgbGV0IGVuZEJ5dGUg
PSAxMjggKiAxMDI0IC0gMTsKKworICAgICAgICBsZXQgcmVzcG9uc2VCdWZmZXJMaXN0ID0gW107
CisgICAgICAgIGNvbnN0IHJlc3BvbnNlSGFuZGxlciA9IChyZXNwb25zZSkgPT4geworICAgICAg
ICAgICAgcmVzcG9uc2Uub24oJ2RhdGEnLCAoY2h1bmspID0+IHJlc3BvbnNlQnVmZmVyTGlzdC5w
dXNoKGNodW5rKSk7CisgICAgICAgIH07CisKKyAgICAgICAgZnVuY3Rpb24gdmVyaWZ5QnVmZmVy
KCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VCdWZmZXIgPSBCdWZmZXIu
Y29uY2F0KHJlc3BvbnNlQnVmZmVyTGlzdCk7CisgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGVuZEJ5dGUgLSBzdGFydEJ5dGUgKyAxOyBpKyspIHsKKyAgICAgICAgICAgICAgICBjb25z
dCBhY3R1YWwgPSByZXNwb25zZUJ1ZmZlcltpXTsKKyAgICAgICAgICAgICAgICBjb25zdCBleHBl
Y3RlZCA9IGJ1ZmZlcltzdGFydEJ5dGUgKyBpXTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoYWN0dWFsLCBleHBlY3RlZCwgYFRoZSBieXRlIGF0IGluZGV4ICR7aX0gc2hvdWxkIGJlIGlk
ZW50aWNhbC4gRXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VU
ZW1wb3JhcnlGaWxlKCdzb21lLmRhdCcsIGJ1ZmZlcikudGhlbigoc3RyZWFtKSA9PiB7CisgICAg
ICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7
bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7CisgICAgICAgIH0pLnRoZW4o
KHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBpZCA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUn
XVsnaWQnXTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRI
dHRwUmVxdWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcsIG51bGwsIG51bGws
CisgICAgICAgICAgICAgICAgeydSYW5nZSc6IGBieXRlcyA9ICR7c3RhcnRCeXRlfS0ke2VuZEJ5
dGV9YH0sIHJlc3BvbnNlSGFuZGxlcik7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7
CisgICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVyczsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAyMDYpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGhlYWRlcnNbJ2NvbnRlbnQtcmFuZ2UnXSwgYGJ5dGVzICR7c3RhcnRCeXRl
fS0ke2VuZEJ5dGV9LyR7ZmlsZVNpemV9YCk7CisgICAgICAgICAgICB2ZXJpZnlCdWZmZXIoKTsK
KyAgICAgICAgfSk7CisgICAgfSk7CisKK30pOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGxvYWQtZmlsZS10ZXN0cy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVn
ZWQtYXBpLXVwbG9hZC1maWxlLXRlc3RzLmpzCShub25leGlzdGVudCkKKysrIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBsb2FkLWZpbGUtdGVz
dHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTIgQEAKKyd1c2Ugc3RyaWN0JzsKKwor
cmVxdWlyZSgnLi4vdG9vbHMvanMvdjMtbW9kZWxzLmpzJyk7CisKK2NvbnN0IGFzc2VydCA9IHJl
cXVpcmUoJ2Fzc2VydCcpOworZ2xvYmFsLkZvcm1EYXRhID0gcmVxdWlyZSgnZm9ybS1kYXRhJyk7
CisKK2NvbnN0IFRlc3RTZXJ2ZXIgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5q
cycpOworY29uc3QgVGVtcG9yYXJ5RmlsZSA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3RlbXBvcmFy
eS1maWxlLmpzJykuVGVtcG9yYXJ5RmlsZTsKKworZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91
cGxvYWQtZmlsZScsIGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLnRpbWVvdXQoNTAwMCk7CisgICAg
VGVzdFNlcnZlci5pbmplY3QoKTsKKworICAgIFRlbXBvcmFyeUZpbGUuaW5qZWN0KCk7CisKKyAg
ICBpdCgnc2hvdWxkIHJldHVybiAiTm90RmlsZVNwZWNpZmllZCIgd2hlbiBuZXdGaWxlIG5vdCBp
cyBzcGVjaWZpZWQnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCd1cGxvYWQtZmlsZScsIHt9LCB7dXNlRm9ybURhdGE6IHRydWV9KS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgIGFzc2VydChmYWxzZSwgJ3Nob3VsZCBuZXZlciBiZSByZWFjaGVkJyk7
CisgICAgICAgIH0sIChlcnJvcikgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVycm9y
LCAnTm9GaWxlU3BlY2lmaWVkJyk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3No
b3VsZCByZXR1cm4gIkZpbGVTaXplTGltaXRFeGNlZWRlZCIgd2hlbiB0aGUgZmlsZSBpcyB0b28g
YmlnJywgKCkgPT4geworICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5
RmlsZU9mU2l6ZUluTUIoJ3NvbWUuZGF0JywgVGVzdFNlcnZlci50ZXN0Q29uZmlnKCkudXBsb2Fk
RmlsZUxpbWl0SW5NQiArIDEpLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAgICAgcmV0dXJu
IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVh
bX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFz
c2VydChmYWxzZSwgJ3Nob3VsZCBuZXZlciBiZSByZWFjaGVkJyk7CisgICAgICAgICAgICB9LCAo
ZXJyb3IpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3IsICdGaWxlU2l6
ZUxpbWl0RXhjZWVkZWQnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsK
KworICAgIGl0KCdzaG91bGQgdXBsb2FkIGEgZmlsZSB3aGVuIHRoZSBmaWxlc2l6ZSBpcyBzbWFs
bGVyIHRoYW4gdGhlIGxpbWl0JywgKCkgPT4geworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2
ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgY29uc3QgbGltaXRJbk1CID0gVGVzdFNlcnZlci50ZXN0
Q29uZmlnKCkudXBsb2FkRmlsZUxpbWl0SW5NQjsKKyAgICAgICAgbGV0IHVwbG9hZGVkRmlsZTsK
KyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGVPZlNpemVJbk1C
KCdzb21lLmRhdCcsIGxpbWl0SW5NQikudGhlbigoc3RyZWFtKSA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3RmlsZTog
c3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNl
KSA9PiB7CisgICAgICAgICAgICB1cGxvYWRlZEZpbGUgPSByZXNwb25zZVsndXBsb2FkZWRGaWxl
J107CisgICAgICAgICAgICByZXR1cm4gZGIuY29ubmVjdCgpLnRoZW4oKCkgPT4gZGIuc2VsZWN0
QWxsKCd1cGxvYWRlZF9maWxlcycsICdpZCcpKTsKKyAgICAgICAgfSkudGhlbigocm93cykgPT4g
eworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3MubGVuZ3RoLCAxKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyb3dzWzBdLmlkLCB1cGxvYWRlZEZpbGUuaWQpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJvd3NbMF0uc2l6ZSwgbGltaXRJbk1CICogMTAyNCAqIDEwMjQpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3NbMF0uc2l6ZSwgdXBsb2FkZWRGaWxlLnNpemUpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3NbMF0uZmlsZW5hbWUsICdzb21lLmRhdCcpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3NbMF0uZmlsZW5hbWUsIHVwbG9hZGVkRmlsZS5m
aWxlbmFtZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93c1swXS5leHRlbnNpb24sICcu
ZGF0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93c1swXS5zaGEyNTYsICc1MjU2ZWMx
OGYxMTYyNDAyNTkwNWQwNTdkNmJlZmIwM2Q3N2IyNDM1MTFhYzVmNzdlZDVlMDIyMWNlNmQ4NGI1
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93c1swXS5zaGEyNTYsIHVwbG9hZGVkRmls
ZS5zaGEyNTYpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgbm90IGNy
ZWF0ZSBhIGR1cGxpY2F0ZSBmaWxlcyB3aGVuIHRoZSBpZGVudGljYWwgZmlsZXMgYXJlIHVwbG9h
ZGVkJywgKCkgPT4geworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
KyAgICAgICAgY29uc3QgbGltaXRJbk1CID0gVGVzdFNlcnZlci50ZXN0Q29uZmlnKCkudXBsb2Fk
RmlsZUxpbWl0SW5NQjsKKyAgICAgICAgbGV0IHVwbG9hZGVkRmlsZTE7CisgICAgICAgIGxldCB1
cGxvYWRlZEZpbGUyOworICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5
RmlsZU9mU2l6ZUluTUIoJ3NvbWUuZGF0JywgbGltaXRJbk1CKS50aGVuKChzdHJlYW0pID0+IHsK
KyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGxvYWQtZmls
ZScsIHtuZXdGaWxlOiBzdHJlYW19LCB7dXNlRm9ybURhdGE6IHRydWV9KTsKKyAgICAgICAgfSku
dGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIHVwbG9hZGVkRmlsZTEgPSByZXNwb25z
ZVsndXBsb2FkZWRGaWxlJ107CisgICAgICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtl
VGVtcG9yYXJ5RmlsZU9mU2l6ZUluTUIoJ290aGVyLmRhdCcsIGxpbWl0SW5NQik7CisgICAgICAg
IH0pLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEku
c2VuZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0
YTogdHJ1ZX0pOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAg
dXBsb2FkZWRGaWxlMiA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXTsKKyAgICAgICAgICAgIHJl
dHVybiBkYi5jb25uZWN0KCkudGhlbigoKSA9PiBkYi5zZWxlY3RBbGwoJ3VwbG9hZGVkX2ZpbGVz
JywgJ2lkJykpOworICAgICAgICB9KS50aGVuKChyb3dzKSA9PiB7CisgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKHVwbG9hZGVkRmlsZTEsIHVwbG9hZGVkRmlsZTIpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJvd3MubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
b3dzWzBdLmlkLCB1cGxvYWRlZEZpbGUxLmlkKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
b3dzWzBdLnNpemUsIGxpbWl0SW5NQiAqIDEwMjQgKiAxMDI0KTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyb3dzWzBdLnNpemUsIHVwbG9hZGVkRmlsZTEuc2l6ZSk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocm93c1swXS5maWxlbmFtZSwgJ3NvbWUuZGF0Jyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocm93c1swXS5maWxlbmFtZSwgdXBsb2FkZWRGaWxlMS5maWxlbmFtZSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93c1swXS5leHRlbnNpb24sICcuZGF0Jyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocm93c1swXS5zaGEyNTYsICc1MjU2ZWMxOGYxMTYyNDAyNTkw
NWQwNTdkNmJlZmIwM2Q3N2IyNDM1MTFhYzVmNzdlZDVlMDIyMWNlNmQ4NGI1Jyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocm93c1swXS5zaGEyNTYsIHVwbG9hZGVkRmlsZTEuc2hhMjU2KTsK
KyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIG5vdCBjcmVhdGUgYSBkdXBs
aWNhdGUgZmlsZXMgd2hlbiB0aGUgaWRlbnRpY2FsIGZpbGVzIGFyZSB1cGxvYWRlZCcsICgpID0+
IHsKKyAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgIGNv
bnN0IGxpbWl0SW5NQiA9IFRlc3RTZXJ2ZXIudGVzdENvbmZpZygpLnVwbG9hZEZpbGVMaW1pdElu
TUI7CisgICAgICAgIGxldCB1cGxvYWRlZEZpbGUxOworICAgICAgICBsZXQgdXBsb2FkZWRGaWxl
MjsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGVPZlNpemVJ
bk1CKCdzb21lLmRhdCcsIGxpbWl0SW5NQikudGhlbigoc3RyZWFtKSA9PiB7CisgICAgICAgICAg
ICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3Rmls
ZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3Bv
bnNlKSA9PiB7CisgICAgICAgICAgICB1cGxvYWRlZEZpbGUxID0gcmVzcG9uc2VbJ3VwbG9hZGVk
RmlsZSddOworICAgICAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZp
bGVPZlNpemVJbk1CKCdvdGhlci5kYXQnLCBsaW1pdEluTUIpOworICAgICAgICB9KS50aGVuKChz
dHJlYW0pID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBzdHJlYW19LCB7dXNlRm9ybURhdGE6IHRydWV9KTsK
KyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIHVwbG9hZGVkRmls
ZTIgPSByZXNwb25zZVsndXBsb2FkZWRGaWxlJ107CisgICAgICAgICAgICByZXR1cm4gZGIuY29u
bmVjdCgpLnRoZW4oKCkgPT4gZGIuc2VsZWN0QWxsKCd1cGxvYWRlZF9maWxlcycsICdpZCcpKTsK
KyAgICAgICAgfSkudGhlbigocm93cykgPT4geworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bCh1cGxvYWRlZEZpbGUxLCB1cGxvYWRlZEZpbGUyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyb3dzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93c1swXS5pZCwg
dXBsb2FkZWRGaWxlMS5pZCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93c1swXS5zaXpl
LCBsaW1pdEluTUIgKiAxMDI0ICogMTAyNCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93
c1swXS5zaXplLCB1cGxvYWRlZEZpbGUxLnNpemUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJvd3NbMF0uZmlsZW5hbWUsICdzb21lLmRhdCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJvd3NbMF0uZmlsZW5hbWUsIHVwbG9hZGVkRmlsZTEuZmlsZW5hbWUpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJvd3NbMF0uZXh0ZW5zaW9uLCAnLmRhdCcpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJvd3NbMF0uc2hhMjU2LCAnNTI1NmVjMThmMTE2MjQwMjU5MDVkMDU3ZDZiZWZi
MDNkNzdiMjQzNTExYWM1Zjc3ZWQ1ZTAyMjFjZTZkODRiNScpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJvd3NbMF0uc2hhMjU2LCB1cGxvYWRlZEZpbGUxLnNoYTI1Nik7CisgICAgICAgIH0p
OworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZS11cGxvYWQgdGhlIGZpbGUgd2hlbiB0aGUg
cHJldmlvdXNseSB1cGxvYWRlZCBmaWxlIGhhZCBiZWVuIGRlbGV0ZWQnLCAoKSA9PiB7CisgICAg
ICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBjb25zdCBsaW1p
dEluTUIgPSBUZXN0U2VydmVyLnRlc3RDb25maWcoKS51cGxvYWRGaWxlTGltaXRJbk1COworICAg
ICAgICBsZXQgdXBsb2FkZWRGaWxlMTsKKyAgICAgICAgbGV0IHVwbG9hZGVkRmlsZTI7CisgICAg
ICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlT2ZTaXplSW5NQignc29t
ZS5kYXQnLCBsaW1pdEluTUIpLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAgICAgcmV0dXJu
IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVh
bX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4g
eworICAgICAgICAgICAgdXBsb2FkZWRGaWxlMSA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXTsK
KyAgICAgICAgICAgIHJldHVybiBkYi5jb25uZWN0KCkudGhlbigoKSA9PiBkYi5xdWVyeShgVVBE
QVRFIHVwbG9hZGVkX2ZpbGVzIFNFVCBmaWxlX2RlbGV0ZWRfYXQgPSBub3coKSBhdCB0aW1lIHpv
bmUgJ3V0YydgKSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJu
IFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGVPZlNpemVJbk1CKCdvdGhlci5kYXQnLCBs
aW1pdEluTUIpOworICAgICAgICB9KS50aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAgICAgIHJl
dHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBz
dHJlYW19LCB7dXNlRm9ybURhdGE6IHRydWV9KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2Up
ID0+IHsKKyAgICAgICAgICAgIHVwbG9hZGVkRmlsZTIgPSByZXNwb25zZVsndXBsb2FkZWRGaWxl
J107CisgICAgICAgICAgICByZXR1cm4gZGIuY29ubmVjdCgpLnRoZW4oKCkgPT4gZGIuc2VsZWN0
QWxsKCd1cGxvYWRlZF9maWxlcycsICdpZCcpKTsKKyAgICAgICAgfSkudGhlbigocm93cykgPT4g
eworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKHVwbG9hZGVkRmlsZTEuaWQsIHVwbG9hZGVk
RmlsZTIuaWQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3MubGVuZ3RoLCAyKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzWzBdLmlkLCB1cGxvYWRlZEZpbGUxLmlkKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzWzFdLmlkLCB1cGxvYWRlZEZpbGUyLmlkKTsKKwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3NbMF0uZmlsZW5hbWUsICdzb21lLmRhdCcpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3NbMF0uZmlsZW5hbWUsIHVwbG9hZGVkRmlsZTEu
ZmlsZW5hbWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3NbMV0uZmlsZW5hbWUsICdv
dGhlci5kYXQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzWzFdLmZpbGVuYW1lLCB1
cGxvYWRlZEZpbGUyLmZpbGVuYW1lKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3Nb
MF0uc2l6ZSwgbGltaXRJbk1CICogMTAyNCAqIDEwMjQpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJvd3NbMF0uc2l6ZSwgdXBsb2FkZWRGaWxlMS5zaXplKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyb3dzWzBdLnNpemUsIHVwbG9hZGVkRmlsZTIuc2l6ZSk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocm93c1swXS5zaXplLCByb3dzWzFdLnNpemUpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJvd3NbMF0uc2hhMjU2LCAnNTI1NmVjMThmMTE2MjQwMjU5MDVkMDU3ZDZiZWZi
MDNkNzdiMjQzNTExYWM1Zjc3ZWQ1ZTAyMjFjZTZkODRiNScpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJvd3NbMF0uc2hhMjU2LCB1cGxvYWRlZEZpbGUxLnNoYTI1Nik7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocm93c1swXS5zaGEyNTYsIHVwbG9hZGVkRmlsZTIuc2hhMjU2KTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzWzBdLnNoYTI1Niwgcm93c1sxXS5zaGEyNTYpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3NbMF0uZXh0ZW5zaW9uLCAnLmRhdCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3NbMV0uZXh0ZW5zaW9uLCAnLmRhdCcpOworICAgICAg
ICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcGljayB1cCBhdCBtb3N0IHR3byBmaWxl
IGV4dGVuc2lvbnMnLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRh
YmFzZSgpOworICAgICAgICBjb25zdCBsaW1pdEluTUIgPSBUZXN0U2VydmVyLnRlc3RDb25maWco
KS51cGxvYWRGaWxlTGltaXRJbk1COworICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtl
VGVtcG9yYXJ5RmlsZU9mU2l6ZUluTUIoJ3NvbWUub3RoZXIudGFyLmd6JywgbGltaXRJbk1CKS50
aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBzdHJlYW19LCB7dXNlRm9ybURhdGE6IHRy
dWV9KTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gZGIuY29u
bmVjdCgpLnRoZW4oKCkgPT4gZGIuc2VsZWN0QWxsKCd1cGxvYWRlZF9maWxlcycsICdpZCcpKQor
ICAgICAgICB9KS50aGVuKChyb3dzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93
cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3NbMF0uc2l6ZSwgbGlt
aXRJbk1CICogMTAyNCAqIDEwMjQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3NbMF0u
bWltZSwgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJvd3NbMF0uZmlsZW5hbWUsICdzb21lLm90aGVyLnRhci5neicpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJvd3NbMF0uZXh0ZW5zaW9uLCAnLnRhci5neicpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJvd3NbMF0uc2hhMjU2LCAnNTI1NmVjMThmMTE2MjQwMjU5MDVkMDU3ZDZi
ZWZiMDNkNzdiMjQzNTExYWM1Zjc3ZWQ1ZTAyMjFjZTZkODRiNScpOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0dXJuICJGaWxlU2l6ZVF1b3RhRXhjZWVkZWQiIHdo
ZW4gdGhlIHRvdGFsIGZpbGUgc2l6ZSBleGNlZWRzIHRoZSBxdW90YSBhbGxvd2VkIHBlciB1c2Vy
JywgKCkgPT4geworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAg
ICAgICAgY29uc3QgbGltaXRJbk1CID0gVGVzdFNlcnZlci50ZXN0Q29uZmlnKCkudXBsb2FkRmls
ZUxpbWl0SW5NQjsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZp
bGVPZlNpemVJbk1CKCdzb21lLmRhdCcsIGxpbWl0SW5NQiwgJ2EnKS50aGVuKChzdHJlYW0pID0+
IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGxvYWQt
ZmlsZScsIHtuZXdGaWxlOiBzdHJlYW19LCB7dXNlRm9ybURhdGE6IHRydWV9KTsKKyAgICAgICAg
fSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVt
cG9yYXJ5RmlsZU9mU2l6ZUluTUIoJ290aGVyLmRhdCcsIGxpbWl0SW5NQiwgJ2InKTsKKyAgICAg
ICAgfSkudGhlbigoc3RyZWFtKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQ
SS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1E
YXRhOiB0cnVlfSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJu
IFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGVPZlNpemVJbk1CKCdvdGhlci5kYXQnLCBs
aW1pdEluTUIsICdjJyk7CisgICAgICAgIH0pLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAg
ICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywge25ld0Zp
bGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pLnRoZW4oKCkgPT4geworICAgICAgICAg
ICAgICAgIGFzc2VydChmYWxzZSwgJ3Nob3VsZCBuZXZlciBiZSByZWFjaGVkJyk7CisgICAgICAg
ICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3Is
ICdGaWxlU2l6ZVF1b3RhRXhjZWVkZWQnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
KyAgICB9KTsKK30pOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0
cy9yZXNvdXJjZXMvdGVtcG9yYXJ5LWZpbGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvdGVtcG9yYXJ5LWZpbGUuanMJKG5v
bmV4aXN0ZW50KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNv
dXJjZXMvdGVtcG9yYXJ5LWZpbGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAor
Citjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKK2NvbnN0IGNoaWxkUHJvY2VzcyA9
IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKTsKK2NvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTsKK2Nv
bnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7CisKK2NvbnN0IENvbmZpZyA9IHJlcXVpcmUoJy4u
Ly4uL3Rvb2xzL2pzL2NvbmZpZy5qcycpOworCitjbGFzcyBUZW1wb3JhcnlGaWxlIHsKKyAgICBz
dGF0aWMgbWFrZVRlbXBvcmFyeUZpbGVPZlNpemVJbk1CKG5hbWUsIHNpemVJbk1CLCBjaGFyYWN0
ZXJUb0ZpbGwgPSAnYScpCisgICAgeworICAgICAgICBsZXQgbWVnYWJ5dGVTdHJpbmcgPSBjaGFy
YWN0ZXJUb0ZpbGw7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykKKyAgICAg
ICAgICAgIG1lZ2FieXRlU3RyaW5nID0gbWVnYWJ5dGVTdHJpbmcgKyBtZWdhYnl0ZVN0cmluZzsK
KyAgICAgICAgYXNzZXJ0LmVxdWFsKG1lZ2FieXRlU3RyaW5nLmxlbmd0aCwgMTAyNCAqIDEwMjQp
OworCisgICAgICAgIGxldCBjb250ZW50ID0gJyc7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgc2l6ZUluTUI7IGkrKykKKyAgICAgICAgICAgIGNvbnRlbnQgKz0gbWVnYWJ5dGVTdHJpbmc7
CisgICAgICAgIAorICAgICAgICByZXR1cm4gdGhpcy5tYWtlVGVtcG9yYXJ5RmlsZShuYW1lLCBj
b250ZW50KTsKKyAgICB9CisKKyAgICBzdGF0aWMgbWFrZVRlbXBvcmFyeUZpbGUobmFtZSwgY29u
dGVudCkKKyAgICB7CisgICAgICAgIGNvbnN0IG5ld1BhdGggPSBwYXRoLnJlc29sdmUoVGVtcG9y
YXJ5RmlsZS5fdGVtcERpciwgbmFtZSk7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVz
b2x2ZSkgPT4geworICAgICAgICAgICAgcmV0dXJuIGZzLndyaXRlRmlsZShuZXdQYXRoLCBjb250
ZW50LCAoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZShmcy5jcmVhdGVSZWFkU3RyZWFt
KG5ld1BhdGgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBz
dGF0aWMgaW5qZWN0KCkKKyAgICB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAg
ICAgICAgdGhpcy5fdGVtcERpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGgucmVzb2x2ZShDb25maWcu
cGF0aCgnZGF0YURpcmVjdG9yeScpLCAndGVtcC8nKSk7CisgICAgICAgIH0pOworCisgICAgICAg
IGFmdGVyRWFjaCgoKSA9PiB7CisgICAgICAgICAgICBjaGlsZFByb2Nlc3MuZXhlY0ZpbGVTeW5j
KCdybScsIFsnLXJmJywgdGhpcy5fdGVtcERpcl0pOworICAgICAgICAgICAgdGhpcy5fdGVtcERp
ciA9IG51bGw7CisgICAgICAgIH0pOworICAgIH0KK30KK1RlbXBvcmFyeUZpbGUuX3RlbXBEaXIg
PSBudWxsOworCitpZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJykKKyAgICBtb2R1bGUu
ZXhwb3J0cy5UZW1wb3JhcnlGaWxlID0gVGVtcG9yYXJ5RmlsZTsKSW5kZXg6IFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmNvbmYKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJj
ZXMvdGVzdC1zZXJ2ZXIuY29uZgkocmV2aXNpb24gMjE0MDM0KQorKysgV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuY29uZgkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsOSBAQCBMb2dMZXZlbCB3YXJuCiA8SWZNb2R1bGUgcGhwNV9t
b2R1bGU+CiAgICAgQWRkVHlwZSBhcHBsaWNhdGlvbi94LWh0dHBkLXBocCAucGhwCiAgICAgQWRk
VHlwZSBhcHBsaWNhdGlvbi94LWh0dHBkLXBocC1zb3VyY2UgLnBocHMKKworICAgIHBocF92YWx1
ZSB1cGxvYWRfbWF4X2ZpbGVzaXplIDVNCisgICAgcGhwX3ZhbHVlIHBvc3RfbWF4X3NpemUgNU0K
IDwvSWZNb2R1bGU+CiAKIEluY2x1ZGUgL3ByaXZhdGUvZXRjL2FwYWNoZTIvZXh0cmEvaHR0cGQt
bXBtLmNvbmYKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVz
b3VyY2VzL3Rlc3Qtc2VydmVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpzCShyZXZpc2lvbiAyMTQw
MzQpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy90
ZXN0LXNlcnZlci5qcwkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsOSBAQCBjbGFzcyBUZXN0
U2VydmVyIHsKICAgICAgICAgICAgICAgICAncGFzc3dvcmQnOiBDb25maWcudmFsdWUoJ2RhdGFi
YXNlLnBhc3N3b3JkJyksCiAgICAgICAgICAgICAgICAgJ25hbWUnOiBDb25maWcudmFsdWUoJ3Rl
c3REYXRhYmFzZU5hbWUnKSwKICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAndXBsb2FkRmls
ZUxpbWl0SW5NQic6IDIsCisgICAgICAgICAgICAndXBsb2FkVXNlclF1b3RhSW5NQic6IDUsCisg
ICAgICAgICAgICAndXBsb2FkRGlyZWN0b3J5JzogQ29uZmlnLnZhbHVlKCdkYXRhRGlyZWN0b3J5
JykgKyAnL3VwbG9hZGVkJywKICAgICAgICAgICAgICd1bml2ZXJzYWxTbGF2ZVBhc3N3b3JkJzog
bnVsbCwKICAgICAgICAgICAgICdtYWludGVuYW5jZU1vZGUnOiBmYWxzZSwKICAgICAgICAgICAg
ICdjbHVzdGVyU3RhcnQnOiBbMjAwMCwgMSwgMSwgMCwgMF0sCkBAIC05Niw2ICs5OSw3IEBAIGNs
YXNzIFRlc3RTZXJ2ZXIgewogICAgICAgICB9IGVsc2UgaWYgKGZzLmV4aXN0c1N5bmMoYmFja3Vw
UGF0aCkpIC8vIEFzc3VtZSB0aGlzIGlzIGEgYmFja3VwIGZyb20gdGhlIGxhc3QgZmFpbGVkIHJ1
bgogICAgICAgICAgICAgdGhpcy5fYmFja3VwRGF0YVBhdGggPSBiYWNrdXBQYXRoOwogICAgICAg
ICBmcy5ta2RpclN5bmModGhpcy5fZGF0YURpcmVjdG9yeSwgMG83NTUpOworICAgICAgICBmcy5t
a2RpclN5bmMocGF0aC5yZXNvbHZlKHRoaXMuX2RhdGFEaXJlY3RvcnksICd1cGxvYWRlZCcpLCAw
bzc1NSk7CiAgICAgfQogCiAgICAgX3Jlc3RvcmVEYXRhRGlyZWN0b3J5KCkKQEAgLTEwOCw4ICsx
MTIsMTMgQEAgY2xhc3MgVGVzdFNlcnZlciB7CiAgICAgY2xlYW5EYXRhRGlyZWN0b3J5KCkKICAg
ICB7CiAgICAgICAgIGxldCBmaWxlTGlzdCA9IGZzLnJlYWRkaXJTeW5jKHRoaXMuX2RhdGFEaXJl
Y3RvcnkpOworICAgICAgICBmb3IgKGxldCBmaWxlbmFtZSBvZiBmaWxlTGlzdCkgeworICAgICAg
ICAgICAgaWYgKGZpbGVuYW1lICE9ICd1cGxvYWRlZCcpCisgICAgICAgICAgICAgICAgZnMudW5s
aW5rU3luYyhwYXRoLnJlc29sdmUodGhpcy5fZGF0YURpcmVjdG9yeSwgZmlsZW5hbWUpKTsKKyAg
ICAgICAgfQorICAgICAgICBmaWxlTGlzdCA9IGZzLnJlYWRkaXJTeW5jKHBhdGgucmVzb2x2ZSh0
aGlzLl9kYXRhRGlyZWN0b3J5LCAndXBsb2FkZWQnKSk7CiAgICAgICAgIGZvciAobGV0IGZpbGVu
YW1lIG9mIGZpbGVMaXN0KQotICAgICAgICAgICAgZnMudW5saW5rU3luYyhwYXRoLnJlc29sdmUo
dGhpcy5fZGF0YURpcmVjdG9yeSwgZmlsZW5hbWUpKTsKKyAgICAgICAgICAgIGZzLnVubGlua1N5
bmMocGF0aC5yZXNvbHZlKHRoaXMuX2RhdGFEaXJlY3RvcnksICd1cGxvYWRlZCcsIGZpbGVuYW1l
KSk7CiAgICAgfQogCiAgICAgX2Vuc3VyZVRlc3REYXRhYmFzZSgpCkluZGV4OiBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvcnVuLXRlc3RzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy90b29scy9ydW4tdGVzdHMucHkJKHJldmlzaW9uIDIxNDAzNCkKKysr
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9ydW4tdGVzdHMucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTExLDcgKzExLDcgQEAgZGVmIG1haW4oKToKICAgICBub2RlX21vZHVsZXNfZGlyID0g
b3MucGF0aC5qb2luKHJvb3RfZGlyLCAnbm9kZV9tb2R1bGVzJykKIAogICAgIG9zLmNoZGlyKHJv
b3RfZGlyKQotICAgIHBhY2thZ2VzID0gWydtb2NoYScsICdwZyddCisgICAgcGFja2FnZXMgPSBb
J21vY2hhJywgJ3BnJywgJ2Zvcm0tZGF0YSddCiAgICAgZm9yIHBhY2thZ2VfbmFtZSBpbiBwYWNr
YWdlczoKICAgICAgICAgdGFyZ2V0X2RpciA9IG9zLnBhdGguam9pbihub2RlX21vZHVsZXNfZGly
LCBwYWNrYWdlX25hbWUpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHRhcmdldF9kaXIp
OgpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2RhdGFiYXNlLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9kYXRhYmFzZS5q
cwkocmV2aXNpb24gMjE0MDM0KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pz
L2RhdGFiYXNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNiArMTUyLDcgQEAgY29uc3QgdGFi
bGVUb1ByZWZpeE1hcCA9IHsKICAgICAnY29tbWl0X3NldHMnOiAnY29tbWl0c2V0JywKICAgICAn
Y29tbWl0X3NldF9yZWxhdGlvbnNoaXBzJzogJ2NvbW1pdHNldCcsCiAgICAgJ3J1bl9pdGVyYXRp
b25zJzogJ2l0ZXJhdGlvbicsCisgICAgJ3VwbG9hZGVkX2ZpbGVzJzogJ2ZpbGUnLAogfQogCiBp
ZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJykKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy90b29scy9qcy9yZW1vdGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3Rvb2xzL2pzL3JlbW90ZS5qcwkocmV2aXNpb24gMjE0MDM0KQorKysgV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3JlbW90ZS5qcwkod29ya2luZyBjb3B5KQpAQCAt
NjQsNyArNjQsNyBAQCBjbGFzcyBOb2RlUmVtb3RlQVBJIGV4dGVuZHMgQ29tbW9uUmVtb3RlCiAg
ICAgICAgIH0pOwogICAgIH0KIAotICAgIHNlbmRIdHRwUmVxdWVzdChwYXRoLCBtZXRob2QsIGNv
bnRlbnRUeXBlLCBjb250ZW50KQorICAgIHNlbmRIdHRwUmVxdWVzdChwYXRoLCBtZXRob2QsIGNv
bnRlbnRUeXBlLCBjb250ZW50LCBoZWFkZXJzID0ge30sIHJlc3BvbnNlSGFuZGxlciA9IG51bGwp
CiAgICAgewogICAgICAgICBsZXQgc2VydmVyID0gdGhpcy5fc2VydmVyOwogICAgICAgICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewpAQCAtNzgsMTAgKzc4LDE0IEBA
IGNsYXNzIE5vZGVSZW1vdGVBUEkgZXh0ZW5kcyBDb21tb25SZW1vdGUKIAogICAgICAgICAgICAg
bGV0IHJlcXVlc3QgPSAoc2VydmVyLnNjaGVtZSA9PSAnaHR0cCcgPyBodHRwIDogaHR0cHMpLnJl
cXVlc3Qob3B0aW9ucywgKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IHJlc3Bv
bnNlVGV4dCA9ICcnOwotICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldEVuY29kaW5nKCd1dGY4
Jyk7Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2Uub24oJ2RhdGEnLCAoY2h1bmspID0+IHsgcmVz
cG9uc2VUZXh0ICs9IGNodW5rOyB9KTsKKyAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VIYW5k
bGVyKQorICAgICAgICAgICAgICAgICAgICByZXNwb25zZUhhbmRsZXIocmVzcG9uc2UpOworICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRFbmNv
ZGluZygndXRmOCcpOworICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5vbignZGF0YScsIChj
aHVuaykgPT4geyByZXNwb25zZVRleHQgKz0gY2h1bms7IH0pOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICByZXNwb25zZS5vbignZW5kJywgKCkgPT4gewotICAgICAgICAgICAg
ICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSAhPSAyMDApCisgICAgICAgICAgICAgICAg
ICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlIDwgMjAwIHx8IHJlc3BvbnNlLnN0YXR1c0NvZGUg
Pj0gMzAwKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChyZXNwb25zZS5z
dGF0dXNDb2RlKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoJ3NldC1jb29raWUnIGluIHJl
c3BvbnNlLmhlYWRlcnMpIHsKQEAgLTkwLDcgKzk0LDcgQEAgY2xhc3MgTm9kZVJlbW90ZUFQSSBl
eHRlbmRzIENvbW1vblJlbW90ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nv
b2tpZXMuc2V0KG5hbWVWYWx1ZVswXSwgbmFtZVZhbHVlWzFdKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXNv
bHZlKHtzdGF0dXNDb2RlOiByZXNwb25zZS5zdGF0dXNDb2RlLCByZXNwb25zZVRleHQ6IHJlc3Bv
bnNlVGV4dH0pOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHtzdGF0dXNDb2RlOiByZXNw
b25zZS5zdGF0dXNDb2RlLCByZXNwb25zZVRleHQ6IHJlc3BvbnNlVGV4dCwgaGVhZGVyczogcmVz
cG9uc2UuaGVhZGVyc30pOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAK
QEAgLTEwMiwxMiArMTA2LDI2IEBAIGNsYXNzIE5vZGVSZW1vdGVBUEkgZXh0ZW5kcyBDb21tb25S
ZW1vdGUKICAgICAgICAgICAgIGlmICh0aGlzLl9jb29raWVzLnNpemUpCiAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5zZXRIZWFkZXIoJ0Nvb2tpZScsIEFycmF5LmZyb20odGhpcy5fY29va2llcy5r
ZXlzKCkpLm1hcCgoa2V5KSA9PiBgJHtrZXl9PSR7dGhpcy5fY29va2llcy5nZXQoa2V5KX1gKS5q
b2luKCc7ICcpKTsKIAotICAgICAgICAgICAgaWYgKGNvbnRlbnQpCi0gICAgICAgICAgICAgICAg
cmVxdWVzdC53cml0ZShjb250ZW50KTsKKyAgICAgICAgICAgIGZvciAobGV0IGhlYWRlck5hbWUg
aW4gaGVhZGVycykKKyAgICAgICAgICAgICAgICByZXF1ZXN0LnNldEhlYWRlcihoZWFkZXJOYW1l
LCBoZWFkZXJzW2hlYWRlck5hbWVdKTsKIAotICAgICAgICAgICAgcmVxdWVzdC5lbmQoKTsKKyAg
ICAgICAgICAgIGlmIChjb250ZW50IGluc3RhbmNlb2YgRnVuY3Rpb24pCisgICAgICAgICAgICAg
ICAgY29udGVudChyZXF1ZXN0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IGlmIChjb250ZW50KQorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndyaXRlKGNvbnRlbnQp
OworICAgICAgICAgICAgICAgIHJlcXVlc3QuZW5kKCk7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0pOwogICAgIH0KKworICAgIHNlbmRIdHRwUmVxdWVzdFdpdGhGb3JtRGF0YShwYXRoLCBmb3Jt
RGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnNlbmRIdHRwUmVxdWVzdChwYXRoLCAn
UE9TVCcsIGBtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0ke2Zvcm1EYXRhLmdldEJvdW5k
YXJ5KCl9YCwgKHJlcXVlc3QpID0+IHsKKyAgICAgICAgICAgIGZvcm1EYXRhLnBpcGUocmVxdWVz
dCk7CisgICAgICAgIH0pOworICAgIH0KKwogfTsKIAogaWYgKHR5cGVvZiBtb2R1bGUgIT0gJ3Vu
ZGVmaW5lZCcpCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvdjMtbW9k
ZWxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy92
My1tb2RlbHMuanMJKHJldmlzaW9uIDIxNDAzNCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy90b29scy9qcy92My1tb2RlbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAg
aW1wb3J0RnJvbVYzKCdtb2RlbHMvdGVzdC5qcycsICdUZXN0Jyk7CiBpbXBvcnRGcm9tVjMoJ21v
ZGVscy90ZXN0LWdyb3VwLmpzJywgJ1Rlc3RHcm91cCcpOwogaW1wb3J0RnJvbVYzKCdtb2RlbHMv
dGltZS1zZXJpZXMuanMnLCAnVGltZVNlcmllcycpOwogaW1wb3J0RnJvbVYzKCdtb2RlbHMvdHJp
Z2dlcmFibGUuanMnLCAnVHJpZ2dlcmFibGUnKTsKK2ltcG9ydEZyb21WMygnbW9kZWxzL3VwbG9h
ZGVkLWZpbGUuanMnLCAnVXBsb2FkZWRGaWxlJyk7CiAKIGltcG9ydEZyb21WMygncHJpdmlsZWdl
ZC1hcGkuanMnLCAnUHJpdmlsZWdlZEFQSScpOwogaW1wb3J0RnJvbVYzKCdpbnN0cnVtZW50YXRp
b24uanMnLCAnSW5zdHJ1bWVudGF0aW9uJyk7Cg==
</data>
<flag name="review"
          id="326143"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>