Skip to content

Instantly share code, notes, and snippets.

@michaelkpate
Created September 11, 2015 15:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save michaelkpate/c7f2e213227e1601db2f to your computer and use it in GitHub Desktop.
Save michaelkpate/c7f2e213227e1601db2f to your computer and use it in GitHub Desktop.
# Name: rss_suparchive v0.18
# Type: Public plugin
# will generate an HTML Definition List of articles grouped by date
# Author: Rob Wilshire | Ben Weiner
# URL: https://gist.github.com/readingtype/1952607
# Recommended load order: 5
# .....................................................................
# This is a plugin for Textpattern CMS - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# .....................................................................
YToxMTp7czo0OiJuYW1lIjtzOjE0OiJyc3Nfc3VwYXJjaGl2ZSI7czo2OiJhdXRob3IiO3M6
MjU6IlJvYiBXaWxzaGlyZSB8IEJlbiBXZWluZXIiO3M6MTA6ImF1dGhvcl91cmkiO3M6NDM6
Imh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3JlYWRpbmd0eXBlLzE5NTI2MDciO3M6NzoidmVy
c2lvbiI7czo0OiIwLjE4IjtzOjExOiJkZXNjcmlwdGlvbiI7czo2NToid2lsbCBnZW5lcmF0
ZSBhbiBIVE1MIERlZmluaXRpb24gTGlzdCBvZiBhcnRpY2xlcyBncm91cGVkIGJ5IGRhdGUi
O3M6NDoiY29kZSI7czoxOTAyODoiLy8gcnNzX3N1cGFyY2hpdmUgYXJ0aWNsZSBsaXN0aW5n
IHBsdWdpbg0KLy8gYnkgUm9iIFNhYmxlDQovLyBodHRwOi8vd3d3LndpbHNoaXJlb25lLmNv
bQ0KLy8gVmVyc2lvbiAwLjEgICAtIDExLzAyLzIwMDQNCi8vIEZ1bGwgcmV2aXNpb24gaGlz
dG9yeSBhdCBodHRwOi8vd3d3LndpbHNoaXJlb25lLmNvbS90ZXh0cGF0dGVybi1wbHVnaW5z
L3Jzcy1zdXBhcmNoaXZlDQovLyBWZXJzaW9uIDAuMTYuMSAtIDAxLzA5LzIwMDYgLSBGaXgg
YnJva2VuIGZpbGUgZG93bmxvYWRzLiAgRml4IGluYWR2ZXJ0ZW50IGRhdGUgZmlsdGVyaW5n
IG9uIGFydGljbGUgcGFnZXMuDQovLyBWZXJzaW9uIDAuMTcgLSAwOC8wOC8wNiAtIENoYW5n
ZSBjYXRlZ29yaWVzIHRvIGRpc3BsYXkgdGl0bGUgaW5zdGVhZCBvZiBuYW1lLg0KLy8gVmVy
c2lvbiAwLjE4IC0gMDgvMDkvMDYgLSBBZGQgc2hvd2NvbW1lbnRzY291bnQsIHNob3d6ZXJv
Y291bnQsIGNvdW50cHJlZml4LCBjb3VudHN1ZmZpeCB0byBzdXBhcmNoaXZlIGFuZCBzdXBh
cmNoaXZlX2J5Y2F0LiAgQ2hhbmdlIHRvIHVzZSBzdHJmdGltZSBmb3IgZGF0ZSBmb3JtYXR0
aW5nIHRvIGFsbG93IGZvciBsb2NhbGl6YXRpb24uICBBZGQgd2lsZGNhcmQgYW5kIGV4Y2x1
ZGUgZm9ybWF0IGZvciBzZWN0aW9uIGF0dHJpYnV0ZSBvbiBhbGwgMyB0YWdzLiAodGhhbmtz
IEFuZHJldykuDQovLyAyMDEyMDMwMSBCVyBBZGQgYWJpbGl0eSB0byBkZWNvZGUgVGV4dGls
ZSBtYXJrdXAgaW4gZXhjZXJwdHMuICogaWYgb3RoZXIgbWFya3VwIGlzIHVzZWQgdGhpcyBw
cm9iYWJseSB3b24ndCB3b3JrLCBidXQgaWYgVVNFX1RFWFRJTEUgaXMgZmFsc2UgaXQgd2ls
bCByZXR1cm4gdGhlIHJhdyB0ZXh0LiBTZWUgcnNzX2Zvcm1hdCgpIGJlbG93ICoNCg0KcmVn
aXN0ZXJfY2FsbGJhY2soJ3Jzc19zdXBhcmNoaXZlX2luaXQnLCdwcmV0ZXh0Jyk7DQoNCmZ1
bmN0aW9uIHJzc19zdXBhcmNoaXZlX2luaXQoKSB7DQogIGdsb2JhbCAkYXR0YWNoX3RpdGxl
c190b19wZXJtYWxpbmtzOw0KICAkc3VicGF0aCA9IHByZWdfcXVvdGUocHJlZ19yZXBsYWNl
KCIvaHR0cDpcL1wvLiooXC8uKikvVWkiLCIkMSIsaHUpLCIvIik7DQogICRyZXEgPSBwcmVn
X3JlcGxhY2UoIi9eJHN1YnBhdGgvaSIsIi8iLHNlcnZlclNldCgnUkVRVUVTVF9VUkknKSk7
DQogIGV4dHJhY3QoY2hvcFVybCgkcmVxKSk7DQoNCiAgJGYgPSBzYWZlX2ZpZWxkKCd0aXRs
ZScsJ3R4cF9zZWN0aW9uJywibmFtZT0nIi5kb1NsYXNoKCR1MSkuIiciKTsNCiAgaWYgKCFl
bXB0eSgkZikpIHsNCiAgICBpZiAoJHUyICYmIGlzX251bWVyaWMoJHUyKSkgJF9QT1NUWydz
J10gPSAkdTE7DQogICAgaWYgKCgkdTMgJiYgIWlzX251bWVyaWMoJHUzKSkgfHwgKCEkYXR0
YWNoX3RpdGxlc190b19wZXJtYWxpbmtzICYmICEkdTMpKSAkX1BPU1RbJ2lkJ10gPSAkdTI7
DQogIH0NCn0NCg0KZnVuY3Rpb24gcnNzX3N1cGFyY2hpdmVfbWVudSgkYXR0cykgew0KICBn
bG9iYWwgJHMsICRwcmV0ZXh0Ow0KICBleHRyYWN0KCRwcmV0ZXh0KTsNCg0KCWV4dHJhY3Qo
bEF0dHMoYXJyYXkoDQoJCSdzZWN0aW9uJyA9PiAiYXJ0aWNsZSIsDQoJCSdsaW5rdG9zZWN0
aW9uJyA9PiAkcywNCgkJJ3RpbWVmcmFtZScgPT4gIlBBU1QiLA0KCQknbGltaXQnID0+IDYs
DQoJCSdzaG93aGVhZGVyJyA9PiAiMCIsDQoJCSdoZWFkZXJsYWJlbCcgPT4gIk1vbnRobHkg
QXJjaGl2ZXMiLA0KCQknaGVhZGVybGV2ZWwnID0+ICIyIiwNCgkJJ3Nob3djb3VudCcgPT4g
IjEiLA0KCQknY291bnRsYWJlbCcgPT4gIiIsDQoJCSdtb2RlJyA9PiAiTU9OVEgiDQoJKSwk
YXR0cykpOw0KDQoNCglmb3JlYWNoIChleHBsb2RlKCcsJywgJHNlY3Rpb24pIGFzICRzZWN0
aW9uKQ0KCXsNCgkJc3dpdGNoIChzdWJzdHIodHJpbSgkc2VjdGlvbiksIDAsIDEpKQ0KCQl7
DQoJCQljYXNlICcqJzoNCgkJCQkkc2N0c3FsW10gPSAiIChzZWN0aW9uIGxpa2UgJyUnKSAi
Ow0KCQkJYnJlYWs7DQoJCQljYXNlICchJzoNCgkJCQkkbm90c2N0c3FsW10gPSAiIEFORCAo
c2VjdGlvbiAhPSAnIiAuIGRvU2xhc2goc3RyX3JlcGxhY2UoJyEnLCcnLCRzZWN0aW9uKSkg
LiAiJykgIjsNCgkJCWJyZWFrOw0KCQkJZGVmYXVsdDoNCgkJCQkkc2N0c3FsW10gPSAiIChz
ZWN0aW9uID0gJyIgLiBkb1NsYXNoKCRzZWN0aW9uKSAuICInKSAiOw0KCQkJYnJlYWs7DQoJ
CX0NCgl9DQoJJHNlY3Rpb25zID0gJyBBTkQgKCcgLiBqb2luKCcgT1IgJywgJHNjdHNxbCkg
LiBAam9pbignIEFORCAnLCAkbm90c2N0c3FsKSAuICcpICc7DQoNCiAgJHBvc3RlZD0gKCR0
aW1lZnJhbWUgPT0gIkZVVFVSRSIpID8gIiBBTkQgUG9zdGVkID49IG5vdygpIE9SREVSIEJZ
IHBvc3RlZCBhc2MgIiA6ICIgQU5EIHBvc3RlZCA8IG5vdygpIE9SREVSIEJZIHBvc3RlZCBk
ZXNjICI7DQogICRwb3N0ZWQ9IGlzc2V0KCRwb3N0ZWQpID8gJHBvc3RlZCA6ICIgT1JERVIg
QlkgcG9zdGVkIGRlc2MgIjsNCg0KICAkd2hlcmUgPSAic3RhdHVzPTQgJHNlY3Rpb25zICRw
b3N0ZWQiOw0KICAkcmVzID0gc2FmZV9yb3dzKCJpZCwgdW5peF90aW1lc3RhbXAocG9zdGVk
KSBhcyBwb3N0ZWQiLCJ0ZXh0cGF0dGVybiIsICR3aGVyZSk7DQoNCg0KICBpZiggJHJlcyAp
IHsNCiAgICAkZGF0ZWZvcm1hdCA9ICgkbW9kZSA9PSAiWUVBUiIpID8gIiVZIiA6ICIlQiAl
WSI7DQogICAgJGM9LTE7ICRwPTA7ICRsYXN0bz0iIjsNCiAgICAkbGFzdGQgPSBzYWZlX3N0
cmZ0aW1lKCRkYXRlZm9ybWF0LCRyZXNbMF1bInBvc3RlZCJdKTsNCiAgICAkb3V0cHV0W10g
PSAoJHNob3doZWFkZXIpID8gJzxoJyAuJGhlYWRlcmxldmVsLiAnPicgLiRoZWFkZXJsYWJl
bC4gJzwvaCcgLiRoZWFkZXJsZXZlbC4gJz4nLm4gOiAnJzsNCiAgICAkb3V0cHV0W10gPSAn
PHVsIGNsYXNzPSJyc3NNZW51Ij4nLm47DQogICAgZm9yZWFjaCggJHJlcyBhcyAkYSApIHsN
CiAgICAgICAgJGRhdGUgPSBzYWZlX3N0cmZ0aW1lKCRkYXRlZm9ybWF0LCRhWyJwb3N0ZWQi
XSk7DQogICAgICAgICRkYXRlbGluayA9ICgkbW9kZSA9PSAiWUVBUiIpID8gIi8iLnNhZmVf
c3RyZnRpbWUoJyVZJywkbGFzdG8pIDogIi8iLnNhZmVfc3RyZnRpbWUoJyVZJywkbGFzdG8p
LiIvIi5zYWZlX3N0cmZ0aW1lKCclbScsJGxhc3RvKTsNCiAgICAgICAgJGMrKzsNCiAgICAg
ICAgJGNvdW50ID0gKCRzaG93Y291bnQpID8gJyA8c3BhbiBjbGFzcz0icnNzTW9udGhDb3Vu
dCI+KCcuJGMuJGNvdW50bGFiZWwuJyk8L3NwYW4+JyA6ICcnOw0KICAgICAgICAkb3V0cHV0
W10gPSAoJGxhc3RkICE9ICRkYXRlICYmICRwIDw9ICgkbGltaXQtMSkpID8gJzxsaT48YSBo
cmVmPSInLmh1LiRsaW5rdG9zZWN0aW9uLiRkYXRlbGluay4nIj4nLiRsYXN0ZC4kY291bnQu
JzwvYT48L2xpPicubiA6ICIiOw0KICAgICAgICBpZiAoJHAgPD0gKCRsaW1pdC0xKSkgew0K
ICAgICAgICAgIGlmICgkbGFzdGQgIT0gJGRhdGUpIHsgJGM9MDsgJHArKzsgfTsNCiAgICAg
ICAgICAkbGFzdGQgPSAkZGF0ZTsNCiAgICAgICAgICAkbGFzdG8gPSAkYVsicG9zdGVkIl07
DQogICAgICAgIH0NCiAgICB9DQogICAgJGRhdGVsaW5rID0gKCRtb2RlID09ICJZRUFSIikg
PyAiLyIuc2FmZV9zdHJmdGltZSgnJVknLCRsYXN0bykgOiAiLyIuc2FmZV9zdHJmdGltZSgn
JVknLCRsYXN0bykuIi8iLnNhZmVfc3RyZnRpbWUoJyVtJywkbGFzdG8pOw0KICAgICRjb3Vu
dCA9ICgkc2hvd2NvdW50KSA/ICcgPHNwYW4gY2xhc3M9InJzc01vbnRoQ291bnQiPignLigk
YysxKS4kY291bnRsYWJlbC4nKTwvc3Bhbj4nIDogJyc7DQogICAgJG91dHB1dFtdID0gKCRw
IDw9ICgkbGltaXQtMSkpID8gJzxsaT48YSBocmVmPSInLmh1LiRsaW5rdG9zZWN0aW9uLiRk
YXRlbGluay4nIj4nLiRsYXN0ZC4kY291bnQuJzwvYT48L2xpPicubiA6ICcnOw0KICAgICRv
dXRwdXRbXSA9ICc8L3VsPicubi5uOw0KICAgIHJldHVybiAgaW1wbG9kZSggIiIsICRvdXRw
dXQpOw0KICB9DQogIHJldHVybjsNCn0NCg0KZnVuY3Rpb24gcnNzX3N1cGFyY2hpdmUoJGF0
dHMpIHsNCg0KCWdsb2JhbCAkc2l0ZXVybCwgJGMsICRzLCAkdXJsX21vZGUsICRwcmV0ZXh0
LCAkdGhpc2FydGljbGU7DQoJZXh0cmFjdCgkcHJldGV4dCk7DQoNCglleHRyYWN0KGxBdHRz
KGFycmF5KA0KCQknc2VjdGlvbicgPT4gImFydGljbGUiLA0KCQknY2F0ZWdvcnknID0+IGlz
c2V0KCRub2NhdGZpbHRlcikgPyAiIiA6ICRjLA0KCQknYXV0aG9yJyA9PiBncHMoJ2F1dGhv
cicpLA0KCQknZGF0ZWZvcm1hdCcgPT4gIiVCICVkLCAlWSIsDQoJCSdzaG93c2VjdGlvbicg
PT4gIjAiLA0KCQknc2hvd2NhdHMnID0+ICIwIiwNCgkJJ3Nob3dhdXRob3InID0+ICIwIiwN
CgkJJ3Nob3dleGNlcnB0JyA9PiAiMCIsDQoJCSdzZWNzdGFydCcgPT4gImluIiwNCgkJJ2Nh
dHN0YXJ0JyA9PiAidW5kZXIiLA0KCQknY2F0c2VwJyA9PiAiYW5kIiwNCgkJJ2F1dGhvcnNl
cCcgPT4gImJ5IiwNCgkJJ2FkZGJyZWFrJyA9PiAiMCIsDQoJCSdzaG93c3ViZGF0ZScgPT4g
IjAiLA0KCQknc3ViZGF0ZWZvcm1hdCcgPT4gIiVkIiwNCgkJJ3N1YmRhdGVzZXAnID0+ICI6
ICIsDQoJCSdsaW1pdCcgPT4gOTk5OTk5OTk5LA0KCQknZm9ybScgPT4gIiIsDQoJCSdjbGFz
cycgPT4gIiIsDQoJCSdzb3J0YnknID0+ICIiLA0KCQkndGltZWZyYW1lJyA9PiAiUEFTVCIs
DQoJCSdzaG93Y29tbWVudHNjb3VudCcgPT4gIjAiLA0KCQknc2hvd3plcm9jb3VudCcgPT4g
IjEiLA0KCQknY291bnRwcmVmaXgnID0+ICIiLA0KCQknY291bnRzdWZmaXgnID0+ICIiDQoJ
KSwkYXR0cykpOw0KDQoJJGNhdGVnb3J5ID0gZG9TbGFzaCgkY2F0ZWdvcnkpOw0KDQoJZm9y
ZWFjaCAoZXhwbG9kZSgnLCcsICRzZWN0aW9uKSBhcyAkc2VjdGlvbikNCgl7DQoJCXN3aXRj
aCAoc3Vic3RyKHRyaW0oJHNlY3Rpb24pLCAwLCAxKSkNCgkJew0KCQkJY2FzZSAnKic6DQoJ
CQkJJHNjdHNxbFtdID0gIiAoc2VjdGlvbiBsaWtlICclJykgIjsNCgkJCWJyZWFrOw0KCQkJ
Y2FzZSAnISc6DQoJCQkJJG5vdHNjdHNxbFtdID0gIiAoc2VjdGlvbiAhPSAnIiAuIGRvU2xh
c2goc3RyX3JlcGxhY2UoJyEnLCcnLCRzZWN0aW9uKSkgLiAiJykgIjsNCgkJCWJyZWFrOw0K
CQkJZGVmYXVsdDoNCgkJCQkkc2N0c3FsW10gPSAiIChzZWN0aW9uID0gJyIgLiBkb1NsYXNo
KCRzZWN0aW9uKSAuICInKSAiOw0KCQkJYnJlYWs7DQoJCX0NCgl9DQoJJHNlY3Rpb25zID0g
JyBBTkQgKCcgLiBAam9pbignIE9SICcsICRzY3RzcWwpIC4gQGpvaW4oJyBBTkQgJywgJG5v
dHNjdHNxbCkgLiAnKSAnOw0KDQoJZm9yZWFjaCAoZXhwbG9kZSgnLCcsICRjYXRlZ29yeSkg
YXMgJGNhdGVnb3J5KSB7DQoJCWlmICgkY2F0ZWdvcnkpICRjYXRzcWxbXSA9ICIgKGNhdGVn
b3J5MSA9ICciIC4gdXJsZGVjb2RlKCRjYXRlZ29yeSkgLiAiJykgT1IgKGNhdGVnb3J5MiA9
ICciIC4gdXJsZGVjb2RlKCRjYXRlZ29yeSkgLiAiJykgICI7DQoJfQ0KCSRjYXRlZ29yaWVz
PSBpc3NldCgkY2F0c3FsKSA/ICcgQU5EICgnIC4gam9pbignIE9SICcsICRjYXRzcWwpIC4g
JykgJyA6ICIiOw0KDQoJZm9yZWFjaCAoZXhwbG9kZSgnLCcsICRhdXRob3IpIGFzICRhdXRo
b3IpIHsNCgkJaWYgKCRhdXRob3IpICRhdXRoc3FsW10gPSAiIChhdXRob3JpZCA9ICciIC4g
JGF1dGhvciAuICInKSAiOw0KCX0NCgkkYXV0aG9ycz0gaXNzZXQoJGF1dGhzcWwpID8gJyBB
TkQgKCcgLiBqb2luKCcgT1IgJywgJGF1dGhzcWwpIC4gJykgJyA6ICIiOw0KDQoJJG9mZnNl
dHNxbD0gaXNzZXQoJG9mZnNldCkgPyAnTElNSVQgJy4kb2Zmc2V0LicsOTk5OTk5OTk5OScg
OiAiIjsNCg0KCXN3aXRjaCAoJHRpbWVmcmFtZSkgew0KCQljYXNlICJGVVRVUkUiOg0KCQkJ
ICRwb3N0ZWQgPSAiIEFORCBwb3N0ZWQgPj0gbm93KCkgIjsNCgkJCSBicmVhazsNCgkJY2Fz
ZSAiUEFTVCI6DQoJCQkgJHBvc3RlZCA9ICIgQU5EIHBvc3RlZCA8IG5vdygpICI7DQoJCQkg
YnJlYWs7DQoJCWNhc2UgIkFMTCI6DQoJCQkgJHBvc3RlZCA9ICIiOw0KCQkJIGJyZWFrOw0K
CQljYXNlICJSRUNFTlQiOg0KCQkJJHBvc3RlZCA9ICIgQU5EIHBvc3RlZCA8PSBGUk9NX1VO
SVhUSU1FKCIuJHByZXZfcG9zdGVkLiIpIjsNCgkJCSBicmVhazsNCgkJY2FzZSAiTEFURVIi
Og0KCQkJJHBvc3RlZCA9ICIgQU5EIHBvc3RlZCA+PSBGUk9NX1VOSVhUSU1FKCIuJG5leHRf
cG9zdGVkLiIpIjsNCgkJCSBicmVhazsNCgkJZGVmYXVsdDoNCgkJCSRwb3N0ZWQgPSAiIjsN
Cgl9DQoNCgkkb3JkZXJieT0gKCR0aW1lZnJhbWUgPT0gIkZVVFVSRSIpID8gIiBPUkRFUiBC
WSBwb3N0ZWQgYXNjICIgOiAiIE9SREVSIEJZIHBvc3RlZCBkZXNjICI7DQoJJG9yZGVyYnk9
ICgkc29ydGJ5ID09ICJSQU5ET00iKSA/ICIgT1JERVIgQlkgcmFuZCgpICIgOiAkb3JkZXJi
eSA7DQoNCgkkc3VicGF0aCA9IHByZWdfcXVvdGUocHJlZ19yZXBsYWNlKCIvaHR0cDpcL1wv
LiooXC8uKikvVWkiLCIkMSIsaHUpLCIvIik7DQoJJHJlcSA9IHByZWdfcmVwbGFjZSgiL14k
c3VicGF0aC9pIiwiLyIsc2VydmVyU2V0KCdSRVFVRVNUX1VSSScpKTsNCglleHRyYWN0KGNo
b3BVcmwoJHJlcSkpOw0KDQoJJHNob3dZID0gKCR1MiAhPSAiIikgPyAkdTIuIi0iIDogIiI7
DQoJJHNob3dNID0gKCR1MyAhPSAiIikgPyAkdTMuIi0iIDogIiI7DQoJJHNob3dEID0gKCR1
NCAhPSAiIikgPyAkdTQgOiAiIjsNCg0KCWlmICgkc2hvd1kgJiYgaXNfbnVtZXJpYygkdTIp
ICYmICEkdGhpc2FydGljbGUpICRwb3N0ZWQgPSAiIEFORCBQb3N0ZWQgTElLRSAnIi4kc2hv
d1kuJHNob3dNLiRzaG93RC4iJScgIjsNCg0KCSR3aGVyZSA9ICJzdGF0dXM9NCAkc2VjdGlv
bnMgJGNhdGVnb3JpZXMgJGF1dGhvcnMgJHBvc3RlZCAkb3JkZXJieSAkb2Zmc2V0c3FsIjsN
Cg0KCWlmICgkZm9ybSkgew0KCQkvLyBQQUdJTkcgSU5GTw0KCQkkdG90YWwgPSBnZXRDb3Vu
dCgidGV4dHBhdHRlcm4iLCAkd2hlcmUpOw0KCQkkbnVtUGFnZXMgPSAoJHRvdGFsID4gMCAm
JiAkbGltaXQpID8gY2VpbCgkdG90YWwvJGxpbWl0KSA6IDE7DQoJCSRwZyA9ICghJHBnKSA/
IDEgOiAkcGc7DQoJCSRvZmZzZXQgPSAoJHBnIC0gMSkgKiAkbGltaXQ7DQoNCgkJJHBhZ2Vv
dXRbJ3BnJ10gICAgICAgID0gJHBnOw0KCQkkcGFnZW91dFsnbnVtUGFnZXMnXSAgPSAkbnVt
UGFnZXM7DQoJCSRwYWdlb3V0WydzJ10gICAgICAgICA9ICRzOw0KCQkkcGFnZW91dFsnYydd
ICAgICAgICAgPSAkYzsNCg0KCQkkR0xPQkFMU1sndGhpc3BhZ2UnXSA9ICRwYWdlb3V0Ow0K
DQoJCSRyZXMgPSBzYWZlX3Jvd3MoIiosIHVuaXhfdGltZXN0YW1wKFBvc3RlZCkgYXMgdVBv
c3RlZCIsICJ0ZXh0cGF0dGVybiIsICR3aGVyZS4iIExJTUlUICIuJG9mZnNldC4iLCIuJGxp
bWl0KTsNCg0KCQlpZiAoJHJlcykgew0KCQkJZm9yZWFjaCgkcmVzIGFzICRhKSB7DQoJCQkJ
ZXh0cmFjdCgkYSk7DQoJCQkJcG9wdWxhdGVBcnRpY2xlRGF0YSgkYSk7DQoJCQkJJGFydGlj
bGUgPSBmZXRjaCgnRm9ybScsICd0eHBfZm9ybScsICduYW1lJywgJGZvcm0pOw0KCQkJCSRh
cnRpY2xlc1tdID0gcGFyc2UoJGFydGljbGUpOw0KCQkJCS8vIEZPUiBQQUdJTkcNCgkJCQkk
R0xPQkFMU1sndVBvc3RlZCddID0gJHVQb3N0ZWQ7DQoJCQkJJEdMT0JBTFNbJ2xpbWl0J10g
PSAkbGltaXQ7DQoJCQkJdW5zZXQoJEdMT0JBTFNbJ3RoaXNhcnRpY2xlJ10pOw0KCQkJfQ0K
CQkJcmV0dXJuIGpvaW4oJycsJGFydGljbGVzKTsNCgkJfQ0KCX0NCg0KCWlmICgkbGltaXQp
ICR3aGVyZS49ICIgTElNSVQgJGxpbWl0IjsNCgkkcmVzID0gc2FmZV9yb3dzKCJJRCwgdGl0
bGUsIGF1dGhvcmlkLCB1bml4X3RpbWVzdGFtcChQb3N0ZWQpIGFzIHBvc3RlZCwgc2VjdGlv
biwgY2F0ZWdvcnkxLCBjYXRlZ29yeTIsIHVybF90aXRsZSwgZXhjZXJwdCwgY29tbWVudHNf
Y291bnQiLCJ0ZXh0cGF0dGVybiIsICR3aGVyZSk7DQoJJGxhc3RkID0gc2FmZV9zdHJmdGlt
ZSgkZGF0ZWZvcm1hdCwgLTIyMDg5ODg4MDApOw0KCSRjb3VudD0wOw0KCSRvdXRwdXQgPSBh
cnJheSgpOw0KDQoJaWYgKCRyZXMpIHsNCgkJJG91dHB1dFtdID0gIjxkbCI7DQoJCSRvdXRw
dXRbXSA9IGlzc2V0KCRjbGFzcykgPyAiIGNsYXNzPVwiJGNsYXNzXCIiIDogIiI7DQoJCSRv
dXRwdXRbXSA9IGlzc2V0KCRpZCkgJiYgKCRpZCkgPyAiIGlkPVwiJGlkXCIiIDogIiI7DQoJ
CSRvdXRwdXRbXSA9ICI+IjsNCg0KCQlmb3JlYWNoKCRyZXMgYXMgJGEpIHsNCgkJCSRkYXRl
ID0gc2FmZV9zdHJmdGltZSgkZGF0ZWZvcm1hdCwkYVsicG9zdGVkIl0pOw0KCQkJJHN1YmRh
dGUgPSBzYWZlX3N0cmZ0aW1lKCRzdWJkYXRlZm9ybWF0LCRhWyJwb3N0ZWQiXSk7DQoJCQkk
dGl0bGUgPSAoJGFbInVybF90aXRsZSJdKSA/ICRhWyJ1cmxfdGl0bGUiXTogc3RyaXBTcGFj
ZSgkYVsidGl0bGUiXSk7DQoJCQkkdGl0bGUgPSAoJHVybF9tb2RlKSA/ICR0aXRsZSA6ICcn
Ow0KCQkJJHNob3d0aXRsZSA9ICRhWyJ0aXRsZSJdOw0KCQkJJHNlY3Rpb24gPSAkYVsic2Vj
dGlvbiJdOw0KCQkJJGlkID0gJGFbIklEIl07DQoJCQkkY2F0MSA9ICRhWyJjYXRlZ29yeTEi
XTsNCgkJCSRjYXQyID0gJGFbImNhdGVnb3J5MiJdOw0KCQkJJGF1dGhvciA9ICRhWyJhdXRo
b3JpZCJdOw0KCQkJJGV4Y2VycHQgPSAkYVsiZXhjZXJwdCJdOw0KCQkJJGNjID0gJGFbImNv
bW1lbnRzX2NvdW50Il07DQoNCgkJCWlmICgkc2hvd2F1dGhvcikgew0KCQkJCSRhdXRocmVz
ID0gc2FmZV9yb3coInJlYWxuYW1lIiwidHhwX3VzZXJzIiwgIm5hbWU9JyRhdXRob3InIik7
DQoJCQkJJGFyZWFsbmFtZSA9ICRhdXRocmVzWyJyZWFsbmFtZSJdOw0KCQkJfQ0KDQoJCQkk
cGVybWxpbmsgPSBwZXJtbGlua3VybCgkYSk7DQoJCQkkc2VjdGlvbmxpbmsgPSAoJHVybF9t
b2RlKSA/IHVybGVuY29kZSgkc2VjdGlvbikgOiAnP3M9Jy51cmxlbmNvZGUoJHNlY3Rpb24p
Ow0KCQkJJGNzbGluayA9ICgkdXJsX21vZGUpID8gdXJsZW5jb2RlKCRzKSA6ICc/cz0nLnVy
bGVuY29kZSgkcyk7DQoJCQkkYXV0aG9ybGluayA9ICgkdXJsX21vZGUpID8gJGNzbGluay4n
Lz9hdXRob3I9Jy51cmxlbmNvZGUoJGF1dGhvcikgOiAkY3NsaW5rLicmYW1wO2F1dGhvcj0n
LnVybGVuY29kZSgkYXV0aG9yKTsNCgkJCSRjYXQxbGluayA9ICgkdXJsX21vZGUpID8gJHNl
Y3Rpb25saW5rLicvP2M9Jy51cmxlbmNvZGUoJGNhdDEpIDogJHNlY3Rpb25saW5rLicmYW1w
O2M9Jy51cmxlbmNvZGUoJGNhdDEpOw0KCQkJJGNhdDJsaW5rID0gKCR1cmxfbW9kZSkgPyAk
c2VjdGlvbmxpbmsuJy8/Yz0nLnVybGVuY29kZSgkY2F0MikgOiAkc2VjdGlvbmxpbmsuJyZh
bXA7Yz0nLnVybGVuY29kZSgkY2F0Mik7DQoNCgkJCSRjbnQgPSAoISRzaG93emVyb2NvdW50
ICYmICRjYyA9PSAwKSA/ICIiIDogJGNvdW50cHJlZml4LiRjYy4kY291bnRzdWZmaXg7DQoJ
CQkkY29tbWNvdW50ID0gKCRzaG93Y29tbWVudHNjb3VudCkgPyAnPHNwYW4gY2xhc3M9InJz
c0NtbnRDbnQiPicuJGNudC4nPC9zcGFuPicgOiAnJzsNCg0KCQkJJG91dHB1dFtdID0gKCRs
YXN0ZCAhPSAkZGF0ZSkgPyAiPGR0PiRkYXRlPC9kdD4iLm4gOiAiIjsNCgkJCSRvdXRwdXRb
XSA9ICI8ZGQ+IjsNCgkJCSRvdXRwdXRbXSA9ICgkc2hvd3N1YmRhdGUgPT0gIjEiKSA/ICc8
c3BhbiBjbGFzcz0icnNzU3ViZGF0ZSI+Jy4kc3ViZGF0ZS4kc3ViZGF0ZXNlcC4nPC9zcGFu
PicgOiAiIjsNCgkJCSRvdXRwdXRbXSA9ICI8YSBocmVmPVwiJHBlcm1saW5rXCIgdGl0bGU9
XCJQZXJtYW5lbnQgbGluayB0byAkc2hvd3RpdGxlXCIgY2xhc3M9XCJyc3NBcnRpY2xlIjsN
CgkJCSRvdXRwdXRbXSA9ICgrKyRjb3VudCAlIDIpID8gIiByc3NBbHQiIDogIiI7DQoJCQkk
b3V0cHV0W10gPSAiXCI+IjsNCgkJCSRvdXRwdXRbXSA9ICIkc2hvd3RpdGxlPC9hPiI7DQoJ
CQkkb3V0cHV0W10gPSAkY29tbWNvdW50Ow0KCQkJJG91dHB1dFtdID0gKCRhZGRicmVhaykg
PyAiPGJyLz4iIDogIiI7DQoJCQkkb3V0cHV0W10gPSAoJHNob3dhdXRob3IpID8gIiAkYXV0
aG9yc2VwIDxhIGhyZWY9XCIkYXV0aG9ybGlua1wiIHRpdGxlPVwiTGluayB0byBhcnRpY2xl
cyBieSAkYXV0aG9yXCIgY2xhc3M9XCJyc3NBdXRob3JcIj4kYXJlYWxuYW1lPC9hPiAiIDog
IiI7DQoJCQkkb3V0cHV0W10gPSAoJHNob3dzZWN0aW9uKSA/ICIgJHNlY3N0YXJ0IDxhIGhy
ZWY9XCIkc2VjdGlvbmxpbmtcIiB0aXRsZT1cIkxpbmsgdG8gJHNlY3Rpb24gc2VjdGlvblwi
IGNsYXNzPVwicnNzU2VjdGlvblwiPiRzZWN0aW9uPC9hPiAiIDogIiI7DQoJCQkkY2F0b25l
ID0gJHNob3djYXRzICYmICRjYXQxOw0KCQkJJGNhdHR3byA9ICRzaG93Y2F0cyAmJiAkY2F0
MjsNCgkJCSRvdXRwdXRbXSA9ICgkY2F0b25lKSA/ICIgJGNhdHN0YXJ0IDxhIGhyZWY9XCIk
Y2F0MWxpbmtcIiB0aXRsZT1cIkxpbmsgdG8gJGNhdDFcIiBjbGFzcz1cInJzc0NhdFwiPiIu
ZmV0Y2hfY2F0ZWdvcnlfdGl0bGUoJGNhdDEpLiI8L2E+ICIgOiAiIjsNCgkJCSRvdXRwdXRb
XSA9ICgkY2F0dHdvKSA/ICIgJGNhdHNlcCA8YSBocmVmPVwiJGNhdDJsaW5rXCIgdGl0bGU9
XCJMaW5rIHRvICRjYXQyXCIgY2xhc3M9XCJyc3NDYXRcIj4iLmZldGNoX2NhdGVnb3J5X3Rp
dGxlKCRjYXQyKS4iPC9hPiAiIDogIiI7DQogICAgICAkb3V0cHV0W10gPSAoJHNob3dleGNl
cnB0KSA/ICI8YnIvPiIgLiByc3NfZm9ybWF0KCRleGNlcnB0KSA6ICIiOw0KCQkJJG91dHB1
dFtdID0gIjwvZGQ+Ii5uOw0KCQkJJGxhc3RkID0gJGRhdGU7DQoJCX0NCgkJJG91dHB1dFtd
ID0gIjwvZGw+IjsNCgl9DQoNCglyZXR1cm4gKCRvdXRwdXQpID8gaW1wbG9kZSgnJywgJG91
dHB1dCkgOiAnJzsNCn0NCg0KZnVuY3Rpb24gcnNzX3N1cGFyY2hpdmVfYnljYXQoJGF0dHMp
IHsNCglnbG9iYWwgJHMsICRjLCAkdXJsX21vZGUsICRwcmV0ZXh0LCAkc2l0ZXVybCwgJGlk
Ow0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ3NlY3Rpb24nID0+ICJhcnRpY2xlIiwN
CgkJJ3Nob3doZWFkZXInID0+ICIwIiwNCgkJJ2hlYWRlcmxhYmVsJyA9PiAiQXJ0aWNsZXMg
QnkgQ2F0ZWdvcnk6IiwNCgkJJ3Nob3dtZW51JyA9PiAiMCIsDQoJCSdzaG93Y2F0cycgPT4g
IjEiLA0KCQknc2hvd2NhdHNvbmx5JyA9PiAiMCIsDQoJCSdzaG93Y2F0Y291bnQnID0+ICIx
IiwNCgkJJ3Nob3dzZWN0aW9ucycgPT4gIjAiLA0KCQknc2hvd3NlY3Rpb25jb3VudCcgPT4g
IjAiLA0KCQknc2hvd2p1bXAnID0+ICIwIiwNCgkJJ2p1bXBsYWJlbCcgPT4gIl4gYmFjayB0
byB0b3AiLA0KCQkndXNlYXJ0Y2F0MScgPT4gIjAiLA0KCQkndXNlYXJ0Y2F0MicgPT4gIjAi
LA0KCQkndXNlYXJ0Y2F0cycgPT4gIjAiLA0KCQknbGltaXQnID0+ICI5OTk5OTk5OTkiLA0K
CQkndGltZWZyYW1lJyA9PiAiUEFTVCIsDQoJCSdsaW5rdG9zZWN0aW9uJyA9PiAiIiwNCgkJ
J2Zvcm0nID0+ICIiLA0KCQknZm9ybXdyYXB0YWcnID0+ICIiLA0KCQknYWRkYnJlYWsnID0+
ICIwIiwNCgkJJ3Nob3dkYXRlJyA9PiAiMCIsDQoJCSdkYXRlZm9ybWF0JyA9PiAiJUIgJWQs
ICVZIiwNCgkJJ2RhdGVzZXAnID0+ICIgJnJhcXVvLCAiLA0KCQknc2hvd2V4Y2VycHQnID0+
ICIwIiwNCgkJJ3Nob3dhdXRob3InID0+ICIwIiwNCgkJJ2F1dGhvcnNlcCcgPT4gImJ5ICIs
DQoJCSdzaG93Y29tbWVudHNjb3VudCcgPT4gIjAiLA0KCQknc2hvd3plcm9jb3VudCcgPT4g
IjEiLA0KCQknY291bnRwcmVmaXgnID0+ICIiLA0KCQknY291bnRzdWZmaXgnID0+ICIiDQoJ
KSwkYXR0cykpOw0KDQoJJHNlY3Rpb24gPSBpc3NldCgkc2VjdGlvbikgPyAkc2VjdGlvbiA6
ICIiOw0KCSRsaW5rdG9zZWN0aW9uID0gKCRsaW5rdG9zZWN0aW9uKSA/ICRsaW5rdG9zZWN0
aW9uLiIvIiA6ICIiOw0KDQoJaWYgKCR1c2VhcnRjYXQxIHx8ICR1c2VhcnRjYXQyIHx8ICR1
c2VhcnRjYXRzKSB7DQoJCSRjYSA9IHNhZmVfcm93KCdjYXRlZ29yeTEsIGNhdGVnb3J5Mics
ICd0ZXh0cGF0dGVybicsICdpZD0nLiRpZCk7DQoJCWV4dHJhY3QoJGNhKTsNCgl9DQoNCgkk
Y2F0c3FsID0gKCR1c2VhcnRjYXQxKSA/ICIgQU5EIG5hbWUgPSAnIi4kY2F0ZWdvcnkxLiIn
ICIgOiAiIjsNCgkkY2F0c3FsLj0gKCR1c2VhcnRjYXQyKSA/ICIgQU5EIG5hbWUgPSAnIi4k
Y2F0ZWdvcnkyLiInICIgOiAiIjsNCg0KCWlmICgkdXNlYXJ0Y2F0cykgew0KCSRjYXRzcWwg
PSAiIEFORCAobmFtZSA9ICciLiRjYXRlZ29yeTEuIicgT1IgbmFtZSA9ICciLiRjYXRlZ29y
eTIuIicpICI7DQoJfSBlbHNlIHsNCglpZiAoJGMgJiYgISRzaG93Y2F0c29ubHkpICRjYXRz
cWwgPSAiIEFORCBuYW1lID0gJyIuJGMuIicgIjsNCgl9DQoNCglmb3JlYWNoIChleHBsb2Rl
KCcsJywgJHNlY3Rpb24pIGFzICRzZWN0aW9uKQ0KCXsNCgkJc3dpdGNoIChzdWJzdHIodHJp
bSgkc2VjdGlvbiksIDAsIDEpKQ0KCQl7DQoJCQljYXNlICcqJzoNCgkJCQkkc2N0c3FsW10g
PSAiIChzZWN0aW9uIGxpa2UgJyUnKSAiOw0KCQkJYnJlYWs7DQoJCQljYXNlICchJzoNCgkJ
CQkkbm90c2N0c3FsW10gPSAiIEFORCAoc2VjdGlvbiAhPSAnIiAuIGRvU2xhc2goc3RyX3Jl
cGxhY2UoJyEnLCcnLCRzZWN0aW9uKSkgLiAiJykgIjsNCgkJCWJyZWFrOw0KCQkJZGVmYXVs
dDoNCgkJCQkkc2N0c3FsW10gPSAiIChzZWN0aW9uID0gJyIgLiBkb1NsYXNoKCRzZWN0aW9u
KSAuICInKSAiOw0KCQkJYnJlYWs7DQoJCX0NCgl9DQoJJHNlY3NxbCA9ICgkc2VjdGlvbiAh
PSBudWxsKSAgPyAnIEFORCAoJyAuIGpvaW4oJyBPUiAnLCAkc2N0c3FsKSAuIEBqb2luKCcg
QU5EICcsICRub3RzY3RzcWwpIC4gJykgJyA6ICcnOw0KDQoJJHN1YnBhdGggPSBwcmVnX3F1
b3RlKHByZWdfcmVwbGFjZSgiL2h0dHA6XC9cLy4qKFwvLiopL1VpIiwiJDEiLGh1KSwiLyIp
Ow0KCSRyZXEgPSBwcmVnX3JlcGxhY2UoIi9eJHN1YnBhdGgvaSIsIi8iLHNlcnZlclNldCgn
UkVRVUVTVF9VUkknKSk7DQoJZXh0cmFjdChjaG9wVXJsKCRyZXEpKTsNCg0KCSRzaG93WSA9
ICgkdTIgIT0gIiIpID8gJHUyLiItIiA6ICIiOw0KCSRzaG93TSA9ICgkdTMgIT0gIiIpID8g
JHUzLiItIiA6ICIiOw0KCSRzaG93RCA9ICgkdTQgIT0gIiIpID8gJHU0IDogIiI7DQoNCgkk
ZGF0ZXBvc3RlZCA9ICgkc2hvd1kgJiYgaXNfbnVtZXJpYygkdTMpKSA/ICIgQU5EIFBvc3Rl
ZCBMSUtFICciLiRzaG93WS4kc2hvd00uJHNob3dELiIlJyAiIDogIiBBTkQgcG9zdGVkIDwg
bm93KCkiOw0KDQoJJHEgPSAnU0VMRUNUIERJU1RJTkNUIG5hbWUgRlJPTSAnLlBGWC4ndHhw
X2NhdGVnb3J5LCAnLlBGWC4ndGV4dHBhdHRlcm4gV0hFUkUgbmFtZSAhPSJkZWZhdWx0IiBh
bmQgdHlwZT0iYXJ0aWNsZSIgYW5kIChjYXRlZ29yeTEgPSBuYW1lIG9yIGNhdGVnb3J5MiA9
IG5hbWUpICcuICRjYXRzcWwuJHNlY3NxbCAuJ0FORCBzdGF0dXM9NCAnLiRkYXRlcG9zdGVk
LicgT1JERVIgQlkgbmFtZSc7DQoJJHJzYyA9IGdldFJvd3MoJHEsIiIpOw0KDQoJaWYgKCRy
c2MgJiYgJHNob3dtZW51KSB7DQoJCWZvcmVhY2goJHJzYyBhcyAkcikgew0KCQkJZXh0cmFj
dCgkcik7DQoJCQkkY2F0bmFtZSA9ICRyWyJuYW1lIl07DQoJCQkkY21bXSA9ICc8bGk+PGEg
aHJlZj0iI2NfJy5zdHJpcFNwYWNlKCRjYXRuYW1lKS4nIj4nLmZldGNoX2NhdGVnb3J5X3Rp
dGxlKCRjYXRuYW1lKS4nPC9hPjwvbGk+Jy5uOw0KCQl9DQoJCSRjYXRtZW51ID0gJzx1bCBj
bGFzcz0icnNzQ2F0QXJjaGl2ZU1lbnUiPicuaW1wbG9kZSgnJywgJGNtKS4nPC91bD4nLm47
DQoJfQ0KDQoJJG91dFtdID0gKCEkZm9ybSkgPyAnPGRpdiBpZD0icnNzQ2F0QXJjaGl2ZSI+
Jy5uIDogJyc7DQoJJG91dFtdID0gKCRzaG93aGVhZGVyKSA/ICc8ZGl2IGlkPSJyc3NDYXRB
cmNoaXZlSGVhZGVyIj4nLiRoZWFkZXJsYWJlbC4nPC9kaXY+Jy5uIDogJyc7DQoNCgkkb3V0
W10gPSAoJHNob3dtZW51KSA/ICRjYXRtZW51IDogJyc7DQoNCgkkcnMgPSBnZXRSb3dzKCRx
LCIiKTsNCg0KCWlmICgkcnMpIHsNCgkJJG91dFtdID0gKCEkZm9ybSkgPyAnPGRpdiBpZD0i
cnNzQ2F0TGlzdCI+Jy5uIDogJyc7DQoJCSRvdXRbXSA9ICgkc2hvd2NhdHNvbmx5ICYmICEk
Zm9ybSkgPyAnPHVsPicgOiAnJzsNCgkJZm9yZWFjaCgkcnMgYXMgJGEpIHsNCgkJCWV4dHJh
Y3QoJGEpOw0KCQkJJGNhdG5hbWUgPSAkYVsibmFtZSJdOw0KDQoJCQlzd2l0Y2ggKCR0aW1l
ZnJhbWUpIHsNCgkJCQljYXNlICJGVVRVUkUiOg0KCQkJCQkgJHBvc3RlZCA9ICIgQU5EIHBv
c3RlZCA+PSBub3coKSAiOw0KCQkJCQkgYnJlYWs7DQoJCQkJY2FzZSAiUEFTVCI6DQoJCQkJ
CSAkcG9zdGVkID0gIiBBTkQgcG9zdGVkIDwgbm93KCkgIjsNCgkJCQkJIGJyZWFrOw0KCQkJ
CWNhc2UgIkFMTCI6DQoJCQkJCSAkcG9zdGVkID0gIiI7DQoJCQkJCSBicmVhazsNCgkJCQlk
ZWZhdWx0Og0KCQkJCQkkcG9zdGVkID0gIiI7DQoJCQl9DQoNCgkJCSRwb3N0ZWQgPSAoJHNo
b3dZICYmIGlzX251bWVyaWMoJHUzKSkgPyAiIEFORCBQb3N0ZWQgTElLRSAnIi4kc2hvd1ku
JHNob3dNLiRzaG93RC4iJScgIiA6ICRwb3N0ZWQ7DQoNCgkJCSRub2lkc3FsID0gKCR1c2Vh
cnRjYXQxIHx8ICR1c2VhcnRjYXQyIHx8ICR1c2VhcnRjYXRzKSA/ICJpZCA8PiAiLiRpZC4i
IEFORCAiIDogIiI7DQoJCQkkc2NzcWwgPSAkbm9pZHNxbC4gIiAoY2F0ZWdvcnkxID0gJyIg
LiBkb1NsYXNoKCRjYXRuYW1lKSAuICInIG9yIGNhdGVnb3J5MiA9ICciIC4gZG9TbGFzaCgk
Y2F0bmFtZSkgLiAiJykiIC4kc2Vjc3FsLiAiIEFORCBzdGF0dXM9NCAkcG9zdGVkIE9SREVS
IEJZIHNlY3Rpb24sIHBvc3RlZCBkZXNjIjsNCg0KCQkJJHJzY250ID0gc2FmZV9yb3dzKCIq
LCB1bml4X3RpbWVzdGFtcChQb3N0ZWQpIGFzIHVQb3N0ZWQsIElELCB0aXRsZSwgYXV0aG9y
aWQsIHVuaXhfdGltZXN0YW1wKHBvc3RlZCkgYXMgcG9zdGVkLCBzZWN0aW9uLCBjYXRlZ29y
eTEsIGNhdGVnb3J5MiwgdXJsX3RpdGxlIiwidGV4dHBhdHRlcm4iLCAkc2NzcWwpOw0KCQkJ
JGNhdGNudCA9ICgkc2hvd2NhdHMgJiYgJHNob3djYXRjb3VudCkgPyAiICgiLmNvdW50KCRy
c2NudCkuIikgIiA6ICIiOw0KDQoJCQlpZiAoJHNob3djYXRzb25seSAmJiAhJGZvcm0pIHsN
CgkJCQkkb3V0W10gPSAoJHNob3djYXRzKSA/ICc8bGk+PGEgaHJlZj0iJy5odS4kbGlua3Rv
c2VjdGlvbi4nP2M9Jy51cmxlbmNvZGUoJGNhdG5hbWUpLiciIHRpdGxlPSJWaWV3IGFsbCBh
cnRpY2xlcyBmaWxlZCB1bmRlciAnLiRjYXRuYW1lLiciPicuZmV0Y2hfY2F0ZWdvcnlfdGl0
bGUoJGNhdG5hbWUpLic8L2E+Jy4kY2F0Y250Lic8L2xpPicubiA6ICcnOw0KCQkJfSBlbHNl
ICB7DQoJCQkJJG91dFtdID0gKCRzaG93Y2F0cykgPyAnPGRpdiBpZD0iY18nLnN0cmlwU3Bh
Y2UoJGNhdG5hbWUpLiciIGNsYXNzPSJyc3NDY2F0Ij48YSBocmVmPSInLmh1LiRsaW5rdG9z
ZWN0aW9uLic/Yz0nLnVybGVuY29kZSgkY2F0bmFtZSkuJyIgdGl0bGU9IlZpZXcgYWxsIGFy
dGljbGVzIGZpbGVkIHVuZGVyICcuJGNhdG5hbWUuJyI+Jy5mZXRjaF9jYXRlZ29yeV90aXRs
ZSgkY2F0bmFtZSkuJzwvYT4nLiRjYXRjbnQuJzwvZGl2PicubiA6ICcnOw0KCQkJfQ0KDQoJ
CQkJaWYgKCRmb3JtKSB7DQoJCQkJCS8vIFBBR0lORyBJTkZPDQoJCQkJCSR0b3RhbCA9IGdl
dENvdW50KCJ0ZXh0cGF0dGVybiIsICRzY3NxbCk7DQoJCQkJCSRudW1QYWdlcyA9ICgkdG90
YWwgPiAwICYmICRsaW1pdCkgPyBjZWlsKCR0b3RhbC8kbGltaXQpIDogMTsNCgkJCQkJJHBn
ID0gKCEkcGcpID8gMSA6ICRwZzsNCgkJCQkJJG9mZnNldCA9ICgkcGcgLSAxKSAqICRsaW1p
dDsNCg0KCQkJCQkkcGFnZW91dFsncGcnXSAgICAgICAgPSAkcGc7DQoJCQkJCSRwYWdlb3V0
WydudW1QYWdlcyddICA9ICRudW1QYWdlczsNCgkJCQkJJHBhZ2VvdXRbJ3MnXSAgICAgICAg
ID0gJHM7DQoJCQkJCSRwYWdlb3V0WydjJ10gICAgICAgICA9ICRjOw0KDQoJCQkJCSRHTE9C
QUxTWyd0aGlzcGFnZSddID0gJHBhZ2VvdXQ7DQoNCgkJCQkJJGZybVdoZXJlID0gJHNjc3Fs
LiIgTElNSVQgIi4kb2Zmc2V0LiIsIi4kbGltaXQ7DQoJCQkJCSRyZXMgPSBzYWZlX3Jvd3Mo
IiosIHVuaXhfdGltZXN0YW1wKFBvc3RlZCkgYXMgdVBvc3RlZCIsICJ0ZXh0cGF0dGVybiIs
ICRmcm1XaGVyZSk7DQoNCgkJCQkJaWYgKCRyZXMpIHsNCgkJCQkJCWZvcmVhY2goJHJlcyBh
cyAkYikgew0KCQkJCQkJCWV4dHJhY3QoJGIpOw0KCQkJCQkJCXBvcHVsYXRlQXJ0aWNsZURh
dGEoJGIpOw0KCQkJCQkJCSRhcnRpY2xlID0gZmV0Y2goJ0Zvcm0nLCAndHhwX2Zvcm0nLCAn
bmFtZScsICRmb3JtKTsNCgkJCQkJCQkkYXJ0aWNsZXNbXSA9IHBhcnNlKCRhcnRpY2xlKTsN
CgkJCQkJCQkvLyBGT1IgUEFHSU5HDQoJCQkJCQkJJEdMT0JBTFNbJ3VQb3N0ZWQnXSA9ICR1
UG9zdGVkOw0KCQkJCQkJCSRHTE9CQUxTWydsaW1pdCddID0gJGxpbWl0Ow0KCQkJCQkJCXVu
c2V0KCRHTE9CQUxTWyd0aGlzYXJ0aWNsZSddKTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQkk
b3V0W10gPSAoJGZvcm13cmFwdGFnKSA/IHRhZyhqb2luKCcnLCRhcnRpY2xlcyksICRmb3Jt
d3JhcHRhZykgOiBqb2luKCcnLCRhcnRpY2xlcyk7DQoJCQkJCXVuc2V0KCRhcnRpY2xlcyk7
DQoJCQl9DQoNCgkJCWlmICghJGZvcm0pIHsNCgkJCQlpZiAoJGxpbWl0KSAkc2NzcWwuPSAi
IExJTUlUICRsaW1pdCI7DQoJCQkJJHJzMyA9IHNhZmVfcm93cygiKiwgdW5peF90aW1lc3Rh
bXAoUG9zdGVkKSBhcyB1UG9zdGVkLCBJRCwgdGl0bGUsIGF1dGhvcmlkLCB1bml4X3RpbWVz
dGFtcChwb3N0ZWQpIGFzIHBvc3RlZCwgc2VjdGlvbiwgY2F0ZWdvcnkxLCBjYXRlZ29yeTIs
IHVybF90aXRsZSwgY29tbWVudHNfY291bnQiLCJ0ZXh0cGF0dGVybiIsICRzY3NxbCk7DQoJ
CQkJJGxhc3RzID0gIiI7DQoJCQl9DQoNCgkJCWlmICgkcnMzICYmICEkc2hvd2NhdHNvbmx5
ICYmICEkZm9ybSkgew0KCQkJCSRvdXRbXSA9ICc8dWw+Jy5uOw0KCQkJCWZvcmVhY2goJHJz
MyBhcyAkZCkgew0KCQkJCQkkYWlkPSAkZFsiSUQiXTsNCgkJCQkJJGFzZWN0aW9uPSAkZFsi
c2VjdGlvbiJdOw0KDQoJCQkJCSR0aXRsZSA9ICgkZFsidXJsX3RpdGxlIl0pID8gJGRbInVy
bF90aXRsZSJdOiBzdHJpcFNwYWNlKCRkWyJ0aXRsZSJdKTsNCgkJCQkJJHRpdGxlID0gKCR1
cmxfbW9kZSkgPyAkdGl0bGUgOiAnJzsNCgkJCQkJJHNob3d0aXRsZSA9ICRkWyJ0aXRsZSJd
Ow0KCQkJCQkkcG9zdGRhdGUgPSBzYWZlX3N0cmZ0aW1lKCRkYXRlZm9ybWF0LCRkWyJwb3N0
ZWQiXSk7DQoJCQkJCSRhdXRob3IgPSAkZFsiYXV0aG9yaWQiXTsNCgkJCQkJJGV4Y2VycHQg
PSAkZFsiZXhjZXJwdCJdOw0KCQkJCQkkY2MgPSAkZFsiY29tbWVudHNfY291bnQiXTsNCg0K
CQkJCQkkY250ID0gKCEkc2hvd3plcm9jb3VudCAmJiAkY2MgPT0gMCkgPyAiIiA6ICRjb3Vu
dHByZWZpeC4kY2MuJGNvdW50c3VmZml4Ow0KCQkJCQkkY29tbWNvdW50ID0gKCRzaG93Y29t
bWVudHNjb3VudCkgPyAnPHNwYW4gY2xhc3M9InJzc0NtbnRDbnQiPicuJGNudC4nPC9zcGFu
PicgOiAnJzsNCg0KCQkJCQkkYXV0aHJlcyA9IHNhZmVfcm93KCJyZWFsbmFtZSIsInR4cF91
c2VycyIsICJuYW1lPSckYXV0aG9yJyIpOw0KCQkJCQkkYXJlYWxuYW1lID0gJGF1dGhyZXNb
InJlYWxuYW1lIl07DQoNCgkJCQkJJHBlcm1saW5rID0gcGVybWxpbmt1cmwoJGQpOw0KDQoJ
CQkJCWlmICgkbGFzdHMgIT0gJGFzZWN0aW9uICYmICRzaG93c2VjdGlvbnMpIHsNCgkJCQkJ
CSRzY3RjbnQgPSAoJHNob3dzZWN0aW9uY291bnQpID8gIiAoIi5jb3VudCgkcnMzKS4iKSIg
OiAiIjsNCgkJCQkJCSRvdXRbXSA9ICc8bGk+PGRpdiBjbGFzcz0icnNzQ3NlYyI+aW4gPGEg
aHJlZj0iJy5odS4kYXNlY3Rpb24uJy8/Yz0nLiRjYXRuYW1lLiciIHRpdGxlPSJWaWV3IGFy
dGljbGVzIGZpbGVkIHVuZGVyICcuJGNhdG5hbWUuJyBpbiAnLiRhc2VjdGlvbi4nIj4nLiRh
c2VjdGlvbi4nPC9hPicuJHNjdGNudC4nPC9kaXY+PC9saT4nLm47DQoJCQkJCQkkY250ID0g
MTsNCgkJCQkJfQ0KDQoJCQkJCSRvdXRbXSA9ICc8bGkgY2xhc3M9InJzc0NhcnQiPic7DQoJ
CQkJCSRvdXRbXSA9ICc8YSBocmVmPSInLiRwZXJtbGluay4nIiB0aXRsZT0iUGVybWFuZW50
IGxpbmsgdG8gJy4kc2hvd3RpdGxlLiciPicuJHNob3d0aXRsZS4nPC9hPic7DQoJCQkJCSRv
dXRbXSA9ICRjb21tY291bnQ7DQoJCQkJCSRvdXRbXSA9ICgkYWRkYnJlYWspID8gIjxici8+
IiA6ICIiOw0KCQkJCQkkb3V0W10gPSAoJHNob3dhdXRob3IpID8gJGF1dGhvcnNlcC4kYXJl
YWxuYW1lIDogIiI7DQoJCQkJCSRvdXRbXSA9ICgkc2hvd2RhdGUpID8gJzxzcGFuIGNsYXNz
PSJyc3NTdWJkYXRlIj4nLiRkYXRlc2VwLiRwb3N0ZGF0ZS4nPC9zcGFuPicgOiAnJzsNCgkJ
CQkJJG91dFtdID0gKCRzaG93ZXhjZXJwdCkgPyAiPGJyLz4kZXhjZXJwdCIgOiAiIjsNCg0K
CQkJCQkkb3V0W10gPSAnPC9saT4nLm47DQoNCgkJCQkJJGNudCsrOw0KCQkJCQkkbGFzdHMg
PSAkYXNlY3Rpb247DQoJCQkJfQ0KCQkJCSRvdXRbXSA9ICc8L3VsPicubjsNCgkJCQkkb3V0
W10gPSAoJHNob3dqdW1wKSA/ICc8ZGl2IGNsYXNzPSJyc3NKdW1wIj48YSBocmVmPSIjcnNz
Q2F0QXJjaGl2ZSI+Jy4gJGp1bXBsYWJlbCAuJzwvYT48L2Rpdj4nIDogJyc7DQoJCQl9DQoJ
CX0NCgkJJG91dFtdID0gKCRzaG93Y2F0c29ubHkgJiYgISRmb3JtKSA/ICc8L3VsPicgOiAn
JzsNCgkJJG91dFtdID0gKCEkZm9ybSkgPyBuLic8L2Rpdj4nLm4uJzwvZGl2PicubiA6ICcn
Ow0KCX0NCglyZXR1cm4gKCRvdXQpID8gaW1wbG9kZSgnJywgJG91dCkgOiAnJzsNCn0NCg0K
ZnVuY3Rpb24gcnNzX2Zvcm1hdCgkc3RyaW5nKSB7DQoJZ2xvYmFsICR0eHBjZmc7DQoNCglp
bmNsdWRlX29uY2UgdHhwYXRoLicvbGliL2NsYXNzVGV4dGlsZS5waHAnOw0KCSR0ZXh0aWxl
ID0gbmV3IFRleHRpbGUoKTsNCglyZXR1cm4gKFVTRV9URVhUSUxFID09IHRydWUgPyAkdGV4
dGlsZS0+VGV4dGlsZVRoaXMoJHN0cmluZykgOiAkc3RyaW5nKTsNCn0iO3M6NDoidHlwZSI7
czoxOiIwIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NToiZmxhZ3MiO3M6MToiMCI7czo0OiJo
ZWxwIjtiOjA7czozOiJtZDUiO3M6MzI6IjcyN2ExNTFkMGQwMTE3ZGNjZTc5NGQ1YjgxMzJm
ZjBiIjt9
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment