Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php $OOO000000 = urldecode('%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64');$GLOBA..
Decoded Output download
<?php $OOO000000 = urldecode('%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64');$GLOBALS['OOO0000O0'] = $OOO000000[4] . $OOO000000[9] . $OOO000000[3] . $OOO000000[5] . $OOO000000[2] . $OOO000000[10] . $OOO000000[13] . $OOO000000[16];$GLOBALS['OOO0000O0'] .= $GLOBALS['OOO0000O0'][3] . $OOO000000[11] . $OOO000000[12] . $GLOBALS['OOO0000O0'][7] . $OOO000000[5];$GLOBALS['O0O00OO00'] = $OOO000000[0] . $OOO000000[8] . $OOO000000[5] . $OOO000000[9] . $OOO000000[16];$GLOBALS['OOO000O00'] = $OOO000000[0] . $OOO000000[12] . $OOO000000[7] . $OOO000000[5] . $OOO000000[15];$GLOBALS['OOO00000O'] = $OOO000000[3] . $OOO000000[14] . $OOO000000[8] . $OOO000000[14] . $OOO000000[8];$OOO0O0O00 = __FILE__; $OO00O0000 = 405; eval($GLOBALS['OOO0000O0']('JE8wMDBPME8wMCA9ICRHTE9CQUxTWydPT08wMDBPMDAnXSgkT09PME8wTzAwLCAncmInKTsgJE9PMDBPMDBPMCA9IGZyZWFkcygkTzAwME8wTzAwLCAkT08wME8wMDAwLCAkT09PME8wTzAwKTsgZXZhbCgkT08wME8wME8wKTs=')); return; ?>Zklpa3FJZigncnRPZ2F0SFMnKSBNTiBJV2tVKCdBUiBma1RJRlUgcEZUa2hVIEVGRklwcCBFbW1SdklmJyk7CgpGbUVwcCAzY19vUnFVVFJtbUlUIElXVUlxZnAgb0tfb1JxVVRSbW1JVCB7CgogICAgaHVlbWtGIGVSUm0gJGlUUnFVSXFmIAkJCT0gaUVtcEk7CiAgICBodWVta0YgRVRURXcgJG1FcUp1RUpJIAkJCT0gWydmSWlFdW1VJyA9PiAnVmsnLCAnRnVUVElxVScgPT4gJ1ZrJywgJ21rcFUnID0+IFsnVmsnID0+IFsnbUVlSW0nID0+ICdIa+G6v3FKIEJr4buHVSddXV07CiAgICBodWVta0YgRVRURXcgJFVFV1JxUlF3ICAgICAgICAgID0gWydta3BVX0ZFVScgPT4gW10sICdta3BVX2hScFUnID0+IFtdLCAnbWtwVV9oUnBVX2ZJVUVrbScgPT4gW10sICdta3BVX0ZFVUlfZklVRWttJyA9PiBbXV07CiAgICBodWVta0YgRVRURXcgJEpFbW1JVHdNaFVrUnFwICAgID0gWydKRW1tSVR3JyA9PiBbXSwgJ1JlTElGVScgPT4gW11dOwogICAgaHVlbWtGIEVUVEV3ICRobXVKa3FwICAgICAgICAgICA9IFsnRUZVa1ZJJyA9PiBbXV07CiAgICBodWVta0YgRVRURXcgJEVMRVcgCQkJCT0gWydxUmhUa1YnID0+IFtdLCAnbVJKa3EnID0+IFtdLCAnRWZRa3EnID0+IFtdXTsKICAgIGh1ZW1rRiBFVFRFdyAkVWpJUUlNaFVrUnFwIAkJPSBbJ0pUUnVoJyA9PiBbXSwgJ1JoVWtScScgPT4gW11dOwogICAgaHVlbWtGIEVUVEV3ICRmRVVFICAgICAJCQk9IFtdOwogICAgaHVlbWtGIEVUVEV3ICRwalJUVW9SZkkgCQk9IFtdOwogICAgaHVlbWtGIEVUVEV3ICR2a2ZKSVVuRXBqZVJFVGYgCT0gW107CiAgICBodWVta0YgRVRURXcgJEVmUWtxQUVWIAkJCT0gW107CiAgICBodWVta0YgRVRURXcgJEVmUWtxQUVWT3VlIAkJPSBbXTsKICAgIGh1ZW1rRiBRa1dJZiAkcHdwVUlRIAkJICAgID0gW107CiAgICBodWVta0YgRVRURXcgJFFJcXVNaFVrUnFwIAkJPSBbXTsKICAgIGh1ZW1rRiBFVFRFdyAkcUVWa0pFVWtScSAJICAgID0gW107CiAgICBodWVta0YgRVRURXcgJHZrZkpJVSAJCQk9IFtdOwogICAgaHVlbWtGIEVUVEV3ICRwa2ZJZUVUIAkJCT0gW107CiAgICBodWVta0YgRVRURXcgJFFJVUVyUlcgICAgICAgICAgID0gW107CiAgICBodWVta0YgUWtXSWYgJFRSbUlwICAgICAgICAgICAgID0gW107CiAgICBodWVta0YgRVRURXcgJEZSbSAgICAgICAgICAgICAgID0gW107CiAgICBodWVta0YgMlJUUXRmUWtxICRFZlFrcTJSVFE7CiAgICBodWVta0YgUWtXSWYgJEZFVUlId2hJICAgICAgICAgID0gJyc7CiAgICBodWVta0YgUWtXSWYgJGhScFVId2hJICAgICAgICAgID0gJyc7CiAgICBodWVta0YgcFVUa3FKICR1VG1Id2hJICAgICAgICAgID0gJyc7CiAgICBodWVta0YgSElRaG1FVUkgJFVJUWhtRVVJOwoKICAgIGl1cUZVa1JxIF9fRlJxcFVUdUZVKCQzTW5QNmcgPSAnZUVGbElxZicpIHsKCiAgICAgICAgaEVUSXFVOjpfX0ZScXBVVHVGVSgpOwoKICAgICAgICAkVWprcC0+ZkVVRVsnRmsnXSA9ICZKSVVfa3FwVUVxRkkoKTsKCiAgICAgICAgJFVqa3AtPmlUUnFVSXFmID0gISgoJDNNblA2ZyA9PSAnZUVGbElxZicpKTsKCiAgICAgICAgJFVqa3AtPkZqSUZsKCk7CgogICAgICAgIGZSX0VGVWtScSgnZUlpUlRJNlJFZicpOwoKICAgICAgICAkVWprcC0+bVJFZigpOwoKICAgICAgICBmUl9FRlVrUnEoJ2txa1UnKTsKCiAgICAgICAga2koJDNNblA2ZyA9PSAnZUVGbElxZicpIHsKICAgICAgICAgICAgJFVqa3AtPmZFVUVbJ0pUUnVoJ10gCT0gJFVqa3AtPlRSdVVJVC0+aUlVRmpfRm1FcHAoKTsKICAgICAgICAgICAgJFVqa3AtPmZFVUVbJ0VGVWtWSSddIAk9ICRVamtwLT5mRVVFWydKVFJ1aCddOwogICAgICAgICAgICAkVWprcC0+ZkVVRVsnUVJmdW1JJ10gICA9ICRVamtwLT5mRVVFWydKVFJ1aCddOwogICAgICAgICAgICAkVWprcC0+RkVVSUh3aEkgICAgIAk9IE5Jc3VJcFU6OkpJVSgnRkVVSV9Vd2hJJyk7CiAgICAgICAgICAgICRVamtwLT5oUnBVSHdoSSAgICAgCT0gTklzdUlwVTo6SklVKCdoUnBVX1V3aEknKTsKICAgICAgICAgICAga2koIUlRaFV3KCRVamtwLT5oUnBVSHdoSSkgJiYgSVFoVXcoJFVqa3AtPkZFVUlId2hJKSkgewogICAgICAgICAgICAgICAgJGhScFVId2hJID0gSEVXUnFSUXc6OkpJVWFScFUoJFVqa3AtPmhScFVId2hJKTsKICAgICAgICAgICAgICAgIGtpKGtwcElVKCRoUnBVSHdoSVsnRkVVSV9Vd2hJJ10pKSAkVWprcC0+RkVVSUh3aEkgPSAkaFJwVUh3aElbJ0ZFVUlfVXdoSSddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGtpKCRVamtwLT5GRVVJSHdoSSAhPSBxdW1tICYmICRVamtwLT5oUnBVSHdoSSAhPSBxdW1tKSAkVWprcC0+dVRtSHdoSSA9ICc/RkVVSV9Vd2hJPScuJFVqa3AtPkZFVUlId2hJLicmaFJwVV9Vd2hJPScuJFVqa3AtPmhScFVId2hJOwogICAgICAgICAgICBraSgkVWprcC0+RkVVSUh3aEkgIT0gcXVtbSAmJiAkVWprcC0+aFJwVUh3aEkgPT0gcXVtbSkgJFVqa3AtPnVUbUh3aEkgPSAnP0ZFVUlfVXdoST0nLiRVamtwLT5GRVVJSHdoSTsKICAgICAgICAgICAga2koJFVqa3AtPkZFVUlId2hJID09IHF1bW0gJiYgJFVqa3AtPmhScFVId2hJICE9IHF1bW0pICRVamtwLT51VG1Id2hJID0gJz9oUnBVX1V3aEk9Jy4kVWprcC0+aFJwVUh3aEk7CiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBqUlJsIEVmUWtxX2txVQogICAgICAgICAgICAgKiBAcGtxSkkgeS54LnoKICAgICAgICAgICAgICovCiAgICAgICAgICAgIGZSX0VGVWtScSgnRWZRa3Ffa3FrVScpOwogICAgICAgICAgICBmUl9FRlVrUnEoJ0ZtSV9mRXBqZVJFVGZfcElVdWgnKTsKICAgICAgICAgICAgZlJfRUZVa1JxKCdGbUlfZkVwamVSRVRmX1RJUVJWSScpOwogICAgICAgICAgICAvL1VJUWhtRVVJCiAgICAgICAgICAgICRVamtwLT5VSVFobUVVSS0+cElVQUVRSSgnZUVGbElxZicpOwogICAgICAgIH0KCiAgICAgICAga2koJDNNblA2ZyA9PSAnaVRScVVJcWYnKSB7CiAgICAgICAgICAgICRVamtwLT5mRVVFWydRUmZ1bUknXSAgID0gJFVqa3AtPlRSdVVJVC0+aUlVRmpfRm1FcHAoKTsKICAgICAgICAgICAgNkVxSnVFSkk6Om1SRWYoKTsKICAgICAgICAgICAgJFVqa3AtPlVJUWhtRVVJLT5wSVVBRVFJKE1oVWtScTo6SklVKCdVaklRSV9GdVRUSXFVJykpOwogICAgICAgICAgICAkRlFwX3BVRVV1cCA9IE1oVWtScTo6SklVKCdGUXBfcFVFVXVwJywgJ2h1ZW1rRicpOwogICAgICAgICAgICBraSgkRlFwX3BVRVV1cCA9PSAnRm1ScEknICYmICFISVFobUVVSTo6a3BhRUpJKCdqUlFJX0ZtUnBJJykpIFRJZmtUSUZVKCdGbVJwSScpOwogICAgICAgICAgICBraSgkRlFwX3BVRVV1cCA9PSAnRm1ScEktalJRSScgJiYgSElRaG1FVUk6OmtwYUVKSSgnalJRSV9rcWZJVycpICYmICFISVFobUVVSTo6a3BhRUpJKCdqUlFJX0ZtUnBJJykpIHsKICAgICAgICAgICAgICAgIGtpKFBUbTo6cElKUUlxVShZKSA9PSAnJykgVElma1RJRlUoJ0ZtUnBJJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAga2koJEZRcF9wVUVVdXAgPT0gJ2hFcHB2UlRmJyAmJiAhSElRaG1FVUk6OmtwYUVKSSgnalJRSV9oRXBwdlJUZicpKSB7CiAgICAgICAgICAgICAgICBraSgha3BwSVUoJF9PZ09PS01BWydGUXBfRm1ScElfaEVwcHZSVGYnXSkpIFRJZmtUSUZVKCdoRXBwdlJUZicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBqSUVmSVQoJ0ZRcC1xRVFJOiBPbGttbWZSJyk7CgogICAgICAgIGpJRWZJVCgnRlFwLVZJVHBrUnE6ICcuRlFwOjpWSVRwa1JxKCkpOwoKICAgICAgICBraSghUUlValJmX0lXa3BVcCgncGxmX3BJRnVUa1V3JywgJ1RJZmtUSUZVNlJKa3EnKSkgZmtJOwoKICAgICAgICBraSghUUlValJmX0lXa3BVcCgncGxmX3BJRnVUa1V3JywgJ0VGRklwcE5rSmpVcCcpKSBma0k7CgogICAgICAgICRVamtwLT5wbGZfcElGdVRrVXctPlRJZmtUSUZVNlJKa3EoKTsKCiAgICAgICAgJFVqa3AtPnBsZl9wSUZ1VGtVdy0+RUZGSXBwTmtKalVwKCk7CiAgICB9CgogICAgaXVxRlVrUnEgRmpJRmwoKSB7CgogICAgICAgIEptUmVFbSAkVElzdWtUSWZfaGpoX1ZJVHBrUnE7CgogICAgICAgICRoamhfVklUcGtScV9GdVRUSXFVID0gaGpoVklUcGtScSgpOwoKICAgICAgICAkaGpoX0Z1VFRJcVUgPSBJV2htUmZJKCcuJywgJGhqaF9WSVRwa1JxX0Z1VFRJcVUgKTsKCiAgICAgICAgJGhqaF9WSVRwa1JxID0gSVdobVJmSSgnLicsICRUSXN1a1RJZl9oamhfVklUcGtScSApOwoKICAgICAgICAkSVRUUlRfaGpoID0gJ2Fqa8OqcSBl4bqjcSBhU2EgRuG7p0UgZeG6oXEgRuG6p3EgccOicUogRuG6pWggbcOqcSBoamvDqnEgZeG6o3EgPGU+Jy4kVElzdWtUSWZfaGpoX1ZJVHBrUnEuJzwvZT4gxJHhu4MgdkllcGtVSSBGw7MgVWrhu4MgVuG6rXEgasOgcWouIGhqa8OqcSBl4bqjcSBqa+G7g3EgVeG6oWsgRuG7p0UgZeG6oXEgbcOgICcuJGhqaF9WSVRwa1JxX0Z1VFRJcVU7CgogICAgICAgICRJVFRSVF9qSUVmID0gJzbhu5ZLIGFTYSBCZ05PS01BJzsKCiAgICAgICAga2koJGhqaF9GdVRUSXFVW3hdIDwgJGhqaF9WSVRwa1JxW3hdKSB7CiAgICAgICAgICAgIHBqUnZfSVRUUlQoJElUVFJUX2hqaCwgNHh4LCAkSVRUUlRfaklFZik7CiAgICAgICAgfQoKICAgICAgICBraSgkaGpoX0Z1VFRJcVVbeF0gPT0gJGhqaF9WSVRwa1JxW3hdICYmICRoamhfRnVUVElxVVtZXSA8ICRoamhfVklUcGtScVtZXSkgewogICAgICAgICAgICBwalJ2X0lUVFJUKCRJVFRSVF9oamgsIDR4eCwgJElUVFJUX2pJRWYpOwogICAgICAgIH0KCiAgICAgICAga2koIWl1cUZVa1JxX0lXa3BVcCgnRnVUbV9WSVRwa1JxJykpIHsKICAgICAgICAgICAgcGpSdl9JVFRSVCgnRlBONiBrcCBBTUggPHBoRXEgcFV3bUk9XCJGUm1SVDpUSWZcIj5rcXBVRW1tSWY8L3BoRXE+IFJxIFVqa3AgcElUVklUJywgNHh4LCAnNuG7lksgb1BONiAzTW4nKTsKICAgICAgICB9CiAgICB9CgogICAgaXVxRlVrUnEgbVJFZigpIHsKCiAgICAgICAgJFVqa3AtPm1SRWYtPmpJbWhJVChbJ3BJRnVUa1V3JywgJ1VJUWhtRVVJJywgJ2ZFVUVlRXBJJywgJ0ZSUVFScScsICdFTEVXJywnUUlxdScsICdVRVdScVJRdycsICdRSVVFZVJXJywgJ0lRRWttJywgJ2hScFUnLCAnaEVKSScsICd1cElUJywnSkVtbUlUdycsICdwVVQnLCAnRVRUJywgJ3BJVFZrRkknLCAncHVoaFJUVV9SbWYnLCAnaEVKa3FFVWtScSddKTsKCiAgICAgICAgJFVqa3AtPm1SRWYtPm1rZVRFVHcoWydwbGZfcElGdVRrVXcnLCAnZ1FFa21TRXFmbUlUJywgJzJSVFF0ZlFrcScsICcyUlRRcnVrbWZJVCcsICdVSVFobUVVSScsICdwbGZfbWtwVV9VRWVtSScsICdGRVRVJywgJ3BsZl9JVFRSVCcsICdwbGZfVFJtSXAnXSk7CgogICAgICAgICRVamtwLT5tUkVmLT5mVGtWSVQoJ0ZFRmpJJywgRVRURXcoJ0VmRWhVSVQnID0+ICdpa21JJykpOwoKICAgICAgICAkVWprcC0+VFJtSXAgPSBxSXYgTzFuX05SbUlwKCk7CgogICAgICAgIC8vNlJFZiBVasO0cUogVWtxIHZrZkpJVQogICAgICAgIGtpKEBpa21JX0lXa3BVcCgyb2F0SFMudGFhYXRIUy4nbWtlVEVUa0lwL3ZrZkpJVS5oamgnKSkKICAgICAgICAgICAgVElzdWtUSV9ScUZJKDJvYXRIUy50YWFhdEhTLidta2VURVRrSXAvdmtmSklVLmhqaCcpOwoKICAgICAgICAvLzZSRWYgVWrDtHFKIFVrcSBRSXF1CiAgICAgICAga2koQGlrbUlfSVdrcFVwKDJvYXRIUy50YWFhdEhTLidta2VURVRrSXAvdkVtbElUX3FFVl9RSXF1LmhqaCcpKQogICAgICAgICAgICBUSXN1a1RJX1JxRkkoMm9hdEhTLnRhYWF0SFMuJ21rZVRFVGtJcC92RW1sSVRfcUVWX1FJcXUuaGpoJyk7CgogICAgICAgIC8vNlJFZiBVasO0cUogVWtxIHB3cFVJUQogICAgICAgIGtpKEBpa21JX0lXa3BVcChhRVVqOjpFZlFrcSgnL0ZScWlrSi5oamgnLCBVVHVJKSkpIHsKICAgICAgICAgICAgVElzdWtUSV9ScUZJIGFFVWo6OkVmUWtxKCcvRlJxaWtKLmhqaCcsIFVUdUkpOwogICAgICAgIH0KCiAgICAgICAgJFVqa3AtPm1SRWZNaFVrUnFwKCk7CgogICAgICAgIC8vbVJFZiBobXVKa3EKICAgICAgICAkVWprcC0+aG11SmtxcFsnRUZVa1ZJJ10gPSBNaFVrUnE6OkpJVSgnaG11SmtxX0VGVWtWSScsIFtdICk7CgogICAgICAgICRVamtwLT5tUkVmLT5ta2VURVR3KCdobXVKa3EnKTsKCiAgICAgICAgJFVqa3AtPmhtdUprcS0+bVJFZigpOwoKICAgICAgICAvL21SRWYgVWrDtHFKIFVrcSBVSVFobUVVSQogICAgICAgIGtpKCRVamtwLT5mRVVFWydVSVFobUVVSSddLT5JV2twVSgpKSB7CgogICAgICAgICAgICBUSXN1a1RJX1JxRkkgYUVVajo6VWpJUUkoJy9GUnFpa0ouaGpoJywgVVR1SSk7CgogICAgICAgICAgICAkcGtmSWVFVCA9IGJrZkpJVTo6SklVcChHVDo6cElVKCdVSVFobUVVSScsICRVamtwLT5mRVVFWydVSVFobUVVSSddLT5xRVFJKS0+UlRmSVRydygnUlRmSVQnKSk7CgogICAgICAgICAgICBpUlRJRUZqICgkcGtmSWVFVCBFcCAkdmtmSklVKSB7CiAgICAgICAgICAgICAgICAkVWprcC0+VUlRaG1FVUktPkpJVWJrZkpJVSgkdmtmSklVLT52a2ZKSVVfa2YpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkVWprcC0+VWpJUUlNaFVrUnEoKTsKCiAgICAgICAgLy82UkVmIEhqw7RxSiBVa3EgdXBJVAogICAgICAgIGtpKHR1VWo6OkZqSUZsKCkpICRVamtwLT5mRVVFWyd1cElUJ10gPSB0dVVqOjp1cElUKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBbT3dwVUlRIDZSRWYgRsOhRiBG4bqldSBqw6xxaiBq4buHIFVq4buRcUogVVRScUogZeG6o3FKIHB3cFVJUV0KICAgICAqLwogICAgaHVlbWtGIGl1cUZVa1JxIG1SRWZNaFVrUnFwKCkgewogICAgICAgICRVamtwLT5wd3BVSVEgPSAoUmVMSUZVKW9FRmpJU0VxZm1JVDo6SklVKCdwd3BVSVEnKTsKICAgICAgICAkVWprcC0+ZkVVRVsnVUlRaG1FVUknXSA9IHFJdiBVSVFobUVVSShNaFVrUnE6OkpJVSgnVWpJUUlfRnVUVElxVScpKTsKICAgICAgICAkVWprcC0+ZkVVRVsncHdwVUlRJ10gPSAkVWprcC0+cHdwVUlROwogICAgfQoKICAgIGh1ZW1rRiBpdXFGVWtScSBVaklRSU1oVWtScSgpIHsKCiAgICAgICAgZlJfRUZVa1JxKCdVaklRSV9SaFVrUnFfcElVdWgnKTsKCiAgICAgICAgLy9GasawRSAya21JZiBSaFVrUnEgVVRScUogVWpJUUkKICAgICAgICAkUmhVa1JxcDJrSW1mCT0gJFVqa3AtPlVqSVFJTWhVa1JxcFsnUmhVa1JxJ107CgogICAgICAgIC8vVeG6oVIgVkVtdUkgRmpSIEbDoUYgUmhVa1JxIEZqxrBFIEbDsyBWRW11SSBR4bq3RiDEkeG7i3FqCiAgICAgICAgaVJUSUVGaiAoJFJoVWtScXAya0ltZiBFcCAkbEl3ID0+ICRWRW11SSkgewogICAgICAgICAgICAkZklpRXVtVSAJCQkJCT0gRVRURXcoJ1ZFbXVJJyA9PiAnJyk7CiAgICAgICAgICAgICRSaFVrUnFwMmtJbWZbJGxJd10JCQk9IEVUVEV3X1FJVEpJKCRmSWlFdW1VLCAkVkVtdUkpOwogICAgICAgICAgICAkUmhVa1JxcEJFbXVJWyRWRW11SVsnaWtJbWYnXV0gPSAkUmhVa1JxcDJrSW1mWyRsSXddWydWRW11SSddOwogICAgICAgIH0KCiAgICAgICAgLy9t4bqldyBm4buvIG1r4buHdSBVaklRSU1oVWtScXAKICAgICAgICAkVWpJUUlNaFVrUnFwID0gKEVUVEV3KU1oVWtScTo6SklVKCdVaklRSV9SaFVrUnEnKTsKCiAgICAgICAgLy9x4bq/dSBVaklRSV9SaFVrUnEgRmrGsEUgRsOzIEprw6EgVVThu4sgVWrDrCBKw6FxIEprw6EgVVThu4sgUeG7m2sgVsOgUgogICAgICAgIGtpKCFqRVZJX2hScFVwKCRVaklRSU1oVWtScXApKSAkVWpJUUlNaFVrUnFwID0gW107CgogICAgICAgICRVamtwLT5wd3BVSVEgPSAoUmVMSUZVKUVUVEV3X1FJVEpJKChFVFRFdykkVWprcC0+cHdwVUlRLCAkVWpJUUlNaFVrUnFwKTsKCiAgICAgICAgLy9sa+G7g1EgVVRFIEbDsyBXdeG6pVUgamvhu4dxIFJoVWtScSBR4bubayBqRXcgV8OzRSBSaFVrUnEgakV3IGxqw7RxSgogICAgICAgIGlSVElFRmogKCRSaFVrUnFwMmtJbWYgRXAgJGxJdyA9PiAkVkVtdUkpIHsKICAgICAgICAgICAga2koIWtwcElVKCRVamtwLT5wd3BVSVEtPnskVkVtdUlbJ2lrSW1mJ119KSkgewogICAgICAgICAgICAgICAgJFVqa3AtPnB3cFVJUS0+eyRWRW11SVsnaWtJbWYnXX0gPSAkVkVtdUlbJ1ZFbXVJJ107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRVamtwLT5mRVVFWydwd3BVSVEnXSA9ICRVamtwLT5wd3BVSVE7CiAgICB9CgogICAgaHVlbWtGIGl1cUZVa1JxIEZUSUVVMlJUUSgkZkVVRSA9IFtdKSB7CgogICAgICAgICRGbUVwcCA9IChJUWhVdygkZkVVRVsnRm1FcHAnXSkpID8gJFVqa3AtPlRSdVVJVC0+aUlVRmpfRm1FcHAoKSA6ICRmRVVFWydGbUVwcCddOwoKICAgICAgICAkRWZRa3EyUlRRID0gcUl2IDJSVFF0ZlFrcSgpOwoKICAgICAgICAkRWZRa3EyUlRRLT5tRXFKCiAgICAgICAgICAgIC0+RWZmMFRSdWgoJ2txaVInLCdIasO0cUogSGtxJyk7CgogICAgICAgICRFZlFrcTJSVFEtPm1FcUotPkpUUnVoKCdrcWlSJykKICAgICAgICAgICAgLT5FZmYya0ltZjZFcUooJ1VrVW1JJywgJ1VJV1UnLCBbJ21FZUltJyA9PiAnSGvDqnUgxJHhu4EnLCAncVJVSScgPT4gJ0hrw6p1IMSR4buBIMSRxrDhu6NGIG3huqV3IG3DoFEgVWrhursgU1knXSkKICAgICAgICAgICAgLT5FZmYya0ltZjZFcUooJ0lXRklUaFUnLCAndndwa3Z3Si1walJUVScsIFsnbUVlSW0nID0+ICdIw7NRIFXhuq9VJ10pCiAgICAgICAgICAgIC0+RWZmMmtJbWY2RXFKKCdGUnFVSXFVJywgJ3Z3cGt2d0onLCBbJ21FZUltJyA9PiAnQeG7mWsgZnVxSiddKTsKCiAgICAgICAgJEVmUWtxMlJUUS0+VGtKalUKICAgICAgICAgICAgLT5FZmYwVFJ1aCgnUUlma0UnLCczSWZrRScpCiAgICAgICAgICAgIC0+RWZmMmtJbWYoJ2tRRUpJJywgJ2tRRUpJJywgWydtRWVJbScgPT4gJ1PDrHFqIOG6o3FqJ10pOwoKICAgICAgICAkRWZRa3EyUlRRLT5Ua0pqVQogICAgICAgICAgICAtPkVmZjBUUnVoKCdwSVInLCdPSVInKQogICAgICAgICAgICAtPkVmZjJrSW1mKCdwbXVKJywgJ1VJV1UnLCBbJ21FZUltJyA9PiAnT211SiddKQogICAgICAgICAgICAtPkVmZjJrSW1mKCdwSVJfVWtVbUknLCAnVUlXVScsIFsnbUVlSW0nID0+ICczSVVFIFVrVW1JJ10pCiAgICAgICAgICAgIC0+RWZmMmtJbWYoJ3BJUl9sSXd2UlRmcCcsICdVSVdVJywgWydtRWVJbScgPT4gJzNJVUUgMUl3dlJUZiddKQogICAgICAgICAgICAtPkVmZjJrSW1mKCdwSVJfZklwRlRraFVrUnEnLCAnVUlXVUVUSUUnLCBbJ21FZUltJyA9PiAnM0lVRSBuSXBGVGtoVWtScSddKTsKCiAgICAgICAgJEVmUWtxMlJUUS0+VGtKalUKICAgICAgICAgICAgLT5FZmYwVFJ1aCgnVWpJUUknLCcwa0VSIG5r4buHcScpCiAgICAgICAgICAgIC0+RWZmMmtJbWYoJ1VqSVFJX21Fd1J1VScsICdwSW1JRlUnLCBbJ21FZUltJyA9PiAnSElRaG1FVUkgNkV3UnVVJywgJ1JoVWtScXAnID0+IEhJUWhtRVVJOjpKSVU2a3BVNkV3UnVVKCldKQogICAgICAgICAgICAtPkVmZjJrSW1mKCdVaklRSV9Wa0l2JywgJ3BJbUlGVScsIFsnbUVlSW0nID0+ICdISVFobUVVSSBCa0l2JywgJ1JoVWtScXAnID0+IEhJUWhtRVVJOjpKSVU2a3BVQmtJdigpXSk7CgogICAgICAgICRwdWhoUlRVMFRSdWggPSBbXTsKCiAgICAgICAgJHB1aGhSVFUya0ltZiA9IFtdOwoKICAgICAgICBwdmtVRmogKCRGbUVwcCkgewogICAgICAgICAgICBGRXBJICdoRUpJJzoKICAgICAgICAgICAgICAgICRFZlFrcTJSVFEtPnBJVWFFVEVRcCgnVElma1RJRlUnLCBQTjZfdG4zS0EuJy9oRUpJL0lma1Uve2tmfScpOwogICAgICAgICAgICAgICAgJHB1aGhSVFUwVFJ1aCA9IFsncElSJywgJ1VqSVFJJ107CiAgICAgICAgICAgICAgICAkcHVoaFJUVTJrSW1mID0gWydGUnFVSXFVJywgJ3BJUl9Va1VtSScsICdwSVJfbEl3dlJUZnAnLCAncElSX2ZJcEZUa2hVa1JxJywgJ1VqSVFJX21Fd1J1VScsICdVaklRSV9Wa0l2J107CiAgICAgICAgICAgICAgICAkRWZRa3EyUlRRID0gRWhobXdfaWttVUlUcCgiUUVxRUpJX2hFSklfa3FodVUiLCAkRWZRa3EyUlRRKTsKICAgICAgICAgICAgICAgIGVUSUVsOwogICAgICAgICAgICBGRXBJICdoUnBVX0ZFVUlKUlRrSXAnOgogICAgICAgICAgICAgICAgJFVqa3AtPkZFVUlId2hJID0gKElRaFV3KCRVamtwLT5GRVVJSHdoSSkpID8gJ2hScFVfRkVVSUpSVGtJcCcgOiAkVWprcC0+RkVVSUh3aEk7CiAgICAgICAgICAgICAgICAkVUVXUnFSUXcgPSBIRVdScVJRdzo6SklVb0VVSUpSVHcoJFVqa3AtPkZFVUlId2hJKTsKICAgICAgICAgICAgICAgIGtpKGpFVklfaFJwVXAoJFVFV1JxUlF3KSkgewogICAgICAgICAgICAgICAgICAgICRFZlFrcTJSVFEtPnBJVWFFVEVRcCgnVElma1RJRlUnLCBQTjZfdG4zS0EuJy9oUnBVL2hScFUtRkVVSUpSVGtJcCcuJFVqa3AtPnVUbUh3aEkpOwogICAgICAgICAgICAgICAgICAgICRFZlFrcTJSVFEKICAgICAgICAgICAgICAgICAgICAgICAgLT5USVFSVkkya0ltZignVWtVbUknKQogICAgICAgICAgICAgICAgICAgICAgICAtPm1FcUotPkpUUnVoKCdrcWlSJyktPkVmZjJrSW1mNkVxSigncUVRSScsICdVSVdVJywgWydtRWVJbScgPT4gJ0hrw6p1IMSR4buBJywgJ3FSVUknID0+ICdIa8OqdSDEkeG7gSDEkcaw4bujRiBt4bqldyBtw6BRIFVq4bq7IFNZJ10sICdJV0ZJVGhVJyk7CgogICAgICAgICAgICAgICAgICAgIC8vb0VVSUpSVHcKICAgICAgICAgICAgICAgICAgICBraSgkVUVXUnFSUXdbJ2hFVElxVSddKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFZlFrcTJSVFEtPlRrSmpVCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPkVmZjBUUnVoKCdGRVVJSlJUdycsICduRXFqIFHhu6VGJywgJ1FJZmtFJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+RWZmMmtJbWYoICdoRVRJcVVfa2YnLCAncEltSUZVJywgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtRWVJbScgICAgID0+ICduRXFqIFHhu6VGIEZqRScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZFbXVJJyAgICAgPT4gTklzdUlwVTo6SklVKCdGRVVJSlJUdycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSaFVrUnFwJyAgID0+IGFScFVvRVVJSlJUdzo6SklVcChHVDo6cElVKCdGRVVJX1V3aEknLCAkVWprcC0+RkVVSUh3aEkpLT5GRVVJSlJUd0h3aEkoJ1JoVWtScXAnKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy9IRVdScVJRdyBwdWhoUlRVCiAgICAgICAgICAgICAgICAgICAgJHB1aGhSVFUwVFJ1aCA9ICRVRVdScVJRd1sncHVoaFJUVXAnXVsnSlRSdWgnXTsKICAgICAgICAgICAgICAgICAgICAkcHVoaFJUVTJrSW1mID0gJFVFV1JxUlF3WydwdWhoUlRVcCddWydpa0ltZiddOwoKICAgICAgICAgICAgICAgICAgICBraSgkVWprcC0+VUlRaG1FVUktPlFJVWpSZiA9PSAna3FmSVcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFZlFrcTJSVFEtPlRJUVJWSTBUUnVoKFsncElSJywgJ1VqSVFJJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAkRWZRa3EyUlRRLT5USVFSVkkya0ltZihbJ0lXRklUaFUnLCAnRlJxVUlxVScsICdodWVta0YnXSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkRWZRa3EyUlRRID0gRWhobXdfaWttVUlUcCgiUUVxRUpJX0ZFVUlKUlRrSXBfIi4kVWprcC0+RkVVSUh3aEkuJ19rcWh1VScsICRFZlFrcTJSVFEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVRJRWw7CiAgICAgICAgICAgIEZFcEkgJ2hScFUnOgogICAgICAgICAgICAgICAgJGhScFUgICAgICAgICAgID0gSEVXUnFSUXc6OkpJVWFScFUoJFVqa3AtPmhScFVId2hJKTsKICAgICAgICAgICAgICAgICRwdWhoUlRVMFRSdWggICA9ICRoUnBVWydwdWhoUlRVcCddWydKVFJ1aCddOwogICAgICAgICAgICAgICAgJHB1aGhSVFUya0ltZiAJPSAkaFJwVVsncHVoaFJUVXAnXVsnaWtJbWYnXTsKICAgICAgICAgICAgICAgICRUSWZrVElGVSA9IFBONl90bjNLQS4nL2hScFUnLiRVamtwLT51VG1Id2hJOwogICAgICAgICAgICAgICAga2koKGtxVSlOSXN1SXBVOjowSVUoJ2hFSkknKSAhPSB4ICYmIChrcVUpTklzdUlwVTo6MElVKCdoRUpJJykgIT0gWSkgewogICAgICAgICAgICAgICAgICAgICRUSWZrVElGVSAuPSAnJmhFSkk9Jy4oa3FVKU5Jc3VJcFU6OjBJVSgnaEVKSScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEVmUWtxMlJUUS0+cElVYUVURVFwKCdUSWZrVElGVScsICRUSWZrVElGVSk7CiAgICAgICAgICAgICAgICBraShrcHBJVSgkaFJwVVsnVUVXUnFSUWtJcCddKSAmJiBqRVZJX2hScFVwKCRoUnBVWydVRVdScVJRa0lwJ10pICkgewogICAgICAgICAgICAgICAgICAgICRFZlFrcTJSVFEtPlRrSmpVLT5FZmYwVFJ1aCgnVUVXUnFSUWtJcCcsICdvanV3w6pxIDPhu6VGJywgJ1FJZmtFJyk7CiAgICAgICAgICAgICAgICAgICAgJHB1aGhSVFUwVFJ1aFtdID0gJ1VFV1JxUlFrSXAnOwogICAgICAgICAgICAgICAgICAgIGlSVElFRmogKCRoUnBVWydVRVdScVJRa0lwJ10gRXAgJGxJd19VRVdScVJRdykgewogICAgICAgICAgICAgICAgICAgICAgICAkVUVXUnFSUXcgPSAkVWprcC0+VUVXUnFSUXdbJ21rcFVfRkVVX2ZJVUVrbSddWyRsSXdfVUVXUnFSUXddOwogICAgICAgICAgICAgICAgICAgICAgICAkRWZRa3EyUlRRLT5Ua0pqVS0+SlRSdWgoJ1VFV1JxUlFrSXAnKS0+RWZmMmtJbWYoJ1VFV1JxUlF3WycuJGxJd19VRVdScVJRdy4nXScsICdoUmhSVklUJyxbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbUVlSW0nPT4gJFVFV1JxUlF3WydtRWVJbXAnXVsncUVRSSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1FSZnVtSScgPT4gJ2hScFVfRkVVSUpSVGtJcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbEl3X1V3aEknID0+ICRsSXdfVUVXUnFSUXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmhVa1JxcCcgPT4gYVJwVW9FVUlKUlR3OjpKSVVwKEdUOjpwSVUoJ0ZFVUlfVXdoSScsICRsSXdfVUVXUnFSUXcpLT5GRVVJSlJUd0h3aEkoJ1JoVWtScXAnKSkKICAgICAgICAgICAgICAgICAgICAgICAgXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRwdWhoUlRVMmtJbWZbXSA9ICdVRVdScVJRd18nLiRsSXdfVUVXUnFSUXc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEVmUWtxMlJUUSA9IEVoaG13X2lrbVVJVHAoIlFFcUVKSV9oUnBVXyIuJFVqa3AtPmhScFVId2hJLiJfa3FodVUiLCAkRWZRa3EyUlRRKTsKICAgICAgICAgICAgICAgIGVUSUVsOwogICAgICAgICAgICBmSWlFdW1VOgogICAgICAgICAgICAgICAgJEVmUWtxMlJUUSA9IHFJdiAyUlRRdGZRa3EoKTsKICAgICAgICAgICAgICAgICRFZlFrcTJSVFEgPSBFaGhtd19pa21VSVRwKCJRRXFFSklfIi4kRm1FcHAuIl9rcWh1VSIsICRFZlFrcTJSVFEpOwogICAgICAgICAgICAgICAgZVRJRWw7CiAgICAgICAgfQogICAgICAgICRFZlFrcTJSVFEtPnB1aGhSVFUoJEZtRXBwLCAkcHVoaFJUVTBUUnVoLCAkcHVoaFJUVTJrSW1mKTsKICAgICAgICAjIFszSVVFclJXXQogICAgICAgIGlSVElFRmogKCRVamtwLT5RSVVFclJXIEVwICRsSXcgPT4gJFFJVUVyUlcpIHsKICAgICAgICAgICAgJEZScVVJcVUgCQk9ICRRSVVFclJXWydGUnFVSXFVJ107CiAgICAgICAgICAgICRGUnFVSXFVX2VSVyAJPSAkUUlVRXJSV1snRlJxVUlxVV9lUlcnXTsKICAgICAgICAgICAga2koJFFJVUVyUldbJ1FSZnVtSSddID09IHF1bW0gfHwgJFFJVUVyUldbJ1FSZnVtSSddID09ICRGbUVwcCB8fAogICAgICAgICAgICAgICAgKCRRSVVFclJXWydRUmZ1bUknXSA9PSAnaFJwVV8nLiRVamtwLT5oUnBVSHdoSSAmJiAkRm1FcHAgPT0gJ2hScFUnKSB8fAogICAgICAgICAgICAgICAgKCRRSVVFclJXWydRUmZ1bUknXSA9PSAnaFJwVV9GRVVJSlJUa0lwXycuJFVqa3AtPkZFVUlId2hJICYmICRGbUVwcCA9PSAnaFJwVV9GRVVJSlJUa0lwJykpIHsKICAgICAgICAgICAgICAgIGtpKCRGUnFVSXFVID09ICdtSWlVVScpICRGUnFVSXFVID0gJ21JaVVIUmgnOwogICAgICAgICAgICAgICAga2koJEZScVVJcVUgPT0gJ21JaVVlJykgJEZScVVJcVUgPSAnbUlpVXJSVVVSUSc7CiAgICAgICAgICAgICAgICAkRWZRa3EyUlRRLT4kRlJxVUlxVS0+RWZmMFRSdWgoJGxJdywgJFFJVUVyUldbJ21FZUltJ10sICRGUnFVSXFVX2VSVyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZSX0VGVWtScSgnUUVxRUpJX2lSVFFfa3FodVUnLCAkRm1FcHAsICRFZlFrcTJSVFEpOwoKICAgICAgICBUSVV1VHEgJFVqa3AtPkVmUWtxMlJUUSA9ICRFZlFrcTJSVFE7CiAgICB9CgogICAgLy9VasOqUSBm4buvIG1r4buHdSBWw6BSIEbDoUYgVVTGsOG7nXFKIHFq4bqtaCBta+G7h3UgbGprIElma1UKICAgIGh1ZW1rRiBpdXFGVWtScSBwSVVCRW11STJrSW1mcCgmJFJlTElGVSkgewoKICAgICAgICAkVWprcC0+RWZRa3EyUlRRLT5wSVVhRVRFUXAoJ1RJZmtUSUZVJywgJycpOwoKICAgICAgICAkUmVMSUZVID0gRWhobXdfaWttVUlUcCgncElVcF9pa0ltZl9lSWlSVEknLCAkUmVMSUZVICk7CgogICAgICAgICRpUlRRMmtJbWYgPSAkVWprcC0+RWZRa3EyUlRRLT5KSVV0bW0ya0ltZigpOwoKICAgICAgICAkbUVxSnVFSklwID0gW107CgogICAgICAgIGtpKDZFcUp1RUpJOjpqRXAzdW1VaygpKSB7CiAgICAgICAgICAgICRtRXFKdUVKSXAgPSA2RXFKdUVKSTo6SklVcChHVDo6cElVKCdSZUxJRlVfa2YnLCAkUmVMSUZVLT5rZiktPnZqSVRJKCdSZUxJRlVfVXdoSScsICAkVWprcC0+ZkVVRVsnUVJmdW1JJ10pKTsKICAgICAgICB9CgogICAgICAgIGlSVElFRmooJGlSVFEya0ltZiBFcCAkbEl3ID0+ICRpa0ltZikgewogICAgICAgICAgICAvL0rDoXEgSmvDoSBVVOG7iyBGalIgRsOhRiBpa0ltZiBlw6xxaiBVasaw4budcUoKICAgICAgICAgICAga2koa3BwSVUoJFJlTElGVS0+eyRpa0ltZlsnaWtJbWYnXX0pKSB7CiAgICAgICAgICAgICAgICAkVWprcC0+RWZRa3EyUlRRLT5wSVUya0ltZkJFbXVJKCRpa0ltZlsnaWtJbWYnXSwgJFJlTElGVS0+eyRpa0ltZlsnaWtJbWYnXX0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vSsOhcSBKa8OhIFVU4buLIEZqUiBGw6FGIGlrSW1mIMSRRSBxSsO0cSBxSuG7rwogICAgICAgICAgICBJbXBJIGtpKGtwcElVKCRpa0ltZlsnbUVxSiddKSkgewogICAgICAgICAgICAgICAgJFVJUWggPSBPVVQ6OlJpKCRpa0ltZlsnaWtJbWYnXSktPlRJaG1FRkkoJGlrSW1mWydtRXFKJ10uJ18nLCAnJyktPlRJaG1FRkkoJGlrSW1mWydtRXFKJ10uJ1snLCAnJyktPlRJaG1FRkkoJ10nLCAnJyk7CiAgICAgICAgICAgICAgICBraShqRVZJX2hScFVwKCRtRXFKdUVKSXApKSB7CiAgICAgICAgICAgICAgICAgICAgaVJUSUVGaiAoJG1FcUp1RUpJcCBFcCAkbCA9PiAkVkVtdUkpIHsKICAgICAgICAgICAgICAgICAgICAgICAga2koJGlrSW1mWydtRXFKJ10gPT0gJFZFbXVJLT5tRXFKdUVKSSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpKGtwcElVKCRWRW11SS0+JFVJUWgpKSAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRVamtwLT5FZlFrcTJSVFEtPnBJVTJrSW1mQkVtdUkoJGxJdywgJFZFbXVJLT4kVUlRaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVRJRWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgSW1wSSBraShrcHBJVSgkUmVMSUZVLT4kVUlRaCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRVamtwLT5FZlFrcTJSVFEtPnBJVTJrSW1mQkVtdUkoJGxJdywgJFJlTElGVS0+JFVJUWgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBJbXBJIGtpKGtwcElVKCRSZUxJRlUtPiRVSVFoKSkgewogICAgICAgICAgICAgICAgICAgICRVamtwLT5FZlFrcTJSVFEtPnBJVTJrSW1mQkVtdUkoJGxJdywgJFJlTElGVS0+JFVJUWgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGh1ZW1rRiBpdXFGVWtScSBKSVVIRWVtSSgpIHsKICAgICAgICAkUVJmdW1JID0gJFVqa3AtPmZFVUVbJ1FSZnVtSSddOwogICAgICAgIGtpKCRRUmZ1bUkgPT0gJ2hFSkknKSAJCQkJCVRJVXVUcSAnaEVKSSc7CiAgICAgICAga2koJFFSZnVtSSA9PSAnaFJwVScpIAkJCQkJVElVdVRxICdoUnBVJzsKICAgICAgICBraSgkUVJmdW1JID09ICdoVFJmdUZVcCcpIAkJCQlUSVV1VHEgJ2hUUmZ1RlVwJzsKICAgICAgICBraSgkUVJmdW1JID09ICdoUnBVX0ZFVUlKUlRrSXAnKSAJCVRJVXVUcSAnRkVVSUpSVGtJcCc7CiAgICAgICAga2koJFFSZnVtSSA9PSAnaFRSZnVGVXBfRkVVSUpSVGtJcCcpIAlUSVV1VHEgJ2hUUmZ1RlVwX0ZFVUlKUlRrSXAnOwogICAgICAgIFRJVXVUcSAkUVJmdW1JOwogICAgfQogICAgLyogTzZQMCAqLwogICAgaHVlbWtGIGl1cUZVa1JxIGlSVFF0ZmYoRVRURXcgJGhScFUgPSBbXSwgRVRURXcgJFJ1VXBrZkkgPSBbXSk6IFFrV0lmIHsKCiAgICAgICAgJFFSZkltID0gUVJmSW0oJFVqa3AtPkpJVUhFZW1JKCkpOwoKICAgICAgICAkUVJmdW1JID0gJFVqa3AtPmZFVUVbJ1FSZnVtSSddOwoKICAgICAgICAvL2bhu68gbWvhu4d1IMSRRSBxSsO0cSBxSuG7rwogICAgICAgICRtRXFKdUVKSTZrcFUgICAgPSA2RXFKdUVKSTo6bWtwVTFJdygpOwoKICAgICAgICAkbUVxSnVFSkluSWlFdW1VID0gNkVxSnVFSkk6OmZJaUV1bVUoKTsKCiAgICAgICAgLy9m4buvIG1r4buHdSBmRVVFCiAgICAgICAgJGtxcElUVTZFcUogPSBbXTsKCiAgICAgICAgJGtxcElUVW5FVUUgPSBbXTsKCiAgICAgICAgJGhFVEVRcCA9ICghSVFoVXcoJFVqa3AtPkVmUWtxMlJUUS0+aEVURVFwKSkgPyAkVWprcC0+RWZRa3EyUlRRLT5oRVRFUXAgOiBbXTsKCiAgICAgICAgLy9Vw6FGaiBm4buvIG1r4buHdSDEkUUgcUrDtHEgcUrhu68gVEUKICAgICAgICBpUlRJRUZqKCRoUnBVIEVwICRsSXcgPT4gJFZFbSkgewogICAgICAgICAgICBraShrcV9FVFRFdygkbEl3LCAkbUVxSnVFSkk2a3BVKSkgewogICAgICAgICAgICAgICAgJGtxcElUVTZFcUpbJGxJd10gPSAkVkVtOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEltcEkgewogICAgICAgICAgICAgICAgJGtxcElUVW5FVUVbJGxJd10gPSAkVkVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBraShrcHBJVSgka3FwSVRVNkVxSlskbUVxSnVFSkluSWlFdW1VXSkpIHsKICAgICAgICAgICAgJGtxcElUVW5FVUUgPSBFVFRFd19RSVRKSSgka3FwSVRVbkVVRSwgJGtxcElUVTZFcUpbJG1FcUp1RUpJbklpRXVtVV0pOwogICAgICAgICAgICB1cXBJVSgka3FwSVRVNkVxSlskbUVxSnVFSkluSWlFdW1VXSk7CiAgICAgICAgfQoKICAgICAgICAka3FwSVRVbkVVRSA9IEVoaG13X2lrbVVJVHAoJ3BFVklfUmVMSUZVX2VJaVJUSScsICRrcXBJVFVuRVVFLCAkUnVVcGtmSSwgJFFSZnVtSSk7CgogICAgICAgICRGaklGbCA9IEVoaG13X2lrbVVJVHAoJ0ZqSUZsX3BFVklfZUlpUlRJJywgcXVtbSwgJGtxcElUVW5FVUUsICRSdVVwa2ZJLCAkUVJmdW1JKTsKCiAgICAgICAga2kgKHF1bW0gIT09ICRGaklGbCkgewoKICAgICAgICAgICAgJFRJcHVtVVsnUUlwcEVKSSddIAkJPSAnSGrDqlEgZuG7ryBta+G7h3UgVWrhuqVVIGXhuqFrLic7CgogICAgICAgICAgICAkVElwdW1VWydGaklGbCddIAkJPSAkRmpJRmw7CgogICAgICAgICAgICBUSVV1VHEgJFRJcHVtVTsKICAgICAgICB9CgogICAgICAgICRrcXBJVFVuRVVFWydtRXFKdUVKSSddID0gJGtxcElUVTZFcUo7CgogICAgICAgICRrcXBJVFVuRVVFWydVRVdScVJRa0lwJ10gPSAoa3BwSVUoJFJ1VXBrZklbJ1VFV1JxUlFrSXAnXSkpID8gJFJ1VXBrZklbJ1VFV1JxUlFrSXAnXSA6IFtdOwoKICAgICAgICBraSgkUVJmdW1JID09ICdoRUpJJykgewogICAgICAgICAgICAka2YgPSBhRUpJcDo6a3FwSVRVKCRrcXBJVFVuRVVFKTsKICAgICAgICB9CiAgICAgICAgSW1wSSBraSgkUVJmdW1JID09ICdoUnBVJykgewogICAgICAgICAgICAka3FwSVRVbkVVRVsnaFJwVV9Vd2hJJ10gPSAkVWprcC0+aFJwVUh3aEk7CiAgICAgICAgICAgICRrZiA9IGFScFVwOjprcXBJVFUoJGtxcElUVW5FVUUpOwogICAgICAgIH0KICAgICAgICBJbXBJIGtpKCRRUmZ1bUkgPT0gJ2hScFVfRkVVSUpSVGtJcCcpIHsKICAgICAgICAgICAga2koSEVXUnFSUXc6OmpFcG9FVUlKUlR3KCRVamtwLT5GRVVJSHdoSSkpIHsKICAgICAgICAgICAgICAgICRrcXBJVFVuRVVFWydGRVVJX1V3aEknXSA9ICRVamtwLT5GRVVJSHdoSTsKICAgICAgICAgICAgfQogICAgICAgICAgICAka2YgPSBhUnBVb0VVSUpSVHc6OmtxcElUVSgka3FwSVRVbkVVRSk7CiAgICAgICAgfQogICAgICAgIEltcEkgewogICAgICAgICAgICAka2YgPSBFaGhtd19pa21VSVRwKCdpUlRRX3B1ZVFrVV8nLiRRUmZ1bUksIHgsICRrcXBJVFVuRVVFLCAkUnVVcGtmSSk7CiAgICAgICAgfQoKICAgICAgICBraSghSVFoVXcoJGtmKSAmJiBrcF9xdVFJVGtGKCRrZikpIHsKICAgICAgICAgICAgZlJfRUZVa1JxKCdwRVZJX1JlTElGVV9FZmYnLCAka2YsICRRUmZ1bUksICRSdVVwa2ZJLCAkUVJmSW0sICRrcXBJVFVuRVVFKTsKICAgICAgICAgICAgZlJfRUZVa1JxKCdwRVZJXycuJFFSZnVtSS4nX1JlTElGVScsICRrZiwgJFFSZnVtSSwgJFJ1VXBrZkksICRRUmZJbSwgJGtxcElUVW5FVUUpOwogICAgICAgICAgICBmUl9FRlVrUnEoJ3BFVklfUmVMSUZVJywgJGtmLCAkUVJmdW1JLCAkUnVVcGtmSSwgJFFSZkltLCAka3FwSVRVbkVVRSk7CgogICAgICAgICAgICAvL0ZqdXfhu4NxIMSR4bq/cSBVVEVxSgogICAgICAgICAgICBraShrcHBJVSgkaEVURVFwWydUSWZrVElGVSddKSkgewogICAgICAgICAgICAgICAgJFRJcHVtVVsnVElma1RJRlUnXSAJPSBwVVRfVElobUVGSSgne2tmfScsICRrZiwgJGhFVEVRcFsnVElma1RJRlUnXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRUSXB1bVVbJ2tmJ10gCQkJPSAka2Y7CgogICAgICAgICAgICAkVElwdW1VWydwVUVVdXAnXSAJCT0gJ3B1RkZJcHAnOwoKICAgICAgICAgICAgJFRJcHVtVVsnUUlwcEVKSSddIAkJPSAnSGrDqlEgZuG7ryBta+G7h3UgVWrDoHFqIEbDtHFKJzsKICAgICAgICB9CiAgICAgICAgSW1wSSB7CgogICAgICAgICAgICAkVElwdW1VWydRSXBwRUpJJ10gCQk9ICdIasOqUSBm4buvIG1r4buHdSBVauG6pVUgZeG6oWsnOwoKICAgICAgICAgICAgJFRJcHVtVVsncFVFVXVwJ10gCQk9ICdJVFRSVCc7CgogICAgICAgICAgICBraShrcHBJVSgka2YpICYmIGtwX3BsZl9JVFRSVCgka2YpKSB7CiAgICAgICAgICAgICAgICBpUlRJRUZqICgka2YtPklUVFJUcCBFcCAkSVRUUlRfVkVtdUkpIHsKICAgICAgICAgICAgICAgICAgICAkVElwdW1VWydRSXBwRUpJJ10gPSAkSVRUUlRfVkVtdUlbeF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIFRJVXVUcSAkVElwdW1VOwogICAgfQoKICAgIGh1ZW1rRiBpdXFGVWtScSBpUlRRZ2ZrVShFVFRFdyAkaFJwVSA9IFtdLCBrcVUgJGtmID0geCwgRVRURXcgJFJ1VXBrZkkgPSBbXSk6IFFrV0lmIHsKCiAgICAgICAgJFFSZnVtSSA9ICRVamtwLT5mRVVFWydRUmZ1bUknXTsKCiAgICAgICAgJFFSZkltID0gUVJmSW0oJFVqa3AtPkpJVUhFZW1JKCkpOwoKICAgICAgICAvL2bhu68gbWvhu4d1IMSRRSBxSsO0cSBxSuG7rwogICAgICAgICRtRXFKdUVKSTZrcFUgICA9IDZFcUp1RUpJOjpta3BVMUl3KCk7CgogICAgICAgICRtRXFKdUVKSW5JaUV1bVUgPSA2RXFKdUVKSTo6ZklpRXVtVSgpOwoKICAgICAgICAvL2bhu68gbWvhu4d1IGZFVUUKICAgICAgICAka3FwSVRVNkVxSiA9IFtdOwogICAgICAgICRrcXBJVFVuRVVFID0gW107CiAgICAgICAgJGhFVEVRcCAgICAgID0gKCFJUWhVdygkVWprcC0+RWZRa3EyUlRRLT5oRVRFUXApKSA/ICRVamtwLT5FZlFrcTJSVFEtPmhFVEVRcCA6IFtdOwoKICAgICAgICAvL1XDoUZqIGbhu68gbWvhu4d1IMSRRSBxSsO0cSBxSuG7ryBURQogICAgICAgIGlSVElFRmogKCRoUnBVIEVwICRsSXcgPT4gJFZFbSkgewogICAgICAgICAgICBraShrcV9FVFRFdygkbEl3LCAkbUVxSnVFSkk2a3BVKSkgewogICAgICAgICAgICAgICAgJGtxcElUVTZFcUpbJGxJd10gPSAkVkVtOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEltcEkgewogICAgICAgICAgICAgICAgJGtxcElUVW5FVUVbJGxJd10gPSAkVkVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBraShrcHBJVSgka3FwSVRVNkVxSlskbUVxSnVFSkluSWlFdW1VXSkpIHsKCiAgICAgICAgICAgICRrcXBJVFVuRVVFID0gRVRURXdfUUlUSkkoJGtxcElUVW5FVUUsICRrcXBJVFU2RXFKWyRtRXFKdUVKSW5JaUV1bVVdKTsKCiAgICAgICAgICAgIHVxcElVKCRrcXBJVFU2RXFKWyRtRXFKdUVKSW5JaUV1bVVdKTsKICAgICAgICB9CgogICAgICAgICRrcXBJVFVuRVVFID0gRWhobXdfaWttVUlUcCgncEVWSV9SZUxJRlVfZUlpUlRJJywgJGtxcElUVW5FVUUsICRSdVVwa2ZJLCAkUVJmdW1JKTsKCiAgICAgICAgZlJfRUZVa1JxKCdwRVZJX1JlTElGVV9lSWlSVEknLCAka3FwSVRVbkVVRSwgJFJ1VXBrZkksICRRUmZ1bUkpOwoKICAgICAgICAkRmpJRmwgPSBFaGhtd19pa21VSVRwKCJGaklGbF9wRVZJX2VJaVJUSSIsIHF1bW0sICRrcXBJVFVuRVVFLCAkUnVVcGtmSSwgJFFSZnVtSSk7CgogICAgICAgIGtpIChxdW1tICE9PSAkRmpJRmwpIHsKICAgICAgICAgICAgJFRJcHVtVVsnUUlwcEVKSSddIAk9ICdv4bqtaCBxauG6rVUgZuG7ryBta+G7h3UgVWrhuqVVIGXhuqFrLic7CiAgICAgICAgICAgICRUSXB1bVVbJ3BVRVV1cCddIAk9ICRGaklGbDsKICAgICAgICAgICAgVElVdVRxICRUSXB1bVU7CiAgICAgICAgfQoKICAgICAgICBraSghSVFoVXcoJGtxcElUVW5FVUVbJ2hFVElxVV9rZiddKSAmJiAka3FwSVRVbkVVRVsnaEVUSXFVX2tmJ10gPT0gJGtmKSB7CiAgICAgICAgICAgICRUSXB1bVVbJ1FJcHBFSkknXSAJCT0gJzFqw7RxSiBVauG7gyBG4bqtaCBxauG6rVUgxJHhu5FrIFXGsOG7o3FKIHHDoHcgVWrDoHFqIEZqRSDEkeG7kWsgVcaw4bujcUogccOgdyc7CiAgICAgICAgICAgICRUSXB1bVVbJ3BVRVV1cCddIAkJPSAnSVRUUlQnOwogICAgICAgICAgICBUSVV1VHEgJFRJcHVtVTsKICAgICAgICB9CgogICAgICAgICRrcXBJVFVuRVVFWydrZiddID0gJGtmOwoKICAgICAgICAka3FwSVRVbkVVRVsnbUVxSnVFSkknXSA9ICRrcXBJVFU2RXFKOwoKICAgICAgICAka3FwSVRVbkVVRVsnVUVXUnFSUWtJcCddID0gKGtwcElVKCRSdVVwa2ZJWydVRVdScVJRa0lwJ10pKSA/ICRSdVVwa2ZJWydVRVdScVJRa0lwJ10gOiBbXTsKCiAgICAgICAga2koJFFSZnVtSSA9PSAnaEVKSScpIHsKICAgICAgICAgICAgJElUVFJUcCA9IGFFSklwOjprcXBJVFUoJGtxcElUVW5FVUUpOwogICAgICAgIH0KICAgICAgICBJbXBJIGtpKCRRUmZ1bUkgPT0gJ2hScFUnKSB7CiAgICAgICAgICAgICRJVFRSVHAgPSBhUnBVcDo6a3FwSVRVKCRrcXBJVFVuRVVFKTsKICAgICAgICB9CiAgICAgICAgSW1wSSBraSgkUVJmdW1JID09ICdoUnBVX0ZFVUlKUlRrSXAnKSB7CiAgICAgICAgICAgICRJVFRSVHAgPSBhUnBVb0VVSUpSVHc6OmtxcElUVSgka3FwSVRVbkVVRSk7CiAgICAgICAgfQogICAgICAgIEltcEkgewogICAgICAgICAgICAkSVRUUlRwID0gRWhobXdfaWttVUlUcCgnaVJUUV9wdWVRa1VfJy4kUVJmdW1JLCB4LCAka3FwSVRVbkVVRSwgJFJ1VXBrZkkpOwogICAgICAgIH0KCgogICAgICAgIGtpKGtwX3F1UUlUa0YoJElUVFJUcCkpIHsKCiAgICAgICAgICAgICRRUmZJbS0+cElVSEVlbUkoJFVqa3AtPkpJVUhFZW1JKCkpOwoKICAgICAgICAgICAgZlJfRUZVa1JxKCdwRVZJX1JlTElGVV9JZmtVJywgJGtmLCAkUVJmdW1JLCAkUnVVcGtmSSwgJFVqa3AtPkpJVUhFZW1JKCksICRrcXBJVFVuRVVFKTsKCiAgICAgICAgICAgIGZSX0VGVWtScSgncEVWSV8nLiRRUmZ1bUkuJ19SZUxJRlUnLCAka2YsICRRUmZ1bUksICRSdVVwa2ZJLCAkVWprcC0+SklVSEVlbUkoKSwgJGtxcElUVW5FVUUpOwoKICAgICAgICAgICAgZlJfRUZVa1JxKCdwRVZJX1JlTElGVScsICRrZiwgJFFSZnVtSSwgJFJ1VXBrZkksICRVamtwLT5KSVVIRWVtSSgpLCAka3FwSVRVbkVVRSk7CgogICAgICAgICAgICAvL0ZqdXfhu4NxIMSR4bq/cSBVVEVxSgogICAgICAgICAgICBraShrcHBJVSgkaEVURVFwWydUSWZrVElGVSddKSkgewogICAgICAgICAgICAgICAgJFRJcHVtVVsnVElma1RJRlUnXSA9IHBVVF9USWhtRUZJKCd7a2Z9JywgJGtmLCAkaEVURVFwWydUSWZrVElGVSddKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFRJcHVtVVsncFVFVXVwJ10gCT0gJ3B1RkZJcHAnOwoKICAgICAgICAgICAgJFRJcHVtVVsnUUlwcEVKSSddIAk9ICdv4bqtaCBxauG6rVUgZuG7ryBta+G7h3UgVWrDoHFqIEbDtHFKJzsKICAgICAgICB9CiAgICAgICAgSW1wSSB7CgogICAgICAgICAgICAkVElwdW1VWydRSXBwRUpJJ10gCQk9ICdu4buvIG1r4buHdSBsasO0cUogVWpFdyDEkeG7lWsnOwoKICAgICAgICAgICAgJFRJcHVtVVsncFVFVXVwJ10gCQk9ICdJVFRSVCc7CgogICAgICAgICAgICBraShrcF9wbGZfSVRUUlQoJElUVFJUcCkpIHsKICAgICAgICAgICAgICAgIGlSVElFRmogKCRJVFRSVHAtPklUVFJUcCBFcCAkSVRUUlRfVkVtdUkpIHsKICAgICAgICAgICAgICAgICAgICAkVElwdW1VWydRSXBwRUpJJ10gPSAkSVRUUlRfVkVtdUlbeF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIFRJVXVUcSAkVElwdW1VOwogICAgfQp9
Did this file decode correctly?
Original Code
<?php $OOO000000 = urldecode('%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64');$GLOBALS['OOO0000O0'] = $OOO000000[4] . $OOO000000[9] . $OOO000000[3] . $OOO000000[5] . $OOO000000[2] . $OOO000000[10] . $OOO000000[13] . $OOO000000[16];$GLOBALS['OOO0000O0'] .= $GLOBALS['OOO0000O0'][3] . $OOO000000[11] . $OOO000000[12] . $GLOBALS['OOO0000O0'][7] . $OOO000000[5];$GLOBALS['O0O00OO00'] = $OOO000000[0] . $OOO000000[8] . $OOO000000[5] . $OOO000000[9] . $OOO000000[16];$GLOBALS['OOO000O00'] = $OOO000000[0] . $OOO000000[12] . $OOO000000[7] . $OOO000000[5] . $OOO000000[15];$GLOBALS['OOO00000O'] = $OOO000000[3] . $OOO000000[14] . $OOO000000[8] . $OOO000000[14] . $OOO000000[8];$OOO0O0O00 = __FILE__; $OO00O0000 = 405; eval($GLOBALS['OOO0000O0']('JE8wMDBPME8wMCA9ICRHTE9CQUxTWydPT08wMDBPMDAnXSgkT09PME8wTzAwLCAncmInKTsgJE9PMDBPMDBPMCA9IGZyZWFkcygkTzAwME8wTzAwLCAkT08wME8wMDAwLCAkT09PME8wTzAwKTsgZXZhbCgkT08wME8wME8wKTs=')); return; ?>Zklpa3FJZigncnRPZ2F0SFMnKSBNTiBJV2tVKCdBUiBma1RJRlUgcEZUa2hVIEVGRklwcCBFbW1SdklmJyk7CgpGbUVwcCAzY19vUnFVVFJtbUlUIElXVUlxZnAgb0tfb1JxVVRSbW1JVCB7CgogICAgaHVlbWtGIGVSUm0gJGlUUnFVSXFmIAkJCT0gaUVtcEk7CiAgICBodWVta0YgRVRURXcgJG1FcUp1RUpJIAkJCT0gWydmSWlFdW1VJyA9PiAnVmsnLCAnRnVUVElxVScgPT4gJ1ZrJywgJ21rcFUnID0+IFsnVmsnID0+IFsnbUVlSW0nID0+ICdIa+G6v3FKIEJr4buHVSddXV07CiAgICBodWVta0YgRVRURXcgJFVFV1JxUlF3ICAgICAgICAgID0gWydta3BVX0ZFVScgPT4gW10sICdta3BVX2hScFUnID0+IFtdLCAnbWtwVV9oUnBVX2ZJVUVrbScgPT4gW10sICdta3BVX0ZFVUlfZklVRWttJyA9PiBbXV07CiAgICBodWVta0YgRVRURXcgJEpFbW1JVHdNaFVrUnFwICAgID0gWydKRW1tSVR3JyA9PiBbXSwgJ1JlTElGVScgPT4gW11dOwogICAgaHVlbWtGIEVUVEV3ICRobXVKa3FwICAgICAgICAgICA9IFsnRUZVa1ZJJyA9PiBbXV07CiAgICBodWVta0YgRVRURXcgJEVMRVcgCQkJCT0gWydxUmhUa1YnID0+IFtdLCAnbVJKa3EnID0+IFtdLCAnRWZRa3EnID0+IFtdXTsKICAgIGh1ZW1rRiBFVFRFdyAkVWpJUUlNaFVrUnFwIAkJPSBbJ0pUUnVoJyA9PiBbXSwgJ1JoVWtScScgPT4gW11dOwogICAgaHVlbWtGIEVUVEV3ICRmRVVFICAgICAJCQk9IFtdOwogICAgaHVlbWtGIEVUVEV3ICRwalJUVW9SZkkgCQk9IFtdOwogICAgaHVlbWtGIEVUVEV3ICR2a2ZKSVVuRXBqZVJFVGYgCT0gW107CiAgICBodWVta0YgRVRURXcgJEVmUWtxQUVWIAkJCT0gW107CiAgICBodWVta0YgRVRURXcgJEVmUWtxQUVWT3VlIAkJPSBbXTsKICAgIGh1ZW1rRiBRa1dJZiAkcHdwVUlRIAkJICAgID0gW107CiAgICBodWVta0YgRVRURXcgJFFJcXVNaFVrUnFwIAkJPSBbXTsKICAgIGh1ZW1rRiBFVFRFdyAkcUVWa0pFVWtScSAJICAgID0gW107CiAgICBodWVta0YgRVRURXcgJHZrZkpJVSAJCQk9IFtdOwogICAgaHVlbWtGIEVUVEV3ICRwa2ZJZUVUIAkJCT0gW107CiAgICBodWVta0YgRVRURXcgJFFJVUVyUlcgICAgICAgICAgID0gW107CiAgICBodWVta0YgUWtXSWYgJFRSbUlwICAgICAgICAgICAgID0gW107CiAgICBodWVta0YgRVRURXcgJEZSbSAgICAgICAgICAgICAgID0gW107CiAgICBodWVta0YgMlJUUXRmUWtxICRFZlFrcTJSVFE7CiAgICBodWVta0YgUWtXSWYgJEZFVUlId2hJICAgICAgICAgID0gJyc7CiAgICBodWVta0YgUWtXSWYgJGhScFVId2hJICAgICAgICAgID0gJyc7CiAgICBodWVta0YgcFVUa3FKICR1VG1Id2hJICAgICAgICAgID0gJyc7CiAgICBodWVta0YgSElRaG1FVUkgJFVJUWhtRVVJOwoKICAgIGl1cUZVa1JxIF9fRlJxcFVUdUZVKCQzTW5QNmcgPSAnZUVGbElxZicpIHsKCiAgICAgICAgaEVUSXFVOjpfX0ZScXBVVHVGVSgpOwoKICAgICAgICAkVWprcC0+ZkVVRVsnRmsnXSA9ICZKSVVfa3FwVUVxRkkoKTsKCiAgICAgICAgJFVqa3AtPmlUUnFVSXFmID0gISgoJDNNblA2ZyA9PSAnZUVGbElxZicpKTsKCiAgICAgICAgJFVqa3AtPkZqSUZsKCk7CgogICAgICAgIGZSX0VGVWtScSgnZUlpUlRJNlJFZicpOwoKICAgICAgICAkVWprcC0+bVJFZigpOwoKICAgICAgICBmUl9FRlVrUnEoJ2txa1UnKTsKCiAgICAgICAga2koJDNNblA2ZyA9PSAnZUVGbElxZicpIHsKICAgICAgICAgICAgJFVqa3AtPmZFVUVbJ0pUUnVoJ10gCT0gJFVqa3AtPlRSdVVJVC0+aUlVRmpfRm1FcHAoKTsKICAgICAgICAgICAgJFVqa3AtPmZFVUVbJ0VGVWtWSSddIAk9ICRVamtwLT5mRVVFWydKVFJ1aCddOwogICAgICAgICAgICAkVWprcC0+ZkVVRVsnUVJmdW1JJ10gICA9ICRVamtwLT5mRVVFWydKVFJ1aCddOwogICAgICAgICAgICAkVWprcC0+RkVVSUh3aEkgICAgIAk9IE5Jc3VJcFU6OkpJVSgnRkVVSV9Vd2hJJyk7CiAgICAgICAgICAgICRVamtwLT5oUnBVSHdoSSAgICAgCT0gTklzdUlwVTo6SklVKCdoUnBVX1V3aEknKTsKICAgICAgICAgICAga2koIUlRaFV3KCRVamtwLT5oUnBVSHdoSSkgJiYgSVFoVXcoJFVqa3AtPkZFVUlId2hJKSkgewogICAgICAgICAgICAgICAgJGhScFVId2hJID0gSEVXUnFSUXc6OkpJVWFScFUoJFVqa3AtPmhScFVId2hJKTsKICAgICAgICAgICAgICAgIGtpKGtwcElVKCRoUnBVSHdoSVsnRkVVSV9Vd2hJJ10pKSAkVWprcC0+RkVVSUh3aEkgPSAkaFJwVUh3aElbJ0ZFVUlfVXdoSSddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGtpKCRVamtwLT5GRVVJSHdoSSAhPSBxdW1tICYmICRVamtwLT5oUnBVSHdoSSAhPSBxdW1tKSAkVWprcC0+dVRtSHdoSSA9ICc/RkVVSV9Vd2hJPScuJFVqa3AtPkZFVUlId2hJLicmaFJwVV9Vd2hJPScuJFVqa3AtPmhScFVId2hJOwogICAgICAgICAgICBraSgkVWprcC0+RkVVSUh3aEkgIT0gcXVtbSAmJiAkVWprcC0+aFJwVUh3aEkgPT0gcXVtbSkgJFVqa3AtPnVUbUh3aEkgPSAnP0ZFVUlfVXdoST0nLiRVamtwLT5GRVVJSHdoSTsKICAgICAgICAgICAga2koJFVqa3AtPkZFVUlId2hJID09IHF1bW0gJiYgJFVqa3AtPmhScFVId2hJICE9IHF1bW0pICRVamtwLT51VG1Id2hJID0gJz9oUnBVX1V3aEk9Jy4kVWprcC0+aFJwVUh3aEk7CiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBqUlJsIEVmUWtxX2txVQogICAgICAgICAgICAgKiBAcGtxSkkgeS54LnoKICAgICAgICAgICAgICovCiAgICAgICAgICAgIGZSX0VGVWtScSgnRWZRa3Ffa3FrVScpOwogICAgICAgICAgICBmUl9FRlVrUnEoJ0ZtSV9mRXBqZVJFVGZfcElVdWgnKTsKICAgICAgICAgICAgZlJfRUZVa1JxKCdGbUlfZkVwamVSRVRmX1RJUVJWSScpOwogICAgICAgICAgICAvL1VJUWhtRVVJCiAgICAgICAgICAgICRVamtwLT5VSVFobUVVSS0+cElVQUVRSSgnZUVGbElxZicpOwogICAgICAgIH0KCiAgICAgICAga2koJDNNblA2ZyA9PSAnaVRScVVJcWYnKSB7CiAgICAgICAgICAgICRVamtwLT5mRVVFWydRUmZ1bUknXSAgID0gJFVqa3AtPlRSdVVJVC0+aUlVRmpfRm1FcHAoKTsKICAgICAgICAgICAgNkVxSnVFSkk6Om1SRWYoKTsKICAgICAgICAgICAgJFVqa3AtPlVJUWhtRVVJLT5wSVVBRVFJKE1oVWtScTo6SklVKCdVaklRSV9GdVRUSXFVJykpOwogICAgICAgICAgICAkRlFwX3BVRVV1cCA9IE1oVWtScTo6SklVKCdGUXBfcFVFVXVwJywgJ2h1ZW1rRicpOwogICAgICAgICAgICBraSgkRlFwX3BVRVV1cCA9PSAnRm1ScEknICYmICFISVFobUVVSTo6a3BhRUpJKCdqUlFJX0ZtUnBJJykpIFRJZmtUSUZVKCdGbVJwSScpOwogICAgICAgICAgICBraSgkRlFwX3BVRVV1cCA9PSAnRm1ScEktalJRSScgJiYgSElRaG1FVUk6OmtwYUVKSSgnalJRSV9rcWZJVycpICYmICFISVFobUVVSTo6a3BhRUpJKCdqUlFJX0ZtUnBJJykpIHsKICAgICAgICAgICAgICAgIGtpKFBUbTo6cElKUUlxVShZKSA9PSAnJykgVElma1RJRlUoJ0ZtUnBJJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAga2koJEZRcF9wVUVVdXAgPT0gJ2hFcHB2UlRmJyAmJiAhSElRaG1FVUk6OmtwYUVKSSgnalJRSV9oRXBwdlJUZicpKSB7CiAgICAgICAgICAgICAgICBraSgha3BwSVUoJF9PZ09PS01BWydGUXBfRm1ScElfaEVwcHZSVGYnXSkpIFRJZmtUSUZVKCdoRXBwdlJUZicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBqSUVmSVQoJ0ZRcC1xRVFJOiBPbGttbWZSJyk7CgogICAgICAgIGpJRWZJVCgnRlFwLVZJVHBrUnE6ICcuRlFwOjpWSVRwa1JxKCkpOwoKICAgICAgICBraSghUUlValJmX0lXa3BVcCgncGxmX3BJRnVUa1V3JywgJ1RJZmtUSUZVNlJKa3EnKSkgZmtJOwoKICAgICAgICBraSghUUlValJmX0lXa3BVcCgncGxmX3BJRnVUa1V3JywgJ0VGRklwcE5rSmpVcCcpKSBma0k7CgogICAgICAgICRVamtwLT5wbGZfcElGdVRrVXctPlRJZmtUSUZVNlJKa3EoKTsKCiAgICAgICAgJFVqa3AtPnBsZl9wSUZ1VGtVdy0+RUZGSXBwTmtKalVwKCk7CiAgICB9CgogICAgaXVxRlVrUnEgRmpJRmwoKSB7CgogICAgICAgIEptUmVFbSAkVElzdWtUSWZfaGpoX1ZJVHBrUnE7CgogICAgICAgICRoamhfVklUcGtScV9GdVRUSXFVID0gaGpoVklUcGtScSgpOwoKICAgICAgICAkaGpoX0Z1VFRJcVUgPSBJV2htUmZJKCcuJywgJGhqaF9WSVRwa1JxX0Z1VFRJcVUgKTsKCiAgICAgICAgJGhqaF9WSVRwa1JxID0gSVdobVJmSSgnLicsICRUSXN1a1RJZl9oamhfVklUcGtScSApOwoKICAgICAgICAkSVRUUlRfaGpoID0gJ2Fqa8OqcSBl4bqjcSBhU2EgRuG7p0UgZeG6oXEgRuG6p3EgccOicUogRuG6pWggbcOqcSBoamvDqnEgZeG6o3EgPGU+Jy4kVElzdWtUSWZfaGpoX1ZJVHBrUnEuJzwvZT4gxJHhu4MgdkllcGtVSSBGw7MgVWrhu4MgVuG6rXEgasOgcWouIGhqa8OqcSBl4bqjcSBqa+G7g3EgVeG6oWsgRuG7p0UgZeG6oXEgbcOgICcuJGhqaF9WSVRwa1JxX0Z1VFRJcVU7CgogICAgICAgICRJVFRSVF9qSUVmID0gJzbhu5ZLIGFTYSBCZ05PS01BJzsKCiAgICAgICAga2koJGhqaF9GdVRUSXFVW3hdIDwgJGhqaF9WSVRwa1JxW3hdKSB7CiAgICAgICAgICAgIHBqUnZfSVRUUlQoJElUVFJUX2hqaCwgNHh4LCAkSVRUUlRfaklFZik7CiAgICAgICAgfQoKICAgICAgICBraSgkaGpoX0Z1VFRJcVVbeF0gPT0gJGhqaF9WSVRwa1JxW3hdICYmICRoamhfRnVUVElxVVtZXSA8ICRoamhfVklUcGtScVtZXSkgewogICAgICAgICAgICBwalJ2X0lUVFJUKCRJVFRSVF9oamgsIDR4eCwgJElUVFJUX2pJRWYpOwogICAgICAgIH0KCiAgICAgICAga2koIWl1cUZVa1JxX0lXa3BVcCgnRnVUbV9WSVRwa1JxJykpIHsKICAgICAgICAgICAgcGpSdl9JVFRSVCgnRlBONiBrcCBBTUggPHBoRXEgcFV3bUk9XCJGUm1SVDpUSWZcIj5rcXBVRW1tSWY8L3BoRXE+IFJxIFVqa3AgcElUVklUJywgNHh4LCAnNuG7lksgb1BONiAzTW4nKTsKICAgICAgICB9CiAgICB9CgogICAgaXVxRlVrUnEgbVJFZigpIHsKCiAgICAgICAgJFVqa3AtPm1SRWYtPmpJbWhJVChbJ3BJRnVUa1V3JywgJ1VJUWhtRVVJJywgJ2ZFVUVlRXBJJywgJ0ZSUVFScScsICdFTEVXJywnUUlxdScsICdVRVdScVJRdycsICdRSVVFZVJXJywgJ0lRRWttJywgJ2hScFUnLCAnaEVKSScsICd1cElUJywnSkVtbUlUdycsICdwVVQnLCAnRVRUJywgJ3BJVFZrRkknLCAncHVoaFJUVV9SbWYnLCAnaEVKa3FFVWtScSddKTsKCiAgICAgICAgJFVqa3AtPm1SRWYtPm1rZVRFVHcoWydwbGZfcElGdVRrVXcnLCAnZ1FFa21TRXFmbUlUJywgJzJSVFF0ZlFrcScsICcyUlRRcnVrbWZJVCcsICdVSVFobUVVSScsICdwbGZfbWtwVV9VRWVtSScsICdGRVRVJywgJ3BsZl9JVFRSVCcsICdwbGZfVFJtSXAnXSk7CgogICAgICAgICRVamtwLT5tUkVmLT5mVGtWSVQoJ0ZFRmpJJywgRVRURXcoJ0VmRWhVSVQnID0+ICdpa21JJykpOwoKICAgICAgICAkVWprcC0+VFJtSXAgPSBxSXYgTzFuX05SbUlwKCk7CgogICAgICAgIC8vNlJFZiBVasO0cUogVWtxIHZrZkpJVQogICAgICAgIGtpKEBpa21JX0lXa3BVcCgyb2F0SFMudGFhYXRIUy4nbWtlVEVUa0lwL3ZrZkpJVS5oamgnKSkKICAgICAgICAgICAgVElzdWtUSV9ScUZJKDJvYXRIUy50YWFhdEhTLidta2VURVRrSXAvdmtmSklVLmhqaCcpOwoKICAgICAgICAvLzZSRWYgVWrDtHFKIFVrcSBRSXF1CiAgICAgICAga2koQGlrbUlfSVdrcFVwKDJvYXRIUy50YWFhdEhTLidta2VURVRrSXAvdkVtbElUX3FFVl9RSXF1LmhqaCcpKQogICAgICAgICAgICBUSXN1a1RJX1JxRkkoMm9hdEhTLnRhYWF0SFMuJ21rZVRFVGtJcC92RW1sSVRfcUVWX1FJcXUuaGpoJyk7CgogICAgICAgIC8vNlJFZiBVasO0cUogVWtxIHB3cFVJUQogICAgICAgIGtpKEBpa21JX0lXa3BVcChhRVVqOjpFZlFrcSgnL0ZScWlrSi5oamgnLCBVVHVJKSkpIHsKICAgICAgICAgICAgVElzdWtUSV9ScUZJIGFFVWo6OkVmUWtxKCcvRlJxaWtKLmhqaCcsIFVUdUkpOwogICAgICAgIH0KCiAgICAgICAgJFVqa3AtPm1SRWZNaFVrUnFwKCk7CgogICAgICAgIC8vbVJFZiBobXVKa3EKICAgICAgICAkVWprcC0+aG11SmtxcFsnRUZVa1ZJJ10gPSBNaFVrUnE6OkpJVSgnaG11SmtxX0VGVWtWSScsIFtdICk7CgogICAgICAgICRVamtwLT5tUkVmLT5ta2VURVR3KCdobXVKa3EnKTsKCiAgICAgICAgJFVqa3AtPmhtdUprcS0+bVJFZigpOwoKICAgICAgICAvL21SRWYgVWrDtHFKIFVrcSBVSVFobUVVSQogICAgICAgIGtpKCRVamtwLT5mRVVFWydVSVFobUVVSSddLT5JV2twVSgpKSB7CgogICAgICAgICAgICBUSXN1a1RJX1JxRkkgYUVVajo6VWpJUUkoJy9GUnFpa0ouaGpoJywgVVR1SSk7CgogICAgICAgICAgICAkcGtmSWVFVCA9IGJrZkpJVTo6SklVcChHVDo6cElVKCdVSVFobUVVSScsICRVamtwLT5mRVVFWydVSVFobUVVSSddLT5xRVFJKS0+UlRmSVRydygnUlRmSVQnKSk7CgogICAgICAgICAgICBpUlRJRUZqICgkcGtmSWVFVCBFcCAkdmtmSklVKSB7CiAgICAgICAgICAgICAgICAkVWprcC0+VUlRaG1FVUktPkpJVWJrZkpJVSgkdmtmSklVLT52a2ZKSVVfa2YpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkVWprcC0+VWpJUUlNaFVrUnEoKTsKCiAgICAgICAgLy82UkVmIEhqw7RxSiBVa3EgdXBJVAogICAgICAgIGtpKHR1VWo6OkZqSUZsKCkpICRVamtwLT5mRVVFWyd1cElUJ10gPSB0dVVqOjp1cElUKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBbT3dwVUlRIDZSRWYgRsOhRiBG4bqldSBqw6xxaiBq4buHIFVq4buRcUogVVRScUogZeG6o3FKIHB3cFVJUV0KICAgICAqLwogICAgaHVlbWtGIGl1cUZVa1JxIG1SRWZNaFVrUnFwKCkgewogICAgICAgICRVamtwLT5wd3BVSVEgPSAoUmVMSUZVKW9FRmpJU0VxZm1JVDo6SklVKCdwd3BVSVEnKTsKICAgICAgICAkVWprcC0+ZkVVRVsnVUlRaG1FVUknXSA9IHFJdiBVSVFobUVVSShNaFVrUnE6OkpJVSgnVWpJUUlfRnVUVElxVScpKTsKICAgICAgICAkVWprcC0+ZkVVRVsncHdwVUlRJ10gPSAkVWprcC0+cHdwVUlROwogICAgfQoKICAgIGh1ZW1rRiBpdXFGVWtScSBVaklRSU1oVWtScSgpIHsKCiAgICAgICAgZlJfRUZVa1JxKCdVaklRSV9SaFVrUnFfcElVdWgnKTsKCiAgICAgICAgLy9GasawRSAya21JZiBSaFVrUnEgVVRScUogVWpJUUkKICAgICAgICAkUmhVa1JxcDJrSW1mCT0gJFVqa3AtPlVqSVFJTWhVa1JxcFsnUmhVa1JxJ107CgogICAgICAgIC8vVeG6oVIgVkVtdUkgRmpSIEbDoUYgUmhVa1JxIEZqxrBFIEbDsyBWRW11SSBR4bq3RiDEkeG7i3FqCiAgICAgICAgaVJUSUVGaiAoJFJoVWtScXAya0ltZiBFcCAkbEl3ID0+ICRWRW11SSkgewogICAgICAgICAgICAkZklpRXVtVSAJCQkJCT0gRVRURXcoJ1ZFbXVJJyA9PiAnJyk7CiAgICAgICAgICAgICRSaFVrUnFwMmtJbWZbJGxJd10JCQk9IEVUVEV3X1FJVEpJKCRmSWlFdW1VLCAkVkVtdUkpOwogICAgICAgICAgICAkUmhVa1JxcEJFbXVJWyRWRW11SVsnaWtJbWYnXV0gPSAkUmhVa1JxcDJrSW1mWyRsSXddWydWRW11SSddOwogICAgICAgIH0KCiAgICAgICAgLy9t4bqldyBm4buvIG1r4buHdSBVaklRSU1oVWtScXAKICAgICAgICAkVWpJUUlNaFVrUnFwID0gKEVUVEV3KU1oVWtScTo6SklVKCdVaklRSV9SaFVrUnEnKTsKCiAgICAgICAgLy9x4bq/dSBVaklRSV9SaFVrUnEgRmrGsEUgRsOzIEprw6EgVVThu4sgVWrDrCBKw6FxIEprw6EgVVThu4sgUeG7m2sgVsOgUgogICAgICAgIGtpKCFqRVZJX2hScFVwKCRVaklRSU1oVWtScXApKSAkVWpJUUlNaFVrUnFwID0gW107CgogICAgICAgICRVamtwLT5wd3BVSVEgPSAoUmVMSUZVKUVUVEV3X1FJVEpJKChFVFRFdykkVWprcC0+cHdwVUlRLCAkVWpJUUlNaFVrUnFwKTsKCiAgICAgICAgLy9sa+G7g1EgVVRFIEbDsyBXdeG6pVUgamvhu4dxIFJoVWtScSBR4bubayBqRXcgV8OzRSBSaFVrUnEgakV3IGxqw7RxSgogICAgICAgIGlSVElFRmogKCRSaFVrUnFwMmtJbWYgRXAgJGxJdyA9PiAkVkVtdUkpIHsKICAgICAgICAgICAga2koIWtwcElVKCRVamtwLT5wd3BVSVEtPnskVkVtdUlbJ2lrSW1mJ119KSkgewogICAgICAgICAgICAgICAgJFVqa3AtPnB3cFVJUS0+eyRWRW11SVsnaWtJbWYnXX0gPSAkVkVtdUlbJ1ZFbXVJJ107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRVamtwLT5mRVVFWydwd3BVSVEnXSA9ICRVamtwLT5wd3BVSVE7CiAgICB9CgogICAgaHVlbWtGIGl1cUZVa1JxIEZUSUVVMlJUUSgkZkVVRSA9IFtdKSB7CgogICAgICAgICRGbUVwcCA9IChJUWhVdygkZkVVRVsnRm1FcHAnXSkpID8gJFVqa3AtPlRSdVVJVC0+aUlVRmpfRm1FcHAoKSA6ICRmRVVFWydGbUVwcCddOwoKICAgICAgICAkRWZRa3EyUlRRID0gcUl2IDJSVFF0ZlFrcSgpOwoKICAgICAgICAkRWZRa3EyUlRRLT5tRXFKCiAgICAgICAgICAgIC0+RWZmMFRSdWgoJ2txaVInLCdIasO0cUogSGtxJyk7CgogICAgICAgICRFZlFrcTJSVFEtPm1FcUotPkpUUnVoKCdrcWlSJykKICAgICAgICAgICAgLT5FZmYya0ltZjZFcUooJ1VrVW1JJywgJ1VJV1UnLCBbJ21FZUltJyA9PiAnSGvDqnUgxJHhu4EnLCAncVJVSScgPT4gJ0hrw6p1IMSR4buBIMSRxrDhu6NGIG3huqV3IG3DoFEgVWrhursgU1knXSkKICAgICAgICAgICAgLT5FZmYya0ltZjZFcUooJ0lXRklUaFUnLCAndndwa3Z3Si1walJUVScsIFsnbUVlSW0nID0+ICdIw7NRIFXhuq9VJ10pCiAgICAgICAgICAgIC0+RWZmMmtJbWY2RXFKKCdGUnFVSXFVJywgJ3Z3cGt2d0onLCBbJ21FZUltJyA9PiAnQeG7mWsgZnVxSiddKTsKCiAgICAgICAgJEVmUWtxMlJUUS0+VGtKalUKICAgICAgICAgICAgLT5FZmYwVFJ1aCgnUUlma0UnLCczSWZrRScpCiAgICAgICAgICAgIC0+RWZmMmtJbWYoJ2tRRUpJJywgJ2tRRUpJJywgWydtRWVJbScgPT4gJ1PDrHFqIOG6o3FqJ10pOwoKICAgICAgICAkRWZRa3EyUlRRLT5Ua0pqVQogICAgICAgICAgICAtPkVmZjBUUnVoKCdwSVInLCdPSVInKQogICAgICAgICAgICAtPkVmZjJrSW1mKCdwbXVKJywgJ1VJV1UnLCBbJ21FZUltJyA9PiAnT211SiddKQogICAgICAgICAgICAtPkVmZjJrSW1mKCdwSVJfVWtVbUknLCAnVUlXVScsIFsnbUVlSW0nID0+ICczSVVFIFVrVW1JJ10pCiAgICAgICAgICAgIC0+RWZmMmtJbWYoJ3BJUl9sSXd2UlRmcCcsICdVSVdVJywgWydtRWVJbScgPT4gJzNJVUUgMUl3dlJUZiddKQogICAgICAgICAgICAtPkVmZjJrSW1mKCdwSVJfZklwRlRraFVrUnEnLCAnVUlXVUVUSUUnLCBbJ21FZUltJyA9PiAnM0lVRSBuSXBGVGtoVWtScSddKTsKCiAgICAgICAgJEVmUWtxMlJUUS0+VGtKalUKICAgICAgICAgICAgLT5FZmYwVFJ1aCgnVWpJUUknLCcwa0VSIG5r4buHcScpCiAgICAgICAgICAgIC0+RWZmMmtJbWYoJ1VqSVFJX21Fd1J1VScsICdwSW1JRlUnLCBbJ21FZUltJyA9PiAnSElRaG1FVUkgNkV3UnVVJywgJ1JoVWtScXAnID0+IEhJUWhtRVVJOjpKSVU2a3BVNkV3UnVVKCldKQogICAgICAgICAgICAtPkVmZjJrSW1mKCdVaklRSV9Wa0l2JywgJ3BJbUlGVScsIFsnbUVlSW0nID0+ICdISVFobUVVSSBCa0l2JywgJ1JoVWtScXAnID0+IEhJUWhtRVVJOjpKSVU2a3BVQmtJdigpXSk7CgogICAgICAgICRwdWhoUlRVMFRSdWggPSBbXTsKCiAgICAgICAgJHB1aGhSVFUya0ltZiA9IFtdOwoKICAgICAgICBwdmtVRmogKCRGbUVwcCkgewogICAgICAgICAgICBGRXBJICdoRUpJJzoKICAgICAgICAgICAgICAgICRFZlFrcTJSVFEtPnBJVWFFVEVRcCgnVElma1RJRlUnLCBQTjZfdG4zS0EuJy9oRUpJL0lma1Uve2tmfScpOwogICAgICAgICAgICAgICAgJHB1aGhSVFUwVFJ1aCA9IFsncElSJywgJ1VqSVFJJ107CiAgICAgICAgICAgICAgICAkcHVoaFJUVTJrSW1mID0gWydGUnFVSXFVJywgJ3BJUl9Va1VtSScsICdwSVJfbEl3dlJUZnAnLCAncElSX2ZJcEZUa2hVa1JxJywgJ1VqSVFJX21Fd1J1VScsICdVaklRSV9Wa0l2J107CiAgICAgICAgICAgICAgICAkRWZRa3EyUlRRID0gRWhobXdfaWttVUlUcCgiUUVxRUpJX2hFSklfa3FodVUiLCAkRWZRa3EyUlRRKTsKICAgICAgICAgICAgICAgIGVUSUVsOwogICAgICAgICAgICBGRXBJICdoUnBVX0ZFVUlKUlRrSXAnOgogICAgICAgICAgICAgICAgJFVqa3AtPkZFVUlId2hJID0gKElRaFV3KCRVamtwLT5GRVVJSHdoSSkpID8gJ2hScFVfRkVVSUpSVGtJcCcgOiAkVWprcC0+RkVVSUh3aEk7CiAgICAgICAgICAgICAgICAkVUVXUnFSUXcgPSBIRVdScVJRdzo6SklVb0VVSUpSVHcoJFVqa3AtPkZFVUlId2hJKTsKICAgICAgICAgICAgICAgIGtpKGpFVklfaFJwVXAoJFVFV1JxUlF3KSkgewogICAgICAgICAgICAgICAgICAgICRFZlFrcTJSVFEtPnBJVWFFVEVRcCgnVElma1RJRlUnLCBQTjZfdG4zS0EuJy9oUnBVL2hScFUtRkVVSUpSVGtJcCcuJFVqa3AtPnVUbUh3aEkpOwogICAgICAgICAgICAgICAgICAgICRFZlFrcTJSVFEKICAgICAgICAgICAgICAgICAgICAgICAgLT5USVFSVkkya0ltZignVWtVbUknKQogICAgICAgICAgICAgICAgICAgICAgICAtPm1FcUotPkpUUnVoKCdrcWlSJyktPkVmZjJrSW1mNkVxSigncUVRSScsICdVSVdVJywgWydtRWVJbScgPT4gJ0hrw6p1IMSR4buBJywgJ3FSVUknID0+ICdIa8OqdSDEkeG7gSDEkcaw4bujRiBt4bqldyBtw6BRIFVq4bq7IFNZJ10sICdJV0ZJVGhVJyk7CgogICAgICAgICAgICAgICAgICAgIC8vb0VVSUpSVHcKICAgICAgICAgICAgICAgICAgICBraSgkVUVXUnFSUXdbJ2hFVElxVSddKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFZlFrcTJSVFEtPlRrSmpVCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPkVmZjBUUnVoKCdGRVVJSlJUdycsICduRXFqIFHhu6VGJywgJ1FJZmtFJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+RWZmMmtJbWYoICdoRVRJcVVfa2YnLCAncEltSUZVJywgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtRWVJbScgICAgID0+ICduRXFqIFHhu6VGIEZqRScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZFbXVJJyAgICAgPT4gTklzdUlwVTo6SklVKCdGRVVJSlJUdycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSaFVrUnFwJyAgID0+IGFScFVvRVVJSlJUdzo6SklVcChHVDo6cElVKCdGRVVJX1V3aEknLCAkVWprcC0+RkVVSUh3aEkpLT5GRVVJSlJUd0h3aEkoJ1JoVWtScXAnKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy9IRVdScVJRdyBwdWhoUlRVCiAgICAgICAgICAgICAgICAgICAgJHB1aGhSVFUwVFJ1aCA9ICRVRVdScVJRd1sncHVoaFJUVXAnXVsnSlRSdWgnXTsKICAgICAgICAgICAgICAgICAgICAkcHVoaFJUVTJrSW1mID0gJFVFV1JxUlF3WydwdWhoUlRVcCddWydpa0ltZiddOwoKICAgICAgICAgICAgICAgICAgICBraSgkVWprcC0+VUlRaG1FVUktPlFJVWpSZiA9PSAna3FmSVcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFZlFrcTJSVFEtPlRJUVJWSTBUUnVoKFsncElSJywgJ1VqSVFJJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAkRWZRa3EyUlRRLT5USVFSVkkya0ltZihbJ0lXRklUaFUnLCAnRlJxVUlxVScsICdodWVta0YnXSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkRWZRa3EyUlRRID0gRWhobXdfaWttVUlUcCgiUUVxRUpJX0ZFVUlKUlRrSXBfIi4kVWprcC0+RkVVSUh3aEkuJ19rcWh1VScsICRFZlFrcTJSVFEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVRJRWw7CiAgICAgICAgICAgIEZFcEkgJ2hScFUnOgogICAgICAgICAgICAgICAgJGhScFUgICAgICAgICAgID0gSEVXUnFSUXc6OkpJVWFScFUoJFVqa3AtPmhScFVId2hJKTsKICAgICAgICAgICAgICAgICRwdWhoUlRVMFRSdWggICA9ICRoUnBVWydwdWhoUlRVcCddWydKVFJ1aCddOwogICAgICAgICAgICAgICAgJHB1aGhSVFUya0ltZiAJPSAkaFJwVVsncHVoaFJUVXAnXVsnaWtJbWYnXTsKICAgICAgICAgICAgICAgICRUSWZrVElGVSA9IFBONl90bjNLQS4nL2hScFUnLiRVamtwLT51VG1Id2hJOwogICAgICAgICAgICAgICAga2koKGtxVSlOSXN1SXBVOjowSVUoJ2hFSkknKSAhPSB4ICYmIChrcVUpTklzdUlwVTo6MElVKCdoRUpJJykgIT0gWSkgewogICAgICAgICAgICAgICAgICAgICRUSWZrVElGVSAuPSAnJmhFSkk9Jy4oa3FVKU5Jc3VJcFU6OjBJVSgnaEVKSScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEVmUWtxMlJUUS0+cElVYUVURVFwKCdUSWZrVElGVScsICRUSWZrVElGVSk7CiAgICAgICAgICAgICAgICBraShrcHBJVSgkaFJwVVsnVUVXUnFSUWtJcCddKSAmJiBqRVZJX2hScFVwKCRoUnBVWydVRVdScVJRa0lwJ10pICkgewogICAgICAgICAgICAgICAgICAgICRFZlFrcTJSVFEtPlRrSmpVLT5FZmYwVFJ1aCgnVUVXUnFSUWtJcCcsICdvanV3w6pxIDPhu6VGJywgJ1FJZmtFJyk7CiAgICAgICAgICAgICAgICAgICAgJHB1aGhSVFUwVFJ1aFtdID0gJ1VFV1JxUlFrSXAnOwogICAgICAgICAgICAgICAgICAgIGlSVElFRmogKCRoUnBVWydVRVdScVJRa0lwJ10gRXAgJGxJd19VRVdScVJRdykgewogICAgICAgICAgICAgICAgICAgICAgICAkVUVXUnFSUXcgPSAkVWprcC0+VUVXUnFSUXdbJ21rcFVfRkVVX2ZJVUVrbSddWyRsSXdfVUVXUnFSUXddOwogICAgICAgICAgICAgICAgICAgICAgICAkRWZRa3EyUlRRLT5Ua0pqVS0+SlRSdWgoJ1VFV1JxUlFrSXAnKS0+RWZmMmtJbWYoJ1VFV1JxUlF3WycuJGxJd19VRVdScVJRdy4nXScsICdoUmhSVklUJyxbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbUVlSW0nPT4gJFVFV1JxUlF3WydtRWVJbXAnXVsncUVRSSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1FSZnVtSScgPT4gJ2hScFVfRkVVSUpSVGtJcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbEl3X1V3aEknID0+ICRsSXdfVUVXUnFSUXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmhVa1JxcCcgPT4gYVJwVW9FVUlKUlR3OjpKSVVwKEdUOjpwSVUoJ0ZFVUlfVXdoSScsICRsSXdfVUVXUnFSUXcpLT5GRVVJSlJUd0h3aEkoJ1JoVWtScXAnKSkKICAgICAgICAgICAgICAgICAgICAgICAgXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRwdWhoUlRVMmtJbWZbXSA9ICdVRVdScVJRd18nLiRsSXdfVUVXUnFSUXc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEVmUWtxMlJUUSA9IEVoaG13X2lrbVVJVHAoIlFFcUVKSV9oUnBVXyIuJFVqa3AtPmhScFVId2hJLiJfa3FodVUiLCAkRWZRa3EyUlRRKTsKICAgICAgICAgICAgICAgIGVUSUVsOwogICAgICAgICAgICBmSWlFdW1VOgogICAgICAgICAgICAgICAgJEVmUWtxMlJUUSA9IHFJdiAyUlRRdGZRa3EoKTsKICAgICAgICAgICAgICAgICRFZlFrcTJSVFEgPSBFaGhtd19pa21VSVRwKCJRRXFFSklfIi4kRm1FcHAuIl9rcWh1VSIsICRFZlFrcTJSVFEpOwogICAgICAgICAgICAgICAgZVRJRWw7CiAgICAgICAgfQogICAgICAgICRFZlFrcTJSVFEtPnB1aGhSVFUoJEZtRXBwLCAkcHVoaFJUVTBUUnVoLCAkcHVoaFJUVTJrSW1mKTsKICAgICAgICAjIFszSVVFclJXXQogICAgICAgIGlSVElFRmogKCRVamtwLT5RSVVFclJXIEVwICRsSXcgPT4gJFFJVUVyUlcpIHsKICAgICAgICAgICAgJEZScVVJcVUgCQk9ICRRSVVFclJXWydGUnFVSXFVJ107CiAgICAgICAgICAgICRGUnFVSXFVX2VSVyAJPSAkUUlVRXJSV1snRlJxVUlxVV9lUlcnXTsKICAgICAgICAgICAga2koJFFJVUVyUldbJ1FSZnVtSSddID09IHF1bW0gfHwgJFFJVUVyUldbJ1FSZnVtSSddID09ICRGbUVwcCB8fAogICAgICAgICAgICAgICAgKCRRSVVFclJXWydRUmZ1bUknXSA9PSAnaFJwVV8nLiRVamtwLT5oUnBVSHdoSSAmJiAkRm1FcHAgPT0gJ2hScFUnKSB8fAogICAgICAgICAgICAgICAgKCRRSVVFclJXWydRUmZ1bUknXSA9PSAnaFJwVV9GRVVJSlJUa0lwXycuJFVqa3AtPkZFVUlId2hJICYmICRGbUVwcCA9PSAnaFJwVV9GRVVJSlJUa0lwJykpIHsKICAgICAgICAgICAgICAgIGtpKCRGUnFVSXFVID09ICdtSWlVVScpICRGUnFVSXFVID0gJ21JaVVIUmgnOwogICAgICAgICAgICAgICAga2koJEZScVVJcVUgPT0gJ21JaVVlJykgJEZScVVJcVUgPSAnbUlpVXJSVVVSUSc7CiAgICAgICAgICAgICAgICAkRWZRa3EyUlRRLT4kRlJxVUlxVS0+RWZmMFRSdWgoJGxJdywgJFFJVUVyUldbJ21FZUltJ10sICRGUnFVSXFVX2VSVyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZSX0VGVWtScSgnUUVxRUpJX2lSVFFfa3FodVUnLCAkRm1FcHAsICRFZlFrcTJSVFEpOwoKICAgICAgICBUSVV1VHEgJFVqa3AtPkVmUWtxMlJUUSA9ICRFZlFrcTJSVFE7CiAgICB9CgogICAgLy9VasOqUSBm4buvIG1r4buHdSBWw6BSIEbDoUYgVVTGsOG7nXFKIHFq4bqtaCBta+G7h3UgbGprIElma1UKICAgIGh1ZW1rRiBpdXFGVWtScSBwSVVCRW11STJrSW1mcCgmJFJlTElGVSkgewoKICAgICAgICAkVWprcC0+RWZRa3EyUlRRLT5wSVVhRVRFUXAoJ1RJZmtUSUZVJywgJycpOwoKICAgICAgICAkUmVMSUZVID0gRWhobXdfaWttVUlUcCgncElVcF9pa0ltZl9lSWlSVEknLCAkUmVMSUZVICk7CgogICAgICAgICRpUlRRMmtJbWYgPSAkVWprcC0+RWZRa3EyUlRRLT5KSVV0bW0ya0ltZigpOwoKICAgICAgICAkbUVxSnVFSklwID0gW107CgogICAgICAgIGtpKDZFcUp1RUpJOjpqRXAzdW1VaygpKSB7CiAgICAgICAgICAgICRtRXFKdUVKSXAgPSA2RXFKdUVKSTo6SklVcChHVDo6cElVKCdSZUxJRlVfa2YnLCAkUmVMSUZVLT5rZiktPnZqSVRJKCdSZUxJRlVfVXdoSScsICAkVWprcC0+ZkVVRVsnUVJmdW1JJ10pKTsKICAgICAgICB9CgogICAgICAgIGlSVElFRmooJGlSVFEya0ltZiBFcCAkbEl3ID0+ICRpa0ltZikgewogICAgICAgICAgICAvL0rDoXEgSmvDoSBVVOG7iyBGalIgRsOhRiBpa0ltZiBlw6xxaiBVasaw4budcUoKICAgICAgICAgICAga2koa3BwSVUoJFJlTElGVS0+eyRpa0ltZlsnaWtJbWYnXX0pKSB7CiAgICAgICAgICAgICAgICAkVWprcC0+RWZRa3EyUlRRLT5wSVUya0ltZkJFbXVJKCRpa0ltZlsnaWtJbWYnXSwgJFJlTElGVS0+eyRpa0ltZlsnaWtJbWYnXX0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vSsOhcSBKa8OhIFVU4buLIEZqUiBGw6FGIGlrSW1mIMSRRSBxSsO0cSBxSuG7rwogICAgICAgICAgICBJbXBJIGtpKGtwcElVKCRpa0ltZlsnbUVxSiddKSkgewogICAgICAgICAgICAgICAgJFVJUWggPSBPVVQ6OlJpKCRpa0ltZlsnaWtJbWYnXSktPlRJaG1FRkkoJGlrSW1mWydtRXFKJ10uJ18nLCAnJyktPlRJaG1FRkkoJGlrSW1mWydtRXFKJ10uJ1snLCAnJyktPlRJaG1FRkkoJ10nLCAnJyk7CiAgICAgICAgICAgICAgICBraShqRVZJX2hScFVwKCRtRXFKdUVKSXApKSB7CiAgICAgICAgICAgICAgICAgICAgaVJUSUVGaiAoJG1FcUp1RUpJcCBFcCAkbCA9PiAkVkVtdUkpIHsKICAgICAgICAgICAgICAgICAgICAgICAga2koJGlrSW1mWydtRXFKJ10gPT0gJFZFbXVJLT5tRXFKdUVKSSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpKGtwcElVKCRWRW11SS0+JFVJUWgpKSAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRVamtwLT5FZlFrcTJSVFEtPnBJVTJrSW1mQkVtdUkoJGxJdywgJFZFbXVJLT4kVUlRaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVRJRWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgSW1wSSBraShrcHBJVSgkUmVMSUZVLT4kVUlRaCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRVamtwLT5FZlFrcTJSVFEtPnBJVTJrSW1mQkVtdUkoJGxJdywgJFJlTElGVS0+JFVJUWgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBJbXBJIGtpKGtwcElVKCRSZUxJRlUtPiRVSVFoKSkgewogICAgICAgICAgICAgICAgICAgICRVamtwLT5FZlFrcTJSVFEtPnBJVTJrSW1mQkVtdUkoJGxJdywgJFJlTElGVS0+JFVJUWgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGh1ZW1rRiBpdXFGVWtScSBKSVVIRWVtSSgpIHsKICAgICAgICAkUVJmdW1JID0gJFVqa3AtPmZFVUVbJ1FSZnVtSSddOwogICAgICAgIGtpKCRRUmZ1bUkgPT0gJ2hFSkknKSAJCQkJCVRJVXVUcSAnaEVKSSc7CiAgICAgICAga2koJFFSZnVtSSA9PSAnaFJwVScpIAkJCQkJVElVdVRxICdoUnBVJzsKICAgICAgICBraSgkUVJmdW1JID09ICdoVFJmdUZVcCcpIAkJCQlUSVV1VHEgJ2hUUmZ1RlVwJzsKICAgICAgICBraSgkUVJmdW1JID09ICdoUnBVX0ZFVUlKUlRrSXAnKSAJCVRJVXVUcSAnRkVVSUpSVGtJcCc7CiAgICAgICAga2koJFFSZnVtSSA9PSAnaFRSZnVGVXBfRkVVSUpSVGtJcCcpIAlUSVV1VHEgJ2hUUmZ1RlVwX0ZFVUlKUlRrSXAnOwogICAgICAgIFRJVXVUcSAkUVJmdW1JOwogICAgfQogICAgLyogTzZQMCAqLwogICAgaHVlbWtGIGl1cUZVa1JxIGlSVFF0ZmYoRVRURXcgJGhScFUgPSBbXSwgRVRURXcgJFJ1VXBrZkkgPSBbXSk6IFFrV0lmIHsKCiAgICAgICAgJFFSZkltID0gUVJmSW0oJFVqa3AtPkpJVUhFZW1JKCkpOwoKICAgICAgICAkUVJmdW1JID0gJFVqa3AtPmZFVUVbJ1FSZnVtSSddOwoKICAgICAgICAvL2bhu68gbWvhu4d1IMSRRSBxSsO0cSBxSuG7rwogICAgICAgICRtRXFKdUVKSTZrcFUgICAgPSA2RXFKdUVKSTo6bWtwVTFJdygpOwoKICAgICAgICAkbUVxSnVFSkluSWlFdW1VID0gNkVxSnVFSkk6OmZJaUV1bVUoKTsKCiAgICAgICAgLy9m4buvIG1r4buHdSBmRVVFCiAgICAgICAgJGtxcElUVTZFcUogPSBbXTsKCiAgICAgICAgJGtxcElUVW5FVUUgPSBbXTsKCiAgICAgICAgJGhFVEVRcCA9ICghSVFoVXcoJFVqa3AtPkVmUWtxMlJUUS0+aEVURVFwKSkgPyAkVWprcC0+RWZRa3EyUlRRLT5oRVRFUXAgOiBbXTsKCiAgICAgICAgLy9Vw6FGaiBm4buvIG1r4buHdSDEkUUgcUrDtHEgcUrhu68gVEUKICAgICAgICBpUlRJRUZqKCRoUnBVIEVwICRsSXcgPT4gJFZFbSkgewogICAgICAgICAgICBraShrcV9FVFRFdygkbEl3LCAkbUVxSnVFSkk2a3BVKSkgewogICAgICAgICAgICAgICAgJGtxcElUVTZFcUpbJGxJd10gPSAkVkVtOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEltcEkgewogICAgICAgICAgICAgICAgJGtxcElUVW5FVUVbJGxJd10gPSAkVkVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBraShrcHBJVSgka3FwSVRVNkVxSlskbUVxSnVFSkluSWlFdW1VXSkpIHsKICAgICAgICAgICAgJGtxcElUVW5FVUUgPSBFVFRFd19RSVRKSSgka3FwSVRVbkVVRSwgJGtxcElUVTZFcUpbJG1FcUp1RUpJbklpRXVtVV0pOwogICAgICAgICAgICB1cXBJVSgka3FwSVRVNkVxSlskbUVxSnVFSkluSWlFdW1VXSk7CiAgICAgICAgfQoKICAgICAgICAka3FwSVRVbkVVRSA9IEVoaG13X2lrbVVJVHAoJ3BFVklfUmVMSUZVX2VJaVJUSScsICRrcXBJVFVuRVVFLCAkUnVVcGtmSSwgJFFSZnVtSSk7CgogICAgICAgICRGaklGbCA9IEVoaG13X2lrbVVJVHAoJ0ZqSUZsX3BFVklfZUlpUlRJJywgcXVtbSwgJGtxcElUVW5FVUUsICRSdVVwa2ZJLCAkUVJmdW1JKTsKCiAgICAgICAga2kgKHF1bW0gIT09ICRGaklGbCkgewoKICAgICAgICAgICAgJFRJcHVtVVsnUUlwcEVKSSddIAkJPSAnSGrDqlEgZuG7ryBta+G7h3UgVWrhuqVVIGXhuqFrLic7CgogICAgICAgICAgICAkVElwdW1VWydGaklGbCddIAkJPSAkRmpJRmw7CgogICAgICAgICAgICBUSVV1VHEgJFRJcHVtVTsKICAgICAgICB9CgogICAgICAgICRrcXBJVFVuRVVFWydtRXFKdUVKSSddID0gJGtxcElUVTZFcUo7CgogICAgICAgICRrcXBJVFVuRVVFWydVRVdScVJRa0lwJ10gPSAoa3BwSVUoJFJ1VXBrZklbJ1VFV1JxUlFrSXAnXSkpID8gJFJ1VXBrZklbJ1VFV1JxUlFrSXAnXSA6IFtdOwoKICAgICAgICBraSgkUVJmdW1JID09ICdoRUpJJykgewogICAgICAgICAgICAka2YgPSBhRUpJcDo6a3FwSVRVKCRrcXBJVFVuRVVFKTsKICAgICAgICB9CiAgICAgICAgSW1wSSBraSgkUVJmdW1JID09ICdoUnBVJykgewogICAgICAgICAgICAka3FwSVRVbkVVRVsnaFJwVV9Vd2hJJ10gPSAkVWprcC0+aFJwVUh3aEk7CiAgICAgICAgICAgICRrZiA9IGFScFVwOjprcXBJVFUoJGtxcElUVW5FVUUpOwogICAgICAgIH0KICAgICAgICBJbXBJIGtpKCRRUmZ1bUkgPT0gJ2hScFVfRkVVSUpSVGtJcCcpIHsKICAgICAgICAgICAga2koSEVXUnFSUXc6OmpFcG9FVUlKUlR3KCRVamtwLT5GRVVJSHdoSSkpIHsKICAgICAgICAgICAgICAgICRrcXBJVFVuRVVFWydGRVVJX1V3aEknXSA9ICRVamtwLT5GRVVJSHdoSTsKICAgICAgICAgICAgfQogICAgICAgICAgICAka2YgPSBhUnBVb0VVSUpSVHc6OmtxcElUVSgka3FwSVRVbkVVRSk7CiAgICAgICAgfQogICAgICAgIEltcEkgewogICAgICAgICAgICAka2YgPSBFaGhtd19pa21VSVRwKCdpUlRRX3B1ZVFrVV8nLiRRUmZ1bUksIHgsICRrcXBJVFVuRVVFLCAkUnVVcGtmSSk7CiAgICAgICAgfQoKICAgICAgICBraSghSVFoVXcoJGtmKSAmJiBrcF9xdVFJVGtGKCRrZikpIHsKICAgICAgICAgICAgZlJfRUZVa1JxKCdwRVZJX1JlTElGVV9FZmYnLCAka2YsICRRUmZ1bUksICRSdVVwa2ZJLCAkUVJmSW0sICRrcXBJVFVuRVVFKTsKICAgICAgICAgICAgZlJfRUZVa1JxKCdwRVZJXycuJFFSZnVtSS4nX1JlTElGVScsICRrZiwgJFFSZnVtSSwgJFJ1VXBrZkksICRRUmZJbSwgJGtxcElUVW5FVUUpOwogICAgICAgICAgICBmUl9FRlVrUnEoJ3BFVklfUmVMSUZVJywgJGtmLCAkUVJmdW1JLCAkUnVVcGtmSSwgJFFSZkltLCAka3FwSVRVbkVVRSk7CgogICAgICAgICAgICAvL0ZqdXfhu4NxIMSR4bq/cSBVVEVxSgogICAgICAgICAgICBraShrcHBJVSgkaEVURVFwWydUSWZrVElGVSddKSkgewogICAgICAgICAgICAgICAgJFRJcHVtVVsnVElma1RJRlUnXSAJPSBwVVRfVElobUVGSSgne2tmfScsICRrZiwgJGhFVEVRcFsnVElma1RJRlUnXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRUSXB1bVVbJ2tmJ10gCQkJPSAka2Y7CgogICAgICAgICAgICAkVElwdW1VWydwVUVVdXAnXSAJCT0gJ3B1RkZJcHAnOwoKICAgICAgICAgICAgJFRJcHVtVVsnUUlwcEVKSSddIAkJPSAnSGrDqlEgZuG7ryBta+G7h3UgVWrDoHFqIEbDtHFKJzsKICAgICAgICB9CiAgICAgICAgSW1wSSB7CgogICAgICAgICAgICAkVElwdW1VWydRSXBwRUpJJ10gCQk9ICdIasOqUSBm4buvIG1r4buHdSBVauG6pVUgZeG6oWsnOwoKICAgICAgICAgICAgJFRJcHVtVVsncFVFVXVwJ10gCQk9ICdJVFRSVCc7CgogICAgICAgICAgICBraShrcHBJVSgka2YpICYmIGtwX3BsZl9JVFRSVCgka2YpKSB7CiAgICAgICAgICAgICAgICBpUlRJRUZqICgka2YtPklUVFJUcCBFcCAkSVRUUlRfVkVtdUkpIHsKICAgICAgICAgICAgICAgICAgICAkVElwdW1VWydRSXBwRUpJJ10gPSAkSVRUUlRfVkVtdUlbeF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIFRJVXVUcSAkVElwdW1VOwogICAgfQoKICAgIGh1ZW1rRiBpdXFGVWtScSBpUlRRZ2ZrVShFVFRFdyAkaFJwVSA9IFtdLCBrcVUgJGtmID0geCwgRVRURXcgJFJ1VXBrZkkgPSBbXSk6IFFrV0lmIHsKCiAgICAgICAgJFFSZnVtSSA9ICRVamtwLT5mRVVFWydRUmZ1bUknXTsKCiAgICAgICAgJFFSZkltID0gUVJmSW0oJFVqa3AtPkpJVUhFZW1JKCkpOwoKICAgICAgICAvL2bhu68gbWvhu4d1IMSRRSBxSsO0cSBxSuG7rwogICAgICAgICRtRXFKdUVKSTZrcFUgICA9IDZFcUp1RUpJOjpta3BVMUl3KCk7CgogICAgICAgICRtRXFKdUVKSW5JaUV1bVUgPSA2RXFKdUVKSTo6ZklpRXVtVSgpOwoKICAgICAgICAvL2bhu68gbWvhu4d1IGZFVUUKICAgICAgICAka3FwSVRVNkVxSiA9IFtdOwogICAgICAgICRrcXBJVFVuRVVFID0gW107CiAgICAgICAgJGhFVEVRcCAgICAgID0gKCFJUWhVdygkVWprcC0+RWZRa3EyUlRRLT5oRVRFUXApKSA/ICRVamtwLT5FZlFrcTJSVFEtPmhFVEVRcCA6IFtdOwoKICAgICAgICAvL1XDoUZqIGbhu68gbWvhu4d1IMSRRSBxSsO0cSBxSuG7ryBURQogICAgICAgIGlSVElFRmogKCRoUnBVIEVwICRsSXcgPT4gJFZFbSkgewogICAgICAgICAgICBraShrcV9FVFRFdygkbEl3LCAkbUVxSnVFSkk2a3BVKSkgewogICAgICAgICAgICAgICAgJGtxcElUVTZFcUpbJGxJd10gPSAkVkVtOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEltcEkgewogICAgICAgICAgICAgICAgJGtxcElUVW5FVUVbJGxJd10gPSAkVkVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBraShrcHBJVSgka3FwSVRVNkVxSlskbUVxSnVFSkluSWlFdW1VXSkpIHsKCiAgICAgICAgICAgICRrcXBJVFVuRVVFID0gRVRURXdfUUlUSkkoJGtxcElUVW5FVUUsICRrcXBJVFU2RXFKWyRtRXFKdUVKSW5JaUV1bVVdKTsKCiAgICAgICAgICAgIHVxcElVKCRrcXBJVFU2RXFKWyRtRXFKdUVKSW5JaUV1bVVdKTsKICAgICAgICB9CgogICAgICAgICRrcXBJVFVuRVVFID0gRWhobXdfaWttVUlUcCgncEVWSV9SZUxJRlVfZUlpUlRJJywgJGtxcElUVW5FVUUsICRSdVVwa2ZJLCAkUVJmdW1JKTsKCiAgICAgICAgZlJfRUZVa1JxKCdwRVZJX1JlTElGVV9lSWlSVEknLCAka3FwSVRVbkVVRSwgJFJ1VXBrZkksICRRUmZ1bUkpOwoKICAgICAgICAkRmpJRmwgPSBFaGhtd19pa21VSVRwKCJGaklGbF9wRVZJX2VJaVJUSSIsIHF1bW0sICRrcXBJVFVuRVVFLCAkUnVVcGtmSSwgJFFSZnVtSSk7CgogICAgICAgIGtpIChxdW1tICE9PSAkRmpJRmwpIHsKICAgICAgICAgICAgJFRJcHVtVVsnUUlwcEVKSSddIAk9ICdv4bqtaCBxauG6rVUgZuG7ryBta+G7h3UgVWrhuqVVIGXhuqFrLic7CiAgICAgICAgICAgICRUSXB1bVVbJ3BVRVV1cCddIAk9ICRGaklGbDsKICAgICAgICAgICAgVElVdVRxICRUSXB1bVU7CiAgICAgICAgfQoKICAgICAgICBraSghSVFoVXcoJGtxcElUVW5FVUVbJ2hFVElxVV9rZiddKSAmJiAka3FwSVRVbkVVRVsnaEVUSXFVX2tmJ10gPT0gJGtmKSB7CiAgICAgICAgICAgICRUSXB1bVVbJ1FJcHBFSkknXSAJCT0gJzFqw7RxSiBVauG7gyBG4bqtaCBxauG6rVUgxJHhu5FrIFXGsOG7o3FKIHHDoHcgVWrDoHFqIEZqRSDEkeG7kWsgVcaw4bujcUogccOgdyc7CiAgICAgICAgICAgICRUSXB1bVVbJ3BVRVV1cCddIAkJPSAnSVRUUlQnOwogICAgICAgICAgICBUSVV1VHEgJFRJcHVtVTsKICAgICAgICB9CgogICAgICAgICRrcXBJVFVuRVVFWydrZiddID0gJGtmOwoKICAgICAgICAka3FwSVRVbkVVRVsnbUVxSnVFSkknXSA9ICRrcXBJVFU2RXFKOwoKICAgICAgICAka3FwSVRVbkVVRVsnVUVXUnFSUWtJcCddID0gKGtwcElVKCRSdVVwa2ZJWydVRVdScVJRa0lwJ10pKSA/ICRSdVVwa2ZJWydVRVdScVJRa0lwJ10gOiBbXTsKCiAgICAgICAga2koJFFSZnVtSSA9PSAnaEVKSScpIHsKICAgICAgICAgICAgJElUVFJUcCA9IGFFSklwOjprcXBJVFUoJGtxcElUVW5FVUUpOwogICAgICAgIH0KICAgICAgICBJbXBJIGtpKCRRUmZ1bUkgPT0gJ2hScFUnKSB7CiAgICAgICAgICAgICRJVFRSVHAgPSBhUnBVcDo6a3FwSVRVKCRrcXBJVFVuRVVFKTsKICAgICAgICB9CiAgICAgICAgSW1wSSBraSgkUVJmdW1JID09ICdoUnBVX0ZFVUlKUlRrSXAnKSB7CiAgICAgICAgICAgICRJVFRSVHAgPSBhUnBVb0VVSUpSVHc6OmtxcElUVSgka3FwSVRVbkVVRSk7CiAgICAgICAgfQogICAgICAgIEltcEkgewogICAgICAgICAgICAkSVRUUlRwID0gRWhobXdfaWttVUlUcCgnaVJUUV9wdWVRa1VfJy4kUVJmdW1JLCB4LCAka3FwSVRVbkVVRSwgJFJ1VXBrZkkpOwogICAgICAgIH0KCgogICAgICAgIGtpKGtwX3F1UUlUa0YoJElUVFJUcCkpIHsKCiAgICAgICAgICAgICRRUmZJbS0+cElVSEVlbUkoJFVqa3AtPkpJVUhFZW1JKCkpOwoKICAgICAgICAgICAgZlJfRUZVa1JxKCdwRVZJX1JlTElGVV9JZmtVJywgJGtmLCAkUVJmdW1JLCAkUnVVcGtmSSwgJFVqa3AtPkpJVUhFZW1JKCksICRrcXBJVFVuRVVFKTsKCiAgICAgICAgICAgIGZSX0VGVWtScSgncEVWSV8nLiRRUmZ1bUkuJ19SZUxJRlUnLCAka2YsICRRUmZ1bUksICRSdVVwa2ZJLCAkVWprcC0+SklVSEVlbUkoKSwgJGtxcElUVW5FVUUpOwoKICAgICAgICAgICAgZlJfRUZVa1JxKCdwRVZJX1JlTElGVScsICRrZiwgJFFSZnVtSSwgJFJ1VXBrZkksICRVamtwLT5KSVVIRWVtSSgpLCAka3FwSVRVbkVVRSk7CgogICAgICAgICAgICAvL0ZqdXfhu4NxIMSR4bq/cSBVVEVxSgogICAgICAgICAgICBraShrcHBJVSgkaEVURVFwWydUSWZrVElGVSddKSkgewogICAgICAgICAgICAgICAgJFRJcHVtVVsnVElma1RJRlUnXSA9IHBVVF9USWhtRUZJKCd7a2Z9JywgJGtmLCAkaEVURVFwWydUSWZrVElGVSddKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFRJcHVtVVsncFVFVXVwJ10gCT0gJ3B1RkZJcHAnOwoKICAgICAgICAgICAgJFRJcHVtVVsnUUlwcEVKSSddIAk9ICdv4bqtaCBxauG6rVUgZuG7ryBta+G7h3UgVWrDoHFqIEbDtHFKJzsKICAgICAgICB9CiAgICAgICAgSW1wSSB7CgogICAgICAgICAgICAkVElwdW1VWydRSXBwRUpJJ10gCQk9ICdu4buvIG1r4buHdSBsasO0cUogVWpFdyDEkeG7lWsnOwoKICAgICAgICAgICAgJFRJcHVtVVsncFVFVXVwJ10gCQk9ICdJVFRSVCc7CgogICAgICAgICAgICBraShrcF9wbGZfSVRUUlQoJElUVFJUcCkpIHsKICAgICAgICAgICAgICAgIGlSVElFRmogKCRJVFRSVHAtPklUVFJUcCBFcCAkSVRUUlRfVkVtdUkpIHsKICAgICAgICAgICAgICAgICAgICAkVElwdW1VWydRSXBwRUpJJ10gPSAkSVRUUlRfVkVtdUlbeF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIFRJVXVUcSAkVElwdW1VOwogICAgfQp9
Function Calls
urldecode | 1 |
Stats
MD5 | da3c8b914a428a738f4f4d06bc86b33c |
Eval Count | 0 |
Decode Time | 272 ms |