Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#16 2014-04-28 14:33:04

JimJoe
Member
From: United States
Registered: 2010-01-30
Posts: 573
Website

Re: resolved: category cloud that leads to articles ? I checked plugins

GugUser wrote #280444:

In my sites it works fine, since years.

I have no idea why that is.

Offline

#17 2014-04-28 14:36:00

JimJoe
Member
From: United States
Registered: 2010-01-30
Posts: 573
Website

Re: resolved: category cloud that leads to articles ? I checked plugins

GugUser wrote #280440:

I meant to replace the container tag variable with the single tag variable.

This works and filters the categories with articles.

<txp:variable name="hasarticles" value='<txp:article_custom category=''<txp:category />'' limit="1" />' />...

I recopied it, it is the middle one on my site at the top of the page. Still shows empty categories.

Offline

#18 2014-04-28 14:36:48

etc
Developer
Registered: 2010-11-11
Posts: 5,689
Website GitHub

Re: resolved: category cloud that leads to articles ? I checked plugins

JimJoe wrote #280439:

Page loading time is slower as you mention. Only returns one article, but I hesitate in increasing the limit to all of the articles.

If you use only Category1 (or Category2) for classification, this should be faster (and produces a weighted cloud):

<txp:etc_query wraptag="p" break=","
	data="SELECT name, title, count
	FROM (SELECT COUNT(*) count, Category1 FROM textpattern WHERE Status=4 GROUP BY Category1 HAVING count!=0) c
	JOIN txp_category ON name=c.Category1 WHERE type='article'
	ORDER BY title"
>
	<a href='<txp:category name="{name?}" section="" url="1" />' style="font-size:{$max({count?}|5)./5}em">
		{$htmlspecialchars({title?})}
	</a>[{count?}]
</txp:etc_query>

Offline

#19 2014-04-28 14:42:46

JimJoe
Member
From: United States
Registered: 2010-01-30
Posts: 573
Website

Re: resolved: category cloud that leads to articles ? I checked plugins

etc wrote #280447:

If you use only Category1 (or Category2) for classification, this should be faster (and produces a weighted cloud):

<txp:etc_query wraptag="p" break=","...

I have labelled thiso ne on my site as ‘Third One’. I get a blank area, no listing.

Offline

#20 2014-04-28 14:45:15

etc
Developer
Registered: 2010-11-11
Posts: 5,689
Website GitHub

Re: resolved: category cloud that leads to articles ? I checked plugins

JimJoe wrote #280448:

I have labelled thiso ne on my site as ‘Third One’. I get a blank area, no listing.

Have you installed etc_query (it’s a plugin)?

Offline

#21 2014-04-28 14:56:05

JimJoe
Member
From: United States
Registered: 2010-01-30
Posts: 573
Website

Re: resolved: category cloud that leads to articles ? I checked plugins

etc wrote #280449:

Have you installed etc_query (it’s a plugin)?

I went to that link, downloaded, and pasted it into the Install Plugin part of admin and it gave an error. Said it was a ‘badly formed or empty plugin code’.

Offline

#22 2014-04-28 15:03:34

etc
Developer
Registered: 2010-11-11
Posts: 5,689
Website GitHub

Re: resolved: category cloud that leads to articles ? I checked plugins

JimJoe wrote #280450:

I went to that link, downloaded, and pasted it into the Install Plugin part of admin and it gave an error. Said it was a ‘badly formed or empty plugin code’.

Weird, I’ve just checked, and it went smooth. Could it be a download problem?

Offline

#23 2014-04-28 15:09:59

JimJoe
Member
From: United States
Registered: 2010-01-30
Posts: 573
Website

Re: resolved: category cloud that leads to articles ? I checked plugins

I redownloaded it three times. Copied and pasted 3 times, same error.

Offline

#24 2014-04-28 15:16:30

JimJoe
Member
From: United States
Registered: 2010-01-30
Posts: 573
Website

Re: resolved: category cloud that leads to articles ? I checked plugins

I went to another of my textpattern web sites and tried to install it there, same error.

Offline

#25 2014-04-28 15:24:18

etc
Developer
Registered: 2010-11-11
Posts: 5,689
Website GitHub

Re: resolved: category cloud that leads to articles ? I checked plugins

Paste a helpless version here, just in case:

