<?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>156269</bug_id>
          
          <creation_ts>2016-04-05 17:40:02 -0700</creation_ts>
          <short_desc>New buildbot syncing scripts that supports multiple builders and slaves</short_desc>
          <delta_ts>2016-04-06 16:19:29 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>joepeck</cc>
    
    <cc>rniwa</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1181096</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-04-05 17:40:02 -0700</bug_when>
    <thetext>Add tools/sync-builedbot.js which supports syncing across multiple slaves and builders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181193</commentid>
    <comment_count>1</comment_count>
      <attachid>275760</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-04-06 00:19:17 -0700</bug_when>
    <thetext>Created attachment 275760
Adds a script</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181423</commentid>
    <comment_count>2</comment_count>
      <attachid>275760</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-06 15:06:59 -0700</bug_when>
    <thetext>Comment on attachment 275760
Adds a script

View in context: https://bugs.webkit.org/attachment.cgi?id=275760&amp;action=review

rs=me

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:69
&gt; +        let testPlatformParis = {};

Paris -&gt; Pairs? Although I do like Paris.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181448</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-04-06 16:19:29 -0700</bug_when>
    <thetext>Committed r199123: &lt;http://trac.webkit.org/changeset/199123&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275760</attachid>
            <date>2016-04-06 00:19:17 -0700</date>
            <delta_ts>2016-04-06 15:06:59 -0700</delta_ts>
            <desc>Adds a script</desc>
            <filename>bug-156269-20160406001920.patch</filename>
            <type>text/plain</type>
            <size>132914</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5MDg1KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzNSBAQAorMjAxNi0wNC0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBOZXcgYnVpbGRib3Qgc3luY2luZyBzY3JpcHRzIHRoYXQgc3VwcG9ydHMgbXVs
