Software: Apache. PHP/8.1.30 uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root) Safe-mode: OFF (not secure) /home/picotech/domains/smm.picotech.app/public_html_v1_1/public/uploads/ drwxr-xr-x |
Viewing file: Select action/file-type: Ly8gMHgxOTk5IFByaXZhdGUgU2hlbGwKLy8gVXNlIHlvdXIgb3duIHJpc2sKLy8gSGFyZCBjb2RlZCBieSAweDE5OTkKCi8vIFN0YXJ0IEJvdHMgTG9ja2VkCmlmKCBzdHJwb3MoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddLCdHb29nbGUnKSAhPT0gZmFsc2UgKSB7IGhlYWRlcignSFRUUC8xLjAgNDA0IE5vdCBGb3VuZCcpOyBleGl0OyB9Ci8vIEVuZCAvL0JvdHMgTG9ja2VkCgovLyBTdGFydCBjb25maWd1cmF0aW9uCiRzaGVsbF9uYW1lID0gJzB4IFNoZWxsJzsKJHNoZWxsX3Nsb2dhbiA9ICdUaGUgTmV4dCBKYW5Db3ggU2hlbGwnOwokc2hlbGxfdmVyc2lvbiA9ICcxLjEnOwokc2hlbGxfYnlwYXNzX3NlY3VyaXR5ID0gJzAnOwokc2hvd19lcnJvciA9ICIwIjsgCkBzZXNzaW9uX3N0YXJ0KCk7IApAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywwKTsKQGluaV9zZXQoJ291dHB1dF9idWZmZXJpbmcnLDApOwpAc2V0X3RpbWVfbGltaXQoMCk7IAovLyBAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApOwovLyBFbmQgY29uZmlndXJhdGlvbgoKLy8gc3RhcnQgaW5pdAppZigkc2hvd19lcnJvciA9PSAiMCIpewoJQGVycm9yX3JlcG9ydGluZygwKTsgCglAZXJyb3JfbG9nKDApOwoJQGluaV9zZXQoJ2Vycm9yX2xvZycsTlVMTCk7IAoJQGluaV9zZXQoJ2xvZ19lcnJvcnMnLDApOyAKCUBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDApOwp9IGVsc2UgewoJaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAxKTsKCWluaV9zZXQoJ2Rpc3BsYXlfc3RhcnR1cF9lcnJvcnMnLCAxKTsKCWVycm9yX3JlcG9ydGluZyhFX0FMTCk7Cn0KCgppZighZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRlZ2lkJykpIHsKICAkdXNlciA9IEBnZXRfY3VycmVudF91c2VyKCk7CiAgJHVpZCA9IEBnZXRteXVpZCgpOwogICRnaWQgPSBAZ2V0bXlnaWQoKTsKICAkZ3JvdXAgPSAiPyI7Cn0gZWxzZSB7CiAgJHVpZCA9IEBwb3NpeF9nZXRwd3VpZChwb3NpeF9nZXRldWlkKCkpOwogICRnaWQgPSBAcG9zaXhfZ2V0Z3JnaWQocG9zaXhfZ2V0ZWdpZCgpKTsKICAkdXNlciA9ICR1aWRbJ25hbWUnXTsKICAkdWlkID0gJHVpZFsndWlkJ107CiAgJGdyb3VwID0gJGdpZFsnbmFtZSddOwogICRnaWQgPSAkZ2lkWydnaWQnXTsKfQppZihAaXNfZGlyKCIvaG9tZS8kdXNlci9wdWJsaWNfaHRtbC8iKSl7Cgkkc2VydmVyX3R5cGUgPSAicHVibGljX2h0bWwiOwp9IGVsc2VpZihAaXNfZGlyKCIvdmFyL3d3dy92aG9zdHMvIikpewoJJHNlcnZlcl90eXBlID0gInZob3N0IjsKfSBlbHNlewoJJHNlcnZlcl90eXBlID0gInVua25vd24iOwp9CgovL2VuZCBpbml0CgovL3N0YXJ0IGNvbmZpZyBsaXN0CiRleHQgPSBhcnJheSgidjEiLCJ2MiIsInYzIiwid3AiLCJXUCIsImJsb2ciLCJjbGllbnQiLCJjbGllbnRzIiwiZm9ydW0iLCJmb3J1bXMiLCJob21lIiwibmV3Iiwib2xkIiwic2l0ZSIsInBvcnRhbCIsInRlc3QiLCJkZW1vIiwid29yZHByZXNzIiwiam9vbWxhIiwiYmV0YSIsIm5ld3MiLCJtYWluIiwic2hvcCIsIm1hZ2UiLCJtYWdlbnRvIiwic2l0ZXMiLCJjbXMiLCJzZWN1cmUiLCJzdXBwb3J0IiwicGFuZWwiLCJwdWJsaWMiKTsKJGNvbmZpZ3R5cGUgPSBhcnJheSgKCSIvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsCgkiL2NvbmZpZy9rb25la3NpLnBocCIgPT4gIkxva29tZWRpYSIsCgkiL2ZvcnVtL2NvbmZpZy5waHAiID0+ICJwaHBCQiIsCgkiL3NpdGVzL2RlZmF1bHQvc2V0dGluZ3MucGhwIiA9PiAiRHJ1cGFsIiwKCSIvY29uZmlnL3NldHRpbmdzLmluYy5waHAiID0+ICJQcmVzdGFTaG9wIiwKCSIvYXBwL2V0Yy9sb2NhbC54bWwiID0+ICJNYWdlbnRvIiwKCSIvYWRtaW4vY29uZmlnLnBocCIgPT4gIk9wZW5DYXJ0IiwKCSIvYXBwbGljYXRpb24vY29uZmlnL2RhdGFiYXNlLnBocCIgPT4gIkVsbGlzbGFiIiwKCSIvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLAoJIi9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoJIi9jb25maWcucGhwIiA9PiAiT3RoZXJDb25maWciLAoJIi9kYi5waHAiID0+ICJEQiIsCgkiL2RiLmluYy5waHAiID0+ICJEQkluYyIsCgkiL2RhdGFiYXNlLnBocCIgPT4gIkRhdGFiYXNlIiwKCSIvaW5jbHVkZXMvY29uZmlnLnBocCIgPT4gIlZidWxsZXRpbiIsCgkiL2RiL2NvbmZpZy5waHAiID0+ICJEQkNvbmZpZyIKICk7Ci8vZW5kIGNvbmZpZyBsaXN0CgovL3N0YXJ0IGhlYWQgcHJvY2VzcwppZihpc3NldCgkX0dFVFsnZmlsZSddKSAmJiAoJF9HRVRbJ2ZpbGUnXSAhPSAnJykgJiYgKCRfR0VUWydhY3QnXSA9PSAnZG93bmxvYWQnKSkgewoJQG9iX2NsZWFuKCk7CgkkZmlsZSA9ICRfR0VUWydmaWxlJ107CgloZWFkZXIoJ0NvbnRlbnQtRGVzY3JpcHRpb246IEZpbGUgVHJhbnNmZXInKTsKCWhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTsKCWhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9IicuYmFzZW5hbWUoJGZpbGUpLiciJyk7CgloZWFkZXIoJ0V4cGlyZXM6IDAnKTsKCWhlYWRlcignQ2FjaGUtQ29udHJvbDogbXVzdC1yZXZhbGlkYXRlJyk7CgloZWFkZXIoJ1ByYWdtYTogcHVibGljJyk7CgloZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGZpbGUpKTsKCXJlYWRmaWxlKCRmaWxlKTsKCWV4aXQ7Cn0KaWYoaXNzZXQoJF9HRVRbJ2RpciddKSAmJiAoJF9HRVRbJ2RpciddICE9ICIiKSl7CgkkZGlyID0gJF9HRVRbJ2RpciddOwoJY2hkaXIoJF9HRVRbJ2RpciddKTsKfSBlbHNlIHsKCSRkaXIgPSBnZXRjd2QoKTsKfQppZihpc3NldCgkX1BPU1RbJ3VwbG9hZCddKSkgewogIGlmKEBjb3B5KCRfRklMRVNbJzB4ZmlsZSddWyd0bXBfbmFtZSddLCAiJGRpci8iLiRfRklMRVNbJzB4ZmlsZSddWyduYW1lJ10uIiIpKXsKICAgICRhY3R4ID0gIjxmb250IGNvbG9yPWxpbWU+VXBsb2FkZWQhPC9mb250PiBhdCA8aT48Yj4kZGlyLyIuJF9GSUxFU1snMHhmaWxlJ11bJ25hbWUnXS4iPC9iPjwvaT4iOwogIH0gZWxzZSB7CiAgICAkYWN0eCA9ICI8Zm9udCBjb2xvcj1yZWQ+ZmFpbGVkIHRvIHVwbG9hZCBmaWxlPC9mb250PiI7CiAgfQp9IGVsc2UgewoJJGFjdHggPSIiOwp9Ci8vZW5kIGhlYWQgcHJvY2Vzcwo/PgoJPCFET0NUWVBFIGh0bWw+Cgk8aHRtbD4KCTxzdHlsZSBzdHlwZT0idGV4dC9jc3MiPgoJCUBpbXBvcnQgdXJsKGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1BYmVsfEJhdW1hbnMpOwoJCWJvZHkgewoJCQliYWNrZ3JvdW5kOiAjMTAxMDEwOwoJCQljb2xvcjogI2YyZjJmMjsKCQkJZm9udC1mYW1pbHk6IEFiZWw7CgkJCWZvbnQtc2l6ZTogMTJweDsKCQl9CgoJCWJvZHkgYSB7CgkJCWNvbG9yOiAjMzQ2N0JBOwoJCQl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgkJfQoKCQlib2R5IGE6aG92ZXIgewoJCQl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCQl9CgoJCSNtYWluX2NvbnRlbnQgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjNUM3Mjk2OwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCQl3aWR0aDogMTAwMHB4OwoJCQloZWlnaHQ6IGF1dG87CgkJCXBhZGRpbmc6IDE1cHg7CgkJCW1hcmdpbjogMCBhdXRvOwoJCQliYWNrZ3JvdW5kOiAjMEEwQTBBOwoJCQlib3JkZXItcmFkaXVzOiA2cHg7CgkJCS1tb3otYm9yZGVyLXJhZGl1czogNnB4OwoJCQktd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKCQl9CgoJCS5lbmFibGVkIHsKCQkJY29sb3I6ICM3QUNDMjk7CgkJfQoKCQkuZW5hYmxlZCBhIHsKCQkJY29sb3I6ICM3QUNDMjk7CgkJCWZvbnQtd2VpZ2h0OiBub3JtYWw7CgkJfQoKCQkuZGlzYWJsZWQgewoJCQljb2xvcjogI0NDMDAwMDsKCQl9CgoJCS5UYWJsZUhlYWRlcl9OYW1lIHsKCQkJd2lkdGg6IDQwMHB4OwoJCQlwYWRkaW5nOiAwcHggMHB4IDBweCA1cHg7CgkJCWhlaWdodDogMjVweDsKCQkJZm9udC1mYW1pbHk6IEFiZWw7CgkJCWJhY2tncm91bmQtY29sb3I6ICMyODI4Mjg7CgkJCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsKCQkJLW1vei1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7CgkJCS13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OwoJCX0KCgkJLlRhYmxlSGVhZGVyIHsKCQkJd2lkdGg6IDEwMHB4OwoJCQloZWlnaHQ6IDI1cHg7CgkJCWZvbnQtZmFtaWx5OiBBYmVsOwoJCQl0ZXh0LWFsaWduOiBjZW50ZXI7CgkJCWJhY2tncm91bmQtY29sb3I6ICMyODI4Mjg7CgkJfQoKCQkuVGFibGVIZWFkZXJvcHRpb25zIHsKCQkJcGFkZGluZzogMHB4IDBweCAwcHggMTVweDsKCQkJd2lkdGg6IDIwMHB4OwoJCQloZWlnaHQ6IDI1cHg7CgkJCWZvbnQtZmFtaWx5OiBBYmVsOwoJCQliYWNrZ3JvdW5kLWNvbG9yOiAjMjgyODI4OwoJCQlib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OwoJCQktbW96LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7CgkJCS13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKCQl9CgoJCS5UYWJsZUxhc3QgewoJCQlwYWRkaW5nOiAwcHggMHB4IDBweCAxNXB4OwoJCQl3aWR0aDogMjAwcHg7CgkJCWhlaWdodDogMjVweDsKCQkJZm9udC1mYW1pbHk6IEFiZWw7CgkJCWJhY2tncm91bmQtY29sb3I6ICMyODI4Mjg7CgkJCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7CgkJCS1tb3otYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKCQkJLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OwoJCX0KCgkJLmZpbGVzaXplIHsKCQkJY29sb3I6IGdyZWVuOwoJCQl0ZXh0LWFsaWduOiBjZW50ZXI7CgkJfQoKCQkuZmlsZW5hbWVzIGEgewoJCQlmb250LXdlaWdodDogbm9ybWFsOwoJCQl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgkJfQoKCQkuZmlsZW5hbWVzIGE6aG92ZXIgewoJCQl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCQl9CgoJCS5maWxldHIgewoJCQliYWNrZ3JvdW5kLWNvbG9yOiAjMDgwODA4OwoJCX0KCgkJLmZpbGV0cjpob3ZlciB7CgkJCWJhY2tncm91bmQtY29sb3I6ICMyODI4Mjg7CgkJfQoKCQkjb3B0aW9ucyB7CgkJCWZvbnQtd2VpZ2h0OiAyMDA7CgkJCWZvbnQtZmFtaWx5OiBBYmVsOwoJCQltYXJnaW4tbGVmdDogMTBweDsKCQkJZGlzcGxheTogYmxvY2s7CgkJfQoKCQkjdGl0bGUgewoJCQlmb250LXNpemU6IDI1cHg7CgkJCWZvbnQtZmFtaWx5OiBhcmlhbDsKCQkJZGlzcGxheTogYmxvY2s7CgkJCXBhZGRpbmc6IDE1cHggMHB4IDBweCAwcHg7CgkJfQoKCQkuYm94IHsKCQkJcGFkZGluZzogMTBweDsKCQkJYmFja2dyb3VuZC1jb2xvcjogIzI5MjkyOTsKCQkJYm9yZGVyOiAxcHggc29saWQgIzM0NjdCQTsKCQkJaGVpZ2h0OiBhdXRvOwoJCQl3aWR0aDogOTcwOwoJCQlib3JkZXItcmFkaXVzOiA2cHg7CgkJCS1tb3otYm9yZGVyLXJhZGl1czogNnB4OwoJCQktd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKCQl9CgoJCS5zZW1idW55aSB7CgkJCWRpc3BsYXk6IG5vbmU7CgkJCXBhZGRpbmc6IDA7CgkJCW1hcmdpbjogMDsKCQl9CgoJCXRleHRhcmVhIHsKCQkJYmFja2dyb3VuZC1jb2xvcjogIzAxMDEwMTsKCQkJY29sb3I6ICNmMmYyZjI7CgkJCWJvcmRlcjogMXB4IHNvbGlkICMzNDY3QkE7CgkJCW91dGxpbmU6IG5vbmU7CgkJCWZvbnQtc2l6ZTogMTFweDsKCQkJYm9yZGVyLXJhZGl1czogM3B4OwoJCQktbW96LWJvcmRlci1yYWRpdXM6IDNweDsKCQkJLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CgkJCXBhZGRpbmc6IDVweDsKCQkJd2lkdGg6IDk3MHB4OwoJCQloZWlnaHQ6IDQwMHB4OwoJCX0KCgkJaW5wdXRbdHlwZT10ZXh0XSwKCQlpbnB1dFt0eXBlPXBhc3N3b3JkXSwKCQlpbnB1dFt0eXBlPXN1Ym1pdF0sCgkJaW5wdXRbdHlwZT1idXR0b25dIHsKCQkJYmFja2dyb3VuZDogIzAxMDEwMTsKCQkJY29sb3I6ICNmMmYyZjI7CgkJCW1hcmdpbjogMCA0cHg7CgkJCWJvcmRlcjogMXB4IHNvbGlkICMzNDY3QkE7CgkJCW91dGxpbmU6IG5vbmU7CgkJCWZvbnQtc2l6ZTogMTFweDsKCQkJYm9yZGVyLXJhZGl1czogM3B4OwoJCQktbW96LWJvcmRlci1yYWRpdXM6IDNweDsKCQkJLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CgkJCWZvbnQtZmFtaWx5OiBBYmVsOwoJCQlmb250LXNpemU6IDEycHg7CgkJfQoKCQkudmlld2ZpbGUgewoJCQliYWNrZ3JvdW5kOiAjRURFQ0VCOwoJCQljb2xvcjogIzAwMDAwMDsKCQkJbWFyZ2luOiA0cHggMnB4OwoJCQlwYWRkaW5nOiA4cHg7CgkJCWJvcmRlci1yYWRpdXM6IDNweDsKCQkJLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7CgkJCS13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwoJCQlib3JkZXI6IDFweCBzb2xpZCAjMzQ2N0JBOwoJCX0KCgkJc2VsZWN0IHsKCQkJY29sb3I6ICNmMmYyZjI7CgkJCXBhZGRpbmc6IDA7CgkJCW1hcmdpbjogMDsKCQkJYm9yZGVyOiAxcHggc29saWQgIzM0NjdCQTsKCQkJb3V0bGluZTogbm9uZTsKCQkJZm9udC1zaXplOiAxMXB4OwoJCQlib3JkZXItcmFkaXVzOiAzcHg7CgkJCS1tb3otYm9yZGVyLXJhZGl1czogM3B4OwoJCQktd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsKCQkJYmFja2dyb3VuZDogIzAxMDEwMTsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQkJZm9udC1mYW1pbHk6IEFiZWw7CgkJCWZvbnQtc2l6ZTogMTJweDsKCQl9CgoJCWlucHV0W3R5cGU9ImZpbGUiXSB7CgkJCWNvbG9yOiAjZjJmMmYyOwoJCQlwYWRkaW5nOiAwOwoJCQltYXJnaW46IDA7CgkJCWJvcmRlcjogMXB4IHNvbGlkICMzNDY3QkE7CgkJCW91dGxpbmU6IG5vbmU7CgkJCWZvbnQtc2l6ZTogMTFweDsKCQkJYm9yZGVyLXJhZGl1czogM3B4OwoJCQktbW96LWJvcmRlci1yYWRpdXM6IDNweDsKCQkJLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CgkJCWJhY2tncm91bmQ6ICMwMTAxMDE7CgkJCW92ZXJmbG93OiBoaWRkZW47CgkJCWZvbnQtZmFtaWx5OiBBYmVsOwoJCQlmb250LXNpemU6IDEycHg7CgkJfQoKCQkubmRlbGlrIHsKCQkJZGlzcGxheTogbm9uZTsKCQkJcGFkZGluZzogMDsKCQkJbWFyZ2luOiAwOwoJCX0KCgkJZm9ybSwKCQl0YWJsZSB7CgkJCS8qZGlzcGxheTogaW5saW5lOyovCgkJCW1hcmdpbjogMHB4OwoJCQlwYWRkaW5nOiAwcHg7CgkJfQoJPC9zdHlsZT4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZnVuY3Rpb24gdHVrYXIobGFtYSwgYmFydSkgewoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsYW1hKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChiYXJ1KS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKCQl9Cgk8L3NjcmlwdD4KCgk8bGluayBocmVmPSJodHRwOi8vdmlnbmV0dGUyLndpa2lhLm5vY29va2llLm5ldC9yZWd1bGFyc2hvdy9pbWFnZXMvZi9mYy9FbW90aWNvbmVzXy1fUGFjbWFuLnBuZy9yZXZpc2lvbi9sYXRlc3Q/Y2I9MjAxNjAxMDcxNzA5MDUmYW1wO3BhdGgtcHJlZml4PWVzIiByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiI+CgoJPD9waHAKCiRsaW5nID0iaHR0cDovLyIuJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10uIiIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9jcmVhdGUiOwokZGlyID0gc3RyX3JlcGxhY2UoIlxcIiwiLyIsJGRpcik7CiRzY2RpciA9IGV4cGxvZGUoIi8iLCAkZGlyKTsKJGRzID0gQGluaV9nZXQoImRpc2FibGVfZnVuY3Rpb25zIik7CiRzaG93X2RzID0gKCFlbXB0eSgkZHMpKSA/ICI8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nc2VhcmNodGVybScgc2l6ZT0nMzAnc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJnYig0MSwgNDEsIDQxKTtib3JkZXI6IDFweCBzb2xpZCByZ2IoNDEsIDQxLCA0MSk7aGVpZ2h0OiAxMnB4O2NvbG9yOiByZWQ7d2lkdGg6IDM4NXB4Oyd2YWx1ZT0nJGRzJ3JlYWRvbmx5Lz4iIDogIjxmb250IGNvbG9yPWxpbWU+Tk9ORTwvZm9udD4iOwplY2hvICI8dGl0bGU+JHNoZWxsX25hbWU8L3RpdGxlPiI7CgppZihpc3NldCgkX0dFVFsnY3JlYXRlJ10pKXsKCWZ1bmN0aW9uIENyZWF0ZVRvb2xzKCRuYW1lcywkbG9rYXNpKXsKCWlmICggJF9HRVRbJ2NyZWF0ZSddID09ICRuYW1lcyApewoJCSRhPSAiIi4kX1NFUlZFUlsnU0VSVkVSX05BTUUnXS4iIjsKJGI9IGRpcm5hbWUoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pOwokYyA9ICIvMHgxLyIuJG5hbWVzLiIucGhwIjsKaWYgKGZpbGVfZXhpc3RzKCcweDEvJy4kbmFtZXMuJy5waHAnKSl7CgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+YWxlcnQoIkRvbmUiKTt3aW5kb3cubG9jYXRpb24uaHJlZiA9ICIweDEvJy4kbmFtZXMuJy5waHAiOzwvc2NyaXB0PiAnOwoJfQoJZWxzZSB7bWtkaXIoIjB4MSIsIDA3NzcpOwpmaWxlX3B1dF9jb250ZW50cygnMHgxLycuJG5hbWVzLicucGhwJywgZmlsZV9nZXRfY29udGVudHMoJGxva2FzaSkpOwplY2hvICcgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmFsZXJ0KCJEb25lIik7d2luZG93LmxvY2F0aW9uLmhyZWYgPSAiMHgxLycuJG5hbWVzLicucGhwIjs8L3NjcmlwdD4gJzt9fQp9CkNyZWF0ZVRvb2xzKCJ3c28iLCJodHRwOi8vcGFzdGViaW4uY29tL3Jhdy8zZWgzR2VqMiIpOwpDcmVhdGVUb29scygiYWRtaW5lciIuImh0dHBzOi8vd3d3LmFkbWluZXIub3JnL3N0YXRpYy9kb3dubG9hZC80LjIuNS9hZG1pbmVyLTQuMi41LnBocCIpOwpDcmVhdGVUb29scygiYjM3NGsiLCJodHRwOi8vcGFzdGViaW4uY29tL3Jhdy9yWml5YVJHViIpOwpDcmVhdGVUb29scygiaW5qZWN0aW9uIiwiaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvbnh4TDhjMWYiKTsKQ3JlYXRlVG9vbHMoInByb21haWxlcnYyIiwiaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvUms5djZlU3EiKTsKQ3JlYXRlVG9vbHMoImdhbWVzdG9wY2VrZXIiLCJodHRwOi8vcGFzdGViaW4uY29tL3Jhdy9RU253MUpYViIpOwpDcmVhdGVUb29scygiYnVrYXBhbGFwYWsiLCJodHRwOi8vcGFzdGViaW4uY29tL3Jhdy82Q0I4a3JEaSIpOwpDcmVhdGVUb29scygidG9rb3BlZGlhIiwiaHR0cDovL3Bhc3RlYmluLmNvbS9kdmh6V2dieSIpOwpDcmVhdGVUb29scygiZW5jb2RlZGVjb2RlIiwiaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvd3FCM0c1ZVoiKTsKQ3JlYXRlVG9vbHMoIm1haWxlciIsImh0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3Lzl5dTFEbUpqIik7CkNyZWF0ZVRvb2xzKCJyNTciLCJodHRwOi8vcGFzdGViaW4uY29tL3Jhdy9HMlZFRHVuVyIpOwpDcmVhdGVUb29scygidG9rZW5wcCIsImh0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3LzcyeGdtdFBMIik7CkNyZWF0ZVRvb2xzKCJleHRyYWN0b3IiLCJodHRwOi8vcGFzdGViaW4uY29tL3Jhdy9qUW5NRkhCTCIpOwpDcmVhdGVUb29scygiYmgiLCJodHRwOi8vcGFzdGViaW4uY29tL3Jhdy8zTDJFU1dldSIpOwpDcmVhdGVUb29scygiZGhhbnVzIiwiaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvdjR4R3VzNlgiKTsKfQoJCi8vU3RhcnQgRnVuY3Rpb24KZnVuY3Rpb24gcGVybWlzc2lvbnMoJGZpbGUpewoKJHBlcm1zID0gQGZpbGVwZXJtcygkZmlsZSk7CmlmICgoJHBlcm1zICYgMHhDMDAwKSA9PSAweEMwMDApIHsKJGluZm8gPSAncyc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHhBMDAwKSA9PSAweEEwMDApIHsKJGluZm8gPSAnbCc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHg4MDAwKSA9PSAweDgwMDApIHsKJGluZm8gPSAnLSc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHg2MDAwKSA9PSAweDYwMDApIHsKJGluZm8gPSAnYic7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHg0MDAwKSA9PSAweDQwMDApIHsKJGluZm8gPSAnZCc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHgyMDAwKSA9PSAweDIwMDApIHsKJGluZm8gPSAnYyc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHgxMDAwKSA9PSAweDEwMDApIHsKJGluZm8gPSAncCc7Cn0gZWxzZSB7CiRpbmZvID0gJ3UnOwp9CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMTAwKSA/ICdyJyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDgwKSA/ICd3JyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDQwKSA/CigoJHBlcm1zICYgMHgwODAwKSA/ICdzJyA6ICd4JyApIDoKKCgkcGVybXMgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDEwKSA/ICd3JyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA4KSA/CigoJHBlcm1zICYgMHgwNDAwKSA/ICdzJyA6ICd4JyApIDoKKCgkcGVybXMgJiAweDA0MDApID8gJ1MnIDogJy0nKSk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA0KSA/ICdyJyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAxKSA/CigoJHBlcm1zICYgMHgwMjAwKSA/ICd0JyA6ICd4JyApIDoKKCgkcGVybXMgJiAweDAyMDApID8gJ1QnIDogJy0nKSk7CnJldHVybiAkaW5mbzsKfQpmdW5jdGlvbiBVcmxMb29wKCR1cmwsJHR5cGUpewogICR1cmxBcnJheSA9IGFycmF5KCk7CiAgJGNoID0gY3VybF9pbml0KCk7CiAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAkcmVzdWx0ID0gY3VybF9leGVjKCRjaCk7CiAgJHJlZ2V4PSd8PGEuKj9ocmVmPSIoLio/KSJ8JzsKICBwcmVnX21hdGNoX2FsbCgkcmVnZXgsJHJlc3VsdCwkcGFydHMpOwogICRsaW5rcyA9ICRwYXJ0c1sxXTsKICBmb3JlYWNoKCRsaW5rcyBhcyAkbGluayl7CiAgICBhcnJheV9wdXNoKCR1cmxBcnJheSwgJGxpbmspOwogIH0KICBjdXJsX2Nsb3NlKCRjaCk7CiAgZm9yZWFjaCgkdXJsQXJyYXkgYXMgJHZhbHVlKXsKICAgICRsb2wgPSAiJHVybCR2YWx1ZSI7CiAgICBpZihwcmVnX21hdGNoKCIjJHR5cGUjaXMiLCAkbG9sKSkgewogICAgICBlY2hvICIkbG9sXHJcbiI7CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBhbnVjdXJsKCRzaXRlcykgewogICAgJGNoID0gY3VybF9pbml0KCRzaXRlcyk7CiAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwogICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCAxKTsKICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCA2LjE7IHJ2OjMyLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMzIuMCIpOwogICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCA1KTsKICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7CiAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDApOwogICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUpBUiwnY29va2llLnR4dCcpOwogICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUZJTEUsJ2Nvb2tpZS50eHQnKTsKICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVTRVNTSU9OLHRydWUpOwogICAgJGRhdGEgPSBjdXJsX2V4ZWMoJGNoKTsKICAgICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgIHJldHVybiAkZGF0YTsKfQpmdW5jdGlvbiBjbGVhcnNwYWNlKCR0ZXh0KXsKCXJldHVybiBzdHJfcmVwbGFjZSgiICIsIl8iLCR0ZXh0KTsKfQkKZnVuY3Rpb24gbWFnaWNib29tKCR0ZXh0KXsKCWlmICghZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkgewogICAJCSByZXR1cm4gJHRleHQ7Cgl9IAoJcmV0dXJuIHN0cmlwc2xhc2hlcygkdGV4dCk7Cn0KZnVuY3Rpb24gYW1iaWxLYXRhKCRwYXJhbSwgJGthdGExLCAka2F0YTIpewogIGlmKHN0cnBvcygkcGFyYW0sICRrYXRhMSkgPT09IEZBTFNFKSByZXR1cm4gRkFMU0U7CiAgaWYoc3RycG9zKCRwYXJhbSwgJGthdGEyKSA9PT0gRkFMU0UpIHJldHVybiBGQUxTRTsKICAkc3RhcnQgPSBzdHJwb3MoJHBhcmFtLCAka2F0YTEpICsgc3RybGVuKCRrYXRhMSk7CiAgJGVuZCA9IHN0cnBvcygkcGFyYW0sICRrYXRhMiwgJHN0YXJ0KTsKICAkcmV0dXJuID0gc3Vic3RyKCRwYXJhbSwgJHN0YXJ0LCAkZW5kIC0gJHN0YXJ0KTsKICByZXR1cm4gJHJldHVybjsKfQpmdW5jdGlvbiBhbWJpbF9wYXNzd29yZCgkbGluaykgewogICRwYXNzID0gIiI7CiAgJGFtYmlsID0gZmlsZV9nZXRfY29udGVudHMoJGxpbmspOwogIGlmKHByZWdfbWF0Y2goIi9Xb3JkUHJlc3MvIiwgJGFtYmlsKSkgewogICAgJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwiREJfUEFTU1dPUkQnLCAnIiwiJyIpLiJcbiI7CiAgfSBlbHNlaWYocHJlZ19tYXRjaCgiL0pDb25maWd8am9vbWxhLyIsICRhbWJpbCkpIHsKICAgICRwYXNzIC49IGFtYmlsa2F0YSgkYW1iaWwsInBhc3N3b3JkID0gJyIsIiciKS4iXG4iOwogIH0gZWxzZWlmKHByZWdfbWF0Y2goIi9jbXNtZW1iZXIvIiwgJGFtYmlsKSkgewogICAgJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwnZGJwYXNzd2QgPSAiJywnIicpLiJcbiI7CiAgfSBlbHNlaWYocHJlZ19tYXRjaCgiL01hZ2VudG98TWFnZV9Db3JlLyIsICRhbWJpbCkpIHsKICAgICRwYXNzIC49IGFtYmlsa2F0YSgkYW1iaWwsIjxwYXNzd29yZD48IVtDREFUQVsiLCJdXT48L3Bhc3N3b3JkPiIpLiJcbiI7CiAgfSBlbHNlaWYocHJlZ19tYXRjaCgiL3BhbmdnaWwgZnVuZ3NpIHZhbGlkYXNpIHhzcyBkYW4gaW5qZWN0aW9uLyIsICRhbWJpbCkpIHsKICAgICRwYXNzIC49IGFtYmlsa2F0YSgkYW1iaWwsJ3Bhc3N3b3JkID0gIicsJyInKS4iXG4iOwogIH0gZWxzZWlmKHByZWdfbWF0Y2goIi9IVFRQX1NFUlZFUnxIVFRQX0NBVEFMT0d8RElSX0NPTkZJR3xESVJfU1lTVEVNLyIsICRhbWJpbCkpIHsKICAgICRwYXNzIC49IGFtYmlsa2F0YSgkYW1iaWwsIidEQl9QQVNTV09SRCcsICciLCInIikuIlxuIjsKICB9IGVsc2VpZihwcmVnX21hdGNoKCIvY2xpZW50LyIsICRhbWJpbCkpIHsKICAgIHByZWdfbWF0Y2goIi9wYXNzd29yZD0oLiopLyIsICRhbWJpbCwgJHBhc3MxKTsKICAgIGlmKHByZWdfbWF0Y2goJy8iLycsICRwYXNzMVsxXSkpIHsKICAgICAgJHBhc3MxWzFdID0gc3RyX3JlcGxhY2UoJyInLCAiIiwgJHBhc3MxWzFdKTsKICAgICAgJHBhc3MgLj0gJHBhc3MxWzFdLiJcbiI7CiAgICB9CiAgfSBlbHNlaWYocHJlZ19tYXRjaCgiL2NjX2VuY3J5cHRpb25faGFzaC8iLCAkYW1iaWwpKSB7CiAgICAkcGFzcyAuPSBhbWJpbGthdGEoJGFtYmlsLCJkYl9wYXNzd29yZCA9ICciLCInIikuIlxuIjsKICB9CiAgcmV0dXJuICRwYXNzOwp9CmZ1bmN0aW9uIHcoJGRpciwkcGVybSkgewogIGlmKCFpc193cml0YWJsZSgkZGlyKSkgewoJCXJldHVybiAiPGZvbnQgY29sb3I9cmVkPiIuJHBlcm0uIjwvZm9udD4iOwoJfSBlbHNlIHsKCQlyZXR1cm4gIjxmb250IGNvbG9yPWxpbWU+Ii4kcGVybS4iPC9mb250PiI7Cgl9Cn0KZnVuY3Rpb24gY2VranVtKCRrZW50dSl7CgoKCS8vICRpdCA9IG5ldyBSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yKCRrZW50dSxSZWN1cnNpdmVEaXJlY3RvcnlJdGVyYXRvcjo6U0tJUF9ET1RTKTsKCSRpdCA9IG5ldyBSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yCgkoCgkJbmV3IFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yKCRrZW50dSkKCSk7CgkvLyBpZigkaXQtPiBEaXJlY3RvcnlJdGVyYXRvcjo6aXNEb3QoKSl7CgkvLyAJZWNobyAiY29rIjsKCS8vIH0KCgkvLyAkaW5kZXggPSBhcnJheV9zZWFyY2goJy4uJywkaXQpOwoJLy8gaWYoJGluZGV4ICE9PSBGQUxTRSl7CgkvLyAgICAgdW5zZXQoJGl0WyRpbmRleF0pOwoJLy8gfQoKCiAgZm9yZWFjaCAoJGl0IGFzICRmaWxlbmFtZSkgewogIAkkZmlsZT1yZWFscGF0aChkaXJuYW1lKCRmaWxlbmFtZSkpOwoJaWYoJGZpbGUgPT0gIi4uIil7CgkJY29udGludWU7Cgl9CiAgICBpZiAoaXNfd3JpdGFibGUoJGZpbGVuYW1lKSl7CgokcGVybSA9IHBlcm1pc3Npb25zKCRmaWxlKTsKJHBlcm0gPSB3KCRmaWxlLCRwZXJtKTsKJHBlcm1kID0gcGVybWlzc2lvbnMoJGZpbGVuYW1lKTsKJHBlcm1kID0gdygkZmlsZW5hbWUsJHBlcm1kKTsKCiAgICAgIGlmKGlzX2RpcigkZmlsZW5hbWUpKXsKICAgICAgCWlmKGlzX3dyaXRhYmxlKCRmaWxlKSl7CiAgICAgICAgICBlY2hvICJbIEQgXSBbJHBlcm1dXHRcdDxhIGhyZWY9Jz9kaXI9JGZpbGUnPiRmaWxlPC9hPjxmb250IGNvbG9yPSdsaW1lJz5pcyB3cml0YWJsZTwvZm9udD48YnI+IjsKICAgICAgCX0KICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgIAlpZihpc193cml0YWJsZSgkZmlsZW5hbWUpKXsKICAgICAgICAgIGVjaG8gIlsgRiBdIFskcGVybWRdXHRcdDxhIGhyZWY9Jz9hY3Q9ZWRpdCZkaXI9JGZpbGUmZmlsZT0kZmlsZW5hbWUnPiRmaWxlbmFtZTwvYT48Zm9udCBjb2xvcj0nbGltZSc+aXMgd3JpdGFibGU8L2ZvbnQ+PGJyPiI7CiAgICAgICAgfQogICAgfQoKICAgICAgfQogIH0KfQpmdW5jdGlvbiBleGUoJGNtZCkgeyAJCmlmKGZ1bmN0aW9uX2V4aXN0cygnc3lzdGVtJykpIHsgCQkKCQlAb2Jfc3RhcnQoKTsgCQkKCQlAc3lzdGVtKCRjbWQpOyAJCQoJCSRidWZmID0gQG9iX2dldF9jb250ZW50cygpOyAJCQoJCUBvYl9lbmRfY2xlYW4oKTsgCQkKCQlyZXR1cm4gJGJ1ZmY7IAkKCX0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKSB7IAkJCgkJQGV4ZWMoJGNtZCwkcmVzdWx0cyk7IAkJCgkJJGJ1ZmYgPSAiIjsgCQkKCQlmb3JlYWNoKCRyZXN1bHRzIGFzICRyZXN1bHQpIHsgCQkJCgkJCSRidWZmIC49ICRyZXN1bHQ7IAkJCgkJfSByZXR1cm4gJGJ1ZmY7IAkKCX0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSkgeyAJCQoJCUBvYl9zdGFydCgpOyAJCQoJCUBwYXNzdGhydSgkY21kKTsgCQkKCQkkYnVmZiA9IEBvYl9nZXRfY29udGVudHMoKTsgCQkKCQlAb2JfZW5kX2NsZWFuKCk7IAkJCgkJcmV0dXJuICRidWZmOyAJCgl9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkgeyAJCQoJCSRidWZmID0gQHNoZWxsX2V4ZWMoJGNtZCk7IAkJCgkJcmV0dXJuICRidWZmOyAJCgl9IAp9CgovL0VuZCBGdW5jdGlvbgoKLy9zdGFydCBieXBhc3NlcgoKCi8vICRldGNwYXNzd2QgPSBldGNwYXNzd2QoKTsKCiRldGNwYXNzd2QgPSBAZmlsZV9nZXRfY29udGVudHMoJy9ldGMvcGFzc3dkJyk7CmlmKCEkZXRjcGFzc3dkKXsKCSRldGNwYXNzd2QgPSBleGUoJ2NhdCAvZXRjL3Bhc3N3ZCcpOwp9ICAgICAgICAKLy8gZW5kIGJ5cGFzc2VyCgoKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiRzcG9ydCA9ICRfU0VSVkVSWydTRVJWRVJfUE9SVCddOwokZDBtYWlucyA9IEBmaWxlKCIvZXRjL25hbWVkLmNvbmYiKTsKJHVzZXJzPUBmaWxlKCcvZXRjL3Bhc3N3ZCcpOwppZigkZDBtYWlucyl7CiAgJGNvdW50OwogIGZvcmVhY2goJGQwbWFpbnMgYXMgJGQwbWFpbil7CiAgICBpZihAZXJlZygiem9uZSIsJGQwbWFpbikpewogICAgICBwcmVnX21hdGNoX2FsbCgnI3pvbmUgIiguKikiIycsICRkMG1haW4sICRkb21haW5zKTsKICAgICAgZmx1c2goKTsKICAgICAgaWYoc3RybGVuKHRyaW0oJGRvbWFpbnNbMV1bMF0pKSA+IDIpewogICAgICAgIGZsdXNoKCk7CiAgICAgICAgJGNvdW50Kys7CiAgICAgIH0KICAgIH0KICB9CiAgJGNvdW50Mj0kY291bnQvMjsKfSBlbHNlIHsKCSRjb3VudDI9Ij8/IjsKfQokc20gPSAoQGluaV9nZXQoc3RydG9sb3dlcigic2FmZV9tb2RlIikpID09ICdvbicpID8gIjxmb250IGNvbG9yPXJlZD5PTjwvZm9udD4iIDogIjxmb250IGNvbG9yPWxpbWU+T0ZGPC9mb250PiI7CmVjaG8gIgoJPGJvZHk+Cgk8ZGl2IGlkPSdtYWluX2NvbnRlbnQnPjxzcGFuIGlkPSd0aXRsZSc+PGZvbnQgZmFjZT0nQmF1bWFucyc+JHNoZWxsX25hbWU8L2ZvbnQ+IDwvc3Bhbj48aT4kc2hlbGxfc2xvZ2FuPC9pPjxicj48YnI+PGRpdiBjbGFzcz0nYm94Jz4KIjsKZWNobycKPHRhYmxlICBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgo8Y29sZ3JvdXA+Cjxjb2wgc3R5bGU9IndpZHRoOiA0OTlweCI+Cjxjb2wgc3R5bGU9IndpZHRoOiA1OTlweCI+CjwvY29sZ3JvdXA+CiAgPHRyPgogICAgPHRkIG5vd3JhcD5TZXJ2ZXIgTmFtZTonLnBocF91bmFtZSgpLic8L3RkPgo8dGQgYWxpZ249InJpZ2h0Ij48Zm9ybT48ZGl2IGNsYXNzPSJzZWxlY3Qtc3R5bGUiPgo8c2VsZWN0IG9uY2hhbmdlPSJpZiAodGhpcy52YWx1ZSkgd2luZG93Lm9wZW4odGhpcy52YWx1ZSk7Ij4KICAgPG9wdGlvbiBzZWxlY3RlZD0ic2VsZWN0ZWQiIHZhbHVlPSIiPiA8aT5Ub29scyBDcmVhdG9yIDwvb3B0aW9uPgogICA8b3B0aW9uIHZhbHVlPSInLiRsaW5nLic9d3NvIj48aT5XU08gMi44LjE8L29wdGlvbj4KICAgPG9wdGlvbiB2YWx1ZT0iJy4kbGluZy4nPWluamVjdGlvbiI+PGk+MW43M2N0aW9uIHYzPC9vcHRpb24+CiAgIDxvcHRpb24gdmFsdWU9IicuJGxpbmcuJz13ayI+V0hNQ1MgS2lsbGVyPC9vcHRpb24+CiAgIDxvcHRpb24gdmFsdWU9IicuJGxpbmcuJz1hZG1pbmVyIj5BZG1pbmVyPC9vcHRpb24+CiAgIDxvcHRpb24gdmFsdWU9IicuJGxpbmcuJz1iMzc0ayI+YjM3NGsgU2hlbGw8L29wdGlvbj4KICAgPG9wdGlvbiB2YWx1ZT0iJy4kbGluZy4nPWIzNzRrMzIzIj5iMzc0ayAzLjI8L29wdGlvbj4gICAKICAgPG9wdGlvbiB2YWx1ZT0iJy4kbGluZy4nPWJoIj5CbGFja0hhdCBTaGVsbDwvb3B0aW9uPiAgICAgIAogICA8b3B0aW9uIHZhbHVlPSInLiRsaW5nLic9ZGhhbnVzIj5EaGFudXNoIFNoZWxsPC9vcHRpb24+ICAgICAKICAgPG9wdGlvbiB2YWx1ZT0iJy4kbGluZy4nPXI1NyI+UjU3IFNoZWxsPC9vcHRpb24+ICAgIAo8b3B0aW9uIHZhbHVlPSInLiRsaW5nLic9ZW5jb2RlZGVjb2RlIj5FbmNvZGUgRGVjb2RlPC9vcHRpb24+ICAgIAo8b3B0aW9uIHZhbHVlPSInLiRsaW5nLic9cjU3Ij5SNTcgU2hlbGw8L29wdGlvbj4gICAgCjwvc2VsZWN0Pgo8c2VsZWN0IG9uY2hhbmdlPSJpZiAodGhpcy52YWx1ZSkgd2luZG93Lm9wZW4odGhpcy52YWx1ZSk7Ij4KICAgPG9wdGlvbiBzZWxlY3RlZD0ic2VsZWN0ZWQiIHZhbHVlPSIiPiBUb29scyBDYXJkZXIgPC9vcHRpb24+CiAgIDxvcHRpb24gdmFsdWU9IicuJGxpbmcuJz1leHRyYWN0b3IiPkRCIEVtYWlsIEV4dHJhY3Rvcjwvb3B0aW9uPgogICA8b3B0aW9uIHZhbHVlPSInLiRsaW5nLic9cHJvbWFpbGVydjIiPlBybyBNYWlsZXIgVjI8L29wdGlvbj4gICAgIAogICA8b3B0aW9uIHZhbHVlPSInLiRsaW5nLic9YnVrYWxhcGFrIj5CdWthTGFwYWsgQ2hlY2tlcjwvb3B0aW9uPiAgICAgICAgCiAgIDxvcHRpb24gdmFsdWU9IicuJGxpbmcuJz10b2tvcGVkaWEiPlRva29QZWRpYSBDaGVja2VyPC9vcHRpb24+ICAKICAgPG9wdGlvbiB2YWx1ZT0iJy4kbGluZy4nPXRva2VucHAiPlBheXBhbCBUb2tlbiBHZW5lcmF0b3I8L29wdGlvbj4gIAogICA8b3B0aW9uIHZhbHVlPSInLiRsaW5nLic9bWFpbGVyIj5NYWlsZXI8L29wdGlvbj4gIAogICA8b3B0aW9uIHZhbHVlPSInLiRsaW5nLic9Z2FtZXN0b3BjZWtlciI+R2FtZXNUb3AgQ2hlY2tlcjwvb3B0aW9uPgogICA8L3NlbGVjdD48L2Rpdj4KPG5vc2NyaXB0PjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiPjwvbm9zY3JpcHQ+CjwvZm9ybT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPlVzZXIgOjxmb250IGNvbG9yPWxpbWU+Jy4kdXNlci4nPC9mb250PiAoJy4kdWlkLicpIEdyb3VwIDogPGZvbnQgY29sb3I9bGltZT4nLiRncm91cC4nPC9mb250PiAoJy4kZ2lkLicpPC90ZD4KICAgIDx0ZCBhbGlnbj0icmlnaHQiPic7CglpZigkc2VydmVyX3R5cGUgPT0gInB1YmxpY19odG1sIil7CiAgICBpZiAoZmlsZV9leGlzdHMoJy9ob21lLycuJHVzZXIuJy8ubXkuY25mJykpewogICAgICAkY3AgPSBmaWxlX2dldF9jb250ZW50cygnL2hvbWUvJy4kdXNlci4nLy5teS5jbmYnKTsKCQkgICRjcCA9IGFtYmlsa2F0YSgkY3AsJ3Bhc3N3b3JkPSInLCciJyk7CiAgICAgIGVjaG8gJ0NwYW5lbCA6IFVzZXJuYW1lIDxmb250IGNvbG9yPSJsaW1lIj4oPC9mb250PicuJHVzZXIuJzxmb250IGNvbG9yPSJsaW1lIj4pPC9mb250PiBQYXNzd29yZCA8Zm9udCBjb2xvcj0ibGltZSI+KDwvZm9udD4nLiRjcC4nPGZvbnQgY29sb3I9ImxpbWUiPik8L2ZvbnQ+JzsKICAgIH19CiAgICBlY2hvICcKICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgPHRkPlNlcnZlciBJUCA6PGZvbnQgY29sb3I9bGltZT4nLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKS4nPC9mb250PiAgPHNwYW4gY2xhc3M9ImVuYWJsZWQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmJpbmcuY29tL3NlYXJjaD9xPUlQOicuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsiSFRUUF9IT1NUIl0pLiciIHRhcmdldD0iX2JsYW5rIj5bQklOR108L2E+PC9zcGFuPiA8c3BhbiBjbGFzcz0iZW5hYmxlZCI+PGEgaHJlZj0iaHR0cHM6Ly9jZW50cmFsb3BzLm5ldC9jby9kb21haW5kb3NzaWVyLmFzcHg/YWRkcj0nLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKS4nJmRvbV93aG9pcz10cnVlJmRvbV9kbnM9dHJ1ZSZ0cmFjZXJvdXRlPXRydWUmbmV0X3dob2lzPXRydWUmc3ZjX3NjYW49dHJ1ZSIgdGFyZ2V0PSJfYmxhbmsiPltEb3NzaWVyXTwvYT48L3NwYW4+IHwgUG9ydCA6IDxmb250IGNvbG9yPWxpbWU+Jy4kc3BvcnQuJzwvZm9udD4gfCBZb3VyIElQOiA8Zm9udCBjb2xvcj1saW1lPicuJF9TRVJWRVJbIlJFTU9URV9BRERSIl0uJzwvZm9udD48L3RkPgoJPHRkIGFsaWduPSJyaWdodCI+JzsKICBpZigkc2VydmVyX3R5cGUgPT0gInB1YmxpY19odG1sIil7CglpZiAoZmlsZV9leGlzdHMoJy9ob21lLycuJHVzZXIuJy8uYWNjZXNzaGFzaCcpKXsKICAgICR3aG0gPSBmaWxlX2dldF9jb250ZW50cygnL2hvbWUvJy4kdXNlci4nLy5hY2Nlc3NoYXNoJyk7CgkJJHdobSA9IHByZWdfcmVwbGFjZSggJy9ccysvJyAsICcnICwgJHdobSApOwoJCWVjaG8gJzxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIzMCIgdmFsdWU9IldITSAnLiR1c2VyLic6Jy4kd2htLiciPic7CiAgfSB9CiAgZWNobyAnCiAgPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5TZXJ2ZXIgVHlwZSA6ICcuJHNlcnZlcl90eXBlLicgfCBXZWJzaXRlIDo8Zm9udCBjb2xvcj1saW1lPiAnLiRjb3VudDIuJyA8L2ZvbnQ+IERvbWFpbnM8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPlNhZmUgTW9kZTogJy4kc20uJzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+RGlzYWJsZSBGdW5jdGlvbnM6Jy4kc2hvd19kcy4nPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5TZXJ2ZXIgU29mdHdhcmU6ICcuJF9TRVJWRVJbIlNFUlZFUl9TT0ZUV0FSRSJdLicgPHNwYW4gY2xhc3M9ImVuYWJsZWQiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vc2VhcmNoLz9hY3Rpb249c2VhcmNoJmZpbHRlcl9wYWdlPTEmZmlsdGVyX2Rlc2NyaXB0aW9uPScuJF9TRVJWRVJbIlNFUlZFUl9TT0ZUV0FSRSJdLicmZmlsdGVyX2V4cGxvaXRfdGV4dD0mZmlsdGVyX2F1dGhvcj0mZmlsdGVyX3BsYXRmb3JtPTAmZmlsdGVyX3R5cGU9MCZmaWx0ZXJfbGFuZ19pZD0wJmZpbHRlcl9wb3J0PSZmaWx0ZXJfb3N2ZGI9JmZpbHRlcl9jdmU9IiB0YXJnZXQ9Il9ibGFuayI+W0V4cGxvaXQgREJdPC9hPjwvc3Bhbj4KCTwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+RGlyZWN0b3J5IDogJzsKCWZvcmVhY2goJHNjZGlyIGFzICRjX2RpciA9PiAkY2RpcikgewogICAgZWNobyAiPGEgaHJlZj0nP2Rpcj0iOwogICAgZm9yKCRpID0gMDsgJGkgPD0gJGNfZGlyOyAkaSsrKSB7CiAgICAgICAgZWNobyAkc2NkaXJbJGldOwogICAgICAgIGlmKCRpICE9ICRjX2RpcikgewogICAgICAgIGVjaG8gIi8iOwogICAgICAgIH0KICAgICAgfQogICAgZWNobyAiJz4kY2RpcjwvYT4vIjsKICB9CgllY2hvIjwvdGQ+Cgk8dGQgYWxpZ249J3JpZ2h0Jz48Zm9ybSBtZXRob2Q9J3Bvc3QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnPjxpbnB1dCB0eXBlPSdmaWxlJyBuYW1lPScweGZpbGUnPjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSd1cGxvYWQnIG5hbWU9J3VwbG9hZCc+PC9mb3JtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGZvcm0gbWV0aG9kPSdwb3N0JyBhY3Rpb249Jz9kaXI9JGRpciZkbz1jbWQnIHN0eWxlPSdmbG9hdDogbGVmdDsnPgogICAgQ29tbWFuZCA6IAogICAgPGlucHV0IHR5cGU9J3RleHQnIHNpemU9JzMwJyBoZWlnaHQ9JzEwJyBuYW1lPSdjbWQnPjxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2RvX2NtZCcgdmFsdWU9Jz4+Jz4KICAgIDwvZm9ybT48cD48L3A+Cgk8L3RkPgoJPHRkIGFsaWduPSdyaWdodCc+Ii4kYWN0eC4iPC90ZD4KICA8L3RyPgo8L3RhYmxlPjwvZGl2PiI7CmVjaG8gJzxhIGhyZWY9Ij8iPkhvbWU8L2E+IC8gJzsKZWNobyAiPGEgaHJlZj0nP2Rpcj0iLiRkaXIuIiZkbz1jb25maWcnPkNvbmZpZzwvYT4gLyAiOwplY2hvICI8YSBocmVmPSc/ZGlyPSIuJGRpci4iJmRvPWp1bXAnPkp1bXA8L2E+IC8gIjsKZWNobyAiPGEgaHJlZj0nP2Rpcj0iLiRkaXIuIiZkbz1zeW1saW5rJz5TeW08L2E+IC8gIjsKZWNobyAiPGEgaHJlZj0nP2Rpcj0iLiRkaXIuIiZkbz1jcGFuZWwnPkNwYW5lbDwvYT4gLyAiOwplY2hvICI8YSBocmVmPSc/ZGlyPSIuJGRpci4iJmRvPXN5bWxpbmsnPlN5bTwvYT4gLyAiOwplY2hvICI8YSBocmVmPSc/ZGlyPSIuJGRpci4iJmRvPW1hc3NfZGVmYWNlJz5NYXNzPC9hPiAvICI7CmVjaG8gIjxhIGhyZWY9Jz9kaXI9Ii4kZGlyLiImZG89bWlycm9yJz5NaXJyb3I8L2E+IC8gIjsKZWNobyAiPGEgaHJlZj0nP2Rpcj0iLiRkaXIuIiZkbz1jZ2knPkNnaTwvYT4gLyAiOwplY2hvICI8YSBocmVmPSc/ZGlyPSIuJGRpci4iJmRvPWJjJz5CQzwvYT4gLyAiOwplY2hvICI8YSBocmVmPSc/ZGlyPSIuJGRpci4iJmRvPWFib3V0Jz5BYm91dDwvYT4gLyAiOwplY2hvICI8YSBocmVmPSc/ZGlyPSIuJGRpci4iJmRvPXNlcnZlcmluZm8nPlNlcnZlciBJbmZvPC9hPiAvICI7CmVjaG8gIjxhIGhyZWY9Jz9kbz1kZWxldGVtZSc+U2VsZiBSZW1vdmU8L2E+IC8gIjsKZWNobyAiPGEgaHJlZj0nP2Rpcj0iLiRkaXIuIiZkbz1uZGVsaWtuZSc+SGlkZGVuIFNoZWxsPC9hPiAvICI7CmVjaG8gIjxhIGhyZWY9Jz9kaXI9Ii4kZGlyLiImZG89Y3JwJz5Db25maWcgUmVzUGFzczwvYT4gLyAiOwplY2hvICI8YSBocmVmPSc/ZGlyPSIuJGRpci4iJmRvPWdyYWJwYXNzJz5BdXRvIENVIEpvb21sYTwvYT4gLyAiOwplY2hvICI8YSBocmVmPSc/ZGlyPSIuJGRpci4iJmRvPWhlayc+RGVmYWNlPC9hPiAvICI7CmVjaG8gIjxhIGhyZWY9Jz9kaXI9Ii4kZGlyLiImZG89Y3ByZXMnPkNwYW5lbCBSZXNldDwvYT4gLyAiOwplY2hvICc8aHI+JzsJCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8gaWYoaXNzZXQoJF9HRVRbJ2FjdCddKSAmJiAoJF9HRVRbJ2FjdCddID09ICcnKSkKCgoKLy8gU1RBUlQgVE9PTFMgU0NSSVBUCmlmKGlzc2V0KCRfR0VUWydhY3QnXSkgJiYgKCRfR0VUWydhY3QnXSA9PSAnZGVsZXRlJykpIHsKICAgICRkZWxldGUgPSB1bmxpbmsoJF9HRVRbJ2ZpbGUnXSk7CiAgICBpZigkZGVsZXRlKSB7CiAgICAgICAgJGFjdCA9ICI8c2NyaXB0PndpbmRvdy5sb2NhdGlvbj0nP2Rpcj0iLiRkaXIuIic7PC9zY3JpcHQ+IjsKICAgIH0gZWxzZSB7CiAgICAgICAgJGFjdCA9ICI8Zm9udCBjb2xvcj1yZWQ+cGVybWlzc2lvbiBkZW5pZWQ8L2ZvbnQ+IjsKICAgIH0KICAgIGVjaG8gJGFjdDsKfQoKZWxzZWlmKGlzc2V0KCRfR0VUWydhY3QnXSkgJiYgKCRfR0VUWydhY3QnXSA9PSAnZGVsZXRlX2RpcicpKSB7CiAgICBmdW5jdGlvbiBEZWxldGUoJHBhdGgpCnsKICAkcGF0aCA9IChzdWJzdHIoJHBhdGgsLTEpPT0nLycpID8gJHBhdGg6JHBhdGguJy8nOwoJJGRoICA9IG9wZW5kaXIoJHBhdGgpOwogIHdoaWxlICggKCRpdGVtID0gcmVhZGRpcigkZGgpICkgIT09IGZhbHNlKSB7CiAgICAkaXRlbSA9ICRwYXRoLiRpdGVtOwogICAgaWYgKCAoYmFzZW5hbWUoJGl0ZW0pID09ICIuLiIpIHx8IChiYXNlbmFtZSgkaXRlbSkgPT0gIi4iKSApCiAgICAgIGNvbnRpbnVlOwogICAgJHR5cGUgPSBmaWxldHlwZSgkaXRlbSk7CiAgICBpZiAoJHR5cGUgPT0gImRpciIpCiAgICAgIERlbGV0ZSgkaXRlbSk7CiAgICBlbHNlCiAgICAgIEB1bmxpbmsoJGl0ZW0pOwogIH0KICBjbG9zZWRpcigkZGgpOwogIEBybWRpcigkcGF0aCk7fQogICRkZWxldGVfZGlyID0gRGVsZXRlKCRkaXIpOwogICRhY3QgPSAiPHNjcmlwdD53aW5kb3cubG9jYXRpb249Jz9kaXI9Ii5kaXJuYW1lKCRkaXIpLiInOzwvc2NyaXB0PiI7CiAgZWNobyAkYWN0Owp9CmVsc2VpZihpc3NldCgkX1BPU1RbJ2RvX3JlbmFtZSddKSkgewogICRyZW5hbWUgPSByZW5hbWUoJF9QT1NUWydvbGRuYW1lJ10sICIkZGlyLyIuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3JlbmFtZSddKS4iIik7CiAgaWYoJHJlbmFtZSkgewogICAgJGFjdCA9ICI8c2NyaXB0PndpbmRvdy5sb2NhdGlvbj0nP2Rpcj0iLiRkaXIuIic7PC9zY3JpcHQ+IjsKICB9IGVsc2UgewogICAgJGFjdCA9ICI8Zm9udCBjb2xvcj1yZWQ+cGVybWlzc2lvbiBkZW5pZWQ8L2ZvbnQ+IjsKICB9CiAgZWNobyAiIi4kYWN0LiI8YnI+IjsKfQplbHNlaWYoaXNzZXQoJF9QT1NUWydkaXJfcmVuYW1lJ10pKSB7CiAgJGRpcl9yZW5hbWUgPSByZW5hbWUoJGRpci4iLyIuJF9QT1NUWydvbGRuYW1lJ10sICIiLiRkaXIuIi8iLmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydmb2xfcmVuYW1lJ10pLiIiKTsKICBpZigkZGlyX3JlbmFtZSkgewogICAgJGFjdCA9ICI8c2NyaXB0PndpbmRvdy5sb2NhdGlvbj0nP2Rpcj0iLiRkaXIuIic7PC9zY3JpcHQ+IjsKICB9IGVsc2UgewogICAgJGFjdCA9ICI8Zm9udCBjb2xvcj1yZWQ+cGVybWlzc2lvbiBkZW5pZWQ8L2ZvbnQ+IjsKICB9CiAgZWNobyAiIi4kYWN0LiI8YnI+IjsKfQplbHNlaWYoaXNzZXQoJF9HRVRbJ2FjdCddKSAmJiAoJF9HRVRbJ2FjdCddID09ICduZXdmb2xkZXInKSkgewogIGlmKCRfUE9TVFsnbmV3X3NhdmVfZm9sZGVyJ10pIHsKICAgICRuZXdfZm9sZGVyID0gJGRpci4nLycuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ25ld2ZvbGRlciddKTsKICAgIGlmKCFta2RpcigkbmV3X2ZvbGRlcikpIHsKICAgICAgJGFjdCA9ICI8Zm9udCBjb2xvcj1yZWQ+cGVybWlzc2lvbiBkZW5pZWQ8L2ZvbnQ+IjsKICAgIH0gZWxzZSB7CiAgICAgICRhY3QgPSAiPHNjcmlwdD53aW5kb3cubG9jYXRpb249Jz9kaXI9Ii4kZGlyLiInOzwvc2NyaXB0PiI7CiAgICB9CiAgfQogIGVjaG8gJGFjdDsKfQplbHNlaWYoaXNzZXQoJF9HRVRbJ2FjdCddKSAmJiAoJF9HRVRbJ2FjdCddID09ICd2aWV3JykpIHsKICBpZihpc19maWxlKCRfR0VUWydmaWxlJ10pKXsgCglpZighaXNzZXQoJGZpbGUpKSAkZmlsZSA9IG1hZ2ljYm9vbSgkX0dFVFsnZmlsZSddKTsKCWVjaG8gIkZpbGVuYW1lIDogPGZvbnQgY29sb3I9bGltZT4iLmJhc2VuYW1lKCRfR0VUWydmaWxlJ10pLiI8L2ZvbnQ+IFsgPGEgaHJlZj0nP2FjdD12aWV3JmRpcj0kZGlyJmZpbGU9Ii4kX0dFVFsnZmlsZSddLiInPjxiPnZpZXc8L2I+PC9hPiBdIFsgPGEgaHJlZj0nP2FjdD1lZGl0JmRpcj0kZGlyJmZpbGU9Ii4kX0dFVFsnZmlsZSddLiInPmVkaXQ8L2E+IF0gWyA8YSBocmVmPSc/YWN0PXJlbmFtZSZkaXI9JGRpciZmaWxlPSIuJF9HRVRbJ2ZpbGUnXS4iJz5yZW5hbWU8L2E+IF0gWyA8YSBocmVmPSc/YWN0PWRvd25sb2FkJmRpcj0kZGlyJmZpbGU9Ii4kX0dFVFsnZmlsZSddLiInPmRvd25sb2FkPC9hPiBdIFsgPGEgaHJlZj0nP2FjdD1kZWxldGUmZGlyPSRkaXImZmlsZT0iLiRfR0VUWydmaWxlJ10uIic+ZGVsZXRlPC9hPiBdPGJyPiI7CgkJZWNobyAiPGRpdiBjbGFzcz1cInZpZXdmaWxlXCI+IjsKCQkkZmlsZSA9IHdvcmR3cmFwKEBmaWxlX2dldF9jb250ZW50cygkZmlsZSksIjI0MCIsIlxuIik7CgkJQGhpZ2hsaWdodF9zdHJpbmcoJGZpbGUpOwoJCWVjaG8gIjwvZGl2PiI7Cn1lbHNlaWYoaXNfZGlyKCRfR0VUWyd2aWV3J10pKXsKICBlY2hvIHNob3dkaXIoJGRpciwkcHJvbXB0KTsKfQkKfQoKCi8vZW5kIGFjdAoKZWxzZWlmKGlzc2V0KCRfR0VUWydkbyddKSAmJiAoJF9HRVRbJ2RvJ10gPT0gJ2NwYW5lbCcpKSB7CiAgaWYoJF9QT1NUWydjcmFjayddKSB7CiAgICAkdXNlcmNwID0gZXhwbG9kZSgiXHJcbiIsICRfUE9TVFsndXNlcl9jcCddKTsKICAgICRwYXNzY3AgPSBleHBsb2RlKCJcclxuIiwgJF9QT1NUWydwYXNzX2NwJ10pOwogICAgJGkgPSAwOwogICAgZm9yZWFjaCgkdXNlcmNwIGFzICR1Y3ApIHsKICAgICAgZm9yZWFjaCgkcGFzc2NwIGFzICRwY3ApIHsKICAgICAgICBpZihAbXlzcWxfY29ubmVjdCgnbG9jYWxob3N0JywgJHVjcCwgJHBjcCkpIHsKICAgICAgICAgIGlmKCRfU0VTU0lPTlskdWNwXSAmJiAkX1NFU1NJT05bJHBjcF0pIHsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRfU0VTU0lPTlskdWNwXSA9ICIxIjsKICAgICAgICAgICAgJF9TRVNTSU9OWyRwY3BdID0gIjEiOwogICAgICAgICAgICAkaSsrOwogICAgICAgICAgICBlY2hvICJ1c2VybmFtZSAoPGZvbnQgY29sb3I9bGltZT4kdWNwPC9mb250PikgcGFzc3dvcmQgKDxmb250IGNvbG9yPWxpbWU+JHBjcDwvZm9udD4pPGJyPiI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHNlc3Npb25fdW5zZXQoKTsKICAgICAgc2Vzc2lvbl9kZXN0cm95KCk7IAogICAgfQogICAgaWYoJGkgPT0gMCkgewogICAgfSBlbHNlIHsKICAgICAgZWNobyAiPGJyPk5lbXUgIi4kaS4iIENwYW5lbCBieSA8Zm9udCBjb2xvcj1saW1lPjB4MTk5OTwvZm9udD4iOwogICAgfQogIH0gZWxzZSB7CiAgICBlY2hvICI8Y2VudGVyPgogICAgPGZvcm0gbWV0aG9kPSdwb3N0Jz4KICAgIFVTRVI6IDxicj4KICAgIDx0ZXh0YXJlYSBzdHlsZT0nd2lkdGg6IDQ1MHB4OyBoZWlnaHQ6IDE1MHB4OycgbmFtZT0ndXNlcl9jcCc+IjsKICAgICRfdXNlcmNwID0gZm9wZW4oIi9ldGMvcGFzc3dkIiwiciIpOwogICAgd2hpbGUoJGdldHUgPSBmZ2V0cygkX3VzZXJjcCkpIHsKICAgICAgaWYoJGdldHUgPT0gJycgfHwgISRfdXNlcmNwKSB7CiAgICAgICAgZWNobyAiPGZvbnQgY29sb3I9cmVkPkNhbid0IHJlYWQgL2V0Yy9wYXNzd2Q8L2ZvbnQ+IjsKICAgICAgfSBlbHNlIHsKICAgICAgICBwcmVnX21hdGNoX2FsbCgiLyguKj8pOng6LyIsICRnZXR1LCAkdSk7CiAgICAgICAgZm9yZWFjaCgkdVsxXSBhcyAkdXNlcl9jcCkgewogICAgICAgICAgICBpZihpc19kaXIoIi9ob21lLyR1c2VyX2NwL3B1YmxpY19odG1sIikpIHsKICAgICAgICAgICAgICBlY2hvICIkdXNlcl9jcFxuIjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGVjaG8gIjwvdGV4dGFyZWE+PGJyPgogICAgUEFTUzogPGJyPgogICAgPHRleHRhcmVhIHN0eWxlPSd3aWR0aDogNDUwcHg7IGhlaWdodDogMjAwcHg7JyBuYW1lPSdwYXNzX2NwJz4iOwogICAgZnVuY3Rpb24gY3BfcGFzcygkZGlyKSB7CiAgICAgICRwYXNzID0gIiI7CiAgICAgICRkaXJhID0gc2NhbmRpcigkZGlyKTsKICAgICAgZm9yZWFjaCgkZGlyYSBhcyAkZGlyYikgewogICAgICAgIGlmKCFpc19maWxlKCIkZGlyLyRkaXJiIikpIGNvbnRpbnVlOwogICAgICAgICRhbWJpbCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCIkZGlyLyRkaXJiIik7CiAgICAgICAgaWYocHJlZ19tYXRjaCgiL1dvcmRQcmVzcy8iLCAkYW1iaWwpKSB7CiAgICAgICAgICAkcGFzcyAuPSBhbWJpbGthdGEoJGFtYmlsLCJEQl9QQVNTV09SRCcsICciLCInIikuIlxuIjsKICAgICAgICB9IGVsc2VpZihwcmVnX21hdGNoKCIvSkNvbmZpZ3xqb29tbGEvIiwgJGFtYmlsKSkgewogICAgICAgICAgJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwicGFzc3dvcmQgPSAnIiwiJyIpLiJcbiI7CiAgICAgICAgfQoKICAgICAgICAgZWxzZWlmKHByZWdfbWF0Y2goIi9rb25la0RCLyIsICRhbWJpbCkpIHsKICAgICAgICAgICRwYXNzIC49IGFtYmlsa2F0YSgkYW1iaWwsIiRwYXNzd29yZCA9ICciLCInIikuIlxuIjsKICAgICAgICB9CgogICAgICAgICBlbHNlaWYocHJlZ19tYXRjaCgiL2Ntc21lbWJlci8iLCAkYW1iaWwpKSB7CiAgICAgICAgICAkcGFzcyAuPSBhbWJpbGthdGEoJGFtYmlsLCdkYnBhc3N3ZCA9ICInLCciJykuIlxuIjsKICAgICAgICB9IGVsc2VpZihwcmVnX21hdGNoKCIvTWFnZW50b3xNYWdlX0NvcmUvIiwgJGFtYmlsKSkgewogICAgICAgICAgJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwiPHBhc3N3b3JkPjwhW0NEQVRBWyIsIl1dPjwvcGFzc3dvcmQ+IikuIlxuIjsKICAgICAgICB9IGVsc2VpZihwcmVnX21hdGNoKCIvcGFuZ2dpbCBmdW5nc2kgdmFsaWRhc2kgeHNzIGRhbiBpbmplY3Rpb24vIiwgJGFtYmlsKSkgewogICAgICAgICAgJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwncGFzc3dvcmQgPSAiJywnIicpLiJcbiI7CiAgICAgICAgfSBlbHNlaWYocHJlZ19tYXRjaCgiL0hUVFBfU0VSVkVSfEhUVFBfQ0FUQUxPR3xESVJfQ09ORklHfERJUl9TWVNURU0vIiwgJGFtYmlsKSkgewogICAgICAgICAgJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwiJ0RCX1BBU1NXT1JEJywgJyIsIiciKS4iXG4iOwogICAgICAgIH0gZWxzZWlmKHByZWdfbWF0Y2goIi9jbGllbnQvIiwgJGFtYmlsKSkgewogICAgICAgICAgcHJlZ19tYXRjaCgiL3Bhc3N3b3JkPSguKikvIiwgJGFtYmlsLCAkcGFzczEpOwogICAgICAgICAgaWYocHJlZ19tYXRjaCgnLyIvJywgJHBhc3MxWzFdKSkgewogICAgICAgICAgICAkcGFzczFbMV0gPSBzdHJfcmVwbGFjZSgnIicsICIiLCAkcGFzczFbMV0pOwogICAgICAgICAgICAkcGFzcyAuPSAkcGFzczFbMV0uIlxuIjsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZihwcmVnX21hdGNoKCIvY2NfZW5jcnlwdGlvbl9oYXNoLyIsICRhbWJpbCkpIHsKICAgICAgICAgICRwYXNzIC49IGFtYmlsa2F0YSgkYW1iaWwsImRiX3Bhc3N3b3JkID0gJyIsIiciKS4iXG4iOwogICAgICAgIH0KICAgICAgfQogICAgICBlY2hvICRwYXNzOwogICAgfQogICAgJGNwX3Bhc3MgPSBjcF9wYXNzKCRkaXIpOwogICAgZWNobyAkY3BfcGFzczsKICAgIGVjaG8gIjwvdGV4dGFyZWE+PGJyPgogICAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nY3JhY2snIHN0eWxlPSd3aWR0aDogNDUwcHg7JyB2YWx1ZT0nQ3JhY2snPgogICAgPC9mb3JtPgogICAgPGJyPjwvY2VudGVyPiI7CiAgfQp9ZWxzZWlmKGlzc2V0KCRfR0VUWydkbyddKSAmJiAoJF9HRVRbJ2RvJ10gPT0gJ2NnaScpKSB7CgllY2hvICI8Y2VudGVyLz48YnIvPjxiPjxmb250IGNvbG9yPWJsdWU+Ky0tPT1bIGNnaXRlbG5ldC52MSAgQnlwYXNzIEV4cGxvaXRdPT0tLSsgPC9mb250PjwvYj48YnI+PGJyPiI7CiBta2RpcignY2dpdGVsbmV0MScsIDA3NTUpOwogICAgY2hkaXIoJ2NnaXRlbG5ldDEnKTsgICAgICAKICAgICAgICAka29rZG9zeWEgPSAiLmh0YWNjZXNzIjsKICAgICAgICAkZG9zeWFfYWRpID0gIiRrb2tkb3N5YSI7CiAgICAgICAgJGRvc3lhID0gZm9wZW4gKCRkb3N5YV9hZGkgLCAndycpIG9yIGRpZSAoIkRvc3lhIGEmIzIzMTsmIzMwNTtsYW1hZCYjMzA1OyEiKTsKICAgICAgICAkbWV0aW4gPSAiT3B0aW9ucyBGb2xsb3dTeW1MaW5rcyBNdWx0aVZpZXdzIEluZGV4ZXMgRXhlY0NHSQoKQWRkVHlwZSBhcHBsaWNhdGlvbi94LWh0dHBkLWNnaSAuY2luCgpBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNpbgpBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNpbiI7ICAgIAogICAgICAgIGZ3cml0ZSAoICRkb3N5YSAsICRtZXRpbiApIDsKICAgICAgICBmY2xvc2UgKCRkb3N5YSk7CiRjZ2lzaGVsbGl6b2NpbiA9ICdJeUV2ZFhOeUwySnBiaTl3WlhKc0NpTWdRMjl3ZVhKcFoyaDBJQ2hES1NBeU1EQXhJRkp2YUdsMFlXSWdRbUYwY21FS0l5QlNaV052WkdWa0lFSjVJREI0TVRrNU9Rb0tKRmRwYms1VUlEMGdNRHNLSkU1VVEyMWtVMlZ3SUQwZ0lpWWlPd29rVlc1cGVFTnRaRk5sY0NBOUlDSTdJanNLSkVOdmJXMWhibVJVYVcxbGIzVjBSSFZ5WVhScGIyNGdQU0F4TURzS0pGTm9iM2RFZVc1aGJXbGpUM1YwY0hWMElEMGdNVHNLSkVOdFpGTmxjQ0E5SUNna1YybHVUbFFnUHlBa1RsUkRiV1JUWlhBZ09pQWtWVzVwZUVOdFpGTmxjQ2s3Q2lSRGJXUlFkMlFnUFNBb0pGZHBiazVVSUQ4Z0ltTmtJaUE2SUNKd2QyUWlLVHNLSkZCaGRHaFRaWEFnUFNBb0pGZHBiazVVSUQ4Z0lseGNJaUE2SUNJdklpazdDaVJTWldScGNtVmpkRzl5SUQwZ0tDUlhhVzVPVkNBL0lDSWdNajRtTVNBeFBpWXlJaUE2SUNJZ01UNG1NU0F5UGlZeElpazdDbk4xWWlCU1pXRmtVR0Z5YzJVZ0Nuc0tDV3h2WTJGc0lDZ3FhVzRwSUQwZ1FGOGdhV1lnUUY4N0NnbHNiMk5oYkNBb0pHa3NJQ1JzYjJNc0lDUnJaWGtzSUNSMllXd3BPd29KQ2dra1RYVnNkR2x3WVhKMFJtOXliVVJoZEdFZ1BTQWtSVTVXZXlkRFQwNVVSVTVVWDFSWlVFVW5mU0E5ZmlBdmJYVnNkR2x3WVhKMFhDOW1iM0p0TFdSaGRHRTdJR0p2ZFc1a1lYSjVQU2d1S3lra0x6c0tDZ2xwWmlna1JVNVdleWRTUlZGVlJWTlVYMDFGVkVoUFJDZDlJR1Z4SUNKSFJWUWlLUW9KZXdvSkNTUnBiaUE5SUNSRlRsWjdKMUZWUlZKWlgxTlVVa2xPUnlkOU93b0pmUW9KWld4emFXWW9KRVZPVm5zblVrVlJWVVZUVkY5TlJWUklUMFFuZlNCbGNTQWlVRTlUVkNJcENnbDdDZ2tKWW1sdWJXOWtaU2hUVkVSSlRpa2dhV1lnSkUxMWJIUnBjR0Z5ZEVadmNtMUVZWFJoSUNZZ0pGZHBiazVVT3dvSkNYSmxZV1FvVTFSRVNVNHNJQ1JwYml3Z0pFVk9WbnNuUTA5T1ZFVk9WRjlNUlU1SFZFZ25mU2s3Q2dsOUNnb0pJeUJvWVc1a2JHVWdabWxzWlNCMWNHeHZZV1FnWkdGMFlRb0phV1lvSkVWT1Zuc25RMDlPVkVWT1ZGOVVXVkJGSjMwZ1BYNGdMMjExYkhScGNHRnlkRnd2Wm05eWJTMWtZWFJoT3lCaWIzVnVaR0Z5ZVQwb0xpc3BKQzhwQ2dsN0Nna0pKRUp2ZFc1a1lYSjVJRDBnSnkwdEp5NGtNVHNnSXlCd2JHVmhjMlVnY21WbVpYSWdkRzhnVWtaRE1UZzJOeUFLQ1FsQWJHbHpkQ0E5SUhOd2JHbDBLQzhrUW05MWJtUmhjbmt2TENBa2FXNHBPeUFLQ1Fra1NHVmhaR1Z5UW05a2VTQTlJQ1JzYVhOMFd6RmRPd29KQ1NSSVpXRmtaWEpDYjJSNUlEMStJQzljY2x4dVhISmNibnhjYmx4dUx6c0tDUWtrU0dWaFpHVnlJRDBnSkdBN0Nna0pKRUp2WkhrZ1BTQWtKenNLSUFrSkpFSnZaSGtnUFg0Z2N5OWNjbHh1SkM4dk95QWpJSFJvWlNCc1lYTjBJRnh5WEc0Z2QyRnpJSEIxZENCcGJpQmllU0JPWlhSelkyRndaUW9KQ1NScGJuc25abWxzWldSaGRHRW5mU0E5SUNSQ2IyUjVPd29KQ1NSSVpXRmtaWElnUFg0Z0wyWnBiR1Z1WVcxbFBWd2lLQzRyS1Z3aUx6c2dDZ2tKSkdsdWV5ZG1KMzBnUFNBa01Uc2dDZ2tKSkdsdWV5ZG1KMzBnUFg0Z2N5OWNJaTh2WnpzS0NRa2thVzU3SjJZbmZTQTlmaUJ6TDF4ekx5OW5Pd29LQ1FraklIQmhjbk5sSUhSeVlXbHNaWElLQ1FsbWIzSW9KR2s5TWpzZ0pHeHBjM1JiSkdsZE95QWthU3NyS1FvSkNYc2dDZ2tKQ1NSc2FYTjBXeVJwWFNBOWZpQnpMMTR1SzI1aGJXVTlKQzh2T3dvSkNRa2tiR2x6ZEZza2FWMGdQWDRnTDF3aUtGeDNLeWxjSWk4N0Nna0pDU1JyWlhrZ1BTQWtNVHNLQ1FrSkpIWmhiQ0E5SUNRbk93b0pDUWtrZG1Gc0lEMStJSE12S0Y0b1hISmNibHh5WEc1OFhHNWNiaWtwZkNoY2NseHVKSHhjYmlRcEx5OW5Pd29KQ1Fra2RtRnNJRDErSUhNdkpTZ3VMaWt2Y0dGamF5Z2lZeUlzSUdobGVDZ2tNU2twTDJkbE93b0pDUWtrYVc1N0pHdGxlWDBnUFNBa2RtRnNPeUFLQ1FsOUNnbDlDZ2xsYkhObElDTWdjM1JoYm1SaGNtUWdjRzl6ZENCa1lYUmhJQ2gxY213Z1pXNWpiMlJsWkN3Z2JtOTBJRzExYkhScGNHRnlkQ2tLQ1hzS0NRbEFhVzRnUFNCemNHeHBkQ2d2Smk4c0lDUnBiaWs3Q2drSlptOXlaV0ZqYUNBa2FTQW9NQ0F1TGlBa0kybHVLUW9KQ1hzS0NRa0pKR2x1V3lScFhTQTlmaUJ6TDF3ckx5QXZaenNLQ1FrSktDUnJaWGtzSUNSMllXd3BJRDBnYzNCc2FYUW9MejB2TENBa2FXNWJKR2xkTENBeUtUc0tDUWtKSkd0bGVTQTlmaUJ6THlVb0xpNHBMM0JoWTJzb0ltTWlMQ0JvWlhnb0pERXBLUzluWlRzS0NRa0pKSFpoYkNBOWZpQnpMeVVvTGk0cEwzQmhZMnNvSW1NaUxDQm9aWGdvSkRFcEtTOW5aVHNLQ1FrSkpHbHVleVJyWlhsOUlDNDlJQ0pjTUNJZ2FXWWdLR1JsWm1sdVpXUW9KR2x1ZXlSclpYbDlLU2s3Q2drSkNTUnBibnNrYTJWNWZTQXVQU0FrZG1Gc093b0pDWDBLQ1gwS2ZRcHpkV0lnVUhKcGJuUlFZV2RsU0dWaFpHVnlDbnNLQ1NSRmJtTnZaR1ZrUTNWeWNtVnVkRVJwY2lBOUlDUkRkWEp5Wlc1MFJHbHlPd29KSkVWdVkyOWtaV1JEZFhKeVpXNTBSR2x5SUQxK0lITXZLRnRlWVMxNlFTMWFNQzA1WFNrdkp5VW5MblZ1Y0dGamF5Z2lTQ29pTENReEtTOWxaenNLQ1hCeWFXNTBJQ0pEYjI1MFpXNTBMWFI1Y0dVNklIUmxlSFF2YUhSdGJGeHVYRzRpT3dvSmNISnBiblFnUER4RlRrUTdDanhvZEcxc1BnbzhhR1ZoWkQ0S1BIUnBkR3hsUGtOSFNTMVVaV3h1WlhRZ1ZtVnljMmx2YmlBeExqQThMM1JwZEd4bFBnb2tTSFJ0YkUxbGRHRklaV0ZrWlhJS1BDOW9aV0ZrUGdvOFltOWtlU0J2Ymt4dllXUTlJbVJ2WTNWdFpXNTBMbVl1UUY4dVptOWpkWE1vS1NJZ1ltZGpiMnh2Y2owaUl6QkJNRUV3UVNJZ2RHOXdiV0Z5WjJsdVBTSXdJaUJzWldaMGJXRnlaMmx1UFNJd0lpQnRZWEpuYVc1M2FXUjBhRDBpTUNJZ2JXRnlaMmx1YUdWcFoyaDBQU0l3SWo0S1BHRWdhSEpsWmowaUpGTmpjbWx3ZEV4dlkyRjBhVzl1UDJFOWRYQnNiMkZrSm1ROUpFVnVZMjlrWldSRGRYSnlaVzUwUkdseUlqNVZjR3h2WVdRZ1JtbHNaVHd2WVQ0Z2ZDQUtQR0VnYUhKbFpqMGlKRk5qY21sd2RFeHZZMkYwYVc5dVAyRTlaRzkzYm14dllXUW1aRDBrUlc1amIyUmxaRU4xY25KbGJuUkVhWElpUGtSdmQyNXNiMkZrSUVacGJHVThMMkUrSUh3S1BHRWdhSEpsWmowaUpGTmpjbWx3ZEV4dlkyRjBhVzl1UDJFOWJHOW5iM1YwSWo1RWFYTmpiMjV1WldOMFBDOWhQaUI4Q2p4aElHaHlaV1k5SW1oMGRIQTZMeTkzZDNjdWNtOW9hWFJoWWk1amIyMHZZMmRwYzJOeWFYQjBjeTlqWjJsMFpXeHVaWFF1YUhSdGJDSStTR1ZzY0R3dllUNDhZbkkrQ2p4bWIyNTBJR052Ykc5eVBTSWpRekJETUVNd0lpQnphWHBsUFNJeklqNEtSVTVFQ24wS2MzVmlJRkJ5YVc1MFVHRm5aVVp2YjNSbGNncDdDZ2x3Y21sdWRDQWlQQzltYjI1MFBqd3ZZbTlrZVQ0OEwyaDBiV3crSWpzS2ZRcHpkV0lnUjJWMFEyOXZhMmxsY3dwN0NnbEFhSFIwY0dOdmIydHBaWE1nUFNCemNHeHBkQ2d2T3lBdkxDUkZUbFo3SjBoVVZGQmZRMDlQUzBsRkozMHBPd29KWm05eVpXRmphQ0FrWTI5dmEybGxLRUJvZEhSd1kyOXZhMmxsY3lrS0NYc0tDUWtvSkdsa0xDQWtkbUZzS1NBOUlITndiR2wwS0M4OUx5d2dKR052YjJ0cFpTazdDZ2tKSkVOdmIydHBaWE43Skdsa2ZTQTlJQ1IyWVd3N0NnbDlDbjBLYzNWaUlGQnlhVzUwUTI5dGJXRnVaRXhwYm1WSmJuQjFkRVp2Y20wS2V3b0pKRkJ5YjIxd2RDQTlJQ1JYYVc1T1ZDQS9JQ0lrUTNWeWNtVnVkRVJwY2o0Z0lpQTZJQ0piWVdSdGFXNWNRQ1JUWlhKMlpYSk9ZVzFsSUNSRGRYSnlaVzUwUkdseVhWd2tJQ0k3Q2dsd2NtbHVkQ0E4UEVWT1JEc0tQR052WkdVK0NqeG1iM0p0SUc1aGJXVTlJbVlpSUcxbGRHaHZaRDBpVUU5VFZDSWdZV04wYVc5dVBTSWtVMk55YVhCMFRHOWpZWFJwYjI0aVBnbzhhVzV3ZFhRZ2RIbHdaVDBpYUdsa1pHVnVJaUJ1WVcxbFBTSmhJaUIyWVd4MVpUMGlZMjl0YldGdVpDSStDanhwYm5CMWRDQjBlWEJsUFNKb2FXUmtaVzRpSUc1aGJXVTlJbVFpSUhaaGJIVmxQU0lrUTNWeWNtVnVkRVJwY2lJK0NpUlFjbTl0Y0hRS1BHbHVjSFYwSUhSNWNHVTlJblJsZUhRaUlHNWhiV1U5SW1NaVBnbzhhVzV3ZFhRZ2RIbHdaVDBpYzNWaWJXbDBJaUIyWVd4MVpUMGlSVzUwWlhJaVBnbzhMMlp2Y20wK0Nqd3ZZMjlrWlQ0S1JVNUVDbjBLYzNWaUlFTnZiVzFoYm1SVWFXMWxiM1YwQ25zS0NXbG1LQ0VrVjJsdVRsUXBDZ2w3Q2drSllXeGhjbTBvTUNrN0Nna0pjSEpwYm5RZ1BEeEZUa1E3Q2p3dmVHMXdQZ284WTI5a1pUNEtRMjl0YldGdVpDQmxlR05sWldSbFpDQnRZWGhwYlhWdElIUnBiV1VnYjJZZ0pFTnZiVzFoYm1SVWFXMWxiM1YwUkhWeVlYUnBiMjRnYzJWamIyNWtLSE1wTGdvOFluSStTMmxzYkdWa0lHbDBJUW84WTI5a1pUNEtSVTVFQ2drSkpsQnlhVzUwUTI5dGJXRnVaRXhwYm1WSmJuQjFkRVp2Y20wN0Nna0pKbEJ5YVc1MFVHRm5aVVp2YjNSbGNqc0tDUWxsZUdsME93b0pmUXA5Q25OMVlpQkZlR1ZqZFhSbFEyOXRiV0Z1WkFwN0NnbHBaaWdrVW5WdVEyOXRiV0Z1WkNBOWZpQnRMMTVjY3lwalpGeHpLeWd1S3lrdktTQWpJR2wwSUdseklHRWdZMmhoYm1kbElHUnBjaUJqYjIxdFlXNWtDZ2w3Q2drSkl5QjNaU0JqYUdGdVoyVWdkR2hsSUdScGNtVmpkRzl5ZVNCcGJuUmxjbTVoYkd4NUxpQlVhR1VnYjNWMGNIVjBJRzltSUhSb1pRb0pDU01nWTI5dGJXRnVaQ0JwY3lCdWIzUWdaR2x6Y0d4aGVXVmtMZ29KQ1FvSkNTUlBiR1JFYVhJZ1BTQWtRM1Z5Y21WdWRFUnBjanNLQ1Fra1EyOXRiV0Z1WkNBOUlDSmpaQ0JjSWlSRGRYSnlaVzUwUkdseVhDSWlMaVJEYldSVFpYQXVJbU5rSUNReElpNGtRMjFrVTJWd0xpUkRiV1JRZDJRN0Nna0pZMmh2Y0Nna1EzVnljbVZ1ZEVScGNpQTlJR0FrUTI5dGJXRnVaR0FwT3dvSkNTWlFjbWx1ZEZCaFoyVklaV0ZrWlhJb0ltTWlLVHNLQ1Fra1VISnZiWEIwSUQwZ0pGZHBiazVVSUQ4Z0lpUlBiR1JFYVhJK0lDSWdPaUFpVzJGa2JXbHVYRUFrVTJWeWRtVnlUbUZ0WlNBa1QyeGtSR2x5WFZ3a0lDSTdDZ2tKY0hKcGJuUWdJanhqYjJSbFBpUlFjbTl0Y0hRZ0pGSjFia052YlcxaGJtUThMMk52WkdVK0lqc0tDWDBLQ1dWc2MyVWdJeUJ6YjIxbElHOTBhR1Z5SUdOdmJXMWhibVFzSUdScGMzQnNZWGtnZEdobElHOTFkSEIxZEFvSmV3b0pDU1pRY21sdWRGQmhaMlZJWldGa1pYSW9JbU1pS1RzS0NRa2tVSEp2YlhCMElEMGdKRmRwYms1VUlEOGdJaVJEZFhKeVpXNTBSR2x5UGlBaUlEb2dJbHRoWkcxcGJseEFKRk5sY25abGNrNWhiV1VnSkVOMWNuSmxiblJFYVhKZFhDUWdJanNLQ1Fsd2NtbHVkQ0FpUEdOdlpHVStKRkJ5YjIxd2RDQWtVblZ1UTI5dGJXRnVaRHd2WTI5a1pUNDhlRzF3UGlJN0Nna0pKRU52YlcxaGJtUWdQU0FpWTJRZ1hDSWtRM1Z5Y21WdWRFUnBjbHdpSWk0a1EyMWtVMlZ3TGlSU2RXNURiMjF0WVc1a0xpUlNaV1JwY21WamRHOXlPd29KQ1dsbUtDRWtWMmx1VGxRcENna0pld29KQ1Fra1UwbEhleWRCVEZKTkozMGdQU0JjSmtOdmJXMWhibVJVYVcxbGIzVjBPd29KQ1FsaGJHRnliU2drUTI5dGJXRnVaRlJwYldWdmRYUkVkWEpoZEdsdmJpazdDZ2tKZlFvSkNXbG1LQ1JUYUc5M1JIbHVZVzFwWTA5MWRIQjFkQ2tnSXlCemFHOTNJRzkxZEhCMWRDQmhjeUJwZENCcGN5Qm5aVzVsY21GMFpXUUtDUWw3Q2drSkNTUjhQVEU3Q2drSkNTUkRiMjF0WVc1a0lDNDlJQ0lnZkNJN0Nna0pDVzl3Wlc0b1EyOXRiV0Z1WkU5MWRIQjFkQ3dnSkVOdmJXMWhibVFwT3dvSkNRbDNhR2xzWlNnOFEyOXRiV0Z1WkU5MWRIQjFkRDRwQ2drSkNYc0tDUWtKQ1NSZklEMStJSE12S0Z4dWZGeHlYRzRwSkM4dk93b0pDUWtKY0hKcGJuUWdJaVJmWEc0aU93b0pDUWw5Q2drSkNTUjhQVEE3Q2drSmZRb0pDV1ZzYzJVZ0l5QnphRzkzSUc5MWRIQjFkQ0JoWm5SbGNpQmpiMjF0WVc1a0lHTnZiWEJzWlhSbGN3b0pDWHNLQ1FrSmNISnBiblFnWUNSRGIyMXRZVzVrWURzS0NRbDlDZ2tKYVdZb0lTUlhhVzVPVkNrS0NRbDdDZ2tKQ1dGc1lYSnRLREFwT3dvSkNYMEtDUWx3Y21sdWRDQWlQQzk0YlhBK0lqc0tDWDBLQ1NaUWNtbHVkRU52YlcxaGJtUk1hVzVsU1c1d2RYUkdiM0p0T3dvSkpsQnlhVzUwVUdGblpVWnZiM1JsY2pzS2ZRb21VbVZoWkZCaGNuTmxPd29tUjJWMFEyOXZhMmxsY3pzS0pGTmpjbWx3ZEV4dlkyRjBhVzl1SUQwZ0pFVk9WbnNuVTBOU1NWQlVYMDVCVFVVbmZUc0tKRk5sY25abGNrNWhiV1VnUFNBa1JVNVdleWRUUlZKV1JWSmZUa0ZOUlNkOU93b0tKRkoxYmtOdmJXMWhibVFnUFNBa2FXNTdKMk1uZlRzS0pGUnlZVzV6Wm1WeVJtbHNaU0E5SUNScGJuc25aaWQ5T3dva1QzQjBhVzl1Y3lBOUlDUnBibnNuYnlkOU93b2tRV04wYVc5dUlEMGdKR2x1ZXlkaEozMDdDaVJCWTNScGIyNGdQU0FpWTI5dGJXRnVaQ0lnYVdZb0pFRmpkR2x2YmlCbGNTQWlJaWs3Q2lSRGRYSnlaVzUwUkdseUlEMGdKR2x1ZXlka0ozMDdDbU5vYjNBb0pFTjFjbkpsYm5SRWFYSWdQU0JnSkVOdFpGQjNaR0FwSUdsbUtDUkRkWEp5Wlc1MFJHbHlJR1Z4SUNJaUtUc0thV1lvSkVGamRHbHZiaUJsY1NBaVkyOXRiV0Z1WkNJcElDTWdkWE5sY2lCM1lXNTBjeUIwYnlCeWRXNGdZU0JqYjIxdFlXNWtDbnNLQ1NaRmVHVmpkWFJsUTI5dGJXRnVaRHNLZlFvPSc7CgokZmlsZSA9IGZvcGVuKCJpem8uY2luIiAsIncrIik7CiR3cml0ZSA9IGZ3cml0ZSAoJGZpbGUgLGJhc2U2NF9kZWNvZGUoJGNnaXNoZWxsaXpvY2luKSk7CmZjbG9zZSgkZmlsZSk7CiAgICBjaG1vZCgiaXpvLmNpbiIsMDc1NSk7CiRuZXRjYXRzaGVsbCA9ICdJeUV2ZFhOeUwySnBiaTl3WlhKc0RRb2dJQ0FnSUNCMWMyVWdVMjlqYTJWME93MEtJQ0FnSUNBZ2NISnBiblFnSWtSaGRHRWdRMmhoCk1ITWdRMjl1Ym1WamRDQkNZV05ySUVKaFkydGtiMjl5WEc1Y2JpSTdEUW9nSUNBZ0lDQnBaaUFvSVNSQlVrZFdXekJkS1NCN0RRb2cKSUNBZ0lDQWdJSEJ5YVc1MFppQWlWWE5oWjJVNklDUXdJRnRJYjNOMFhTQThVRzl5ZEQ1Y2JpSTdEUW9nSUNBZ0lDQWdJR1Y0YVhRbwpNU2s3RFFvZ0lDQWdJQ0I5RFFvZ0lDQWdJQ0J3Y21sdWRDQWlXeXBkSUVSMWJYQnBibWNnUVhKbmRXMWxiblJ6WEc0aU93MEtJQ0FnCklDQWdKR2h2YzNRZ1BTQWtRVkpIVmxzd1hUc05DaUFnSUNBZ0lDUndiM0owSUQwZ09EQTdEUW9nSUNBZ0lDQnBaaUFvSkVGU1IxWmIKTVYwcElIc05DaUFnSUNBZ0lDQWdKSEJ2Y25RZ1BTQWtRVkpIVmxzeFhUc05DaUFnSUNBZ0lIME5DaUFnSUNBZ0lIQnlhVzUwSUNKYgpLbDBnUTI5dWJtVmpkR2x1Wnk0dUxseHVJanNOQ2lBZ0lDQWdJQ1J3Y205MGJ5QTlJR2RsZEhCeWIzUnZZbmx1WVcxbEtDZDBZM0FuCktTQjhmQ0JrYVdVb0lsVnVhMjV2ZDI0Z1VISnZkRzlqYjJ4Y2JpSXBPdzBLSUNBZ0lDQWdjMjlqYTJWMEtGTkZVbFpGVWl3Z1VFWmYKU1U1RlZDd2dVMDlEUzE5VFZGSkZRVTBzSUNSd2NtOTBieWtnZkh3Z1pHbGxJQ2dpVTI5amEyVjBJRVZ5Y205eVhHNGlLVHNOQ2lBZwpJQ0FnSUcxNUlDUjBZWEpuWlhRZ1BTQnBibVYwWDJGMGIyNG9KR2h2YzNRcE93MEtJQ0FnSUNBZ2FXWWdLQ0ZqYjI1dVpXTjBLRk5GClVsWkZVaXdnY0dGamF5QWlVMjVCTkhnNElpd2dNaXdnSkhCdmNuUXNJQ1IwWVhKblpYUXBLU0I3RFFvZ0lDQWdJQ0FnSUdScFpTZ2kKVlc1aFlteGxJSFJ2SUVOdmJtNWxZM1JjYmlJcE93MEtJQ0FnSUNBZ2ZRMEtJQ0FnSUNBZ2NISnBiblFnSWxzcVhTQlRjR0YzYm1sdQpaeUJUYUdWc2JGeHVJanNOQ2lBZ0lDQWdJR2xtSUNnaFptOXlheWdnS1NrZ2V3MEtJQ0FnSUNBZ0lDQnZjR1Z1S0ZOVVJFbE9MQ0krCkpsTkZVbFpGVWlJcE93MEtJQ0FnSUNBZ0lDQnZjR1Z1S0ZOVVJFOVZWQ3dpUGlaVFJWSldSVklpS1RzTkNpQWdJQ0FnSUNBZ2IzQmwKYmloVFZFUkZVbElzSWo0bVUwVlNWa1ZTSWlrN0RRb2dJQ0FnSUNBZ0lHVjRaV01nZXljdlltbHVMM05vSjMwZ0p5MWlZWE5vSnlBdQpJQ0pjTUNJZ2VDQTBPdzBLSUNBZ0lDQWdJQ0JsZUdsMEtEQXBPdzBLSUNBZ0lDQWdmUTBLSUNBZ0lDQWdjSEpwYm5RZ0lsc3FYU0JFCllYUmhZMmhsWkZ4dVhHNGlPdz09JzsKCiRmaWxlID0gZm9wZW4oImRjLnBsIiAsIncrIik7CiR3cml0ZSA9IGZ3cml0ZSAoJGZpbGUgLGJhc2U2NF9kZWNvZGUoJG5ldGNhdHNoZWxsKSk7CmZjbG9zZSgkZmlsZSk7CiAgICBjaG1vZCgiZGMucGwiLDA3NTUpOwogICBlY2hvICI8aWZyYW1lIHNyYz1jZ2l0ZWxuZXQxL2l6by5jaW4gd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJSBmcmFtZWJvcmRlcj0wPjwvaWZyYW1lPiAKCiAKIDwvZGl2PiI7IAoJCgkKfQoKZWxzZWlmKGlzc2V0KCRfR0VUWydkbyddKSAmJiAoJF9HRVRbJ2RvJ10gPT0gJ2RlbGV0ZW1lJykpIHsKCXVubGluayhfX0ZJTEVfXyk7CgllY2hvICI8c2NyaXB0PndpbmRvdy5sb2NhdGlvbj0nLi8nOzwvc2NyaXB0PiI7Cgl9CgllbHNlaWYoaXNzZXQoJF9HRVRbJ2RvJ10pICYmICgkX0dFVFsnZG8nXSA9PSAnbWlycm9yJykpIHsKICAgIGlmKCRfUE9TVFsnYXJzaXAnXSA9PSAnMScpIHsKICAgICAgICAkZG9tYWluID0gZXhwbG9kZSgiXHJcbiIsICRfUE9TVFsndXJsJ10pOwogICAgICAgICRuaWNrID0gICRfUE9TVFsnbmljayddOwogICAgICAgIGVjaG8gIkRlZmFjZXIgT25ob2xkOiA8YSBocmVmPSdodHRwOi8vd3d3LnpvbmUtaC5vcmcvYXJjaGl2ZS9ub3RpZmllcj0kbmljay9wdWJsaXNoZWQ9MCcgdGFyZ2V0PSdfYmxhbmsnPmh0dHA6Ly93d3cuem9uZS1oLm9yZy9hcmNoaXZlL25vdGlmaWVyPSRuaWNrL3B1Ymxpc2hlZD0wPC9hPjxicj4iOwogICAgICAgIGVjaG8gIkRlZmFjZXIgQXJjaGl2ZTogPGEgaHJlZj0naHR0cDovL3d3dy56b25lLWgub3JnL2FyY2hpdmUvbm90aWZpZXI9JG5pY2snIHRhcmdldD0nX2JsYW5rJz5odHRwOi8vd3d3LnpvbmUtaC5vcmcvYXJjaGl2ZS9ub3RpZmllcj0kbmljazwvYT48YnI+PGJyPiI7CiAgICAgICAgZnVuY3Rpb24gem9uZWgoJHVybCwkbmljaykgewogICAgICAgICAgICAkY2ggPSBjdXJsX2luaXQoImh0dHA6Ly93d3cuem9uZS1oLmNvbS9ub3RpZnkvc2luZ2xlIik7CiAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgICAgICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICJkZWZhY2VyPSRuaWNrJmRvbWFpbjE9JHVybCZoYWNrbW9kZT0xJnJlYXNvbj0xJnN1Ym1pdD1TZW5kIik7CiAgICAgICAgICAgIHJldHVybiBjdXJsX2V4ZWMoJGNoKTsKICAgICAgICAgICAgICAgICAgY3VybF9jbG9zZSgkY2gpOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoKCRkb21haW4gYXMgJHVybCkgewogICAgICAgICAgICAkem9uZWggPSB6b25laCgkdXJsLCRuaWNrKTsKICAgICAgICAgICAgaWYocHJlZ19tYXRjaCgiL2NvbG9yPVwicmVkXCI+T0s8XC9mb250PjxcL2xpPi9pIiwgJHpvbmVoKSkgewogICAgICAgICAgICAgICAgZWNobyAiJHVybCAtPiA8Zm9udCBjb2xvcj1saW1lPk9LPC9mb250Pjxicj4iOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWNobyAiJHVybCAtPiA8Zm9udCBjb2xvcj1yZWQ+RVJST1I8L2ZvbnQ+PGJyPiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IGlmKCRfUE9TVFsnYXJzaXAnXSA9PSAnMicpIHsKCQkkc2l0ZSA9IGV4cGxvZGUoIlxyXG4iLCAkX1BPU1RbJ3NpdGVzJ10pOwokaGVrZWwgPSAkX1BPU1RbJ25pY2snXTsKJHRpbSA9ICRfUE9TVFsndGltJ107CmZvcmVhY2goJHNpdGUgYXMgJHNpdGVzKSB7CiR6aCA9ICRzaXRlczsKJGZvcm1fdXJsID0gImh0dHBzOi8vd3d3LmRlZmFjZXIuaWQvbm90aWZ5IjsKJGRhdGFfdG9fcG9zdCA9IGFycmF5KCk7CiRkYXRhX3RvX3Bvc3RbJ2F0dGFja2VyJ10gPSAiJGhla2VsIjsKJGRhdGFfdG9fcG9zdFsndGVhbSddID0gIiR0aW0iOwokZGF0YV90b19wb3N0Wydwb2MnXSA9ICdTUUwgSW5qZWN0aW9uJzsKJGRhdGFfdG9fcG9zdFsndXJsJ10gPSAiJHpoIjsKJGN1cmwgPSBjdXJsX2luaXQoKTsKY3VybF9zZXRvcHQoJGN1cmwsQ1VSTE9QVF9VUkwsICRmb3JtX3VybCk7CmN1cmxfc2V0b3B0KCRjdXJsLENVUkxPUFRfUE9TVCwgc2l6ZW9mKCRkYXRhX3RvX3Bvc3QpKTsKY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVNFUkFHRU5ULCAiTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1YxOyAuTkVUIENMUiAxLjEuNDMyMjsgLk5FVCBDTFIgMi4wLjUwNzI3KSIpOyAvL21zbmJvdC8xLjAgKCtodHRwOi8vc2VhcmNoLm1zbi5jb20vbXNuYm90Lmh0bSkKY3VybF9zZXRvcHQoJGN1cmwsQ1VSTE9QVF9QT1NURklFTERTLCAkZGF0YV90b19wb3N0KTsKY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwpjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9SRUZFUkVSLCAnaHR0cHM6Ly9kZWZhY2VyLmlkL25vdGlmeS5odG1sJyk7CiRyZXN1bHQgPSBjdXJsX2V4ZWMoJGN1cmwpOwplY2hvICRyZXN1bHQ7CmN1cmxfY2xvc2UoJGN1cmwpOwplY2hvICI8YnI+IjsKfQoKCX0KCWVsc2UgewogICAgICAgIGVjaG8gIgoJCTxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4vLzwhW0NEQVRBWwp3aW5kb3cub25sb2FkPWZ1bmN0aW9uKCl7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcnNpcCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKCXZhciBzdHlsZSA9IHRoaXMudmFsdWUgPT0gMiA/ICdibG9jaycgOiAnbm9uZSc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVmYWNlcmlkJykuc3R5bGUuZGlzcGxheSA9IHN0eWxlOwp9KTsKfS8vXV0+IAoKPC9zY3JpcHQ+PGNlbnRlcj4KCQk8Zm9ybSBtZXRob2Q9J3Bvc3QnPgogICAgICAgIDxzZWxlY3QgY2xhc3M9J3NlbGVjdCcgaWQ9J2Fyc2lwJyBuYW1lPSdhcnNpcCcgc3R5bGU9J3dpZHRoOiA0NTBweDsnIGhlaWdodD0nMTAnPgogICAgICAgIDxvcHRpb24gdmFsdWU9JzEnPlpvbmUtaDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9JzInPkRlZmFjZXIgSUQ8L29wdGlvbj48L3NlbGVjdD48YnI+CgkJPHU+RGVmYWNlcjwvdT46IDxicj4KICAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nbmljaycgc2l6ZT0nNTAnIHZhbHVlPScweDE5OTknPjxicj4KPGRpdiBpZD0nZGVmYWNlcmlkJyBzdHlsZT0nZGlzcGxheTogbm9uZTsnPjxicj4KPHU+VGVhbTwvdT46PGJyPiAKICAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ndGltJyBzaXplPSc1MCcgdmFsdWU9J0luZG9uZXNpYW4gQ29kZSBQYXJ0eSc+PGJyPjxicj4KCQk8L2Rpdj4KICAgICAgICA8dT5Eb21haW5zPC91PjogPGJyPgogICAgICAgIDx0ZXh0YXJlYSBzdHlsZT0nd2lkdGg6IDQ1MHB4OyBoZWlnaHQ6IDE1MHB4OycgbmFtZT0ndXJsJz48L3RleHRhcmVhPjxicj4KICAgICAgICA8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdzdWJtaXQnIHZhbHVlPSdTdWJtaXQnIHN0eWxlPSd3aWR0aDogNDUwcHg7Jz4KICAgICAgICA8L2Zvcm0+IjsKICAgIH0KICAgIGVjaG8gIjwvY2VudGVyPiI7Cn0KCmVsc2VpZihpc3NldCgkX0dFVFsnZG8nXSkgJiYgKCRfR0VUWydkbyddID09ICdoZWsnKSkgewoJJHVybD0iaHR0cDovLyIgLiAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXS4iLzB4Lmh0bSI7CiRoaD0kX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddLiIvMHguaHRtIjsKQGZpbGVfcHV0X2NvbnRlbnRzKCRoaCAsZmlsZV9nZXRfY29udGVudHMoImh0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3L1BEY3V3QnVnIikpOwpmdW5jdGlvbiB6b25laCgkdXJsLCRuaWNrKSB7CiAgICAgICAgICAgICRjaCA9IGN1cmxfaW5pdCgiaHR0cDovL3d3dy56b25lLWguY29tL25vdGlmeS9zaW5nbGUiKTsKICAgICAgICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgICAgICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVEZJRUxEUywgImRlZmFjZXI9JG5pY2smZG9tYWluMT0kdXJsJmhhY2ttb2RlPTEmcmVhc29uPTEmc3VibWl0PVNlbmQiKTsKICAgICAgICAgICAgcmV0dXJuIGN1cmxfZXhlYygkY2gpOwogICAgICAgICAgICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7CiAgICAgICAgfQogICAgICAgICAgICAkem9uZWggPSB6b25laCgkdXJsLCIweDE5OTkiKTsKICAgICAgICAgICAgaWYocHJlZ19tYXRjaCgiL2NvbG9yPVwicmVkXCI+T0s8XC9mb250PjxcL2xpPi9pIiwgJHpvbmVoKSkgewogICAgICAgICAgICAgICAgZWNobyAiJHVybCAtPiA8Zm9udCBjb2xvcj1saW1lPk9LPC9mb250Pjxicj4iOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWNobyAiJHVybCAtPiA8Zm9udCBjb2xvcj1yZWQ+RVJST1I8L2ZvbnQ+PGJyPiI7CiAgICAgICAgICAgIH0KfQplbHNlaWYoaXNzZXQoJF9HRVRbJ2RvJ10pICYmICgkX0dFVFsnZG8nXSA9PSAnY3ByZXMnKSkgewoJZWNobyAiPGZvcm0gbWV0aG9kPSdwb3N0Jz48aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZW1haWwnPiA8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nR2FzJz48L2Zvcm0+IjsKCWlmKCRfUE9TVFsnZW1haWwnXSl7CgkkZmlsZTMgPSAkX1BPU1RbJ2VtYWlsJ107CgkkZnAzID0gZm9wZW4oIi9ob21lLyIuJHVzZXIuIi8uY29udGFjdGVtYWlsIiwidyIpOwoJJGZ3MyA9IGZ3cml0ZSgkZnAzLCRmaWxlMyk7CglAZmNsb3NlKCRmcDMpOwoJJGZwNCA9IGZvcGVuKCIvaG9tZS8iLiR1c2VyLiIvLmNwYW5lbC9jb250YWN0aW5mbyIsInciKTsKCSRmdzQgPSBmd3JpdGUoJGZwNCwkZmlsZTMpOwoJQGZjbG9zZSgkZnA0KTsKCWVjaG8gIiAgIERPTkUiOwoJfQp9CmVsc2VpZihpc3NldCgkX0dFVFsnZG8nXSkgJiYgKCRfR0VUWydkbyddID09ICdjcnAnKSkgewogIGlmKCRfUE9TVFsnZ2FzcyddKSB7CiAgICBlY2hvICI8Y2VudGVyPjxoMT5Db25maWcgUmVzZXQgUGFzc3dvcmQ8L2gxPgogICAgPGZvcm0gbWV0aG9kPSdwb3N0Jz4KICAgIExpbmsgQ29uZmlnOiA8YnI+CiAgICA8dGV4dGFyZWEgbmFtZT0nbGluaycgc3R5bGU9J3dpZHRoOiA0NTBweDsgaGVpZ2h0OjI1MHB4Oyc+IjsKICAgIFVybExvb3AoJF9QT1NUWydsaW5rY29uZiddLCRfUE9TVFsndGlwZSddKTsgCiAgICBlY2hvIjwvdGV4dGFyZWE+PGJyPgogICAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgc3R5bGU9J3dpZHRoOiA0NTBweDsnIG5hbWU9J25nZW50dWNvbmZpZycgdmFsdWU9J0hhamFyISEnPgogICAgPC9mb3JtPjwvY2VudGVyPiI7CiAgfWVsc2UgewogICAgZWNobyAnPGNlbnRlcj4KICAgIDxoMT5Db25maWcgUmVzZXQgUGFzc3dvcmQ8L2gxPgogICAgPGZvcm0gbWV0aG9kPSJwb3N0Ij4KICAgIFNlbGVjdCBUeXBlIDo8YnI+PHNlbGVjdCBjbGFzcz0ic2VsZWN0IiBuYW1lPSJ0aXBlIiAgc3R5bGU9IndpZHRoOiA0NTBweDsiIGhlaWdodD0iMTAiPgogICAgPG9wdGlvbiB2YWx1ZT0iV29yZHByZXNzIj5Xb3JkcHJlc3M8L29wdGlvbj4KICAgIDxvcHRpb24gdmFsdWU9Ikpvb21sYSI+Sm9vbWxhPC9vcHRpb24+CiAgICA8b3B0aW9uIHZhbHVlPSJMb2tvbWVkaWEiPkxva29tZWRpYTwvb3B0aW9uPgogICAgPG9wdGlvbiB2YWx1ZT0iTWFnZW50byI+TWFnZW50bzwvb3B0aW9uPgogICAgPG9wdGlvbiB2YWx1ZT0iT3BlbkNhcnQiPk9wZW5DYXJ0PC9vcHRpb24+CiAgICA8b3B0aW9uIHZhbHVlPSJ0eHQiPkFsbCBDb25maWc8L29wdGlvbj4KICAgIDwvc2VsZWN0Pjxicj4KICAgIExpbmsgQ29uZmlnIDo8YnI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibGlua2NvbmYiIGhlaWdodD0iMTAiIHN0eWxlPSJ3aWR0aDogNDUwcHg7IiBwbGFjZWhvbGRlcj0iaHR0cDovLzB4ZGFyay5jb20vY294X3N5bWNvbmYvIj48YnI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBzdHlsZT0id2lkdGg6IDQ1MHB4OyIgbmFtZT0iZ2FzcyIgdmFsdWU9IkhhamFyISEiPgogICAgPC9mb3JtPjwvY2VudGVyPic7CiAgfQogIGlmKCRfUE9TVFsnbmdlbnR1Y29uZmlnJ10pIHsKICAJZWNobyAiPGNlbnRlcj48dGFibGUgc3R5bGU9J3dpZHRoOjEwMCUnPgogIDx0cj4KICAgIDx0aD5DTVM8L3RoPgogICAgPHRoPlVzZXI8L3RoPiAKICAgIDx0aD5QYXNzd29yZDwvdGg+CiAgICA8dGg+TG9naW48L3RoPgogICAgPHRoPkNvbmZpZzwvdGg+CiAgPC90cj4iOwogICAgJHVzZXIgPSAnMHgxOTk5JzsKICAgICRwYXNzID0gIjB4MTk5OSI7CiAgICAkcGFzc3ggPSBtZDUoJHBhc3MpOwogICAgJGxpbmsgPSBleHBsb2RlKCJcclxuIiwgJF9QT1NUWydsaW5rJ10pOwoKICAgIGZvcmVhY2goJGxpbmsgYXMgJGZpbGVfY29uZikgewogICAgICAkY29uZmlnID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVfY29uZik7CiAgICAgIGlmKHByZWdfbWF0Y2goIi9KQ29uZmlnfGpvb21sYS8iLCRjb25maWcpKSB7CiAgICAgICAgJGRiaG9zdCA9IGFtYmlsa2F0YSgkY29uZmlnLCJob3N0ID0gJyIsIiciKTsKICAgICAgICAkZGJ1c2VyID0gYW1iaWxrYXRhKCRjb25maWcsInVzZXIgPSAnIiwiJyIpOwogICAgICAgICRkYnBhc3MgPSBhbWJpbGthdGEoJGNvbmZpZywicGFzc3dvcmQgPSAnIiwiJyIpOwogICAgICAgICRkYm5hbWUgPSBhbWJpbGthdGEoJGNvbmZpZywiZGIgPSAnIiwiJyIpOwogICAgICAgICRkYnByZWZpeCA9IGFtYmlsa2F0YSgkY29uZmlnLCJkYnByZWZpeCA9ICciLCInIik7CiAgICAgICAgJHByZWZpeCA9ICRkYnByZWZpeC4idXNlcnMiOwogICAgICAgICRjb25uID0gbXlzcWxfY29ubmVjdCgkZGJob3N0LCRkYnVzZXIsJGRicGFzcyk7CiAgICAgICAgJGRiID0gbXlzcWxfc2VsZWN0X2RiKCRkYm5hbWUpOwogICAgICAgICRxID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gJHByZWZpeCBPUkRFUiBCWSBpZCBBU0MiKTsKICAgICAgICAkcmVzdWx0ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEpOwogICAgICAgICRpZCA9ICRyZXN1bHRbJ2lkJ107CiAgICAgICAgJHNpdGUgPSBhbWJpbGthdGEoJGNvbmZpZywic2l0ZW5hbWUgPSAnIiwiJyIpOwogICAgICAgICR1cGRhdGUgPSBteXNxbF9xdWVyeSgiVVBEQVRFICRwcmVmaXggU0VUIHVzZXJuYW1lPSckdXNlcicscGFzc3dvcmQ9JyRwYXNzeCcgV0hFUkUgaWQ9JyRpZCciKTsKICAgICAgICBlY2hvICI8dHI+PHRkPkpvb21sYTwvdGQ+IjsKICAgICAgICAvL2VjaG8gIlsgIi4kZmlsZV9jb25mLiIgXTxicj4iOwogICAgICAgIC8vZWNobyAiQ01TID0+IEpvb21sYTxicj4iOwogICAgICAgIGlmKCRzaXRlID09ICcnKSB7CiAgICAgICAgICAkdXJsX3RhcmdldCA9ICI8Zm9udCBjb2xvcj1yZWQ+RVJST1I8L2ZvbnQ+PGJyPiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICR1cmxfdGFyZ2V0PSRzaXRlOwogICAgICAgIH0KICAgICAgICBpZighJHVwZGF0ZSkgewogICAgICAgIGVjaG8gIjx0ZD48Zm9udCBjb2xvcj1yZWQ+Ii5teXNxbF9lcnJvcigpLiI8L2ZvbnQ+PC90ZD48dGQ+VXBkYXRlIEVycm9yPC90ZD48dGQ+ITwvdGQ+PHRkPiIuJGZpbGVfY29uZi4iPC90ZD4iOwogICAgICAgIH0KICAgICAgICBlbHNlaWYoISRjb25uKXsKICAgICAgICBlY2hvICI8dGQ+PGZvbnQgY29sb3I9cmVkPiIubXlzcWxfZXJyb3IoKS4iPC9mb250PjwvdGQ+PHRkPkNvbm5lY3Rpb24gRXJyb3I8L3RkPjx0ZD4hPC90ZD48dGQ+Ii4kZmlsZV9jb25mLiI8L3RkPiI7CiAgICAgICAgfQogICAgICAgIGVsc2VpZiAoISRkYil7CiAgICAgICAgZWNobyAiPHRkPjxmb250IGNvbG9yPXJlZD4iLm15c3FsX2Vycm9yKCkuIjwvZm9udD48L3RkPjx0ZD5EQiBFcnJvcjwvdGQ+PHRkPiE8L3RkPjx0ZD4iLiRmaWxlX2NvbmYuIjwvdGQ+IjsKICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgZWNobyAiPHRkPjxmb250IGNvbG9yPWxpbWU+JHVzZXI8L2ZvbnQ+PC90ZD4iOwogICAgICAgICAgZWNobyAiPHRkPjxmb250IGNvbG9yPWxpbWU+JHBhc3M8L2ZvbnQ+PC90ZD4iOwogICAgICAgICAgZWNobyAiPHRkPjxhIGhyZWY9XCJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9zb3VyY2U9aHAmcT0nJHVybF90YXJnZXQnXCIgdGFyZ2V0PVwiX0JMQU5LXCI+JHVybF90YXJnZXQ8L2E+PC90ZD4iOwogICAgICAgICAgZWNobyAiPHRkPiIuJGZpbGVfY29uZi4iPC90ZD4iOwogICAgICAgIH0KICAgICAgICBlY2hvICI8L3RyPiI7CiAgICAgICAgbXlzcWxfY2xvc2UoJGNvbm4pOwogICAgICB9IGVsc2VpZihwcmVnX21hdGNoKCIvV29yZFByZXNzLyIsJGNvbmZpZykpIHsKICAgICAgICAkZGJob3N0ID0gYW1iaWxrYXRhKCRjb25maWcsIkRCX0hPU1QnLCAnIiwiJyIpOwogICAgICAgICRkYnVzZXIgPSBhbWJpbGthdGEoJGNvbmZpZywiREJfVVNFUicsICciLCInIik7CiAgICAgICAgJGRicGFzcyA9IGFtYmlsa2F0YSgkY29uZmlnLCJEQl9QQVNTV09SRCcsICciLCInIik7CiAgICAgICAgJGRibmFtZSA9IGFtYmlsa2F0YSgkY29uZmlnLCJEQl9OQU1FJywgJyIsIiciKTsKICAgICAgICAkZGJwcmVmaXggPSBhbWJpbGthdGEoJGNvbmZpZywidGFibGVfcHJlZml4ICA9ICciLCInIik7CiAgICAgICAgJHByZWZpeCA9ICRkYnByZWZpeC4idXNlcnMiOwogICAgICAgICRvcHRpb24gPSAkZGJwcmVmaXguIm9wdGlvbnMiOwogICAgICAgICRjb25uID0gbXlzcWxfY29ubmVjdCgkZGJob3N0LCRkYnVzZXIsJGRicGFzcyk7CiAgICAgICAgJGRiID0gbXlzcWxfc2VsZWN0X2RiKCRkYm5hbWUpOwogICAgICAgICRxID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gJHByZWZpeCBPUkRFUiBCWSBpZCBBU0MiKTsKICAgICAgICAkcmVzdWx0ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEpOwogICAgICAgICRpZCA9ICRyZXN1bHRbSURdOwogICAgICAgICRxMiA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRvcHRpb24gT1JERVIgQlkgb3B0aW9uX2lkIEFTQyIpOwogICAgICAgICRyZXN1bHQyID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEyKTsKICAgICAgICAkdGFyZ2V0ID0gJHJlc3VsdDJbb3B0aW9uX3ZhbHVlXTsKICAgICAgICBpZigkdGFyZ2V0ID09ICcnKSB7CiAgICAgICAgICAkdXJsX3RhcmdldCA9ICI8Zm9udCBjb2xvcj1yZWQ+RE9NQUlOIEVSUk9SPC9mb250PiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICR1cmxfdGFyZ2V0ID0gIjxhIGhyZWY9JyR0YXJnZXQvd3AtbG9naW4ucGhwJyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldC93cC1sb2dpbi5waHA8L3U+PC9hPiI7CiAgICAgICAgfQogICAgICAgICR1cGRhdGUgPSBteXNxbF9xdWVyeSgiVVBEQVRFICRwcmVmaXggU0VUIHVzZXJfbG9naW49JyR1c2VyJyx1c2VyX3Bhc3M9JyRwYXNzeCcgV0hFUkUgaWQ9JyRpZCciKTsKICAgICAgICBlY2hvICI8dHI+PHRkPldvcmRwcmVzczwvdGQ+IjsKICAgICAgICAvL2VjaG8gIlsgIi4kZmlsZV9jb25mLiIgXTxicj4iOwogICAgICAgIC8vZWNobyAkdXJsX3RhcmdldDsKICAgICAgICBpZighJHVwZGF0ZSBPUiAhJGNvbm4gT1IgISRkYikgewogICAgICAgICAgZWNobyAiPHRkPjxmb250IGNvbG9yPXJlZD4iLm15c3FsX2Vycm9yKCkuIjwvZm9udD48L3RkPjx0ZD4hPC90ZD48dGQ+ITwvdGQ+PHRkPiIuJGZpbGVfY29uZi4iPC90ZD4iOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBlY2hvICI8dGQ+PGZvbnQgY29sb3I9bGltZT4kdXNlcjwvZm9udD48L3RkPiI7CiAgICAgICAgICBlY2hvICI8dGQ+PGZvbnQgY29sb3I9bGltZT4kcGFzczwvZm9udD48L3RkPiI7CiAgICAgICAgICBlY2hvICI8dGQ+JHVybF90YXJnZXQ8L3RkPiI7CiAgICAgICAgICBlY2hvICI8dGQ+Ii4kZmlsZV9jb25mLiI8L3RkPiI7CiAgICAgICAgfQogICAgICAgIGVjaG8gIjwvdHI+IjsKICAgICAgICBteXNxbF9jbG9zZSgkY29ubik7CiAgICAgIH0gZWxzZWlmKHByZWdfbWF0Y2goIi9NYWdlbnRvfE1hZ2VfQ29yZS8iLCRjb25maWcpKSB7CiAgICAgICAgJGRiaG9zdCA9IGFtYmlsa2F0YSgkY29uZmlnLCI8aG9zdD48IVtDREFUQVsiLCJdXT48L2hvc3Q+Iik7CiAgICAgICAgJGRidXNlciA9IGFtYmlsa2F0YSgkY29uZmlnLCI8dXNlcm5hbWU+PCFbQ0RBVEFbIiwiXV0+PC91c2VybmFtZT4iKTsKICAgICAgICAkZGJwYXNzID0gYW1iaWxrYXRhKCRjb25maWcsIjxwYXNzd29yZD48IVtDREFUQVsiLCJdXT48L3Bhc3N3b3JkPiIpOwogICAgICAgICRkYm5hbWUgPSBhbWJpbGthdGEoJGNvbmZpZywiPGRibmFtZT48IVtDREFUQVsiLCJdXT48L2RibmFtZT4iKTsKICAgICAgICAkZGJwcmVmaXggPSBhbWJpbGthdGEoJGNvbmZpZywiPHRhYmxlX3ByZWZpeD48IVtDREFUQVsiLCJdXT48L3RhYmxlX3ByZWZpeD4iKTsKICAgICAgICAkcHJlZml4ID0gJGRicHJlZml4LiJhZG1pbl91c2VyIjsKICAgICAgICAkb3B0aW9uID0gJGRicHJlZml4LiJjb3JlX2NvbmZpZ19kYXRhIjsKICAgICAgICAkY29ubiA9IG15c3FsX2Nvbm5lY3QoJGRiaG9zdCwkZGJ1c2VyLCRkYnBhc3MpOwogICAgICAgICRkYiA9IG15c3FsX3NlbGVjdF9kYigkZGJuYW1lKTsKICAgICAgICAkcSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRwcmVmaXggT1JERVIgQlkgdXNlcl9pZCBBU0MiKTsKICAgICAgICAkcmVzdWx0ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEpOwogICAgICAgICRpZCA9ICRyZXN1bHRbdXNlcl9pZF07CiAgICAgICAgJHEyID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gJG9wdGlvbiBXSEVSRSBwYXRoPSd3ZWIvc2VjdXJlL2Jhc2VfdXJsJyIpOwogICAgICAgICRyZXN1bHQyID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEyKTsKICAgICAgICAkdGFyZ2V0ID0gJHJlc3VsdDJbdmFsdWVdOwogICAgICAgIGlmKCR0YXJnZXQgPT0gJycpIHsKICAgICAgICAgICR1cmxfdGFyZ2V0ID0gIkxvZ2luID0+IDxmb250IGNvbG9yPXJlZD5lcnJvciwgZ2FiaXNhIGFtYmlsIG5hbWEgZG9tYWluIG55YWE8L2ZvbnQ+PGJyPiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICR1cmxfdGFyZ2V0ID0gIkxvZ2luID0+IDxhIGhyZWY9JyR0YXJnZXQvYWRtaW4vJyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldC9hZG1pbi88L3U+PC9hPjxicj4iOwogICAgICAgIH0KICAgICAgICAkdXBkYXRlID0gbXlzcWxfcXVlcnkoIlVQREFURSAkcHJlZml4IFNFVCB1c2VybmFtZT0nJHVzZXInLHBhc3N3b3JkPSckcGFzc3gnIFdIRVJFIHVzZXJfaWQ9JyRpZCciKTsKICAgICAgICBlY2hvICJbICIuJGZpbGVfY29uZi4iIF08YnI+IjsKICAgICAgICBlY2hvICJDTVMgPT4gTWFnZW50bzxicj4iOwogICAgICAgIGVjaG8gJHVybF90YXJnZXQ7CiAgICAgICAgaWYoISR1cGRhdGUgT1IgISRjb25uIE9SICEkZGIpIHsKICAgICAgICAgIGVjaG8gIlstXSA8Zm9udCBjb2xvcj1yZWQ+Ii5teXNxbF9lcnJvcigpLiI8L2ZvbnQ+PGJyPjxicj4iOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBlY2hvICJbK10gdXNlcm5hbWU6IDxmb250IGNvbG9yPWxpbWU+JHVzZXI8L2ZvbnQ+PGJyPiI7CiAgICAgICAgICBlY2hvICJbK10gcGFzc3dvcmQ6IDxmb250IGNvbG9yPWxpbWU+JHBhc3M8L2ZvbnQ+PGJyPjxicj4iOwogICAgICAgIH0KICAgICAgICBteXNxbF9jbG9zZSgkY29ubik7CiAgICAgIH0gZWxzZWlmKHByZWdfbWF0Y2goIi9IVFRQX1NFUlZFUnxIVFRQX0NBVEFMT0d8RElSX0NPTkZJR3xESVJfU1lTVEVNLyIsJGNvbmZpZykpIHsKICAgICAgICAkZGJob3N0ID0gYW1iaWxrYXRhKCRjb25maWcsIidEQl9IT1NUTkFNRScsICciLCInIik7CiAgICAgICAgJGRidXNlciA9IGFtYmlsa2F0YSgkY29uZmlnLCInREJfVVNFUk5BTUUnLCAnIiwiJyIpOwogICAgICAgICRkYnBhc3MgPSBhbWJpbGthdGEoJGNvbmZpZywiJ0RCX1BBU1NXT1JEJywgJyIsIiciKTsKICAgICAgICAkZGJuYW1lID0gYW1iaWxrYXRhKCRjb25maWcsIidEQl9EQVRBQkFTRScsICciLCInIik7CiAgICAgICAgJGRicHJlZml4ID0gYW1iaWxrYXRhKCRjb25maWcsIidEQl9QUkVGSVgnLCAnIiwiJyIpOwogICAgICAgICRwcmVmaXggPSAkZGJwcmVmaXguInVzZXIiOwogICAgICAgICRjb25uID0gbXlzcWxfY29ubmVjdCgkZGJob3N0LCRkYnVzZXIsJGRicGFzcyk7CiAgICAgICAgJGRiID0gbXlzcWxfc2VsZWN0X2RiKCRkYm5hbWUpOwogICAgICAgICRxID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gJHByZWZpeCBPUkRFUiBCWSB1c2VyX2lkIEFTQyIpOwogICAgICAgICRyZXN1bHQgPSBteXNxbF9mZXRjaF9hcnJheSgkcSk7CiAgICAgICAgJGlkID0gJHJlc3VsdFt1c2VyX2lkXTsKICAgICAgICAkdGFyZ2V0ID0gYW1iaWxrYXRhKCRjb25maWcsIkhUVFBfU0VSVkVSJywgJyIsIiciKTsKICAgICAgICBpZigkdGFyZ2V0ID09ICcnKSB7CiAgICAgICAgICAkdXJsX3RhcmdldCA9ICJMb2dpbiA9PiA8Zm9udCBjb2xvcj1yZWQ+ZXJyb3IsIGdhYmlzYSBhbWJpbCBuYW1hIGRvbWFpbiBueWFhPC9mb250Pjxicj4iOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAkdXJsX3RhcmdldCA9ICJMb2dpbiA9PiA8YSBocmVmPSckdGFyZ2V0JyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldDwvdT48L2E+PGJyPiI7CiAgICAgICAgfQogICAgICAgICR1cGRhdGUgPSBteXNxbF9xdWVyeSgiVVBEQVRFICRwcmVmaXggU0VUIHVzZXJuYW1lPSckdXNlcicscGFzc3dvcmQ9JyRwYXNzeCcgV0hFUkUgdXNlcl9pZD0nJGlkJyIpOwogICAgICAgIGVjaG8gIlsgIi4kZmlsZV9jb25mLiIgXTxicj4iOwogICAgICAgIGVjaG8gIkNNUyA9PiBPcGVuQ2FydDxicj4iOwogICAgICAgIGVjaG8gJHVybF90YXJnZXQ7CiAgICAgICAgaWYoISR1cGRhdGUgT1IgISRjb25uIE9SICEkZGIpIHsKICAgICAgICAgIGVjaG8gIlstXSA8Zm9udCBjb2xvcj1yZWQ+Ii5teXNxbF9lcnJvcigpLiI8L2ZvbnQ+PGJyPjxicj4iOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBlY2hvICJbK10gdXNlcm5hbWU6IDxmb250IGNvbG9yPWxpbWU+JHVzZXI8L2ZvbnQ+PGJyPiI7CiAgICAgICAgICBlY2hvICJbK10gcGFzc3dvcmQ6IDxmb250IGNvbG9yPWxpbWU+JHBhc3M8L2ZvbnQ+PGJyPjxicj4iOwogICAgICAgIH0KICAgICAgICBteXNxbF9jbG9zZSgkY29ubik7CiAgICAgIH0gZWxzZWlmKHByZWdfbWF0Y2goIi9wYW5nZ2lsIGZ1bmdzaSB2YWxpZGFzaSB4c3MgZGFuIGluamVjdGlvbi8iLCRjb25maWcpKSB7CiAgICAgICAgJGRiaG9zdCA9IGFtYmlsa2F0YSgkY29uZmlnLCdzZXJ2ZXIgPSAiJywnIicpOwogICAgICAgICRkYnVzZXIgPSBhbWJpbGthdGEoJGNvbmZpZywndXNlcm5hbWUgPSAiJywnIicpOwogICAgICAgICRkYnBhc3MgPSBhbWJpbGthdGEoJGNvbmZpZywncGFzc3dvcmQgPSAiJywnIicpOwogICAgICAgICRkYm5hbWUgPSBhbWJpbGthdGEoJGNvbmZpZywnZGF0YWJhc2UgPSAiJywnIicpOwogICAgICAgICRwcmVmaXggPSAidXNlcnMiOwogICAgICAgICRvcHRpb24gPSAiaWRlbnRpdGFzIjsKICAgICAgICAkY29ubiA9IG15c3FsX2Nvbm5lY3QoJGRiaG9zdCwkZGJ1c2VyLCRkYnBhc3MpOwogICAgICAgICRkYiA9IG15c3FsX3NlbGVjdF9kYigkZGJuYW1lKTsKICAgICAgICAkcSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRvcHRpb24gT1JERVIgQlkgaWRfaWRlbnRpdGFzIEFTQyIpOwogICAgICAgICRyZXN1bHQgPSBteXNxbF9mZXRjaF9hcnJheSgkcSk7CiAgICAgICAgJHRhcmdldCA9ICRyZXN1bHRbYWxhbWF0X3dlYnNpdGVdOwogICAgICAgIGlmKCR0YXJnZXQgPT0gJycpIHsKICAgICAgICAgICR0YXJnZXQyID0gJHJlc3VsdFt1cmxdOwogICAgICAgICAgJHVybF90YXJnZXQgPSAiTG9naW4gPT4gPGZvbnQgY29sb3I9cmVkPmVycm9yLCBnYWJpc2EgYW1iaWwgbmFtYSBkb21haW4gbnlhYTwvZm9udD48YnI+IjsKICAgICAgICAgIGlmKCR0YXJnZXQyID09ICcnKSB7CiAgICAgICAgICAgICR1cmxfdGFyZ2V0MiA9ICJMb2dpbiA9PiA8Zm9udCBjb2xvcj1yZWQ+ZXJyb3IsIGdhYmlzYSBhbWJpbCBuYW1hIGRvbWFpbiBueWFhPC9mb250Pjxicj4iOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGNla19sb2dpbjMgPSBmaWxlX2dldF9jb250ZW50cygiJHRhcmdldDIvYWRtaW53ZWIvIik7CiAgICAgICAgICAgICRjZWtfbG9naW40ID0gZmlsZV9nZXRfY29udGVudHMoIiR0YXJnZXQyL2xva29tZWRpYS9hZG1pbndlYi8iKTsKICAgICAgICAgICAgaWYocHJlZ19tYXRjaCgiL0NNUyBMb2tvbWVkaWF8QWRtaW5pc3RyYXRvci8iLCAkY2VrX2xvZ2luMykpIHsKICAgICAgICAgICAgICAkdXJsX3RhcmdldDIgPSAiTG9naW4gPT4gPGEgaHJlZj0nJHRhcmdldDIvYWRtaW53ZWInIHRhcmdldD0nX2JsYW5rJz48dT4kdGFyZ2V0Mi9hZG1pbndlYjwvdT48L2E+PGJyPiI7CiAgICAgICAgICAgIH0gZWxzZWlmKHByZWdfbWF0Y2goIi9DTVMgTG9rb21lZGlhfExva29tZWRpYS8iLCAkY2VrX2xvZ2luNCkpIHsKICAgICAgICAgICAgICAkdXJsX3RhcmdldDIgPSAiTG9naW4gPT4gPGEgaHJlZj0nJHRhcmdldDIvbG9rb21lZGlhL2FkbWlud2ViJyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldDIvbG9rb21lZGlhL2FkbWlud2ViPC91PjwvYT48YnI+IjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAkdXJsX3RhcmdldDIgPSAiTG9naW4gPT4gPGEgaHJlZj0nJHRhcmdldDInIHRhcmdldD0nX2JsYW5rJz48dT4kdGFyZ2V0MjwvdT48L2E+IFsgPGZvbnQgY29sb3I9cmVkPmdhdGF1IGFkbWluIGxvZ2luIG55YSBkaW1hbmEgOnA8L2ZvbnQ+IF08YnI+IjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAkY2VrX2xvZ2luID0gZmlsZV9nZXRfY29udGVudHMoIiR0YXJnZXQvYWRtaW53ZWIvIik7CiAgICAgICAgICAkY2VrX2xvZ2luMiA9IGZpbGVfZ2V0X2NvbnRlbnRzKCIkdGFyZ2V0L2xva29tZWRpYS9hZG1pbndlYi8iKTsKICAgICAgICAgIGlmKHByZWdfbWF0Y2goIi9DTVMgTG9rb21lZGlhfEFkbWluaXN0cmF0b3IvIiwgJGNla19sb2dpbikpIHsKICAgICAgICAgICAgJHVybF90YXJnZXQgPSAiTG9naW4gPT4gPGEgaHJlZj0nJHRhcmdldC9hZG1pbndlYicgdGFyZ2V0PSdfYmxhbmsnPjx1PiR0YXJnZXQvYWRtaW53ZWI8L3U+PC9hPjxicj4iOwogICAgICAgICAgfSBlbHNlaWYocHJlZ19tYXRjaCgiL0NNUyBMb2tvbWVkaWF8TG9rb21lZGlhLyIsICRjZWtfbG9naW4yKSkgewogICAgICAgICAgICAkdXJsX3RhcmdldCA9ICJMb2dpbiA9PiA8YSBocmVmPSckdGFyZ2V0L2xva29tZWRpYS9hZG1pbndlYicgdGFyZ2V0PSdfYmxhbmsnPjx1PiR0YXJnZXQvbG9rb21lZGlhL2FkbWlud2ViPC91PjwvYT48YnI+IjsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR1cmxfdGFyZ2V0ID0gIkxvZ2luID0+IDxhIGhyZWY9JyR0YXJnZXQnIHRhcmdldD0nX2JsYW5rJz48dT4kdGFyZ2V0PC91PjwvYT4gWyA8Zm9udCBjb2xvcj1yZWQ+Z2F0YXUgYWRtaW4gbG9naW4gbnlhIGRpbWFuYSA6cDwvZm9udD4gXTxicj4iOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdXBkYXRlID0gbXlzcWxfcXVlcnkoIlVQREFURSAkcHJlZml4IFNFVCB1c2VybmFtZT0nJHVzZXInLHBhc3N3b3JkPSckcGFzc3gnIFdIRVJFIGxldmVsPSdhZG1pbiciKTsKICAgICAgICBlY2hvICJbICIuJGZpbGVfY29uZi4iIF08YnI+IjsKICAgICAgICBlY2hvICJDTVMgPT4gTG9rb21lZGlhPGJyPiI7CiAgICAgICAgaWYocHJlZ19tYXRjaCgnL2Vycm9yLCBnYWJpc2EgYW1iaWwgbmFtYSBkb21haW4gbnlhLycsICR1cmxfdGFyZ2V0KSkgewogICAgICAgICAgZWNobyAkdXJsX3RhcmdldDI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGVjaG8gJHVybF90YXJnZXQ7CiAgICAgICAgfQogICAgICAgIGlmKCEkdXBkYXRlIE9SICEkY29ubiBPUiAhJGRiKSB7CiAgICAgICAgICBlY2hvICJbLV0gPGZvbnQgY29sb3I9cmVkPiIubXlzcWxfZXJyb3IoKS4iPC9mb250Pjxicj48YnI+IjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZWNobyAiWytdIHVzZXJuYW1lOiA8Zm9udCBjb2xvcj1saW1lPiR1c2VyPC9mb250Pjxicj4iOwogICAgICAgICAgZWNobyAiWytdIHBhc3N3b3JkOiA8Zm9udCBjb2xvcj1saW1lPiRwYXNzPC9mb250Pjxicj48YnI+IjsKICAgICAgICB9CiAgICAgICAgbXlzcWxfY2xvc2UoJGNvbm4pOwogICAgICB9CiAgICB9CiAgfSAgICAgCn0KZWxzZWlmKGlzc2V0KCRfR0VUWydkbyddKSAmJiAoJF9HRVRbJ2RvJ10gPT0gJ2dyYWJwYXNzJykpIHsKaWYoJF9QT1NUWydnYXNzJ10pIHsKICAgIGVjaG8gIjxjZW50ZXI+PGgxPkNvbmZpZyBQYXNzd29yZCBHcmFiYmVyPC9oMT4KICAgICAgICA8Zm9ybSBtZXRob2Q9J3Bvc3QnPgogICAgICAgIExpbmsgQ29uZmlnOiA8YnI+CiAgICAgICAgPHRleHRhcmVhIG5hbWU9J2xpbmsnIHN0eWxlPSd3aWR0aDogNDUwcHg7IGhlaWdodDoyNTBweDsnPiI7CiAgICBVcmxMb29wKCRfUE9TVFsnbGlua2NvbmYnXSwndHh0Jyk7ICAgCiAgICBlY2hvIjwvdGV4dGFyZWE+PGJyPgogICAgICAgIDxpbnB1dCB0eXBlPSdzdWJtaXQnIHN0eWxlPSd3aWR0aDogNDUwcHg7JyBuYW1lPSdncmFicGFzcycgdmFsdWU9J0hhamFyISEnPgogICAgICAgIDwvZm9ybT48L2NlbnRlcj4iOwp9ICAgZWxzZSB7CiAgICAgICAgZWNobyAiPGNlbnRlcj48aDE+Sm9vbWxhIEF1dG8gQ2hhbmdlIFVzZXIgMjwvaDE+CiAgICAgICAgPGZvcm0gbWV0aG9kPSdwb3N0Jz4KICAgICAgICBMaW5rIENvbmZpZzogPGJyPgogICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdsaW5rY29uZicgaGVpZ2h0PScxMCcgc2l6ZT0nNTAnIHBsYWNlaG9sZGVyPSdodHRwOi8vbGluay5jb20vMHhzeW0vJz48YnI+CiAgICAgICAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgc3R5bGU9J3dpZHRoOiA0NTBweDsnIG5hbWU9J2dhc3MnIHZhbHVlPSdIYWphciEhJz4KICAgICAgICA8L2Zvcm0+PC9jZW50ZXI+IjsKICAgIH0KaWYoJF9QT1NUWydncmFicGFzcyddKSB7CiAgICAKCiAgICAgICAgJGxpbmsgPSBleHBsb2RlKCJcclxuIiwgJF9QT1NUWydsaW5rJ10pOwogICAgICAgIGVjaG8gJzx0ZXh0YXJlYT4nOwogICAgICAgIGZvcmVhY2goJGxpbmsgYXMgJGRpcl9jb25maWcpIHsKICAgICAgICAJJGFtYmlscGFzcz1hbWJpbF9wYXNzd29yZCgkZGlyX2NvbmZpZyk7CiAgICAgICAgCSRoaD1AZmlsZV9nZXRfY29udGVudHMoInBhc3N3b3JkLnR4dCIpOwogICAgICAgIAlAZmlsZV9wdXRfY29udGVudHMoInBhc3N3b3JkLnR4dCIsICRoaC4kYW1iaWxwYXNzKTsKICAgICAgICAgICAKZWNobyAkYW1iaWxwYXNzOwoKCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgIGVjaG8gJzwvdGV4dGFyZWE+JzsKICAgIH0gICAKfQplbHNlaWYoaXNzZXQoJF9HRVRbJ2RvJ10pICYmICgkX0dFVFsnZG8nXSA9PSAnc3ltbGluaycpKSB7CgkKJGZ1bGwgPSBzdHJfcmVwbGFjZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddLCAiIiwgJGRpcik7CiRkMG1haW5zID0gQGZpbGUoIi9ldGMvbmFtZWQuY29uZiIpOwojI2h0dGFjZXMKaWYoJGQwbWFpbnMpewpAbWtkaXIoIjB4c3ltbGluayIsMDc3Nyk7CkBjaGRpcigiMHhzeW1saW5rIik7CkBleGUoImxuIC1zIC8gcm9vdCIpOwokZmlsZTMgPSAnT3B0aW9ucyBJbmRleGVzIEZvbGxvd1N5bUxpbmtzCkRpcmVjdG9yeUluZGV4IGphbmNveC5odG0KQWRkVHlwZSB0ZXh0L3BsYWluIC5waHAgCkFkZEhhbmRsZXIgdGV4dC9wbGFpbiAucGhwClNhdGlzZnkgQW55JzsKJGZwMyA9IGZvcGVuKCcuaHRhY2Nlc3MnLCd3Jyk7CiRmdzMgPSBmd3JpdGUoJGZwMywkZmlsZTMpOwpAZmNsb3NlKCRmcDMpOwplY2hvICIKPHRhYmxlIGFsaWduPWNlbnRlciBib3JkZXI9MSBzdHlsZT0nd2lkdGg6NjAlO2JvcmRlci1jb2xvcjojMzMzMzMzOyc+Cjx0cj4KPHRkIGFsaWduPWNlbnRlcj48Zm9udCBzaXplPTI+Uy4gTm8uPC9mb250PjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgc2l6ZT0yPkRvbWFpbnM8L2ZvbnQ+PC90ZD4KPHRkIGFsaWduPWNlbnRlcj48Zm9udCBzaXplPTI+VXNlcnM8L2ZvbnQ+PC90ZD4KPHRkIGFsaWduPWNlbnRlcj48Zm9udCBzaXplPTI+U3ltbGluazwvZm9udD48L3RkPgo8L3RyPiI7CiRkY291bnQgPSAxOwpmb3JlYWNoKCRkMG1haW5zIGFzICRkMG1haW4pewppZihlcmVnaSgiem9uZSIsJGQwbWFpbikpe3ByZWdfbWF0Y2hfYWxsKCcjem9uZSAiKC4qKSIjJywgJGQwbWFpbiwgJGRvbWFpbnMpOwpmbHVzaCgpOwppZihzdHJsZW4odHJpbSgkZG9tYWluc1sxXVswXSkpID4gMil7CiR1c2VyID0gcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8iLiRkb21haW5zWzFdWzBdKSk7CmVjaG8gIjx0ciBhbGlnbj1jZW50ZXI+PHRkPjxmb250IHNpemU9Mj4iIC4gJGRjb3VudCAuICI8L2ZvbnQ+PC90ZD4KPHRkIGFsaWduPWxlZnQ+PGEgaHJlZj1odHRwOi8vd3d3LiIuJGRvbWFpbnNbMV1bMF0uIi8+PGZvbnQgY2xhc3M9dHh0PiIuJGRvbWFpbnNbMV1bMF0uIjwvZm9udD48L2E+PC90ZD4KPHRkPiIuJHVzZXJbJ25hbWUnXS4iPC90ZD4KPHRkPjxhIGhyZWY9JyRmdWxsLzB4c3ltbGluay9yb290L2hvbWUvIi4kdXNlclsnbmFtZSddLiIvcHVibGljX2h0bWwnIHRhcmdldD0nX2JsYW5rJz48Zm9udCBjbGFzcz10eHQ+U3ltbGluazwvZm9udD48L2E+PC90ZD48L3RyPiI7IApmbHVzaCgpOwokZGNvdW50Kys7fX19CmVjaG8gIjwvdGFibGU+IjsKfWVsc2V7CiRURVNUPSRldGNwYXNzd2Q7CmlmICgkVEVTVCl7CkBta2RpcigiMHhzeW1saW5rIiwwNzc3KTsKQGNoZGlyKCIweHN5bWxpbmsiKTsKZXhlKCJsbiAtcyAvIHJvb3QiKTsKJGZpbGUzID0gJ09wdGlvbnMgSW5kZXhlcyBGb2xsb3dTeW1MaW5rcwpEaXJlY3RvcnlJbmRleCBqYW5jb3guaHRtCkFkZFR5cGUgdGV4dC9wbGFpbiAucGhwIApBZGRIYW5kbGVyIHRleHQvcGxhaW4gLnBocApTYXRpc2Z5IEFueSc7CiAkZnAzID0gZm9wZW4oJy5odGFjY2VzcycsJ3cnKTsKICRmdzMgPSBmd3JpdGUoJGZwMywkZmlsZTMpOwogQGZjbG9zZSgkZnAzKTsKIGVjaG8gIgogPHRhYmxlIGFsaWduPWNlbnRlciBib3JkZXI9MT48dHI+CiA8dGQgYWxpZ249Y2VudGVyPjxmb250IHNpemU9Mz5TLiBOby48L2ZvbnQ+PC90ZD4KIDx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgc2l6ZT0zPlVzZXJzPC9mb250PjwvdGQ+CiA8dGQgYWxpZ249Y2VudGVyPjxmb250IHNpemU9Mz5TeW1saW5rPC9mb250PjwvdGQ+PC90cj4iOwogJGRjb3VudCA9IDE7CiAkZmlsZSA9IGZvcGVuKCIvZXRjL3Bhc3N3ZCIsICJyIikgb3IgZXhpdCgiVW5hYmxlIHRvIG9wZW4gZmlsZSEiKTsKIC8vICRmaWxlPSRldGNwYXNzd2Q7CiB3aGlsZSghZmVvZigkZmlsZSkpewogJHMgPSBmZ2V0cygkZmlsZSk7CiAkbWF0Y2hlcyA9IGFycmF5KCk7CiAkdCA9IHByZWdfbWF0Y2goJy9cLyguKj8pXDpcLy9zJywgJHMsICRtYXRjaGVzKTsKICRtYXRjaGVzID0gc3RyX3JlcGxhY2UoImhvbWUvIiwiIiwkbWF0Y2hlc1sxXSk7CiBpZihzdHJsZW4oJG1hdGNoZXMpID4gMTIgfHwgc3RybGVuKCRtYXRjaGVzKSA9PSAwIHx8ICRtYXRjaGVzID09ICJiaW4iIHx8ICRtYXRjaGVzID09ICJldGMvWDExL2ZzIiB8fCAkbWF0Y2hlcyA9PSAidmFyL2xpYi9uZnMiIHx8ICRtYXRjaGVzID09ICJ2YXIvYXJwd2F0Y2giIHx8ICRtYXRjaGVzID09ICJ2YXIvZ29waGVyIiB8fCAkbWF0Y2hlcyA9PSAic2JpbiIgfHwgJG1hdGNoZXMgPT0gInZhci9hZG0iIHx8ICRtYXRjaGVzID09ICJ1c3IvZ2FtZXMiIHx8ICRtYXRjaGVzID09ICJ2YXIvZnRwIiB8fCAkbWF0Y2hlcyA9PSAiZXRjL250cCIgfHwgJG1hdGNoZXMgPT0gInZhci93d3ciIHx8ICRtYXRjaGVzID09ICJ2YXIvbmFtZWQiKQogY29udGludWU7CiBlY2hvICI8dHI+PHRkIGFsaWduPWNlbnRlcj48Zm9udCBzaXplPTI+IiAuICRkY291bnQgLiAiPC90ZD4KIDx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgY2xhc3M9dHh0PiIgLiAkbWF0Y2hlcyAuICI8L3RkPiI7CiBlY2hvICI8dGQgYWxpZ249Y2VudGVyPjxmb250IGNsYXNzPXR4dD48YSBocmVmPSRmdWxsLzB4c3ltbGluay9yb290L2hvbWUvIiAuICRtYXRjaGVzIC4gIi9wdWJsaWNfaHRtbCB0YXJnZXQ9J19ibGFuayc+U3ltbGluazwvYT48L3RkPjwvdHI+IjsKICRkY291bnQrKzt9ZmNsb3NlKCRmaWxlKTsKIGVjaG8gIjwvdGFibGU+IjsKfWVsc2V7CgogCWlmKCRvcyAhPSAiV2luZG93cyIpewogCQlAbWtkaXIoIjB4c3ltbGluayIsMDc3Nyk7CiAJCUBjaGRpcigiMHhzeW1saW5rIik7CiAJCUBleGUoImxuIC1zIC8gcm9vdCIpOwogCQkkZmlsZTMgPSAnCk9wdGlvbnMgSW5kZXhlcyBGb2xsb3dTeW1MaW5rcwpEaXJlY3RvcnlJbmRleCBqYW5jb3guaHRtCkFkZFR5cGUgdGV4dC9wbGFpbiAucGhwIApBZGRIYW5kbGVyIHRleHQvcGxhaW4gLnBocApTYXRpc2Z5IEFueQonOwogJGZwMyA9IGZvcGVuKCcuaHRhY2Nlc3MnLCd3Jyk7CiAkZnczID0gZndyaXRlKCRmcDMsJGZpbGUzKTtAZmNsb3NlKCRmcDMpOwogZWNobyAiCiA8ZGl2IGNsYXNzPSdteWJveCc+PGgyIGNsYXNzPSdrMmxsMzNkMic+c2VydmVyIHN5bWxpbmtlcjwvaDI+CiA8dGFibGUgYWxpZ249Y2VudGVyIGJvcmRlcj0xPjx0cj4KIDx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgc2l6ZT0zPklEPC9mb250PjwvdGQ+CiA8dGQgYWxpZ249Y2VudGVyPjxmb250IHNpemU9Mz5Vc2VyczwvZm9udD48L3RkPgogPHRkIGFsaWduPWNlbnRlcj48Zm9udCBzaXplPTM+U3ltbGluazwvZm9udD48L3RkPjwvdHI+IjsKICR0ZW1wID0gIiI7JHZhbDEgPSAwOyR2YWwyID0gMTAwMDsKIGZvcig7JHZhbDEgPD0gJHZhbDI7JHZhbDErKykgeyR1aWQgPSBAcG9zaXhfZ2V0cHd1aWQoJHZhbDEpOwogaWYgKCR1aWQpJHRlbXAgLj0gam9pbignOicsJHVpZCkuIlxuIjt9CiBlY2hvICc8YnIvPic7JHRlbXAgPSB0cmltKCR0ZW1wKTskZmlsZTUgPSAKIGZvcGVuKCJ0ZXN0LnR4dCIsInciKTsKIGZwdXRzKCRmaWxlNSwkdGVtcCk7CiBmY2xvc2UoJGZpbGU1KTskZGNvdW50ID0gMTskZmlsZSA9IAogZm9wZW4oInRlc3QudHh0IiwgInIiKSBvciBleGl0KCJVbmFibGUgdG8gb3BlbiBmaWxlISIpOwogd2hpbGUoIWZlb2YoJGZpbGUpKXskcyA9IGZnZXRzKCRmaWxlKTskbWF0Y2hlcyA9IGFycmF5KCk7CiAkdCA9IHByZWdfbWF0Y2goJy9cLyguKj8pXDpcLy9zJywgJHMsICRtYXRjaGVzKTskbWF0Y2hlcyA9IHN0cl9yZXBsYWNlKCJob21lLyIsIiIsJG1hdGNoZXNbMV0pOwogaWYoc3RybGVuKCRtYXRjaGVzKSA+IDEyIHx8IHN0cmxlbigkbWF0Y2hlcykgPT0gMCB8fCAkbWF0Y2hlcyA9PSAiYmluIiB8fCAkbWF0Y2hlcyA9PSAiZXRjL1gxMS9mcyIgfHwgJG1hdGNoZXMgPT0gInZhci9saWIvbmZzIiB8fCAkbWF0Y2hlcyA9PSAidmFyL2FycHdhdGNoIiB8fCAkbWF0Y2hlcyA9PSAidmFyL2dvcGhlciIgfHwgJG1hdGNoZXMgPT0gInNiaW4iIHx8ICRtYXRjaGVzID09ICJ2YXIvYWRtIiB8fCAkbWF0Y2hlcyA9PSAidXNyL2dhbWVzIiB8fCAkbWF0Y2hlcyA9PSAidmFyL2Z0cCIgfHwgJG1hdGNoZXMgPT0gImV0Yy9udHAiIHx8ICRtYXRjaGVzID09ICJ2YXIvd3d3IiB8fCAkbWF0Y2hlcyA9PSAidmFyL25hbWVkIikKIGNvbnRpbnVlOwogZWNobyAiPHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgc2l6ZT0yPiIgLiAkZGNvdW50IC4gIjwvdGQ+CiA8dGQgYWxpZ249Y2VudGVyPjxmb250IGNsYXNzPXR4dD4iIC4gJG1hdGNoZXMgLiAiPC90ZD4iOwogZWNobyAiPHRkIGFsaWduPWNlbnRlcj48Zm9udCBjbGFzcz10eHQ+PGEgaHJlZj0kZnVsbC8weHN5bWxpbmsvcm9vdC9ob21lLyIgLiAkbWF0Y2hlcyAuICIvcHVibGljX2h0bWwgdGFyZ2V0PSdfYmxhbmsnPlN5bWxpbms8L2E+PC90ZD48L3RyPiI7CiAkZGNvdW50Kys7fQogZmNsb3NlKCRmaWxlKTsKIGVjaG8gIjwvdGFibGU+PC9kaXY+PC9jZW50ZXI+Ijt1bmxpbmsoInRlc3QudHh0Iik7CiB9IGVsc2UgCiBlY2hvICI8Y2VudGVyPjxmb250IHNpemU9Mz5DYW5ub3QgY3JlYXRlIFN5bWxpbms8L2ZvbnQ+PC9jZW50ZXI+IjsKIH0KIH0gICAgCn0KZWxzZWlmKGlzc2V0KCRfR0VUWydkbyddKSAmJiAoJF9HRVRbJ2RvJ10gPT0gJ2NvbmZpZycpKSB7CglpZihzdHJ0b2xvd2VyKHN1YnN0cihQSFBfT1MsIDAsIDMpKSA9PSAid2luIil7CmVjaG8gJzxzY3JpcHQ+YWxlcnQoIlRpZGFrIGJpc2EgZGkgZ3VuYWthbiBkaSBzZXJ2ZXIgd2luZG93cyIpPC9zY3JpcHQ+JzsKZXhpdDsKfQoJaWYoJF9QT1NUKXsJaWYoJF9QT1NUWyd0aXBlJ10gPT0gJ2dyYWJzeW12JykgewoJCUBta2RpcigiMHhzeW12IiwgMDc3Nyk7CmV4ZSgibG4gLXMgLyAweHN5bXYvcm9vdCIpOwokaHRhY2Nlc3M9Ik9wdGlvbnMgSW5kZXhlcyBGb2xsb3dTeW1MaW5rcwpEaXJlY3RvcnlJbmRleCBqYW5jb3guaHRtCkFkZFR5cGUgdGV4dC9wbGFpbiAucGhwIApBZGRIYW5kbGVyIHRleHQvcGxhaW4gLnBocApTYXRpc2Z5IEFueSI7CkBmaWxlX3B1dF9jb250ZW50cygiMHhzeW12Ly5odGFjY2VzcyIsJGh0YWNjZXNzKTsKCQkkZXRjX3Bhc3N3ZD0kX1BPU1RbJ3Bhc3N3ZCddOwogICAgCiAgICAkZXRjX3Bhc3N3ZD1leHBsb2RlKCJcbiIsJGV0Y19wYXNzd2QpOwpmb3JlYWNoKCRldGNfcGFzc3dkIGFzICRwYXNzd2QpewokcGF3ZD1leHBsb2RlKCI6IiwkcGFzc3dkKTsKJHVzZXIgPSRwYXdkWzVdOwokdXNlcmEgPSBwcmVnX3JlcGxhY2UoJy9cL3Zhclwvd3d3XC92aG9zdHNcLy8nLCAnJywgJHVzZXIpOwppZiAocHJlZ19tYXRjaCgnL3Zob3N0cy9pJywkdXNlcikpewpleGUoImxuIC1zICIuJHVzZXIuIi9odHRwZG9jcy93cC1jb25maWcucGhwIDB4c3ltdi8iLiR1c2VyYS4iLVdvcmRwcmVzcy50eHQiKTsKZXhlKCJsbiAtcyAiLiR1c2VyLiIvaHR0cGRvY3MvY29uZmlndXJhdGlvbi5waHAgMHhzeW12LyIuJHVzZXJhLiItSm9vbWxhLnR4dCIpOwpleGUoImxuIC1zICIuJHVzZXIuIi9odHRwZG9jcy9jb25maWcva29uZWtzaS5waHAgMHhzeW12LyIuJHVzZXJhLiItTG9rb21lZGlhLnR4dCIpOwpleGUoImxuIC1zICIuJHVzZXIuIi9odHRwZG9jcy9mb3J1bS9jb25maWcucGhwIDB4c3ltdi8iLiR1c2VyYS4iLXBocEJCLnR4dCIpOwpleGUoImxuIC1zICIuJHVzZXIuIi9odHRwZG9jcy9zaXRlcy9kZWZhdWx0L3NldHRpbmdzLnBocCAweHN5bXYvIi4kdXNlcmEuIi1EcnVwYWwudHh0Iik7CmV4ZSgibG4gLXMgIi4kdXNlci4iL2h0dHBkb2NzL2NvbmZpZy9zZXR0aW5ncy5pbmMucGhwIDB4c3ltdi8iLiR1c2VyYS4iLVByZXN0YVNob3AudHh0Iik7CmV4ZSgibG4gLXMgIi4kdXNlci4iL2h0dHBkb2NzL2FwcC9ldGMvbG9jYWwueG1sIDB4c3ltdi8iLiR1c2VyYS4iLU1hZ2VudG8udHh0Iik7CmV4ZSgibG4gLXMgIi4kdXNlci4iL2h0dHBkb2NzL2FkbWluL2NvbmZpZy5waHAgMHhzeW12LyIuJHVzZXJhLiItT3BlbkNhcnQudHh0Iik7CmV4ZSgibG4gLXMgIi4kdXNlci4iL2h0dHBkb2NzL2FwcGxpY2F0aW9uL2NvbmZpZy9kYXRhYmFzZS5waHAgMHhzeW12LyIuJHVzZXJhLiItRWxsaXNsYWIudHh0Iik7IAp9fX0KaWYoJF9QT1NUWyd0aXBlJ10gPT0gJ2dyYWJzeW0nKSB7CkBta2RpcigiMHhzeW0iLCAwNzc3KTsKQHN5bWxpbmsoIi8iLCIweHN5bS9yb290Iik7CiRodGFjY2Vzcz0iT3B0aW9ucyBJbmRleGVzIEZvbGxvd1N5bUxpbmtzCkRpcmVjdG9yeUluZGV4IGphbmNveC5odG0KQWRkVHlwZSB0ZXh0L3BsYWluIC5waHAgCkFkZEhhbmRsZXIgdGV4dC9wbGFpbiAucGhwClNhdGlzZnkgQW55IjsKQGZpbGVfcHV0X2NvbnRlbnRzKCIweHN5bS8uaHRhY2Nlc3MiLCRodGFjY2Vzcyk7fQppZigkX1BPU1RbJ3RpcGUnXSA9PSAnZ3JhYnN5bTQwNCcpIHsKQG1rZGlyKCIweHN5bTQwNCIsIDA3NzcpOwpAc3ltbGluaygiLyIsIjB4c3ltNDA0L3Jvb3QiKTsKJGh0YWNjZXNzPSJPcHRpb25zIEluZGV4ZXMgRm9sbG93U3ltTGlua3MKRGlyZWN0b3J5SW5kZXggamFuY294Lmh0bQpBZGRUeXBlIHRleHQvcGxhaW4gLnBocCAKQWRkSGFuZGxlciB0ZXh0L3BsYWluIC5waHAKU2F0aXNmeSBBbnkKSW5kZXhPcHRpb25zICtDaGFyc2V0PVVURi04ICtGYW5jeUluZGV4aW5nICtJZ25vcmVDYXNlICtGb2xkZXJzRmlyc3QgK1hIVE1MICtIVE1MVGFibGUgK1N1cHByZXNzUnVsZXMgK1N1cHByZXNzRGVzY3JpcHRpb24gK05hbWVXaWR0aD0qIApBZGRJY29uICdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFGVVNVUkJWRGlOcFpLOVNnTkJGSVhQdlhObmRqY1JvcFg0VTRrV1ZyNUFDaFU3SDhCU2ZJdEFIa0I5Q1hzclcwR3dFUXRSd1ZLTVJ0QVU4WmNZV2FObU0yT3hxeXlpWVpkY0dJYVo0Wjc3TWVlUWN3NkRGQS9VRFVBQVlISGo4aE9BVGo5b1JTZTJaMWYyS2pQMWZnTGtuTVBTNWxXMFZpNHBab3B2SFhEVytJaE9yOTlnWFR6a3I5cXZUQk10ck5kOEFzTFZjb21aS0RQNjFrRUxpaEdJSjlRQmdPMmpkc0lFL0piNU9hY0dGQXdEUUVlTUVPWm5oMUVxTUNodFNCOGE2NEJXMk1OaDdRVmloQ0dLY05Ic3dtWjBsQWtZSHhGNFFoQlBDS0lZUlU5bDYwNUttR0NFSVVZenRDWU1CZmtFakdaNE9pSHdSUUYrdmtRRytwdEFDSUZSRUpWUFFBdkZmK0Jyam95UStDWmZxcTExOERSRkVoamViYmJlbDZkR2l5VHFmK3ZTcmthUlEvMHV0TDdtSFhsOXZxK2VQM1VuYmgvSDVnREtpT0Y2N1llYlkwZFNKY1JCbTB6MnJGbDJ5V3A4QVZESVczMmRhN3BMQUFBQUFFbEZUa1N1UW1DQycgXl5ESVJFQ1RPUlleXgpEZWZhdWx0SWNvbiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUFYTlNSMElBcnM0YzZRQUFBQVppUzBkRUFQOEEvd0Qvb0wybmt3QUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCOW9KQmhjVEp2MkIyZDRBQUFKTVNVUkJWRGpMYlpPOVRoeFpFSVcvcWx2ZHRNMzhCTmdKUW1RZ0pHZCtBL01RQkx3R2ppd0gzbndka1NMdE8yeEVSRzVMcXhYUlNJUjJZRGZENEdrR00wUDNyYjRiOVBBejBsN3BTbFdsVzBmbm5Mb2xBSVBCNFBYaDRlRnVudWNBSUlMd2RFU2VaeUFpZm5wNit1OW9OTG8zZ00zTnpUZEhSKy8venZKTXpTeUpLS29kaUlnOEFYYXhlSXoxYkRaN014cU5mdGdTVVJEV3k3TFVuWjBkWW14QUZBVkVsSTZBRUN5Z0lzUVFzaXpMQk9BQkFET2pLQXBxaDd1N0dvQ1VXaXdZYmV0b1VIcnJQY3dDcW9GMktVZVhMekV6QnYwK3VRbVNITUVaOUY2U1pjcjZpNElzQk9hL2I3SFFNYUh0SUF3Z0xkSGFsREExZXYwZVFiU2pyRXJRd0pwcUY0ZUF4L2hvcUQxMzJtTWtKcmk1dVNPbEZoRWhwVVFJaW9qd2FtT0ROc2xqZlVXQ3FwTG5PYWFDU0tKdG5hQkNzWllqQWxsbVhJNHZhZW9hVlgwY2JTZGhtVVIzekFLdk5qWTZWaW9vMHRXemdFb25LYlcrS2tHV3QzVW50MENlR2ZKczlnK1VVMHJFR0hIL0h3L01qSDYvVCtQT2RGb1JOS0NoTTIyeG1PUGVzcGpQR1E2SHBOUTI3dDZzQUNEU05hbnlvbGpETEVkVmFGT0xlOFprVWpLNXVrcTN0NzlsUEM3L09EazVHYStZNk81TXF5bU53M1YxeTNoeXpmWDBocXZKTHliWEZkKytmMmQzZDBkbXMrcXZnNE9EejhmSHgwL0xzYmUzOTY0c1M3KzR1RWp1bnBxbVNlNmUzRDNONS9OMFdaYnRseTlmMDluWjJaL2IyOXYyZkxFZXZ2SzlxdjdjMnRvS2k4VWlpUWlxSGJtNnJpVzZhMTNmbit6djczK29xb3JoY0xnS1VGWFZQK2ZuNTIrTG9uajhJTEowUDhaSUNDRjkvUFRwQ2xocEJ2Z1BlbG9MOVU1NU5JQUFBQUFBU1VWT1JLNUNZSUk9JwpJbmRleElnbm9yZSAqLnR4dDQwNApJbmRleFN0eWxlU2hlZXQgJ2h0dHBzOi8vMHgxOTk5LmdpdGh1Yi5pby8weFNoZWxsL3N0eWxlL21lbGV4LmNzcycKUmV3cml0ZUVuZ2luZSBPbgpSZXdyaXRlQ29uZCAle1JFUVVFU1RfRklMRU5BTUV9IF4uKjB4c3ltNDA0IFtOQ10KUmV3cml0ZVJ1bGUgXC50eHQkICV7UkVRVUVTVF9VUkl9NDA0IFtMLFI9MzAyLk5DXSI7CkBmaWxlX3B1dF9jb250ZW50cygiMHhzeW00MDQvLmh0YWNjZXNzIiwkaHRhY2Nlc3MpOwp9CmlmKCRfUE9TVFsndGlwZSddID09ICdncmFiJykgewoJCQkJCQlta2RpcigiMHhncmFiIiwgMDc3Nyk7CgkJCQkJCSRpc2lfaHRjID0gIk9wdGlvbnMgYWxsXG5SZXF1aXJlIE5vbmVcblNhdGlzZnkgQW55IjsKCQkJCQkJJGh0YyA9IGZvcGVuKCIweGdyYWIvLmh0YWNjZXNzIiwidyIpOwoJCQkJCQlmd3JpdGUoJGh0YywgJGlzaV9odGMpOwkKfQokcGFzc3dkID0gJF9QT1NUWydwYXNzd2QnXTsKCnByZWdfbWF0Y2hfYWxsKCcvKC4qPyk6eDovJywgJHBhc3N3ZCwgJHVzZXJfY29uZmlnKTsKZm9yZWFjaCgkdXNlcl9jb25maWdbMV0gYXMgJHVzZXJfY294KSB7CiRncmFiX2NvbmZpZyA9IGFycmF5KAoiL2hvbWUvJHVzZXJfY294Ly5hY2Nlc3NoYXNoIiA9PiAiV0hNLWFjY2Vzc2hhc2giLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2NvbmZpZy9rb25la3NpLnBocCIgPT4gIkxva29tZWRpYSIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvZm9ydW0vY29uZmlnLnBocCIgPT4gInBocEJCIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9zaXRlcy9kZWZhdWx0L3NldHRpbmdzLnBocCIgPT4gIkRydXBhbCIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvY29uZmlnL3NldHRpbmdzLmluYy5waHAiID0+ICJTaG9wIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9hcHAvZXRjL2xvY2FsLnhtbCIgPT4gIk1hZ2VudG8iLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2FkbWluL2NvbmZpZy5waHAiID0+ICJPcGVuQ2FydCIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvYXBwbGljYXRpb24vY29uZmlnL2RhdGFiYXNlLnBocCIgPT4gIkVsbGlzbGFiIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC92Yi9pbmNsdWRlcy9jb25maWcucGhwIiA9PiAiVmJ1bGxldGluIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWcucGhwIiA9PiAiVmJ1bGxldGluIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwIiA9PiAiVmJ1bGxldGluIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9mb3J1bXMvaW5jbHVkZXMvY29uZmlnLnBocCIgPT4gIlZidWxsZXRpbiIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvY2MvaW5jbHVkZXMvY29uZmlnLnBocCIgPT4gIlZidWxsZXRpbiIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvaW5jL2NvbmZpZy5waHAiID0+ICJNeUJCIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWd1cmUucGhwIiA9PiAiT3NDb21tZXJjZSIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvc2hvcC9pbmNsdWRlcy9jb25maWd1cmUucGhwIiA9PiAiT3NDb21tZXJjZSIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvb3MvaW5jbHVkZXMvY29uZmlndXJlLnBocCIgPT4gIk9zQ29tbWVyY2UiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL29zY29tL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAiID0+ICJPc0NvbW1lcmNlIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9wcm9kdWN0cy9pbmNsdWRlcy9jb25maWd1cmUucGhwIiA9PiAiT3NDb21tZXJjZSIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvY2FydC9pbmNsdWRlcy9jb25maWd1cmUucGhwIiA9PiAiT3NDb21tZXJjZSIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvaW5jL2NvbmZfZ2xvYmFsLnBocCIgPT4gIklQQiIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvd3AvdGVzdC93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9ibG9nL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2JldGEvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvcG9ydGFsL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL3NpdGUvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvd3Avd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvV1Avd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvbmV3cy93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC93b3JkcHJlc3Mvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvdGVzdC93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9kZW1vL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2hvbWUvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvdjEvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvdjIvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvcHJlc3Mvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvbmV3L3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2Jsb2dzL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9ibG9nL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiXldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9jbXMvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2JldGEvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL3BvcnRhbC9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvc2l0ZS9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvbWFpbi9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvaG9tZS9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvZGVtby9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvdGVzdC9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvdjEvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL3YyL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9qb29tbGEvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL25ldy9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvV0hNQ1Mvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC93aG1jczEvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9XaG1jcy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL3dobWNzL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvd2htY3Mvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9XSE1DL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvV2htYy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL3dobWMvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9XSE0vc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9XaG0vc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC93aG0vc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9IT1NUL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvSG9zdC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2hvc3Qvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9TVVBQT1JURVMvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9TdXBwb3J0ZXMvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9zdXBwb3J0ZXMvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9kb21haW5zL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvZG9tYWluL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvSG9zdGluZy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL0hPU1RJTkcvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9ob3N0aW5nL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvQ0FSVC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL0NhcnQvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9jYXJ0L3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvT1JERVIvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9PcmRlci9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL29yZGVyL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvQ0xJRU5UL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvQ2xpZW50L3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvY2xpZW50L3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvQ0xJRU5UQVJFQS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL0NsaWVudGFyZWEvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9jbGllbnRhcmVhL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvU1VQUE9SVC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL1N1cHBvcnQvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9zdXBwb3J0L3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvQklMTElORy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL0JpbGxpbmcvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9iaWxsaW5nL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvQlVZL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvQnV5L3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvYnV5L3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvTUFOQUdFL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvTWFuYWdlL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvbWFuYWdlL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvQ0xJRU5UU1VQUE9SVC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL0NsaWVudFN1cHBvcnQvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9DbGllbnRzdXBwb3J0L3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvY2xpZW50c3VwcG9ydC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL0NIRUNLT1VUL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvQ2hlY2tvdXQvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9jaGVja291dC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL0JJTExJTkdTL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvQmlsbGluZ3Mvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9iaWxsaW5ncy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL0JBU0tFVC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL0Jhc2tldC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2Jhc2tldC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL1NFQ1VSRS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL1NlY3VyZS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL3NlY3VyZS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL1NBTEVTL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvU2FsZXMvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9zYWxlcy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL0JJTEwvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9CaWxsL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvYmlsbC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL1BVUkNIQVNFL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvUHVyY2hhc2Uvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9wdXJjaGFzZS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL0FDQ09VTlQvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9BY2NvdW50L3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvYWNjb3VudC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL1VTRVIvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9Vc2VyL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvdXNlci9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL0NMSUVOVFMvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9DbGllbnRzL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvY2xpZW50cy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL0JJTExJTkdTL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvQmlsbGluZ3Mvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9iaWxsaW5ncy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL01ZL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvTXkvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9teS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL3NlY3VyZS93aG0vc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9zZWN1cmUvd2htY3Mvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9wYW5lbC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2NsaWVudGVzL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvY2xpZW50ZS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL3N1cHBvcnQvb3JkZXIvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvYm94YmlsbGluZy9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvYm94L2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9ob3N0L2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9Ib3N0L2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9zdXBwb3J0ZXMvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL3N1cHBvcnQvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2hvc3RpbmcvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2NhcnQvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL29yZGVyL2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9jbGllbnQvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2NsaWVudHMvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2NsaWVudGUvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2NsaWVudGVzL2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9iaWxsaW5nL2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9iaWxsaW5ncy9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvbXkvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL3NlY3VyZS9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvc3VwcG9ydC9vcmRlci9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwIiA9PiAiWmVuY2FydCIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvemVuY2FydC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAiID0+ICJaZW5jYXJ0IiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9wcm9kdWN0cy9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAiID0+ICJaZW5jYXJ0IiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9jYXJ0L2luY2x1ZGVzL2Rpc3QtY29uZmlndXJlLnBocCIgPT4gIlplbmNhcnQiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL3Nob3AvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwIiA9PiAiWmVuY2FydCIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL2hvc3RiaWxscy9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvaG9zdC9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvSG9zdC9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvc3VwcG9ydGVzL2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9zdXBwb3J0L2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9ob3N0aW5nL2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9jYXJ0L2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9vcmRlci9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvY2xpZW50L2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9jbGllbnRzL2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9jbGllbnRlL2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9jbGllbnRlcy9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvYmlsbGluZy9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsCiIvaG9tZS8kdXNlcl9jb3gvcHVibGljX2h0bWwvYmlsbGluZ3MvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL215L2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwKIi9ob21lLyR1c2VyX2NveC9wdWJsaWNfaHRtbC9zZWN1cmUvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLAoiL2hvbWUvJHVzZXJfY294L3B1YmxpY19odG1sL3N1cHBvcnQvb3JkZXIvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiCik7ICAKCmZvcmVhY2goJGdyYWJfY29uZmlnIGFzICRjb25maWcgPT4gJG5hbWFfY29uZmlnKSB7CglpZigkX1BPU1RbJ3RpcGUnXSA9PSAnZ3JhYicpIHsKJGFtYmlsX2NvbmZpZyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRjb25maWcpOwppZigkYW1iaWxfY29uZmlnID09ICcnKSB7Cn0gZWxzZSB7CiRmaWxlX2NvbmZpZyA9IGZvcGVuKCIweGdyYWIvJHVzZXJfY294LSRuYW1hX2NvbmZpZy50eHQiLCJ3Iik7CmZwdXRzKCRmaWxlX2NvbmZpZywkYW1iaWxfY29uZmlnKTsKfQp9CmlmKCRfUE9TVFsndGlwZSddID09ICdncmFic3ltJykgewpAc3ltbGluaygkY29uZmlnLCIweHN5bS8iLiR1c2VyX2NveC4iLSIuJG5hbWFfY29uZmlnLiIudHh0Iik7Cn0KaWYoJF9QT1NUWyd0aXBlJ10gPT0gJ2dyYWJzeW00MDQnKSB7CiRzeW00MDQ9c3ltbGluaygkY29uZmlnLCIweHN5bTQwNC8iLiR1c2VyX2NveC4iLSIuJG5hbWFfY29uZmlnLiIudHh0Iik7CmlmKCRzeW00MDQpewoJQG1rZGlyKCIweHN5bTQwNC8iLiR1c2VyX2NveC4iLSIuJG5hbWFfY29uZmlnLiIudHh0NDA0IiwgMDc3Nyk7CgkkeHN5bTQwND0iT3B0aW9ucyBJbmRleGVzIEZvbGxvd1N5bUxpbmtzCkRpcmVjdG9yeUluZGV4IGphbmNveC5odG0KSGVhZGVyTmFtZSAweC50eHQKU2F0aXNmeSBBbnkKSW5kZXhPcHRpb25zIElnbm9yZUNhc2UgRmFuY3lJbmRleGluZyBGb2xkZXJzRmlyc3QgTmFtZVdpZHRoPSogRGVzY3JpcHRpb25XaWR0aD0qIFN1cHByZXNzSFRNTFByZWFtYmxlCkluZGV4SWdub3JlICoKSW5kZXhTdHlsZVNoZWV0ICdodHRwczovLzB4MTk5OS5naXRodWIuaW8vMHhTaGVsbC9zdHlsZS9tZWxleC5jc3MnIjsKCkBmaWxlX3B1dF9jb250ZW50cygiMHhzeW00MDQvIi4kdXNlcl9jb3guIi0iLiRuYW1hX2NvbmZpZy4iLnR4dDQwNC8uaHRhY2Nlc3MiLCR4c3ltNDA0KTsKCkBzeW1saW5rKCRjb25maWcsIjB4c3ltNDA0LyIuJHVzZXJfY294LiItIi4kbmFtYV9jb25maWcuIi50eHQ0MDQvMHgudHh0Iik7CgoJfQoKfQoKICAgICAgICAgICAgICAgICAgICB9ICAgICAKCQl9ICBpZigkX1BPU1RbJ3RpcGUnXSA9PSAnZ3JhYicpIHsKICAgICAgICAgICAgZWNobyAiPGNlbnRlcj48YSBocmVmPSc/ZGlyPSRkaXIvMHhncmFiJz48Zm9udCBjb2xvcj1saW1lPkRvbmU8L2ZvbnQ+PC9hPjwvY2VudGVyPiI7CgkJfQogICAgaWYoJF9QT1NUWyd0aXBlJ10gPT0gJ2dyYWJzeW00MDQnKSB7CiAgICAgICAgZWNobyAiPGNlbnRlcj4KPGEgaHJlZj1cIjB4c3ltNDA0L3Jvb3QvXCI+Um9vdCBTZXJ2ZXI8L2E+Cjxicj48YSBocmVmPVwiMHhzeW00MDQvXCI+Q29uZmlndXJhdGlvbnM8L2E+PC9jZW50ZXI+IjsKICAgIH0KICAgICBpZigkX1BPU1RbJ3RpcGUnXSA9PSAnZ3JhYnN5bScpIHsKZWNobyAiPGNlbnRlcj4KPGEgaHJlZj1cIjB4c3ltL3Jvb3QvXCI+Um9vdCBTZXJ2ZXI8L2E+Cjxicj48YSBocmVmPVwiMHhzeW0vXCI+Q29uZmlndXJhdGlvbnM8L2E+PC9jZW50ZXI+IjsKCQkJfWlmKCRfUE9TVFsndGlwZSddID09ICdncmFic3ltdicpIHsKZWNobyAiPGNlbnRlcj4KPGEgaHJlZj1cIjB4c3ltdi9yb290L1wiPlJvb3QgU2VydmVyPC9hPgo8YnI+PGEgaHJlZj1cIjB4c3ltdi9cIj5Db25maWd1cmF0aW9uczwvYT48L2NlbnRlcj4iOwoJCQl9CgkJCgkJCgkJfWVsc2V7CiAgICAgICAgZWNobyAiPGZvcm0gbWV0aG9kPVwicG9zdFwiIGFjdGlvbj1cIlwiPjxjZW50ZXI+CiAgICAgICAgPHNlbGVjdCBjbGFzcz1cInNlbGVjdFwiIG5hbWU9XCJ0aXBlXCIgIHN0eWxlPVwid2lkdGg6IDQ1MHB4O1wiIGhlaWdodD1cIjEwXCI+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImdyYWJcIj5Db25maWcgR3JhYjwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9XCJncmFic3ltXCI+U3ltbGluayBDb25maWc8L29wdGlvbj4KCQk8b3B0aW9uIHZhbHVlPVwiZ3JhYnN5bTQwNFwiPlN5bWxpbmsgQ29uZmlnIDQwNDwvb3B0aW9uPgoJCTxvcHRpb24gdmFsdWU9XCJncmFic3ltdlwiPlZIb3N0cyBTeW1saW5rIENvbmZpZzwvb3B0aW9uPgoJCTwvY2VudGVyPjwvc2VsZWN0PgoJCTxicj5cbiI7CgkJaWYoISRldGNwYXNzd2QpewoJCQllY2hvICI8dGV4dGFyZWEgbmFtZT1cInBhc3N3ZFwiIGNsYXNzPSdhcmVhJyByb3dzPScxNScgY29scz0nNjAnPlxuIjsKCQlmb3IoJHVpZD0wOyR1aWQ8NjAwMDA7JHVpZCsrKXsKJGFyYSA9IHBvc2l4X2dldHB3dWlkKCR1aWQpOwppZiAoIWVtcHR5KCRhcmEpKSB7CndoaWxlIChsaXN0ICgka2V5LCAkdmFsKSA9IGVhY2goJGFyYSkpewpwcmludCAiJHZhbDoiOwp9CnByaW50ICJcbiI7Cn0KfQoJCWVjaG8gIjwvdGV4dGFyZWE+PGJyPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJHYXNzUG9sbFwiPjwvdGQ+PC90cj48L2NlbnRlcj5cbiI7Cgl9IGVsc2UgewoJCWVjaG8gIjx0ZXh0YXJlYSBuYW1lPVwicGFzc3dkXCIgY2xhc3M9J2FyZWEnIHJvd3M9JzE1JyBjb2xzPSc2MCc+XG4iOwoJCWVjaG8gJGV0Y3Bhc3N3ZDsKCQllY2hvICI8L3RleHRhcmVhPjxicj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiR2Fzc1BvbGxcIj48L3RkPjwvdHI+PC9jZW50ZXI+XG4iOwoKCX0KCX0KCgp9CmVsc2VpZihpc3NldCgkX0dFVFsnZG8nXSkgJiYgKCRfR0VUWydkbyddID09ICdjZWtqdW0nKSkgewogIGVjaG8gJzxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIiIHN0eWxlPSJmbG9hdDogbGVmdDsiPgogICAgRGlyIDogCiAgICA8aW5wdXQgc2l6ZT0iMzAiIG5hbWU9ImNla2p1bSIgaGVpZ2h0PSIxMCIgdHlwZT0idGV4dCI+PGlucHV0IG5hbWU9InN1Ym1pdCIgdmFsdWU9Ij4+IiB0eXBlPSJzdWJtaXQiPgogICAgPC9mb3JtPjxicj48YnI+JzsKICAgIGlmICgkX1BPU1QpewogICAgICBlY2hvIGNla2p1bSgkX1JFUVVFU1RbJ2Nla2p1bSddKTsKICAgIH0gZWxzZSB7CiAgICAgIGVjaG8gY2VranVtKCRfR0VUWydjZWtqdW0nXSk7CiAgICB9Cn0KZWxzZWlmKGlzc2V0KCRfR0VUWydkbyddKSAmJiAoJF9HRVRbJ2RvJ10gPT0gJ2p1bXAnKSkgewogICAgJGkgPSAwOwogICAgZWNobyAiPHByZT48ZGl2IGNsYXNzPSdtYXJnaW46IDVweCBhdXRvOyc+IjsKICAgICRldGMgPSBmb3BlbigiL2V0Yy9wYXNzd2QiLCAiciIpOwogICAgCiAgICB3aGlsZSgkcGFzc3dkID0gZmdldHMoJGV0YykpIHsKICAgICAgICBpZigkcGFzc3dkID09ICcnIHx8ICEkZXRjKSB7CiAgICAgICAgICAgIGVjaG8gIjxmb250IGNvbG9yPXJlZD5DYW4ndCByZWFkIC9ldGMvcGFzc3dkPC9mb250PiI7CiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgIHByZWdfbWF0Y2hfYWxsKCcvKC4qPyk6eDovJywgJHBhc3N3ZCwgJHVzZXJfanVtcGluZyk7CiAgICAgICAgICAgIGZvcmVhY2goJHVzZXJfanVtcGluZ1sxXSBhcyAkdXNlcmp1bSkgewogICAgICAgICAgICAgICAgJHVzZXJqdW1kaXIgPSAiL2hvbWUvJHVzZXJqdW0vcHVibGljX2h0bWwiOwogICAgICAgICAgICAgICAgJHBlcm0gPSBwZXJtaXNzaW9ucygkdXNlcmp1bWRpcik7CiAgICAgICAgICAgICAgICAkcGVybSA9IHcoJHVzZXJqdW1kaXIsJHBlcm0pOwoKICAgICAgICAgICAgICAgIGlmKGlzX3JlYWRhYmxlKCR1c2VyanVtZGlyKSkgewogICAgICAgICAgICAgICAgCSRpKys7CiAgICAgICAgICAgICAgICAgICAgJGpydyA9ICI8YT5bPGZvbnQgY29sb3I9bGltZT5SPC9mb250Pl0gIFskcGVybV0gPC9hPjxhIGhyZWY9Jz9kaXI9JHVzZXJqdW1kaXInPjxmb250IGNvbG9yPWdvbGQ+JHVzZXJqdW1kaXI8L2ZvbnQ+PC9hPiA8YSBocmVmPSc/ZG89Y2VranVtJmNla2p1bT0kdXNlcmp1bWRpcicgdGFyZ2V0PSdfYmxhbmsnPkNoZWNrPC9hPjxicj4iOwogICAgICAgICAgICAgICAgICAgIGlmKGlzX3dyaXRhYmxlKCR1c2VyanVtZGlyKSkgewogICAgICAgICAgICAgICAgICAgICRqcncgPSAiPGE+Wzxmb250IGNvbG9yPWxpbWU+Ulc8L2ZvbnQ+XSBbJHBlcm1dIDwvYT48YSBocmVmPSc/ZGlyPSR1c2VyanVtZGlyJz48Zm9udCBjb2xvcj1nb2xkPiR1c2VyanVtZGlyPC9mb250PjwvYT4gPGEgaHJlZj0nP2RvPWNla2p1bSZjZWtqdW09JHVzZXJqdW1kaXInIHRhcmdldD0nX2JsYW5rJz5DaGVjazwvYT48YnI+IjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWNobyAkanJ3OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYoJGkgPT0gMCkgeyAKICAgIH0gZWxzZSB7CiAgICAgICAgZWNobyAiPGJyPlRvdGFsIGFkYSAiLiRpLiIgS2ltY2lsIGRpICIuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLiIiOwogICAgfQogICAgZWNobyAiPC9kaXY+PC9wcmU+IjsKfQoJZWxzZWlmKGlzc2V0KCRfR0VUWydkbyddKSAmJiAoJF9HRVRbJ2RvJ10gPT0gJ21hc3NfZGVmYWNlJykpIHsKICAgIGVjaG8gIjxjZW50ZXI+PGZvcm0gYWN0aW9uPVwiXCIgbWV0aG9kPVwicG9zdFwiPlxuIjsKICAgICRkaXJyPSRfUE9TVFsnZF9kaXInXTsKICAgICRpbmRleCA9ICRfUE9TVFsic2NyaXB0Il07CiAgICAkaW5kZXggPSBzdHJfcmVwbGFjZSgnIicsIiciLCRpbmRleCk7CiAgICAkaW5kZXggPSBzdHJpcHNsYXNoZXMoJGluZGV4KTsKICAgIGZ1bmN0aW9uIGVkaXRfZmlsZSgkZmlsZSwkaW5kZXgpewogICAgICAgIGlmIChpc193cml0YWJsZSgkZmlsZSkpIHsKICAgICAgICBjbGVhcl9maWxsKCRmaWxlLCRpbmRleCk7CiAgICAgICAgZWNobyAiPFNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuOyc+PHN0cm9uZz4gWytdIE55YWJ1biAxMDAlIFN1Y2Nlc3NmdWxsIDwvc3Ryb25nPjwvc3Bhbj48YnI+PC9jZW50ZXI+IjsKICAgICAgICB9IAogICAgICAgIGVsc2UgewogICAgICAgICAgICBlY2hvICI8U3BhbiBzdHlsZT0nY29sb3I6cmVkOyc+PHN0cm9uZz4gWy1dIFRlcm55YXRhIFRpZGFrIEJvbGVoIE1lbnlhYnVuIERpc2luaSA6KCA8L3N0cm9uZz48L3NwYW4+PGJyPjwvY2VudGVyPiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgZnVuY3Rpb24gaGFwdXNfbWFzc2FsKCRkaXIsJG5hbWFmaWxlKSB7CiAgICAgICAgaWYoaXNfd3JpdGFibGUoJGRpcikpIHsKICAgICAgICAgICAgJGRpcmEgPSBzY2FuZGlyKCRkaXIpOwogICAgICAgICAgICBmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7CiAgICAgICAgICAgICAgICAkZGlyYyA9ICIkZGlyLyRkaXJiIjsKICAgICAgICAgICAgICAgICRsb2thc2kgPSAkZGlyYy4nLycuJG5hbWFmaWxlOwogICAgICAgICAgICAgICAgaWYoJGRpcmIgPT09ICcuJykgewogICAgICAgICAgICAgICAgICAgIGlmKGZpbGVfZXhpc3RzKCIkZGlyLyRuYW1hZmlsZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVubGluaygiJGRpci8kbmFtYWZpbGUiKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2VpZigkZGlyYiA9PT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgIGlmKGZpbGVfZXhpc3RzKCIiLmRpcm5hbWUoJGRpcikuIi8kbmFtYWZpbGUiKSkgewogICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmsoIiIuZGlybmFtZSgkZGlyKS4iLyRuYW1hZmlsZSIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYoaXNfZGlyKCRkaXJjKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZihpc193cml0YWJsZSgkZGlyYykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZpbGVfZXhpc3RzKCRsb2thc2kpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiWzxmb250IGNvbG9yPWxpbWU+REVMRVRFRDwvZm9udD5dICRsb2thc2k8YnI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmsoJGxva2FzaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkeCA9IGhhcHVzX21hc3NhbCgkZGlyYywkbmFtYWZpbGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gY2xlYXJfZmlsbCgkZmlsZSwkaW5kZXgpewogICAgICAgIGlmKGZpbGVfZXhpc3RzKCRmaWxlKSl7CiAgICAgICAgICAgICRoYW5kbGUgPSBmb3BlbigkZmlsZSwndycpOwogICAgICAgICAgICBmd3JpdGUoJGhhbmRsZSwnJyk7CiAgICAgICAgICAgIGZ3cml0ZSgkaGFuZGxlLCRpbmRleCk7CiAgICAgICAgICAgIGZjbG9zZSgkaGFuZGxlKTsgIH0gfQoKICAgIGZ1bmN0aW9uIGdhc3MoKXsKICAgICAgICBnbG9iYWwgJGRpcnIgLCAkaW5kZXggOwogICAgICAgIGNoZGlyKCRkaXJyKTsKICAgICAgICAkbWUgPSBzdHJfcmVwbGFjZShkaXJuYW1lKF9fRklMRV9fKS4nLycsJycsX19GSUxFX18pOwogICAgICAgICRmaWxlcyA9IHNjYW5kaXIoJGRpcnIpIDsKICAgICAgICAkbm90YWxsb3cgPSBhcnJheSgiLmh0YWNjZXNzIiwiZXJyb3JfbG9nIiwiX3Z0aV9pbmYuaHRtbCIsIl9wcml2YXRlIiwiX3Z0aV9iaW4iLCJfdnRpX2NuZiIsIl92dGlfbG9nIiwiX3Z0aV9wdnQiLCJfdnRpX3R4dCIsImNnaS1iaW4iLCIuY29udGFjdGVtYWlsIiwiLmNwYW5lbCIsIi5mYW50YXN0aWNvZGF0YSIsIi5odHBhc3N3ZHMiLCIubGFzdGxvZ2luIiwiYWNjZXNzLWxvZ3MiLCJjcGJhY2t1cC1leGNsdWRlLXVzZWQtYnktYmFja3VwLmNvbmYiLCIuY2dpX2F1dGgiLCIuZGlza191c2FnZSIsIi5zdGF0c3B3ZCIsIi4uIiwiLiIpOwogICAgICAgIHNvcnQoJGZpbGVzKTsKICAgICAgICAkbiA9IDAgOwogICAgICAgIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSl7CiAgICAgICAgICAgIGlmICggJGZpbGUgIT0gJG1lICYmIGlzX2RpcigkZmlsZSkgIT0gMSAmJiAhaW5fYXJyYXkoJGZpbGUsICRub3RhbGxvdykgKSB7CiAgICAgICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxTcGFuIHN0eWxlPSdjb2xvcjogIzhBOEE4QTsnPjxzdHJvbmc+JGRpcnIvPC9zcGFuPiRmaWxlPC9zdHJvbmc+ID09PT0+ICI7CiAgICAgICAgICAgICAgICBlZGl0X2ZpbGUoJGZpbGUsJGluZGV4KTsKICAgICAgICAgICAgICAgIGZsdXNoKCk7CiAgICAgICAgICAgICAgICAkbiA9ICRuICsxIDsKICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlY2hvICI8YnI+IjsKICAgICAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+PGJyPjxoMz4kbiBLYWxpIEFuZGEgVGVsYWggTmdlY3JvdCAgRGlzaW5pIDwvaDM+PC9jZW50ZXI+PGJyPiI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgZnVuY3Rpb24gTGlzdEZpbGVzKCRkaXJyYWxsKSB7CgogICAgaWYoJGRoID0gb3BlbmRpcigkZGlycmFsbCkpIHsKCiAgICAgICAkZmlsZXMgPSBBcnJheSgpOwogICAgICAgJGlubmVyX2ZpbGVzID0gQXJyYXkoKTsKICAgICAgICRtZSA9IHN0cl9yZXBsYWNlKGRpcm5hbWUoX19GSUxFX18pLicvJywnJyxfX0ZJTEVfXyk7CiAgICAgICAkbm90YWxsb3cgPSBhcnJheSgkbWUsIi5odGFjY2VzcyIsImVycm9yX2xvZyIsIl92dGlfaW5mLmh0bWwiLCJfcHJpdmF0ZSIsIl92dGlfYmluIiwiX3Z0aV9jbmYiLCJfdnRpX2xvZyIsIl92dGlfcHZ0IiwiX3Z0aV90eHQiLCJjZ2ktYmluIiwiLmNvbnRhY3RlbWFpbCIsIi5jcGFuZWwiLCIuZmFudGFzdGljb2RhdGEiLCIuaHRwYXNzd2RzIiwiLmxhc3Rsb2dpbiIsImFjY2Vzcy1sb2dzIiwiY3BiYWNrdXAtZXhjbHVkZS11c2VkLWJ5LWJhY2t1cC5jb25mIiwiLmNnaV9hdXRoIiwiLmRpc2tfdXNhZ2UiLCIuc3RhdHNwd2QiLCJUaHVtYnMuZGIiKTsKICAgICAgICB3aGlsZSgkZmlsZSA9IHJlYWRkaXIoJGRoKSkgewogICAgICAgICAgICBpZigkZmlsZSAhPSAiLiIgJiYgJGZpbGUgIT0gIi4uIiAmJiAkZmlsZVswXSAhPSAnLicgJiYgIWluX2FycmF5KCRmaWxlLCAkbm90YWxsb3cpICkgewogICAgICAgICAgICAgICAgaWYoaXNfZGlyKCRkaXJyYWxsIC4gIi8iIC4gJGZpbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgJGlubmVyX2ZpbGVzID0gTGlzdEZpbGVzKCRkaXJyYWxsIC4gIi8iIC4gJGZpbGUpOwogICAgICAgICAgICAgICAgICAgIGlmKGlzX2FycmF5KCRpbm5lcl9maWxlcykpICRmaWxlcyA9IGFycmF5X21lcmdlKCRmaWxlcywgJGlubmVyX2ZpbGVzKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkZmlsZXMsICRkaXJyYWxsIC4gIi8iIC4gJGZpbGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNsb3NlZGlyKCRkaCk7CiAgICAgICAgICAgIHJldHVybiAkZmlsZXM7CiAgICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gZ2Fzc19hbGwoKXsKICAgICAgICBnbG9iYWwgJGluZGV4IDsKICAgICAgICAkZGlycmFsbD0kX1BPU1RbJ2RfZGlyJ107CiAgICAgICAgZm9yZWFjaCAoTGlzdEZpbGVzKCRkaXJyYWxsKSBhcyAka2V5PT4kZmlsZSl7CiAgICAgICAgICAgICRmaWxlID0gc3RyX3JlcGxhY2UoJy8vJywiLyIsJGZpbGUpOwogICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxzdHJvbmc+JGZpbGU8L3N0cm9uZz4gPT09PiI7CiAgICAgICAgICAgIGVkaXRfZmlsZSgkZmlsZSwkaW5kZXgpOwogICAgICAgICAgICBmbHVzaCgpOwogICAgICAgIH0KICAgICAgICAka2V5ID0gJGtleSsxOwogICAgZWNobyAiPGNlbnRlcj48YnI+PGgzPiRrZXkgS2FsaSBBbmRhIFRlbGFoIE5nZWNyb3QgIERpc2luaSAgPC9oMz48L2NlbnRlcj48YnI+IjsgfQogICAgZnVuY3Rpb24gY2htb2RfYWxsKCl7CiAgICAgICAgJGNobW9kPSRfUE9TVFsnY2htb2QnXTsKICAgICAgICAkZGlycmFsbD0kX1BPU1RbJ2RfZGlyJ107CiAgICAgICAgZm9yZWFjaCAoTGlzdEZpbGVzKCRkaXJyYWxsKSBhcyAka2V5PT4kZmlsZSl7CiAgICAgICAgICAgICRmaWxlID0gc3RyX3JlcGxhY2UoJy8vJywiLyIsJGZpbGUpOwogICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxzdHJvbmc+JGZpbGU8L3N0cm9uZz4gPT09PiI7CiAgICAgICAgICAgIGNobW9kKCRmaWxlLCRjaG1vZCk7CiAgICAgICAgICAgIGZsdXNoKCk7CiAgICAgICAgfQogICAgICAgICRrZXkgPSAka2V5KzE7CiAgICBlY2hvICI8Y2VudGVyPjxicj48aDM+JGtleSB0ZWxhaCBuZ2VudHUgY2htb2QgZGlzaW5pPC9oMz48L2NlbnRlcj48YnI+IjsgfQogICAgZnVuY3Rpb24gc2FidW5fbWFzc2FsKCRkaXIsJG5hbWFmaWxlLCRpc2lfc2NyaXB0KSB7CiAgICAgICAgaWYoaXNfd3JpdGFibGUoJGRpcikpIHsKICAgICAgICAgICAgJGRpcmEgPSBzY2FuZGlyKCRkaXIpOwogICAgICAgICAgICBmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7CiAgICAgICAgICAgICAgICAkZGlyYyA9ICIkZGlyLyRkaXJiIjsKICAgICAgICAgICAgICAgICRsb2thc2kgPSAkZGlyYy4nLycuJG5hbWFmaWxlOwogICAgICAgICAgICAgICAgaWYoJGRpcmIgPT09ICcuJykgewogICAgICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmKCRkaXJiID09PSAnLi4nKSB7CiAgICAgICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZihpc19kaXIoJGRpcmMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzX3dyaXRhYmxlKCRkaXJjKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiWzxmb250IGNvbG9yPWxpbWU+RE9ORTwvZm9udD5dICRsb2thc2k8YnI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZHggPSBzYWJ1bl9tYXNzYWwoJGRpcmMsJG5hbWFmaWxlLCRpc2lfc2NyaXB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmKCRfUE9TVFsnbWFzcyddID09ICdvbmVkaXInKSB7CiAgICAgICAgZWNobyAiPGJyPiBWZXJzaSBUZXh0IEFyZWE8YnI+PHRleHRhcmVhIHN0eWxlPSdiYWNrZ3JvdW5kOmJsYWNrO291dGxpbmU6bm9uZTtjb2xvcjpyZWQ7JyBuYW1lPSdpbmRleCcgcm93cz0nMTAnIGNvbHM9JzY3Jz5cbiI7CiAgICAgICAgJGluaT0iaHR0cDovLyI7CiAgICAgICAgJG1haW5wYXRoPSRfUE9TVFtkX2Rpcl07CiAgICAgICAgJGZpbGU9JF9QT1NUW2RfZmlsZV07CiAgICAgICAgJGRpcj1vcGVuZGlyKCIkbWFpbnBhdGgiKTsKICAgICAgICAkY29kZT1iYXNlNjRfZW5jb2RlKCRfUE9TVFtzY3JpcHRdKTsKICAgICAgICAkaW5keD1iYXNlNjRfZGVjb2RlKCRjb2RlKTsKICAgICAgICB3aGlsZSgkcm93PXJlYWRkaXIoJGRpcikpewogICAgICAgICRzdGFydD1AZm9wZW4oIiRyb3cvJGZpbGUiLCJ3KyIpOwogICAgICAgICRmaW5pc2g9QGZ3cml0ZSgkc3RhcnQsJGluZHgpOwogICAgICAgIGlmICgkZmluaXNoKXsKICAgICAgICAgICAgZWNobyIkaW5pJHJvdy8kZmlsZVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlY2hvICI8L3RleHRhcmVhPjxicj48YnI+PGJyPjxiPlZlcnNpIFRleHQ8L2I+PGJyPjxicj48YnI+XG4iOwogICAgICAgICRtYWlucGF0aD0kX1BPU1RbZF9kaXJdOyRmaWxlPSRfUE9TVFtkX2ZpbGVdOwogICAgICAgICRkaXI9b3BlbmRpcigiJG1haW5wYXRoIik7CiAgICAgICAgJGNvZGU9YmFzZTY0X2VuY29kZSgkX1BPU1Rbc2NyaXB0XSk7CiAgICAgICAgJGluZHg9YmFzZTY0X2RlY29kZSgkY29kZSk7CiAgICAgICAgd2hpbGUoJHJvdz1yZWFkZGlyKCRkaXIpKXskc3RhcnQ9QGZvcGVuKCIkcm93LyRmaWxlIiwidysiKTsKICAgICAgICAkZmluaXNoPUBmd3JpdGUoJHN0YXJ0LCRpbmR4KTsKICAgICAgICBpZiAoJGZpbmlzaCl7ZWNobyAnPGEgaHJlZj0iaHR0cDovLycgLiAkcm93IC4gJy8nIC4gJGZpbGUgLiAnIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovLycgLiAkcm93IC4gJy8nIC4gJGZpbGUgLiAnPC9hPjxicj4nOyB9CiAgICAgICAgfQoKICAgIH0KICAgIGVsc2VpZigkX1BPU1RbJ21hc3MnXSA9PSAnc2FidW5rYWJlaCcpIHsgZ2FzcygpOyB9CiAgICBlbHNlaWYoJF9QT1NUWydtYXNzJ10gPT0gJ2hhcHVzbWFzc2FsJykgeyBoYXB1c19tYXNzYWwoJF9QT1NUWydkX2RpciddLCAkX1BPU1RbJ2RfZmlsZSddKTsgfQogICAgZWxzZWlmKCRfUE9TVFsnbWFzcyddID09ICdzYWJ1bm1lbWF0aWthbicpIHsgZ2Fzc19hbGwoKTsgfQogICAgZWxzZWlmKCRfUE9TVFsnbWFzcyddID09ICdjaG1vZGthYmVoJykgeyBjaG1vZF9hbGwoKTsgfQogICAgZWxzZWlmKCRfUE9TVFsnbWFzcyddID09ICdtYXNzZGVmYWNlJykgewogICAgICAgIGVjaG8gIjxkaXYgc3R5bGU9J21hcmdpbjogNXB4IGF1dG87IHBhZGRpbmc6IDVweCc+IjsKICAgICAgICBzYWJ1bl9tYXNzYWwoJF9QT1NUWydkX2RpciddLCAkX1BPU1RbJ2RfZmlsZSddLCAkX1BPU1RbJ3NjcmlwdCddKTsKICAgICAgICBlY2hvICI8L2Rpdj4iOyAgfQogICAgZWxzZSB7CiAgICAgICAgZWNobyAiCiAgICAgICAgPGNlbnRlcj48Zm9udCBzdHlsZT0ndGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Jz4KICAgICAgICBTZWxlY3QgVHlwZTo8YnI+CiAgICAgICAgPC9mb250PgogICAgICAgIDxzZWxlY3QgY2xhc3M9XCJzZWxlY3RcIiBuYW1lPVwibWFzc1wiICBzdHlsZT1cIndpZHRoOiA0NTBweDtcIiBoZWlnaHQ9XCIxMFwiPgogICAgICAgIDxvcHRpb24gdmFsdWU9XCJvbmVkaXJcIj5NYXNzIERlZmFjZSAxIERpcjwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9XCJtYXNzZGVmYWNlXCI+TWFzcyBEZWZhY2UgQUxMIERpcjwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9XCJzYWJ1bmthYmVoXCI+U2FidW4gTWFzc2FsIERpIFRlbXBhdDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9XCJzYWJ1bm1lbWF0aWthblwiPlNhYnVuIE1hc3NhbCBCdW51aCBEaXJpPC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNobW9ka2FiZWhcIj5DaG1vZCBNYXNzYWw8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPVwiaGFwdXNtYXNzYWxcIj5NYXNzIERlbGV0ZSBGaWxlczwvb3B0aW9uPjwvY2VudGVyPjwvc2VsZWN0Pjxicj4KICAgICAgICA8Zm9udCBzdHlsZT0ndGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Jz5Gb2xkZXI6PC9mb250Pjxicj4KICAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZF9kaXInIHZhbHVlPSckZGlyJyBzdHlsZT0nd2lkdGg6IDQ1MHB4OycgaGVpZ2h0PScxMCc+PGJyPgogICAgICAgIDxmb250IHN0eWxlPSd0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsnPkZpbGVuYW1lOjwvZm9udD48YnI+CiAgICAgICAgPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2RfZmlsZScgdmFsdWU9JzB4LnBocCcgc3R5bGU9J3dpZHRoOiA0NTBweDsnIGhlaWdodD0nMTAnPjxicj4KICAgICAgICA8Zm9udCBzdHlsZT0ndGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Jz5JbmRleCBGaWxlOjwvZm9udD48YnI+CiAgICAgICAgPHRleHRhcmVhIG5hbWU9J3NjcmlwdCcgc3R5bGU9J3dpZHRoOiA0NTBweDsgaGVpZ2h0OiAyMDBweDsnPkhhY2tlZCBCeSAweDE5OTk8L3RleHRhcmVhPjxicj4KICAgICAgICA8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdzdGFydCcgdmFsdWU9J01hc3MgRGVmYWNlJyBzdHlsZT0nd2lkdGg6IDQ1MHB4Oyc+CiAgICAgICAgPC9mb3JtPjwvY2VudGVyPiI7CiAgICAgICAgfQogICAgfQplbHNlaWYoaXNzZXQoJF9HRVRbJ2RvJ10pICYmICgkX0dFVFsnZG8nXSA9PSAnYmMnKSl7CQoJZWNobyAnCiAgPGRpdiBpZD0iYmFjayI+CiAgICAgICAgICAgIDxoMj5CYWNrIENvbm5lY3Q8L2gyPgogICAgICAgICAgICA8cD5CYWNrIGNvbm5lY3Qgd2lsbCBhbGxvdyB5b3UgdG8gZW50ZXIgc3lzdGVtIGNvbW1hbmRzIHJlbW90ZWx5LjwvcD4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgIDx0YWJsZT4KCQkJCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgoJCQkJPHRyID48dGQ+SVAgQWRkcmVzczogPC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHRib3giIG5hbWU9ImlwIiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjNUM3Mjk2OyBjb2xvcjogIzVDNzI5NjtiYWNrZ3JvdW5kLWNvbG9yOiMxZDFkMWQ7Zm9udC1zaXplOjEzcHg7Ij48L3RkPjwvdHI+CgkJCQk8dHIgPjx0ZD5Qb3J0OiA8L3RkPjx0ZD48aW5wdXQgdHlwZT0idGV4dGJveCIgbmFtZT0icG9ydCIgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgIzVDNzI5NjsgY29sb3I6ICM1QzcyOTY7YmFja2dyb3VuZC1jb2xvcjojMWQxZDFkO2ZvbnQtc2l6ZToxM3B4OyI+PC90ZD48L3RyPgoJCQkJPHRyID48dGQ+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iYmluZCIgdmFsdWU9Ik9wZW4gQ29ubmVjdGlvbiIgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgIzVDNzI5NjsgY29sb3I6ICM1QzcyOTY7YmFja2dyb3VuZC1jb2xvcjojMWQxZDFkO2ZvbnQtc2l6ZToxM3B4OyI+PC90ZD48L3RyPgoJCQkJPC9mb3JtPgoJCQkJPC90YWJsZT4nOwogICAgICAgIGlmKGlzc2V0KCRfUE9TVFsnYmluZCddKSkKCQkJCQl7CiAgICAgICAgICAgIGVjaG8gIjxwPkF0dGVtcHRpbmcgQ29ubmVjdGlvbi4uLjwvcD4iOwogICAgICAgICAgICAkaXAgPSAkX1BPU1RbJ2lwJ107CiAgICAgICAgICAgICRwb3J0ID0gJF9QT1NUWydwb3J0J107CiAgICAgICAgICAgICRzb2NrZmQgPSBmc29ja29wZW4oJGlwICwgJHBvcnQgLCAkZXJybm8sICRlcnJzdHIgKTsKICAgICAgICAgICAgaWYoJGVycm5vICE9IDApewogICAgICAgICAgICAgIGVjaG8gIjxmb250IGNvbG9yPSdyZWQnPiRlcnJubyA6ICRlcnJzdHI8L2ZvbnQ+IjsKICAgICAgICAgICAgfSBlbHNlIGlmICghJHNvY2tmZCkgIHsKICAgICAgICAgICAgICAkcmVzdWx0ID0gIjxwPlVuZXhwZWN0ZWQgZXJyb3IgaGFzIG9jY3VyZWQsIGNvbm5lY3Rpb24gbWF5IGhhdmUgZmFpbGVkLjwvcD4iOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGZwdXRzICgkc29ja2ZkICwiCiAgICAgICAgICAgICAgICBcbnsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQogICAgICAgICAgICAgICAgXG4uLjo6IDB4U2hlbGwgdjEgLSBDb2RlZCBCeSAweDE5OTkgOjouLgogICAgICAgICAgICAgICAgXG4KICAgICAgICAgICAgICAgIFxuPT4gQmFja2Nvbm5lY3QgCiAgICAgICAgICAgICAgICBcbj0+IEJhY2sgCiAgICAgICAgICAgICAgICBcbgogICAgICAgICAgICAgICAgXG57IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI31cblxuIik7CiAgICAgICAgICAgICAgJGRpciA9IHNoZWxsX2V4ZWMoInB3ZCIpOwogICAgICAgICAgICAgICRzeXNpbmZvID0gc2hlbGxfZXhlYygidW5hbWUgLWEiKTsKICAgICAgICAgICAgICAkdGltZSA9IFNoZWxsX2V4ZWMoInRpbWUiKTsKICAgICAgICAgICAgICAkbGVuID0gMTMzNzsKICAgICAgICAgICAgICBmcHV0cygkc29ja2ZkLCAiVXNlciAiLCAkc3lzaW5mbywgImNvbm5lY3RlZCBAICIsICR0aW1lLCAiXG5cbiIpOwogICAgICAgICAgICAgIHdoaWxlKCFmZW9mKCRzb2NrZmQpKXsgJGNtZFByb21wdCA9ICdbMHhdIzo+ICc7CiAgICAgICAgICAgICAgZnB1dHMgKCRzb2NrZmQgLCAkY21kUHJvbXB0ICk7CiAgICAgICAgICAgICAgJGNvbW1hbmQ9IGZnZXRzKCRzb2NrZmQsICRsZW4pOwogICAgICAgICAgICAgIGZwdXRzKCRzb2NrZmQgLCAiXG4iIC4gc2hlbGxfZXhlYygkY29tbWFuZCkgLiAiXG5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZjbG9zZSgkc29ja2ZkKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoJCWVjaG8gIjwvcD48L2Rpdj4iOwoKfWVsc2VpZihpc3NldCgkX0dFVFsnYWN0J10pICYmICgkX0dFVFsnYWN0J10gPT0gJ2VkaXQnKSkgewoKCQlpZihpc3NldCgkX1BPU1RbJ3NhdmUnXSkpewoJCQkkZmlsZSA9ICRfUE9TVFsnc2F2ZWFzJ107CgkJCSRjb250ZW50ID0gbWFnaWNib29tKCRfUE9TVFsnY29udGVudCddKTsKCQkJaWYoJGZpbGV6ID0gQGZvcGVuKCRmaWxlLCJ3IikpewoJCQkJJHRpbWUgPSBkYXRlKCJkLU0tWSBIOmkiLHRpbWUoKSk7CgkJCQlpZihAZndyaXRlKCRmaWxleiwkY29udGVudCkpICRtc2cgPSAiZmlsZSBzYXZlZCA8c3BhbiBjbGFzcz1cImdheWFcIj5APC9zcGFuPiAiLiR0aW1lOwoJCQkJZWxzZSAkbXNnID0gImZhaWxlZCB0byBzYXZlIjsKCQkJCUBmY2xvc2UoJGZpbGV6KTsKCQkJfQoJCQllbHNlICRtc2cgPSAicGVybWlzc2lvbiBkZW5pZWQiOwoJCX0KCQlpZighaXNzZXQoJGZpbGUpKSAkZmlsZSA9ICRfR0VUWydmaWxlJ107CgkJaWYoJGZpbGV6ID0gQGZvcGVuKCRmaWxlLCJyIikpewoJCQkkY29udGVudCA9ICIiOwoJCQl3aGlsZSghZmVvZigkZmlsZXopKXsKCQkJCSRjb250ZW50IC49IGh0bWxlbnRpdGllcyhzdHJfcmVwbGFjZSgiJyciLCInIixmZ2V0cygkZmlsZXopKSk7CgkJCX0KCQkJQGZjbG9zZSgkZmlsZXopOwoJCX0KCT8+CgkJPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CgkJCTx0YWJsZSBjbGFzcz0iY21kYm94Ij4KCQkJCTx0cj4KCQkJCQk8dGQgY29sc3Bhbj0iMiI+CgkJCQkJCTx0ZXh0YXJlYSBjbGFzcz0ib3V0cHV0IiBuYW1lPSJjb250ZW50Ij4KPD9waHAgZWNobyAkY29udGVudDsgPz4KPC90ZXh0YXJlYT4KCQkJCQkJPHRyPgoJCQkJCQkJPHRkIGNvbHNwYW49IjIiPlNhdmUgYXMgPGlucHV0IGlkPSJjbWQiIGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9InNhdmVhcyIgc3R5bGU9IndpZHRoOjYwJTsiIHZhbHVlPSI8P3BocCBlY2hvICRmaWxlOyA/PiIgLz48aW5wdXQgY2xhc3M9ImlucHV0emJ1dCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2F2ZSAhIiBuYW1lPSJzYXZlIiBzdHlsZT0id2lkdGg6MTIlOyIgLz4gJm5ic3A7CgkJCQkJCQkJPD9waHAgZWNobyAkbXNnOyA/PgoJCQkJCQkJPC90ZD4KCQkJCQkJPC90cj4KCQkJPC90YWJsZT4KCQk8L2Zvcm0+CgkJPD9waHAKfQplbHNlaWYoaXNzZXQoJF9HRVRbJ2RvJ10pICYmICgkX0dFVFsnZG8nXSA9PSAnc2VydmVyaW5mbycpKXsKCQogICRzX3NhZmVtb2RlID0gaW5pX2dldCgic2FmZV9tb2RlIik7CiAgaWYoJHNfc2FmZW1vZGUgPSBUUlVFKXskc19zYWZlbW9kZSA9ICI8c3BhbiBjbGFzcz0nZW5hYmxlZCc+W09OIjt9ZWxzZXskc19zYWZlbW9kZSA9ICI8c3BhbiBjbGFzcz0nZGlzYWJsZWQnPltPRkYiOyB9CiAgaWYoZXh0ZW5zaW9uX2xvYWRlZCgnY3VybCcpKXskY3VybHM9IjxzcGFuIGNsYXNzPSdlbmFibGVkJz5bT05dPC9zcGFuPiI7fWVsc2V7JGN1cmxzPSI8c3BhbiBjbGFzcz0nZGlzYWJsZWQnPltPRkZdPC9zcGFuPiI7fQoJZWNobyAiU2VydmVyIFBvcnQ6ICIuJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10uIjxiciAvPjxiciAvPkhUVFAgQ29ubmVjdGlvbjogIi4kX1NFUlZFUlsnSFRUUF9DT05ORUNUSU9OJ10uIjxiciAvPjxiciAvPk9wZXJhdGluZyBTeXN0ZW06ICIucGhwX3VuYW1lKCkuIjxiciAvPjxiciAvPiI7CglpZihnZXRfbWFnaWNfcXVvdGVzX2dwYygpKXtlY2hvICJNYWdpYyBRdW90ZXM6IDxzcGFuIGNsYXNzPSdlbmFibGVkJz5bRU5BQkxFRF08L3NwYW4+PGJyIC8+PGJyIC8+Ijt9ZWxzZXtlY2hvICJNYWdpYyBRdW90ZXM6IDxzcGFuIGNsYXNzPSdkaXNhYmxlZCc+W0RJU0FCTEVEXTwvc3Bhbj48YnIgLz48YnIgLz4iO30KCWVjaG8gIlBIUCBWZXJzaW9uOiAiLnBocHZlcnNpb24oKS4iPGJyIC8+PGJyIC8+U2FmZSBNb2RlOiAiLiRzX3NhZmVtb2RlLiJdPC9zcGFuPjxiciAvPjxiciAvPkN1cmw6ICIuJGN1cmxzLiI8YnIgLz48YnIgLz5BY2NlcHQgRW5jb2Rpbmc6ICAiLiRfU0VSVkVSWydIVFRQX0FDQ0VQVF9FTkNPRElORyddLiI8YnIgLz48YnIgLz5BZG1pbjogIi4kX1NFUlZFUlsnU0VSVkVSX0FETUlOJ10uIjxiciAvPjxiciAvPjxzdHJvbmc+RGlzYWJsZWQgRnVuY3Rpb25zOiA8L3N0cm9uZz4iOwoJaWYoIWVtcHR5KCRkaXNhYmxlZCkpewoJZm9yZWFjaCgkZGlzYWJsZWQgYXMgJGZ1bmN0aW9uc2Rpcyl7CgkJZWNobyAkZnVuY3Rpb25zZGlzLiIsICI7Cgl9Cgl9ZWxzZXsKCQllY2hvICJub25lIjsKCX0KCWVjaG8gIjxiciAvPjxiciAvPjxzdHJvbmc+L2V0Yy9wYXNzd2Q6IDwvc3Ryb25nPiI7CglpZihpc19yZWFkYWJsZSgiL2hvbWUvZXRjL3Bhc3N3ZCIpKXsKCQllY2hvICI8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW47Jz5SZWFkYWJsZTwvc3Bhbj4iOwoJfWVsc2V7CgkJZWNobyAiPHNwYW4gc3R5bGU9J2NvbG9yOnJlZDsnPlVucmVhZGFibGU8L3NwYW4+IjsKCX0KfWVsc2VpZihpc3NldCgkX0dFVFsnZG8nXSkgJiYgKCRfR0VUWydkbyddID09ICdjbWQnKSkgewogICAgaWYoJF9QT1NUWydkb19jbWQnXSkgewogICAgICAgIGVjaG8gIjx0ZXh0YXJlYSBjbGFzcz0nYXJlYScgcm93cz0nMTUnIGNvbHM9JzYwJz4iLmV4ZSgkX1BPU1RbJ2NtZCddKS4iPC90ZXh0YXJlYT4iOwogICAgfQp9ZWxzZWlmKGlzc2V0KCRfR0VUWydkbyddKSAmJiAoJF9HRVRbJ2RvJ10gPT0gJ2Fib3V0JykpewoJCgllY2hvICIKCQk8aDQ+SW5mb3JtYXRpb248L2g0PgoJCTxwPiRzaGVsbF9uYW1lIHYkc2hlbGxfdmVyc2lvbiBOZ2VsdSBFZGl0aW9uIC0gY29kZWQgYnkgMHgxOTk5LjwvcD4iOwoKCQk/PgoJCQk8dWw+CgkJCQk8bGk+QXBwZWFyYW5jZSBDNiBTaGVsbC48L2xpPgoJCQkJPGxpPkZpbGUgTWFuYWdlciBCeSBJbmRvWHBsb2l0LjwvbGk+CgkJCQk8bGk+VGhhbmtzLjwvbGk+CgkJCTwvdWw+CgkJCTxiciAvPjxiciAvPgoJCQk8P3BocAp9ZWxzZXsKZnVuY3Rpb24gR2V0RmlsZVNpemUoJGZpbGUpewoJaWYoIWlzX2RpcigkZmlsZSkpCgkJcmV0dXJuIHJvdW5kKGZpbGVzaXplKCRmaWxlKSAvIDEwMjQsIDIpIC4gIiBLYiI7CgllbHNlCgkJcmV0dXJuICJOb3QgQXZhaWxpYmxlIjsKfQoKZnVuY3Rpb24gTGFzdE1vZGlmaWVkKCRmaWxlKXsKCQlyZXR1cm4gZGF0ZSgiRiBkIFkgZzppOnMiLCBmaWxlbXRpbWUoIiRmaWxlIikpO30KCi8vLy8vLy8vLy8vLwoKICAgIGlmKGlzX2RpcigkZGlyKSA9PSB0cnVlKSB7CiAgICAgICAgZWNobyAnPHRhYmxlICBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPjx0cj48dGQgY2xhc3M9IlRhYmxlSGVhZGVyX05hbWUiPiBGaWxlTmFtZTwvdGQ+PHRkIGNsYXNzPSJUYWJsZUhlYWRlciI+RmlsZXR5cGU8L2E+PC90ZD48dGQgY2xhc3M9IlRhYmxlSGVhZGVyIj5TaXplPC90ZD48dGQgY2xhc3M9IlRhYmxlSGVhZGVyIj5QZXJtaXNpb25zPC90ZD48dGQgY2xhc3M9IlRhYmxlTGFzdCI+TGFzdCBNb2RpZmllZDwvdGQ+PHRkIGNsYXNzPSJUYWJsZUhlYWRlcm9wdGlvbnMiPiBPcHRpb25zPC90ZD48L3RyPic7CiAgICAgICAgJHNjYW5kaXIgPSBzY2FuZGlyKCRkaXIpOwogICAgICAgIGZvcmVhY2goJHNjYW5kaXIgYXMgJGRpcngpIHsKICAgICAgICAgICAgJGR0eXBlID0gQGZpbGV0eXBlKCIkZGlyLyRkaXJ4Iik7CiAgICAgICAgICAgICRkdGltZSA9IGRhdGUoIkYgZCBZIGc6aTpzIiwgQGZpbGVtdGltZSgiJGRpci8kZGlyeCIpKTsKICAgICAgICAgICAgaWYoIWlzX2RpcigiJGRpci8kZGlyeCIpKSBjb250aW51ZTsKICAgICAgICAgICAgaWYoJGRpcnggPT09ICcuLicpIHsKICAgICAgICAgICAgICAgICRocmVmID0gZGlybmFtZSgkZGlyKTsKICAgICAgICAgICAgfSBlbHNlaWYoJGRpcnggPT09ICcuJykgewogICAgICAgICAgICAgICAgJGhyZWYgPSAkZGlyOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGhyZWYgPSAkZGlyLicvJy4kZGlyeDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZigkZGlyeCA9PSAnLicpIHsKICAgICAgICAgICAgICAgICRhY3RfZGlyID0gIjxzcGFuIGlkPVwidGl0aWsxXCI+CgkJCTxhIGhyZWY9Jz9hY3Q9ZWRpdCZkaXI9JGRpciZmaWxlPSRkaXIvbmV3ZmlsZS5waHAnPm5ld2ZpbGU8L2E+IHwgPGEgaHJlZj1cImphdmFzY3JpcHQ6dHVrYXIoJ3RpdGlrMScsJ3RpdGlrMV9mb3JtJyk7XCI+bmV3Zm9sZGVyPC9hPjwvc3Bhbj4KCQkJPGZvcm0gYWN0aW9uPVwiP2FjdD1uZXdmb2xkZXImZGlyPSRkaXJcIiBtZXRob2Q9XCJwb3N0XCIgaWQ9XCJ0aXRpazFfZm9ybVwiIGNsYXNzPVwic2VtYnVueWlcIiBzdHlsZT1cIm1hcmdpbjowO3BhZGRpbmc6MDtcIj4KCgkJCTxpbnB1dCBjbGFzcz1cImlucHV0elwiIHN0eWxlPVwid2lkdGg6MTMwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwibmV3Zm9sZGVyXCIgcGxhY2Vob2xkZXI9XCJuZXdfZm9sZGVyXCIgLz4KCQkJPGlucHV0IGNsYXNzPVwiaW5wdXR6YnV0XCIgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJuZXdfc2F2ZV9mb2xkZXJcIiBzdHlsZT1cIndpZHRoOjM1cHg7XCIgdmFsdWU9XCJHbyAhXCIgLz4KCQkJPC9mb3JtPiI7CiAgICAgICAgICAgICAgICB9CgkJCQllbHNlaWYoJGRpcnggPT0gJy4uJykKCQkJCXsKCQkJCQkkYWN0X2Rpcj0iPHNwYW4gaWQ9XCJ0aXRpazJcIj48YSBocmVmPSc/YWN0PWVkaXQmZGlyPSRkaXImZmlsZT0kZGlyL25ld2ZpbGUucGhwJz5uZXdmaWxlPC9hPiB8IDxhIGhyZWY9XCJqYXZhc2NyaXB0OnR1a2FyKCd0aXRpazInLCd0aXRpazJfZm9ybScpO1wiPm5ld2ZvbGRlcjwvYT48L3NwYW4+CgkJCTxmb3JtIGFjdGlvbj1cIj9hY3Q9bmV3Zm9sZGVyJmRpcj0kZGlyXCIgbWV0aG9kPVwicG9zdFwiIGlkPVwidGl0aWsyX2Zvcm1cIiBjbGFzcz1cInNlbWJ1bnlpXCIgc3R5bGU9XCJtYXJnaW46MDtwYWRkaW5nOjA7XCI+CgkJCQoJCQk8aW5wdXQgY2xhc3M9XCJpbnB1dHpcIiBzdHlsZT1cIndpZHRoOjEzMHB4O1wiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm5ld2ZvbGRlclwiIHBsYWNlaG9sZGVyPVwibmV3X2ZvbGRlclwiIC8+CgkJCTxpbnB1dCBjbGFzcz1cImlucHV0emJ1dFwiIHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwibmV3X3NhdmVfZm9sZGVyXCIgc3R5bGU9XCJ3aWR0aDozNXB4O1wiIHZhbHVlPVwiR28gIVwiIC8+CgkJCTwvZm9ybT4iOwoJCQkJfQoJCQkJZWxzZSB7CiAgICAgICAgICAgICAgICAkYWN0X2RpciA9ICI8YSBocmVmPVwiamF2YXNjcmlwdDp0dWthcignIi5jbGVhcnNwYWNlKCRkaXJ4KS4iX2xpbmsnLCciLmNsZWFyc3BhY2UoJGRpcngpLiJfZm9ybScpO1wiPnJlbmFtZTwvYT4gfCA8YSBocmVmPSc/YWN0PWRlbGV0ZV9kaXImZGlyPSRkaXIvJGRpcngnPmRlbGV0ZTwvYT4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8gIjx0ciBjbGFzcz0nZmlsZXRyJz4iOwogICAgICAgICAgICBlY2hvICI8dGQgY2xhc3M9J3RkX2hvbWUnPjxhIGlkPVwiIi5jbGVhcnNwYWNlKCRkaXJ4KS4iX2xpbmtcIiAgaHJlZj0nP2Rpcj0iLiRocmVmLiInPjxpbWcgc3JjPSdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFGVVNVUkJWRGlOcFpLOVNnTkJGSVhQdlhObmRqY1JvcFg0VTRrV1ZyNUFDaFU3SDhCU2ZJdEFIa0I5Q1hzclcwR3dFUXRSd1ZLTVJ0QVU4WmNZV2FObU0yT3hxeXlpWVpkY0dJYVo0Wjc3TWVlUWN3NkRGQS9VRFVBQVlISGo4aE9BVGo5b1JTZTJaMWYyS2pQMWZnTGtuTVBTNWxXMFZpNHBab3B2SFhEVytJaE9yOTlnWFR6a3I5cXZUQk10ck5kOEFzTFZjb21aS0RQNjFrRUxpaEdJSjlRQmdPMmpkc0lFL0piNU9hY0dGQXdEUUVlTUVPWm5oMUVxTUNodFNCOGE2NEJXMk1OaDdRVmloQ0dLY05Ic3dtWjBsQWtZSHhGNFFoQlBDS0lZUlU5bDYwNUttR0NFSVVZenRDWU1CZmtFakdaNE9pSHdSUUYrdmtRRytwdEFDSUZSRUpWUFFBdkZmK0Jyam95UStDWmZxcTExOERSRkVoamViYmJlbDZkR2l5VHFmK3ZTcmthUlEvMHV0TDdtSFhsOXZxK2VQM1VuYmgvSDVnREtpT0Y2N1llYlkwZFNKY1JCbTB6MnJGbDJ5V3A4QVZESVczMmRhN3BMQUFBQUFFbEZUa1N1UW1DQyc+ICAkZGlyeDwvYT4KCgoKPGZvcm0gbWV0aG9kPVwicG9zdFwiIGlkPVwiIi5jbGVhcnNwYWNlKCRkaXJ4KS4iX2Zvcm1cIiBjbGFzcz1cInNlbWJ1bnlpXCIgc3R5bGU9XCJtYXJnaW46MDtwYWRkaW5nOjA7XCI+CgkJCTxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cIm9sZG5hbWVcIiB2YWx1ZT1cIiIuJGRpcnguIlwiIHN0eWxlPVwibWFyZ2luOjA7cGFkZGluZzowO1wiIC8+CgkJCTxpbnB1dCBjbGFzcz1cImlucHV0elwiIHN0eWxlPVwid2lkdGg6MjAwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwiZm9sX3JlbmFtZVwiIHZhbHVlPVwiIi4kZGlyeC4iXCIgLz4KCQkJPGlucHV0IGNsYXNzPVwiaW5wdXR6YnV0XCIgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJkaXJfcmVuYW1lXCIgdmFsdWU9XCJyZW5hbWVcIiAvPgoJCQk8aW5wdXQgY2xhc3M9XCJpbnB1dHpidXRcIiB0eXBlPVwiYnV0dG9uXCIgbmFtZT1cImNhbmNlbFwiIHZhbHVlPVwiY2FuY2VsXCIgb25jbGljaz1cInR1a2FyKCciLmNsZWFyc3BhY2UoJGRpcngpLiJfZm9ybScsJyIuY2xlYXJzcGFjZSgkZGlyeCkuIl9saW5rJyk7XCIgLz4KCQkJPC9mb3JtPgoKCgoKCQkJPC90ZD4KCQkJCgkJCQoJCQkKCQkJIjsKICAgICAgICAgICAgZWNobyAiPHRkIGNsYXNzPSd0ZF9ob21lJz48Y2VudGVyPiRkdHlwZTwvY2VudGVyPjwvdGQ+IjsKICAgICAgICAgICAgZWNobyAiPHRkIGNsYXNzPSd0ZF9ob21lJz48Y2VudGVyPi08L2NlbnRlcj48L3RoPiI7CiAgICAgICAgICAgIGVjaG8gIjx0ZCBjbGFzcz0ndGRfaG9tZSc+PGNlbnRlcj4iLncoIiRkaXIvJGRpcngiLHBlcm1pc3Npb25zKCIkZGlyLyRkaXJ4IikpLiI8L2NlbnRlcj48L3RkPiI7CiAgICAgICAgICAgIGVjaG8gIjx0ZCBjbGFzcz0ndGRfaG9tZSc+JGR0aW1lPC90ZD4iOwogICAgICAgICAgICBlY2hvICI8dGQgY2xhc3M9J3RkX2hvbWUnIHN0eWxlPSdwYWRkaW5nLWxlZnQ6IDE1cHg7Jz4kYWN0X2RpcjwvdGQ+IjsKICAgICAgICB9CiAgICAgICAgZWNobyAiPC90cj4iOwogICAgICAgIGZvcmVhY2goJHNjYW5kaXIgYXMgJGZpbGUpIHsKICAgICAgICAgICAgJGZ0eXBlID0gZmlsZXR5cGUoIiRkaXIvJGZpbGUiKTsKICAgICAgICAgICAgJGZ0aW1lID0gZGF0ZSgiRiBkIFkgZzppOnMiLCBmaWxlbXRpbWUoIiRkaXIvJGZpbGUiKSk7CiAgICAgICAgICAgICRzaXplID0gZmlsZXNpemUoIiRkaXIvJGZpbGUiKS8xMDI0OwogICAgICAgICAgICAkc2l6ZSA9IHJvdW5kKCRzaXplLDMpOwogICAgICAgICAgICBpZigkc2l6ZSA+IDEwMjQpIHsKICAgICAgICAgICAgICAgICRzaXplID0gcm91bmQoJHNpemUvMTAyNCwyKS4gJ01CJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRzaXplID0gJHNpemUuICdLQic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoIWlzX2ZpbGUoIiRkaXIvJGZpbGUiKSkgY29udGludWU7CiAgICAgICAgICAgIGVjaG8gIjx0ciBjbGFzcz0nZmlsZXRyJz4iOwogICAgICAgICAgICBlY2hvICI8dGQgY2xhc3M9J3RkX2hvbWUnPgoJCQkKCQkJCgkJCQoJCQk8YSBpZD1cIiIuY2xlYXJzcGFjZSgkZmlsZSkuIl9saW5rXCIgaHJlZj0nP2FjdD12aWV3JmRpcj0kZGlyJmZpbGU9JGRpci8kZmlsZSc+PGltZyBzcmM9J2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFaaVMwZEVBUDhBL3dEL29MMm5rd0FBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFBZDBTVTFGQjlvSkJoY1RKdjJCMmQ0QUFBSk1TVVJCVkRqTGJaTzlUaHhaRUlXL3FsdmR0TTM4Qk5nSlFtUWdKR2QrQS9NUUJMd0dqaXdIM253ZGtTTHRPMnhFUkc1THF4WFJTSVIyWURmRDRHa0dNMFAzcmI0YjlQQXowbDdwU2xXbFcwZm5uTG9sQUlQQjRQWGg0ZUZ1bnVjQUlJTHdkRVNlWnlBaWZucDYrdTlvTkxvM2dNM056VGRIUisvL3p2Sk16U3lKS0tvZGlJZzhBWGF4ZUl6MWJEWjdNeHFOZnRnU1VSRFd5N0xVblowZFlteEFGQVZFbEk2QUVDeWdJc1FRc2l6TEJPQUJBRE9qS0FwcWg3dTdHb0NVV2l3WWJldG9VSHJyUGN3Q3FvRjJLVWVYTHpFekJ2MCt1UW1TSE1FWjlGNlNaY3I2aTRJc0JPYS9iN0hRTWFIdElBd2dMZEhhbERBMWV2MGVRYlNqckVyUXdKcHFGNGVBeC9ob3FEMTMybU1rSnJpNXVTT2xGaEVocFVRSWlvandhbU9ETnNsamZVV0NxcExuT2FhQ1NLSnRuYUJDc1pZakFsbG1YSTR2YWVvYVZYMGNiU2RobVVSM3pBS3ZOalk2VmlvbzB0V3pnRW9uS2JXK0trR1d0M1VudDBDZUdmSnM5ZytVVTByRUdISC9Idy9Nakg2L1QrUE9kRm9STktDaE0yMnhtT1Blc3BqUEdRNkhwTlEyN3Q2c0FDRFNOYW55b2xqRExFZFZhRk9MZThaa1VqSzV1a3EzdDc5bFBDNy9PRGs1R2ErWTZPNU1xeW1OdzNWMXkzaHl6ZlgwaHF2Skx5YlhGZCsrZjJkM2QwZG1zK3F2ZzRPRHo4Zkh4MC9Mc2JlMzk2NHNTNys0dUVqdW5wcW1TZTZlM0QzTjUvTjBXWmJ0bHk5ZjA5bloyWi9iMjl2MmZMRWV2dks5cXY3YzJ0b0tpOFVpaVFpcUhibTZyaVc2YTEzZm4renY3MytvcW9yaGNMZ0tVRlhWUCtmbjUyK0xvbmo4SUxKMFA4WklDQ0Y5L1BUcENsaHBCdmdQZWxvTDlVNTVOSUFBQUFBQVNVVk9SSzVDWUlJPSc+ICAkZmlsZTwvYT4KCQkKCTxmb3JtIG1ldGhvZD1cInBvc3RcIiBpZD1cIiIuY2xlYXJzcGFjZSgkZmlsZSkuIl9mb3JtXCIgY2xhc3M9XCJzZW1idW55aVwiIHN0eWxlPVwibWFyZ2luOjA7cGFkZGluZzowO1wiPgoJCTxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cIm9sZG5hbWVcIiB2YWx1ZT1cIiIuJGZpbGUuIlwiIHN0eWxlPVwibWFyZ2luOjA7cGFkZGluZzowO1wiIC8+CgkJPGlucHV0IGNsYXNzPVwiaW5wdXR6XCIgc3R5bGU9XCJ3aWR0aDoyMDBweDtcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJyZW5hbWVcIiB2YWx1ZT1cIiIuJGZpbGUuIlwiIC8+CgkJPGlucHV0IHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwiZG9fcmVuYW1lXCIgdmFsdWU9XCJyZW5hbWVcIiAvPgoJCTxpbnB1dCBjbGFzcz1cImlucHV0emJ1dFwiIHR5cGU9XCJidXR0b25cIiBuYW1lPVwiY2FuY2VsXCIgdmFsdWU9XCJjYW5jZWxcIiBvbmNsaWNrPVwidHVrYXIoJyIuY2xlYXJzcGFjZSgkZmlsZSkuIl9mb3JtJywnIi5jbGVhcnNwYWNlKCRmaWxlKS4iX2xpbmsnKTtcIiAvPgoJPC9mb3JtPgoJCQkKCQkJCgkJCQoJCQkiOwogICAgICAgICAgICBlY2hvICI8dGQgY2xhc3M9J3RkX2hvbWUnPjxjZW50ZXI+JGZ0eXBlPC9jZW50ZXI+PC90ZD4iOwogICAgICAgICAgICBlY2hvICI8dGQgY2xhc3M9J3RkX2hvbWUnPjxjZW50ZXI+JHNpemU8L2NlbnRlcj48L3RkPiI7CiAgICAgICAgICAgIGVjaG8gIjx0ZCBjbGFzcz0ndGRfaG9tZSc+PGNlbnRlcj4iLncoIiRkaXIvJGZpbGUiLHBlcm1pc3Npb25zKCIkZGlyLyRmaWxlIikpLiI8L2NlbnRlcj48L3RkPiI7CiAgICAgICAgICAgIGVjaG8gIjx0ZCBjbGFzcz0ndGRfaG9tZSc+JGZ0aW1lPC90ZD4iOwogICAgICAgICAgICBlY2hvICI8dGQgY2xhc3M9J3RkX2hvbWUnIHN0eWxlPSdwYWRkaW5nLWxlZnQ6IDE1cHg7Jz48YSBocmVmPSc/YWN0PWVkaXQmZGlyPSRkaXImZmlsZT0kZGlyLyRmaWxlJz5lZGl0PC9hPiB8IDxhIGhyZWY9XCJqYXZhc2NyaXB0OnR1a2FyKCciLmNsZWFyc3BhY2UoJGZpbGUpLiJfbGluaycsJyIuY2xlYXJzcGFjZSgkZmlsZSkuIl9mb3JtJyk7XCI+cmVuYW1lPC9hPiB8IDxhIGhyZWY9Jz9hY3Q9ZGVsZXRlJmRpcj0kZGlyJmZpbGU9JGRpci8kZmlsZSc+ZGVsZXRlPC9hPiB8IDxhIGhyZWY9Jz9hY3Q9ZG93bmxvYWQmZGlyPSRkaXImZmlsZT0kZGlyLyRmaWxlJz5kb3dubG9hZDwvYT48L3RkPiI7CiAgICAgICAgfQogICAgICAgIGVjaG8gIjwvdHI+PC90YWJsZT4iOwogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICI8Zm9udCBjb2xvcj1yZWQ+Y2FuJ3Qgb3BlbiBkaXJlY3Rvcnk8L2ZvbnQ+IjsKICAgIH0KICAgIAoKCQkKCT8+PC90YWJsZT4KCQkJCTxkaXYgc3R5bGU9ImJhY2tncm91bmQ6IzI4MjgyODtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7LW1vei1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7LW1vei1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjRweDstd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2hlaWdodDoyNXB4O21hcmdpbjowcHggMHB4IDEwcHggMHB4O3dpZHRoOjEwMDBweDsiPgoJCQkJCTxjZW50ZXI+CgkJCQkJCUNvcHlyaWdodCCpIDIwMTcgLSAweDE5OTkgPC9kaXY+CQkJCTwvYm9keT4KCgk8L2h0bWw+CgoJCQkJPD9waHAKCQp9CkBvYl9mbHVzaCgpOwkJCg== |
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0093 ]-- |