Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#1 2018-01-03 18:29:46

johnstephens
Plugin Author
From: Woodbridge, VA
Registered: 2008-06-01
Posts: 999
Website

Plugins known to be incompatible with Txp 4.7+?

Does anyone maintain a list of plugins known to be incompatible with Textpattern 4.7?

I’m beginning to test out the current 4.7 development build with a local clone of one of my more complex Textpattern sites, and I’ve begun running into problems. The first being wet_babble made this error appear on every front-end page:

Fatal error: Uncaught Error: Unsupported operand types in /var/www/public/textpattern/lib/txplib_misc.php(1803) : eval()’d code:16 Stack trace: #0 /var/www/public/textpattern/lib/txplib_misc.php(1803) : eval()’d code(19): wet_babble() #1 /var/www/public/textpattern/lib/txplib_misc.php(1803): eval() #2 /var/www/public/textpattern/publish.php(171): load_plugins() #3 /var/www/public/index.php(107): include(‘/var/www/public…’) #4 {main} thrown in /var/www/public/textpattern/lib/txplib_misc.php(1803) : eval()’d code on line 16

Disabling wet_babble resolved the problem.

I intend to comb through the site and identify any other problems I come across, but if there are any known problems with plugins in their current state, it would be great to know. And having a thread where known issues like this are collected might serve others as they upgrade their sites too.

Offline

#2 2018-01-03 23:45:16

phiw13
Plugin Author
From: Japan
Registered: 2004-02-27
Posts: 3,196
Website

Re: Plugins known to be incompatible with Txp 4.7+?

johnstephens wrote #308545:

Disabling wet_babble resolved the problem.

The good news there is you don’t need wet_babble on 4.7! language choice (for the admin side) per user is build in. mix-up, thanks Uli.

Incompatible plugins atm: glz_custom_fields – existing fields will continue to work (for now?) but creating and editing fields makes a mess. A few smd_ plugins had minor issues but those are fixed in their respective github repos.

Last edited by phiw13 (2018-01-04 01:38:20)


Where is that emoji for a solar powered submarine when you need it ?
Sand space – admin theme for Textpattern

Offline

#3 2018-01-04 01:35:47

uli
Moderator
From: Cologne
Registered: 2006-08-15
Posts: 4,306

Re: Plugins known to be incompatible with Txp 4.7+?

phiw13 wrote #308549:

The good news there is you don’t need wet_babble on 4.7! language choice (for the admin side) per user is build in.

You mean wet_native, don’t you? (wet_babble is for customizing single strings.)


In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links

Offline

#4 2018-01-04 01:37:36

phiw13
Plugin Author
From: Japan
Registered: 2004-02-27
Posts: 3,196
Website

Re: Plugins known to be incompatible with Txp 4.7+?

uli wrote #308550:

You mean wet_native, don’t you? (wet_babble is for customizing single strings.)