YToxMTp7czo0OiJuYW1lIjtzOjk6ImV0Y19xdWVyeSI7czo2OiJhdXRob3IiO3M6MTQ6Ik9s
ZWcgTG91a2lhbm92IjtzOjEwOiJhdXRob3JfdXJpIjtzOjM2OiJodHRwOi8vd3d3Lml1dC1m
YmxlYXUuZnIvcHJvamV0L2V0Yy8iO3M6NzoidmVyc2lvbiI7czo3OiIxLjIuOS4yIjtzOjEx
OiJkZXNjcmlwdGlvbiI7czoyMToiUXVlcnkgZGF0YSB3aXRoIFhQYXRoIjtzOjQ6ImNvZGUi
O3M6MzI2ODQ6ImZ1bmN0aW9uIGV0Y19xdWVyeSgkYXR0cywgJHRoaW5nPScnKSB7DQoNCgln
bG9iYWwgJHByZWZzLCAkZXRjX3F1ZXJ5Ow0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJ
J25hbWUnID0+IG51bGwsDQoJCSdzYXZlJyA9PiBudWxsLA0KCQknZGF0YScgPT4gbnVsbCwN
CgkJJ3VybCcgPT4gJycsDQoJCSdjb250ZXh0JyA9PiBudWxsLA0KCQknbWFya3VwJyA9PiAn
JywNCgkJJ2VuY29kaW5nJyA9PiAnVVRGLTgnLA0KLy8JCSdzdGFydCcgPT4gJycsDQoJCSdx
dWVyeScgPT4gJycsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ3Rob3JvdWdoJyA9PiAnJywNCgkJ
J3JlcGxhY2UnID0+ICcnLA0KCQknc2VwYXJhdG9yJyA9PiAnOycsDQoJCSdhcmdzZXAnID0+
ICd8JywNCgkJJ2dsb2JhbHMnID0+ICd2YXJpYWJsZSxwcmV0ZXh0LHRoaXNhcnRpY2xlLHRo
aXNpbWFnZSx0aGlzZmlsZSx0aGlzbGluaycsDQoJCSdzcGVjaWFscycgPT4gJ2RhdGEscXVl
cnknLA0KCQknc2FuaXRpemUnID0+ICdfQ09PS0lFLF9HRVQsX1BPU1QsX1JFUVVFU1QsX1NF
UlZFUicsDQoJCSdwYXJzZScgPT4gJ2F1dG8nLA0KCQknZnVuY3Rpb25zJyA9PiAnJywNCgkJ
J2xpbWl0JyA9PiBudWxsLA0KCQknb2Zmc2V0JyA9PiAnMCcsDQoJCSdsYWJlbCcgPT4gJycs
DQoJCSdsYWJlbHRhZycgPT4gJycsDQoJCSd3cmFwdGFnJyA9PiAnJywNCgkJJ2JyZWFrJyA9
PiAnJywNCgkJJ2NsYXNzJyA9PiAnJywNCgkJJ2h0bWxfaWQnID0+ICcnLA0KCQknZGVidWcn
ID0+ICcnDQoJKSwgJGF0dHMpKTsNCg0KCWlmKCRkZWJ1Zykgew0KCQkkZGVidWcgPSBkb19s
aXN0KCRkZWJ1Zyk7DQoJCSRzdGFydHRpbWUgPSBtaWNyb3RpbWUoVFJVRSk7DQoJfQ0KDQoJ
Ly8gR3JhYiB0aGUgZm9ybSBvciBlbWJlZGRlZCAkdGhpbmcNCgkkZmFsc2VQYXJ0ID0gaXNz
ZXQoJHRoaW5nKSA/IEV2YWxFbHNlKCR0aGluZywgMCkgOiAnJzsNCglpZigkZm9ybSkgJHRo
aW5nID0gZmV0Y2hfZm9ybSgkZm9ybSk7DQoJJGNvbnRlbnQgPSBpc3NldCgkdGhpbmcpID8g
RXZhbEVsc2UoJHRoaW5nLCAxKSA6ICcnOw0KDQoJJG5vZGF0YSA9ICEkdXJsICYmICgkZGF0
YSA9PT0gbnVsbCk7DQoJQGxpc3QoJGVuY29kaW5nLCAkZW5jX2Zyb20pID0gZXhwbG9kZSgn
OicsICRlbmNvZGluZyk7DQoNCgkkcGFyZW50X3VuaXFpZCA9IGlzc2V0KCRwcmVmc1snZXRj
X3F1ZXJ5X3VuaXFpZCddKSA/ICRwcmVmc1snZXRjX3F1ZXJ5X3VuaXFpZCddIDogMDsNCgkk
cHJlZnNbJ2V0Y19xdWVyeV91bmlxaWQnXSA9ICR1bmlxaWQgPSAkcGFyZW50X3VuaXFpZCAr
IDE7Ly91bmlxaWQoImV0YyIsdHJ1ZSk7DQoJJHByZWZzWyJldGNfY29udGV4dF8kdW5pcWlk
Il0gPSBhcnJheSgnYXJnc2VwJz0+JGFyZ3NlcCwgJ2VuY29kaW5nJz0+JGVuY29kaW5nLCAn
ZnVuY3Rpb25zJz0+JycvKiwgJ3BocCc9PnRydWUqLyk7DQoNCglpZigkZ2xvYmFscykgew0K
CQkkcHJlZnNbImV0Y19nbG9iYWxzXyR1bmlxaWQiXSA9IGRvX2xpc3QoJGdsb2JhbHMpOw0K
CQkkcHJlZnNbImV0Y19zYW5pdGl6ZV8kdW5pcWlkIl0gPSAkc2FuaXRpemUgPyBhcnJheV9m
aWxsX2tleXMoZG9fbGlzdCgkc2FuaXRpemUpLCBudWxsKSA6IGFycmF5KCk7DQoJfSBlbHNl
ICRwcmVmc1siZXRjX2dsb2JhbHNfJHVuaXFpZCJdID0gZmFsc2U7DQovLwkkcHJlZnNbImV0
Y19zcGVjaWFsc18kdW5pcWlkIl0gPSBhcnJheSgneyNyb3d9Jz0+bnVsbCwgJ3sjaW5kfSc9
Pm51bGwsICd7P30nPT5udWxsLCAneyN9Jz0+bnVsbCwgJ3sjI30nPT5udWxsKTsNCg0KCWlm
KCRzcGVjaWFscykgZm9yZWFjaChkb19saXN0KCRzcGVjaWFscykgYXMgJHNwZWNpYWwpIGlm
KCFlbXB0eSgkJHNwZWNpYWwpKSB7DQoJCSQkc3BlY2lhbCA9IHByZWdfcmVwbGFjZV9jYWxs
YmFjayhFVENfUFJFR19TUEVDLCAnZXRjX3BhcnNlX3ZhcmlhYmxlJywgJCRzcGVjaWFsKTsN
Cgl9DQoNCglpZigkZnVuY3Rpb25zKSBpZihldGNfcGhwX2FsbG93ZWQoJHVuaXFpZCkpIHsN
CgkJJGZ1bmN0aW9ucyA9IGRvX2xpc3QoJGZ1bmN0aW9ucyk7DQoJCSRmdW5jID0gaW1wbG9k
ZSgnfCcsICRmdW5jdGlvbnMpOw0KCQlpZigkcXVlcnkpICRxdWVyeSA9IHByZWdfcmVwbGFj
ZSgnL1xiKCcuJGZ1bmMuJylccypcKC8nLCAicGhwOmZ1bmN0aW9uKCckMScsIiwgJHF1ZXJ5
KTsNCgl9IGVsc2UgJGZ1bmN0aW9ucyA9ICcnOw0KCSRwcmVmc1siZXRjX2NvbnRleHRfJHVu
aXFpZCJdWydmdW5jdGlvbnMnXSA9ICRmdW5jdGlvbnMgPyAkZnVuYyA6ICcnOw0KDQoJaWYo
JG1hcmt1cCAhPT0gJ2RhdGEnKSAkbG9hZGVkID0gZmFsc2U7DQoJZWxzZWlmKCRkYXRhICYm
IGlzc2V0KCRldGNfcXVlcnlbJGRhdGFdKSkgew0KCQkkbWFya3VwID0gJGV0Y19xdWVyeVsk
ZGF0YV0tPm1hcmt1cDsNCgkJaWYoaXNzZXQoJGV0Y19xdWVyeVskZGF0YV0tPmRvbSkpICRk
b20gPSAmJGV0Y19xdWVyeVskZGF0YV0tPmRvbTsNCgkJaWYoaXNzZXQoJGV0Y19xdWVyeVsk
ZGF0YV0tPmRhdGEpKSAkZGF0YSA9ICYkZXRjX3F1ZXJ5WyRkYXRhXS0+ZGF0YTsNCgkJJGxv
YWRlZCA9IHRydWU7DQoJfSBlbHNlICRkYXRhID0gJyc7DQoNCglpZigkZGF0YSA9PT0gJycp
IHJldHVybiBldGNfY2xlYW51cCgkdW5pcWlkLCAkcGFyZW50X3VuaXFpZCwgJGZhbHNlUGFy
dCA/IHBhcnNlKCRmYWxzZVBhcnQpIDogJycpOw0KDQoJaWYoZW1wdHkoJG1hcmt1cCkpIGlm
KCRkYXRhID09PSBudWxsKSAkbWFya3VwID0gJHVybCA/ICdodG1sJyA6ICgkcXVlcnkgIT09
JycgPyAneG1sJyA6ICdyYXcnKTsNCgkJZWxzZSAkbWFya3VwID0gKHN0cnRvbG93ZXIoc3Vi
c3RyKGx0cmltKCRkYXRhKSwgMCwgNykpID09PSAnc2VsZWN0ICcgPyAnZGInIDogKCRkYXRh
WzBdID09PSAnWycgfHwgJGRhdGFbMF0gPT09ICd7JyAmJiAoJGRhdGFbMV0gPT09ICciJyB8
fCAkZGF0YVsxXSA9PT0gJyAnKSA/ICdqc29uJyA6ICgkdXJsIHx8IHN0cnBvcygkZGF0YSwg
JzwnKSAhPT0gZmFsc2UgPyAnaHRtbCcgOiAncmF3JykpKTsNCgllbHNlIHsNCgkJQGxpc3Qo
JG1hcmt1cCwgJHBmeCkgPSBleHBsb2RlKCc6JywgJG1hcmt1cCwgMik7DQoJCWlmKHN1YnN0
cigkbWFya3VwLCAtMSkgPT09ICcqJykgeyRjZGF0YSA9IHRydWU7ICRtYXJrdXAgPSBzdWJz
dHIoJG1hcmt1cCwgMCwgLTEpO30NCgl9DQoNCglpZigkdXJsIHx8ICRtYXJrdXAgPT09ICdk
Yid8fCAkbWFya3VwID09PSAnbGRhcCcpIHsNCgkJaWYoIWV0Y19waHBfYWxsb3dlZCgkdW5p
cWlkKSkgcmV0dXJuIGV0Y19jbGVhbnVwKCR1bmlxaWQsICRwYXJlbnRfdW5pcWlkLCAnJyk7
DQoJfQ0KDQoJaWYoJGNvbnRlbnQgIT09ICcnKSB7DQoJCWlmKCRwYXJzZSA9PT0gJ2F1dG8n
KSAkcGFyc2UgPSAoc3RycG9zKCRjb250ZW50LCAnPHR4cDonKSAhPT0gZmFsc2UgPyAnYWZ0
ZXInIDogJycpOw0KCQllbHNlaWYoJHBhcnNlID09PSAnYmVmb3JlJyB8fCAkcGFyc2UgPT09
ICdib3RoJykgJGNvbnRlbnQgPSBwYXJzZSgkY29udGVudCk7DQoJCWlmKHN0cnBvcygkY29u
dGVudCwgJzx4c2w6JykgIT09IGZhbHNlKSB7JHhjb250ZW50ID0gJGNvbnRlbnQ7ICRjb250
ZW50ID0gJyc7fQ0KCX0NCgkkcGFyc2UgPSAoJHBhcnNlID09PSAnYWZ0ZXInIHx8ICRwYXJz
ZSA9PT0gJ2JvdGgnKTsNCg0KCSRpc19odG1sID0gJG1hcmt1cCA9PT0gJ2h0bWwnOw0KCSRp
c194bWwgPSAkbWFya3VwID09PSAneG1sJzsNCg0KCSRmbGF0ID0gKCEkaXNfaHRtbCAmJiAh
JGlzX3htbCAmJiAhJHJlcGxhY2UgJiYgIWlzc2V0KCR4Y29udGVudCkpOy8vYXJyYXkgbW9k
ZQ0KCSRxdWVyeV9hcnJheSA9IG51bGw7Ly9hcnJheSgpOw0KCWlmKCRmbGF0KSBpZigkcXVl
cnkgIT09ICcnKSB7DQoJCSRxdWVyeV9hcnJheSA9IGV0Y19wYXJzZV94cGF0aCgkcXVlcnku
Jz8nLCAkZmxhdCk7DQoJCWlmKGlzc2V0KCRxdWVyeV9hcnJheVsnYXJyYXknXSkpICRxdWVy
eV9hcnJheSA9ICRxdWVyeV9hcnJheVsnYXJyYXknXTsNCgl9DQoJZWxzZWlmKCRtYXJrdXAg
PT09ICdkYicpDQoJCWlmKCRjb250ZW50ID09PSAnJykgeyRxdWVyeSA9ICcqLyonOyAkcXVl
cnlfYXJyYXkgPSBhcnJheSgnKicsICcqJyk7fQ0KDQoJaWYoJHByZWZzWyJldGNfZ2xvYmFs
c18kdW5pcWlkIl0gJiYgc3RycG9zKCRjb250ZW50LiRyZXBsYWNlLCAnez8nKSA9PT0gZmFs
c2UgJiYgc3RycG9zKCRjb250ZW50LiRyZXBsYWNlLCAneyEnKSA9PT0gZmFsc2UpICRwcmVm
c1siZXRjX2dsb2JhbHNfJHVuaXFpZCJdID0gZmFsc2U7DQoJaWYoJGNvbnRlbnQgIT09ICcn
KSAkY29udGVudHMgPSBldGNfcGFyc2Vfc3RyaW5nKCRjb250ZW50LCAkZmxhdCk7DQoJZWxz
ZWlmKCR0aGluZykgJGNvbnRlbnRzID0gYXJyYXkoJ3RleHQnID0+ICcnKTsNCgllbHNlICRj
b250ZW50cyA9IGFycmF5KCk7DQoNCglpZigkcmVwbGFjZSkgaWYoc3RycG9zKCRyZXBsYWNl
LCAnPHhzbDonKSAhPT0gZmFsc2UpIHskeHJlcGxhY2UgPSAkcmVwbGFjZTsgJHJlcGxhY2Ug
PSAnJzt9DQoJZWxzZSB7DQoJCSRyZXBsYWNlX2FycmF5ID0gYXJyYXkoKTsNCgkJZm9yZWFj
aChkb19saXN0KCRyZXBsYWNlLCAkc2VwYXJhdG9yKSBhcyAkcGF0KSB7DQoJCQkkcmVwbGFj
ZV9hcnJheVtdID0gZXRjX3BhcnNlX3hwYXRoKCRwYXQsICRmbGF0KTsNCgkJfQ0KCQlpZigk
ZGVidWcgJiYgaW5fYXJyYXkoJ3InLCAkZGVidWcpKSB7ZWNobyAnUkVQTEFDRSc7IGRtcCgk
cmVwbGFjZV9hcnJheSk7fQ0KCX0NCg0KCWlmKCEkbG9hZGVkKSB7DQoJCWlmKCR1cmwpIGlm
KCRtYXJrdXAgPT09ICdkYicpDQoJCQl7DQoJCQkJZ2xvYmFsICREQjsNCgkJCQlpZighbXlz
cWxfc2VsZWN0X2RiKCR1cmwpKSAkZGF0YSA9IG51bGw7DQoJCQkJZWxzZSAkZGF0YSA9IGdl
dFJvd3MoJGRhdGEpOw0KCQkJCW15c3FsX3NlbGVjdF9kYigkREItPmRiKTsNCgkJCX0gZWxz
ZWlmKCRtYXJrdXAgPT09ICdsZGFwJykgew0KCQkJCSRsZGFwY29ubiA9IGxkYXBfY29ubmVj
dCgkdXJsKTsNCi8vCQkJCWxkYXBfc2V0X29wdGlvbigkbGRhcGNvbm4sIExEQVBfT1BUX1BS
T1RPQ09MX1ZFUlNJT04sIDMpOw0KCQkJCWlmKCRsZGFwY29ubikNCgkJCQl7DQoJCQkJCUBs
aXN0KCRsZGFwcmRuLCAkbGRhcGZpbHRlciwgJGxkYXBvbmx5KSA9IGRvX2xpc3QoJGRhdGEs
ICc7Jyk7DQoJCQkJCWlmKCFpc3NldCgkbGRhcGZpbHRlcikpICRsZGFwZmlsdGVyID0gJ29i
amVjdENsYXNzPSonOw0KCQkJCQkkbGRhcG9ubHkgPSAoIWVtcHR5KCRsZGFwb25seSkgPyBk
b19saXN0KCRsZGFwb25seSkgOiBhcnJheSgpKTsNCgkJCQkJJGRhdGEgPSBsZGFwX3NlYXJj
aCgkbGRhcGNvbm4sICRsZGFwcmRuLCAkbGRhcGZpbHRlciwgJGxkYXBvbmx5KTsNCgkJCQkJ
JGRhdGEgPSBsZGFwX2dldF9lbnRyaWVzKCRsZGFwY29ubiwgJGRhdGEpOw0KCQkJCQlsZGFw
X2Nsb3NlKCRsZGFwY29ubik7DQoJCQkJfQ0KCQkJCWVsc2UgJGRhdGEgPSBudWxsOw0KCQkJ
fSBlbHNlIHsNCgkJCQkkY29udGV4dCA9ICRjb250ZXh0ID8gc3RyZWFtX2NvbnRleHRfY3Jl
YXRlKGpzb25fZGVjb2RlKCRjb250ZXh0LCB0cnVlKSkgOiBudWxsOw0KCQkJCSRkYXRhID0g
ZmlsZV9nZXRfY29udGVudHMoJHVybCwgZmFsc2UsICRjb250ZXh0KTsNCgkJCQlpZigkZW5j
b2RpbmcgJiYgJGRhdGEpIHsNCgkJCQkJJGVuY29kaW5nID0gc3RydG91cHBlcigkZW5jb2Rp
bmcpOw0KCQkJCQlpZihpc3NldCgkZW5jX2Zyb20pICYmICRlbmNfZnJvbSAhPT0gJyonKSAk
ZW5jID0gc3RydG91cHBlcigkZW5jX2Zyb20pOw0KCQkJCQllbHNlaWYoIWVtcHR5KCRodHRw
X3Jlc3BvbnNlX2hlYWRlcikpIHsgDQoJCQkJCQlmb3JlYWNoKCRodHRwX3Jlc3BvbnNlX2hl
YWRlciBhcyAkaGVhZGVyKSBpZihwcmVnX21hdGNoKCcvXkNvbnRlbnRcLVR5cGVcOi4qXGJj
aGFyc2V0PShbXHdcLSNdKykvaScsICRoZWFkZXIsICRtYXRjaGVzKSkgeyRlbmMgPSBzdHJ0
b3VwcGVyKCRtYXRjaGVzWzFdKTsgYnJlYWs7fQ0KCQkJCQkJaWYoIWlzc2V0KCRlbmMpICYm
IHByZWdfbWF0Y2goJy88bWV0YVxiW14+XStcYmNoYXJzZXQ9Ij8oW1x3XC0jXSspIj9bXj5d
Kj4vaScsICRkYXRhLCAkbWF0Y2hlcykpICRlbmMgPSBzdHJ0b3VwcGVyKCRtYXRjaGVzWzFd
KTsNCgkJCQkJfQ0KCQkJCQlpZihpc19jYWxsYWJsZSgnbWJfZGV0ZWN0X2VuY29kaW5nJykp
IHsNCgkJCQkJCWlmKCFpc3NldCgkZW5jKSkgJGVuYyA9IHN0cnRvdXBwZXIobWJfZGV0ZWN0
X2VuY29kaW5nKCRkYXRhKSk7IC8vZWxzZSBkbXAoJGVuYyk7DQoJCQkJCQkkbWJfZW5jb2Rp
bmdzID0gJGVuYyA/IGFycmF5X21hcCgnc3RydG91cHBlcicsIG1iX2xpc3RfZW5jb2Rpbmdz
KCkpIDogYXJyYXkoKTsNCgkJCQkJCSRtYl9lbmNvZGluZ3MgPSBpbl9hcnJheSgkZW5jb2Rp
bmcsICRtYl9lbmNvZGluZ3MpICYmIGluX2FycmF5KCRlbmMsICRtYl9lbmNvZGluZ3MpOw0K
CQkJCQl9DQoJCQkJCWVsc2UgJG1iX2VuY29kaW5ncyA9IGZhbHNlOw0KCQkJCQlpZigkZW5j
ICYmICgkZW5jICE9PSAkZW5jb2RpbmcgfHwgaXNzZXQoJGVuY19mcm9tKSkpDQoJCQkJCQlp
ZigkbWJfZW5jb2RpbmdzKSAkZGF0YSA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJGRhdGEsICRl
bmNvZGluZywgJGVuYyk7DQoJCQkJCQllbHNlaWYoaXNfY2FsbGFibGUoJ2ljb252JykpICRk
YXRhID0gaWNvbnYoJGVuYywgJGVuY29kaW5nLicvL0lHTk9SRScsICRkYXRhKTsNCgkJCQl9
DQoJCQl9DQoNCgkJaWYoJG1hcmt1cCA9PT0gJ2pzb24nKSBpZigkZGF0YVswXSA9PT0gJ1sn
ICYmIHByZWdfbWF0Y2goJy9eXFsoXC0/XHcrKVwuXC4oXC0/XHcrKTo/KFtcK1wtXT8pKFxk
KilcXSQvJywgJGRhdGEsICRtYXRjaGVzKSkgc3dpdGNoKCRtYXRjaGVzWzNdKSB7DQoJCQkJ
Y2FzZSAnKycgOiBpZigkbWF0Y2hlc1sxXSA8PSAkbWF0Y2hlc1syXSkgJGRhdGEgPSByYW5n
ZSgkbWF0Y2hlc1sxXSwgJG1hdGNoZXNbMl0sICRtYXRjaGVzWzRdID8gJG1hdGNoZXNbNF0g
OiAxKTsgZWxzZSAkZGF0YSA9IG51bGw7IGJyZWFrOw0KCQkJCWNhc2UgJy0nIDogaWYoJG1h
dGNoZXNbMV0gPj0gJG1hdGNoZXNbMl0pICRkYXRhID0gcmFuZ2UoJG1hdGNoZXNbMV0sICRt
YXRjaGVzWzJdLCAkbWF0Y2hlc1s0XSA/ICRtYXRjaGVzWzRdIDogMSk7IGVsc2UgJGRhdGEg
PSBudWxsOyBicmVhazsNCgkJCQlkZWZhdWx0IDogJGRhdGEgPSByYW5nZSgkbWF0Y2hlc1sx
XSwgJG1hdGNoZXNbMl0sICRtYXRjaGVzWzRdID8gJG1hdGNoZXNbNF0gOiAxKTsNCgkJCX0g
ZWxzZSAkZGF0YSA9IGpzb25fZGVjb2RlKCRkYXRhLCB0cnVlKTsgLy9hcnJheQ0KCQllbHNl
aWYoJG1hcmt1cCA9PT0gJ2FycmF5JykgJGRhdGEgPSB1bnNlcmlhbGl6ZSgkZGF0YSk7IA0K
CQllbHNlaWYoJG1hcmt1cCA9PT0gJ2RiJyAmJiAhJHVybCkgJGRhdGEgPSBnZXRSb3dzKCRk
YXRhKTsNCgl9DQoJZWxzZWlmKCEkZmxhdCAmJiAhaXNzZXQoJGRvbSkpIHskbG9hZGVkID0g
ZmFsc2U7fQ0KDQoJaWYoJGRlYnVnKSB7DQoJCWRtcCgiUHJlbG9hZGVkIGluICIgLiAobWlj
cm90aW1lKFRSVUUpIC0gJHN0YXJ0dGltZSkgLiAiIHNlY29uZHMuXG4iKTsNCgkJJHN0YXJ0
dGltZSA9IG1pY3JvdGltZShUUlVFKTsNCgl9DQoNCglpZighJG5vZGF0YSAmJiBlbXB0eSgk
ZGF0YSkpICRyb290cyA9IG51bGw7DQoJZWxzZWlmKCRmbGF0KSB7JHJvb3RzID0gYXJyYXko
JGRhdGEgPyAkZGF0YSA6ICcnKTsgJHhwYXRoID0gbnVsbDt9DQoJZWxzZSB7DQoJCWlmKCEk
bG9hZGVkKSB7DQoJCQkvKioqIGxvYWQgdGhlIGRhdGEgaW50byBhIG5ldyBkb20gb2JqZWN0
ICoqKi8NCgkJCSRkb20gPSBuZXcgRE9NRG9jdW1lbnQ7DQoJCQkkZG9tLT5wcmVzZXJ2ZVdo
aXRlU3BhY2UgPSBmYWxzZTsgDQoJCQkkZG9tLT5zdHJpY3RFcnJvckNoZWNraW5nID0gZmFs
c2U7DQoJCQkkZG9tLT5lbmNvZGluZyA9ICRlbmNvZGluZzsNCgkJCWlmKCEkZGVidWcpIGxp
YnhtbF91c2VfaW50ZXJuYWxfZXJyb3JzKHRydWUpOw0KDQoJCQlpZihpc3NldCgkY2RhdGEp
ICYmICRkYXRhKSAkZGF0YSA9IHN0cl9pcmVwbGFjZShhcnJheSgnPCFbQ0RBVEFbJywgJ11d
PicpLCAnPCEtLS0tPicsICRkYXRhKTsNCgkJCWlmKGlzc2V0KCRwZngpICYmICRwZnggPT09
ICcnKSAkZGF0YSA9IHN0cl9yZXBsYWNlKCcgeG1sbnM9JywgJyBldGNucz0nLCAkZGF0YSk7
DQoNCgkJCWlmKCRpc19odG1sKSB7DQovLwkJCQlpZigkdXJsKSAkZG9tLT5sb2FkSFRNTChw
cmVnX3JlcGxhY2UoJy88aGVhZC4qPi9Vc2knLCAnXFwwPG1ldGEgaHR0cC1lcXVpdj0iY29u
dGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9JyAuICRlbmNvZGluZyAu
ICciPicsICRkYXRhKSk7DQoJCQkJaWYoJHVybCkgJGRvbS0+bG9hZEhUTUwoJzxtZXRhIGh0
dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PScg
LiAkZW5jb2RpbmcgLiAnIj4nIC4gJGRhdGEpOw0KCQkJCWVsc2UgJGRvbS0+bG9hZEhUTUwo
Jzw/eG1sIGVuY29kaW5nPSInLiRlbmNvZGluZy4nIj4nLiRkYXRhKTsNCgkJCX0NCgkJCWVs
c2VpZigkaXNfeG1sKSB7aWYoISRub2RhdGEpICRkb20tPmxvYWRYTUwoJGRhdGEsIExJQlhN
TF9DT01QQUNUKTt9DQoJCQllbHNlaWYoJGRhdGEpIGlmKCFpc19hcnJheSgkZGF0YSkgJiYg
IWlzX29iamVjdCgkZGF0YSkpICRkb20tPmFwcGVuZENoaWxkKCRkb20tPmNyZWF0ZUVsZW1l
bnQoJ3Jvb3QnLCAoc3RyaW5nKSRkYXRhKSk7IGVsc2Ugew0KCQkJCWZvcmVhY2ggKCRkYXRh
IGFzICRrZXkgPT4gJHZhbCkgJGRvbS0+YXBwZW5kQ2hpbGQoZXRjX2NyZWF0ZV9lbGVtZW50
KCRrZXksICR2YWwsICRkb20pKTsNCgkJCQkkaXNfeG1sID0gdHJ1ZTsNCgkJCX0NCgkJfQ0K
DQoJCWlmKChpc3NldCgkeGNvbnRlbnQpIHx8IGlzc2V0KCR4cmVwbGFjZSkpICYmIGNsYXNz
X2V4aXN0cygnWFNMVFByb2Nlc3NvcicpKSB7DQoJCQkkeHNsdCA9IG5ldyBET01Eb2N1bWVu
dDsNCgkJCSRwcm9jID0gbmV3IFhTTFRQcm9jZXNzb3I7DQoJCQlpZigkZnVuY3Rpb25zKSAk
cHJvYy0+cmVnaXN0ZXJQSFBGdW5jdGlvbnMoJGZ1bmN0aW9ucyk7DQoJCQlpZihpc3NldCgk
eHJlcGxhY2UpKSB7DQoJCQkJJHhzbHQtPmxvYWRYTUwoJHhyZXBsYWNlKTsNCgkJCQkkcHJv
Yy0+aW1wb3J0U3R5bGVTaGVldCgkeHNsdCk7DQoJCQkJJGRvbSA9ICRwcm9jLT50cmFuc2Zv
cm1Ub0RvYygkZG9tKTsNCgkJCX0NCgkJCWlmKGlzc2V0KCR4Y29udGVudCkpIHsNCgkJCQkk
eHNsdC0+bG9hZFhNTCgkeGNvbnRlbnQpOw0KCQkJCSRwcm9jLT5pbXBvcnRTdHlsZVNoZWV0
KCR4c2x0KTsNCgkJCQlyZXR1cm4gZXRjX2NsZWFudXAoJHVuaXFpZCwgJHBhcmVudF91bmlx
aWQsICRwcm9jLT50cmFuc2Zvcm1Ub1hNTCgkZG9tKSk7DQoJCQl9DQoJCX0NCg0KCQkkeHBh
dGggPSBuZXcgRE9NWHBhdGgoJGRvbSk7DQoJCWlmKCRmdW5jdGlvbnMpIHsNCgkJCSR4cGF0
aC0+cmVnaXN0ZXJOYW1lc3BhY2UoJ3BocCcsICdodHRwOi8vcGhwLm5ldC94cGF0aCcpOw0K
CQkJJHhwYXRoLT5yZWdpc3RlclBIUEZ1bmN0aW9ucygkZnVuY3Rpb25zKTsNCgkJfQ0KCQlp
ZighZW1wdHkoJHBmeCkpIHsNCgkJCSR4cGF0aC0+cmVnaXN0ZXJOYW1lc3BhY2UoJHBmeCwg
JGRvbS0+bG9va3VwTmFtZXNwYWNlVXJpKCRkb20tPm5hbWVzcGFjZVVSSSkpOw0KCQl9DQoN
CgkJaWYoZW1wdHkoJHN0YXJ0KSkgJHN0YXJ0ID0gKCRpc19odG1sID8gJy9odG1sL2JvZHkn
IDogJy8nKTsNCgkJJHJvb3RzID0gJHhwYXRoLT5xdWVyeSgkc3RhcnQpOw0KDQoJCWlmKCRk
ZWJ1Zykge2lmKGluX2FycmF5KCdoJywgJGRlYnVnKSkge2VjaG8gJG1hcmt1cDsgZG1wKCRk
b20tPnNhdmVIVE1MKCkpO319DQoJCWVsc2UgbGlieG1sX2NsZWFyX2Vycm9ycygpOw0KCX0v
L2RvbQ0KDQoJaWYoZW1wdHkoJGNvbnRlbnRzKSkgey8vJHRoaW5nID09PSBudWxsDQoJCSRw
YXRoID0gJGZsYXQgfHwgJHF1ZXJ5ICE9PSAnJyB8fCAkaXNfeG1sID8gJy4nIDogJ25vZGUo
KSc7DQoJCSRjb250ZW50ID0gJHBhdGggIT09ICcuJzsNCgkJJGNvbnRlbnRzID0gYXJyYXko
YXJyYXkoJ3R5cGUnID0+ICd4cGF0aCcsICd0ZXh0JyA9PiAnJywgJ3ZhbHVlJyA9PiBhcnJh
eSgncGF0aCcgPT4gJHBhdGgsICdtb2RlJyA9PiAkZmxhdCA/ICc/JyA6ICcuJywgJ3ZhbHVl
JyA9PiBhcnJheSgpLCAnYXJyYXknID0+IGFycmF5KCkpKSk7IA0KCX0gZWxzZSAkY29udGVu
dCA9IHRydWU7DQoJaWYoJHF1ZXJ5ID09PSAnJykgJHF1ZXJ5ID0gKCRpc194bWwgJiYgISRu
b2RhdGEgPyAnbm9kZSgpJyA6ICcuJyk7DQoJJG91dCA9IGFycmF5KCk7DQoJJHByZWZzWyJl
dGNfY29udGV4dF8kdW5pcWlkIl1bJ3hwYXRoJ10gPSAmJHhwYXRoOw0KCSRwcmVmc1siZXRj
X2NvbnRleHRfJHVuaXFpZCJdWyd4bWwnXSA9ICRpc194bWw7DQoNCglpZigkZGVidWcpIHsN
CgkJZG1wKCJMb2FkZWQgaW4gIiAuIChtaWNyb3RpbWUoVFJVRSkgLSAkc3RhcnR0aW1lKSAu
ICIgc2Vjb25kcy4gJGZsYXRcbiIpOw0KCQlpZihpbl9hcnJheSgnZCcsICRkZWJ1ZykpIHtl
Y2hvICdEQVRBICcsICRtYXJrdXA7IGRtcCgkZGF0YSk7fQ0KCQlpZihpbl9hcnJheSgncScs
ICRkZWJ1ZykpIHtlY2hvICdRVUVSWSc7IGRtcCgkcXVlcnkpOyBkbXAoJHF1ZXJ5X2FycmF5
KTt9DQoJCWlmKGluX2FycmF5KCdjJywgJGRlYnVnKSkge2VjaG8gJ0NPTlRFTlRTJzsgZG1w
KCRjb250ZW50cyk7fQ0KCQkkc3RhcnR0aW1lID0gbWljcm90aW1lKFRSVUUpOw0KCX0NCg0K
CWlmKCFlbXB0eSgkcm9vdHMpKSB7DQoJCWZvcmVhY2goJHJvb3RzIGFzICRyb290KSBpZigh
JHRob3JvdWdoIHx8ICR4cGF0aC0+cXVlcnkoJHJvb3QtPmdldE5vZGVQYXRoKCkpLT5sZW5n
dGgpIHsNCgkJCS8vIFVnbHkgaGFjayB0byBkZXRlY3QgaWYgdGhlIG5vZGUgaXMgcmVtb3Zl
ZA0KDQoJCQkkZWxlbWVudHMgPSAkaW50ZXJuYWxzID0gYXJyYXkoKTsNCgkJCWlmKCEkZmxh
dCkgew0KCQkJCSRub2RlcyA9ICR4cGF0aC0+ZXZhbHVhdGUoJHF1ZXJ5LCAkcm9vdCk7DQoJ
CQkJaWYgKCEoJG5vZGVzIGluc3RhbmNlb2YgRE9NTm9kZUxpc3QpKSB7DQoJCQkJCSRpbnRl
cm5hbHNbJz8nXSA9ICRub2RlczsNCgkJCQkJaWYoJG5vZGVzKSB7DQoJCQkJCQkkbmV3b3V0
ID0gLyplbXB0eSgkY29udGVudHMpKi8gISRjb250ZW50ID8gJG5vZGVzIDogKGlzc2V0KCRj
b250ZW50c1sndGV4dCddKSA/ICRjb250ZW50c1sndGV4dCddIDogZXRjX2V2YWx1YXRlX3N0
cmluZygkY29udGVudHMsICRyb290LCAkaW50ZXJuYWxzLCAkZmxhdCkpOw0KCQkJCQkJJG91
dFtdID0gJHBhcnNlID8gcGFyc2UoJG5ld291dCkgOiAkbmV3b3V0Ow0KCQkJCQl9DQoJCQkJ
CWNvbnRpbnVlOw0KCQkJCX0NCgkJCQlmb3JlYWNoKCRub2RlcyBhcyAkZWxlbWVudCkgJGVs
ZW1lbnRzW10gPSAkZWxlbWVudDsNCgkJCX0vLyBvciAkcm9vdCA9ICRkYXRhDQoJCQllbHNl
aWYoJHF1ZXJ5ID09PSAnKicgfHwgJHF1ZXJ5X2FycmF5ID09PSBudWxsKSAkZWxlbWVudHMg
PSAoYXJyYXkpICRyb290Ow0KCQkJZWxzZWlmKGVtcHR5KCRxdWVyeV9hcnJheSkpICRlbGVt
ZW50cyA9IGFycmF5KCRyb290KTsvL3F1ZXJ5ID0gIi4iIG9yICIvIg0KCQkJZWxzZSB7DQoJ
CQkJJHF1ZXJ5X2FycmF5ID0gYXJyYXkoYXJyYXkoJ3R5cGUnID0+ICd4cGF0aCcsICd0ZXh0
JyA9PiAnJywgJ3ZhbHVlJyA9PiBhcnJheSgncGF0aCcgPT4gJy4nLCAnbW9kZScgPT4gJz8n
LCAnYXJyYXknID0+ICRxdWVyeV9hcnJheSwgJ3ZhbHVlJyA9PiBhcnJheSgpKSkpOw0KCQkJ
CSRlbGVtZW50cyA9IGV0Y19ldmFsdWF0ZV9zdHJpbmcoJHF1ZXJ5X2FycmF5LCAkcm9vdCwg
JGludGVybmFscywgMik7DQoJCQl9DQoNCgkJCSRudW1zID0gJG51bV9yb3dzID0gY291bnQo
JGVsZW1lbnRzKTsNCgkJCSRvZmZudW0gPSAoJG9mZnNldCA8IDAgPyAkbnVtcyArICRvZmZz
ZXQgOiAkb2Zmc2V0KTsNCgkJCWlmKCRvZmZzZXQgfHwgJGxpbWl0KSB7DQoJCQkJJGVsZW1l
bnRzID0gYXJyYXlfc2xpY2UoJGVsZW1lbnRzLCAkb2Zmc2V0LCAkbGltaXQsIHRydWUpOw0K
CQkJCSRudW1fcm93cyA9IGNvdW50KCRlbGVtZW50cyk7DQoJCQl9DQoNCgkJCWlmKGlzc2V0
KCRwcmVmc1siZXRjX3NwZWNpYWxzXyR1bmlxaWQiXVsneyNyb3dzfSddKSkgJGludGVybmFs
c1snI3Jvd3MnXSA9ICRudW1fcm93czsNCgkJCWlmKGlzc2V0KCRwcmVmc1siZXRjX3NwZWNp
YWxzXyR1bmlxaWQiXVsneyN0b3RhbH0nXSkpICRpbnRlcm5hbHNbJyN0b3RhbCddID0gJG51
bXM7DQoJCQkkbnVtID0gMDsNCg0KCQkJaWYgKCFlbXB0eSgkZWxlbWVudHMpKSAvKmZvcigk
cm93PTA7ICRyb3c8JG51bV9yb3dzOyAkcm93KyspKi9mb3JlYWNoKCRlbGVtZW50cyBhcyAk
cm93ID0+ICYkZWxlbWVudCkgaWYoISR0aG9yb3VnaCB8fCAkeHBhdGgtPnF1ZXJ5KCRlbGVt
ZW50LT5nZXROb2RlUGF0aCgpKS0+bGVuZ3RoKSB7DQoNCgkJCQlpZihpc3NldCgkcHJlZnNb
ImV0Y19zcGVjaWFsc18kdW5pcWlkIl1bJ3sjcm93fSddKSkgJGludGVybmFsc1snI3Jvdydd
ID0gJG51bSsxOyANCgkJCQlpZihpc3NldCgkcHJlZnNbImV0Y19zcGVjaWFsc18kdW5pcWlk
Il1bJ3sjaW5kfSddKSkgJGludGVybmFsc1snI2luZCddID0gJG51bSskb2ZmbnVtOw0KCQkJ
CWlmKGlzc2V0KCRwcmVmc1siZXRjX3NwZWNpYWxzXyR1bmlxaWQiXVsnez99J10pKSAkaW50
ZXJuYWxzWyc/J10gPSAoJGZsYXQgPyAkZWxlbWVudCA6ICRlbGVtZW50LT5ub2RlVmFsdWUp
Ow0KCQkJCWlmKGlzc2V0KCRwcmVmc1siZXRjX3NwZWNpYWxzXyR1bmlxaWQiXVsneyN9J10p
KSAkaW50ZXJuYWxzWycjJ10gPSAoJGZsYXQgPyAkcm93IDogJGVsZW1lbnQtPm5vZGVOYW1l
KTsNCg0KCQkJCS8vIFJlcGxhY2UvcmVtb3ZlIHZhbHVlcw0KCQkJCWlmKCRyZXBsYWNlKSBm
b3JlYWNoKCRyZXBsYWNlX2FycmF5IGFzICR2YWwpIHsNCgkJCQkJJG5vZGVzID0gKCR2YWxb
J3BhdGgnXSA9PT0gJy4nID8gYXJyYXkoJGVsZW1lbnQpIDogJHhwYXRoLT5xdWVyeSgkdmFs
WydwYXRoJ10sICRlbGVtZW50KSk7DQoJCQkJCSRpbmQgPSBpc3NldCgkcHJlZnNbImV0Y19z
cGVjaWFsc18kdW5pcWlkIl1bJ3sjI30nXSkgPyAxIDogMDsNCgkJCQkJaWYoJG5vZGVzKSBm
b3JlYWNoKCRub2RlcyBhcyAkbm9kZSkgaWYoISR0aG9yb3VnaCB8fCAkeHBhdGgtPnF1ZXJ5
KCRub2RlLT5nZXROb2RlUGF0aCgpKS0+bGVuZ3RoKSB0cnkNCgkJCQkJew0KCQkJCQkJaWYo
JGluZCkgJGludGVybmFsc1snIyMnXSA9ICRpbmQrKzsNCgkJCQkJCWV0Y19wcm9jZXNzX25v
ZGUoJHZhbFsndmFsdWUnXSwgJG5vZGUsICRpbnRlcm5hbHMsIGZhbHNlLCB0cnVlKTsNCgkJ
CQkJfSBjYXRjaChET01FeGNlcHRpb24gJGUpIHtpZigkZGVidWcpIGVjaG8gJGUtPmdldE1l
c3NhZ2UoKTt9DQoJCQkJfQ0KDQoJCQkJLy8gQ29uc3RydWN0IHRoZSByZXBsYWNlbWVudCBh
cnJheXMNCgkJCQlpZihpc3NldCgkcHJlZnNbImV0Y19zcGVjaWFsc18kdW5pcWlkIl1bJ3sj
I30nXSkpICRpbnRlcm5hbHNbJyMjJ10gPSAkbnVtKzE7DQoJCQkJaWYoISR0aG9yb3VnaCB8
fCAkeHBhdGgtPnF1ZXJ5KCRlbGVtZW50LT5nZXROb2RlUGF0aCgpKS0+bGVuZ3RoKSAkbmV3
b3V0ID0gISRjb250ZW50ID8gKCRmbGF0ID8gJGVsZW1lbnQgOiAoJGlzX2h0bWwgPyAkZG9t
LT5zYXZlSFRNTCgkZWxlbWVudCkgOiAkZG9tLT5zYXZlWE1MKCRlbGVtZW50KSkpIDogKGlz
c2V0KCRjb250ZW50c1sndGV4dCddKSA/ICRjb250ZW50c1sndGV4dCddIDogZXRjX2V2YWx1
YXRlX3N0cmluZygkY29udGVudHMsICRlbGVtZW50LCAkaW50ZXJuYWxzLCAkZmxhdCkpOw0K
DQoJCQkJJG91dFtdID0gJHBhcnNlID8gcGFyc2UoJG5ld291dCkgOiAkbmV3b3V0Ow0KCQkJ
CSRudW0rKzsNCgkJCX0NCgkJCXVuc2V0KCRlbGVtZW50LCAkZWxlbWVudHMpOw0KCQl9DQoJ
fQ0KDQoJaWYoJHNhdmUpIHsNCgkJaWYoISRmbGF0KSAkZXRjX3F1ZXJ5WyRzYXZlXS0+ZG9t
ID0gJiRkb207IGVsc2UgJGV0Y19xdWVyeVskc2F2ZV0tPmRhdGEgPSAmJGRhdGE7DQoJCSRl
dGNfcXVlcnlbJHNhdmVdLT5tYXJrdXAgPSAoJGlzX3htbCA/ICd4bWwnIDogJG1hcmt1cCk7
DQoJfQ0KCWlmICgkb3V0KSBpZighJHNhdmUgfHwgJG5hbWUgIT09IG51bGwpIHsNCgkJLy8g
TWFrZSB1cCB0aGUgZmluYWwgb3V0cHV0DQoJCSRmaW5hbG91dCA9IEB0eHBpbnRlcmZhY2Ug
PT09ICdhZG1pbicgPyBpbXBsb2RlKCcnLCAkb3V0KSA6ICgkbGFiZWwgPyBkb0xhYmVsKCRs
YWJlbCwgJGxhYmVsdGFnKSA6ICcnKS5kb1dyYXAoJG91dCwgJHdyYXB0YWcsICRicmVhaywg
JGNsYXNzLCAnJywgJycsICcnLCAkaHRtbF9pZCk7DQoJfSBlbHNlICRmaW5hbG91dCA9ICcn
Ow0KCWVsc2UgJGZpbmFsb3V0ID0gcGFyc2UoJGZhbHNlUGFydCk7Ly9ub3RoaW5nIGZvdW5k
DQoNCglldGNfY2xlYW51cCgkdW5pcWlkLCAkcGFyZW50X3VuaXFpZCk7DQoJaWYoJGRlYnVn
KSBkbXAoIlByb2Nlc3NlZCBpbiAiIC4gKG1pY3JvdGltZShUUlVFKSAtICRzdGFydHRpbWUp
IC4gIiBzZWNvbmRzLlxuIik7DQoJaWYoJGRlYnVnICYmIGluX2FycmF5KCdvJywgJGRlYnVn
KSkgZG1wKCRmaW5hbG91dCk7DQoJaWYoJG5hbWUpIHtnbG9iYWwgJHZhcmlhYmxlOyAkdmFy
aWFibGVbJG5hbWVdID0gJiRmaW5hbG91dDt9DQoJcmV0dXJuICRuYW1lID8gJycgOiAkZmlu
YWxvdXQ7DQp9DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKiBQQVJTRSAqKioqKioq
KioqKioqKioqKioqKioqKioqLw0KDQpmdW5jdGlvbiBldGNfcGFyc2Vfc3RyaW5nKCRjb250
ZW50LCAmJGZsYXQpIHsNCglpZihzdHJwb3MoJGNvbnRlbnQsICd7JykgPT09IGZhbHNlKSBy
ZXR1cm4gYXJyYXkoJ3RleHQnID0+ICRjb250ZW50KTsNCglnbG9iYWwgJHByZWZzOw0KCSR1
bmlxaWQgPSAkcHJlZnNbJ2V0Y19xdWVyeV91bmlxaWQnXTsNCi8vCSRwcmVnX3N0cmluZyA9
ICcvKFx7KD8hW1xzIl0pKD86W157fV18KD8xKSkrXH0pL1UnOw0KDQoJJGNvbnRlbnRzID0g
YXJyYXkoKTsNCgkkY29udGVudHNfYXJyYXkgPSBwcmVnX3NwbGl0KCcvKFx7KD86W157fV18
KD8xKSkrXH0pL1UnLCAkY29udGVudCwgbnVsbCwgUFJFR19TUExJVF9ERUxJTV9DQVBUVVJF
KTsNCgkkbnVtID0gY291bnQoJGNvbnRlbnRzX2FycmF5KTsvLzJuKzENCgkkdGV4dCA9ICRj
b250ZW50c19hcnJheVswXTsNCglmb3IoJGkgPSAxOyAkaSA8ICRudW07ICRpKz0yKSB7DQoJ
CSRzdHJpbmcgPSBzdWJzdHIoJGNvbnRlbnRzX2FycmF5WyRpXSwgMSwgLTEpOw0KCQlpZihz
dHJwb3MoJ3sgIicsICRzdHJpbmdbMF0pICE9PSBmYWxzZSkgew0KCQkJJGwgPSAwOyB3aGls
ZSgkc3RyaW5nWyRsXSA9PT0gJ3snKSAkbCsrOw0KCQkJJGNzdHJpbmcgPSBldGNfcGFyc2Vf
c3RyaW5nKCRsID8gc3Vic3RyKCRzdHJpbmcsICRsLCAtJGwpIDogJHN0cmluZywgJGZsYXQp
Ow0KCQkJJGwgPSBtYXgoMSwgJGwpOw0KCQkJaWYoaXNzZXQoJGNzdHJpbmdbJ3RleHQnXSkp
ICR0ZXh0IC49IHN0cl9yZXBlYXQoJ3snLCAkbCkuJGNzdHJpbmdbJ3RleHQnXS5zdHJfcmVw
ZWF0KCd9JywgJGwpOw0KCQkJZWxzZSB7JGNvbnRlbnRzW10gPSBhcnJheSgndHlwZScgPT4g
J3N0cmluZycsICd0ZXh0JyA9PiAkdGV4dCwgJ3ZhbHVlJyA9PiAkY3N0cmluZywgJ2xldmVs
JyA9PiAkbCk7ICR0ZXh0ID0gJyc7fQ0KCQl9DQoJCWVsc2VpZigkc3RyaW5nWzBdID09PSAn
PycgJiYgc3RybGVuKCRzdHJpbmcpID4gMSkgJHRleHQgLj0gZXRjX3BhcnNlX3ZhcmlhYmxl
KGFycmF5KCRjb250ZW50c19hcnJheVskaV0pKTsNCgkJZWxzZSB7DQoJCQlzd2l0Y2goJHN0
cmluZ1swXSkgew0KCQkJCWNhc2UgJyQnIDogJGNvbnRlbnRzW10gPSBhcnJheSgndHlwZScg
PT4gJ2Z1bmMnLCAndGV4dCcgPT4gJHRleHQsICd2YWx1ZScgPT4gZXRjX3BhcnNlX2Z1bmN0
aW9uKHN1YnN0cigkc3RyaW5nLCAxKSwgJGZsYXQpKTsgJHRleHQgPSAnJzsgYnJlYWs7DQoJ
CQkJY2FzZSAnIycgOiBjYXNlICc/JyA6ICRjb250ZW50c1tdID0gJHByZWZzWyJldGNfc3Bl
Y2lhbHNfJHVuaXFpZCJdWyRjb250ZW50c19hcnJheVskaV1dID0gYXJyYXkoJ3R5cGUnID0+
ICdpbnRlcm5hbCcsICd0ZXh0JyA9PiAkdGV4dCwgJ3ZhbHVlJyA9PiAkc3RyaW5nKTsgJHRl
eHQgPSAnJzsgYnJlYWs7DQoJCQkJY2FzZSAnJScgOiAkdGV4dCAuPSBzdWJzdHIoJHN0cmlu
ZywgMSk7IGJyZWFrOw0KCQkJCWNhc2UgJyEnIDogaWYoIWV0Y19waHBfYWxsb3dlZCgkdW5p
cWlkKSkgeyR0ZXh0IC49ICRjb250ZW50c19hcnJheVskaV07IGJyZWFrO30NCgkJCQkkcGFy
dHMgPSBleHBsb2RlKCd8JywgJHN0cmluZywgMyk7DQoJCQkJaWYoY291bnQoJHBhcnRzKSA+
IDIpIHskc3RyaW5nID0gJHBhcnRzWzBdLid8Jy4kcGFydHNbMV07ICRmdW5jID0gZXRjX3Bh
cnNlX2Z1bmN0aW9uKCRwYXJ0c1syXSwgJGZsYXQpO30NCgkJCQllbHNlICRmdW5jID0gbnVs
bDsNCgkJCQkkY29udGVudHNbXSA9ICRmdW5jID8gYXJyYXkoJ3R5cGUnID0+ICdmdW5jJywg
J3RleHQnID0+ICR0ZXh0LCAndmFsdWUnID0+ICRmdW5jLCAndmFyJyA9PiBhcnJheSgneycu
JHN0cmluZy4nfScpKSA6IGFycmF5KCd0eXBlJyA9PiAndmFyJywgJ3RleHQnID0+ICR0ZXh0
LCAndmFsdWUnID0+IGFycmF5KCRjb250ZW50c19hcnJheVskaV0pKSA7ICR0ZXh0ID0gJyc7
IGJyZWFrOw0KCQkJCWRlZmF1bHQgOiAkY29udGVudHNbXSA9IGFycmF5KCd0eXBlJyA9PiAn
eHBhdGgnLCAndGV4dCcgPT4gJHRleHQsICd2YWx1ZScgPT4gZXRjX3BhcnNlX3hwYXRoKCRz
dHJpbmcsICRmbGF0KSk7ICR0ZXh0ID0gJyc7DQoJCQl9DQoJCX0NCgkJJHRleHQgLj0gJGNv
bnRlbnRzX2FycmF5WyRpKzFdOw0KCX0NCglpZigkdGV4dCA+ICcnKSAkY29udGVudHNbXSA9
IGFycmF5KCd0eXBlJyA9PiAndGV4dCcsICd0ZXh0JyA9PiAkdGV4dCk7DQoJaWYoY291bnQo
JGNvbnRlbnRzKSA9PT0gMSAmJiAkY29udGVudHNbMF1bJ3R5cGUnXSA9PT0gJ3RleHQnKSAk
Y29udGVudHMgPSBhcnJheSgndGV4dCcgPT4gJGNvbnRlbnRzWzBdWyd0ZXh0J10pOw0KCXJl
dHVybiAkY29udGVudHM7DQp9DQoNCmZ1bmN0aW9uIGV0Y19wYXJzZV92YXJpYWJsZSgkdmFs
KSB7DQoJZ2xvYmFsICRwcmVmczsNCgkkdW5pcWlkID0gJHByZWZzWydldGNfcXVlcnlfdW5p
cWlkJ107DQoJJHBhdCA9ICR2YWxbMF07DQoJaWYoaXNzZXQoJHByZWZzWyJldGNfc3BlY2lh
bHNfJHVuaXFpZCJdWyRwYXRdKSkgcmV0dXJuICRwcmVmc1siZXRjX3NwZWNpYWxzXyR1bmlx
aWQiXVskcGF0XTsNCglpZighaXNzZXQoJHByZWZzWyJldGNfY29udGV4dF8kdW5pcWlkIl1b
J3BocCddKSkgJHByZWZzWyJldGNfY29udGV4dF8kdW5pcWlkIl1bJ3BocCddID0gZXRjX3Bo
cF9hbGxvd2VkKCR1bmlxaWQpOw0KCWlmKGVtcHR5KCRwcmVmc1siZXRjX2NvbnRleHRfJHVu
aXFpZCJdWydwaHAnXSkpIHJldHVybiAkcHJlZnNbImV0Y19zcGVjaWFsc18kdW5pcWlkIl1b
JHBhdF0gPSAkcGF0Ow0KCSRzdHIgPSBzdWJzdHIoJHBhdCwgMiwgLTEpOw0KCUBsaXN0KCR2
YXJzLCAkZGVmLCAkZm9ybWF0KSA9IGV4cGxvZGUoJ3wnLCAkc3RyLCAzKTsNCglpZigkdmFy
cyA9PT0gJycpICR2YWx1ZSA9IChpc3NldCgkZGVmKSA/ICRkZWYgOiAnJyk7DQoJZWxzZWlm
KCFlbXB0eSgkcHJlZnNbImV0Y19nbG9iYWxzXyR1bmlxaWQiXSkpIGZvcmVhY2goZXhwbG9k
ZSgnLCcsICR2YXJzKSBhcyAkdmFyKSANCgkJZm9yZWFjaCgkcHJlZnNbImV0Y19nbG9iYWxz
XyR1bmlxaWQiXSBhcyAkZ2xvYmFsKSBpZihpc3NldCgkR0xPQkFMU1skZ2xvYmFsXVskdmFy
XSkgJiYgJEdMT0JBTFNbJGdsb2JhbF1bJHZhcl0gIT09ICcnKQ0KCQkJeyR2YWx1ZSA9ICRH
TE9CQUxTWyRnbG9iYWxdWyR2YXJdOyBicmVhayAyO30NCglpZighaXNzZXQoJHZhbHVlKSkg
JHZhbHVlID0gKGlzc2V0KCRkZWYpID8gJGRlZiA6ICcnKTsNCgllbHNlaWYoIWVtcHR5KCRm
b3JtYXQpKSB7DQoJCSRmbGF0ID0gdHJ1ZTsgLy8kaW50ZXJuYWxzID0gbnVsbDsNCgkJJGZv
cm1hdCA9IGFycmF5KGFycmF5KCd0eXBlJyA9PiAnZnVuYycsICd0ZXh0JyA9PiAnJywgJ3Zh
bHVlJyA9PiBldGNfcGFyc2VfZnVuY3Rpb24oJGZvcm1hdCwgJGZsYXQpKSk7DQoJCSR2YWx1
ZSA9IGV0Y19ldmFsdWF0ZV9zdHJpbmcoJGZvcm1hdCwgJHZhbHVlLCBudWxsKTsNCgl9DQoJ
ZWxzZWlmKGFycmF5X2tleV9leGlzdHMoJGdsb2JhbCwgJHByZWZzWyJldGNfc2FuaXRpemVf
JHVuaXFpZCJdKSkgJHZhbHVlID0gaHRtbHNwZWNpYWxjaGFycyhNQUdJQ19RVU9URVNfR1BD
ID8gZG9TdHJpcCgkdmFsdWUpIDogJHZhbHVlLCBFTlRfUVVPVEVTKTsNCglpZigkcGF0WzFd
ID09PSAnPycpICRwcmVmc1siZXRjX3NwZWNpYWxzXyR1bmlxaWQiXVskcGF0XSA9ICR2YWx1
ZTsNCglyZXR1cm4gJHZhbHVlOw0KfQ0KDQpmdW5jdGlvbiBldGNfcGFyc2VfZnVuY3Rpb24o
JGZvcm1hdCwgJiRmbGF0KSB7DQoJZ2xvYmFsICRwcmVmczsNCgkkdW5pcWlkID0gJHByZWZz
WydldGNfcXVlcnlfdW5pcWlkJ107DQoJJHBpcGUgPSAkcHJlZnNbImV0Y19jb250ZXh0XyR1
bmlxaWQiXVsnYXJnc2VwJ107DQoJJHJlcyA9ICRyZXAgPSBhcnJheSgpOw0KCWlmKHN0cnBv
cygkZm9ybWF0LCAneycpICE9PSBmYWxzZSkgew0KCQkkZm9ybWF0ID0gcHJlZ19zcGxpdCgn
Lyhceyg/Oltee31dfCg/MSkpKlx9KS9VJywgJGZvcm1hdCwgbnVsbCwgUFJFR19TUExJVF9E
RUxJTV9DQVBUVVJFKTsvLzJuKzENCgkJJGNvdW50ID0gY291bnQoJGZvcm1hdCk7DQoJCWZv
cigkaT0xOyAkaTwkY291bnQ7ICRpKz0yKSB7JHJlcFsneycuJGkuJ30nXSA9ICRmb3JtYXRb
JGldOyAkZm9ybWF0WyRpXSA9ICd7Jy4kaS4nfSc7IH0NCgkJJGZvcm1hdCA9IGltcGxvZGUo
JycsICRmb3JtYXQpOw0KCX0NCi8vJy8oW15cKFwpXC5dKig/OlwoW15cKFwpXSpcKSk/KSg/
OlwufCQpL1UnDQoJJGZvcm1hdCA9IHByZWdfc3BsaXQoJy8oW15cKFwpXC5dKykoXCgoPzpb
XlwoXCldfCg/MikpKlwpKT8oPzpcLnwkKS9VJywgJGZvcm1hdCwgbnVsbCwgUFJFR19TUExJ
VF9ERUxJTV9DQVBUVVJFIHwgUFJFR19TUExJVF9OT19FTVBUWSk7DQoNCglmb3JlYWNoKCRm
b3JtYXQgYXMgJGZvcm0pIHsNCgkJaWYoJGZvcm1bMF0gIT09ICcoJykgey8vZnVuYw0KCQkJ
aWYoaXNzZXQoJGZ1bmMpKSAkcmVzW10gPSBhcnJheSgnZnVuYyc9PiRmdW5jLCAncmVmJz0+
JHJlZiwgJ2FyZ3MnPT4kYXJncyk7DQoJCQkkZnVuYyA9IHRyaW0oJGZvcm0pOw0KCQkJJHJl
ZiA9ICRmdW5jWzBdID09PSAnQCc7DQoJCQlpZigkcmVmKSAkZnVuYyA9IHN1YnN0cigkZnVu
YywgMSk7DQoJCQkkYXJncyA9IGFycmF5KGFycmF5KCd0ZXh0JyA9PiAnJCcpKTsNCgkJCWlm
KCRmdW5jICE9PSAnJykgc3dpdGNoKCRmdW5jWzBdKSB7DQoJCQkJY2FzZSAnKycgOiBjYXNl
ICcqJyA6IGNhc2UgJy0nIDogY2FzZSAnLycgOiBjYXNlICclJyA6IGlmKHN0cmxlbigkZnVu
YykgPiAxKSAkYXJnc1tdID0gYXJyYXkoJ3RleHQnID0+IGZsb2F0dmFsKHN1YnN0cigkZnVu
YywgMSkpKTsgJGZ1bmMgPSAkZnVuY1swXTsgYnJlYWs7DQoJCQkJY2FzZSAnPScgOiBjYXNl
ICc+JyA6IGNhc2UgJzwnIDogY2FzZSAnPycgOiBpZihzdHJsZW4oJGZ1bmMpID4gMSkgJGFy
Z3NbXSA9IGFycmF5KCd0ZXh0JyA9PiBsdHJpbShzdWJzdHIoJGZ1bmMsIDEpKSk7ICRmdW5j
ID0gJGZ1bmNbMF07IGJyZWFrOw0KCQkJCWRlZmF1bHQgOiBpZighaXNzZXQoJHByZWZzWyJl
dGNfY29udGV4dF8kdW5pcWlkIl1bJ3BocCddKSkgJHByZWZzWyJldGNfY29udGV4dF8kdW5p
cWlkIl1bJ3BocCddID0gZXRjX3BocF9hbGxvd2VkKCR1bmlxaWQpOw0KCQkJCWlmKCEkcHJl
ZnNbImV0Y19jb250ZXh0XyR1bmlxaWQiXVsncGhwJ10gfHwgIWlzX2NhbGxhYmxlKCRmdW5j
KSkgdW5zZXQoJGZ1bmMsICRyZWYpOw0KCQkJfSBlbHNlIHVuc2V0KCRmdW5jLCAkcmVmKTsN
CgkJfSBlbHNlIHsvL2FyZ3MNCgkJCWlmKCFpc3NldCgkZnVuYykpIGNvbnRpbnVlOw0KCQkJ
aWYoJGZ1bmMgIT09ICc/JyAmJiBjb3VudCgkYXJncykgPCAyKSAkYXJncyA9IGFycmF5KCk7
DQoJCQkkYXJnc19saXN0ID0gc3Vic3RyKCRmb3JtLCAxLCAtMSk7DQoJCQlpZigkYXJnc19s
aXN0ICE9PSAnJykgZm9yZWFjaChleHBsb2RlKCRwaXBlLCAkYXJnc19saXN0KSBhcyAkYXJn
KSAkYXJnc1tdID0gJHJlcCA/IGV0Y19wYXJzZV9zdHJpbmcoc3RydHIoJGFyZywgJHJlcCks
ICRmbGF0KSA6IGFycmF5KCd0ZXh0JyA9PiAkYXJnKTsNCgkJfQ0KCX0NCglpZihpc3NldCgk
ZnVuYykpICRyZXNbXSA9IGFycmF5KCdmdW5jJz0+JGZ1bmMsICdyZWYnPT4kcmVmLCAnYXJn
cyc9PiRhcmdzKTsNCglyZXR1cm4gJHJlczsNCn0NCg0KZnVuY3Rpb24gZXRjX3BhcnNlX3hw
YXRoKCRwYXR0ZXJuLCAmJGZsYXQpIHsNCglnbG9iYWwgJHByZWZzOw0KCSR1bmlxaWQgPSAk
cHJlZnNbJ2V0Y19xdWVyeV91bmlxaWQnXTsNCgkkZnVuYyA9ICRwcmVmc1siZXRjX2NvbnRl
eHRfJHVuaXFpZCJdWydmdW5jdGlvbnMnXTsNCg0KCUBsaXN0KCRwYXRoLCAkdmFsKSA9IGV4
cGxvZGUoJ0BAJywgJHBhdHRlcm4sIDIpOw0KDQoJaWYoaXNzZXQoJHZhbCkpIHsNCgkJJHBh
aXJzID0gcHJlZ19zcGxpdCgnLygoPzpbXlxbXF0oKXt9XXxbXFtcKFx7XSg/MSkqW1xdXClc
fV0pKylAL1UnLCAkdmFsLCBudWxsLCBQUkVHX1NQTElUX05PX0VNUFRZIHwgUFJFR19TUExJ
VF9ERUxJTV9DQVBUVVJFKTsNCgkJJGZsYXQgPSBmYWxzZTsNCgkJJHZhbCA9IGFycmF5KCk7
DQoJCWZvcmVhY2goJHBhaXJzIGFzICRwYWlyKSB7DQoJCQlAbGlzdCgkbmFtZSwgJGF2YWwp
ID0gZXhwbG9kZSgnPScsICRwYWlyLCAyKTsNCgkJCWlmKCRuYW1lID4gJycpICR2YWxbJG5h
bWVdID0gJGF2YWw7DQoJCX0NCgl9IGVsc2Ugew0KCQlAbGlzdCgkcGF0aCwgJHZhbCkgPSBw
cmVnX3NwbGl0KCcvXigoPzpbXlxbXF0oKXt9XXxbXFtcKFx7XSg/MSkqW1xdXClcfV0pKyk9
KC4qKSQvc0RVJywgJHBhdHRlcm4sIDIsIFBSRUdfU1BMSVRfREVMSU1fQ0FQVFVSRSB8IFBS
RUdfU1BMSVRfTk9fRU1QVFkpOw0KCQlpZighaXNzZXQoJHZhbCkgJiYgc3RybGVuKCRwYXRo
KSA8IHN0cmxlbigkcGF0dGVybikpICR2YWwgPSAnJzsNCgl9DQoNCglpZigkcGF0aCAhPT0g
JycgJiYgc3RycG9zKCc6PyMrXiR+Ji8nLCBzdWJzdHIoJHBhdGgsIC0xKSkgIT09IGZhbHNl
KSB7DQoJCSRtb2RlID0gc3Vic3RyKCRwYXRoLCAtMSk7ICRwYXRoID0gc3Vic3RyKCRwYXRo
LCAwLCAtMSk7DQoJfSBlbHNlICRtb2RlID0gJy4nOw0KCWlmKCRtb2RlICE9PSAnPycpICRm
bGF0ID0gZmFsc2U7DQoJaWYoJHBhdGggPT09ICcnKSAkcGF0aCA9ICcuJzsNCgllbHNlaWYo
JHByZWZzWyJldGNfZ2xvYmFsc18kdW5pcWlkIl0pICRwYXRoID0gcHJlZ19yZXBsYWNlX2Nh
bGxiYWNrKEVUQ19QUkVHX1NQRUMsICdldGNfcGFyc2VfdmFyaWFibGUnLCAkcGF0aCk7DQoJ
aWYoaXNzZXQoJHZhbCkgJiYgIWlzX2FycmF5KCR2YWwpKSAkdmFsID0gYXJyYXkoJG1vZGUg
PT4gJHZhbCk7DQoNCgkkYXR0cl9hcnJheSA9IGFycmF5KCk7DQoNCglpZighZW1wdHkoJHZh
bCkpIGZvcmVhY2goJHZhbCBhcyAkYXR0cj0+JHZhbHVlKSBpZigkYXR0ciAhPT0gJyYnKSB7
DQoJCSRyZXBbJ2F0dHInXSA9ICRwcmVmc1siZXRjX2dsb2JhbHNfJHVuaXFpZCJdID8gcHJl
Z19yZXBsYWNlX2NhbGxiYWNrKEVUQ19QUkVHX1NQRUMsICdldGNfcGFyc2VfdmFyaWFibGUn
LCAkYXR0cikgOiAkYXR0cjsNCgkJJHJlcFsndmFsdWUnXSA9ICR2YWx1ZSA9PT0gbnVsbCA/
IG51bGwgOiBldGNfcGFyc2Vfc3RyaW5nKCR2YWx1ZSwgJGZsYXQpOw0KCQkkYXR0cl9hcnJh
eVtdID0gJHJlcDsNCi8vCQl1bnNldCgkcmVwKTsNCgl9IGVsc2VpZigkdmFsdWUgIT09IG51
bGwpIHskbGFzdFsnYXR0ciddID0gJyYnOyAkbGFzdFsndmFsdWUnXSA9IGV0Y19wYXJzZV9z
dHJpbmcoJHZhbHVlLCAkZmxhdCk7fQ0KCWlmKGlzc2V0KCRsYXN0KSkgJGF0dHJfYXJyYXlb
XSA9ICRsYXN0Ow0KCXVuc2V0KCRwYXR0ZXJuKTsNCgkkcGF0dGVyblsncGF0aCddID0gJGZ1
bmMgPyBwcmVnX3JlcGxhY2UoJy9cYignLiRmdW5jLicpXHMqXCgvJywgInBocDpmdW5jdGlv
bignJDEnLCIsICRwYXRoKSA6ICRwYXRoOw0KCSRwYXR0ZXJuWydtb2RlJ10gPSAkbW9kZTsN
CgkkcGF0dGVyblsndmFsdWUnXSA9ICRhdHRyX2FycmF5Ow0KDQoJaWYoJGZsYXQgJiYgJHBh
dGggIT09ICcvJykgaWYoc3RycG9zKCRwYXRoLCAnLy8nKSAhPT0gZmFsc2UpICRmbGF0ID0g
ZmFsc2U7IGVsc2Ugew0KCQkkbWF0Y2hlcyA9IGV4cGxvZGUoJy8nLCAkcGF0aCk7DQoJCWZv
cmVhY2goJG1hdGNoZXMgYXMgJG1hdGNoKSBpZigkbWF0Y2ggIT09ICcqJyAmJiAkbWF0Y2gg
IT09ICcuJyAmJiAhcHJlZ19tYXRjaCgnL14oPzpcdyspJC8nLCAkbWF0Y2gpKSB7DQoJCQkk
ZmxhdCA9IGZhbHNlOyBicmVhazsNCgkJfQ0KCQlpZigkZmxhdCkgJHBhdHRlcm5bJ2FycmF5
J10gPSBhcnJheV9kaWZmKCRtYXRjaGVzLCBhcnJheSgnLicpKTsNCgl9DQoJcmV0dXJuICRw
YXR0ZXJuOw0KfQ0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKiogRVZBTFVBVEUgKioq
KioqKioqKioqKioqKioqKioqKioqKi8NCg0KZnVuY3Rpb24gZXRjX2V2YWx1YXRlX3N0cmlu
ZygmJGNvbnRlbnRzLCAmJGVsZW1lbnQsICRpbnRlcm5hbHMsICRmbGF0PXRydWUpIHsNCglp
Zihpc3NldCgkY29udGVudHNbJ3RleHQnXSkpIHJldHVybiAkY29udGVudHNbJ3RleHQnXTsN
CglnbG9iYWwgJHByZWZzOyANCgkkdW5pcWlkID0gJHByZWZzWydldGNfcXVlcnlfdW5pcWlk
J107DQoJJHdyYXAgPSAkZmxhdCA9PT0gMjsNCgkkcmVzID0gJHdyYXAgPyBhcnJheSgpIDog
Jyc7DQovLwkkcmVzID0gJyc7DQoJaWYoISRmbGF0KSB7DQoJCSRpc194bWwgPSAkcHJlZnNb
ImV0Y19jb250ZXh0XyR1bmlxaWQiXVsneG1sJ107DQoJCSRkb20gPSAkZWxlbWVudC0+b3du
ZXJEb2N1bWVudDsgDQovLwkJJHhwYXRoID0gJiRwcmVmc1siZXRjX2NvbnRleHRfJHVuaXFp
ZCJdWyd4cGF0aCddOw0KCX0NCg0KCWZvcmVhY2goJGNvbnRlbnRzIGFzICRjb250ZW50KSB7
DQoJCWlmKCEkd3JhcCkgJHJlcyAuPSAkY29udGVudFsndGV4dCddOw0KCQlzd2l0Y2goJGNv
bnRlbnRbJ3R5cGUnXSkgew0KCQkJY2FzZSAndGV4dCcgOiBicmVhazsNCg0KCQkJY2FzZSAn
aW50ZXJuYWwnIDogJHJlcyAuPSAoaXNzZXQoJGludGVybmFsc1skY29udGVudFsndmFsdWUn
XV0pID8gJGludGVybmFsc1skY29udGVudFsndmFsdWUnXV0gOiAkY29udGVudFsndmFsdWUn
XSk7IGJyZWFrOw0KDQoJCQljYXNlICd2YXInIDogJHJlcyAuPSBldGNfcGFyc2VfdmFyaWFi
bGUoJGNvbnRlbnRbJ3ZhbHVlJ10pOyBicmVhazsNCg0KCQkJY2FzZSAnZnVuYycgOiAkdmFs
ID0gaXNzZXQoJGNvbnRlbnRbJ3ZhciddKSA/IGV0Y19wYXJzZV92YXJpYWJsZSgkY29udGVu
dFsndmFyJ10pIDogKCRmbGF0ID8gJGVsZW1lbnQgOiAkZWxlbWVudC0+bm9kZVZhbHVlKTsN
CgkJCWlmKGVtcHR5KCRjb250ZW50Wyd2YWx1ZSddKSkgeyRyZXMgLj0gJHZhbDsgYnJlYWs7
fQ0KCQkJZm9yZWFjaCgkY29udGVudFsndmFsdWUnXSBhcyAkZm9ybSkgew0KCQkJCSRmdW5j
ID0gJGZvcm1bJ2Z1bmMnXTsNCgkJCQkkcmVmID0gJGZvcm1bJ3JlZiddOw0KCQkJCXVuc2V0
KCR3aGljaCk7DQoJCQkJJGhhc19hcmdzID0gY291bnQoJGZvcm1bJ2FyZ3MnXSk7DQoJCQkJ
JGFyZ3MgPSAkZm9ybVsnYXJncyddOw0KCQkJCWlmKCRoYXNfYXJncykgew0KCQkJCQlmb3Jl
YWNoKCRhcmdzIGFzICRrZXk9PiRhcmcpIHsNCgkJCQkJCSRhcmcgPSBpc3NldCgkYXJnWyd0
ZXh0J10pID8gJGFyZ1sndGV4dCddIDogZXRjX2V2YWx1YXRlX3N0cmluZygkYXJnLCAkZWxl
bWVudCwgJGludGVybmFscywgJGZsYXQpOw0KCQkJCQkJaWYoJGFyZyA9PT0gJyQnKSB7JGFy
Z3NbJGtleV0gPSAkdmFsOyBpZigkcmVmKSAkd2hpY2ggPSAka2V5O30NCgkJCQkJCWVsc2Ug
JGFyZ3NbJGtleV0gPSAkYXJnOw0KCQkJCQl9DQovLwkJCQkJdW5zZXQoJGFyZyk7DQoJCQkJ
fQ0KCQkJCXN3aXRjaCgkZnVuYykgew0KCQkJCQljYXNlICcrJyA6ICR2YWwgPSBhcnJheV9z
dW0oJGFyZ3MpOyBicmVhazsNCgkJCQkJY2FzZSAnKicgOiAkdmFsID0gYXJyYXlfcHJvZHVj
dCgkYXJncyk7IGJyZWFrOw0KCQkJCQljYXNlICctJyA6ICR2YWwgPSAyKiRhcmdzWzBdIC0g
YXJyYXlfc3VtKCRhcmdzKTsgYnJlYWs7DQoJCQkJCWNhc2UgJy8nIDogJHZhbCA9ICRhcmdz
WzBdKiRhcmdzWzBdIC8gYXJyYXlfcHJvZHVjdCgkYXJncyk7IGJyZWFrOw0KCQkJCQljYXNl
ICclJyA6ICR2YWwgPSAkYXJnc1swXSAlICRhcmdzWzFdOyBicmVhazsNCgkJCQkJY2FzZSAn
PycgOiBzd2l0Y2goJGhhc19hcmdzKSB7DQoJCQkJCQljYXNlIDAgOiBicmVhazsgDQoJCQkJ
CQljYXNlIDEgOiAkdmFsID0gKCRhcmdzWzBdID8gJzEnIDogJzAnKTsgYnJlYWs7IA0KCQkJ
CQkJZGVmYXVsdCA6ICR2YWwgPSAhZW1wdHkoJGFyZ3NbMF0pID8gJGFyZ3NbMV0gOiAoaXNz
ZXQoJGFyZ3NbMl0pID8gJGFyZ3NbMl0gOiAnJyk7DQoJCQkJCX0gYnJlYWs7DQoJCQkJCWNh
c2UgJz0nIDogc3dpdGNoKCRoYXNfYXJncykgew0KCQkJCQkJY2FzZSAwIDogY2FzZSAxIDog
YnJlYWs7IA0KCQkJCQkJY2FzZSAyIDogJHZhbCA9ICgkYXJnc1swXSA9PSAkYXJnc1sxXSA/
ICcxJyA6ICcwJyk7IGJyZWFrOw0KCQkJCQkJZGVmYXVsdCA6ICR2YWwgPSBjb3VudChhcnJh
eV91bmlxdWUoJGFyZ3MpKTw9MSA/ICcxJyA6ICcwJzsNCgkJCQkJfSBicmVhazsNCgkJCQkJ
Y2FzZSAnPCcgOiBjYXNlICc+JyA6IGlmKCRoYXNfYXJncyA+IDEpIHsNCgkJCQkJCSR2YWwg
PSAoJGZ1bmMgPT09ICc8JyA/ICgkYXJnc1swXSA8ICRhcmdzWzFdID8gJzEnIDogJzAnKSA6
ICgkYXJnc1swXSA+ICRhcmdzWzFdID8gJzEnIDogJzAnKSk7DQoJCQkJCX0gYnJlYWs7DQoJ
CQkJCWNhc2UgJ2RhdGUnIDogaWYoJGhhc19hcmdzKSAkdmFsID0gZGF0ZSgkYXJnc1swXSwg
c3RydG90aW1lKGlzc2V0KCRhcmdzWzFdKSA/ICRhcmdzWzFdIDogJHZhbCkpOyBicmVhazsN
Ci8vCQkJCQljYXNlICdlc2NhcGUnIDogJHZhbCA9IGRvU2xhc2goJHZhbCk7IGJyZWFrOw0K
CQkJCQlkZWZhdWx0IDogc3dpdGNoKCRoYXNfYXJncykgew0KCQkJCQkJY2FzZSAwIDogaWYo
JHJlZikgJGZ1bmMoKTsgZWxzZSAkdmFsID0gJGZ1bmMoKTsgYnJlYWs7DQoJCQkJCQljYXNl
IDEgOiAkdmFsID0gJGZ1bmMoJGFyZ3NbMF0pOyBicmVhazsNCgkJCQkJCWNhc2UgMiA6ICR2
YWwgPSAkZnVuYygkYXJnc1swXSwgJGFyZ3NbMV0pOyBicmVhazsNCgkJCQkJCWNhc2UgMyA6
ICR2YWwgPSAkZnVuYygkYXJnc1swXSwgJGFyZ3NbMV0sICRhcmdzWzJdKTsgYnJlYWs7DQoJ
CQkJCQlkZWZhdWx0IDogJHZhbCA9IGNhbGxfdXNlcl9mdW5jX2FycmF5KCRmdW5jLCAkYXJn
cyk7Ly9zbG93ZXINCgkJCQkJfQ0KCQkJCQlpZihpc3NldCgkd2hpY2gpKSAkdmFsID0gJGFy
Z3NbJHdoaWNoXTsNCgkJCQl9DQoJCQl9DQoJCQkkcmVzIC49ICR2YWw7IGJyZWFrOw0KDQoJ
CQljYXNlICdzdHJpbmcnIDogJGwgPSAhZW1wdHkoJGNvbnRlbnRbJ2xldmVsJ10pID8gJGNv
bnRlbnRbJ2xldmVsJ10gOiAwOw0KCQkJJHJlcyAuPSBzdHJfcmVwZWF0KCd7JywgJGwpLmV0
Y19ldmFsdWF0ZV9zdHJpbmcoJGNvbnRlbnRbJ3ZhbHVlJ10sICRlbGVtZW50LCAkaW50ZXJu
YWxzLCAkZmxhdCkuc3RyX3JlcGVhdCgnfScsICRsKTsgYnJlYWs7DQoNCgkJCWRlZmF1bHQg
OiBpZighJGZsYXQpIHsNCgkJCQkkaW5kID0gaXNzZXQoJHByZWZzWyJldGNfc3BlY2lhbHNf
JHVuaXFpZCJdWyd7IyN9J10pID8gMSA6IDA7DQoJCQkJJG5vZGVzID0gJHByZWZzWyJldGNf
Y29udGV4dF8kdW5pcWlkIl1bJ3hwYXRoJ10tPmV2YWx1YXRlKCRjb250ZW50Wyd2YWx1ZSdd
WydwYXRoJ10sICRlbGVtZW50KTsNCgkJCQlpZiAoISgkbm9kZXMgaW5zdGFuY2VvZiBET01O
b2RlTGlzdCkpICRyZXMgLj0gJG5vZGVzOw0KCQkJCWVsc2UgZm9yZWFjaCgkbm9kZXMgYXMg
JG5vZGUpDQoJCQkJew0KCQkJCQlpZigkaW5kKSAkaW50ZXJuYWxzWycjIyddID0gJGluZCsr
Ow0KCQkJCQkkb3V0ID0gZW1wdHkoJGNvbnRlbnRbJ3ZhbHVlJ11bJ3ZhbHVlJ10pID8gZmFs
c2UgOiBldGNfcHJvY2Vzc19ub2RlKCRjb250ZW50Wyd2YWx1ZSddWyd2YWx1ZSddLCAkbm9k
ZSwgJGludGVybmFscywgZmFsc2UpOw0KCQkJCQkkcmVzIC49ICRvdXQgPyAkb3V0IDogKCRj
b250ZW50Wyd2YWx1ZSddWydtb2RlJ10gPT09ICc/JyA/ICRub2RlLT5ub2RlVmFsdWUgOiAo
JGNvbnRlbnRbJ3ZhbHVlJ11bJ21vZGUnXSA9PT0gJyMnID8gJG5vZGUtPm5vZGVOYW1lIDog
KCEkaXNfeG1sID8gJGRvbS0+c2F2ZUhUTUwoJG5vZGUpIDogJGRvbS0+c2F2ZVhNTCgkbm9k
ZSkpKSk7DQoJCQkJfQ0KCQkJfSBlbHNlIHsvL2ZsYXQNCgkJCQkkdmFsdWUgPSAkZWxlbWVu
dDsNCgkJCQlpZighZW1wdHkoJGNvbnRlbnRbJ3ZhbHVlJ11bJ2FycmF5J10pKSBmb3JlYWNo
KCRjb250ZW50Wyd2YWx1ZSddWydhcnJheSddIGFzICRrZXk9PiRjaHVuaykNCgkJCQl7DQoJ
CQkJCWlmKCRjaHVuayAhPT0gJyonKQ0KCQkJCQkJLyppZihpc3NldCgkdmFsdWUtPiRjaHVu
aykpICR2YWx1ZSA9ICR2YWx1ZS0+JGNodW5rOw0KCQkJCQkJZWxzZSovIGlmKGlzc2V0KCR2
YWx1ZVskY2h1bmtdKSkgJHZhbHVlID0gJHZhbHVlWyRjaHVua107DQoJCQkJCQllbHNlIHt1
bnNldCgkdmFsdWUpOyBicmVhazt9DQoJCQkJCWVsc2Ugew0KCQkJCQkJJHF1ZXJ5ID0gYXJy
YXkoYXJyYXkoJ3R5cGUnID0+ICd4cGF0aCcsICd0ZXh0JyA9PiAnJywgJ3ZhbHVlJyA9PiBh
cnJheSgncGF0aCcgPT4gJy4nLCAnbW9kZScgPT4gJz8nLCAnYXJyYXknID0+IGFycmF5X3Ns
aWNlKCRjb250ZW50Wyd2YWx1ZSddWydhcnJheSddLCAka2V5ICsgMSksICd2YWx1ZScgPT4g
JGNvbnRlbnRbJ3ZhbHVlJ11bJ3ZhbHVlJ10pKSk7DQoJCQkJCQkkaW5kID0gaXNzZXQoJHBy
ZWZzWyJldGNfc3BlY2lhbHNfJHVuaXFpZCJdWyd7IyN9J10pID8gMSA6IDA7DQoJCQkJCQlm
b3JlYWNoKCR2YWx1ZSBhcyAkayA9PiAkdmFsKSB7DQoJCQkJCQkJaWYoaXNzZXQoJHByZWZz
WyJldGNfc3BlY2lhbHNfJHVuaXFpZCJdWyd7I30nXSkpICRpbnRlcm5hbHNbJyMnXSA9ICRr
Ow0KCQkJCQkJCWlmKCRpbmQpICRpbnRlcm5hbHNbJyMjJ10gPSAkaW5kKys7DQoJCQkJCQkJ
JG5ld3JlcyA9IGV0Y19ldmFsdWF0ZV9zdHJpbmcoJHF1ZXJ5LCAkdmFsLCAkaW50ZXJuYWxz
LCAkZmxhdCk7DQoJCQkJCQkJaWYoJHdyYXApIGZvcmVhY2goJG5ld3JlcyBhcyAkcm93KSAk
cmVzW10gPSAkcm93Ow0KCQkJCQkJCWVsc2UgJHJlcyAuPSAkbmV3cmVzOw0KCQkJCQkJfQ0K
CQkJCQkJdW5zZXQoJHZhbHVlKTsgYnJlYWs7DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYoaXNz
ZXQoJHZhbHVlKSkgew0KCQkJCQlpZighZW1wdHkoJGNvbnRlbnRbJ3ZhbHVlJ11bJ3ZhbHVl
J10pKSBldGNfcHJvY2Vzc19ub2RlKCRjb250ZW50Wyd2YWx1ZSddWyd2YWx1ZSddLCAkdmFs
dWUsICRpbnRlcm5hbHMpOw0KCQkJCQlpZigkd3JhcCkgJHJlc1tdID0gJHZhbHVlOyBlbHNl
ICRyZXMgLj0gJHZhbHVlOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCglyZXR1cm4gJHJlczsN
Cn0NCg0KZnVuY3Rpb24gZXRjX3Byb2Nlc3Nfbm9kZSgmJGF0dHIsICYkbm9kZSwgJGludGVy
bmFscz1udWxsLCAkZmxhdD10cnVlLCAkcmVtb3ZlPWZhbHNlKSB7DQoJaWYoJGZsYXQpIHsN
CgkJaWYoZW1wdHkoJGF0dHIpICYmICRyZW1vdmUpICRub2RlID0gbnVsbDsNCgkJZWxzZSBm
b3JlYWNoKCRhdHRyIGFzICR2YWwpIGlmKCR2YWxbJ2F0dHInXSA9PT0gJy4nIHx8ICR2YWxb
J2F0dHInXSA9PT0gJz8nKSB7DQoJCQlpZihpc3NldCgkaW50ZXJuYWxzWyc/J10pKSAkaW50
ZXJuYWxzWyc/J10gPSAkbm9kZTsNCgkJCSRub2RlID0gZXRjX2V2YWx1YXRlX3N0cmluZygk
dmFsWyd2YWx1ZSddLCAkbm9kZSwgJGludGVybmFscywgJGZsYXQpOw0KCQl9DQoJCXJldHVy
bjsNCgl9DQoNCi8vCSRzZWxmX3BhdGggPSBhcnJheSgnLicsICc/JywgJyMnLCAnKycsICde
JywgJyQnLCAnficsICcmJywgJy8nKTsNCgkkaXNfYXR0ciA9ICgkbm9kZS0+bm9kZVR5cGUg
PT09IFhNTF9BVFRSSUJVVEVfTk9ERSk7DQoJaWYoZW1wdHkoJGF0dHIpICYmICRyZW1vdmUp
IHsNCgkJaWYoJGlzX2F0dHIpICRub2RlLT5vd25lckVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0
ZU5vZGUoJG5vZGUpOw0KCQllbHNlICRub2RlLT5wYXJlbnROb2RlLT5yZW1vdmVDaGlsZCgk
bm9kZSk7DQoJfQ0KCWVsc2UgZm9yZWFjaCgkYXR0ciBhcyAkdmFsKSB7DQovLwkJdW5zZXQo
JG5hbWUpOw0KCQkkc2VsZiA9IHN0cnBvcygnLj8jK14kfiYvJywgJHZhbFsnYXR0ciddKSAh
PT0gZmFsc2U7Ly9pbl9hcnJheSgkdmFsWydhdHRyJ10sICRzZWxmX3BhdGgpOw0KCQlpZigh
aXNzZXQoJHZhbFsndmFsdWUnXSkpIHtpZighJHNlbGYgJiYgISRpc19hdHRyKSAkbm9kZS0+
cmVtb3ZlQXR0cmlidXRlKCR2YWxbJ2F0dHInXSk7fQ0KCQllbHNlIHsNCgkJCWlmKGlzc2V0
KCRpbnRlcm5hbHNbJz8nXSkpICRpbnRlcm5hbHNbJz8nXSA9ICRzZWxmIHx8ICRpc19hdHRy
ID8gJG5vZGUtPm5vZGVWYWx1ZSA6ICRub2RlLT5nZXRBdHRyaWJ1dGUoJHZhbFsnYXR0cidd
KTsNCgkJCWlmKGlzc2V0KCRpbnRlcm5hbHNbJyMnXSkpICRpbnRlcm5hbHNbJyMnXSA9ICRz
ZWxmIHx8ICRpc19hdHRyID8gJG5vZGUtPm5vZGVOYW1lIDogJHZhbFsnYXR0ciddOw0KCQkJ
JHZhbHVlID0gaXNzZXQoJHZhbFsndmFsdWUnXVsndGV4dCddKSA/ICR2YWxbJ3ZhbHVlJ11b
J3RleHQnXSA6IGV0Y19ldmFsdWF0ZV9zdHJpbmcoJHZhbFsndmFsdWUnXSwgJG5vZGUsICRp
bnRlcm5hbHMsICRmbGF0KTsNCgkJCXN3aXRjaCgkdmFsWydhdHRyJ10pIHsNCgkJCQljYXNl
ICcmJyA6IGlmKCEkcmVtb3ZlKSByZXR1cm4gJHZhbHVlOw0KCQkJCWNhc2UgJy4nIDogY2Fz
ZSAnKycgOiBjYXNlICdeJyA6IGNhc2UgJyQnIDogaWYoISRpc19hdHRyKSB7DQoJCQkJCWlm
KHN0cnBvcygkdmFsdWUsICc8JykgPT09IGZhbHNlKQ0KCQkJCQkJaWYoJHZhbFsnYXR0cidd
ICE9PSAnLicpICRmID0gJG5vZGUtPm93bmVyRG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKCR2
YWx1ZSk7DQoJCQkJCQllbHNlIHskbm9kZS0+bm9kZVZhbHVlID0gJHZhbHVlOyBicmVhazt9
DQoJCQkJCWVsc2Ugew0KCQkJCQkJZ2xvYmFsICRwcmVmczsNCgkJCQkJCSR1bmlxaWQgPSAk
cHJlZnNbJ2V0Y19xdWVyeV91bmlxaWQnXTsNCgkJCQkJCSRlbmNvZGluZyA9ICRwcmVmc1si
ZXRjX2NvbnRleHRfJHVuaXFpZCJdWydlbmNvZGluZyddOw0KCQkJCQkJJGlzX3htbCA9ICRw
cmVmc1siZXRjX2NvbnRleHRfJHVuaXFpZCJdWyd4bWwnXTsNCgkJCQkJCWlmKCEkaXNfeG1s
KSAkdmFsdWUgPSBwcmVnX3JlcGxhY2UoJy88KCg/OmFyZWF8YmFzZXxicnxjb2x8Y29tbWFu
ZHxlbWJlZHxocnxpbWd8aW5wdXR8a2V5Z2VufGxpbmt8bWV0YXxwYXJhbXxzb3VyY2V8dHJh
Y2t8d2JyKVxiW14+XSopKD88IVwvKT4vaVUnLCAnPCQxIC8+JywgJHZhbHVlKTsNCgkJCQkJ
CWlmKCEkaXNfeG1sICYmIHN0cnBvcygkdmFsdWUsICcmJykgIT09IGZhbHNlKSB7DQoJCQkJ
CQkJaWYoIWlzc2V0KCRwcmVmc1siZXRjX2NvbnRleHRfJHVuaXFpZCJdWydkZWNvZGUnXSkp
ICRwcmVmc1siZXRjX2NvbnRleHRfJHVuaXFpZCJdWydkZWNvZGUnXSA9IGFycmF5X2ZsaXAo
YXJyYXlfZGlmZihnZXRfaHRtbF90cmFuc2xhdGlvbl90YWJsZShIVE1MX0VOVElUSUVTLCBF
TlRfQ09NUEFULCAkZW5jb2RpbmcpLCBnZXRfaHRtbF90cmFuc2xhdGlvbl90YWJsZShIVE1M
X1NQRUNJQUxDSEFSUywgRU5UX0NPTVBBVCwgJGVuY29kaW5nKSkpOw0KCQkJCQkJCSR2YWx1
ZSA9IHN0cnRyKCR2YWx1ZSwgJHByZWZzWyJldGNfY29udGV4dF8kdW5pcWlkIl1bJ2RlY29k
ZSddKTsgDQoJCQkJCQl9DQoJCQkJCQkkZiA9ICRub2RlLT5vd25lckRvY3VtZW50LT5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCk7DQoJCQkJCQkkZi0+YXBwZW5kWE1MKCR2YWx1ZSk7DQoJ
CQkJCX0NCgkJCQkJaWYoJHZhbFsnYXR0ciddID09PSAnLicpICRub2RlLT5ub2RlVmFsdWUg
PSBudWxsOw0KCQkJCQlpZigkdmFsWydhdHRyJ10gPT09ICcmJykgJG5vZGUtPnBhcmVudE5v
ZGUtPnJlcGxhY2VDaGlsZCgkZiwgJG5vZGUpOw0KCQkJCQllbHNlaWYoJHZhbFsnYXR0cidd
ID09PSAnXicpICRub2RlLT5wYXJlbnROb2RlLT5pbnNlcnRCZWZvcmUoJGYsICRub2RlKTsN
CgkJCQkJZWxzZWlmKCR2YWxbJ2F0dHInXSA9PT0gJyQnKQ0KCQkJCQkJaWYoJG5vZGUtPm5l
eHRTaWJsaW5nKSAkbm9kZS0+cGFyZW50Tm9kZS0+aW5zZXJ0QmVmb3JlKCRmLCAkbm9kZS0+
bmV4dFNpYmxpbmcpOw0KCQkJCQkJZWxzZSAkbm9kZS0+cGFyZW50Tm9kZS0+YXBwZW5kQ2hp
bGQoJGYpOw0KCQkJCQllbHNlICRub2RlLT5hcHBlbmRDaGlsZCgkZik7IGJyZWFrOw0KCQkJ
CX0NCg0KCQkJCWNhc2UgJz8nIDogJG5vZGUtPm5vZGVWYWx1ZSA9ICR2YWxbJ2F0dHInXSA9
PT0gJysnIHx8ICR2YWxbJ2F0dHInXSA9PT0gJyQnID8gJG5vZGUtPm5vZGVWYWx1ZS4kdmFs
dWUgOiAoJHZhbFsnYXR0ciddID09PSAnXicgPyAkdmFsdWUuJG5vZGUtPm5vZGVWYWx1ZSA6
ICR2YWx1ZSk7IGJyZWFrOw0KDQoJCQkJY2FzZSAnficgOiBjYXNlICcvJyA6DQoJCQkJZ2xv
YmFsICRwcmVmczsNCgkJCQkkdW5pcWlkID0gJHByZWZzWydldGNfcXVlcnlfdW5pcWlkJ107
DQoJCQkJJG5vZGVzID0gJHByZWZzWyJldGNfY29udGV4dF8kdW5pcWlkIl1bJ3hwYXRoJ10t
PmV2YWx1YXRlKCR2YWx1ZSwgJG5vZGUpOw0KCQkJCWlmICgkbm9kZXMgaW5zdGFuY2VvZiBE
T01Ob2RlTGlzdCkgZm9yZWFjaCgkbm9kZXMgYXMgJGVsZW1lbnQpDQoJCQkJCWlmKCEkaXNf
YXR0cikgew0KCQkJCQkJaWYoJHZhbFsnYXR0ciddID09PSAnficpICRlbGVtZW50LT5wYXJl
bnROb2RlLT5pbnNlcnRCZWZvcmUoJG5vZGUsICRlbGVtZW50KTsNCgkJCQkJCWVsc2UgJGVs
ZW1lbnQtPmFwcGVuZENoaWxkKCRub2RlKTsNCgkJCQkJfSBlbHNlICRlbGVtZW50LT5zZXRB
dHRyaWJ1dGVOb2RlKCRub2RlKTsNCgkJCQlicmVhazsNCg0KCQkJCWNhc2UgJyMnIDogaWYo
JGlzX2F0dHIgJiYgJHZhbHVlICE9ICRub2RlLT5uYW1lKSB7DQoJCQkJCSRub2RlLT5vd25l
ckVsZW1lbnQtPnNldEF0dHJpYnV0ZSgkdmFsdWUsICRub2RlLT52YWx1ZSk7DQoJCQkJCSRu
b2RlLT5vd25lckVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZU5vZGUoJG5vZGUpOw0KCQkJCX0g
YnJlYWs7DQoNCgkJCQlkZWZhdWx0IDogaWYoISRpc19hdHRyKSAkbm9kZS0+c2V0QXR0cmli
dXRlKCR2YWxbJ2F0dHInXSwgJHZhbHVlKTsNCgkJCX0NCgkJfQ0KCX0NCn0NCg0KLyoqKioq
KioqKioqKioqKiBNSVNDICoqKioqKioqKioqKioqKioqKioqKiovDQoNCmZ1bmN0aW9uIGV0
Y19jcmVhdGVfZWxlbWVudCgkbmFtZSwgJiR2YWx1ZSwgJiRkb2MpIHsNCglpZihlbXB0eSgk
bmFtZSkgfHwgaXNfbnVtZXJpYygkbmFtZSkpIHskYXR0ciA9ICRuYW1lOyAkbmFtZSA9ICdy
b3cnO30NCgllbHNlIHVuc2V0KCRhdHRyKTsNCglpZighaXNfYXJyYXkoJHZhbHVlKSAmJiAh
aXNfb2JqZWN0KCR2YWx1ZSkpICRlbGVtZW50ID0gJGRvYy0+Y3JlYXRlRWxlbWVudCgkbmFt
ZSwgKHN0cmluZykkdmFsdWUpOw0KCWVsc2Ugew0KCQkkZWxlbWVudCA9ICRkb2MtPmNyZWF0
ZUVsZW1lbnQoJG5hbWUpOw0KCQlmb3JlYWNoKCR2YWx1ZSBhcyAka2V5PT4kdmFsKSAkZWxl
bWVudC0+YXBwZW5kQ2hpbGQoZXRjX2NyZWF0ZV9lbGVtZW50KCRrZXksICR2YWwsICRkb2Mp
KTsNCgl9DQoJaWYoaXNzZXQoJGF0dHIpKSAkZWxlbWVudC0+c2V0QXR0cmlidXRlKCdpbmRl
eCcsICRhdHRyKTsNCglyZXR1cm4gJGVsZW1lbnQ7DQp9DQoNCmZ1bmN0aW9uIGV0Y19waHBf
YWxsb3dlZCgkdW5pcWlkKSB7DQoJZ2xvYmFsICRwcmVmczsNCglpZihpc3NldCgkcHJlZnNb
ImV0Y19jb250ZXh0XyR1bmlxaWQiXVsncGhwJ10pKSByZXR1cm4gJHByZWZzWyJldGNfY29u
dGV4dF8kdW5pcWlkIl1bJ3BocCddOw0KCSRyZXN1bHQgPSBwaHAobnVsbCwgJ2VjaG8gMTsn
KTsNCglyZXR1cm4gJHByZWZzWyJldGNfY29udGV4dF8kdW5pcWlkIl1bJ3BocCddID0gIWVt
cHR5KCRyZXN1bHQpOw0KfQ0KDQpmdW5jdGlvbiBldGNfY2xlYW51cCgkdW5pcWlkLCAkcGFy
ZW50X3VuaXFpZCwgJG91dCA9IG51bGwpIHsNCglnbG9iYWwgJHByZWZzOw0KCWlmKCRwYXJl
bnRfdW5pcWlkKSAkcHJlZnNbJ2V0Y19xdWVyeV91bmlxaWQnXSA9ICRwYXJlbnRfdW5pcWlk
Ow0KCWVsc2UgdW5zZXQoJHByZWZzWydldGNfcXVlcnlfdW5pcWlkJ10pOw0KCXVuc2V0KCRw
cmVmc1siZXRjX2dsb2JhbHNfJHVuaXFpZCJdLCAkcHJlZnNbImV0Y19zYW5pdGl6ZV8kdW5p
cWlkIl0sICRwcmVmc1siZXRjX3NwZWNpYWxzXyR1bmlxaWQiXSwgJHByZWZzWyJldGNfY29u
dGV4dF8kdW5pcWlkIl0pOw0KCXJldHVybigkb3V0KTsNCn0NCg0KaWYoIWRlZmluZWQoJ0VU
Q19QUkVHX1NQRUMnKSkgZGVmaW5lKCdFVENfUFJFR19TUEVDJywgJy8oPzwhXHspKFx7Wz8h
XSg/Oltee31dfCg/MSkpK1x9KS9VJyk7IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRl
ciI7czoxOiI1IjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6NDoiaGVscCI7YjowO3M6MzoibWQ1
IjtzOjMyOiI5MzRkNjkxZGY5NzAyYWM2NjI5YjExYWU4NTc3OWQxMCI7fQ==