dGlwbGUgYnVpbGRlcnMgYW5kIHNsYXZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHN5bmMtYnVpbGRib3QuanMgdGhhdCBzdXBwb3J0cyBzY2hl
ZHVsaW5nIEEvQiB0ZXN0aW5nIGpvYnMgb24gbXVsdGlwbGUgYnVpbGRlcnMgYW5kIHNsYXZlcy4K
KyAgICAgICAgVGhlIG9sZCBweXRob24gc2NyaXB0IChzeW5jLXdpdGgtYnVpbGRib3QucHkpIGNv
dWxkIG9ubHkgc3VwcG9ydCBhIHNpbmdsZSBidWlsZGVyIGFuZCBzbGF2ZQorICAgICAgICBmb3Ig
ZWFjaCBwbGF0Zm9ybSwgdGVzdCBwYWlyLgorCisgICAgICAgIFRoZSBtYWluIGxvZ2ljIGlzIGlt
cGxlbWVudGVkIGluIEJ1aWxkYm90VHJpZ2dlcmFibGUuc3luY09uY2UuIFZhcmlvdXMgaGVscGVy
IG1ldGhvZHMgYXJlIGFkZGVkCisgICAgICAgIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlIGFuZCB0
ZXN0cyBoYXZlIGJlZW4gcmVmYWN0b3JlZC4KKworICAgICAgICBCdWlsZGJvdFN5bmNlciBoYXMg
YmVlbiB1cGRhdGVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgcGxhdGZvcm0sIHRlc3QgcGFpcnMuIEl0
J3Mgbm93IHJlc3BvbnNpYmxlCisgICAgICAgIGZvciBzeW5jaW5nIGV2ZXJ5dGhpbmcgb24gZWFj
aCBidWlsZGVyIChvbiBhIGJ1aWxkYm90KS4KKworICAgICAgICBBZGRlZCBtb3JlIHVuaXQgdGVz
dHMgZm9yIEJ1aWxkYm90U3luY2VyIGFuZCBzZXJ2ZXIgdGVzdHMgZm9yIEJ1aWxkYm90VHJpZ2dl
cmFibGUsIGFuZCByZWZhY3RvcmVkCisgICAgICAgIHRlc3QgaGVscGVycyBhbmQgbW9ja3MgYXMg
bmVlZGVkLgorCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzOgor
ICAgICAgICAoQnVpbGRSZXF1ZXN0LnByb3RvdHlwZS5zdGF0dXMpOiBBZGRlZC4KKyAgICAgICAg
KEJ1aWxkUmVxdWVzdC5wcm90b3R5cGUuaXNTY2hlZHVsZWQpOiBBZGRlZC4KKyAgICAgICAgKiBw
dWJsaWMvdjMvbW9kZWxzL21ldHJpYy5qczoKKyAgICAgICAgKE1ldHJpYy5wcm90b3R5cGUuZnVs
bE5hbWUpOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL3BsYXRmb3JtLmpzOgor
ICAgICAgICAoUGxhdGZvcm0pOiBBZGRlZCB0aGUgbWFwIGJhc2VkIG9uIHBsYXRmb3JtIG5hbWUu
CisgICAgICAgIChQbGF0Zm9ybS5maW5kQnlOYW1lKTogQWRkZWQuCisgICAgICAgICogcHVibGlj
L3YzL21vZGVscy90ZXN0LmpzOgorICAgICAgICAoVGVzdC50b3BMZXZlbFRlc3RzKToKKyAgICAg
ICAgKFRlc3QuZmluZEJ5UGF0aCk6IEFkZGVkLiBGaW5kcyBhIHRlc3QgYmFzZWQgb24gYW4gYXJy
YXkgb2YgdGVzdCBuYW1lczsgZS5nLiBbJ0EnLCAnQiddIHdvdWxkCisgICAgICAgIGZpbmQgdGhl
IHRlc3Qgd2hvc2UgbmFtZSBpcyAiQiIgd2hpY2ggaGFzIGEgcGFyZW50IHRlc3QgbmFtZWQgIkEi
LgorICAgICAgICAoVGVzdC5wcm90b3R5cGUuZnVsbE5hbWUpOiBBZGRlZC4KKyAgICAgICAgKiBz
ZXJ2ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzOgorICAgICAgICAoYWRkTW9j
a0RhdGEpOiBNb3ZlZCB0byByZXNvdXJjZXMvbW9jay1kYXRhLmpzLgorICAgICAgICAoYWRkQW5v
dGhlck1vY2tUZXN0R3JvdXApOiBEaXR0by4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcmVzb3Vy
Y2VzL21vY2stZGF0YS5qczogQWRkZWQuCisgICAgICAgIChNb2NrRGF0YS5yZXNldFYzTW9kZWxz
KTogQWRkZWQuCisgICAgICAgIChNb2NrRGF0YS5hZGRNb2NrRGF0YSk6IE1vdmVkIGZyb20gYXBp
LWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzLgorICAgICAgICAoTW9ja0RhdGEuYWRkQW5vdGhlck1v
Y2tUZXN0R3JvdXApOiBEaXR0by4KKyAgICAgICAgKE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZp
Z1dpdGhTaW5nbGVCdWlsZGVyKTogQWRkZWQuCisgICAgICAgIChNb2NrRGF0YS5tb2NrVGVzdFN5
bmNDb25maWdXaXRoVHdvQnVpbGRlcnMpOiBBZGRlZC4KKyAgICAgICAgKE1vY2tEYXRhLnBlbmRp
bmdCdWlsZCk6IEFkZGVkLgorICAgICAgICAoTW9ja0RhdGEucnVubmluZ0J1aWxkKTogQWRkZWQu
CisgICAgICAgIChNb2NrRGF0YS5maW5pc2hlZEJ1aWxkKTogQWRkZWQuCisgICAgICAgICogc2Vy
dmVyLXRlc3RzL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qczoKKyAgICAgICAgKFRlc3RTZXJ2ZXIp
OgorICAgICAgICAoVGVzdFNlcnZlci5wcm90b3R5cGUucmVtb3RlQVBJKToKKyAgICAgICAgKFRl
c3RTZXJ2ZXIucHJvdG90eXBlLl9lbnN1cmVUZXN0RGF0YWJhc2UpOiBEb24ndCBmYWlsIGV2ZW4g
aWYgdGhlIHRlc3QgZGF0YWJhc2UgZG9lc24ndCBleGl0LgorICAgICAgICAoVGVzdFNlcnZlci5w
cm90b3R5cGUuX3N0YXJ0QXBhY2hlKTogQ3JlYXRlIGEgUmVtb3RlQVBJIGluc3RhbmNlIHRvIGFj
Y2VzcyB0aGUgdGVzdCBzZXZlci4KKyAgICAgICAgKFRlc3RTZXJ2ZXIucHJvdG90eXBlLl93YWl0
Rm9yUGlkKTogSW5jcmVhc2UgdGhlIHRpbWVvdXQuCisgICAgICAgIChUZXN0U2VydmVyLnByb3Rv
dHlwZS5pbmplY3QpOiBSZXBsYWNlIGdsb2JhbC5SZW1vdGVBUEkgZHVyaW5nIHRoZSB0ZXN0IGFu
ZCByZXN0b3JlIGl0IGFmdGVyd2FyZHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3Rvb2xzLWJ1
aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzOiBBZGRlZC4gVGVzdHMgQnVpbGRib3RUcmlnZ2Vy
YWJsZS5zeW5jT25jZS4KKyAgICAgICAgKE1vY2tMb2dnZXIpOiBBZGRlZC4KKyAgICAgICAgKE1v
Y2tMb2dnZXIucHJvdG90eXBlLmxvZyk6IEFkZGVkLgorICAgICAgICAoTW9ja0xvZ2dlci5wcm90
b3R5cGUuZXJyb3IpOiBBZGRlZC4KKyAgICAgICAgKiB0b29scy9kZXRlY3QtY2hhbmdlcy5qczoK
KyAgICAgICAgKHBhcnNlQXJndW1lbnQpOiBNb3ZlZCB0byBqcy9wYXJzZS1hcmd1bWVudHMuanMu
CisgICAgICAgICogdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzOgorICAgICAgICAoQnVpbGRi
b3RCdWlsZEVudHJ5KToKKyAgICAgICAgKEJ1aWxkYm90QnVpbGRFbnRyeS5wcm90b3R5cGUuc3lu
Y2VyKTogQWRkZWQuCisgICAgICAgIChCdWlsZGJvdEJ1aWxkRW50cnkucHJvdG90eXBlLmJ1aWxk
UmVxdWVzdFN0YXR1c0lmVXBkYXRlSXNOZWVkZWQpOiBBZGRlZC4gUmV0dXJucyBhIG5ldyBzdGF0
dXMKKyAgICAgICAgZm9yIGEgYnVpbGQgcmVxdWVzdCAob2YgdGhlIG1hdGNoaW5nIGJ1aWxkIHJl
cXVlc3QgSUQpIGlmIGl0IG5lZWRzIHRvIGJlIHVwZGF0ZWQgaW4gdGhlIHNlcnZlci4KKyAgICAg
ICAgKEJ1aWxkYm90U3luY2VyKTogVGhpcyBjbGFzcyAKKyAgICAgICAgKEJ1aWxkYm90U3luY2Vy
LnByb3RvdHlwZS5hZGRUZXN0Q29uZmlndXJhdGlvbik6IEFkZGVkLgorICAgICAgICAoQnVpbGRi
b3RTeW5jZXIucHJvdG90eXBlLnRlc3RDb25maWd1cmF0aW9ucyk6IFJldHVybnMgdGhlIGxpc3Qg
b2YgdGVzdCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgKEJ1aWxkYm90U3luY2VyLnByb3RvdHlw
ZS5tYXRjaGVzQ29uZmlndXJhdGlvbik6IFJldHVybnMgdHJ1ZSBpZmYgdGhlIHJlcXVlc3QgY2Fu
IGJlIHNjaGVkdWxlZCBvbgorICAgICAgICB0aGlzIGJ1aWxkZXIuCisgICAgICAgIChCdWlsZGJv
dFN5bmNlci5wcm90b3R5cGUuc2NoZWR1bGVSZXF1ZXN0KTogQWRkZWQuIFNjaGVkdWxlcyBhIG5l
dyBqb2Igb24gYnVpbGRib3QgZm9yIGEgcmVxdWVzdC4KKyAgICAgICAgKEJ1aWxkYm90U3luY2Vy
LnByb3RvdHlwZS5zY2hlZHVsZUZpcnN0UmVxdWVzdEluR3JvdXBJZkF2YWlsYWJsZSk6IEFkZGVk
LiBTY2hlZHVsZXMgYSBuZXcgam9iIGZvcgorICAgICAgICB0aGUgc3BlY2lmaWVkIGJ1aWxkIHJl
cXVlc3Qgb24gdGhlIGZpcnN0IHNsYXZlIHRoYXQncyBhdmFpbGFibGUuCisgICAgICAgIChCdWls
ZGJvdFN5bmNlci5wcm90b3R5cGUucHVsbEJ1aWxkYm90KTogUmV0dXJuIGEgbGlzdCBvZiBCdWls
ZGJvdEJ1aWxkRW50cnkgaW5zdGVhZCBvZiBhbiBvYmplY3QuCisgICAgICAgIEFsc28gc3RvcmUg
aXQgb24gYW4gaW5zdGFuY2UgdmFyaWFibGUgc28gdGhhdCBzY2hlZHVsZUZpcnN0UmVxdWVzdElu
R3JvdXBJZkF2YWlsYWJsZSBjb3VsZCB1c2UgaXQuCisgICAgICAgIChCdWlsZGJvdFN5bmNlci5w
cm90b3R5cGUuX3B1bGxSZWNlbnRCdWlsZHMpOgorICAgICAgICAoQnVpbGRib3RTeW5jZXIucHJv
dG90eXBlLnBhdGhGb3JQZW5kaW5nQnVpbGRzSlNPTik6IFJlbmFtZWQgZnJvbSB1cmxGb3JQZW5k
aW5nQnVpbGRzSlNPTiBhbmQgbm93CisgICAgICAgIG9ubHkgcmV0dXJucyB0aGUgcGF0aCBpbnN0
ZWFkIG9mIHRoZSBmdWxsIFVSTCBzaW5jZSBSZW1vdGVBUEkgdGFrZXMgYSBwYXRoLCBub3QgZnVs
bCBVUkwuCisgICAgICAgIChCdWlsZGJvdFN5bmNlci5wcm90b3R5cGUucGF0aEZvckJ1aWxkSlNP
Tik6IERpdHRvIGZyb20gcGF0aEZvckJ1aWxkSlNPTi4KKyAgICAgICAgKEJ1aWxkYm90U3luY2Vy
LnByb3RvdHlwZS5wYXRoRm9yRm9yY2VCdWlsZCk6IEFkZGVkLgorICAgICAgICAoQnVpbGRib3RT
eW5jZXIucHJvdG90eXBlLnVybCk6IFVzZSBSZW1vdGVBUEkncyB1cmwgbWV0aG9kIGluc3RlYWQg
b2YgbWFudWFsbHkgY29uc3RydWN0aW5nIFVSTC4KKyAgICAgICAgKEJ1aWxkYm90U3luY2VyLnBy
b3RvdHlwZS51cmxGb3JCdWlsZE51bWJlcik6IERpdHRvLgorICAgICAgICAoQnVpbGRib3RTeW5j
ZXIucHJvdG90eXBlLl9wcm9wZXJ0aWVzRm9yQnVpbGRSZXF1ZXN0KTogTm93IHRoYXQgZWFjaCBz
eW5jZXIgY2FuIGhhdmUgbXVsdGlwbGUgdGVzdAorICAgICAgICBjb25maWd1cmF0aW9ucyBhc3Nv
Y2lhdGVkIHdpdGggaXQsIGZpbmQgdGhlIG9uZSBtYXRjaGluZyBmb3IgdGhpcyByZXF1ZXN0Lgor
ICAgICAgICAoQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcpOiBDcmVhdGUgYSBzeW5jZXIgcGVy
IGJ1aWxkZXIgYW5kIGFkZCBhbGwgdGVzdCBjb25maWd1cmF0aW9ucyB0byBpdC4KKyAgICAgICAg
KEJ1aWxkYm90U3luY2VyLl92YWxpZGF0ZUFuZE1lcmdlQ29uZmlnKTogQWRkZWQgdGhlIHN1cHBv
cnQgZm9yICdTbGF2ZUxpc3QnLCB3aGljaCBpcyBhIGxpc3Qgb2YKKyAgICAgICAgc2xhdmUgbmFt
ZXMgcHJlc2VudCBvbiB0aGlzIGJ1aWxkZXIuCisgICAgICAgICogdG9vbHMvanMvYnVpbGRib3Qt
dHJpZ2dlcmFibGUuanM6IEFkZGVkLgorICAgICAgICAoQnVpbGRib3RUcmlnZ2VyYWJsZSk6IEFk
ZGVkLgorICAgICAgICAoQnVpbGRib3RUcmlnZ2VyYWJsZS5wcm90b3R5cGUubmFtZSk6IEFkZGVk
LgorICAgICAgICAoQnVpbGRib3RUcmlnZ2VyYWJsZS5wcm90b3R5cGUuc3luY09uY2UpOiBBZGRl
ZC4gVGhlIG1haW4gbG9naWMgZm9yIHRoZSBzeW5jaW5nIHNjcmlwdC4gSXQgcHVsbHMKKyAgICAg
ICAgZXhpc3RpbmcgYnVpbGQgcmVxdWVzdHMgZnJvbSB0aGUgcGVyZiBkYXNoYm9hcmQsIHB1bGxz
IGJ1aWxkYm90IGZvciBwZW5kaW5nIGFuZCBydW5uaW5nL2NvbXBsZXRlZAorICAgICAgICBidWls
ZHMgb24gZWFjaCBidWlsZGVyIChyZXByZXNlbnRlZCBieSBlYWNoIHN5bmNlciksIHNjaGVkdWxl
cyBidWlsZCByZXF1ZXN0cyBvbiBidWlsZGJvdCBpZiB0aGVyZQorICAgICAgICBpcyBhbnkgYnVp
bGRlci9zbGF2ZSBhdmFpbGFibGUsIGFuZCB1cGRhdGVzIHRoZSBzdGF0dXMgb2YgYnVpbGQgcmVx
dWVzdHMgaW4gdGhlIGRhdGFiYXNlLgorICAgICAgICAoQnVpbGRib3RUcmlnZ2VyYWJsZS5wcm90
b3R5cGUuX3ZhbGlkYXRlUmVxdWVzdHMpOiBBZGRlZC4KKyAgICAgICAgKEJ1aWxkYm90VHJpZ2dl
cmFibGUucHJvdG90eXBlLl9wdWxsQnVpbGRib3RPbkFsbFN5bmNlcnMpOiBBZGRlZC4KKyAgICAg
ICAgKEJ1aWxkYm90VHJpZ2dlcmFibGUucHJvdG90eXBlLl9zY2hlZHVsZU5leHRSZXF1ZXN0SW5H
cm91cElmU2xhdmVJc0F2YWlsYWJsZSk6IEFkZGVkLgorICAgICAgICAoQnVpbGRib3RUcmlnZ2Vy
YWJsZS5fdGVzdEdyb3VwTWFwRm9yQnVpbGRSZXF1ZXN0cyk6IEFkZGVkLgorICAgICAgICAqIHRv
b2xzL2pzL2RhdGFiYXNlLmpzOgorICAgICAgICAqIHRvb2xzL2pzL3BhcnNlLWFyZ3VtZW50cy5q
czogQWRkZWQuIEV4dHJhY3RlZCBvdXQgb2YgdG9vbHMvZGV0ZWN0LWNoYW5nZXMuanMuCisgICAg
ICAgIChwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgICogdG9vbHMvanMvcmVtb3RlLmpzOgorICAg
ICAgICAoUmVtb3RlQVBJKTogTm93IG9wdGlvbmFsbHkgdGFrZXMgdGhlIHNlcnZlciBjb25maWd1
cmF0aW9uLgorICAgICAgICAoUmVtb3RlQVBJLnByb3RvdHlwZS51cmwpOiBBZGRlZC4KKyAgICAg
ICAgKFJlbW90ZUFQSS5wcm90b3R5cGUuZ2V0SlNPTik6IFJlbW92ZWQgdGhlIGNvZGUgZm9yIHNw
ZWNpZnlpbmcgcmVxdWVzdCBjb250ZW50LgorICAgICAgICAoUmVtb3RlQVBJLnByb3RvdHlwZS5n
ZXRKU09OV2l0aFN0YXR1cyk6IERpdHRvLgorICAgICAgICAoUmVtb3RlQVBJLnByb3RvdHlwZS5w
b3N0SlNPTik6IEFkZGVkLgorICAgICAgICAoUmVtb3RlQVBJLnByb3RvdHlwZS5wb3N0Rm9ybVVy
bGVuY29kZWREYXRhKTogQWRkZWQuCisgICAgICAgIChSZW1vdGVBUEkucHJvdG90eXBlLnNlbmRI
dHRwUmVxdWVzdCk6IEZpeGVkIHRoZSBjb2RlIHRvIHNwZWNpZnkgYXV0aC4KKyAgICAgICAgKiB0
b29scy9qcy92My1tb2RlbHMuanM6IERvbid0IGluY2x1ZGUgUmVtb3RlQVBJIGhlcmUgYXMgdGhl
eSByZXF1aXJlIGEgY29uZmlndXJhdGlvbiBmb3IgZWFjaCBob3N0LgorICAgICAgICAqIHRvb2xz
L3N5bmMtYnVpbGRib3QuanM6IEFkZGVkLgorICAgICAgICAobWFpbik6IEFkZGVkLiBQYXJzZSB0
aGUgYXJndW1lbnRzIGFuZCBzdGFydCB0aGUgbG9vcC4KKyAgICAgICAgKHN5bmNMb29wKTogQWRk
ZWQuCisgICAgICAgICogdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanM6IEFkZGVk
IHRlc3RzIGZvciBwdWxsQnVpbGRib3QsIHNjaGVkdWxlUmVxdWVzdCwgYXMgd2VsbCBhcworICAg
ICAgICBzY2hlZHVsZUZpcnN0UmVxdWVzdEluR3JvdXBJZkF2YWlsYWJsZS4gUmVmYWN0b3JlZCBo
ZWxwZXIgZnVuY3Rpb25zIGFzIG5lZWRlZC4KKyAgICAgICAgKHNhbXBsZWlPU0NvbmZpZyk6Cisg
ICAgICAgIChzbWFsbENvbmZpZ3VyYXRpb24pOiBBZGRlZC4KKyAgICAgICAgKHNtYWxsUGVuZGlu
Z0J1aWxkKTogQWRkZWQuCisgICAgICAgIChzbWFsbEluUHJvZ3Jlc3NCdWlsZCk6IEFkZGVkLgor
ICAgICAgICAoc21hbGxGaW5pc2hlZEJ1aWxkKTogQWRkZWQuCisgICAgICAgIChjcmVhdGVTYW1w
bGVCdWlsZFJlcXVlc3QpOiBDcmVhdGUgYSB1bmlxdWUgYnVpbGQgcmVxdWVzdCBmb3IgZWFjaCBw
bGF0Zm9ybS4KKyAgICAgICAgKHNhbXBsZVBlbmRpbmdCdWlsZCk6IE9wdGlvbmFsbHkgc3BlY2lm
eSBidWlsZCB0aW1lIGFuZCBzbGF2ZSBuYW1lLgorICAgICAgICAoc2FtcGxlSW5Qcm9ncmVzc0J1
aWxkKTogT3B0aW9uYWxseSBzcGVjaWZ5IHNsYXZlIG5hbWUuCisgICAgICAgIChzYW1wbGVGaW5p
c2hlZEJ1aWxkKTogRGl0dG8uCisgICAgICAgICogdW5pdC10ZXN0cy9yZXNvdXJjZXMvbW9jay1y
ZW1vdGUtYXBpLmpzOgorICAgICAgICAoYXNzZXJ0Lm5vdFJlYWNoZWQuYXNzZXJ0Lm5vdFJlYWNo
ZWQpOgorICAgICAgICAoTW9ja1JlbW90ZUFQSS51cmwpOiBBZGRlZC4KKyAgICAgICAgKE1vY2tS
ZW1vdGVBUEkucG9zdEZvcm1VcmxlbmNvZGVkRGF0YSk6IEFkZGVkLgorICAgICAgICAoTW9ja1Jl
bW90ZUFQSS5fYWRkUmVxdWVzdCk6IEV4dHJhY3RlZCBmcm9tIGdldEpTT05XaXRoU3RhdHVzLgor
ICAgICAgICAoTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCk6IEV4dHJhY3RlZCBmcm9tIGlu
amVjdC4gRm9yIHRvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzLCB3ZQorICAgICAg
ICBuZWVkIHRvIGluc3RhbnRpYXRlIGEgUmVtb3RlQVBJIGZvciBidWlsZGJvdCB3aXRob3V0IHJl
cGxhY2luZyBnbG9iYWwuUmVtb3RlQVBJLgorICAgICAgICAoTW9ja1JlbW90ZUFQSS5pbmplY3Qp
OgorICAgICAgICAoTW9ja1JlbW90ZUFQSS5yZXNldCk6IEFkZGVkLgorCiAyMDE2LTAzLTMwICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFNpbXBsaWZ5IEFQSSBv
ZiBUZXN0IG1vZGVsIGJ5IHJlbW92aW5nIFRlc3Quc2V0UGFyZW50VGVzdApJbmRleDogV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9idWls
ZC1yZXF1ZXN0LmpzCShyZXZpc2lvbiAxOTkwODUpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw4ICs0MCwxMCBAQCBjbGFzcyBCdWlsZFJlcXVlc3QgZXh0ZW5kcyBEYXRhTW9kZWxPYmplCiAg
ICAgb3JkZXIoKSB7IHJldHVybiB0aGlzLl9vcmRlcjsgfQogICAgIHJvb3RTZXQoKSB7IHJldHVy
biB0aGlzLl9yb290U2V0OyB9CiAKKyAgICBzdGF0dXMoKSB7IHJldHVybiB0aGlzLl9zdGF0dXM7
IH0KICAgICBoYXNGaW5pc2hlZCgpIHsgcmV0dXJuIHRoaXMuX3N0YXR1cyA9PSAnZmFpbGVkJyB8
fCB0aGlzLl9zdGF0dXMgPT0gJ2NvbXBsZXRlZCcgfHwgdGhpcy5fc3RhdHVzID09ICdjYW5jZWxl
ZCc7IH0KICAgICBoYXNTdGFydGVkKCkgeyByZXR1cm4gdGhpcy5fc3RhdHVzICE9ICdwZW5kaW5n
JzsgfQorICAgIGlzU2NoZWR1bGVkKCkgeyByZXR1cm4gdGhpcy5fc3RhdHVzID09ICdzY2hlZHVs
ZWQnOyB9CiAgICAgaXNQZW5kaW5nKCkgeyByZXR1cm4gdGhpcy5fc3RhdHVzID09ICdwZW5kaW5n
JzsgfQogICAgIHN0YXR1c0xhYmVsKCkKICAgICB7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL21vZGVscy9tZXRyaWMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWV0cmljLmpzCShyZXZpc2lvbiAxOTkw
ODUpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9tZXRyaWMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw3IEBAIGNsYXNzIE1ldHJpYyBleHRlbmRz
IExhYmVsZWRPYmplY3QgewogCiAgICAgcGF0aCgpIHsgcmV0dXJuIHRoaXMuX3Rlc3QucGF0aCgp
LmNvbmNhdChbdGhpc10pOyB9CiAKLSAgICBmdWxsTmFtZSgpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fdGVzdC5wYXRoKCkubWFwKGZ1bmN0aW9uICh0ZXN0KSB7IHJldHVybiB0ZXN0Lmxh
YmVsKCk7IH0pLmpvaW4oJyBcdTIyMEIgJykgKyAnIDogJyArIHRoaXMubGFiZWwoKTsKLSAgICB9
CisgICAgZnVsbE5hbWUoKSB7IHJldHVybiB0aGlzLl90ZXN0LmZ1bGxOYW1lKCkgKyAnIDogJyAr
IHRoaXMubGFiZWwoKTsgfQogCiAgICAgbGFiZWwoKQogICAgIHsKSW5kZXg6IFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3BsYXRmb3JtLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3BsYXRmb3JtLmpzCShy
ZXZpc2lvbiAxOTkwODUpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21v
ZGVscy9wbGF0Zm9ybS5qcwkod29ya2luZyBjb3B5KQpAQCAtOCwxMCArOCwxOCBAQCBjbGFzcyBQ
bGF0Zm9ybSBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB0aGlzLl9sYXN0TW9kaWZp
ZWRCeU1ldHJpYyA9IG9iamVjdC5sYXN0TW9kaWZpZWRCeU1ldHJpYzsKICAgICAgICAgdGhpcy5f
Y29udGFpbmluZ1Rlc3RzID0gbnVsbDsKIAorICAgICAgICB0aGlzLmVuc3VyZU5hbWVkU3RhdGlj
TWFwKCduYW1lJylbb2JqZWN0Lm5hbWVdID0gdGhpczsKKwogICAgICAgICBmb3IgKHZhciBtZXRy
aWMgb2YgdGhpcy5fbWV0cmljcykKICAgICAgICAgICAgIG1ldHJpYy5hZGRQbGF0Zm9ybSh0aGlz
KTsKICAgICB9CiAKKyAgICBzdGF0aWMgZmluZEJ5TmFtZShuYW1lKQorICAgIHsKKyAgICAgICAg
dmFyIG1hcCA9IHRoaXMubmFtZWRTdGF0aWNNYXAoJ25hbWUnKTsKKyAgICAgICAgcmV0dXJuIG1h
cCA/IG1hcFtuYW1lXSA6IG51bGw7CisgICAgfQorCiAgICAgaGFzVGVzdCh0ZXN0KQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9jb250YWluaW5nVGVzdHMpIHsKSW5kZXg6IFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC5qcwkocmV2aXNpb24g
MTk5MDg1KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVz
dC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsMjUgQEAgY2xhc3MgVGVzdCBleHRlbmRz
IExhYmVsZWRPYmplY3QgewogCiAgICAgc3RhdGljIHRvcExldmVsVGVzdHMoKSB7IHJldHVybiB0
aGlzLnNvcnRCeU5hbWUodGhpcy5saXN0Rm9yU3RhdGljTWFwKCd0b3BMZXZlbFRlc3RzJykpOyB9
CiAKKyAgICBzdGF0aWMgZmluZEJ5UGF0aChwYXRoKQorICAgIHsKKyAgICAgICAgdmFyIG1hdGNo
aW5nVGVzdCA9IG51bGw7CisgICAgICAgIHZhciB0ZXN0TGlzdCA9IHRoaXMudG9wTGV2ZWxUZXN0
cygpOworICAgICAgICBmb3IgKHZhciBwYXJ0IG9mIHBhdGgpIHsKKyAgICAgICAgICAgIG1hdGNo
aW5nVGVzdCA9IG51bGw7CisgICAgICAgICAgICBmb3IgKHZhciB0ZXN0IG9mIHRlc3RMaXN0KSB7
CisgICAgICAgICAgICAgICAgaWYgKHBhcnQgPT0gdGVzdC5uYW1lKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbWF0Y2hpbmdUZXN0ID0gdGVzdDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFtYXRj
aGluZ1Rlc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB0ZXN0
TGlzdCA9IG1hdGNoaW5nVGVzdC5jaGlsZFRlc3RzKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG1hdGNoaW5nVGVzdDsKKyAgICB9CisKICAgICBwYXJlbnRUZXN0KCkgeyByZXR1cm4gVGVz
dC5maW5kQnlJZCh0aGlzLl9wYXJlbnRJZCk7IH0KIAogICAgIHBhdGgoKQpAQCAtMzUsNiArNTQs
OCBAQCBjbGFzcyBUZXN0IGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHJldHVybiBw
YXRoOwogICAgIH0KIAorICAgIGZ1bGxOYW1lKCkgeyByZXR1cm4gdGhpcy5wYXRoKCkubWFwKGZ1
bmN0aW9uICh0ZXN0KSB7IHJldHVybiB0ZXN0LmxhYmVsKCk7IH0pLmpvaW4oJyBcdTIyMEIgJyk7
IH0KKwogICAgIG9ubHlDb250YWluc1NpbmdsZU1ldHJpYygpIHsgcmV0dXJuICF0aGlzLmNoaWxk
VGVzdHMoKS5sZW5ndGggJiYgdGhpcy5fbWV0cmljcy5sZW5ndGggPT0gMTsgfQogCiAgICAgY2hp
bGRUZXN0cygpCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2Fw
aS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwkocmV2aXNp
b24gMTk5MDg1KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGkt
YnVpbGQtcmVxdWVzdHMtdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw3IEBACiAK
IGxldCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKIAotcmVxdWlyZSgnLi4vdG9vbHMvanMv
djMtbW9kZWxzLmpzJyk7Ci0KK2xldCBNb2NrRGF0YSA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL21v
Y2stZGF0YS5qcycpOwogbGV0IFRlc3RTZXJ2ZXIgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0
LXNlcnZlci5qcycpOwogCiBkZXNjcmliZSgnL2FwaS9idWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9u
ICgpIHsKQEAgLTExLDE3ICsxMCw4IEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywg
ZnVuY3Rpb24KICAgICBUZXN0U2VydmVyLmluamVjdCgpOwogCiAgICAgYmVmb3JlRWFjaChmdW5j
dGlvbiAoKSB7Ci0gICAgICAgIEFuYWx5c2lzVGFzay5fZmV0Y2hBbGxQcm9taXNlID0gbnVsbDsK
LSAgICAgICAgQW5hbHlzaXNUYXNrLmNsZWFyU3RhdGljTWFwKCk7Ci0gICAgICAgIEJ1aWxkUmVx
dWVzdC5jbGVhclN0YXRpY01hcCgpOwotICAgICAgICBDb21taXRMb2cuY2xlYXJTdGF0aWNNYXAo
KTsKLSAgICAgICAgTWV0cmljLmNsZWFyU3RhdGljTWFwKCk7Ci0gICAgICAgIFBsYXRmb3JtLmNs
ZWFyU3RhdGljTWFwKCk7Ci0gICAgICAgIFJlcG9zaXRvcnkuY2xlYXJTdGF0aWNNYXAoKTsKLSAg
ICAgICAgUm9vdFNldC5jbGVhclN0YXRpY01hcCgpOwotICAgICAgICBUZXN0LmNsZWFyU3RhdGlj
TWFwKCk7Ci0gICAgICAgIFRlc3RHcm91cC5jbGVhclN0YXRpY01hcCgpOwotICAgIH0pCisgICAg
ICAgIE1vY2tEYXRhLnJlc2V0VjNNb2RlbHMoKTsKKyAgICB9KTsKIAogICAgIGl0KCdzaG91bGQg
cmV0dXJuICJUcmlnZ2VyYWJsZU5vdEZvdW5kIiB3aGVuIHRoZSBkYXRhYmFzZSBpcyBlbXB0eScs
IGZ1bmN0aW9uIChkb25lKSB7CiAgICAgICAgIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNP
TignL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13ZWJraXQnKS50aGVuKGZ1bmN0aW9uIChjb250
ZW50KSB7CkBAIC00NSw1MyArMzUsMTAgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMn
LCBmdW5jdGlvbgogICAgICAgICB9KS5jYXRjaChkb25lKTsKICAgICB9KTsKIAotICAgIGZ1bmN0
aW9uIGFkZE1vY2tEYXRhKGRiLCBzdGF0dXNMaXN0KQotICAgIHsKLSAgICAgICAgaWYgKCFzdGF0
dXNMaXN0KQotICAgICAgICAgICAgc3RhdHVzTGlzdCA9IFsncGVuZGluZycsICdwZW5kaW5nJywg
J3BlbmRpbmcnLCAncGVuZGluZyddOwotICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7aWQ6IDEsIG5hbWU6ICdi
dWlsZC13ZWJraXQnfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtp
ZDogOSwgbmFtZTogJ09TIFgnfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmll
cycsIHtpZDogMTEsIG5hbWU6ICdXZWJLaXQnfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2Nv
bW1pdHMnLCB7aWQ6IDg3ODMyLCByZXBvc2l0b3J5OiA5LCByZXZpc2lvbjogJzEwLjExIDE1QTI4
NCd9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHtpZDogOTMxMTYsIHJlcG9z
aXRvcnk6IDExLCByZXZpc2lvbjogJzE5MTYyMicsIHRpbWU6IChuZXcgRGF0ZSgxNDQ1OTQ1ODE2
ODc4KSkudG9JU09TdHJpbmcoKX0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywg
e2lkOiA5NjMzNiwgcmVwb3NpdG9yeTogMTEsIHJldmlzaW9uOiAnMTkyNzM2JywgdGltZTogKG5l
dyBEYXRlKDE0NDgyMjUzMjU2NTApKS50b0lTT1N0cmluZygpfSksCi0gICAgICAgICAgICBkYi5p
bnNlcnQoJ3BsYXRmb3JtcycsIHtpZDogNjUsIG5hbWU6ICdzb21lIHBsYXRmb3JtJ30pLAotICAg
ICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMjAwLCBuYW1lOiAnc29tZSB0ZXN0J30p
LAotICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X21ldHJpY3MnLCB7aWQ6IDMwMCwgdGVzdDog
MjAwLCBuYW1lOiAnc29tZSBtZXRyaWMnfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3Rf
Y29uZmlndXJhdGlvbnMnLCB7aWQ6IDMwMSwgbWV0cmljOiAzMDAsIHBsYXRmb3JtOiA2NSwgdHlw
ZTogJ2N1cnJlbnQnfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Jvb3Rfc2V0cycsIHtpZDog
NDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Jvb3RzJywge3NldDogNDAxLCBjb21taXQ6
IDg3ODMyfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Jvb3RzJywge3NldDogNDAxLCBjb21t
aXQ6IDkzMTE2fSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Jvb3Rfc2V0cycsIHtpZDogNDAy
fSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Jvb3RzJywge3NldDogNDAyLCBjb21taXQ6IDg3
ODMyfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Jvb3RzJywge3NldDogNDAyLCBjb21taXQ6
IDk2MzM2fSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rhc2tzJywge2lkOiA1
MDAsIHBsYXRmb3JtOiA2NSwgbWV0cmljOiAzMDAsIG5hbWU6ICdzb21lIHRhc2snfSksCi0gICAg
ICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA2MDAsIHRhc2s6
IDUwMCwgbmFtZTogJ3NvbWUgdGVzdCBncm91cCd9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgn
YnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMCwgc3RhdHVzOiBzdGF0dXNMaXN0WzBdLCB0cmlnZ2Vy
YWJsZTogMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAwLCBy
b290X3NldDogNDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywg
e2lkOiA3MDEsIHN0YXR1czogc3RhdHVzTGlzdFsxXSwgdHJpZ2dlcmFibGU6IDEsIHBsYXRmb3Jt
OiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMSwgcm9vdF9zZXQ6IDQwMn0pLAot
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAyLCBzdGF0dXM6
IHN0YXR1c0xpc3RbMl0sIHRyaWdnZXJhYmxlOiAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwg
Z3JvdXA6IDYwMCwgb3JkZXI6IDIsIHJvb3Rfc2V0OiA0MDF9KSwKLSAgICAgICAgICAgIGRiLmlu
c2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMywgc3RhdHVzOiBzdGF0dXNMaXN0WzNdLCB0
cmlnZ2VyYWJsZTogMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVy
OiAzLCByb290X3NldDogNDAyfSksCi0gICAgICAgIF0pOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IGFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiLCBzdGF0dXNMaXN0KQotICAgIHsKLSAgICAgICAg
aWYgKCFzdGF0dXNMaXN0KQotICAgICAgICAgICAgc3RhdHVzTGlzdCA9IFsncGVuZGluZycsICdw
ZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddOwotICAgICAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWwotICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNpc190ZXN0X2dyb3VwcycsIHtpZDog
NTk5LCB0YXNrOiA1MDAsIG5hbWU6ICdhbm90aGVyIHRlc3QgZ3JvdXAnfSksCi0gICAgICAgICAg
ICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTMsIHN0YXR1czogc3RhdHVzTGlz
dFszXSwgdHJpZ2dlcmFibGU6IDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNTk5
LCBvcmRlcjogMywgcm9vdF9zZXQ6IDQwMn0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWls
ZF9yZXF1ZXN0cycsIHtpZDogNzEwLCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0sIHRyaWdnZXJhYmxl
OiAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDU5OSwgb3JkZXI6IDAsIHJvb3Rf
c2V0OiA0MDF9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6
IDcxMiwgc3RhdHVzOiBzdGF0dXNMaXN0WzJdLCB0cmlnZ2VyYWJsZTogMSwgcGxhdGZvcm06IDY1
LCB0ZXN0OiAyMDAsIGdyb3VwOiA1OTksIG9yZGVyOiAyLCByb290X3NldDogNDAxfSksCi0gICAg
ICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTEsIHN0YXR1czogc3Rh
dHVzTGlzdFsxXSwgdHJpZ2dlcmFibGU6IDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91
cDogNTk5LCBvcmRlcjogMSwgcm9vdF9zZXQ6IDQwMn0pLAotICAgICAgICBdKTsKLSAgICB9Ci0K
ICAgICBpdCgnc2hvdWxkIHJldHVybiBidWlsZCByZXF1ZXRzIGFzc29jaWF0ZWQgd2l0aCBhIGdp
dmVuIHRyaWdnZXJhYmxlIHdpdGggYXBwcm9wcmlhdGUgcm9vdHMgYW5kIHJvb3RTZXRzJywgZnVu
Y3Rpb24gKGRvbmUpIHsKICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwog
ICAgICAgICBkYi5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICByZXR1
cm4gYWRkTW9ja0RhdGEoZGIpOworICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tE
YXRhKGRiKTsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OV2l0aFN0YXR1cygnL2FwaS9idWlsZC1y
ZXF1ZXN0cy9idWlsZC13ZWJraXQnKTsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29udGVu
dCkgewpAQCAtMTQ5LDcgKzk2LDcgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBm
dW5jdGlvbgogICAgIGl0KCdzaG91bGQgc3VwcG9ydCB1c2VMZWdhY3lJZFJlc29sdXRpb24gb3B0
aW9uJywgZnVuY3Rpb24gKGRvbmUpIHsKICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRh
YmFzZSgpOwogICAgICAgICBkYi5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRkTW9ja0RhdGEoZGIpOworICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRh
LmFkZE1vY2tEYXRhKGRiKTsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OV2l0aFN0YXR1cygnL2Fw
aS9idWlsZC1yZXF1ZXN0cy9idWlsZC13ZWJraXQ/dXNlTGVnYWN5SWRSZXNvbHV0aW9uPXRydWUn
KTsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29udGVudCkgewpAQCAtMjA3LDcgKzE1NCw3
IEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24KICAgICBpdCgnc2hv
dWxkIGJlIGZldGNoYWJsZSBieSBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZScsIGZ1
bmN0aW9uIChkb25lKSB7CiAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
ICAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmV0
dXJuIGFkZE1vY2tEYXRhKGRiKTsKKyAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2Nr
RGF0YShkYik7CiAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0
dXJuIE1hbmlmZXN0LmZldGNoKCk7CiAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewpAQCAt
MzAyLDcgKzI0OSw3IEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24K
ICAgICBpdCgnc2hvdWxkIG5vdCBpbmNsdWRlIGEgYnVpbGQgcmVxdWVzdCBpZiBhbGwgcmVxdWVz
dHMgaW4gdGhlIHNhbWUgZ3JvdXAgaGFkIGJlZW4gY29tcGxldGVkJywgZnVuY3Rpb24gKGRvbmUp
IHsKICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAgICBkYi5j
b25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICByZXR1cm4gYWRkTW9ja0Rh
dGEoZGIsIFsnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnY29tcGxldGVk
J10pOworICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBs
ZXRlZCcsICdjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZCddKTsKICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4gTWFuaWZlc3QuZmV0Y2go
KTsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CkBAIC0zMTYsNyArMjYzLDcgQEAgZGVz
Y3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbgogICAgIGl0KCdzaG91bGQgbm90
IGluY2x1ZGUgYSBidWlsZCByZXF1ZXN0IGlmIGFsbCByZXF1ZXN0cyBpbiB0aGUgc2FtZSBncm91
cCBoYWQgYmVlbiBmYWlsZWQgb3IgY2FuY2xlZCcsIGZ1bmN0aW9uIChkb25lKSB7CiAgICAgICAg
IGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgZGIuY29ubmVjdCgpLnRo
ZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmV0dXJuIGFkZE1vY2tEYXRhKGRiLCBbJ2Zh
aWxlZCcsICdmYWlsZWQnLCAnY2FuY2VsZWQnLCAnY2FuY2VsZWQnXSk7CisgICAgICAgICAgICBy
ZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnZmFpbGVkJywgJ2ZhaWxlZCcsICdjYW5j
ZWxlZCcsICdjYW5jZWxlZCddKTsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICByZXR1cm4gTWFuaWZlc3QuZmV0Y2goKTsKICAgICAgICAgfSkudGhlbihmdW5jdGlv
biAoKSB7CkBAIC0zMzAsNyArMjc3LDcgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMn
LCBmdW5jdGlvbgogICAgIGl0KCdzaG91bGQgaW5jbHVkZSBhbGwgYnVpbGQgcmVxdWVzdHMgb2Yg
YSB0ZXN0IGdyb3VwIGlmIG9uZSBvZiB0aGUgcmVxZXVzdHMgaW4gdGhlIGdyb3VwIGhhZCBub3Qg
YmVlbiBmaW5pc2hlZCcsIGZ1bmN0aW9uIChkb25lKSB7CiAgICAgICAgIGxldCBkYiA9IFRlc3RT
ZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkg
ewotICAgICAgICAgICAgcmV0dXJuIGFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdjb21w
bGV0ZWQnLCAnc2NoZWR1bGVkJywgJ3BlbmRpbmcnXSk7CisgICAgICAgICAgICByZXR1cm4gTW9j
a0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdzY2hlZHVs
ZWQnLCAncGVuZGluZyddKTsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICByZXR1cm4gTWFuaWZlc3QuZmV0Y2goKTsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
KSB7CkBAIC0zNTYsNyArMzAzLDcgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBm
dW5jdGlvbgogICAgIGl0KCdzaG91bGQgaW5jbHVkZSBhbGwgYnVpbGQgcmVxdWVzdHMgb2YgYSB0
ZXN0IGdyb3VwIGlmIG9uZSBvZiB0aGUgcmVxZXVzdHMgaW4gdGhlIGdyb3VwIGlzIHN0aWxsIHJ1
bm5pbmcnLCBmdW5jdGlvbiAoZG9uZSkgewogICAgICAgICBsZXQgZGIgPSBUZXN0U2VydmVyLmRh
dGFiYXNlKCk7CiAgICAgICAgIGRiLmNvbm5lY3QoKS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgICAgIHJldHVybiBhZGRNb2NrRGF0YShkYiwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywg
J2NvbXBsZXRlZCcsICdydW5uaW5nJ10pOworICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFk
ZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ3J1
bm5pbmcnXSk7CiAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0
dXJuIE1hbmlmZXN0LmZldGNoKCk7CiAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewpAQCAt
MzgyLDcgKzMyOSw3IEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24K
ICAgICBpdCgnc2hvdWxkIG9yZGVyIGJ1aWxkIHJlcXVlc3RzIGJhc2VkIG9uIHRlc3QgZ3JvdXAg
YW5kIG9yZGVyJywgZnVuY3Rpb24gKGRvbmUpIHsKICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZl
ci5kYXRhYmFzZSgpOwogICAgICAgICBkYi5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2FkZE1vY2tEYXRhKGRiKSwgYWRkQW5vdGhl
ck1vY2tUZXN0R3JvdXAoZGIpXSkKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbTW9j
a0RhdGEuYWRkTW9ja0RhdGEoZGIpLCBNb2NrRGF0YS5hZGRBbm90aGVyTW9ja1Rlc3RHcm91cChk
YildKQogICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiBN
YW5pZmVzdC5mZXRjaCgpOwogICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKSW5kZXg6IFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtYnVpbGRib3QtdHJpZ2dl
cmFibGUtdGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Nl
cnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2VyYWJsZS10ZXN0cy5qcwkocmV2aXNpb24g
MCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtYnVpbGRi
b3QtdHJpZ2dlcmFibGUtdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NDQgQEAK
Kyd1c2Ugc3RyaWN0JzsKKworbGV0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpOworCitsZXQg
QnVpbGRib3RUcmlnZ2VyYWJsZSA9IHJlcXVpcmUoJy4uL3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdn
ZXJhYmxlLmpzJykuQnVpbGRib3RUcmlnZ2VyYWJsZTsKK2xldCBNb2NrRGF0YSA9IHJlcXVpcmUo
Jy4vcmVzb3VyY2VzL21vY2stZGF0YS5qcycpOworbGV0IE1vY2tSZW1vdGVBUEkgPSByZXF1aXJl
KCcuLi91bml0LXRlc3RzL3Jlc291cmNlcy9tb2NrLXJlbW90ZS1hcGkuanMnKS5Nb2NrUmVtb3Rl
QVBJOworbGV0IFRlc3RTZXJ2ZXIgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5q
cycpOworCitjbGFzcyBNb2NrTG9nZ2VyIHsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAg
ICAgICB0aGlzLl9sb2dzID0gW107CisgICAgfQorCisgICAgbG9nKHRleHQpIHsgdGhpcy5fbG9n
cy5wdXNoKHRleHQpOyB9CisgICAgZXJyb3IodGV4dCkgeyB0aGlzLl9sb2dzLnB1c2godGV4dCk7
IH0KK30KKworZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbiAoKSB7Cisg
ICAgdGhpcy50aW1lb3V0KDEwMDAwKTsKKyAgICBUZXN0U2VydmVyLmluamVjdCgpOworCisgICAg
YmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7CisgICAgICAgIE1vY2tEYXRhLnJlc2V0VjNNb2RlbHMo
KTsKKyAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcn
KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdzeW5jT25jZScsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgaXQoJ3Nob3VsZCBzY2hlZHVsZSB0aGUgbmV4dCBidWlsZCByZXF1ZXN0IHdoZW4gdGhl
cmUgYXJlIG5vIHBlbmRpbmcgYnVpbGRzJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAg
IGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIGxldCBzeW5jUHJv
bWlzZTsKKyAgICAgICAgICAgIGRiLmNvbm5lY3QoKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnY29tcGxldGVkJywg
J3J1bm5pbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pOworICAgICAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7Cisg
ICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBsZXQgY29u
ZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKKyAg
ICAgICAgICAgICAgICBsZXQgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CisgICAgICAgICAgICAg
ICAgbGV0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAncGFzc3dv
cmQnfTsKKyAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmln
Z2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHNs
YXZlSW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZSA9IHRyaWdnZXJh
YmxlLnN5bmNPbmNlKCk7CisgICAgICAgICAgICAgICAgc3luY1Byb21pc2UuY2F0Y2goZG9uZSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsK
KyAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA0KTsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCksICdjb21wbGV0
ZWQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMSkuc3RhdHVzKCksICdydW5uaW5nJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMo
KSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1
aWxkZXItMS9wZW5kaW5nQnVpbGRzJyk7CisgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1swXS5yZXNvbHZlKFtdKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90
ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0u
bWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbMV0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRz
Lz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CisgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1sxXS5yZXNvbHZlKHtbLTFdOiBNb2NrRGF0YS5ydW5uaW5nQnVpbGQoKSwgWy0yXTog
TW9ja0RhdGEuZmluaXNoZWRCdWlsZCgpfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tS
ZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzJdLm1ldGhvZCwgJ1BPU1QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsICcvYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvZm9yY2Un
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbMl0uZGF0YSwgeyd3ayc6ICcxOTE2MjInLCAnb3MnOiAnMTAuMTEgMTVBMjg0JywgJ2J1aWxk
LXJlcXVlc3QtaWQnOiAnNzAyJ30pOworICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbMl0ucmVzb2x2ZSgnT0snKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90
ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10u
bWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbM10udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvcGVuZGlu
Z0J1aWxkcycpOworICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVz
b2x2ZShbTW9ja0RhdGEucGVuZGluZ0J1aWxkKCldKQorICAgICAgICAgICAgICAgIHJldHVybiBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s0XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXIt
MS9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKKyAgICAgICAgICAgICAgICBNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzRdLnJlc29sdmUoe1stMV06IE1vY2tEYXRhLnJ1bm5pbmdCdWlsZCgp
LCBbLTJdOiBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkKCl9KTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3luY1Byb21pc2U7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoTW9ja0Rh
dGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKS50cmlnZ2VyYWJsZU5hbWUp
OworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2NvbXBs
ZXRlZCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzAxKS5zdGF0dXMoKSwgJ3J1bm5pbmcnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdzY2hlZHVsZWQnKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3Rh
dHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAg
fSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHNj
aGVkdWxlIHRoZSBuZXh0IGJ1aWxkIHJlcXVlc3Qgd2hlbiB0aGVyZSBpcyBhIHBlbmRpbmcgYnVp
bGQnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5k
YXRhYmFzZSgpOworICAgICAgICAgICAgbGV0IHN5bmNQcm9taXNlOworICAgICAgICAgICAgZGIu
Y29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNb2Nr
RGF0YS5hZGRNb2NrRGF0YShkYiwgWydjb21wbGV0ZWQnLCAncnVubmluZycsICdwZW5kaW5nJywg
J3BlbmRpbmcnXSk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTWFuaWZlc3QuZmV0Y2goKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGxldCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVz
dFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigpOworICAgICAgICAgICAgICAgIGxldCBsb2dn
ZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgICAgICBsZXQgc2xhdmVJbmZvID0ge25h
bWU6ICdzeW5jLXNsYXZlJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAgICAgICAgICAgICAg
IGxldCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNl
cnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgc2xhdmVJbmZvLCBsb2dnZXIpOworICAg
ICAgICAgICAgICAgIHN5bmNQcm9taXNlID0gdHJpZ2dlcmFibGUuc3luY09uY2UoKTsKKyAgICAg
ICAgICAgICAgICBzeW5jUHJvbWlzZS5jYXRjaChkb25lKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWls
ZGVyLTEvcGVuZGluZ0J1aWxkcycpOworICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbMF0ucmVzb2x2ZShbTW9ja0RhdGEucGVuZGluZ0J1aWxkKCldKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0udXJsLCAnL2pzb24vYnVpbGRlcnMv
c29tZS1idWlsZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CisgICAgICAgICAg
ICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5yZXNvbHZlKHtbLTFdOiBNb2NrRGF0YS5y
dW5uaW5nQnVpbGQoKSwgWy0yXTogTW9ja0RhdGEuZmluaXNoZWRCdWlsZCgpfSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVybCwgJy9qc29uL2J1aWxk
ZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKKyAgICAgICAgICAgICAgICBNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoW01vY2tEYXRhLnBlbmRpbmdCdWlsZCgpXSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwor
ICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10udXJsLCAnL2pz
b24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7
CisgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZlKHtbLTFd
OiBNb2NrRGF0YS5ydW5uaW5nQnVpbGQoKSwgWy0yXTogTW9ja0RhdGEuZmluaXNoZWRCdWlsZCgp
fSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN5bmNQcm9taXNlOworICAgICAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVx
dWVzdC5hbGwoKS5sZW5ndGgsIDQpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWls
ZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwg
J3J1bm5pbmcnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZp
bmRCeUlkKDcwMikuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygpLCAncGVuZGluZycpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShN
b2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigpLnRyaWdnZXJhYmxl
TmFtZSk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgNCk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAn
Y29tcGxldGVkJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5m
aW5kQnlJZCg3MDEpLnN0YXR1cygpLCAncnVubmluZycpOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ3NjaGVkdWxlZCcp
OworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAz
KS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAg
ICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBz
Y2hlZHVsZSB0aGUgYnVpbGQgcmVxdWVzdCBvbiBhIGJ1aWxkZXIgd2l0aG91dCBhIHBlbmRpbmcg
YnVpbGQgaWYgaXRcJ3MgdGhlIGZpcnN0IHJlcXVlc3QgaW4gdGhlIGdyb3VwJywgZnVuY3Rpb24g
KGRvbmUpIHsKKyAgICAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAg
ICAgICAgICAgIGxldCBzeW5jUHJvbWlzZTsKKyAgICAgICAgICAgIGRiLmNvbm5lY3QoKS50aGVu
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0Rh
dGEoZGIsIFsncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddKTsKKyAg
ICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBN
YW5pZmVzdC5mZXRjaCgpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgbGV0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhU
d29CdWlsZGVycygpOworICAgICAgICAgICAgICAgIGxldCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dl
cjsKKyAgICAgICAgICAgICAgICBsZXQgc2xhdmVJbmZvID0ge25hbWU6ICdzeW5jLXNsYXZlJywg
cGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAgICAgICAgICAgICAgIGxldCB0cmlnZ2VyYWJsZSA9
IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwg
TW9ja1JlbW90ZUFQSSwgc2xhdmVJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAgICAgIHN5bmNQ
cm9taXNlID0gdHJpZ2dlcmFibGUuc3luY09uY2UoKTsKKyAgICAgICAgICAgICAgICBzeW5jUHJv
bWlzZS5jYXRjaChkb25lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53
YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAy
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sw
XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1swXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9wZW5k
aW5nQnVpbGRzJyk7CisgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5y
ZXNvbHZlKFtNb2NrRGF0YS5wZW5kaW5nQnVpbGQoe2J1aWxkUmVxdWVzdElkOiA5OTl9KV0pOwor
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1l
dGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzFdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0yL3BlbmRpbmdC
dWlsZHMnKTsKKyAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29s
dmUoW10pOworICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1
ZXN0KCk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQpOworICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwg
J0dFVCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzJdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/c2VsZWN0
PS0xJnNlbGVjdD0tMicpOworICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
Ml0ucmVzb2x2ZSh7fSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1i
dWlsZGVyLTIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CisgICAgICAgICAgICAgICAg
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZlKHt9KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHMubGVuZ3RoLCA1KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5tZXRob2QsICdQT1NUJyk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0udXJsLCAnL2J1aWxkZXJzL3Nv
bWUtYnVpbGRlci0yL2ZvcmNlJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLmRhdGEsIHsnd2snOiAnMTkxNjIyJywgJ29zJzogJzEw
LjExIDE1QTI4NCcsICdidWlsZC1yZXF1ZXN0LWlkJzogJzcwMCd9KTsKKyAgICAgICAgICAgICAg
ICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnJlc29sdmUoJ09LJyk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0udXJsLCAnL2pzb24vYnVp
bGRlcnMvc29tZS1idWlsZGVyLTEvcGVuZGluZ0J1aWxkcycpOworICAgICAgICAgICAgICAgIE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbNV0ucmVzb2x2ZShbTW9ja0RhdGEucGVuZGluZ0J1aWxkKHti
dWlsZFJlcXVlc3RJZDogOTk5fSldKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1s2XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2XS51cmwsICcvanNvbi9idWlsZGVy
cy9zb21lLWJ1aWxkZXItMi9wZW5kaW5nQnVpbGRzJyk7CisgICAgICAgICAgICAgICAgTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1s2XS5yZXNvbHZlKFtNb2NrRGF0YS5wZW5kaW5nQnVpbGQoe2J1aWxk
ZXI6ICdzb21lLWJ1aWxkZXItMicsIGJ1aWxkUmVxdWVzdElkOiA3MDB9KV0pOworICAgICAgICAg
ICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDkpOworICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLnVybCwgJy9qc29u
L2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwor
ICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbN10ucmVzb2x2ZSh7fSk7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbOF0ubWV0
aG9kLCAnR0VUJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbOF0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTIvYnVpbGRzLz9z
ZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CisgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s4XS5yZXNvbHZlKHt9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3luY1Byb21pc2U7
CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgNCk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAncGVuZGlu
ZycpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQo
NzAxKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygp
LCAncGVuZGluZycpOworICAgICAgICAgICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hG
b3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMo
KS50cmlnZ2VyYWJsZU5hbWUpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQp
OworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAw
KS5zdGF0dXMoKSwgJ3NjaGVkdWxlZCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChC
dWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCks
ICdwZW5kaW5nJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5m
aW5kQnlJZCg3MDMpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKKworICAgICAgICBp
dCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBhIGJ1aWxkIHJlcXVlc3Qgb24gYSBkaWZmZXJlbnQgYnVp
bGRlciB0aGFuIHRoZSBvbmUgdGhlIGZpcnN0IGJ1aWxkIHJlcXVlc3QgaXMgcGVuZGluZycsIGZ1
bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICBsZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNl
KCk7CisgICAgICAgICAgICBsZXQgc3luY1Byb21pc2U7CisgICAgICAgICAgICBkYi5jb25uZWN0
KCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFk
ZE1vY2tEYXRhKGRiLCBbJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcn
XSk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gTWFuaWZlc3QuZmV0Y2goKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGxldCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25m
aWdXaXRoVHdvQnVpbGRlcnMoKTsKKyAgICAgICAgICAgICAgICBsZXQgbG9nZ2VyID0gbmV3IE1v
Y2tMb2dnZXI7CisgICAgICAgICAgICAgICAgbGV0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1z
bGF2ZScsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKKyAgICAgICAgICAgICAgICBsZXQgdHJpZ2dl
cmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCksIE1vY2tSZW1vdGVBUEksIHNsYXZlSW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgICAg
ICBzeW5jUHJvbWlzZSA9IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCk7CisgICAgICAgICAgICAgICAg
c3luY1Byb21pc2UuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1v
dGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxl
bmd0aCwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVy
LTEvcGVuZGluZ0J1aWxkcycpOworICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbMF0ucmVzb2x2ZShbTW9ja0RhdGEucGVuZGluZ0J1aWxkKHtidWlsZFJlcXVlc3RJZDogNzAw
fSldKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1sxXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMi9w
ZW5kaW5nQnVpbGRzJyk7CisgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sx
XS5yZXNvbHZlKFtdKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0
Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0KTsK
KyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5t
ZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1syXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9idWlsZHMv
P3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKKyAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzJdLnJlc29sdmUoe30pOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzNdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwgJy9qc29uL2J1aWxkZXJz
L3NvbWUtYnVpbGRlci0yL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOworICAgICAgICAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZSh7fSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0udXJsLCAnL2pzb24v
YnVpbGRlcnMvc29tZS1idWlsZGVyLTEvcGVuZGluZ0J1aWxkcycpOworICAgICAgICAgICAgICAg
IE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ucmVzb2x2ZShbTW9ja0RhdGEucGVuZGluZ0J1aWxk
KHtidWlsZFJlcXVlc3RJZDogNzAwfSldKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS51cmwsICcvanNvbi9idWls
ZGVycy9zb21lLWJ1aWxkZXItMi9wZW5kaW5nQnVpbGRzJyk7CisgICAgICAgICAgICAgICAgTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS5yZXNvbHZlKFtdKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHMubGVuZ3RoLCA4KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1s2XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2XS51cmwsICcvanNvbi9idWlsZGVycy9z
b21lLWJ1aWxkZXItMS9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKKyAgICAgICAgICAg
ICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzZdLnJlc29sdmUoe30pOworICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLm1ldGhvZCwgJ0dFVCcp
OworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzdd
LnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0yL2J1aWxkcy8/c2VsZWN0PS0xJnNl
bGVjdD0tMicpOworICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbN10ucmVz
b2x2ZSh7fSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN5bmNQcm9taXNlOworICAgICAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVz
KCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVz
dC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ3BlbmRpbmcn
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFi
bGUoTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCkudHJpZ2dlcmFi
bGVOYW1lKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA0KTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCks
ICdzY2hlZHVsZWQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0
LmZpbmRCeUlkKDcwMSkuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAncGVuZGluZycp
OworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAz
KS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAg
ICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCB1
cGRhdGUgdGhlIHN0YXR1cyBvZiBhIHBlbmRpbmcgYnVpbGQgYW5kIHNjaGVkdWxlIGEgbmV3IGJ1
aWxkIGlmIHRoZSBwZW5kaW5nIGJ1aWxkIGhhZCBzdGFydGVkIHJ1bm5pbmcnLCBmdW5jdGlvbiAo
ZG9uZSkgeworICAgICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAg
ICAgICAgICAgbGV0IHN5bmNQcm9taXNlOworICAgICAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0
YShkYiwgWydwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pOworICAg
ICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1h
bmlmZXN0LmZldGNoKCk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBsZXQgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3
b0J1aWxkZXJzKCk7CisgICAgICAgICAgICAgICAgbGV0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2Vy
OworICAgICAgICAgICAgICAgIGxldCBzbGF2ZUluZm8gPSB7bmFtZTogJ3N5bmMtc2xhdmUnLCBw
YXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICAgICAgbGV0IHRyaWdnZXJhYmxlID0g
bmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBN
b2NrUmVtb3RlQVBJLCBzbGF2ZUluZm8sIGxvZ2dlcik7CisgICAgICAgICAgICAgICAgc3luY1By
b21pc2UgPSB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpOworICAgICAgICAgICAgICAgIHN5bmNQcm9t
aXNlLmNhdGNoKGRvbmUpOworICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndh
aXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIp
OworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBd
Lm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzBdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRp
bmdCdWlsZHMnKTsKKyAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnJl
c29sdmUoW10pOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzFdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRl
ci0yL3BlbmRpbmdCdWlsZHMnKTsKKyAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzFdLnJlc29sdmUoW10pOworICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJ
LndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgs
IDQpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzJdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzJdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1
aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOworICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbMl0ucmVzb2x2ZSh7Wy0xXTogTW9ja0RhdGEucnVubmluZ0J1aWxkKHtidWls
ZFJlcXVlc3RJZDogNzAxfSksIFstMl06IE1vY2tEYXRhLmZpbmlzaGVkQnVpbGQoe2J1aWxkUmVx
dWVzdElkOiA3MDB9KX0pOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzNdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUt
YnVpbGRlci0yL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOworICAgICAgICAgICAgICAg
IE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZSh7fSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzLmxlbmd0aCwgNSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ubWV0aG9kLCAnUE9TVCcpOworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnVybCwgJy9idWlsZGVycy9z
b21lLWJ1aWxkZXItMS9mb3JjZScpOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5kYXRhLCB7J3drJzogJzE5MTYyMicsICdvcyc6ICcx
MC4xMSAxNUEyODQnLCAnYnVpbGQtcmVxdWVzdC1pZCc6ICc3MDInfSk7CisgICAgICAgICAgICAg
ICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5yZXNvbHZlKCdPSycpOworICAgICAgICAgICAg
ICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLnVybCwgJy9qc29uL2J1
aWxkZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKKyAgICAgICAgICAgICAgICBN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLnJlc29sdmUoW01vY2tEYXRhLnBlbmRpbmdCdWlsZCh7
YnVpbGRSZXF1ZXN0SWQ6IDcwMn0pXSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbNl0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNl0udXJsLCAnL2pzb24vYnVpbGRl
cnMvc29tZS1idWlsZGVyLTIvcGVuZGluZ0J1aWxkcycpOworICAgICAgICAgICAgICAgIE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbNl0ucmVzb2x2ZShbXSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzLmxlbmd0aCwgOSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHNbN10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbN10udXJsLCAnL2pzb24vYnVpbGRlcnMvc29t
ZS1idWlsZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CisgICAgICAgICAgICAg
ICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s3XS5yZXNvbHZlKHtbLTFdOiBNb2NrRGF0YS5ydW5u
aW5nQnVpbGQoe2J1aWxkUmVxdWVzdElkOiA3MDF9KSwgWy0yXTogTW9ja0RhdGEuZmluaXNoZWRC
dWlsZCh7YnVpbGRSZXF1ZXN0SWQ6IDcwMH0pfSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbOF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbOF0udXJsLCAnL2pzb24v
YnVpbGRlcnMvc29tZS1idWlsZGVyLTIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7Cisg
ICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s4XS5yZXNvbHZlKHt9KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3luY1Byb21pc2U7CisgICAgICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFs
bCgpLmxlbmd0aCwgNCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVz
dC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwgJ3BlbmRpbmcn
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
Mikuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAg
ICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5t
b2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5hbWUpOworICAg
ICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOwor
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5z
dGF0dXMoKSwgJ3J1bm5pbmcnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdzY2hlZHVsZWQnKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdw
ZW5kaW5nJyk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSkuY2F0Y2go
ZG9uZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgYSBidWls
ZCByZXF1ZXN0IG9uIGEgYnVpbGRlciB3aXRob3V0IHBlbmRpbmcgYnVpbGRzIGlmIHRoZSByZXF1
ZXN0IGJlbG9uZ3MgdG8gYSBuZXcgdGVzdCBncm91cCcsIGZ1bmN0aW9uIChkb25lKSB7CisgICAg
ICAgICAgICBsZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgICAgICBsZXQg
c3luY1Byb21pc2U7CisgICAgICAgICAgICBkYi5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICAg
ICAgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnY29tcGxldGVkJywgJ3BlbmRpbmcnLCAncGVu
ZGluZycsICdwZW5kaW5nJ10pLAorICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5hZGRBbm90
aGVyTW9ja1Rlc3RHcm91cChkYiwgWydwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdw
ZW5kaW5nJ10pCisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTWFuaWZlc3QuZmV0Y2goKTsKKyAgICAg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGxldCBjb25maWcg
PSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKTsKKyAgICAgICAg
ICAgICAgICBsZXQgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CisgICAgICAgICAgICAgICAgbGV0
IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsK
KyAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJs
ZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHNsYXZlSW5m
bywgbG9nZ2VyKTsKKyAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZSA9IHRyaWdnZXJhYmxlLnN5
bmNPbmNlKCk7CisgICAgICAgICAgICAgICAgc3luY1Byb21pc2UuY2F0Y2goZG9uZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCAn
L2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvcGVuZGluZ0J1aWxkcycpOworICAgICAgICAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVzb2x2ZShbTW9ja0RhdGEucGVuZGlu
Z0J1aWxkKHtidWlsZFJlcXVlc3RJZDogNzAyfSldKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsICcvanNv
bi9idWlsZGVycy9zb21lLWJ1aWxkZXItMi9wZW5kaW5nQnVpbGRzJyk7CisgICAgICAgICAgICAg
ICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5yZXNvbHZlKFtdKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsICcvanNvbi9idWls
ZGVycy9zb21lLWJ1aWxkZXItMS9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKKyAgICAg
ICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoe1stMV06IE1vY2tE
YXRhLnJ1bm5pbmdCdWlsZCh7YnVpbGRSZXF1ZXN0SWQ6IDcwMX0pLCBbLTJdOiBNb2NrRGF0YS5m
aW5pc2hlZEJ1aWxkKHtidWlsZFJlcXVlc3RJZDogNzAwfSl9KTsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5tZXRob2QsICdHRVQnKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmws
ICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMi9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9
LTInKTsKKyAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29sdmUo
e30pOworICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0
KCk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDUpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLm1ldGhvZCwgJ1BP
U1QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1s0XS51cmwsICcvYnVpbGRlcnMvc29tZS1idWlsZGVyLTIvZm9yY2UnKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0uZGF0YSwgeyd3
ayc6ICcxOTE2MjInLCAnb3MnOiAnMTAuMTEgMTVBMjg0JywgJ2J1aWxkLXJlcXVlc3QtaWQnOiAn
NzEwJ30pOworICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ucmVzb2x2
ZSgnT0snKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVx
dWVzdCgpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA3KTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS5tZXRob2Qs
ICdHRVQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s1XS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9wZW5kaW5nQnVpbGRz
Jyk7CisgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS5yZXNvbHZlKFtN
b2NrRGF0YS5wZW5kaW5nQnVpbGQoe2J1aWxkUmVxdWVzdElkOiA3MDJ9KV0pOworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzZdLm1ldGhvZCwgJ0dF
VCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzZdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0yL3BlbmRpbmdCdWlsZHMnKTsK
KyAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzZdLnJlc29sdmUoW01vY2tE
YXRhLnBlbmRpbmdCdWlsZCh7YnVpbGRlcjogJ3NvbWUtYnVpbGRlci0yJywgYnVpbGRSZXF1ZXN0
SWQ6IDcxMH0pXSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZv
clJlcXVlc3QoKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgOSk7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbN10ubWV0
aG9kLCAnR0VUJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbN10udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRzLz9z
ZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CisgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s3XS5yZXNvbHZlKHtbLTFdOiBNb2NrRGF0YS5ydW5uaW5nQnVpbGQoe2J1aWxkUmVxdWVz
dElkOiA3MDF9KSwgWy0yXTogTW9ja0RhdGEuZmluaXNoZWRCdWlsZCh7YnVpbGRSZXF1ZXN0SWQ6
IDcwMH0pfSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbOF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbOF0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVy
LTIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CisgICAgICAgICAgICAgICAgTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1s4XS5yZXNvbHZlKHt9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3luY1Byb21pc2U7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1
cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVx
dWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ3BlbmRp
bmcnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTApLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzExKS5zdGF0dXMo
KSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0
LmZpbmRCeUlkKDcxMikuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTMpLnN0YXR1cygpLCAncGVuZGluZycp
OworICAgICAgICAgICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJs
ZShNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJs
ZU5hbWUpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwg
J2NvbXBsZXRlZCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3Qu
ZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwgJ3J1bm5pbmcnKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdzY2hlZHVsZWQn
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
Mykuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MTApLnN0YXR1cygpLCAnc2NoZWR1bGVkJyk7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTEpLnN0YXR1cygp
LCAncGVuZGluZycpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3Qu
ZmluZEJ5SWQoNzEyKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzKCksICdwZW5kaW5nJyk7
CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7Cisg
ICAgICAgIH0pOworICAgIH0pOworfSk7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCShy
ZXZpc2lvbiAwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNv
dXJjZXMvbW9jay1kYXRhLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg1IEBACityZXF1
aXJlKCcuLi8uLi90b29scy9qcy92My1tb2RlbHMuanMnKTsKKwordmFyIGNyeXB0byA9IHJlcXVp
cmUoJ2NyeXB0bycpOworCitNb2NrRGF0YSA9IHsKKyAgICByZXNldFYzTW9kZWxzOiBmdW5jdGlv
biAoKQorICAgIHsKKyAgICAgICAgQW5hbHlzaXNUYXNrLl9mZXRjaEFsbFByb21pc2UgPSBudWxs
OworICAgICAgICBBbmFseXNpc1Rhc2suY2xlYXJTdGF0aWNNYXAoKTsKKyAgICAgICAgQnVpbGRS
ZXF1ZXN0LmNsZWFyU3RhdGljTWFwKCk7CisgICAgICAgIENvbW1pdExvZy5jbGVhclN0YXRpY01h
cCgpOworICAgICAgICBNZXRyaWMuY2xlYXJTdGF0aWNNYXAoKTsKKyAgICAgICAgUGxhdGZvcm0u
Y2xlYXJTdGF0aWNNYXAoKTsKKyAgICAgICAgUmVwb3NpdG9yeS5jbGVhclN0YXRpY01hcCgpOwor
ICAgICAgICBSb290U2V0LmNsZWFyU3RhdGljTWFwKCk7CisgICAgICAgIFRlc3QuY2xlYXJTdGF0
aWNNYXAoKTsKKyAgICAgICAgVGVzdEdyb3VwLmNsZWFyU3RhdGljTWFwKCk7CisgICAgfSwKKyAg
ICBhZGRNb2NrRGF0YTogZnVuY3Rpb24gKGRiLCBzdGF0dXNMaXN0KQorICAgIHsKKyAgICAgICAg
aWYgKCFzdGF0dXNMaXN0KQorICAgICAgICAgICAgc3RhdHVzTGlzdCA9IFsncGVuZGluZycsICdw
ZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddOworICAgICAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7aWQ6IDEs
IG5hbWU6ICdidWlsZC13ZWJraXQnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3Ns
YXZlcycsIHtpZDogMiwgbmFtZTogJ3N5bmMtc2xhdmUnLCBwYXNzd29yZF9oYXNoOiBjcnlwdG8u
Y3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKCdwYXNzd29yZCcpLmRpZ2VzdCgnaGV4Jyl9KSwK
KyAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywge2lkOiA5LCBuYW1lOiAnT1Mg
WCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywge2lkOiAxMSwgbmFt
ZTogJ1dlYktpdCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHtpZDogODc4
MzIsIHJlcG9zaXRvcnk6IDksIHJldmlzaW9uOiAnMTAuMTEgMTVBMjg0J30pLAorICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdjb21taXRzJywge2lkOiA5MzExNiwgcmVwb3NpdG9yeTogMTEsIHJldmlz
aW9uOiAnMTkxNjIyJywgdGltZTogKG5ldyBEYXRlKDE0NDU5NDU4MTY4NzgpKS50b0lTT1N0cmlu
ZygpfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7aWQ6IDk2MzM2LCByZXBv
c2l0b3J5OiAxMSwgcmV2aXNpb246ICcxOTI3MzYnLCB0aW1lOiAobmV3IERhdGUoMTQ0ODIyNTMy
NTY1MCkpLnRvSVNPU3RyaW5nKCl9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgncGxhdGZvcm1z
Jywge2lkOiA2NSwgbmFtZTogJ3NvbWUgcGxhdGZvcm0nfSksCisgICAgICAgICAgICBkYi5pbnNl
cnQoJ3Rlc3RzJywge2lkOiAyMDAsIG5hbWU6ICdzb21lIHRlc3QnfSksCisgICAgICAgICAgICBk
Yi5pbnNlcnQoJ3Rlc3RfbWV0cmljcycsIHtpZDogMzAwLCB0ZXN0OiAyMDAsIG5hbWU6ICdzb21l
IG1ldHJpYyd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9jb25maWd1cmF0aW9ucycs
IHtpZDogMzAxLCBtZXRyaWM6IDMwMCwgcGxhdGZvcm06IDY1LCB0eXBlOiAnY3VycmVudCd9KSwK
KyAgICAgICAgICAgIGRiLmluc2VydCgncm9vdF9zZXRzJywge2lkOiA0MDF9KSwKKyAgICAgICAg
ICAgIGRiLmluc2VydCgncm9vdHMnLCB7c2V0OiA0MDEsIGNvbW1pdDogODc4MzJ9KSwKKyAgICAg
ICAgICAgIGRiLmluc2VydCgncm9vdHMnLCB7c2V0OiA0MDEsIGNvbW1pdDogOTMxMTZ9KSwKKyAg
ICAgICAgICAgIGRiLmluc2VydCgncm9vdF9zZXRzJywge2lkOiA0MDJ9KSwKKyAgICAgICAgICAg
IGRiLmluc2VydCgncm9vdHMnLCB7c2V0OiA0MDIsIGNvbW1pdDogODc4MzJ9KSwKKyAgICAgICAg
ICAgIGRiLmluc2VydCgncm9vdHMnLCB7c2V0OiA0MDIsIGNvbW1pdDogOTYzMzZ9KSwKKyAgICAg
ICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGFza3MnLCB7aWQ6IDUwMCwgcGxhdGZvcm06IDY1
LCBtZXRyaWM6IDMwMCwgbmFtZTogJ3NvbWUgdGFzayd9KSwKKyAgICAgICAgICAgIGRiLmluc2Vy
dCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMCwgdGFzazogNTAwLCBuYW1lOiAnc29t
ZSB0ZXN0IGdyb3VwJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycs
IHtpZDogNzAwLCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0sIHRyaWdnZXJhYmxlOiAxLCBwbGF0Zm9y
bTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDAsIHJvb3Rfc2V0OiA0MDF9KSwK
KyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMSwgc3RhdHVz
OiBzdGF0dXNMaXN0WzFdLCB0cmlnZ2VyYWJsZTogMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAs
IGdyb3VwOiA2MDAsIG9yZGVyOiAxLCByb290X3NldDogNDAyfSksCisgICAgICAgICAgICBkYi5p
bnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDIsIHN0YXR1czogc3RhdHVzTGlzdFsyXSwg
dHJpZ2dlcmFibGU6IDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRl
cjogMiwgcm9vdF9zZXQ6IDQwMX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1
ZXN0cycsIHtpZDogNzAzLCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHRyaWdnZXJhYmxlOiAxLCBw
bGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDMsIHJvb3Rfc2V0OiA0
MDJ9KSwKKyAgICAgICAgXSk7CisgICAgfSwKKyAgICBhZGRBbm90aGVyTW9ja1Rlc3RHcm91cDog
ZnVuY3Rpb24gKGRiLCBzdGF0dXNMaXN0KQorICAgIHsKKyAgICAgICAgaWYgKCFzdGF0dXNMaXN0
KQorICAgICAgICAgICAgc3RhdHVzTGlzdCA9IFsncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRp
bmcnLCAncGVuZGluZyddOworICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdhbmFseXNpc190ZXN0X2dyb3VwcycsIHtpZDogNTk5LCB0YXNrOiA1MDAs
IG5hbWU6ICdhbm90aGVyIHRlc3QgZ3JvdXAnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1
aWxkX3JlcXVlc3RzJywge2lkOiA3MTMsIHN0YXR1czogc3RhdHVzTGlzdFszXSwgdHJpZ2dlcmFi
bGU6IDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNTk5LCBvcmRlcjogMywgcm9v
dF9zZXQ6IDQwMn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtp
ZDogNzEwLCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0sIHRyaWdnZXJhYmxlOiAxLCBwbGF0Zm9ybTog
NjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDU5OSwgb3JkZXI6IDAsIHJvb3Rfc2V0OiA0MDF9KSwKKyAg
ICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMiwgc3RhdHVzOiBz
dGF0dXNMaXN0WzJdLCB0cmlnZ2VyYWJsZTogMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdy
b3VwOiA1OTksIG9yZGVyOiAyLCByb290X3NldDogNDAxfSksCisgICAgICAgICAgICBkYi5pbnNl
cnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTEsIHN0YXR1czogc3RhdHVzTGlzdFsxXSwgdHJp
Z2dlcmFibGU6IDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNTk5LCBvcmRlcjog
MSwgcm9vdF9zZXQ6IDQwMn0pLAorICAgICAgICBdKTsKKyAgICB9LAorICAgIG1vY2tUZXN0U3lu
Y0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyOiBmdW5jdGlvbiAoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgICd0cmlnZ2VyYWJsZU5hbWUnOiAnYnVpbGQtd2Via2l0JywKKyAg
ICAgICAgICAgICdsb29rYmFja0NvdW50JzogMiwKKyAgICAgICAgICAgICdjb25maWd1cmF0aW9u
cyc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6
ICdzb21lIHBsYXRmb3JtJywKKyAgICAgICAgICAgICAgICAgICAgJ3Rlc3QnOiBbJ3NvbWUgdGVz
dCddLAorICAgICAgICAgICAgICAgICAgICAnYnVpbGRlcic6ICdzb21lLWJ1aWxkZXItMScsCisg
ICAgICAgICAgICAgICAgICAgICdhcmd1bWVudHMnOiB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAnd2snOiB7J3Jvb3QnOiAnV2ViS2l0J30sCisgICAgICAgICAgICAgICAgICAgICAgICAnb3Mn
OiB7J3Jvb3QnOiAnT1MgWCd9LAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICAnYnVpbGRSZXF1ZXN0QXJndW1lbnQnOiAnYnVpbGQtcmVxdWVzdC1pZCcsCisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgfSwKKyAgICBtb2Nr
VGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnM6IGZ1bmN0aW9uICgpCisgICAgeworICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgJ3RyaWdnZXJhYmxlTmFtZSc6ICdidWlsZC13ZWJraXQn
LAorICAgICAgICAgICAgJ2xvb2tiYWNrQ291bnQnOiAyLAorICAgICAgICAgICAgJ2NvbmZpZ3Vy
YXRpb25zJzogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3BsYXRm
b3JtJzogJ3NvbWUgcGxhdGZvcm0nLAorICAgICAgICAgICAgICAgICAgICAndGVzdCc6IFsnc29t
ZSB0ZXN0J10sCisgICAgICAgICAgICAgICAgICAgICdidWlsZGVyJzogJ3NvbWUtYnVpbGRlci0x
JywKKyAgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyc6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICd3ayc6IHsncm9vdCc6ICdXZWJLaXQnfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdvcyc6IHsncm9vdCc6ICdPUyBYJ30sCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgICAgICdidWlsZFJlcXVlc3RBcmd1bWVudCc6ICdidWlsZC1yZXF1ZXN0LWlkJywK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgJ3BsYXRmb3JtJzogJ3NvbWUgcGxhdGZvcm0nLAorICAgICAgICAgICAgICAgICAgICAndGVz
dCc6IFsnc29tZSB0ZXN0J10sCisgICAgICAgICAgICAgICAgICAgICdidWlsZGVyJzogJ3NvbWUt
YnVpbGRlci0yJywKKyAgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyc6IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICd3ayc6IHsncm9vdCc6ICdXZWJLaXQnfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICdvcyc6IHsncm9vdCc6ICdPUyBYJ30sCisgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgICdidWlsZFJlcXVlc3RBcmd1bWVudCc6ICdidWlsZC1yZXF1
ZXN0LWlkJywKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAg
ICB9LAorICAgIHBlbmRpbmdCdWlsZChvcHRpb25zKQorICAgIHsKKyAgICAgICAgb3B0aW9ucyA9
IG9wdGlvbnMgfHwge307CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAnYnVpbGRlck5h
bWUnOiBvcHRpb25zLmJ1aWxkZXIgfHwgJ3NvbWUtYnVpbGRlci0xJywKKyAgICAgICAgICAgICdi
dWlsZHMnOiBbXSwKKyAgICAgICAgICAgICdwcm9wZXJ0aWVzJzogWworICAgICAgICAgICAgICAg
IFsnd2snLCBvcHRpb25zLndlYmtpdFJldmlzaW9uIHx8ICcxOTE2MjInXSwKKyAgICAgICAgICAg
ICAgICBbJ29zJywgb3B0aW9ucy5vc3hSZXZpc2lvbiB8fCAnMTAuMTEgMTVBMjg0J10sCisgICAg
ICAgICAgICAgICAgWydidWlsZC1yZXF1ZXN0LWlkJywgKG9wdGlvbnMuYnVpbGRSZXF1ZXN0SWQg
fHwgNzAyKS50b1N0cmluZygpLCBdCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgJ3NvdXJj
ZSc6IHsKKyAgICAgICAgICAgICAgICAnYnJhbmNoJzogJycsCisgICAgICAgICAgICAgICAgJ2No
YW5nZXMnOiBbXSwKKyAgICAgICAgICAgICAgICAnY29kZWJhc2UnOiAnV2ViS2l0JywKKyAgICAg
ICAgICAgICAgICAnaGFzUGF0Y2gnOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAncHJvamVjdCc6
ICcnLAorICAgICAgICAgICAgICAgICdyZXBvc2l0b3J5JzogJycsCisgICAgICAgICAgICAgICAg
J3JldmlzaW9uJzogJycKKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfSwKKyAgICBy
dW5uaW5nQnVpbGQob3B0aW9ucykKKyAgICB7CisgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8
IHt9OworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogb3B0aW9u
cy5idWlsZGVyIHx8ICdzb21lLWJ1aWxkZXItMScsCisgICAgICAgICAgICAnYnVpbGRzJzogW10s
CisgICAgICAgICAgICAncHJvcGVydGllcyc6IFsKKyAgICAgICAgICAgICAgICBbJ3drJywgb3B0
aW9ucy53ZWJraXRSZXZpc2lvbiB8fCAnMTkyNzM2J10sCisgICAgICAgICAgICAgICAgWydvcycs
IG9wdGlvbnMub3N4UmV2aXNpb24gfHwgJzEwLjExIDE1QTI4NCddLAorICAgICAgICAgICAgICAg
IFsnYnVpbGQtcmVxdWVzdC1pZCcsIChvcHRpb25zLmJ1aWxkUmVxdWVzdElkIHx8IDcwMSkudG9T
dHJpbmcoKSwgXQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICdjdXJyZW50U3RlcCc6IHt9
LAorICAgICAgICAgICAgJ2V0YSc6IDcyMSwKKyAgICAgICAgICAgICdudW1iZXInOiAxMjQsCisg
ICAgICAgICAgICAnc291cmNlJzogeworICAgICAgICAgICAgICAgICdicmFuY2gnOiAnJywKKyAg
ICAgICAgICAgICAgICAnY2hhbmdlcyc6IFtdLAorICAgICAgICAgICAgICAgICdjb2RlYmFzZSc6
ICdXZWJLaXQnLAorICAgICAgICAgICAgICAgICdoYXNQYXRjaCc6IGZhbHNlLAorICAgICAgICAg
ICAgICAgICdwcm9qZWN0JzogJycsCisgICAgICAgICAgICAgICAgJ3JlcG9zaXRvcnknOiAnJywK
KyAgICAgICAgICAgICAgICAncmV2aXNpb24nOiAnJworICAgICAgICAgICAgfSwKKyAgICAgICAg
fTsKKyAgICB9LAorICAgIGZpbmlzaGVkQnVpbGQob3B0aW9ucykKKyAgICB7CisgICAgICAgIG9w
dGlvbnMgPSBvcHRpb25zIHx8IHt9OworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgJ2J1
aWxkZXJOYW1lJzogb3B0aW9ucy5idWlsZGVyIHx8ICdzb21lLWJ1aWxkZXItMScsCisgICAgICAg
ICAgICAnYnVpbGRzJzogW10sCisgICAgICAgICAgICAncHJvcGVydGllcyc6IFsKKyAgICAgICAg
ICAgICAgICBbJ3drJywgb3B0aW9ucy53ZWJraXRSZXZpc2lvbiB8fCAnMTkxNjIyJ10sCisgICAg
ICAgICAgICAgICAgWydvcycsIG9wdGlvbnMub3N4UmV2aXNpb24gfHwgJzEwLjExIDE1QTI4NCdd
LAorICAgICAgICAgICAgICAgIFsnYnVpbGQtcmVxdWVzdC1pZCcsIChvcHRpb25zLmJ1aWxkUmVx
dWVzdElkIHx8IDcwMCkudG9TdHJpbmcoKSwgXQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICdjdXJyZW50U3RlcCc6IG51bGwsCisgICAgICAgICAgICAnZXRhJzogbnVsbCwKKyAgICAgICAg
ICAgICdudW1iZXInOiAxMjMsCisgICAgICAgICAgICAnc291cmNlJzogeworICAgICAgICAgICAg
ICAgICdicmFuY2gnOiAnJywKKyAgICAgICAgICAgICAgICAnY2hhbmdlcyc6IFtdLAorICAgICAg
ICAgICAgICAgICdjb2RlYmFzZSc6ICdXZWJLaXQnLAorICAgICAgICAgICAgICAgICdoYXNQYXRj
aCc6IGZhbHNlLAorICAgICAgICAgICAgICAgICdwcm9qZWN0JzogJycsCisgICAgICAgICAgICAg
ICAgJ3JlcG9zaXRvcnknOiAnJywKKyAgICAgICAgICAgICAgICAncmV2aXNpb24nOiAnJworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICd0aW1lcyc6IFswLCAxXSwKKyAgICAgICAgfTsKKyAg
ICB9Cit9CisKK2lmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKQorICAgIG1vZHVsZS5l
eHBvcnRzID0gTW9ja0RhdGE7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcwkocmV2
aXNpb24gMTk5MDg1KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9y
ZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAg
bGV0IFRlc3RTZXJ2ZXIgPSAobmV3IGNsYXNzIFRlc3RTZXJ2ZXIgewogICAgICAgICB0aGlzLl9k
YXRhYmFzZUhvc3QgPSBDb25maWcudmFsdWUoJ2RhdGFiYXNlLmhvc3QnKTsKICAgICAgICAgdGhp
cy5fZGF0YWJhc2VQb3J0ID0gQ29uZmlnLnZhbHVlKCdkYXRhYmFzZS5wb3J0Jyk7CiAgICAgICAg
IHRoaXMuX2RhdGFiYXNlID0gbnVsbDsKKworICAgICAgICB0aGlzLl9yZW1vdGUgPSBudWxsCiAg
ICAgfQogCiAgICAgc3RhcnQoKQpAQCAtNDgsOSArNTAsOCBAQCBsZXQgVGVzdFNlcnZlciA9IChu
ZXcgY2xhc3MgVGVzdFNlcnZlciB7CiAKICAgICByZW1vdGVBUEkoKQogICAgIHsKLSAgICAgICAg
YXNzZXJ0KHRoaXMuX3NlcnZlcik7Ci0gICAgICAgIFJlbW90ZUFQSS5jb25maWd1cmUodGhpcy5f
c2VydmVyKTsKLSAgICAgICAgcmV0dXJuIFJlbW90ZUFQSTsKKyAgICAgICAgYXNzZXJ0KHRoaXMu
X3JlbW90ZSk7CisgICAgICAgIHJldHVybiB0aGlzLl9yZW1vdGU7CiAgICAgfQogCiAgICAgZGF0
YWJhc2UoKQpAQCAtMTEyLDcgKzExMyw5IEBAIGxldCBUZXN0U2VydmVyID0gKG5ldyBjbGFzcyBU
ZXN0U2VydmVyIHsKIAogICAgIF9lbnN1cmVUZXN0RGF0YWJhc2UoKQogICAgIHsKLSAgICAgICAg
dGhpcy5fZXhlY3V0ZVBnc3FsQ29tbWFuZCgnZHJvcGRiJyk7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICB0aGlzLl9leGVjdXRlUGdzcWxDb21tYW5kKCdkcm9wZGInKTsKKyAgICAgICAgfSBj
YXRjaCAoZXJyb3IpIHsgfQogICAgICAgICB0aGlzLl9leGVjdXRlUGdzcWxDb21tYW5kKCdjcmVh
dGVkYicpOwogICAgICAgICB0aGlzLl9leGVjdXRlUGdzcWxDb21tYW5kKCdwc3FsJywgWyctLWNv
bW1hbmQnLCBgZ3JhbnQgYWxsIHByaXZpbGVnZXMgb24gZGF0YWJhc2UgIiR7dGhpcy5fZGF0YWJh
c2VOYW1lfSIgdG8gIiR7dGhpcy5fZGF0YWJhc2VVc2VyfSI7YF0pOwogICAgICAgICB0aGlzLmlu
aXREYXRhYmFzZSgpOwpAQCAtMTgxLDYgKzE4NCw5IEBAIGxldCBUZXN0U2VydmVyID0gKG5ldyBj
bGFzcyBUZXN0U2VydmVyIHsKICAgICAgICAgfQogICAgICAgICB0aGlzLl9waWRXYWl0U3RhcnQg
PSBEYXRlLm5vdygpOwogICAgICAgICB0aGlzLl9waWRGaWxlID0gcGlkRmlsZTsKKworICAgICAg
ICB0aGlzLl9yZW1vdGUgPSBuZXcgUmVtb3RlQVBJKHRoaXMuX3NlcnZlcik7CisKICAgICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHRoaXMuX3dhaXRGb3JQaWQuYmluZCh0aGlzLCB0cnVlKSk7CiAg
ICAgfQogCkBAIC0yMDIsNyArMjA4LDcgQEAgbGV0IFRlc3RTZXJ2ZXIgPSAobmV3IGNsYXNzIFRl
c3RTZXJ2ZXIgewogICAgIF93YWl0Rm9yUGlkKHNob3VsZEV4aXN0LCByZXNvbHZlLCByZWplY3Qp
CiAgICAgewogICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0aGlzLl9waWRGaWxlKSAhPSBzaG91
bGRFeGlzdCkgewotICAgICAgICAgICAgaWYgKERhdGUubm93KCkgLSB0aGlzLl9waWRXYWl0U3Rh
cnQgPiA1MDAwKQorICAgICAgICAgICAgaWYgKERhdGUubm93KCkgLSB0aGlzLl9waWRXYWl0U3Rh
cnQgPiA4MDAwKQogICAgICAgICAgICAgICAgIHJlamVjdCgpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGhpcy5fd2FpdEZvclBpZC5iaW5kKHRoaXMsIHNo
b3VsZEV4aXN0LCByZXNvbHZlLCByZWplY3QpLCAxMDApOwpAQCAtMjE1LDE4ICsyMjEsMjMgQEAg
bGV0IFRlc3RTZXJ2ZXIgPSAobmV3IGNsYXNzIFRlc3RTZXJ2ZXIgewogICAgIHsKICAgICAgICAg
bGV0IHNlbGYgPSB0aGlzOwogICAgICAgICBiZWZvcmUoZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgdGhpcy50aW1lb3V0KDUwMDApOworICAgICAgICAgICAgdGhpcy50aW1lb3V0KDEwMDAwKTsK
ICAgICAgICAgICAgIHJldHVybiBzZWxmLnN0YXJ0KCk7CiAgICAgICAgIH0pOwogCisgICAgICAg
IGxldCBvcmlnaW5hbFJlbW90ZTsKKwogICAgICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgIHRoaXMudGltZW91dCgxMDAwMCk7CiAgICAgICAgICAgICBzZWxmLmluaXRE
YXRhYmFzZSgpOwogICAgICAgICAgICAgc2VsZi5jbGVhbkRhdGFEaXJlY3RvcnkoKTsKKyAgICAg
ICAgICAgIG9yaWdpbmFsUmVtb3RlID0gZ2xvYmFsLlJlbW90ZUFQSTsKKyAgICAgICAgICAgIGds
b2JhbC5SZW1vdGVBUEkgPSBzZWxmLl9yZW1vdGU7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGFm
dGVyKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHRoaXMudGltZW91dCg1MDAwKTsKKyAgICAg
ICAgICAgIHRoaXMudGltZW91dCgxMDAwMCk7CisgICAgICAgICAgICBnbG9iYWwuUmVtb3RlQVBJ
ID0gb3JpZ2luYWxSZW1vdGU7CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5zdG9wKCk7CiAgICAg
ICAgIH0pOwogICAgIH0KSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9kZXRl
Y3QtY2hhbmdlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9v
bHMvZGV0ZWN0LWNoYW5nZXMuanMJKHJldmlzaW9uIDE5OTA4NSkKKysrIFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy90b29scy9kZXRlY3QtY2hhbmdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtNywx
MiArNywxMyBAQCB2YXIgZGF0YSA9IHJlcXVpcmUoJy4uL3B1YmxpYy92Mi9kYXRhLmpzCiB2YXIg
UnVuc0RhdGEgPSBkYXRhLlJ1bnNEYXRhOwogdmFyIFN0YXRpc3RpY3MgPSByZXF1aXJlKCcuLi9w
dWJsaWMvc2hhcmVkL3N0YXRpc3RpY3MuanMnKTsKIHZhciBTdGF0aXN0aWNzU3RyYXRlZ2llcyA9
IHJlcXVpcmUoJy4uL3B1YmxpYy92Mi9zdGF0aXN0aWNzLXN0cmF0ZWdpZXMuanMnKTsKK3ZhciBw
YXJzZUFyZ3VtZW50cyA9IHJlcXVpcmUoJy4vanMvcGFyc2UtYXJndW1lbnRzLmpzJykucGFyc2VB
cmd1bWVudHM7CiAKIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgdXNlIGEgZ2xvYmFsIHZhcmlhYmxl
IGxpa2UgdGhpcy4KIHZhciBzZXR0aW5nczsKIGZ1bmN0aW9uIG1haW4oYXJndikKIHsKLSAgICB2
YXIgb3B0aW9ucyA9IHBhcnNlQXJndW1lbnQoYXJndiwgWworICAgIHZhciBvcHRpb25zID0gcGFy
c2VBcmd1bWVudHMoYXJndiwgWwogICAgICAgICB7bmFtZTogJy0tc2VydmVyLWNvbmZpZy1qc29u
JywgcmVxdWlyZWQ6IHRydWV9LAogICAgICAgICB7bmFtZTogJy0tY2hhbmdlLWRldGVjdGlvbi1j
b25maWctanNvbicsIHJlcXVpcmVkOiB0cnVlfSwKICAgICAgICAge25hbWU6ICctLXNlY29uZHMt
dG8tc2xlZXAnLCB0eXBlOiBwYXJzZUZsb2F0LCBkZWZhdWx0OiAxMjAwfSwKQEAgLTI2LDM3ICsy
Nyw2IEBAIGZ1bmN0aW9uIG1haW4oYXJndikKICAgICBmZXRjaE1hbmlmZXN0QW5kQW5hbHl6ZURh
dGEob3B0aW9uc1snLS1zZXJ2ZXItY29uZmlnLWpzb24nXSk7CiB9CiAKLWZ1bmN0aW9uIHBhcnNl
QXJndW1lbnQoYXJndiwgYWNjZXB0ZWRPcHRpb25zKSB7Ci0gICAgdmFyIGFyZ3MgPSBhcmd2LnNs
aWNlKDIpOwotICAgIHZhciBvcHRpb25zID0ge30KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFy
Z3MubGVuZ3RoOyBpICs9IDIpIHsKLSAgICAgICAgdmFyIGN1cnJlbnQgPSBhcmdzW2ldOwotICAg
ICAgICB2YXIgbmV4dCA9IGFyZ3NbaSArIDFdOwotICAgICAgICBmb3IgKHZhciBvcHRpb24gb2Yg
YWNjZXB0ZWRPcHRpb25zKSB7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBvcHRpb25bJ25h
bWUnXSkgewotICAgICAgICAgICAgICAgIG9wdGlvbnNbb3B0aW9uWyduYW1lJ11dID0gbmV4dDsK
LSAgICAgICAgICAgICAgICBuZXh0ID0gbnVsbDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAobmV4dCkgewotICAgICAgICAgICAg
Y29uc29sZS5lcnJvcignSW52YWxpZCBhcmd1bWVudDonLCBjdXJyZW50KTsKLSAgICAgICAgICAg
IHJldHVybiBudWxsOwotICAgICAgICB9Ci0gICAgfQotICAgIGZvciAodmFyIG9wdGlvbiBvZiBh
Y2NlcHRlZE9wdGlvbnMpIHsKLSAgICAgICAgdmFyIG5hbWUgPSBvcHRpb25bJ25hbWUnXTsKLSAg
ICAgICAgaWYgKG9wdGlvblsncmVxdWlyZWQnXSAmJiAhKG5hbWUgaW4gb3B0aW9ucykpIHsKLSAg
ICAgICAgICAgIGNvbnNvbGUubG9nKCdSZXF1aXJlZCBhcmd1bWVudCcsIG5hbWUsICdpcyBtaXNz
aW5nJyk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotICAgICAgICB2YXIg
dmFsdWUgPSBvcHRpb25zW25hbWVdIHx8IG9wdGlvblsnZGVmYXVsdCddOwotICAgICAgICB2YXIg
Y29udmVydGVyID0gb3B0aW9uWyd0eXBlJ107Ci0gICAgICAgIG9wdGlvbnNbbmFtZV0gPSBjb252
ZXJ0ZXIgPyBjb252ZXJ0ZXIodmFsdWUpIDogdmFsdWU7Ci0gICAgfQotICAgIHJldHVybiBvcHRp
b25zOwotfQotCiBmdW5jdGlvbiBmZXRjaE1hbmlmZXN0QW5kQW5hbHl6ZURhdGEoc2VydmVyQ29u
ZmlnSlNPTikKIHsKICAgICBsb2FkU2VydmVyQ29uZmlnKHNlcnZlckNvbmZpZ0pTT04pOwpJbmRl
eDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtYnVpbGRib3QuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtYnVpbGRib3QuanMJ
KHJldmlzaW9uIDApCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1idWls
ZGJvdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisjIS91c3IvbG9jYWwvYmlu
L25vZGUKKyd1c2Ugc3RyaWN0JzsKKworbGV0IEJ1aWxkYm90VHJpZ2dlcmFibGUgPSByZXF1aXJl
KCcuL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzJykuQnVpbGRib3RUcmlnZ2VyYWJsZTsKK2xl
dCBSZW1vdGVBUEkgPSByZXF1aXJlKCcuL2pzL3JlbW90ZS5qcycpLlJlbW90ZUFQSTsKK2xldCBm
cyA9IHJlcXVpcmUoJ2ZzJyk7CitsZXQgcGFyc2VBcmd1bWVudHMgPSByZXF1aXJlKCcuL2pzL3Bh
cnNlLWFyZ3VtZW50cy5qcycpLnBhcnNlQXJndW1lbnRzOworCitmdW5jdGlvbiBtYWluKGFyZ3Yp
Cit7CisgICAgbGV0IG9wdGlvbnMgPSBwYXJzZUFyZ3VtZW50cyhhcmd2LCBbCisgICAgICAgIHtu
YW1lOiAnLS1zZXJ2ZXItY29uZmlnLWpzb24nLCByZXF1aXJlZDogdHJ1ZX0sCisgICAgICAgIHtu
YW1lOiAnLS1idWlsZGJvdC1jb25maWctanNvbicsIHJlcXVpcmVkOiB0cnVlfSwKKyAgICAgICAg
e25hbWU6ICctLXNlY29uZHMtdG8tc2xlZXAnLCB0eXBlOiBwYXJzZUZsb2F0LCBkZWZhdWx0OiAx
MjB9LAorICAgIF0pOworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuOworCisgICAg
c3luY0xvb3Aob3B0aW9ucyk7Cit9CisKK2Z1bmN0aW9uIHN5bmNMb29wKG9wdGlvbnMpCit7Cisg
ICAgbGV0IHNlcnZlckNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG9wdGlvbnNb
Jy0tc2VydmVyLWNvbmZpZy1qc29uJ10sICd1dGY4JykpOworICAgIGxldCBidWlsZGJvdENvbmZp
ZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG9wdGlvbnNbJy0tYnVpbGRib3QtY29uZmln
LWpzb24nXSwgJ3V0ZjgnKSk7CisgICAgbGV0IGJ1aWxkYm90UmVtb3RlID0gbmV3IFJlbW90ZUFQ
SShidWlsZGJvdENvbmZpZy5zZXJ2ZXIpOworCisgICAgLy8gdjMgbW9kZWxzIHVzZSB0aGUgZ2xv
YmFsIFJlbW90ZUFQSSB0byBhY2Nlc3MgdGhlIHBlcmYgZGFzaGJvYXJkLgorICAgIGdsb2JhbC5S
ZW1vdGVBUEkgPSBuZXcgUmVtb3RlQVBJKHNlcnZlckNvbmZpZy5zZXJ2ZXIpOworCisgICAgY29u
c29sZS5sb2coYEZldGNoaW5nIHRoZSBtYW5pZmVzdC4uLmApOworICAgIE1hbmlmZXN0LmZldGNo
KCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIGxldCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWls
ZGJvdFRyaWdnZXJhYmxlKGJ1aWxkYm90Q29uZmlnLCBnbG9iYWwuUmVtb3RlQVBJLCBidWlsZGJv
dFJlbW90ZSwgc2VydmVyQ29uZmlnLnNsYXZlLCBjb25zb2xlKTsKKyAgICAgICAgcmV0dXJuIHRy
aWdnZXJhYmxlLnN5bmNPbmNlKCk7CisgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7Cisg
ICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgICBpZiAodHlwZW9mKGVycm9yLnN0
YWNrKSA9PSAnc3RyaW5nJykgeworICAgICAgICAgICAgZm9yIChsZXQgbGluZSBvZiBlcnJvci5z
dGFjay5zcGxpdCgnXG4nKSkKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGxpbmUpOwor
ICAgICAgICB9CisgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIHNldFRpbWVvdXQo
c3luY0xvb3AuYmluZChnbG9iYWwsIG9wdGlvbnMpLCBvcHRpb25zWyctLXNlY29uZHMtdG8tc2xl
ZXAnXSAqIDEwMDApOworICAgIH0pOworfQorCittYWluKHByb2Nlc3MuYXJndik7CkluZGV4OiBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC1zeW5j
ZXIuanMJKHJldmlzaW9uIDE5OTA4NSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29s
cy9qcy9idWlsZGJvdC1zeW5jZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAg
Y2xhc3MgQnVpbGRib3RCdWlsZEVudHJ5IHsKICAgICAgICAgfQogICAgIH0KIAorICAgIHN5bmNl
cigpIHsgcmV0dXJuIHRoaXMuX3N5bmNlcjsgfQogICAgIGJ1aWxkTnVtYmVyKCkgeyByZXR1cm4g
dGhpcy5fYnVpbGROdW1iZXI7IH0KICAgICBzbGF2ZU5hbWUoKSB7IHJldHVybiB0aGlzLl9zbGF2
ZU5hbWU7IH0KICAgICBidWlsZFJlcXVlc3RJZCgpIHsgcmV0dXJuIHRoaXMuX2J1aWxkUmVxdWVz
dElkOyB9CkBAIC0zMywzMSArMzQsMTA2IEBAIGNsYXNzIEJ1aWxkYm90QnVpbGRFbnRyeSB7CiAg
ICAgaXNJblByb2dyZXNzKCkgeyByZXR1cm4gdGhpcy5faXNJblByb2dyZXNzOyB9CiAgICAgaGFz
RmluaXNoZWQoKSB7IHJldHVybiAhdGhpcy5pc1BlbmRpbmcoKSAmJiAhdGhpcy5pc0luUHJvZ3Jl
c3MoKTsgfQogICAgIHVybCgpIHsgcmV0dXJuIHRoaXMuaXNQZW5kaW5nKCkgPyB0aGlzLl9zeW5j
ZXIudXJsKCkgOiB0aGlzLl9zeW5jZXIudXJsRm9yQnVpbGROdW1iZXIodGhpcy5fYnVpbGROdW1i
ZXIpOyB9CisKKyAgICBidWlsZFJlcXVlc3RTdGF0dXNJZlVwZGF0ZUlzTmVlZGVkKHJlcXVlc3Qp
CisgICAgeworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdC5pZCgpLCB0aGlzLl9idWlsZFJl
cXVlc3RJZCk7CisgICAgICAgIGlmICghcmVxdWVzdCkKKyAgICAgICAgICAgIHJldHVybiBudWxs
OworICAgICAgICBpZiAodGhpcy5pc1BlbmRpbmcoKSkgeworICAgICAgICAgICAgaWYgKHJlcXVl
c3QuaXNQZW5kaW5nKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICdzY2hlZHVsZWQnOworICAg
ICAgICB9IGVsc2UgaWYgKHRoaXMuaXNJblByb2dyZXNzKCkpIHsKKyAgICAgICAgICAgIGlmICgh
cmVxdWVzdC5oYXNTdGFydGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICdydW5uaW5nJzsK
KyAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc0ZpbmlzaGVkKCkpIHsKKyAgICAgICAgICAgIGlm
ICghcmVxdWVzdC5oYXNGaW5pc2hlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiAnZmFpbGVk
SWZOb3RDb21wbGV0ZWQnOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0K
IH0KIAorCiBjbGFzcyBCdWlsZGJvdFN5bmNlciB7CiAKLSAgICBjb25zdHJ1Y3Rvcih1cmwsIG9i
amVjdCkKKyAgICBjb25zdHJ1Y3RvcihyZW1vdGUsIG9iamVjdCkKICAgICB7Ci0gICAgICAgIHRo
aXMuX3VybCA9IHVybDsKKyAgICAgICAgdGhpcy5fcmVtb3RlID0gcmVtb3RlOworICAgICAgICB0
aGlzLl90ZXN0Q29uZmlndXJhdGlvbnMgPSBbXTsKICAgICAgICAgdGhpcy5fYnVpbGRlck5hbWUg
PSBvYmplY3QuYnVpbGRlcjsKLSAgICAgICAgdGhpcy5fcGxhdGZvcm1OYW1lID0gb2JqZWN0LnBs
YXRmb3JtOwotICAgICAgICB0aGlzLl90ZXN0UGF0aCA9IG9iamVjdC50ZXN0OwotICAgICAgICB0
aGlzLl9wcm9wZXJ0aWVzVGVtcGxhdGUgPSBvYmplY3QucHJvcGVydGllczsKICAgICAgICAgdGhp
cy5fc2xhdmVQcm9wZXJ0eU5hbWUgPSBvYmplY3Quc2xhdmVBcmd1bWVudDsKKyAgICAgICAgdGhp
cy5fc2xhdmVMaXN0ID0gb2JqZWN0LnNsYXZlTGlzdDsKICAgICAgICAgdGhpcy5fYnVpbGRSZXF1
ZXN0UHJvcGVydHlOYW1lID0gb2JqZWN0LmJ1aWxkUmVxdWVzdEFyZ3VtZW50OworICAgICAgICB0
aGlzLl9lbnRyeUxpc3QgPSBudWxsOwogICAgIH0KIAotICAgIHRlc3RQYXRoKCkgeyByZXR1cm4g
dGhpcy5fdGVzdFBhdGggfQogICAgIGJ1aWxkZXJOYW1lKCkgeyByZXR1cm4gdGhpcy5fYnVpbGRl
ck5hbWU7IH0KLSAgICBwbGF0Zm9ybU5hbWUoKSB7IHJldHVybiB0aGlzLl9wbGF0Zm9ybU5hbWU7
IH0KKworICAgIGFkZFRlc3RDb25maWd1cmF0aW9uKHRlc3QsIHBsYXRmb3JtLCBwcm9wZXJ0aWVz
VGVtcGxhdGUpCisgICAgeworICAgICAgICBhc3NlcnQodGVzdCBpbnN0YW5jZW9mIFRlc3QpOwor
ICAgICAgICBhc3NlcnQocGxhdGZvcm0gaW5zdGFuY2VvZiBQbGF0Zm9ybSk7CisgICAgICAgIHRo
aXMuX3Rlc3RDb25maWd1cmF0aW9ucy5wdXNoKHt0ZXN0OiB0ZXN0LCBwbGF0Zm9ybTogcGxhdGZv
cm0sIHByb3BlcnRpZXNUZW1wbGF0ZTogcHJvcGVydGllc1RlbXBsYXRlfSk7CisgICAgfQorICAg
IHRlc3RDb25maWd1cmF0aW9ucygpIHsgcmV0dXJuIHRoaXMuX3Rlc3RDb25maWd1cmF0aW9uczsg
fQorCisgICAgbWF0Y2hlc0NvbmZpZ3VyYXRpb24ocmVxdWVzdCkKKyAgICB7CisgICAgICAgIGZv
ciAobGV0IGNvbmZpZyBvZiB0aGlzLl90ZXN0Q29uZmlndXJhdGlvbnMpIHsKKyAgICAgICAgICAg
IGlmIChjb25maWcucGxhdGZvcm0gPT0gcmVxdWVzdC5wbGF0Zm9ybSgpICYmIGNvbmZpZy50ZXN0
ID09IHJlcXVlc3QudGVzdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzY2hlZHVsZVJlcXVlc3Qo
bmV3UmVxdWVzdCwgc2xhdmVOYW1lKQorICAgIHsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSB0
aGlzLl9wcm9wZXJ0aWVzRm9yQnVpbGRSZXF1ZXN0KG5ld1JlcXVlc3QpOworCisgICAgICAgIGFz
c2VydC5lcXVhbCghdGhpcy5fc2xhdmVQcm9wZXJ0eU5hbWUsICFzbGF2ZU5hbWUpOworICAgICAg
ICBpZiAodGhpcy5fc2xhdmVQcm9wZXJ0eU5hbWUpCisgICAgICAgICAgICBwcm9wZXJ0aWVzW3Ro
aXMuX3NsYXZlUHJvcGVydHlOYW1lXSA9IHNsYXZlTmFtZTsKKworICAgICAgICByZXR1cm4gdGhp
cy5fcmVtb3RlLnBvc3RGb3JtVXJsZW5jb2RlZERhdGEodGhpcy5wYXRoRm9yRm9yY2VCdWlsZCgp
LCBwcm9wZXJ0aWVzKTsKKyAgICB9CisKKyAgICBzY2hlZHVsZUZpcnN0UmVxdWVzdEluR3JvdXBJ
ZkF2YWlsYWJsZShuZXdSZXF1ZXN0KQorICAgIHsKKyAgICAgICAgYXNzZXJ0KG5ld1JlcXVlc3Qg
aW5zdGFuY2VvZiBCdWlsZFJlcXVlc3QpOworCisgICAgICAgIGlmICghdGhpcy5tYXRjaGVzQ29u
ZmlndXJhdGlvbihuZXdSZXF1ZXN0KSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAg
ICAgIGxldCBoYXNQZW5kaW5nQnVpbGRzV2l0aG91dFNsYXZlTmFtZVNwZWNpZmllZCA9IGZhbHNl
OworICAgICAgICBsZXQgdXNlZFNsYXZlcyA9IG5ldyBTZXQ7CisgICAgICAgIGZvciAobGV0IGVu
dHJ5IG9mIHRoaXMuX2VudHJ5TGlzdCkgeworICAgICAgICAgICAgaWYgKGVudHJ5LmlzUGVuZGlu
ZygpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFlbnRyeS5zbGF2ZU5hbWUoKSkKKyAgICAgICAg
ICAgICAgICAgICAgaGFzUGVuZGluZ0J1aWxkc1dpdGhvdXRTbGF2ZU5hbWVTcGVjaWZpZWQgPSB0
cnVlOworICAgICAgICAgICAgICAgIHVzZWRTbGF2ZXMuYWRkKGVudHJ5LnNsYXZlTmFtZSgpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhpcy5fc2xhdmVMaXN0
IHx8IGhhc1BlbmRpbmdCdWlsZHNXaXRob3V0U2xhdmVOYW1lU3BlY2lmaWVkKSB7CisgICAgICAg
ICAgICBpZiAodXNlZFNsYXZlcy5zaXplKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwor
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVSZXF1ZXN0KG5ld1JlcXVlc3QsIG51bGwp
OworICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQgc2xhdmVOYW1lIG9mIHRoaXMuX3NsYXZl
TGlzdCkgeworICAgICAgICAgICAgaWYgKCF1c2VkU2xhdmVzLmhhcyhzbGF2ZU5hbWUpKQorICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjaGVkdWxlUmVxdWVzdChuZXdSZXF1ZXN0LCBzbGF2
ZU5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQogCiAgICAg
cHVsbEJ1aWxkYm90KGNvdW50KQogICAgIHsKICAgICAgICAgbGV0IHNlbGYgPSB0aGlzOwotICAg
ICAgICByZXR1cm4gUmVtb3RlQVBJLmdldEpTT04odGhpcy51cmxGb3JQZW5kaW5nQnVpbGRzSlNP
TigpKS50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZW1v
dGUuZ2V0SlNPTih0aGlzLnBhdGhGb3JQZW5kaW5nQnVpbGRzSlNPTigpKS50aGVuKGZ1bmN0aW9u
IChjb250ZW50KSB7CiAgICAgICAgICAgICBsZXQgcGVuZGluZ0VudHJpZXMgPSBjb250ZW50Lm1h
cChmdW5jdGlvbiAoZW50cnkpIHsgcmV0dXJuIG5ldyBCdWlsZGJvdEJ1aWxkRW50cnkoc2VsZiwg
ZW50cnkpOyB9KTsKLQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3B1bGxSZWNlbnRCdWlsZHMo
Y291bnQpLnRoZW4oZnVuY3Rpb24gKGVudHJpZXMpIHsKICAgICAgICAgICAgICAgICBsZXQgZW50
cnlCeVJlcXVlc3QgPSB7fTsKIApAQCAtNjcsNyArMTQzLDEzIEBAIGNsYXNzIEJ1aWxkYm90U3lu
Y2VyIHsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKQogICAgICAg
ICAgICAgICAgICAgICBlbnRyeUJ5UmVxdWVzdFtlbnRyeS5idWlsZFJlcXVlc3RJZCgpXSA9IGVu
dHJ5OwogCi0gICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5QnlSZXF1ZXN0OworICAgICAgICAg
ICAgICAgIGxldCBlbnRyeUxpc3QgPSBbXTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpZCBp
biBlbnRyeUJ5UmVxdWVzdCkKKyAgICAgICAgICAgICAgICAgICAgZW50cnlMaXN0LnB1c2goZW50
cnlCeVJlcXVlc3RbaWRdKTsKKworICAgICAgICAgICAgICAgIHNlbGYuX2VudHJ5TGlzdCA9IGVu
dHJ5TGlzdDsKKworICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeUxpc3Q7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtODIsOCArMTY0LDggQEAgY2xhc3MgQnVpbGRi
b3RTeW5jZXIgewogICAgICAgICAgICAgc2VsZWN0ZWRCdWlsZHNbaV0gPSAtaSAtIDE7CiAKICAg
ICAgICAgbGV0IHNlbGYgPSB0aGlzOwotICAgICAgICByZXR1cm4gUmVtb3RlQVBJLmdldEpTT04o
dGhpcy51cmxGb3JCdWlsZEpTT04oc2VsZWN0ZWRCdWlsZHMpKS50aGVuKGZ1bmN0aW9uIChjb250
ZW50KSB7Ci0gICAgICAgICAgICBsZXQgZW50cmllcyA9IFtdOworICAgICAgICByZXR1cm4gdGhp
cy5fcmVtb3RlLmdldEpTT04odGhpcy5wYXRoRm9yQnVpbGRKU09OKHNlbGVjdGVkQnVpbGRzKSku
dGhlbihmdW5jdGlvbiAoY29udGVudCkgeworICAgICAgICAgICAgdmFyIGVudHJpZXMgPSBbXTsK
ICAgICAgICAgICAgIGZvciAobGV0IGluZGV4IG9mIHNlbGVjdGVkQnVpbGRzKSB7CiAgICAgICAg
ICAgICAgICAgbGV0IGVudHJ5ID0gY29udGVudFtpbmRleF07CiAgICAgICAgICAgICAgICAgaWYg
KGVudHJ5ICYmICFlbnRyeVsnZXJyb3InXSkKQEAgLTkzLDMwICsxNzUsMzggQEAgY2xhc3MgQnVp
bGRib3RTeW5jZXIgewogICAgICAgICB9KTsKICAgICB9CiAKLSAgICB1cmxGb3JQZW5kaW5nQnVp
bGRzSlNPTigpIHsgcmV0dXJuIGAke3RoaXMuX3VybH0vanNvbi9idWlsZGVycy8ke3RoaXMuX2J1
aWxkZXJOYW1lfS9wZW5kaW5nQnVpbGRzYDsgfQotICAgIHVybEZvckJ1aWxkSlNPTihzZWxlY3Rl
ZEJ1aWxkcykKKyAgICBwYXRoRm9yUGVuZGluZ0J1aWxkc0pTT04oKSB7IHJldHVybiBgL2pzb24v
YnVpbGRlcnMvJHt0aGlzLl9idWlsZGVyTmFtZX0vcGVuZGluZ0J1aWxkc2A7IH0KKyAgICBwYXRo
Rm9yQnVpbGRKU09OKHNlbGVjdGVkQnVpbGRzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGAke3Ro
aXMuX3VybH0vanNvbi9idWlsZGVycy8ke3RoaXMuX2J1aWxkZXJOYW1lfS9idWlsZHMvP2AKKyAg
ICAgICAgcmV0dXJuIGAvanNvbi9idWlsZGVycy8ke3RoaXMuX2J1aWxkZXJOYW1lfS9idWlsZHMv
P2AKICAgICAgICAgICAgICsgc2VsZWN0ZWRCdWlsZHMubWFwKGZ1bmN0aW9uIChudW1iZXIpIHsg
cmV0dXJuICdzZWxlY3Q9JyArIG51bWJlcjsgfSkuam9pbignJicpOwogICAgIH0KKyAgICBwYXRo
Rm9yRm9yY2VCdWlsZCgpIHsgcmV0dXJuIGAvYnVpbGRlcnMvJHt0aGlzLl9idWlsZGVyTmFtZX0v
Zm9yY2VgOyB9CiAKLSAgICB1cmwoKSB7IHJldHVybiBgJHt0aGlzLl91cmx9L2J1aWxkZXJzLyR7
dGhpcy5fYnVpbGRlck5hbWV9L2A7IH0KLSAgICB1cmxGb3JCdWlsZE51bWJlcihudW1iZXIpIHsg
cmV0dXJuIGAke3RoaXMuX3VybH0vYnVpbGRlcnMvJHt0aGlzLl9idWlsZGVyTmFtZX0vYnVpbGRz
LyR7bnVtYmVyfWA7IH0KKyAgICB1cmwoKSB7IHJldHVybiB0aGlzLl9yZW1vdGUudXJsKGAvYnVp
bGRlcnMvJHt0aGlzLl9idWlsZGVyTmFtZX0vYCk7IH0KKyAgICB1cmxGb3JCdWlsZE51bWJlcihu
dW1iZXIpIHsgcmV0dXJuIHRoaXMuX3JlbW90ZS51cmwoYC9idWlsZGVycy8ke3RoaXMuX2J1aWxk
ZXJOYW1lfS9idWlsZHMvJHtudW1iZXJ9YCk7IH0KIAogICAgIF9wcm9wZXJ0aWVzRm9yQnVpbGRS
ZXF1ZXN0KGJ1aWxkUmVxdWVzdCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJ1aWxk
UmVxdWVzdCBpbnN0YW5jZW9mIEJ1aWxkUmVxdWVzdCk7CisgICAgICAgIGFzc2VydChidWlsZFJl
cXVlc3QgaW5zdGFuY2VvZiBCdWlsZFJlcXVlc3QpOwogCiAgICAgICAgIGxldCByb290U2V0ID0g
YnVpbGRSZXF1ZXN0LnJvb3RTZXQoKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocm9vdFNldCBp
bnN0YW5jZW9mIFJvb3RTZXQpOworICAgICAgICBhc3NlcnQocm9vdFNldCBpbnN0YW5jZW9mIFJv
b3RTZXQpOwogCiAgICAgICAgIGxldCByZXBvc2l0b3J5QnlOYW1lID0ge307CiAgICAgICAgIGZv
ciAobGV0IHJlcG9zaXRvcnkgb2Ygcm9vdFNldC5yZXBvc2l0b3JpZXMoKSkKICAgICAgICAgICAg
IHJlcG9zaXRvcnlCeU5hbWVbcmVwb3NpdG9yeS5uYW1lKCldID0gcmVwb3NpdG9yeTsKIAorICAg
ICAgICBsZXQgcHJvcGVydGllc1RlbXBsYXRlID0gbnVsbDsKKyAgICAgICAgZm9yIChsZXQgY29u
ZmlnIG9mIHRoaXMuX3Rlc3RDb25maWd1cmF0aW9ucykgeworICAgICAgICAgICAgaWYgKGNvbmZp
Zy5wbGF0Zm9ybSA9PSBidWlsZFJlcXVlc3QucGxhdGZvcm0oKSAmJiBjb25maWcudGVzdCA9PSBi
dWlsZFJlcXVlc3QudGVzdCgpKQorICAgICAgICAgICAgICAgIHByb3BlcnRpZXNUZW1wbGF0ZSA9
IGNvbmZpZy5wcm9wZXJ0aWVzVGVtcGxhdGU7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHBy
b3BlcnRpZXNUZW1wbGF0ZSk7CisKICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSB7fTsKLSAgICAg
ICAgZm9yIChsZXQga2V5IGluIHRoaXMuX3Byb3BlcnRpZXNUZW1wbGF0ZSkgewotICAgICAgICAg
ICAgbGV0IHZhbHVlID0gdGhpcy5fcHJvcGVydGllc1RlbXBsYXRlW2tleV07CisgICAgICAgIGZv
ciAobGV0IGtleSBpbiBwcm9wZXJ0aWVzVGVtcGxhdGUpIHsKKyAgICAgICAgICAgIGxldCB2YWx1
ZSA9IHByb3BlcnRpZXNUZW1wbGF0ZVtrZXldOwogICAgICAgICAgICAgaWYgKHR5cGVvZih2YWx1
ZSkgIT0gJ29iamVjdCcpCiAgICAgICAgICAgICAgICAgcHJvcGVydGllc1trZXldID0gdmFsdWU7
CiAgICAgICAgICAgICBlbHNlIGlmICgncm9vdCcgaW4gdmFsdWUpIHsKQEAgLTE1MiwxMyArMjQy
LDEzIEBAIGNsYXNzIEJ1aWxkYm90U3luY2VyIHsKICAgICAgICAgcmV0dXJuIHJldmlzaW9uU2V0
OwogICAgIH0KIAotICAgIHN0YXRpYyBfbG9hZENvbmZpZyh1cmwsIGNvbmZpZykKKyAgICBzdGF0
aWMgX2xvYWRDb25maWcocmVtb3RlLCBjb25maWcpCiAgICAgewogICAgICAgICBsZXQgc2hhcmVk
ID0gY29uZmlnWydzaGFyZWQnXSB8fCB7fTsKICAgICAgICAgbGV0IHR5cGVzID0gY29uZmlnWyd0
eXBlcyddIHx8IHt9OwogICAgICAgICBsZXQgYnVpbGRlcnMgPSBjb25maWdbJ2J1aWxkZXJzJ10g
fHwge307CiAKLSAgICAgICAgbGV0IHN5bmNlcnMgPSBbXTsKKyAgICAgICAgbGV0IHN5bmNlckJ5
QnVpbGRlciA9IG5ldyBNYXA7CiAgICAgICAgIGZvciAobGV0IGVudHJ5IG9mIGNvbmZpZ1snY29u
ZmlndXJhdGlvbnMnXSkgewogICAgICAgICAgICAgbGV0IG5ld0NvbmZpZyA9IHt9OwogICAgICAg
ICAgICAgdGhpcy5fdmFsaWRhdGVBbmRNZXJnZUNvbmZpZyhuZXdDb25maWcsIHNoYXJlZCk7CkBA
IC0xODAsMTAgKzI3MCwyMiBAQCBjbGFzcyBCdWlsZGJvdFN5bmNlciB7CiAgICAgICAgICAgICBh
c3NlcnQoJ2J1aWxkZXInIGluIG5ld0NvbmZpZywgJ2NvbmZpZ3VyYXRpb24gbXVzdCBzcGVjaWZ5
IGEgYnVpbGRlcicpOwogICAgICAgICAgICAgYXNzZXJ0KCdwcm9wZXJ0aWVzJyBpbiBuZXdDb25m
aWcsICdjb25maWd1cmF0aW9uIG11c3Qgc3BlY2lmeSBhcmd1bWVudHMgdG8gcG9zdCBvbiBhIGJ1
aWxkZXInKTsKICAgICAgICAgICAgIGFzc2VydCgnYnVpbGRSZXF1ZXN0QXJndW1lbnQnIGluIG5l
d0NvbmZpZywgJ2NvbmZpZ3VyYXRpb24gbXVzdCBzcGVjaWZ5IGJ1aWxkUmVxdWVzdEFyZ3VtZW50
Jyk7Ci0gICAgICAgICAgICBzeW5jZXJzLnB1c2gobmV3IEJ1aWxkYm90U3luY2VyKHVybCwgbmV3
Q29uZmlnKSk7CisKKyAgICAgICAgICAgIGxldCB0ZXN0ID0gVGVzdC5maW5kQnlQYXRoKG5ld0Nv
bmZpZy50ZXN0KTsKKyAgICAgICAgICAgIGFzc2VydCh0ZXN0LCBgJHtuZXdDb25maWcudGVzdH0g
aXMgbm90IGEgdmFsaWQgdGVzdCBwYXRoYCk7CisKKyAgICAgICAgICAgIGxldCBwbGF0Zm9ybSA9
IFBsYXRmb3JtLmZpbmRCeU5hbWUobmV3Q29uZmlnLnBsYXRmb3JtKTsKKyAgICAgICAgICAgIGFz
c2VydChwbGF0Zm9ybSwgYCR7bmV3Q29uZmlnLnBsYXRmb3JtfSBpcyBub3QgYSB2YWxpZCBwbGF0
Zm9ybSBuYW1lYCk7CisKKyAgICAgICAgICAgIGxldCBzeW5jZXIgPSBzeW5jZXJCeUJ1aWxkZXIu
Z2V0KG5ld0NvbmZpZy5idWlsZGVyKTsKKyAgICAgICAgICAgIGlmICghc3luY2VyKSB7CisgICAg
ICAgICAgICAgICAgc3luY2VyID0gbmV3IEJ1aWxkYm90U3luY2VyKHJlbW90ZSwgbmV3Q29uZmln
KTsKKyAgICAgICAgICAgICAgICBzeW5jZXJCeUJ1aWxkZXIuc2V0KG5ld0NvbmZpZy5idWlsZGVy
LCBzeW5jZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3luY2VyLmFkZFRlc3RDb25m
aWd1cmF0aW9uKHRlc3QsIHBsYXRmb3JtLCBuZXdDb25maWcucHJvcGVydGllcyk7CiAgICAgICAg
IH0KIAotICAgICAgICByZXR1cm4gc3luY2VyczsKKyAgICAgICAgcmV0dXJuIEFycmF5LmZyb20o
c3luY2VyQnlCdWlsZGVyLnZhbHVlcygpKTsKICAgICB9CiAKICAgICBzdGF0aWMgX3ZhbGlkYXRl
QW5kTWVyZ2VDb25maWcoY29uZmlnLCB2YWx1ZXNUb01lcmdlKQpAQCAtMjAyLDYgKzMwNCwxMSBA
QCBjbGFzcyBCdWlsZGJvdFN5bmNlciB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KHZhbHVlLmV2
ZXJ5KGZ1bmN0aW9uIChwYXJ0KSB7IHJldHVybiB0eXBlb2YgcGFydCA9PSAnc3RyaW5nJzsgfSks
ICd0ZXN0IHNob3VsZCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzJyk7CiAgICAgICAgICAgICAgICAg
Y29uZmlnW25hbWVdID0gdmFsdWUuc2xpY2UoKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgJ3NsYXZlTGlzdCc6CisgICAgICAgICAgICAgICAgYXNzZXJ0KHZhbHVl
IGluc3RhbmNlb2YgQXJyYXksICdzbGF2ZUxpc3Qgc2hvdWxkIGJlIGFuIGFycmF5Jyk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0KHZhbHVlLmV2ZXJ5KGZ1bmN0aW9uIChwYXJ0KSB7IHJldHVybiB0
eXBlb2YgcGFydCA9PSAnc3RyaW5nJzsgfSksICdzbGF2ZUxpc3Qgc2hvdWxkIGJlIGFuIGFycmF5
IG9mIHN0cmluZ3MnKTsKKyAgICAgICAgICAgICAgICBjb25maWdbbmFtZV0gPSB2YWx1ZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJ3R5cGUnOiAvLyBmYWxsdGhy
b3VnaAogICAgICAgICAgICAgY2FzZSAnYnVpbGRlcic6IC8vIGZhbGx0aHJvdWdoCiAgICAgICAg
ICAgICBjYXNlICdwbGF0Zm9ybSc6IC8vIGZhbGx0aHJvdWdoCkluZGV4OiBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3QtdHJpZ2dlcmFibGUuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxl
LmpzCShyZXZpc2lvbiAwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1
aWxkYm90LXRyaWdnZXJhYmxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU3IEBACisn
dXNlIHN0cmljdCc7CisKK2xldCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKKworcmVxdWly
ZSgnLi92My1tb2RlbHMuanMnKTsKKworbGV0IEJ1aWxkYm90U3luY2VyID0gcmVxdWlyZSgnLi9i
dWlsZGJvdC1zeW5jZXInKS5CdWlsZGJvdFN5bmNlcjsKKworY2xhc3MgQnVpbGRib3RUcmlnZ2Vy
YWJsZSB7CisgICAgY29uc3RydWN0b3IoY29uZmlnLCByZW1vdGUsIGJ1aWxkYm90UmVtb3RlLCBz
bGF2ZUluZm8sIGxvZ2dlcikKKyAgICB7CisgICAgICAgIHRoaXMuX25hbWUgPSBjb25maWcudHJp
Z2dlcmFibGVOYW1lOworICAgICAgICBhc3NlcnQodHlwZW9mKHRoaXMuX25hbWUpID09ICdzdHJp
bmcnLCAndHJpZ2dlcmFibGVOYW1lIG11c3QgYmUgc3BlY2lmaWVkJyk7CisKKyAgICAgICAgdGhp
cy5fbG9va2JhY2tDb3VudCA9IGNvbmZpZy5sb29rYmFja0NvdW50OworICAgICAgICBhc3NlcnQo
dHlwZW9mKHRoaXMuX2xvb2tiYWNrQ291bnQpID09ICdudW1iZXInICYmIHRoaXMuX2xvb2tiYWNr
Q291bnQgPiAwLCAnbG9va2JhY2tDb3VudCBtdXN0IGJlIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAw
Jyk7CisKKyAgICAgICAgdGhpcy5fcmVtb3RlID0gcmVtb3RlOworCisgICAgICAgIHRoaXMuX3Ns
YXZlSW5mbyA9IHNsYXZlSW5mbzsKKyAgICAgICAgYXNzZXJ0KHR5cGVvZihzbGF2ZUluZm8ubmFt
ZSkgPT0gJ3N0cmluZycsICdzbGF2ZSBuYW1lIG11c3QgYmUgc3BlY2lmaWVkJyk7CisgICAgICAg
IGFzc2VydCh0eXBlb2Yoc2xhdmVJbmZvLnBhc3N3b3JkKSA9PSAnc3RyaW5nJywgJ3NsYXZlIHBh
c3N3b3JkIG11c3QgYmUgc3BlY2lmaWVkJyk7CisKKyAgICAgICAgdGhpcy5fc3luY2VycyA9IEJ1
aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKGJ1aWxkYm90UmVtb3RlLCBjb25maWcpOworICAgICAg
ICB0aGlzLl9sb2dnZXIgPSBsb2dnZXIgfHwge2xvZzogZnVuY3Rpb24gKCkgeyB9LCBlcnJvcjog
ZnVuY3Rpb24gKCkgeyB9fTsKKyAgICB9CisKKyAgICBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFt
ZTsgfQorCisgICAgc3luY09uY2UoKQorICAgIHsKKyAgICAgICAgbGV0IHN5bmNlckxpc3QgPSB0
aGlzLl9zeW5jZXJzOworICAgICAgICBsZXQgYnVpbGRSZXFldXN0c0J5R3JvdXAgPSBuZXcgTWFw
OworCisgICAgICAgIGxldCBzZWxmID0gdGhpczsKKyAgICAgICAgdGhpcy5fbG9nZ2VyLmxvZyhg
RmV0Y2hpbmcgYnVpbGQgcmVxdWVzdHMgZm9yICR7dGhpcy5fbmFtZX0uLi5gKTsKKyAgICAgICAg
cmV0dXJuIEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKHRoaXMuX25hbWUpLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbGV0IGJ1aWxkUmVxdWVzdHMgPSBCdWlsZFJlcXVl
c3QuYWxsKCk7CisgICAgICAgICAgICBzZWxmLl92YWxpZGF0ZVJlcXVlc3RzKGJ1aWxkUmVxdWVz
dHMpOworICAgICAgICAgICAgYnVpbGRSZXFldXN0c0J5R3JvdXAgPSBCdWlsZGJvdFRyaWdnZXJh
YmxlLl90ZXN0R3JvdXBNYXBGb3JCdWlsZFJlcXVlc3RzKGJ1aWxkUmVxdWVzdHMpOworICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX3B1bGxCdWlsZGJvdE9uQWxsU3luY2VycyhidWlsZFJlcWV1c3Rz
QnlHcm91cCk7CisgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHVwZGF0ZXMpIHsKKyAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5sb2coJ1NjaGVkdWxpbmcgYnVpbGRzJyk7CisgICAgICAgICAgICBs
ZXQgcHJvbWlzdExpc3QgPSBbXTsKKyAgICAgICAgICAgIGxldCB0ZXN0R3JvdXBMaXN0ID0gQXJy
YXkuZnJvbShidWlsZFJlcWV1c3RzQnlHcm91cC52YWx1ZXMoKSkuc29ydChmdW5jdGlvbiAoYSwg
YikgeyByZXR1cm4gYS5pZCAtIGIuaWQ7IH0pOworICAgICAgICAgICAgZm9yIChsZXQgZ3JvdXAg
b2YgdGVzdEdyb3VwTGlzdCkgeworICAgICAgICAgICAgICAgIGxldCBwcm9taXNlID0gc2VsZi5f
c2NoZWR1bGVOZXh0UmVxdWVzdEluR3JvdXBJZlNsYXZlSXNBdmFpbGFibGUoZ3JvdXAsIHVwZGF0
ZXMpOworICAgICAgICAgICAgICAgIGlmIChwcm9taXNlKQorICAgICAgICAgICAgICAgICAgICBw
cm9taXN0TGlzdC5wdXNoKHByb21pc2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIFByb21pc2UuYWxsKHByb21pc3RMaXN0KTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAvLyBQdWxsIGFsbCBidWlsZGJvdHMgZm9yIHRoZSBzZWNvbmQgdGlt
ZSBzaW5jZSB0aGUgcHJldmlvdXMgc3RlcCBtYXkgaGF2ZSBzY2hlZHVsZWQgbW9yZSBidWlsZHMu
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcHVsbEJ1aWxkYm90T25BbGxTeW5jZXJzKGJ1aWxk
UmVxZXVzdHNCeUdyb3VwKTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbiAodXBkYXRlcykgewor
ICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG5ldyBBUEkgdGhhdCBqdXN0IHVwZGF0ZXMgdGhl
IHJlcXVlc3RzLgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlbW90ZS5wb3N0SlNPTihgL2Fw
aS9idWlsZC1yZXF1ZXN0cy8ke3NlbGYuX25hbWV9YCwgeworICAgICAgICAgICAgICAgICdzbGF2
ZU5hbWUnOiBzZWxmLl9zbGF2ZUluZm8ubmFtZSwKKyAgICAgICAgICAgICAgICAnc2xhdmVQYXNz
d29yZCc6IHNlbGYuX3NsYXZlSW5mby5wYXNzd29yZCwKKyAgICAgICAgICAgICAgICAnYnVpbGRS
ZXF1ZXN0VXBkYXRlcyc6IHVwZGF0ZXN9KTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVz
cG9uc2UpIHsKKyAgICAgICAgICAgIGlmIChyZXNwb25zZVsnc3RhdHVzJ10gIT0gJ09LJykKKyAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIubG9nKCdGYWlsZWQgdG8gdXBkYXRlIHRoZSBidWls
ZCByZXF1ZXN0cyBzdGF0dXM6ICcgKyByZXNwb25zZVsnc3RhdHVzJ10pOworICAgICAgICB9KQor
ICAgIH0KKworICAgIF92YWxpZGF0ZVJlcXVlc3RzKGJ1aWxkUmVxdWVzdHMpCisgICAgeworICAg
ICAgICBsZXQgdGVzdFBsYXRmb3JtUGFyaXMgPSB7fTsKKyAgICAgICAgZm9yIChsZXQgcmVxdWVz
dCBvZiBidWlsZFJlcXVlc3RzKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX3N5bmNlcnMuc29t
ZShmdW5jdGlvbiAoc3luY2VyKSB7IHJldHVybiBzeW5jZXIubWF0Y2hlc0NvbmZpZ3VyYXRpb24o
cmVxdWVzdCk7IH0pKSB7CisgICAgICAgICAgICAgICAgbGV0IGtleSA9IHJlcXVlc3QucGxhdGZv
cm0oKS5pZCArICctJyArIHJlcXVlc3QudGVzdCgpLmlkKCk7CisgICAgICAgICAgICAgICAgaWYg
KCEoa2V5IGluIHRlc3RQbGF0Zm9ybVBhcmlzKSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5f
bG9nZ2VyLmVycm9yKGBObyBtYXRjaGluZyBjb25maWd1cmF0aW9uIGZvciAiJHtyZXF1ZXN0LnRl
c3QoKS5mdWxsTmFtZSgpfSIgb24gIiR7cmVxdWVzdC5wbGF0Zm9ybSgpLm5hbWUoKX0iLmApOyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0ZXN0UGxhdGZvcm1QYXJpc1trZXldID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIF9wdWxsQnVpbGRi
b3RPbkFsbFN5bmNlcnMoYnVpbGRSZXFldXN0c0J5R3JvdXApCisgICAgeworICAgICAgICBsZXQg
dXBkYXRlcyA9IHt9OworICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAgICAgIHJldHVybiBQ
cm9taXNlLmFsbCh0aGlzLl9zeW5jZXJzLm1hcChmdW5jdGlvbiAoc3luY2VyKSB7CisgICAgICAg
ICAgICBzZWxmLl9sb2dnZXIubG9nKGBGZXRjaGluZyBidWlsZHMgb24gJHtzeW5jZXIuYnVpbGRl
ck5hbWUoKX1gKTsKKyAgICAgICAgICAgIHJldHVybiBzeW5jZXIucHVsbEJ1aWxkYm90KHNlbGYu
X2xvb2tiYWNrQ291bnQpLnRoZW4oZnVuY3Rpb24gKGVudHJ5TGlzdCkgeworICAgICAgICAgICAg
ICAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJ5TGlzdCkgeworICAgICAgICAgICAgICAgICAgICBs
ZXQgcmVxdWVzdCA9IEJ1aWxkUmVxdWVzdC5maW5kQnlJZChlbnRyeS5idWlsZFJlcXVlc3RJZCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXF1ZXN0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPSBidWlsZFJl
cWV1c3RzQnlHcm91cC5nZXQocmVxdWVzdC50ZXN0R3JvdXBJZCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0KCFpbmZvLnN5bmNlciB8fCBpbmZvLnN5bmNlciA9PSBzeW5jZXIpOworICAg
ICAgICAgICAgICAgICAgICBpbmZvLnN5bmNlciA9IHN5bmNlcjsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGVudHJ5LnNsYXZlTmFtZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQoIWluZm8uc2xhdmVOYW1lIHx8IGluZm8uc2xhdmVOYW1lID09IGVudHJ5LnNsYXZlTmFtZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uc2xhdmVOYW1lID0gZW50cnkuc2xhdmVO
YW1lKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBsZXQg
bmV3U3RhdHVzID0gZW50cnkuYnVpbGRSZXF1ZXN0U3RhdHVzSWZVcGRhdGVJc05lZWRlZChyZXF1
ZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1N0YXR1cykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhgVXBkYXRpbmcgdGhlIHN0YXR1cyBvZiBidWls
ZCByZXF1ZXN0ICR7cmVxdWVzdC5pZCgpfSBmcm9tICR7cmVxdWVzdC5zdGF0dXMoKX0gdG8gJHtu
ZXdTdGF0dXN9YCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzW2VudHJ5LmJ1aWxk
UmVxdWVzdElkKCldID0ge3N0YXR1czogbmV3U3RhdHVzLCB1cmw6IGVudHJ5LnVybCgpfTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB1cGRhdGVzOyB9KTsKKyAgICB9
CisKKyAgICBfc2NoZWR1bGVOZXh0UmVxdWVzdEluR3JvdXBJZlNsYXZlSXNBdmFpbGFibGUoZ3Jv
dXBJbmZvLCBwZW5kaW5nVXBkYXRlcykKKyAgICB7CisgICAgICAgIGxldCBvcmRlcmVkUmVxdWVz
dHMgPSBncm91cEluZm8ucmVxdWVzdHMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5v
cmRlcigpIC0gYi5vcmRlcigpOyB9KTsKKyAgICAgICAgbGV0IG5leHRSZXF1ZXN0ID0gbnVsbDsK
KyAgICAgICAgZm9yIChsZXQgcmVxdWVzdCBvZiBvcmRlcmVkUmVxdWVzdHMpIHsKKyAgICAgICAg
ICAgIGlmIChyZXF1ZXN0LmlzU2NoZWR1bGVkKCkgfHwgKHJlcXVlc3QuaWQoKSBpbiBwZW5kaW5n
VXBkYXRlcyAmJiBwZW5kaW5nVXBkYXRlc1tyZXF1ZXN0LmlkKCldWydzdGF0dXMnXSA9PSAnc2No
ZWR1bGVkJykpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAocmVxdWVz
dC5pc1BlbmRpbmcoKSAmJiAhKHJlcXVlc3QuaWQoKSBpbiBwZW5kaW5nVXBkYXRlcykpIHsKKyAg
ICAgICAgICAgICAgICBuZXh0UmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFuZXh0UmVxdWVzdCkK
KyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGxldCBmaXJzdFJlcXVlc3QgPSAh
bmV4dFJlcXVlc3Qub3JkZXIoKTsKKyAgICAgICAgaWYgKGZpcnN0UmVxdWVzdCkgeworICAgICAg
ICAgICAgdGhpcy5fbG9nZ2VyLmxvZyhgU3luY2luZyBidWlsZCByZXF1ZXN0ICR7bmV4dFJlcXVl
c3QuaWQoKX0gb24gJHtncm91cEluZm8uc2xhdmVOYW1lfSBpbiAke2dyb3VwSW5mby5zeW5jZXIu
YnVpbGRlck5hbWUoKX1gKTsKKyAgICAgICAgICAgIHJldHVybiBncm91cEluZm8uc3luY2VyLnNj
aGVkdWxlUmVxdWVzdChyZXF1ZXN0LCBncm91cEluZm8uc2xhdmVOYW1lKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZvciAobGV0IHN5bmNlciBvZiB0aGlzLl9zeW5jZXJzKSB7CisgICAgICAgICAg
ICBsZXQgcHJvbWlzZSA9IHN5bmNlci5zY2hlZHVsZUZpcnN0UmVxdWVzdEluR3JvdXBJZkF2YWls
YWJsZShuZXh0UmVxdWVzdCk7CisgICAgICAgICAgICBpZiAocHJvbWlzZSkgeworICAgICAgICAg
ICAgICAgIGxldCBzbGF2ZU5hbWUgPSBncm91cEluZm8uc2xhdmVOYW1lID8gYCBvbiAke2dyb3Vw
SW5mby5zbGF2ZU5hbWV9YCA6ICcnOworICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5sb2co
YFN5bmNpbmcgYnVpbGQgcmVxdWVzdCAke25leHRSZXF1ZXN0LmlkKCl9JHtzbGF2ZU5hbWV9IGlu
ICR7c3luY2VyLmJ1aWxkZXJOYW1lKCl9YCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21p
c2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAg
fQorCisgICAgc3RhdGljIF90ZXN0R3JvdXBNYXBGb3JCdWlsZFJlcXVlc3RzKGJ1aWxkUmVxdWVz
dHMpCisgICAgeworICAgICAgICBsZXQgbWFwID0gbmV3IE1hcDsKKyAgICAgICAgZm9yIChsZXQg
cmVxdWVzdCBvZiBidWlsZFJlcXVlc3RzKSB7CisgICAgICAgICAgICBsZXQgZ3JvdXBJZCA9IHJl
cXVlc3QudGVzdEdyb3VwSWQoKTsKKyAgICAgICAgICAgIGlmICghbWFwLmhhcyhncm91cElkKSkg
Ly8gRG9uJ3QgdXNlIHJlYWwgVGVzdEdyb3VwIG9iamVjdHMgdG8gYXZvaWQgZXhlY3V0aW5nIHBv
c3RncmVzIHF1ZXJ5IGluIHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgICAgICBtYXAuc2V0KGdyb3Vw
SWQsIHtpZDogZ3JvdXBJZCwgcmVxdWVzdHM6IFtyZXF1ZXN0XSwgc3luY2VyOiBudWxsLCBzbGF2
ZU5hbWU6IG51bGx9KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtYXAuZ2V0
KGdyb3VwSWQpLnJlcXVlc3RzLnB1c2gocmVxdWVzdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG1hcDsKKyAgICB9Cit9CisKK2lmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKQor
ICAgIG1vZHVsZS5leHBvcnRzLkJ1aWxkYm90VHJpZ2dlcmFibGUgPSBCdWlsZGJvdFRyaWdnZXJh
YmxlOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2RhdGFiYXNlLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9kYXRhYmFz
ZS5qcwkocmV2aXNpb24gMTk5MDg1KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xz
L2pzL2RhdGFiYXNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIGxldCB0YWJs
ZVRvUHJlZml4TWFwID0gewogICAgICdidWdfdHJhY2tlcnMnOiAndHJhY2tlcicsCiAgICAgJ2J1
aWxkX3RyaWdnZXJhYmxlcyc6ICd0cmlnZ2VyYWJsZScsCiAgICAgJ2J1aWxkX3JlcXVlc3RzJzog
J3JlcXVlc3QnLAorICAgICdidWlsZF9zbGF2ZXMnOiAnc2xhdmUnLAogICAgICdidWlsZGVycyc6
ICdidWlsZGVyJywKICAgICAnY29tbWl0cyc6ICdjb21taXQnLAogICAgICd0ZXN0X2NvbmZpZ3Vy
YXRpb25zJzogJ2NvbmZpZycsCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMv
anMvcGFyc2UtYXJndW1lbnRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy90b29scy9qcy9wYXJzZS1hcmd1bWVudHMuanMJKHJldmlzaW9uIDApCisrKyBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvcGFyc2UtYXJndW1lbnRzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzQgQEAKKworZnVuY3Rpb24gcGFyc2VBcmd1bWVudChhcmd2LCBhY2Nl
cHRlZE9wdGlvbnMpIHsKKyAgICB2YXIgYXJncyA9IGFyZ3Yuc2xpY2UoMik7CisgICAgdmFyIG9w
dGlvbnMgPSB7fQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkgKz0gMikg
eworICAgICAgICB2YXIgY3VycmVudCA9IGFyZ3NbaV07CisgICAgICAgIHZhciBuZXh0ID0gYXJn
c1tpICsgMV07CisgICAgICAgIGZvciAodmFyIG9wdGlvbiBvZiBhY2NlcHRlZE9wdGlvbnMpIHsK
KyAgICAgICAgICAgIGlmIChjdXJyZW50ID09IG9wdGlvblsnbmFtZSddKSB7CisgICAgICAgICAg
ICAgICAgb3B0aW9uc1tvcHRpb25bJ25hbWUnXV0gPSBuZXh0OworICAgICAgICAgICAgICAgIG5l
eHQgPSBudWxsOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGlmIChuZXh0KSB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdJbnZh
bGlkIGFyZ3VtZW50OicsIGN1cnJlbnQpOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAg
ICAgIH0KKyAgICB9CisgICAgZm9yICh2YXIgb3B0aW9uIG9mIGFjY2VwdGVkT3B0aW9ucykgewor
ICAgICAgICB2YXIgbmFtZSA9IG9wdGlvblsnbmFtZSddOworICAgICAgICBpZiAob3B0aW9uWydy
ZXF1aXJlZCddICYmICEobmFtZSBpbiBvcHRpb25zKSkgeworICAgICAgICAgICAgY29uc29sZS5s
b2coJ1JlcXVpcmVkIGFyZ3VtZW50JywgbmFtZSwgJ2lzIG1pc3NpbmcnKTsKKyAgICAgICAgICAg
IHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIHZhciB2YWx1ZSA9IG9wdGlvbnNbbmFt
ZV0gfHwgb3B0aW9uWydkZWZhdWx0J107CisgICAgICAgIHZhciBjb252ZXJ0ZXIgPSBvcHRpb25b
J3R5cGUnXTsKKyAgICAgICAgb3B0aW9uc1tuYW1lXSA9IGNvbnZlcnRlciA/IGNvbnZlcnRlcih2
YWx1ZSkgOiB2YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK2lmICh0eXBl
b2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKQorICAgIG1vZHVsZS5leHBvcnRzLnBhcnNlQXJndW1l
bnQgPSBwYXJzZUFyZ3VtZW50OwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xz
L2pzL3JlbW90ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9v
bHMvanMvcmVtb3RlLmpzCShyZXZpc2lvbiAxOTkwODUpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdG9vbHMvanMvcmVtb3RlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zLDE0ICszLDI0IEBA
CiBsZXQgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7CiBsZXQgaHR0cCA9IHJlcXVpcmUoJ2h0
dHAnKTsKIGxldCBodHRwcyA9IHJlcXVpcmUoJ2h0dHBzJyk7CitsZXQgcXVlcnlzdHJpbmcgPSBy
ZXF1aXJlKCdxdWVyeXN0cmluZycpOwogCi1sZXQgUmVtb3RlQVBJID0gbmV3IChjbGFzcyBSZW1v
dGVBUEkgewotICAgIGNvbnN0cnVjdG9yKCkKK2NsYXNzIFJlbW90ZUFQSSB7CisgICAgY29uc3Ry
dWN0b3Ioc2VydmVyKQogICAgIHsKLSAgICAgICAgdGhpcy5fc2VydmVyID0gewotICAgICAgICAg
ICAgc2NoZW1lOiAnaHR0cCcsCi0gICAgICAgICAgICBob3N0OiAnbG9jYWxob3N0JywKLSAgICAg
ICAgfQorICAgICAgICB0aGlzLl9zZXJ2ZXIgPSBudWxsOworICAgICAgICBpZiAoc2VydmVyKQor
ICAgICAgICAgICAgdGhpcy5jb25maWd1cmUoc2VydmVyKTsKKyAgICB9CisKKyAgICB1cmwocGF0
aCkKKyAgICB7CisgICAgICAgIGxldCBzY2hlbWUgPSB0aGlzLl9zZXJ2ZXIuc2NoZW1lOworICAg
ICAgICBsZXQgcG9ydCA9IHRoaXMuX3NlcnZlci5wb3J0OworICAgICAgICBsZXQgcG9ydFN1ZmZp
eCA9IChzY2hlbWUgPT0gJ2h0dHAnICYmIHBvcnQgPT0gODApIHx8IChzY2hlbWUgPT0gJ2h0dHBz
JyAmJiBwb3J0ID09IDQ0MykgPyAnJyA6IGA6JHtwb3J0fWA7CisgICAgICAgIGlmIChwYXRoLmNo
YXJBdCgwKSAhPSAnLycpCisgICAgICAgICAgICBwYXRoID0gJy8nICsgcGF0aDsKKyAgICAgICAg
cmV0dXJuIGAke3NjaGVtZX06Ly8ke3RoaXMuX3NlcnZlci5ob3N0fXBvcnRTdWZmaXgke3BhdGh9
YDsKICAgICB9CiAKICAgICBjb25maWd1cmUoc2VydmVyKQpAQCAtMjIsMjcgKzMyLDQwIEBAIGxl
dCBSZW1vdGVBUEkgPSBuZXcgKGNsYXNzIFJlbW90ZUFQSSB7CiAgICAgICAgIHRoaXMuX3NlcnZl
ciA9IHNlcnZlcjsKICAgICB9CiAKLSAgICBnZXRKU09OKHBhdGgsIGRhdGEpCisgICAgZ2V0SlNP
TihwYXRoKQogICAgIHsKLSAgICAgICAgbGV0IGNvbnRlbnRUeXBlID0gbnVsbDsKLSAgICAgICAg
aWYgKGRhdGEpIHsKLSAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL2pzb24n
OwotICAgICAgICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB0aGlzLnNlbmRIdHRwUmVxdWVzdChwYXRoLCAnR0VUJywgY29udGVudFR5
cGUsIGRhdGEpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICByZXR1cm4gdGhpcy5z
ZW5kSHR0cFJlcXVlc3QocGF0aCwgJ0dFVCcsIG51bGwsIG51bGwpLnRoZW4oZnVuY3Rpb24gKHJl
c3VsdCkgewogICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVzdWx0LnJlc3BvbnNlVGV4
dCk7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGdldEpTT05XaXRoU3RhdHVzKHBhdGgsIGRh
dGEpCisgICAgZ2V0SlNPTldpdGhTdGF0dXMocGF0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmdldEpTT04ocGF0aCwgZGF0YSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAg
IHJldHVybiB0aGlzLmdldEpTT04ocGF0aCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CiAgICAg
ICAgICAgICBpZiAocmVzdWx0WydzdGF0dXMnXSAhPSAnT0snKQogICAgICAgICAgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgfSk7CiAgICAgfQogCisgICAgcG9zdEpTT04ocGF0aCwgZGF0YSkKKyAgICB7Cisg
ICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL2pzb24nOworICAgICAgICBj
b25zdCBwYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7CisgICAgICAgIHJldHVybiB0aGlz
LnNlbmRIdHRwUmVxdWVzdChwYXRoLCAnUE9TVCcsICdhcHBsaWNhdGlvbi9qc29uJywgcGF5bG9h
ZCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJz
ZShyZXN1bHQucmVzcG9uc2VUZXh0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgcG9zdEZv
cm1VcmxlbmNvZGVkRGF0YShwYXRoLCBkYXRhKQorICAgIHsKKyAgICAgICAgY29uc3QgY29udGVu
dFR5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJzsKKyAgICAgICAgY29u
c3QgcGF5bG9hZCA9IHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShkYXRhKTsKKyAgICAgICAgcmV0dXJu
IHRoaXMuc2VuZEh0dHBSZXF1ZXN0KHBhdGgsICdQT1NUJywgY29udGVudFR5cGUsIHBheWxvYWQp
LnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZXNw
b25zZVRleHQ7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIHNlbmRIdHRwUmVxdWVzdChwYXRo
LCBtZXRob2QsIGNvbnRlbnRUeXBlLCBjb250ZW50KQogICAgIHsKICAgICAgICAgbGV0IHNlcnZl
ciA9IHRoaXMuX3NlcnZlcjsKQEAgLTUwLDcgKzczLDcgQEAgbGV0IFJlbW90ZUFQSSA9IG5ldyAo
Y2xhc3MgUmVtb3RlQVBJIHsKICAgICAgICAgICAgIGxldCBvcHRpb25zID0gewogICAgICAgICAg
ICAgICAgIGhvc3RuYW1lOiBzZXJ2ZXIuaG9zdCwKICAgICAgICAgICAgICAgICBwb3J0OiBzZXJ2
ZXIucG9ydCB8fCA4MCwKLSAgICAgICAgICAgICAgICBhdXRoOiBzZXJ2ZXIuYXV0aCwKKyAgICAg
ICAgICAgICAgICBhdXRoOiBzZXJ2ZXIuYXV0aCA/IHNlcnZlci5hdXRoLnVzZXJuYW1lICsgJzon
ICsgc2VydmVyLmF1dGgucGFzc3dvcmQgOiBudWxsLAogICAgICAgICAgICAgICAgIG1ldGhvZDog
bWV0aG9kLAogICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgsCiAgICAgICAgICAgICB9OwpAQCAt
NzMsNyArOTYsNyBAQCBsZXQgUmVtb3RlQVBJID0gbmV3IChjbGFzcyBSZW1vdGVBUEkgewogICAg
ICAgICAgICAgcmVxdWVzdC5lbmQoKTsKICAgICAgICAgfSk7CiAgICAgfQotfSkKK307CiAKIGlm
ICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKQogICAgIG1vZHVsZS5leHBvcnRzLlJlbW90
ZUFQSSA9IFJlbW90ZUFQSTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9q
cy92My1tb2RlbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rv
b2xzL2pzL3YzLW1vZGVscy5qcwkocmV2aXNpb24gMTk5MDg1KQorKysgV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3Rvb2xzL2pzL3YzLW1vZGVscy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNCBAQCBpbXBvcnRGcm9tVjMoJ21vZGVscy90ZXN0LWdyb3VwLmpzJywgJ1RlCiAKIGltcG9y
dEZyb21WMygnaW5zdHJ1bWVudGF0aW9uLmpzJywgJ0luc3RydW1lbnRhdGlvbicpOwogCi0vLyBS
ZW1vdGVBUEkgaGFzIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGluIG5vZGUgc2luY2UgWEhS
IGlzbid0IGF2YWlsYWJsZS4KLWdsb2JhbC5SZW1vdGVBUEkgPSByZXF1aXJlKCcuL3JlbW90ZS5q
cycpLlJlbW90ZUFQSTsKLQogZ2xvYmFsLlN0YXRpc3RpY3MgPSByZXF1aXJlKCcuLi8uLi9wdWJs
aWMvc2hhcmVkL3N0YXRpc3RpY3MuanMnKTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy91bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanMJ
KHJldmlzaW9uIDE5OTA4NSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3Rz
L2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMzAsMTkgKzMwLDIx
IEBAIGZ1bmN0aW9uIHNhbXBsZWlPU0NvbmZpZygpCiAgICAgICAgICAgICAgICAgJ3Rlc3QnOiBb
J0pldFN0cmVhbSddLAogICAgICAgICAgICAgICAgICdhcmd1bWVudHMnOiB7J3Rlc3RfbmFtZSc6
ICdqZXRzdHJlYW0nfQogICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJkcm9tYWVvLWRvbSI6
IHsKLSAgICAgICAgICAgICAgICAidGVzdCI6IFsiRHJvbWFlbyIsICJET00gQ29yZSBUZXN0cyJd
LAotICAgICAgICAgICAgICAgICJhcmd1bWVudHMiOiB7InRlc3RzIjogImRyb21hZW8tZG9tIn0K
KyAgICAgICAgICAgICdkcm9tYWVvLWRvbSc6IHsKKyAgICAgICAgICAgICAgICAndGVzdCc6IFsn
RHJvbWFlbycsICdET00gQ29yZSBUZXN0cyddLAorICAgICAgICAgICAgICAgICdhcmd1bWVudHMn
OiB7J3Rlc3RzJzogJ2Ryb21hZW8tZG9tJ30KICAgICAgICAgICAgIH0sCiAgICAgICAgIH0sCiAg
ICAgICAgICdidWlsZGVycyc6IHsKICAgICAgICAgICAgICdpUGhvbmUtYmVuY2gnOiB7CiAgICAg
ICAgICAgICAgICAgJ2J1aWxkZXInOiAnQUJUZXN0LWlQaG9uZS1SdW5CZW5jaG1hcmstVGVzdHMn
LAotICAgICAgICAgICAgICAgICdhcmd1bWVudHMnOiB7ICdmb3JjZXNjaGVkdWxlcic6ICdBQlRl
c3QtaVBob25lLVJ1bkJlbmNobWFyay1UZXN0cy1Gb3JjZVNjaGVkdWxlcicgfQorICAgICAgICAg
ICAgICAgICdhcmd1bWVudHMnOiB7ICdmb3JjZXNjaGVkdWxlcic6ICdBQlRlc3QtaVBob25lLVJ1
bkJlbmNobWFyay1UZXN0cy1Gb3JjZVNjaGVkdWxlcicgfSwKKyAgICAgICAgICAgICAgICAnc2xh
dmVMaXN0JzogWydBQlRlc3QtaVBob25lLTAnXSwKICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAnaVBhZC1iZW5jaCc6IHsKICAgICAgICAgICAgICAgICAnYnVpbGRlcic6ICdBQlRlc3QtaVBh
ZC1SdW5CZW5jaG1hcmstVGVzdHMnLAotICAgICAgICAgICAgICAgICdhcmd1bWVudHMnOiB7ICdm
b3JjZXNjaGVkdWxlcic6ICdBQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMtRm9yY2VTY2hl
ZHVsZXInIH0KKyAgICAgICAgICAgICAgICAnYXJndW1lbnRzJzogeyAnZm9yY2VzY2hlZHVsZXIn
OiAnQUJUZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzLUZvcmNlU2NoZWR1bGVyJyB9LAorICAg
ICAgICAgICAgICAgICdzbGF2ZUxpc3QnOiBbJ0FCVGVzdC1pUGFkLTAnXSwKICAgICAgICAgICAg
IH0KICAgICAgICAgfSwKICAgICAgICAgJ2NvbmZpZ3VyYXRpb25zJzogWwpAQCAtNzEsNiArNzMs
NzcgQEAgbGV0IHNhbXBsZVJvb3RTZXREYXRhID0gewogICAgIH0KIH07CiAKK2Z1bmN0aW9uIHNt
YWxsQ29uZmlndXJhdGlvbigpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgJ2J1aWxkZXInOiAn
c29tZSBidWlsZGVyJywKKyAgICAgICAgJ3BsYXRmb3JtJzogJ1NvbWUgcGxhdGZvcm0nLAorICAg
ICAgICAndGVzdCc6IFsnU29tZSB0ZXN0J10sCisgICAgICAgICdhcmd1bWVudHMnOiB7fSwKKyAg
ICAgICAgJ2J1aWxkUmVxdWVzdEFyZ3VtZW50JzogJ2lkJ307Cit9CisKK2Z1bmN0aW9uIHNtYWxs
UGVuZGluZ0J1aWxkKCkKK3sKKyAgICByZXR1cm4geworICAgICAgICAnYnVpbGRlck5hbWUnOiAn
c29tZSBidWlsZGVyJywKKyAgICAgICAgJ2J1aWxkcyc6IFtdLAorICAgICAgICAncHJvcGVydGll
cyc6IFtdLAorICAgICAgICAnc291cmNlJzogeworICAgICAgICAgICAgJ2JyYW5jaCc6ICcnLAor
ICAgICAgICAgICAgJ2NoYW5nZXMnOiBbXSwKKyAgICAgICAgICAgICdjb2RlYmFzZSc6ICdXZWJL
aXQnLAorICAgICAgICAgICAgJ2hhc1BhdGNoJzogZmFsc2UsCisgICAgICAgICAgICAncHJvamVj
dCc6ICcnLAorICAgICAgICAgICAgJ3JlcG9zaXRvcnknOiAnJywKKyAgICAgICAgICAgICdyZXZp
c2lvbic6ICcnCisgICAgICAgIH0sCisgICAgfTsKK30KKworZnVuY3Rpb24gc21hbGxJblByb2dy
ZXNzQnVpbGQoKQoreworICAgIHJldHVybiB7CisgICAgICAgICdidWlsZGVyTmFtZSc6ICdzb21l
IGJ1aWxkZXInLAorICAgICAgICAnYnVpbGRzJzogW10sCisgICAgICAgICdwcm9wZXJ0aWVzJzog
W10sCisgICAgICAgICdjdXJyZW50U3RlcCc6IHsgfSwKKyAgICAgICAgJ2V0YSc6IDEyMywKKyAg
ICAgICAgJ251bWJlcic6IDQ1NiwKKyAgICAgICAgJ3NvdXJjZSc6IHsKKyAgICAgICAgICAgICdi
cmFuY2gnOiAnJywKKyAgICAgICAgICAgICdjaGFuZ2VzJzogW10sCisgICAgICAgICAgICAnY29k
ZWJhc2UnOiAnV2ViS2l0JywKKyAgICAgICAgICAgICdoYXNQYXRjaCc6IGZhbHNlLAorICAgICAg
ICAgICAgJ3Byb2plY3QnOiAnJywKKyAgICAgICAgICAgICdyZXBvc2l0b3J5JzogJycsCisgICAg
ICAgICAgICAncmV2aXNpb24nOiAnJworICAgICAgICB9LAorICAgIH07Cit9CisKK2Z1bmN0aW9u
IHNtYWxsRmluaXNoZWRCdWlsZCgpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgJ2J1aWxkZXJO
YW1lJzogJ3NvbWUgYnVpbGRlcicsCisgICAgICAgICdidWlsZHMnOiBbXSwKKyAgICAgICAgJ3By
b3BlcnRpZXMnOiBbXSwKKyAgICAgICAgJ2N1cnJlbnRTdGVwJzogbnVsbCwKKyAgICAgICAgJ2V0
YSc6IG51bGwsCisgICAgICAgICdudW1iZXInOiA3ODksCisgICAgICAgICdzb3VyY2UnOiB7Cisg
ICAgICAgICAgICAnYnJhbmNoJzogJycsCisgICAgICAgICAgICAnY2hhbmdlcyc6IFtdLAorICAg
ICAgICAgICAgJ2NvZGViYXNlJzogJ1dlYktpdCcsCisgICAgICAgICAgICAnaGFzUGF0Y2gnOiBm
YWxzZSwKKyAgICAgICAgICAgICdwcm9qZWN0JzogJycsCisgICAgICAgICAgICAncmVwb3NpdG9y
eSc6ICcnLAorICAgICAgICAgICAgJ3JldmlzaW9uJzogJycKKyAgICAgICAgfSwKKyAgICAgICAg
J3RpbWVzJzogWzAsIDFdLAorICAgIH07Cit9CisKIGZ1bmN0aW9uIGNyZWF0ZVNhbXBsZUJ1aWxk
UmVxdWVzdChwbGF0Zm9ybSwgdGVzdCkKIHsKICAgICBhc3NlcnQocGxhdGZvcm0gaW5zdGFuY2Vv
ZiBQbGF0Zm9ybSk7CkBAIC04MiwxMSArMTU1LDExIEBAIGZ1bmN0aW9uIGNyZWF0ZVNhbXBsZUJ1
aWxkUmVxdWVzdChwbGF0Zm8KICAgICAgICAgeydpZCc6ICc4ODkzMCcsICd0aW1lJzogMCwgJ3Jl
cG9zaXRvcnknOiBNb2NrTW9kZWxzLmlvcywgJ3JldmlzaW9uJzogJzEzQTQ1Mid9LAogICAgIF19
KTsKIAotICAgIGxldCByZXF1ZXN0ID0gQnVpbGRSZXF1ZXN0LmVuc3VyZVNpbmdsZXRvbignMTY3
MzMnLCB7J3Jvb3RTZXQnOiByb290U2V0LCAnc3RhdHVzJzogJ3BlbmRpbmcnLCAncGxhdGZvcm0n
OiBwbGF0Zm9ybSwgJ3Rlc3QnOiB0ZXN0fSk7CisgICAgbGV0IHJlcXVlc3QgPSBCdWlsZFJlcXVl
c3QuZW5zdXJlU2luZ2xldG9uKCcxNjczMy0nICsgcGxhdGZvcm0uaWQoKSwgeydyb290U2V0Jzog
cm9vdFNldCwgJ3N0YXR1cyc6ICdwZW5kaW5nJywgJ3BsYXRmb3JtJzogcGxhdGZvcm0sICd0ZXN0
JzogdGVzdH0pOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1mdW5jdGlvbiBzYW1wbGVQZW5k
aW5nQnVpbGQoYnVpbGRSZXF1ZXN0SWQpCitmdW5jdGlvbiBzYW1wbGVQZW5kaW5nQnVpbGQoYnVp
bGRSZXF1ZXN0SWQsIGJ1aWxkVGltZSwgc2xhdmVOYW1lKQogewogICAgIHJldHVybiB7CiAgICAg
ICAgICdidWlsZGVyTmFtZSc6ICdBQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMnLApAQCAt
MTAyLDYgKzE3NSw3IEBAIGZ1bmN0aW9uIHNhbXBsZVBlbmRpbmdCdWlsZChidWlsZFJlcXVlc3QK
ICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShzYW1wbGVSb290U2V0RGF0YSksCiAgICAg
ICAgICAgICAgICAgJ0ZvcmNlIEJ1aWxkIEZvcm0nCiAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgWydzbGF2ZW5hbWUnLCBzbGF2ZU5hbWUsICcnXSwKICAgICAgICAgICAgIFsnc2NoZWR1bGVy
JywgJ0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy1Gb3JjZVNjaGVkdWxlcicsICdTY2hl
ZHVsZXInXQogICAgICAgICBdLAogICAgICAgICAnc291cmNlJzogewpAQCAtMTEzLDExICsxODcs
MTEgQEAgZnVuY3Rpb24gc2FtcGxlUGVuZGluZ0J1aWxkKGJ1aWxkUmVxdWVzdAogICAgICAgICAg
ICAgJ3JlcG9zaXRvcnknOiAnJywKICAgICAgICAgICAgICdyZXZpc2lvbic6ICcnCiAgICAgICAg
IH0sCi0gICAgICAgICdzdWJtaXR0ZWRBdCc6IDE0NTg3MDQ5ODMKKyAgICAgICAgJ3N1Ym1pdHRl
ZEF0JzogYnVpbGRUaW1lIHx8IDE0NTg3MDQ5ODMKICAgICB9OwogfQogCi1mdW5jdGlvbiBzYW1w
bGVJblByb2dyZXNzQnVpbGQoKQorZnVuY3Rpb24gc2FtcGxlSW5Qcm9ncmVzc0J1aWxkKHNsYXZl
TmFtZSkKIHsKICAgICByZXR1cm4gewogICAgICAgICAnYmxhbWUnOiBbXSwKQEAgLTE0OSw3ICsy
MjMsNyBAQCBmdW5jdGlvbiBzYW1wbGVJblByb2dyZXNzQnVpbGQoKQogICAgICAgICAgICAgWydy
ZWFzb24nLCAnZm9yY2UgYnVpbGQnLCAnRm9yY2UgQnVpbGQgRm9ybSddLAogICAgICAgICAgICAg
Wydyb290c19kaWN0JywgSlNPTi5zdHJpbmdpZnkoc2FtcGxlUm9vdFNldERhdGEpLCAnRm9yY2Ug
QnVpbGQgRm9ybSddLAogICAgICAgICAgICAgWydzY2hlZHVsZXInLCAnQUJUZXN0LWlQYWQtUnVu
QmVuY2htYXJrLVRlc3RzLUZvcmNlU2NoZWR1bGVyJywgJ1NjaGVkdWxlciddLAotICAgICAgICAg
ICAgWydzbGF2ZW5hbWUnLCAnQUJUZXN0LWlQYWQtMCcsICdCdWlsZFNsYXZlJ10sCisgICAgICAg
ICAgICBbJ3NsYXZlbmFtZScsIHNsYXZlTmFtZSB8fCAnQUJUZXN0LWlQYWQtMCcsICdCdWlsZFNs
YXZlJ10sCiAgICAgICAgIF0sCiAgICAgICAgICdyZWFzb24nOiAnQSBidWlsZCB3YXMgZm9yY2Vk
IGJ5IFwnPHVua25vd24+XCc6IGZvcmNlIGJ1aWxkJywKICAgICAgICAgJ3Jlc3VsdHMnOiBudWxs
LApAQCAtMjA3LDcgKzI4MSw3IEBAIGZ1bmN0aW9uIHNhbXBsZUluUHJvZ3Jlc3NCdWlsZCgpCiAg
ICAgfTsKIH0KIAotZnVuY3Rpb24gc2FtcGxlRmluaXNoZWRCdWlsZChidWlsZFJlcXVlc3RJZCkK
K2Z1bmN0aW9uIHNhbXBsZUZpbmlzaGVkQnVpbGQoYnVpbGRSZXF1ZXN0SWQsIHNsYXZlTmFtZSkK
IHsKICAgICByZXR1cm4gewogICAgICAgICAnYmxhbWUnOiBbXSwKQEAgLTIyNSw3ICsyOTksNyBA
QCBmdW5jdGlvbiBzYW1wbGVGaW5pc2hlZEJ1aWxkKGJ1aWxkUmVxdWVzCiAgICAgICAgICAgICBb
J3JlYXNvbicsICdmb3JjZSBidWlsZCcsICdGb3JjZSBCdWlsZCBGb3JtJ10sCiAgICAgICAgICAg
ICBbJ3Jvb3RzX2RpY3QnLCBKU09OLnN0cmluZ2lmeShzYW1wbGVSb290U2V0RGF0YSksICdGb3Jj
ZSBCdWlsZCBGb3JtJ10sCiAgICAgICAgICAgICBbJ3NjaGVkdWxlcicsICdBQlRlc3QtaVBhZC1S
dW5CZW5jaG1hcmstVGVzdHMtRm9yY2VTY2hlZHVsZXInLCAnU2NoZWR1bGVyJ10sCi0gICAgICAg
ICAgICBbJ3NsYXZlbmFtZScsICdBQlRlc3QtaVBhZC0wJywgJ0J1aWxkU2xhdmUnXSwKKyAgICAg
ICAgICAgIFsnc2xhdmVuYW1lJywgc2xhdmVOYW1lIHx8ICdBQlRlc3QtaVBhZC0wJywgJ0J1aWxk
U2xhdmUnXSwKICAgICAgICAgXSwKICAgICAgICAgJ3JlYXNvbic6ICdBIGJ1aWxkIHdhcyBmb3Jj
ZWQgYnkgXCc8dW5rbm93bj5cJzogZm9yY2UgYnVpbGQnLAogICAgICAgICAncmVzdWx0cyc6IDIs
CkBAIC0yODUsMjIgKzM1OSwxMiBAQCBmdW5jdGlvbiBzYW1wbGVGaW5pc2hlZEJ1aWxkKGJ1aWxk
UmVxdWVzCiAKIGRlc2NyaWJlKCdCdWlsZGJvdFN5bmNlcicsIGZ1bmN0aW9uICgpIHsKICAgICBN
b2NrTW9kZWxzLmluamVjdCgpOwotICAgIGxldCByZXF1ZXN0cyA9IE1vY2tSZW1vdGVBUEkuaW5q
ZWN0KCk7CisgICAgbGV0IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQSS5pbmplY3QoJ2h0dHA6Ly9i
dWlsZC53ZWJraXQub3JnJyk7CiAKICAgICBkZXNjcmliZSgnX2xvYWRDb25maWcnLCBmdW5jdGlv
biAoKSB7CiAKLSAgICAgICAgZnVuY3Rpb24gc21hbGxDb25maWd1cmF0aW9uKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICAnYnVpbGRlcic6ICdzb21l
IGJ1aWxkZXInLAotICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICdzb21lIHBsYXRmb3JtJywK
LSAgICAgICAgICAgICAgICAndGVzdCc6IFsnc29tZSB0ZXN0J10sCi0gICAgICAgICAgICAgICAg
J2FyZ3VtZW50cyc6IHt9LAotICAgICAgICAgICAgICAgICdidWlsZFJlcXVlc3RBcmd1bWVudCc6
ICdpZCd9OwotICAgICAgICB9Ci0KICAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgQnVpbGRib3RT
eW5jZXIgb2JqZWN0cyBmb3IgYSBjb25maWd1cmF0aW9uIHRoYXQgc3BlY2lmeSBhbGwgcmVxdWly
ZWQgb3B0aW9ucycsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGxldCBzeW5jZXJzID0gQnVp
bGRib3RTeW5jZXIuX2xvYWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycsIHsnY29u
ZmlndXJhdGlvbnMnOiBbc21hbGxDb25maWd1cmF0aW9uKCldfSk7CisgICAgICAgICAgICBsZXQg
c3luY2VycyA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKE1vY2tSZW1vdGVBUEksIHsnY29u
ZmlndXJhdGlvbnMnOiBbc21hbGxDb25maWd1cmF0aW9uKCldfSk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc3luY2Vycy5sZW5ndGgsIDEpOwogICAgICAgICB9KTsKIApAQCAtMzA4LDI3ICsz
NzIsMjcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90U3luY2VyJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgYXNzZXJ0LnRocm93cyhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgbGV0IGNv
bmZpZyA9IHNtYWxsQ29uZmlndXJhdGlvbigpOwogICAgICAgICAgICAgICAgIGRlbGV0ZSBjb25m
aWdbJ2J1aWxkZXInXTsKLSAgICAgICAgICAgICAgICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZp
ZygnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvJywgeydjb25maWd1cmF0aW9ucyc6IFtjb25maWdd
fSk7CisgICAgICAgICAgICAgICAgQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoTW9ja1JlbW90
ZUFQSSwgeydjb25maWd1cmF0aW9ucyc6IFtjb25maWddfSk7CiAgICAgICAgICAgICB9LCAnYnVp
bGRlciBzaG91bGQgYmUgYSByZXF1aXJlZCBvcHRpb24nKTsKICAgICAgICAgICAgIGFzc2VydC50
aHJvd3MoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGxldCBjb25maWcgPSBzbWFsbENv
bmZpZ3VyYXRpb24oKTsKICAgICAgICAgICAgICAgICBkZWxldGUgY29uZmlnWydwbGF0Zm9ybSdd
OwotICAgICAgICAgICAgICAgIEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKCdodHRwOi8vYnVp
bGQud2Via2l0Lm9yZy8nLCB7J2NvbmZpZ3VyYXRpb25zJzogW2NvbmZpZ119KTsKKyAgICAgICAg
ICAgICAgICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3RlQVBJLCB7J2NvbmZp
Z3VyYXRpb25zJzogW2NvbmZpZ119KTsKICAgICAgICAgICAgIH0sICdwbGF0Zm9ybSBzaG91bGQg
YmUgYSByZXF1aXJlZCBvcHRpb24nKTsKICAgICAgICAgICAgIGFzc2VydC50aHJvd3MoZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgICAgIGxldCBjb25maWcgPSBzbWFsbENvbmZpZ3VyYXRpb24o
KTsKICAgICAgICAgICAgICAgICBkZWxldGUgY29uZmlnWyd0ZXN0J107Ci0gICAgICAgICAgICAg
ICAgQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycs
IHsnY29uZmlndXJhdGlvbnMnOiBbY29uZmlnXX0pOworICAgICAgICAgICAgICAgIEJ1aWxkYm90
U3luY2VyLl9sb2FkQ29uZmlnKE1vY2tSZW1vdGVBUEksIHsnY29uZmlndXJhdGlvbnMnOiBbY29u
ZmlnXX0pOwogICAgICAgICAgICAgfSwgJ3Rlc3Qgc2hvdWxkIGJlIGEgcmVxdWlyZWQgb3B0aW9u
Jyk7CiAgICAgICAgICAgICBhc3NlcnQudGhyb3dzKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
ICAgICBsZXQgY29uZmlnID0gc21hbGxDb25maWd1cmF0aW9uKCk7CiAgICAgICAgICAgICAgICAg
ZGVsZXRlIGNvbmZpZ1snYXJndW1lbnRzJ107Ci0gICAgICAgICAgICAgICAgQnVpbGRib3RTeW5j
ZXIuX2xvYWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycsIHsnY29uZmlndXJhdGlv
bnMnOiBbY29uZmlnXX0pOworICAgICAgICAgICAgICAgIEJ1aWxkYm90U3luY2VyLl9sb2FkQ29u
ZmlnKE1vY2tSZW1vdGVBUEksIHsnY29uZmlndXJhdGlvbnMnOiBbY29uZmlnXX0pOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICBhc3NlcnQudGhyb3dzKGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgICAgICBsZXQgY29uZmlnID0gc21hbGxDb25maWd1cmF0aW9uKCk7CiAgICAgICAgICAg
ICAgICAgZGVsZXRlIGNvbmZpZ1snYnVpbGRSZXF1ZXN0QXJndW1lbnQnXTsKLSAgICAgICAgICAg
ICAgICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcv
Jywgeydjb25maWd1cmF0aW9ucyc6IFtjb25maWddfSk7CisgICAgICAgICAgICAgICAgQnVpbGRi
b3RTeW5jZXIuX2xvYWRDb25maWcoTW9ja1JlbW90ZUFQSSwgeydjb25maWd1cmF0aW9ucyc6IFtj
b25maWddfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKQEAgLTMzNiwxMiArNDAw
LDEyIEBAIGRlc2NyaWJlKCdCdWlsZGJvdFN5bmNlcicsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgIGFzc2VydC50aHJvd3MoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGxldCBjb25m
aWcgPSBzbWFsbENvbmZpZ3VyYXRpb24oKTsKICAgICAgICAgICAgICAgICBjb25maWcudGVzdCA9
ICdzb21lIHRlc3QnOwotICAgICAgICAgICAgICAgIEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmln
KCdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8nLCB7J2NvbmZpZ3VyYXRpb25zJzogW2NvbmZpZ119
KTsKKyAgICAgICAgICAgICAgICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3Rl
QVBJLCB7J2NvbmZpZ3VyYXRpb25zJzogW2NvbmZpZ119KTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgYXNzZXJ0LnRocm93cyhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgbGV0
IGNvbmZpZyA9IHNtYWxsQ29uZmlndXJhdGlvbigpOwogICAgICAgICAgICAgICAgIGNvbmZpZy50
ZXN0ID0gWzFdOwotICAgICAgICAgICAgICAgIEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKCdo
dHRwOi8vYnVpbGQud2Via2l0Lm9yZy8nLCB7J2NvbmZpZ3VyYXRpb25zJzogW2NvbmZpZ119KTsK
KyAgICAgICAgICAgICAgICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3RlQVBJ
LCB7J2NvbmZpZ3VyYXRpb25zJzogW2NvbmZpZ119KTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9KTsKIApAQCAtMzQ5LDcgKzQxMyw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFN5bmNlcicsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC50aHJvd3MoZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICAgICAgIGxldCBjb25maWcgPSBzbWFsbENvbmZpZ3VyYXRpb24oKTsKICAgICAgICAg
ICAgICAgICBjb25maWcuYXJndW1lbnRzID0gJ2hlbGxvJzsKLSAgICAgICAgICAgICAgICBCdWls
ZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvJywgeydjb25m
aWd1cmF0aW9ucyc6IFtjb25maWddfSk7CisgICAgICAgICAgICAgICAgQnVpbGRib3RTeW5jZXIu
X2xvYWRDb25maWcoTW9ja1JlbW90ZUFQSSwgeydjb25maWd1cmF0aW9ucyc6IFtjb25maWddfSk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKQEAgLTM1NywxMDUgKzQyMSwxMDEgQEAg
ZGVzY3JpYmUoJ0J1aWxkYm90U3luY2VyJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNz
ZXJ0LnRocm93cyhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IHNt
YWxsQ29uZmlndXJhdGlvbigpOwogICAgICAgICAgICAgICAgIGNvbmZpZy5hcmd1bWVudHMgPSB7
J3NvbWUnOiB7J3Jvb3QnOiAnc29tZSByb290JywgJ3Jvb3RzRXhjbHVkaW5nJzogWydvdGhlciBy
b290J119fTsKLSAgICAgICAgICAgICAgICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0
cDovL2J1aWxkLndlYmtpdC5vcmcvJywgeydjb25maWd1cmF0aW9ucyc6IFtjb25maWddfSk7Cisg
ICAgICAgICAgICAgICAgQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJLCB7J2Nv
bmZpZ3VyYXRpb25zJzogW2NvbmZpZ119KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
YXNzZXJ0LnRocm93cyhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9
IHNtYWxsQ29uZmlndXJhdGlvbigpOwogICAgICAgICAgICAgICAgIGNvbmZpZy5hcmd1bWVudHMg
PSB7J3NvbWUnOiB7J290aGVyS2V5JzogJ3NvbWUgcm9vdCd9fTsKLSAgICAgICAgICAgICAgICBC
dWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvJywgeydj
b25maWd1cmF0aW9ucyc6IFtjb25maWddfSk7CisgICAgICAgICAgICAgICAgQnVpbGRib3RTeW5j
ZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJLCB7J2NvbmZpZ3VyYXRpb25zJzogW2NvbmZpZ119KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgYXNzZXJ0LnRocm93cyhmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IHNtYWxsQ29uZmlndXJhdGlvbigpOwogICAg
ICAgICAgICAgICAgIGNvbmZpZy5hcmd1bWVudHMgPSB7J3NvbWUnOiB7J3Jvb3QnOiBbJ2EnLCAn
YiddfX07Ci0gICAgICAgICAgICAgICAgQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoJ2h0dHA6
Ly9idWlsZC53ZWJraXQub3JnLycsIHsnY29uZmlndXJhdGlvbnMnOiBbY29uZmlnXX0pOworICAg
ICAgICAgICAgICAgIEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKFJlbW90ZUFQSSwgeydjb25m
aWd1cmF0aW9ucyc6IFtjb25maWddfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGFz
c2VydC50aHJvd3MoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGxldCBjb25maWcgPSBz
bWFsbENvbmZpZ3VyYXRpb24oKTsKICAgICAgICAgICAgICAgICBjb25maWcuYXJndW1lbnRzID0g
eydzb21lJzogeydyb290JzogMX19OwotICAgICAgICAgICAgICAgIEJ1aWxkYm90U3luY2VyLl9s
b2FkQ29uZmlnKCdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8nLCB7J2NvbmZpZ3VyYXRpb25zJzog
W2NvbmZpZ119KTsKKyAgICAgICAgICAgICAgICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhS
ZW1vdGVBUEksIHsnY29uZmlndXJhdGlvbnMnOiBbY29uZmlnXX0pOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICBhc3NlcnQudGhyb3dzKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAg
ICBsZXQgY29uZmlnID0gc21hbGxDb25maWd1cmF0aW9uKCk7CiAgICAgICAgICAgICAgICAgY29u
ZmlnLmFyZ3VtZW50cyA9IHsnc29tZSc6IHsncm9vdHNFeGNsdWRpbmcnOiAnYSd9fTsKLSAgICAg
ICAgICAgICAgICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxkLndlYmtp
dC5vcmcvJywgeydjb25maWd1cmF0aW9ucyc6IFtjb25maWddfSk7CisgICAgICAgICAgICAgICAg
QnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJLCB7J2NvbmZpZ3VyYXRpb25zJzog
W2NvbmZpZ119KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgYXNzZXJ0LnRocm93cyhm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IHNtYWxsQ29uZmlndXJh
dGlvbigpOwogICAgICAgICAgICAgICAgIGNvbmZpZy5hcmd1bWVudHMgPSB7J3NvbWUnOiB7J3Jv
b3RzRXhjbHVkaW5nJzogWzFdfX07Ci0gICAgICAgICAgICAgICAgQnVpbGRib3RTeW5jZXIuX2xv
YWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycsIHsnY29uZmlndXJhdGlvbnMnOiBb
Y29uZmlnXX0pOworICAgICAgICAgICAgICAgIEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKFJl
bW90ZUFQSSwgeydjb25maWd1cmF0aW9ucyc6IFtjb25maWddfSk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSk7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgQnVpbGRib3RTeW5jZXIg
b2JqZWN0cyBmb3IgdmFsaWQgY29uZmlndXJhdGlvbnMnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICBsZXQgc3luY2VycyA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKCdodHRwOi8vYnVp
bGQud2Via2l0Lm9yZy8nLCBzYW1wbGVpT1NDb25maWcoKSk7Ci0gICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoc3luY2Vycy5sZW5ndGgsIDUpOworICAgICAgICAgICAgbGV0IHN5bmNlcnMgPSBCdWls
ZGJvdFN5bmNlci5fbG9hZENvbmZpZyhSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChzeW5jZXJzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICBh
c3NlcnQub2soc3luY2Vyc1swXSBpbnN0YW5jZW9mIEJ1aWxkYm90U3luY2VyKTsKICAgICAgICAg
ICAgIGFzc2VydC5vayhzeW5jZXJzWzFdIGluc3RhbmNlb2YgQnVpbGRib3RTeW5jZXIpOwotICAg
ICAgICAgICAgYXNzZXJ0Lm9rKHN5bmNlcnNbMl0gaW5zdGFuY2VvZiBCdWlsZGJvdFN5bmNlcik7
Ci0gICAgICAgICAgICBhc3NlcnQub2soc3luY2Vyc1szXSBpbnN0YW5jZW9mIEJ1aWxkYm90U3lu
Y2VyKTsKLSAgICAgICAgICAgIGFzc2VydC5vayhzeW5jZXJzWzRdIGluc3RhbmNlb2YgQnVpbGRi
b3RTeW5jZXIpOwogICAgICAgICB9KTsKIAogICAgICAgICBpdCgnc2hvdWxkIHBhcnNlIGJ1aWxk
ZXIgbmFtZXMgY29ycmVjdGx5JywgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgbGV0IHN5bmNl
cnMgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcv
Jywgc2FtcGxlaU9TQ29uZmlnKCkpOworICAgICAgICAgICAgbGV0IHN5bmNlcnMgPSBCdWlsZGJv
dFN5bmNlci5fbG9hZENvbmZpZyhSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKTsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChzeW5jZXJzWzBdLmJ1aWxkZXJOYW1lKCksICdBQlRlc3QtaVBo
b25lLVJ1bkJlbmNobWFyay1UZXN0cycpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHN5bmNl
cnNbMV0uYnVpbGRlck5hbWUoKSwgJ0FCVGVzdC1pUGhvbmUtUnVuQmVuY2htYXJrLVRlc3RzJyk7
Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoc3luY2Vyc1syXS5idWlsZGVyTmFtZSgpLCAnQUJU
ZXN0LWlQaG9uZS1SdW5CZW5jaG1hcmstVGVzdHMnKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVh
bChzeW5jZXJzWzNdLmJ1aWxkZXJOYW1lKCksICdBQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVz
dHMnKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChzeW5jZXJzWzRdLmJ1aWxkZXJOYW1lKCks
ICdBQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMnKTsKLSAgICAgICAgfSk7Ci0KLSAgICAg
ICAgaXQoJ3Nob3VsZCBwYXJzZSBwbGF0Zm9ybSBuYW1lcyBjb3JyZWN0bHknLCBmdW5jdGlvbiAo
KSB7Ci0gICAgICAgICAgICBsZXQgc3luY2VycyA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmln
KCdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8nLCBzYW1wbGVpT1NDb25maWcoKSk7Ci0gICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoc3luY2Vyc1swXS5wbGF0Zm9ybU5hbWUoKSwgJ2lQaG9uZScpOwot
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHN5bmNlcnNbMV0ucGxhdGZvcm1OYW1lKCksICdpUGhv
bmUnKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChzeW5jZXJzWzJdLnBsYXRmb3JtTmFtZSgp
LCAnaVBob25lJyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoc3luY2Vyc1szXS5wbGF0Zm9y
bU5hbWUoKSwgJ2lQYWQnKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChzeW5jZXJzWzRdLnBs
YXRmb3JtTmFtZSgpLCAnaVBhZCcpOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgnc2hvdWxk
IHBhcnNlIHRlc3QgbmFtZXMgY29ycmVjdGx5JywgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
bGV0IHN5bmNlcnMgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxkLndl
YmtpdC5vcmcvJywgc2FtcGxlaU9TQ29uZmlnKCkpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChzeW5jZXJzWzBdLnRlc3RQYXRoKCksIFsnU3BlZWRvbWV0ZXInXSk7Ci0gICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKHN5bmNlcnNbMV0udGVzdFBhdGgoKSwgWydKZXRTdHJlYW0nXSk7
Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHN5bmNlcnNbMl0udGVzdFBhdGgoKSwgWydE
cm9tYWVvJywgJ0RPTSBDb3JlIFRlc3RzJ10pOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChzeW5jZXJzWzNdLnRlc3RQYXRoKCksIFsnU3BlZWRvbWV0ZXInXSk7Ci0gICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKHN5bmNlcnNbNF0udGVzdFBhdGgoKSwgWydKZXRTdHJlYW0nXSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc3luY2Vyc1sxXS5idWlsZGVyTmFtZSgpLCAnQUJUZXN0
LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzJyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdz
aG91bGQgcGFyc2UgdGVzdCBjb25maWd1cmF0aW9ucyBjb3JyZWN0bHknLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICBsZXQgc3luY2VycyA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKFJl
bW90ZUFQSSwgc2FtcGxlaU9TQ29uZmlnKCkpOworCisgICAgICAgICAgICBsZXQgY29uZmlndXJh
dGlvbnMgPSBzeW5jZXJzWzBdLnRlc3RDb25maWd1cmF0aW9ucygpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGNvbmZpZ3VyYXRpb25zLmxlbmd0aCwgMyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoY29uZmlndXJhdGlvbnNbMF0ucGxhdGZvcm0sIE1vY2tNb2RlbHMuaXBob25lKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb25maWd1cmF0aW9uc1swXS50ZXN0LCBNb2NrTW9kZWxz
LnNwZWVkb21ldGVyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb25maWd1cmF0aW9uc1sx
XS5wbGF0Zm9ybSwgTW9ja01vZGVscy5pcGhvbmUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGNvbmZpZ3VyYXRpb25zWzFdLnRlc3QsIE1vY2tNb2RlbHMuamV0c3RyZWFtKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb25maWd1cmF0aW9uc1syXS5wbGF0Zm9ybSwgTW9ja01vZGVscy5p
cGhvbmUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbmZpZ3VyYXRpb25zWzJdLnRlc3Qs
IE1vY2tNb2RlbHMuZG9tY29yZSk7CisKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zID0gc3lu
Y2Vyc1sxXS50ZXN0Q29uZmlndXJhdGlvbnMoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChj
b25maWd1cmF0aW9ucy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbmZp
Z3VyYXRpb25zWzBdLnBsYXRmb3JtLCBNb2NrTW9kZWxzLmlwYWQpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGNvbmZpZ3VyYXRpb25zWzBdLnRlc3QsIE1vY2tNb2RlbHMuc3BlZWRvbWV0ZXIp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbmZpZ3VyYXRpb25zWzFdLnBsYXRmb3JtLCBN
b2NrTW9kZWxzLmlwYWQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbmZpZ3VyYXRpb25z
WzFdLnRlc3QsIE1vY2tNb2RlbHMuamV0c3RyZWFtKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiAK
ICAgICBkZXNjcmliZSgnX3Byb3BlcnRpZXNGb3JCdWlsZFJlcXVlc3QnLCBmdW5jdGlvbiAoKSB7
CiAgICAgICAgIGl0KCdzaG91bGQgaW5jbHVkZSBhbGwgcHJvcGVydGllcyBzcGVjaWZpZWQgaW4g
YSBnaXZlbiBjb25maWd1cmF0aW9uJywgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgbGV0IHN5
bmNlcnMgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxkLndlYmtpdC5v
cmcvJywgc2FtcGxlaU9TQ29uZmlnKCkpOworICAgICAgICAgICAgbGV0IHN5bmNlcnMgPSBCdWls
ZGJvdFN5bmNlci5fbG9hZENvbmZpZyhSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKTsKICAg
ICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gc3luY2Vyc1swXS5fcHJvcGVydGllc0ZvckJ1aWxk
UmVxdWVzdChjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5pcGhvbmUsIE1vY2tN
b2RlbHMuc3BlZWRvbWV0ZXIpKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0
LmtleXMocHJvcGVydGllcyksIFsnZGVzaXJlZF9pbWFnZScsICdyb290c19kaWN0JywgJ3Rlc3Rf
bmFtZScsICdmb3JjZXNjaGVkdWxlcicsICdidWlsZF9yZXF1ZXN0X2lkJ10pOwogICAgICAgICB9
KTsKIAogICAgICAgICBpdCgnc2hvdWxkIHByZXNlcnZlIG5vbi1wYXJhbWV0cmljIHByb3BlcnR5
IHZhbHVlcycsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGxldCBzeW5jZXJzID0gQnVpbGRi
b3RTeW5jZXIuX2xvYWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycsIHNhbXBsZWlP
U0NvbmZpZygpKTsKKyAgICAgICAgICAgIGxldCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xv
YWRDb25maWcoUmVtb3RlQVBJLCBzYW1wbGVpT1NDb25maWcoKSk7CiAgICAgICAgICAgICBsZXQg
cHJvcGVydGllcyA9IHN5bmNlcnNbMF0uX3Byb3BlcnRpZXNGb3JCdWlsZFJlcXVlc3QoY3JlYXRl
U2FtcGxlQnVpbGRSZXF1ZXN0KE1vY2tNb2RlbHMuaXBob25lLCBNb2NrTW9kZWxzLnNwZWVkb21l
dGVyKSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocHJvcGVydGllc1sndGVzdF9uYW1lJ10s
ICdzcGVlZG9tZXRlcicpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHByb3BlcnRpZXNbJ2Zv
cmNlc2NoZWR1bGVyJ10sICdBQlRlc3QtaVBob25lLVJ1bkJlbmNobWFyay1UZXN0cy1Gb3JjZVNj
aGVkdWxlcicpOwogCi0gICAgICAgICAgICBwcm9wZXJ0aWVzID0gc3luY2Vyc1sxXS5fcHJvcGVy
dGllc0ZvckJ1aWxkUmVxdWVzdChjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5p
cGhvbmUsIE1vY2tNb2RlbHMuc3BlZWRvbWV0ZXIpKTsKKyAgICAgICAgICAgIHByb3BlcnRpZXMg
PSBzeW5jZXJzWzFdLl9wcm9wZXJ0aWVzRm9yQnVpbGRSZXF1ZXN0KGNyZWF0ZVNhbXBsZUJ1aWxk
UmVxdWVzdChNb2NrTW9kZWxzLmlwYWQsIE1vY2tNb2RlbHMuamV0c3RyZWFtKSk7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocHJvcGVydGllc1sndGVzdF9uYW1lJ10sICdqZXRzdHJlYW0nKTsK
LSAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0aWVzWydmb3JjZXNjaGVkdWxlciddLCAn
QUJUZXN0LWlQaG9uZS1SdW5CZW5jaG1hcmstVGVzdHMtRm9yY2VTY2hlZHVsZXInKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0aWVzWydmb3JjZXNjaGVkdWxlciddLCAnQUJUZXN0
LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzLUZvcmNlU2NoZWR1bGVyJyk7CiAgICAgICAgIH0pOwog
CiAgICAgICAgIGl0KCdzaG91bGQgcmVzb2x2ZSAicm9vdCInLCBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgICAgICBsZXQgc3luY2VycyA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKCdodHRwOi8v
YnVpbGQud2Via2l0Lm9yZy8nLCBzYW1wbGVpT1NDb25maWcoKSk7CisgICAgICAgICAgICBsZXQg
c3luY2VycyA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKFJlbW90ZUFQSSwgc2FtcGxlaU9T
Q29uZmlnKCkpOwogICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBzeW5jZXJzWzBdLl9wcm9w
ZXJ0aWVzRm9yQnVpbGRSZXF1ZXN0KGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdChNb2NrTW9kZWxz
LmlwaG9uZSwgTW9ja01vZGVscy5zcGVlZG9tZXRlcikpOwogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHByb3BlcnRpZXNbJ2Rlc2lyZWRfaW1hZ2UnXSwgJzEzQTQ1MicpOwogICAgICAgICB9KTsK
IAogICAgICAgICBpdCgnc2hvdWxkIHJlc29sdmUgInJvb3RzRXhjbHVkaW5nIicsIGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgICAgIGxldCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25m
aWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycsIHNhbXBsZWlPU0NvbmZpZygpKTsKKyAgICAg
ICAgICAgIGxldCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJ
LCBzYW1wbGVpT1NDb25maWcoKSk7CiAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IHN5bmNl
cnNbMF0uX3Byb3BlcnRpZXNGb3JCdWlsZFJlcXVlc3QoY3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0
KE1vY2tNb2RlbHMuaXBob25lLCBNb2NrTW9kZWxzLnNwZWVkb21ldGVyKSk7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocHJvcGVydGllc1sncm9vdHNfZGljdCddLCBKU09OLnN0cmluZ2lmeShz
YW1wbGVSb290U2V0RGF0YSkpOwogICAgICAgICB9KTsKIAogICAgICAgICBpdCgnc2hvdWxkIHNl
dCB0aGUgcHJvcGVydHkgZm9yIHRoZSBidWlsZCByZXF1ZXN0IGlkJywgZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgbGV0IHN5bmNlcnMgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0
cDovL2J1aWxkLndlYmtpdC5vcmcvJywgc2FtcGxlaU9TQ29uZmlnKCkpOworICAgICAgICAgICAg
bGV0IHN5bmNlcnMgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhSZW1vdGVBUEksIHNhbXBs
ZWlPU0NvbmZpZygpKTsKICAgICAgICAgICAgIGxldCByZXF1ZXN0ID0gY3JlYXRlU2FtcGxlQnVp
bGRSZXF1ZXN0KE1vY2tNb2RlbHMuaXBob25lLCBNb2NrTW9kZWxzLnNwZWVkb21ldGVyKTsKICAg
ICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gc3luY2Vyc1swXS5fcHJvcGVydGllc0ZvckJ1aWxk
UmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0aWVzWydi
dWlsZF9yZXF1ZXN0X2lkJ10sIHJlcXVlc3QuaWQoKSk7CkBAIC00NjQsNTEgKzUyNCw1MSBAQCBk
ZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAKICAgICBkZXNjcmliZSgn
cHVsbEJ1aWxkYm90JywgZnVuY3Rpb24gKCkgewogICAgICAgICBpdCgnc2hvdWxkIGZldGNoIHBl
bmRpbmcgYnVpbGRzIGZyb20gdGhlIHJpZ2h0IFVSTCcsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
ICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxk
LndlYmtpdC5vcmcnLCBzYW1wbGVpT1NDb25maWcoKSlbM107CisgICAgICAgICAgICBsZXQgc3lu
Y2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoTW9ja1JlbW90ZUFQSSwgc2FtcGxlaU9T
Q29uZmlnKCkpWzFdOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHN5bmNlci5idWlsZGVyTmFt
ZSgpLCAnQUJUZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzJyk7Ci0gICAgICAgICAgICBsZXQg
ZXhwZWN0ZWRVUkwgPSAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvanNvbi9idWlsZGVycy9BQlRl
c3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMvcGVuZGluZ0J1aWxkcyc7Ci0gICAgICAgICAgICBh
c3NlcnQuZXF1YWwoc3luY2VyLnVybEZvclBlbmRpbmdCdWlsZHNKU09OKCksIGV4cGVjdGVkVVJM
KTsKKyAgICAgICAgICAgIGxldCBleHBlY3RlZFVSTCA9ICcvanNvbi9idWlsZGVycy9BQlRlc3Qt
aVBhZC1SdW5CZW5jaG1hcmstVGVzdHMvcGVuZGluZ0J1aWxkcyc7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc3luY2VyLnBhdGhGb3JQZW5kaW5nQnVpbGRzSlNPTigpLCBleHBlY3RlZFVSTCk7
CiAgICAgICAgICAgICBzeW5jZXIucHVsbEJ1aWxkYm90KCk7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1swXS51cmwsIGV4cGVjdGVkVVJMKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaXQoJ3No
b3VsZCBmZXRjaCByZWNlbnQgYnVpbGRzIG9uY2UgcGVuZGluZyBidWlsZHMgaGF2ZSBiZWVuIGZl
dGNoZWQnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICAgICAgbGV0IHN5bmNlciA9IEJ1aWxk
Ym90U3luY2VyLl9sb2FkQ29uZmlnKCdodHRwOi8vYnVpbGQud2Via2l0Lm9yZycsIHNhbXBsZWlP
U0NvbmZpZygpKVszXTsKKyAgICAgICAgICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5f
bG9hZENvbmZpZyhNb2NrUmVtb3RlQVBJLCBzYW1wbGVpT1NDb25maWcoKSlbMV07CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoc3luY2VyLmJ1aWxkZXJOYW1lKCksICdBQlRlc3QtaVBhZC1SdW5C
ZW5jaG1hcmstVGVzdHMnKTsKIAogICAgICAgICAgICAgc3luY2VyLnB1bGxCdWlsZGJvdCgxKTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwotICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3Jn
L2pzb24vYnVpbGRlcnMvQUJUZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzL3BlbmRpbmdCdWls
ZHMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvanNvbi9i
dWlsZGVycy9BQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMvcGVuZGluZ0J1aWxkcycpOwog
ICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZShbXSk7CiAgICAgICAgICAgICBQcm9taXNl
LnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMV0udXJsLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvanNvbi9idWlsZGVycy9BQlRl
c3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMvYnVpbGRzLz9zZWxlY3Q9LTEnKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL2pzb24vYnVpbGRlcnMvQUJU
ZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzL2J1aWxkcy8/c2VsZWN0PS0xJyk7CiAgICAgICAg
ICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CiAgICAgICAgIH0p
OwogCiAgICAgICAgIGl0KCdzaG91bGQgZmV0Y2ggdGhlIHJpZ2h0IG51bWJlciBvZiByZWNlbnQg
YnVpbGRzJywgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgICAgIGxldCBzeW5jZXIgPSBCdWls
ZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcnLCBzYW1wbGVp
T1NDb25maWcoKSlbM107CisgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5jZXIu
X2xvYWRDb25maWcoTW9ja1JlbW90ZUFQSSwgc2FtcGxlaU9TQ29uZmlnKCkpWzFdOwogCiAgICAg
ICAgICAgICBzeW5jZXIucHVsbEJ1aWxkYm90KDMpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNb
MF0udXJsLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvanNvbi9idWlsZGVycy9BQlRlc3QtaVBh
ZC1SdW5CZW5jaG1hcmstVGVzdHMvcGVuZGluZ0J1aWxkcycpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9qc29uL2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJl
bmNobWFyay1UZXN0cy9wZW5kaW5nQnVpbGRzJyk7CiAgICAgICAgICAgICByZXF1ZXN0c1swXS5y
ZXNvbHZlKFtdKTsKICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwot
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICdodHRwOi8vYnVp
bGQud2Via2l0Lm9yZy9qc29uL2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0
cy9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTImc2VsZWN0PS0zJyk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9qc29uL2J1aWxkZXJzL0FCVGVzdC1p
UGFkLVJ1bkJlbmNobWFyay1UZXN0cy9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTImc2VsZWN0
PS0zJyk7CiAgICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICAgfSkuY2F0Y2goZG9u
ZSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIEJ1aWxkYm90QnVp
bGRFbnRyeSBmb3IgcGVuZGluZyBidWlsZHMnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICAg
ICAgbGV0IHN5bmNlciA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKCdodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZycsIHNhbXBsZWlPU0NvbmZpZygpKVszXTsKKyAgICAgICAgICAgIGxldCBzeW5j
ZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3RlQVBJLCBzYW1wbGVpT1ND
b25maWcoKSlbMV07CiAgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHN5bmNlci5wdWxsQnVpbGRi
b3QoKTsKICAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoW3NhbXBsZVBlbmRpbmdCdWls
ZCgpXSk7CiAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKGVudHJpZXMpIHsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE9iamVjdC5rZXlzKGVudHJpZXMpLCBbJzE2
NzMzJ10pOwotICAgICAgICAgICAgICAgIGxldCBlbnRyeSA9IGVudHJpZXNbJzE2NzMzJ107Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJpZXMubGVuZ3RoLCAxKTsKKyAgICAgICAg
ICAgICAgICBsZXQgZW50cnkgPSBlbnRyaWVzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5v
ayhlbnRyeSBpbnN0YW5jZW9mIEJ1aWxkYm90QnVpbGRFbnRyeSk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0Lm9rKCFlbnRyeS5idWlsZE51bWJlcigpKTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
b2soIWVudHJ5LnNsYXZlTmFtZSgpKTsKQEAgLTUyMiw3ICs1ODIsNyBAQCBkZXNjcmliZSgnQnVp
bGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGl0KCdz
aG91bGQgY3JlYXRlIEJ1aWxkYm90QnVpbGRFbnRyeSBmb3IgaW4tcHJvZ3Jlc3MgYnVpbGRzJywg
ZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNl
ci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcnLCBzYW1wbGVpT1NDb25maWco
KSlbM107CisgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25m
aWcoTW9ja1JlbW90ZUFQSSwgc2FtcGxlaU9TQ29uZmlnKCkpWzFdOwogCiAgICAgICAgICAgICBs
ZXQgcHJvbWlzZSA9IHN5bmNlci5wdWxsQnVpbGRib3QoMSk7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKQEAgLTUzMyw4ICs1OTMsOCBAQCBkZXNjcmliZSgn
QnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICB9KS5jYXRjaChkb25l
KTsKIAogICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChlbnRyaWVzKSB7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChPYmplY3Qua2V5cyhlbnRyaWVzKSwgWycxNjcz
MyddKTsKLSAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSBlbnRyaWVzWycxNjczMyddOworICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRyaWVzLmxlbmd0aCwgMSk7CisgICAgICAgICAg
ICAgICAgbGV0IGVudHJ5ID0gZW50cmllc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQub2so
ZW50cnkgaW5zdGFuY2VvZiBCdWlsZGJvdEJ1aWxkRW50cnkpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChlbnRyeS5idWlsZE51bWJlcigpLCA2MTQpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChlbnRyeS5zbGF2ZU5hbWUoKSwgJ0FCVGVzdC1pUGFkLTAnKTsKQEAgLTU0OCw3
ICs2MDgsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgIH0pOwogCiAgICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIEJ1aWxkYm90QnVpbGRFbnRyeSBm
b3IgZmluaXNoZWQgYnVpbGRzJywgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgICAgIGxldCBz
eW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxkLndlYmtpdC5v
cmcnLCBzYW1wbGVpT1NDb25maWcoKSlbM107CisgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVp
bGRib3RTeW5jZXIuX2xvYWRDb25maWcoTW9ja1JlbW90ZUFQSSwgc2FtcGxlaU9TQ29uZmlnKCkp
WzFdOwogCiAgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHN5bmNlci5wdWxsQnVpbGRib3QoMSk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKQEAgLTU1OSw4
ICs2MTksOCBAQCBkZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICB9KS5jYXRjaChkb25lKTsKIAogICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0
aW9uIChlbnRyaWVzKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChPYmplY3Qu
a2V5cyhlbnRyaWVzKSwgWycxODkzNSddKTsKLSAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSBl
bnRyaWVzWycxODkzNSddOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoZW50cmll
cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGxldCBlbnRyeSA9IGVudHJpZXNbMF07CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKGVudHJ5IGluc3RhbmNlb2YgQnVpbGRib3RCdWlsZEVu
dHJ5KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZW50cnkuYnVpbGROdW1iZXIoKSwg
MTc1NSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5LnNsYXZlTmFtZSgpLCAn
QUJUZXN0LWlQYWQtMCcpOwpAQCAtNTc0LDEyICs2MzQsMTIgQEAgZGVzY3JpYmUoJ0J1aWxkYm90
U3luY2VyJywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KTsKIAogICAgICAgICBpdCgnc2hvdWxk
IGNyZWF0ZSBCdWlsZGJvdEJ1aWxkRW50cnkgZm9yIG1peGVkIHBlbmRpbmcsIGluLXByb2dyZXNz
LCBmaW5pc2hlZCwgYW5kIG1pc3NpbmcgYnVpbGRzJywgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAg
ICAgICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1
aWxkLndlYmtpdC5vcmcnLCBzYW1wbGVpT1NDb25maWcoKSlbM107CisgICAgICAgICAgICBsZXQg
c3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoTW9ja1JlbW90ZUFQSSwgc2FtcGxl
aU9TQ29uZmlnKCkpWzFdOwogCiAgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHN5bmNlci5wdWxs
QnVpbGRib3QoNSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAx
KTsKIAotICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZShbc2FtcGxlUGVuZGluZ0J1aWxk
KDEyMywgNDU2KV0pOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZShbc2FtcGxlUGVu
ZGluZ0J1aWxkKDEyMyldKTsKIAogICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMik7CkBAIC01ODcsOSArNjQ3LDkgQEAgZGVzY3JpYmUoJ0J1aWxkYm90U3luY2VyJywgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CiAKICAgICAgICAgICAgIHBy
b21pc2UudGhlbihmdW5jdGlvbiAoZW50cmllcykgewotICAgICAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoT2JqZWN0LmtleXMoZW50cmllcyksIFsnMTIzJywgJzE2NzMzJywgJzE4OTM1J10p
OworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoZW50cmllcy5sZW5ndGgsIDMpOwog
Ci0gICAgICAgICAgICAgICAgbGV0IGVudHJ5ID0gZW50cmllc1snMTIzJ107CisgICAgICAgICAg
ICAgICAgbGV0IGVudHJ5ID0gZW50cmllc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQub2so
ZW50cnkgaW5zdGFuY2VvZiBCdWlsZGJvdEJ1aWxkRW50cnkpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChlbnRyeS5idWlsZE51bWJlcigpLCBudWxsKTsKICAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoZW50cnkuc2xhdmVOYW1lKCksIG51bGwpOwpAQCAtNTk5LDcgKzY1OSw3IEBA
IGRlc2NyaWJlKCdCdWlsZGJvdFN5bmNlcicsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQub2soIWVudHJ5Lmhhc0ZpbmlzaGVkKCkpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChlbnRyeS51cmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL0FC
VGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy8nKTsKIAotICAgICAgICAgICAgICAgIGVudHJ5
ID0gZW50cmllc1snMTY3MzMnXTsKKyAgICAgICAgICAgICAgICBlbnRyeSA9IGVudHJpZXNbMV07
CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKGVudHJ5IGluc3RhbmNlb2YgQnVpbGRib3RCdWls
ZEVudHJ5KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZW50cnkuYnVpbGROdW1iZXIo
KSwgNjE0KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZW50cnkuc2xhdmVOYW1lKCks
ICdBQlRlc3QtaVBhZC0wJyk7CkBAIC02MDksNyArNjY5LDY3IEBAIGRlc2NyaWJlKCdCdWlsZGJv
dFN5bmNlcicsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQub2soIWVudHJ5
Lmhhc0ZpbmlzaGVkKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRyeS51cmwo
KSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJlbmNo
bWFyay1UZXN0cy9idWlsZHMvNjE0Jyk7CiAKLSAgICAgICAgICAgICAgICBlbnRyeSA9IGVudHJp
ZXNbJzE4OTM1J107CisgICAgICAgICAgICAgICAgZW50cnkgPSBlbnRyaWVzWzJdOworICAgICAg
ICAgICAgICAgIGFzc2VydC5vayhlbnRyeSBpbnN0YW5jZW9mIEJ1aWxkYm90QnVpbGRFbnRyeSk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5LmJ1aWxkTnVtYmVyKCksIDE3NTUp
OworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRyeS5zbGF2ZU5hbWUoKSwgJ0FCVGVz
dC1pUGFkLTAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZW50cnkuYnVpbGRSZXF1
ZXN0SWQoKSwgMTg5MzUpOworICAgICAgICAgICAgICAgIGFzc2VydC5vayghZW50cnkuaXNQZW5k
aW5nKCkpOworICAgICAgICAgICAgICAgIGFzc2VydC5vayghZW50cnkuaXNJblByb2dyZXNzKCkp
OworICAgICAgICAgICAgICAgIGFzc2VydC5vayhlbnRyeS5oYXNGaW5pc2hlZCgpKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoZW50cnkudXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0
Lm9yZy9idWlsZGVycy9BQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMvYnVpbGRzLzE3NTUn
KTsKKworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUp
OworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHNvcnQgQnVpbGRib3RCdWlsZEVu
dHJ5IGJ5IG9yZGVyJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIGxldCBzeW5jZXIg
PSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3RlQVBJLCBzYW1wbGVpT1NDb25m
aWcoKSlbMV07CisKKyAgICAgICAgICAgIGxldCBwcm9taXNlID0gc3luY2VyLnB1bGxCdWlsZGJv
dCg1KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisg
ICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKFtzYW1wbGVQZW5kaW5nQnVpbGQoNDU2LCAy
KSwgc2FtcGxlUGVuZGluZ0J1aWxkKDEyMywgMSldKTsKKworICAgICAgICAgICAgUHJvbWlzZS5y
ZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICAgICAgcmVxdWVzdHNbMV0ucmVzb2x2
ZSh7Wy0zXTogc2FtcGxlRmluaXNoZWRCdWlsZCgpLCBbLTFdOiB7J2Vycm9yJzogJ05vdCBhdmFp
bGFibGUnfSwgWy0yXTogc2FtcGxlSW5Qcm9ncmVzc0J1aWxkKCl9KTsKKyAgICAgICAgICAgIH0p
LmNhdGNoKGRvbmUpOworCisgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKGVudHJp
ZXMpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGVudHJpZXMubGVuZ3RoLCA0
KTsKKworICAgICAgICAgICAgICAgIGxldCBlbnRyeSA9IGVudHJpZXNbMF07CisgICAgICAgICAg
ICAgICAgYXNzZXJ0Lm9rKGVudHJ5IGluc3RhbmNlb2YgQnVpbGRib3RCdWlsZEVudHJ5KTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZW50cnkuYnVpbGROdW1iZXIoKSwgbnVsbCk7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5LnNsYXZlTmFtZSgpLCBudWxsKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZW50cnkuYnVpbGRSZXF1ZXN0SWQoKSwgMTIzKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnQub2soZW50cnkuaXNQZW5kaW5nKCkpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5vayghZW50cnkuaXNJblByb2dyZXNzKCkpOworICAgICAgICAgICAgICAg
IGFzc2VydC5vayghZW50cnkuaGFzRmluaXNoZWQoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGVudHJ5LnVybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvQUJU
ZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzLycpOworCisgICAgICAgICAgICAgICAgZW50cnkg
PSBlbnRyaWVzWzFdOworICAgICAgICAgICAgICAgIGFzc2VydC5vayhlbnRyeSBpbnN0YW5jZW9m
IEJ1aWxkYm90QnVpbGRFbnRyeSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5
LmJ1aWxkTnVtYmVyKCksIG51bGwpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRy
eS5zbGF2ZU5hbWUoKSwgbnVsbCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5
LmJ1aWxkUmVxdWVzdElkKCksIDQ1Nik7CisgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKGVudHJ5
LmlzUGVuZGluZygpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQub2soIWVudHJ5LmlzSW5Qcm9n
cmVzcygpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQub2soIWVudHJ5Lmhhc0ZpbmlzaGVkKCkp
OworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRyeS51cmwoKSwgJ2h0dHA6Ly9idWls
ZC53ZWJraXQub3JnL2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy8nKTsK
KworICAgICAgICAgICAgICAgIGVudHJ5ID0gZW50cmllc1syXTsKKyAgICAgICAgICAgICAgICBh
c3NlcnQub2soZW50cnkgaW5zdGFuY2VvZiBCdWlsZGJvdEJ1aWxkRW50cnkpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChlbnRyeS5idWlsZE51bWJlcigpLCA2MTQpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChlbnRyeS5zbGF2ZU5hbWUoKSwgJ0FCVGVzdC1pUGFkLTAnKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZW50cnkuYnVpbGRSZXF1ZXN0SWQoKSwgMTY3
MzMpOworICAgICAgICAgICAgICAgIGFzc2VydC5vayghZW50cnkuaXNQZW5kaW5nKCkpOworICAg
ICAgICAgICAgICAgIGFzc2VydC5vayhlbnRyeS5pc0luUHJvZ3Jlc3MoKSk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0Lm9rKCFlbnRyeS5oYXNGaW5pc2hlZCgpKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoZW50cnkudXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVy
cy9BQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMvYnVpbGRzLzYxNCcpOworCisgICAgICAg
ICAgICAgICAgZW50cnkgPSBlbnRyaWVzWzNdOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayhl
bnRyeSBpbnN0YW5jZW9mIEJ1aWxkYm90QnVpbGRFbnRyeSk7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGVudHJ5LmJ1aWxkTnVtYmVyKCksIDE3NTUpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChlbnRyeS5zbGF2ZU5hbWUoKSwgJ0FCVGVzdC1pUGFkLTAnKTsKQEAgLTYyNCw3
ICs3NDQsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgIH0pOwogCiAgICAgICAgIGl0KCdzaG91bGQgb3ZlcnJpZGUgQnVpbGRib3RCdWlsZEVudHJ5
IGZvciBwZW5kaW5nIGJ1aWxkcyBieSBpbi1wcm9ncmVzcyBidWlsZHMnLCBmdW5jdGlvbiAoZG9u
ZSkgewotICAgICAgICAgICAgbGV0IHN5bmNlciA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmln
KCdodHRwOi8vYnVpbGQud2Via2l0Lm9yZycsIHNhbXBsZWlPU0NvbmZpZygpKVszXTsKKyAgICAg
ICAgICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3Rl
QVBJLCBzYW1wbGVpT1NDb25maWcoKSlbMV07CiAKICAgICAgICAgICAgIGxldCBwcm9taXNlID0g
c3luY2VyLnB1bGxCdWlsZGJvdCg1KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDEpOwpAQCAtNjM3LDkgKzc1Nyw5IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFN5bmNl
cicsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOwogCiAgICAgICAg
ICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKGVudHJpZXMpIHsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKE9iamVjdC5rZXlzKGVudHJpZXMpLCBbJzE2NzMzJ10pOworICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRyaWVzLmxlbmd0aCwgMSk7CiAKLSAgICAgICAgICAg
ICAgICBsZXQgZW50cnkgPSBlbnRyaWVzWycxNjczMyddOworICAgICAgICAgICAgICAgIGxldCBl
bnRyeSA9IGVudHJpZXNbMF07CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKGVudHJ5IGluc3Rh
bmNlb2YgQnVpbGRib3RCdWlsZEVudHJ5KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
ZW50cnkuYnVpbGROdW1iZXIoKSwgNjE0KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
ZW50cnkuc2xhdmVOYW1lKCksICdBQlRlc3QtaVBhZC0wJyk7CkBAIC02NTQsNyArNzc0LDcgQEAg
ZGVzY3JpYmUoJ0J1aWxkYm90U3luY2VyJywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KTsKIAog
ICAgICAgICBpdCgnc2hvdWxkIG92ZXJyaWRlIEJ1aWxkYm90QnVpbGRFbnRyeSBmb3IgcGVuZGlu
ZyBidWlsZHMgYnkgZmluaXNoZWQgYnVpbGRzJywgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAg
ICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxk
LndlYmtpdC5vcmcnLCBzYW1wbGVpT1NDb25maWcoKSlbM107CisgICAgICAgICAgICBsZXQgc3lu
Y2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoTW9ja1JlbW90ZUFQSSwgc2FtcGxlaU9T
Q29uZmlnKCkpWzFdOwogCiAgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHN5bmNlci5wdWxsQnVp
bGRib3QoNSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsK
QEAgLTY2Nyw5ICs3ODcsOSBAQCBkZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKIAogICAgICAgICAgICAgcHJvbWlzZS50
aGVuKGZ1bmN0aW9uIChlbnRyaWVzKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChPYmplY3Qua2V5cyhlbnRyaWVzKSwgWycxNjczMyddKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoZW50cmllcy5sZW5ndGgsIDEpOwogCi0gICAgICAgICAgICAgICAgbGV0IGVudHJ5
ID0gZW50cmllc1snMTY3MzMnXTsKKyAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSBlbnRyaWVz
WzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayhlbnRyeSBpbnN0YW5jZW9mIEJ1aWxkYm90
QnVpbGRFbnRyeSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5LmJ1aWxkTnVt
YmVyKCksIDE3NTUpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRyeS5zbGF2ZU5h
bWUoKSwgJ0FCVGVzdC1pUGFkLTAnKTsKQEAgLTY4Miw2ICs4MDIsMTY2IEBAIGRlc2NyaWJlKCdC
dWlsZGJvdFN5bmNlcicsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBkb25lKCk7CiAg
ICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKICAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBk
ZXNjcmliZSgnc2NoZWR1bGVSZXF1ZXN0JywgZnVuY3Rpb24gKCkgeworICAgICAgICBpdCgnc2hv
dWxkIHNjaGVkdWxlIGEgYnVpbGQgcmVxdWVzdCBvbiBhIHNwZWNpZmllZCBzbGF2ZScsIGZ1bmN0
aW9uIChkb25lKSB7CisgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xv
YWRDb25maWcoTW9ja1JlbW90ZUFQSSwgc2FtcGxlaU9TQ29uZmlnKCkpWzBdOworCisgICAgICAg
ICAgICBzeW5jZXIuc2NoZWR1bGVSZXF1ZXN0KGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdChNb2Nr
TW9kZWxzLmlwaG9uZSwgTW9ja01vZGVscy5zcGVlZG9tZXRlciksICdzb21lLXNsYXZlJyk7Cisg
ICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL2J1aWxkZXJzL0FCVGVzdC1pUGhvbmUt
UnVuQmVuY2htYXJrLVRlc3RzL2ZvcmNlJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzWzBdLm1ldGhvZCwgJ1BPU1QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHsKKyAgICAgICAgICAgICAgICAgICAgJ2J1aWxkX3Jl
cXVlc3RfaWQnOiAnMTY3MzMtJyArIE1vY2tNb2RlbHMuaXBob25lLmlkKCksCisgICAgICAgICAg
ICAgICAgICAgICdkZXNpcmVkX2ltYWdlJzogJzEzQTQ1MicsCisgICAgICAgICAgICAgICAgICAg
ICdmb3JjZXNjaGVkdWxlcic6ICdBQlRlc3QtaVBob25lLVJ1bkJlbmNobWFyay1UZXN0cy1Gb3Jj
ZVNjaGVkdWxlcicsCisgICAgICAgICAgICAgICAgICAgICdyb290c19kaWN0JzogJ3siV2ViS2l0
Ijp7ImlkIjoiMTExMTI3IiwidGltZSI6MTQ1Njk1NTgwNzMzNCwicmVwb3NpdG9yeSI6IldlYktp
dCIsInJldmlzaW9uIjoiMTk3NDYzIn0sJworICAgICAgICAgICAgICAgICAgICAgICAgKyAnIlNo
YXJlZCI6eyJpZCI6IjExMTIzNyIsInRpbWUiOjE0NTY5MzE4NzQwMDAsInJlcG9zaXRvcnkiOiJT
aGFyZWQiLCJyZXZpc2lvbiI6IjgwMjI5In19JywKKyAgICAgICAgICAgICAgICAgICAgJ3NsYXZl
bmFtZSc6ICdzb21lLXNsYXZlJywKKyAgICAgICAgICAgICAgICAgICAgJ3Rlc3RfbmFtZSc6ICdz
cGVlZG9tZXRlcicKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAg
ICBkZXNjcmliZSgnc2NoZWR1bGVGaXJzdFJlcXVlc3RJbkdyb3VwSWZBdmFpbGFibGUnLCBmdW5j
dGlvbiAoKSB7CisKKyAgICAgICAgZnVuY3Rpb24gcHVsbEJ1aWxkYm90V2l0aEFzc2VydGlvbihz
eW5jZXIsIHBlbmRpbmdCdWlsZHMsIGluUHJvZ3Jlc3NBbmRGaW5pc2hlZEJ1aWxkcykKKyAgICAg
ICAgeworICAgICAgICAgICAgbGV0IHByb21pc2UgPSBzeW5jZXIucHVsbEJ1aWxkYm90KDUpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAg
ICByZXF1ZXN0c1swXS5yZXNvbHZlKHBlbmRpbmdCdWlsZHMpOworICAgICAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAgICAgICAgIHJlcXVlc3Rz
WzFdLnJlc29sdmUoaW5Qcm9ncmVzc0FuZEZpbmlzaGVkQnVpbGRzKTsKKyAgICAgICAgICAgICAg
ICByZXF1ZXN0cy5sZW5ndGggPSAwOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgYSBidWlsZCBpZiBidWlsZGVyIGhh
cyBubyBidWlsZHMgaWYgc2xhdmVMaXN0IGlzIG5vdCBzcGVjaWZpZWQnLCBmdW5jdGlvbiAoZG9u
ZSkgeworICAgICAgICAgICAgbGV0IHN5bmNlciA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmln
KE1vY2tSZW1vdGVBUEksIHsnY29uZmlndXJhdGlvbnMnOiBbc21hbGxDb25maWd1cmF0aW9uKCld
fSlbMF07CisKKyAgICAgICAgICAgIHB1bGxCdWlsZGJvdFdpdGhBc3NlcnRpb24oc3luY2VyLCBb
XSwge30pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHN5bmNlci5zY2hlZHVs
ZUZpcnN0UmVxdWVzdEluR3JvdXBJZkF2YWlsYWJsZShjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3Qo
TW9ja01vZGVscy5zb21lUGxhdGZvcm0sIE1vY2tNb2RlbHMuc29tZVRlc3QpKTsKKyAgICAgICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
c1swXS51cmwsICcvYnVpbGRlcnMvc29tZSBidWlsZGVyL2ZvcmNlJyk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLm1ldGhvZCwgJ1BPU1QnKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHtpZDogJzE2NzMzLScgKyBN
b2NrTW9kZWxzLnNvbWVQbGF0Zm9ybS5pZCgpfSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdz
aG91bGQgc2NoZWR1bGUgYSBidWlsZCBpZiBidWlsZGVyIG9ubHkgaGFzIGZpbmlzaGVkIGJ1aWxk
cyBpZiBzbGF2ZUxpc3QgaXMgbm90IHNwZWNpZmllZCcsIGZ1bmN0aW9uIChkb25lKSB7CisgICAg
ICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoTW9ja1JlbW90
ZUFQSSwgeydjb25maWd1cmF0aW9ucyc6IFtzbWFsbENvbmZpZ3VyYXRpb24oKV19KVswXTsKKwor
ICAgICAgICAgICAgcHVsbEJ1aWxkYm90V2l0aEFzc2VydGlvbihzeW5jZXIsIFtdLCB7Wy0xXTog
c21hbGxGaW5pc2hlZEJ1aWxkKCl9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICBzeW5jZXIuc2NoZWR1bGVGaXJzdFJlcXVlc3RJbkdyb3VwSWZBdmFpbGFibGUoY3JlYXRlU2Ft
cGxlQnVpbGRSZXF1ZXN0KE1vY2tNb2RlbHMuc29tZVBsYXRmb3JtLCBNb2NrTW9kZWxzLnNvbWVU
ZXN0KSk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL2J1aWxkZXJzL3NvbWUgYnVpbGRlci9mb3JjZScp
OworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS5tZXRob2QsICdQT1NU
Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7
aWQ6ICcxNjczMy0nICsgTW9ja01vZGVscy5zb21lUGxhdGZvcm0uaWQoKX0pOworICAgICAgICAg
ICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsK
KworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBhIGJ1aWxkIGlmIGJ1aWxkZXIgaGFz
IGEgcGVuZGluZyBidWlsZCBpZiBzbGF2ZUxpc3QgaXMgbm90IHNwZWNpZmllZCcsIGZ1bmN0aW9u
IChkb25lKSB7CisgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRD
b25maWcoTW9ja1JlbW90ZUFQSSwgeydjb25maWd1cmF0aW9ucyc6IFtzbWFsbENvbmZpZ3VyYXRp
b24oKV19KVswXTsKKworICAgICAgICAgICAgcHVsbEJ1aWxkYm90V2l0aEFzc2VydGlvbihzeW5j
ZXIsIFtzbWFsbFBlbmRpbmdCdWlsZCgpXSwge30pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgIHN5bmNlci5zY2hlZHVsZUZpcnN0UmVxdWVzdEluR3JvdXBJZkF2YWlsYWJsZShj
cmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5zb21lUGxhdGZvcm0sIE1vY2tNb2Rl
bHMuc29tZVRlc3QpKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDApOworICAgICAgICAgICAg
ICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKKwor
ICAgICAgICBpdCgnc2hvdWxkIHNjaGVkdWxlIGEgYnVpbGQgaWYgYnVpbGRlciBkb2VzIG5vdCBo
YXZlIHBlbmRpbmcgb3IgY29tcGxldGVkIGJ1aWxkcyBvbiB0aGUgbWF0Y2hpbmcgc2xhdmUnLCBm
dW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgbGV0IHN5bmNlciA9IEJ1aWxkYm90U3luY2Vy
Ll9sb2FkQ29uZmlnKE1vY2tSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKVswXTsKKworICAg
ICAgICAgICAgcHVsbEJ1aWxkYm90V2l0aEFzc2VydGlvbihzeW5jZXIsIFtdLCB7fSkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc3luY2VyLnNjaGVkdWxlRmlyc3RSZXF1ZXN0
SW5Hcm91cElmQXZhaWxhYmxlKGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdChNb2NrTW9kZWxzLmlw
aG9uZSwgTW9ja01vZGVscy5zcGVlZG9tZXRlcikpOworICAgICAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
MSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9idWls
ZGVycy9BQlRlc3QtaVBob25lLVJ1bkJlbmNobWFyay1UZXN0cy9mb3JjZScpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS5tZXRob2QsICdQT1NUJyk7CisgICAgICAg
ICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0p
OworCisgICAgICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgYSBidWlsZCBpZiBidWlsZGVyIG9ubHkg
aGFzIGZpbmlzaGVkIGJ1aWxkcyBvbiB0aGUgbWF0Y2hpbmcgc2xhdmUnLCBmdW5jdGlvbiAoZG9u
ZSkgeworICAgICAgICAgICAgbGV0IHN5bmNlciA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmln
KE1vY2tSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKVsxXTsKKworICAgICAgICAgICAgcHVs
bEJ1aWxkYm90V2l0aEFzc2VydGlvbihzeW5jZXIsIFtdLCB7Wy0xXTogc2FtcGxlRmluaXNoZWRC
dWlsZCgpfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc3luY2VyLnNjaGVk
dWxlRmlyc3RSZXF1ZXN0SW5Hcm91cElmQXZhaWxhYmxlKGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVz
dChNb2NrTW9kZWxzLmlwYWQsIE1vY2tNb2RlbHMuc3BlZWRvbWV0ZXIpKTsKKyAgICAgICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sw
XS51cmwsICcvYnVpbGRlcnMvQUJUZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzL2ZvcmNlJyk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLm1ldGhvZCwgJ1BPU1Qn
KTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KS5jYXRjaChkb25lKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgYSBidWlsZCBp
ZiBidWlsZGVyIGhhcyBhIHBlbmRpbmcgYnVpbGQgb24gdGhlIG1hY2hpbmcgc2xhdmUnLCBmdW5j
dGlvbiAoZG9uZSkgeworICAgICAgICAgICAgbGV0IHN5bmNlciA9IEJ1aWxkYm90U3luY2VyLl9s
b2FkQ29uZmlnKE1vY2tSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKVsxXTsKKworICAgICAg
ICAgICAgcHVsbEJ1aWxkYm90V2l0aEFzc2VydGlvbihzeW5jZXIsIFtzYW1wbGVQZW5kaW5nQnVp
bGQoKV0sIHt9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzeW5jZXIuc2No
ZWR1bGVGaXJzdFJlcXVlc3RJbkdyb3VwSWZBdmFpbGFibGUoY3JlYXRlU2FtcGxlQnVpbGRSZXF1
ZXN0KE1vY2tNb2RlbHMuaXBhZCwgTW9ja01vZGVscy5zcGVlZG9tZXRlcikpOworICAgICAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgMCk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAg
fSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgc2NoZWR1
bGUgYSBidWlsZCBpZiBidWlsZGVyIG9ubHkgaGFzIGEgcGVuZGluZyBidWlsZCBvbiBhIG5vbi1t
YWNoaW5nIHNsYXZlJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIGxldCBzeW5jZXIg
PSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3RlQVBJLCBzYW1wbGVpT1NDb25m
aWcoKSlbMV07CisKKyAgICAgICAgICAgIHB1bGxCdWlsZGJvdFdpdGhBc3NlcnRpb24oc3luY2Vy
LCBbc2FtcGxlUGVuZGluZ0J1aWxkKDEsIDEsICdhbm90aGVyLXNsYXZlJyldLCB7fSkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc3luY2VyLnNjaGVkdWxlRmlyc3RSZXF1ZXN0
SW5Hcm91cElmQXZhaWxhYmxlKGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdChNb2NrTW9kZWxzLmlw
YWQsIE1vY2tNb2RlbHMuc3BlZWRvbWV0ZXIpKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEp
OworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOwor
ICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHNjaGVkdWxlIGEgYnVpbGQgaWYgYnVp
bGRlciBvbmx5IGhhcyBhbiBpbi1wcm9ncmVzcyBidWlsZCBvbiB0aGUgbWF0Y2hpbmcgc2xhdmUn
LCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgbGV0IHN5bmNlciA9IEJ1aWxkYm90U3lu
Y2VyLl9sb2FkQ29uZmlnKE1vY2tSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKVsxXTsKKwor
ICAgICAgICAgICAgcHVsbEJ1aWxkYm90V2l0aEFzc2VydGlvbihzeW5jZXIsIFtdLCB7Wy0xXTog
c2FtcGxlSW5Qcm9ncmVzc0J1aWxkKCl9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBzeW5jZXIuc2NoZWR1bGVGaXJzdFJlcXVlc3RJbkdyb3VwSWZBdmFpbGFibGUoY3JlYXRl
U2FtcGxlQnVpbGRSZXF1ZXN0KE1vY2tNb2RlbHMuaXBhZCwgTW9ja01vZGVscy5zcGVlZG9tZXRl
cikpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgZG9uZSgp
OworICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0
KCdzaG91bGQgc2NoZWR1bGUgYSBidWlsZCBpZiBidWlsZGVyIGhhcyBhbiBpbi1wcm9ncmVzcyBi
dWlsZCBvbiBhbm90aGVyIHNsYXZlJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIGxl
dCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3RlQVBJLCBzYW1w
bGVpT1NDb25maWcoKSlbMV07CisKKyAgICAgICAgICAgIHB1bGxCdWlsZGJvdFdpdGhBc3NlcnRp
b24oc3luY2VyLCBbXSwge1stMV06IHNhbXBsZUluUHJvZ3Jlc3NCdWlsZCgnb3RoZXItc2xhdmUn
KX0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHN5bmNlci5zY2hlZHVsZUZp
cnN0UmVxdWVzdEluR3JvdXBJZkF2YWlsYWJsZShjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9j
a01vZGVscy5pcGFkLCBNb2NrTW9kZWxzLnNwZWVkb21ldGVyKSk7CisgICAgICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KS5jYXRj
aChkb25lKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUg
YSBidWlsZCBpZiB0aGUgcmVxdWVzdCBkb2VzIG5vdCBtYXRjaCBhbnkgY29uZmlndXJhdGlvbics
IGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5j
ZXIuX2xvYWRDb25maWcoTW9ja1JlbW90ZUFQSSwgc2FtcGxlaU9TQ29uZmlnKCkpWzBdOworCisg
ICAgICAgICAgICBwdWxsQnVpbGRib3RXaXRoQXNzZXJ0aW9uKHN5bmNlciwgW10sIHt9KS50aGVu
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzeW5jZXIuc2NoZWR1bGVGaXJzdFJlcXVl
c3RJbkdyb3VwSWZBdmFpbGFibGUoY3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0KE1vY2tNb2RlbHMu
aXBhZCwgTW9ja01vZGVscy5zcGVlZG9tZXRlcikpOworICAgICAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
MCk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7
CisgICAgICAgIH0pOwogCiAgICAgfSk7CiB9KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy91bml0LXRlc3RzL3Jlc291cmNlcy9tb2NrLXJlbW90ZS1hcGkuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmVzb3VyY2VzL21vY2stcmVt
b3RlLWFwaS5qcwkocmV2aXNpb24gMTk5MDg1KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3VuaXQtdGVzdHMvcmVzb3VyY2VzL21vY2stcmVtb3RlLWFwaS5qcwkod29ya2luZyBjb3B5KQpA
QCAtNCwxNCArNCwyOCBAQCBpZiAoIWFzc2VydC5ub3RSZWFjaGVkKQogICAgIGFzc2VydC5ub3RS
ZWFjaGVkID0gZnVuY3Rpb24gKCkgeyBhc3NlcnQoZmFsc2UsICdUaGlzIGNvZGUgcGF0aCBzaG91
bGQgbm90IGJlIHJlYWNoZWQnKTsgfQogCiB2YXIgTW9ja1JlbW90ZUFQSSA9IHsKKyAgICB1cmw6
IGZ1bmN0aW9uIChwYXRoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGAke3RoaXMudXJsUHJlZml4
fSR7cGF0aH1gOworICAgIH0sCiAgICAgZ2V0SlNPTjogZnVuY3Rpb24gKHVybCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLmdldEpTT05XaXRoU3RhdHVzKHVybCk7CiAgICAgfSwKICAgICBn
ZXRKU09OV2l0aFN0YXR1czogZnVuY3Rpb24gKHVybCkKICAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9hZGRSZXF1ZXN0KHVybCwgJ0dFVCcsIG51bGwpOworICAgIH0sCisgICAgcG9zdEZvcm1V
cmxlbmNvZGVkRGF0YTogZnVuY3Rpb24gKHVybCwgZGF0YSkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9hZGRSZXF1ZXN0KHVybCwgJ1BPU1QnLCBkYXRhKTsKKyAgICB9LAorICAgIF9hZGRS
ZXF1ZXN0OiBmdW5jdGlvbiAodXJsLCBtZXRob2QsIGRhdGEpCisgICAgewogICAgICAgICB2YXIg
cmVxdWVzdCA9IHsKICAgICAgICAgICAgIHVybDogdXJsLAorICAgICAgICAgICAgbWV0aG9kOiBt
ZXRob2QsCisgICAgICAgICAgICBkYXRhOiBkYXRhLAogICAgICAgICAgICAgcHJvbWlzZTogbnVs
bCwKICAgICAgICAgICAgIHJlc29sdmU6IG51bGwsCiAgICAgICAgICAgICByZWplY3Q6IG51bGws
CkBAIC0yMiwxNSArMzYsMzAgQEAgdmFyIE1vY2tSZW1vdGVBUEkgPSB7CiAgICAgICAgICAgICBy
ZXF1ZXN0LnJlamVjdCA9IHJlamVjdDsKICAgICAgICAgfSk7CiAKKyAgICAgICAgaWYgKHRoaXMu
X3dhaXRpbmdQcm9taXNlKSB7CisgICAgICAgICAgICB0aGlzLl93YWl0aW5nUHJvbWlzZVJlc29s
dmVyKCk7CisgICAgICAgICAgICB0aGlzLl93YWl0aW5nUHJvbWlzZSA9IG51bGw7CisgICAgICAg
ICAgICB0aGlzLl93YWl0aW5nUHJvbWlzZVJlc29sdmVyID0gbnVsbDsKKyAgICAgICAgfQorCiAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHMucHVzaChyZXF1ZXN0KTsKICAgICAgICAgcmV0
dXJuIHJlcXVlc3QucHJvbWlzZTsKICAgICB9LAotICAgIGluamVjdDogZnVuY3Rpb24gKCkKKyAg
ICB3YWl0Rm9yUmVxdWVzdCgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3dhaXRpbmdQcm9t
aXNlKSB7CisgICAgICAgICAgICB0aGlzLl93YWl0aW5nUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1
bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJ
Ll93YWl0aW5nUHJvbWlzZVJlc29sdmVyID0gcmVzb2x2ZTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLl93YWl0aW5nUHJvbWlzZTsKKyAgICB9LAorICAg
IGluamVjdDogZnVuY3Rpb24gKHVybFByZWZpeCkKICAgICB7CiAgICAgICAgIHZhciBvcmlnaW5h
bFJlbW90ZUFQSSA9IGdsb2JhbC5SZW1vdGVBUEk7CiAKICAgICAgICAgYmVmb3JlRWFjaChmdW5j
dGlvbiAoKSB7Ci0gICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCA9IDA7
CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlc2V0KHVybFByZWZpeCk7CiAgICAgICAgICAg
ICBvcmlnaW5hbFJlbW90ZUFQSSA9IGdsb2JhbC5SZW1vdGVBUEk7CiAgICAgICAgICAgICBnbG9i
YWwuUmVtb3RlQVBJID0gTW9ja1JlbW90ZUFQSTsKICAgICAgICAgfSk7CkBAIC00MCw5ICs2OSwx
OCBAQCB2YXIgTW9ja1JlbW90ZUFQSSA9IHsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJu
IE1vY2tSZW1vdGVBUEkucmVxdWVzdHM7Ci0gICAgfQorICAgIH0sCisgICAgcmVzZXQ6IGZ1bmN0
aW9uICh1cmxQcmVmaXgpCisgICAgeworICAgICAgICBpZiAodXJsUHJlZml4KQorICAgICAgICAg
ICAgTW9ja1JlbW90ZUFQSS51cmxQcmVmaXggPSB1cmxQcmVmaXg7CisgICAgICAgIE1vY2tSZW1v
dGVBUEkucmVxdWVzdHMubGVuZ3RoID0gMDsKKyAgICB9LAorICAgIHJlcXVlc3RzOiBbXSwKKyAg
ICBfd2FpdGluZ1Byb21pc2U6IG51bGwsCisgICAgX3dhaXRpbmdQcm9taXNlUmVzb2x2ZXI6IG51
bGwsCisgICAgdXJsUHJlZml4OiAnaHR0cDovL21vY2tob3N0JywKIH07Ci1Nb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzID0gW107CiAKIGlmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKQogICAg
IG1vZHVsZS5leHBvcnRzLk1vY2tSZW1vdGVBUEkgPSBNb2NrUmVtb3RlQVBJOwo=
</data>
<flag name="review"
          id="300065"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>