Oops, sorry, you’re right. I mixed them up :-(


Where is that emoji for a solar powered submarine when you need it ?
Sand space – admin theme for Textpattern

Offline

#5 2018-01-04 14:28:38

wet
Developer Emeritus
From: Schoerfling, Austria
Registered: 2005-06-06
Posts: 3,330
Website Mastodon

Re: Plugins known to be incompatible with Txp 4.7+?

johnstephens wrote #308545:

Disabling wet_babble resolved the problem.

Thanks for the report. I’ve added a cautionary notice to the plugin download page to shy away unsuspecting users.

Offline

#6 2018-01-11 17:10:51

jpdupont
Member
Registered: 2004-10-01
Posts: 752

Re: Plugins known to be incompatible with Txp 4.7+?

spf_codemirror : the settings no longer appear in the Textpattern settings window, making the plugin inoperative

—> With last 4.7 dev. Works with previous …

Last edited by jpdupont (2018-01-11 22:58:41)

Offline

#7 2018-01-11 22:50:56

uli
Moderator
From: Cologne
Registered: 2006-08-15
Posts: 4,306

Re: Plugins known to be incompatible with Txp 4.7+?

Dear core devs, is this topic at its current place of value for you or is the plugin discussion sub-forum the better place for it?


In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links

Offline

#8 2018-01-12 07:35:08

jpdupont
Member
Registered: 2004-10-01
Posts: 752

Re: Plugins known to be incompatible with Txp 4.7+?

The plugin itself works fine if I type the expected parameters directly into the code. This is a problem directly related to the global $prefs that have been removed, and in the case of a new installation.

Offline

#9 2018-02-10 23:53:59

jakob
Admin
From: Germany
Registered: 2005-01-20
Posts: 4,730
Website

Re: Plugins known to be incompatible with Txp 4.7+?

phiw13 wrote #308549:

Incompatible plugins atm: glz_custom_fields – existing fields will continue to work (for now?) but creating and editing fields makes a mess.

Has anyone had any success with this at all in 4.7.? If not, I can imagine this being an upgrade blocker for many people, and something we need to look at resolving collectively.

I recently tried Stef’s 1.5.0 modification* on a brand new txp v4.6.2 but couldn’t edit the fields.

BTW: Is there a compiled version of that beta?


TXP Builders – finely-crafted code, design and txp

Offline

#10 2018-02-11 00:44:30

johnstephens
Plugin Author
From: Woodbridge, VA
Registered: 2008-06-01
Posts: 999
Website

Re: Plugins known to be incompatible with Txp 4.7+?

jakob wrote #309180:

Has anyone had any success with this at all in 4.7.? If not, I can imagine this being an upgrade blocker for many people, and something we need to look at resolving collectively.

I can confirm, this issue has turned the upgrade from a no-brainer to a major tactical question for several sites I work on.

Offline

#11 2018-02-11 00:57:40

phiw13
Plugin Author
From: Japan
Registered: 2004-02-27
Posts: 3,196
Website

Re: Plugins known to be incompatible with Txp 4.7+?

jakob wrote #309180:

I recently tried Stef’s 1.5.0 modification* on a brand new txp v4.6.2 but couldn’t edit the fields.

Try stepping back in Steps commits to the Feb 10, 2017 commit.
At that point in time, the plugin worked for me on 4.6.2 (editing / creating a new fields). If I remember correctly, the newer commits are all TXP 4.7 specific.


Where is that emoji for a solar powered submarine when you need it ?
Sand space – admin theme for Textpattern

Offline

#12 2018-02-11 14:56:29

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,473

Re: Plugins known to be incompatible with Txp 4.7+?

BTW: Is there a compiled version of that beta?

This version works in Textpattern 4.6.2:

# Name: glz_custom_fields v1.5.0 
# Type: Admin/Public/AJAX plugin
# Unlimited, super special custom fields.
# Author: Gerhard Lazu
# URL: http://gerhardlazu.com
# Recommended load order: 9

# .....................................................................
# This is a plugin for Textpattern CMS - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# .....................................................................

YToxMTp7czo0OiJuYW1lIjtzOjE3OiJnbHpfY3VzdG9tX2ZpZWxkcyI7czo2OiJhdXRob3Ii
O3M6MTI6IkdlcmhhcmQgTGF6dSI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL2dl
cmhhcmRsYXp1LmNvbSI7czo3OiJ2ZXJzaW9uIjtzOjU6IjEuNS4wIjtzOjExOiJkZXNjcmlw
dGlvbiI7czozOToiVW5saW1pdGVkLCBzdXBlciBzcGVjaWFsIGN1c3RvbSBmaWVsZHMuIjtz
OjQ6ImNvZGUiO3M6NjY4NzU6IiMgZ2x6X2N1c3RvbV9maWVsZHMgdjEuNS4wDQojIFVubGlt
aXRlZCwgc3VwZXIgc3BlY2lhbCBjdXN0b20gZmllbGRzLg0KIw0KIyBHZXJoYXJkIExhenUN
CiMgaHR0cDovL2dlcmhhcmRsYXp1LmNvbQ0KIw0KIyBDb250cmlidXRvcnM6IFJhbmR5IExl
dmluZSwgU2FtIFdlaXNzLCBMdWNhIEJvdHRpLCBNYW5mcmUsIFZsYWRpbWlyIFNpbGprb3Zp
YywgSnVsaWFuIFJlaXNlbmJlcmdlciwgU3RldmUgRGlja2luc29uLCBTdGVmIERhd3Nvbiwg
SmVhbi1Qb2wgRHVwb250DQojIE1pbmltdW0gcmVxdWlyZW1lbnRzOiBUZXh0cGF0dGVybiA0
LjYuMg0KDQovLyBJbmNsdWRpbmcgaGVscGVyIGZpbGVzLiBJZiB3ZSBjYW4ndCBoYXZlIGNs
YXNzZXMsIHdlIHdpbGwgdXNlIGluY2x1ZGVzDQoNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gbWVzc2Fn
ZXMgdGhhdCB3aWxsIGJlIGF2YWlsYWJsZSB0aHJvdWdob3V0IHRoaXMgcGx1Z2luDQpmdW5j
dGlvbiBnbHpfY3VzdG9tX2ZpZWxkc19nVHh0KCRnZXQsICRhdHRzID0gYXJyYXkoKSkgew0K
ICAkbGFuZyA9IGFycmF5KA0KICAgICdub19uYW1lJyAgICAgICAgICAgICAgICA9PiAnT29v
cHMhIDxzdHJvbmc+Y3VzdG9tIHNldDwvc3Ryb25nPiBtdXN0IGhhdmUgYSBuYW1lJywNCiAg
ICAnZGVsZXRlZCcgICAgICAgICAgICAgICAgPT4gJzxzdHJvbmc+e2N1c3RvbV9zZXRfbmFt
ZX08L3N0cm9uZz4gd2FzIGRlbGV0ZWQnLA0KICAgICdyZXNldCcgICAgICAgICAgICAgICAg
ICA9PiAnPHN0cm9uZz57Y3VzdG9tX3NldF9uYW1lfTwvc3Ryb25nPiB3YXMgcmVzZXQnLA0K
ICAgICdjcmVhdGVkJyAgICAgICAgICAgICAgICA9PiAnPHN0cm9uZz57Y3VzdG9tX3NldF9u
YW1lfTwvc3Ryb25nPiB3YXMgY3JlYXRlZCcsDQogICAgJ3VwZGF0ZWQnICAgICAgICAgICAg
ICAgID0+ICc8c3Ryb25nPntjdXN0b21fc2V0X25hbWV9PC9zdHJvbmc+IHdhcyB1cGRhdGVk
JywNCiAgICAnZXhpc3RzJyAgICAgICAgICAgICAgICAgPT4gJ09vb3BzISA8c3Ryb25nPntj
dXN0b21fc2V0X25hbWV9PC9zdHJvbmc+IGFscmVhZHkgZXhpc3RzJywNCiAgICAnZG9lc250
X2V4aXN0JyAgICAgICAgICAgPT4gJ09vb3BzISA8c3Ryb25nPntjdXN0b21fc2V0X25hbWV9
PC9zdHJvbmc+IGlzIG5vdCBzZXQnLA0KICAgICdmaWVsZF9wcm9ibGVtcycgICAgICAgICA9
PiAnT29vcHMhIDxzdHJvbmc+e2N1c3RvbV9zZXRfbmFtZX08L3N0cm9uZz4gaGFzIHNvbWUg
cHJvYmxlbXMuIDxhIGhyZWY9Ij9ldmVudD1nbHpfY3VzdG9tX2ZpZWxkcyI+R28gZml4IGl0
PC9hPi4nLA0KICAgICdjdXN0b21fc2V0JyAgICAgICAgICAgICA9PiAnVGV4dCBJbnB1dCcs
ICMgY3VzdG9tIHNldHMgaW4gVFhQIDQuMi4wIGFyZSBieSB0eXBlIGN1c3RvbV9zZXQgYnkg
ZGVmYXVsdC4uLg0KICAgICd0ZXh0X2lucHV0JyAgICAgICAgICAgICA9PiAnVGV4dCBJbnB1
dCcsDQogICAgJ3NlbGVjdCcgICAgICAgICAgICAgICAgID0+ICdTZWxlY3QnLA0KICAgICdt
dWx0aS1zZWxlY3QnICAgICAgICAgICA9PiAnTXVsdGktU2VsZWN0JywNCiAgICAndGV4dGFy
ZWEnICAgICAgICAgICAgICAgPT4gJ1RleHRhcmVhJywNCiAgICAnY2hlY2tib3gnICAgICAg
ICAgICAgICAgPT4gJ0NoZWNrYm94JywNCiAgICAncmFkaW8nICAgICAgICAgICAgICAgICAg
PT4gJ1JhZGlvJywNCiAgICAnZGF0ZS1waWNrZXInICAgICAgICAgICAgPT4gJ0RhdGUgUGlj
a2VyJywNCiAgICAndGltZS1waWNrZXInICAgICAgICAgICAgPT4gJ1RpbWUgUGlja2VyJywN
CiAgICAnY3VzdG9tLXNjcmlwdCcgICAgICAgICAgPT4gJ0N1c3RvbSBTY3JpcHQnLA0KICAg
ICd0eXBlX25vdF9zdXBwb3J0ZWQnICAgICA9PiAnVHlwZSBub3Qgc3VwcG9ydGVkJywNCiAg
ICAnbm9fZG8nICAgICAgICAgICAgICAgICAgPT4gJ09vb3BzISBObyBhY3Rpb24gc3BlY2lm
aWVkIGZvciBtZXRob2QsIGFib3J0LicsDQogICAgJ25vdF9zcGVjaWZpZWQnICAgICAgICAg
ID0+ICdPb29wcyEge3doYXR9IGlzIG5vdCBzcGVjaWZpZWQnLA0KICAgICdzZWFyY2hieV9u
b3Rfc2V0JyAgICAgICA9PiAnPHN0cm9uZz5zZWFyY2J5PC9zdHJvbmc+IGNhbm5vdCBiZSBs
ZWZ0IGJsYW5rJywNCiAgICAnanF1ZXJ5X21pc3NpbmcnICAgICAgICAgPT4gJ1VwZ3JhZGUg
VFhQIHRvIGF0IGxlYXN0IDQuMC41IG9yIHB1dCA8c3Ryb25nPmpxdWVyeS5qczwvc3Ryb25n
PiBpbiB5b3VyIC90ZXh0cGF0dGVybiBmb2xkZXIuIDxhIGhyZWY9Imh0dHA6Ly9qcXVlcnku
Y29tIiB0aXRsZT0ialF1ZXJ5IHdlYnNpdGUiPmpRdWVyeSB3ZWJzaXRlPC9hPicsDQogICAg
J2NoZWNrX3BhdGgnICAgICAgICAgICAgID0+ICdNYWtlIHN1cmUgYWxsIHlvdXIgcGF0aHMg
YXJlIGNvcnJlY3QuIENoZWNrIDxzdHJvbmc+Y29uZmlnLnBocDwvc3Ryb25nPiBhbmQgdGhl
IEFkbWluIHRhYiAobWFpbmx5IEFkdmFuY2VkKS4nLA0KICAgICdub19hcnRpY2xlc19mb3Vu
ZCcgICAgICA9PiAnTm8gYXJ0aWNsZXMgd2l0aCBjdXN0b20gZmllbGRzIGhhdmUgYmVlbiBm
b3VuZC4nLA0KICAgICdtaWdyYXRpb25fc3VjY2VzcycgICAgICA9PiAnTWlncmF0aW5nIGN1
c3RvbSBmaWVsZHMgd2FzIHN1Y2Nlc3NmdWwnLA0KICAgICdtaWdyYXRpb25fc2tpcCcgICAg
ICAgICA9PiAnPHN0cm9uZz5jdXN0b21fZmllbGRzPC9zdHJvbmc+IHRhYmxlIGFscmVhZHkg
aGFzIGRhdGEgaW4gaXQsIG1pZ3JhdGlvbiBza2lwcGVkLicsDQogICAgJ3NlYXJjaF9zZWN0
aW9uX2NyZWF0ZWQnID0+ICc8c3Ryb25nPnNlYXJjaDwvc3Ryb25nPiBzZWN0aW9uIGhhcyBi
ZWVuIGNyZWF0ZWQnLA0KICAgICdjdXN0b21fc2V0c19hbGxfaW5wdXQnICA9PiAnQWxsIGN1
c3RvbSBzZXRzIGhhdmUgYmVlbiBzZXQgYmFjayB0byBpbnB1dCcsDQogICAgJ3ByZWZlcmVu
Y2VzX3VwZGF0ZWQnICAgID0+ICdQbHVnaW4gcHJlZmVyZW5jZXMgaGF2ZSBiZWVuIHVwZGF0
ZWQnLA0KICAgICdub3RfZm91bmQnICAgICAgICAgICAgICA9PiAnT29vcHMhIDxzdHJvbmc+
e2ZpbGV9PC9zdHJvbmc+IGNhbm5vdCBiZSBmb3VuZCwgY2hlY2sgcGF0aCcsDQogICAgJ25v
dF9jYWxsYWJsZScgICAgICAgICAgID0+ICdPb29wcyEgPHN0cm9uZz57ZnVuY3Rpb259KCk8
L3N0cm9uZz4gY2Fubm90IGJlIGNhbGxlZC4gRW5zdXJlIDxzdHJvbmc+e2ZpbGV9PC9zdHJv
bmc+IGNhbiBiZSBleGVjdXRlZC4nDQogICk7DQoNCiAgJG91dCA9ICggc3Ryc3RyKCRsYW5n
WyRnZXRdLCAiT29vcHMhIikgKSA/IC8vIE9vb3BzISB3b3VsZCBhcHBlYXIgMCBpbiB0aGUg
c3RyaW5nLi4uDQogICAgICAiPHNwYW4gY2xhc3M9XCJyZWRcIj57JGxhbmdbJGdldF19PC9z
cGFuPiIgOg0KICAgICAgJGxhbmdbJGdldF07DQoNCiAgcmV0dXJuIHN0cnRyKCRvdXQsICRh
dHRzKTsNCn0NCg0KDQoNCg0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBJIHdvdWxkIGRvIHRoaXMgdGhy
b3VnaCBhIGZhY3RvcnkgY2xhc3MsIGJ1dCBzb21lIGZvbGtzIGFyZSBzdGlsbCBydW5uaW5n
IFBIUDQuLi4NCmZ1bmN0aW9uIGdsel9jdXN0b21fZmllbGRzX015U1FMKCRkbywgJG5hbWU9
JycsICR0YWJsZT0nJywgJGV4dHJhPScnKSB7DQogIGlmICggIWVtcHR5KCRkbykgKSB7DQog
ICAgc3dpdGNoICggJGRvICkgew0KICAgICAgY2FzZSAnYWxsJzoNCiAgICAgICAgcmV0dXJu
IGdsel9hbGxfY3VzdG9tX3NldHMoKTsNCiAgICAgICAgYnJlYWs7DQoNCiAgICAgIGNhc2Ug
J3ZhbHVlcyc6DQogICAgICAgIHJldHVybiBnbHpfdmFsdWVzX2N1c3RvbV9maWVsZCgkbmFt
ZSwgJGV4dHJhKTsNCiAgICAgICAgYnJlYWs7DQoNCiAgICAgIGNhc2UgJ2FsbF92YWx1ZXMn
IDoNCiAgICAgICAgcmV0dXJuIGdsel9hbGxfZXhpc3RpbmdfY3VzdG9tX3ZhbHVlcygkbmFt
ZSwgJGV4dHJhKTsNCiAgICAgICAgYnJlYWs7DQoNCiAgICAgIGNhc2UgJ2FydGljbGVfY3Vz
dG9tcyc6DQogICAgICAgIHJldHVybiBnbHpfYXJ0aWNsZV9jdXN0b21fZmllbGRzKCRuYW1l
LCAkZXh0cmEpOw0KICAgICAgICBicmVhazsNCg0KICAgICAgY2FzZSAnbmV4dF9jdXN0b20n
Og0KICAgICAgICByZXR1cm4gZ2x6X25leHRfZW1wdHlfY3VzdG9tKCk7DQogICAgICAgIGJy
ZWFrOw0KDQogICAgICBjYXNlICduZXcnOg0KICAgICAgICBnbHpfbmV3X2N1c3RvbV9maWVs
ZCgkbmFtZSwgJHRhYmxlLCAkZXh0cmEpOw0KICAgICAgICBnbHpfY3VzdG9tX2ZpZWxkc191
cGRhdGVfY291bnQoKTsNCiAgICAgICAgYnJlYWs7DQoNCiAgICAgIGNhc2UgJ3VwZGF0ZSc6
DQogICAgICAgIHJldHVybiBnbHpfdXBkYXRlX2N1c3RvbV9maWVsZCgkbmFtZSwgJHRhYmxl
LCAkZXh0cmEpOw0KICAgICAgICBicmVhazsNCg0KICAgICAgY2FzZSAncmVzZXQnOg0KICAg
ICAgICByZXR1cm4gZ2x6X3Jlc2V0X2N1c3RvbV9maWVsZCgkbmFtZSwgJHRhYmxlLCAkZXh0
cmEpOw0KICAgICAgICBicmVhazsNCg0KICAgICAgY2FzZSAnZGVsZXRlJzoNCiAgICAgICAg
Z2x6X2RlbGV0ZV9jdXN0b21fZmllbGQoJG5hbWUsICR0YWJsZSk7DQogICAgICAgIGdsel9j
dXN0b21fZmllbGRzX3VwZGF0ZV9jb3VudCgpOw0KICAgICAgICBicmVhazsNCg0KICAgICAg
Y2FzZSAnY2hlY2tfbWlncmF0aW9uJzoNCiAgICAgICAgcmV0dXJuIGdsel9jaGVja19taWdy
YXRpb24oKTsNCiAgICAgICAgYnJlYWs7DQoNCiAgICAgIGNhc2UgJ21hcmtfbWlncmF0aW9u
JzoNCiAgICAgICAgcmV0dXJuIGdsel9tYXJrX21pZ3JhdGlvbigpOw0KICAgICAgICBicmVh
azsNCg0KICAgICAgY2FzZSAnY3VzdG9tX3NldF9leGlzdHMnOg0KICAgICAgICByZXR1cm4g
Z2x6X2NoZWNrX2N1c3RvbV9zZXRfZXhpc3RzKCRuYW1lKTsNCiAgICAgICAgYnJlYWs7DQoN
CiAgICAgIGNhc2UgJ3BsdWdpbl9wcmVmZXJlbmNlcyc6DQogICAgICAgIHJldHVybiBnbHpf
cGx1Z2luX3ByZWZlcmVuY2VzKCRuYW1lKTsNCiAgICAgICAgYnJlYWs7DQoNCiAgICAgIGNh
c2UgJ3VwZGF0ZV9wbHVnaW5fcHJlZmVyZW5jZXMnOg0KICAgICAgICByZXR1cm4gZ2x6X3Vw
ZGF0ZV9wbHVnaW5fcHJlZmVyZW5jZXMoJG5hbWUpOw0KICAgICAgICBicmVhazsNCiAgICB9
DQogIH0NCiAgZWxzZQ0KICAgIHRyaWdnZXJfZXJyb3IoZ2x6X2N1c3RvbV9maWVsZHNfZ1R4
dCgnbm9fZG8nKSk7DQp9DQoNCg0KZnVuY3Rpb24gZ2x6X2FsbF9jdXN0b21fc2V0cygpIHsN
CiAgJGFsbF9jdXN0b21fc2V0cyA9IGdldFJvd3MoIg0KICAgIFNFTEVDVA0KICAgICAgYG5h
bWVgIEFTIGN1c3RvbV9zZXQsDQogICAgICBgdmFsYCBBUyBuYW1lLA0KICAgICAgYHBvc2l0
aW9uYCwNCiAgICAgIGBodG1sYCBBUyB0eXBlDQogICAgRlJPTQ0KICAgICAgYCIuUEZYLiJ0
eHBfcHJlZnNgDQogICAgV0hFUkUNCiAgICAgIGBldmVudGA9J2N1c3RvbScNCiAgICBPUkRF
UiBCWQ0KICAgICAgYHBvc2l0aW9uYA0KICAiKTsNCg0KICBmb3JlYWNoICggJGFsbF9jdXN0
b21fc2V0cyBhcyAkY3VzdG9tX3NldCApIHsNCiAgICAkb3V0WyRjdXN0b21fc2V0WydjdXN0
b21fc2V0J11dID0gYXJyYXkoDQogICAgICAnbmFtZScgICAgICA9PiAkY3VzdG9tX3NldFsn
bmFtZSddLA0KICAgICAgJ3Bvc2l0aW9uJyAgPT4gJGN1c3RvbV9zZXRbJ3Bvc2l0aW9uJ10s
DQogICAgICAndHlwZScgICAgICA9PiAkY3VzdG9tX3NldFsndHlwZSddDQogICAgKTsNCiAg
fQ0KDQogIHJldHVybiAkb3V0Ow0KfQ0KDQoNCmZ1bmN0aW9uIGdsel92YWx1ZXNfY3VzdG9t
X2ZpZWxkKCRuYW1lLCAkZXh0cmEpIHsNCiAgZ2xvYmFsICRwcmVmczsNCg0KICBpZiAoIGlz
X2FycmF5KCRleHRyYSkgKSB7DQogICAgZXh0cmFjdCgkZXh0cmEpOw0KDQogICAgaWYgKCAh
ZW1wdHkoJG5hbWUpICkgew0KICAgICAgc3dpdGNoICggJHByZWZzWyd2YWx1ZXNfb3JkZXJp
bmcnXSApIHsNCiAgICAgICAgY2FzZSAiYXNjZW5kaW5nIjoNCiAgICAgICAgICAkb3JkZXJi
eSA9ICJ2YWx1ZSBBU0MiOw0KICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlICJkZXNj
ZW5kaW5nIjoNCiAgICAgICAgICAkb3JkZXJieSA9ICJ2YWx1ZSBERVNDIjsNCiAgICAgICAg
ICBicmVhazsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAkb3JkZXJieSA9ICJpZCBB
U0MiOw0KICAgICAgfQ0KDQoNCiAgICAgICRhcnJfdmFsdWVzID0gZ2V0VGhpbmdzKCINCiAg
ICAgICAgU0VMRUNUDQogICAgICAgICAgYHZhbHVlYA0KICAgICAgICBGUk9NDQogICAgICAg
ICAgYCIuUEZYLiJjdXN0b21fZmllbGRzYA0KICAgICAgICBXSEVSRQ0KICAgICAgICAgIGBu
YW1lYCA9ICd7JG5hbWV9Jw0KICAgICAgICBPUkRFUiBCWQ0KICAgICAgICAgIHskb3JkZXJi
eX0NCiAgICAgICIpOw0KDQogICAgICBpZiAoIGNvdW50KCRhcnJfdmFsdWVzKSA+IDAgKSB7
DQogICAgICAgIC8vIGRlY29kZSBhbGwgc3BlY2lhbCBjaGFyYWN0ZXJzIGUuZy4gIiwgJiBl
dGMuIGFuZCB1c2UgdGhlbSBmb3Iga2V5cw0KICAgICAgICBmb3JlYWNoICggJGFycl92YWx1
ZXMgYXMgJGtleSA9PiAkdmFsdWUgKQ0KICAgICAgICAgICRhcnJfdmFsdWVzX2Zvcm1hdHRl
ZFtnbHpfcmV0dXJuX2NsZWFuX2RlZmF1bHQoaHRtbHNwZWNpYWxjaGFycygkdmFsdWUpKV0g
PSBzdHJpcHNsYXNoZXMoJHZhbHVlKTsNCg0KICAgICAgICAvLyBpZiB0aGlzIGlzIGEgcmFu
Z2UsIGZvcm1hdCByYW5nZXMgYWNjb3JkaW5nbHkNCiAgICAgICAgcmV0dXJuIGdsel9mb3Jt
YXRfcmFuZ2VzKCRhcnJfdmFsdWVzX2Zvcm1hdHRlZCwgJGN1c3RvbV9zZXRfbmFtZSk7DQog
ICAgICB9DQogICAgfQ0KICB9DQogIGVsc2UNCiAgICB0cmlnZ2VyX2Vycm9yKGdsel9jdXN0
b21fZmllbGRzX2dUeHQoJ25vdF9zcGVjaWZpZWQnLCBhcnJheSgne3doYXR9JyA9PiAiZXh0
cmEgYXR0cmlidXRlcyIpKSk7DQp9DQoNCg0KZnVuY3Rpb24gZ2x6X2FsbF9leGlzdGluZ19j
dXN0b21fdmFsdWVzKCRuYW1lLCAkZXh0cmEpIHsNCiAgaWYgKCBpc19hcnJheSgkZXh0cmEp
ICkgew0KICAgIGV4dHJhY3QobEF0dHMoYXJyYXkoDQogICAgICAnY3VzdG9tX3NldF9uYW1l
JyAgID0+ICIiLA0KICAgICAgJ3N0YXR1cycgICAgICAgICAgICA9PiA0DQogICAgKSwkZXh0
cmEpKTsNCg0KICAgIC8vIHdlIG1pZ2h0IHdhbnQgdG8gY2hlY2sgdGhlIGN1c3RvbSBmaWVs
ZCB2YWx1ZXMgZm9yIGFsbCBhcnRpY2xlcyAtIHRoaW5rIGluaXRpYWwgbWlncmF0aW9uDQog
ICAgJHN0YXR1c19jb25kaXRpb24gPSAoJHN0YXR1cyA9PSAwKSA/ICI8PiAnJyIgOiAiPSAn
JHN0YXR1cyciOw0KDQogICAgaWYgKCAhZW1wdHkoJG5hbWUpICkgew0KICAgICAgJGFycl92
YWx1ZXMgPSBnZXRUaGluZ3MoIg0KICAgICAgICBTRUxFQ1QgRElTVElOQ1QNCiAgICAgICAg
ICBgJG5hbWVgDQogICAgICAgIEZST00NCiAgICAgICAgICBgIi5QRlguInRleHRwYXR0ZXJu
YA0KICAgICAgICBXSEVSRQ0KICAgICAgICAgIGBTdGF0dXNgICRzdGF0dXNfY29uZGl0aW9u
DQogICAgICAgIEFORA0KICAgICAgICAgIGAkbmFtZWAgPD4gJycNCiAgICAgICAgT1JERVIg
QlkNCiAgICAgICAgICBgJG5hbWVgDQogICAgICAgICIpOw0KDQogICAgICAvLyB0cmltIGFs
bCB2YWx1ZXMNCiAgICAgIGZvcmVhY2ggKCAkYXJyX3ZhbHVlcyBhcyAka2V5ID0+ICR2YWx1
ZSApDQogICAgICAgICRhcnJfdmFsdWVzWyRrZXldID0gdHJpbSgkdmFsdWUpOw0KDQogICAg
ICAvLyBERUJVRw0KICAgICAgLy8gZG1wKCRhcnJfdmFsdWVzKTsNCg0KICAgICAgLy8gcHJl
cGFyZSBvdXIgYXJyYXkgZm9yIGNoZWNraW5nLiBXZSBuZWVkIGEgc2luZ2xlIHN0cmluZyB0
byBjaGVjayBmb3IgfCBpbnN0YW5jZXMgLSBzZWVtcyBxdWlja2VzdC4NCiAgICAgICR2YWx1
ZXNfY2hlY2sgPSBqb2luKCc6OicsICRhcnJfdmFsdWVzKTsNCg0KICAgICAgLy8gREVCVUcN
CiAgICAgIC8vIGRtcCgkdmFsdWVzX2NoZWNrKTsNCg0KICAgICAgLy8gY2hlY2sgaWYgc29t
ZSBvZiB0aGUgdmFsdWVzIGFyZSBtdWx0aXBsZSBvbmVzDQogICAgICBpZiAoIHN0cnN0cigk
dmFsdWVzX2NoZWNrLCAnfCcpICkgew0KICAgICAgICAvLyBpbml0aWFsaXplICRvdXQNCiAg
ICAgICAgJG91dCA9IGFycmF5KCk7DQogICAgICAgIC8vIHB1dCBhbGwgdmFsdWVzIGluIGFu
IGFycmF5DQogICAgICAgIGZvcmVhY2ggKCAkYXJyX3ZhbHVlcyBhcyAkdmFsdWUgKSB7DQog
ICAgICAgICAgJGFycl92YWx1ZXMgPSBleHBsb2RlKCd8JywgJHZhbHVlKTsNCiAgICAgICAg
ICAkb3V0ID0gYXJyYXlfbWVyZ2UoJG91dCwgJGFycl92YWx1ZXMpOw0KICAgICAgICB9DQog
ICAgICAgIC8vIGtlZXAgb25seSB0aGUgdW5pcXVlIG9uZXMNCiAgICAgICAgJG91dCA9IGFy
cmF5X3VuaXF1ZSgkb3V0KTsNCiAgICAgICAgLy8ga2V5cyBhbmQgdmFsdWVzIG5lZWQgdG8g
YmUgdGhlIHNhbWUNCiAgICAgICAgJG91dCA9IHBocDRfYXJyYXlfY29tYmluZSgkb3V0LCAk
b3V0KTsNCiAgICAgIH0NCg0KICAgICAgLy8gY2hlY2sgaWYgdGhpcyBpcyBhIHJhbmdlDQog
ICAgICBlbHNlIGlmICggc3Ryc3RyKCR2YWx1ZXNfY2hlY2ssICctJykgJiYgc3Ryc3RyKCRj
dXN0b21fc2V0X25hbWUsICdyYW5nZScpICkNCiAgICAgICAgLy8ga2V5cyB3b24ndCBoYXZl
IHRoZSB1bml0ICgkLCDCoywgbTxzdXA+Mzwvc3VwPiwgZXRjLikgdmFsdWVzIHdpbGwNCiAg
ICAgICAgJG91dCA9IGdsel9mb3JtYXRfcmFuZ2VzKCRhcnJfdmFsdWVzLCAkY3VzdG9tX3Nl
dF9uYW1lKTsNCiAgICAgIGVsc2UNCiAgICAgICAgLy8ga2V5cyBhbmQgdmFsdWVzIG5lZWQg
dG8gYmUgdGhlIHNhbWUNCiAgICAgICAgJG91dCA9IHBocDRfYXJyYXlfY29tYmluZSgkYXJy
X3ZhbHVlcywgJGFycl92YWx1ZXMpOw0KDQogICAgICAvLyBjYWxsaW5nIHN0cmlwc2xhc2hl
cyBvbiBhbGwgYXJyYXkgdmFsdWVzDQogICAgICBhcnJheV9tYXAoJ2dsel9hcnJheV9zdHJp
cHNsYXNoZXMnLCAkb3V0KTsNCg0KICAgICAgcmV0dXJuICRvdXQ7DQogICAgfQ0KICB9DQog
IGVsc2UNCiAgICB0cmlnZ2VyX2Vycm9yKGdsel9jdXN0b21fZmllbGRzX2dUeHQoJ25vdF9z
cGVjaWZpZWQnLCBhcnJheSgne3doYXR9JyA9PiAiZXh0cmEgYXR0cmlidXRlcyIpKSk7DQp9
DQoNCg0KZnVuY3Rpb24gZ2x6X2FydGljbGVfY3VzdG9tX2ZpZWxkcygkbmFtZSwgJGV4dHJh
KSB7DQogIGlmICggaXNfYXJyYXkoJGV4dHJhKSApIHsNCiAgICAvLyBzZWUgd2hhdCBjdXN0
b20gZmllbGRzIHdlIG5lZWQgdG8gcXVlcnkgZm9yDQogICAgZm9yZWFjaCAoICRleHRyYSBh
cyAkY3VzdG9tID0+ICRjdXN0b21fc2V0ICkNCiAgICAgICRzZWxlY3RbXSA9IGdsel9jdXN0
b21fbnVtYmVyKCRjdXN0b20pOw0KDQogICAgLy8gcHJlcGFyZSB0aGUgc2VsZWN0IGVsZW1l
bnRzDQogICAgJHNlbGVjdCA9IGltcGxvZGUoJywnLCAkc2VsZWN0KTsNCg0KICAgICRhcnJf
YXJ0aWNsZV9jdXN0b21zID0gZ2V0Um93KCINCiAgICAgIFNFTEVDVA0KICAgICAgICAkc2Vs
ZWN0DQogICAgICBGUk9NDQogICAgICAgIGAiLlBGWC4idGV4dHBhdHRlcm5gDQogICAgICBX
SEVSRQ0KICAgICAgICBgSURgPSckbmFtZScNCiAgICAiKTsNCg0KICAgIHJldHVybiAkYXJy
X2FydGljbGVfY3VzdG9tczsNCiAgfQ0KICBlbHNlDQogICAgdHJpZ2dlcl9lcnJvcihnbHpf
Y3VzdG9tX2ZpZWxkc19nVHh0KCdub3Rfc3BlY2lmaWVkJywgYXJyYXkoJ3t3aGF0fScgPT4g
ImV4dHJhIGF0dHJpYnV0ZXMiKSkpOw0KfQ0KDQoNCmZ1bmN0aW9uIGdsel9uZXdfY3VzdG9t
X2ZpZWxkKCRuYW1lLCAkdGFibGUsICRleHRyYSkgew0KICBpZiAoIGlzX2FycmF5KCRleHRy
YSkgKSB7DQogICAgZXh0cmFjdCgkZXh0cmEpOw0KICAgIC8vIERSWWluZyB1cCwgd2UnbGwg
YmUgdXNpbmcgdGhpcyB2YXJpYWJsZSBxdWlldCBvZnRlbg0KICAgICRjdXN0b21fc2V0ID0g
KCBpc3NldCgkY3VzdG9tX2ZpZWxkX251bWJlcikgKSA/DQogICAgICAiY3VzdG9tX3skY3Vz
dG9tX2ZpZWxkX251bWJlcn1fc2V0IiA6DQogICAgICAkY3VzdG9tX3NldDsNCg0KICAgIGlm
ICggKCR0YWJsZSA9PSBQRlguInR4cF9wcmVmcyIpICkgew0KICAgICAgLy8gaWYgdGhpcyBp
cyBhIG5ldyBmaWVsZCB3aXRob3V0IGEgcG9zaXRpb24sIHVzZSB0aGUgJGN1c3RvbV9maWVs
ZF9udW1iZXINCiAgICAgIGlmIChlbXB0eSgkY3VzdG9tX3NldF9wb3NpdGlvbikpICRjdXN0
b21fc2V0X3Bvc2l0aW9uID0gJGN1c3RvbV9maWVsZF9udW1iZXI7DQogICAgICAkcXVlcnkg
PSAiDQogICAgICAgIElOU0VSVCBJTlRPDQogICAgICAgICAgYCIuUEZYLiJ0eHBfcHJlZnNg
IChgcHJlZnNfaWRgLCBgbmFtZWAsIGB2YWxgLCBgdHlwZWAsIGBldmVudGAsIGBodG1sYCwg
YHBvc2l0aW9uYCkNCiAgICAgICAgVkFMVUVTDQogICAgICAgICAgKCcxJywgJ3skY3VzdG9t
X3NldH0nLCAneyRuYW1lfScsICcxJywgJ2N1c3RvbScsICd7JGN1c3RvbV9zZXRfdHlwZX0n
LCB7JGN1c3RvbV9zZXRfcG9zaXRpb259KQ0KICAgICAgIjsNCiAgICB9DQogICAgZWxzZSBp
ZiAoICR0YWJsZSA9PSBQRlguInR4cF9sYW5nIiApIHsNCiAgICAgICRxdWVyeSA9ICINCiAg
ICAgICAgSU5TRVJUIElOVE8NCiAgICAgICAgICBgIi5QRlguInR4cF9sYW5nYCAoYGxhbmdg
LGBuYW1lYCxgZXZlbnRgLGBkYXRhYCxgbGFzdG1vZGApDQogICAgICAgIFZBTFVFUw0KICAg
ICAgICAgICgneyRsYW5nfScsJ3skY3VzdG9tX3NldH0nLCdwcmVmcycsJ3skbmFtZX0nLG5v
dygpKQ0KICAgICAgIjsNCiAgICB9DQogICAgZWxzZSBpZiAoICR0YWJsZSA9PSBQRlguInRl
eHRwYXR0ZXJuIiApIHsNCiAgICAgICRjb2x1bW5fdHlwZSA9ICggJGN1c3RvbV9zZXRfdHlw
ZSA9PSAidGV4dGFyZWEiICkgPyAiVEVYVCIgOiAiVkFSQ0hBUigyNTUpIjsNCiAgICAgICRk
Zmx0ID0gKCAkY3VzdG9tX3NldF90eXBlID09ICJ0ZXh0YXJlYSIgKSA/ICcnIDogIkRFRkFV
TFQgJyciOw0KICAgICAgJHF1ZXJ5ID0gIg0KICAgICAgICBBTFRFUiBUQUJMRQ0KICAgICAg
ICAgIGAiLlBGWC4idGV4dHBhdHRlcm5gDQogICAgICAgIEFERA0KICAgICAgICAgIGBjdXN0
b21feyRjdXN0b21fZmllbGRfbnVtYmVyfWAgeyRjb2x1bW5fdHlwZX0gTk9UIE5VTEwgeyRk
Zmx0fQ0KICAgICAgIjsNCiAgICB9DQogICAgZWxzZSBpZiAoICR0YWJsZSA9PSBQRlguImN1
c3RvbV9maWVsZHMiICkgew0KICAgICAgJGFycl92YWx1ZXMgPSBhcnJheV91bmlxdWUoYXJy
YXlfZmlsdGVyKGV4cGxvZGUoIlxyXG4iLCAkdmFsdWUpLCAnZ2x6X2Fycl9lbXB0eV92YWx1
ZXMnKSk7DQoNCiAgICAgIGlmICggaXNfYXJyYXkoJGFycl92YWx1ZXMpICYmICFlbXB0eSgk
YXJyX3ZhbHVlcykgKSB7DQogICAgICAgICRzaXplX2Fycl92YWx1ZXMgPSBjb3VudCgkYXJy
X3ZhbHVlcyk7DQogICAgICAgICRpbnNlcnQgPSAnJzsNCiAgICAgICAgZm9yZWFjaCAoICRh
cnJfdmFsdWVzIGFzICRrZXkgPT4gJHZhbHVlICkgew0KICAgICAgICAgIC8vIGRvbid0IGlu
c2VydCBlbXB0eSB2YWx1ZXMNCiAgICAgICAgICBpZiAoICFlbXB0eSgkdmFsdWUpICkNCiAg
ICAgICAgICAgIC8vIG1ha2Ugc3VyZSBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQg
YmVmb3JlIGluc2VydGluZyB0aGVtIGluIHRoZSBkYXRhYmFzZQ0KICAgICAgICAgICAgJHZh
bHVlID0gYWRkc2xhc2hlcyhhZGRzbGFzaGVzKHRyaW0oJHZhbHVlKSkpOw0KICAgICAgICAg
ICAgLy8gaWYgdGhpcyBpcyB0aGUgbGFzdCB2YWx1ZSwgcXVlcnkgd2lsbCBoYXZlIHRvIGJl
IGRpZmZlcmVudA0KICAgICAgICAgICAgJGluc2VydCAuPSAoJGtleSsxICE9ICRzaXplX2Fy
cl92YWx1ZXMgKSA/DQogICAgICAgICAgICAgICIoJ3skY3VzdG9tX3NldH0nLCd7JHZhbHVl
fScpLCAiIDoNCiAgICAgICAgICAgICAgIigneyRjdXN0b21fc2V0fScsJ3skdmFsdWV9Jyki
Ow0KICAgICAgICB9DQogICAgICAgICRxdWVyeSA9ICINCiAgICAgICAgICBJTlNFUlQgSU5U
Tw0KICAgICAgICAgICAgYCIuUEZYLiJjdXN0b21fZmllbGRzYCAoYG5hbWVgLGB2YWx1ZWAp
DQogICAgICAgICAgVkFMVUVTDQogICAgICAgICAgICB7JGluc2VydH0NCiAgICAgICAgIjsN
CiAgICAgIH0NCiAgICB9DQogICAgaWYgKCBpc3NldCgkcXVlcnkpICYmICFlbXB0eSgkcXVl
cnkpICkNCiAgICAgIHNhZmVfcXVlcnkoJHF1ZXJ5KTsNCiAgfQ0KICBlbHNlDQogICAgdHJp
Z2dlcl9lcnJvcihnbHpfY3VzdG9tX2ZpZWxkc19nVHh0KCdub3Rfc3BlY2lmaWVkJywgYXJy
YXkoJ3t3aGF0fScgPT4gImV4dHJhIGF0dHJpYnV0ZXMiKSkpOw0KfQ0KDQoNCmZ1bmN0aW9u
IGdsel91cGRhdGVfY3VzdG9tX2ZpZWxkKCRuYW1lLCAkdGFibGUsICRleHRyYSkgew0KICBp
ZiAoIGlzX2FycmF5KCRleHRyYSkgKQ0KICAgIGV4dHJhY3QoJGV4dHJhKTsNCg0KICBpZiAo
ICgkdGFibGUgPT0gUEZYLiJ0eHBfcHJlZnMiKSApIHsNCiAgICBzYWZlX3F1ZXJ5KCINCiAg
ICAgIFVQREFURQ0KICAgICAgICBgIi5QRlguInR4cF9wcmVmc2ANCiAgICAgIFNFVA0KICAg
ICAgICBgdmFsYCA9ICd7JGN1c3RvbV9zZXRfbmFtZX0nLA0KICAgICAgICBgaHRtbGAgPSAn
eyRjdXN0b21fc2V0X3R5cGV9JywNCiAgICAgICAgYHBvc2l0aW9uYCA9ICd7JGN1c3RvbV9z
ZXRfcG9zaXRpb259Jw0KICAgICAgV0hFUkUNCiAgICAgICAgYG5hbWVgPSd7JG5hbWV9Jw0K
ICAgICIpOw0KICB9DQogIGVsc2UgaWYgKCAoJHRhYmxlID09IFBGWC4idGV4dHBhdHRlcm4i
KSApIHsNCiAgICAkY29sdW1uX3R5cGUgPSAoICRjdXN0b21fc2V0X3R5cGUgPT0gInRleHRh
cmVhIiApID8gIlRFWFQiIDogIlZBUkNIQVIoMjU1KSI7DQogICAgJGRmbHQgPSAoICRjdXN0
b21fc2V0X3R5cGUgPT0gInRleHRhcmVhIiApID8gJycgOiAiREVGQVVMVCAnJyI7DQogICAg
c2FmZV9xdWVyeSgiDQogICAgICBBTFRFUiBUQUJMRQ0KICAgICAgICBgIi5QRlguInRleHRw
YXR0ZXJuYA0KICAgICAgTU9ESUZZDQogICAgICAgIGB7JGN1c3RvbV9maWVsZH1gIHskY29s
dW1uX3R5cGV9IE5PVCBOVUxMIHskZGZsdH0NCiAgICAiKTsNCiAgfQ0KfQ0KDQoNCmZ1bmN0
aW9uIGdsel9yZXNldF9jdXN0b21fZmllbGQoJG5hbWUsICR0YWJsZSwgJGV4dHJhKSB7DQog
IGlmICggaXNfYXJyYXkoJGV4dHJhKSApDQogICAgZXh0cmFjdCgkZXh0cmEpOw0KDQogIGlm
ICggJHRhYmxlID09IFBGWC4idHhwX3ByZWZzIiApIHsNCiAgICBzYWZlX3F1ZXJ5KCINCiAg
ICAgIFVQREFURQ0KICAgICAgICBgIi5QRlguInR4cF9wcmVmc2ANCiAgICAgIFNFVA0KICAg
ICAgICBgdmFsYCA9ICcnLA0KICAgICAgICBgaHRtbGAgPSAndGV4dF9pbnB1dCcNCiAgICAg
IFdIRVJFDQogICAgICAgIGBuYW1lYD0neyRuYW1lfScNCiAgICAiKTsNCiAgfQ0KICBlbHNl
IGlmICggJHRhYmxlID09IFBGWC4idGV4dHBhdHRlcm4iICkgew0KICAgIHNhZmVfcXVlcnko
IlVQREFURSBgIi5QRlguInRleHRwYXR0ZXJuYCBTRVQgYHskbmFtZX1gID0gJyciKTsNCiAg
ICBzYWZlX3F1ZXJ5KCJBTFRFUiBUQUJMRSBgIi5QRlguInRleHRwYXR0ZXJuYCBNT0RJRlkg
YHskY3VzdG9tX2ZpZWxkfWAgVkFSQ0hBUigyNTUpIE5PVCBOVUxMIERFRkFVTFQgJyciKTsN
CiAgfQ0KfQ0KDQoNCmZ1bmN0aW9uIGdsel9kZWxldGVfY3VzdG9tX2ZpZWxkKCRuYW1lLCAk
dGFibGUpIHsNCiAgLy8gcmVtZW1iZXIsIGN1c3RvbSBmaWVsZHMgdW5kZXIgMTAgTVVTVCBO
T1QgYmUgZGVsZXRlZA0KICBpZiAoIGdsel9jdXN0b21fZGlnaXQoJG5hbWUpID4gMTAgKSB7
DQogICAgaWYgKCBpbl9hcnJheSgkdGFibGUsIGFycmF5KFBGWC4idHhwX3ByZWZzIiwgUEZY
LiJ0eHBfbGFuZyIsIFBGWC4iY3VzdG9tX2ZpZWxkcyIpKSApIHsNCiAgICAgICRxdWVyeSA9
ICINCiAgICAgICAgREVMRVRFIEZST00NCiAgICAgICAgICBgeyR0YWJsZX1gDQogICAgICAg
IFdIRVJFDQogICAgICAgICAgYG5hbWVgPSd7JG5hbWV9Jw0KICAgICAgIjsNCiAgICB9DQog
ICAgZWxzZSBpZiAoICR0YWJsZSA9PSBQRlguInRleHRwYXR0ZXJuIiApIHsNCiAgICAgICRx
dWVyeSA9ICINCiAgICAgICAgQUxURVIgVEFCTEUNCiAgICAgICAgICBgIi5QRlguInRleHRw
YXR0ZXJuYA0KICAgICAgICBEUk9QDQogICAgICAgICAgYHskbmFtZX1gDQogICAgICAiOw0K
ICAgIH0NCiAgICBzYWZlX3F1ZXJ5KCRxdWVyeSk7DQogIH0NCiAgZWxzZSB7DQogICAgaWYg
KCAkdGFibGUgPT0gUEZYLiJ0eHBfcHJlZnMiICkNCiAgICAgIGdsel9jdXN0b21fZmllbGRz
X015U1FMKCJyZXNldCIsICRuYW1lLCAkdGFibGUpOw0KICAgIGVsc2UgaWYgKCAoJHRhYmxl
ID09IFBGWC4iY3VzdG9tX2ZpZWxkcyIpICkgew0KICAgICAgc2FmZV9xdWVyeSgiDQogICAg
ICAgIERFTEVURSBGUk9NDQogICAgICAgICAgYHskdGFibGV9YA0KICAgICAgICBXSEVSRQ0K
ICAgICAgICAgIGBuYW1lYD0neyRuYW1lfScNCiAgICAgICIpOw0KICAgIH0NCiAgfQ0KfQ0K
DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCi8vIGNoZWNrcyBpZiBjdXN0b21fZmllbGRzIHRhYmxlIGhhcyBh
bnkgdmFsdWVzIGluIGl0DQpmdW5jdGlvbiBnbHpfY2hlY2tfbWlncmF0aW9uKCkgew0KICBy
ZXR1cm4gZ2V0VGhpbmcoIg0KICAgIFNFTEVDVA0KICAgICAgQ09VTlQoKikNCiAgICBGUk9N
DQogICAgICBgIi5QRlguImN1c3RvbV9maWVsZHNgDQogICIpOw0KfQ0KDQoNCi8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCi8vIG1ha2UgYSBub3RlIG9mIGdsel9jdXN0b21fZmllbGRzIG1pZ3JhdGlvbiBpbiB0
eHBfcHJlZnMNCmZ1bmN0aW9uIGdsel9tYXJrX21pZ3JhdGlvbigpIHsNCiAgc2V0X3ByZWYo
Im1pZ3JhdGVkIiwgIjEiLCAiZ2x6X2N1c3RvbV9mIik7DQp9DQoNCg0KLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
Ly8gY2hlY2sgaWYgb25lIG9mIHRoZSBzcGVjaWFsIGN1c3RvbSBmaWVsZHMgZXhpc3RzDQpm
dW5jdGlvbiBnbHpfY2hlY2tfY3VzdG9tX3NldF9leGlzdHMoJG5hbWUpIHsNCiAgaWYgKCAh
ZW1wdHkoJG5hbWUpICkgew0KICAgIHJldHVybiBnZXRUaGluZygiDQogICAgICBTRUxFQ1QN
CiAgICAgICAgYG5hbWVgLCBgdmFsYA0KICAgICAgRlJPTQ0KICAgICAgICBgIi5QRlguInR4
cF9wcmVmc2ANCiAgICAgIFdIRVJFDQogICAgICAgIGBodG1sYCA9ICd7JG5hbWV9Jw0KICAg
ICAgQU5EDQogICAgICAgIGBuYW1lYCBMSUtFICdjdXN0b21fJScNCiAgICAgIE9SREVSIEJZ
DQogICAgICAgIGBuYW1lYA0KICAgICIpOw0KICB9DQp9DQoNCg0KLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8g
dXBkYXRlcyBtYXhfY3VzdG9tX2ZpZWxkcw0KZnVuY3Rpb24gZ2x6X2N1c3RvbV9maWVsZHNf
dXBkYXRlX2NvdW50KCkgew0KICBzZXRfcHJlZignbWF4X2N1c3RvbV9maWVsZHMnLCBzYWZl
X2NvdW50KCJ0eHBfcHJlZnMiLCAiZXZlbnQ9J2N1c3RvbSciKSk7DQp9DQoNCi8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCi8vIHJldHVybnMgYWxsIHBsdWdpbiBwcmVmZXJlbmNlcw0KZnVuY3Rpb24gZ2x6X3Bs
dWdpbl9wcmVmZXJlbmNlcygkYXJyX3ByZWZlcmVuY2VzKSB7DQoJJHIgPSBzYWZlX3Jvd3Nf
c3RhcnQoJ25hbWUsIHZhbCcsICd0eHBfcHJlZnMnLCAiZXZlbnQgPSAnZ2x6X2N1c3RvbV9m
JyIpOw0KCWlmICgkcikgew0KCQl3aGlsZSAoJGEgPSBuZXh0Um93KCRyKSkgew0KCQkJJG91
dFskYVsnbmFtZSddXSA9IHN0cmlwc2xhc2hlcygkYVsndmFsJ10pOw0KCQl9DQoJfQ0KICBy
ZXR1cm4gJG91dDsNCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gdXBkYXRlcyBhbGwgcGx1Z2luIHBy
ZWZlcmVuY2VzDQpmdW5jdGlvbiBnbHpfdXBkYXRlX3BsdWdpbl9wcmVmZXJlbmNlcygkYXJy
X3ByZWZlcmVuY2VzKSB7DQogIC8vIGRpZShkbXAoJGFycl9wcmVmZXJlbmNlcykpOw0KICBm
b3JlYWNoICgkYXJyX3ByZWZlcmVuY2VzIGFzICRwcmVmZXJlbmNlID0+ICR2YWx1ZSkgew0K
ICAgIHNldF9wcmVmKCRwcmVmZXJlbmNlLCBhZGRzbGFzaGVzKGFkZHNsYXNoZXModHJpbSgk
dmFsdWUpKSksICJnbHpfY3VzdG9tX2YiLCAxMCk7IC8vIDEwIHNvIHRoYXQgaXQgd29uJ3Qg
YXBwZWFyIHVuZGVyIFRYUCdzIHByZWZzIHRhYg0KICB9DQp9DQoNCg0KDQoNCg0KDQovLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQovLyBnb2VzIHRocm91Z2ggYWxsIGN1c3RvbSBzZXRzLCByZXR1cm5zIHRoZSBm
aXJzdCBvbmUgd2hpY2ggaXMgbm90IGJlaW5nIHVzZWQNCmZ1bmN0aW9uIGdsel9uZXh0X2Vt
cHR5X2N1c3RvbSgpIHsNCiAgZ2xvYmFsICRhbGxfY3VzdG9tX3NldHM7DQoNCiAgZm9yZWFj
aCAoICRhbGxfY3VzdG9tX3NldHMgYXMgJGN1c3RvbSA9PiAkY3VzdG9tX3NldCApIHsNCiAg
ICBpZiAoIGVtcHR5KCRjdXN0b21fc2V0WyduYW1lJ10pICkNCiAgICAgIHJldHVybiAkY3Vz
dG9tOw0KICB9DQp9DQoNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gZWRpdC9kZWxldGUgYnV0dG9ucyBp
biBjdXN0b21fZmllbGRzIHRhYmxlIHJlcXVpcmUgYSBmb3JtIGVhY2gNCmZ1bmN0aW9uIGds
el9mb3JtX2J1dHRvbnMoJGFjdGlvbiwgJHZhbHVlLCAkY3VzdG9tX3NldCwgJGN1c3RvbV9z
ZXRfbmFtZSwgJGN1c3RvbV9zZXRfdHlwZSwgJGN1c3RvbV9zZXRfcG9zaXRpb24sICRvbnN1
Ym1pdD0nJykgew0KICAkb25zdWJtaXQgPSAoJG9uc3VibWl0KSA/DQogICAgJ29uc3VibWl0
PSInLiRvbnN1Ym1pdC4nIicgOg0KICAgICcnOw0KDQogIHJldHVybg0KICAgICc8Zm9ybSBt
ZXRob2Q9InBvc3QiIGFjdGlvbj0iaW5kZXgucGhwIiAnLiRvbnN1Ym1pdC4nPg0KICAgICAg
PGlucHV0IG5hbWU9ImN1c3RvbV9zZXQiIHZhbHVlPSInLiRjdXN0b21fc2V0LiciIHR5cGU9
ImhpZGRlbiIgLz4NCiAgICAgIDxpbnB1dCBuYW1lPSJjdXN0b21fc2V0X25hbWUiIHZhbHVl
PSInLiRjdXN0b21fc2V0X25hbWUuJyIgdHlwZT0iaGlkZGVuIiAvPg0KICAgICAgPGlucHV0
IG5hbWU9ImN1c3RvbV9zZXRfdHlwZSIgdmFsdWU9IicuJGN1c3RvbV9zZXRfdHlwZS4nIiB0
eXBlPSJoaWRkZW4iIC8+DQogICAgICA8aW5wdXQgbmFtZT0iY3VzdG9tX3NldF9wb3NpdGlv
biIgdmFsdWU9IicuJGN1c3RvbV9zZXRfcG9zaXRpb24uJyIgdHlwZT0iaGlkZGVuIiAvPg0K
ICAgICAgPGlucHV0IG5hbWU9ImV2ZW50IiB2YWx1ZT0iZ2x6X2N1c3RvbV9maWVsZHMiIHR5
cGU9ImhpZGRlbiIgLz4NCiAgICAgIDxpbnB1dCBuYW1lPSInLiRhY3Rpb24uJyIgdmFsdWU9
IicuJHZhbHVlLiciIHR5cGU9InN1Ym1pdCIgLz4NCiAgICA8L2Zvcm0+JzsNCn0NCg0KDQov
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQovLyB0aGUgdHlwZXMgb3VyIGN1c3RvbSBmaWVsZHMgY2FuIHRha2UNCmZ1
bmN0aW9uIGdsel9jdXN0b21fc2V0X3R5cGVzKCkgew0KICByZXR1cm4gYXJyYXkoDQogICAg
J25vcm1hbCcgPT4gYXJyYXkoDQogICAgICAndGV4dF9pbnB1dCcsDQogICAgICAnY2hlY2ti
b3gnLA0KICAgICAgJ3JhZGlvJywNCiAgICAgICdzZWxlY3QnLA0KICAgICAgJ211bHRpLXNl
bGVjdCcsDQogICAgICAndGV4dGFyZWEnKSwNCiAgICAnc3BlY2lhbCcgPT4gYXJyYXkoDQog
ICAgICAnZGF0ZS1waWNrZXInLA0KICAgICAgJ3RpbWUtcGlja2VyJywNCiAgICAgICdjdXN0
b20tc2NyaXB0JykNCiAgKTsNCn0NCg0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBvdXRwdXRzIG9ubHkg
Y3VzdG9tIGZpZWxkcyB0aGF0IGhhdmUgYmVlbiBzZXQsIGkuZS4gaGF2ZSBhIG5hbWUgYXNz
aWduZWQgdG8gdGhlbQ0KZnVuY3Rpb24gZ2x6X2NoZWNrX2N1c3RvbV9zZXQoJGFsbF9jdXN0
b21fc2V0cywgJHN0ZXApIHsNCiAgJG91dCA9IGFycmF5KCk7DQoNCiAgZm9yZWFjaCAoJGFs
bF9jdXN0b21fc2V0cyBhcyAka2V5ID0+ICRjdXN0b21fZmllbGQpIHsNCiAgICBpZiAoIWVt
cHR5KCRjdXN0b21fZmllbGRbJ25hbWUnXSkpIHsNCiAgICAgIGlmICggKCRzdGVwID09ICJi
b2R5IikgJiYgKCRjdXN0b21fZmllbGRbJ3R5cGUnXSA9PSAidGV4dGFyZWEiKSApDQogICAg
ICAgICRvdXRbJGtleV0gPSAkY3VzdG9tX2ZpZWxkOw0KICAgICAgZWxzZSBpZiAoICgkc3Rl
cCA9PSAiY3VzdG9tX2ZpZWxkcyIpICYmICgkY3VzdG9tX2ZpZWxkWyd0eXBlJ10gIT0gInRl
eHRhcmVhIikgKSB7DQogICAgICAgICRvdXRbJGtleV0gPSAkY3VzdG9tX2ZpZWxkOw0KICAg
ICAgfQ0KICAgIH0NCiAgfQ0KDQogIHJldHVybiAkb3V0Ow0KfQ0KDQoNCi8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
Ci8vIHJlbW92ZXMgeyB9IGZyb20gdmFsdWVzIHdoaWNoIGFyZSBtYXJrZWQgYXMgZGVmYXVs
dA0KZnVuY3Rpb24gZ2x6X3JldHVybl9jbGVhbl9kZWZhdWx0KCR2YWx1ZSkgew0KICAkcGF0
dGVybiA9ICIvXi4qXHsoLiopXH0uKi8iOw0KDQogIHJldHVybiBwcmVnX3JlcGxhY2UoJHBh
dHRlcm4sICIkMSIsICR2YWx1ZSk7DQp9DQoNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gcmV0dXJuIG91
ciBkZWZhdWx0IHZhbHVlIGZyb20gYWxsIGN1c3RvbV9maWVsZCB2YWx1ZXMNCmZ1bmN0aW9u
IGdsel9kZWZhdWx0X3ZhbHVlKCRhbGxfdmFsdWVzKSB7DQogIGlmICggaXNfYXJyYXkoJGFs
bF92YWx1ZXMpICkgew0KICAgIHByZWdfbWF0Y2goIi8oXHsuKlx9KS8iLCBqb2luKCIgIiwg
JGFsbF92YWx1ZXMpLCAkZGVmYXVsdCk7DQogICAgcmV0dXJuICggKCFlbXB0eSgkZGVmYXVs
dCkgJiYgJGRlZmF1bHRbMF0pID8gJGRlZmF1bHRbMF0gOiAnJyk7DQogIH0NCn0NCg0KDQov
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQovLyBjYWxsaW5nIHRoZSBhYm92ZSBmdW5jdGlvbiBpbiBhbiBhcnJheSBj
b250ZXh0DQpmdW5jdGlvbiBnbHpfY2xlYW5fZGVmYXVsdF9hcnJheV92YWx1ZXMoJiR2YWx1
ZSkgew0KICAkdmFsdWUgPSBnbHpfcmV0dXJuX2NsZWFuX2RlZmF1bHQoJHZhbHVlKTsNCn0N
Cg0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQovLyBjdXN0b21fc2V0IHdpdGhvdXQgIl9zZXQiIGUuZy4gY3Vz
dG9tXzFfc2V0ID0+IGN1c3RvbV8xDQovLyBvciBjdXN0b20gc2V0IGZvcm1hdHRlZCBmb3Ig
SURzIGUuZy4gY3VzdG9tLTENCmZ1bmN0aW9uIGdsel9jdXN0b21fbnVtYmVyKCRjdXN0b21f
c2V0LCAkZGVsaW1pdGVyPSJfIikgew0KICAkY3VzdG9tX2ZpZWxkID0gc3Vic3RyKCRjdXN0
b21fc2V0LCAwLCAtNCk7DQoNCiAgaWYgKCRkZWxpbWl0ZXIgIT0gIl8iKQ0KICAgICRjdXN0
b21fZmllbGQgPSBzdHJfcmVwbGFjZSgiXyIsICRkZWxpbWl0ZXIsICRjdXN0b21fZmllbGQp
Ow0KDQogIHJldHVybiAkY3VzdG9tX2ZpZWxkOw0KfQ0KDQoNCi8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIGN1
c3RvbV9zZXQgZGlnaXQgZS5nLiBjdXN0b21fMV9zZXQgPT4gMQ0KZnVuY3Rpb24gZ2x6X2N1
c3RvbV9kaWdpdCgkY3VzdG9tX3NldCkgew0KICAkb3V0ID0gZXhwbG9kZSgiXyIsICRjdXN0
b21fc2V0KTsNCiAgLy8gJG91dFswXSB3aWxsIGFsd2F5cyBiZSBjdXN0b20NCiAgcmV0dXJu
ICRvdXRbMV07DQp9DQoNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gcmVtb3ZlcyBlbXB0eSB2YWx1ZXMg
ZnJvbSBhcnJheXMgLSB1c2VkIGZvciBuZXcgY3VzdG9tIGZpZWxkcw0KZnVuY3Rpb24gZ2x6
X2Fycl9lbXB0eV92YWx1ZXMoJHZhbHVlKSB7DQogIGlmICggIWVtcHR5KCR2YWx1ZSkgKQ0K
ICAgIHJldHVybiAkdmFsdWU7DQp9DQoNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gcmV0dXJucyB0aGUg
Y3VzdG9tIHNldCBmcm9tIGEgY3VzdG9tIHNldCBuYW1lIGUuZy4gIlJhdGluZyIgZ2l2ZXMg
dXMgY3VzdG9tXzFfc2V0DQpmdW5jdGlvbiBnbHpfZ2V0X2N1c3RvbV9zZXQoJHZhbHVlKSB7
DQogIGdsb2JhbCAkYWxsX2N1c3RvbV9zZXRzOw0KDQogIC8vIGdvIHRocm91Z2ggYWxsIGN1
c3RvbSBmaWVsZHMgYW5kIHNlZSBpZiB0aGUgb25lIHdlJ3JlIGxvb2tpbmcgZm9yIGV4aXN0
cw0KICBmb3JlYWNoICggJGFsbF9jdXN0b21fc2V0cyBhcyAkY3VzdG9tID0+ICRjdXN0b21f
c2V0ICkgew0KICAgIGlmICggJGN1c3RvbV9zZXRbJ25hbWUnXSA9PSAkdmFsdWUgKQ0KICAg
ICAgcmV0dXJuICRjdXN0b207DQogIH0NCiAgLy8gaWYgaXQgZG9lc24ndCwgcmV0dXJuIGVy
cm9yIG1lc3NhZ2UNCiAgdHJpZ2dlcl9lcnJvcihnbHpfY3VzdG9tX2ZpZWxkc19nVHh0KCdk
b2VzbnRfZXhpc3QnLCBhcnJheSgne2N1c3RvbV9zZXRfbmFtZX0nID0+ICR2YWx1ZSkpKTsN
Cn0NCg0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQovLyBnZXQgdGhlIGFydGljbGUgSUQsIEVWRU4gSUYgaXQn
cyBuZXdseSBzYXZlZA0KZnVuY3Rpb24gZ2x6X2dldF9hcnRpY2xlX2lkKCkgew0KICByZXR1
cm4gKCAhZW1wdHkoJEdMT0JBTFNbJ0lEJ10pID8NCiAgICAkR0xPQkFMU1snSUQnXSA6DQog
ICAgZ3BzKCdJRCcpICk7DQp9DQoNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gaGVscHMgd2l0aCByYW5n
ZSBmb3JtYXR0aW5nIC0ganVzdCBEUlkNCmZ1bmN0aW9uIGdsel9mb3JtYXRfcmFuZ2VzKCRh
cnJfdmFsdWVzLCAkY3VzdG9tX3NldF9uYW1lKSB7DQogIC8vaW5pdGlhbGl6ZSAkb3V0DQog
ICRvdXQgPSAnJzsNCiAgZm9yZWFjaCAoICRhcnJfdmFsdWVzIGFzICRrZXkgPT4gJHZhbHVl
ICkgew0KICAgICRvdXRbJGtleV0gPSAoIHN0cnN0cigkY3VzdG9tX3NldF9uYW1lLCAncmFu
Z2UnKSApID8NCiAgICAgIGdsel9jdXN0b21fZmllbGRzX3JhbmdlKCR2YWx1ZSwgJGN1c3Rv
bV9zZXRfbmFtZSkgOg0KICAgICAgJHZhbHVlOw0KICB9DQogIHJldHVybiAkb3V0Ow0KfQ0K
DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCi8vIGFjdHMgYXMgYSBjYWxsYmFjayBmb3IgdGhlIGFib3ZlIGZ1
bmN0aW9uDQpmdW5jdGlvbiBnbHpfY3VzdG9tX2ZpZWxkc19yYW5nZSgkY3VzdG9tX3ZhbHVl
LCAkY3VzdG9tX3NldF9uYW1lKSB7DQogIC8vIGxhc3QgcGFydCBvZiB0aGUgc3RyaW5nIHdp
bGwgYmUgdGhlIHJhbmdlIHVuaXQgKGUuZy4gJCwgJnBvdW5kOywgbTxzdXA+Mzwvc3VwPiBl
dGMuKQ0KICAkbm9tZW5jbGF0dXJlID0gYXJyYXlfcG9wKGV4cGxvZGUoJyAnLCAkY3VzdG9t
X3NldF9uYW1lKSk7DQoNCiAgLy8gc2VlIHdoZXRoZXIgcmFuZ2UgdW5pdCBzaG91bGQgZ28g
YWZ0ZXINCiAgaWYgKCBzdHJzdHIoJG5vbWVuY2xhdHVyZSwgJyhhZnRlciknKSApIHsNCiAg
ICAvLyB0cmltICcoYWZ0ZXIpJyBmcm9tIHRoZSBtZWFzdXJpbmcgdW5pdA0KICAgICRub21l
bmNsYXR1cmUgPSBzdWJzdHIoJG5vbWVuY2xhdHVyZSwgMCwgLTcpOw0KICAgICRhZnRlciA9
IDE7DQogIH0NCg0KICAvLyBjaGVjayB3aGV0aGVyIGl0J3MgYSByYW5nZSBvciBzaW5nbGUg
dmFsdWUNCiAgJGFycl92YWx1ZSA9IGV4cGxvZGUoJy0nLCAkY3VzdG9tX3ZhbHVlKTsNCiAg
aWYgKCBpc19hcnJheSgkYXJyX3ZhbHVlKSApIHsNCiAgICAvLyBpbml0aWFsaXplICRvdXQN
CiAgICAkb3V0ID0gJyc7DQogICAgZm9yZWFjaCAoICRhcnJfdmFsdWUgYXMgJHZhbHVlICkg
ew0KICAgICAgLy8gY2hlY2sgd2hldGhlciBub21lbmNsYXR1cmUgZ29lcyBiZWZvcmUgb3Ig
YWZ0ZXINCiAgICAgICRvdXRbXSA9ICggIWlzc2V0KCRhZnRlcikgKSA/DQogICAgICAgICRu
b21lbmNsYXR1cmUubnVtYmVyX2Zvcm1hdCgkdmFsdWUpIDoNCiAgICAgICAgbnVtYmVyX2Zv
cm1hdCgkdmFsdWUpLiRub21lbmNsYXR1cmU7DQogICAgfQ0KICAgIHJldHVybiBpbXBsb2Rl
KCctJywgJG91dCk7DQogIH0NCiAgLy8gb3VyIHJhbmdlIGlzIGEgc2luZ2xlIHZhbHVlDQog
IGVsc2Ugew0KICAgIC8vIGNoZWNrIHdoZXRoZXIgbm9tZW5jbGF0dXJlIGdvZXMgYmVmb3Jl
IG9yIGFmdGVyDQogICAgcmV0dXJuICggIWlzc2V0KCRhZnRlcikgKSA/DQogICAgICAkbm9t
ZW5jbGF0dXJlLm51bWJlcl9mb3JtYXQoJHZhbHVlKSA6DQogICAgICBudW1iZXJfZm9ybWF0
KCR2YWx1ZSkuJG5vbWVuY2xhdHVyZTsNCiAgfQ0KfQ0KDQoNCi8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIHJl
dHVybnMgdGhlIG5leHQgYXZhaWxhYmxlIG51bWJlciBmb3IgY3VzdG9tIHNldA0KZnVuY3Rp
b24gZ2x6X2N1c3RvbV9uZXh0KCRhcnJfY3VzdG9tX3NldHMpIHsNCiAgJGFycl9leHRyYV9j
dXN0b21fc2V0cyA9IGFycmF5KCk7DQogIGZvcmVhY2ggKCBhcnJheV9rZXlzKCRhcnJfY3Vz
dG9tX3NldHMpIGFzICRleHRyYV9jdXN0b21fc2V0KSB7DQogICAgJGFycl9leHRyYV9jdXN0
b21fc2V0c1tdID0gZ2x6X2N1c3RvbV9kaWdpdCgkZXh0cmFfY3VzdG9tX3NldCk7DQogIH0N
CiAgLy8gb3JkZXIgdGhlIGFycmF5DQogIHNvcnQoJGFycl9leHRyYV9jdXN0b21fc2V0cyk7
DQoNCiAgZm9yICggJGk9MDsgJGkgPCBjb3VudCgkYXJyX2V4dHJhX2N1c3RvbV9zZXRzKTsg
JGkrKyApIHsNCiAgICBpZiAoJGFycl9leHRyYV9jdXN0b21fc2V0c1skaV0gPiAkaSsxKQ0K
ICAgICAgcmV0dXJuICRpKzE7DQogIH0NCg0KICByZXR1cm4gY291bnQoJGFycl9leHRyYV9j
dXN0b21fc2V0cykrMTsNCn0NCg0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBjaGVja3MgaWYgdGhlIGN1
c3RvbSBmaWVsZCBuYW1lIGlzbid0IGFscmVhZHkgdGFrZW4NCmZ1bmN0aW9uIGdsel9jaGVj
a19jdXN0b21fc2V0X25hbWUoJGFycl9jdXN0b21fZmllbGRzLCAkY3VzdG9tX3NldF9uYW1l
LCAkY3VzdG9tX3NldD0nJykgew0KICBmb3JlYWNoICggJGFycl9jdXN0b21fZmllbGRzIGFz
ICRjdXN0b20gPT4gJGFycl9jdXN0b21fc2V0ICkgew0KICAgIGlmICggKCRjdXN0b21fc2V0
X25hbWUgPT0gJGFycl9jdXN0b21fc2V0WyduYW1lJ10pICYmICghZW1wdHkoJGN1c3RvbV9z
ZXQpICYmICRjdXN0b21fc2V0ICE9ICRjdXN0b20pICkNCiAgICAgIHJldHVybiBUUlVFOw0K
ICB9DQoNCiAgcmV0dXJuIEZBTFNFOw0KfQ0KDQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIGZvcm1hdHMg
dGhlIGN1c3RvbSBzZXQgb3V0cHV0IGJhc2VkIG9uIGl0cyB0eXBlDQpmdW5jdGlvbiBnbHpf
Zm9ybWF0X2N1c3RvbV9zZXRfYnlfdHlwZSgkY3VzdG9tLCAkY3VzdG9tX2lkLCAkY3VzdG9t
X3NldF90eXBlLCAkYXJyX2N1c3RvbV9maWVsZF92YWx1ZXMsICRjdXN0b21fdmFsdWUgPSAi
IiwgJGRlZmF1bHRfdmFsdWUgPSAiIikgew0KICBpZiAoIGlzX2FycmF5KCRhcnJfY3VzdG9t
X2ZpZWxkX3ZhbHVlcykgKQ0KICAgICRhcnJfY3VzdG9tX2ZpZWxkX3ZhbHVlcyA9IGFycmF5
X21hcCgnZ2x6X2FycmF5X3N0cmlwc2xhc2hlcycsICRhcnJfY3VzdG9tX2ZpZWxkX3ZhbHVl
cyk7DQoNCiAgc3dpdGNoICggJGN1c3RvbV9zZXRfdHlwZSApIHsNCiAgICAvLyB0aGVzZSBh
cmUgdGhlIG5vcm1hbCBjdXN0b20gZmllbGRzDQogICAgY2FzZSAidGV4dF9pbnB1dCI6DQog
ICAgICByZXR1cm4gYXJyYXkoDQogICAgICAgIGZJbnB1dCgidGV4dCIsICRjdXN0b20sICRj
dXN0b21fdmFsdWUsICJlZGl0IiwgIiIsICIiLCAiMjIiLCAiIiwgJGN1c3RvbV9pZCksDQog
ICAgICAgICdnbHpfY3VzdG9tX2ZpZWxkJw0KICAgICAgKTsNCg0KICAgIGNhc2UgInNlbGVj
dCI6DQogICAgICByZXR1cm4gYXJyYXkoDQogICAgICAgIGdsel9zZWxlY3RJbnB1dCgkY3Vz
dG9tLCAkY3VzdG9tX2lkLCAkYXJyX2N1c3RvbV9maWVsZF92YWx1ZXMsICRjdXN0b21fdmFs
dWUsICRkZWZhdWx0X3ZhbHVlKSwNCiAgICAgICAgJ2dsel9jdXN0b21fc2VsZWN0X2ZpZWxk
Jw0KICAgICAgKTsNCg0KICAgIGNhc2UgIm11bHRpLXNlbGVjdCI6DQogICAgICByZXR1cm4g
YXJyYXkoDQogICAgICAgIGdsel9zZWxlY3RJbnB1dCgkY3VzdG9tLCAkY3VzdG9tX2lkLCAk
YXJyX2N1c3RvbV9maWVsZF92YWx1ZXMsICRjdXN0b21fdmFsdWUsICRkZWZhdWx0X3ZhbHVl
LCAxKSwNCiAgICAgICAgJ2dsel9jdXN0b21fbXVsdGktc2VsZWN0X2ZpZWxkJw0KICAgICAg
KTsNCg0KICAgIGNhc2UgImNoZWNrYm94IjoNCiAgICAgIHJldHVybiBhcnJheSgNCiAgICAg
ICAgZ2x6X2NoZWNrYm94KCRjdXN0b20sICRhcnJfY3VzdG9tX2ZpZWxkX3ZhbHVlcywgJGN1
c3RvbV92YWx1ZSwgJGRlZmF1bHRfdmFsdWUpLA0KICAgICAgICAnZ2x6X2N1c3RvbV9jaGVj
a2JveF9maWVsZCcNCiAgICAgICk7DQoNCiAgICBjYXNlICJyYWRpbyI6DQogICAgICByZXR1
cm4gYXJyYXkoDQogICAgICAgIGdsel9yYWRpbygkY3VzdG9tLCAkY3VzdG9tX2lkLCAkYXJy
X2N1c3RvbV9maWVsZF92YWx1ZXMsICRjdXN0b21fdmFsdWUsICRkZWZhdWx0X3ZhbHVlKSwN
CiAgICAgICAgJ2dsel9jdXN0b21fcmFkaW9fZmllbGQnDQogICAgICApOw0KDQogICAgY2Fz
ZSAidGV4dGFyZWEiOg0KICAgICAgcmV0dXJuIGFycmF5KA0KICAgICAgICB0ZXh0X2FyZWEo
JGN1c3RvbSwgMTAwLCA1MDAsICRjdXN0b21fdmFsdWUsICRjdXN0b21faWQpLA0KICAgICAg
ICAnZ2x6X3RleHRfYXJlYV9maWVsZCcNCiAgICAgICk7DQoNCiAgICAvLyBoZXJlIHN0YXJ0
IHRoZSBzcGVjaWFsIGN1c3RvbSBmaWVsZHMsIG1pZ2h0IG5lZWQgdG8gcmVmYWN0b3IgdGhl
IHJldHVybiwgc3RhcnRpbmcgdG8gcmVwZWF0IGl0c2VsZg0KICAgIGNhc2UgImRhdGUtcGlj
a2VyIjoNCiAgICAgIHJldHVybiBhcnJheSgNCiAgICAgICAgZklucHV0KCJ0ZXh0IiwgJGN1
c3RvbSwgJGN1c3RvbV92YWx1ZSwgImVkaXQgZGF0ZS1waWNrZXIiLCAiIiwgIiIsICIyMiIs
ICIiLCAkY3VzdG9tX2lkKSwNCiAgICAgICAgJ2dsel9jdXN0b21fZGF0ZS1waWNrZXJfZmll
bGQgY2xlYXJmaXgnDQogICAgICApOw0KDQogICAgY2FzZSAidGltZS1waWNrZXIiOg0KICAg
ICAgcmV0dXJuIGFycmF5KA0KICAgICAgICBmSW5wdXQoInRleHQiLCAkY3VzdG9tLCAkY3Vz
dG9tX3ZhbHVlLCAiZWRpdCB0aW1lLXBpY2tlciIsICIiLCAiIiwgIjIyIiwgIiIsICRjdXN0
b21faWQpLA0KICAgICAgICAnZ2x6X2N1c3RvbV90aW1lLXBpY2tlcl9maWVsZCcNCiAgICAg
ICk7DQoNCiAgICBjYXNlICJjdXN0b20tc2NyaXB0IjoNCiAgICAgIGdsb2JhbCAkY3VzdG9t
X3NjcmlwdHNfcGF0aDsNCiAgICAgIHJldHVybiBhcnJheSgNCiAgICAgICAgZ2x6X2N1c3Rv
bV9zY3JpcHQoJGN1c3RvbV9zY3JpcHRzX3BhdGguIi8iLnJlc2V0KCRhcnJfY3VzdG9tX2Zp
ZWxkX3ZhbHVlcyksICRjdXN0b20sICRjdXN0b21faWQsICRjdXN0b21fdmFsdWUpLA0KICAg
ICAgICAnZ2x6X2N1c3RvbV9maWVsZF9zY3JpcHQnDQogICAgICApOw0KDQogICAgLy8gYSB0
eXBlIGhhcyBiZWVuIHBhc3NlZCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgeWV0DQogICAgZGVm
YXVsdDoNCiAgICAgIHJldHVybiBhcnJheSgNCiAgICAgICAgZ2x6X2N1c3RvbV9maWVsZHNf
Z1R4dCgndHlwZV9ub3Rfc3VwcG9ydGVkJyksDQogICAgICAgICdnbHpfY3VzdG9tX2ZpZWxk
Jw0KICAgICAgKTsNCiAgfQ0KfQ0KDQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIGhhZCB0byBkdXBsaWNh
dGUgdGhlIGRlZmF1bHQgc2VsZWN0SW5wdXQoKSBiZWNhdXNlIHRyaW1taW5nIFx0IGFuZCBc
biBkaWRuJ3Qgd29yayArIHNvbWUgb3RoZXIgbW9kcyAmIG11bHRpLXNlbGVjdA0KZnVuY3Rp
b24gZ2x6X3NlbGVjdElucHV0KCRuYW1lID0gJycsICRpZCA9ICcnLCAkYXJyX3ZhbHVlcyA9
ICcnLCAkY3VzdG9tX3ZhbHVlID0gJycsICRkZWZhdWx0X3ZhbHVlID0gJycsICRtdWx0aSA9
ICcnKSB7DQogIGlmICggaXNfYXJyYXkoJGFycl92YWx1ZXMpICkgew0KICAgIGdsb2JhbCAk
cHJlZnM7DQogICAgJG91dCA9IGFycmF5KCk7DQoNCiAgICAvLyBpZiB0aGVyZSBpcyBubyBj
dXN0b21fdmFsdWUgY29taW5nIGZyb20gdGhlIGFydGljbGUsIGxldCdzIHVzZSBvdXIgZGVm
YXVsdCBvbmUNCiAgICBpZiAoIGVtcHR5KCRjdXN0b21fdmFsdWUpICkNCiAgICAgICRjdXN0
b21fdmFsdWUgPSAkZGVmYXVsdF92YWx1ZTsNCg0KICAgIGZvcmVhY2ggKCRhcnJfdmFsdWVz
IGFzICRrZXkgPT4gJHZhbHVlKSB7DQogICAgICAkc2VsZWN0ZWQgPSBnbHpfc2VsZWN0ZWRf
Y2hlY2tlZCgnc2VsZWN0ZWQnLCAka2V5LCAkY3VzdG9tX3ZhbHVlLCAkZGVmYXVsdF92YWx1
ZSk7DQogICAgICAkb3V0W10gPSAiPG9wdGlvbiB2YWx1ZT1cIiRrZXlcInskc2VsZWN0ZWR9
PiR2YWx1ZTwvb3B0aW9uPiI7DQogICAgfQ0KDQogICAgLy8gd2UnbGwgbmVlZCB0aGUgZXh0
cmEgYXR0cmlidXRlcyBhcyB3ZWxsIGFzIGEgbmFtZSB0aGF0IHdpbGwgcHJvZHVjZSBhbiBh
cnJheQ0KICAgIGlmICgkbXVsdGkpIHsNCiAgICAgICRtdWx0aSA9ICcgbXVsdGlwbGU9Im11
bHRpcGxlIiBzaXplPSInLiRwcmVmc1snbXVsdGlzZWxlY3Rfc2l6ZSddLiciJzsNCiAgICAg
ICRuYW1lIC49ICJbXSI7DQogICAgfQ0KDQogICAgcmV0dXJuICI8c2VsZWN0IGlkPVwiIi5n
bHpfaWRpZnkoJGlkKS4iXCIgbmFtZT1cIiRuYW1lXCIgY2xhc3M9XCJsaXN0XCIkbXVsdGk+
Ii4NCiAgICAgICgkZGVmYXVsdF92YWx1ZSA/ICcnIDogIjxvcHRpb24gdmFsdWU9XCJcIiRz
ZWxlY3RlZD4mbmJzcDs8L29wdGlvbj4iKS4NCiAgICAgICggJG91dCA/IGpvaW4oJycsICRv
dXQpIDogJycpLg0KICAgICAgIjwvc2VsZWN0PiI7DQogIH0NCiAgZWxzZQ0KICAgIHJldHVy
biBnbHpfY3VzdG9tX2ZpZWxkc19nVHh0KCdmaWVsZF9wcm9ibGVtcycsIGFycmF5KCd7Y3Vz
dG9tX3NldF9uYW1lfScgPT4gJG5hbWUpKTsNCn0NCg0KDQovLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBoYWQg
dG8gZHVwbGljYXRlIHRoZSBkZWZhdWx0IGNoZWNrYm94KCkgdG8ga2VlcCB0aGUgbG9vcGlu
ZyBpbiBoZXJlIGFuZCBjaGVjayBhZ2FpbnN0IGV4aXN0aW5nIHZhbHVlL3MNCmZ1bmN0aW9u
IGdsel9jaGVja2JveCgkbmFtZSA9ICcnLCAkYXJyX3ZhbHVlcyA9ICcnLCAkY3VzdG9tX3Zh
bHVlID0gJycsICRkZWZhdWx0X3ZhbHVlID0gJycpIHsNCiAgaWYgKCBpc19hcnJheSgkYXJy
X3ZhbHVlcykgKSB7DQogICAgJG91dCA9IGFycmF5KCk7DQoNCiAgICAvLyBpZiB0aGVyZSBp
cyBubyBjdXN0b21fdmFsdWUgY29taW5nIGZyb20gdGhlIGFydGljbGUsIGxldCdzIHVzZSBv
dXIgZGVmYXVsdCBvbmUNCiAgICBpZiAoIGVtcHR5KCRjdXN0b21fdmFsdWUpICkNCiAgICAg
ICRjdXN0b21fdmFsdWUgPSAkZGVmYXVsdF92YWx1ZTsNCg0KICAgIGZvcmVhY2ggKCAkYXJy
X3ZhbHVlcyBhcyAka2V5ID0+ICR2YWx1ZSApIHsNCiAgICAgICRjaGVja2VkID0gZ2x6X3Nl
bGVjdGVkX2NoZWNrZWQoJ2NoZWNrZWQnLCAka2V5LCAkY3VzdG9tX3ZhbHVlKTsNCg0KICAg
ICAgLy8gUHV0dGluZyBhbiBhZGRpdGlvbmFsIHNwYW4gYXJvdW5kIHRoZSBpbnB1dCBhbmQg
bGFiZWwgY29tYmluYXRpb24gc28gdGhlIHR3byBjYW4gYmUgZmxvYXRlZCB0b2dldGhlciBh
cyBhIHBhaXIgZm9yIGxlZnQtcmlnaHQsIGxlZnQtcmlnaHQsLi4uIGFycmFuZ2VtZW50IG9m
IGNoZWNrYm94ZXMgYW5kIHJhZGlvIGJ1dHRvbnMuIFRoYW5rcyBKdWxpYW4hDQogICAgICAk
b3V0W10gPSAiPHNwYW4+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJ7JG5hbWV9
W11cIiB2YWx1ZT1cIiRrZXlcIiBjbGFzcz1cImNoZWNrYm94XCIgaWQ9XCIiLmdsel9pZGlm
eSgka2V5KS4iXCJ7JGNoZWNrZWR9IC8+PGxhYmVsIGZvcj1cIiIuZ2x6X2lkaWZ5KCRrZXkp
LiJcIj4kdmFsdWU8L2xhYmVsPjwvc3Bhbj48YnIgLz4iOw0KICAgIH0NCg0KICAgIHJldHVy
biBqb2luKCcnLCAkb3V0KTsNCiAgfQ0KICBlbHNlDQogICAgcmV0dXJuIGdsel9jdXN0b21f
ZmllbGRzX2dUeHQoJ2ZpZWxkX3Byb2JsZW1zJywgYXJyYXkoJ3tjdXN0b21fc2V0X25hbWV9
JyA9PiAkbmFtZSkpOw0KfQ0KDQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIGhhZCB0byBkdXBsaWNhdGUg
dGhlIGRlZmF1bHQgcmFkaW8oKSB0byBrZWVwIHRoZSBsb29waW5nIGluIGhlcmUgYW5kIGNo
ZWNrIGFnYWluc3QgZXhpc3RpbmcgdmFsdWUvcw0KZnVuY3Rpb24gZ2x6X3JhZGlvKCRuYW1l
ID0gJycsICRpZCA9ICcnLCAkYXJyX3ZhbHVlcyA9ICcnLCAkY3VzdG9tX3ZhbHVlID0gJycs
ICRkZWZhdWx0X3ZhbHVlID0gJycpIHsNCiAgaWYgKCBpc19hcnJheSgkYXJyX3ZhbHVlcykg
KSB7DQogICAgJG91dCA9IGFycmF5KCk7DQoNCiAgICAvLyBpZiB0aGVyZSBpcyBubyBjdXN0
b21fdmFsdWUgY29taW5nIGZyb20gdGhlIGFydGljbGUsIGxldCdzIHVzZSBvdXIgZGVmYXVs
dCBvbmUNCiAgICBpZiAoIGVtcHR5KCRjdXN0b21fdmFsdWUpICkNCiAgICAgICRjdXN0b21f
dmFsdWUgPSAkZGVmYXVsdF92YWx1ZTsNCg0KICAgIGZvcmVhY2ggKCAkYXJyX3ZhbHVlcyBh
cyAka2V5ID0+ICR2YWx1ZSApIHsNCiAgICAgICRjaGVja2VkID0gZ2x6X3NlbGVjdGVkX2No
ZWNrZWQoJ2NoZWNrZWQnLCAka2V5LCAkY3VzdG9tX3ZhbHVlKTsNCg0KICAgICAgLy8gUHV0
dGluZyBhbiBhZGRpdGlvbmFsIHNwYW4gYXJvdW5kIHRoZSBpbnB1dCBhbmQgbGFiZWwgY29t
YmluYXRpb24gc28gdGhlIHR3byBjYW4gYmUgZmxvYXRlZCB0b2dldGhlciBhcyBhIHBhaXIg
Zm9yIGxlZnQtcmlnaHQsIGxlZnQtcmlnaHQsLi4uIGFycmFuZ2VtZW50IG9mIGNoZWNrYm94
ZXMgYW5kIHJhZGlvIGJ1dHRvbnMuIFRoYW5rcyBKdWxpYW4hDQogICAgICAkb3V0W10gPSAi
PHNwYW4+PGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCIkbmFtZVwiIHZhbHVlPVwiJGtl
eVwiIGNsYXNzPVwicmFkaW9cIiBpZD1cInskaWR9XyIuZ2x6X2lkaWZ5KCRrZXkpLiJcInsk
Y2hlY2tlZH0gLz48bGFiZWwgZm9yPVwieyRpZH1fIi5nbHpfaWRpZnkoJGtleSkuIlwiPiR2
YWx1ZTwvbGFiZWw+PC9zcGFuPjxiciAvPiI7DQogICAgfQ0KDQogICAgcmV0dXJuIGpvaW4o
JycsICRvdXQpOw0KICB9DQogIGVsc2UNCiAgICByZXR1cm4gZ2x6X2N1c3RvbV9maWVsZHNf
Z1R4dCgnZmllbGRfcHJvYmxlbXMnLCBhcnJheSgne2N1c3RvbV9zZXRfbmFtZX0nID0+ICRu
YW1lKSk7DQp9DQoNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gY2hlY2tpbmcgaWYgdGhpcyBjdXN0b20g
ZmllbGQgaGFzIHNlbGVjdGVkIG9yIGNoZWNrZWQgdmFsdWVzDQpmdW5jdGlvbiBnbHpfc2Vs
ZWN0ZWRfY2hlY2tlZCgkbm9tZW5jbGF0dXJlLCAkdmFsdWUsICRjdXN0b21fdmFsdWUgPSAn
Jykgew0KICAvLyB3ZSdyZSBjb21wYXJpbmcgYWdhaW5zdCBhIGtleSB3aGljaCBpcyBhICJj
bGVhbiIgdmFsdWUNCiAgJGN1c3RvbV92YWx1ZSA9IGh0bWxzcGVjaWFsY2hhcnMoJGN1c3Rv
bV92YWx1ZSk7DQoNCiAgLy8gbWFrZSBhbiBhcnJheSBpZiAkY3VzdG9tX3ZhbHVlIGNvbnRh
aW5zIG11bHRpcGxlIHZhbHVlcw0KICBpZiAoIHN0cnBvcygkY3VzdG9tX3ZhbHVlLCAnfCcp
ICkNCiAgICAkYXJyX2N1c3RvbV92YWx1ZSA9IGV4cGxvZGUoJ3wnLCAkY3VzdG9tX3ZhbHVl
KTsNCg0KICBpZiAoIGlzc2V0KCRhcnJfY3VzdG9tX3ZhbHVlKSApDQogICAgJG91dCA9ICgg
aW5fYXJyYXkoJHZhbHVlLCAkYXJyX2N1c3RvbV92YWx1ZSkgKSA/ICIgJG5vbWVuY2xhdHVy
ZT1cIiRub21lbmNsYXR1cmVcIiIgOiAiIjsNCiAgZWxzZQ0KICAgICRvdXQgPSAoJHZhbHVl
ID09ICRjdXN0b21fdmFsdWUpID8gIiAkbm9tZW5jbGF0dXJlPVwiJG5vbWVuY2xhdHVyZVwi
IiA6ICIiOw0KDQogIHJldHVybiAkb3V0Ow0KfQ0KDQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gYnV0dG9u
IGdldHMgbW9yZSBjb25zaXN0ZW50IHN0eWxpbmcgYWNyb3NzIGJyb3dzZXJzIHJhdGhlciB0
aGFuIGlucHV0IHR5cGU9InN1Ym1pdCINCi8vIGluY2x1ZGVkIGluIHRoaXMgcGx1Z2luIHVu
dGlsIGluIG1ha2VzIGl0IGludG8gVFhQIC0gaWYgdGhhdCBldmVyIGhhcHBlbnMuLi4NCmZ1
bmN0aW9uIGdsel9mQnV0dG9uKCR0eXBlLCAkbmFtZSwgJGNvbnRlbnRzPSdTdWJtaXQnLCAk
dmFsdWUsICRjbGFzcz0nJywgJGlkPScnLCAkdGl0bGU9JycsICRvbkNsaWNrPScnLCAkZGlz
YWJsZWQgPSBmYWxzZSkgew0KICAkbyAgPSAnPGJ1dHRvbiB0eXBlPSInLiR0eXBlLiciIG5h
bWU9IicuJG5hbWUuJyInOw0KICAkbyAuPSAnIHZhbHVlPSInLmh0bWxzcGVjaWFsY2hhcnMo
JHZhbHVlKS4nIic7DQogICRvIC49ICgkY2xhc3MpICAgID8gJyBjbGFzcz0iJy4kY2xhc3Mu
JyInIDogJyc7DQogICRvIC49ICgkaWQpICAgICAgID8gJyBpZD0iJy4kaWQuJyInIDogJyc7
DQogICRvIC49ICgkdGl0bGUpICAgID8gJyB0aXRsZT0iJy4kdGl0bGUuJyInIDogJyc7DQog
ICRvIC49ICgkb25DbGljaykgID8gJyBvbmNsaWNrPSInLiRvbkNsaWNrLiciJyA6ICcnOw0K
ICAkbyAuPSAoJGRpc2FibGVkKSA/ICcgZGlzYWJsZWQ9ImRpc2FibGVkIicgOiAnJzsNCiAg
JG8gLj0gJz4nOw0KICAkbyAuPSAkY29udGVudHM7DQogICRvIC49ICc8L2J1dHRvbj4nOw0K
ICByZXR1cm4gJG87DQp9DQoNCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBldmFscyBhIFBIUCBzY3JpcHQg
YW5kIGRpc3BsYXlzIG91dHB1dCByaWdodCB1bmRlciB0aGUgY3VzdG9tIGZpZWxkIGxhYmVs
DQpmdW5jdGlvbiBnbHpfY3VzdG9tX3NjcmlwdCgkc2NyaXB0LCAkY3VzdG9tLCAkY3VzdG9t
X2lkLCAkY3VzdG9tX3ZhbHVlKSB7DQogIGlmICggaXNfZmlsZSgkc2NyaXB0KSApIHsNCiAg
ICBpbmNsdWRlX29uY2UoJHNjcmlwdCk7DQogICAgJGN1c3RvbV9mdW5jdGlvbiA9IGJhc2Vu
YW1lKCRzY3JpcHQsICIucGhwIik7DQogICAgaWYgKCBpc19jYWxsYWJsZSgkY3VzdG9tX2Z1
bmN0aW9uKSApIHsNCiAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuY19hcnJheSgkY3VzdG9t
X2Z1bmN0aW9uLCBhcnJheSgkY3VzdG9tLCAkY3VzdG9tX2lkLCAkY3VzdG9tX3ZhbHVlKSk7
DQogICAgfQ0KICAgIGVsc2UNCiAgICAgIHJldHVybiBnbHpfY3VzdG9tX2ZpZWxkc19nVHh0
KCdub3RfY2FsbGFibGUnLCBhcnJheSgne2Z1bmN0aW9ufScgPT4gJGN1c3RvbV9mdW5jdGlv
biwgJ3tmaWxlfScgPT4gJHNjcmlwdCkpOw0KICB9DQogIGVsc2UNCiAgICByZXR1cm4gZ2x6
X2N1c3RvbV9maWVsZHNfZ1R4dCgnbm90X2ZvdW5kJywgYXJyYXkoJ3tmaWxlfScgPT4gJHNj
cmlwdCkpOw0KDQp9DQoNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gUEhQNCBkb2Vzbid0IGNvbWUgd2l0
aCBhcnJheV9jb21iaW5lLi4uIFRoYW5rIHlvdSByZWRib3QhDQpmdW5jdGlvbiBwaHA0X2Fy
cmF5X2NvbWJpbmUoJGtleXMsICR2YWx1ZXMpIHsNCiAgJHJlc3VsdCA9IGFycmF5KCk7IC8v
IGluaXRpYWxpemluZyB0aGUgYXJyYXkNCg0KICBmb3JlYWNoICggYXJyYXlfbWFwKG51bGws
ICRrZXlzLCAkdmFsdWVzKSBhcyAkcGFpciApIHsNCiAgICAkcmVzdWx0WyRwYWlyWzBdXSA9
ICRwYWlyWzFdOw0KICB9DQoNCiAgcmV0dXJuICRyZXN1bHQ7DQp9DQoNCg0KLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KLy8gY29udmVydHMgYWxsIHZhbHVlcyBpbnRvIGlkIHNhZmUgb25lcw0KZnVuY3Rpb24g
Z2x6X2lkaWZ5KCR2YWx1ZSkgew0KICAkcGF0dGVybnNbMF0gPSAiL1xzLyI7DQogICRyZXBs
YWNlbWVudHNbMF0gPSAiLSI7DQogICRwYXR0ZXJuc1sxXSA9ICIvW15hLXpBLVowLTlcLV0v
IjsNCiAgJHJlcGxhY2VtZW50c1sxXSA9ICIiOw0KDQogIHJldHVybiBwcmVnX3JlcGxhY2Uo
JHBhdHRlcm5zLCAkcmVwbGFjZW1lbnRzLCBzdHJ0b2xvd2VyKCR2YWx1ZSkpOw0KfQ0KDQoN
Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCi8vIHN0cmlwcyBzbGFzaGVzIGluIGFycmF5cywgdXNlZCBpbiBjb25q
dWN0aW9uIHdpdGggZS5nLiBhcnJheV9tYXANCmZ1bmN0aW9uIGdsel9hcnJheV9zdHJpcHNs
YXNoZXMoJiR2YWx1ZSkgew0KICByZXR1cm4gc3RyaXBzbGFzaGVzKCR2YWx1ZSk7DQp9DQoN
Cg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KLy8gcmV0dXJucyBhbGwgc2VjdGlvbnMvY2F0ZWdvcmllcyB0aGF0
IGFyZSBzZWFyY2hhYmxlDQpmdW5jdGlvbiBnbHpfYWxsX3NlYXJjaGFibGVfc2VjdGlvbnNf
Y2F0ZWdvcmllcygkdHlwZSkgew0KICAkdHlwZSA9IChpbl9hcnJheSgkdHlwZSwgYXJyYXko
J2NhdGVnb3J5JywgJ3NlY3Rpb24nKSkgPyAkdHlwZSA6ICdzZWN0aW9uJyk7DQogICRjb25k
aXRpb24gPSAiIjsNCg0KICBpZiAoICR0eXBlID09ICJzZWN0aW9uIiApDQogICAgJGNvbmRp
dGlvbiAuPSAic2VhcmNoYWJsZT0nMSciOw0KICBlbHNlDQogICAgJGNvbmRpdGlvbiAuPSAi
bmFtZSA8PiAncm9vdCcgQU5EIHR5cGU9J2FydGljbGUnIjsNCg0KICAkcmVzdWx0ID0gc2Fm
ZV9yb3dzKCcqJywgInR4cF97JHR5cGV9IiwgJGNvbmRpdGlvbik7DQoNCiAgJG91dCA9IGFy
cmF5KCk7DQogIGZvcmVhY2ggKCRyZXN1bHQgYXMgJHZhbHVlKSB7DQogICAgJG91dFskdmFs
dWVbJ25hbWUnXV0gPSAkdmFsdWVbJ3RpdGxlJ107DQogIH0NCg0KICByZXR1cm4gJG91dDsN
Cn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KLy8gd2lsbCBsZWF2ZSBvbmx5IFtBLVphLXowLTkgXSBpbiB0
aGUgc3RyaW5nDQpmdW5jdGlvbiBnbHpfY2xlYW5fc3RyaW5nKCRzdHJpbmcpIHsNCiAgaWYg
KCRzdHJpbmcpDQogICAgcmV0dXJuIHByZWdfcmVwbGFjZSgnL1teQS1aYS16MC05XHNcX1wt
XS8nLCAnJywgJHN0cmluZyk7DQp9DQoNCg0KDQoNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gcmVwbGFj
ZXMgdGhlIGRlZmF1bHQgY3VzdG9tIGZpZWxkcyB1bmRlciB3cml0ZSB0YWINCmZ1bmN0aW9u
IGdsel9jdXN0b21fZmllbGRzX3JlcGxhY2UoJGV2ZW50LCAkc3RlcCwgJGRhdGEsICRycykg
ew0KICBnbG9iYWwgJGFsbF9jdXN0b21fc2V0cywgJGRhdGVfcGlja2VyOw0KICAvLyBnZXQg
YWxsIGN1c3RvbSBmaWVsZHMgJiBrZWVwIG9ubHkgdGhlIG9uZXMgd2hpY2ggYXJlIHNldCwg
ZmlsdGVyIGJ5IHN0ZXANCiAgJGFycl9jdXN0b21fZmllbGRzID0gZ2x6X2NoZWNrX2N1c3Rv
bV9zZXQoJGFsbF9jdXN0b21fc2V0cywgJHN0ZXApOw0KDQogIC8vIERFQlVHDQogIC8vIGRt
cCgkYXJyX2N1c3RvbV9maWVsZHMpOw0KDQogICRvdXQgPSAnICc7DQoNCiAgaWYgKCBpc19h
cnJheSgkYXJyX2N1c3RvbV9maWVsZHMpICYmICFlbXB0eSgkYXJyX2N1c3RvbV9maWVsZHMp
ICkgew0KICAgIC8vIGdldCBhbGwgY3VzdG9tIGZpZWxkcyB2YWx1ZXMgZm9yIHRoaXMgYXJ0
aWNsZQ0KICAgICRhcnJfYXJ0aWNsZV9jdXN0b21zID0gZ2x6X2N1c3RvbV9maWVsZHNfTXlT
UUwoImFydGljbGVfY3VzdG9tcyIsIGdsel9nZXRfYXJ0aWNsZV9pZCgpLCAnJywgJGFycl9j
dXN0b21fZmllbGRzKTsNCg0KICAgIC8vIERFQlVHDQogICAgLy8gZG1wKCRhcnJfYXJ0aWNs
ZV9jdXN0b21zKTsNCg0KICAgIGlmICggaXNfYXJyYXkoJGFycl9hcnRpY2xlX2N1c3RvbXMp
ICkNCiAgICAgIGV4dHJhY3QoJGFycl9hcnRpY2xlX2N1c3RvbXMpOw0KDQogICAgLy8gbGV0
J3Mgc2VlIHdoaWNoIGN1c3RvbSBmaWVsZHMgYXJlIHNldA0KICAgIGZvcmVhY2ggKCAkYXJy
X2N1c3RvbV9maWVsZHMgYXMgJGN1c3RvbSA9PiAkY3VzdG9tX3NldCApIHsNCiAgICAgIC8v
IGdldCBhbGwgcG9zc2libGUvZGVmYXVsdCB2YWx1ZShzKSBmb3IgdGhpcyBjdXN0b20gc2V0
IGZyb20gY3VzdG9tX2ZpZWxkcyB0YWJsZQ0KICAgICAgJGFycl9jdXN0b21fZmllbGRfdmFs
dWVzID0gZ2x6X2N1c3RvbV9maWVsZHNfTXlTUUwoInZhbHVlcyIsICRjdXN0b20sICcnLCBh
cnJheSgnY3VzdG9tX3NldF9uYW1lJyA9PiAkY3VzdG9tX3NldFsnbmFtZSddKSk7DQoNCiAg
ICAgIC8vIERFQlVHDQogICAgICAvLyBkbXAoJGFycl9jdXN0b21fZmllbGRfdmFsdWVzKTsN
Cg0KICAgICAgLy9jdXN0b21fc2V0IGZvcm1hdHRlZCBmb3IgaWQgZS5nLiBjdXN0b21fMV9z
ZXQgPT4gY3VzdG9tLTEgLSBkb24ndCBhc2suLi4NCiAgICAgICRjdXN0b21faWQgPSBnbHpf
Y3VzdG9tX251bWJlcigkY3VzdG9tLCAiLSIpOw0KICAgICAgLy9jdXN0b21fc2V0IHdpdGhv
dXQgIl9zZXQiIGUuZy4gY3VzdG9tXzFfc2V0ID0+IGN1c3RvbV8xDQogICAgICAkY3VzdG9t
ID0gZ2x6X2N1c3RvbV9udW1iZXIoJGN1c3RvbSk7DQoNCiAgICAgIC8vIGlmIGN1cnJlbnQg
YXJ0aWNsZSBob2xkcyBubyB2YWx1ZSBmb3IgdGhpcyBjdXN0b20gZmllbGQgYW5kIHdlIGhh
dmUgbm8gZGVmYXVsdCB2YWx1ZSwgbWFrZSBpdCBlbXB0eQ0KICAgICAgJGN1c3RvbV92YWx1
ZSA9ICghZW1wdHkoJCRjdXN0b20pID8gJCRjdXN0b20gOiAnJyk7DQogICAgICAvLyBERUJV
Rw0KICAgICAgLy8gZG1wKCJjdXN0b21fdmFsdWU6IHskY3VzdG9tX3ZhbHVlfSIpOw0KDQog
ICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhIGRlZmF1bHQgdmFsdWUNCiAgICAgIC8vIGlm
IHRoZXJlIGlzLCBzdHJpcCB0aGUgeyB9DQogICAgICAkZGVmYXVsdF92YWx1ZSA9IGdsel9y
ZXR1cm5fY2xlYW5fZGVmYXVsdChnbHpfZGVmYXVsdF92YWx1ZSgkYXJyX2N1c3RvbV9maWVs
ZF92YWx1ZXMpKTsNCiAgICAgIC8vIERFQlVHDQogICAgICAvLyBkbXAoImRlZmF1bHRfdmFs
dWU6IHskZGVmYXVsdF92YWx1ZX0iKTsNCg0KICAgICAgLy8gbm93IHRoYXQgd2UndmUgZm91
bmQgb3VyIGRlZmF1bHQsIHdlIG5lZWQgdG8gY2xlYW4gb3VyIGN1c3RvbV9maWVsZCB2YWx1
ZXMNCiAgICAgIGlmIChpc19hcnJheSgkYXJyX2N1c3RvbV9maWVsZF92YWx1ZXMpKQ0KICAg
ICAgICBhcnJheV93YWxrKCRhcnJfY3VzdG9tX2ZpZWxkX3ZhbHVlcywgImdsel9jbGVhbl9k
ZWZhdWx0X2FycmF5X3ZhbHVlcyIpOw0KDQogICAgICAvLyBERUJVRw0KICAgICAgLy8gZG1w
KCRhcnJfY3VzdG9tX2ZpZWxkX3ZhbHVlcyk7DQoNCiAgICAgIC8vIHRoZSB3YXkgb3VyIGN1
c3RvbSBmaWVsZCB2YWx1ZSBpcyBnb2luZyB0byBsb29rIGxpa2UNCiAgICAgIGxpc3QoJGN1
c3RvbV9zZXRfdmFsdWUsICRjdXN0b21fY2xhc3MpID0gZ2x6X2Zvcm1hdF9jdXN0b21fc2V0
X2J5X3R5cGUoJGN1c3RvbSwgJGN1c3RvbV9pZCwgJGN1c3RvbV9zZXRbJ3R5cGUnXSwgJGFy
cl9jdXN0b21fZmllbGRfdmFsdWVzLCAkY3VzdG9tX3ZhbHVlLCAkZGVmYXVsdF92YWx1ZSk7
DQoNCiAgICAgIC8vIERFQlVHDQogICAgICAvLyBkbXAoJGN1c3RvbV9zZXRfdmFsdWUpOw0K
DQogICAgICAkb3V0IC49IGdyYWYoDQogICAgICAgICI8bGFiZWwgZm9yPVwiJGN1c3RvbV9p
ZFwiPnskY3VzdG9tX3NldFsnbmFtZSddfTwvbGFiZWw+PGJyIC8+JGN1c3RvbV9zZXRfdmFs
dWUiLCAiIGNsYXNzPVwiJGN1c3RvbV9jbGFzc1wiIg0KICAgICAgKTsNCiAgICB9DQogIH0N
Cg0KICAvLyBERUJVRw0KICAvLyBkbXAoJG91dCk7DQoNCiAgLy8gaWYgd2UncmUgd3JpdGlu
ZyB0ZXh0YXJlYSBjdXN0b20gZmllbGRzLCB3ZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGV4Y2Vy
cHQgYXMgd2VsbA0KICBpZiAoJHN0ZXAgPT0gImJvZHkiKSB7DQogICAgJG91dCA9ICRkYXRh
LiRvdXQ7DQogIH0NCg0KICByZXR1cm4gJG91dDsNCn0NCg0KDQovLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBw
cmVwIG91ciBjdXN0b20gZmllbGRzIGZvciB0aGUgZGIgKHdhdGNoIG91dCBmb3IgbXVsdGkt
c2VsZWN0cywgY2hlY2tib3hlcyAmIHJhZGlvcywgdGhleSBtaWdodCBoYXZlIG11bHRpcGxl
IHZhbHVlcykNCmZ1bmN0aW9uIGdsel9jdXN0b21fZmllbGRzX2JlZm9yZV9zYXZlKCkgew0K
ICAvLyBrZWVwIG9ubHkgdGhlIGN1c3RvbSBmaWVsZHMNCiAgZm9yZWFjaCAoJF9QT1NUIGFz
ICRrZXkgPT4gJHZhbHVlKSB7DQogICAgLy9jaGVjayBmb3IgY3VzdG9tIGZpZWxkcyB3aXRo
IG11bHRpcGxlIHZhbHVlcyBlLmcuIGFycmF5cw0KICAgIGlmICggc3Ryc3RyKCRrZXksICdj
dXN0b21fJykgJiYgaXNfYXJyYXkoJHZhbHVlKSApIHsNCiAgICAgICR2YWx1ZSA9IGltcGxv
ZGUoJHZhbHVlLCAnfCcpOw0KICAgICAgLy8gZmVlZCBvdXIgY3VzdG9tIGZpZWxkcyBiYWNr
IGludG8gdGhlICRfUE9TVA0KICAgICAgJF9QT1NUWyRrZXldID0gJHZhbHVlOw0KICAgIH0N
CiAgfQ0KICAvLyBERUJVRw0KICAvLyBkbXAoJF9QT1NUKTsNCn0NCg0KDQovLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQovLyBhZGRzIHRoZSBjc3MgJiBqcyB3ZSBuZWVkDQpmdW5jdGlvbiBnbHpfY3VzdG9tX2Zp
ZWxkc19jc3NfanMoKSB7DQogIGdsb2JhbCAkZ2x6X25vdGljZSwgJGRhdGVfcGlja2VyLCAk
dGltZV9waWNrZXIsICRwcmVmczsNCg0KICAvLyBoZXJlIGNvbWUgb3VyIGN1c3RvbSBzdHls
ZXNoZWV0eg0KICAkY3NzID0gJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9j
c3MiIG1lZGlhPSJhbGwiIGhyZWY9Ii9wbHVnaW5zL2dsel9jdXN0b21fZmllbGRzL2dsel9j
dXN0b21fZmllbGRzLmNzcyI+Jy5uOw0KICAvLyBhbmQgaGVyZSBjb21lIG91ciBqYXZhc2Ny
aXB0eg0KICAkanMgPSAnJzsNCiAgaWYgKCAkZGF0ZV9waWNrZXIgKSB7DQogICAgJGNzcyAu
PSAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIg
aHJlZj0iJy4kcHJlZnNbJ2RhdGVwaWNrZXJfdXJsJ10uJy9kYXRlUGlja2VyLmNzcyIgLz4n
Lm47DQogICAgZm9yZWFjaCAoYXJyYXkoJ2RhdGUuanMnLCAnZGF0ZVBpY2tlci5qcycpIGFz
ICRmaWxlKSB7DQogICAgICAkanMgLj0gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IicuJHByZWZzWydkYXRlcGlja2VyX3VybCddLiIvIi4kZmlsZS4nIj48L3Njcmlw
dD4nLm47DQogICAgfQ0KICAgICRqcyAuPSA8PDxFT0YNCjxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4NCiQoZnVuY3Rpb24oKSB7DQogIGlmICgkKCIuZGF0ZS1waWNrZXIiKS5s
ZW5ndGggPiAwKSB7DQogICAgdHJ5IHsNCiAgICAgIERhdGUuZmlyc3REYXlPZldlZWsgPSB7
JHByZWZzWydkYXRlcGlja2VyX2ZpcnN0X2RheSddfTsNCiAgICAgIERhdGUuZm9ybWF0ID0g
J3skcHJlZnNbJ2RhdGVwaWNrZXJfZm9ybWF0J119JzsNCiAgICAgIERhdGUuZnVsbFllYXJT
dGFydCA9ICcxOSc7DQogICAgICAkKCIuZGF0ZS1waWNrZXIiKS5kYXRlUGlja2VyKHtzdGFy
dERhdGU6J3skcHJlZnNbJ2RhdGVwaWNrZXJfc3RhcnRfZGF0ZSddfSd9KTsNCiAgICB9IGNh
dGNoKGVycikgew0KICAgICAgJCgnI21lc3NhZ2VwYW5lJykuaHRtbCgnPGEgaHJlZj0iaHR0
cDovL3skcHJlZnNbJ3NpdGV1cmwnXX0vdGV4dHBhdHRlcm4vP2V2ZW50PXBsdWdpbl9wcmVm
cy5nbHpfY3VzdG9tX2ZpZWxkcyI+Rml4IHRoZSBEYXRlUGlja2VyIGpRdWVyeSBwbHVnaW48
L2E+Jyk7DQogICAgfQ0KICB9DQp9KTsNCjwvc2NyaXB0Pg0KRU9GOw0KICB9DQogIGlmICgg
JHRpbWVfcGlja2VyICkgew0KICAgICRjc3MgLj0gJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiIG1lZGlhPSJhbGwiIGhyZWY9IicuJHByZWZzWyd0aW1lcGlja2Vy
X3VybCddLicvdGltZVBpY2tlci5jc3MiIC8+Jy5uOw0KICAgICRqcyAuPSAnPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJy4kcHJlZnNbJ3RpbWVwaWNrZXJfdXJsJ10u
Jy90aW1lUGlja2VyLmpzIj48L3NjcmlwdD4nLm47DQogICAgJGpzIC49IDw8PEVPRg0KPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KJChmdW5jdGlvbigpIHsNCiAgaWYgKCQo
Ii50aW1lLXBpY2tlciIpLmxlbmd0aCA+IDApIHsNCiAgICB0cnkgew0KICAgICAgJCgiLnRp
bWUtcGlja2VyIikudGltZVBpY2tlcih7DQogICAgICAgIHN0YXJ0VGltZToneyRwcmVmc1sn
dGltZXBpY2tlcl9zdGFydF90aW1lJ119JywNCiAgICAgICAgZW5kVGltZTogJ3skcHJlZnNb
J3RpbWVwaWNrZXJfZW5kX3RpbWUnXX0nLA0KICAgICAgICBzdGVwOiB7JHByZWZzWyd0aW1l
cGlja2VyX3N0ZXAnXX0sDQogICAgICAgIHNob3cyNEhvdXJzOiB7JHByZWZzWyd0aW1lcGlj
a2VyX3Nob3dfMjQnXX0NCiAgICAgIH0pOw0KICAgIH0gY2F0Y2goZXJyKSB7DQogICAgICAk
KCcjbWVzc2FnZXBhbmUnKS5odG1sKCc8YSBocmVmPSJodHRwOi8veyRwcmVmc1snc2l0ZXVy
bCddfS90ZXh0cGF0dGVybi8/ZXZlbnQ9cGx1Z2luX3ByZWZzLmdsel9jdXN0b21fZmllbGRz
Ij5GaXggdGhlIFRpbWVQaWNrZXIgalF1ZXJ5IHBsdWdpbjwvYT4nKTsNCiAgICB9DQogIH0N
Cn0pOw0KPC9zY3JpcHQ+DQpFT0Y7DQogIH0NCiAgJGpzIC49ICc8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vJy4kcHJlZnNbJ3NpdGV1cmwnXS4nL3BsdWdp
bnMvZ2x6X2N1c3RvbV9maWVsZHMvZ2x6X2N1c3RvbV9maWVsZHMuanMiPjwvc2NyaXB0Pic7
DQoNCiAgLy8gZGlzcGxheXMgdGhlIG5vdGljZXMgd2UgaGF2ZSBnYXRoZXJlZCB0aHJvdWdo
b3V0IHRoZSBlbnRpcmUgcGx1Z2luDQogIGlmICggY291bnQoJGdsel9ub3RpY2UpID4gMCAp
IHsNCiAgICAvLyBsZXQncyB0dXJuIG91ciBub3RpY2VzIGludG8gYSBzdHJpbmcNCiAgICAk
Z2x6X25vdGljZSA9IGpvaW4oIjxiciAvPiIsIGFycmF5X3VuaXF1ZSgkZ2x6X25vdGljZSkp
Ow0KDQogICAgJGpzIC49ICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogICAg
PCEtLS8vLS0+PCFbQ0RBVEFbLy8+PCEtLQ0KDQogICAgJChkb2N1bWVudCkucmVhZHkoZnVu
Y3Rpb24oKSB7DQogICAgICAvLyBhZGQgb3VyIG5vdGljZXMNCiAgICAgICQoIiNtZXNzYWdl
cGFuZSIpLmh0bWwoXCcnLiRnbHpfbm90aWNlLidcJyk7DQogICAgfSk7DQogICAgLy8tLT48
IV1dPg0KICAgIDwvc2NyaXB0Pic7DQogIH0NCg0KICBlY2hvICRqcy5uLnQuJGNzcy5uLnQ7
DQp9DQoNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gd2UgYXJlIHNldHRpbmcgdXAgdGhlIHByZS1yZXF1
aXNpdGUgdmFsdWVzIGZvciBnbHpfY3VzdG9tX2ZpZWxkcw0KZnVuY3Rpb24gYmVmb3JlX2ds
el9jdXN0b21fZmllbGRzKCkgew0KICAvLyB3ZSB3aWxsIGJlIHJldXNpbmcgdGhlc2UgZ2xv
YmFscyBhY3Jvc3MgdGhlIHdob2xlIHBsdWdpbg0KICBnbG9iYWwgJGFsbF9jdXN0b21fc2V0
cywgJGdsel9ub3RpY2UsICRwcmVmcywgJGRhdGVfcGlja2VyLCAkdGltZV9waWNrZXI7DQoN
CiAgLy8gZ2x6X25vdGljZSBjb2xsZWN0cyBhbGwgcGx1Z2luIG5vdGljZXMNCiAgJGdsel9u
b3RpY2UgPSBhcnJheSgpOw0KDQogIC8vIGxldCdzIGdldCBhbGwgY3VzdG9tIGZpZWxkIHNl
dHMgZnJvbSBwcmVmcw0KICAkYWxsX2N1c3RvbV9zZXRzID0gZ2x6X2N1c3RvbV9maWVsZHNf
TXlTUUwoImFsbCIpOw0KDQogIC8vIGxldCdzIHNlZSBpZiB3ZSBoYXZlIGEgZGF0ZS1waWNr
ZXIgY3VzdG9tIGZpZWxkIChmaXJzdCBvZiB0aGUgc3BlY2lhbCBvbmVzKQ0KICAkZGF0ZV9w
aWNrZXIgPSBnbHpfY3VzdG9tX2ZpZWxkc19NeVNRTCgiY3VzdG9tX3NldF9leGlzdHMiLCAi
ZGF0ZS1waWNrZXIiKTsNCg0KICAvLyBsZXQncyBzZWUgaWYgd2UgaGF2ZSBhIHRpbWUtcGlj
a2VyIGN1c3RvbSBmaWVsZA0KICAkdGltZV9waWNrZXIgPSBnbHpfY3VzdG9tX2ZpZWxkc19N
eVNRTCgiY3VzdG9tX3NldF9leGlzdHMiLCAidGltZS1waWNrZXIiKTsNCn0NCg0KDQovLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQovLyBib290c3RyYXBwaW5nIHJvdXRpbmVzLCBydW4gdGhyb3VnaCBwbHVnaW5f
bGlmZWN5Y2xlDQpmdW5jdGlvbiBnbHpfY3VzdG9tX2ZpZWxkc19pbnN0YWxsKCkgew0KICBn
bG9iYWwgJGFsbF9jdXN0b21fc2V0cywgJGdsel9ub3RpY2UsICRwcmVmczsNCg0KICAvLyBk
ZWZhdWx0IGN1c3RvbSBmaWVsZHMgYXJlIHNldCB0byBjdXN0b21fc2V0DQogIC8vIG5lZWQg
dG8gY2hhbmdlIHRoaXMgYmVjYXVzZSBpdCBjb25mdXNlcyBvdXIgc2V0X3R5cGVzKCkNCiAg
c2FmZV9xdWVyeSgiDQogICAgVVBEQVRFDQogICAgICBgIi5QRlguInR4cF9wcmVmc2ANCiAg
ICBTRVQNCiAgICAgIGBodG1sYCA9ICd0ZXh0X2lucHV0Jw0KICAgIFdIRVJFDQogICAgICBg
ZXZlbnRgID0gJ2N1c3RvbScNCiAgICBBTkQNCiAgICAgIGBodG1sYCA9ICdjdXN0b21fc2V0
Jw0KICAiKTsNCg0KICAvLyBzZXQgcGx1Z2luIHByZWZlcmVuY2VzDQogICRhcnJfcGx1Z2lu
X3ByZWZlcmVuY2VzID0gYXJyYXkoDQogICAgJ3ZhbHVlc19vcmRlcmluZycgICAgICAgPT4g
ImN1c3RvbSIsDQogICAgJ211bHRpc2VsZWN0X3NpemUnICAgICAgPT4gIjUiLA0KICAgICdk
YXRlcGlja2VyX3VybCcgICAgICAgID0+IGh1LiJwbHVnaW5zL2dsel9jdXN0b21fZmllbGRz
L2pxdWVyeS5kYXRlUGlja2VyIiwNCiAgICAnZGF0ZXBpY2tlcl9mb3JtYXQnICAgICA9PiAi
ZGQvbW0veXl5eSIsDQogICAgJ2RhdGVwaWNrZXJfZmlyc3RfZGF5JyAgPT4gMSwNCiAgICAn
ZGF0ZXBpY2tlcl9zdGFydF9kYXRlJyA9PiAiMDEvMDEvMTk5MCIsDQogICAgJ3RpbWVwaWNr
ZXJfdXJsJyAgICAgICAgPT4gaHUuInBsdWdpbnMvZ2x6X2N1c3RvbV9maWVsZHMvanF1ZXJ5
LnRpbWVQaWNrZXIiLA0KICAgICd0aW1lcGlja2VyX3N0YXJ0X3RpbWUnID0+ICIwMDowMCIs
DQogICAgJ3RpbWVwaWNrZXJfZW5kX3RpbWUnICAgPT4gIjIzOjMwIiwNCiAgICAndGltZXBp
Y2tlcl9zdGVwJyAgICAgICA9PiAzMCwNCiAgICAndGltZXBpY2tlcl9zaG93XzI0JyAgICA9
PiB0cnVlLA0KICAgICdjdXN0b21fc2NyaXB0c19wYXRoJyAgID0+ICRwcmVmc1sncGF0aF90
b19zaXRlJ10uIi9wbHVnaW5zL2dsel9jdXN0b21fZmllbGRzIg0KICApOw0KICBnbHpfY3Vz
dG9tX2ZpZWxkc19NeVNRTCgidXBkYXRlX3BsdWdpbl9wcmVmZXJlbmNlcyIsICRhcnJfcGx1
Z2luX3ByZWZlcmVuY2VzKTsNCg0KICAvLyBsZXQncyB1cGRhdGUgcGx1Z2luIHByZWZlcmVu
Y2VzLCBtYWtlIHN1cmUgdGhleSB3b24ndCBhcHBlYXIgdW5kZXIgQWRtaW4gPiBQcmVmZXJl
bmNlcw0KICBzYWZlX3F1ZXJ5KCINCiAgICBVUERBVEUNCiAgICAgIGAiLlBGWC4idHhwX3By
ZWZzYA0KICAgIFNFVA0KICAgICAgYHR5cGVgID0gJzEwJw0KICAgIFdIRVJFDQogICAgICBg
ZXZlbnRgID0gJ2dsel9jdXN0b21fZicNCiAgIik7DQoNCiAgLy8gaWYgd2UgZG9uJ3QgaGF2
ZSBhIHNlYXJjaCBzZWN0aW9uLCBsZXQncyBjcmVhdGUgaXQgYmVjYXVzZSB3ZSdsbCBuZWVk
IGl0IHdoZW4gc2VhcmNoaW5nIGJ5IGN1c3RvbSBmaWVsZHMNCiAgaWYoICFnZXRSb3coIlNF
TEVDVCBuYW1lIEZST00gYCIuUEZYLiJ0eHBfc2VjdGlvbmAgV0hFUkUgbmFtZT0nc2VhcmNo
JyIpICkgew0KICAgIHNhZmVfcXVlcnkoIg0KICAgICAgSU5TRVJUIElOVE8NCiAgICAgICAg
YCIuUEZYLiJ0eHBfc2VjdGlvbmAgKGBuYW1lYCwgYHBhZ2VgLCBgY3NzYCwgYGluX3Jzc2As
IGBvbl9mcm9udHBhZ2VgLCBgc2VhcmNoYWJsZWAsIGB0aXRsZWApDQogICAgICBWQUxVRVMN
CiAgICAgICAgKCdzZWFyY2gnLCAnZGVmYXVsdCcsICdkZWZhdWx0JywgJzAnLCAnMCcsICcw
JywgJ1NlYXJjaCcpDQogICAgIik7DQogICAgLy8gYWRkIGEgbm90aWNlIHRoYXQgc2VhcmNo
IHNlY3Rpb24gaGFzIGJlZSBjcmVhdGVkDQogICAgJGdsel9ub3RpY2VbXSA9IGdsel9jdXN0
b21fZmllbGRzX2dUeHQoInNlYXJjaF9zZWN0aW9uX2NyZWF0ZWQiKTsNCiAgfQ0KDQogIC8v
IGlmIHdlIGRvbid0IGhhdmUgdGhlIGN1c3RvbV9maWVsZHMgdGFibGUsIGxldCdzIGNyZWF0
ZSBpdA0KICBpZiAoICFnZXRSb3dzKCJTSE9XIFRBQkxFUyBMSUtFICciLlBGWC4iY3VzdG9t
X2ZpZWxkcyciKSApIHsNCiAgICBzYWZlX3F1ZXJ5KCINCiAgICAgIENSRUFURSBUQUJMRSBg
Ii5QRlguImN1c3RvbV9maWVsZHNgICgNCiAgICAgICAgYGlkYCBpbnQoMTEpIFVOU0lHTkVE
IE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULA0KICAgICAgICBgbmFtZWAgdmFyY2hhcigyNTUp
IE5PVCBOVUxMIGRlZmF1bHQgJycsDQogICAgICAgIGB2YWx1ZWAgdmFyY2hhcigyNTUpIE5P
VCBOVUxMIGRlZmF1bHQgJycsDQogICAgICAgIFBSSU1BUlkgS0VZIChpZCksDQogICAgICAg
IEtFWSAoYG5hbWVgKQ0KICAgICAgKSBFTkdJTkU9TXlJU0FNDQogICAgIik7DQogIH0NCiAg
ZWxzZSB7DQogICAgLy8gaWYgdGhlcmUgaXNuJ3QgYW5kIGlkIGNvbHVtbiwgYWRkIGl0DQog
ICAgaWYgKCAhZ2V0Um93cygiU0hPVyBDT0xVTU5TIEZST00gIi5QRlguImN1c3RvbV9maWVs
ZHMgTElLRSAnaWQnIikgKSB7DQogICAgICBzYWZlX3F1ZXJ5KCINCiAgICAgICAgQUxURVIg
VEFCTEUgYCIuUEZYLiJjdXN0b21fZmllbGRzYA0KICAgICAgICAgIEFERCBgaWRgIGludCgx
MSkgVU5TSUdORUQgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQgS0VZDQogICAgICAiKTsNCiAg
ICB9DQoNCiAgIC8vIGlmIHdlIGhhdmUgZGVmaW5pdGVseSBtaWdyYXRlZCB1c2luZyB0aGlz
IGZ1bmN0aW9uLCBza2lwIGV2ZXJ5dGhpbmcNCiAgIGlmICggaXNzZXQoJHByZWZzWydtaWdy
YXRlZCddKSApDQogICAgIHJldHVybjsNCiAgIC8vIGFib3J0IHRoZSBtaWdyYXRpb24gaWYg
dGhlcmUgYXJlIHZhbHVlcyBpbiBjdXN0b21fZmllbGRzIHRhYmxlLCB3ZSBkb24ndCB3YW50
IHRvIG92ZXJ3cml0ZSBhbnl0aGluZw0KICAgZWxzZSBpZiAoIGdsel9jdXN0b21fZmllbGRz
X015U1FMKCdjaGVja19taWdyYXRpb24nKSA+IDAgKSB7DQogICAgIC8vIERFQlVHDQogICAg
IC8vIGRtcChnbHpfY3VzdG9tX2ZpZWxkc19NeVNRTCgnY2hlY2tfbWlncmF0aW9uJykpOw0K
ICAgICAkZ2x6X25vdGljZVtdID0gZ2x6X2N1c3RvbV9maWVsZHNfZ1R4dCgibWlncmF0aW9u
X3NraXAiKTsNCiAgICAgLy8gbWFrZSBhIG5vdGUgb2YgdGhpcyBtaWdyYXRpb24gaW4gdHhw
X3ByZWZzDQogICAgIGdsel9jdXN0b21fZmllbGRzX015U1FMKCdtYXJrX21pZ3JhdGlvbicp
Ow0KICAgICByZXR1cm47DQogICB9DQoNCiAgIC8vIGdvIHRocm91Z2ggYWxsIHZhbHVlcyBp
biBjdXN0b20gZmllbGQgY29sdW1ucyBpbiB0ZXh0cGF0dGVybiB0YWJsZSBvbmUgYnkgb25l
DQogICBmb3JlYWNoICgkYWxsX2N1c3RvbV9zZXRzIGFzICRjdXN0b20gPT4gJGN1c3RvbV9z
ZXQpIHsNCiAgICAgLy8gY2hlY2sgb25seSBmb3IgY3VzdG9tIGZpZWxkcyB0aGF0IGhhdmUg
YmVlbiBzZXQNCiAgICAgaWYgKCAkY3VzdG9tX3NldFsnbmFtZSddICkgew0KICAgICAgIC8v
IGdldCBhbGwgZXhpc3RpbmcgY3VzdG9tIHZhbHVlcyBmb3IgQUxMIGFydGljbGVzDQogICAg
ICAgJGFsbF92YWx1ZXMgPSBnbHpfY3VzdG9tX2ZpZWxkc19NeVNRTCgnYWxsX3ZhbHVlcycs
IGdsel9jdXN0b21fbnVtYmVyKCRjdXN0b20pLCAnJywgYXJyYXkoJ2N1c3RvbV9zZXRfbmFt
ZScgPT4gJGN1c3RvbV9zZXRbJ25hbWUnXSwgJ3N0YXR1cycgPT4gMCkpOw0KICAgICAgIC8v
IGlmIHdlIGhhdmUgcmVzdWx0cywgbGV0J3MgY3JlYXRlIFNRTCBxdWVyaWVzIHRoYXQgd2ls
bCBhZGQgdGhlbSB0byBjdXN0b21fZmllbGRzIHRhYmxlDQogICAgICAgaWYgKCBjb3VudCgk
YWxsX3ZhbHVlcykgPiAwICkgew0KICAgICAgICAgLy8gaW5pdGlhbGl6ZSBpbnNlcnQNCiAg
ICAgICAgICRpbnNlcnQgPSAnJzsNCiAgICAgICAgIGZvcmVhY2ggKCAkYWxsX3ZhbHVlcyBh
cyAkZXNjYXBlZF92YWx1ZSA9PiAkdmFsdWUgKSB7DQogICAgICAgICAgIC8vIGRvbid0IGlu
c2VydCBlbXB0eSB2YWx1ZXMgb3IgdmFsdWVzIHRoYXQgYXJlIG92ZXIgMjU1IGNoYXJhY3Rl
cnMNCiAgICAgICAgICAgLy8gdmFsdWVzIG92ZXIgMjU1IGNoYXJhY3RlcnMgaGludCB0byBh
IHRleHRhcmVhIGN1c3RvbSBmaWVsZA0KICAgICAgICAgICBpZiAoICFlbXB0eSgkZXNjYXBl
ZF92YWx1ZSkgJiYgc3RybGVuKCRlc2NhcGVkX3ZhbHVlKSA8IDI1NSApDQogICAgICAgICAg
ICAgLy8gaWYgdGhpcyBpcyB0aGUgbGFzdCB2YWx1ZSwgcXVlcnkgd2lsbCBoYXZlIHRvIGJl
IGRpZmZlcmVudA0KICAgICAgICAgICAgICRpbnNlcnQgLj0gKCBlbmQoJGFsbF92YWx1ZXMp
ICE9ICR2YWx1ZSApID8NCiAgICAgICAgICAgICAgICIoJ3skY3VzdG9tfScsJ3skZXNjYXBl
ZF92YWx1ZX0nKSwiIDoNCiAgICAgICAgICAgICAgICIoJ3skY3VzdG9tfScsJ3skZXNjYXBl
ZF92YWx1ZX0nKSI7DQogICAgICAgICB9DQogICAgICAgICAkcXVlcnkgPSAiDQogICAgICAg
ICAgIElOU0VSVCBJTlRPDQogICAgICAgICAgICAgYCIuUEZYLiJjdXN0b21fZmllbGRzYCAo
YG5hbWVgLGB2YWx1ZWApDQogICAgICAgICAgIFZBTFVFUw0KICAgICAgICAgICAgIHskaW5z
ZXJ0fQ0KICAgICAgICAgIjsNCiAgICAgICAgIGlmICggaXNzZXQoJHF1ZXJ5KSAmJiAhZW1w
dHkoJHF1ZXJ5KSApIHsNCiAgICAgICAgICAgLy8gY3JlYXRlIGFsbCBjdXN0b20gZmllbGQg
dmFsdWVzIGluIGN1c3RvbV9maWVsZHMgdGFibGUNCiAgICAgICAgICAgc2FmZV9xdWVyeSgk
cXVlcnkpOw0KICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHR5cGUgb2YgdGhpcyBjdXN0b20g
ZmllbGQgdG8gc2VsZWN0IChtaWdodCB3YW50IHRvIG1ha2UgdGhpcyB1c2VyLWFkanVzdGFi
bGUgYXQgc29tZSBwb2ludCkNCiAgICAgICAgICAgZ2x6X2N1c3RvbV9maWVsZHNfTXlTUUwo
InVwZGF0ZSIsICRjdXN0b20sIFBGWC4idHhwX3ByZWZzIiwgYXJyYXkoDQogICAgICAgICAg
ICAgJ2N1c3RvbV9zZXRfbmFtZScgICA9PiAkY3VzdG9tX3NldFsnbmFtZSddLA0KICAgICAg
ICAgICAgICdjdXN0b21fc2V0X3R5cGUnICAgPT4gInNlbGVjdCIsDQogICAgICAgICAgICAg
J2N1c3RvbV9zZXRfcG9zaXRpb24nID0+ICRjdXN0b21fc2V0Wydwb3NpdGlvbiddDQogICAg
ICAgICAgICkpOw0KICAgICAgICAgICAkZ2x6X25vdGljZVtdID0gZ2x6X2N1c3RvbV9maWVs
ZHNfZ1R4dCgibWlncmF0aW9uX3N1Y2Nlc3MiKTsNCiAgICAgICAgIH0NCiAgICAgICB9DQog
ICAgIH0NCiAgIH0NCg0KICAgLy8gbWFrZSBhIG5vdGUgb2YgdGhpcyBtaWdyYXRpb24gaW4g
dHhwX3ByZWZzDQogICBnbHpfY3VzdG9tX2ZpZWxkc19NeVNRTCgnbWFya19taWdyYXRpb24n
KTsNCiAgfQ0KfQ0KDQoNCg0KDQoNCmdsb2JhbCAkZXZlbnQ7DQoNCi8vIGdsb2JhbHMsIGV4
cGVuc2l2ZSBvcGVyYXRpb25zIG1vc3RseQ0KYmVmb3JlX2dsel9jdXN0b21fZmllbGRzKCk7
DQoNCmlmIChAdHhwaW50ZXJmYWNlID09ICJhZG1pbiIpIHsNCg0KICAvLyBJTlNUQUxMIFJP
VVRJTkVTDQogIC8vIGNoZWNrcyBpZiBhbGwgdGFibGVzIGV4aXN0IGFuZCBldmVyeXRoaW5n
IGlzIHNldHVwIHByb3Blcmx5DQogIGFkZF9wcml2cygnZ2x6X2N1c3RvbV9maWVsZHNfaW5z
dGFsbCcsICIxIik7DQogIHJlZ2lzdGVyX2NhbGxiYWNrKCJnbHpfY3VzdG9tX2ZpZWxkc19p
bnN0YWxsIiwgInBsdWdpbl9saWZlY3ljbGUuZ2x6X2N1c3RvbV9maWVsZHMiLCAiaW5zdGFs
bGVkIik7DQoNCiAgLy8gd2UnbGwgYmUgZG9pbmcgdGhpcyBvbmx5IG9uIHRoZSBwYWdlcyB0
aGF0IHdlIGNhcmUgYWJvdXQsIG5vdCBldmVyeXdoZXJlDQogIGlmICggaW5fYXJyYXkoJGV2
ZW50LCBhcnJheSgiYXJ0aWNsZSIsICJwcmVmcyIsICJnbHpfY3VzdG9tX2ZpZWxkcyIsICJw
bHVnaW5fcHJlZnMuZ2x6X2N1c3RvbV9maWVsZHMiKSkgKSB7DQogICAgLy8gd2UgbmVlZCBz
b21lIHN0eWxlc2hlZXRzICYgSlMNCiAgICBhZGRfcHJpdnMoJ2dsel9jdXN0b21fZmllbGRz
X2Nzc19qcycsICIxLDIsMyw0LDUsNiIpOw0KICAgIHJlZ2lzdGVyX2NhbGxiYWNrKCdnbHpf
Y3VzdG9tX2ZpZWxkc19jc3NfanMnLCAiYWRtaW5fc2lkZSIsICdoZWFkX2VuZCcpOw0KDQog
ICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgY3VzdG9tIGZpZWxkIHZhbHVl
cyB3aWxsIGJlIGNvbnZlcnRlZCB0byBzdHJpbmdzIGZpcnN0IC0gdGhpbmsgY2hlY2tib3hl
cyAmIG11bHRpLXNlbGVjdHMgZXRjLg0KICAgIGlmICggKGdwcygic3RlcCIpID09ICJlZGl0
IikgfHwgKGdwcygic3RlcCIpID09ICJjcmVhdGUiKSApIHsNCiAgICAgIGFkZF9wcml2cygn
Z2x6X2N1c3RvbV9maWVsZHNfYmVmb3JlX3NhdmUnLCAiMSwyLDMsNCw1LDYiKTsNCiAgICAg
IHJlZ2lzdGVyX2NhbGxiYWNrKCdnbHpfY3VzdG9tX2ZpZWxkc19iZWZvcmVfc2F2ZScsICJh
cnRpY2xlIiwgJycsIDEpOw0KICAgIH0NCiAgfQ0KDQogIC8vIEN1c3RvbSBGaWVsZHMgdGFi
IHVuZGVyIEV4dGVuc2lvbnMNCiAgYWRkX3ByaXZzKCdnbHpfY3VzdG9tX2ZpZWxkcycsICIx
LDIiKTsNCiAgcmVnaXN0ZXJfdGFiKCJleHRlbnNpb25zIiwgJ2dsel9jdXN0b21fZmllbGRz
JywgIkN1c3RvbSBGaWVsZHMiKTsNCiAgcmVnaXN0ZXJfY2FsbGJhY2soJ2dsel9jdXN0b21f
ZmllbGRzJywgImdsel9jdXN0b21fZmllbGRzIik7DQoNCiAgLy8gcGx1Z2luIHByZWZlcmVu
Y2VzDQogIGFkZF9wcml2cygncGx1Z2luX3ByZWZzLmdsel9jdXN0b21fZmllbGRzJywgIjEs
MiIpOw0KICByZWdpc3Rlcl9jYWxsYmFjaygnZ2x6X2N1c3RvbV9maWVsZHNfcHJlZmVyZW5j
ZXMnLCAncGx1Z2luX3ByZWZzLmdsel9jdXN0b21fZmllbGRzJyk7DQoNCg0KICAvLyBZRVMs
IGZpbmFsbHkgdGhlIGRlZmF1bHQgY3VzdG9tIGZpZWxkcyBhcmUgcmVwbGFjZWQgYnkgdGhl
IG5ldywgcGltcGVkIG9uZXMgOiApDQogIGFkZF9wcml2cygnZ2x6X2N1c3RvbV9maWVsZHNf
cmVwbGFjZScsICIxLDIsMyw0LDUsNiIpOw0KICByZWdpc3Rlcl9jYWxsYmFjaygnZ2x6X2N1
c3RvbV9maWVsZHNfcmVwbGFjZScsICdhcnRpY2xlX3VpJywgJ2N1c3RvbV9maWVsZHMnKTsN
CiAgLy8gWUVTLCBub3cgd2UgaGF2ZSB0ZXh0YXJlYSBjdXN0b20gZmllbGRzIGFzIHdlbGwg
OyApDQogIHJlZ2lzdGVyX2NhbGxiYWNrKCdnbHpfY3VzdG9tX2ZpZWxkc19yZXBsYWNlJywg
J2FydGljbGVfdWknLCAnYm9keScpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBldmVyeXRoaW5n
IGlzIGhhcHBlbmluZyBpbiB0aGlzIGZ1bmN0aW9uLi4uIGdlbmVyYXRlcyB0aGUgY29udGVu
dCBmb3IgRXh0ZW5zaW9ucyA+IEN1c3RvbSBGaWVsZHMNCmZ1bmN0aW9uIGdsel9jdXN0b21f
ZmllbGRzKCkgew0KICBnbG9iYWwgJGV2ZW50LCAkYWxsX2N1c3RvbV9zZXRzLCAkZ2x6X25v
dGljZSwgJHByZWZzOw0KDQogIC8vIHdlIGhhdmUgJF9QT1NULCBsZXQncyBzZWUgaWYgdGhl
cmUgaXMgYW55IENSVUQNCiAgaWYgKCAkX1BPU1QgKSB7DQogICAgJGluY29taW5nID0gc3Ry
aXBQb3N0KCk7DQogICAgLy8gREVCVUcNCiAgICAvLyBkaWUoZG1wKCRpbmNvbWluZykpOw0K
ICAgIGV4dHJhY3QoJGluY29taW5nKTsNCg0KICAgIC8vIGNyZWF0ZSBhbiBlbXB0eSAkdmFs
dWUgaWYgaXQncyBub3Qgc2V0IGluIHRoZSAkX1BPU1QNCiAgICBpZiAoICFpc3NldCgkdmFs
dWUpICkNCiAgICAgICR2YWx1ZSA9ICcnOw0KDQogICAgLy8gd2UgYXJlIGRlbGV0aW5nIGEg
bmV3IGN1c3RvbSBmaWVsZA0KICAgIGlmICggZ3BzKCdkZWxldGUnKSApIHsNCiAgICAgIGds
el9jdXN0b21fZmllbGRzX015U1FMKCJkZWxldGUiLCAkY3VzdG9tX3NldCwgUEZYLiJ0eHBf
cHJlZnMiKTsNCiAgICAgIGdsel9jdXN0b21fZmllbGRzX015U1FMKCJkZWxldGUiLCAkY3Vz
dG9tX3NldCwgUEZYLiJ0eHBfbGFuZyIpOw0KICAgICAgZ2x6X2N1c3RvbV9maWVsZHNfTXlT
UUwoImRlbGV0ZSIsICRjdXN0b21fc2V0LCBQRlguImN1c3RvbV9maWVsZHMiKTsNCg0KICAg
ICAgZ2x6X2N1c3RvbV9maWVsZHNfTXlTUUwoImRlbGV0ZSIsIGdsel9jdXN0b21fbnVtYmVy
KCRjdXN0b21fc2V0KSwgUEZYLiJ0ZXh0cGF0dGVybiIpOw0KDQogICAgICAkZ2x6X25vdGlj
ZVtdID0gZ2x6X2N1c3RvbV9maWVsZHNfZ1R4dCgiZGVsZXRlZCIsIGFycmF5KCd7Y3VzdG9t
X3NldF9uYW1lfScgPT4gJGN1c3RvbV9zZXRfbmFtZSkpOw0KICAgIH0NCg0KICAgIC8vIHdl
IGFyZSByZXNldHRpbmcgb25lIG9mIHRoZSBtaWdodHkgMTANCiAgICBpZiAoIGdwcygncmVz
ZXQnKSApIHsNCiAgICAgIGdsel9jdXN0b21fZmllbGRzX015U1FMKCJyZXNldCIsICRjdXN0
b21fc2V0LCBQRlguInR4cF9wcmVmcyIpOw0KICAgICAgZ2x6X2N1c3RvbV9maWVsZHNfTXlT
UUwoImRlbGV0ZSIsICRjdXN0b21fc2V0LCBQRlguImN1c3RvbV9maWVsZHMiKTsNCg0KICAg
ICAgZ2x6X2N1c3RvbV9maWVsZHNfTXlTUUwoInJlc2V0IiwgZ2x6X2N1c3RvbV9udW1iZXIo
JGN1c3RvbV9zZXQpLCBQRlguInRleHRwYXR0ZXJuIiwgYXJyYXkoDQogICAgICAgICdjdXN0
b21fc2V0X3R5cGUnID0+ICRjdXN0b21fc2V0X3R5cGUsDQogICAgICAgICdjdXN0b21fZmll
bGQnID0+IGdsel9jdXN0b21fbnVtYmVyKCRjdXN0b21fc2V0KQ0KICAgICAgKSk7DQoNCiAg
ICAgICRnbHpfbm90aWNlW10gPSBnbHpfY3VzdG9tX2ZpZWxkc19nVHh0KCJyZXNldCIsIGFy
cmF5KCd7Y3VzdG9tX3NldF9uYW1lfScgPT4gJGN1c3RvbV9zZXRfbmFtZSkpOw0KICAgIH0N
Cg0KICAgIC8vIHdlIGFyZSBhZGRpbmcgYSBuZXcgY3VzdG9tIGZpZWxkDQogICAgaWYgKCBn
cHMoImN1c3RvbV9maWVsZF9udW1iZXIiKSApIHsNCiAgICAgICRjdXN0b21fc2V0X25hbWUg
PSBncHMoImN1c3RvbV9zZXRfbmFtZSIpOw0KDQogICAgICAvLyBpZiBubyBuYW1lIHdhcyBz
cGVjaWZpZWQsIGFib3J0DQogICAgICBpZiAoICEkY3VzdG9tX3NldF9uYW1lICkNCiAgICAg
ICAgJGdsel9ub3RpY2VbXSA9IGdsel9jdXN0b21fZmllbGRzX2dUeHQoIm5vX25hbWUiKTsN
CiAgICAgIGVsc2Ugew0KICAgICAgICAkY3VzdG9tX3NldF9uYW1lID0gZ2x6X2NsZWFuX3N0
cmluZygkY3VzdG9tX3NldF9uYW1lKTsNCg0KICAgICAgICAkbmFtZV9leGlzdHMgPSBnbHpf
Y2hlY2tfY3VzdG9tX3NldF9uYW1lKCRhbGxfY3VzdG9tX3NldHMsICRjdXN0b21fc2V0X25h
bWUpOw0KDQogICAgICAgIC8vIGlmIG5hbWUgZG9lc24ndCBleGlzdA0KICAgICAgICBpZiAo
ICRuYW1lX2V4aXN0cyA9PSBGQUxTRSApIHsNCiAgICAgICAgICBnbHpfY3VzdG9tX2ZpZWxk
c19NeVNRTCgibmV3IiwgJGN1c3RvbV9zZXRfbmFtZSwgUEZYLiJ0eHBfcHJlZnMiLCBhcnJh
eSgNCiAgICAgICAgICAgICdjdXN0b21fZmllbGRfbnVtYmVyJyA9PiAkY3VzdG9tX2ZpZWxk
X251bWJlciwNCiAgICAgICAgICAgICdjdXN0b21fc2V0X3R5cGUnICAgICA9PiAkY3VzdG9t
X3NldF90eXBlLA0KICAgICAgICAgICAgJ2N1c3RvbV9zZXRfcG9zaXRpb24nID0+ICRjdXN0
b21fc2V0X3Bvc2l0aW9uDQogICAgICAgICAgKSk7DQogICAgICAgICAgZ2x6X2N1c3RvbV9m
aWVsZHNfTXlTUUwoIm5ldyIsICRjdXN0b21fc2V0X25hbWUsIFBGWC4idHhwX2xhbmciLCBh
cnJheSgNCiAgICAgICAgICAgICdjdXN0b21fZmllbGRfbnVtYmVyJyA9PiAkY3VzdG9tX2Zp
ZWxkX251bWJlciwNCiAgICAgICAgICAgICdsYW5nJyAgICAgICAgICAgICAgICA9PiAkR0xP
QkFMU1sncHJlZnMnXVsnbGFuZ3VhZ2UnXQ0KICAgICAgICAgICkpOw0KICAgICAgICAgIGds
el9jdXN0b21fZmllbGRzX015U1FMKCJuZXciLCAkY3VzdG9tX3NldF9uYW1lLCBQRlguInRl
eHRwYXR0ZXJuIiwgYXJyYXkoDQogICAgICAgICAgICAnY3VzdG9tX2ZpZWxkX251bWJlcicg
PT4gJGN1c3RvbV9maWVsZF9udW1iZXIsDQogICAgICAgICAgICAnY3VzdG9tX3NldF90eXBl
JyA9PiAkY3VzdG9tX3NldF90eXBlDQogICAgICAgICAgKSk7DQogICAgICAgICAgLy8gdGhl
cmUgYXJlIGN1c3RvbSBmaWVsZHMgZm9yIHdoaWNoIHdlIGRvIG5vdCBuZWVkIHRvIHRvdWNo
IGN1c3RvbV9maWVsZHMgdGFibGUNCiAgICAgICAgICBpZiAoICFpbl9hcnJheSgkY3VzdG9t
X3NldF90eXBlLCBhcnJheSgidGV4dGFyZWEiLCAidGV4dF9pbnB1dCIpKSApIHsNCiAgICAg
ICAgICAgIGdsel9jdXN0b21fZmllbGRzX015U1FMKCJuZXciLCAkY3VzdG9tX3NldF9uYW1l
LCBQRlguImN1c3RvbV9maWVsZHMiLCBhcnJheSgNCiAgICAgICAgICAgICAgJ2N1c3RvbV9m
aWVsZF9udW1iZXInID0+ICRjdXN0b21fZmllbGRfbnVtYmVyLA0KICAgICAgICAgICAgICAn
dmFsdWUnICAgICAgICAgICAgICAgPT4gJHZhbHVlDQogICAgICAgICAgICApKTsNCiAgICAg
ICAgICB9DQoNCiAgICAgICAgICAkZ2x6X25vdGljZVtdID0gZ2x6X2N1c3RvbV9maWVsZHNf
Z1R4dCgiY3JlYXRlZCIsIGFycmF5KCd7Y3VzdG9tX3NldF9uYW1lfScgPT4gJGN1c3RvbV9z
ZXRfbmFtZSkpOw0KICAgICAgICB9DQogICAgICAgIC8vIG5hbWUgZXhpc3RzLCBhYm9ydA0K
ICAgICAgICBlbHNlDQogICAgICAgICAgJGdsel9ub3RpY2VbXSA9IGdsel9jdXN0b21fZmll
bGRzX2dUeHQoImV4aXN0cyIsIGFycmF5KCd7Y3VzdG9tX3NldF9uYW1lfScgPT4gJGN1c3Rv
bV9zZXRfbmFtZSkpOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIHdlIGFyZSBlZGl0aW5n
IGFuIGV4aXN0aW5nIGN1c3RvbSBmaWVsZA0KICAgIGlmICggZ3BzKCdzYXZlJykgKSB7DQog
ICAgICBpZiAoICFlbXB0eSgkY3VzdG9tX3NldF9uYW1lKSApIHsNCiAgICAgICAgJGN1c3Rv
bV9zZXRfbmFtZSA9IGdsel9jbGVhbl9zdHJpbmcoJGN1c3RvbV9zZXRfbmFtZSk7DQogICAg
ICAgICRuYW1lX2V4aXN0cyA9IGdsel9jaGVja19jdXN0b21fc2V0X25hbWUoJGFsbF9jdXN0
b21fc2V0cywgJGN1c3RvbV9zZXRfbmFtZSwgJGN1c3RvbV9zZXQpOw0KICAgICAgICAvLyBp
ZiBuYW1lIGRvZXNuJ3QgZXhpc3Qgd2UnbGwgbmVlZCB0byBjcmVhdGUgYSBuZXcgY3VzdG9t
X3NldA0KICAgICAgICBpZiAoICRuYW1lX2V4aXN0cyA9PSBGQUxTRSApIHsNCiAgICAgICAg
ICBnbHpfY3VzdG9tX2ZpZWxkc19NeVNRTCgidXBkYXRlIiwgJGN1c3RvbV9zZXQsIFBGWC4i
dHhwX3ByZWZzIiwgYXJyYXkoDQogICAgICAgICAgICAnY3VzdG9tX3NldF9uYW1lJyAgICAg
PT4gJGN1c3RvbV9zZXRfbmFtZSwNCiAgICAgICAgICAgICdjdXN0b21fc2V0X3R5cGUnICAg
ICA9PiAkY3VzdG9tX3NldF90eXBlLA0KICAgICAgICAgICAgJ2N1c3RvbV9zZXRfcG9zaXRp
b24nID0+ICRjdXN0b21fc2V0X3Bvc2l0aW9uDQogICAgICAgICAgKSk7DQoNCiAgICAgICAg
ICAvLyBjdXN0b20gc2V0cyBuZWVkIHRvIGJlIGNoYW5nZWQgYmFzZWQgb24gdGhlaXIgdHlw
ZQ0KICAgICAgICAgIGdsel9jdXN0b21fZmllbGRzX015U1FMKCJ1cGRhdGUiLCAkY3VzdG9t
X3NldCwgUEZYLiJ0ZXh0cGF0dGVybiIsIGFycmF5KA0KICAgICAgICAgICAgJ2N1c3RvbV9z
ZXRfdHlwZScgPT4gJGN1c3RvbV9zZXRfdHlwZSwNCiAgICAgICAgICAgICdjdXN0b21fZmll
bGQnID0+IGdsel9jdXN0b21fbnVtYmVyKCRjdXN0b21fc2V0KQ0KICAgICAgICAgICkpOw0K
DQogICAgICAgICAgLy8gZm9yIHRleHRhcmVhcyB3ZSBkbyBub3QgbmVlZCB0byB0b3VjaCBj
dXN0b21fZmllbGRzIHRhYmxlDQogICAgICAgICAgaWYgKCAkY3VzdG9tX3NldF90eXBlICE9
ICJ0ZXh0YXJlYSIgKSB7DQogICAgICAgICAgICBnbHpfY3VzdG9tX2ZpZWxkc19NeVNRTCgi
ZGVsZXRlIiwgJGN1c3RvbV9zZXQsIFBGWC4iY3VzdG9tX2ZpZWxkcyIpOw0KICAgICAgICAg
ICAgZ2x6X2N1c3RvbV9maWVsZHNfTXlTUUwoIm5ldyIsICRjdXN0b21fc2V0X25hbWUsIFBG
WC4iY3VzdG9tX2ZpZWxkcyIsIGFycmF5KA0KICAgICAgICAgICAgICAnY3VzdG9tX3NldCcg
ID0+ICRjdXN0b21fc2V0LA0KICAgICAgICAgICAgICAndmFsdWUnICAgICAgID0+ICR2YWx1
ZQ0KICAgICAgICAgICAgKSk7DQogICAgICAgICAgfQ0KDQogICAgICAgICAgJGdsel9ub3Rp
Y2VbXSA9IGdsel9jdXN0b21fZmllbGRzX2dUeHQoInVwZGF0ZWQiLCBhcnJheSgne2N1c3Rv
bV9zZXRfbmFtZX0nID0+ICRjdXN0b21fc2V0X25hbWUpKTsNCiAgICAgICAgfQ0KICAgICAg
ICAvLyBuYW1lIGV4aXN0cywgYWJvcnQNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICRnbHpf
bm90aWNlW10gPSBnbHpfY3VzdG9tX2ZpZWxkc19nVHh0KCJleGlzdHMiLCBhcnJheSgne2N1
c3RvbV9zZXRfbmFtZX0nID0+ICRjdXN0b21fc2V0X25hbWUpKTsNCiAgICAgIH0NCiAgICAg
IGVsc2UNCiAgICAgICAgJGdsel9ub3RpY2VbXSA9IGdsel9jdXN0b21fZmllbGRzX2dUeHQo
J25vX25hbWUnKTsNCiAgICB9DQoNCiAgICAvLyBuZWVkIHRvIHJlLWZldGNoIGRhdGEgc2lu
Y2UgdGhpbmdzIG1vZGlmaWVkDQogICAgJGFsbF9jdXN0b21fc2V0cyA9IGdsel9jdXN0b21f
ZmllbGRzX015U1FMKCJhbGwiKTsNCg0KICB9DQoNCiAgcGFnZXRvcCgiQ3VzdG9tIEZpZWxk
cyIpOw0KDQogIC8vIHRoZSB0YWJsZSB3aXRoIGFsbCBjdXN0b20gZmllbGRzIGZvbGxvd3MN
CiAgZWNobw0KICAgIG4uJzxkaXYgY2xhc3M9Imxpc3R0YWJsZXMiPicubi4NCiAgICAnICA8
dGFibGUgY2xhc3M9InR4cC1saXN0IGdsel9jdXN0b21fZmllbGRzIj4nLm4uDQogICAgJyAg
ICA8dGhlYWQ+Jy5uLg0KICAgICcgICAgICA8dHI+Jy5uLg0KICAgICcgICAgICAgIDx0aD5Q
b3NpdGlvbjwvdGg+Jy5uLg0KICAgICcgICAgICAgIDx0aD5OYW1lPC90aD4nLm4uDQogICAg
JyAgICAgICAgPHRoPlR5cGU8L3RoPicubi4NCiAgICAnICAgICAgICA8dGg+Jm5ic3A7PC90
aD4nLm4uDQogICAgJyAgICAgIDwvdHI+Jy5uLg0KICAgICcgICAgPC90aGVhZD4nLm4uDQog
ICAgJyAgICA8dGJvZHk+Jy5uOw0KDQogIC8vIGxvb3BpbmcgdGhyb3VnaCBhbGwgb3VyIGN1
c3RvbSBmaWVsZHMgdG8gYnVpbGQgdGhlIHRhYmxlDQogICRpID0gMDsNCiAgZm9yZWFjaCAo
ICRhbGxfY3VzdG9tX3NldHMgYXMgJGN1c3RvbSA9PiAkY3VzdG9tX3NldCApIHsNCiAgICAv
LyBmaXJzdCAxMCBmaWVsZHMgY2Fubm90IGJlIGRlbGV0ZWQsIGp1c3QgcmVzZXQNCiAgICBp
ZiAoICRpIDwgMTAgKSB7DQogICAgICAvLyBjYW4ndCByZXNldCBhIGN1c3RvbSBmaWVsZCB0
aGF0IGlzIG5vdCBzZXQNCiAgICAgICRyZXNldF9kZWxldGUgPSAoICRjdXN0b21fc2V0Wydu
YW1lJ10gKSA/DQogICAgICAgIGdsel9mb3JtX2J1dHRvbnMoInJlc2V0IiwgIlJlc2V0Iiwg
JGN1c3RvbSwgaHRtbHNwZWNpYWxjaGFycygkY3VzdG9tX3NldFsnbmFtZSddKSwgJGN1c3Rv
bV9zZXRbJ3R5cGUnXSwgJycsICdyZXR1cm4gY29uZmlybShcJ0J5IHByb2NlZWRpbmcgeW91
IHdpbGwgUkVTRVQgQUxMIGRhdGEgaW4gYHRleHRwYXR0ZXJuYCBhbmQgYGN1c3RvbV9maWVs
ZHNgIHRhYmxlcyBmb3IgYCcuJGN1c3RvbS4nYC4gQXJlIHlvdSBzdXJlP1wnKTsnKSA6DQog
ICAgICAgIE5VTEw7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgJHJlc2V0X2RlbGV0ZSA9
IGdsel9mb3JtX2J1dHRvbnMoImRlbGV0ZSIsICJEZWxldGUiLCAkY3VzdG9tLCBodG1sc3Bl
Y2lhbGNoYXJzKCRjdXN0b21fc2V0WyduYW1lJ10pLCAkY3VzdG9tX3NldFsndHlwZSddLCAn
JywgJ3JldHVybiBjb25maXJtKFwnQnkgcHJvY2VlZGluZyB5b3Ugd2lsbCBERUxFVEUgQUxM
IGRhdGEgaW4gYHRleHRwYXR0ZXJuYCBhbmQgYGN1c3RvbV9maWVsZHNgIHRhYmxlcyBmb3Ig
YCcuJGN1c3RvbS4nYC4gQXJlIHlvdSBzdXJlP1wnKTsnKTsNCiAgICB9DQoNCiAgICAkZWRp
dCA9IGdsel9mb3JtX2J1dHRvbnMoImVkaXQiLCAiRWRpdCIsICRjdXN0b20sIGh0bWxzcGVj
aWFsY2hhcnMoJGN1c3RvbV9zZXRbJ25hbWUnXSksICRjdXN0b21fc2V0Wyd0eXBlJ10sICRj
dXN0b21fc2V0Wydwb3NpdGlvbiddKTsNCg0KICAgIGVjaG8NCiAgICAnICAgICAgPHRyPicu
bi4NCiAgICAnICAgICAgICA8dGQgY2xhc3M9ImN1c3RvbV9zZXRfcG9zaXRpb24iPicuJGN1
c3RvbV9zZXRbJ3Bvc2l0aW9uJ10uJzwvdGQ+Jy5uLg0KICAgICcgICAgICAgIDx0ZCBjbGFz
cz0iY3VzdG9tX3NldF9uYW1lIj4nLiRjdXN0b21fc2V0WyduYW1lJ10uJzwvdGQ+Jy5uLg0K
ICAgICcgICAgICAgIDx0ZCBjbGFzcz0idHlwZSI+Jy4oKCRjdXN0b21fc2V0WyduYW1lJ10p
ID8gZ2x6X2N1c3RvbV9maWVsZHNfZ1R4dCgkY3VzdG9tX3NldFsndHlwZSddKSA6ICcnKS4n
PC90ZD4nLm4uDQogICAgJyAgICAgICAgPHRkIGNsYXNzPSJldmVudHMiPicuJHJlc2V0X2Rl
bGV0ZS5zcC4kZWRpdC4nPC90ZD4nLm4uDQogICAgJyAgICAgIDwvdHI+Jy5uOw0KDQogICAg
JGkrKzsNCiAgfQ0KDQogIGVjaG8NCiAgICAnICAgIDwvdGJvZHk+Jy5uLg0KICAgICcgIDwv
dGFibGU+Jy5uOw0KICAgICc8L2Rpdj4nLm47DQoNCiAgLy8gdGhlIGZvcm0gd2hlcmUgY3Vz
dG9tIGZpZWxkcyBhcmUgYmVpbmcgYWRkZWQvZWRpdGVkDQogICRsZWdlbmQgPSBncHMoJ2Vk
aXQnKSA/DQogICAgJ0VkaXQgJy5ncHMoJ2N1c3RvbV9zZXQnKSA6DQogICAgJ0FkZCBuZXcg
Y3VzdG9tIGZpZWxkJzsNCg0KICAkY3VzdG9tX2ZpZWxkID0gZ3BzKCdlZGl0JykgPw0KICAg
ICc8aW5wdXQgbmFtZT0iY3VzdG9tX3NldCIgdmFsdWU9IicuZ3BzKCdjdXN0b21fc2V0Jyku
JyIgdHlwZT0iaGlkZGVuIiAvPicgOg0KICAgICc8aW5wdXQgbmFtZT0iY3VzdG9tX2ZpZWxk
X251bWJlciIgdmFsdWU9IicuZ2x6X2N1c3RvbV9uZXh0KCRhbGxfY3VzdG9tX3NldHMpLici
IHR5cGU9ImhpZGRlbiIgLz4nOw0KDQogICRjdXN0b21fc2V0ID0gZ3BzKCdlZGl0JykgPw0K
ICAgIGdwcygnY3VzdG9tX3NldCcpIDoNCiAgICBOVUxMOw0KDQogICRjdXN0b21fbmFtZSA9
IGdwcygnZWRpdCcpID8NCiAgICBncHMoJ2N1c3RvbV9zZXRfbmFtZScpIDoNCiAgICBOVUxM
Ow0KDQogICRjdXN0b21fc2V0X3Bvc2l0aW9uID0gZ3BzKCdlZGl0JykgPw0KICAgIGdwcygn
Y3VzdG9tX3NldF9wb3NpdGlvbicpIDoNCiAgICBOVUxMOw0KDQogICRhcnJfY3VzdG9tX3Nl
dF90eXBlcyA9IGdsel9jdXN0b21fc2V0X3R5cGVzKCk7DQoNCiAgJGN1c3RvbV9zZXRfdHlw
ZXMgPSBOVUxMOw0KICBmb3JlYWNoICggJGFycl9jdXN0b21fc2V0X3R5cGVzIGFzICRjdXN0
b21fdHlwZV9ncm91cCA9PiAkY3VzdG9tX3R5cGVzICkgew0KICAgICRjdXN0b21fc2V0X3R5
cGVzIC49ICc8b3B0Z3JvdXAgbGFiZWw9IicudWNmaXJzdCgkY3VzdG9tX3R5cGVfZ3JvdXAp
LiciPicubjsNCiAgICBmb3JlYWNoICgkY3VzdG9tX3R5cGVzIGFzICRjdXN0b21fdHlwZSkg
ew0KICAgICAgJHNlbGVjdGVkID0gKCBncHMoJ2VkaXQnKSAmJiBncHMoJ2N1c3RvbV9zZXRf
dHlwZScpID09ICRjdXN0b21fdHlwZSApID8NCiAgICAgICAgJyBzZWxlY3RlZD0ic2VsZWN0
ZWQiJyA6DQogICAgICAgIE5VTEw7DQogICAgICAkY3VzdG9tX3NldF90eXBlcyAuPSAnPG9w
dGlvbiB2YWx1ZT0iJy4kY3VzdG9tX3R5cGUuJyInLiRzZWxlY3RlZC4nPicuZ2x6X2N1c3Rv
bV9maWVsZHNfZ1R4dCgkY3VzdG9tX3R5cGUpLic8L29wdGlvbj4nLm47DQogICAgfQ0KICAg
ICRjdXN0b21fc2V0X3R5cGVzIC49ICc8L29wdGdyb3VwPicubjsNCiAgfQ0KICAvLyBmZXRj
aGluZyB0aGUgdmFsdWVzIGZvciB0aGlzIGN1c3RvbSBmaWVsZA0KICBpZiAoIGdwcygnZWRp
dCcpICkgew0KICAgIGlmICggJGN1c3RvbV9zZXRfdHlwZSA9PSAidGV4dF9pbnB1dCIgKQ0K
ICAgICAgJGFycl92YWx1ZXMgPSBnbHpfY3VzdG9tX2ZpZWxkc19NeVNRTCgnYWxsX3ZhbHVl
cycsIGdsel9jdXN0b21fbnVtYmVyKCRjdXN0b21fc2V0KSwgJycsIGFycmF5KCdjdXN0b21f
c2V0X25hbWUnID0+ICRjdXN0b21fc2V0X25hbWUsICdzdGF0dXMnID0+IDQpKTsNCiAgICBl
bHNlDQogICAgICAkYXJyX3ZhbHVlcyA9IGdsel9jdXN0b21fZmllbGRzX015U1FMKCJ2YWx1
ZXMiLCAkY3VzdG9tX3NldCwgJycsIGFycmF5KCdjdXN0b21fc2V0X25hbWUnID0+ICRjdXN0
b21fc2V0X25hbWUpKTsNCg0KICAgICR2YWx1ZXMgPSAoICRhcnJfdmFsdWVzICkgPw0KICAg
ICAgaW1wbG9kZSgiXHJcbiIsICRhcnJfdmFsdWVzKSA6DQogICAgICAnJzsNCiAgfQ0KICBl
bHNlDQogICAgJHZhbHVlcyA9ICcnOw0KDQogICRhY3Rpb24gPSBncHMoJ2VkaXQnKSA/DQog
ICAgJzxpbnB1dCBuYW1lPSJzYXZlIiB2YWx1ZT0iU2F2ZSIgdHlwZT0ic3VibWl0IiBjbGFz
cz0ic3VibWl0IiAvPicgOg0KICAgICc8aW5wdXQgbmFtZT0iYWRkX25ldyIgdmFsdWU9IkFk
ZCBuZXciIHR5cGU9InN1Ym1pdCIgY2xhc3M9InN1Ym1pdCIgLz4nOw0KICAvLyB0aGlzIG5l
ZWRzIHRvIGJlIGRpZmZlcmVudCBmb3IgYSBzY3JpcHQNCiAgJHZhbHVlID0gKCBpc3NldCgk
Y3VzdG9tX3NldF90eXBlKSAmJiAkY3VzdG9tX3NldF90eXBlID09ICJjdXN0b20tc2NyaXB0
IiApID8NCiAgICAnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InZhbHVlIiBpZD0idmFsdWUi
IHZhbHVlPSInLiR2YWx1ZXMuJyIgY2xhc3M9ImxlZnQiLz48c3BhbiBjbGFzcz0icmlnaHQi
PjxlbT5SZWxhdGl2ZSBwYXRoIGZyb20geW91ciB3ZWJzaXRlXCdzIHB1YmxpYyBmb2xkZXI8
L2VtPjwvc3Bhbj4nIDoNCiAgICAnPHRleHRhcmVhIG5hbWU9InZhbHVlIiBpZD0idmFsdWUi
IGNsYXNzPSJsZWZ0Ij4nLiR2YWx1ZXMuJzwvdGV4dGFyZWE+PHNwYW4gY2xhc3M9InJpZ2h0
Ij48ZW0+RWFjaCB2YWx1ZSBvbiBhIHNlcGFyYXRlIGxpbmU8L2VtPiA8YnIgLz48ZW0+T25l
IHtkZWZhdWx0fSB2YWx1ZSBhbGxvd2VkPC9lbT48L3NwYW4+JzsNCg0KICAvLyBvaywgYWxs
IGlzIHNldCwgbGV0J3MgYnVpbGQgdGhlIGZvcm0NCiAgZWNobw0KICAgICc8Zm9ybSBtZXRo
b2Q9InBvc3QiIGFjdGlvbj0iaW5kZXgucGhwIiBpZD0iYWRkX2VkaXRfY3VzdG9tX2ZpZWxk
Ij4nLm4uDQogICAgJzxpbnB1dCBuYW1lPSJldmVudCIgdmFsdWU9Imdsel9jdXN0b21fZmll
bGRzIiB0eXBlPSJoaWRkZW4iIC8+Jy5uLg0KICAgICRjdXN0b21fZmllbGQubi4NCiAgICAn
PGZpZWxkc2V0Picubi4NCiAgICAnIDxsZWdlbmQ+Jy4kbGVnZW5kLic8L2xlZ2VuZD4nLm4u
DQogICAgJyA8cCBjbGFzcz0iY2xlYXJmaXgiPg0KICAgICAgICA8bGFiZWwgZm9yPSJjdXN0
b21fc2V0X25hbWUiIGNsYXNzPSJsZWZ0Ij5OYW1lOjwvbGFiZWw+DQogICAgICAgIDxpbnB1
dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjdXN0b21fc2V0X25hbWUiIHZhbHVlPSInLmh0bWxzcGVj
aWFsY2hhcnMoJGN1c3RvbV9uYW1lKS4nIiBpZD0iY3VzdG9tX3NldF9uYW1lIiBjbGFzcz0i
bGVmdCIgLz4NCiAgICAgICAgPHNwYW4gY2xhc3M9InJpZ2h0Ij48ZW0+T25seSB3b3JkIGNo
YXJhY3RlcnMgYWxsb3dlZDwvZW0+PC9zcGFuPg0KICAgICAgPC9wPicubi4NCiAgICAnIDxw
IGNsYXNzPSJjbGVhcmZpeCI+DQogICAgICAgIDxsYWJlbCBmb3I9ImN1c3RvbV9zZXRfdHlw
ZSIgY2xhc3M9ImxlZnQiPlR5cGU6PC9sYWJlbD4NCiAgICAgICAgPHNlbGVjdCBuYW1lPSJj
dXN0b21fc2V0X3R5cGUiIGlkPSJjdXN0b21fc2V0X3R5cGUiIGNsYXNzPSJsZWZ0Ij4NCiAg
ICAnLiAgICAgICRjdXN0b21fc2V0X3R5cGVzLicNCiAgICAgICAgPC9zZWxlY3Q+DQogICAg
ICA8L3A+Jy5uLg0KICAgICcgPHAgY2xhc3M9ImNsZWFyZml4Ij4NCiAgICAgICAgPGxhYmVs
IGZvcj0iY3VzdG9tX3NldF9wb3NpdGlvbiIgY2xhc3M9ImxlZnQiPlBvc2l0aW9uOjwvbGFi
ZWw+DQogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjdXN0b21fc2V0X3Bvc2l0
aW9uIiB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRjdXN0b21fc2V0X3Bvc2l0aW9uKS4n
IiBpZD0iY3VzdG9tX3NldF9wb3NpdGlvbiIgY2xhc3M9ImxlZnQiIC8+DQogICAgICAgIDxz
cGFuIGNsYXNzPSJyaWdodCI+PGVtPkF1dG9tYXRpY2FsbHkgYXNzaWduZWQgaWYgYmxhbms8
L2VtPjwvc3Bhbj4NCiAgICAgIDwvcD4nLm4uDQogICAgJyA8cCBjbGFzcz0iY2xlYXJmaXgi
Pg0KICAgICAgICA8bGFiZWwgZm9yPSJ2YWx1ZSIgY2xhc3M9ImxlZnQiPlZhbHVlOjwvbGFi
ZWw+DQogICAgJy4gICR2YWx1ZS4nDQogICAgICA8L3A+Jy5uLg0KICAgICcgJy4kYWN0aW9u
Lm4uDQogICAgJzwvZmllbGRzZXQ+Jy5uLg0KICAgICc8L2Zvcm0+Jy5uOw0KfQ0KDQoNCi8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCi8vIGdsel9jdXN0b21fZmllbGRzIHByZWZlcmVuY2VzDQpmdW5jdGlvbiBn
bHpfY3VzdG9tX2ZpZWxkc19wcmVmZXJlbmNlcygpIHsNCiAgZ2xvYmFsICRldmVudCwgJGds
el9ub3RpY2U7DQoNCiAgaWYgKCAkX1BPU1QgJiYgZ3BzKCdzYXZlJykgKSB7DQogICAgZ2x6
X2N1c3RvbV9maWVsZHNfTXlTUUwoInVwZGF0ZV9wbHVnaW5fcHJlZmVyZW5jZXMiLCAkX1BP
U1RbJ2dsel9jdXN0b21fZmllbGRzX3ByZWZzJ10pOw0KICAgICRnbHpfbm90aWNlW10gPSBn
bHpfY3VzdG9tX2ZpZWxkc19nVHh0KCJwcmVmZXJlbmNlc191cGRhdGVkIik7DQogICAgLy8g
bmVlZCB0byByZS1mZXRjaCBmcm9tIGRiIGJlY2F1c2UgdGhpcyBoYXMgY2hhbmdlZCBzaW5j
ZSAkcHJlZnMgaGFzIGJlZW4gcG9wdWxhdGVkDQogIH0NCiAgJGN1cnJlbnRfcHJlZmVyZW5j
ZXMgPSBnbHpfY3VzdG9tX2ZpZWxkc19NeVNRTCgncGx1Z2luX3ByZWZlcmVuY2VzJyk7DQoN
CiAgcGFnZXRvcCgiZ2x6X2N1c3RvbV9maWVsZHMgUHJlZmVyZW5jZXMiKTsNCg0KICAvLyBj
dXN0b21fZmllbGRzDQogICRhcnJfdmFsdWVzX29yZGVyaW5nID0gYXJyYXkoDQogICAgJ2Fz
Y2VuZGluZycgICA9PiAiQXNjZW5kaW5nIiwNCiAgICAnZGVzY2VuZGluZycgID0+ICJEZXNj
ZW5kaW5nIiwNCiAgICAnY3VzdG9tJyAgICAgID0+ICJBcyBlbnRlcmVkIg0KICApOw0KICAk
dmFsdWVzX29yZGVyaW5nID0gJzxzZWxlY3QgbmFtZT0iZ2x6X2N1c3RvbV9maWVsZHNfcHJl
ZnNbdmFsdWVzX29yZGVyaW5nXSIgaWQ9Imdsel9jdXN0b21fZmllbGRzX3ByZWZzX3ZhbHVl
c19vcmRlcmluZyI+JzsNCiAgZm9yZWFjaCAoICRhcnJfdmFsdWVzX29yZGVyaW5nIGFzICR2
YWx1ZSA9PiAkdGl0bGUgKSB7DQogICAgJHNlbGVjdGVkID0gKCRjdXJyZW50X3ByZWZlcmVu
Y2VzWyd2YWx1ZXNfb3JkZXJpbmcnXSA9PSAkdmFsdWUpID8gJyBzZWxlY3RlZD0ic2VsZWN0
ZWQiJyA6ICcnOw0KICAgICR2YWx1ZXNfb3JkZXJpbmcgLj0gIjxvcHRpb24gdmFsdWU9XCIk
dmFsdWVcIiRzZWxlY3RlZD4kdGl0bGU8L29wdGlvbj4iOw0KICB9DQogICR2YWx1ZXNfb3Jk
ZXJpbmcgLj0gIjwvc2VsZWN0PiI7DQogICRtdWx0aXNlbGVjdF9zaXplID0gJzxpbnB1dCB0
eXBlPSJ0ZXh0IiBuYW1lPSJnbHpfY3VzdG9tX2ZpZWxkc19wcmVmc1ttdWx0aXNlbGVjdF9z
aXplXSIgaWQ9Imdsel9jdXN0b21fZmllbGRzX3ByZWZzX211bHRpc2VsZWN0X3NpemUiIHZh
bHVlPSInLiRjdXJyZW50X3ByZWZlcmVuY2VzWydtdWx0aXNlbGVjdF9zaXplJ10uJyIgLz4n
Ow0KICAkY3VzdG9tX3NjcmlwdHNfcGF0aF9lcnJvciA9ICggQGZvcGVuKCRjdXJyZW50X3By
ZWZlcmVuY2VzWydjdXN0b21fc2NyaXB0c19wYXRoJ10sICJyIikgKSA/DQogICAgJycgOg0K
ICAgICc8YnIgLz48ZW0gY2xhc3M9InJlZCI+Rm9sZGVyIGRvZXMgbm90IGV4aXN0LCBwbGVh
c2UgY3JlYXRlIGl0LjwvZW0+JzsNCg0KICAvLyBqcXVlcnkuZGF0ZVBpY2tlcg0KICAkZGF0
ZXBpY2tlcl91cmxfZXJyb3IgPSAoIEBmb3BlbigkY3VycmVudF9wcmVmZXJlbmNlc1snZGF0
ZXBpY2tlcl91cmwnXS4iL2RhdGVQaWNrZXIuanMiLCAiciIpICkgPw0KICAgICcnIDoNCiAg
ICAnPGJyIC8+PGVtIGNsYXNzPSJyZWQiPkZvbGRlciBkb2VzIG5vdCBleGlzdCwgcGxlYXNl
IGNyZWF0ZSBpdC48L2VtPic7DQogICRhcnJfZGF0ZV9mb3JtYXQgPSBhcnJheSgiZGQvbW0v
eXl5eSIsICJtbS9kZC95eXl5IiwgInl5eXktbW0tZGQiLCAiZGQgbW0geXkiKTsNCiAgJGRh
dGVfZm9ybWF0ID0gJzxzZWxlY3QgbmFtZT0iZ2x6X2N1c3RvbV9maWVsZHNfcHJlZnNbZGF0
ZXBpY2tlcl9mb3JtYXRdIiBpZD0iZ2x6X2N1c3RvbV9maWVsZHNfcHJlZnNfZGF0ZXBpY2tl
cl9mb3JtYXQiPic7DQogIGZvcmVhY2ggKCAkYXJyX2RhdGVfZm9ybWF0IGFzICRmb3JtYXQg
KSB7DQogICAgJHNlbGVjdGVkID0gKCRjdXJyZW50X3ByZWZlcmVuY2VzWydkYXRlcGlja2Vy
X2Zvcm1hdCddID09ICRmb3JtYXQpID8gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJyA6ICcnOw0K
ICAgICRkYXRlX2Zvcm1hdCAuPSAiPG9wdGlvbiB2YWx1ZT1cIiRmb3JtYXRcIiRzZWxlY3Rl
ZD4kZm9ybWF0PC9vcHRpb24+IjsNCiAgfQ0KICAkZGF0ZV9mb3JtYXQgLj0gIjwvc2VsZWN0
PiI7DQoNCiAgJGFycl9kYXlzID0gYXJyYXkoJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2Rh
eScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5Jyk7DQog
ICRmaXJzdF9kYXkgPSAnPHNlbGVjdCBuYW1lPSJnbHpfY3VzdG9tX2ZpZWxkc19wcmVmc1tk
YXRlcGlja2VyX2ZpcnN0X2RheV0iIGlkPSJnbHpfY3VzdG9tX2ZpZWxkc19wcmVmc19kYXRl
cGlja2VyX2ZpcnN0X2RheSI+JzsNCiAgZm9yZWFjaCAoICRhcnJfZGF5cyBhcyAka2V5ID0+
ICRkYXkgKSB7DQogICAgJHNlbGVjdGVkID0gKCRjdXJyZW50X3ByZWZlcmVuY2VzWydkYXRl
cGlja2VyX2ZpcnN0X2RheSddID09ICRrZXkpID8gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJyA6
ICcnOw0KICAgICRmaXJzdF9kYXkgLj0gIjxvcHRpb24gdmFsdWU9XCIka2V5XCIkc2VsZWN0
ZWQ+JGRheTwvb3B0aW9uPiI7DQogIH0NCiAgJGZpcnN0X2RheSAuPSAiPC9zZWxlY3Q+IjsN
Cg0KICAkc3RhcnRfZGF0ZSA9ICc8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZ2x6X2N1c3Rv
bV9maWVsZHNfcHJlZnNbZGF0ZXBpY2tlcl9zdGFydF9kYXRlXSIgaWQ9Imdsel9jdXN0b21f
ZmllbGRzX3ByZWZzX2RhdGVwaWNrZXJfc3RhcnRfZGF0ZSIgdmFsdWU9IicuJGN1cnJlbnRf
cHJlZmVyZW5jZXNbJ2RhdGVwaWNrZXJfc3RhcnRfZGF0ZSddLiciIC8+JzsNCg0KICAvLyBq
cXVlcnkudGltZVBpY2tlcg0KICAkdGltZXBpY2tlcl91cmxfZXJyb3IgPSAoIEBmb3Blbigk
Y3VycmVudF9wcmVmZXJlbmNlc1sndGltZXBpY2tlcl91cmwnXS4iL3RpbWVQaWNrZXIuanMi
LCAiciIpICkgPw0KICAgICcnIDoNCiAgICAnPGJyIC8+PGVtIGNsYXNzPSJyZWQiPkZvbGRl
ciBkb2VzIG5vdCBleGlzdCwgcGxlYXNlIGNyZWF0ZSBpdC48L2VtPic7DQogICRhcnJfdGlt
ZV9mb3JtYXQgPSBhcnJheSgndHJ1ZScgPT4gIjI0IGhvdXJzIiwgJ2ZhbHNlJyA9PiAiMTIg
aG91cnMiKTsNCiAgJHNob3dfMjQgPSAnPHNlbGVjdCBuYW1lPSJnbHpfY3VzdG9tX2ZpZWxk
c19wcmVmc1t0aW1lcGlja2VyX3Nob3dfMjRdIiBpZD0iZ2x6X2N1c3RvbV9maWVsZHNfcHJl
ZnNfdGltZXBpY2tlcl9zaG93XzI0Ij4nOw0KICBmb3JlYWNoICggJGFycl90aW1lX2Zvcm1h
dCBhcyAkdmFsdWUgPT4gJHRpdGxlICkgew0KICAgICRzZWxlY3RlZCA9ICgkY3VycmVudF9w
cmVmZXJlbmNlc1sndGltZXBpY2tlcl9zaG93XzI0J10gPT0gJHZhbHVlKSA/ICcgc2VsZWN0
ZWQ9InNlbGVjdGVkIicgOiAnJzsNCiAgICAkc2hvd18yNCAuPSAiPG9wdGlvbiB2YWx1ZT1c
IiR2YWx1ZVwiJHNlbGVjdGVkPiR0aXRsZTwvb3B0aW9uPiI7DQogIH0NCiAgJHNob3dfMjQg
Lj0gIjwvc2VsZWN0PiI7DQoNCiAgJG91dCA9IDw8PEVPRg0KPGZvcm0gYWN0aW9uPSJpbmRl
eC5waHAiIG1ldGhvZD0icG9zdCI+DQo8dGFibGUgaWQ9Imxpc3QiIGNsYXNzPSJnbHpfY3Vz
dG9tX2ZpZWxkc19wcmVmcyIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBhbGln
bj0iY2VudGVyIj4NCiAgPHRib2R5Pg0KICAgIDx0ciBjbGFzcz0iaGVhZGluZyI+DQogICAg
ICA8dGQgY29sc3Bhbj0iMiI+PGgyIGNsYXNzPSJwcmVmLWhlYWRpbmciPkN1c3RvbSBGaWVs
ZHM8L2gyPjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGggc2NvcGU9InJv
dyI+PGxhYmVsIGZvcj0iZ2x6X2N1c3RvbV9maWVsZHNfcHJlZnNfdmFsdWVzX29yZGVyaW5n
Ij5PcmRlciBmb3IgY3VzdG9tIGZpZWxkIHZhbHVlczwvdGg+DQogICAgICA8dGQ+eyR2YWx1
ZXNfb3JkZXJpbmd9PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0aCBzY29w
ZT0icm93Ij48bGFiZWwgZm9yPSJnbHpfY3VzdG9tX2ZpZWxkc19wcmVmc19tdWx0aXNlbGVj
dF9zaXplIj5NdWx0aS1zZWxlY3QgZmllbGQgc2l6ZTwvdGg+DQogICAgICA8dGQ+eyRtdWx0
aXNlbGVjdF9zaXplfTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGggc2Nv
cGU9InJvdyI+PGxhYmVsIGZvcj0iZ2x6X2N1c3RvbV9maWVsZHNfcHJlZnNfY3VzdG9tX3Nj
cmlwdHNfcGF0aCI+Q3VzdG9tIHNjcmlwdHMgcGF0aDwvdGg+DQogICAgICA8dGQ+PGlucHV0
IHR5cGU9InRleHQiIG5hbWU9Imdsel9jdXN0b21fZmllbGRzX3ByZWZzW2N1c3RvbV9zY3Jp
cHRzX3BhdGhdIiBpZD0iZ2x6X2N1c3RvbV9maWVsZHNfcHJlZnNfY3VzdG9tX3NjcmlwdHNf
cGF0aCIgdmFsdWU9InskY3VycmVudF9wcmVmZXJlbmNlc1snY3VzdG9tX3NjcmlwdHNfcGF0
aCddfSIgLz57JGN1c3RvbV9zY3JpcHRzX3BhdGhfZXJyb3J9PC90ZD4NCiAgICA8L3RyPg0K
DQogICAgPHRyIGNsYXNzPSJoZWFkaW5nIj4NCiAgICAgIDx0ZCBjb2xzcGFuPSIyIj48aDIg
Y2xhc3M9InByZWYtaGVhZGluZyBsZWZ0Ij5EYXRlIFBpY2tlcjwvaDI+IDxhIGhyZWY9Imh0
dHA6Ly93d3cua2VsdmlubHVjay5jb20vYXNzZXRzL2pxdWVyeS9kYXRlUGlja2VyL3YyL2Rl
bW8vaW5kZXguaHRtbCIgdGl0bGU9IkEgZmxleGlibGUgdW5vYnRydXNpdmUgY2FsZW5kYXIg
Y29tcG9uZW50IGZvciBqUXVlcnkiIGNsYXNzPSJyaWdodCI+alF1ZXJ5IGRhdGVQaWNrZXI8
L2E+PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0aCBzY29wZT0icm93Ij48
bGFiZWwgZm9yPSJnbHpfY3VzdG9tX2ZpZWxkc19wcmVmc19kYXRlcGlja2VyX3VybCI+RGF0
ZSBQaWNrZXIgcGx1Z2luIFVSTDwvdGg+DQogICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQi
IG5hbWU9Imdsel9jdXN0b21fZmllbGRzX3ByZWZzW2RhdGVwaWNrZXJfdXJsXSIgaWQ9Imds
el9jdXN0b21fZmllbGRzX3ByZWZzX2RhdGVwaWNrZXJfdXJsIiB2YWx1ZT0ieyRjdXJyZW50
X3ByZWZlcmVuY2VzWydkYXRlcGlja2VyX3VybCddfSIgLz57JGRhdGVwaWNrZXJfdXJsX2Vy
cm9yfTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGggc2NvcGU9InJvdyI+
PGxhYmVsIGZvcj0iZ2x6X2N1c3RvbV9maWVsZHNfcHJlZnNfZGF0ZXBpY2tlcl9mb3JtYXQi
PkRhdGUgZm9ybWF0PC90aD4NCiAgICAgIDx0ZD57JGRhdGVfZm9ybWF0fTwvdGQ+DQogICAg
PC90cj4NCiAgICA8dHI+DQogICAgICA8dGggc2NvcGU9InJvdyI+PGxhYmVsIGZvcj0iZ2x6
X2N1c3RvbV9maWVsZHNfcHJlZnNfZGF0ZXBpY2tlcl9maXJzdF9kYXkiPkZpcnN0IGRheSBv
ZiB3ZWVrPC90aD4NCiAgICAgIDx0ZD57JGZpcnN0X2RheX08L3RkPg0KICAgIDwvdHI+DQog
ICAgPHRyPg0KICAgICAgPHRoIHNjb3BlPSJyb3ciPjxsYWJlbCBmb3I9Imdsel9jdXN0b21f
ZmllbGRzX3ByZWZzX2RhdGVwaWNrZXJfc3RhcnRfZGF0ZSI+U3RhcnQgZGF0ZTwvdGg+DQog
ICAgICA8dGQ+eyRzdGFydF9kYXRlfTxiciAvPjxlbSBjbGFzcz0iZ3JleSI+TVVTVCBiZSB0
aGUgc2FtZSBhcyAiRGF0ZSBmb3JtYXQiPC9lbT48L3RkPg0KICAgIDwvdHI+DQoNCiAgICA8
dHIgY2xhc3M9ImhlYWRpbmciPg0KICAgICAgPHRkIGNvbHNwYW49IjIiPjxoMiBjbGFzcz0i
cHJlZi1oZWFkaW5nIGxlZnQiPlRpbWUgUGlja2VyPC9oMj4gPGEgaHJlZj0iaHR0cDovL2xh
YnMucGVyaWZlci5zZS90aW1lZGF0ZXBpY2tlci8iIHRpdGxlPSJqUXVlcnkgdGltZSBwaWNr
ZXIiIGNsYXNzPSJyaWdodCI+alF1ZXJ5IHRpbWVQaWNrZXI8L2E+PC90ZD4NCiAgICA8L3Ry
Pg0KICAgIDx0cj4NCiAgICAgIDx0aCBzY29wZT0icm93Ij48bGFiZWwgZm9yPSJnbHpfY3Vz
dG9tX2ZpZWxkc19wcmVmc190aW1lcGlja2VyX3VybCI+VGltZSBQaWNrZXIgcGx1Z2luIFVS
TDwvdGg+DQogICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Imdsel9jdXN0b21f
ZmllbGRzX3ByZWZzW3RpbWVwaWNrZXJfdXJsXSIgaWQ9Imdsel9jdXN0b21fZmllbGRzX3By
ZWZzX3RpbWVwaWNrZXJfdXJsIiB2YWx1ZT0ieyRjdXJyZW50X3ByZWZlcmVuY2VzWyd0aW1l
cGlja2VyX3VybCddfSIgLz57JHRpbWVwaWNrZXJfdXJsX2Vycm9yfTwvdGQ+DQogICAgPC90
cj4NCiAgICA8dHI+DQogICAgICA8dGggc2NvcGU9InJvdyI+PGxhYmVsIGZvcj0iZ2x6X2N1
c3RvbV9maWVsZHNfcHJlZnNfdGltZXBpY2tlcl9zdGFydF90aW1lIj5TdGFydCB0aW1lPC90
aD4NCiAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZ2x6X2N1c3RvbV9maWVs
ZHNfcHJlZnNbdGltZXBpY2tlcl9zdGFydF90aW1lXSIgaWQ9Imdsel9jdXN0b21fZmllbGRz
X3ByZWZzX3RpbWVwaWNrZXJfc3RhcnRfdGltZSIgdmFsdWU9InskY3VycmVudF9wcmVmZXJl
bmNlc1sndGltZXBpY2tlcl9zdGFydF90aW1lJ119IiAvPjwvdGQ+DQogICAgPC90cj4NCiAg
ICA8dHI+DQogICAgICA8dGggc2NvcGU9InJvdyI+PGxhYmVsIGZvcj0iZ2x6X2N1c3RvbV9m
aWVsZHNfcHJlZnNfdGltZXBpY2tlcl9lbmRfdGltZSI+RW5kIHRpbWU8L3RoPg0KICAgICAg
PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJnbHpfY3VzdG9tX2ZpZWxkc19wcmVmc1t0
aW1lcGlja2VyX2VuZF90aW1lXSIgaWQ9Imdsel9jdXN0b21fZmllbGRzX3ByZWZzX3RpbWVw
aWNrZXJfZW5kX3RpbWUiIHZhbHVlPSJ7JGN1cnJlbnRfcHJlZmVyZW5jZXNbJ3RpbWVwaWNr
ZXJfZW5kX3RpbWUnXX0iIC8+PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0
aCBzY29wZT0icm93Ij48bGFiZWwgZm9yPSJnbHpfY3VzdG9tX2ZpZWxkc19wcmVmc190aW1l
cGlja2VyX3N0ZXAiPlN0ZXA8L3RoPg0KICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBu
YW1lPSJnbHpfY3VzdG9tX2ZpZWxkc19wcmVmc1t0aW1lcGlja2VyX3N0ZXBdIiBpZD0iZ2x6
X2N1c3RvbV9maWVsZHNfcHJlZnNfdGltZXBpY2tlcl9zdGVwIiB2YWx1ZT0ieyRjdXJyZW50
X3ByZWZlcmVuY2VzWyd0aW1lcGlja2VyX3N0ZXAnXX0iIC8+PC90ZD4NCiAgICA8L3RyPg0K
ICAgIDx0cj4NCiAgICAgIDx0aCBzY29wZT0icm93Ij48bGFiZWwgZm9yPSJnbHpfY3VzdG9t
X2ZpZWxkc19wcmVmc190aW1lcGlja2VyX3N0ZXAiPlRpbWUgZm9ybWF0PC90aD4NCiAgICAg
IDx0ZD57JHNob3dfMjR9PC90ZD4NCiAgICA8L3RyPg0KDQogICAgPHRyPg0KICAgICAgPHRk
IGNvbHNwYW49IjIiIGNsYXNzPSJub2xpbmUiPg0KICAgICAgICA8aW5wdXQgY2xhc3M9InB1
Ymxpc2giIHR5cGU9InN1Ym1pdCIgbmFtZT0ic2F2ZSIgdmFsdWU9IlNhdmUiIC8+DQogICAg
ICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImV2ZW50IiB2YWx1ZT0icGx1Z2luX3By
ZWZzLmdsel9jdXN0b21fZmllbGRzIiAvPg0KICAgICAgPC90ZD4NCiAgICA8L3RyPg0KICA8
L3Rib2R5Pg0KPC90YWJsZT4NCkVPRjsNCg0KICBlY2hvICRvdXQ7DQp9IjtzOjQ6InR5cGUi
O3M6MToiNSI7czo1OiJvcmRlciI7czoxOiI5IjtzOjU6ImZsYWdzIjtzOjE6IjMiO3M6NDoi
aGVscCI7czozMTU0OiI8aDE+Z2x6X2N1c3RvbV9maWVsZHMsIHVubGltaXRlZCBjdXN0b20g
ZmllbGRzPC9oMT4KPHA+VGhpcyBwbHVnaW4gcHJvdmlkZXMgdW5saW1pdGVkIGN1c3RvbSBm
aWVsZHMgaW4gVGV4dHBhdHRlcm4uIFlvdSBjYW4gY3JlYXRlIGN1c3RvbSBmaWVsZHMgYXMg
c2VsZWN0cywgbXVsdGktc2VsZWN0cywgY2hlY2tib3hlcywgcmFkaW8gYnV0dG9ucyBhbmQg
dGV4dGFyZWFzIC0gYXMgd2VsbCBhcyB0aGUgZGVmYXVsdCB0ZXh0IGlucHV0IGZpZWxkcy4g
UHJlZGVmaW5lIHZhbHVlcyBjYW4gYmUgc2V0IGZvciBjdXN0b20gZmllbGRzIGFuZCB5b3Ug
Y2FuIHNlbGVjdCBhIHNpbmdsZSBkZWZhdWx0IHZhbHVlIChzZWxlY3RzLCBtdWx0aS1zZWxl
Y3RzLCBjaGVja2JveGVzIGFuZCByYWRpbyBidXR0b25zIG9ubHkpLjwvcD4KPHA+PHN0cm9u
Zz5JZiB5b3Ugd2FudCB0byBzdWJtaXQgYnVnIHJlcG9ydHMgYW5kIGZlYXR1cmUgcmVxdWVz
dHMsIHBsZWFzZSB2aXNpdCA8YSBocmVmPSJodHRwOi8vZ2l0aHViLmNvbS9nZXJoYXJkL2ds
el9jdXN0b21fZmllbGRzIiB0aXRsZT0iZ2x6X2N1c3RvbV9maWVsZHMgb24gR2l0SHViIj5n
bHpfY3VzdG9tX2ZpZWxkcyBvbiBHaXRIdWI8L2E+PC9zdHJvbmc+LiBUaGVyZSBpcyBhbHNv
IGEgaGFuZHkgc2VjdGlvbiBvbiA8YSBocmVmPSJodHRwOi8vd2lraS5naXRodWIuY29tL2dl
cmhhcmQvZ2x6X2N1c3RvbV9maWVsZHMvIiB0aXRsZT0iZ2x6X2N1c3RvbV9maWVsZHMgd2lr
aSI+Z2x6X2N1c3RvbV9maWVsZHMgdGlwcyBhbmQgdHJpY2tzPC9hPi48L3A+CjxoMj5UaW1l
IGFuZCBkYXRlIHBpY2tlcnM8L2gyPgo8cD5UaW1lIGFuZCBkYXRlIHBpY2tlcnMgYXJlIHBy
ZXR0eSBzdHJhaWdodGZvcndhcmQgdG8gdXNlLiBUbyBzZXQgdGhlIHJlcXVpcmVkIEphdmFT
Y3JpcHQgYW5kIHN0eWxpbmcgcHJvcGVybHksIHBsZWFzZSByZWZlciB0byB0aGUgPHNwYW4g
Y2xhc3M9ImluZm9ybWF0aW9uIj5JTlNUQUxMPC9zcGFuPiBmaWxlIHRoYXQgY2FtZSB3aXRo
IHRoaXMgcGx1Z2luLjwvcD4KPGgyPkN1c3RvbSBzY3JpcHRzPC9oMj4KPHA+VGhpcyBpcyBh
IHJhdGhlciBjb21wbGV4IGFuZCBsb25nIHNvdWdodC1mb3IgcGllY2Ugb2YgZnVuY3Rpb25h
bGl0eSwgcGxlYXNlIHJlZmVyIHRvIHRoZSA8c3BhbiBjbGFzcz0iaW5mb3JtYXRpb24iPm15
X2ltYWdlLnBocDwvc3Bhbj4gZmlsZSB3aGljaCBjb250YWlucyBpbmxpbmUgZXhwbGFuYXRp
b25zIG9uIGhvdyB0aGV5IHNob3VsZCBiZSB1c2VkLiBUaGUgZmlsZSBjYW1lIHdpdGggdGhl
IHBsdWdpbiwgaW4gdGhlIDxzcGFuIGNsYXNzPSJpbmZvcm1hdGlvbiI+c2NyaXB0cy9nbHpf
Y3VzdG9tX2ZpZWxkczwvc3Bhbj4gZm9sZGVyLjwvcD4KPGgyPkRlZmF1bHQgdmFsdWVzPC9o
Mj4KPHA+WW91IGNhbiBub3cgZGVmaW5lIGEgc2luZ2xlIGRlZmF1bHQgdmFsdWUgYnkgYWRk
aW5nIGN1cmx5IGJyYWNrZXRzIGFyb3VuZCBhIHZhbHVlIGxpa2Ugc286IDxjb2RlPntkZWZh
dWx0IHZhbHVlfTwvY29kZT4uPC9wPgo8aDI+UmFuZ2VzPC9oMj4KPHA+SWYgeW91IHdhbnQg
dG8gZGVmaW5lIHJhbmdlcywgY3JlYXRlIGEgbmV3IGN1c3RvbSBmaWVsZCB3aXRoIHRoZSBm
b2xsb3dpbmcgbmFtZSBlLmcuIDxjb2RlPlByaWNlIHJhbmdlICZhbXA7cG91bmQ7KGFmdGVy
KTwvY29kZT4uPC9wPgo8dWw+CiAgPGxpPjxjb2RlPnJhbmdlPC9jb2RlPiAtIHRoaXMgaXMg
cmVhbGx5IGltcG9ydGFudCBhbmQgPHN0cm9uZyBjbGFzcz0id2FybmluZyI+bXVzdDwvc3Ry
b25nPiBiZSBwcmVzZW50IGZvciB0aGUgcmFuZ2UgdG8gd29yayBjb3JyZWN0bHkuPC9saT4K
ICA8bGk+PGNvZGU+JmFtcDtwb3VuZDs8L2NvZGU+IC0gZG9uJ3QgdXNlIHN0cmFpZ2h0IHN5
bWJvbHMgKGxpa2UgPGNvZGU+JmV1cm87PC9jb2RlPiBvciA8Y29kZT4mcG91bmQ7PC9jb2Rl
PiksIGluc3RlYWQgdXNlIGVudGl0eSBvbmVzIGUuZy4gPGNvZGU+JmFtcDtldXJvOzwvY29k
ZT4gYW5kIDxjb2RlPiZhbXA7cG91bmQ7PC9jb2RlPiBhcmUgdmFsaWQgc3ltYm9scy48L2xp
PgogIDxsaT48Y29kZT4oYWZ0ZXIpPC9jb2RlPiAtIGRvbid0IGxlYXZlIGFueSBzcGFjZXMg
YWZ0ZXIgZS5nLiAkIGFuZCAoYWZ0ZXIpLiBUaGlzIGJhc2ljYWxseSBzYXlzIHdoZXJlIHRv
IGFkZCB0aGUgbWVhc3VyaW5nIHVuaXQgKGJlIGl0IGEgY3VycmVuY3kgb3Igc29tZXRoaW5n
IGxpa2UgbTxzdXA+Mzwvc3VwPiBldGMuKSAtIDxjb2RlPihiZWZvcmUpPC9jb2RlPiBpcyBk
ZWZhdWx0LjwvbGk+CjwvdWw+CjxwPlJhbmdlcyBhcmUgZGVmaW5lZCAxMC0yMCwgMjEtMzAg
ZXRjLiAobm8gbWVhc3VyaW5nIHVuaXRzIC0gdGhleSBnZXQgcHVsbGVkIGZyb20gdGhlIGN1
c3RvbSBzZXQgbmFtZSkuPC9wPgo8aDI+U3VwcG9ydDwvaDI+CjxwPklmIGFueXRoaW5nIGdv
ZXMgd3Jvbmcgb3IgeW91IGRpc2NvdmVyIGEgYnVnOjwvcD4KPG9sPgogIDxsaT5yZXBvcnQg
YW4gaXNzdWUgb24gPGEgaHJlZj0iaHR0cDovL2dpdGh1Yi5jb20vZ2VyaGFyZC9nbHpfY3Vz
dG9tX2ZpZWxkcy9pc3N1ZXMiIHRpdGxlPSJnbHpfY3VzdG9tX2ZpZWxkc19wdWJsaWMgaXNz
dWVzIiByZWw9ImV4dGVybmFsIj5HaXRIdWI8L2E+LjwvbGk+CiAgPGxpPmxvb2sgZm9yIGhl
bHAgaW4gdGhlIFRleHRwYXR0ZXJiIGZvcnVtLCA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4
dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MjM5OTYiIHJlbD0iZXh0ZXJuYWwiPmds
el9jdXN0b21fZmllbGRzIHRocmVhZDwvYT4uPC9saT4KICA8bGk+cGluZyBtZSB2aWEgPGEg
aHJlZj0iaHR0cDovL3d3dy50d2l0dGVyLmNvbS9nZXJoYXJkbGF6dSIgcmVsPSJleHRlcm5h
bCI+VHdpdHRlcjwvYT4uIEknbSB1c2luZyBpdCBhcm91bmQgdGhlIGNsb2NrLCBpdCdzIGdy
ZWF0IGZvciBzaG9ydCBtZXNzYWdlcyE8L2xpPgogIDxsaT5kcm9wIGEgbGluZSB0byA8YSBo
cmVmPSJtYWlsdG86Z2VyaGFyZEBsYXp1LmNvLnVrP1N1YmplY3Q6Z2x6X2N1c3RvbV9maWVs
ZHMgbmVlZHMgeW91ciBhdHRlbnRpb24iIHJlbD0iZXh0ZXJuYWwiPmdlcmhhcmRAbGF6dS5j
by51azwvYT4gKHNvbWV0aW1lcyB0aGluZ3MgY2FuIGdldCByZWFsbHkgaGVjdGljIG9uIG15
IGVuZCwgcGxlYXNlIGJlIHBhdGllbnQpLjwvbGk+Cjwvb2w+IjtzOjM6Im1kNSI7czozMjoi
MTAyNjVhNGM5Yjc5NzljOGM5OWJhZjY0NTk4N2M2NTUiO30=

Offline

Board footer

Powered by FluxBB