Last edited by etc (2014-04-28 21:10:19)

Offline

#26 2014-04-28 15:30:56

etc
Developer
Registered: 2010-11-11
Posts: 5,689
Website GitHub

Re: resolved: category cloud that leads to articles ? I checked plugins

Proof of concept here, awaiting dl problem confirmation to investigate.

Offline

#27 2014-04-28 15:35:55

JimJoe
Member
From: United States
Registered: 2010-01-30
Posts: 573
Website

Re: resolved: category cloud that leads to articles ? I checked plugins

I copied and pasted both from the email and the forum, same error as before.

I logged into a site of mine with txp 4.4.1, no error, but it doesn’t show up in the plugins list.

edit: the same error, txp 4.4.1 put it in a different location on the plugn page.

Last edited by JimJoe (2014-04-28 15:37:44)

Offline

#28 2014-04-28 15:42:29

JimJoe
Member
From: United States
Registered: 2010-01-30
Posts: 573
Website

Re: resolved: category cloud that leads to articles ? I checked plugins

I could have broken something somewhere… I’m currently uploading 200 megs of graphic files to the site, when that is done I’ll reupload a new copy of txp 4.5.5

Offline

#29 2014-04-28 16:13:17

JimJoe
Member
From: United States
Registered: 2010-01-30
Posts: 573
Website

Re: resolved: category cloud that leads to articles ? I checked plugins

Eeesh. I lost internet connection. I got back on, and my web host is down. So, I’ll work back on this when I can.

Offline

#30 2014-04-28 16:33:06

JimJoe
Member
From: United States
Registered: 2010-01-30
Posts: 573
Website

Re: resolved: category cloud that leads to articles ? I checked plugins

My connection and web host are working again.

I re-uploaded txp 4.5.5 to my site.

Copy and paste from forum post, same error.

Offline

Board footer

Powered by FluxBB